@memberjunction/cli 6.1.4 → 6.2.0-edge.1
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/baseline/cli-helpers.d.ts +4 -0
- package/dist/baseline/cli-helpers.d.ts.map +1 -1
- package/dist/baseline/cli-helpers.js +18 -10
- package/dist/baseline/cli-helpers.js.map +1 -1
- package/dist/baseline/comparator.d.ts +5 -3
- package/dist/baseline/comparator.d.ts.map +1 -1
- package/dist/baseline/comparator.js +142 -138
- package/dist/baseline/comparator.js.map +1 -1
- package/dist/baseline/connection.d.ts +8 -6
- package/dist/baseline/connection.d.ts.map +1 -1
- package/dist/baseline/connection.js +16 -12
- package/dist/baseline/connection.js.map +1 -1
- package/dist/baseline/data-dumper.d.ts +7 -3
- package/dist/baseline/data-dumper.d.ts.map +1 -1
- package/dist/baseline/data-dumper.js +33 -25
- package/dist/baseline/data-dumper.js.map +1 -1
- package/dist/baseline/emitter.d.ts +5 -3
- package/dist/baseline/emitter.d.ts.map +1 -1
- package/dist/baseline/emitter.js +114 -110
- package/dist/baseline/emitter.js.map +1 -1
- package/dist/baseline/index.d.ts +7 -7
- package/dist/baseline/index.d.ts.map +1 -1
- package/dist/baseline/index.js +7 -7
- package/dist/baseline/index.js.map +1 -1
- package/dist/baseline/introspector-mssql.d.ts +2 -0
- package/dist/baseline/introspector-mssql.d.ts.map +1 -1
- package/dist/baseline/introspector-mssql.js +68 -64
- package/dist/baseline/introspector-mssql.js.map +1 -1
- package/dist/baseline/introspector-postgres.d.ts +2 -0
- package/dist/baseline/introspector-postgres.d.ts.map +1 -1
- package/dist/baseline/introspector-postgres.js +34 -30
- package/dist/baseline/introspector-postgres.js.map +1 -1
- package/dist/baseline/report.d.ts +4 -0
- package/dist/baseline/report.d.ts.map +1 -1
- package/dist/baseline/report.js +25 -17
- package/dist/baseline/report.js.map +1 -1
- package/dist/baseline/types.d.ts +71 -71
- package/dist/baseline/util.d.ts +54 -6
- package/dist/baseline/util.d.ts.map +1 -1
- package/dist/baseline/util.js +112 -36
- package/dist/baseline/util.js.map +1 -1
- 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/ai/actions/list.js +7 -7
- package/dist/commands/ai/actions/run.js +7 -7
- package/dist/commands/ai/agents/list.js +7 -7
- package/dist/commands/ai/agents/run.js +9 -9
- package/dist/commands/ai/audit/agent-run.js +7 -7
- package/dist/commands/ai/prompts/run.js +7 -7
- package/dist/commands/app/check-updates.js +5 -5
- package/dist/commands/app/disable.js +2 -2
- package/dist/commands/app/enable.js +2 -2
- package/dist/commands/app/info.js +2 -2
- package/dist/commands/app/install.js +2 -2
- package/dist/commands/app/list.js +2 -2
- package/dist/commands/app/remove.js +4 -4
- package/dist/commands/app/upgrade.js +2 -2
- package/dist/commands/artifacts/reclassify.js +2 -2
- package/dist/commands/baseline/build.js +31 -31
- package/dist/commands/baseline/build.js.map +1 -1
- package/dist/commands/baseline/compare.js +36 -36
- package/dist/commands/baseline/roundtrip.js +56 -54
- package/dist/commands/baseline/roundtrip.js.map +1 -1
- package/dist/commands/bundle/index.js +4 -4
- package/dist/commands/clean/index.js +3 -3
- package/dist/commands/codegen/manifest.d.ts +2 -0
- package/dist/commands/codegen/manifest.d.ts.map +1 -1
- package/dist/commands/codegen/manifest.js +8 -4
- package/dist/commands/codegen/manifest.js.map +1 -1
- package/dist/commands/dev/workspace/index.d.ts +2 -0
- package/dist/commands/dev/workspace/index.d.ts.map +1 -1
- package/dist/commands/dev/workspace/index.js +8 -4
- package/dist/commands/dev/workspace/index.js.map +1 -1
- 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/install/claude.d.ts +2 -0
- package/dist/commands/install/claude.d.ts.map +1 -1
- package/dist/commands/install/claude.js +11 -7
- package/dist/commands/install/claude.js.map +1 -1
- package/dist/commands/install/index.js +3 -3
- package/dist/commands/migrate/convert.d.ts +21 -0
- package/dist/commands/migrate/convert.d.ts.map +1 -1
- package/dist/commands/migrate/convert.js +22 -6
- package/dist/commands/migrate/convert.js.map +1 -1
- package/dist/commands/migrate/create.js +2 -2
- package/dist/commands/migrate/index.js +16 -16
- package/dist/commands/sync/file-reset.js +2 -2
- package/dist/commands/sync/init.js +3 -3
- package/dist/commands/test/compare.js +6 -6
- package/dist/commands/test/history.js +6 -6
- package/dist/commands/test/list.js +6 -6
- package/dist/commands/test/regression/build.js +5 -5
- package/dist/commands/test/regression/compare.js +3 -3
- package/dist/commands/test/regression/down.js +4 -4
- package/dist/commands/test/regression/export.js +4 -4
- package/dist/commands/test/regression/gen-forms.js +3 -3
- package/dist/commands/test/regression/remote.js +10 -10
- package/dist/commands/test/regression/up.js +6 -6
- package/dist/commands/test/run.js +6 -6
- 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/commands/test/suite.js +6 -6
- package/dist/commands/test/validate.js +6 -6
- package/dist/commands/translate-sql/index.js +25 -25
- package/dist/commands/update/claude.js +7 -7
- package/dist/commands/usage.js +4 -4
- package/dist/config.d.ts +175 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +23 -9
- package/dist/config.js.map +1 -1
- package/dist/hooks/postrun.js +2 -2
- package/dist/hooks/prerun.js +2 -2
- package/dist/hooks/prerun.js.map +1 -1
- 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/dist/lib/claude-pack/ManagedBlockEditor.d.ts +6 -0
- package/dist/lib/claude-pack/ManagedBlockEditor.d.ts.map +1 -1
- package/dist/lib/claude-pack/ManagedBlockEditor.js +18 -6
- package/dist/lib/claude-pack/ManagedBlockEditor.js.map +1 -1
- package/dist/lib/claude-pack/PackFetcher.d.ts +8 -3
- package/dist/lib/claude-pack/PackFetcher.d.ts.map +1 -1
- package/dist/lib/claude-pack/PackFetcher.js +26 -18
- package/dist/lib/claude-pack/PackFetcher.js.map +1 -1
- package/dist/lib/claude-pack/PackInstaller.d.ts +6 -2
- package/dist/lib/claude-pack/PackInstaller.d.ts.map +1 -1
- package/dist/lib/claude-pack/PackInstaller.js +19 -13
- package/dist/lib/claude-pack/PackInstaller.js.map +1 -1
- package/dist/lib/claude-pack/PackMerger.d.ts +8 -0
- package/dist/lib/claude-pack/PackMerger.d.ts.map +1 -1
- package/dist/lib/claude-pack/PackMerger.js +63 -57
- package/dist/lib/claude-pack/PackMerger.js.map +1 -1
- package/dist/lib/claude-pack/PackOutputFormatter.d.ts +4 -0
- package/dist/lib/claude-pack/PackOutputFormatter.d.ts.map +1 -1
- package/dist/lib/claude-pack/PackOutputFormatter.js +10 -2
- package/dist/lib/claude-pack/PackOutputFormatter.js.map +1 -1
- package/dist/lib/claude-pack/PackPaths.d.ts +12 -0
- package/dist/lib/claude-pack/PackPaths.d.ts.map +1 -1
- package/dist/lib/claude-pack/PackPaths.js +31 -7
- package/dist/lib/claude-pack/PackPaths.js.map +1 -1
- package/dist/lib/claude-pack/PackTypes.d.ts +18 -14
- package/dist/lib/claude-pack/PackTypes.d.ts.map +1 -1
- package/dist/lib/claude-pack/PackTypes.js +11 -3
- package/dist/lib/claude-pack/PackTypes.js.map +1 -1
- package/dist/lib/claude-pack/SettingsMerger.d.ts +10 -0
- package/dist/lib/claude-pack/SettingsMerger.d.ts.map +1 -1
- package/dist/lib/claude-pack/SettingsMerger.js +36 -16
- package/dist/lib/claude-pack/SettingsMerger.js.map +1 -1
- package/dist/lib/cli-plugins.d.ts +2 -0
- package/dist/lib/cli-plugins.d.ts.map +1 -1
- package/dist/lib/cli-plugins.js +8 -4
- package/dist/lib/cli-plugins.js.map +1 -1
- package/dist/lib/db-preflight.d.ts +2 -0
- package/dist/lib/db-preflight.d.ts.map +1 -1
- package/dist/lib/db-preflight.js +12 -8
- package/dist/lib/db-preflight.js.map +1 -1
- package/dist/lib/db-version.d.ts +2 -0
- package/dist/lib/db-version.d.ts.map +1 -1
- package/dist/lib/db-version.js +5 -1
- package/dist/lib/db-version.js.map +1 -1
- package/dist/lib/derived-usage.d.ts +14 -8
- package/dist/lib/derived-usage.d.ts.map +1 -1
- package/dist/lib/derived-usage.js +30 -18
- package/dist/lib/derived-usage.js.map +1 -1
- package/dist/lib/domain-profiles.d.ts +4 -2
- package/dist/lib/domain-profiles.d.ts.map +1 -1
- package/dist/lib/domain-profiles.js +53 -49
- package/dist/lib/domain-profiles.js.map +1 -1
- package/dist/lib/domain-usage-command.js +4 -4
- package/dist/lib/dynamic-packages.d.ts +4 -2
- package/dist/lib/dynamic-packages.d.ts.map +1 -1
- package/dist/lib/dynamic-packages.js +9 -5
- package/dist/lib/dynamic-packages.js.map +1 -1
- package/dist/lib/format-compat.d.ts +9 -7
- package/dist/lib/format-compat.d.ts.map +1 -1
- package/dist/lib/format-compat.js +12 -8
- package/dist/lib/format-compat.js.map +1 -1
- package/dist/lib/interactive-guard.d.ts +16 -0
- package/dist/lib/interactive-guard.d.ts.map +1 -1
- package/dist/lib/interactive-guard.js +18 -6
- package/dist/lib/interactive-guard.js.map +1 -1
- package/dist/lib/migration-fetch.d.ts +16 -4
- package/dist/lib/migration-fetch.d.ts.map +1 -1
- package/dist/lib/migration-fetch.js +30 -18
- package/dist/lib/migration-fetch.js.map +1 -1
- package/dist/lib/regression/docker-helpers.d.ts +24 -0
- package/dist/lib/regression/docker-helpers.d.ts.map +1 -1
- package/dist/lib/regression/docker-helpers.js +46 -10
- package/dist/lib/regression/docker-helpers.js.map +1 -1
- package/dist/lib/usage-render.d.ts +6 -0
- package/dist/lib/usage-render.d.ts.map +1 -1
- package/dist/lib/usage-render.js +15 -3
- package/dist/lib/usage-render.js.map +1 -1
- package/dist/translate-sql/groundTruth.d.ts +3 -3
- package/dist/translate-sql/groundTruth.js +40 -40
- package/dist/translate-sql/reportGenerator.d.ts +7 -7
- package/dist/translate-sql/reportGenerator.js +18 -18
- package/dist/translate-sql/ruleTranslator.d.ts +3 -3
- package/dist/translate-sql/ruleTranslator.js +8 -8
- package/dist/translate-sql/ruleTranslator.js.map +1 -1
- package/dist/utils/open-app-context.d.ts +21 -0
- package/dist/utils/open-app-context.d.ts.map +1 -1
- package/dist/utils/open-app-context.js +26 -10
- package/dist/utils/open-app-context.js.map +1 -1
- package/oclif.manifest.json +1216 -1058
- package/package.json +22 -22
package/dist/init-templates/citizen-builder/metadata/prompts/templates/customer-insight.template.md
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Customer Insight Specialist Prompt
|
|
2
|
+
|
|
3
|
+
You are an expert customer account analyst. Your goal is to review customer profile data and order history, then synthesize a concise executive summary with actionable recommendations.
|
|
4
|
+
|
|
5
|
+
## Instructions
|
|
6
|
+
1. Analyze the customer account details, active status, and recent activity.
|
|
7
|
+
2. Review any open orders or pending balances.
|
|
8
|
+
3. Formulate 3 key insights:
|
|
9
|
+
- Account Health (engagement level and standing)
|
|
10
|
+
- Value / Purchase Pattern (frequent categories, average volume)
|
|
11
|
+
- Recommended Next Action (e.g. follow-up call, cross-sell recommendation, renewal notice)
|
|
12
|
+
4. Maintain a professional, objective tone. Do not fabricate details not present in the input.
|
|
13
|
+
|
|
14
|
+
## Output Format
|
|
15
|
+
Deliver your response formatted cleanly with the following markdown sections:
|
|
16
|
+
- **Executive Summary**
|
|
17
|
+
- **Key Metrics & Observations**
|
|
18
|
+
- **Actionable Recommendations**
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# ==============================================================================
|
|
3
|
+
# Citizen Agent Builder - Environment Bootstrap Script
|
|
4
|
+
# Runs inside the MJAPI container or via:
|
|
5
|
+
# docker compose exec api /work/scripts/bootstrap.sh
|
|
6
|
+
# ==============================================================================
|
|
7
|
+
set -e
|
|
8
|
+
|
|
9
|
+
echo "========================================================"
|
|
10
|
+
echo " Starting MemberJunction Citizen Builder Bootstrap"
|
|
11
|
+
echo "========================================================"
|
|
12
|
+
|
|
13
|
+
cd /app
|
|
14
|
+
|
|
15
|
+
# 1. Run core migrations
|
|
16
|
+
echo "[1/4] Ensuring core MemberJunction database migrations are applied..."
|
|
17
|
+
mj migrate
|
|
18
|
+
|
|
19
|
+
# 2. Install Open App (More Cheese by default, or Org-specific app)
|
|
20
|
+
APP_URL="${OPEN_APP_INSTALL_URL:-https://github.com/MemberJunction/more-cheese}"
|
|
21
|
+
echo "[2/4] Installing business context Open App: $APP_URL..."
|
|
22
|
+
|
|
23
|
+
if [ -n "$GITHUB_TOKEN" ]; then
|
|
24
|
+
# Inject token into GitHub URL if private repo
|
|
25
|
+
AUTH_APP_URL=$(echo "$APP_URL" | sed -E "s|https://github.com/|https://$GITHUB_TOKEN@github.com/|")
|
|
26
|
+
mj app install "$AUTH_APP_URL" || echo "Warning: mj app install returned non-zero, continuing..."
|
|
27
|
+
else
|
|
28
|
+
mj app install "$APP_URL" || echo "Warning: mj app install returned non-zero, continuing..."
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
# 3. Generate Capabilities Catalog
|
|
32
|
+
echo "[3/4] Generating CAPABILITIES.md catalog from database..."
|
|
33
|
+
if [ -f "/work/scripts/generate-capabilities.sh" ]; then
|
|
34
|
+
bash /work/scripts/generate-capabilities.sh || echo "Warning: Capability generation skipped."
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
# 4. Push local metadata
|
|
38
|
+
echo "[4/4] Pushing starter metadata to local instance..."
|
|
39
|
+
if [ -d "/work/metadata" ]; then
|
|
40
|
+
mj sync push --dir /work/metadata || echo "Initial sync completed or already up to date."
|
|
41
|
+
fi
|
|
42
|
+
|
|
43
|
+
echo "========================================================"
|
|
44
|
+
echo " MemberJunction Citizen Builder is Ready!"
|
|
45
|
+
echo " API: http://localhost:${API_PORT:-4000}"
|
|
46
|
+
echo " Database: localhost:${DB_PORT:-1433}"
|
|
47
|
+
echo "========================================================"
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# ==============================================================================
|
|
3
|
+
# MemberJunction Citizen Agent Builder - Container Entrypoint
|
|
4
|
+
# Automates first-time installation via `mj install`, database provisioning,
|
|
5
|
+
# Open App installation, and starts both MJAPI (:4000) and MJExplorer (:4200).
|
|
6
|
+
# ==============================================================================
|
|
7
|
+
set -e
|
|
8
|
+
|
|
9
|
+
echo "========================================================================"
|
|
10
|
+
echo " Starting MemberJunction Runtime Container"
|
|
11
|
+
echo "========================================================================"
|
|
12
|
+
|
|
13
|
+
DB_HOST="${DB_HOST:-sqlserver}"
|
|
14
|
+
DB_PORT="${DB_PORT:-1433}"
|
|
15
|
+
DB_PASSWORD="${DB_PASSWORD:-TestPassword123!}"
|
|
16
|
+
DB_DATABASE="${DB_DATABASE:-MemberJunction}"
|
|
17
|
+
|
|
18
|
+
# 1. Wait for SQL Server to be accessible
|
|
19
|
+
echo "Waiting for SQL Server ($DB_HOST:$DB_PORT) to be ready..."
|
|
20
|
+
until node -e "
|
|
21
|
+
const net = require('net');
|
|
22
|
+
const client = net.connect($DB_PORT, '$DB_HOST', () => {
|
|
23
|
+
client.destroy();
|
|
24
|
+
process.exit(0);
|
|
25
|
+
});
|
|
26
|
+
client.on('error', () => process.exit(1));
|
|
27
|
+
setTimeout(() => process.exit(1), 2000);
|
|
28
|
+
" 2>/dev/null; do
|
|
29
|
+
echo " Waiting for database connection..."
|
|
30
|
+
sleep 3
|
|
31
|
+
done
|
|
32
|
+
echo "SQL Server is reachable!"
|
|
33
|
+
|
|
34
|
+
cd /workspace
|
|
35
|
+
|
|
36
|
+
# 2. First-time setup: install MemberJunction if not already installed
|
|
37
|
+
if [ ! -f "/workspace/package.json" ]; then
|
|
38
|
+
echo ""
|
|
39
|
+
echo "========================================================================"
|
|
40
|
+
echo " First-Time Setup: Installing MemberJunction via 'mj install'..."
|
|
41
|
+
echo " This runs once and initializes your database, API, and Explorer."
|
|
42
|
+
echo "========================================================================"
|
|
43
|
+
|
|
44
|
+
# Generate install configuration
|
|
45
|
+
cat << EOF > /tmp/install.config.json
|
|
46
|
+
{
|
|
47
|
+
"PackageManager": "pnpm",
|
|
48
|
+
"dbUrl": "$DB_HOST",
|
|
49
|
+
"dbInstance": "",
|
|
50
|
+
"dbTrustServerCertificate": "Y",
|
|
51
|
+
"dbDatabase": "$DB_DATABASE",
|
|
52
|
+
"dbPort": $DB_PORT,
|
|
53
|
+
"codeGenLogin": "sa",
|
|
54
|
+
"codeGenPwD": "$DB_PASSWORD",
|
|
55
|
+
"mjAPILogin": "sa",
|
|
56
|
+
"mjAPIPwD": "$DB_PASSWORD",
|
|
57
|
+
"graphQLPort": 4000,
|
|
58
|
+
"authType": "Local",
|
|
59
|
+
"createNewUser": "Y",
|
|
60
|
+
"userEmail": "admin@memberjunction.org",
|
|
61
|
+
"userFirstName": "Admin",
|
|
62
|
+
"userLastName": "User",
|
|
63
|
+
"userName": "admin",
|
|
64
|
+
"openAIAPIKey": "${AI_VENDOR_API_KEY__OpenAILLM:-}",
|
|
65
|
+
"anthropicAPIKey": "${AI_VENDOR_API_KEY__AnthropicLLM:-}",
|
|
66
|
+
"geminiAPIKey": "${AI_VENDOR_API_KEY__GeminiLLM:-}"
|
|
67
|
+
}
|
|
68
|
+
EOF
|
|
69
|
+
|
|
70
|
+
# Execute headless install
|
|
71
|
+
mj install --yes --fast --config /tmp/install.config.json --dir /workspace
|
|
72
|
+
pnpm add -w @angular/compiler@21.2.22 2>/dev/null || true
|
|
73
|
+
|
|
74
|
+
# Install Open App business context (More Cheese default or custom enterprise app)
|
|
75
|
+
APP_URL="${OPEN_APP_INSTALL_URL:-https://github.com/MemberJunction/more-cheese}"
|
|
76
|
+
echo "Installing business context Open App: $APP_URL..."
|
|
77
|
+
if [ -n "$GITHUB_TOKEN" ]; then
|
|
78
|
+
AUTH_APP_URL=$(echo "$APP_URL" | sed -E "s|https://github.com/|https://$GITHUB_TOKEN@github.com/|")
|
|
79
|
+
mj app install "$AUTH_APP_URL" || echo "Notice: mj app install completed or skipped."
|
|
80
|
+
else
|
|
81
|
+
mj app install "$APP_URL" || echo "Notice: mj app install completed or skipped."
|
|
82
|
+
fi
|
|
83
|
+
|
|
84
|
+
# Generate capabilities catalog
|
|
85
|
+
if [ -f "/work/scripts/generate-capabilities.sh" ]; then
|
|
86
|
+
bash /work/scripts/generate-capabilities.sh || echo "Notice: Capabilities generation completed."
|
|
87
|
+
fi
|
|
88
|
+
|
|
89
|
+
# Push starter metadata
|
|
90
|
+
if [ -d "/work/metadata" ]; then
|
|
91
|
+
mj sync push --dir /work/metadata || echo "Notice: Initial metadata push completed."
|
|
92
|
+
fi
|
|
93
|
+
|
|
94
|
+
echo "MemberJunction installation and provisioning complete!"
|
|
95
|
+
else
|
|
96
|
+
echo "Existing MemberJunction workspace detected in /workspace."
|
|
97
|
+
# Apply any pending migrations
|
|
98
|
+
mj migrate || echo "Database migrations up to date."
|
|
99
|
+
fi
|
|
100
|
+
|
|
101
|
+
# Configure MJExplorer host binding and compiler alignment
|
|
102
|
+
if [ -f "apps/MJExplorer/package.json" ]; then
|
|
103
|
+
node -e "
|
|
104
|
+
const fs = require('fs');
|
|
105
|
+
const p = 'apps/MJExplorer/package.json';
|
|
106
|
+
const pkg = JSON.parse(fs.readFileSync(p, 'utf8'));
|
|
107
|
+
let changed = false;
|
|
108
|
+
if (pkg.scripts && pkg.scripts.start && !pkg.scripts.start.includes('--host 0.0.0.0')) {
|
|
109
|
+
pkg.scripts.start = pkg.scripts.start.replace('ng serve', 'ng serve --host 0.0.0.0 --port 4200');
|
|
110
|
+
changed = true;
|
|
111
|
+
}
|
|
112
|
+
const cliVer = (pkg.devDependencies && pkg.devDependencies['@angular/compiler-cli']) || '21.2.22';
|
|
113
|
+
if (pkg.dependencies && pkg.dependencies['@angular/compiler'] !== cliVer) {
|
|
114
|
+
pkg.dependencies['@angular/compiler'] = cliVer;
|
|
115
|
+
changed = true;
|
|
116
|
+
}
|
|
117
|
+
if (changed) {
|
|
118
|
+
fs.writeFileSync(p, JSON.stringify(pkg, null, 2));
|
|
119
|
+
}
|
|
120
|
+
"
|
|
121
|
+
fi
|
|
122
|
+
|
|
123
|
+
# Sanitize dynamicPackages.client so non-browser packages are not bundled into MJExplorer
|
|
124
|
+
if [ -f "mj.config.cjs" ]; then
|
|
125
|
+
node -e "
|
|
126
|
+
const fs = require('fs');
|
|
127
|
+
try {
|
|
128
|
+
const config = require('./mj.config.cjs');
|
|
129
|
+
if (config.dynamicPackages && Array.isArray(config.dynamicPackages.client)) {
|
|
130
|
+
let changed = false;
|
|
131
|
+
config.dynamicPackages.client.forEach(entry => {
|
|
132
|
+
if (!entry.PackageName.endsWith('-ng') || entry.PackageName === '@mj-biz-apps/sonar-ng') {
|
|
133
|
+
if (entry.Enabled !== false) {
|
|
134
|
+
entry.Enabled = false;
|
|
135
|
+
changed = true;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
if (changed) {
|
|
140
|
+
let code = fs.readFileSync('mj.config.cjs', 'utf8');
|
|
141
|
+
const regex = /client:\s*\[[\s\S]*?\]\s*\},/m;
|
|
142
|
+
code = code.replace(regex, 'client: ' + JSON.stringify(config.dynamicPackages.client, null, 2) + '\n },');
|
|
143
|
+
fs.writeFileSync('mj.config.cjs', code);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
} catch (e) {
|
|
147
|
+
console.warn('Notice: dynamicPackages check skipped:', e.message);
|
|
148
|
+
}
|
|
149
|
+
"
|
|
150
|
+
fi
|
|
151
|
+
|
|
152
|
+
# 3. Start MJAPI and MJExplorer services via PM2
|
|
153
|
+
echo "Starting MJAPI and MJExplorer services..."
|
|
154
|
+
pm2 delete all 2>/dev/null || true
|
|
155
|
+
|
|
156
|
+
# Start API service
|
|
157
|
+
if [ -f "package.json" ]; then
|
|
158
|
+
if grep -q "start:api" package.json; then
|
|
159
|
+
pm2 start "npm run start:api" --name mjapi
|
|
160
|
+
elif [ -d "apps/MJAPI" ]; then
|
|
161
|
+
pm2 start "cd apps/MJAPI && npm start" --name mjapi
|
|
162
|
+
else
|
|
163
|
+
pm2 start "npm start" --name mjapi
|
|
164
|
+
fi
|
|
165
|
+
fi
|
|
166
|
+
|
|
167
|
+
# Start Explorer service
|
|
168
|
+
if [ -f "package.json" ]; then
|
|
169
|
+
if grep -q "start:explorer" package.json; then
|
|
170
|
+
pm2 start "npm run start:explorer" --name mjexplorer
|
|
171
|
+
elif [ -d "apps/MJExplorer" ]; then
|
|
172
|
+
pm2 start "cd apps/MJExplorer && npm start" --name mjexplorer
|
|
173
|
+
fi
|
|
174
|
+
fi
|
|
175
|
+
|
|
176
|
+
echo "========================================================================"
|
|
177
|
+
echo " 🎉 MemberJunction Stack is Running!"
|
|
178
|
+
echo " MJAPI: http://localhost:4000 (GraphQL & API)"
|
|
179
|
+
echo " MJExplorer: http://localhost:4200 (Web Interface)"
|
|
180
|
+
echo " Database: localhost:$DB_PORT (DB: $DB_DATABASE)"
|
|
181
|
+
echo "========================================================================"
|
|
182
|
+
|
|
183
|
+
# Keep container running and stream logs
|
|
184
|
+
exec pm2 logs
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# ==============================================================================
|
|
3
|
+
# Citizen Agent Builder - Capabilities Catalog Generator
|
|
4
|
+
# Queries the local MemberJunction database and outputs an updated CAPABILITIES.md
|
|
5
|
+
# so the local coding agent has an exact catalog of entities, actions, and agents.
|
|
6
|
+
# ==============================================================================
|
|
7
|
+
set -e
|
|
8
|
+
|
|
9
|
+
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
10
|
+
OUTPUT_FILE="$DIR/CAPABILITIES.md"
|
|
11
|
+
|
|
12
|
+
if [ -f "$DIR/.env" ]; then
|
|
13
|
+
set -a
|
|
14
|
+
source "$DIR/.env"
|
|
15
|
+
set +a
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
DB_PASSWORD="${DB_PASSWORD:-TestPassword123!}"
|
|
19
|
+
|
|
20
|
+
echo "Generating CAPABILITIES.md from database catalog..."
|
|
21
|
+
|
|
22
|
+
SQL_QUERY="
|
|
23
|
+
SET NOCOUNT ON;
|
|
24
|
+
PRINT '# System Capabilities Catalog';
|
|
25
|
+
PRINT '';
|
|
26
|
+
PRINT 'This catalog reflects the real entities, actions, and agents available in this MemberJunction instance.';
|
|
27
|
+
PRINT 'Use these exact names when authoring agent steps, action bindings, and prompt templates.';
|
|
28
|
+
PRINT '';
|
|
29
|
+
PRINT '## 1. Available Entities';
|
|
30
|
+
PRINT '| Entity Name | Description |';
|
|
31
|
+
PRINT '|---|---|';
|
|
32
|
+
SELECT '| \`' + Name + '\` | ' + REPLACE(REPLACE(COALESCE(Description, 'No description'), CHAR(13), ' '), CHAR(10), ' ') + ' |'
|
|
33
|
+
FROM [__mj].[vwEntities]
|
|
34
|
+
WHERE VirtualEntity = 0
|
|
35
|
+
ORDER BY Name ASC;
|
|
36
|
+
|
|
37
|
+
PRINT '';
|
|
38
|
+
PRINT '## 2. Available Actions (Tools)';
|
|
39
|
+
PRINT '| Action Name | Description |';
|
|
40
|
+
PRINT '|---|---|';
|
|
41
|
+
SELECT '| \`' + Name + '\` | ' + REPLACE(REPLACE(COALESCE(Description, 'No description'), CHAR(13), ' '), CHAR(10), ' ') + ' |'
|
|
42
|
+
FROM [__mj].[vwActions]
|
|
43
|
+
ORDER BY Name ASC;
|
|
44
|
+
|
|
45
|
+
PRINT '';
|
|
46
|
+
PRINT '## 3. Available Sub-Agents';
|
|
47
|
+
PRINT '| Agent Name | Type | Description |';
|
|
48
|
+
PRINT '|---|---|---|';
|
|
49
|
+
SELECT '| \`' + Name + '\` | ' + Type + ' | ' + REPLACE(REPLACE(COALESCE(Description, 'No description'), CHAR(13), ' '), CHAR(10), ' ') + ' |'
|
|
50
|
+
FROM [__mj].[vwAIAgents]
|
|
51
|
+
ORDER BY Name ASC;
|
|
52
|
+
"
|
|
53
|
+
|
|
54
|
+
docker compose exec -T sqlserver /opt/mssql-tools18/bin/sqlcmd \
|
|
55
|
+
-S localhost -U sa -P "$DB_PASSWORD" -d MemberJunction -C -No -W -w 200 \
|
|
56
|
+
-Q "$SQL_QUERY" > "$OUTPUT_FILE" 2>/dev/null || {
|
|
57
|
+
echo "Notice: Database not yet initialized; creating baseline CAPABILITIES.md"
|
|
58
|
+
cat << 'EOF' > "$OUTPUT_FILE"
|
|
59
|
+
# System Capabilities Catalog
|
|
60
|
+
|
|
61
|
+
*This catalog is automatically populated once your local database is booted and bootstrapped.*
|
|
62
|
+
|
|
63
|
+
## Available Core Actions
|
|
64
|
+
* `Send Email` - Send notification or transactional emails
|
|
65
|
+
* `Create Record` - Insert a new record into any permitted entity
|
|
66
|
+
* `Update Record` - Update an existing record by ID
|
|
67
|
+
* `Run Query` - Execute a dynamic query against entities
|
|
68
|
+
* `Get Record` - Fetch a record by primary key
|
|
69
|
+
|
|
70
|
+
Run `./scripts/bootstrap.sh` to populate the complete catalog from your installed Open App.
|
|
71
|
+
EOF
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
echo "Capabilities catalog updated at: $OUTPUT_FILE"
|
|
@@ -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
|
|
@@ -21,6 +21,8 @@ export declare class ManagedBlockError extends Error {
|
|
|
21
21
|
* Throws `ManagedBlockError` when markers are malformed (e.g. END before
|
|
22
22
|
* START, only one marker present, multiple START markers).
|
|
23
23
|
*/
|
|
24
|
+
export declare function ParseManagedBlock(content: string): ManagedBlock | null;
|
|
25
|
+
/** @deprecated Use {@link ParseManagedBlock}. */
|
|
24
26
|
export declare function parseManagedBlock(content: string): ManagedBlock | null;
|
|
25
27
|
/**
|
|
26
28
|
* Replace the managed block in `content` with `newBody`, updating attributes
|
|
@@ -29,6 +31,8 @@ export declare function parseManagedBlock(content: string): ManagedBlock | null;
|
|
|
29
31
|
* Throws `ManagedBlockError` if no managed block is present — callers should
|
|
30
32
|
* use `wrapWithManagedBlock` for the first-install case.
|
|
31
33
|
*/
|
|
34
|
+
export declare function RewriteManagedBlock(content: string, newBody: string, newAttrs: Record<string, string>): string;
|
|
35
|
+
/** @deprecated Use {@link RewriteManagedBlock}. */
|
|
32
36
|
export declare function rewriteManagedBlock(content: string, newBody: string, newAttrs: Record<string, string>): string;
|
|
33
37
|
/**
|
|
34
38
|
* Wrap arbitrary `content` with a managed block, placing the block at the
|
|
@@ -36,5 +40,7 @@ export declare function rewriteManagedBlock(content: string, newBody: string, ne
|
|
|
36
40
|
*
|
|
37
41
|
* If `content` is empty, the result is just the rendered managed block.
|
|
38
42
|
*/
|
|
43
|
+
export declare function WrapWithManagedBlock(content: string, body: string, attrs: Record<string, string>): string;
|
|
44
|
+
/** @deprecated Use {@link WrapWithManagedBlock}. */
|
|
39
45
|
export declare function wrapWithManagedBlock(content: string, body: string, attrs: Record<string, string>): string;
|
|
40
46
|
//# sourceMappingURL=ManagedBlockEditor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManagedBlockEditor.d.ts","sourceRoot":"","sources":["../../../src/lib/claude-pack/ManagedBlockEditor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAenD,qBAAa,iBAAkB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI9B;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAiCtE;AA0BD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,MAAM,CAMR;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAKR"}
|
|
1
|
+
{"version":3,"file":"ManagedBlockEditor.d.ts","sourceRoot":"","sources":["../../../src/lib/claude-pack/ManagedBlockEditor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAenD,qBAAa,iBAAkB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI9B;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAiCtE;AAED,iDAAiD;AACjD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAEtE;AA0BD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,MAAM,CAMR;AAED,mDAAmD;AACnD,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,MAAM,CAER;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAKR;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAER"}
|
|
@@ -36,7 +36,7 @@ export class ManagedBlockError extends Error {
|
|
|
36
36
|
* Throws `ManagedBlockError` when markers are malformed (e.g. END before
|
|
37
37
|
* START, only one marker present, multiple START markers).
|
|
38
38
|
*/
|
|
39
|
-
export function
|
|
39
|
+
export function ParseManagedBlock(content) {
|
|
40
40
|
const startMatch = START_RE.exec(content);
|
|
41
41
|
const endMatch = END_RE.exec(content);
|
|
42
42
|
if (!startMatch && !endMatch)
|
|
@@ -61,7 +61,11 @@ export function parseManagedBlock(content) {
|
|
|
61
61
|
const body = content.slice(bodyStart, bodyEnd);
|
|
62
62
|
const after = content.slice(endMatch.index + endMatch[0].length);
|
|
63
63
|
const attrs = parseAttrs(startMatch[1]);
|
|
64
|
-
return { before, body, after, attrs };
|
|
64
|
+
return { Before: before, Body: body, After: after, Attrs: attrs };
|
|
65
|
+
}
|
|
66
|
+
/** @deprecated Use {@link ParseManagedBlock}. */
|
|
67
|
+
export function parseManagedBlock(content) {
|
|
68
|
+
return ParseManagedBlock(content);
|
|
65
69
|
}
|
|
66
70
|
/**
|
|
67
71
|
* Parse `key=value key2=value2` attribute strings from a START marker.
|
|
@@ -94,12 +98,16 @@ function parseAttrs(raw) {
|
|
|
94
98
|
* Throws `ManagedBlockError` if no managed block is present — callers should
|
|
95
99
|
* use `wrapWithManagedBlock` for the first-install case.
|
|
96
100
|
*/
|
|
97
|
-
export function
|
|
98
|
-
const block =
|
|
101
|
+
export function RewriteManagedBlock(content, newBody, newAttrs) {
|
|
102
|
+
const block = ParseManagedBlock(content);
|
|
99
103
|
if (!block) {
|
|
100
104
|
throw new ManagedBlockError('Cannot rewrite — no managed block found in content.');
|
|
101
105
|
}
|
|
102
|
-
return block.
|
|
106
|
+
return block.Before + formatStartMarker(newAttrs) + newBody + formatEndMarker() + block.After;
|
|
107
|
+
}
|
|
108
|
+
/** @deprecated Use {@link RewriteManagedBlock}. */
|
|
109
|
+
export function rewriteManagedBlock(content, newBody, newAttrs) {
|
|
110
|
+
return RewriteManagedBlock(content, newBody, newAttrs);
|
|
103
111
|
}
|
|
104
112
|
/**
|
|
105
113
|
* Wrap arbitrary `content` with a managed block, placing the block at the
|
|
@@ -107,12 +115,16 @@ export function rewriteManagedBlock(content, newBody, newAttrs) {
|
|
|
107
115
|
*
|
|
108
116
|
* If `content` is empty, the result is just the rendered managed block.
|
|
109
117
|
*/
|
|
110
|
-
export function
|
|
118
|
+
export function WrapWithManagedBlock(content, body, attrs) {
|
|
111
119
|
const startMarker = formatStartMarker(attrs);
|
|
112
120
|
const endMarker = formatEndMarker();
|
|
113
121
|
const trailing = content.length > 0 ? '\n\n' + content : '\n';
|
|
114
122
|
return startMarker + body + endMarker + trailing;
|
|
115
123
|
}
|
|
124
|
+
/** @deprecated Use {@link WrapWithManagedBlock}. */
|
|
125
|
+
export function wrapWithManagedBlock(content, body, attrs) {
|
|
126
|
+
return WrapWithManagedBlock(content, body, attrs);
|
|
127
|
+
}
|
|
116
128
|
function formatStartMarker(attrs) {
|
|
117
129
|
const attrString = Object.entries(attrs)
|
|
118
130
|
.map(([k, v]) => `${k}=${v}`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManagedBlockEditor.js","sourceRoot":"","sources":["../../../src/lib/claude-pack/ManagedBlockEditor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,kEAAkE;AAClE,MAAM,QAAQ,GAAG,wDAAwD,CAAC;AAC1E,gCAAgC;AAChC,MAAM,MAAM,GAAG,2CAA2C,CAAC;AAE3D,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACxC,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IACpC,CAAC;CACJ;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC7C,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEtC,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,MAAM,IAAI,iBAAiB,CAAC,+DAA+D,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,MAAM,IAAI,iBAAiB,CAAC,+DAA+D,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC;QACpC,MAAM,IAAI,iBAAiB,CACvB,8DAA8D,CACjE,CAAC;IACN,CAAC;IAED,4EAA4E;IAC5E,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1F,IAAI,WAAW,EAAE,CAAC;QACd,MAAM,IAAI,iBAAiB,CACvB,wEAAwE,CAC3E,CAAC;IACN,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAExC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ManagedBlockEditor.js","sourceRoot":"","sources":["../../../src/lib/claude-pack/ManagedBlockEditor.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,8 +20,8 @@ import type { Manifest } from './PackTypes.js';
|
|
|
20
20
|
* both accept `Uint8Array` directly.
|
|
21
21
|
*/
|
|
22
22
|
export interface HttpResponse {
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
StatusCode: number;
|
|
24
|
+
Body: Uint8Array;
|
|
25
25
|
}
|
|
26
26
|
/** Promise-based GET. Production = node:https; tests = mock. */
|
|
27
27
|
export type HttpGetter = (url: string) => Promise<HttpResponse>;
|
|
@@ -33,6 +33,8 @@ export type HttpGetter = (url: string) => Promise<HttpResponse>;
|
|
|
33
33
|
* (`Buffer`) doesn't cleanly assign to `Uint8Array` in the strict @types/node
|
|
34
34
|
* generics that ship with v20+, even though Buffer extends Uint8Array.
|
|
35
35
|
*/
|
|
36
|
+
export declare const RealHttpGet: HttpGetter;
|
|
37
|
+
/** @deprecated Use {@link RealHttpGet}. */
|
|
36
38
|
export declare const realHttpGet: HttpGetter;
|
|
37
39
|
export declare class PackFetchError extends Error {
|
|
38
40
|
url?: string;
|
|
@@ -43,7 +45,8 @@ export declare class PackChecksumError extends Error {
|
|
|
43
45
|
path: string;
|
|
44
46
|
expected: string;
|
|
45
47
|
actual: string;
|
|
46
|
-
constructor(message: string, path: string, expected: string,
|
|
48
|
+
constructor(message: string, path: string, expected: string, // case-violation-ok-legacy-back-compat: object literals are assigned to this class, so an accessor stub changes what they must supply
|
|
49
|
+
actual: string);
|
|
47
50
|
}
|
|
48
51
|
export interface FetchPackOptions {
|
|
49
52
|
/** MJ major version (e.g. `5`). Required — used to locate `dist/v{N}/`. */
|
|
@@ -82,5 +85,7 @@ export interface FetchedPack {
|
|
|
82
85
|
* sha256 along the way. Falls back from a specific tag to `main` if the
|
|
83
86
|
* manifest 404s.
|
|
84
87
|
*/
|
|
88
|
+
export declare function FetchPack(opts: FetchPackOptions): Promise<FetchedPack>;
|
|
89
|
+
/** @deprecated Use {@link FetchPack}. */
|
|
85
90
|
export declare function fetchPack(opts: FetchPackOptions): Promise<FetchedPack>;
|
|
86
91
|
//# sourceMappingURL=PackFetcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PackFetcher.d.ts","sourceRoot":"","sources":["../../../src/lib/claude-pack/PackFetcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAiB,MAAM,gBAAgB,CAAC;AAO9D;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,UAAU,CAAC;CACpB;AAED,gEAAgE;AAChE,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;AAEhE;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,EAAE,UAcpB,CAAC;
|
|
1
|
+
{"version":3,"file":"PackFetcher.d.ts","sourceRoot":"","sources":["../../../src/lib/claude-pack/PackFetcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAiB,MAAM,gBAAgB,CAAC;AAO9D;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,UAAU,CAAC;CACpB;AAED,gEAAgE;AAChE,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;AAEhE;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,EAAE,UAcpB,CAAC;AAEP,2CAA2C;AAC3C,eAAO,MAAM,WAAW,EAAE,UAAwB,CAAC;AAiBnD,qBAAa,cAAe,SAAQ,KAAK;IACD,GAAG,CAAC,EAAE,MAAM;IAAS,UAAU,CAAC,EAAE,MAAM;gBAAhE,OAAO,EAAE,MAAM,EAAS,GAAG,CAAC,EAAE,MAAM,EAAS,UAAU,CAAC,EAAE,MAAM;CAI/E;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAG7B,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,MAAM;gBAHrB,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAAG,sIAAsI;IACzJ,MAAM,EAAE,MAAM;CAK5B;AAMD,MAAM,WAAW,gBAAgB;IAC7B,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IACxB,4BAA4B;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;OAGG;IACH,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/B,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;CACnB;AAMD;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CAiC5E;AAED,yCAAyC;AACzC,wBAAsB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CAE5E"}
|