@ironbee-ai/cli 0.9.4 → 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.
- package/CHANGELOG.md +6 -0
- package/README.md +3 -3
- package/dist/assets/login.html +93 -0
- package/dist/clients/claude/hooks/session-start.d.ts.map +1 -1
- package/dist/clients/claude/hooks/session-start.js +7 -3
- package/dist/clients/claude/hooks/session-start.js.map +1 -1
- package/dist/clients/claude/hooks/track-action.d.ts +3 -2
- package/dist/clients/claude/hooks/track-action.d.ts.map +1 -1
- package/dist/clients/claude/hooks/track-action.js +5 -4
- package/dist/clients/claude/hooks/track-action.js.map +1 -1
- package/dist/clients/claude/util.d.ts +71 -1
- package/dist/clients/claude/util.d.ts.map +1 -1
- package/dist/clients/claude/util.js +126 -14
- package/dist/clients/claude/util.js.map +1 -1
- package/dist/clients/cursor/hooks/track-action.d.ts +3 -2
- package/dist/clients/cursor/hooks/track-action.d.ts.map +1 -1
- package/dist/clients/cursor/hooks/track-action.js +9 -7
- package/dist/clients/cursor/hooks/track-action.js.map +1 -1
- package/dist/commands/login.d.ts +3 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +119 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/hooks/core/actions.d.ts +6 -3
- package/dist/hooks/core/actions.d.ts.map +1 -1
- package/dist/hooks/core/actions.js +14 -5
- package/dist/hooks/core/actions.js.map +1 -1
- package/dist/hooks/core/session-state.d.ts +29 -0
- package/dist/hooks/core/session-state.d.ts.map +1 -1
- package/dist/hooks/core/session-state.js +33 -0
- package/dist/hooks/core/session-state.js.map +1 -1
- package/dist/import/claude/auth-mode.d.ts +90 -0
- package/dist/import/claude/auth-mode.d.ts.map +1 -0
- package/dist/import/claude/auth-mode.js +157 -0
- package/dist/import/claude/auth-mode.js.map +1 -0
- package/dist/import/claude/runner.d.ts.map +1 -1
- package/dist/import/claude/runner.js +32 -0
- package/dist/import/claude/runner.js.map +1 -1
- package/dist/import/emitter.js +5 -1
- package/dist/import/emitter.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/auth.d.ts +8 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +175 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/config.d.ts +6 -3
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +8 -5
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/event.d.ts +22 -4
- package/dist/lib/event.d.ts.map +1 -1
- package/dist/lib/event.js +5 -4
- package/dist/lib/event.js.map +1 -1
- 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;
|
|
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;;
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/import/claude/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/import/emitter.js
CHANGED
|
@@ -60,7 +60,11 @@ async function postOneBatchWithRetry(batch, opts) {
|
|
|
60
60
|
}
|
|
61
61
|
function sleep(ms) {
|
|
62
62
|
return new Promise((resolve) => {
|
|
63
|
-
|
|
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;
|
|
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"}
|
package/dist/lib/auth.js
ADDED
|
@@ -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, "&")
|
|
143
|
+
.replace(/</g, "<")
|
|
144
|
+
.replace(/>/g, ">")
|
|
145
|
+
.replace(/"/g, """);
|
|
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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"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -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
|
|
507
|
-
* switch (
|
|
508
|
-
*
|
|
506
|
+
* Independent of `emitTurnEvents` / `emitStepEvents`. The analytics master
|
|
507
|
+
* switch ({@link isAnalyticsEnabled}) is gated separately upstream — this
|
|
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
|