@memberjunction/cli 6.2.0-edge.1 → 6.2.0-edge.3
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/dist/commands/agent/init.d.ts +12 -0
- package/dist/commands/agent/init.d.ts.map +1 -1
- package/dist/commands/agent/init.js +42 -8
- package/dist/commands/agent/init.js.map +1 -1
- package/dist/commands/migrate/convert.d.ts.map +1 -1
- package/dist/commands/migrate/convert.js +15 -1
- package/dist/commands/migrate/convert.js.map +1 -1
- package/dist/commands/migrate/rebake.d.ts.map +1 -1
- package/dist/commands/migrate/rebake.js +7 -0
- package/dist/commands/migrate/rebake.js.map +1 -1
- package/dist/commands/queue/backlog.d.ts +11 -0
- package/dist/commands/queue/backlog.d.ts.map +1 -0
- package/dist/commands/queue/backlog.js +32 -0
- package/dist/commands/queue/backlog.js.map +1 -0
- package/dist/commands/queue/dead-letters.d.ts +13 -0
- package/dist/commands/queue/dead-letters.d.ts.map +1 -0
- package/dist/commands/queue/dead-letters.js +35 -0
- package/dist/commands/queue/dead-letters.js.map +1 -0
- package/dist/commands/queue/discard.d.ts +12 -0
- package/dist/commands/queue/discard.d.ts.map +1 -0
- package/dist/commands/queue/discard.js +45 -0
- package/dist/commands/queue/discard.js.map +1 -0
- package/dist/commands/queue/export-topology.d.ts +12 -0
- package/dist/commands/queue/export-topology.d.ts.map +1 -0
- package/dist/commands/queue/export-topology.js +40 -0
- package/dist/commands/queue/export-topology.js.map +1 -0
- package/dist/commands/queue/import-bindings.d.ts +14 -0
- package/dist/commands/queue/import-bindings.d.ts.map +1 -0
- package/dist/commands/queue/import-bindings.js +41 -0
- package/dist/commands/queue/import-bindings.js.map +1 -0
- package/dist/commands/queue/index.d.ts +7 -0
- package/dist/commands/queue/index.d.ts.map +1 -0
- package/dist/commands/queue/index.js +25 -0
- package/dist/commands/queue/index.js.map +1 -0
- package/dist/commands/queue/partitions.d.ts +14 -0
- package/dist/commands/queue/partitions.d.ts.map +1 -0
- package/dist/commands/queue/partitions.js +36 -0
- package/dist/commands/queue/partitions.js.map +1 -0
- package/dist/commands/queue/publish.d.ts +35 -0
- package/dist/commands/queue/publish.d.ts.map +1 -0
- package/dist/commands/queue/publish.js +94 -0
- package/dist/commands/queue/publish.js.map +1 -0
- package/dist/commands/queue/replay.d.ts +12 -0
- package/dist/commands/queue/replay.d.ts.map +1 -0
- package/dist/commands/queue/replay.js +42 -0
- package/dist/commands/queue/replay.js.map +1 -0
- package/dist/commands/queue/stats.d.ts +11 -0
- package/dist/commands/queue/stats.d.ts.map +1 -0
- package/dist/commands/queue/stats.js +35 -0
- package/dist/commands/queue/stats.js.map +1 -0
- package/dist/commands/queue/usage.d.ts +7 -0
- package/dist/commands/queue/usage.d.ts.map +1 -0
- package/dist/commands/queue/usage.js +10 -0
- package/dist/commands/queue/usage.js.map +1 -0
- package/dist/commands/queue/validate-bindings.d.ts +12 -0
- package/dist/commands/queue/validate-bindings.d.ts.map +1 -0
- package/dist/commands/queue/validate-bindings.js +37 -0
- package/dist/commands/queue/validate-bindings.js.map +1 -0
- package/dist/commands/queue/work.d.ts +20 -0
- package/dist/commands/queue/work.d.ts.map +1 -0
- package/dist/commands/queue/work.js +77 -0
- package/dist/commands/queue/work.js.map +1 -0
- package/dist/commands/rubric/diff.d.ts +11 -0
- package/dist/commands/rubric/diff.d.ts.map +1 -0
- package/dist/commands/rubric/diff.js +20 -0
- package/dist/commands/rubric/diff.js.map +1 -0
- package/dist/commands/rubric/evaluate.d.ts +15 -0
- package/dist/commands/rubric/evaluate.d.ts.map +1 -0
- package/dist/commands/rubric/evaluate.js +28 -0
- package/dist/commands/rubric/evaluate.js.map +1 -0
- package/dist/commands/rubric/index.d.ts +6 -0
- package/dist/commands/rubric/index.d.ts.map +1 -0
- package/dist/commands/rubric/index.js +13 -0
- package/dist/commands/rubric/index.js.map +1 -0
- package/dist/commands/rubric/list.d.ts +6 -0
- package/dist/commands/rubric/list.d.ts.map +1 -0
- package/dist/commands/rubric/list.js +14 -0
- package/dist/commands/rubric/list.js.map +1 -0
- package/dist/commands/rubric/show.d.ts +9 -0
- package/dist/commands/rubric/show.d.ts.map +1 -0
- package/dist/commands/rubric/show.js +16 -0
- package/dist/commands/rubric/show.js.map +1 -0
- package/dist/commands/rubric/validate.d.ts +9 -0
- package/dist/commands/rubric/validate.d.ts.map +1 -0
- package/dist/commands/rubric/validate.js +16 -0
- package/dist/commands/rubric/validate.js.map +1 -0
- package/dist/commands/test/index.d.ts.map +1 -1
- package/dist/commands/test/index.js +2 -0
- package/dist/commands/test/index.js.map +1 -1
- package/dist/commands/test/promote-criteria.d.ts +10 -0
- package/dist/commands/test/promote-criteria.d.ts.map +1 -0
- package/dist/commands/test/promote-criteria.js +25 -0
- package/dist/commands/test/promote-criteria.js.map +1 -0
- package/dist/commands/test/report.d.ts +9 -0
- package/dist/commands/test/report.d.ts.map +1 -0
- package/dist/commands/test/report.js +18 -0
- package/dist/commands/test/report.js.map +1 -0
- package/dist/commands/test/run.d.ts +1 -0
- package/dist/commands/test/run.d.ts.map +1 -1
- package/dist/commands/test/run.js +4 -0
- package/dist/commands/test/run.js.map +1 -1
- package/dist/commands/test/suite.d.ts +1 -0
- package/dist/commands/test/suite.d.ts.map +1 -1
- package/dist/commands/test/suite.js +4 -0
- package/dist/commands/test/suite.js.map +1 -1
- package/dist/hooks/postrun.d.ts +1 -1
- package/dist/init-templates/citizen-builder/.env.example +6 -0
- package/dist/init-templates/citizen-builder/docker/Dockerfile +10 -2
- package/dist/init-templates/citizen-builder/docker-compose.yml +6 -0
- package/dist/init-templates/citizen-builder/scripts/docker-entrypoint.sh +56 -20
- package/dist/lib/domain-profiles.d.ts.map +1 -1
- package/dist/lib/domain-profiles.js +4 -0
- package/dist/lib/domain-profiles.js.map +1 -1
- package/dist/lib/work-queue/queue-format.d.ts +17 -0
- package/dist/lib/work-queue/queue-format.d.ts.map +1 -0
- package/dist/lib/work-queue/queue-format.js +125 -0
- package/dist/lib/work-queue/queue-format.js.map +1 -0
- package/dist/lib/work-queue/queue-session.d.ts +9 -0
- package/dist/lib/work-queue/queue-session.d.ts.map +1 -0
- package/dist/lib/work-queue/queue-session.js +8 -0
- package/dist/lib/work-queue/queue-session.js.map +1 -0
- package/dist/lib/work-queue/queue-worker.d.ts +24 -0
- package/dist/lib/work-queue/queue-worker.d.ts.map +1 -0
- package/dist/lib/work-queue/queue-worker.js +50 -0
- package/dist/lib/work-queue/queue-worker.js.map +1 -0
- package/dist/light-commands.d.ts.map +1 -1
- package/dist/light-commands.js +3 -0
- package/dist/light-commands.js.map +1 -1
- package/dist/utils/open-app-context.d.ts +6 -0
- package/dist/utils/open-app-context.d.ts.map +1 -1
- package/dist/utils/open-app-context.js +3 -3
- package/dist/utils/open-app-context.js.map +1 -1
- package/oclif.manifest.json +3522 -2581
- package/package.json +24 -22
|
@@ -33,16 +33,33 @@ echo "SQL Server is reachable!"
|
|
|
33
33
|
|
|
34
34
|
cd /workspace
|
|
35
35
|
|
|
36
|
-
# 2.
|
|
37
|
-
|
|
36
|
+
# 2. Provisioning. State lives on the workspace volume so it survives restarts, and each step
|
|
37
|
+
# that must not run twice records its own completion: `mj app install` of an app that is
|
|
38
|
+
# already installed is an error, so a failure in a LATER step has to be retried on restart
|
|
39
|
+
# without re-running an earlier one. Failures are not masked. With `set -e` a failed step
|
|
40
|
+
# exits the container loudly (see `docker compose logs mj`), `restart: unless-stopped`
|
|
41
|
+
# retries it, and nothing reports success until every step has actually succeeded.
|
|
42
|
+
STATE_DIR="/workspace/.citizen-builder"
|
|
43
|
+
|
|
44
|
+
# A workspace provisioned by an earlier version of this script kept no state. Its package.json
|
|
45
|
+
# means `mj install` completed and the old script then ran every remaining step, so treat it as
|
|
46
|
+
# provisioned: re-running `mj app install` against its already-installed app would fail.
|
|
47
|
+
if [ -f "/workspace/package.json" ] && [ ! -d "$STATE_DIR" ]; then
|
|
48
|
+
mkdir -p "$STATE_DIR"
|
|
49
|
+
touch "$STATE_DIR/core-installed" "$STATE_DIR/app-installed" "$STATE_DIR/provisioned"
|
|
50
|
+
fi
|
|
51
|
+
mkdir -p "$STATE_DIR"
|
|
52
|
+
|
|
53
|
+
if [ ! -f "$STATE_DIR/provisioned" ]; then
|
|
38
54
|
echo ""
|
|
39
55
|
echo "========================================================================"
|
|
40
56
|
echo " First-Time Setup: Installing MemberJunction via 'mj install'..."
|
|
41
57
|
echo " This runs once and initializes your database, API, and Explorer."
|
|
42
58
|
echo "========================================================================"
|
|
43
59
|
|
|
44
|
-
|
|
45
|
-
|
|
60
|
+
if [ ! -f "$STATE_DIR/core-installed" ]; then
|
|
61
|
+
# Generate install configuration
|
|
62
|
+
cat << EOF > /tmp/install.config.json
|
|
46
63
|
{
|
|
47
64
|
"PackageManager": "pnpm",
|
|
48
65
|
"dbUrl": "$DB_HOST",
|
|
@@ -67,35 +84,54 @@ if [ ! -f "/workspace/package.json" ]; then
|
|
|
67
84
|
}
|
|
68
85
|
EOF
|
|
69
86
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
87
|
+
# Install the release this workspace is pinned to (MJ_VERSION, the same release as the CLI
|
|
88
|
+
# in this container). Without a tag, `mj install --yes` takes the newest stable GitHub
|
|
89
|
+
# release, which need not match that CLI.
|
|
90
|
+
INSTALL_TAG_ARGS=()
|
|
91
|
+
if [ -n "${MJ_VERSION:-}" ]; then
|
|
92
|
+
INSTALL_TAG_ARGS=(--tag "v${MJ_VERSION}")
|
|
93
|
+
else
|
|
94
|
+
echo "WARNING: MJ_VERSION is not set; 'mj install' will pick the newest stable release, which may not match this container's CLI."
|
|
95
|
+
fi
|
|
96
|
+
|
|
97
|
+
# Execute headless install. Safe to retry: the installer checkpoints completed phases.
|
|
98
|
+
mj install --yes --fast --config /tmp/install.config.json --dir /workspace "${INSTALL_TAG_ARGS[@]}"
|
|
99
|
+
touch "$STATE_DIR/core-installed"
|
|
100
|
+
pnpm add -w @angular/compiler@21.2.22 2>/dev/null || true
|
|
101
|
+
fi
|
|
73
102
|
|
|
74
103
|
# Install Open App business context (More Cheese default or custom enterprise app)
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
104
|
+
if [ ! -f "$STATE_DIR/app-installed" ]; then
|
|
105
|
+
APP_URL="${OPEN_APP_INSTALL_URL:-https://github.com/MemberJunction/more-cheese}"
|
|
106
|
+
echo "Installing business context Open App: $APP_URL..."
|
|
107
|
+
if [ -n "$GITHUB_TOKEN" ]; then
|
|
108
|
+
AUTH_APP_URL=$(echo "$APP_URL" | sed -E "s|https://github.com/|https://$GITHUB_TOKEN@github.com/|")
|
|
109
|
+
mj app install "$AUTH_APP_URL"
|
|
110
|
+
else
|
|
111
|
+
mj app install "$APP_URL"
|
|
112
|
+
fi
|
|
113
|
+
touch "$STATE_DIR/app-installed"
|
|
82
114
|
fi
|
|
83
115
|
|
|
84
|
-
# Generate capabilities catalog
|
|
116
|
+
# Generate capabilities catalog. Useful to the coding agent but not needed for a running
|
|
117
|
+
# stack, so a failure warns instead of stopping the container, and says what it means.
|
|
85
118
|
if [ -f "/work/scripts/generate-capabilities.sh" ]; then
|
|
86
|
-
bash /work/scripts/generate-capabilities.sh
|
|
119
|
+
bash /work/scripts/generate-capabilities.sh \
|
|
120
|
+
|| echo "WARNING: capabilities catalog generation failed, so the catalog may be missing or stale. Re-run scripts/generate-capabilities.sh."
|
|
87
121
|
fi
|
|
88
122
|
|
|
89
|
-
# Push starter metadata
|
|
123
|
+
# Push starter metadata. --ci: never prompt (there is no terminal here) and exit non-zero
|
|
124
|
+
# on error. Safe to repeat on a retry: mj sync push upserts.
|
|
90
125
|
if [ -d "/work/metadata" ]; then
|
|
91
|
-
mj sync push --dir /work/metadata
|
|
126
|
+
mj sync push --dir /work/metadata --ci
|
|
92
127
|
fi
|
|
93
128
|
|
|
129
|
+
touch "$STATE_DIR/provisioned"
|
|
94
130
|
echo "MemberJunction installation and provisioning complete!"
|
|
95
131
|
else
|
|
96
132
|
echo "Existing MemberJunction workspace detected in /workspace."
|
|
97
|
-
# Apply any pending migrations
|
|
98
|
-
mj migrate
|
|
133
|
+
# Apply any pending migrations (exits 0 when already up to date)
|
|
134
|
+
mj migrate
|
|
99
135
|
fi
|
|
100
136
|
|
|
101
137
|
# Configure MJExplorer host binding and compiler alignment
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-profiles.d.ts","sourceRoot":"","sources":["../../src/lib/domain-profiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,OAAO,EAAE,WAAW,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,aAGpC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"domain-profiles.d.ts","sourceRoot":"","sources":["../../src/lib/domain-profiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,OAAO,EAAE,WAAW,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,aAGpC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAiGnE,CAAC;AAEF,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAE9D;AAED,gDAAgD;AAChD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAE9D"}
|
|
@@ -34,6 +34,10 @@ export const DOMAIN_PROFILES = {
|
|
|
34
34
|
Summary: 'Run and inspect AI agents, prompts, and actions from the terminal.',
|
|
35
35
|
Runtime: { class: 'variable', note: 'a listing is instant; an agent run is bounded only by the agent itself' },
|
|
36
36
|
},
|
|
37
|
+
queue: {
|
|
38
|
+
Summary: 'Operate the durable work queue — stats, backlog, dead letters, replay and discard, container-job workers, cloud bindings.',
|
|
39
|
+
Runtime: { class: 'moderate', typicalSeconds: 15, note: 'dominated by MJ bootstrap; each operation is a few queries or cloud API calls' },
|
|
40
|
+
},
|
|
37
41
|
app: {
|
|
38
42
|
Summary: 'Install, upgrade, enable, and remove Open Apps.',
|
|
39
43
|
Runtime: { class: 'slow', typicalSeconds: 180, note: 'installs run migrations and package installs' },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-profiles.js","sourceRoot":"","sources":["../../src/lib/domain-profiles.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"domain-profiles.js","sourceRoot":"","sources":["../../src/lib/domain-profiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { RemoteOpResult } from '@memberjunction/core';
|
|
2
|
+
import type { WorkQueueBindingIssueRow, WorkQueueGetBacklogOutput, WorkQueueListDeadLettersOutput, WorkQueueListPartitionsInput, WorkQueueListPartitionsOutput, WorkQueueStatsFailureRow, WorkQueueSubscriptionStatsRow } from '@memberjunction/core-entities';
|
|
3
|
+
import type { BindingImport } from '@memberjunction/work-queue-core';
|
|
4
|
+
type PartitionConditionOption = NonNullable<WorkQueueListPartitionsInput['condition']>;
|
|
5
|
+
export declare const PARTITION_CONDITION_OPTIONS: readonly PartitionConditionOption[];
|
|
6
|
+
export declare function FormatTable(headers: string[], rows: string[][]): string;
|
|
7
|
+
export declare function FormatStatsTable(rows: WorkQueueSubscriptionStatsRow[], failures: WorkQueueStatsFailureRow[]): string;
|
|
8
|
+
export declare function FormatDeadLetters(output: WorkQueueListDeadLettersOutput): string;
|
|
9
|
+
export declare function FormatPartitions(output: WorkQueueListPartitionsOutput): string;
|
|
10
|
+
export declare function FormatBacklog(output: WorkQueueGetBacklogOutput): string;
|
|
11
|
+
export declare function FormatBindingIssues(issues: WorkQueueBindingIssueRow[]): string;
|
|
12
|
+
export declare function HasBindingErrors(issues: WorkQueueBindingIssueRow[]): boolean;
|
|
13
|
+
export declare function ParseBindingImport(json: string): BindingImport;
|
|
14
|
+
export declare function RequireOperationOutput<T>(result: RemoteOpResult<T>, operationKey: string): T;
|
|
15
|
+
export declare function ToPartitionCondition(value: string | undefined): PartitionConditionOption | undefined;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=queue-format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue-format.d.ts","sourceRoot":"","sources":["../../../src/lib/work-queue/queue-format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EACR,wBAAwB,EAAE,yBAAyB,EAAE,8BAA8B,EAAE,4BAA4B,EACjH,6BAA6B,EAAE,wBAAwB,EAAE,6BAA6B,EACzF,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,iCAAiC,CAAC;AAE/E,KAAK,wBAAwB,GAAG,WAAW,CAAC,4BAA4B,CAAC,WAAW,CAAC,CAAC,CAAC;AAEvF,eAAO,MAAM,2BAA2B,EAAE,SAAS,wBAAwB,EAAoC,CAAC;AAKhH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CAIvE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,6BAA6B,EAAE,EAAE,QAAQ,EAAE,wBAAwB,EAAE,GAAG,MAAM,CAapH;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,8BAA8B,GAAG,MAAM,CAehF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,6BAA6B,GAAG,MAAM,CAY9E;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,yBAAyB,GAAG,MAAM,CAMvE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,wBAAwB,EAAE,GAAG,MAAM,CAK9E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,wBAAwB,EAAE,GAAG,OAAO,CAE5E;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAe9D;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC,CAK5F;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,wBAAwB,GAAG,SAAS,CASpG"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
export const PARTITION_CONDITION_OPTIONS = ['Idle', 'InFlight', 'Blocked'];
|
|
2
|
+
const UNKNOWN = '—';
|
|
3
|
+
const MAX_ERROR_WIDTH = 60;
|
|
4
|
+
export function FormatTable(headers, rows) {
|
|
5
|
+
const widths = headers.map((header, index) => Math.max(header.length, ...rows.map(row => (row[index] ?? '').length)));
|
|
6
|
+
const line = (cells) => cells.map((cell, index) => cell.padEnd(widths[index])).join(' ').trimEnd();
|
|
7
|
+
return [line(headers), line(widths.map(width => '-'.repeat(width))), ...rows.map(line)].join('\n');
|
|
8
|
+
}
|
|
9
|
+
export function FormatStatsTable(rows, failures) {
|
|
10
|
+
if (rows.length === 0 && failures.length === 0) {
|
|
11
|
+
return 'No subscriptions.';
|
|
12
|
+
}
|
|
13
|
+
const table = rows.length === 0 ? '' : FormatTable(['Subscription', 'Pending', 'In flight', 'Dead', 'Blocked keys', 'Oldest pending (s)', 'Done/hour'], rows.map(row => [
|
|
14
|
+
row.SubscriptionName, String(row.Pending), String(row.InFlight), String(row.DeadLettered), Optional(row.BlockedKeys),
|
|
15
|
+
Optional(row.OldestPendingAgeSeconds), Optional(row.CompletedLastHour),
|
|
16
|
+
]));
|
|
17
|
+
const failed = failures.map(failure => `! ${failure.subscriptionName}: ${failure.error}`);
|
|
18
|
+
return [table, ...failed].filter(part => part !== '').join('\n');
|
|
19
|
+
}
|
|
20
|
+
export function FormatDeadLetters(output) {
|
|
21
|
+
if (!output.supported) {
|
|
22
|
+
return "This subscription's transport cannot list dead letters.";
|
|
23
|
+
}
|
|
24
|
+
if (output.items.length === 0) {
|
|
25
|
+
return 'No dead letters.';
|
|
26
|
+
}
|
|
27
|
+
const table = FormatTable(['Delivery', 'Partition key', 'Attempts', 'Reason', 'Blocks key', 'Dead-lettered at', 'Last error'], output.items.map(item => [
|
|
28
|
+
item.DeliveryID, item.PartitionKey ?? UNKNOWN, String(item.Attempts), item.Reason, item.BlocksKey ? 'yes' : 'no',
|
|
29
|
+
item.DeadLetteredAt ?? UNKNOWN, Truncate(item.LastError ?? '', MAX_ERROR_WIDTH),
|
|
30
|
+
]));
|
|
31
|
+
return WithCursor(table, output.nextCursor);
|
|
32
|
+
}
|
|
33
|
+
export function FormatPartitions(output) {
|
|
34
|
+
if (!output.supported) {
|
|
35
|
+
return "This subscription's transport cannot list partitions.";
|
|
36
|
+
}
|
|
37
|
+
if (output.items.length === 0) {
|
|
38
|
+
return 'No partitions match.';
|
|
39
|
+
}
|
|
40
|
+
const table = FormatTable(['Partition key', 'Condition', 'Head delivery', 'Waiting'], output.items.map(item => [item.PartitionKey, item.Condition, item.HeadDeliveryID ?? UNKNOWN, String(item.WaitingItems)]));
|
|
41
|
+
return WithCursor(table, output.nextCursor);
|
|
42
|
+
}
|
|
43
|
+
export function FormatBacklog(output) {
|
|
44
|
+
if (!output.supported) {
|
|
45
|
+
return "This subscription's transport reports no backlog; scale from the transport's own metrics.";
|
|
46
|
+
}
|
|
47
|
+
const line = `claimable ${output.claimable} · in flight ${output.inFlight} · total ${output.total}`;
|
|
48
|
+
return output.capped ? `${line} (capped at 1000 — the real backlog is at least this large)` : line;
|
|
49
|
+
}
|
|
50
|
+
export function FormatBindingIssues(issues) {
|
|
51
|
+
if (issues.length === 0) {
|
|
52
|
+
return 'No binding issues.';
|
|
53
|
+
}
|
|
54
|
+
return issues.map(issue => `${issue.Severity === 'Error' ? '✖' : '⚠'} ${issue.Severity} ${issue.Subject}: ${issue.Message}`).join('\n');
|
|
55
|
+
}
|
|
56
|
+
export function HasBindingErrors(issues) {
|
|
57
|
+
return issues.some(issue => issue.Severity === 'Error');
|
|
58
|
+
}
|
|
59
|
+
export function ParseBindingImport(json) {
|
|
60
|
+
let parsed;
|
|
61
|
+
try {
|
|
62
|
+
parsed = JSON.parse(json);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
throw new Error('Binding import file is not valid JSON');
|
|
66
|
+
}
|
|
67
|
+
if (!IsRecord(parsed) || parsed.ManifestVersion !== 1 || !Array.isArray(parsed.Topics) || !Array.isArray(parsed.Subscriptions)) {
|
|
68
|
+
throw new Error('Binding import must be { "ManifestVersion": 1, "Topics": [...], "Subscriptions": [...] }');
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
ManifestVersion: 1,
|
|
72
|
+
Topics: parsed.Topics.map((entry, index) => BindingEntry(entry, `Topics[${index}]`)),
|
|
73
|
+
Subscriptions: parsed.Subscriptions.map((entry, index) => BindingEntry(entry, `Subscriptions[${index}]`)),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
export function RequireOperationOutput(result, operationKey) {
|
|
77
|
+
if (!result.Success || result.Output === undefined) {
|
|
78
|
+
throw new Error(`${operationKey} failed (${result.ResultCode ?? 'UNKNOWN'}): ${result.ErrorMessage ?? 'no output'}`);
|
|
79
|
+
}
|
|
80
|
+
return result.Output;
|
|
81
|
+
}
|
|
82
|
+
export function ToPartitionCondition(value) {
|
|
83
|
+
if (value === undefined) {
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
const condition = PARTITION_CONDITION_OPTIONS.find(option => option === value);
|
|
87
|
+
if (!condition) {
|
|
88
|
+
throw new Error(`--condition must be one of ${PARTITION_CONDITION_OPTIONS.join(', ')}`);
|
|
89
|
+
}
|
|
90
|
+
return condition;
|
|
91
|
+
}
|
|
92
|
+
function BindingEntry(value, at) {
|
|
93
|
+
if (!IsRecord(value) || typeof value.Name !== 'string' || !IsJsonObject(value.BindingConfig)) {
|
|
94
|
+
throw new Error(`${at} must have a string Name and an object BindingConfig`);
|
|
95
|
+
}
|
|
96
|
+
return { Name: value.Name, BindingConfig: value.BindingConfig };
|
|
97
|
+
}
|
|
98
|
+
function IsJsonObject(value) {
|
|
99
|
+
return IsRecord(value) && Object.values(value).every(IsWorkJsonValue);
|
|
100
|
+
}
|
|
101
|
+
function IsWorkJsonValue(value) {
|
|
102
|
+
if (value === null || typeof value === 'string' || typeof value === 'boolean') {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
if (typeof value === 'number') {
|
|
106
|
+
return Number.isFinite(value);
|
|
107
|
+
}
|
|
108
|
+
if (Array.isArray(value)) {
|
|
109
|
+
return value.every(IsWorkJsonValue);
|
|
110
|
+
}
|
|
111
|
+
return IsJsonObject(value);
|
|
112
|
+
}
|
|
113
|
+
function IsRecord(value) {
|
|
114
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
115
|
+
}
|
|
116
|
+
function Optional(value) {
|
|
117
|
+
return value === null ? UNKNOWN : String(value);
|
|
118
|
+
}
|
|
119
|
+
function Truncate(text, width) {
|
|
120
|
+
return text.length > width ? `${text.slice(0, width - 1)}…` : text;
|
|
121
|
+
}
|
|
122
|
+
function WithCursor(table, nextCursor) {
|
|
123
|
+
return nextCursor ? `${table}\nMore: --cursor ${nextCursor}` : table;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=queue-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue-format.js","sourceRoot":"","sources":["../../../src/lib/work-queue/queue-format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DatabaseProviderBase, UserInfo } from '@memberjunction/core';
|
|
2
|
+
export interface WorkQueueCliSession {
|
|
3
|
+
Provider: DatabaseProviderBase;
|
|
4
|
+
User: UserInfo;
|
|
5
|
+
Close(): Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
/** The CLI's shared provider (SQL Server or PostgreSQL per config) and the system user. */
|
|
8
|
+
export declare function OpenWorkQueueSession(): Promise<WorkQueueCliSession>;
|
|
9
|
+
//# sourceMappingURL=queue-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue-session.d.ts","sourceRoot":"","sources":["../../../src/lib/work-queue/queue-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAG3E,MAAM,WAAW,mBAAmB;IAChC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,2FAA2F;AAC3F,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAIzE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BuildContextUser, CloseConnectionPool, EnsureProviderInitialized } from '../../utils/open-app-context.js';
|
|
2
|
+
/** The CLI's shared provider (SQL Server or PostgreSQL per config) and the system user. */
|
|
3
|
+
export async function OpenWorkQueueSession() {
|
|
4
|
+
const provider = await EnsureProviderInitialized();
|
|
5
|
+
const user = await BuildContextUser();
|
|
6
|
+
return { Provider: provider, User: user, Close: CloseConnectionPool };
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=queue-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue-session.js","sourceRoot":"","sources":["../../../src/lib/work-queue/queue-session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAQnH,2FAA2F;AAC3F,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACtC,MAAM,QAAQ,GAAG,MAAM,yBAAyB,EAAE,CAAC;IACnD,MAAM,IAAI,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACtC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { WorkQueueHostHealth } from '@memberjunction/work-queue-engine';
|
|
2
|
+
export interface StoppableWorkHost {
|
|
3
|
+
Shutdown(): Promise<void>;
|
|
4
|
+
}
|
|
5
|
+
/** The slice of `process` RunUntilStopped needs; an EventEmitter satisfies it in tests. */
|
|
6
|
+
interface SignalSource {
|
|
7
|
+
once(event: 'SIGINT' | 'SIGTERM', listener: () => void): unknown;
|
|
8
|
+
off(event: 'SIGINT' | 'SIGTERM', listener: () => void): unknown;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Why this worker must exit non-zero, or null (03 §11). A scheduler reads exit 0 as "the job did what it could", so a
|
|
12
|
+
* job that CANNOT run — unknown subscription, handler missing from the image, unsupported transport — has to fail
|
|
13
|
+
* loudly instead of churning "successful" jobs. A subscription an operator PAUSED is not a failure: pausing is
|
|
14
|
+
* deliberate, and the scaler query already stops spawning jobs for it.
|
|
15
|
+
*/
|
|
16
|
+
export declare function WorkerStartFailure(health: WorkQueueHostHealth, requested: string): string | null;
|
|
17
|
+
/**
|
|
18
|
+
* Waits for `work` to finish, or for SIGINT/SIGTERM — whichever comes first. On a signal it awaits host.Shutdown()
|
|
19
|
+
* (the shared drain promise) before resolving, so the caller never closes the connection pool under in-flight
|
|
20
|
+
* handlers. Listeners are always removed.
|
|
21
|
+
*/
|
|
22
|
+
export declare function RunUntilStopped(host: StoppableWorkHost, work: Promise<unknown>, signals?: SignalSource): Promise<'Signal' | 'Finished'>;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=queue-worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue-worker.d.ts","sourceRoot":"","sources":["../../../src/lib/work-queue/queue-worker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAE7E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,2FAA2F;AAC3F,UAAU,YAAY;IACpB,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC;IACjE,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC;CACjE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAahG;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,GAAE,YAAsB,GAAG,OAAO,CAAC,QAAQ,GAAG,UAAU,CAAC,CAqBtJ"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { HOST_SHUT_DOWN_REASON } from '@memberjunction/work-queue-engine';
|
|
2
|
+
/**
|
|
3
|
+
* Why this worker must exit non-zero, or null (03 §11). A scheduler reads exit 0 as "the job did what it could", so a
|
|
4
|
+
* job that CANNOT run — unknown subscription, handler missing from the image, unsupported transport — has to fail
|
|
5
|
+
* loudly instead of churning "successful" jobs. A subscription an operator PAUSED is not a failure: pausing is
|
|
6
|
+
* deliberate, and the scaler query already stops spawning jobs for it.
|
|
7
|
+
*/
|
|
8
|
+
export function WorkerStartFailure(health, requested) {
|
|
9
|
+
// After Shutdown() a subscription that WAS running reports Paused / HOST_SHUT_DOWN_REASON — that one ran.
|
|
10
|
+
if (health.Subscriptions.some(s => s.State === 'Running' || s.Reason === HOST_SHUT_DOWN_REASON)) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
if (health.Subscriptions.length === 0) {
|
|
14
|
+
return `No subscription is running for '${requested}': no MJWorker subscriptions matched`;
|
|
15
|
+
}
|
|
16
|
+
const broken = health.Subscriptions.filter(s => s.State !== 'Paused');
|
|
17
|
+
if (broken.length === 0) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
return `No subscription is running for '${requested}': ${broken.map(s => `${s.Name} is ${s.State}${s.Reason ? ` (${s.Reason})` : ''}`).join('; ')}`;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Waits for `work` to finish, or for SIGINT/SIGTERM — whichever comes first. On a signal it awaits host.Shutdown()
|
|
24
|
+
* (the shared drain promise) before resolving, so the caller never closes the connection pool under in-flight
|
|
25
|
+
* handlers. Listeners are always removed.
|
|
26
|
+
*/
|
|
27
|
+
export async function RunUntilStopped(host, work, signals = process) {
|
|
28
|
+
let onSignal = () => undefined;
|
|
29
|
+
const signalled = new Promise(resolve => {
|
|
30
|
+
onSignal = () => resolve('Signal');
|
|
31
|
+
});
|
|
32
|
+
signals.once('SIGINT', onSignal);
|
|
33
|
+
signals.once('SIGTERM', onSignal);
|
|
34
|
+
try {
|
|
35
|
+
const outcome = await Promise.race([signalled, work.then(() => 'Finished')]);
|
|
36
|
+
if (outcome === 'Signal') {
|
|
37
|
+
await host.Shutdown();
|
|
38
|
+
// RunOnce resolves 'Shutdown' in the microtasks right after the shared drain promise, so its result is captured
|
|
39
|
+
// by the next macrotask. The long-running mode passes a promise that never settles, so the wait is bounded:
|
|
40
|
+
// awaiting it outright would hang the worker on SIGTERM.
|
|
41
|
+
await Promise.race([work.catch(() => undefined), new Promise(resolve => setImmediate(resolve))]);
|
|
42
|
+
}
|
|
43
|
+
return outcome;
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
signals.off('SIGINT', onSignal);
|
|
47
|
+
signals.off('SIGTERM', onSignal);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=queue-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue-worker.js","sourceRoot":"","sources":["../../../src/lib/work-queue/queue-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAa1E;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA2B,EAAE,SAAiB;IAC/E,0GAA0G;IAC1G,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,qBAAqB,CAAC,EAAE,CAAC;QAChG,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO,mCAAmC,SAAS,sCAAsC,CAAC;IAC5F,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;IACtE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,mCAAmC,SAAS,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACtJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAuB,EAAE,IAAsB,EAAE,UAAwB,OAAO;IACpH,IAAI,QAAQ,GAAe,GAAG,EAAE,CAAC,SAAS,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,OAAO,CAAW,OAAO,CAAC,EAAE;QAChD,QAAQ,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACjC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAmB,CAAC,CAAC,CAAC,CAAC;QACtF,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,gHAAgH;YAChH,4GAA4G;YAC5G,yDAAyD;YACzD,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACzG,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light-commands.d.ts","sourceRoot":"","sources":["../src/light-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"light-commands.d.ts","sourceRoot":"","sources":["../src/light-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAkH7C,CAAC"}
|
package/dist/light-commands.js
CHANGED
|
@@ -30,6 +30,8 @@ export const LIGHT_COMMANDS = new Set([
|
|
|
30
30
|
// entries in this file use the colon form.
|
|
31
31
|
'ai usage',
|
|
32
32
|
'ai:usage',
|
|
33
|
+
'queue usage',
|
|
34
|
+
'queue:usage',
|
|
33
35
|
'app usage',
|
|
34
36
|
'app:usage',
|
|
35
37
|
'artifacts usage',
|
|
@@ -83,6 +85,7 @@ export const LIGHT_COMMANDS = new Set([
|
|
|
83
85
|
'bundle',
|
|
84
86
|
// Topic index commands (just display help text, no heavy imports)
|
|
85
87
|
'ai',
|
|
88
|
+
'queue',
|
|
86
89
|
'ai audit',
|
|
87
90
|
'test',
|
|
88
91
|
'dbdoc',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light-commands.js","sourceRoot":"","sources":["../src/light-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC;IACzD,yBAAyB;IACzB,SAAS;IACT,MAAM;IAEN,0EAA0E;IAC1E,qEAAqE;IACrE,OAAO;IACP,YAAY;IACZ,eAAe;IACf,WAAW;IACX,oFAAoF;IACpF,kFAAkF;IAClF,kFAAkF;IAClF,oFAAoF;IACpF,2CAA2C;IAC3C,UAAU;IACV,UAAU;IACV,WAAW;IACX,WAAW;IACX,iBAAiB;IACjB,iBAAiB;IACjB,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,cAAc;IACd,aAAa;IACb,aAAa;IACb,aAAa;IACb,aAAa;IACb,cAAc;IACd,cAAc;IACd,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,cAAc;IACd,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,iBAAiB;IACjB,mBAAmB;IACnB,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;IACjB,YAAY;IACZ,YAAY;IACZ,qBAAqB;IACrB,qBAAqB;IACrB,cAAc;IACd,cAAc;IAEd,4DAA4D;IAC5D,YAAY;IAEZ,sCAAsC;IACtC,MAAM;IAEN,oEAAoE;IACpE,OAAO;IACP,SAAS;IACT,iBAAiB;IACjB,gBAAgB;IAEhB,qFAAqF;IACrF,SAAS;IAET,6EAA6E;IAC7E,QAAQ;IAER,4FAA4F;IAC5F,QAAQ;IAER,kEAAkE;IAClE,IAAI;IACJ,UAAU;IACV,MAAM;IACN,OAAO;IACP,KAAK;IAEL,mEAAmE;IACnE,eAAe;IACf,sBAAsB;IACtB,sBAAsB;IACtB,qBAAqB;IAErB,gFAAgF;IAChF,aAAa;IACb,WAAW;IAEX,8EAA8E;IAC9E,oCAAoC;IACpC,gBAAgB;IAChB,eAAe;IAEf,kGAAkG;IAClG,yFAAyF;IACzF,+FAA+F;IAC/F,kBAAkB;IAElB,0DAA0D;IAC1D,YAAY;IACZ,eAAe;IACf,cAAc;IACd,6BAA6B;IAC7B,wBAAwB;IACxB,aAAa;IACb,cAAc;CACf,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"light-commands.js","sourceRoot":"","sources":["../src/light-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC;IACzD,yBAAyB;IACzB,SAAS;IACT,MAAM;IAEN,0EAA0E;IAC1E,qEAAqE;IACrE,OAAO;IACP,YAAY;IACZ,eAAe;IACf,WAAW;IACX,oFAAoF;IACpF,kFAAkF;IAClF,kFAAkF;IAClF,oFAAoF;IACpF,2CAA2C;IAC3C,UAAU;IACV,UAAU;IACV,aAAa;IACb,aAAa;IACb,WAAW;IACX,WAAW;IACX,iBAAiB;IACjB,iBAAiB;IACjB,gBAAgB;IAChB,gBAAgB;IAChB,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,cAAc;IACd,aAAa;IACb,aAAa;IACb,aAAa;IACb,aAAa;IACb,cAAc;IACd,cAAc;IACd,eAAe;IACf,eAAe;IACf,eAAe;IACf,eAAe;IACf,cAAc;IACd,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,iBAAiB;IACjB,mBAAmB;IACnB,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;IACjB,YAAY;IACZ,YAAY;IACZ,qBAAqB;IACrB,qBAAqB;IACrB,cAAc;IACd,cAAc;IAEd,4DAA4D;IAC5D,YAAY;IAEZ,sCAAsC;IACtC,MAAM;IAEN,oEAAoE;IACpE,OAAO;IACP,SAAS;IACT,iBAAiB;IACjB,gBAAgB;IAEhB,qFAAqF;IACrF,SAAS;IAET,6EAA6E;IAC7E,QAAQ;IAER,4FAA4F;IAC5F,QAAQ;IAER,kEAAkE;IAClE,IAAI;IACJ,OAAO;IACP,UAAU;IACV,MAAM;IACN,OAAO;IACP,KAAK;IAEL,mEAAmE;IACnE,eAAe;IACf,sBAAsB;IACtB,sBAAsB;IACtB,qBAAqB;IAErB,gFAAgF;IAChF,aAAa;IACb,WAAW;IAEX,8EAA8E;IAC9E,oCAAoC;IACpC,gBAAgB;IAChB,eAAe;IAEf,kGAAkG;IAClG,yFAAyF;IACzF,+FAA+F;IAC/F,kBAAkB;IAElB,0DAA0D;IAC1D,YAAY;IACZ,eAAe;IACf,cAAc;IACd,6BAA6B;IAC7B,wBAAwB;IACxB,aAAa;IACb,cAAc;CACf,CAAC,CAAC"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { UserInfo, type DatabaseProviderBase } from '@memberjunction/core';
|
|
2
|
+
/**
|
|
3
|
+
* Initializes (or returns the already-initialized) MJ data provider for the
|
|
4
|
+
* configured platform, by adapting MJCLI's config to the `MJConfig` shape that
|
|
5
|
+
* MetadataSync's shared `initializeProvider` consumes.
|
|
6
|
+
*/
|
|
7
|
+
export declare function EnsureProviderInitialized(): Promise<DatabaseProviderBase>;
|
|
2
8
|
/**
|
|
3
9
|
* Closes the shared connection(s). Call on CLI exit for cleanup. Delegates to
|
|
4
10
|
* MetadataSync's `cleanupProvider`, which tears down whichever pool (mssql or pg)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-app-context.d.ts","sourceRoot":"","sources":["../../src/utils/open-app-context.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"open-app-context.d.ts","sourceRoot":"","sources":["../../src/utils/open-app-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@ import { GetValidatedConfig } from '../config.js';
|
|
|
27
27
|
* configured platform, by adapting MJCLI's config to the `MJConfig` shape that
|
|
28
28
|
* MetadataSync's shared `initializeProvider` consumes.
|
|
29
29
|
*/
|
|
30
|
-
async function
|
|
30
|
+
export async function EnsureProviderInitialized() {
|
|
31
31
|
return initializeProvider(toMJConfig(GetValidatedConfig()));
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
@@ -105,7 +105,7 @@ function getSystemUserInfo() {
|
|
|
105
105
|
* Initializes the MJ runtime and returns the system user.
|
|
106
106
|
*/
|
|
107
107
|
export async function BuildContextUser() {
|
|
108
|
-
await
|
|
108
|
+
await EnsureProviderInitialized();
|
|
109
109
|
return getSystemUserInfo();
|
|
110
110
|
}
|
|
111
111
|
/** @deprecated Use {@link BuildContextUser}. */
|
|
@@ -117,7 +117,7 @@ export async function buildContextUser() {
|
|
|
117
117
|
*/
|
|
118
118
|
export async function BuildOrchestratorContext(command, verbose, interactive = true) {
|
|
119
119
|
const config = GetValidatedConfig();
|
|
120
|
-
const provider = await
|
|
120
|
+
const provider = await EnsureProviderInitialized();
|
|
121
121
|
const contextUser = getSystemUserInfo();
|
|
122
122
|
const spinner = verbose ? ora() : undefined;
|
|
123
123
|
// Only wire interactive prompt callbacks when this run is actually allowed to prompt.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-app-context.js","sourceRoot":"","sources":["../../src/utils/open-app-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,GAAG,MAAM,aAAa,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAIlD,gFAAgF;AAChF,2EAA2E;AAC3E,6EAA6E;AAC7E,iFAAiF;AACjF,qFAAqF;AACrF,gFAAgF;AAEhF;;;;GAIG;AACH,KAAK,UAAU,yBAAyB;
|
|
1
|
+
{"version":3,"file":"open-app-context.js","sourceRoot":"","sources":["../../src/utils/open-app-context.ts"],"names":[],"mappings":"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"}
|