@prism-d1/cli 1.4.3 → 1.6.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 (58) hide show
  1. package/dist/assets/github-workflows/prism-eval-gate-kiro.yml +22 -2
  2. package/dist/assets/gitlab-workflows/prism-eval-gate.yml +22 -1
  3. package/dist/src/aws/check.js +1 -1
  4. package/dist/src/aws/team.d.ts +39 -0
  5. package/dist/src/aws/team.d.ts.map +1 -0
  6. package/dist/src/aws/team.js +172 -0
  7. package/dist/src/aws/team.js.map +1 -0
  8. package/dist/src/commands/enable/codeburn.d.ts +27 -3
  9. package/dist/src/commands/enable/codeburn.d.ts.map +1 -1
  10. package/dist/src/commands/enable/codeburn.js +317 -40
  11. package/dist/src/commands/enable/codeburn.js.map +1 -1
  12. package/dist/src/commands/team/add-developer.d.ts +17 -0
  13. package/dist/src/commands/team/add-developer.d.ts.map +1 -0
  14. package/dist/src/commands/team/add-developer.js +22 -0
  15. package/dist/src/commands/team/add-developer.js.map +1 -0
  16. package/dist/src/commands/team/info.d.ts +16 -0
  17. package/dist/src/commands/team/info.d.ts.map +1 -0
  18. package/dist/src/commands/team/info.js +30 -0
  19. package/dist/src/commands/team/info.js.map +1 -0
  20. package/dist/src/dashboard/codewatch.d.ts +3 -1
  21. package/dist/src/dashboard/codewatch.d.ts.map +1 -1
  22. package/dist/src/dashboard/codewatch.js +1 -0
  23. package/dist/src/dashboard/codewatch.js.map +1 -1
  24. package/dist/src/dashboard/page.d.ts.map +1 -1
  25. package/dist/src/dashboard/page.js +203 -55
  26. package/dist/src/dashboard/page.js.map +1 -1
  27. package/dist/src/dashboard/payload.d.ts +31 -4
  28. package/dist/src/dashboard/payload.d.ts.map +1 -1
  29. package/dist/src/dashboard/payload.js +43 -24
  30. package/dist/src/dashboard/payload.js.map +1 -1
  31. package/dist/src/dashboard/repos.d.ts +6 -0
  32. package/dist/src/dashboard/repos.d.ts.map +1 -1
  33. package/dist/src/dashboard/repos.js +24 -0
  34. package/dist/src/dashboard/repos.js.map +1 -1
  35. package/dist/src/dashboard/setup.d.ts +21 -5
  36. package/dist/src/dashboard/setup.d.ts.map +1 -1
  37. package/dist/src/dashboard/setup.js +47 -17
  38. package/dist/src/dashboard/setup.js.map +1 -1
  39. package/dist/src/dashboard/summary.d.ts +45 -0
  40. package/dist/src/dashboard/summary.d.ts.map +1 -0
  41. package/dist/src/dashboard/summary.js +20 -0
  42. package/dist/src/dashboard/summary.js.map +1 -0
  43. package/dist/src/dashboard/usage.d.ts +16 -0
  44. package/dist/src/dashboard/usage.d.ts.map +1 -1
  45. package/dist/src/dashboard/usage.js +31 -3
  46. package/dist/src/dashboard/usage.js.map +1 -1
  47. package/dist/src/index.d.ts.map +1 -1
  48. package/dist/src/index.js +8 -0
  49. package/dist/src/index.js.map +1 -1
  50. package/dist/src/utils/otel-sync-schedule.d.ts +18 -1
  51. package/dist/src/utils/otel-sync-schedule.d.ts.map +1 -1
  52. package/dist/src/utils/otel-sync-schedule.js +44 -3
  53. package/dist/src/utils/otel-sync-schedule.js.map +1 -1
  54. package/dist/src/utils/sync-mode.d.ts +43 -0
  55. package/dist/src/utils/sync-mode.d.ts.map +1 -0
  56. package/dist/src/utils/sync-mode.js +84 -0
  57. package/dist/src/utils/sync-mode.js.map +1 -0
  58. package/package.json +1 -1
@@ -0,0 +1,45 @@
1
+ /**
2
+ * The dashboard's one-glance summary: the latest codewatch review, spend
3
+ * today and this month, and the setup warnings. One function, so the page,
4
+ * `--json` and any later status line print the same object.
5
+ */
6
+ import type { CodewatchPanel } from './codewatch.js';
7
+ import type { CheckItem, CodewatchSetup } from './setup.js';
8
+ import type { UsagePanel } from './usage.js';
9
+ export interface DashboardSummary {
10
+ /** The newest pre-push review in any repo, whatever its verdict; null when there is none. */
11
+ review: {
12
+ repo: string;
13
+ path: string;
14
+ at: string;
15
+ /** ok (clean), findings, error or skipped. */
16
+ status: string;
17
+ reason: string | null;
18
+ high: number;
19
+ medium: number;
20
+ low: number;
21
+ reviewer: string;
22
+ /** Result id, for the report link. */
23
+ id: string;
24
+ } | null;
25
+ spend: {
26
+ status: UsagePanel['status'];
27
+ currency: string;
28
+ today: number | null;
29
+ month: number | null;
30
+ message: string | null;
31
+ };
32
+ /** Machine checks that are missing or warn (as in the checklist), then repos whose own hooks bypass codewatch. */
33
+ warnings: {
34
+ count: number;
35
+ first: string | null;
36
+ };
37
+ }
38
+ export interface SummaryRepo {
39
+ path: string;
40
+ label: string;
41
+ codewatch: Pick<CodewatchPanel, 'scans'>;
42
+ setup: Pick<CodewatchSetup, 'status' | 'detail'>;
43
+ }
44
+ export declare function buildSummary(repos: SummaryRepo[], usage: UsagePanel, machine: CheckItem[]): DashboardSummary;
45
+ //# sourceMappingURL=summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../src/dashboard/summary.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,gBAAgB;IAC/B,6FAA6F;IAC7F,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,8CAA8C;QAC9C,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,sCAAsC;QACtC,EAAE,EAAE,MAAM,CAAC;KACZ,GAAG,IAAI,CAAC;IACT,KAAK,EAAE;QAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC9H,kHAAkH;IAClH,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CACnD;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACzC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,QAAQ,CAAC,CAAC;CAClD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,gBAAgB,CAkB5G"}
@@ -0,0 +1,20 @@
1
+ export function buildSummary(repos, usage, machine) {
2
+ let review = null;
3
+ for (const r of repos) {
4
+ const s = r.codewatch.scans[0]; // newest first
5
+ if (s && (!review || s.started_at > review.at)) {
6
+ review = { repo: r.label, path: r.path, at: s.started_at, status: s.status, reason: s.reason, high: s.high, medium: s.medium, low: s.low, reviewer: s.tool, id: s.id };
7
+ }
8
+ }
9
+ const warnings = [
10
+ // Same as the checklist: every missing or warn item counts; ok and info never do. A hint, when there is one, is the text.
11
+ ...machine.filter((i) => i.status === 'missing' || i.status === 'warn').map((i) => i.help ? i.help.text : `${i.label}: ${i.detail}`),
12
+ ...repos.filter((r) => r.setup.status === 'warn').map((r) => `${r.label}: ${r.setup.detail}`),
13
+ ];
14
+ return {
15
+ review,
16
+ spend: { status: usage.status, currency: usage.currency, today: usage.today?.cost ?? null, month: usage.month?.cost ?? null, message: usage.message },
17
+ warnings: { count: warnings.length, first: warnings[0] ?? null },
18
+ };
19
+ }
20
+ //# sourceMappingURL=summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../src/dashboard/summary.ts"],"names":[],"mappings":"AAqCA,MAAM,UAAU,YAAY,CAAC,KAAoB,EAAE,KAAiB,EAAE,OAAoB;IACxF,IAAI,MAAM,GAA+B,IAAI,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe;QAC/C,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YAC/C,MAAM,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QACzK,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG;QACf,0HAA0H;QAC1H,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QACpI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;KAC9F,CAAC;IACF,OAAO;QACL,MAAM;QACN,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;QACrJ,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;KACjE,CAAC;AACJ,CAAC"}
@@ -25,6 +25,12 @@ export interface UsagePanel {
25
25
  cost: number;
26
26
  sessions: number;
27
27
  }[];
28
+ /** Every project this month (symlinks resolved), for matching spend to repos. */
29
+ projects: {
30
+ path: string;
31
+ cost: number;
32
+ sessions: number;
33
+ }[];
28
34
  generated: string | null;
29
35
  /** Shown as a note, never a link: codeburn web is a CLI command. */
30
36
  fullView: string;
@@ -35,6 +41,16 @@ export declare function realCodeburnExport(binary: string): CodeburnExport;
35
41
  /** Local calendar date, YYYY-MM-DD. */
36
42
  export declare function localDate(d: Date): string;
37
43
  export declare function emptyUsage(status: UsagePanel['status'], message: string): UsagePanel;
44
+ export interface RepoSpend {
45
+ cost: number;
46
+ sessions: number;
47
+ }
48
+ /**
49
+ * This month's spend per repo path. Each codeburn project is counted once, for
50
+ * the deepest repo whose path is the project's path or contains it; projects
51
+ * outside every repo are not counted.
52
+ */
53
+ export declare function spendByRepo(projects: UsagePanel['projects'], repoPaths: string[]): Map<string, RepoSpend>;
38
54
  export declare function collectUsage(opts?: {
39
55
  now?: Date;
40
56
  exporter?: CodeburnExport;
@@ -1 +1 @@
1
- {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../src/dashboard/usage.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,KAAK,IAAI,CAAC;AAGvB,MAAM,WAAW,MAAM;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AACzE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,IAAI,GAAG,eAAe,GAAG,SAAS,GAAG,OAAO,CAAC;IACrD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,CAAC,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IACtD,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3D,wFAAwF;IACxF,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qGAAqG;AACrG,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAE9D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAWjE;AAQD,uCAAuC;AACvC,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAGzC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,CAEpF;AAED,wBAAsB,YAAY,CAAC,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CA4C9H"}
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../../src/dashboard/usage.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,KAAK,IAAI,CAAC;AAGvB,MAAM,WAAW,MAAM;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AACzE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,IAAI,GAAG,eAAe,GAAG,SAAS,GAAG,OAAO,CAAC;IACrD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,CAAC,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IACtD,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3D,wFAAwF;IACxF,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9E,iFAAiF;IACjF,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qGAAqG;AACrG,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAE9D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAWjE;AAQD,uCAAuC;AACvC,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAGzC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,CAEpF;AAMD,MAAM,WAAW,SAAS;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAE7D;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAUzG;AAED,wBAAsB,YAAY,CAAC,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CA+C9H"}
@@ -7,9 +7,9 @@
7
7
  * codeburn's own charts are not rebuilt; the panel points at `codeburn web`.
8
8
  */
9
9
  import { execFile } from 'node:child_process';
10
- import { mkdtempSync, readFileSync, rmSync } from 'node:fs';
10
+ import { mkdtempSync, readFileSync, realpathSync, rmSync } from 'node:fs';
11
11
  import { tmpdir } from 'node:os';
12
- import { basename, join } from 'node:path';
12
+ import { basename, join, sep } from 'node:path';
13
13
  import { promisify } from 'node:util';
14
14
  import { findOnPath } from '../utils/tool-check.js';
15
15
  const execFileP = promisify(execFile);
@@ -38,7 +38,32 @@ export function localDate(d) {
38
38
  return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())}`;
39
39
  }
40
40
  export function emptyUsage(status, message) {
41
- return { status, message, currency: 'USD', today: null, month: null, topModels: [], topProjects: [], generated: null, fullView: 'codeburn web' };
41
+ return { status, message, currency: 'USD', today: null, month: null, topModels: [], topProjects: [], projects: [], generated: null, fullView: 'codeburn web' };
42
+ }
43
+ function real(p) {
44
+ try {
45
+ return realpathSync(p);
46
+ }
47
+ catch {
48
+ return p;
49
+ }
50
+ }
51
+ /**
52
+ * This month's spend per repo path. Each codeburn project is counted once, for
53
+ * the deepest repo whose path is the project's path or contains it; projects
54
+ * outside every repo are not counted.
55
+ */
56
+ export function spendByRepo(projects, repoPaths) {
57
+ const out = new Map();
58
+ const deepestFirst = [...repoPaths].sort((a, b) => b.length - a.length);
59
+ for (const p of projects) {
60
+ const repo = deepestFirst.find((r) => p.path === r || p.path.startsWith(r + sep));
61
+ if (!repo)
62
+ continue;
63
+ const s = out.get(repo) || { cost: 0, sessions: 0 };
64
+ out.set(repo, { cost: s.cost + p.cost, sessions: s.sessions + p.sessions });
65
+ }
66
+ return out;
42
67
  }
43
68
  export async function collectUsage(opts = {}) {
44
69
  let exporter = opts.exporter;
@@ -77,6 +102,9 @@ export async function collectUsage(opts = {}) {
77
102
  topProjects: monthProjects
78
103
  .map((p) => { const path = String(p?.Project || 'unknown'); return { name: basename(path.replace(/[\\/]+$/, '')) || path, path, cost: num(p?.['Cost (USD)']), sessions: num(p?.Sessions) }; })
79
104
  .sort((a, b) => b.cost - a.cost).slice(0, TOP_N),
105
+ projects: monthProjects
106
+ .filter((p) => typeof p?.Project === 'string' && p.Project)
107
+ .map((p) => ({ path: real(String(p.Project).replace(/[\\/]+$/, '')), cost: num(p?.['Cost (USD)']), sessions: num(p?.Sessions) })),
80
108
  generated: typeof base?.generated === 'string' ? base.generated : null,
81
109
  fullView: 'codeburn web',
82
110
  };
@@ -1 +1 @@
1
- {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/dashboard/usage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../../src/dashboard/usage.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAeA,oHAAoH;AACpH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAarD,CAAC;AAuFF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,GAAG,iBAOlD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAeA,oHAAoH;AACpH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAcrD,CAAC;AA8FF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,GAAG,iBAOlD"}
package/dist/src/index.js CHANGED
@@ -24,6 +24,7 @@ export const GROUP_DESCRIPTIONS = {
24
24
  git: 'Claude Code session hook, and the retired AI-origin commit trailers',
25
25
  'parse-code-tool': 'Parse Kiro CLI and Kiro IDE sessions into codeburn-compatible token usage',
26
26
  security: 'AWS Security Agent code reviews, threat models and pentests of this repo, and their results',
27
+ team: 'Platform-team helpers: read the PRISM stack outputs, add developer telemetry accounts',
27
28
  securityagent: '[deprecated] securityagent setup is now prism-cli enable security',
28
29
  workshop: 'Workshop helpers: check prerequisites, deploy infrastructure, generate demo data, run the sample agent and pen test',
29
30
  };
@@ -37,6 +38,13 @@ function attach(program, category, command, def) {
37
38
  for (const opt of def.options)
38
39
  addOption(sub, opt);
39
40
  }
41
+ // One positional argument (spec '<x>' required, '[x]' optional; e.g. team add-developer <email>), passed to the action as opts[name].
42
+ if (def.argument) {
43
+ sub.argument(def.argument.spec, def.argument.description);
44
+ // any: commander's parsed options, typed by each command module (as in the existing actions below).
45
+ sub.action((value, opts) => def.action({ ...opts, [def.argument.name]: value }));
46
+ return;
47
+ }
40
48
  sub.action((opts) => def.action(opts));
41
49
  }
42
50
  function attachTop(program, name, def) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,8 @@ export declare const SCHTASK_NAME = "PrismOtelSync";
24
24
  export declare function otelLogDir(home?: string): string;
25
25
  export declare function otelLogFile(home?: string): string;
26
26
  export declare function codeburnSyncConfigPath(home?: string): string;
27
+ /** The sync endpoint codeburn has stored, or null when sync is not set up. '' when the file is unreadable. */
28
+ export declare function configuredSyncUrl(home: string): string | null;
27
29
  export declare function linuxCrontabAvailable(): boolean;
28
30
  /**
29
31
  * The current crontab lines from a `crontab -l` result. `crontab -l` exits
@@ -32,7 +34,22 @@ export declare function linuxCrontabAvailable(): boolean;
32
34
  * as empty and writing would replace the user's cron jobs, so it throws.
33
35
  */
34
36
  export declare function crontabLines(r: RunResult): string[];
35
- /** Throws (via crontabLines) when the crontab cannot be read, rather than calling the schedule missing. */
37
+ /** The crontab entry only. Throws (via crontabLines) when the crontab cannot be read, rather than calling the schedule missing. */
38
+ export declare function linuxCronScheduleExists(): boolean;
39
+ /**
40
+ * The systemd user timer `enable codeburn --schedule systemd` installs, the
41
+ * Linux schedule for machines whose crontab cannot be read (a PAM denial).
42
+ */
43
+ export declare const SYSTEMD_UNIT = "prism-otel-sync";
44
+ export declare const SYSTEMD_SCHEDULER_NAME = "systemd user timer";
45
+ export declare function systemdUserDir(home?: string): string;
46
+ export declare function systemdTimerPath(home?: string): string;
47
+ export declare function systemdServicePath(home?: string): string;
48
+ /** The timer unit file is present. A file check only: nothing is run. */
49
+ export declare function systemdTimerExists(home?: string): boolean;
50
+ /** `systemctl --user` reaches a user manager on this machine. */
51
+ export declare function systemdUserAvailable(): boolean;
52
+ /** The systemd timer, else the crontab entry: an unreadable crontab does not hide an installed timer. */
36
53
  export declare function linuxScheduleExists(): boolean;
37
54
  export declare function darwinPlistPath(home?: string): string;
38
55
  export declare function darwinScheduleExists(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"otel-sync-schedule.d.ts","sourceRoot":"","sources":["../../../src/utils/otel-sync-schedule.ts"],"names":[],"mappings":"AAWA,OAAO,EAAO,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAEhD,uFAAuF;AACvF,eAAO,MAAM,mBAAmB,8BAA8B,CAAC;AAE/D,2FAA2F;AAC3F,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAC/C,eAAO,MAAM,qBAAqB,UAA0C,CAAC;AAE7E,oFAAoF;AACpF,eAAO,MAAM,UAAU,OAAO,CAAC;AAE/B;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAEhD;AAED,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,WAAW,wBAAwB,CAAC;AACjD,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,wBAAgB,UAAU,CAAC,IAAI,SAAY,GAAG,MAAM,CAEnD;AAED,wBAAgB,WAAW,CAAC,IAAI,SAAY,GAAG,MAAM,CAEpD;AAED,wBAAgB,sBAAsB,CAAC,IAAI,SAAY,GAAG,MAAM,CAE/D;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAKD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,EAAE,CAKnD;AAED,2GAA2G;AAC3G,wBAAgB,mBAAmB,IAAI,OAAO,CAG7C;AAED,wBAAgB,eAAe,CAAC,IAAI,SAAY,GAAG,MAAM,CAExD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED,wBAAgB,cAAc,IAAI,OAAO,CAMxC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAMtC;AAED,MAAM,WAAW,QAAQ;IACvB,uEAAuE;IACvE,EAAE,EAAE,MAAM,CAAC;IACX,wCAAwC;IACxC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,kGAAkG;AAClG,wBAAgB,QAAQ,CAAC,IAAI,SAAY,GAAG,QAAQ,GAAG,IAAI,CAS1D"}
1
+ {"version":3,"file":"otel-sync-schedule.d.ts","sourceRoot":"","sources":["../../../src/utils/otel-sync-schedule.ts"],"names":[],"mappings":"AAWA,OAAO,EAAO,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAEhD,uFAAuF;AACvF,eAAO,MAAM,mBAAmB,8BAA8B,CAAC;AAE/D,2FAA2F;AAC3F,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAC/C,eAAO,MAAM,qBAAqB,UAA0C,CAAC;AAE7E,oFAAoF;AACpF,eAAO,MAAM,UAAU,OAAO,CAAC;AAE/B;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAEhD;AAED,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,WAAW,wBAAwB,CAAC;AACjD,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,wBAAgB,UAAU,CAAC,IAAI,SAAY,GAAG,MAAM,CAEnD;AAED,wBAAgB,WAAW,CAAC,IAAI,SAAY,GAAG,MAAM,CAEpD;AAED,wBAAgB,sBAAsB,CAAC,IAAI,SAAY,GAAG,MAAM,CAE/D;AACD,8GAA8G;AAC9G,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS7D;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAKD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,EAAE,CAKnD;AAED,mIAAmI;AACnI,wBAAgB,uBAAuB,IAAI,OAAO,CAGjD;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,oBAAoB,CAAC;AAC9C,eAAO,MAAM,sBAAsB,uBAAuB,CAAC;AAG3D,wBAAgB,cAAc,CAAC,IAAI,SAAY,GAAG,MAAM,CAEvD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,SAAY,GAAG,MAAM,CAEzD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,SAAY,GAAG,MAAM,CAE3D;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,IAAI,SAAY,GAAG,OAAO,CAE5D;AAED,iEAAiE;AACjE,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED,yGAAyG;AACzG,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED,wBAAgB,eAAe,CAAC,IAAI,SAAY,GAAG,MAAM,CAExD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED,wBAAgB,cAAc,IAAI,OAAO,CAMxC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAMtC;AAED,MAAM,WAAW,QAAQ;IACvB,uEAAuE;IACvE,EAAE,EAAE,MAAM,CAAC;IACX,wCAAwC;IACxC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,kGAAkG;AAClG,wBAAgB,QAAQ,CAAC,IAAI,SAAY,GAAG,QAAQ,GAAG,IAAI,CAS1D"}
@@ -43,6 +43,19 @@ export function otelLogFile(home = homedir()) {
43
43
  export function codeburnSyncConfigPath(home = homedir()) {
44
44
  return join(home, '.config', 'codeburn', 'sync.json');
45
45
  }
46
+ /** The sync endpoint codeburn has stored, or null when sync is not set up. '' when the file is unreadable. */
47
+ export function configuredSyncUrl(home) {
48
+ const configPath = codeburnSyncConfigPath(home);
49
+ if (!existsSync(configPath))
50
+ return null;
51
+ try {
52
+ const cfg = JSON.parse(readFileSync(configPath, 'utf8'));
53
+ return String(cfg.baseUrl || cfg.endpoint || cfg.url || '');
54
+ }
55
+ catch {
56
+ return '';
57
+ }
58
+ }
46
59
  export function linuxCrontabAvailable() {
47
60
  return run('which', ['crontab']).ok;
48
61
  }
@@ -62,12 +75,40 @@ export function crontabLines(r) {
62
75
  const reason = r.stderr.split('\n').map((l) => l.trim()).find(Boolean) || 'unknown error';
63
76
  throw new Error(`cannot read your crontab (crontab -l: ${reason}); it was not changed, so your existing cron jobs are kept. Fix crontab access, or run "prism-cli export otel" yourself.`);
64
77
  }
65
- /** Throws (via crontabLines) when the crontab cannot be read, rather than calling the schedule missing. */
66
- export function linuxScheduleExists() {
78
+ /** The crontab entry only. Throws (via crontabLines) when the crontab cannot be read, rather than calling the schedule missing. */
79
+ export function linuxCronScheduleExists() {
67
80
  if (!linuxCrontabAvailable())
68
81
  return false;
69
82
  return crontabLines(run('crontab', ['-l'])).some((l) => l.includes(CRON_MARKER));
70
83
  }
84
+ /**
85
+ * The systemd user timer `enable codeburn --schedule systemd` installs, the
86
+ * Linux schedule for machines whose crontab cannot be read (a PAM denial).
87
+ */
88
+ export const SYSTEMD_UNIT = 'prism-otel-sync';
89
+ export const SYSTEMD_SCHEDULER_NAME = 'systemd user timer';
90
+ // shortcut: ignores $XDG_CONFIG_HOME, which systemd honours; add it if someone relocates their config dir.
91
+ export function systemdUserDir(home = homedir()) {
92
+ return join(home, '.config', 'systemd', 'user');
93
+ }
94
+ export function systemdTimerPath(home = homedir()) {
95
+ return join(systemdUserDir(home), `${SYSTEMD_UNIT}.timer`);
96
+ }
97
+ export function systemdServicePath(home = homedir()) {
98
+ return join(systemdUserDir(home), `${SYSTEMD_UNIT}.service`);
99
+ }
100
+ /** The timer unit file is present. A file check only: nothing is run. */
101
+ export function systemdTimerExists(home = homedir()) {
102
+ return existsSync(systemdTimerPath(home));
103
+ }
104
+ /** `systemctl --user` reaches a user manager on this machine. */
105
+ export function systemdUserAvailable() {
106
+ return platform() === 'linux' && run('systemctl', ['--user', 'show-environment']).ok;
107
+ }
108
+ /** The systemd timer, else the crontab entry: an unreadable crontab does not hide an installed timer. */
109
+ export function linuxScheduleExists() {
110
+ return systemdTimerExists() || linuxCronScheduleExists();
111
+ }
71
112
  export function darwinPlistPath(home = homedir()) {
72
113
  return join(home, 'Library', 'LaunchAgents', `${PLIST_LABEL}.plist`);
73
114
  }
@@ -88,7 +129,7 @@ export function schedulerName() {
88
129
  switch (platform()) {
89
130
  case 'darwin': return 'LaunchAgent';
90
131
  case 'win32': return 'Scheduled Task';
91
- default: return 'crontab';
132
+ default: return systemdTimerExists() ? SYSTEMD_SCHEDULER_NAME : 'crontab';
92
133
  }
93
134
  }
94
135
  /** When the scheduled sync last ran, from ~/.prism/logs/otel-sync.log. null if it never wrote. */
@@ -1 +1 @@
1
- {"version":3,"file":"otel-sync-schedule.js","sourceRoot":"","sources":["../../../src/utils/otel-sync-schedule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"otel-sync-schedule.js","sourceRoot":"","sources":["../../../src/utils/otel-sync-schedule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ export declare const SYNC_MODES: readonly ["local", "team", "admin"];
2
+ export type SyncMode = typeof SYNC_MODES[number];
3
+ /** saved: from the mode file. migrated: no file, but a sync endpoint is configured. default: neither. */
4
+ export type SyncModeSource = 'saved' | 'migrated' | 'default';
5
+ export declare const SYNC_MODE_PATH = "~/.prism/codeburn.json";
6
+ export declare const syncModePath: (home: string) => string;
7
+ /** The saved mode, or null when there is no valid mode file. */
8
+ export declare function readSavedMode(home: string): SyncMode | null;
9
+ /** Atomic write, owner-only, like ~/.prism/aws.json. */
10
+ export declare function writeSyncMode(home: string, mode: SyncMode, now?: Date): void;
11
+ export declare function effectiveMode(home: string, url?: string | null): {
12
+ mode: SyncMode;
13
+ source: SyncModeSource;
14
+ };
15
+ export declare const MODE_SOURCE_TEXT: Record<SyncModeSource, string>;
16
+ export interface HelpLink {
17
+ label: string;
18
+ url: string;
19
+ }
20
+ export interface CheckHelp {
21
+ text: string;
22
+ links: HelpLink[];
23
+ /** Ordered steps, when the help is a procedure (admin mode). */
24
+ steps?: string[];
25
+ /** Commands that carry out the steps. */
26
+ commands?: string[];
27
+ }
28
+ /** Public setup docs. The one place these URLs live. */
29
+ export declare const SETUP_DOCS: {
30
+ readonly telemetryAccount: "https://github.com/aws-samples/sample-prism-d1-velocity/blob/main/README.md#2-give-each-developer-a-telemetry-account";
31
+ readonly platformTeamGuide: "https://github.com/aws-samples/sample-prism-d1-velocity/blob/main/USER_GUIDE.md#administrator-setup";
32
+ };
33
+ export declare const TEAM_URL_CMD = "prism-cli enable codeburn --url <collector URL>";
34
+ /** team mode, no sync endpoint: only the platform team can supply the collector URL and account. */
35
+ export declare const TEAM_NO_URL_HELP: CheckHelp;
36
+ /** local mode: nothing to fix; how to join a team later. */
37
+ export declare const LOCAL_MODE_HELP: CheckHelp;
38
+ export declare const TEAM_INFO_CMD = "prism-cli team info";
39
+ export declare const TEAM_ADD_CMD = "prism-cli team add-developer <email>";
40
+ export declare const PLATFORM_TEAM_STEPS: string[];
41
+ /** admin mode: the platform-team procedure and the helper commands. */
42
+ export declare const PLATFORM_TEAM_HELP: CheckHelp;
43
+ //# sourceMappingURL=sync-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-mode.d.ts","sourceRoot":"","sources":["../../../src/utils/sync-mode.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,UAAU,qCAAsC,CAAC;AAC9D,MAAM,MAAM,QAAQ,GAAG,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AACjD,yGAAyG;AACzG,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;AAE9D,eAAO,MAAM,cAAc,2BAA2B,CAAC;AACvD,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAA+C,CAAC;AAE5F,gEAAgE;AAChE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAO3D;AAED,wDAAwD;AACxD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAa,GAAG,IAAI,CAMlF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,GAAG,IAA8B,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CAIpI;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAI3D,CAAC;AAIF,MAAM,WAAW,QAAQ;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE;AACxD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wDAAwD;AACxD,eAAO,MAAM,UAAU;;;CAGb,CAAC;AAIX,eAAO,MAAM,YAAY,oDAAiD,CAAC;AAE3E,oGAAoG;AACpG,eAAO,MAAM,gBAAgB,EAAE,SAI9B,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,eAAe,EAAE,SAG7B,CAAC;AAEF,eAAO,MAAM,aAAa,wBAAwB,CAAC;AACnD,eAAO,MAAM,YAAY,yCAAyC,CAAC;AAEnE,eAAO,MAAM,mBAAmB,UAK/B,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,EAAE,SAKhC,CAAC"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Where a developer's codeburn usage goes, saved once per user:
3
+ * local usage stays on this machine (no sync endpoint, no schedule)
4
+ * team codeburn syncs to the team's PRISM collector
5
+ * admin this user is the platform team setting up PRISM
6
+ *
7
+ * File: ~/.prism/codeburn.json { "mode": "...", "updatedAt": "..." }
8
+ *
9
+ * No mode saved: a configured sync endpoint means team (machines set up
10
+ * before modes existed keep syncing), else local.
11
+ *
12
+ * Also the one place for the hint texts and doc links that `enable codeburn`,
13
+ * the dashboard and its --json share.
14
+ */
15
+ import { mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
16
+ import { dirname, join } from 'node:path';
17
+ import { configuredSyncUrl, ENABLE_CODEBURN_CMD } from './otel-sync-schedule.js';
18
+ export const SYNC_MODES = ['local', 'team', 'admin'];
19
+ export const SYNC_MODE_PATH = '~/.prism/codeburn.json';
20
+ export const syncModePath = (home) => join(home, '.prism', 'codeburn.json');
21
+ /** The saved mode, or null when there is no valid mode file. */
22
+ export function readSavedMode(home) {
23
+ try {
24
+ const m = JSON.parse(readFileSync(syncModePath(home), 'utf8'))?.mode;
25
+ return SYNC_MODES.includes(m) ? m : null;
26
+ }
27
+ catch {
28
+ return null;
29
+ }
30
+ }
31
+ /** Atomic write, owner-only, like ~/.prism/aws.json. */
32
+ export function writeSyncMode(home, mode, now = new Date()) {
33
+ const path = syncModePath(home);
34
+ mkdirSync(dirname(path), { recursive: true });
35
+ const tmp = `${path}.${process.pid}.tmp`;
36
+ writeFileSync(tmp, JSON.stringify({ mode, updatedAt: now.toISOString() }, null, 2) + '\n', { mode: 0o600 });
37
+ renameSync(tmp, path);
38
+ }
39
+ export function effectiveMode(home, url = configuredSyncUrl(home)) {
40
+ const saved = readSavedMode(home);
41
+ if (saved)
42
+ return { mode: saved, source: 'saved' };
43
+ return url !== null ? { mode: 'team', source: 'migrated' } : { mode: 'local', source: 'default' };
44
+ }
45
+ export const MODE_SOURCE_TEXT = {
46
+ saved: `saved in ${SYNC_MODE_PATH}`,
47
+ migrated: 'no mode saved; a codeburn sync endpoint is configured, so team',
48
+ default: 'no mode saved and no sync endpoint, so local',
49
+ };
50
+ /** Public setup docs. The one place these URLs live. */
51
+ export const SETUP_DOCS = {
52
+ telemetryAccount: 'https://github.com/aws-samples/sample-prism-d1-velocity/blob/main/README.md#2-give-each-developer-a-telemetry-account',
53
+ platformTeamGuide: 'https://github.com/aws-samples/sample-prism-d1-velocity/blob/main/USER_GUIDE.md#administrator-setup',
54
+ };
55
+ const SETUP_LINK = { label: 'Setup instructions', url: SETUP_DOCS.telemetryAccount };
56
+ const GUIDE_LINK = { label: 'Platform team guide', url: SETUP_DOCS.platformTeamGuide };
57
+ export const TEAM_URL_CMD = `${ENABLE_CODEBURN_CMD} --url <collector URL>`;
58
+ /** team mode, no sync endpoint: only the platform team can supply the collector URL and account. */
59
+ export const TEAM_NO_URL_HELP = {
60
+ text: 'codeburn sync is not set up on this machine. Ask your platform team for the collector URL and a telemetry account for your email, '
61
+ + `then run ${TEAM_URL_CMD}.`,
62
+ links: [SETUP_LINK, GUIDE_LINK],
63
+ };
64
+ /** local mode: nothing to fix; how to join a team later. */
65
+ export const LOCAL_MODE_HELP = {
66
+ text: `If your team uses PRISM, ask your platform team for the collector URL and a telemetry account, then run ${TEAM_URL_CMD}.`,
67
+ links: [SETUP_LINK],
68
+ };
69
+ export const TEAM_INFO_CMD = 'prism-cli team info';
70
+ export const TEAM_ADD_CMD = 'prism-cli team add-developer <email>';
71
+ export const PLATFORM_TEAM_STEPS = [
72
+ 'Deploy the PRISM stack (infra/: npx cdk deploy --all).',
73
+ `Note the stack outputs OtelCollectorUrl and OtelUserPoolId (${TEAM_INFO_CMD} prints both).`,
74
+ `Add each developer: a telemetry account named by their email (${TEAM_ADD_CMD}).`,
75
+ `Share the collector URL; each developer runs ${TEAM_URL_CMD}.`,
76
+ ];
77
+ /** admin mode: the platform-team procedure and the helper commands. */
78
+ export const PLATFORM_TEAM_HELP = {
79
+ text: 'You are the platform team: set up PRISM so developers can sync.',
80
+ steps: PLATFORM_TEAM_STEPS,
81
+ commands: [TEAM_INFO_CMD, TEAM_ADD_CMD],
82
+ links: [GUIDE_LINK],
83
+ };
84
+ //# sourceMappingURL=sync-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-mode.js","sourceRoot":"","sources":["../../../src/utils/sync-mode.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.4.3",
3
+ "version": "1.6.0",
4
4
  "description": "PRISM D1 Velocity CLI — AI development lifecycle assessment tool",
5
5
  "author": "andklee",
6
6
  "engines": {