@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
@@ -7,19 +7,31 @@
7
7
  import * as fs from 'node:fs';
8
8
  import * as path from 'node:path';
9
9
  /** Lower-case schema-qualified name used for sort keys and sets. */
10
- export function qname(schema, name) {
10
+ export function Qname(schema, name) {
11
11
  return `${schema}.${name}`.toLowerCase();
12
12
  }
13
+ /** @deprecated Use {@link Qname}. */
14
+ export function qname(schema, name) {
15
+ return Qname(schema, name);
16
+ }
13
17
  /** Quote a T-SQL identifier with brackets, escaping any embedded `]`. */
14
- export function quoteIdent(name) {
18
+ export function QuoteIdent(name) {
15
19
  return `[${name.replace(/]/g, ']]')}]`;
16
20
  }
21
+ /** @deprecated Use {@link QuoteIdent}. */
22
+ export function quoteIdent(name) {
23
+ return QuoteIdent(name);
24
+ }
17
25
  /** Quote a T-SQL string literal, escaping single quotes. */
18
- export function quoteString(value) {
26
+ export function QuoteString(value) {
19
27
  return `N'${value.replace(/'/g, "''")}'`;
20
28
  }
29
+ /** @deprecated Use {@link QuoteString}. */
30
+ export function quoteString(value) {
31
+ return QuoteString(value);
32
+ }
21
33
  /** Stable sort by a key extractor; preserves input order for ties. */
22
- export function stableSortBy(items, key) {
34
+ export function StableSortBy(items, key) {
23
35
  return items
24
36
  .map((item, index) => ({ item, index, key: key(item) }))
25
37
  .sort((a, b) => {
@@ -31,6 +43,10 @@ export function stableSortBy(items, key) {
31
43
  })
32
44
  .map((wrapped) => wrapped.item);
33
45
  }
46
+ /** @deprecated Use {@link StableSortBy}. */
47
+ export function stableSortBy(items, key) {
48
+ return StableSortBy(items, key);
49
+ }
34
50
  /** Cross-platform line endings: emit LF only. Caller normalizes if needed. */
35
51
  export const NL = '\n';
36
52
  /**
@@ -41,15 +57,23 @@ export const NL = '\n';
41
57
  */
42
58
  export const EXCLUDED_TABLE_NAMES = new Set(['flyway_schema_history']);
43
59
  /** Returns true if a table (by bare name) is one we never emit in a baseline. */
44
- export function isExcludedTable(name) {
60
+ export function IsExcludedTable(name) {
45
61
  return EXCLUDED_TABLE_NAMES.has(name.toLowerCase());
46
62
  }
63
+ /** @deprecated Use {@link IsExcludedTable}. */
64
+ export function isExcludedTable(name) {
65
+ return IsExcludedTable(name);
66
+ }
47
67
  /** Canonical ISO-8601 UTC stamp without milliseconds: 2026-05-02T19:47:00Z. */
48
- export function isoUtcSeconds(date) {
68
+ export function IsoUtcSeconds(date) {
49
69
  return date.toISOString().replace(/\.\d{3}Z$/, 'Z');
50
70
  }
71
+ /** @deprecated Use {@link IsoUtcSeconds}. */
72
+ export function isoUtcSeconds(date) {
73
+ return IsoUtcSeconds(date);
74
+ }
51
75
  /** Filename timestamp: YYYYMMDDHHMM in UTC. */
52
- export function fileStamp(date) {
76
+ export function FileStamp(date) {
53
77
  const pad = (n) => String(n).padStart(2, '0');
54
78
  return (date.getUTCFullYear().toString() +
55
79
  pad(date.getUTCMonth() + 1) +
@@ -57,12 +81,20 @@ export function fileStamp(date) {
57
81
  pad(date.getUTCHours()) +
58
82
  pad(date.getUTCMinutes()));
59
83
  }
84
+ /** @deprecated Use {@link FileStamp}. */
85
+ export function fileStamp(date) {
86
+ return FileStamp(date);
87
+ }
60
88
  /** Build the canonical filename for a baseline migration. */
89
+ export function BaselineFilename(opts) {
90
+ return `B${FileStamp(opts.generatedAtUtc)}__v${opts.baselineVersion}.x__Baseline.sql`;
91
+ }
92
+ /** @deprecated Use {@link BaselineFilename}. */
61
93
  export function baselineFilename(opts) {
62
- return `B${fileStamp(opts.generatedAtUtc)}__v${opts.baselineVersion}.x__Baseline.sql`;
94
+ return BaselineFilename(opts);
63
95
  }
64
96
  /** Inverse of {@link fileStamp}: parses a YYYYMMDDHHMM string into a UTC Date. */
65
- export function parseFileStamp(stamp) {
97
+ export function ParseFileStamp(stamp) {
66
98
  if (!/^\d{12}$/.test(stamp)) {
67
99
  throw new Error(`Invalid YYYYMMDDHHMM stamp: ${stamp}`);
68
100
  }
@@ -73,23 +105,35 @@ export function parseFileStamp(stamp) {
73
105
  const mi = Number(stamp.slice(10, 12));
74
106
  return new Date(Date.UTC(y, mo, d, h, mi));
75
107
  }
108
+ /** @deprecated Use {@link ParseFileStamp}. */
109
+ export function parseFileStamp(stamp) {
110
+ return ParseFileStamp(stamp);
111
+ }
76
112
  /** Return a new Date offset by N minutes (negative for past). */
77
- export function addMinutes(date, minutes) {
113
+ export function AddMinutes(date, minutes) {
78
114
  return new Date(date.getTime() + minutes * 60_000);
79
115
  }
80
- export function parseMigrationFilename(filename) {
116
+ /** @deprecated Use {@link AddMinutes}. */
117
+ export function addMinutes(date, minutes) {
118
+ return AddMinutes(date, minutes);
119
+ }
120
+ export function ParseMigrationFilename(filename) {
81
121
  const match = /^([VB])(\d{12})__v(\d+)\.(\d+)/.exec(filename);
82
122
  if (!match)
83
123
  return null;
84
124
  return {
85
- kind: match[1],
86
- timestamp: match[2],
87
- major: Number(match[3]),
88
- minor: Number(match[4]),
89
- majorMinor: `${match[3]}.${match[4]}`,
90
- filename,
125
+ Kind: match[1],
126
+ Timestamp: match[2],
127
+ Major: Number(match[3]),
128
+ Minor: Number(match[4]),
129
+ MajorMinor: `${match[3]}.${match[4]}`,
130
+ Filename: filename,
91
131
  };
92
132
  }
133
+ /** @deprecated Use {@link ParseMigrationFilename}. */
134
+ export function parseMigrationFilename(filename) {
135
+ return ParseMigrationFilename(filename);
136
+ }
93
137
  /**
94
138
  * Scan a migrations source directory and return the latest V-file by timestamp.
95
139
  * Files that don't match the expected shape are silently ignored.
@@ -97,7 +141,7 @@ export function parseMigrationFilename(filename) {
97
141
  * Used by within-major rebaseline to derive the new baseline's version + timestamp
98
142
  * from the head of the existing V-stack.
99
143
  */
100
- export function findLatestVersionedMigration(sourceDir) {
144
+ export function FindLatestVersionedMigration(sourceDir) {
101
145
  if (!fs.existsSync(sourceDir) || !fs.statSync(sourceDir).isDirectory()) {
102
146
  return null;
103
147
  }
@@ -106,16 +150,20 @@ export function findLatestVersionedMigration(sourceDir) {
106
150
  for (const name of entries) {
107
151
  if (!name.toLowerCase().endsWith('.sql'))
108
152
  continue;
109
- const parsed = parseMigrationFilename(name);
110
- if (!parsed || parsed.kind !== 'V')
153
+ const parsed = ParseMigrationFilename(name);
154
+ if (!parsed || parsed.Kind !== 'V')
111
155
  continue;
112
- if (!best || parsed.timestamp > best.timestamp)
156
+ if (!best || parsed.Timestamp > best.Timestamp)
113
157
  best = parsed;
114
158
  }
115
159
  return best;
116
160
  }
161
+ /** @deprecated Use {@link FindLatestVersionedMigration}. */
162
+ export function findLatestVersionedMigration(sourceDir) {
163
+ return FindLatestVersionedMigration(sourceDir);
164
+ }
117
165
  /** Same as {@link findLatestVersionedMigration} but for `B`-prefixed baseline files. */
118
- export function findLatestBaselineMigration(sourceDir) {
166
+ export function FindLatestBaselineMigration(sourceDir) {
119
167
  if (!fs.existsSync(sourceDir) || !fs.statSync(sourceDir).isDirectory()) {
120
168
  return null;
121
169
  }
@@ -124,14 +172,18 @@ export function findLatestBaselineMigration(sourceDir) {
124
172
  for (const name of entries) {
125
173
  if (!name.toLowerCase().endsWith('.sql'))
126
174
  continue;
127
- const parsed = parseMigrationFilename(name);
128
- if (!parsed || parsed.kind !== 'B')
175
+ const parsed = ParseMigrationFilename(name);
176
+ if (!parsed || parsed.Kind !== 'B')
129
177
  continue;
130
- if (!best || parsed.timestamp > best.timestamp)
178
+ if (!best || parsed.Timestamp > best.Timestamp)
131
179
  best = parsed;
132
180
  }
133
181
  return best;
134
182
  }
183
+ /** @deprecated Use {@link FindLatestBaselineMigration}. */
184
+ export function findLatestBaselineMigration(sourceDir) {
185
+ return FindLatestBaselineMigration(sourceDir);
186
+ }
135
187
  /**
136
188
  * Walk up from `cwd` looking for a `migrations/` directory, then return the path
137
189
  * to the highest-numbered `vN/` subdirectory inside it. Returns null if nothing
@@ -140,7 +192,7 @@ export function findLatestBaselineMigration(sourceDir) {
140
192
  * Stops walking at the filesystem root. Used so the CLI can auto-locate the
141
193
  * source dir for within-major rebaseline without forcing the caller to pass `--source-dir`.
142
194
  */
143
- export function discoverMigrationsSourceDir(cwd) {
195
+ export function DiscoverMigrationsSourceDir(cwd) {
144
196
  let dir = path.resolve(cwd);
145
197
  for (let i = 0; i < 16; i++) {
146
198
  const candidate = path.join(dir, 'migrations');
@@ -161,22 +213,30 @@ export function discoverMigrationsSourceDir(cwd) {
161
213
  }
162
214
  return null;
163
215
  }
216
+ /** @deprecated Use {@link DiscoverMigrationsSourceDir}. */
217
+ export function discoverMigrationsSourceDir(cwd) {
218
+ return DiscoverMigrationsSourceDir(cwd);
219
+ }
164
220
  /**
165
221
  * Compute the canonical generated-at timestamp for a within-major rebaseline.
166
222
  * The new baseline's filename timestamp is exactly 1 minute after the latest
167
223
  * V-file's timestamp — guaranteeing the new B-file sorts after the V-stack it
168
224
  * succeeds, while remaining deterministic across re-runs against the same input.
169
225
  */
226
+ export function ComputeAutoBaselineStamp(latestVTimestamp) {
227
+ const parsed = ParseFileStamp(latestVTimestamp);
228
+ const next = AddMinutes(parsed, 1);
229
+ return { generatedAtUtc: next, fileStamp: FileStamp(next) };
230
+ }
231
+ /** @deprecated Use {@link ComputeAutoBaselineStamp}. */
170
232
  export function computeAutoBaselineStamp(latestVTimestamp) {
171
- const parsed = parseFileStamp(latestVTimestamp);
172
- const next = addMinutes(parsed, 1);
173
- return { generatedAtUtc: next, fileStamp: fileStamp(next) };
233
+ return ComputeAutoBaselineStamp(latestVTimestamp);
174
234
  }
175
235
  /**
176
236
  * Format a JS value as a T-SQL literal. Used by the data dumper.
177
237
  * Returns `NULL` for null/undefined, otherwise a typed literal.
178
238
  */
179
- export function formatTsqlValue(value) {
239
+ export function FormatTsqlValue(value) {
180
240
  if (value === null || value === undefined)
181
241
  return 'NULL';
182
242
  if (typeof value === 'boolean')
@@ -202,15 +262,19 @@ export function formatTsqlValue(value) {
202
262
  return '0x' + Buffer.from(value).toString('hex').toUpperCase();
203
263
  }
204
264
  if (typeof value === 'string')
205
- return quoteString(value);
265
+ return QuoteString(value);
206
266
  if (typeof value === 'object') {
207
267
  // Fallback: JSON-serialize objects (rare; mssql driver returns primitives)
208
- return quoteString(JSON.stringify(value));
268
+ return QuoteString(JSON.stringify(value));
209
269
  }
210
270
  throw new Error(`Unsupported value type for T-SQL literal: ${typeof value}`);
211
271
  }
272
+ /** @deprecated Use {@link FormatTsqlValue}. */
273
+ export function formatTsqlValue(value) {
274
+ return FormatTsqlValue(value);
275
+ }
212
276
  /** Strict equality used by the comparator for column values. */
213
- export function deepValueEqual(a, b) {
277
+ export function DeepValueEqual(a, b) {
214
278
  if (a === b)
215
279
  return true;
216
280
  if (a === null || a === undefined)
@@ -241,10 +305,18 @@ export function deepValueEqual(a, b) {
241
305
  }
242
306
  return false;
243
307
  }
308
+ /** @deprecated Use {@link DeepValueEqual}. */
309
+ export function deepValueEqual(a, b) {
310
+ return DeepValueEqual(a, b);
311
+ }
244
312
  /** Truncate a string with an ellipsis for diff output. */
245
- export function ellipsize(value, max = 80) {
313
+ export function Ellipsize(value, max = 80) {
246
314
  return value.length <= max ? value : value.slice(0, max - 1) + '…';
247
315
  }
316
+ /** @deprecated Use {@link Ellipsize}. */
317
+ export function ellipsize(value, max = 80) {
318
+ return Ellipsize(value, max);
319
+ }
248
320
  /**
249
321
  * Topologically sort a list of SQL routines (views/functions/procs/triggers)
250
322
  * by inferred dependencies. A routine A depends on B if A's `definition` text
@@ -257,12 +329,12 @@ export function ellipsize(value, max = 80) {
257
329
  * MSSQL `CREATE VIEW`/`CREATE FUNCTION` reject forward references at create
258
330
  * time, so without this sort we hit `Invalid object name` errors on apply.
259
331
  */
260
- export function topoSortRoutinesByDefinition(items) {
332
+ export function TopoSortRoutinesByDefinition(items) {
261
333
  if (items.length <= 1)
262
334
  return items.slice();
263
335
  const byKey = new Map();
264
336
  for (const r of items)
265
- byKey.set(qname(r.schema, r.name), r);
337
+ byKey.set(Qname(r.schema, r.name), r);
266
338
  // Precompute lowercased bodies, with bracket-quoted identifiers normalized
267
339
  // so that `[__mj].[vwEntities]` matches the qname `__mj.vwentities`. Without
268
340
  // this we miss bracket-style references — which is the form MSSQL routines
@@ -312,6 +384,10 @@ export function topoSortRoutinesByDefinition(items) {
312
384
  }
313
385
  return result;
314
386
  }
387
+ /** @deprecated Use {@link TopoSortRoutinesByDefinition}. */
388
+ export function topoSortRoutinesByDefinition(items) {
389
+ return TopoSortRoutinesByDefinition(items);
390
+ }
315
391
  /** Word-boundary substring search (lowercased input only). */
316
392
  function matchBareWord(haystack, needle) {
317
393
  if (!needle)
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/baseline/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/baseline/util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class AgentInit extends Command {
3
+ static description: string;
4
+ static aliases: string[];
5
+ static examples: string[];
6
+ static args: {
7
+ dir: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
8
+ };
9
+ static flags: {
10
+ force: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
+ start: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ app: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ 'skip-docker-check': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ };
15
+ run(): Promise<void>;
16
+ private resolveTemplateDir;
17
+ private ensureDockerRunning;
18
+ private startEnvironment;
19
+ private printDockerInstallInstructions;
20
+ private printNextSteps;
21
+ private printCodingAgentInstructions;
22
+ }
23
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAS,MAAM,aAAa,CAAC;AAUnD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,OAAO;IAC5C,MAAM,CAAC,WAAW,SAC+G;IAEjI,MAAM,CAAC,OAAO,WAAsB;IAEpC,MAAM,CAAC,QAAQ,WAKb;IAEF,MAAM,CAAC,IAAI;;MAMT;IAEF,MAAM,CAAC,KAAK;;;;;MAmBV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IA0E1B,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,mBAAmB;IAmC3B,OAAO,CAAC,gBAAgB;IAiCxB,OAAO,CAAC,8BAA8B;IActC,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,4BAA4B;CAcrC"}
@@ -0,0 +1,222 @@
1
+ import { Args, Command, Flags } from '@oclif/core';
2
+ import { existsSync, mkdirSync, cpSync, copyFileSync, readFileSync, writeFileSync } from 'node:fs';
3
+ import path from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { execSync } from 'node:child_process';
6
+ import chalk from 'chalk';
7
+ import ora from 'ora-classic';
8
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
9
+ export default class AgentInit extends Command {
10
+ static { this.description = 'Initialize a MemberJunction Citizen Agent Builder environment in the current or specified directory, including Docker setup.'; }
11
+ static { this.aliases = ['ai:agents:init']; }
12
+ static { this.examples = [
13
+ '<%= config.bin %> <%= command.id %>',
14
+ '<%= config.bin %> <%= command.id %> ./my-agent-workspace',
15
+ '<%= config.bin %> <%= command.id %> --no-start',
16
+ '<%= config.bin %> <%= command.id %> --app https://github.com/BlueCypress/bc-sampledata',
17
+ ]; }
18
+ static { this.args = {
19
+ dir: Args.string({
20
+ description: 'Target directory for the agent builder environment (default: current directory).',
21
+ required: false,
22
+ default: '.',
23
+ }),
24
+ }; }
25
+ static { this.flags = {
26
+ force: Flags.boolean({
27
+ char: 'f',
28
+ description: 'Overwrite existing files in target directory if they already exist.',
29
+ default: false,
30
+ }),
31
+ start: Flags.boolean({
32
+ char: 's',
33
+ description: 'Start Docker containers and run bootstrap immediately after initialization (pass --no-start to skip).',
34
+ default: true,
35
+ allowNo: true,
36
+ }),
37
+ app: Flags.string({
38
+ description: 'Open App Git URL to install for business context (default: More Cheese).',
39
+ }),
40
+ 'skip-docker-check': Flags.boolean({
41
+ description: 'Skip verifying whether Docker Desktop is currently running.',
42
+ default: false,
43
+ }),
44
+ }; }
45
+ async run() {
46
+ const { args, flags } = await this.parse(AgentInit);
47
+ const targetDir = path.resolve(process.cwd(), args.dir);
48
+ this.log(chalk.bold.cyan('\nšŸš€ MemberJunction Citizen Agent Builder\n'));
49
+ // 1. Resolve template directory
50
+ const templateDir = this.resolveTemplateDir();
51
+ if (!templateDir) {
52
+ this.error(chalk.red('āœ— Citizen Agent Builder template assets could not be located.\n') +
53
+ 'Please ensure @memberjunction/cli is properly installed.');
54
+ }
55
+ // 2. Check Docker availability & attempt auto-launch if stopped on macOS
56
+ const dockerAvailable = flags['skip-docker-check'] ? false : this.ensureDockerRunning();
57
+ // 3. Ensure target directory exists
58
+ if (!existsSync(targetDir)) {
59
+ mkdirSync(targetDir, { recursive: true });
60
+ }
61
+ // 4. Check for existing files
62
+ const agentsMdPath = path.join(targetDir, 'AGENTS.md');
63
+ if (existsSync(agentsMdPath) && !flags.force) {
64
+ this.log(chalk.yellow(`Target directory '${targetDir}' already contains AGENTS.md.\nUse --force to overwrite existing files.\n`));
65
+ return;
66
+ }
67
+ // 5. Scaffold files
68
+ const spinner = ora('Scaffolding agent builder workspace...').start();
69
+ try {
70
+ cpSync(templateDir, targetDir, { recursive: true });
71
+ // Create .env from .env.example if missing
72
+ const envExamplePath = path.join(targetDir, '.env.example');
73
+ const envPath = path.join(targetDir, '.env');
74
+ if (existsSync(envExamplePath) && !existsSync(envPath)) {
75
+ copyFileSync(envExamplePath, envPath);
76
+ }
77
+ // If custom app URL was supplied, update .env
78
+ if (flags.app && existsSync(envPath)) {
79
+ let envContent = readFileSync(envPath, 'utf8');
80
+ envContent = envContent.replace(/OPEN_APP_INSTALL_URL=.*/, `OPEN_APP_INSTALL_URL=${flags.app}`);
81
+ writeFileSync(envPath, envContent, 'utf8');
82
+ }
83
+ spinner.succeed(chalk.green('Workspace scaffolded successfully!'));
84
+ }
85
+ catch (err) {
86
+ spinner.fail(chalk.red('Failed to scaffold workspace.'));
87
+ const errorMsg = err instanceof Error ? err.message : String(err);
88
+ this.error(errorMsg);
89
+ }
90
+ // 6. Start Docker and bootstrap if requested and available
91
+ if (flags.start && dockerAvailable) {
92
+ this.startEnvironment(targetDir);
93
+ }
94
+ else {
95
+ if (!dockerAvailable && !flags['skip-docker-check']) {
96
+ this.printDockerInstallInstructions();
97
+ }
98
+ this.printNextSteps(targetDir, dockerAvailable);
99
+ }
100
+ }
101
+ resolveTemplateDir() {
102
+ // 1. Check bundled template ({src,dist}/init-templates/citizen-builder)
103
+ const bundledPath = path.join(__dirname, '..', '..', 'init-templates', 'citizen-builder');
104
+ if (existsSync(bundledPath)) {
105
+ return bundledPath;
106
+ }
107
+ // 2. Check src template when running from dist in dev mode
108
+ const bundledSrcPath = path.join(__dirname, '..', '..', '..', 'src', 'init-templates', 'citizen-builder');
109
+ if (existsSync(bundledSrcPath)) {
110
+ return bundledSrcPath;
111
+ }
112
+ // 3. Check monorepo root fallback (5 levels up from commands/agent)
113
+ const monorepoRootPath = path.resolve(__dirname, '../../../../../citizen-builder');
114
+ if (existsSync(monorepoRootPath)) {
115
+ return monorepoRootPath;
116
+ }
117
+ return null;
118
+ }
119
+ ensureDockerRunning() {
120
+ // Step 1: Check if docker daemon is already responsive
121
+ try {
122
+ execSync('docker info', { stdio: 'ignore' });
123
+ return true;
124
+ }
125
+ catch {
126
+ // Daemon not answering
127
+ }
128
+ // Step 2: If macOS and Docker.app exists, try launching it automatically
129
+ if (process.platform === 'darwin' && existsSync('/Applications/Docker.app')) {
130
+ const launchSpinner = ora('Docker Desktop is installed but not running. Launching Docker Desktop...').start();
131
+ try {
132
+ execSync('open -a Docker', { stdio: 'ignore' });
133
+ // Poll for up to 20 seconds for the daemon socket
134
+ for (let i = 0; i < 20; i++) {
135
+ try {
136
+ execSync('docker info', { stdio: 'ignore' });
137
+ launchSpinner.succeed(chalk.green('Docker Desktop started!'));
138
+ return true;
139
+ }
140
+ catch {
141
+ execSync('sleep 1');
142
+ }
143
+ }
144
+ launchSpinner.warn(chalk.yellow('Docker Desktop is still initializing in the background.'));
145
+ return false;
146
+ }
147
+ catch {
148
+ launchSpinner.fail(chalk.yellow('Could not launch Docker Desktop automatically.'));
149
+ return false;
150
+ }
151
+ }
152
+ return false;
153
+ }
154
+ startEnvironment(targetDir) {
155
+ const spinner = ora('Starting MemberJunction container stack (docker compose up -d)...').start();
156
+ try {
157
+ execSync('docker compose up -d', { cwd: targetDir, stdio: 'pipe' });
158
+ spinner.succeed(chalk.green('Containers started!'));
159
+ }
160
+ catch (err) {
161
+ spinner.fail(chalk.red('Failed to start containers.'));
162
+ const errorMsg = err instanceof Error ? err.message : String(err);
163
+ this.error(errorMsg);
164
+ }
165
+ let apiPort = '4000';
166
+ let dbPort = '1433';
167
+ let explorerPort = '4202';
168
+ const envPath = path.join(targetDir, '.env');
169
+ if (existsSync(envPath)) {
170
+ const content = readFileSync(envPath, 'utf8');
171
+ const apiMatch = content.match(/^API_PORT=(\d+)/m);
172
+ if (apiMatch)
173
+ apiPort = apiMatch[1];
174
+ const dbMatch = content.match(/^DB_PORT=(\d+)/m);
175
+ if (dbMatch)
176
+ dbPort = dbMatch[1];
177
+ const explorerMatch = content.match(/^EXPLORER_PORT=(\d+)/m);
178
+ if (explorerMatch)
179
+ explorerPort = explorerMatch[1];
180
+ }
181
+ this.log(chalk.bold.cyan('\nšŸŽ‰ Your MemberJunction local instance is running!'));
182
+ this.log(` API Endpoint: ${chalk.green(`http://localhost:${apiPort}`)}`);
183
+ this.log(` Explorer UI: ${chalk.green(`http://localhost:${explorerPort}`)}`);
184
+ this.log(` Database: ${chalk.green(`localhost:${dbPort}`)} (DB: MemberJunction)`);
185
+ this.log(` Healthcheck: ${chalk.gray(`http://localhost:${apiPort}/healthcheck`)}\n`);
186
+ this.printCodingAgentInstructions();
187
+ }
188
+ printDockerInstallInstructions() {
189
+ this.log(chalk.yellow('\nāš ļø Docker Desktop is not installed or not running.'));
190
+ this.log('MemberJunction Agent Builder requires Docker Desktop to run your local database and API.\n');
191
+ this.log(chalk.bold('To install Docker Desktop:'));
192
+ if (process.platform === 'darwin') {
193
+ this.log(' • Download: ' + chalk.cyan('https://www.docker.com/products/docker-desktop'));
194
+ this.log(' • Or install via Homebrew: ' + chalk.cyan('brew install --cask docker'));
195
+ }
196
+ else if (process.platform === 'win32') {
197
+ this.log(' • Download: ' + chalk.cyan('https://www.docker.com/products/docker-desktop'));
198
+ }
199
+ else {
200
+ this.log(' • Install Docker Engine: ' + chalk.cyan('https://docs.docker.com/engine/install/'));
201
+ }
202
+ }
203
+ printNextSteps(targetDir, dockerAvailable) {
204
+ this.log(chalk.bold.white('\nšŸ“‹ Next Steps:'));
205
+ this.log(`1. Navigate to your workspace:\n ${chalk.cyan(`cd ${path.relative(process.cwd(), targetDir) || '.'}`)}`);
206
+ this.log(`2. Add your LLM API keys in ${chalk.yellow('.env')}`);
207
+ if (dockerAvailable) {
208
+ this.log(`3. Start your local environment:\n ${chalk.cyan('docker compose up -d')}`);
209
+ }
210
+ else {
211
+ this.log(`3. Launch Docker Desktop and run:\n ${chalk.cyan('docker compose up -d')}`);
212
+ }
213
+ this.printCodingAgentInstructions();
214
+ }
215
+ printCodingAgentInstructions() {
216
+ this.log(chalk.bold.green('\nšŸ¤– Ready to Build with your Coding Agent:'));
217
+ this.log('Open your coding agent (Claude Code, Antigravity, Cursor, etc.) in this folder and simply say:');
218
+ this.log(chalk.italic.white(' "Build me an agent that scans for overdue invoices and prepares reminder emails."'));
219
+ this.log(chalk.gray('Your coding agent will read AGENTS.md, author the declarative metadata, and test it against your local database!\n'));
220
+ }
221
+ }
222
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/agent/init.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Command, Flags } from '@oclif/core';
2
2
  import ora from 'ora-classic';
3
- import { AI_FORMAT_MAP, CANONICAL_FORMAT_FLAG, resolveLegacyFormat } from '../../../lib/format-compat.js';
3
+ import { AI_FORMAT_MAP, CANONICAL_FORMAT_FLAG, ResolveLegacyFormat } from '../../../lib/format-compat.js';
4
4
  export default class ActionsList extends Command {
5
5
  static { this.description = 'List available AI actions'; }
6
6
  static { this.examples = [
@@ -27,12 +27,12 @@ export default class ActionsList extends Command {
27
27
  const service = new ActionService();
28
28
  const actions = await service.listActions();
29
29
  spinner.stop();
30
- const formatter = new OutputFormatter(resolveLegacyFormat({
31
- format: flags.format,
32
- legacy: flags.output,
33
- legacyDefault: 'compact',
34
- legacyWasExplicit: metadata.flags.output?.setFromDefault === false,
35
- map: AI_FORMAT_MAP,
30
+ const formatter = new OutputFormatter(ResolveLegacyFormat({
31
+ Format: flags.format,
32
+ Legacy: flags.output,
33
+ LegacyDefault: 'compact',
34
+ LegacyWasExplicit: metadata.flags.output?.setFromDefault === false,
35
+ Map: AI_FORMAT_MAP,
36
36
  }));
37
37
  this.log(formatter.formatActionList(actions));
38
38
  // Force exit after completion