@prism-d1/cli 1.1.2 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/dist/assets/github-workflows/prism-agent-eval.yml +2 -1
  2. package/dist/assets/github-workflows/prism-eval-gate-kiro.yml +12 -2
  3. package/dist/assets/gitlab-workflows/prism-eval-gate.yml +8 -0
  4. package/dist/assets/infra/bin/app.ts +61 -37
  5. package/dist/assets/infra/lib/constructs/otel-collector-construct.ts +96 -0
  6. package/dist/assets/infra/lib/constructs/security-agent-construct.ts +35 -30
  7. package/dist/assets/infra/lib/dashboard-stack.ts +27 -0
  8. package/dist/assets/infra/lib/lambda/otel-receiver.ts +278 -8
  9. package/dist/assets/infra/lib/lambda/pricing/litellm-snapshot.json +3769 -0
  10. package/dist/assets/infra/lib/lambda/pricing/price-source.ts +56 -0
  11. package/dist/assets/infra/lib/lambda/pricing/price-table.ts +240 -0
  12. package/dist/assets/infra/lib/lambda/pricing/prices-key.ts +6 -0
  13. package/dist/assets/infra/lib/lambda/pricing/reprice.ts +108 -0
  14. package/dist/assets/infra/lib/lambda/pricing-refresh.ts +352 -0
  15. package/dist/assets/infra/lib/lambda/velocity-widget.ts +124 -1
  16. package/dist/assets/infra/lib/metrics-pipeline-stack.ts +2 -110
  17. package/dist/assets/infra/lib/security-agent-resources.ts +136 -0
  18. package/dist/assets/infra/lib/security-agent-stack.ts +69 -0
  19. package/dist/assets/infra/package.json +4 -1
  20. package/dist/assets/metric-hooks/prepare-commit-msg +3 -1
  21. package/dist/assets/pentest-cdk/bin/app.ts +12 -0
  22. package/dist/assets/pentest-cdk/cdk.json +7 -0
  23. package/dist/assets/pentest-cdk/lib/pentest-target-stack.ts +206 -0
  24. package/dist/assets/pentest-cdk/package.json +18 -0
  25. package/dist/assets/pentest-cdk/tsconfig.json +12 -0
  26. package/dist/src/codewatch/config.d.ts +17 -0
  27. package/dist/src/codewatch/config.d.ts.map +1 -0
  28. package/dist/src/codewatch/config.js +40 -0
  29. package/dist/src/codewatch/config.js.map +1 -0
  30. package/dist/src/codewatch/gitleaks.d.ts +49 -0
  31. package/dist/src/codewatch/gitleaks.d.ts.map +1 -0
  32. package/dist/src/codewatch/gitleaks.js +160 -0
  33. package/dist/src/codewatch/gitleaks.js.map +1 -0
  34. package/dist/src/codewatch/globalHooks.d.ts +52 -0
  35. package/dist/src/codewatch/globalHooks.d.ts.map +1 -0
  36. package/dist/src/codewatch/globalHooks.js +235 -0
  37. package/dist/src/codewatch/globalHooks.js.map +1 -0
  38. package/dist/src/codewatch/hooks.d.ts +38 -0
  39. package/dist/src/codewatch/hooks.d.ts.map +1 -0
  40. package/dist/src/codewatch/hooks.js +176 -0
  41. package/dist/src/codewatch/hooks.js.map +1 -0
  42. package/dist/src/codewatch/prepush.d.ts +37 -0
  43. package/dist/src/codewatch/prepush.d.ts.map +1 -0
  44. package/dist/src/codewatch/prepush.js +231 -0
  45. package/dist/src/codewatch/prepush.js.map +1 -0
  46. package/dist/src/codewatch/results.d.ts +210 -0
  47. package/dist/src/codewatch/results.d.ts.map +1 -0
  48. package/dist/src/codewatch/results.js +127 -0
  49. package/dist/src/codewatch/results.js.map +1 -0
  50. package/dist/src/codewatch/reviewers/claude.d.ts +9 -0
  51. package/dist/src/codewatch/reviewers/claude.d.ts.map +1 -0
  52. package/dist/src/codewatch/reviewers/claude.js +48 -0
  53. package/dist/src/codewatch/reviewers/claude.js.map +1 -0
  54. package/dist/src/codewatch/reviewers/index.d.ts +39 -0
  55. package/dist/src/codewatch/reviewers/index.d.ts.map +1 -0
  56. package/dist/src/codewatch/reviewers/index.js +97 -0
  57. package/dist/src/codewatch/reviewers/index.js.map +1 -0
  58. package/dist/src/codewatch/reviewers/kiro.d.ts +14 -0
  59. package/dist/src/codewatch/reviewers/kiro.d.ts.map +1 -0
  60. package/dist/src/codewatch/reviewers/kiro.js +32 -0
  61. package/dist/src/codewatch/reviewers/kiro.js.map +1 -0
  62. package/dist/src/codewatch/reviewers/types.d.ts +56 -0
  63. package/dist/src/codewatch/reviewers/types.d.ts.map +1 -0
  64. package/dist/src/codewatch/reviewers/types.js +91 -0
  65. package/dist/src/codewatch/reviewers/types.js.map +1 -0
  66. package/dist/src/codewatch/rules.d.ts +12 -0
  67. package/dist/src/codewatch/rules.d.ts.map +1 -0
  68. package/dist/src/codewatch/rules.js +27 -0
  69. package/dist/src/codewatch/rules.js.map +1 -0
  70. package/dist/src/commands/_top/dashboard.d.ts +17 -0
  71. package/dist/src/commands/_top/dashboard.d.ts.map +1 -0
  72. package/dist/src/commands/_top/dashboard.js +76 -0
  73. package/dist/src/commands/_top/dashboard.js.map +1 -0
  74. package/dist/src/commands/_top/version.d.ts +62 -0
  75. package/dist/src/commands/_top/version.d.ts.map +1 -0
  76. package/dist/src/commands/_top/version.js +175 -0
  77. package/dist/src/commands/_top/version.js.map +1 -0
  78. package/dist/src/commands/bedrock-protection/scan-account.d.ts.map +1 -1
  79. package/dist/src/commands/bedrock-protection/scan-account.js +2 -1
  80. package/dist/src/commands/bedrock-protection/scan-account.js.map +1 -1
  81. package/dist/src/commands/bedrock-protection/scan-org.d.ts.map +1 -1
  82. package/dist/src/commands/bedrock-protection/scan-org.js +16 -4
  83. package/dist/src/commands/bedrock-protection/scan-org.js.map +1 -1
  84. package/dist/src/commands/bootstrapper/install-eval-harness.d.ts.map +1 -1
  85. package/dist/src/commands/bootstrapper/install-eval-harness.js +15 -48
  86. package/dist/src/commands/bootstrapper/install-eval-harness.js.map +1 -1
  87. package/dist/src/commands/bootstrapper/install-git-hooks.d.ts +13 -0
  88. package/dist/src/commands/bootstrapper/install-git-hooks.d.ts.map +1 -1
  89. package/dist/src/commands/bootstrapper/install-git-hooks.js +28 -147
  90. package/dist/src/commands/bootstrapper/install-git-hooks.js.map +1 -1
  91. package/dist/src/commands/bootstrapper/setup-otel-sync.d.ts +12 -6
  92. package/dist/src/commands/bootstrapper/setup-otel-sync.d.ts.map +1 -1
  93. package/dist/src/commands/bootstrapper/setup-otel-sync.js +18 -443
  94. package/dist/src/commands/bootstrapper/setup-otel-sync.js.map +1 -1
  95. package/dist/src/commands/codewatch/pre-commit.d.ts +7 -0
  96. package/dist/src/commands/codewatch/pre-commit.d.ts.map +1 -0
  97. package/dist/src/commands/codewatch/pre-commit.js +30 -0
  98. package/dist/src/commands/codewatch/pre-commit.js.map +1 -0
  99. package/dist/src/commands/codewatch/pre-push.d.ts +16 -0
  100. package/dist/src/commands/codewatch/pre-push.d.ts.map +1 -0
  101. package/dist/src/commands/codewatch/pre-push.js +32 -0
  102. package/dist/src/commands/codewatch/pre-push.js.map +1 -0
  103. package/dist/src/commands/codewatch/report.d.ts +22 -0
  104. package/dist/src/commands/codewatch/report.d.ts.map +1 -0
  105. package/dist/src/commands/codewatch/report.js +64 -0
  106. package/dist/src/commands/codewatch/report.js.map +1 -0
  107. package/dist/src/commands/enable/codeburn.d.ts +59 -0
  108. package/dist/src/commands/enable/codeburn.d.ts.map +1 -0
  109. package/dist/src/commands/enable/codeburn.js +531 -0
  110. package/dist/src/commands/enable/codeburn.js.map +1 -0
  111. package/dist/src/commands/enable/codewatch.d.ts +15 -0
  112. package/dist/src/commands/enable/codewatch.d.ts.map +1 -0
  113. package/dist/src/commands/enable/codewatch.js +186 -0
  114. package/dist/src/commands/enable/codewatch.js.map +1 -0
  115. package/dist/src/commands/enable/security.d.ts +41 -0
  116. package/dist/src/commands/enable/security.d.ts.map +1 -0
  117. package/dist/src/commands/enable/security.js +130 -0
  118. package/dist/src/commands/enable/security.js.map +1 -0
  119. package/dist/src/commands/export/otel.d.ts +31 -0
  120. package/dist/src/commands/export/otel.d.ts.map +1 -0
  121. package/dist/src/commands/export/otel.js +52 -0
  122. package/dist/src/commands/export/otel.js.map +1 -0
  123. package/dist/src/commands/git/claude-session-context.d.ts.map +1 -1
  124. package/dist/src/commands/git/claude-session-context.js +2 -1
  125. package/dist/src/commands/git/claude-session-context.js.map +1 -1
  126. package/dist/src/commands/git/commit-trailers.js +1 -1
  127. package/dist/src/commands/git/commit-trailers.js.map +1 -1
  128. package/dist/src/commands/security/code-review.d.ts +22 -0
  129. package/dist/src/commands/security/code-review.d.ts.map +1 -0
  130. package/dist/src/commands/security/code-review.js +43 -0
  131. package/dist/src/commands/security/code-review.js.map +1 -0
  132. package/dist/src/commands/security/findings.d.ts +15 -0
  133. package/dist/src/commands/security/findings.d.ts.map +1 -0
  134. package/dist/src/commands/security/findings.js +31 -0
  135. package/dist/src/commands/security/findings.js.map +1 -0
  136. package/dist/src/commands/security/pentest.d.ts +18 -0
  137. package/dist/src/commands/security/pentest.d.ts.map +1 -0
  138. package/dist/src/commands/security/pentest.js +32 -0
  139. package/dist/src/commands/security/pentest.js.map +1 -0
  140. package/dist/src/commands/security/threat-model.d.ts +16 -0
  141. package/dist/src/commands/security/threat-model.d.ts.map +1 -0
  142. package/dist/src/commands/security/threat-model.js +24 -0
  143. package/dist/src/commands/security/threat-model.js.map +1 -0
  144. package/dist/src/commands/security/threats.d.ts +12 -0
  145. package/dist/src/commands/security/threats.d.ts.map +1 -0
  146. package/dist/src/commands/security/threats.js +23 -0
  147. package/dist/src/commands/security/threats.js.map +1 -0
  148. package/dist/src/commands/securityagent/setup.d.ts +19 -5
  149. package/dist/src/commands/securityagent/setup.d.ts.map +1 -1
  150. package/dist/src/commands/securityagent/setup.js +25 -189
  151. package/dist/src/commands/securityagent/setup.js.map +1 -1
  152. package/dist/src/commands/workshop/verify-setup.d.ts.map +1 -1
  153. package/dist/src/commands/workshop/verify-setup.js +5 -3
  154. package/dist/src/commands/workshop/verify-setup.js.map +1 -1
  155. package/dist/src/dashboard/codewatch.d.ts +106 -0
  156. package/dist/src/dashboard/codewatch.d.ts.map +1 -0
  157. package/dist/src/dashboard/codewatch.js +120 -0
  158. package/dist/src/dashboard/codewatch.js.map +1 -0
  159. package/dist/src/dashboard/commits.d.ts +96 -0
  160. package/dist/src/dashboard/commits.d.ts.map +1 -0
  161. package/dist/src/dashboard/commits.js +207 -0
  162. package/dist/src/dashboard/commits.js.map +1 -0
  163. package/dist/src/dashboard/page.d.ts +10 -0
  164. package/dist/src/dashboard/page.d.ts.map +1 -0
  165. package/dist/src/dashboard/page.js +470 -0
  166. package/dist/src/dashboard/page.js.map +1 -0
  167. package/dist/src/dashboard/payload.d.ts +114 -0
  168. package/dist/src/dashboard/payload.d.ts.map +1 -0
  169. package/dist/src/dashboard/payload.js +96 -0
  170. package/dist/src/dashboard/payload.js.map +1 -0
  171. package/dist/src/dashboard/report.d.ts +99 -0
  172. package/dist/src/dashboard/report.d.ts.map +1 -0
  173. package/dist/src/dashboard/report.js +300 -0
  174. package/dist/src/dashboard/report.js.map +1 -0
  175. package/dist/src/dashboard/repos.d.ts +58 -0
  176. package/dist/src/dashboard/repos.d.ts.map +1 -0
  177. package/dist/src/dashboard/repos.js +111 -0
  178. package/dist/src/dashboard/repos.js.map +1 -0
  179. package/dist/src/dashboard/security.d.ts +130 -0
  180. package/dist/src/dashboard/security.d.ts.map +1 -0
  181. package/dist/src/dashboard/security.js +144 -0
  182. package/dist/src/dashboard/security.js.map +1 -0
  183. package/dist/src/dashboard/server.d.ts +52 -0
  184. package/dist/src/dashboard/server.d.ts.map +1 -0
  185. package/dist/src/dashboard/server.js +163 -0
  186. package/dist/src/dashboard/server.js.map +1 -0
  187. package/dist/src/dashboard/setup.d.ts +67 -0
  188. package/dist/src/dashboard/setup.d.ts.map +1 -0
  189. package/dist/src/dashboard/setup.js +146 -0
  190. package/dist/src/dashboard/setup.js.map +1 -0
  191. package/dist/src/dashboard/usage.d.ts +43 -0
  192. package/dist/src/dashboard/usage.d.ts.map +1 -0
  193. package/dist/src/dashboard/usage.js +88 -0
  194. package/dist/src/dashboard/usage.js.map +1 -0
  195. package/dist/src/index.d.ts +1 -0
  196. package/dist/src/index.d.ts.map +1 -1
  197. package/dist/src/index.js +48 -2
  198. package/dist/src/index.js.map +1 -1
  199. package/dist/src/security/cfn-diff.d.ts +57 -0
  200. package/dist/src/security/cfn-diff.d.ts.map +1 -0
  201. package/dist/src/security/cfn-diff.js +112 -0
  202. package/dist/src/security/cfn-diff.js.map +1 -0
  203. package/dist/src/security/errors.d.ts +45 -0
  204. package/dist/src/security/errors.d.ts.map +1 -0
  205. package/dist/src/security/errors.js +116 -0
  206. package/dist/src/security/errors.js.map +1 -0
  207. package/dist/src/security/marker.d.ts +46 -0
  208. package/dist/src/security/marker.d.ts.map +1 -0
  209. package/dist/src/security/marker.js +120 -0
  210. package/dist/src/security/marker.js.map +1 -0
  211. package/dist/src/security/pentest-dockerfile.d.ts +8 -0
  212. package/dist/src/security/pentest-dockerfile.d.ts.map +1 -0
  213. package/dist/src/security/pentest-dockerfile.js +163 -0
  214. package/dist/src/security/pentest-dockerfile.js.map +1 -0
  215. package/dist/src/security/pentest.d.ts +233 -0
  216. package/dist/src/security/pentest.d.ts.map +1 -0
  217. package/dist/src/security/pentest.js +1057 -0
  218. package/dist/src/security/pentest.js.map +1 -0
  219. package/dist/src/security/repo.d.ts +25 -0
  220. package/dist/src/security/repo.d.ts.map +1 -0
  221. package/dist/src/security/repo.js +38 -0
  222. package/dist/src/security/repo.js.map +1 -0
  223. package/dist/src/security/review.d.ts +202 -0
  224. package/dist/src/security/review.d.ts.map +1 -0
  225. package/dist/src/security/review.js +706 -0
  226. package/dist/src/security/review.js.map +1 -0
  227. package/dist/src/security/setup.d.ts +193 -0
  228. package/dist/src/security/setup.d.ts.map +1 -0
  229. package/dist/src/security/setup.js +728 -0
  230. package/dist/src/security/setup.js.map +1 -0
  231. package/dist/src/security/threat-model.d.ts +133 -0
  232. package/dist/src/security/threat-model.d.ts.map +1 -0
  233. package/dist/src/security/threat-model.js +653 -0
  234. package/dist/src/security/threat-model.js.map +1 -0
  235. package/dist/src/utils/audit-bedrock.d.ts +1 -0
  236. package/dist/src/utils/audit-bedrock.d.ts.map +1 -1
  237. package/dist/src/utils/audit-bedrock.js +133 -0
  238. package/dist/src/utils/audit-bedrock.js.map +1 -1
  239. package/dist/src/utils/audit-org.d.ts +1 -0
  240. package/dist/src/utils/audit-org.d.ts.map +1 -1
  241. package/dist/src/utils/audit-org.js +155 -0
  242. package/dist/src/utils/audit-org.js.map +1 -1
  243. package/dist/src/utils/exec.d.ts +6 -0
  244. package/dist/src/utils/exec.d.ts.map +1 -1
  245. package/dist/src/utils/exec.js +12 -1
  246. package/dist/src/utils/exec.js.map +1 -1
  247. package/dist/src/utils/otel-sync-schedule.d.ts +41 -0
  248. package/dist/src/utils/otel-sync-schedule.d.ts.map +1 -0
  249. package/dist/src/utils/otel-sync-schedule.js +90 -0
  250. package/dist/src/utils/otel-sync-schedule.js.map +1 -0
  251. package/dist/src/utils/tool-check.d.ts +14 -0
  252. package/dist/src/utils/tool-check.d.ts.map +1 -0
  253. package/dist/src/utils/tool-check.js +42 -0
  254. package/dist/src/utils/tool-check.js.map +1 -0
  255. package/package.json +3 -2
@@ -1,450 +1,25 @@
1
- import { createInterface } from 'node:readline';
2
- import { platform, homedir } from 'node:os';
3
- import { existsSync, mkdirSync, writeFileSync, readFileSync, unlinkSync } from 'node:fs';
4
- import { join } from 'node:path';
5
- import { run, runInteractive } from '../../utils/exec.js';
6
- import { withPrivateTemp } from '../../utils/tempfile.js';
7
- function prompt(question, defaultValue) {
8
- const rl = createInterface({ input: process.stdin, output: process.stdout });
9
- const suffix = defaultValue ? ` [${defaultValue}]` : '';
10
- return new Promise((resolve) => {
11
- rl.question(`${question}${suffix}: `, (answer) => {
12
- rl.close();
13
- resolve(answer.trim() || defaultValue || '');
14
- });
15
- });
16
- }
17
- // ---- Constants ----
18
- const CRON_MARKER = '# prism-otel-sync';
19
- const PLIST_LABEL = 'com.prism.otel-sync';
20
- const SCHTASK_NAME = 'PrismOtelSync';
21
- const LOG_DIR = join(homedir(), '.prism', 'logs');
22
- /** Window the recurring sync pushes on every run. */
23
- const SYNC_SINCE = '7d';
24
- // ---- Scheduler helpers per OS ----
25
- function getCodeburnPath() {
26
- const result = platform() === 'win32'
27
- ? run('where', ['codeburn'])
28
- : run('which', ['codeburn']);
29
- return result.ok ? result.stdout.split('\n')[0].trim() : null;
30
- }
1
+ import { CODEBURN_OPTIONS, runEnableCodeburn } from '../enable/codeburn.js';
31
2
  /**
32
- * The argv of the recurring sync, shared by every platform.
3
+ * DEPRECATED alias for `prism-cli enable codeburn`.
33
4
  *
34
- * This is the single source of truth on purpose. It previously existed only as
35
- * a Linux helper, and the Windows branch open-coded its own command string
36
- * that omitted --attribution. That silently reduced Windows machines to usage
37
- * telemetry with no commit attribution, so those developers counted toward the
38
- * Attribution Coverage denominator (CI sees their commits) while contributing
39
- * nothing to the numerator -- indistinguishable on the dashboard from someone
40
- * who never onboarded. Any new platform branch must call this.
5
+ * `enable codeburn` is this command under its new name: the same flags, sync
6
+ * setup and schedule, plus a codeburn install when it is missing (after a
7
+ * confirmation), --dry-run, and re-runs that report what is already done. The
8
+ * command is kept so existing scripts and docs keep working.
41
9
  */
42
- function syncArgs(since) {
43
- return ['sync', 'push', '--since', since, '--attribution'];
44
- }
45
- // ---- Linux: user crontab ----
46
- function linuxScheduleExists() {
47
- if (!linuxCrontabAvailable())
48
- return false;
49
- const result = run('crontab', ['-l']);
50
- return result.ok && result.stdout.includes(CRON_MARKER);
51
- }
52
- function linuxCrontabAvailable() {
53
- return run('which', ['crontab']).ok;
54
- }
55
- /**
56
- * Single-quotes a value for the crontab line.
57
- *
58
- * A crontab entry is interpreted by /bin/sh, so unlike our argv call sites
59
- * this one genuinely does need quoting -- the shell is the scheduler's, not
60
- * ours, and we cannot pass it argv. Wrapping in single quotes and encoding any
61
- * embedded single quote as '\'' is the only form with no escape sequences to
62
- * get wrong. Paths under a home directory containing a space would otherwise
63
- * split into two arguments.
64
- */
65
- function shQuote(value) {
66
- return `'${value.replace(/'/g, `'\\''`)}'`;
67
- }
68
- function linuxInstallSchedule(codeburnPath, intervalHours) {
69
- if (!linuxCrontabAvailable()) {
70
- console.warn('\n⚠️ crontab not found — skipping automatic schedule installation.');
71
- console.warn(' Run "codeburn sync push --since 7d" manually, or install cronie:');
72
- console.warn(' sudo yum install cronie -y # then re-run this command\n');
73
- return false;
74
- }
75
- const existing = run('crontab', ['-l']);
76
- const lines = existing.ok ? existing.stdout.split('\n').filter(l => !l.includes(CRON_MARKER)) : [];
77
- const logFile = join(LOG_DIR, 'otel-sync.log');
78
- const cronExpr = `0 */${intervalHours} * * *`;
79
- const command = [shQuote(codeburnPath), ...syncArgs(SYNC_SINCE)].join(' ');
80
- lines.push(`${CRON_MARKER}`);
81
- lines.push(`${cronExpr} ${command} >> ${shQuote(logFile)} 2>&1`);
82
- const result = withPrivateTemp('crontab', lines.join('\n') + '\n', f => run('crontab', [f]));
83
- if (!result.ok)
84
- throw new Error(`Failed to install crontab: ${result.stderr}`);
85
- return true;
86
- }
87
- function linuxRemoveSchedule() {
88
- if (!linuxCrontabAvailable())
89
- return;
90
- const existing = run('crontab', ['-l']);
91
- if (!existing.ok)
92
- return;
93
- const lines = existing.stdout.split('\n').filter(l => !l.includes(CRON_MARKER) && !l.includes('codeburn sync push'));
94
- withPrivateTemp('crontab', lines.join('\n') + '\n', f => run('crontab', [f]));
95
- }
96
- // ---- macOS: LaunchAgent ----
97
- function darwinPlistPath() {
98
- return join(homedir(), 'Library', 'LaunchAgents', `${PLIST_LABEL}.plist`);
99
- }
100
- function darwinScheduleExists() {
101
- return existsSync(darwinPlistPath());
102
- }
103
- /**
104
- * Escapes a value for use inside a plist <string> element.
105
- *
106
- * The plist is generated XML, so a path containing `&` or `<` -- both legal in
107
- * macOS filenames -- would otherwise produce a malformed document that
108
- * launchctl refuses to load, reported only as a generic load failure.
109
- */
110
- function xmlEscape(value) {
111
- return value
112
- .replace(/&/g, '&amp;')
113
- .replace(/</g, '&lt;')
114
- .replace(/>/g, '&gt;');
115
- }
116
- function darwinInstallSchedule(codeburnPath, intervalHours) {
117
- const logFile = join(LOG_DIR, 'otel-sync.log');
118
- const argElements = [codeburnPath, ...syncArgs(SYNC_SINCE)]
119
- .map(a => ` <string>${xmlEscape(a)}</string>`)
120
- .join('\n');
121
- const plist = `<?xml version="1.0" encoding="UTF-8"?>
122
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
123
- <plist version="1.0">
124
- <dict>
125
- <key>Label</key>
126
- <string>${PLIST_LABEL}</string>
127
- <key>ProgramArguments</key>
128
- <array>
129
- ${argElements}
130
- </array>
131
- <key>StartInterval</key>
132
- <integer>${intervalHours * 3600}</integer>
133
- <key>StandardOutPath</key>
134
- <string>${xmlEscape(logFile)}</string>
135
- <key>StandardErrorPath</key>
136
- <string>${xmlEscape(logFile)}</string>
137
- <key>RunAtLoad</key>
138
- <true/>
139
- </dict>
140
- </plist>`;
141
- const plistPath = darwinPlistPath();
142
- mkdirSync(join(homedir(), 'Library', 'LaunchAgents'), { recursive: true });
143
- writeFileSync(plistPath, plist);
144
- // Unload first so a reinstall replaces rather than conflicts. A missing
145
- // agent makes this fail, which is expected and ignored -- run() captures
146
- // stderr rather than leaking it, so no shell redirect is needed.
147
- run('launchctl', ['unload', plistPath]);
148
- const result = run('launchctl', ['load', plistPath]);
149
- if (!result.ok)
150
- throw new Error(`Failed to load LaunchAgent: ${result.stderr}`);
151
- }
152
- function darwinRemoveSchedule() {
153
- const plistPath = darwinPlistPath();
154
- if (existsSync(plistPath)) {
155
- run('launchctl', ['unload', plistPath]);
156
- unlinkSync(plistPath);
157
- }
158
- }
159
- // ---- Windows: schtasks ----
160
- function windowsScheduleExists() {
161
- const result = run('schtasks', ['/query', '/tn', SCHTASK_NAME, '/fo', 'CSV']);
162
- return result.ok;
163
- }
164
- /** Path of the generated batch wrapper the scheduled task invokes. */
165
- function windowsWrapperPath() {
166
- return join(homedir(), '.prism', 'otel-sync.cmd');
167
- }
168
- /**
169
- * Installs the Windows scheduled task via a generated .cmd wrapper.
170
- *
171
- * The previous version nested the whole command inside schtasks' /tr argument:
172
- *
173
- * /tr "cmd /c <codeburnPath> sync push ... >> "<logFile>" 2>&1"
174
- *
175
- * and tried to make that legal with cmd.replace(/"/g, '\\"'). That is three
176
- * quoting layers deep -- our shell, schtasks' own /tr parser, then cmd.exe --
177
- * and the replacement handled exactly one metacharacter of one of them. It did
178
- * not escape backslashes, which is not a corner case on Windows: every path
179
- * here is backslash-separated, so a trailing separator turns the closing \"
180
- * into an escaped quote and unbalances the argument. cmd.exe also does not
181
- * treat \" the way that replacement assumes, so the escaping was aimed at the
182
- * wrong grammar to begin with.
183
- *
184
- * Writing the command to a file removes every one of those layers. The task
185
- * runs one fixed argument -- the wrapper path -- and the redirection lives in
186
- * a batch file where it needs no escaping at all. This also sidesteps the
187
- * documented 261-character limit on /tr, which the inlined form could exceed
188
- * with a long install path.
189
- */
190
- function windowsInstallSchedule(codeburnPath, intervalHours) {
191
- const logFile = join(LOG_DIR, 'otel-sync.log');
192
- const args = syncArgs(SYNC_SINCE).join(' ');
193
- const wrapper = [
194
- '@echo off',
195
- 'REM Generated by prism-cli bootstrapper setup-otel-sync. Do not edit.',
196
- `"${codeburnPath}" ${args} >> "${logFile}" 2>&1`,
197
- '',
198
- ].join('\r\n');
199
- mkdirSync(join(homedir(), '.prism'), { recursive: true });
200
- writeFileSync(windowsWrapperPath(), wrapper);
201
- const result = run('schtasks', [
202
- '/create',
203
- '/tn', SCHTASK_NAME,
204
- '/sc', 'hourly',
205
- '/mo', String(intervalHours),
206
- '/tr', windowsWrapperPath(),
207
- '/f',
208
- ]);
209
- if (!result.ok)
210
- throw new Error(`Failed to create scheduled task: ${result.stderr}`);
211
- }
212
- function windowsRemoveSchedule() {
213
- run('schtasks', ['/delete', '/tn', SCHTASK_NAME, '/f']);
214
- const wrapper = windowsWrapperPath();
215
- if (existsSync(wrapper))
216
- unlinkSync(wrapper);
217
- }
218
- // ---- Unified scheduler interface ----
219
- function scheduleExists() {
220
- switch (platform()) {
221
- case 'darwin': return darwinScheduleExists();
222
- case 'win32': return windowsScheduleExists();
223
- default: return linuxScheduleExists();
224
- }
225
- }
226
- function installSchedule(codeburnPath, intervalHours) {
227
- mkdirSync(LOG_DIR, { recursive: true });
228
- switch (platform()) {
229
- case 'darwin':
230
- darwinInstallSchedule(codeburnPath, intervalHours);
231
- return true;
232
- case 'win32':
233
- windowsInstallSchedule(codeburnPath, intervalHours);
234
- return true;
235
- default: return linuxInstallSchedule(codeburnPath, intervalHours);
236
- }
237
- }
238
- function removeSchedule() {
239
- switch (platform()) {
240
- case 'darwin': return darwinRemoveSchedule();
241
- case 'win32': return windowsRemoveSchedule();
242
- default: return linuxRemoveSchedule();
243
- }
244
- }
245
- function schedulerName() {
246
- switch (platform()) {
247
- case 'darwin': return 'LaunchAgent';
248
- case 'win32': return 'Scheduled Task';
249
- default: return 'crontab';
250
- }
251
- }
252
- // ---- Status ----
253
- function showStatus(codeburnPath) {
254
- console.log('\n📊 OTEL Sync Status\n');
255
- // Codeburn installed?
256
- if (codeburnPath) {
257
- console.log(` ✓ codeburn found: ${codeburnPath}`);
258
- const ver = run(codeburnPath, ['--version']);
259
- if (ver.ok)
260
- console.log(` version: ${ver.stdout}`);
261
- }
262
- else {
263
- console.log(' ✗ codeburn not found in PATH');
264
- }
265
- // Sync configured?
266
- const configPath = join(homedir(), '.config', 'codeburn', 'sync.json');
267
- if (existsSync(configPath)) {
268
- try {
269
- const cfg = JSON.parse(readFileSync(configPath, 'utf8'));
270
- console.log(` ✓ sync configured: ${cfg.baseUrl || cfg.endpoint || cfg.url || '(configured)'}`);
271
- }
272
- catch {
273
- console.log(` ✓ sync config exists: ${configPath}`);
274
- }
275
- }
276
- else {
277
- console.log(' ✗ sync not configured (run setup first)');
278
- }
279
- // Schedule exists?
280
- if (scheduleExists()) {
281
- console.log(` ✓ ${schedulerName()} schedule active`);
282
- }
283
- else {
284
- console.log(` ✗ no ${schedulerName()} schedule found`);
285
- }
286
- // Last log?
287
- const logFile = join(LOG_DIR, 'otel-sync.log');
288
- if (existsSync(logFile)) {
289
- // Read in process rather than shelling out to tail, which does not exist
290
- // on Windows -- the platform this command explicitly supports. The old
291
- // `tail -5` silently produced no output there, making a working schedule
292
- // look like it had never run.
293
- const tail = readFileSync(logFile, 'utf8').split('\n').filter(Boolean).slice(-5);
294
- if (tail.length) {
295
- console.log(` Last sync output (${logFile}):`);
296
- for (const line of tail) {
297
- console.log(` ${line}`);
298
- }
299
- }
300
- }
301
- console.log('');
302
- }
303
- // ---- Main ----
10
+ export const DEPRECATION = [
11
+ '⚠ "prism-cli bootstrapper setup-otel-sync" is deprecated; use "prism-cli enable codeburn".',
12
+ ' It takes the same flags, and also installs codeburn when missing (asks first; --yes skips the prompt).',
13
+ ];
304
14
  export default {
305
- description: 'Set up automated codeburn OTEL sync (pushes AI usage telemetry every 12h)',
306
- options: [
307
- { flags: '--url <url>', description: 'OTEL collector URL (from CDK deploy output OtelCollectorUrl)' },
308
- { flags: '--interval <hours>', description: 'Sync interval in hours (default: 12)' },
309
- { flags: '--status', description: 'Show current sync schedule status' },
310
- { flags: '--remove', description: 'Remove the sync schedule' },
311
- ],
312
- async action(opts) {
313
- const codeburnPath = getCodeburnPath();
314
- // --status
315
- if (opts.status) {
316
- showStatus(codeburnPath);
317
- return;
318
- }
319
- // --remove
320
- if (opts.remove) {
321
- if (scheduleExists()) {
322
- removeSchedule();
323
- console.log(`\n ✓ ${schedulerName()} schedule removed.\n`);
324
- }
325
- else {
326
- console.log(`\n No ${schedulerName()} schedule found — nothing to remove.\n`);
327
- }
328
- return;
329
- }
330
- // ---- Setup flow ----
331
- console.log('\n🔄 OTEL Sync Setup\n');
332
- console.log('This will configure automated codeburn telemetry sync to your PRISM');
333
- console.log('OTEL collector. Runs every 12 hours to keep dashboards fresh.\n');
334
- // 1. Check codeburn version
335
- if (!codeburnPath) {
336
- console.error('Error: codeburn not found. Install with: npm install -g codeburn');
337
- process.exit(1);
338
- }
339
- const verResult = run(codeburnPath, ['--version']);
340
- if (verResult.ok) {
341
- const ver = verResult.stdout.replace(/[^0-9.]/g, '');
342
- const parts = ver.split('.').map(Number);
343
- if (parts[0] === 0 && parts[1] < 9 || (parts[1] === 9 && parts[2] < 16)) {
344
- console.error(`Error: codeburn >= 0.9.16 required (found ${ver}). Run: npm update -g codeburn`);
345
- process.exit(1);
346
- }
347
- console.log(` ✓ codeburn ${ver}`);
348
- }
349
- // 2. Get the OTEL collector URL
350
- const otelUrl = opts.url || await prompt('OTEL collector URL (from CDK deploy output OtelCollectorUrl)');
351
- if (!otelUrl) {
352
- console.error('Error: OTEL collector URL is required.');
353
- process.exit(1);
354
- }
355
- // Reject anything that is not a real http(s) URL before it is persisted
356
- // into codeburn's sync config, where a malformed value surfaces later as an
357
- // opaque push failure from the scheduled job rather than here.
358
- try {
359
- const parsed = new URL(otelUrl);
360
- if (parsed.protocol !== 'https:' && parsed.protocol !== 'http:') {
361
- throw new Error('unsupported protocol');
362
- }
363
- }
364
- catch {
365
- console.error(`Error: "${otelUrl}" is not a valid http(s) URL.`);
366
- console.error(' Expected the OtelCollectorUrl value from the CDK stack outputs.');
367
- process.exit(1);
368
- }
369
- // 3. Check if codeburn sync is already configured for this URL
370
- const configPath = join(homedir(), '.config', 'codeburn', 'sync.json');
371
- let needsSetup = true;
372
- if (existsSync(configPath)) {
373
- try {
374
- const cfg = JSON.parse(readFileSync(configPath, 'utf8'));
375
- const existingUrl = cfg.baseUrl || cfg.endpoint || cfg.url || '';
376
- if (existingUrl === otelUrl || existingUrl.startsWith(otelUrl)) {
377
- console.log(` ✓ codeburn sync already configured for this endpoint.`);
378
- needsSetup = false;
379
- }
380
- else {
381
- console.log(` ⚠ codeburn sync configured for different endpoint: ${existingUrl}`);
382
- const override = await prompt('Reconfigure for the new URL? (y/N)', 'N');
383
- if (override.toLowerCase() !== 'y') {
384
- console.log(' Keeping existing configuration.');
385
- needsSetup = false;
386
- }
387
- }
388
- }
389
- catch {
390
- // Corrupt config — re-setup
391
- }
392
- }
393
- // 4. Run codeburn sync setup (opens browser for OIDC)
394
- if (needsSetup) {
395
- console.log('\n Running: codeburn sync setup ' + otelUrl);
396
- console.log(' (This will open a browser for OIDC authentication)\n');
397
- // argv, not a command string: otelUrl comes straight from prompt() and
398
- // previously reached execSync as shell source.
399
- if (runInteractive(codeburnPath, ['sync', 'setup', otelUrl])) {
400
- console.log('\n ✓ codeburn sync configured.');
401
- }
402
- else {
403
- console.error(`\n ✗ codeburn sync setup failed. Ensure Cognito user exists and try again.`);
404
- process.exit(1);
405
- }
406
- }
407
- // 5. Initial backfill push (30d — server drops >14d from CloudWatch, keeps in DDB/S3)
408
- console.log('\n Pushing initial backfill (last 30 days of telemetry)...');
409
- const backfill = run(codeburnPath, syncArgs('30d'));
410
- if (backfill.ok) {
411
- console.log(' ✓ Backfill push complete.');
412
- if (backfill.stdout)
413
- console.log(` ${backfill.stdout.split('\n').slice(-1)[0]}`);
414
- }
415
- else {
416
- console.log(` ⚠ Backfill push failed (non-fatal): ${backfill.stderr.split('\n')[0]}`);
417
- console.log(' The schedule will retry. Check ~/.prism/logs/otel-sync.log');
418
- }
419
- // 6. Install OS schedule
420
- const intervalHours = opts.interval ? parseInt(opts.interval, 10) : 12;
421
- if (isNaN(intervalHours) || intervalHours < 1) {
422
- console.error('Error: --interval must be a positive integer (hours).');
423
- process.exit(1);
424
- }
425
- if (scheduleExists()) {
426
- console.log(`\n ✓ ${schedulerName()} schedule already exists — updating.`);
427
- removeSchedule();
428
- }
429
- const scheduled = installSchedule(codeburnPath, intervalHours);
430
- if (scheduled) {
431
- console.log(` ✓ ${schedulerName()} schedule installed (every ${intervalHours}h).`);
432
- }
433
- // Summary
434
- console.log('\n════════════════════════════════════════════════');
435
- console.log(' ✅ OTEL sync setup complete!');
436
- console.log('════════════════════════════════════════════════');
437
- console.log(`\n Endpoint: ${otelUrl}`);
438
- if (scheduled) {
439
- console.log(` Schedule: every ${intervalHours}h via ${schedulerName()}`);
440
- }
441
- else {
442
- console.log(` Schedule: ⚠️ not installed (run manually: codeburn sync push --since 7d)`);
443
- }
444
- console.log(` Backfill: last 30d pushed (dashboard shows last 14d)`);
445
- console.log(` Logs: ${join(LOG_DIR, 'otel-sync.log')}`);
446
- console.log(`\n Run \`prism-cli bootstrapper setup-otel-sync --status\` to check health.`);
447
- console.log(` Run \`prism-cli bootstrapper setup-otel-sync --remove\` to uninstall.\n`);
15
+ description: '[deprecated] Alias for "prism-cli enable codeburn"',
16
+ options: CODEBURN_OPTIONS,
17
+ /** Errors are handled once, in runEnableCodeburn, for this alias too. `hooks` is for tests. */
18
+ async action(opts, hooks) {
19
+ for (const l of DEPRECATION)
20
+ console.warn(l);
21
+ console.warn('');
22
+ await runEnableCodeburn(opts, hooks);
448
23
  },
449
24
  };
450
25
  //# sourceMappingURL=setup-otel-sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup-otel-sync.js","sourceRoot":"","sources":["../../../../src/commands/bootstrapper/setup-otel-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,SAAS,MAAM,CAAC,QAAgB,EAAE,YAAqB;IACrD,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/C,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,YAAY,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sBAAsB;AAEtB,MAAM,WAAW,GAAG,mBAAmB,CAAC;AACxC,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAC1C,MAAM,YAAY,GAAG,eAAe,CAAC;AACrC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAElD,qDAAqD;AACrD,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,qCAAqC;AAErC,SAAS,eAAe;IACtB,MAAM,MAAM,GAAG,QAAQ,EAAE,KAAK,OAAO;QACnC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;AAC7D,CAAC;AAED,gCAAgC;AAEhC,SAAS,mBAAmB;IAC1B,IAAI,CAAC,qBAAqB,EAAE;QAAE,OAAO,KAAK,CAAC;IAC3C,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AACtC,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,OAAO,CAAC,KAAa;IAC5B,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED,SAAS,oBAAoB,CAAC,YAAoB,EAAE,aAAqB;IACvE,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnG,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,OAAO,aAAa,QAAQ,CAAC;IAC9C,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3E,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,OAAO,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB;IAC1B,IAAI,CAAC,qBAAqB,EAAE;QAAE,OAAO;IACrC,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO;IACzB,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACrH,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,+BAA+B;AAE/B,SAAS,eAAe;IACtB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,WAAW,QAAQ,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,qBAAqB,CAAC,YAAoB,EAAE,aAAqB;IACxE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,CAAC,YAAY,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;SACxD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;SAChD,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,KAAK,GAAG;;;;;YAKJ,WAAW;;;EAGrB,WAAW;;;aAGA,aAAa,GAAG,IAAI;;YAErB,SAAS,CAAC,OAAO,CAAC;;YAElB,SAAS,CAAC,OAAO,CAAC;;;;SAIrB,CAAC;IACR,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAChC,wEAAwE;IACxE,yEAAyE;IACzE,iEAAiE;IACjE,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,oBAAoB;IAC3B,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;QACxC,UAAU,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,8BAA8B;AAE9B,SAAS,qBAAqB;IAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9E,OAAO,MAAM,CAAC,EAAE,CAAC;AACnB,CAAC;AAED,sEAAsE;AACtE,SAAS,kBAAkB;IACzB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAS,sBAAsB,CAAC,YAAoB,EAAE,aAAqB;IACzE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG;QACd,WAAW;QACX,uEAAuE;QACvE,IAAI,YAAY,KAAK,IAAI,QAAQ,OAAO,QAAQ;QAChD,EAAE;KACH,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEf,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,aAAa,CAAC,kBAAkB,EAAE,EAAE,OAAO,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,EAAE;QAC7B,SAAS;QACT,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC;QAC5B,KAAK,EAAE,kBAAkB,EAAE;QAC3B,IAAI;KACL,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACvF,CAAC;AAED,SAAS,qBAAqB;IAC5B,GAAG,CAAC,UAAU,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IACrC,IAAI,UAAU,CAAC,OAAO,CAAC;QAAE,UAAU,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,wCAAwC;AAExC,SAAS,cAAc;IACrB,QAAQ,QAAQ,EAAE,EAAE,CAAC;QACnB,KAAK,QAAQ,CAAC,CAAC,OAAO,oBAAoB,EAAE,CAAC;QAC7C,KAAK,OAAO,CAAC,CAAC,OAAO,qBAAqB,EAAE,CAAC;QAC7C,OAAO,CAAC,CAAC,OAAO,mBAAmB,EAAE,CAAC;IACxC,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,YAAoB,EAAE,aAAqB;IAClE,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,QAAQ,QAAQ,EAAE,EAAE,CAAC;QACnB,KAAK,QAAQ;YAAE,qBAAqB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAC/E,KAAK,OAAO;YAAE,sBAAsB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAC/E,OAAO,CAAC,CAAC,OAAO,oBAAoB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,SAAS,cAAc;IACrB,QAAQ,QAAQ,EAAE,EAAE,CAAC;QACnB,KAAK,QAAQ,CAAC,CAAC,OAAO,oBAAoB,EAAE,CAAC;QAC7C,KAAK,OAAO,CAAC,CAAC,OAAO,qBAAqB,EAAE,CAAC;QAC7C,OAAO,CAAC,CAAC,OAAO,mBAAmB,EAAE,CAAC;IACxC,CAAC;AACH,CAAC;AAED,SAAS,aAAa;IACpB,QAAQ,QAAQ,EAAE,EAAE,CAAC;QACnB,KAAK,QAAQ,CAAC,CAAC,OAAO,aAAa,CAAC;QACpC,KAAK,OAAO,CAAC,CAAC,OAAO,gBAAgB,CAAC;QACtC,OAAO,CAAC,CAAC,OAAO,SAAS,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,mBAAmB;AAEnB,SAAS,UAAU,CAAC,YAA2B;IAC7C,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEvC,sBAAsB;IACtB,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,uBAAuB,YAAY,EAAE,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,EAAE;YAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;IAED,mBAAmB;IACnB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IACvE,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,IAAI,cAAc,EAAE,CAAC,CAAC;QAClG,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC;IAED,mBAAmB;IACnB,IAAI,cAAc,EAAE,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,OAAO,aAAa,EAAE,kBAAkB,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,UAAU,aAAa,EAAE,iBAAiB,CAAC,CAAC;IAC1D,CAAC;IAED,YAAY;IACZ,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC/C,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,yEAAyE;QACzE,uEAAuE;QACvE,yEAAyE;QACzE,8BAA8B;QAC9B,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,uBAAuB,OAAO,IAAI,CAAC,CAAC;YAChD,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,iBAAiB;AAEjB,eAAe;IACb,WAAW,EAAE,2EAA2E;IACxF,OAAO,EAAE;QACP,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,8DAA8D,EAAE;QACrG,EAAE,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,sCAAsC,EAAE;QACpF,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,mCAAmC,EAAE;QACvE,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,0BAA0B,EAAE;KAC/D;IACD,KAAK,CAAC,MAAM,CAAC,IAA6E;QACxF,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;QAEvC,WAAW;QACX,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,UAAU,CAAC,YAAY,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QAED,WAAW;QACX,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,cAAc,EAAE,EAAE,CAAC;gBACrB,cAAc,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,SAAS,aAAa,EAAE,sBAAsB,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,UAAU,aAAa,EAAE,wCAAwC,CAAC,CAAC;YACjF,CAAC;YACD,OAAO;QACT,CAAC;QAED,uBAAuB;QACvB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;QAE/E,4BAA4B;QAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACnD,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;gBACxE,OAAO,CAAC,KAAK,CAAC,6CAA6C,GAAG,gCAAgC,CAAC,CAAC;gBAChG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;QACrC,CAAC;QAED,gCAAgC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,MAAM,MAAM,CAAC,8DAA8D,CAAC,CAAC;QACzG,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,wEAAwE;QACxE,4EAA4E;QAC5E,+DAA+D;QAC/D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;YAChC,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAChE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,WAAW,OAAO,+BAA+B,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;YACnF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,+DAA+D;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACvE,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;gBACzD,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;gBACjE,IAAI,WAAW,KAAK,OAAO,IAAI,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC/D,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;oBACvE,UAAU,GAAG,KAAK,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,wDAAwD,WAAW,EAAE,CAAC,CAAC;oBACnF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;oBACzE,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;wBACnC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;wBACjD,UAAU,GAAG,KAAK,CAAC;oBACrB,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,4BAA4B;YAC9B,CAAC;QACH,CAAC;QAED,sDAAsD;QACtD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,mCAAmC,GAAG,OAAO,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;YACtE,uEAAuE;YACvE,+CAA+C;YAC/C,IAAI,cAAc,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;gBAC7D,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,6EAA6E,CAAC,CAAC;gBAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,sFAAsF;QACtF,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC3C,IAAI,QAAQ,CAAC,MAAM;gBAAE,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,yCAAyC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACvF,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QAChF,CAAC;QAED,yBAAyB;QACzB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,cAAc,EAAE,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,SAAS,aAAa,EAAE,sCAAsC,CAAC,CAAC;YAC5E,cAAc,EAAE,CAAC;QACnB,CAAC;QAED,MAAM,SAAS,GAAG,eAAe,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAC/D,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,OAAO,aAAa,EAAE,8BAA8B,aAAa,KAAK,CAAC,CAAC;QACtF,CAAC;QAED,UAAU;QACV,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAC;QACzC,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,sBAAsB,aAAa,SAAS,aAAa,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;QAC5F,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;IAC3F,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"setup-otel-sync.js","sourceRoot":"","sources":["../../../../src/commands/bootstrapper/setup-otel-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAA4C,MAAM,uBAAuB,CAAC;AAEtH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,6FAA6F;IAC7F,2GAA2G;CAC5G,CAAC;AAEF,eAAe;IACb,WAAW,EAAE,oDAAoD;IACjE,OAAO,EAAE,gBAAgB;IACzB,+FAA+F;IAC/F,KAAK,CAAC,MAAM,CAAC,IAAqB,EAAE,KAAqB;QACvD,KAAK,MAAM,CAAC,IAAI,WAAW;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,MAAM,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;CACF,CAAC"}
@@ -0,0 +1,7 @@
1
+ /** Called by the pre-commit hook installed by `prism-cli enable codewatch`. */
2
+ declare const _default: {
3
+ description: string;
4
+ action(): never;
5
+ };
6
+ export default _default;
7
+ //# sourceMappingURL=pre-commit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pre-commit.d.ts","sourceRoot":"","sources":["../../../../src/commands/codewatch/pre-commit.ts"],"names":[],"mappings":"AAIA,+EAA+E;;;;;AAC/E,wBAoBE"}
@@ -0,0 +1,30 @@
1
+ import { run } from '../../utils/exec.js';
2
+ import { gitleaksInstallHint, runPreCommit } from '../../codewatch/gitleaks.js';
3
+ import { REASON_GITLEAKS_MISSING } from '../../codewatch/results.js';
4
+ /** Called by the pre-commit hook installed by `prism-cli enable codewatch`. */
5
+ export default {
6
+ description: 'pre-commit hook: gitleaks scan of staged changes (blocks on a finding; installed by enable codewatch)',
7
+ action() {
8
+ const top = run('git', ['rev-parse', '--show-toplevel']);
9
+ if (!top.ok)
10
+ process.exit(0);
11
+ const out = runPreCommit(top.stdout);
12
+ const r = out.result;
13
+ if (r.status === 'findings') {
14
+ console.error(`prism: gitleaks found ${r.findings.length} secret(s) in the staged changes. Commit blocked.`);
15
+ for (const f of r.findings.slice(0, 10))
16
+ console.error(` [${f.rule}] ${f.file}${f.line ? `:${f.line}` : ''}`);
17
+ console.error('prism: remove it (and rotate it if it is real), allowlist a false positive in .gitleaks.toml,');
18
+ console.error(' or bypass once with git commit --no-verify (recorded as skipped at push time).');
19
+ }
20
+ else if (r.status === 'skipped' && r.reason === REASON_GITLEAKS_MISSING) {
21
+ console.error('prism: WARNING: secret scanning is off -- gitleaks is not installed. This commit was NOT scanned.');
22
+ console.error(`prism: install gitleaks: ${gitleaksInstallHint()}`);
23
+ }
24
+ else if (r.status === 'error') {
25
+ console.error(`prism: ${r.reason}${out.exitCode ? ' Commit blocked; fix the scan or bypass with --no-verify.' : ''}`);
26
+ }
27
+ process.exit(out.exitCode);
28
+ },
29
+ };
30
+ //# sourceMappingURL=pre-commit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pre-commit.js","sourceRoot":"","sources":["../../../../src/commands/codewatch/pre-commit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE,+EAA+E;AAC/E,eAAe;IACb,WAAW,EAAE,uGAAuG;IACpH,MAAM;QACJ,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;QACrB,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,QAAQ,CAAC,MAAM,mDAAmD,CAAC,CAAC;YAC7G,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;gBAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/G,OAAO,CAAC,KAAK,CAAC,+FAA+F,CAAC,CAAC;YAC/G,OAAO,CAAC,KAAK,CAAC,uFAAuF,CAAC,CAAC;QACzG,CAAC;aAAM,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,uBAAuB,EAAE,CAAC;YAC1E,OAAO,CAAC,KAAK,CAAC,mGAAmG,CAAC,CAAC;YACnH,OAAO,CAAC,KAAK,CAAC,4BAA4B,mBAAmB,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;aAAM,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;CACF,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Called by the pre-push hook installed by `prism-cli enable codewatch`.
3
+ * Report only: exits 0 whatever happens.
4
+ */
5
+ declare const _default: {
6
+ description: string;
7
+ options: {
8
+ flags: string;
9
+ description: string;
10
+ }[];
11
+ action(opts: {
12
+ remote?: string;
13
+ }): never;
14
+ };
15
+ export default _default;
16
+ //# sourceMappingURL=pre-push.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pre-push.d.ts","sourceRoot":"","sources":["../../../../src/commands/codewatch/pre-push.ts"],"names":[],"mappings":"AAIA;;;GAGG;;;;;;;iBAIY;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;;AAHlC,wBAgBE"}
@@ -0,0 +1,32 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { run } from '../../utils/exec.js';
3
+ import { runPrePush } from '../../codewatch/prepush.js';
4
+ /**
5
+ * Called by the pre-push hook installed by `prism-cli enable codewatch`.
6
+ * Report only: exits 0 whatever happens.
7
+ */
8
+ export default {
9
+ description: 'pre-push hook: report-only code review of the branch diff (never blocks; installed by enable codewatch)',
10
+ options: [{ flags: '--remote <name>', description: 'Remote being pushed to (git passes it to the hook)' }],
11
+ action(opts) {
12
+ try {
13
+ const top = run('git', ['rev-parse', '--show-toplevel']);
14
+ if (top.ok) {
15
+ let stdin = '';
16
+ try {
17
+ stdin = readFileSync(0, 'utf8');
18
+ }
19
+ catch { /* no stdin */ }
20
+ runPrePush({ repoRoot: top.stdout, stdin, remote: opts.remote || null });
21
+ }
22
+ }
23
+ catch (e) {
24
+ try {
25
+ process.stderr.write(`prism: pre-push review failed (${e?.message || e}). Push continues.\n`);
26
+ }
27
+ catch { /* ignore */ }
28
+ }
29
+ process.exit(0);
30
+ },
31
+ };
32
+ //# sourceMappingURL=pre-push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pre-push.js","sourceRoot":"","sources":["../../../../src/commands/codewatch/pre-push.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD;;;GAGG;AACH,eAAe;IACb,WAAW,EAAE,yGAAyG;IACtH,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,oDAAoD,EAAE,CAAC;IAC1G,MAAM,CAAC,IAAyB;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;YACzD,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBACX,IAAI,KAAK,GAAG,EAAE,CAAC;gBACf,IAAI,CAAC;oBAAC,KAAK,GAAG,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;gBACjE,UAAU,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC;gBAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,EAAE,OAAO,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC/H,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;CACF,CAAC"}
@@ -0,0 +1,22 @@
1
+ /** Writes a scan report without the dashboard server. Same content as GET /report/<id>. */
2
+ declare const _default: {
3
+ description: string;
4
+ options: ({
5
+ flags: string;
6
+ description: string;
7
+ default?: undefined;
8
+ } | {
9
+ flags: string;
10
+ description: string;
11
+ default: string;
12
+ })[];
13
+ action(opts: {
14
+ repo?: string;
15
+ id?: string;
16
+ commit?: string;
17
+ format?: string;
18
+ output?: string;
19
+ }): undefined;
20
+ };
21
+ export default _default;
22
+ //# sourceMappingURL=report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../../src/commands/codewatch/report.ts"],"names":[],"mappings":"AAWA,2FAA2F;;;;;;;;;;;;iBAU5E;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;;AAThG,wBA8CE"}