affitor 0.4.1 → 0.4.3

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 (52) hide show
  1. package/README.md +29 -16
  2. package/dist/cli.js +0 -0
  3. package/dist/commands/init.d.ts +10 -0
  4. package/dist/commands/init.d.ts.map +1 -1
  5. package/dist/commands/init.js +7 -3
  6. package/dist/commands/init.js.map +1 -1
  7. package/dist/commands/login.d.ts +1 -0
  8. package/dist/commands/login.d.ts.map +1 -1
  9. package/dist/commands/login.js +18 -11
  10. package/dist/commands/login.js.map +1 -1
  11. package/dist/commands/onboard.d.ts +8 -1
  12. package/dist/commands/onboard.d.ts.map +1 -1
  13. package/dist/commands/onboard.js +29 -1
  14. package/dist/commands/onboard.js.map +1 -1
  15. package/dist/commands/setup-stripe.d.ts +6 -0
  16. package/dist/commands/setup-stripe.d.ts.map +1 -1
  17. package/dist/commands/setup-stripe.js +18 -145
  18. package/dist/commands/setup-stripe.js.map +1 -1
  19. package/dist/commands/status.d.ts +2 -0
  20. package/dist/commands/status.d.ts.map +1 -1
  21. package/dist/commands/status.js +34 -11
  22. package/dist/commands/status.js.map +1 -1
  23. package/dist/commands/test.d.ts +2 -0
  24. package/dist/commands/test.d.ts.map +1 -1
  25. package/dist/commands/test.js +5 -5
  26. package/dist/commands/test.js.map +1 -1
  27. package/dist/commands/whoami.d.ts.map +1 -1
  28. package/dist/commands/whoami.js +3 -0
  29. package/dist/commands/whoami.js.map +1 -1
  30. package/dist/lib/api-client.d.ts +30 -10
  31. package/dist/lib/api-client.d.ts.map +1 -1
  32. package/dist/lib/api-client.js +128 -14
  33. package/dist/lib/api-client.js.map +1 -1
  34. package/dist/lib/config.d.ts +25 -0
  35. package/dist/lib/config.d.ts.map +1 -1
  36. package/dist/lib/config.js +60 -13
  37. package/dist/lib/config.js.map +1 -1
  38. package/dist/lib/inject.js +2 -2
  39. package/dist/lib/inject.js.map +1 -1
  40. package/dist/lib/logger.d.ts +8 -0
  41. package/dist/lib/logger.d.ts.map +1 -1
  42. package/dist/lib/logger.js +10 -0
  43. package/dist/lib/logger.js.map +1 -1
  44. package/dist/types.d.ts +1 -11
  45. package/dist/types.d.ts.map +1 -1
  46. package/dist/types.js +0 -11
  47. package/dist/types.js.map +1 -1
  48. package/package.json +1 -2
  49. package/dist/lib/stripe-oauth.d.ts +0 -15
  50. package/dist/lib/stripe-oauth.d.ts.map +0 -1
  51. package/dist/lib/stripe-oauth.js +0 -168
  52. package/dist/lib/stripe-oauth.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"setup-stripe.js","sourceRoot":"","sources":["../../src/commands/setup-stripe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-stripe.js","sourceRoot":"","sources":["../../src/commands/setup-stripe.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
1
  import type { Command } from "commander";
2
+ import type { CLIFlags } from "../types.js";
2
3
  export declare function registerStatusCommand(program: Command): void;
4
+ export declare function runStatus(flags: CLIFlags): Promise<void>;
3
5
  //# sourceMappingURL=status.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAOrD"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QAOrD;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,QAAQ,iBAuG9C"}
@@ -1,6 +1,6 @@
1
1
  import * as logger from "../lib/logger.js";
2
2
  import { format } from "../lib/logger.js";
3
- import { readConfig, ConfigNotFoundError } from "../lib/config.js";
3
+ import { readConfigOrKeyOnly, ConfigNotFoundError, apiKeySourceLabel } from "../lib/config.js";
4
4
  import { AffitorAPI, APIError, NetworkError } from "../lib/api-client.js";
5
5
  import { getFlags } from "../lib/flags.js";
6
6
  export function registerStatusCommand(program) {
@@ -11,10 +11,10 @@ export function registerStatusCommand(program) {
11
11
  await runStatus(getFlags(cmd));
12
12
  });
13
13
  }
14
- async function runStatus(flags) {
14
+ export async function runStatus(flags) {
15
15
  let config;
16
16
  try {
17
- config = readConfig();
17
+ config = readConfigOrKeyOnly(flags);
18
18
  }
19
19
  catch (err) {
20
20
  if (err instanceof ConfigNotFoundError) {
@@ -25,9 +25,9 @@ async function runStatus(flags) {
25
25
  }
26
26
  throw err;
27
27
  }
28
- const api = AffitorAPI.fromFlags({ apiKey: flags.apiKey, apiUrl: flags.apiUrl ?? config.api_url });
28
+ const api = AffitorAPI.fromFlags({ apiKey: flags.apiKey, apiUrl: flags.apiUrl ?? config?.api_url });
29
29
  try {
30
- const status = await api.getStatus(config.program_id);
30
+ const status = await api.getStatus(config?.program_id);
31
31
  if (flags.json) {
32
32
  logger.json(status);
33
33
  return;
@@ -46,12 +46,15 @@ async function runStatus(flags) {
46
46
  ? "ok"
47
47
  : "warn"
48
48
  : "error";
49
+ // The config's domain when there is one; otherwise the website the API returns, which keeps
50
+ // its path ("example.com/pricing/"), reduced to its hostname for the DNS hint.
51
+ const domain = config?.domain ?? hostnameOf(status.domain);
49
52
  // Find max for progress bars
50
53
  const events = status.recent_events;
51
54
  const maxEvent = Math.max(events.clicks_24h, events.leads_24h, events.sales_24h, 1);
52
55
  logger.banner();
53
56
  logger.titledBox(status.name, [
54
- ` ${format.dim(config.domain)}`,
57
+ ` ${format.dim(domain)}`,
55
58
  ` ${format.dim("ID:")} ${status.program_id}`,
56
59
  "",
57
60
  ` ${format.bold("Integrations")}`,
@@ -66,18 +69,28 @@ async function runStatus(flags) {
66
69
  ` ${format.dim("Partners:")} ${format.bold(String(status.active_partners))} ${format.dim("Pending:")} ${format.bold(String(status.pending_commissions))}`,
67
70
  ]);
68
71
  // Action hints
69
- if (!status.dns_verified) {
70
- logger.step(`DNS: Add CNAME t.${config.domain} → track.affitor.com`);
72
+ if (!status.dns_verified && domain) {
73
+ logger.step(`DNS: Add CNAME t.${domain} → track.affitor.com`);
71
74
  }
72
75
  if (!status.stripe_connected) {
73
- logger.step("Stripe: Run npx affitor setup stripe");
76
+ logger.step("Stripe: Connect it in the Affitor dashboard (program Settings, Connect Stripe)");
74
77
  }
75
78
  }
76
79
  catch (err) {
77
80
  if (err instanceof APIError) {
78
- if (err.status === 401) {
81
+ if (err.code === "api_key_rotation_required") {
82
+ // The key was retired on purpose: a new one is the only fix, and the API
83
+ // already says by when and where. Do not bury that under the generic 401.
84
+ logger.error(err.message);
85
+ }
86
+ else if (err.status === 401) {
87
+ // Regenerating is what returns a working key for a program that already exists, and
88
+ // only a workspace owner of that program can do it. The new key then has to land where
89
+ // this command actually reads one: `--api-key` wins over the environment, so naming
90
+ // only AFFITOR_API_KEY would leave the refused key on the wire.
79
91
  logger.error("API key expired or invalid.\n" +
80
- " Run `npx affitor init` to get a new API key.");
92
+ ` Ask a workspace owner of ${config ? `program ${config.program_id}` : "the program"} to open Affitor → Settings → API Key and click Regenerate.\n` +
93
+ ` Then replace the key in ${apiKeySourceLabel(flags)} with the new one.`);
81
94
  }
82
95
  else {
83
96
  logger.error(`API error: ${err.message}`);
@@ -98,4 +111,14 @@ async function runStatus(flags) {
98
111
  process.exit(1);
99
112
  }
100
113
  }
114
+ function hostnameOf(site) {
115
+ if (!site)
116
+ return "";
117
+ try {
118
+ return new URL(/^[a-z][a-z0-9+.-]*:\/\//i.test(site) ? site : `https://${site}`).hostname;
119
+ }
120
+ catch {
121
+ return "";
122
+ }
123
+ }
101
124
  //# sourceMappingURL=status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
1
  import type { Command } from "commander";
2
+ import type { CLIFlags } from "../types.js";
2
3
  export declare function registerTestCommand(program: Command): void;
4
+ export declare function runTest(eventType: string | undefined, flags: CLIFlags): Promise<void>;
3
5
  //# sourceMappingURL=test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QAOnD"}
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QAOnD;AAED,wBAAsB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,QAAQ,iBA6E3E"}
@@ -1,6 +1,6 @@
1
1
  import * as logger from "../lib/logger.js";
2
2
  import { format } from "../lib/logger.js";
3
- import { readConfig, ConfigNotFoundError } from "../lib/config.js";
3
+ import { readConfigOrKeyOnly, ConfigNotFoundError } from "../lib/config.js";
4
4
  import { AffitorAPI, APIError, NetworkError } from "../lib/api-client.js";
5
5
  import { getFlags } from "../lib/flags.js";
6
6
  export function registerTestCommand(program) {
@@ -11,10 +11,10 @@ export function registerTestCommand(program) {
11
11
  await runTest(eventType, getFlags(cmd));
12
12
  });
13
13
  }
14
- async function runTest(eventType, flags) {
14
+ export async function runTest(eventType, flags) {
15
15
  let config;
16
16
  try {
17
- config = readConfig();
17
+ config = readConfigOrKeyOnly(flags);
18
18
  }
19
19
  catch (err) {
20
20
  if (err instanceof ConfigNotFoundError) {
@@ -35,11 +35,11 @@ async function runTest(eventType, flags) {
35
35
  logger.json({ error: "invalid_event_type" });
36
36
  process.exit(1);
37
37
  }
38
- const api = AffitorAPI.fromFlags({ apiKey: flags.apiKey, apiUrl: flags.apiUrl ?? config.api_url });
38
+ const api = AffitorAPI.fromFlags({ apiKey: flags.apiKey, apiUrl: flags.apiUrl ?? config?.api_url });
39
39
  logger.newline();
40
40
  try {
41
41
  const result = await api.sendTestEvent({
42
- program_id: config.program_id,
42
+ program_id: config?.program_id,
43
43
  event_type: type,
44
44
  });
45
45
  if (flags.json) {
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,QAuCpD"}
1
+ {"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,QA0CpD"}
@@ -11,6 +11,9 @@ export function registerWhoamiCommand(parent) {
11
11
  if (!creds) {
12
12
  if (flags.json) {
13
13
  logger.json({ logged_in: false });
14
+ // Same exit code as the text mode below. exitCode, not exit(), so the
15
+ // JSON reaches a piped stdout before the process ends.
16
+ process.exitCode = 1;
14
17
  return;
15
18
  }
16
19
  logger.info("");
@@ -1 +1 @@
1
- {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAE3C,MAAM,UAAU,qBAAqB,CAAC,MAAe;IACnD,MAAM;SACH,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;QAEhC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClC,OAAO;YACT,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;YACjF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,IAAI;gBAC1C,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAC5E,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;YAC1B,kBAAkB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACxC,kBAAkB,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACzD,kBAAkB,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;SAC/E,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAE3C,MAAM,UAAU,qBAAqB,CAAC,MAAe;IACnD,MAAM;SACH,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;QAEhC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClC,sEAAsE;gBACtE,uDAAuD;gBACvD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;YACjF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,IAAI;gBAC1C,UAAU,EAAE,KAAK,CAAC,UAAU;aAC7B,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAC5E,CAAC;QAEF,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE;YAC1B,kBAAkB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACxC,kBAAkB,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACzD,kBAAkB,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;SAC/E,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { InitResponse, StripeConnectResponse, ProgramStatus, ProgramSummary, TestEventResult, ReadinessResult, VerificationChainResult } from "../types.js";
1
+ import type { InitResponse, ProgramStatus, ProgramSummary, TestEventResult, ReadinessResult, VerificationChainResult } from "../types.js";
2
2
  export interface AuthStartResponse {
3
3
  state: string;
4
4
  auth_url: string;
@@ -14,6 +14,13 @@ export interface AuthPollResponse {
14
14
  export declare class AffitorAPI {
15
15
  private apiUrl;
16
16
  private apiKey?;
17
+ /**
18
+ * Warning codes this client has already printed. A flagged key warns on every
19
+ * response, so one command would otherwise print the same line once per request
20
+ * it makes. A command builds one client, so this lasts exactly one run: a second
21
+ * client, or a second run in the same process, warns again.
22
+ */
23
+ private reportedWarnings;
17
24
  constructor(opts?: {
18
25
  apiUrl?: string;
19
26
  apiKey?: string;
@@ -35,18 +42,12 @@ export declare class AffitorAPI {
35
42
  duration_months?: number;
36
43
  advertiser_id?: number;
37
44
  }): Promise<InitResponse>;
38
- saveStripeConnection(data: {
39
- program_id: string;
40
- stripe_user_id: string;
41
- webhook_endpoint_id: string;
42
- webhook_secret: string;
43
- }): Promise<StripeConnectResponse>;
44
- getStatus(programId: string): Promise<ProgramStatus>;
45
+ getStatus(programId?: string): Promise<ProgramStatus>;
45
46
  authStart(): Promise<AuthStartResponse>;
46
47
  authPoll(state: string): Promise<AuthPollResponse>;
47
48
  listPrograms(): Promise<ProgramSummary[]>;
48
49
  sendTestEvent(data: {
49
- program_id: string;
50
+ program_id?: string;
50
51
  event_type: "click" | "lead" | "sale";
51
52
  }): Promise<TestEventResult>;
52
53
  /**
@@ -73,11 +74,30 @@ export declare class AffitorAPI {
73
74
  apiKey?: string;
74
75
  apiUrl?: string;
75
76
  }): Promise<VerificationChainResult>;
77
+ /** Forget which warnings this client has printed, so they are printed again. */
78
+ resetReportedWarnings(): void;
79
+ /** Print each new `warnings[]` entry as one stderr line: what is wrong, what to do. */
80
+ private reportWarnings;
81
+ /**
82
+ * Print the rotation signal the API sets in headers on EVERY response made with a
83
+ * flagged key — `Deprecation` (RFC 9745), `Sunset` (RFC 8594) and a `deprecation`
84
+ * link. Past the deadline the API answers 401 and drops `warnings[]`, so these
85
+ * headers are the only thing left saying why (W37-1362).
86
+ *
87
+ * Shares `reportedWarnings` with the body warning under one key, so a response
88
+ * carrying both prints once. Anything missing or unparseable is skipped in
89
+ * silence: a side signal must never break a command that is otherwise working.
90
+ */
91
+ private reportDeprecationHeaders;
76
92
  private request;
77
93
  }
78
94
  export declare class APIError extends Error {
79
95
  status: number;
80
- constructor(status: number, message: string);
96
+ /** The API's own error code, when it sent one (e.g. api_key_rotation_required). */
97
+ code?: string | undefined;
98
+ constructor(status: number, message: string,
99
+ /** The API's own error code, when it sent one (e.g. api_key_rotation_required). */
100
+ code?: string | undefined);
81
101
  }
82
102
  export declare class NetworkError extends Error {
83
103
  constructor(message: string);
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,eAAe,EACf,eAAe,EACf,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AASD,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO;IAK3D;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU;IAQjF,WAAW,CAAC,IAAI,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO,CAAC,YAAY,CAAC;IAOnB,oBAAoB,CAAC,IAAI,EAAE;QAC/B,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,cAAc,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAO5B,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAQpD,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAMvC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAQlD,YAAY,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIzC,aAAa,CAAC,IAAI,EAAE;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;KACvC,GAAG,OAAO,CAAC,eAAe,CAAC;IAS5B;;;;OAIG;IACG,YAAY,CAAC,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IAO7F;;;;;;;;;;OAUG;IACG,oBAAoB,CACxB,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAC9C,OAAO,CAAC,uBAAuB,CAAC;YA8CrB,OAAO;CA+DtB;AAED,qBAAa,QAAS,SAAQ,KAAK;IAExB,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM;CAKlB;AAED,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B"}
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,eAAe,EACf,eAAe,EACf,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAiDD,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB,CAAqB;gBAEjC,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO;IAK3D;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU;IAQjF,WAAW,CAAC,IAAI,EAAE;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO,CAAC,YAAY,CAAC;IAOnB,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAQrD,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAMvC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAQlD,YAAY,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIzC,aAAa,CAAC,IAAI,EAAE;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;KACvC,GAAG,OAAO,CAAC,eAAe,CAAC;IAS5B;;;;OAIG;IACG,YAAY,CAAC,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IAO7F;;;;;;;;;;OAUG;IACG,oBAAoB,CACxB,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAC9C,OAAO,CAAC,uBAAuB,CAAC;IAgDnC,gFAAgF;IAChF,qBAAqB,IAAI,IAAI;IAI7B,uFAAuF;IACvF,OAAO,CAAC,cAAc;IAatB;;;;;;;;;OASG;IACH,OAAO,CAAC,wBAAwB;YA4BlB,OAAO;CAyFtB;AAED,qBAAa,QAAS,SAAQ,KAAK;IAExB,MAAM,EAAE,MAAM;IAErB,mFAAmF;IAC5E,IAAI,CAAC,EAAE,MAAM;gBAHb,MAAM,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM;IACf,mFAAmF;IAC5E,IAAI,CAAC,EAAE,MAAM,YAAA;CAKvB;AAED,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B"}
@@ -1,9 +1,45 @@
1
1
  import { DEFAULT_API_URL } from "../types.js";
2
2
  import * as logger from "./logger.js";
3
3
  import { resolveApiKey } from "./config.js";
4
+ /**
5
+ * The dedupe key the body warning and the response headers share. Both say the same
6
+ * thing about the same key, so whichever arrives first speaks and the other stays
7
+ * quiet — the body wins when it is there, because it carries a hint as well.
8
+ */
9
+ const ROTATION_KEY = "api_key_rotation_required";
10
+ /** The `Sunset` deadline as a plain date, or undefined if it will not parse. */
11
+ function parseSunset(sunset) {
12
+ if (!sunset)
13
+ return undefined;
14
+ const at = new Date(sunset);
15
+ // An unparseable date is a signal we cannot use, not a reason to fail the command.
16
+ if (Number.isNaN(at.getTime()))
17
+ return undefined;
18
+ return at.toISOString().slice(0, 10);
19
+ }
20
+ /** The URL out of `Link: <url>; rel="deprecation"`, ignoring links with any other rel. */
21
+ function parseDeprecationLink(link) {
22
+ if (!link)
23
+ return undefined;
24
+ for (const entry of link.split(",")) {
25
+ if (!/rel\s*=\s*"?deprecation"?/i.test(entry))
26
+ continue;
27
+ const url = /<([^>]+)>/.exec(entry);
28
+ if (url)
29
+ return url[1].trim();
30
+ }
31
+ return undefined;
32
+ }
4
33
  export class AffitorAPI {
5
34
  apiUrl;
6
35
  apiKey;
36
+ /**
37
+ * Warning codes this client has already printed. A flagged key warns on every
38
+ * response, so one command would otherwise print the same line once per request
39
+ * it makes. A command builds one client, so this lasts exactly one run: a second
40
+ * client, or a second run in the same process, warns again.
41
+ */
42
+ reportedWarnings = new Set();
7
43
  constructor(opts = {}) {
8
44
  this.apiUrl = opts.apiUrl ?? DEFAULT_API_URL;
9
45
  this.apiKey = opts.apiKey;
@@ -25,14 +61,8 @@ export class AffitorAPI {
25
61
  body: data,
26
62
  });
27
63
  }
28
- async saveStripeConnection(data) {
29
- return this.request("/api/v1/cli/stripe-connect", {
30
- method: "POST",
31
- body: data,
32
- });
33
- }
34
64
  async getStatus(programId) {
35
- return this.request(`/api/v1/cli/status?program_id=${programId}`);
65
+ return this.request(programId ? `/api/v1/cli/status?program_id=${programId}` : "/api/v1/cli/status");
36
66
  }
37
67
  // ─── Auth endpoints ───────────────────────────────────────────
38
68
  async authStart() {
@@ -99,6 +129,8 @@ export class AffitorAPI {
99
129
  throw new NetworkError(err.message);
100
130
  }
101
131
  const body = (await res.json().catch(() => ({})));
132
+ this.reportWarnings(body);
133
+ this.reportDeprecationHeaders(res);
102
134
  if (res.ok) {
103
135
  // Server returns { data: { verdict, attributed, ... } } or the bare object.
104
136
  return (body.data ?? body);
@@ -115,6 +147,61 @@ export class AffitorAPI {
115
147
  ...(retryAfter !== undefined ? { retry_after_seconds: retryAfter } : {}),
116
148
  };
117
149
  }
150
+ /** Forget which warnings this client has printed, so they are printed again. */
151
+ resetReportedWarnings() {
152
+ this.reportedWarnings.clear();
153
+ }
154
+ /** Print each new `warnings[]` entry as one stderr line: what is wrong, what to do. */
155
+ reportWarnings(body) {
156
+ const warnings = body?.warnings;
157
+ if (!Array.isArray(warnings))
158
+ return;
159
+ for (const warning of warnings) {
160
+ if (!warning?.message)
161
+ continue;
162
+ const key = warning.code ?? warning.message;
163
+ if (this.reportedWarnings.has(key))
164
+ continue;
165
+ this.reportedWarnings.add(key);
166
+ logger.notice(warning.hint ? `${warning.message} ${warning.hint}` : warning.message);
167
+ }
168
+ }
169
+ /**
170
+ * Print the rotation signal the API sets in headers on EVERY response made with a
171
+ * flagged key — `Deprecation` (RFC 9745), `Sunset` (RFC 8594) and a `deprecation`
172
+ * link. Past the deadline the API answers 401 and drops `warnings[]`, so these
173
+ * headers are the only thing left saying why (W37-1362).
174
+ *
175
+ * Shares `reportedWarnings` with the body warning under one key, so a response
176
+ * carrying both prints once. Anything missing or unparseable is skipped in
177
+ * silence: a side signal must never break a command that is otherwise working.
178
+ */
179
+ reportDeprecationHeaders(res) {
180
+ let deprecation = null;
181
+ let sunset = null;
182
+ let link = null;
183
+ try {
184
+ deprecation = res.headers?.get("Deprecation") ?? null;
185
+ sunset = res.headers?.get("Sunset") ?? null;
186
+ link = res.headers?.get("Link") ?? null;
187
+ }
188
+ catch {
189
+ return;
190
+ }
191
+ if (!deprecation && !sunset)
192
+ return;
193
+ if (this.reportedWarnings.has(ROTATION_KEY))
194
+ return;
195
+ this.reportedWarnings.add(ROTATION_KEY);
196
+ const by = parseSunset(sunset);
197
+ const docs = parseDeprecationLink(link);
198
+ logger.notice([
199
+ by ? `This API key must be replaced by ${by}.` : "This API key must be replaced.",
200
+ docs ? `See ${docs}` : undefined,
201
+ ]
202
+ .filter(Boolean)
203
+ .join(" "));
204
+ }
118
205
  async request(path, opts = {}) {
119
206
  const url = `${opts.apiUrl ?? this.apiUrl}${path}`;
120
207
  const key = opts.apiKey ?? this.apiKey;
@@ -134,23 +221,46 @@ export class AffitorAPI {
134
221
  headers,
135
222
  body: opts.body ? JSON.stringify(opts.body) : undefined,
136
223
  });
224
+ // `warnings` sits beside `data`, and the API attaches it to an error
225
+ // response too: a key inside its rotation window still has to hear about
226
+ // the deadline while a call fails for an unrelated reason. So read the
227
+ // body once and report before branching on status. A body that will not
228
+ // parse only matters on a 2xx, where it was the payload.
229
+ let body = {};
230
+ let bodyError;
231
+ try {
232
+ body = await res.json();
233
+ }
234
+ catch (err) {
235
+ bodyError = err;
236
+ }
237
+ this.reportWarnings(body);
238
+ // After the body, so the richer body warning claims the shared key, and
239
+ // before every branch below, so a 429 or a 401 reports too — the 401 past
240
+ // the deadline has nothing but these headers.
241
+ this.reportDeprecationHeaders(res);
137
242
  if (res.status === 429) {
138
243
  const retryAfter = res.headers.get("Retry-After");
139
244
  const wait = retryAfter ? parseInt(retryAfter, 10) * 1000 : 5000;
140
245
  throw new APIError(429, `Rate limited. Wait ${Math.ceil(wait / 1000)} seconds and try again.`);
141
246
  }
142
247
  if (!res.ok) {
143
- const body = (await res.json().catch(() => ({})));
248
+ const errorBody = (body ?? {});
144
249
  // Strapi returns errors as an object ({ error: { message, ... } }),
145
250
  // but some endpoints return { error: "string" } or { message }.
146
251
  // Extract a string so we never surface "[object Object]".
147
- const rawError = body.error;
148
- const message = (typeof rawError === "string" ? rawError : rawError?.message) ??
149
- body.message ??
252
+ const rawError = errorBody.error;
253
+ const errObject = typeof rawError === "object" && rawError !== null ? rawError : undefined;
254
+ const message = (typeof rawError === "string" ? rawError : errObject?.message) ??
255
+ errorBody.message ??
150
256
  `API returned ${res.status}`;
151
- throw new APIError(res.status, message);
257
+ // A `hint` means the caller has to do something specific rather than retry
258
+ // (a retired key needs a new key), so keep it attached to the message, and
259
+ // keep `code` so a command can tell that case from a plain bad key.
260
+ throw new APIError(res.status, errObject?.hint ? `${message} ${errObject.hint}` : message, errObject?.code);
152
261
  }
153
- const body = await res.json();
262
+ if (bodyError)
263
+ throw bodyError;
154
264
  return body.data ?? body;
155
265
  }
156
266
  catch (err) {
@@ -169,9 +279,13 @@ export class AffitorAPI {
169
279
  }
170
280
  export class APIError extends Error {
171
281
  status;
172
- constructor(status, message) {
282
+ code;
283
+ constructor(status, message,
284
+ /** The API's own error code, when it sent one (e.g. api_key_rotation_required). */
285
+ code) {
173
286
  super(message);
174
287
  this.status = status;
288
+ this.code = code;
175
289
  this.name = "APIError";
176
290
  }
177
291
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAU9C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAuB5C,MAAM,OAAO,UAAU;IACb,MAAM,CAAS;IACf,MAAM,CAAU;IAExB,YAAY,OAA6C,EAAE;QACzD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,eAAe,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,KAA2C,EAAE,GAAY;QACxE,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACzC,OAAO,IAAI,UAAU,CAAC;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,eAAe;YACvC,MAAM,EAAE,MAAM,IAAI,SAAS;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAQjB;QACC,OAAO,IAAI,CAAC,OAAO,CAAe,kBAAkB,EAAE;YACpD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAK1B;QACC,OAAO,IAAI,CAAC,OAAO,CAAwB,4BAA4B,EAAE;YACvE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB;QAC/B,OAAO,IAAI,CAAC,OAAO,CACjB,iCAAiC,SAAS,EAAE,CAC7C,CAAC;IACJ,CAAC;IAED,iEAAiE;IAEjE,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,OAAO,CAAoB,wBAAwB,EAAE;YAC/D,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,OAAO,CACjB,+BAA+B,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAC3D,CAAC;IACJ,CAAC;IAED,mEAAmE;IAEnE,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,OAAO,CAAmB,sBAAsB,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAGnB;QACC,OAAO,IAAI,CAAC,OAAO,CAAkB,wBAAwB,EAAE;YAC7D,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC;IAED,mEAAmE;IAEnE;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAAC,OAA6C,EAAE;QAChE,OAAO,IAAI,CAAC,OAAO,CAAkB,+BAA+B,EAAE;YACpE,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,oBAAoB,CACxB,OAA6C,EAAE;QAE/C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QACvC,MAAM,GAAG,GAAG,GAAG,MAAM,wBAAwB,CAAC;QAE9C,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,mBAAmB;SAClC,CAAC;QACF,IAAI,GAAG;YAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,GAAG,EAAE,CAAC;QAEpD,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,iBAAiB,CAAC,CAAC;QAE3C,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBACrB,MAAM,EAAE,MAAM;gBACd,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;aACxC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,YAAY,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAA4B,CAAC;QAE7E,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACX,4EAA4E;YAC5E,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAA4B,CAAC;QACxD,CAAC;QAED,4EAA4E;QAC5E,+EAA+E;QAC/E,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAoD,CAAC;QACrF,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACnD,MAAM,UAAU,GACd,MAAM,CAAC,mBAAmB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAEtF,OAAO;YACL,GAAI,IAAgC;YACpC,WAAW,EAAE,GAAG,CAAC,MAAM;YACvB,YAAY,EAAE,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc;YAClE,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,IAAY,EAAE,OAAuB,EAAE;QAC9D,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QAEvC,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,mBAAmB;SAClC,CAAC;QACF,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,GAAG,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;QAE/C,IAAI,SAA4B,CAAC;QACjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;oBAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;oBAC5B,OAAO;oBACP,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;iBACxD,CAAC,CAAC;gBAEH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACvB,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBAClD,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;oBACjE,MAAM,IAAI,QAAQ,CAChB,GAAG,EACH,sBAAsB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,yBAAyB,CACtE,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;oBACZ,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAG/C,CAAC;oBACF,oEAAoE;oBACpE,gEAAgE;oBAChE,0DAA0D;oBAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;oBAC5B,MAAM,OAAO,GACX,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC;wBAC7D,IAAI,CAAC,OAAO;wBACZ,gBAAgB,GAAG,CAAC,MAAM,EAAE,CAAC;oBAC/B,MAAM,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC1C,CAAC;gBAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC9B,OAAQ,IAAqB,CAAC,IAAI,IAAK,IAAU,CAAC;YACpD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,QAAQ;oBAAE,MAAM,GAAG,CAAC;gBACvC,SAAS,GAAG,GAAY,CAAC;gBACzB,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;oBAChB,MAAM,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC;oBAC5B,MAAM,CAAC,KAAK,CAAC,+BAA+B,IAAI,OAAO,CAAC,CAAC;oBACzD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,OAAO,IAAI,iCAAiC,CAAC,CAAC;IAClF,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,KAAK;IAExB;IADT,YACS,MAAc,EACrB,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,WAAM,GAAN,MAAM,CAAQ;QAIrB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,kBAAkB,OAAO,kDAAkD,CAAC,CAAC;QACnF,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF"}
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,14 @@
1
1
  import { type AffitorConfig, type AffitorSecrets, type UserCredentials } from "../types.js";
2
2
  export declare function configExists(cwd?: string): boolean;
3
3
  export declare function readConfig(cwd?: string): AffitorConfig;
4
+ /**
5
+ * The project config, or null when this directory has none but a key was passed with
6
+ * `--api-key` or AFFITOR_API_KEY. The API finds the program from the key alone, so `status` and
7
+ * `test` work for a program created in the dashboard, without `init` (which makes a new one).
8
+ */
9
+ export declare function readConfigOrKeyOnly(flags: {
10
+ apiKey?: string;
11
+ }, cwd?: string): AffitorConfig | null;
4
12
  export declare function writeConfig(config: AffitorConfig, cwd?: string): void;
5
13
  export declare function updateConfig(updates: Partial<AffitorConfig>, cwd?: string): AffitorConfig;
6
14
  export declare function readSecrets(cwd?: string): AffitorSecrets | null;
@@ -8,9 +16,26 @@ export declare function writeSecrets(secrets: AffitorSecrets, cwd?: string): voi
8
16
  export declare function readCredentials(): UserCredentials | null;
9
17
  export declare function writeCredentials(creds: UserCredentials): void;
10
18
  export declare function deleteCredentials(): void;
19
+ /** Where the key a command sends came from, so "replace it" can name the right place. */
20
+ export type ApiKeySource = "flag" | "env" | "secrets" | "legacy-config" | "none";
11
21
  export declare function resolveApiKey(flags: {
12
22
  apiKey?: string;
13
23
  }, cwd?: string): string | null;
24
+ /**
25
+ * Name the place a rejected key has to be replaced.
26
+ *
27
+ * The chain above is a priority chain: `--api-key` beats AFFITOR_API_KEY, which beats
28
+ * `.affitor/.env`. Telling someone who passed `--api-key` to update the env variable
29
+ * would leave the same key on the wire and the same 401, so an error names the source
30
+ * that actually won. Derived from the one resolver, so the two cannot drift apart.
31
+ *
32
+ * Each label names the thing the reader has to edit, spelled as that place spells it:
33
+ * `.affitor/.env` holds `AFFITOR_API_KEY=` (readSecrets/writeSecrets above), while
34
+ * `api_key` is a field name and only appears in a v1 `.affitor/config.json`.
35
+ */
36
+ export declare function apiKeySourceLabel(flags: {
37
+ apiKey?: string;
38
+ }, cwd?: string): string;
14
39
  export declare function writeEnvExample(config: AffitorConfig, apiKey: string, cwd?: string): void;
15
40
  export declare function writeSkillsFile(config: AffitorConfig, programName: string, apiKey: string, cwd?: string): void;
16
41
  export declare function appendToGitignore(cwd?: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAiBrB,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CActD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAMrE;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,EAC/B,GAAG,CAAC,EAAE,MAAM,GACX,aAAa,CAKf;AAID,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAuB/D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAiBxE;AAYD,wBAAgB,eAAe,IAAI,eAAe,GAAG,IAAI,CAgBxD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAS7D;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAKxC;AAID,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwBrF;AA4CD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,GACX,IAAI,CAUN;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,GACX,IAAI,CAsIN;AAED,wBAAgB,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAkBpD;AAgBD,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,GAAG,EAAE,MAAM;CAOxB"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAiBrB,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CActD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAOlG;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAMrE;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,EAC/B,GAAG,CAAC,EAAE,MAAM,GACX,aAAa,CAKf;AAID,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAuB/D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAmBxE;AAYD,wBAAgB,eAAe,IAAI,eAAe,GAAG,IAAI,CAgBxD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAS7D;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAKxC;AAID,yFAAyF;AACzF,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,eAAe,GAAG,MAAM,CAAC;AA+BjF,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAErF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAalF;AA4CD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,GACX,IAAI,CAUN;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,GACX,IAAI,CAwIN;AAED,wBAAgB,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAkBpD;AAgBD,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,GAAG,EAAE,MAAM;CAOxB"}