@prism-d1/cli 1.2.0 → 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 (127) hide show
  1. package/dist/assets/github-workflows/prism-eval-gate-kiro.yml +2 -2
  2. package/dist/assets/infra/bin/app.ts +61 -37
  3. package/dist/assets/infra/lib/constructs/security-agent-construct.ts +35 -30
  4. package/dist/assets/infra/lib/metrics-pipeline-stack.ts +2 -110
  5. package/dist/assets/infra/lib/security-agent-resources.ts +136 -0
  6. package/dist/assets/infra/lib/security-agent-stack.ts +69 -0
  7. package/dist/assets/pentest-cdk/bin/app.ts +12 -0
  8. package/dist/assets/pentest-cdk/cdk.json +7 -0
  9. package/dist/assets/pentest-cdk/lib/pentest-target-stack.ts +206 -0
  10. package/dist/assets/pentest-cdk/package.json +18 -0
  11. package/dist/assets/pentest-cdk/tsconfig.json +12 -0
  12. package/dist/src/codewatch/results.d.ts +124 -4
  13. package/dist/src/codewatch/results.d.ts.map +1 -1
  14. package/dist/src/codewatch/results.js +8 -2
  15. package/dist/src/codewatch/results.js.map +1 -1
  16. package/dist/src/commands/_top/version.d.ts +62 -0
  17. package/dist/src/commands/_top/version.d.ts.map +1 -0
  18. package/dist/src/commands/_top/version.js +175 -0
  19. package/dist/src/commands/_top/version.js.map +1 -0
  20. package/dist/src/commands/bootstrapper/setup-otel-sync.d.ts +12 -6
  21. package/dist/src/commands/bootstrapper/setup-otel-sync.d.ts.map +1 -1
  22. package/dist/src/commands/bootstrapper/setup-otel-sync.js +18 -409
  23. package/dist/src/commands/bootstrapper/setup-otel-sync.js.map +1 -1
  24. package/dist/src/commands/enable/codeburn.d.ts +59 -0
  25. package/dist/src/commands/enable/codeburn.d.ts.map +1 -0
  26. package/dist/src/commands/enable/codeburn.js +531 -0
  27. package/dist/src/commands/enable/codeburn.js.map +1 -0
  28. package/dist/src/commands/enable/security.d.ts +41 -0
  29. package/dist/src/commands/enable/security.d.ts.map +1 -0
  30. package/dist/src/commands/enable/security.js +130 -0
  31. package/dist/src/commands/enable/security.js.map +1 -0
  32. package/dist/src/commands/export/otel.d.ts +31 -0
  33. package/dist/src/commands/export/otel.d.ts.map +1 -0
  34. package/dist/src/commands/export/otel.js +52 -0
  35. package/dist/src/commands/export/otel.js.map +1 -0
  36. package/dist/src/commands/security/code-review.d.ts +22 -0
  37. package/dist/src/commands/security/code-review.d.ts.map +1 -0
  38. package/dist/src/commands/security/code-review.js +43 -0
  39. package/dist/src/commands/security/code-review.js.map +1 -0
  40. package/dist/src/commands/security/findings.d.ts +15 -0
  41. package/dist/src/commands/security/findings.d.ts.map +1 -0
  42. package/dist/src/commands/security/findings.js +31 -0
  43. package/dist/src/commands/security/findings.js.map +1 -0
  44. package/dist/src/commands/security/pentest.d.ts +18 -0
  45. package/dist/src/commands/security/pentest.d.ts.map +1 -0
  46. package/dist/src/commands/security/pentest.js +32 -0
  47. package/dist/src/commands/security/pentest.js.map +1 -0
  48. package/dist/src/commands/security/threat-model.d.ts +16 -0
  49. package/dist/src/commands/security/threat-model.d.ts.map +1 -0
  50. package/dist/src/commands/security/threat-model.js +24 -0
  51. package/dist/src/commands/security/threat-model.js.map +1 -0
  52. package/dist/src/commands/security/threats.d.ts +12 -0
  53. package/dist/src/commands/security/threats.d.ts.map +1 -0
  54. package/dist/src/commands/security/threats.js +23 -0
  55. package/dist/src/commands/security/threats.js.map +1 -0
  56. package/dist/src/commands/securityagent/setup.d.ts +19 -5
  57. package/dist/src/commands/securityagent/setup.d.ts.map +1 -1
  58. package/dist/src/commands/securityagent/setup.js +25 -189
  59. package/dist/src/commands/securityagent/setup.js.map +1 -1
  60. package/dist/src/dashboard/codewatch.d.ts.map +1 -1
  61. package/dist/src/dashboard/codewatch.js +2 -1
  62. package/dist/src/dashboard/codewatch.js.map +1 -1
  63. package/dist/src/dashboard/page.d.ts.map +1 -1
  64. package/dist/src/dashboard/page.js +159 -4
  65. package/dist/src/dashboard/page.js.map +1 -1
  66. package/dist/src/dashboard/payload.d.ts +8 -5
  67. package/dist/src/dashboard/payload.d.ts.map +1 -1
  68. package/dist/src/dashboard/payload.js +5 -2
  69. package/dist/src/dashboard/payload.js.map +1 -1
  70. package/dist/src/dashboard/security.d.ts +130 -0
  71. package/dist/src/dashboard/security.d.ts.map +1 -0
  72. package/dist/src/dashboard/security.js +144 -0
  73. package/dist/src/dashboard/security.js.map +1 -0
  74. package/dist/src/dashboard/setup.d.ts +15 -0
  75. package/dist/src/dashboard/setup.d.ts.map +1 -1
  76. package/dist/src/dashboard/setup.js +20 -3
  77. package/dist/src/dashboard/setup.js.map +1 -1
  78. package/dist/src/dashboard/usage.js +1 -1
  79. package/dist/src/dashboard/usage.js.map +1 -1
  80. package/dist/src/index.d.ts.map +1 -1
  81. package/dist/src/index.js +9 -2
  82. package/dist/src/index.js.map +1 -1
  83. package/dist/src/security/cfn-diff.d.ts +57 -0
  84. package/dist/src/security/cfn-diff.d.ts.map +1 -0
  85. package/dist/src/security/cfn-diff.js +112 -0
  86. package/dist/src/security/cfn-diff.js.map +1 -0
  87. package/dist/src/security/errors.d.ts +45 -0
  88. package/dist/src/security/errors.d.ts.map +1 -0
  89. package/dist/src/security/errors.js +116 -0
  90. package/dist/src/security/errors.js.map +1 -0
  91. package/dist/src/security/marker.d.ts +46 -0
  92. package/dist/src/security/marker.d.ts.map +1 -0
  93. package/dist/src/security/marker.js +120 -0
  94. package/dist/src/security/marker.js.map +1 -0
  95. package/dist/src/security/pentest-dockerfile.d.ts +8 -0
  96. package/dist/src/security/pentest-dockerfile.d.ts.map +1 -0
  97. package/dist/src/security/pentest-dockerfile.js +163 -0
  98. package/dist/src/security/pentest-dockerfile.js.map +1 -0
  99. package/dist/src/security/pentest.d.ts +233 -0
  100. package/dist/src/security/pentest.d.ts.map +1 -0
  101. package/dist/src/security/pentest.js +1057 -0
  102. package/dist/src/security/pentest.js.map +1 -0
  103. package/dist/src/security/repo.d.ts +25 -0
  104. package/dist/src/security/repo.d.ts.map +1 -0
  105. package/dist/src/security/repo.js +38 -0
  106. package/dist/src/security/repo.js.map +1 -0
  107. package/dist/src/security/review.d.ts +202 -0
  108. package/dist/src/security/review.d.ts.map +1 -0
  109. package/dist/src/security/review.js +706 -0
  110. package/dist/src/security/review.js.map +1 -0
  111. package/dist/src/security/setup.d.ts +193 -0
  112. package/dist/src/security/setup.d.ts.map +1 -0
  113. package/dist/src/security/setup.js +728 -0
  114. package/dist/src/security/setup.js.map +1 -0
  115. package/dist/src/security/threat-model.d.ts +133 -0
  116. package/dist/src/security/threat-model.d.ts.map +1 -0
  117. package/dist/src/security/threat-model.js +653 -0
  118. package/dist/src/security/threat-model.js.map +1 -0
  119. package/dist/src/utils/exec.d.ts +6 -0
  120. package/dist/src/utils/exec.d.ts.map +1 -1
  121. package/dist/src/utils/exec.js +12 -1
  122. package/dist/src/utils/exec.js.map +1 -1
  123. package/dist/src/utils/otel-sync-schedule.d.ts +19 -0
  124. package/dist/src/utils/otel-sync-schedule.d.ts.map +1 -1
  125. package/dist/src/utils/otel-sync-schedule.js +24 -2
  126. package/dist/src/utils/otel-sync-schedule.js.map +1 -1
  127. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"setup-otel-sync.js","sourceRoot":"","sources":["../../../../src/commands/bootstrapper/setup-otel-sync.ts"],"names":[],"mappings":"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"}
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,59 @@
1
+ import { type RunResult } from '../../utils/exec.js';
2
+ /** Exact install command, printed before it runs and in every hint. */
3
+ export declare const INSTALL_CMD: string;
4
+ export declare function getCodeburnPath(): string | null;
5
+ export interface CodeburnDeps {
6
+ run: (file: string, args: string[]) => RunResult;
7
+ runInteractive: (file: string, args: string[]) => boolean;
8
+ findCodeburn: () => string | null;
9
+ home: string;
10
+ isTTY: boolean;
11
+ ask: (question: string) => Promise<string>;
12
+ log: (line?: string) => void;
13
+ error: (line: string) => void;
14
+ scheduleExists: () => boolean;
15
+ schedulerName: () => string;
16
+ installSchedule: (codeburnPath: string, intervalHours: number) => boolean;
17
+ removeSchedule: () => void;
18
+ }
19
+ export declare function defaultDeps(): CodeburnDeps;
20
+ /** The sync endpoint codeburn has stored, or null when sync is not set up. '' when the file is unreadable. */
21
+ export declare function configuredSyncUrl(home: string): string | null;
22
+ /** True when `version` (e.g. "0.9.24") is at least MIN_CODEBURN. */
23
+ export declare function codeburnVersionOk(version: string): boolean;
24
+ export interface CodeburnOptions {
25
+ url?: string;
26
+ interval?: string;
27
+ status?: boolean;
28
+ remove?: boolean;
29
+ yes?: boolean;
30
+ dryRun?: boolean;
31
+ }
32
+ /**
33
+ * The setup flow. Returns the exit code; every change is skipped on --dry-run,
34
+ * which prints each step it would take with the exact command.
35
+ */
36
+ export declare function enableCodeburn(opts: CodeburnOptions, d: CodeburnDeps): Promise<number>;
37
+ export declare const CODEBURN_OPTIONS: {
38
+ flags: string;
39
+ description: string;
40
+ }[];
41
+ /** Test seams: everything else uses the real runners, console and process. */
42
+ export interface CodeburnHooks {
43
+ deps?: () => CodeburnDeps;
44
+ error?: (line: string) => void;
45
+ exit?: (code: number) => void;
46
+ env?: NodeJS.ProcessEnv;
47
+ }
48
+ /** The one entry point for `enable codeburn` and its `bootstrapper setup-otel-sync` alias. */
49
+ export declare function runEnableCodeburn(opts: CodeburnOptions, hooks?: CodeburnHooks): Promise<void>;
50
+ declare const _default: {
51
+ description: string;
52
+ options: {
53
+ flags: string;
54
+ description: string;
55
+ }[];
56
+ action: typeof runEnableCodeburn;
57
+ };
58
+ export default _default;
59
+ //# sourceMappingURL=codeburn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeburn.d.ts","sourceRoot":"","sources":["../../../../src/commands/enable/codeburn.ts"],"names":[],"mappings":"AAaA,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAc1E,uEAAuE;AACvE,eAAO,MAAM,WAAW,QAA2C,CAAC;AAUpE,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAK/C;AAyLD,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,SAAS,CAAC;IACjD,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;IAC1D,YAAY,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,cAAc,EAAE,MAAM,OAAO,CAAC;IAC9B,aAAa,EAAE,MAAM,MAAM,CAAC;IAC5B,eAAe,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1E,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,wBAAgB,WAAW,IAAI,YAAY,CAkB1C;AAED,8GAA8G;AAC9G,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS7D;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAM1D;AA4DD,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA6CD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CA6J5F;AAED,eAAO,MAAM,gBAAgB;;;GAO5B,CAAC;AAEF,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,YAAY,CAAC;IAC1B,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED,8FAA8F;AAC9F,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvG;;;;;;;;;AAED,wBAIE"}
@@ -0,0 +1,531 @@
1
+ /**
2
+ * `prism-cli enable codeburn`: install codeburn if missing, connect its sync to
3
+ * the PRISM OTEL collector, and schedule `codeburn sync push`.
4
+ *
5
+ * This is the former `bootstrapper setup-otel-sync` (now a deprecated alias),
6
+ * with three additions: it installs codeburn after a confirmation, `--dry-run`
7
+ * prints the plan, and a re-run reports what is already in place instead of
8
+ * prompting again.
9
+ */
10
+ import { createInterface } from 'node:readline';
11
+ import { platform, homedir } from 'node:os';
12
+ import { existsSync, mkdirSync, writeFileSync, readFileSync, unlinkSync } from 'node:fs';
13
+ import { join } from 'node:path';
14
+ import { run, runInteractive } from '../../utils/exec.js';
15
+ import { withPrivateTemp } from '../../utils/tempfile.js';
16
+ import { CRON_MARKER, PLIST_LABEL, SCHTASK_NAME, otelLogDir, otelLogFile, codeburnSyncConfigPath, linuxCrontabAvailable, darwinPlistPath, scheduleExists, schedulerName, CODEBURN_INSTALL_ARGS, ENABLE_CODEBURN_CMD, SYNC_SINCE, syncArgs, } from '../../utils/otel-sync-schedule.js';
17
+ import { runGuarded } from './security.js';
18
+ // ---- Constants ----
19
+ // Marker, label and task name are shared with the dashboard's setup check.
20
+ const LOG_DIR = otelLogDir();
21
+ /** Exact install command, printed before it runs and in every hint. */
22
+ export const INSTALL_CMD = `npm ${CODEBURN_INSTALL_ARGS.join(' ')}`;
23
+ /** Oldest codeburn with `sync push --attribution`. */
24
+ const MIN_CODEBURN = [0, 9, 16];
25
+ /** Window of the one-time backfill on first setup (the server keeps >14d in DDB/S3). */
26
+ const BACKFILL_SINCE = '30d';
27
+ // ---- Scheduler helpers per OS ----
28
+ export function getCodeburnPath() {
29
+ const result = platform() === 'win32'
30
+ ? run('where', ['codeburn'])
31
+ : run('which', ['codeburn']);
32
+ return result.ok ? result.stdout.split('\n')[0].trim() : null;
33
+ }
34
+ // ---- Linux: user crontab ----
35
+ /**
36
+ * Single-quotes a value for the crontab line.
37
+ *
38
+ * A crontab entry is interpreted by /bin/sh, so unlike our argv call sites
39
+ * this one genuinely does need quoting -- the shell is the scheduler's, not
40
+ * ours, and we cannot pass it argv. Wrapping in single quotes and encoding any
41
+ * embedded single quote as '\'' is the only form with no escape sequences to
42
+ * get wrong. Paths under a home directory containing a space would otherwise
43
+ * split into two arguments.
44
+ */
45
+ function shQuote(value) {
46
+ return `'${value.replace(/'/g, `'\\''`)}'`;
47
+ }
48
+ function linuxInstallSchedule(codeburnPath, intervalHours) {
49
+ if (!linuxCrontabAvailable()) {
50
+ console.warn('\n⚠️ crontab not found — skipping automatic schedule installation.');
51
+ console.warn(' Run "codeburn sync push --since 7d" manually, or install cronie:');
52
+ console.warn(' sudo yum install cronie -y # then re-run this command\n');
53
+ return false;
54
+ }
55
+ const existing = run('crontab', ['-l']);
56
+ const lines = existing.ok ? existing.stdout.split('\n').filter(l => !l.includes(CRON_MARKER)) : [];
57
+ const logFile = join(LOG_DIR, 'otel-sync.log');
58
+ const cronExpr = `0 */${intervalHours} * * *`;
59
+ const command = [shQuote(codeburnPath), ...syncArgs(SYNC_SINCE)].join(' ');
60
+ lines.push(`${CRON_MARKER}`);
61
+ lines.push(`${cronExpr} ${command} >> ${shQuote(logFile)} 2>&1`);
62
+ const result = withPrivateTemp('crontab', lines.join('\n') + '\n', f => run('crontab', [f]));
63
+ if (!result.ok)
64
+ throw new Error(`Failed to install crontab: ${result.stderr}`);
65
+ return true;
66
+ }
67
+ function linuxRemoveSchedule() {
68
+ if (!linuxCrontabAvailable())
69
+ return;
70
+ const existing = run('crontab', ['-l']);
71
+ if (!existing.ok)
72
+ return;
73
+ const lines = existing.stdout.split('\n').filter(l => !l.includes(CRON_MARKER) && !l.includes('codeburn sync push'));
74
+ withPrivateTemp('crontab', lines.join('\n') + '\n', f => run('crontab', [f]));
75
+ }
76
+ // ---- macOS: LaunchAgent ----
77
+ /**
78
+ * Escapes a value for use inside a plist <string> element.
79
+ *
80
+ * The plist is generated XML, so a path containing `&` or `<` -- both legal in
81
+ * macOS filenames -- would otherwise produce a malformed document that
82
+ * launchctl refuses to load, reported only as a generic load failure.
83
+ */
84
+ function xmlEscape(value) {
85
+ return value
86
+ .replace(/&/g, '&amp;')
87
+ .replace(/</g, '&lt;')
88
+ .replace(/>/g, '&gt;');
89
+ }
90
+ function darwinInstallSchedule(codeburnPath, intervalHours) {
91
+ const logFile = join(LOG_DIR, 'otel-sync.log');
92
+ const argElements = [codeburnPath, ...syncArgs(SYNC_SINCE)]
93
+ .map(a => ` <string>${xmlEscape(a)}</string>`)
94
+ .join('\n');
95
+ const plist = `<?xml version="1.0" encoding="UTF-8"?>
96
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
97
+ <plist version="1.0">
98
+ <dict>
99
+ <key>Label</key>
100
+ <string>${PLIST_LABEL}</string>
101
+ <key>ProgramArguments</key>
102
+ <array>
103
+ ${argElements}
104
+ </array>
105
+ <key>StartInterval</key>
106
+ <integer>${intervalHours * 3600}</integer>
107
+ <key>StandardOutPath</key>
108
+ <string>${xmlEscape(logFile)}</string>
109
+ <key>StandardErrorPath</key>
110
+ <string>${xmlEscape(logFile)}</string>
111
+ <key>RunAtLoad</key>
112
+ <true/>
113
+ </dict>
114
+ </plist>`;
115
+ const plistPath = darwinPlistPath();
116
+ mkdirSync(join(homedir(), 'Library', 'LaunchAgents'), { recursive: true });
117
+ writeFileSync(plistPath, plist);
118
+ // Unload first so a reinstall replaces rather than conflicts. A missing
119
+ // agent makes this fail, which is expected and ignored -- run() captures
120
+ // stderr rather than leaking it, so no shell redirect is needed.
121
+ run('launchctl', ['unload', plistPath]);
122
+ const result = run('launchctl', ['load', plistPath]);
123
+ if (!result.ok)
124
+ throw new Error(`Failed to load LaunchAgent: ${result.stderr}`);
125
+ }
126
+ function darwinRemoveSchedule() {
127
+ const plistPath = darwinPlistPath();
128
+ if (existsSync(plistPath)) {
129
+ run('launchctl', ['unload', plistPath]);
130
+ unlinkSync(plistPath);
131
+ }
132
+ }
133
+ // ---- Windows: schtasks ----
134
+ /** Path of the generated batch wrapper the scheduled task invokes. */
135
+ function windowsWrapperPath() {
136
+ return join(homedir(), '.prism', 'otel-sync.cmd');
137
+ }
138
+ /**
139
+ * Installs the Windows scheduled task via a generated .cmd wrapper.
140
+ *
141
+ * The previous version nested the whole command inside schtasks' /tr argument:
142
+ *
143
+ * /tr "cmd /c <codeburnPath> sync push ... >> "<logFile>" 2>&1"
144
+ *
145
+ * and tried to make that legal with cmd.replace(/"/g, '\\"'). That is three
146
+ * quoting layers deep -- our shell, schtasks' own /tr parser, then cmd.exe --
147
+ * and the replacement handled exactly one metacharacter of one of them. It did
148
+ * not escape backslashes, which is not a corner case on Windows: every path
149
+ * here is backslash-separated, so a trailing separator turns the closing \"
150
+ * into an escaped quote and unbalances the argument. cmd.exe also does not
151
+ * treat \" the way that replacement assumes, so the escaping was aimed at the
152
+ * wrong grammar to begin with.
153
+ *
154
+ * Writing the command to a file removes every one of those layers. The task
155
+ * runs one fixed argument -- the wrapper path -- and the redirection lives in
156
+ * a batch file where it needs no escaping at all. This also sidesteps the
157
+ * documented 261-character limit on /tr, which the inlined form could exceed
158
+ * with a long install path.
159
+ */
160
+ function windowsInstallSchedule(codeburnPath, intervalHours) {
161
+ const logFile = join(LOG_DIR, 'otel-sync.log');
162
+ const args = syncArgs(SYNC_SINCE).join(' ');
163
+ const wrapper = [
164
+ '@echo off',
165
+ 'REM Generated by prism-cli enable codeburn. Do not edit.',
166
+ `"${codeburnPath}" ${args} >> "${logFile}" 2>&1`,
167
+ '',
168
+ ].join('\r\n');
169
+ mkdirSync(join(homedir(), '.prism'), { recursive: true });
170
+ writeFileSync(windowsWrapperPath(), wrapper);
171
+ const result = run('schtasks', [
172
+ '/create',
173
+ '/tn', SCHTASK_NAME,
174
+ '/sc', 'hourly',
175
+ '/mo', String(intervalHours),
176
+ '/tr', windowsWrapperPath(),
177
+ '/f',
178
+ ]);
179
+ if (!result.ok)
180
+ throw new Error(`Failed to create scheduled task: ${result.stderr}`);
181
+ }
182
+ function windowsRemoveSchedule() {
183
+ run('schtasks', ['/delete', '/tn', SCHTASK_NAME, '/f']);
184
+ const wrapper = windowsWrapperPath();
185
+ if (existsSync(wrapper))
186
+ unlinkSync(wrapper);
187
+ }
188
+ // ---- Unified scheduler interface ----
189
+ function installSchedule(codeburnPath, intervalHours) {
190
+ mkdirSync(LOG_DIR, { recursive: true });
191
+ switch (platform()) {
192
+ case 'darwin':
193
+ darwinInstallSchedule(codeburnPath, intervalHours);
194
+ return true;
195
+ case 'win32':
196
+ windowsInstallSchedule(codeburnPath, intervalHours);
197
+ return true;
198
+ default: return linuxInstallSchedule(codeburnPath, intervalHours);
199
+ }
200
+ }
201
+ function removeSchedule() {
202
+ switch (platform()) {
203
+ case 'darwin': return darwinRemoveSchedule();
204
+ case 'win32': return windowsRemoveSchedule();
205
+ default: return linuxRemoveSchedule();
206
+ }
207
+ }
208
+ export function defaultDeps() {
209
+ return {
210
+ run,
211
+ runInteractive,
212
+ findCodeburn: getCodeburnPath,
213
+ home: homedir(),
214
+ isTTY: !!(process.stdin.isTTY && process.stdout.isTTY),
215
+ ask: (q) => new Promise((done) => {
216
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
217
+ rl.question(q, (a) => { rl.close(); done(a.trim()); });
218
+ }),
219
+ log: (line = '') => console.log(line),
220
+ error: (line) => console.error(line),
221
+ scheduleExists,
222
+ schedulerName,
223
+ installSchedule,
224
+ removeSchedule,
225
+ };
226
+ }
227
+ /** The sync endpoint codeburn has stored, or null when sync is not set up. '' when the file is unreadable. */
228
+ export function configuredSyncUrl(home) {
229
+ const configPath = codeburnSyncConfigPath(home);
230
+ if (!existsSync(configPath))
231
+ return null;
232
+ try {
233
+ const cfg = JSON.parse(readFileSync(configPath, 'utf8'));
234
+ return String(cfg.baseUrl || cfg.endpoint || cfg.url || '');
235
+ }
236
+ catch {
237
+ return '';
238
+ }
239
+ }
240
+ /** True when `version` (e.g. "0.9.24") is at least MIN_CODEBURN. */
241
+ export function codeburnVersionOk(version) {
242
+ const parts = version.split('.').map((n) => parseInt(n, 10) || 0);
243
+ for (let i = 0; i < MIN_CODEBURN.length; i++) {
244
+ if ((parts[i] ?? 0) !== MIN_CODEBURN[i])
245
+ return (parts[i] ?? 0) > MIN_CODEBURN[i];
246
+ }
247
+ return true;
248
+ }
249
+ function isHttpUrl(value) {
250
+ try {
251
+ const p = new URL(value).protocol;
252
+ return p === 'https:' || p === 'http:';
253
+ }
254
+ catch {
255
+ return false;
256
+ }
257
+ }
258
+ const yes = (answer) => ['y', 'yes'].includes(answer.trim().toLowerCase());
259
+ const cmdLine = (args) => `codeburn ${args.join(' ')}`;
260
+ /** Prints `codeburn sync status`, indented. Non-fatal: a failure is one warning line. */
261
+ function reportSyncStatus(cb, d) {
262
+ const r = d.run(cb, ['sync', 'status']);
263
+ const text = (r.ok ? r.stdout : r.stderr).split('\n').filter(Boolean);
264
+ d.log(r.ok ? ' codeburn sync status:' : ' ⚠ codeburn sync status failed:');
265
+ for (const line of text.slice(0, 20))
266
+ d.log(` ${line}`);
267
+ }
268
+ // ---- Status ----
269
+ function showStatus(d) {
270
+ const codeburnPath = d.findCodeburn();
271
+ d.log('\n📊 OTEL Sync Status\n');
272
+ if (codeburnPath) {
273
+ d.log(` ✓ codeburn found: ${codeburnPath}`);
274
+ const ver = d.run(codeburnPath, ['--version']);
275
+ if (ver.ok)
276
+ d.log(` version: ${ver.stdout}`);
277
+ }
278
+ else {
279
+ d.log(` ✗ codeburn not found in PATH (run ${ENABLE_CODEBURN_CMD})`);
280
+ }
281
+ const url = configuredSyncUrl(d.home);
282
+ if (url === null)
283
+ d.log(` ✗ sync not configured (run ${ENABLE_CODEBURN_CMD})`);
284
+ else if (url)
285
+ d.log(` ✓ sync configured: ${url}`);
286
+ else
287
+ d.log(` ✓ sync config exists: ${codeburnSyncConfigPath(d.home)}`);
288
+ if (d.scheduleExists())
289
+ d.log(` ✓ ${d.schedulerName()} schedule active`);
290
+ else
291
+ d.log(` ✗ no ${d.schedulerName()} schedule found`);
292
+ const logFile = otelLogFile(d.home);
293
+ if (existsSync(logFile)) {
294
+ // Read in process rather than shelling out to tail, which does not exist
295
+ // on Windows -- the platform this command explicitly supports.
296
+ const tail = readFileSync(logFile, 'utf8').split('\n').filter(Boolean).slice(-5);
297
+ if (tail.length) {
298
+ d.log(` Last sync output (${logFile}):`);
299
+ for (const line of tail)
300
+ d.log(` ${line}`);
301
+ }
302
+ }
303
+ if (codeburnPath)
304
+ reportSyncStatus(codeburnPath, d);
305
+ d.log('');
306
+ }
307
+ /**
308
+ * Step 1: codeburn on PATH, installing it after a confirmation when missing.
309
+ * Returns its path, `null` on a dry run without it, or an exit code on refusal.
310
+ */
311
+ async function ensureCodeburn(opts, d) {
312
+ const found = d.findCodeburn();
313
+ if (found) {
314
+ d.log(` ✓ codeburn installed: ${found}`);
315
+ return found;
316
+ }
317
+ d.log(' ✗ codeburn is not installed.');
318
+ if (opts.dryRun) {
319
+ d.log(` → would run: ${INSTALL_CMD}`);
320
+ return null;
321
+ }
322
+ if (!opts.yes) {
323
+ if (!d.isTTY) {
324
+ d.error(`Error: codeburn is not installed and there is no terminal to confirm the install.`);
325
+ d.error(` Run "${INSTALL_CMD}" yourself, or re-run with --yes.`);
326
+ return 1;
327
+ }
328
+ if (!yes(await d.ask(` Install it now with "${INSTALL_CMD}"? [y/N] `))) {
329
+ d.error(`Not installed. Run "${INSTALL_CMD}" yourself, then re-run ${ENABLE_CODEBURN_CMD}.`);
330
+ return 1;
331
+ }
332
+ }
333
+ d.log(` Running: ${INSTALL_CMD}`);
334
+ // shortcut: argv `npm` does not resolve npm.cmd on Windows, so the install
335
+ // fails there and the hint below asks the user to run it; add a shell-free
336
+ // npm.cmd path if Windows users hit this often.
337
+ if (!d.runInteractive('npm', CODEBURN_INSTALL_ARGS)) {
338
+ d.error(`Error: "${INSTALL_CMD}" failed. Run it yourself, then re-run ${ENABLE_CODEBURN_CMD}.`);
339
+ return 1;
340
+ }
341
+ const installed = d.findCodeburn();
342
+ if (!installed) {
343
+ d.error('Error: codeburn was installed but is not on PATH. Add the directory from "npm prefix -g" (its bin/) to PATH, then re-run.');
344
+ return 1;
345
+ }
346
+ d.log(` ✓ codeburn installed: ${installed}`);
347
+ return installed;
348
+ }
349
+ /**
350
+ * The setup flow. Returns the exit code; every change is skipped on --dry-run,
351
+ * which prints each step it would take with the exact command.
352
+ */
353
+ export async function enableCodeburn(opts, d) {
354
+ if (opts.status) {
355
+ showStatus(d);
356
+ return 0;
357
+ }
358
+ if (opts.remove) {
359
+ if (!d.scheduleExists()) {
360
+ d.log(`\n No ${d.schedulerName()} schedule found — nothing to remove.\n`);
361
+ }
362
+ else if (opts.dryRun) {
363
+ d.log(`\n → would remove the ${d.schedulerName()} schedule.\n`);
364
+ }
365
+ else {
366
+ d.removeSchedule();
367
+ d.log(`\n ✓ ${d.schedulerName()} schedule removed.\n`);
368
+ }
369
+ return 0;
370
+ }
371
+ const dry = !!opts.dryRun;
372
+ const intervalHours = opts.interval ? parseInt(opts.interval, 10) : 12;
373
+ if (isNaN(intervalHours) || intervalHours < 1) {
374
+ d.error('Error: --interval must be a positive integer (hours).');
375
+ return 1;
376
+ }
377
+ d.log(dry ? '\n🔄 enable codeburn — dry run, nothing is changed\n' : '\n🔄 enable codeburn\n');
378
+ // 1. codeburn installed, and new enough for --attribution
379
+ const ensured = await ensureCodeburn(opts, d);
380
+ if (typeof ensured === 'number')
381
+ return ensured;
382
+ const cb = ensured;
383
+ if (cb) {
384
+ const ver = d.run(cb, ['--version']);
385
+ if (ver.ok) {
386
+ const v = ver.stdout.replace(/[^0-9.]/g, '');
387
+ if (!codeburnVersionOk(v)) {
388
+ d.error(`Error: codeburn >= ${MIN_CODEBURN.join('.')} required (found ${v}). Run: npm update -g codeburn`);
389
+ return 1;
390
+ }
391
+ d.log(` ✓ codeburn ${v}`);
392
+ }
393
+ }
394
+ const bin = cb || 'codeburn';
395
+ // 2. The OTEL collector URL: --url, else the one codeburn already syncs to, else ask.
396
+ const existingUrl = configuredSyncUrl(d.home);
397
+ let otelUrl = opts.url || existingUrl || '';
398
+ if (!otelUrl) {
399
+ if (dry) {
400
+ d.log(' → would ask for the OTEL collector URL (pass --url <OtelCollectorUrl> to skip)');
401
+ }
402
+ else {
403
+ otelUrl = await d.ask(' OTEL collector URL (from CDK deploy output OtelCollectorUrl): ');
404
+ if (!otelUrl) {
405
+ d.error('Error: OTEL collector URL is required. Pass --url <OtelCollectorUrl>.');
406
+ return 1;
407
+ }
408
+ }
409
+ }
410
+ // Reject anything that is not a real http(s) URL before it is persisted
411
+ // into codeburn's sync config, where a malformed value surfaces later as an
412
+ // opaque push failure from the scheduled job rather than here.
413
+ if (otelUrl && !isHttpUrl(otelUrl)) {
414
+ d.error(`Error: "${otelUrl}" is not a valid http(s) URL.`);
415
+ d.error(' Expected the OtelCollectorUrl value from the CDK stack outputs.');
416
+ return 1;
417
+ }
418
+ const shownUrl = otelUrl || '<OtelCollectorUrl>';
419
+ // 3. codeburn sync setup, unless already configured for this endpoint.
420
+ let needsSetup = true;
421
+ if (existingUrl && otelUrl && (existingUrl === otelUrl || existingUrl.startsWith(otelUrl))) {
422
+ d.log(` ✓ codeburn sync already configured for ${existingUrl}`);
423
+ needsSetup = false;
424
+ }
425
+ else if (existingUrl && otelUrl) {
426
+ d.log(` ⚠ codeburn sync configured for a different endpoint: ${existingUrl}`);
427
+ if (dry) {
428
+ d.log(' → would ask whether to reconfigure it for the new URL (--yes reconfigures)');
429
+ }
430
+ else if (!opts.yes && !yes(await d.ask(' Reconfigure for the new URL? [y/N] '))) {
431
+ d.log(' Keeping existing configuration.');
432
+ needsSetup = false;
433
+ }
434
+ }
435
+ const setupArgs = ['sync', 'setup', shownUrl];
436
+ if (needsSetup) {
437
+ if (dry) {
438
+ d.log(` → would run: ${cmdLine(setupArgs)} (opens a browser to sign in)`);
439
+ }
440
+ else {
441
+ d.log(`\n Running: ${cmdLine(setupArgs)}`);
442
+ d.log(' (This will open a browser for OIDC authentication)\n');
443
+ // argv, not a command string: otelUrl comes from the prompt or a flag.
444
+ if (!d.runInteractive(bin, setupArgs)) {
445
+ d.error('\n ✗ codeburn sync setup failed. Ensure your Cognito user exists and try again.');
446
+ return 1;
447
+ }
448
+ d.log('\n ✓ codeburn sync configured.');
449
+ }
450
+ }
451
+ // 4. One-time backfill, only when sync or the schedule is new: the push is
452
+ // incremental, so a re-run of an installed setup has nothing to backfill.
453
+ const hadSchedule = d.scheduleExists();
454
+ const sched = d.schedulerName();
455
+ if (needsSetup || !hadSchedule) {
456
+ const backfillArgs = syncArgs(BACKFILL_SINCE);
457
+ if (dry) {
458
+ d.log(` → would run: ${cmdLine(backfillArgs)} (initial backfill)`);
459
+ }
460
+ else {
461
+ d.log(`\n Pushing initial backfill (last ${BACKFILL_SINCE} of telemetry)...`);
462
+ const backfill = d.run(bin, backfillArgs);
463
+ if (backfill.ok) {
464
+ d.log(' ✓ Backfill push complete.');
465
+ if (backfill.stdout)
466
+ d.log(` ${backfill.stdout.split('\n').slice(-1)[0]}`);
467
+ }
468
+ else {
469
+ d.log(` ⚠ Backfill push failed (non-fatal): ${backfill.stderr.split('\n')[0]}`);
470
+ d.log(` The schedule will retry. Check ${otelLogFile(d.home)}`);
471
+ }
472
+ }
473
+ }
474
+ else {
475
+ d.log(' ✓ sync and schedule already in place; no backfill needed.');
476
+ }
477
+ // 5. OS schedule. An existing one is reinstalled so its command and interval
478
+ // are current (an older Windows entry lacked --attribution).
479
+ const pushCmd = cmdLine(syncArgs(SYNC_SINCE));
480
+ let scheduled = true;
481
+ if (dry) {
482
+ d.log(` → would ${hadSchedule ? 'refresh the existing' : 'install a'} ${sched} schedule: ${pushCmd}, every ${intervalHours}h`);
483
+ }
484
+ else {
485
+ if (hadSchedule) {
486
+ d.log(` ✓ ${sched} schedule already installed — refreshing it.`);
487
+ d.removeSchedule();
488
+ }
489
+ scheduled = d.installSchedule(bin, intervalHours);
490
+ if (scheduled)
491
+ d.log(` ✓ ${sched} schedule installed (every ${intervalHours}h): ${pushCmd}`);
492
+ }
493
+ // 6. What codeburn itself reports.
494
+ if (dry) {
495
+ d.log(' → would run: codeburn sync status');
496
+ d.log('\n Dry run complete. Re-run without --dry-run to apply.\n');
497
+ return 0;
498
+ }
499
+ d.log('');
500
+ reportSyncStatus(bin, d);
501
+ d.log('\n════════════════════════════════════════════════');
502
+ d.log(needsSetup || !hadSchedule ? ' ✅ codeburn sync is set up.' : ' ✅ codeburn sync was already set up; nothing new to do.');
503
+ d.log('════════════════════════════════════════════════');
504
+ d.log(`\n Endpoint: ${otelUrl}`);
505
+ d.log(scheduled
506
+ ? ` Schedule: every ${intervalHours}h via ${sched}`
507
+ : ` Schedule: ⚠ not installed (run manually: prism-cli export otel)`);
508
+ d.log(` Logs: ${otelLogFile(d.home)}`);
509
+ d.log(`\n Run \`${ENABLE_CODEBURN_CMD} --status\` to check health.`);
510
+ d.log(` Run \`${ENABLE_CODEBURN_CMD} --remove\` to uninstall the schedule.`);
511
+ d.log(' Run `prism-cli export otel` to push now.\n');
512
+ return 0;
513
+ }
514
+ export const CODEBURN_OPTIONS = [
515
+ { flags: '--url <url>', description: 'OTEL collector URL (from CDK deploy output OtelCollectorUrl; default: the URL codeburn already syncs to)' },
516
+ { flags: '--interval <hours>', description: 'Sync interval in hours (default: 12)' },
517
+ { flags: '--yes', description: `Install codeburn (${INSTALL_CMD}) and reconfigure a different endpoint without a prompt` },
518
+ { flags: '--dry-run', description: 'Print the plan with the exact commands; change nothing' },
519
+ { flags: '--status', description: 'Show codeburn, sync and schedule status' },
520
+ { flags: '--remove', description: 'Remove the sync schedule' },
521
+ ];
522
+ /** The one entry point for `enable codeburn` and its `bootstrapper setup-otel-sync` alias. */
523
+ export async function runEnableCodeburn(opts, hooks = {}) {
524
+ await runGuarded(() => enableCodeburn(opts, (hooks.deps ?? defaultDeps)()), hooks);
525
+ }
526
+ export default {
527
+ description: 'Install codeburn and schedule its OTEL sync (pushes AI usage and commit attribution every 12h)',
528
+ options: CODEBURN_OPTIONS,
529
+ action: runEnableCodeburn,
530
+ };
531
+ //# sourceMappingURL=codeburn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeburn.js","sourceRoot":"","sources":["../../../../src/commands/enable/codeburn.ts"],"names":[],"mappings":"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"}