cxgrd 0.1.1 → 0.1.4

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 (117) hide show
  1. package/dist/auth/audit-usage.js +34 -21
  2. package/dist/auth/audit-usage.js.map +1 -1
  3. package/dist/auth/auth-session.d.ts.map +1 -1
  4. package/dist/auth/auth-session.js +50 -32
  5. package/dist/auth/auth-session.js.map +1 -1
  6. package/dist/auth/auth-store.js +22 -16
  7. package/dist/auth/auth-store.js.map +1 -1
  8. package/dist/auth/entitlements.js +35 -22
  9. package/dist/auth/entitlements.js.map +1 -1
  10. package/dist/auth/open-browser.js +6 -3
  11. package/dist/auth/open-browser.js.map +1 -1
  12. package/dist/auth/plans.js +13 -6
  13. package/dist/auth/plans.js.map +1 -1
  14. package/dist/auth/plans.test.js +23 -18
  15. package/dist/auth/plans.test.js.map +1 -1
  16. package/dist/cg-directory.js +40 -35
  17. package/dist/cg-directory.js.map +1 -1
  18. package/dist/check/check-runner.js +16 -13
  19. package/dist/check/check-runner.js.map +1 -1
  20. package/dist/check/compiler-service.js +22 -19
  21. package/dist/check/compiler-service.js.map +1 -1
  22. package/dist/check/parsers/cargo.js +4 -1
  23. package/dist/check/parsers/cargo.js.map +1 -1
  24. package/dist/check/parsers/parsers.test.js +30 -25
  25. package/dist/check/parsers/parsers.test.js.map +1 -1
  26. package/dist/check/parsers/pyright.js +4 -1
  27. package/dist/check/parsers/pyright.js.map +1 -1
  28. package/dist/check/parsers/tsc-cli.js +4 -1
  29. package/dist/check/parsers/tsc-cli.js.map +1 -1
  30. package/dist/check/project-tooling.js +23 -16
  31. package/dist/check/project-tooling.js.map +1 -1
  32. package/dist/check/run-command.js +9 -5
  33. package/dist/check/run-command.js.map +1 -1
  34. package/dist/check/scope.js +14 -8
  35. package/dist/check/scope.js.map +1 -1
  36. package/dist/check/scope.test.js +15 -10
  37. package/dist/check/scope.test.js.map +1 -1
  38. package/dist/check/strict-mode.js +6 -2
  39. package/dist/check/strict-mode.js.map +1 -1
  40. package/dist/check/strict-mode.test.js +19 -14
  41. package/dist/check/strict-mode.test.js.map +1 -1
  42. package/dist/check/structural-checks.js +4 -1
  43. package/dist/check/structural-checks.js.map +1 -1
  44. package/dist/check/types.js +2 -1
  45. package/dist/check/verifiers/python.js +11 -8
  46. package/dist/check/verifiers/python.js.map +1 -1
  47. package/dist/check/verifiers/rust.js +11 -8
  48. package/dist/check/verifiers/rust.js.map +1 -1
  49. package/dist/check/verifiers/typescript.js +24 -18
  50. package/dist/check/verifiers/typescript.js.map +1 -1
  51. package/dist/commands/auth.d.ts.map +1 -1
  52. package/dist/commands/auth.js +64 -34
  53. package/dist/commands/auth.js.map +1 -1
  54. package/dist/commands/check.js +49 -43
  55. package/dist/commands/check.js.map +1 -1
  56. package/dist/commands/doctor.js +33 -27
  57. package/dist/commands/doctor.js.map +1 -1
  58. package/dist/commands/init-hooks.js +34 -31
  59. package/dist/commands/init-hooks.js.map +1 -1
  60. package/dist/commands/input.js +46 -43
  61. package/dist/commands/input.js.map +1 -1
  62. package/dist/commands/prompt.js +40 -34
  63. package/dist/commands/prompt.js.map +1 -1
  64. package/dist/commands/scan.js +49 -43
  65. package/dist/commands/scan.js.map +1 -1
  66. package/dist/commands/watch.js +20 -17
  67. package/dist/commands/watch.js.map +1 -1
  68. package/dist/config/env.js +21 -16
  69. package/dist/config/env.js.map +1 -1
  70. package/dist/graph.js +38 -36
  71. package/dist/graph.js.map +1 -1
  72. package/dist/index.js +32 -27
  73. package/dist/index.js.map +1 -1
  74. package/dist/memory/pattern-analyzer.js +6 -2
  75. package/dist/memory/pattern-analyzer.js.map +1 -1
  76. package/dist/memory/repo-memory.js +10 -4
  77. package/dist/memory/repo-memory.js.map +1 -1
  78. package/dist/memory/types.js +2 -1
  79. package/dist/prompt/llm-client.js +10 -7
  80. package/dist/prompt/llm-client.js.map +1 -1
  81. package/dist/prompt/subgraph.js +10 -6
  82. package/dist/prompt/subgraph.js.map +1 -1
  83. package/dist/scanner.js +51 -49
  84. package/dist/scanner.js.map +1 -1
  85. package/dist/team/audit.js +10 -7
  86. package/dist/team/audit.js.map +1 -1
  87. package/dist/team/cloud-client.js +23 -17
  88. package/dist/team/cloud-client.js.map +1 -1
  89. package/dist/team/dev-store.js +34 -25
  90. package/dist/team/dev-store.js.map +1 -1
  91. package/dist/team/graph-sync.js +28 -20
  92. package/dist/team/graph-sync.js.map +1 -1
  93. package/dist/team/policy-cache.js +19 -14
  94. package/dist/team/policy-cache.js.map +1 -1
  95. package/dist/team/policy-engine.js +4 -1
  96. package/dist/team/policy-engine.js.map +1 -1
  97. package/dist/team/policy-engine.test.js +18 -13
  98. package/dist/team/policy-engine.test.js.map +1 -1
  99. package/dist/team/repo-identity.js +9 -6
  100. package/dist/team/repo-identity.js.map +1 -1
  101. package/dist/team/types.js +2 -1
  102. package/dist/toolchain/probe.js +23 -14
  103. package/dist/toolchain/probe.js.map +1 -1
  104. package/dist/toolchain/project-languages.js +20 -16
  105. package/dist/toolchain/project-languages.js.map +1 -1
  106. package/dist/toolchain/types.js +2 -1
  107. package/dist/utils/blast-radius-analyzer.js +7 -2
  108. package/dist/utils/blast-radius-analyzer.js.map +1 -1
  109. package/dist/utils/change-detector.js +8 -3
  110. package/dist/utils/change-detector.js.map +1 -1
  111. package/dist/utils/cli-formatter.js +34 -26
  112. package/dist/utils/cli-formatter.js.map +1 -1
  113. package/dist/utils/git-hook-manager.js +42 -34
  114. package/dist/utils/git-hook-manager.js.map +1 -1
  115. package/dist/utils/project-watcher.js +17 -12
  116. package/dist/utils/project-watcher.js.map +1 -1
  117. package/package.json +1 -2
@@ -1,8 +1,20 @@
1
- import { mkdir, readFile, writeFile } from 'fs/promises';
2
- import { join } from 'path';
3
- import { homedir } from 'os';
4
- import chalk from 'chalk';
5
- export class AuditUsageExceededError extends Error {
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FREE_MONTHLY_AUDIT_LIMIT = exports.AuditUsageExceededError = void 0;
7
+ exports.getCurrentMonthAuditCount = getCurrentMonthAuditCount;
8
+ exports.incrementAuditCount = incrementAuditCount;
9
+ exports.checkFreeAuditLimit = checkFreeAuditLimit;
10
+ exports.printAuditUsageStatus = printAuditUsageStatus;
11
+ const promises_1 = require("fs/promises");
12
+ const path_1 = require("path");
13
+ const os_1 = require("os");
14
+ const chalk_1 = __importDefault(require("chalk"));
15
+ class AuditUsageExceededError extends Error {
16
+ used;
17
+ limit;
6
18
  constructor(used, limit) {
7
19
  super(`Monthly audit limit exceeded. Used: ${used}/${limit}\n` +
8
20
  ` Upgrade to Pro for unlimited audits at https://cxgrd.com/pricing`);
@@ -11,13 +23,14 @@ export class AuditUsageExceededError extends Error {
11
23
  this.name = 'AuditUsageExceededError';
12
24
  }
13
25
  }
14
- export const FREE_MONTHLY_AUDIT_LIMIT = 50;
26
+ exports.AuditUsageExceededError = AuditUsageExceededError;
27
+ exports.FREE_MONTHLY_AUDIT_LIMIT = 50;
15
28
  function getUsagePath() {
16
- return join(homedir(), '.cg', 'usage.json');
29
+ return (0, path_1.join)((0, os_1.homedir)(), '.cg', 'usage.json');
17
30
  }
18
31
  async function readUsageFile() {
19
32
  try {
20
- const content = await readFile(getUsagePath(), 'utf-8');
33
+ const content = await (0, promises_1.readFile)(getUsagePath(), 'utf-8');
21
34
  return JSON.parse(content);
22
35
  }
23
36
  catch {
@@ -26,10 +39,10 @@ async function readUsageFile() {
26
39
  }
27
40
  async function writeUsageFile(records) {
28
41
  const path = getUsagePath();
29
- const dir = join(homedir(), '.cg');
42
+ const dir = (0, path_1.join)((0, os_1.homedir)(), '.cg');
30
43
  try {
31
- await mkdir(dir, { recursive: true });
32
- await writeFile(path, JSON.stringify(records, null, 2), 'utf-8');
44
+ await (0, promises_1.mkdir)(dir, { recursive: true });
45
+ await (0, promises_1.writeFile)(path, JSON.stringify(records, null, 2), 'utf-8');
33
46
  }
34
47
  catch {
35
48
  // Silently fail if we can't write usage (e.g., permission issues)
@@ -46,7 +59,7 @@ function getCurrentMonth() {
46
59
  /**
47
60
  * Get current month's audit count for free tier tracking
48
61
  */
49
- export async function getCurrentMonthAuditCount() {
62
+ async function getCurrentMonthAuditCount() {
50
63
  const records = await readUsageFile();
51
64
  const current = getCurrentMonth();
52
65
  const record = records.find((r) => r.year === current.year && r.month === current.month);
@@ -55,7 +68,7 @@ export async function getCurrentMonthAuditCount() {
55
68
  /**
56
69
  * Increment audit count (called after successful scan/check)
57
70
  */
58
- export async function incrementAuditCount() {
71
+ async function incrementAuditCount() {
59
72
  const records = await readUsageFile();
60
73
  const current = getCurrentMonth();
61
74
  const record = records.find((r) => r.year === current.year && r.month === current.month);
@@ -84,21 +97,21 @@ export async function incrementAuditCount() {
84
97
  * Check if free tier audit limit exceeded
85
98
  * Returns true if limit OK, throws if exceeded
86
99
  */
87
- export async function checkFreeAuditLimit() {
100
+ async function checkFreeAuditLimit() {
88
101
  const count = await getCurrentMonthAuditCount();
89
- if (count >= FREE_MONTHLY_AUDIT_LIMIT) {
90
- throw new AuditUsageExceededError(count, FREE_MONTHLY_AUDIT_LIMIT);
102
+ if (count >= exports.FREE_MONTHLY_AUDIT_LIMIT) {
103
+ throw new AuditUsageExceededError(count, exports.FREE_MONTHLY_AUDIT_LIMIT);
91
104
  }
92
105
  }
93
106
  /**
94
107
  * Print current usage status to console
95
108
  */
96
- export async function printAuditUsageStatus() {
109
+ async function printAuditUsageStatus() {
97
110
  const count = await getCurrentMonthAuditCount();
98
- const percent = Math.round((count / FREE_MONTHLY_AUDIT_LIMIT) * 100);
99
- console.log(chalk.gray(` Audits this month: ${count}/${FREE_MONTHLY_AUDIT_LIMIT} (${percent}%)`));
100
- if (count >= FREE_MONTHLY_AUDIT_LIMIT - 5) {
101
- console.log(chalk.yellow(` ⚠ Approaching monthly limit — upgrade to Pro for unlimited audits`));
111
+ const percent = Math.round((count / exports.FREE_MONTHLY_AUDIT_LIMIT) * 100);
112
+ console.log(chalk_1.default.gray(` Audits this month: ${count}/${exports.FREE_MONTHLY_AUDIT_LIMIT} (${percent}%)`));
113
+ if (count >= exports.FREE_MONTHLY_AUDIT_LIMIT - 5) {
114
+ console.log(chalk_1.default.yellow(` ⚠ Approaching monthly limit — upgrade to Pro for unlimited audits`));
102
115
  }
103
116
  }
104
117
  //# sourceMappingURL=audit-usage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-usage.js","sourceRoot":"","sources":["../../src/auth/audit-usage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit-usage.js","sourceRoot":"","sources":["../../src/auth/audit-usage.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth-session.d.ts","sourceRoot":"","sources":["../../src/auth/auth-session.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAW7C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,WAAW,GAAG,cAAc,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA8B1E;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAiE5E;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGzD"}
1
+ {"version":3,"file":"auth-session.d.ts","sourceRoot":"","sources":["../../src/auth/auth-session.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAW7C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,WAAW,GAAG,cAAc,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CA4B1E;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAiF5E;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAGzD"}
@@ -1,7 +1,13 @@
1
- import { randomUUID } from 'crypto';
2
- import { envString } from '../config/env';
3
- import { readAuth } from './auth-store';
4
- import { normalizePlan } from './plans';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveActiveSession = resolveActiveSession;
4
+ exports.pollAuthSession = pollAuthSession;
5
+ exports.createCliSessionId = createCliSessionId;
6
+ exports.buildCliAuthUrl = buildCliAuthUrl;
7
+ const crypto_1 = require("crypto");
8
+ const env_1 = require("../config/env");
9
+ const auth_store_1 = require("./auth-store");
10
+ const plans_1 = require("./plans");
5
11
  function normalizeRole(role) {
6
12
  const r = (role || 'member').toLowerCase();
7
13
  if (r === 'lead' || r === 'admin')
@@ -10,23 +16,22 @@ function normalizeRole(role) {
10
16
  }
11
17
  const POLL_INTERVAL_MS = 2000;
12
18
  const POLL_TIMEOUT_MS = 5 * 60 * 1000;
13
- export async function resolveActiveSession() {
14
- // Dev override lets you test pro/team locally without real auth
15
- const devPlan = envString('CXGRD_DEV_PLAN');
19
+ async function resolveActiveSession() {
20
+ const devPlan = (0, env_1.envString)('CXGRD_DEV_PLAN');
16
21
  if (devPlan) {
17
- const plan = normalizePlan(devPlan);
22
+ const plan = (0, plans_1.normalizePlan)(devPlan);
18
23
  if (plan !== 'free') {
19
24
  return {
20
- token: envString('CXGRD_DEV_TOKEN', 'dev-local'),
25
+ token: (0, env_1.envString)('CXGRD_DEV_TOKEN', 'dev-local'),
21
26
  plan,
22
27
  source: 'dev_override',
23
- orgId: envString('CXGRD_DEV_ORG_ID', 'org_dev'),
24
- orgName: envString('CXGRD_DEV_ORG_NAME', 'Dev Org'),
25
- role: normalizeRole(envString('CXGRD_DEV_ROLE', 'member')),
28
+ orgId: (0, env_1.envString)('CXGRD_DEV_ORG_ID', 'org_dev'),
29
+ orgName: (0, env_1.envString)('CXGRD_DEV_ORG_NAME', 'Dev Org'),
30
+ role: normalizeRole((0, env_1.envString)('CXGRD_DEV_ROLE', 'member')),
26
31
  };
27
32
  }
28
33
  }
29
- const stored = await readAuth();
34
+ const stored = await (0, auth_store_1.readAuth)();
30
35
  if (!stored)
31
36
  return null;
32
37
  return {
@@ -34,29 +39,46 @@ export async function resolveActiveSession() {
34
39
  plan: stored.plan,
35
40
  source: 'auth_file',
36
41
  email: stored.email,
37
- // orgId/orgName/role only populated for team/enterprise — undefined for free+pro
38
42
  orgId: stored.orgId,
39
43
  orgName: stored.orgName,
40
44
  role: normalizeRole(stored.role),
41
45
  };
42
46
  }
43
- export async function pollAuthSession(sessionId) {
44
- const baseUrl = envString('CXGRD_AUTH_BASE_URL', 'https://cxgrd.com').replace(/\/$/, '');
47
+ async function pollAuthSession(sessionId) {
48
+ const baseUrl = (0, env_1.envString)('CXGRD_AUTH_BASE_URL', 'https://cxgrd.com').replace(/\/$/, '');
45
49
  const url = `${baseUrl}/api/auth/cli/session/${sessionId}`;
46
50
  const started = Date.now();
47
51
  while (Date.now() - started < POLL_TIMEOUT_MS) {
48
- const response = await fetch(url, {
49
- method: 'GET',
50
- headers: { Accept: 'application/json' },
51
- });
52
- if (response.status === 404 || response.status === 501) {
52
+ let response;
53
+ try {
54
+ response = await fetch(url, {
55
+ method: 'GET',
56
+ headers: { Accept: 'application/json' },
57
+ });
58
+ }
59
+ catch {
60
+ // Network error — wait and retry
61
+ await sleep(POLL_INTERVAL_MS);
62
+ continue;
63
+ }
64
+ // 501 = server not configured — hard stop
65
+ if (response.status === 501) {
53
66
  throw new Error('Auth API is not available yet. For local dev set CXGRD_DEV_PLAN=pro in .env');
54
67
  }
68
+ // 404 = session not found yet — retry (brief race condition on first poll)
69
+ if (response.status === 404) {
70
+ await sleep(POLL_INTERVAL_MS);
71
+ continue;
72
+ }
55
73
  // 202 = still pending, user hasn't completed GitHub login yet
56
74
  if (response.status === 202) {
57
75
  await sleep(POLL_INTERVAL_MS);
58
76
  continue;
59
77
  }
78
+ // 410 = session expired
79
+ if (response.status === 410) {
80
+ throw new Error('Session expired. Run cxgrd auth login again.');
81
+ }
60
82
  if (!response.ok) {
61
83
  const body = await response.text().catch(() => '');
62
84
  throw new Error(`Auth poll failed (${response.status}): ${body || response.statusText}`);
@@ -67,27 +89,24 @@ export async function pollAuthSession(sessionId) {
67
89
  await sleep(POLL_INTERVAL_MS);
68
90
  continue;
69
91
  }
70
- const auth = {
92
+ return {
71
93
  token,
72
- plan: normalizePlan(data.plan),
94
+ plan: (0, plans_1.normalizePlan)(data.plan),
73
95
  email: data.email,
74
- // these are only set for team/enterprise accounts
75
96
  orgId: data.org_id ?? data.orgId,
76
97
  orgName: data.org_name ?? data.orgName,
77
98
  role: normalizeRole(data.role),
78
99
  expiresAt: normalizeExpiry(data.expires_at ?? data.expiresAt),
79
100
  obtainedAt: Date.now(),
80
101
  };
81
- // Free and pro users both get a token — feature gates are enforced per-command
82
- return auth;
83
102
  }
84
103
  throw new Error('Timed out waiting for browser login. Try again.');
85
104
  }
86
- export function createCliSessionId() {
87
- return randomUUID();
105
+ function createCliSessionId() {
106
+ return (0, crypto_1.randomUUID)();
88
107
  }
89
- export function buildCliAuthUrl(sessionId) {
90
- const baseUrl = envString('CXGRD_AUTH_BASE_URL', 'https://cxgrd.com').replace(/\/$/, '');
108
+ function buildCliAuthUrl(sessionId) {
109
+ const baseUrl = (0, env_1.envString)('CXGRD_AUTH_BASE_URL', 'https://cxgrd.com').replace(/\/$/, '');
91
110
  return `${baseUrl}/auth/cli?session=${encodeURIComponent(sessionId)}`;
92
111
  }
93
112
  function sleep(ms) {
@@ -96,7 +115,6 @@ function sleep(ms) {
96
115
  function normalizeExpiry(expiresAt) {
97
116
  if (!expiresAt || Number.isNaN(expiresAt))
98
117
  return undefined;
99
- // accept either epoch seconds or milliseconds
100
- return expiresAt < 1000000000000 ? expiresAt * 1000 : expiresAt;
118
+ return expiresAt < 1_000_000_000_000 ? expiresAt * 1000 : expiresAt;
101
119
  }
102
120
  //# sourceMappingURL=auth-session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-session.js","sourceRoot":"","sources":["../../src/auth/auth-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-session.js","sourceRoot":"","sources":["../../src/auth/auth-session.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,18 @@
1
- import { mkdir, readFile, writeFile, unlink } from 'fs/promises';
2
- import { homedir } from 'os';
3
- import { join } from 'path';
4
- import { normalizePlan } from './plans';
5
- const AUTH_DIR = join(homedir(), '.cg');
6
- const AUTH_PATH = join(AUTH_DIR, 'auth.json');
7
- export async function readAuth() {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readAuth = readAuth;
4
+ exports.writeAuth = writeAuth;
5
+ exports.clearAuth = clearAuth;
6
+ exports.getAuthPath = getAuthPath;
7
+ const promises_1 = require("fs/promises");
8
+ const os_1 = require("os");
9
+ const path_1 = require("path");
10
+ const plans_1 = require("./plans");
11
+ const AUTH_DIR = (0, path_1.join)((0, os_1.homedir)(), '.cg');
12
+ const AUTH_PATH = (0, path_1.join)(AUTH_DIR, 'auth.json');
13
+ async function readAuth() {
8
14
  try {
9
- const raw = await readFile(AUTH_PATH, 'utf-8');
15
+ const raw = await (0, promises_1.readFile)(AUTH_PATH, 'utf-8');
10
16
  const data = JSON.parse(raw);
11
17
  if (!data.token)
12
18
  return null;
@@ -14,31 +20,31 @@ export async function readAuth() {
14
20
  if (expiresAt && Date.now() > expiresAt) {
15
21
  return null;
16
22
  }
17
- return { ...data, plan: normalizePlan(data.plan), expiresAt };
23
+ return { ...data, plan: (0, plans_1.normalizePlan)(data.plan), expiresAt };
18
24
  }
19
25
  catch {
20
26
  return null;
21
27
  }
22
28
  }
23
- export async function writeAuth(auth) {
24
- await mkdir(AUTH_DIR, { recursive: true });
25
- await writeFile(AUTH_PATH, JSON.stringify(auth, null, 2), 'utf-8');
29
+ async function writeAuth(auth) {
30
+ await (0, promises_1.mkdir)(AUTH_DIR, { recursive: true });
31
+ await (0, promises_1.writeFile)(AUTH_PATH, JSON.stringify(auth, null, 2), 'utf-8');
26
32
  }
27
- export async function clearAuth() {
33
+ async function clearAuth() {
28
34
  try {
29
- await unlink(AUTH_PATH);
35
+ await (0, promises_1.unlink)(AUTH_PATH);
30
36
  }
31
37
  catch {
32
38
  // already cleared
33
39
  }
34
40
  }
35
- export function getAuthPath() {
41
+ function getAuthPath() {
36
42
  return AUTH_PATH;
37
43
  }
38
44
  function normalizeExpiry(expiresAt) {
39
45
  if (!expiresAt || Number.isNaN(expiresAt)) {
40
46
  return undefined;
41
47
  }
42
- return expiresAt < 1000000000000 ? expiresAt * 1000 : expiresAt;
48
+ return expiresAt < 1_000_000_000_000 ? expiresAt * 1000 : expiresAt;
43
49
  }
44
50
  //# sourceMappingURL=auth-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-store.js","sourceRoot":"","sources":["../../src/auth/auth-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAcxC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;AACxC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAC7B,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAgB;IAC9C,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,SAA6B;IACpD,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,GAAG,aAAiB,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"auth-store.js","sourceRoot":"","sources":["../../src/auth/auth-store.ts"],"names":[],"mappings":";;AAqBA,4BAaC;AAED,8BAGC;AAED,8BAMC;AAED,kCAEC;AAnDD,0CAAiE;AACjE,2BAA6B;AAC7B,+BAA4B;AAE5B,mCAAwC;AAcxC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,KAAK,CAAC,CAAC;AACxC,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAEvC,KAAK,UAAU,QAAQ;IAC5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAA,mBAAQ,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAC7B,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAA,qBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,SAAS,CAAC,IAAgB;IAC9C,MAAM,IAAA,gBAAK,EAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,IAAA,oBAAS,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC;AAEM,KAAK,UAAU,SAAS;IAC7B,IAAI,CAAC;QACH,MAAM,IAAA,iBAAM,EAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;AACH,CAAC;AAED,SAAgB,WAAW;IACzB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,SAA6B;IACpD,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACtE,CAAC"}
@@ -1,42 +1,55 @@
1
- import chalk from 'chalk';
2
- import { planIncludesFeature, planDisplayName, isTeamOrEnterprise, } from './plans';
3
- import { resolveActiveSession } from './auth-session';
4
- export class ProRequiredError extends Error {
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TeamRequiredError = exports.ProRequiredError = void 0;
7
+ exports.requireProFeature = requireProFeature;
8
+ exports.requireTeamFeature = requireTeamFeature;
9
+ exports.printSessionStatus = printSessionStatus;
10
+ const chalk_1 = __importDefault(require("chalk"));
11
+ const plans_1 = require("./plans");
12
+ const auth_session_1 = require("./auth-session");
13
+ class ProRequiredError extends Error {
14
+ feature;
5
15
  constructor(message, feature) {
6
16
  super(message);
7
17
  this.feature = feature;
8
18
  this.name = 'ProRequiredError';
9
19
  }
10
20
  }
11
- export class TeamRequiredError extends Error {
21
+ exports.ProRequiredError = ProRequiredError;
22
+ class TeamRequiredError extends Error {
23
+ feature;
12
24
  constructor(message, feature) {
13
25
  super(message);
14
26
  this.feature = feature;
15
27
  this.name = 'TeamRequiredError';
16
28
  }
17
29
  }
18
- export async function requireProFeature(feature) {
19
- const session = await resolveActiveSession();
30
+ exports.TeamRequiredError = TeamRequiredError;
31
+ async function requireProFeature(feature) {
32
+ const session = await (0, auth_session_1.resolveActiveSession)();
20
33
  if (!session) {
21
34
  throw new ProRequiredError(`This feature requires a Pro, Team, or Enterprise plan.\n` +
22
- ` Run ${chalk.cyan('cxgrd auth login')} or visit https://cxgrd.com/pricing\n` +
35
+ ` Run ${chalk_1.default.cyan('cxgrd auth login')} or visit https://cxgrd.com/pricing\n` +
23
36
  ` Local dev: set CXGRD_DEV_PLAN=pro in .env (see .env.example)`, feature);
24
37
  }
25
- if (!planIncludesFeature(session.plan, feature)) {
26
- throw new ProRequiredError(`Your plan (${planDisplayName(session.plan)}) does not include this feature.\n` +
38
+ if (!(0, plans_1.planIncludesFeature)(session.plan, feature)) {
39
+ throw new ProRequiredError(`Your plan (${(0, plans_1.planDisplayName)(session.plan)}) does not include this feature.\n` +
27
40
  ` Upgrade at https://cxgrd.com/pricing`, feature);
28
41
  }
29
42
  return session;
30
43
  }
31
- export async function requireTeamFeature(feature) {
32
- const session = await resolveActiveSession();
44
+ async function requireTeamFeature(feature) {
45
+ const session = await (0, auth_session_1.resolveActiveSession)();
33
46
  if (!session) {
34
47
  throw new TeamRequiredError(`This feature requires Team or Enterprise.\n` +
35
- ` Run ${chalk.cyan('cxgrd auth login')} after upgrading\n` +
48
+ ` Run ${chalk_1.default.cyan('cxgrd auth login')} after upgrading\n` +
36
49
  ` Local dev: CXGRD_DEV_PLAN=team CXGRD_DEV_ORG_ID=org_dev CXGRD_DEV_CLOUD=1`, feature);
37
50
  }
38
- if (!planIncludesFeature(session.plan, feature)) {
39
- throw new TeamRequiredError(`Your plan (${planDisplayName(session.plan)}) does not include team features.\n` +
51
+ if (!(0, plans_1.planIncludesFeature)(session.plan, feature)) {
52
+ throw new TeamRequiredError(`Your plan (${(0, plans_1.planDisplayName)(session.plan)}) does not include team features.\n` +
40
53
  ` Upgrade at https://cxgrd.com/pricing`, feature);
41
54
  }
42
55
  if (!session.orgId) {
@@ -44,19 +57,19 @@ export async function requireTeamFeature(feature) {
44
57
  }
45
58
  return session;
46
59
  }
47
- export function printSessionStatus(session) {
60
+ function printSessionStatus(session) {
48
61
  if (!session) {
49
- console.log(chalk.gray(' Not signed in (Free tier — scan, input, check available locally)'));
62
+ console.log(chalk_1.default.gray(' Not signed in (Free tier — scan, input, check available locally)'));
50
63
  return;
51
64
  }
52
65
  const src = session.source === 'dev_override'
53
- ? chalk.yellow(' (dev override via CXGRD_DEV_PLAN)')
66
+ ? chalk_1.default.yellow(' (dev override via CXGRD_DEV_PLAN)')
54
67
  : '';
55
- console.log(chalk.green(` Signed in as ${session.email || 'user'} — ${planDisplayName(session.plan)} plan`) +
68
+ console.log(chalk_1.default.green(` Signed in as ${session.email || 'user'} — ${(0, plans_1.planDisplayName)(session.plan)} plan`) +
56
69
  src);
57
- console.log(chalk.gray(` Prompt: ${planIncludesFeature(session.plan, 'prompt') ? 'yes' : 'no'}`));
58
- if (isTeamOrEnterprise(session.plan)) {
59
- console.log(chalk.gray(` Org: ${session.orgName || session.orgId || '—'} · role: ${session.role} · sync: enabled`));
70
+ console.log(chalk_1.default.gray(` Prompt: ${(0, plans_1.planIncludesFeature)(session.plan, 'prompt') ? 'yes' : 'no'}`));
71
+ if ((0, plans_1.isTeamOrEnterprise)(session.plan)) {
72
+ console.log(chalk_1.default.gray(` Org: ${session.orgName || session.orgId || '—'} · role: ${session.role} · sync: enabled`));
60
73
  }
61
74
  }
62
75
  //# sourceMappingURL=entitlements.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entitlements.js","sourceRoot":"","sources":["../../src/auth/entitlements.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,kBAAkB,GAGnB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,oBAAoB,EAAsB,MAAM,gBAAgB,CAAC;AAE1E,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YACE,OAAe,EACC,OAAmB;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,YAAO,GAAP,OAAO,CAAY;QAGnC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YACE,OAAe,EACC,OAAoB;QAEpC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,YAAO,GAAP,OAAO,CAAa;QAGpC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAmB;IACzD,MAAM,OAAO,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAE7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,gBAAgB,CACxB,0DAA0D;YACxD,SAAS,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,uCAAuC;YAC9E,gEAAgE,EAClE,OAAO,CACR,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,gBAAgB,CACxB,cAAc,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,oCAAoC;YAC7E,wCAAwC,EAC1C,OAAO,CACR,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAoB;IAC3D,MAAM,OAAO,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAE7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,iBAAiB,CACzB,6CAA6C;YAC3C,SAAS,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,oBAAoB;YAC3D,6EAA6E,EAC/E,OAAO,CACR,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,iBAAiB,CACzB,cAAc,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,qCAAqC;YAC9E,wCAAwC,EAC1C,OAAO,CACR,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,iBAAiB,CACzB,2FAA2F,EAC3F,OAAO,CACR,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAA6B;IAC9D,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC,CAAC;QAC9F,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GACP,OAAO,CAAC,MAAM,KAAK,cAAc;QAC/B,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,oCAAoC,CAAC;QACpD,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,kBAAkB,OAAO,CAAC,KAAK,IAAI,MAAM,MAAM,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QAC9F,GAAG,CACN,CAAC;IACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,aAAa,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CACtF,CAAC;IACF,IAAI,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,UAAU,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,IAAI,GAAG,YAAY,OAAO,CAAC,IAAI,kBAAkB,CAC5F,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"entitlements.js","sourceRoot":"","sources":["../../src/auth/entitlements.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
- import { exec } from 'child_process';
2
- export function openBrowser(url) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.openBrowser = openBrowser;
4
+ const child_process_1 = require("child_process");
5
+ function openBrowser(url) {
3
6
  const platform = process.platform;
4
7
  let command;
5
8
  if (platform === 'win32') {
@@ -11,7 +14,7 @@ export function openBrowser(url) {
11
14
  else {
12
15
  command = `xdg-open "${url}"`;
13
16
  }
14
- exec(command, (err) => {
17
+ (0, child_process_1.exec)(command, (err) => {
15
18
  if (err) {
16
19
  console.log(` Open this URL in your browser:\n ${url}`);
17
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"open-browser.js","sourceRoot":"","sources":["../../src/auth/open-browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,IAAI,OAAe,CAAC;IAEpB,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,GAAG,aAAa,GAAG,GAAG,CAAC;IAChC,CAAC;SAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,GAAG,SAAS,GAAG,GAAG,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,aAAa,GAAG,GAAG,CAAC;IAChC,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACpB,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,GAAG,CAAC,uCAAuC,GAAG,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"open-browser.js","sourceRoot":"","sources":["../../src/auth/open-browser.ts"],"names":[],"mappings":";;AAEA,kCAiBC;AAnBD,iDAAqC;AAErC,SAAgB,WAAW,CAAC,GAAW;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,IAAI,OAAe,CAAC;IAEpB,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,GAAG,aAAa,GAAG,GAAG,CAAC;IAChC,CAAC;SAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,GAAG,SAAS,GAAG,GAAG,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,aAAa,GAAG,GAAG,CAAC;IAChC,CAAC;IAED,IAAA,oBAAI,EAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACpB,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,GAAG,CAAC,uCAAuC,GAAG,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,4 +1,11 @@
1
- export const PRO_FEATURES = [
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TEAM_FEATURES = exports.PRO_FEATURES = void 0;
4
+ exports.normalizePlan = normalizePlan;
5
+ exports.planIncludesFeature = planIncludesFeature;
6
+ exports.isTeamOrEnterprise = isTeamOrEnterprise;
7
+ exports.planDisplayName = planDisplayName;
8
+ exports.PRO_FEATURES = [
2
9
  'prompt',
3
10
  'repo_memory',
4
11
  'cloud_sync',
@@ -6,15 +13,15 @@ export const PRO_FEATURES = [
6
13
  'api_access',
7
14
  'priority_support',
8
15
  ];
9
- export const TEAM_FEATURES = ['team_cloud', 'org_policies', 'audit_events'];
10
- export function normalizePlan(plan) {
16
+ exports.TEAM_FEATURES = ['team_cloud', 'org_policies', 'audit_events'];
17
+ function normalizePlan(plan) {
11
18
  const p = (plan || 'free').toLowerCase();
12
19
  if (p === 'pro' || p === 'team' || p === 'enterprise') {
13
20
  return p;
14
21
  }
15
22
  return 'free';
16
23
  }
17
- export function planIncludesFeature(plan, feature) {
24
+ function planIncludesFeature(plan, feature) {
18
25
  if (feature === 'prompt' ||
19
26
  feature === 'repo_memory' ||
20
27
  feature === 'cloud_sync' ||
@@ -28,10 +35,10 @@ export function planIncludesFeature(plan, feature) {
28
35
  }
29
36
  return false;
30
37
  }
31
- export function isTeamOrEnterprise(plan) {
38
+ function isTeamOrEnterprise(plan) {
32
39
  return plan === 'team' || plan === 'enterprise';
33
40
  }
34
- export function planDisplayName(plan) {
41
+ function planDisplayName(plan) {
35
42
  return plan.charAt(0).toUpperCase() + plan.slice(1);
36
43
  }
37
44
  //# sourceMappingURL=plans.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plans.js","sourceRoot":"","sources":["../../src/auth/plans.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ;IACR,aAAa;IACb,YAAY;IACZ,mBAAmB;IACnB,YAAY;IACZ,kBAAkB;CACV,CAAC;AAGX,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,YAAY,EAAE,cAAc,EAAE,cAAc,CAAU,CAAC;AAGrF,MAAM,UAAU,aAAa,CAAC,IAAwB;IACpD,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IACzC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,YAAY,EAAE,CAAC;QACtD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,IAAsB,EACtB,OAAiC;IAEjC,IACE,OAAO,KAAK,QAAQ;QACpB,OAAO,KAAK,aAAa;QACzB,OAAO,KAAK,YAAY;QACxB,OAAO,KAAK,mBAAmB;QAC/B,OAAO,KAAK,YAAY;QACxB,OAAO,KAAK,kBAAkB,EAC9B,CAAC;QACD,OAAO,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,YAAY,CAAC;IACpE,CAAC;IACD,IAAI,OAAO,KAAK,YAAY,IAAI,OAAO,KAAK,cAAc,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;QACzF,OAAO,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,YAAY,CAAC;IAClD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAsB;IACvD,OAAO,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,YAAY,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAsB;IACpD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"plans.js","sourceRoot":"","sources":["../../src/auth/plans.ts"],"names":[],"mappings":";;;AAeA,sCAMC;AAED,kDAkBC;AAED,gDAEC;AAED,0CAEC;AA/CY,QAAA,YAAY,GAAG;IAC1B,QAAQ;IACR,aAAa;IACb,YAAY;IACZ,mBAAmB;IACnB,YAAY;IACZ,kBAAkB;CACV,CAAC;AAGE,QAAA,aAAa,GAAG,CAAC,YAAY,EAAE,cAAc,EAAE,cAAc,CAAU,CAAC;AAGrF,SAAgB,aAAa,CAAC,IAAwB;IACpD,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IACzC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,YAAY,EAAE,CAAC;QACtD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,mBAAmB,CACjC,IAAsB,EACtB,OAAiC;IAEjC,IACE,OAAO,KAAK,QAAQ;QACpB,OAAO,KAAK,aAAa;QACzB,OAAO,KAAK,YAAY;QACxB,OAAO,KAAK,mBAAmB;QAC/B,OAAO,KAAK,YAAY;QACxB,OAAO,KAAK,kBAAkB,EAC9B,CAAC;QACD,OAAO,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,YAAY,CAAC;IACpE,CAAC;IACD,IAAI,OAAO,KAAK,YAAY,IAAI,OAAO,KAAK,cAAc,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;QACzF,OAAO,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,YAAY,CAAC;IAClD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,kBAAkB,CAAC,IAAsB;IACvD,OAAO,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,YAAY,CAAC;AAClD,CAAC;AAED,SAAgB,eAAe,CAAC,IAAsB;IACpD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC"}
@@ -1,23 +1,28 @@
1
- import { describe, it } from 'node:test';
2
- import assert from 'node:assert/strict';
3
- import { normalizePlan, planIncludesFeature } from './plans';
4
- describe('plans', () => {
5
- it('enables prompt for pro and above', () => {
6
- assert.equal(planIncludesFeature('pro', 'prompt'), true);
7
- assert.equal(planIncludesFeature('pro', 'api_access'), true);
8
- assert.equal(planIncludesFeature('pro', 'advanced_analysis'), true);
9
- assert.equal(planIncludesFeature('team', 'prompt'), true);
10
- assert.equal(planIncludesFeature('free', 'prompt'), false);
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const strict_1 = __importDefault(require("node:assert/strict"));
8
+ const plans_1 = require("./plans");
9
+ (0, node_test_1.describe)('plans', () => {
10
+ (0, node_test_1.it)('enables prompt for pro and above', () => {
11
+ strict_1.default.equal((0, plans_1.planIncludesFeature)('pro', 'prompt'), true);
12
+ strict_1.default.equal((0, plans_1.planIncludesFeature)('pro', 'api_access'), true);
13
+ strict_1.default.equal((0, plans_1.planIncludesFeature)('pro', 'advanced_analysis'), true);
14
+ strict_1.default.equal((0, plans_1.planIncludesFeature)('team', 'prompt'), true);
15
+ strict_1.default.equal((0, plans_1.planIncludesFeature)('free', 'prompt'), false);
11
16
  });
12
- it('enables team cloud only for team and enterprise', () => {
13
- assert.equal(planIncludesFeature('team', 'team_cloud'), true);
14
- assert.equal(planIncludesFeature('pro', 'team_cloud'), false);
15
- assert.equal(planIncludesFeature('enterprise', 'audit_events'), true);
17
+ (0, node_test_1.it)('enables team cloud only for team and enterprise', () => {
18
+ strict_1.default.equal((0, plans_1.planIncludesFeature)('team', 'team_cloud'), true);
19
+ strict_1.default.equal((0, plans_1.planIncludesFeature)('pro', 'team_cloud'), false);
20
+ strict_1.default.equal((0, plans_1.planIncludesFeature)('enterprise', 'audit_events'), true);
16
21
  });
17
- it('normalizes plan names case-insensitively', () => {
18
- assert.equal(normalizePlan('invalid'), 'free');
19
- assert.equal(normalizePlan('PRO'), 'pro');
20
- assert.equal(normalizePlan('Team'), 'team');
22
+ (0, node_test_1.it)('normalizes plan names case-insensitively', () => {
23
+ strict_1.default.equal((0, plans_1.normalizePlan)('invalid'), 'free');
24
+ strict_1.default.equal((0, plans_1.normalizePlan)('PRO'), 'pro');
25
+ strict_1.default.equal((0, plans_1.normalizePlan)('Team'), 'team');
21
26
  });
22
27
  });
23
28
  //# sourceMappingURL=plans.test.js.map