@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.
Files changed (235) hide show
  1. package/README.md +18 -7
  2. package/dist/baseline/cli-helpers.d.ts +4 -0
  3. package/dist/baseline/cli-helpers.d.ts.map +1 -1
  4. package/dist/baseline/cli-helpers.js +18 -10
  5. package/dist/baseline/cli-helpers.js.map +1 -1
  6. package/dist/baseline/comparator.d.ts +5 -3
  7. package/dist/baseline/comparator.d.ts.map +1 -1
  8. package/dist/baseline/comparator.js +142 -138
  9. package/dist/baseline/comparator.js.map +1 -1
  10. package/dist/baseline/connection.d.ts +8 -6
  11. package/dist/baseline/connection.d.ts.map +1 -1
  12. package/dist/baseline/connection.js +16 -12
  13. package/dist/baseline/connection.js.map +1 -1
  14. package/dist/baseline/data-dumper.d.ts +7 -3
  15. package/dist/baseline/data-dumper.d.ts.map +1 -1
  16. package/dist/baseline/data-dumper.js +33 -25
  17. package/dist/baseline/data-dumper.js.map +1 -1
  18. package/dist/baseline/emitter.d.ts +5 -3
  19. package/dist/baseline/emitter.d.ts.map +1 -1
  20. package/dist/baseline/emitter.js +114 -110
  21. package/dist/baseline/emitter.js.map +1 -1
  22. package/dist/baseline/index.d.ts +7 -7
  23. package/dist/baseline/index.d.ts.map +1 -1
  24. package/dist/baseline/index.js +7 -7
  25. package/dist/baseline/index.js.map +1 -1
  26. package/dist/baseline/introspector-mssql.d.ts +2 -0
  27. package/dist/baseline/introspector-mssql.d.ts.map +1 -1
  28. package/dist/baseline/introspector-mssql.js +68 -64
  29. package/dist/baseline/introspector-mssql.js.map +1 -1
  30. package/dist/baseline/introspector-postgres.d.ts +2 -0
  31. package/dist/baseline/introspector-postgres.d.ts.map +1 -1
  32. package/dist/baseline/introspector-postgres.js +34 -30
  33. package/dist/baseline/introspector-postgres.js.map +1 -1
  34. package/dist/baseline/report.d.ts +4 -0
  35. package/dist/baseline/report.d.ts.map +1 -1
  36. package/dist/baseline/report.js +25 -17
  37. package/dist/baseline/report.js.map +1 -1
  38. package/dist/baseline/types.d.ts +71 -71
  39. package/dist/baseline/util.d.ts +54 -6
  40. package/dist/baseline/util.d.ts.map +1 -1
  41. package/dist/baseline/util.js +112 -36
  42. package/dist/baseline/util.js.map +1 -1
  43. package/dist/commands/agent/init.d.ts +23 -0
  44. package/dist/commands/agent/init.d.ts.map +1 -0
  45. package/dist/commands/agent/init.js +222 -0
  46. package/dist/commands/agent/init.js.map +1 -0
  47. package/dist/commands/ai/actions/list.js +7 -7
  48. package/dist/commands/ai/actions/run.js +7 -7
  49. package/dist/commands/ai/agents/list.js +7 -7
  50. package/dist/commands/ai/agents/run.js +9 -9
  51. package/dist/commands/ai/audit/agent-run.js +7 -7
  52. package/dist/commands/ai/prompts/run.js +7 -7
  53. package/dist/commands/app/check-updates.js +5 -5
  54. package/dist/commands/app/disable.js +2 -2
  55. package/dist/commands/app/enable.js +2 -2
  56. package/dist/commands/app/info.js +2 -2
  57. package/dist/commands/app/install.js +2 -2
  58. package/dist/commands/app/list.js +2 -2
  59. package/dist/commands/app/remove.js +4 -4
  60. package/dist/commands/app/upgrade.js +2 -2
  61. package/dist/commands/artifacts/reclassify.js +2 -2
  62. package/dist/commands/baseline/build.js +31 -31
  63. package/dist/commands/baseline/build.js.map +1 -1
  64. package/dist/commands/baseline/compare.js +36 -36
  65. package/dist/commands/baseline/roundtrip.js +56 -54
  66. package/dist/commands/baseline/roundtrip.js.map +1 -1
  67. package/dist/commands/bundle/index.js +4 -4
  68. package/dist/commands/clean/index.js +3 -3
  69. package/dist/commands/codegen/manifest.d.ts +2 -0
  70. package/dist/commands/codegen/manifest.d.ts.map +1 -1
  71. package/dist/commands/codegen/manifest.js +8 -4
  72. package/dist/commands/codegen/manifest.js.map +1 -1
  73. package/dist/commands/dev/workspace/index.d.ts +2 -0
  74. package/dist/commands/dev/workspace/index.d.ts.map +1 -1
  75. package/dist/commands/dev/workspace/index.js +8 -4
  76. package/dist/commands/dev/workspace/index.js.map +1 -1
  77. package/dist/commands/doctor/index.d.ts +6 -4
  78. package/dist/commands/doctor/index.d.ts.map +1 -1
  79. package/dist/commands/doctor/index.js +43 -18
  80. package/dist/commands/doctor/index.js.map +1 -1
  81. package/dist/commands/install/claude.d.ts +2 -0
  82. package/dist/commands/install/claude.d.ts.map +1 -1
  83. package/dist/commands/install/claude.js +11 -7
  84. package/dist/commands/install/claude.js.map +1 -1
  85. package/dist/commands/install/index.js +3 -3
  86. package/dist/commands/migrate/convert.d.ts +21 -0
  87. package/dist/commands/migrate/convert.d.ts.map +1 -1
  88. package/dist/commands/migrate/convert.js +22 -6
  89. package/dist/commands/migrate/convert.js.map +1 -1
  90. package/dist/commands/migrate/create.js +2 -2
  91. package/dist/commands/migrate/index.js +16 -16
  92. package/dist/commands/sync/file-reset.js +2 -2
  93. package/dist/commands/sync/init.js +3 -3
  94. package/dist/commands/test/compare.js +6 -6
  95. package/dist/commands/test/history.js +6 -6
  96. package/dist/commands/test/list.js +6 -6
  97. package/dist/commands/test/regression/build.js +5 -5
  98. package/dist/commands/test/regression/compare.js +3 -3
  99. package/dist/commands/test/regression/down.js +4 -4
  100. package/dist/commands/test/regression/export.js +4 -4
  101. package/dist/commands/test/regression/gen-forms.js +3 -3
  102. package/dist/commands/test/regression/remote.js +10 -10
  103. package/dist/commands/test/regression/up.js +6 -6
  104. package/dist/commands/test/run.js +6 -6
  105. package/dist/commands/test/scripts.d.ts +13 -0
  106. package/dist/commands/test/scripts.d.ts.map +1 -0
  107. package/dist/commands/test/scripts.js +50 -0
  108. package/dist/commands/test/scripts.js.map +1 -0
  109. package/dist/commands/test/suite.js +6 -6
  110. package/dist/commands/test/validate.js +6 -6
  111. package/dist/commands/translate-sql/index.js +25 -25
  112. package/dist/commands/update/claude.js +7 -7
  113. package/dist/commands/usage.js +4 -4
  114. package/dist/config.d.ts +175 -1
  115. package/dist/config.d.ts.map +1 -1
  116. package/dist/config.js +23 -9
  117. package/dist/config.js.map +1 -1
  118. package/dist/hooks/postrun.js +2 -2
  119. package/dist/hooks/prerun.js +2 -2
  120. package/dist/hooks/prerun.js.map +1 -1
  121. package/dist/init-templates/citizen-builder/.agents/skills/new-agent/SKILL.md +66 -0
  122. package/dist/init-templates/citizen-builder/.agents/skills/package-agent/SKILL.md +69 -0
  123. package/dist/init-templates/citizen-builder/.agents/skills/test-agent/SKILL.md +61 -0
  124. package/dist/init-templates/citizen-builder/.claude/skills/new-agent/SKILL.md +66 -0
  125. package/dist/init-templates/citizen-builder/.claude/skills/package-agent/SKILL.md +69 -0
  126. package/dist/init-templates/citizen-builder/.claude/skills/test-agent/SKILL.md +61 -0
  127. package/dist/init-templates/citizen-builder/.env.example +30 -0
  128. package/dist/init-templates/citizen-builder/AGENTS.md +331 -0
  129. package/dist/init-templates/citizen-builder/README.md +259 -0
  130. package/dist/init-templates/citizen-builder/docker/Dockerfile +16 -0
  131. package/dist/init-templates/citizen-builder/docker-compose.yml +59 -0
  132. package/dist/init-templates/citizen-builder/docs/ENTERPRISE_ORG_SETUP.md +73 -0
  133. package/dist/init-templates/citizen-builder/docs/PROMOTION_GUIDE.md +70 -0
  134. package/dist/init-templates/citizen-builder/metadata/.mj-sync.json +7 -0
  135. package/dist/init-templates/citizen-builder/metadata/agents/.customer-insight-agent.json +55 -0
  136. package/dist/init-templates/citizen-builder/metadata/agents/.mj-sync.json +45 -0
  137. package/dist/init-templates/citizen-builder/metadata/prompts/.customer-insight-prompt.json +15 -0
  138. package/dist/init-templates/citizen-builder/metadata/prompts/.mj-sync.json +45 -0
  139. package/dist/init-templates/citizen-builder/metadata/prompts/templates/customer-insight.template.md +18 -0
  140. package/dist/init-templates/citizen-builder/scripts/bootstrap.sh +47 -0
  141. package/dist/init-templates/citizen-builder/scripts/docker-entrypoint.sh +184 -0
  142. package/dist/init-templates/citizen-builder/scripts/generate-capabilities.sh +74 -0
  143. package/dist/init-templates/citizen-builder/scripts/query-run-history.sh +34 -0
  144. package/dist/init-templates/citizen-builder/scripts/sync-metadata.sh +14 -0
  145. package/dist/init-templates/remote-mj/README.md +4 -4
  146. package/dist/lib/claude-pack/ManagedBlockEditor.d.ts +6 -0
  147. package/dist/lib/claude-pack/ManagedBlockEditor.d.ts.map +1 -1
  148. package/dist/lib/claude-pack/ManagedBlockEditor.js +18 -6
  149. package/dist/lib/claude-pack/ManagedBlockEditor.js.map +1 -1
  150. package/dist/lib/claude-pack/PackFetcher.d.ts +8 -3
  151. package/dist/lib/claude-pack/PackFetcher.d.ts.map +1 -1
  152. package/dist/lib/claude-pack/PackFetcher.js +26 -18
  153. package/dist/lib/claude-pack/PackFetcher.js.map +1 -1
  154. package/dist/lib/claude-pack/PackInstaller.d.ts +6 -2
  155. package/dist/lib/claude-pack/PackInstaller.d.ts.map +1 -1
  156. package/dist/lib/claude-pack/PackInstaller.js +19 -13
  157. package/dist/lib/claude-pack/PackInstaller.js.map +1 -1
  158. package/dist/lib/claude-pack/PackMerger.d.ts +8 -0
  159. package/dist/lib/claude-pack/PackMerger.d.ts.map +1 -1
  160. package/dist/lib/claude-pack/PackMerger.js +63 -57
  161. package/dist/lib/claude-pack/PackMerger.js.map +1 -1
  162. package/dist/lib/claude-pack/PackOutputFormatter.d.ts +4 -0
  163. package/dist/lib/claude-pack/PackOutputFormatter.d.ts.map +1 -1
  164. package/dist/lib/claude-pack/PackOutputFormatter.js +10 -2
  165. package/dist/lib/claude-pack/PackOutputFormatter.js.map +1 -1
  166. package/dist/lib/claude-pack/PackPaths.d.ts +12 -0
  167. package/dist/lib/claude-pack/PackPaths.d.ts.map +1 -1
  168. package/dist/lib/claude-pack/PackPaths.js +31 -7
  169. package/dist/lib/claude-pack/PackPaths.js.map +1 -1
  170. package/dist/lib/claude-pack/PackTypes.d.ts +18 -14
  171. package/dist/lib/claude-pack/PackTypes.d.ts.map +1 -1
  172. package/dist/lib/claude-pack/PackTypes.js +11 -3
  173. package/dist/lib/claude-pack/PackTypes.js.map +1 -1
  174. package/dist/lib/claude-pack/SettingsMerger.d.ts +10 -0
  175. package/dist/lib/claude-pack/SettingsMerger.d.ts.map +1 -1
  176. package/dist/lib/claude-pack/SettingsMerger.js +36 -16
  177. package/dist/lib/claude-pack/SettingsMerger.js.map +1 -1
  178. package/dist/lib/cli-plugins.d.ts +2 -0
  179. package/dist/lib/cli-plugins.d.ts.map +1 -1
  180. package/dist/lib/cli-plugins.js +8 -4
  181. package/dist/lib/cli-plugins.js.map +1 -1
  182. package/dist/lib/db-preflight.d.ts +2 -0
  183. package/dist/lib/db-preflight.d.ts.map +1 -1
  184. package/dist/lib/db-preflight.js +12 -8
  185. package/dist/lib/db-preflight.js.map +1 -1
  186. package/dist/lib/db-version.d.ts +2 -0
  187. package/dist/lib/db-version.d.ts.map +1 -1
  188. package/dist/lib/db-version.js +5 -1
  189. package/dist/lib/db-version.js.map +1 -1
  190. package/dist/lib/derived-usage.d.ts +14 -8
  191. package/dist/lib/derived-usage.d.ts.map +1 -1
  192. package/dist/lib/derived-usage.js +30 -18
  193. package/dist/lib/derived-usage.js.map +1 -1
  194. package/dist/lib/domain-profiles.d.ts +4 -2
  195. package/dist/lib/domain-profiles.d.ts.map +1 -1
  196. package/dist/lib/domain-profiles.js +53 -49
  197. package/dist/lib/domain-profiles.js.map +1 -1
  198. package/dist/lib/domain-usage-command.js +4 -4
  199. package/dist/lib/dynamic-packages.d.ts +4 -2
  200. package/dist/lib/dynamic-packages.d.ts.map +1 -1
  201. package/dist/lib/dynamic-packages.js +9 -5
  202. package/dist/lib/dynamic-packages.js.map +1 -1
  203. package/dist/lib/format-compat.d.ts +9 -7
  204. package/dist/lib/format-compat.d.ts.map +1 -1
  205. package/dist/lib/format-compat.js +12 -8
  206. package/dist/lib/format-compat.js.map +1 -1
  207. package/dist/lib/interactive-guard.d.ts +16 -0
  208. package/dist/lib/interactive-guard.d.ts.map +1 -1
  209. package/dist/lib/interactive-guard.js +18 -6
  210. package/dist/lib/interactive-guard.js.map +1 -1
  211. package/dist/lib/migration-fetch.d.ts +16 -4
  212. package/dist/lib/migration-fetch.d.ts.map +1 -1
  213. package/dist/lib/migration-fetch.js +30 -18
  214. package/dist/lib/migration-fetch.js.map +1 -1
  215. package/dist/lib/regression/docker-helpers.d.ts +24 -0
  216. package/dist/lib/regression/docker-helpers.d.ts.map +1 -1
  217. package/dist/lib/regression/docker-helpers.js +46 -10
  218. package/dist/lib/regression/docker-helpers.js.map +1 -1
  219. package/dist/lib/usage-render.d.ts +6 -0
  220. package/dist/lib/usage-render.d.ts.map +1 -1
  221. package/dist/lib/usage-render.js +15 -3
  222. package/dist/lib/usage-render.js.map +1 -1
  223. package/dist/translate-sql/groundTruth.d.ts +3 -3
  224. package/dist/translate-sql/groundTruth.js +40 -40
  225. package/dist/translate-sql/reportGenerator.d.ts +7 -7
  226. package/dist/translate-sql/reportGenerator.js +18 -18
  227. package/dist/translate-sql/ruleTranslator.d.ts +3 -3
  228. package/dist/translate-sql/ruleTranslator.js +8 -8
  229. package/dist/translate-sql/ruleTranslator.js.map +1 -1
  230. package/dist/utils/open-app-context.d.ts +21 -0
  231. package/dist/utils/open-app-context.d.ts.map +1 -1
  232. package/dist/utils/open-app-context.js +26 -10
  233. package/dist/utils/open-app-context.js.map +1 -1
  234. package/oclif.manifest.json +1216 -1058
  235. package/package.json +22 -22
@@ -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` and the 25
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 25 test JSONs in
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 parseManagedBlock(content) {
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 rewriteManagedBlock(content, newBody, newAttrs) {
98
- const block = parseManagedBlock(content);
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.before + formatStartMarker(newAttrs) + newBody + formatEndMarker() + block.after;
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 wrapWithManagedBlock(content, body, attrs) {
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":"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"}
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
- statusCode: number;
24
- body: Uint8Array;
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, actual: 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;AAiBP,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,EAChB,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"}
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"}