@ironbee-ai/cli 0.9.3 → 0.9.5

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 (57) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +3 -3
  3. package/dist/assets/login.html +93 -0
  4. package/dist/clients/claude/hooks/session-start.d.ts.map +1 -1
  5. package/dist/clients/claude/hooks/session-start.js +7 -3
  6. package/dist/clients/claude/hooks/session-start.js.map +1 -1
  7. package/dist/clients/claude/hooks/track-action.d.ts +3 -2
  8. package/dist/clients/claude/hooks/track-action.d.ts.map +1 -1
  9. package/dist/clients/claude/hooks/track-action.js +5 -4
  10. package/dist/clients/claude/hooks/track-action.js.map +1 -1
  11. package/dist/clients/claude/util.d.ts +71 -1
  12. package/dist/clients/claude/util.d.ts.map +1 -1
  13. package/dist/clients/claude/util.js +126 -14
  14. package/dist/clients/claude/util.js.map +1 -1
  15. package/dist/clients/cursor/hooks/track-action.d.ts +3 -2
  16. package/dist/clients/cursor/hooks/track-action.d.ts.map +1 -1
  17. package/dist/clients/cursor/hooks/track-action.js +9 -7
  18. package/dist/clients/cursor/hooks/track-action.js.map +1 -1
  19. package/dist/commands/login.d.ts +3 -0
  20. package/dist/commands/login.d.ts.map +1 -0
  21. package/dist/commands/login.js +119 -0
  22. package/dist/commands/login.js.map +1 -0
  23. package/dist/hooks/core/actions.d.ts +6 -3
  24. package/dist/hooks/core/actions.d.ts.map +1 -1
  25. package/dist/hooks/core/actions.js +14 -5
  26. package/dist/hooks/core/actions.js.map +1 -1
  27. package/dist/hooks/core/session-state.d.ts +29 -0
  28. package/dist/hooks/core/session-state.d.ts.map +1 -1
  29. package/dist/hooks/core/session-state.js +33 -0
  30. package/dist/hooks/core/session-state.js.map +1 -1
  31. package/dist/import/claude/auth-mode.d.ts +90 -0
  32. package/dist/import/claude/auth-mode.d.ts.map +1 -0
  33. package/dist/import/claude/auth-mode.js +157 -0
  34. package/dist/import/claude/auth-mode.js.map +1 -0
  35. package/dist/import/claude/runner.d.ts.map +1 -1
  36. package/dist/import/claude/runner.js +32 -0
  37. package/dist/import/claude/runner.js.map +1 -1
  38. package/dist/import/emitter.js +5 -1
  39. package/dist/import/emitter.js.map +1 -1
  40. package/dist/index.js +2 -0
  41. package/dist/index.js.map +1 -1
  42. package/dist/lib/auth.d.ts +8 -0
  43. package/dist/lib/auth.d.ts.map +1 -0
  44. package/dist/lib/auth.js +175 -0
  45. package/dist/lib/auth.js.map +1 -0
  46. package/dist/lib/config.d.ts +6 -3
  47. package/dist/lib/config.d.ts.map +1 -1
  48. package/dist/lib/config.js +8 -5
  49. package/dist/lib/config.js.map +1 -1
  50. package/dist/lib/event.d.ts +22 -4
  51. package/dist/lib/event.d.ts.map +1 -1
  52. package/dist/lib/event.js +5 -4
  53. package/dist/lib/event.js.map +1 -1
  54. package/dist/lib/version.d.ts.map +1 -1
  55. package/dist/lib/version.js +12 -4
  56. package/dist/lib/version.js.map +1 -1
  57. package/package.json +1 -1
@@ -0,0 +1,90 @@
1
+ /**
2
+ * IronBee CLI — Offline Claude auth-mode detection (transcript-based).
3
+ *
4
+ * Live mode resolves `usage_type` / `usage_plan` from env + `~/.claude.json`
5
+ * at session-start time and caches in `state.json` (see
6
+ * `resolveClaudeUsage` in `clients/claude/util.ts`). Import doesn't have
7
+ * either — the transcript is the only source of truth and it was written
8
+ * potentially weeks/months ago, when the user's env or `~/.claude.json`
9
+ * may have looked completely different.
10
+ *
11
+ * So we recover `usage_type` from a signal that ACTUALLY rides in the
12
+ * transcript: the cache-write TTL tier Claude Code chose for each
13
+ * assistant message.
14
+ *
15
+ * Why this works (empirically verified against Claude Code 2.1.139 with
16
+ * both `ANTHROPIC_API_KEY` and `CLAUDE_CODE_OAUTH_TOKEN` env-set runs):
17
+ *
18
+ * - **API mode** (Console API key, gateway token, Bedrock / Vertex /
19
+ * Foundry) → Claude Code writes prompt-cache entries at the 5-minute
20
+ * ephemeral tier (`ephemeral_5m_input_tokens > 0`,
21
+ * `ephemeral_1h_input_tokens == 0`). 5-min cache writes are cheaper
22
+ * per token; API users pay per token, so the short tier is the
23
+ * economically rational choice.
24
+ *
25
+ * - **Subscription mode** (Pro/Max/Team/Enterprise via browser-login
26
+ * OAuth OR headless `CLAUDE_CODE_OAUTH_TOKEN`) → Claude Code writes
27
+ * at the 1-hour tier (`ephemeral_1h_input_tokens > 0`,
28
+ * `ephemeral_5m_input_tokens == 0`). Subscription is flat-fee, so
29
+ * the longer-lived cache is purely a hit-rate win with no marginal
30
+ * cost to the user.
31
+ *
32
+ * Caveats:
33
+ * - Cache writes only happen on the FIRST cache-eligible request of a
34
+ * session; subsequent assistant lines have both fields at 0 (they're
35
+ * cache READS, not writes). So we sum across ALL assistant lines to
36
+ * find the one(s) that wrote.
37
+ * - Single-message sessions / sessions too short for system-prompt
38
+ * caching may have both fields at 0 the whole way through. Those
39
+ * return `usage_type: null` (correctly — we have no signal).
40
+ * - This is a Claude Code 2.1.x behavior signal, not an Anthropic-API
41
+ * wire-protocol invariant. If a future Claude Code version unifies
42
+ * cache TTL across auth modes, the detector will need updating
43
+ * (would degrade to `null` rather than misclassify).
44
+ * - The `apiKeySource` field that older Claude Code (≤2.0.x) included
45
+ * on transcript lines is GONE in 2.1.139 — don't rely on it.
46
+ *
47
+ * For `usage_plan`, the transcript carries no plan-tier marker at all.
48
+ * Returning `null` would be the most honest answer; we offer an opt-in
49
+ * `homeOverride` path that reads the current
50
+ * `~/.claude.json:oauthAccount.organizationType` as a best-effort
51
+ * fallback when `usage_type === "subscription"`. The caveat is loud:
52
+ * "current state assumed equal to historical state" — if the user
53
+ * changed plans or logged out since the session, the inferred plan
54
+ * will be wrong. Use only when "directionally right" beats "null".
55
+ */
56
+ import { TranscriptLine } from "../../analytics/transcript";
57
+ export type ImportUsageType = "api" | "subscription" | null;
58
+ export interface ImportUsageInfo {
59
+ usage_type: ImportUsageType;
60
+ /**
61
+ * Plan tier when known (`"pro"` / `"max"` / `"team"` / `"enterprise"`).
62
+ * Always `null` for `usage_type === "api"`. For
63
+ * `usage_type === "subscription"`, populated only when
64
+ * `planFallbackFromHome` is true AND `~/.claude.json` carries an
65
+ * `oauthAccount.organizationType` — heuristic; reflects CURRENT
66
+ * machine state, not necessarily the session's original plan.
67
+ */
68
+ usage_plan: string | null;
69
+ }
70
+ export interface DetectorOptions {
71
+ /**
72
+ * When true, fall back to `~/.claude.json:oauthAccount.organizationType`
73
+ * for `usage_plan` on subscription-classified sessions. Defaults to
74
+ * `false` so the detector stays purely transcript-derived by default.
75
+ */
76
+ planFallbackFromHome?: boolean;
77
+ /** Test-only override for `homedir()`. */
78
+ homeOverride?: string;
79
+ }
80
+ /**
81
+ * Scan a Claude transcript and infer the auth/billing channel from the
82
+ * cache_creation TTL choices Claude Code made for each assistant message.
83
+ *
84
+ * Returns `{ usage_type: null, usage_plan: null }` when no signal is
85
+ * present (no cache writes anywhere) — the import flow should then emit
86
+ * events without these fields, mirroring live-mode behavior on a
87
+ * session where the resolver couldn't determine the mode.
88
+ */
89
+ export declare function detectClaudeUsageFromTranscript(lines: TranscriptLine[], options?: DetectorOptions): ImportUsageInfo;
90
+ //# sourceMappingURL=auth-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-mode.d.ts","sourceRoot":"","sources":["../../../src/import/claude/auth-mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDG;AAQH,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,cAAc,GAAG,IAAI,CAAC;AAE5D,MAAM,WAAW,eAAe;IAC5B,UAAU,EAAE,eAAe,CAAC;IAC5B;;;;;;;OAOG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC5B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAC3C,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,GAAE,eAAoB,GAC9B,eAAe,CAyDjB"}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ /**
3
+ * IronBee CLI — Offline Claude auth-mode detection (transcript-based).
4
+ *
5
+ * Live mode resolves `usage_type` / `usage_plan` from env + `~/.claude.json`
6
+ * at session-start time and caches in `state.json` (see
7
+ * `resolveClaudeUsage` in `clients/claude/util.ts`). Import doesn't have
8
+ * either — the transcript is the only source of truth and it was written
9
+ * potentially weeks/months ago, when the user's env or `~/.claude.json`
10
+ * may have looked completely different.
11
+ *
12
+ * So we recover `usage_type` from a signal that ACTUALLY rides in the
13
+ * transcript: the cache-write TTL tier Claude Code chose for each
14
+ * assistant message.
15
+ *
16
+ * Why this works (empirically verified against Claude Code 2.1.139 with
17
+ * both `ANTHROPIC_API_KEY` and `CLAUDE_CODE_OAUTH_TOKEN` env-set runs):
18
+ *
19
+ * - **API mode** (Console API key, gateway token, Bedrock / Vertex /
20
+ * Foundry) → Claude Code writes prompt-cache entries at the 5-minute
21
+ * ephemeral tier (`ephemeral_5m_input_tokens > 0`,
22
+ * `ephemeral_1h_input_tokens == 0`). 5-min cache writes are cheaper
23
+ * per token; API users pay per token, so the short tier is the
24
+ * economically rational choice.
25
+ *
26
+ * - **Subscription mode** (Pro/Max/Team/Enterprise via browser-login
27
+ * OAuth OR headless `CLAUDE_CODE_OAUTH_TOKEN`) → Claude Code writes
28
+ * at the 1-hour tier (`ephemeral_1h_input_tokens > 0`,
29
+ * `ephemeral_5m_input_tokens == 0`). Subscription is flat-fee, so
30
+ * the longer-lived cache is purely a hit-rate win with no marginal
31
+ * cost to the user.
32
+ *
33
+ * Caveats:
34
+ * - Cache writes only happen on the FIRST cache-eligible request of a
35
+ * session; subsequent assistant lines have both fields at 0 (they're
36
+ * cache READS, not writes). So we sum across ALL assistant lines to
37
+ * find the one(s) that wrote.
38
+ * - Single-message sessions / sessions too short for system-prompt
39
+ * caching may have both fields at 0 the whole way through. Those
40
+ * return `usage_type: null` (correctly — we have no signal).
41
+ * - This is a Claude Code 2.1.x behavior signal, not an Anthropic-API
42
+ * wire-protocol invariant. If a future Claude Code version unifies
43
+ * cache TTL across auth modes, the detector will need updating
44
+ * (would degrade to `null` rather than misclassify).
45
+ * - The `apiKeySource` field that older Claude Code (≤2.0.x) included
46
+ * on transcript lines is GONE in 2.1.139 — don't rely on it.
47
+ *
48
+ * For `usage_plan`, the transcript carries no plan-tier marker at all.
49
+ * Returning `null` would be the most honest answer; we offer an opt-in
50
+ * `homeOverride` path that reads the current
51
+ * `~/.claude.json:oauthAccount.organizationType` as a best-effort
52
+ * fallback when `usage_type === "subscription"`. The caveat is loud:
53
+ * "current state assumed equal to historical state" — if the user
54
+ * changed plans or logged out since the session, the inferred plan
55
+ * will be wrong. Use only when "directionally right" beats "null".
56
+ */
57
+ Object.defineProperty(exports, "__esModule", { value: true });
58
+ exports.detectClaudeUsageFromTranscript = detectClaudeUsageFromTranscript;
59
+ const fs_1 = require("fs");
60
+ const os_1 = require("os");
61
+ const path_1 = require("path");
62
+ const util_1 = require("../../clients/claude/util");
63
+ const logger_1 = require("../../lib/logger");
64
+ /**
65
+ * Scan a Claude transcript and infer the auth/billing channel from the
66
+ * cache_creation TTL choices Claude Code made for each assistant message.
67
+ *
68
+ * Returns `{ usage_type: null, usage_plan: null }` when no signal is
69
+ * present (no cache writes anywhere) — the import flow should then emit
70
+ * events without these fields, mirroring live-mode behavior on a
71
+ * session where the resolver couldn't determine the mode.
72
+ */
73
+ function detectClaudeUsageFromTranscript(lines, options = {}) {
74
+ let totalEphemeral5m = 0;
75
+ let totalEphemeral1h = 0;
76
+ for (const line of lines) {
77
+ if (line.type !== "assistant") {
78
+ continue;
79
+ }
80
+ const msg = line.message;
81
+ if (typeof msg !== "object" || msg === null) {
82
+ continue;
83
+ }
84
+ const usage = msg.usage;
85
+ if (typeof usage !== "object" || usage === null) {
86
+ continue;
87
+ }
88
+ const cacheCreation = usage.cache_creation;
89
+ if (typeof cacheCreation !== "object" || cacheCreation === null) {
90
+ continue;
91
+ }
92
+ const cc = cacheCreation;
93
+ const v5m = cc.ephemeral_5m_input_tokens;
94
+ const v1h = cc.ephemeral_1h_input_tokens;
95
+ if (typeof v5m === "number" && Number.isFinite(v5m) && v5m > 0) {
96
+ totalEphemeral5m += v5m;
97
+ }
98
+ if (typeof v1h === "number" && Number.isFinite(v1h) && v1h > 0) {
99
+ totalEphemeral1h += v1h;
100
+ }
101
+ }
102
+ // Decision tree — 1h cache evidence wins because it requires Anthropic's
103
+ // 1h-cache beta header which Claude Code only sends on subscription
104
+ // sessions today.
105
+ let usageType = null;
106
+ if (totalEphemeral1h > 0) {
107
+ usageType = "subscription";
108
+ }
109
+ else if (totalEphemeral5m > 0) {
110
+ usageType = "api";
111
+ }
112
+ // Mixed cache evidence (both > 0) is theoretically possible across a
113
+ // long-running session whose env flipped mid-flight (rare). We treat
114
+ // it as subscription per "1h is subscription-only" and log so anyone
115
+ // hitting this can investigate.
116
+ if (totalEphemeral1h > 0 && totalEphemeral5m > 0) {
117
+ logger_1.logger.debug(`detectClaudeUsageFromTranscript: mixed cache evidence (5m=${totalEphemeral5m}, 1h=${totalEphemeral1h}); classifying as subscription`);
118
+ }
119
+ let usagePlan = null;
120
+ if (usageType === "subscription" && options.planFallbackFromHome === true) {
121
+ usagePlan = readPlanFromHome(options.homeOverride);
122
+ }
123
+ return { usage_type: usageType, usage_plan: usagePlan };
124
+ }
125
+ /**
126
+ * Best-effort read of `~/.claude.json:oauthAccount.{organizationType,
127
+ * organizationRateLimitTier}`. Combines both via `normalizePlanWithTier`
128
+ * so `usage_plan` carries the same shape live mode emits (`"max_5x"` /
129
+ * `"max_20x"` / `"pro"` / …). Returns null on any failure (missing file,
130
+ * malformed JSON, missing fields, OAuth block absent — e.g. the user has
131
+ * only ever used API keys).
132
+ */
133
+ function readPlanFromHome(homeOverride) {
134
+ const path = (0, path_1.join)(homeOverride ?? (0, os_1.homedir)(), ".claude.json");
135
+ if (!(0, fs_1.existsSync)(path)) {
136
+ return null;
137
+ }
138
+ try {
139
+ const cfg = JSON.parse((0, fs_1.readFileSync)(path, "utf-8"));
140
+ if (typeof cfg !== "object" || cfg === null) {
141
+ return null;
142
+ }
143
+ const oauth = cfg.oauthAccount;
144
+ if (typeof oauth !== "object" || oauth === null) {
145
+ return null;
146
+ }
147
+ const oauthRecord = oauth;
148
+ const orgType = oauthRecord.organizationType;
149
+ const rateTier = oauthRecord.organizationRateLimitTier;
150
+ return (0, util_1.normalizePlanWithTier)(typeof orgType === "string" ? orgType : undefined, typeof rateTier === "string" ? rateTier : undefined);
151
+ }
152
+ catch (e) {
153
+ logger_1.logger.debug(`detectClaudeUsageFromTranscript: failed to read ~/.claude.json: ${e instanceof Error ? e.message : e}`);
154
+ return null;
155
+ }
156
+ }
157
+ //# sourceMappingURL=auth-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-mode.js","sourceRoot":"","sources":["../../../src/import/claude/auth-mode.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/import/claude/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAQH,OAAO,EAIH,YAAY,EACZ,YAAY,EACf,MAAM,UAAU,CAAC;AAqBlB,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAoNvF"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/import/claude/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAQH,OAAO,EAIH,YAAY,EACZ,YAAY,EACf,MAAM,UAAU,CAAC;AAsBlB,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAiOvF"}
@@ -32,6 +32,7 @@ const types_1 = require("../types");
32
32
  const skip_1 = require("../skip");
33
33
  const marker_1 = require("../marker");
34
34
  const analytics_runner_1 = require("./analytics-runner");
35
+ const auth_mode_1 = require("./auth-mode");
35
36
  const session_1 = require("../events/session");
36
37
  const activity_1 = require("../events/activity");
37
38
  const tool_call_1 = require("./events/tool-call");
@@ -210,6 +211,18 @@ async function importClaudeSession(opts) {
210
211
  else {
211
212
  logger_1.logger.debug(`import claude-runner: session ${sessionId} — analytics disabled, suppressing ${analytics.turnEvents.length} turn / ${analytics.stepEvents.length} step / ${analytics.apiRequestEvents.length} api_request / 1 session_analytics events`);
212
213
  }
214
+ // Resolve auth/billing mode from the transcript's cache_creation
215
+ // TTL signals (see `detectClaudeUsageFromTranscript` for the why).
216
+ // Apply once, stamp every event, then POST — mirrors live mode
217
+ // where `baseFields()` injects these onto every event from
218
+ // session-resolved state.json. `planFallbackFromHome=true` lets the
219
+ // current ~/.claude.json fill in the plan tier for subscription
220
+ // sessions (best-effort heuristic; documented caveat in
221
+ // auth-mode.ts).
222
+ const usage = (0, auth_mode_1.detectClaudeUsageFromTranscript)(transcriptLines, {
223
+ planFallbackFromHome: true,
224
+ });
225
+ applyUsageToEvents(events, usage);
213
226
  // POST.
214
227
  await (0, emitter_1.postEvents)(events, {
215
228
  sessionId,
@@ -236,6 +249,25 @@ async function importClaudeSession(opts) {
236
249
  };
237
250
  }
238
251
  }
252
+ /**
253
+ * Stamp `usage_type` + `usage_plan` onto every event in the import batch,
254
+ * mirroring live-mode behavior where `baseFields()` carries the values
255
+ * from per-session `state.json` onto every emitted event. No-op when the
256
+ * detector returned `null` (no signal in transcript) — events ship
257
+ * without these fields, same as a Cursor or unresolvable Claude session
258
+ * in live mode.
259
+ */
260
+ function applyUsageToEvents(events, usage) {
261
+ if (usage.usage_type === null) {
262
+ return;
263
+ }
264
+ for (const ev of events) {
265
+ ev.usage_type = usage.usage_type;
266
+ if (usage.usage_plan !== null) {
267
+ ev.usage_plan = usage.usage_plan;
268
+ }
269
+ }
270
+ }
239
271
  /**
240
272
  * Bracket time between an assistant tool_use and the matching tool_result
241
273
  * in the next user message. Returns null when either timestamp is missing
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/import/claude/runner.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;AA0CH,kDAoNC;AA5PD,2BAAkC;AAElC,mDAA0E;AAC1E,6CAAiF;AACjF,6CAA0C;AAC1C,2DAAoF;AACpF,oCAMkB;AAClB,kCAAqC;AACrC,sCAA8C;AAC9C,yDAA+E;AAC/E,+CAAuE;AACvE,iDAAwF;AACxF,kDAA8E;AAC9E,sDAAuD;AACvD,gCAA0C;AAC1C,wCAAwC;AACxC,uDAS2B;AASpB,KAAK,UAAU,mBAAmB,CAAC,IAAsB;IAC5D,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,SAAS,GAAkB,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;IACxD,wEAAwE;IACxE,sEAAsE;IACtE,oEAAoE;IACpE,uEAAuE;IACvE,oCAAoC;IACpC,MAAM,gBAAgB,GAAY,IAAA,2BAAkB,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACxE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAEtE,IAAI,IAAA,iBAAU,EAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO;YACH,SAAS;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAA,wBAAgB,GAAE;YAC9B,MAAM,EAAE,iBAAiB;SAC5B,CAAC;IACN,CAAC;IAED,IAAI,CAAC;QACD,MAAM,eAAe,GAA2B,IAAA,8BAAkB,EAAC,UAAU,CAAC,CAAC;QAC/E,MAAM,MAAM,GAAkB,IAAA,mBAAU,EAAC,UAAU,CAAC,CAAC;QAErD,6BAA6B;QAC7B,MAAM,SAAS,GAA0B,IAAA,qCAAkB,EAAC;YACxD,SAAS;YACT,WAAW;YACX,UAAU;YACV,cAAc;SACjB,CAAC,CAAC;QAEH,iEAAiE;QACjE,MAAM,SAAS,GAAW,IAAA,iBAAY,EAAC,cAAc,CAAC,CAAC;QACvD,MAAM,MAAM,GAAkD,IAAA,uBAAU,EAAiB,SAAS,EAAE,CAAC,CAAC,CAAC;QACvG,MAAM,eAAe,GAAqB,MAAM,CAAC,KAAK;aACjD,MAAM,CAAC,CAAC,EAA8B,EAAW,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC;aACvE,GAAG,CAAC,CAAC,EAA8B,EAAkB,EAAE,CAAC,EAAE,CAAC,MAAwB,CAAC,CAAC;QAE1F,MAAM,MAAM,GAAsB,IAAA,wBAAgB,GAAE,CAAC;QACrD,MAAM,MAAM,GAAmB,EAAE,CAAC;QAElC,MAAM,CAAC,IAAI,CAAC,IAAA,2BAAiB,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;QAEzB,4DAA4D;QAC5D,iEAAiE;QACjE,gEAAgE;QAChE,kEAAkE;QAClE,mEAAmE;QACnE,6DAA6D;QAC7D,4BAA4B;QAC5B,MAAM,eAAe,GAAW,qBAAqB,CAAC,eAAe,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;QAC9F,MAAM,SAAS,GAAW,IAAA,sCAAoB,EAAC,eAAe,CAAC,IAAI,SAAS,CAAC;QAC7E,MAAM,CAAC,IAAI,CAAC,IAAA,yBAAe,EAAC,MAAM,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;QAEvB,sEAAsE;QACtE,oEAAoE;QACpE,8DAA8D;QAC9D,MAAM,cAAc,GAAqB,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YACpE,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAoH,EAAkB,EAAE,CAAC,CAAC;gBAClK,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU;gBAC7B,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU;gBAC7B,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ;gBACzB,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY;aACpC,CAAC,CAAC;YACH,CAAC,CAAC,IAAA,oDAAkC,EAAC,eAAe,CAAC,CAAC;QAE1D,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;YAC9B,IAAI,EAAE,CAAC,WAAW,KAAK,aAAa,EAAE,CAAC;gBACnC,SAAS;YACb,CAAC;YACD,MAAM,QAAQ,GAAiB;gBAC3B,SAAS,EAAE,EAAE,CAAC,SAAS;gBACvB,SAAS,EAAE,EAAE,CAAC,SAAS;gBACvB,OAAO,EAAE,EAAE,CAAC,OAAO;aACtB,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,IAAA,6BAAkB,EAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,IAAA,2BAAgB,EAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;YAChE,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC;YAC3B,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,MAAM,UAAU,GAAe,IAAA,iCAAe,EAAC,cAAc,CAAC,CAAC;QAC/D,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtD,MAAM,IAAI,GAAmB,eAAe,CAAC,CAAC,CAAC,CAAC;YAChD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC5B,SAAS;YACb,CAAC;YACD,MAAM,aAAa,GAAY,IAA+B,CAAC,SAAS,IAAI,EAAE,CAAC;YAC/E,MAAM,OAAO,GAAkB,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAChE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACnB,SAAS;YACb,CAAC;YACD,MAAM,EAAE,GAA+B,cAAc,CAAC,IAAI,CAAC,CAAC,CAAiB,EAAW,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC;YACpH,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;gBACnB,SAAS;YACb,CAAC;YACD,MAAM,UAAU,GAAW,IAAA,sBAAgB,EAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;YAEnF,MAAM,QAAQ,GAAiB,IAAA,yCAAuB,EAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,SAAS;YACb,CAAC;YACD,MAAM,QAAQ,GAA+B,IAAA,kCAAgB,EAAC,eAAe,EAAE,CAAC,CAAC,CAAC;YAClF,MAAM,kBAAkB,GAA+B,QAAQ,KAAK,SAAS;gBACzE,CAAC,CAAC,IAAA,+CAA6B,EAAC,QAAQ,CAAC;gBACzC,CAAC,CAAC,IAAI,GAAG,EAAyB,CAAC;YAEvC,2DAA2D;YAC3D,6DAA6D;YAC7D,2DAA2D;YAC3D,6DAA6D;YAC7D,8DAA8D;YAC9D,8DAA8D;YAC9D,4DAA4D;YAC5D,wDAAwD;YACxD,4DAA4D;YAC5D,wDAAwD;YACxD,2DAA2D;YAC3D,6DAA6D;YAC7D,gDAAgD;YAChD,MAAM,SAAS,GAAkB,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAClD,CAAC,CAAC,gBAAgB,CAAC,aAAa,EAAE,QAAQ,CAAC;gBAC3C,CAAC,CAAC,IAAI,CAAC;YAEX,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAyB,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;gBAC3E,0DAA0D;gBAC1D,uDAAuD;gBACvD,yDAAyD;gBACzD,0CAA0C;gBAC1C,MAAM,UAAU,GAAkB,CAAC,SAAS,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC7F,MAAM,CAAC,IAAI,CAAC,IAAA,yBAAa,EAAC;oBACtB,SAAS;oBACT,WAAW;oBACX,UAAU;oBACV,SAAS,EAAE,aAAa;oBACxB,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,MAAM;oBAClB,UAAU;iBACb,CAAC,CAAC,CAAC;gBACJ,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;gBAEtB,MAAM,OAAO,GAAuC,IAAA,6BAAe,EAAC;oBAChE,SAAS;oBACT,WAAW;oBACX,UAAU;oBACV,SAAS,EAAE,aAAa;oBACxB,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,MAAM;oBAClB,MAAM;iBACT,CAAC,CAAC;gBACH,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACrB,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;gBAC5B,CAAC;YACL,CAAC;QACL,CAAC;QAED,oEAAoE;QACpE,gEAAgE;QAChE,oEAAoE;QACpE,kEAAkE;QAClE,iEAAiE;QACjE,wCAAwC;QACxC,IAAI,gBAAgB,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YACxC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC;YAC7B,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;YACD,MAAM,CAAC,sBAAsB,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;YAC5D,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;YACD,MAAM,CAAC,2BAA2B,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;YACjE,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,gBAAgB,EAAE,CAAC;gBAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;YACD,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAC3D,CAAC;aAAM,CAAC;YACJ,eAAM,CAAC,KAAK,CAAC,iCAAiC,SAAS,sCAAsC,SAAS,CAAC,UAAU,CAAC,MAAM,WAAW,SAAS,CAAC,UAAU,CAAC,MAAM,WAAW,SAAS,CAAC,gBAAgB,CAAC,MAAM,2CAA2C,CAAC,CAAC;QAC3P,CAAC;QAED,QAAQ;QACR,MAAM,IAAA,oBAAU,EAAC,MAAiB,EAAE;YAChC,SAAS;YACT,UAAU;YACV,MAAM,EAAE,eAAe;YACvB,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/C,CAAC,CAAC;QAEH,UAAU;QACV,IAAA,0BAAiB,EAAC,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAE7F,OAAO;YACH,SAAS;YACT,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,MAAM;SACrB,CAAC;IACN,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,MAAM,MAAM,GAAW,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClE,eAAM,CAAC,KAAK,CAAC,iCAAiC,SAAS,YAAY,MAAM,EAAE,CAAC,CAAC;QAC7E,OAAO;YACH,SAAS;YACT,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,IAAA,wBAAgB,GAAE;YAC9B,MAAM;SACT,CAAC;IACN,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,WAAmB,EAAE,QAAoC;IAC/E,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,MAAM,GAAa,QAAoC,CAAC,SAAS,CAAC;IACxE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,KAAK,GAAW,KAAK,GAAG,OAAO,CAAC;IACtC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,qBAAqB,CAAC,KAAuB,EAAE,UAAkB;IACtE,KAAK,IAAI,CAAC,GAAW,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,MAAM,EAAE,GAAa,KAAK,CAAC,CAAC,CAA6B,CAAC,SAAS,CAAC;QACpE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YACzB,MAAM,EAAE,GAAW,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBACtB,OAAO,EAAE,CAAC;YACd,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/import/claude/runner.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;AA2CH,kDAiOC;AA1QD,2BAAkC;AAElC,mDAA0E;AAC1E,6CAAiF;AACjF,6CAA0C;AAC1C,2DAAoF;AACpF,oCAMkB;AAClB,kCAAqC;AACrC,sCAA8C;AAC9C,yDAA+E;AAC/E,2CAA+E;AAC/E,+CAAuE;AACvE,iDAAwF;AACxF,kDAA8E;AAC9E,sDAAuD;AACvD,gCAA0C;AAC1C,wCAAwC;AACxC,uDAS2B;AASpB,KAAK,UAAU,mBAAmB,CAAC,IAAsB;IAC5D,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,SAAS,GAAkB,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;IACxD,wEAAwE;IACxE,sEAAsE;IACtE,oEAAoE;IACpE,uEAAuE;IACvE,oCAAoC;IACpC,MAAM,gBAAgB,GAAY,IAAA,2BAAkB,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACxE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAEtE,IAAI,IAAA,iBAAU,EAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO;YACH,SAAS;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,IAAA,wBAAgB,GAAE;YAC9B,MAAM,EAAE,iBAAiB;SAC5B,CAAC;IACN,CAAC;IAED,IAAI,CAAC;QACD,MAAM,eAAe,GAA2B,IAAA,8BAAkB,EAAC,UAAU,CAAC,CAAC;QAC/E,MAAM,MAAM,GAAkB,IAAA,mBAAU,EAAC,UAAU,CAAC,CAAC;QAErD,6BAA6B;QAC7B,MAAM,SAAS,GAA0B,IAAA,qCAAkB,EAAC;YACxD,SAAS;YACT,WAAW;YACX,UAAU;YACV,cAAc;SACjB,CAAC,CAAC;QAEH,iEAAiE;QACjE,MAAM,SAAS,GAAW,IAAA,iBAAY,EAAC,cAAc,CAAC,CAAC;QACvD,MAAM,MAAM,GAAkD,IAAA,uBAAU,EAAiB,SAAS,EAAE,CAAC,CAAC,CAAC;QACvG,MAAM,eAAe,GAAqB,MAAM,CAAC,KAAK;aACjD,MAAM,CAAC,CAAC,EAA8B,EAAW,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC;aACvE,GAAG,CAAC,CAAC,EAA8B,EAAkB,EAAE,CAAC,EAAE,CAAC,MAAwB,CAAC,CAAC;QAE1F,MAAM,MAAM,GAAsB,IAAA,wBAAgB,GAAE,CAAC;QACrD,MAAM,MAAM,GAAmB,EAAE,CAAC;QAElC,MAAM,CAAC,IAAI,CAAC,IAAA,2BAAiB,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;QAEzB,4DAA4D;QAC5D,iEAAiE;QACjE,gEAAgE;QAChE,kEAAkE;QAClE,mEAAmE;QACnE,6DAA6D;QAC7D,4BAA4B;QAC5B,MAAM,eAAe,GAAW,qBAAqB,CAAC,eAAe,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;QAC9F,MAAM,SAAS,GAAW,IAAA,sCAAoB,EAAC,eAAe,CAAC,IAAI,SAAS,CAAC;QAC7E,MAAM,CAAC,IAAI,CAAC,IAAA,yBAAe,EAAC,MAAM,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;QAEvB,sEAAsE;QACtE,oEAAoE;QACpE,8DAA8D;QAC9D,MAAM,cAAc,GAAqB,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YACpE,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAoH,EAAkB,EAAE,CAAC,CAAC;gBAClK,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU;gBAC7B,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU;gBAC7B,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ;gBACzB,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY;aACpC,CAAC,CAAC;YACH,CAAC,CAAC,IAAA,oDAAkC,EAAC,eAAe,CAAC,CAAC;QAE1D,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;YAC9B,IAAI,EAAE,CAAC,WAAW,KAAK,aAAa,EAAE,CAAC;gBACnC,SAAS;YACb,CAAC;YACD,MAAM,QAAQ,GAAiB;gBAC3B,SAAS,EAAE,EAAE,CAAC,SAAS;gBACvB,SAAS,EAAE,EAAE,CAAC,SAAS;gBACvB,OAAO,EAAE,EAAE,CAAC,OAAO;aACtB,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,IAAA,6BAAkB,EAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,IAAA,2BAAgB,EAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;YAChE,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC;YAC3B,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,MAAM,UAAU,GAAe,IAAA,iCAAe,EAAC,cAAc,CAAC,CAAC;QAC/D,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtD,MAAM,IAAI,GAAmB,eAAe,CAAC,CAAC,CAAC,CAAC;YAChD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC5B,SAAS;YACb,CAAC;YACD,MAAM,aAAa,GAAY,IAA+B,CAAC,SAAS,IAAI,EAAE,CAAC;YAC/E,MAAM,OAAO,GAAkB,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAChE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACnB,SAAS;YACb,CAAC;YACD,MAAM,EAAE,GAA+B,cAAc,CAAC,IAAI,CAAC,CAAC,CAAiB,EAAW,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC;YACpH,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;gBACnB,SAAS;YACb,CAAC;YACD,MAAM,UAAU,GAAW,IAAA,sBAAgB,EAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;YAEnF,MAAM,QAAQ,GAAiB,IAAA,yCAAuB,EAAC,IAAI,CAAC,CAAC;YAC7D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,SAAS;YACb,CAAC;YACD,MAAM,QAAQ,GAA+B,IAAA,kCAAgB,EAAC,eAAe,EAAE,CAAC,CAAC,CAAC;YAClF,MAAM,kBAAkB,GAA+B,QAAQ,KAAK,SAAS;gBACzE,CAAC,CAAC,IAAA,+CAA6B,EAAC,QAAQ,CAAC;gBACzC,CAAC,CAAC,IAAI,GAAG,EAAyB,CAAC;YAEvC,2DAA2D;YAC3D,6DAA6D;YAC7D,2DAA2D;YAC3D,6DAA6D;YAC7D,8DAA8D;YAC9D,8DAA8D;YAC9D,4DAA4D;YAC5D,wDAAwD;YACxD,4DAA4D;YAC5D,wDAAwD;YACxD,2DAA2D;YAC3D,6DAA6D;YAC7D,gDAAgD;YAChD,MAAM,SAAS,GAAkB,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAClD,CAAC,CAAC,gBAAgB,CAAC,aAAa,EAAE,QAAQ,CAAC;gBAC3C,CAAC,CAAC,IAAI,CAAC;YAEX,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAyB,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;gBAC3E,0DAA0D;gBAC1D,uDAAuD;gBACvD,yDAAyD;gBACzD,0CAA0C;gBAC1C,MAAM,UAAU,GAAkB,CAAC,SAAS,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC7F,MAAM,CAAC,IAAI,CAAC,IAAA,yBAAa,EAAC;oBACtB,SAAS;oBACT,WAAW;oBACX,UAAU;oBACV,SAAS,EAAE,aAAa;oBACxB,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,MAAM;oBAClB,UAAU;iBACb,CAAC,CAAC,CAAC;gBACJ,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;gBAEtB,MAAM,OAAO,GAAuC,IAAA,6BAAe,EAAC;oBAChE,SAAS;oBACT,WAAW;oBACX,UAAU;oBACV,SAAS,EAAE,aAAa;oBACxB,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,MAAM;oBAClB,MAAM;iBACT,CAAC,CAAC;gBACH,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACrB,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;gBAC5B,CAAC;YACL,CAAC;QACL,CAAC;QAED,oEAAoE;QACpE,gEAAgE;QAChE,oEAAoE;QACpE,kEAAkE;QAClE,iEAAiE;QACjE,wCAAwC;QACxC,IAAI,gBAAgB,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YACxC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC;YAC7B,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;YACD,MAAM,CAAC,sBAAsB,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;YAC5D,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;gBACpC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;YACD,MAAM,CAAC,2BAA2B,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;YACjE,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,gBAAgB,EAAE,CAAC;gBAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;YACD,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAC3D,CAAC;aAAM,CAAC;YACJ,eAAM,CAAC,KAAK,CAAC,iCAAiC,SAAS,sCAAsC,SAAS,CAAC,UAAU,CAAC,MAAM,WAAW,SAAS,CAAC,UAAU,CAAC,MAAM,WAAW,SAAS,CAAC,gBAAgB,CAAC,MAAM,2CAA2C,CAAC,CAAC;QAC3P,CAAC;QAED,iEAAiE;QACjE,mEAAmE;QACnE,+DAA+D;QAC/D,2DAA2D;QAC3D,oEAAoE;QACpE,gEAAgE;QAChE,wDAAwD;QACxD,iBAAiB;QACjB,MAAM,KAAK,GAAoB,IAAA,2CAA+B,EAAC,eAAe,EAAE;YAC5E,oBAAoB,EAAE,IAAI;SAC7B,CAAC,CAAC;QACH,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAElC,QAAQ;QACR,MAAM,IAAA,oBAAU,EAAC,MAAiB,EAAE;YAChC,SAAS;YACT,UAAU;YACV,MAAM,EAAE,eAAe;YACvB,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/C,CAAC,CAAC;QAEH,UAAU;QACV,IAAA,0BAAiB,EAAC,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAE7F,OAAO;YACH,SAAS;YACT,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,MAAM;SACrB,CAAC;IACN,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,MAAM,MAAM,GAAW,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClE,eAAM,CAAC,KAAK,CAAC,iCAAiC,SAAS,YAAY,MAAM,EAAE,CAAC,CAAC;QAC7E,OAAO;YACH,SAAS;YACT,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,IAAA,wBAAgB,GAAE;YAC9B,MAAM;SACT,CAAC;IACN,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,kBAAkB,CAAC,MAAsB,EAAE,KAAsB;IACtE,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO;IACX,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QACtB,EAAE,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACjC,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC5B,EAAE,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACrC,CAAC;IACL,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,WAAmB,EAAE,QAAoC;IAC/E,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,MAAM,GAAa,QAAoC,CAAC,SAAS,CAAC;IACxE,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,KAAK,GAAW,KAAK,GAAG,OAAO,CAAC;IACtC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,qBAAqB,CAAC,KAAuB,EAAE,UAAkB;IACtE,KAAK,IAAI,CAAC,GAAW,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,MAAM,EAAE,GAAa,KAAK,CAAC,CAAC,CAA6B,CAAC,SAAS,CAAC;QACpE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;YACzB,MAAM,EAAE,GAAW,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBACtB,OAAO,EAAE,CAAC;YACd,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC"}
@@ -60,7 +60,11 @@ async function postOneBatchWithRetry(batch, opts) {
60
60
  }
61
61
  function sleep(ms) {
62
62
  return new Promise((resolve) => {
63
- setTimeout(resolve, ms);
63
+ // .unref() so the retry-backoff timer doesn't keep the event loop
64
+ // alive past test completion — without it Jest workers hit the
65
+ // "failed to exit gracefully" force-exit path on the test runs that
66
+ // exercise the import retry path.
67
+ setTimeout(resolve, ms).unref();
64
68
  });
65
69
  }
66
70
  //# sourceMappingURL=emitter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/import/emitter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAwBH,gCAiBC;AAtCD,gDAA+E;AAC/E,0CAAuC;AAUvC,MAAM,kBAAkB,GAAW,GAAG,CAAC;AACvC,MAAM,eAAe,GAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAEtD;;;;;;GAMG;AACI,KAAK,UAAU,UAAU,CAAC,MAAe,EAAE,IAAiB;IAC/D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO;IACX,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACvB,eAAM,CAAC,KAAK,CAAC,iDAAiD,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;QACtF,OAAO;IACX,CAAC;IACD,MAAM,SAAS,GAAW,IAAI,CAAC,SAAS;WACjC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC;YACvE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;YACvB,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAE9B,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;QACxD,MAAM,KAAK,GAAY,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/E,MAAM,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;AACL,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,KAAc,EAAE,IAAiB;IAClE,IAAI,OAAO,GAAiB,IAAI,CAAC;IACjC,KAAK,IAAI,OAAO,GAAW,CAAC,EAAE,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QACzE,IAAI,CAAC;YACD,MAAM,IAAA,sCAA0B,EAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACtF,OAAO;QACX,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YAClB,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,IAAI,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAW,eAAe,CAAC,OAAO,CAAC,CAAC;gBAC/C,eAAM,CAAC,KAAK,CAAC,8CAA8C,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,eAAe,KAAK,IAAI,CAAC,CAAC;gBACrH,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACL,CAAC;IACL,CAAC;IACD,MAAM,OAAO,IAAI,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACrB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAmB,EAAQ,EAAE;QACnD,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/import/emitter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAwBH,gCAiBC;AAtCD,gDAA+E;AAC/E,0CAAuC;AAUvC,MAAM,kBAAkB,GAAW,GAAG,CAAC;AACvC,MAAM,eAAe,GAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAEtD;;;;;;GAMG;AACI,KAAK,UAAU,UAAU,CAAC,MAAe,EAAE,IAAiB;IAC/D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO;IACX,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACvB,eAAM,CAAC,KAAK,CAAC,iDAAiD,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;QACtF,OAAO;IACX,CAAC;IACD,MAAM,SAAS,GAAW,IAAI,CAAC,SAAS;WACjC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC;YACvE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;YACvB,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAE9B,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;QACxD,MAAM,KAAK,GAAY,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/E,MAAM,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;AACL,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,KAAc,EAAE,IAAiB;IAClE,IAAI,OAAO,GAAiB,IAAI,CAAC;IACjC,KAAK,IAAI,OAAO,GAAW,CAAC,EAAE,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QACzE,IAAI,CAAC;YACD,MAAM,IAAA,sCAA0B,EAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACtF,OAAO;QACX,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YAClB,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,IAAI,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAW,eAAe,CAAC,OAAO,CAAC,CAAC;gBAC/C,eAAM,CAAC,KAAK,CAAC,8CAA8C,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,eAAe,KAAK,IAAI,CAAC,CAAC;gBACrH,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACL,CAAC;IACL,CAAC;IACD,MAAM,OAAO,IAAI,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACrB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAmB,EAAQ,EAAE;QACnD,kEAAkE;QAClE,+DAA+D;QAC/D,oEAAoE;QACpE,kCAAkC;QAClC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;AACP,CAAC"}
package/dist/index.js CHANGED
@@ -23,6 +23,7 @@ const config_1 = require("./commands/config");
23
23
  const register_1 = require("./commands/register");
24
24
  const unregister_1 = require("./commands/unregister");
25
25
  const import_1 = require("./commands/import");
26
+ const login_1 = require("./commands/login");
26
27
  const queue_2 = require("./queue");
27
28
  const icon_1 = require("./lib/icon");
28
29
  const version_1 = require("./lib/version");
@@ -37,6 +38,7 @@ program
37
38
  .name("ironbee")
38
39
  .description(pkg.description)
39
40
  .version(pkg.version);
41
+ program.addCommand(login_1.loginCommand);
40
42
  program.addCommand(install_1.installCommand);
41
43
  program.addCommand(uninstall_1.uninstallCommand);
42
44
  program.addCommand(update_1.updateCommand);
package/dist/index.js.map CHANGED
@@ -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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"}
@@ -0,0 +1,8 @@
1
+ export interface CallbackResult {
2
+ apiKey: string;
3
+ }
4
+ export declare function findFreePort(): Promise<number>;
5
+ export declare function generateState(): string;
6
+ export declare function startCallbackServer(port: number, expectedState: string, timeoutMs?: number, onReady?: () => void): Promise<CallbackResult>;
7
+ export declare function openBrowser(url: string): void;
8
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAe9C;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,mBAAmB,CAC/B,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,SAAS,GAAE,MAAsB,EACjC,OAAO,CAAC,EAAE,MAAM,IAAI,GACrB,OAAO,CAAC,cAAc,CAAC,CAmEzB;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAY7C"}
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.findFreePort = findFreePort;
37
+ exports.generateState = generateState;
38
+ exports.startCallbackServer = startCallbackServer;
39
+ exports.openBrowser = openBrowser;
40
+ const net = __importStar(require("net"));
41
+ const http = __importStar(require("http"));
42
+ const crypto = __importStar(require("crypto"));
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const child_process_1 = require("child_process");
46
+ function findFreePort() {
47
+ return new Promise((resolve, reject) => {
48
+ const server = net.createServer();
49
+ server.listen(0, "127.0.0.1", () => {
50
+ const address = server.address();
51
+ if (!address || typeof address === "string") {
52
+ server.close();
53
+ reject(new Error("Could not determine free port"));
54
+ return;
55
+ }
56
+ const port = address.port;
57
+ server.close(() => resolve(port));
58
+ });
59
+ server.on("error", reject);
60
+ });
61
+ }
62
+ function generateState() {
63
+ return crypto.randomBytes(16).toString("hex");
64
+ }
65
+ function startCallbackServer(port, expectedState, timeoutMs = 5 * 60 * 1000, onReady) {
66
+ return new Promise((resolve, reject) => {
67
+ const server = http.createServer((req, res) => {
68
+ const raw = req.url ?? "/";
69
+ const url = new URL(raw, `http://127.0.0.1:${port}`);
70
+ if (url.pathname !== "/callback") {
71
+ res.writeHead(404);
72
+ res.end();
73
+ return;
74
+ }
75
+ const state = url.searchParams.get("state");
76
+ const apiKey = url.searchParams.get("api_key");
77
+ const error = url.searchParams.get("error");
78
+ // Error paths: drop keep-alive sockets BEFORE close() — without this
79
+ // server.close() only stops new connections and the pending keep-alive
80
+ // socket from the browser's GET keeps the event loop alive until OS
81
+ // socket timeout. Mirrors the success path below.
82
+ if (error) {
83
+ res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
84
+ res.end(htmlPage("Login Failed", `<p>Login failed: ${escapeHtml(error)}.</p><p>You can close this tab.</p>`));
85
+ server.closeAllConnections();
86
+ server.close();
87
+ reject(new Error(`Login failed: ${error}`));
88
+ return;
89
+ }
90
+ if (state !== expectedState) {
91
+ res.writeHead(400, { "Content-Type": "text/html; charset=utf-8" });
92
+ res.end(htmlPage("Error", "<p>Invalid state parameter. You can close this tab.</p>"));
93
+ server.closeAllConnections();
94
+ server.close();
95
+ reject(new Error("State mismatch — possible CSRF"));
96
+ return;
97
+ }
98
+ if (!apiKey) {
99
+ res.writeHead(400, { "Content-Type": "text/html; charset=utf-8" });
100
+ res.end(htmlPage("Error", "<p>No API key received. You can close this tab.</p>"));
101
+ server.closeAllConnections();
102
+ server.close();
103
+ reject(new Error("No api_key in callback"));
104
+ return;
105
+ }
106
+ res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
107
+ res.end(connectedHtmlPage());
108
+ // Resolve immediately — don't wait for keep-alive connections to drain (adds 10-15s delay).
109
+ // closeAllConnections() is available since Node 18.2; >=22 is our floor due to Node 20 EOL (2026-04-30).
110
+ resolve({ apiKey });
111
+ server.closeAllConnections();
112
+ server.close();
113
+ });
114
+ const timer = setTimeout(() => {
115
+ server.closeAllConnections();
116
+ server.close();
117
+ reject(new Error("Login timed out after 5 minutes"));
118
+ }, timeoutMs).unref();
119
+ server.on("close", () => clearTimeout(timer));
120
+ server.listen(port, "127.0.0.1", () => {
121
+ onReady?.();
122
+ });
123
+ });
124
+ }
125
+ function openBrowser(url) {
126
+ let command;
127
+ if (process.platform === "darwin") {
128
+ command = `open "${url}"`;
129
+ }
130
+ else if (process.platform === "win32") {
131
+ command = `start "" "${url}"`;
132
+ }
133
+ else {
134
+ command = `xdg-open "${url}"`;
135
+ }
136
+ (0, child_process_1.exec)(command, (_err) => {
137
+ // Non-fatal — user can open the URL manually
138
+ });
139
+ }
140
+ function escapeHtml(str) {
141
+ return str
142
+ .replace(/&/g, "&amp;")
143
+ .replace(/</g, "&lt;")
144
+ .replace(/>/g, "&gt;")
145
+ .replace(/"/g, "&quot;");
146
+ }
147
+ function connectedHtmlPage() {
148
+ try {
149
+ const templatePath = path.join(__dirname, "..", "assets", "login.html");
150
+ return fs.readFileSync(templatePath, "utf-8");
151
+ }
152
+ catch {
153
+ return htmlPage("Connected", "<p>IronBee CLI connected successfully. You can close this tab.</p>");
154
+ }
155
+ }
156
+ function htmlPage(title, body) {
157
+ return `<!DOCTYPE html>
158
+ <html lang="en">
159
+ <head>
160
+ <meta charset="UTF-8" />
161
+ <title>${escapeHtml(title)} — IronBee</title>
162
+ <style>
163
+ body { font-family: system-ui, sans-serif; display: flex; align-items: center;
164
+ justify-content: center; height: 100vh; margin: 0; background: #0f0f11; color: #e5e5e5; }
165
+ div { text-align: center; max-width: 400px; padding: 2rem; }
166
+ h1 { font-size: 1.25rem; margin-bottom: 0.75rem; }
167
+ p { color: #999; font-size: 0.9rem; line-height: 1.6; }
168
+ </style>
169
+ </head>
170
+ <body>
171
+ <div><h1>${escapeHtml(title)}</h1>${body}</div>
172
+ </body>
173
+ </html>`;
174
+ }
175
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"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"}
@@ -503,9 +503,12 @@ export declare function isAnalyticsStepEventsEnabled(projectDir?: string): boole
503
503
  * it ships by default. Operators can opt out via `emitApiRequestEvents: false`
504
504
  * if backend doesn't consume them.
505
505
  *
506
- * Independent of `emitTurnEvents` / `emitStepEvents`. The `analytics` master
507
- * switch (section presence) still gates everything below it without
508
- * `analytics` in config, no api_request events ship regardless of this flag.
506
+ * Independent of `emitTurnEvents` / `emitStepEvents`. The analytics master
507
+ * switch ({@link isAnalyticsEnabled}) is gated separately upstreamthis
508
+ * function answers only "given that analytics is on, should api_request ship?"
509
+ * Section absent therefore falls back to the opt-out default (`true`), so
510
+ * collector-driven auto-enable (analytics section omitted but `collector`
511
+ * configured) still ships api_request events as documented.
509
512
  */
510
513
  export declare function isAnalyticsApiRequestEventsEnabled(projectDir?: string): boolean;
511
514
  //# sourceMappingURL=config.d.ts.map