@scotthamilton77/sidekick 0.1.33 → 0.1.34
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.
|
@@ -61,7 +61,7 @@ settings:
|
|
|
61
61
|
# Worktree-aware: "{branchWT,prefix=' | '}" → " | main" or " | feat/auth [wt]"
|
|
62
62
|
# Project name: "{projectDirShort}" → "claude-code-sidekick"
|
|
63
63
|
#
|
|
64
|
-
format: "{devMode,suffix=' | '}{personaName,prefix='[',suffix='] | '}{model,prefix='[',suffix=']'}{effort,prefix=' (',suffix=')'} | {contextBar} {tokenPercentageActual} | {logs} | {projectDirShort,maxLength=40}: {cwd,maxLength=40,truncateStyle='path'}{branchWT,prefix=' | ',maxLength=40}{title,wrapAt=120,prefix=' | ',wrapPrefix='\\n'}{summary,wrapAt=120,prefix=' | ',wrapPrefix='\\n'}"
|
|
64
|
+
format: "{devMode,suffix=' | '}{personaName,prefix='[',suffix='] | '}{model,prefix='[',suffix=']'}{effort,prefix=' (',suffix=')'} | {contextBar} {tokenPercentageActual} | {cost} | {logs} | {projectDirShort,maxLength=40}: {cwd,maxLength=40,truncateStyle='path'}{branchWT,prefix=' | ',maxLength=40}{title,wrapAt=120,prefix=' | ',wrapPrefix='\\n'}{summary,wrapAt=120,prefix=' | ',wrapPrefix='\\n'}"
|
|
65
65
|
|
|
66
66
|
# Threshold configuration for visual warnings
|
|
67
67
|
thresholds:
|
package/dist/bin.js
CHANGED
|
@@ -18830,7 +18830,7 @@ var require_hook_input = __commonJS({
|
|
|
18830
18830
|
"../types/dist/hook-input.js"(exports2) {
|
|
18831
18831
|
"use strict";
|
|
18832
18832
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
18833
|
-
exports2.HookInputSchema = exports2.StatuslineInputSchema = exports2.StatuslineWorkspaceSchema = exports2.StatuslineCostSchema = exports2.StatuslineContextWindowSchema = exports2.StatuslineEffortSchema = exports2.StatuslineModelSchema = exports2.SubagentStopInputSchema = exports2.SubagentStartInputSchema = exports2.NotificationInputSchema = exports2.PostCompactInputSchema = exports2.PreCompactInputSchema = exports2.SessionEndInputSchema = exports2.SessionStartInputSchema = exports2.StopInputSchema = exports2.PostToolUseInputSchema = exports2.PreToolUseInputSchema = exports2.UserPromptSubmitInputSchema = exports2.HookInputBaseSchema = void 0;
|
|
18833
|
+
exports2.HookInputSchema = exports2.StatuslineInputSchema = exports2.StatuslineRateLimitsSchema = exports2.StatuslineRateLimitWindowSchema = exports2.StatuslineThinkingSchema = exports2.StatuslineWorkspaceSchema = exports2.StatuslineRepoSchema = exports2.StatuslineCostSchema = exports2.StatuslineContextWindowSchema = exports2.StatuslineEffortSchema = exports2.StatuslineModelSchema = exports2.SubagentStopInputSchema = exports2.SubagentStartInputSchema = exports2.NotificationInputSchema = exports2.PostCompactInputSchema = exports2.PreCompactInputSchema = exports2.SessionEndInputSchema = exports2.SessionStartInputSchema = exports2.StopInputSchema = exports2.PostToolUseInputSchema = exports2.PreToolUseInputSchema = exports2.UserPromptSubmitInputSchema = exports2.HookInputBaseSchema = void 0;
|
|
18834
18834
|
var zod_1 = require_zod();
|
|
18835
18835
|
exports2.HookInputBaseSchema = zod_1.z.object({
|
|
18836
18836
|
/** Unique identifier for the current Claude session */
|
|
@@ -18934,7 +18934,11 @@ var require_hook_input = __commonJS({
|
|
|
18934
18934
|
/** Total output tokens used in session */
|
|
18935
18935
|
total_output_tokens: zod_1.z.number().optional(),
|
|
18936
18936
|
/** Maximum context window size for the model */
|
|
18937
|
-
context_window_size: zod_1.z.number().optional()
|
|
18937
|
+
context_window_size: zod_1.z.number().optional(),
|
|
18938
|
+
/** Percentage of context window used */
|
|
18939
|
+
used_percentage: zod_1.z.number().optional(),
|
|
18940
|
+
/** Percentage of context window remaining */
|
|
18941
|
+
remaining_percentage: zod_1.z.number().optional()
|
|
18938
18942
|
});
|
|
18939
18943
|
exports2.StatuslineCostSchema = zod_1.z.object({
|
|
18940
18944
|
/** Total cost in USD for the session */
|
|
@@ -18948,11 +18952,39 @@ var require_hook_input = __commonJS({
|
|
|
18948
18952
|
/** Total lines removed in session */
|
|
18949
18953
|
total_lines_removed: zod_1.z.number().optional()
|
|
18950
18954
|
});
|
|
18955
|
+
exports2.StatuslineRepoSchema = zod_1.z.object({
|
|
18956
|
+
/** Git hosting service (e.g., "github.com") */
|
|
18957
|
+
host: zod_1.z.string(),
|
|
18958
|
+
/** Repository owner/organization */
|
|
18959
|
+
owner: zod_1.z.string(),
|
|
18960
|
+
/** Repository name */
|
|
18961
|
+
name: zod_1.z.string()
|
|
18962
|
+
});
|
|
18951
18963
|
exports2.StatuslineWorkspaceSchema = zod_1.z.object({
|
|
18952
18964
|
/** Current working directory */
|
|
18953
18965
|
current_dir: zod_1.z.string(),
|
|
18954
18966
|
/** Original project directory */
|
|
18955
|
-
project_dir: zod_1.z.string()
|
|
18967
|
+
project_dir: zod_1.z.string(),
|
|
18968
|
+
/** Additional directories added to the session (e.g., via --add-dir) */
|
|
18969
|
+
added_dirs: zod_1.z.array(zod_1.z.string()).optional(),
|
|
18970
|
+
/** Git repository information, when the workspace is inside a known repo */
|
|
18971
|
+
repo: exports2.StatuslineRepoSchema.optional()
|
|
18972
|
+
});
|
|
18973
|
+
exports2.StatuslineThinkingSchema = zod_1.z.object({
|
|
18974
|
+
/** Whether extended thinking is enabled for the session */
|
|
18975
|
+
enabled: zod_1.z.boolean()
|
|
18976
|
+
});
|
|
18977
|
+
exports2.StatuslineRateLimitWindowSchema = zod_1.z.object({
|
|
18978
|
+
/** Percentage of the window's quota used */
|
|
18979
|
+
used_percentage: zod_1.z.number(),
|
|
18980
|
+
/** Unix epoch seconds when this window resets */
|
|
18981
|
+
resets_at: zod_1.z.number()
|
|
18982
|
+
});
|
|
18983
|
+
exports2.StatuslineRateLimitsSchema = zod_1.z.object({
|
|
18984
|
+
/** Five-hour rolling window usage */
|
|
18985
|
+
five_hour: exports2.StatuslineRateLimitWindowSchema.optional(),
|
|
18986
|
+
/** Seven-day rolling window usage */
|
|
18987
|
+
seven_day: exports2.StatuslineRateLimitWindowSchema.optional()
|
|
18956
18988
|
});
|
|
18957
18989
|
exports2.StatuslineInputSchema = zod_1.z.object({
|
|
18958
18990
|
/** Hook event name (always "Status" for statusline) */
|
|
@@ -18969,12 +19001,24 @@ var require_hook_input = __commonJS({
|
|
|
18969
19001
|
model: exports2.StatuslineModelSchema,
|
|
18970
19002
|
/** Model reasoning effort (present only when the model supports the effort parameter) */
|
|
18971
19003
|
effort: exports2.StatuslineEffortSchema.optional(),
|
|
19004
|
+
/** Unique identifier for the current prompt */
|
|
19005
|
+
prompt_id: zod_1.z.string().optional(),
|
|
19006
|
+
/** User-assigned session name */
|
|
19007
|
+
session_name: zod_1.z.string().optional(),
|
|
18972
19008
|
/** Workspace paths */
|
|
18973
19009
|
workspace: exports2.StatuslineWorkspaceSchema.optional(),
|
|
18974
19010
|
/** Cost and duration metrics */
|
|
18975
19011
|
cost: exports2.StatuslineCostSchema.optional(),
|
|
18976
19012
|
/** Context window usage */
|
|
18977
19013
|
context_window: exports2.StatuslineContextWindowSchema.optional(),
|
|
19014
|
+
/** Whether the session has exceeded 200k tokens */
|
|
19015
|
+
exceeds_200k_tokens: zod_1.z.boolean().optional(),
|
|
19016
|
+
/** Whether fast mode is active for the session */
|
|
19017
|
+
fast_mode: zod_1.z.boolean().optional(),
|
|
19018
|
+
/** Extended thinking mode status */
|
|
19019
|
+
thinking: exports2.StatuslineThinkingSchema.optional(),
|
|
19020
|
+
/** Rate limit usage across rolling windows */
|
|
19021
|
+
rate_limits: exports2.StatuslineRateLimitsSchema.optional(),
|
|
18978
19022
|
/** Output style configuration */
|
|
18979
19023
|
output_style: zod_1.z.object({ name: zod_1.z.string() }).optional()
|
|
18980
19024
|
});
|
|
@@ -47593,7 +47637,7 @@ var require_build_identity = __commonJS({
|
|
|
47593
47637
|
var path_1 = __importDefault2(require("path"));
|
|
47594
47638
|
var DEV_PREFIX = "dev:";
|
|
47595
47639
|
var NO_DIST_SENTINEL = "nodist";
|
|
47596
|
-
function computeBuildIdentity(injectedVersion = true ? "0.1.
|
|
47640
|
+
function computeBuildIdentity(injectedVersion = true ? "0.1.34" : void 0, devFingerprint = computeDevFingerprint) {
|
|
47597
47641
|
return injectedVersion !== void 0 ? injectedVersion : DEV_PREFIX + devFingerprint();
|
|
47598
47642
|
}
|
|
47599
47643
|
function computeDevFingerprint() {
|
|
@@ -82487,7 +82531,26 @@ Examples:
|
|
|
82487
82531
|
const cost = raw.cost;
|
|
82488
82532
|
const contextWindow = raw.context_window;
|
|
82489
82533
|
const currentUsage = contextWindow?.current_usage;
|
|
82534
|
+
const thinking = raw.thinking;
|
|
82535
|
+
const rateLimits = raw.rate_limits;
|
|
82490
82536
|
const num = (val, fallback) => typeof val === "number" ? val : fallback;
|
|
82537
|
+
const parseRateLimitWindow = (val) => {
|
|
82538
|
+
if (typeof val !== "object" || val === null)
|
|
82539
|
+
return void 0;
|
|
82540
|
+
const w = val;
|
|
82541
|
+
if (typeof w.used_percentage !== "number" || typeof w.resets_at !== "number")
|
|
82542
|
+
return void 0;
|
|
82543
|
+
return { used_percentage: w.used_percentage, resets_at: w.resets_at };
|
|
82544
|
+
};
|
|
82545
|
+
const parseRepo = (val) => {
|
|
82546
|
+
if (typeof val !== "object" || val === null)
|
|
82547
|
+
return void 0;
|
|
82548
|
+
const r = val;
|
|
82549
|
+
if (typeof r.host !== "string" || typeof r.owner !== "string" || typeof r.name !== "string")
|
|
82550
|
+
return void 0;
|
|
82551
|
+
return { host: r.host, owner: r.owner, name: r.name };
|
|
82552
|
+
};
|
|
82553
|
+
const repo = parseRepo(workspace?.repo);
|
|
82491
82554
|
return {
|
|
82492
82555
|
hook_event_name: "Status",
|
|
82493
82556
|
session_id: raw.session_id,
|
|
@@ -82500,9 +82563,13 @@ Examples:
|
|
|
82500
82563
|
},
|
|
82501
82564
|
// Preserve effort only when present; absent when the model doesn't support the parameter
|
|
82502
82565
|
...typeof effort?.level === "string" && { effort: { level: effort.level } },
|
|
82566
|
+
...typeof raw.prompt_id === "string" && { prompt_id: raw.prompt_id },
|
|
82567
|
+
...typeof raw.session_name === "string" && { session_name: raw.session_name },
|
|
82503
82568
|
workspace: {
|
|
82504
82569
|
current_dir: workspace?.current_dir ?? raw.cwd,
|
|
82505
|
-
project_dir: workspace?.project_dir ?? raw.cwd
|
|
82570
|
+
project_dir: workspace?.project_dir ?? raw.cwd,
|
|
82571
|
+
...Array.isArray(workspace?.added_dirs) && { added_dirs: workspace.added_dirs },
|
|
82572
|
+
...repo !== void 0 && { repo }
|
|
82506
82573
|
},
|
|
82507
82574
|
output_style: {
|
|
82508
82575
|
name: outputStyle?.name ?? "default"
|
|
@@ -82519,6 +82586,10 @@ Examples:
|
|
|
82519
82586
|
total_output_tokens: num(contextWindow?.total_output_tokens, 0),
|
|
82520
82587
|
// Default to 200k if not specified - reasonable for Claude models
|
|
82521
82588
|
context_window_size: num(contextWindow?.context_window_size, 2e5),
|
|
82589
|
+
...typeof contextWindow?.used_percentage === "number" && { used_percentage: contextWindow.used_percentage },
|
|
82590
|
+
...typeof contextWindow?.remaining_percentage === "number" && {
|
|
82591
|
+
remaining_percentage: contextWindow.remaining_percentage
|
|
82592
|
+
},
|
|
82522
82593
|
// Preserve null when current_usage is null (can happen at session start)
|
|
82523
82594
|
// This allows StatuslineService to fall back to transcript metrics
|
|
82524
82595
|
current_usage: currentUsage ? {
|
|
@@ -82528,6 +82599,19 @@ Examples:
|
|
|
82528
82599
|
cache_read_input_tokens: num(currentUsage.cache_read_input_tokens, 0)
|
|
82529
82600
|
} : null
|
|
82530
82601
|
},
|
|
82602
|
+
...typeof raw.exceeds_200k_tokens === "boolean" && { exceeds_200k_tokens: raw.exceeds_200k_tokens },
|
|
82603
|
+
...typeof raw.fast_mode === "boolean" && { fast_mode: raw.fast_mode },
|
|
82604
|
+
...typeof thinking?.enabled === "boolean" && { thinking: { enabled: thinking.enabled } },
|
|
82605
|
+
...typeof rateLimits === "object" && rateLimits !== null && {
|
|
82606
|
+
rate_limits: (() => {
|
|
82607
|
+
const fiveHour = parseRateLimitWindow(rateLimits.five_hour);
|
|
82608
|
+
const sevenDay = parseRateLimitWindow(rateLimits.seven_day);
|
|
82609
|
+
return {
|
|
82610
|
+
...fiveHour !== void 0 && { five_hour: fiveHour },
|
|
82611
|
+
...sevenDay !== void 0 && { seven_day: sevenDay }
|
|
82612
|
+
};
|
|
82613
|
+
})()
|
|
82614
|
+
},
|
|
82531
82615
|
// Parse optional worktree data (only present in worktree sessions)
|
|
82532
82616
|
worktree: raw.worktree ? (() => {
|
|
82533
82617
|
const wt = raw.worktree;
|
|
@@ -87536,7 +87620,7 @@ var require_cli = __commonJS({
|
|
|
87536
87620
|
var promises_12 = require("node:fs/promises");
|
|
87537
87621
|
var node_stream_1 = require("node:stream");
|
|
87538
87622
|
var yargs_parser_1 = __importDefault2(require_build());
|
|
87539
|
-
var VERSION = true ? "0.1.
|
|
87623
|
+
var VERSION = true ? "0.1.34" : "dev";
|
|
87540
87624
|
var SANDBOX_ERROR_MESSAGE = `Error: Daemon commands cannot run in sandbox mode.
|
|
87541
87625
|
|
|
87542
87626
|
Claude Code's sandbox blocks Unix socket operations required for daemon IPC.
|
package/dist/daemon.js
CHANGED
|
@@ -17854,7 +17854,7 @@ var require_hook_input = __commonJS({
|
|
|
17854
17854
|
"../types/dist/hook-input.js"(exports2) {
|
|
17855
17855
|
"use strict";
|
|
17856
17856
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
17857
|
-
exports2.HookInputSchema = exports2.StatuslineInputSchema = exports2.StatuslineWorkspaceSchema = exports2.StatuslineCostSchema = exports2.StatuslineContextWindowSchema = exports2.StatuslineEffortSchema = exports2.StatuslineModelSchema = exports2.SubagentStopInputSchema = exports2.SubagentStartInputSchema = exports2.NotificationInputSchema = exports2.PostCompactInputSchema = exports2.PreCompactInputSchema = exports2.SessionEndInputSchema = exports2.SessionStartInputSchema = exports2.StopInputSchema = exports2.PostToolUseInputSchema = exports2.PreToolUseInputSchema = exports2.UserPromptSubmitInputSchema = exports2.HookInputBaseSchema = void 0;
|
|
17857
|
+
exports2.HookInputSchema = exports2.StatuslineInputSchema = exports2.StatuslineRateLimitsSchema = exports2.StatuslineRateLimitWindowSchema = exports2.StatuslineThinkingSchema = exports2.StatuslineWorkspaceSchema = exports2.StatuslineRepoSchema = exports2.StatuslineCostSchema = exports2.StatuslineContextWindowSchema = exports2.StatuslineEffortSchema = exports2.StatuslineModelSchema = exports2.SubagentStopInputSchema = exports2.SubagentStartInputSchema = exports2.NotificationInputSchema = exports2.PostCompactInputSchema = exports2.PreCompactInputSchema = exports2.SessionEndInputSchema = exports2.SessionStartInputSchema = exports2.StopInputSchema = exports2.PostToolUseInputSchema = exports2.PreToolUseInputSchema = exports2.UserPromptSubmitInputSchema = exports2.HookInputBaseSchema = void 0;
|
|
17858
17858
|
var zod_1 = require_zod();
|
|
17859
17859
|
exports2.HookInputBaseSchema = zod_1.z.object({
|
|
17860
17860
|
/** Unique identifier for the current Claude session */
|
|
@@ -17958,7 +17958,11 @@ var require_hook_input = __commonJS({
|
|
|
17958
17958
|
/** Total output tokens used in session */
|
|
17959
17959
|
total_output_tokens: zod_1.z.number().optional(),
|
|
17960
17960
|
/** Maximum context window size for the model */
|
|
17961
|
-
context_window_size: zod_1.z.number().optional()
|
|
17961
|
+
context_window_size: zod_1.z.number().optional(),
|
|
17962
|
+
/** Percentage of context window used */
|
|
17963
|
+
used_percentage: zod_1.z.number().optional(),
|
|
17964
|
+
/** Percentage of context window remaining */
|
|
17965
|
+
remaining_percentage: zod_1.z.number().optional()
|
|
17962
17966
|
});
|
|
17963
17967
|
exports2.StatuslineCostSchema = zod_1.z.object({
|
|
17964
17968
|
/** Total cost in USD for the session */
|
|
@@ -17972,11 +17976,39 @@ var require_hook_input = __commonJS({
|
|
|
17972
17976
|
/** Total lines removed in session */
|
|
17973
17977
|
total_lines_removed: zod_1.z.number().optional()
|
|
17974
17978
|
});
|
|
17979
|
+
exports2.StatuslineRepoSchema = zod_1.z.object({
|
|
17980
|
+
/** Git hosting service (e.g., "github.com") */
|
|
17981
|
+
host: zod_1.z.string(),
|
|
17982
|
+
/** Repository owner/organization */
|
|
17983
|
+
owner: zod_1.z.string(),
|
|
17984
|
+
/** Repository name */
|
|
17985
|
+
name: zod_1.z.string()
|
|
17986
|
+
});
|
|
17975
17987
|
exports2.StatuslineWorkspaceSchema = zod_1.z.object({
|
|
17976
17988
|
/** Current working directory */
|
|
17977
17989
|
current_dir: zod_1.z.string(),
|
|
17978
17990
|
/** Original project directory */
|
|
17979
|
-
project_dir: zod_1.z.string()
|
|
17991
|
+
project_dir: zod_1.z.string(),
|
|
17992
|
+
/** Additional directories added to the session (e.g., via --add-dir) */
|
|
17993
|
+
added_dirs: zod_1.z.array(zod_1.z.string()).optional(),
|
|
17994
|
+
/** Git repository information, when the workspace is inside a known repo */
|
|
17995
|
+
repo: exports2.StatuslineRepoSchema.optional()
|
|
17996
|
+
});
|
|
17997
|
+
exports2.StatuslineThinkingSchema = zod_1.z.object({
|
|
17998
|
+
/** Whether extended thinking is enabled for the session */
|
|
17999
|
+
enabled: zod_1.z.boolean()
|
|
18000
|
+
});
|
|
18001
|
+
exports2.StatuslineRateLimitWindowSchema = zod_1.z.object({
|
|
18002
|
+
/** Percentage of the window's quota used */
|
|
18003
|
+
used_percentage: zod_1.z.number(),
|
|
18004
|
+
/** Unix epoch seconds when this window resets */
|
|
18005
|
+
resets_at: zod_1.z.number()
|
|
18006
|
+
});
|
|
18007
|
+
exports2.StatuslineRateLimitsSchema = zod_1.z.object({
|
|
18008
|
+
/** Five-hour rolling window usage */
|
|
18009
|
+
five_hour: exports2.StatuslineRateLimitWindowSchema.optional(),
|
|
18010
|
+
/** Seven-day rolling window usage */
|
|
18011
|
+
seven_day: exports2.StatuslineRateLimitWindowSchema.optional()
|
|
17980
18012
|
});
|
|
17981
18013
|
exports2.StatuslineInputSchema = zod_1.z.object({
|
|
17982
18014
|
/** Hook event name (always "Status" for statusline) */
|
|
@@ -17993,12 +18025,24 @@ var require_hook_input = __commonJS({
|
|
|
17993
18025
|
model: exports2.StatuslineModelSchema,
|
|
17994
18026
|
/** Model reasoning effort (present only when the model supports the effort parameter) */
|
|
17995
18027
|
effort: exports2.StatuslineEffortSchema.optional(),
|
|
18028
|
+
/** Unique identifier for the current prompt */
|
|
18029
|
+
prompt_id: zod_1.z.string().optional(),
|
|
18030
|
+
/** User-assigned session name */
|
|
18031
|
+
session_name: zod_1.z.string().optional(),
|
|
17996
18032
|
/** Workspace paths */
|
|
17997
18033
|
workspace: exports2.StatuslineWorkspaceSchema.optional(),
|
|
17998
18034
|
/** Cost and duration metrics */
|
|
17999
18035
|
cost: exports2.StatuslineCostSchema.optional(),
|
|
18000
18036
|
/** Context window usage */
|
|
18001
18037
|
context_window: exports2.StatuslineContextWindowSchema.optional(),
|
|
18038
|
+
/** Whether the session has exceeded 200k tokens */
|
|
18039
|
+
exceeds_200k_tokens: zod_1.z.boolean().optional(),
|
|
18040
|
+
/** Whether fast mode is active for the session */
|
|
18041
|
+
fast_mode: zod_1.z.boolean().optional(),
|
|
18042
|
+
/** Extended thinking mode status */
|
|
18043
|
+
thinking: exports2.StatuslineThinkingSchema.optional(),
|
|
18044
|
+
/** Rate limit usage across rolling windows */
|
|
18045
|
+
rate_limits: exports2.StatuslineRateLimitsSchema.optional(),
|
|
18002
18046
|
/** Output style configuration */
|
|
18003
18047
|
output_style: zod_1.z.object({ name: zod_1.z.string() }).optional()
|
|
18004
18048
|
});
|
|
@@ -46617,7 +46661,7 @@ var require_build_identity = __commonJS({
|
|
|
46617
46661
|
var path_1 = __importDefault(require("path"));
|
|
46618
46662
|
var DEV_PREFIX = "dev:";
|
|
46619
46663
|
var NO_DIST_SENTINEL = "nodist";
|
|
46620
|
-
function computeBuildIdentity(injectedVersion = true ? "0.1.
|
|
46664
|
+
function computeBuildIdentity(injectedVersion = true ? "0.1.34" : void 0, devFingerprint = computeDevFingerprint) {
|
|
46621
46665
|
return injectedVersion !== void 0 ? injectedVersion : DEV_PREFIX + devFingerprint();
|
|
46622
46666
|
}
|
|
46623
46667
|
function computeDevFingerprint() {
|