@prism-d1/cli 1.0.67 → 1.0.68

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.
@@ -287,16 +287,21 @@ export class OtelCollectorConstruct extends Construct {
287
287
 
288
288
  // -------------------------------------------------------
289
289
  // Outputs — everything needed to run `codeburn sync setup <url>`
290
+ // Logical IDs are overridden so the deploy output keys match the
291
+ // README verbatim (construct nesting would otherwise mangle them to
292
+ // OtelCollectorOtelCollectorUrl<hash>).
290
293
  // -------------------------------------------------------
291
- new cdk.CfnOutput(this, 'OtelCollectorUrl', {
294
+ const urlOutput = new cdk.CfnOutput(this, 'OtelCollectorUrl', {
292
295
  value: this.httpApi.apiEndpoint,
293
296
  description: 'Run: codeburn sync setup <this URL>',
294
297
  });
298
+ urlOutput.overrideLogicalId('OtelCollectorUrl');
295
299
  if (this.userPool) {
296
- new cdk.CfnOutput(this, 'OtelUserPoolId', {
300
+ const poolOutput = new cdk.CfnOutput(this, 'OtelUserPoolId', {
297
301
  value: this.userPool.userPoolId,
298
302
  description: 'Create users: aws cognito-idp admin-create-user --user-pool-id <this> --username <email>',
299
303
  });
304
+ poolOutput.overrideLogicalId('OtelUserPoolId');
300
305
  }
301
306
  }
302
307
  }
@@ -245,7 +245,9 @@ export class DashboardStack extends cdk.Stack {
245
245
  new cloudwatch.MathExpression({
246
246
  expression: `SEARCH('{${METRIC_NAMESPACE},Tool} MetricName="AICostUSD"', 'Sum')`,
247
247
  usingMetrics: {},
248
- label: '',
248
+ // Dynamic label: each discovered series is legend-labeled with
249
+ // its Tool dimension value (e.g. "claude-code").
250
+ label: "${PROP('Dim.Tool')}",
249
251
  period: DEFAULT_PERIOD,
250
252
  }),
251
253
  ],
@@ -260,7 +262,9 @@ export class DashboardStack extends cdk.Stack {
260
262
  new cloudwatch.MathExpression({
261
263
  expression: `SEARCH('{${METRIC_NAMESPACE},Model} MetricName="AICostUSD"', 'Sum')`,
262
264
  usingMetrics: {},
263
- label: '',
265
+ // Dynamic label: each discovered series is legend-labeled with
266
+ // its Model dimension value (e.g. "claude-sonnet-4-5-20250929").
267
+ label: "${PROP('Dim.Model')}",
264
268
  period: DEFAULT_PERIOD,
265
269
  }),
266
270
  ],
@@ -17,6 +17,7 @@
17
17
  },
18
18
  "devDependencies": {
19
19
  "@types/node": "^20.17.0",
20
+ "ts-node": "^10.9.2",
20
21
  "typescript": "~5.6.0",
21
22
  "aws-cdk": "^2.170.0"
22
23
  }
@@ -0,0 +1,15 @@
1
+ declare const _default: {
2
+ description: string;
3
+ options: {
4
+ flags: string;
5
+ description: string;
6
+ }[];
7
+ action(opts: {
8
+ url?: string;
9
+ interval?: string;
10
+ status?: boolean;
11
+ remove?: boolean;
12
+ }): Promise<void>;
13
+ };
14
+ export default _default;
15
+ //# sourceMappingURL=setup-otel-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-otel-sync.d.ts","sourceRoot":"","sources":["../../../../src/commands/bootstrapper/setup-otel-sync.ts"],"names":[],"mappings":";;;;;;iBAgPqB;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE;;AAR5F,wBAiIE"}
@@ -0,0 +1,332 @@
1
+ import { execSync } from 'node:child_process';
2
+ import { createInterface } from 'node:readline';
3
+ import { platform, homedir } from 'node:os';
4
+ import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'node:fs';
5
+ import { join } from 'node:path';
6
+ function prompt(question, defaultValue) {
7
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
8
+ const suffix = defaultValue ? ` [${defaultValue}]` : '';
9
+ return new Promise((resolve) => {
10
+ rl.question(`${question}${suffix}: `, (answer) => {
11
+ rl.close();
12
+ resolve(answer.trim() || defaultValue || '');
13
+ });
14
+ });
15
+ }
16
+ function run(cmd) {
17
+ try {
18
+ const stdout = execSync(cmd, { encoding: 'utf8', stdio: ['pipe', 'pipe', 'pipe'] }).trim();
19
+ return { ok: true, stdout, stderr: '' };
20
+ }
21
+ catch (err) {
22
+ return { ok: false, stdout: '', stderr: (err.stderr || err.message || '').trim() };
23
+ }
24
+ }
25
+ // ---- Constants ----
26
+ const CRON_MARKER = '# prism-otel-sync';
27
+ const PLIST_LABEL = 'com.prism.otel-sync';
28
+ const SCHTASK_NAME = 'PrismOtelSync';
29
+ const LOG_DIR = join(homedir(), '.prism', 'logs');
30
+ // ---- Scheduler helpers per OS ----
31
+ function getCodeburnPath() {
32
+ const which = platform() === 'win32' ? 'where codeburn' : 'which codeburn';
33
+ const result = run(which);
34
+ return result.ok ? result.stdout.split('\n')[0] : null;
35
+ }
36
+ function buildSyncCommand(codeburnPath, since) {
37
+ return `${codeburnPath} sync push --since ${since}`;
38
+ }
39
+ // ---- Linux: user crontab ----
40
+ function linuxScheduleExists() {
41
+ const result = run('crontab -l');
42
+ return result.ok && result.stdout.includes(CRON_MARKER);
43
+ }
44
+ function linuxInstallSchedule(codeburnPath, intervalHours) {
45
+ const existing = run('crontab -l');
46
+ const lines = existing.ok ? existing.stdout.split('\n').filter(l => !l.includes(CRON_MARKER)) : [];
47
+ const logFile = join(LOG_DIR, 'otel-sync.log');
48
+ const cronExpr = `0 */${intervalHours} * * *`;
49
+ lines.push(`${CRON_MARKER}`);
50
+ lines.push(`${cronExpr} ${buildSyncCommand(codeburnPath, '7d')} >> ${logFile} 2>&1`);
51
+ const tmpFile = '/tmp/prism-crontab.tmp';
52
+ writeFileSync(tmpFile, lines.join('\n') + '\n');
53
+ const result = run(`crontab ${tmpFile}`);
54
+ if (!result.ok)
55
+ throw new Error(`Failed to install crontab: ${result.stderr}`);
56
+ }
57
+ function linuxRemoveSchedule() {
58
+ const existing = run('crontab -l');
59
+ if (!existing.ok)
60
+ return;
61
+ const lines = existing.stdout.split('\n').filter(l => !l.includes(CRON_MARKER) && !l.includes('codeburn sync push'));
62
+ const tmpFile = '/tmp/prism-crontab.tmp';
63
+ writeFileSync(tmpFile, lines.join('\n') + '\n');
64
+ run(`crontab ${tmpFile}`);
65
+ }
66
+ // ---- macOS: LaunchAgent ----
67
+ function darwinPlistPath() {
68
+ return join(homedir(), 'Library', 'LaunchAgents', `${PLIST_LABEL}.plist`);
69
+ }
70
+ function darwinScheduleExists() {
71
+ return existsSync(darwinPlistPath());
72
+ }
73
+ function darwinInstallSchedule(codeburnPath, intervalHours) {
74
+ const logFile = join(LOG_DIR, 'otel-sync.log');
75
+ const plist = `<?xml version="1.0" encoding="UTF-8"?>
76
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
77
+ <plist version="1.0">
78
+ <dict>
79
+ <key>Label</key>
80
+ <string>${PLIST_LABEL}</string>
81
+ <key>ProgramArguments</key>
82
+ <array>
83
+ <string>${codeburnPath}</string>
84
+ <string>sync</string>
85
+ <string>push</string>
86
+ <string>--since</string>
87
+ <string>7d</string>
88
+ </array>
89
+ <key>StartInterval</key>
90
+ <integer>${intervalHours * 3600}</integer>
91
+ <key>StandardOutPath</key>
92
+ <string>${logFile}</string>
93
+ <key>StandardErrorPath</key>
94
+ <string>${logFile}</string>
95
+ <key>RunAtLoad</key>
96
+ <true/>
97
+ </dict>
98
+ </plist>`;
99
+ const plistPath = darwinPlistPath();
100
+ mkdirSync(join(homedir(), 'Library', 'LaunchAgents'), { recursive: true });
101
+ writeFileSync(plistPath, plist);
102
+ run(`launchctl unload ${plistPath} 2>/dev/null`);
103
+ const result = run(`launchctl load ${plistPath}`);
104
+ if (!result.ok)
105
+ throw new Error(`Failed to load LaunchAgent: ${result.stderr}`);
106
+ }
107
+ function darwinRemoveSchedule() {
108
+ const plistPath = darwinPlistPath();
109
+ if (existsSync(plistPath)) {
110
+ run(`launchctl unload ${plistPath}`);
111
+ run(`rm ${plistPath}`);
112
+ }
113
+ }
114
+ // ---- Windows: schtasks ----
115
+ function windowsScheduleExists() {
116
+ const result = run(`schtasks /query /tn ${SCHTASK_NAME} /fo CSV`);
117
+ return result.ok;
118
+ }
119
+ function windowsInstallSchedule(codeburnPath, intervalHours) {
120
+ const logFile = join(LOG_DIR, 'otel-sync.log');
121
+ const cmd = `${codeburnPath} sync push --since 7d >> "${logFile}" 2>&1`;
122
+ const result = run(`schtasks /create /tn ${SCHTASK_NAME} /sc hourly /mo ${intervalHours} ` +
123
+ `/tr "cmd /c ${cmd.replace(/"/g, '\\"')}" /f`);
124
+ if (!result.ok)
125
+ throw new Error(`Failed to create scheduled task: ${result.stderr}`);
126
+ }
127
+ function windowsRemoveSchedule() {
128
+ run(`schtasks /delete /tn ${SCHTASK_NAME} /f`);
129
+ }
130
+ // ---- Unified scheduler interface ----
131
+ function scheduleExists() {
132
+ switch (platform()) {
133
+ case 'darwin': return darwinScheduleExists();
134
+ case 'win32': return windowsScheduleExists();
135
+ default: return linuxScheduleExists();
136
+ }
137
+ }
138
+ function installSchedule(codeburnPath, intervalHours) {
139
+ mkdirSync(LOG_DIR, { recursive: true });
140
+ switch (platform()) {
141
+ case 'darwin': return darwinInstallSchedule(codeburnPath, intervalHours);
142
+ case 'win32': return windowsInstallSchedule(codeburnPath, intervalHours);
143
+ default: return linuxInstallSchedule(codeburnPath, intervalHours);
144
+ }
145
+ }
146
+ function removeSchedule() {
147
+ switch (platform()) {
148
+ case 'darwin': return darwinRemoveSchedule();
149
+ case 'win32': return windowsRemoveSchedule();
150
+ default: return linuxRemoveSchedule();
151
+ }
152
+ }
153
+ function schedulerName() {
154
+ switch (platform()) {
155
+ case 'darwin': return 'LaunchAgent';
156
+ case 'win32': return 'Scheduled Task';
157
+ default: return 'crontab';
158
+ }
159
+ }
160
+ // ---- Status ----
161
+ function showStatus(codeburnPath) {
162
+ console.log('\n📊 OTEL Sync Status\n');
163
+ // Codeburn installed?
164
+ if (codeburnPath) {
165
+ console.log(` ✓ codeburn found: ${codeburnPath}`);
166
+ const ver = run(`${codeburnPath} --version`);
167
+ if (ver.ok)
168
+ console.log(` version: ${ver.stdout}`);
169
+ }
170
+ else {
171
+ console.log(' ✗ codeburn not found in PATH');
172
+ }
173
+ // Sync configured?
174
+ const configPath = join(homedir(), '.config', 'codeburn', 'sync.json');
175
+ if (existsSync(configPath)) {
176
+ try {
177
+ const cfg = JSON.parse(readFileSync(configPath, 'utf8'));
178
+ console.log(` ✓ sync configured: ${cfg.baseUrl || cfg.endpoint || cfg.url || '(configured)'}`);
179
+ }
180
+ catch {
181
+ console.log(` ✓ sync config exists: ${configPath}`);
182
+ }
183
+ }
184
+ else {
185
+ console.log(' ✗ sync not configured (run setup first)');
186
+ }
187
+ // Schedule exists?
188
+ if (scheduleExists()) {
189
+ console.log(` ✓ ${schedulerName()} schedule active`);
190
+ }
191
+ else {
192
+ console.log(` ✗ no ${schedulerName()} schedule found`);
193
+ }
194
+ // Last log?
195
+ const logFile = join(LOG_DIR, 'otel-sync.log');
196
+ if (existsSync(logFile)) {
197
+ const lastLines = run(`tail -5 "${logFile}"`);
198
+ if (lastLines.ok && lastLines.stdout) {
199
+ console.log(` Last sync output (${logFile}):`);
200
+ for (const line of lastLines.stdout.split('\n')) {
201
+ console.log(` ${line}`);
202
+ }
203
+ }
204
+ }
205
+ console.log('');
206
+ }
207
+ // ---- Main ----
208
+ export default {
209
+ description: 'Set up automated codeburn OTEL sync (pushes AI usage telemetry every 12h)',
210
+ options: [
211
+ { flags: '--url <url>', description: 'OTEL collector URL (from CDK deploy output OtelCollectorUrl)' },
212
+ { flags: '--interval <hours>', description: 'Sync interval in hours (default: 12)' },
213
+ { flags: '--status', description: 'Show current sync schedule status' },
214
+ { flags: '--remove', description: 'Remove the sync schedule' },
215
+ ],
216
+ async action(opts) {
217
+ const codeburnPath = getCodeburnPath();
218
+ // --status
219
+ if (opts.status) {
220
+ showStatus(codeburnPath);
221
+ return;
222
+ }
223
+ // --remove
224
+ if (opts.remove) {
225
+ if (scheduleExists()) {
226
+ removeSchedule();
227
+ console.log(`\n ✓ ${schedulerName()} schedule removed.\n`);
228
+ }
229
+ else {
230
+ console.log(`\n No ${schedulerName()} schedule found — nothing to remove.\n`);
231
+ }
232
+ return;
233
+ }
234
+ // ---- Setup flow ----
235
+ console.log('\n🔄 OTEL Sync Setup\n');
236
+ console.log('This will configure automated codeburn telemetry sync to your PRISM');
237
+ console.log('OTEL collector. Runs every 12 hours to keep dashboards fresh.\n');
238
+ // 1. Check codeburn version
239
+ if (!codeburnPath) {
240
+ console.error('Error: codeburn not found. Install with: npm install -g codeburn');
241
+ process.exit(1);
242
+ }
243
+ const verResult = run(`${codeburnPath} --version`);
244
+ if (verResult.ok) {
245
+ const ver = verResult.stdout.replace(/[^0-9.]/g, '');
246
+ const parts = ver.split('.').map(Number);
247
+ if (parts[0] === 0 && parts[1] < 9 || (parts[1] === 9 && parts[2] < 16)) {
248
+ console.error(`Error: codeburn >= 0.9.16 required (found ${ver}). Run: npm update -g codeburn`);
249
+ process.exit(1);
250
+ }
251
+ console.log(` ✓ codeburn ${ver}`);
252
+ }
253
+ // 2. Get the OTEL collector URL
254
+ const otelUrl = opts.url || await prompt('OTEL collector URL (from CDK deploy output OtelCollectorUrl)');
255
+ if (!otelUrl) {
256
+ console.error('Error: OTEL collector URL is required.');
257
+ process.exit(1);
258
+ }
259
+ // 3. Check if codeburn sync is already configured for this URL
260
+ const configPath = join(homedir(), '.config', 'codeburn', 'sync.json');
261
+ let needsSetup = true;
262
+ if (existsSync(configPath)) {
263
+ try {
264
+ const cfg = JSON.parse(readFileSync(configPath, 'utf8'));
265
+ const existingUrl = cfg.baseUrl || cfg.endpoint || cfg.url || '';
266
+ if (existingUrl === otelUrl || existingUrl.startsWith(otelUrl)) {
267
+ console.log(` ✓ codeburn sync already configured for this endpoint.`);
268
+ needsSetup = false;
269
+ }
270
+ else {
271
+ console.log(` ⚠ codeburn sync configured for different endpoint: ${existingUrl}`);
272
+ const override = await prompt('Reconfigure for the new URL? (y/N)', 'N');
273
+ if (override.toLowerCase() !== 'y') {
274
+ console.log(' Keeping existing configuration.');
275
+ needsSetup = false;
276
+ }
277
+ }
278
+ }
279
+ catch {
280
+ // Corrupt config — re-setup
281
+ }
282
+ }
283
+ // 4. Run codeburn sync setup (opens browser for OIDC)
284
+ if (needsSetup) {
285
+ console.log('\n Running: codeburn sync setup ' + otelUrl);
286
+ console.log(' (This will open a browser for OIDC authentication)\n');
287
+ try {
288
+ execSync(`${codeburnPath} sync setup ${otelUrl}`, { stdio: 'inherit' });
289
+ console.log('\n ✓ codeburn sync configured.');
290
+ }
291
+ catch (err) {
292
+ console.error(`\n ✗ codeburn sync setup failed. Ensure Cognito user exists and try again.`);
293
+ process.exit(1);
294
+ }
295
+ }
296
+ // 5. Initial backfill push (30d — server drops >14d from CloudWatch, keeps in DDB/S3)
297
+ console.log('\n Pushing initial backfill (last 30 days of telemetry)...');
298
+ const backfill = run(`${codeburnPath} sync push --since 30d`);
299
+ if (backfill.ok) {
300
+ console.log(' ✓ Backfill push complete.');
301
+ if (backfill.stdout)
302
+ console.log(` ${backfill.stdout.split('\n').slice(-1)[0]}`);
303
+ }
304
+ else {
305
+ console.log(` ⚠ Backfill push failed (non-fatal): ${backfill.stderr.split('\n')[0]}`);
306
+ console.log(' The schedule will retry. Check ~/.prism/logs/otel-sync.log');
307
+ }
308
+ // 6. Install OS schedule
309
+ const intervalHours = opts.interval ? parseInt(opts.interval, 10) : 12;
310
+ if (isNaN(intervalHours) || intervalHours < 1) {
311
+ console.error('Error: --interval must be a positive integer (hours).');
312
+ process.exit(1);
313
+ }
314
+ if (scheduleExists()) {
315
+ console.log(`\n ✓ ${schedulerName()} schedule already exists — updating.`);
316
+ removeSchedule();
317
+ }
318
+ installSchedule(codeburnPath, intervalHours);
319
+ console.log(` ✓ ${schedulerName()} schedule installed (every ${intervalHours}h).`);
320
+ // Summary
321
+ console.log('\n════════════════════════════════════════════════');
322
+ console.log(' ✅ OTEL sync setup complete!');
323
+ console.log('════════════════════════════════════════════════');
324
+ console.log(`\n Endpoint: ${otelUrl}`);
325
+ console.log(` Schedule: every ${intervalHours}h via ${schedulerName()}`);
326
+ console.log(` Backfill: last 30d pushed (dashboard shows last 14d)`);
327
+ console.log(` Logs: ${join(LOG_DIR, 'otel-sync.log')}`);
328
+ console.log(`\n Run \`prism-cli bootstrapper setup-otel-sync --status\` to check health.`);
329
+ console.log(` Run \`prism-cli bootstrapper setup-otel-sync --remove\` to uninstall.\n`);
330
+ },
331
+ };
332
+ //# sourceMappingURL=setup-otel-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-otel-sync.js","sourceRoot":"","sources":["../../../../src/commands/bootstrapper/setup-otel-sync.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prism-d1/cli",
3
- "version": "1.0.67",
3
+ "version": "1.0.68",
4
4
  "description": "PRISM D1 Velocity CLI — AI development lifecycle assessment tool",
5
5
  "author": "andklee",
6
6
  "engines": {