@scotthamilton77/sidekick 0.1.31 → 0.1.33
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.
|
@@ -11,6 +11,7 @@ settings:
|
|
|
11
11
|
#
|
|
12
12
|
# Available placeholders:
|
|
13
13
|
# {model} - Current model name (e.g., "Opus")
|
|
14
|
+
# {effort} - Model reasoning effort level (e.g., "high"); empty when unsupported
|
|
14
15
|
# {contextBar} - Visual context usage graph (e.g., "🪙 ▓▓▒|░░░")
|
|
15
16
|
# {contextWindow} - Total context window size (e.g., "200k")
|
|
16
17
|
# {tokenUsageActual} - Current tokens without compaction buffer (e.g., "45k")
|
|
@@ -60,7 +61,7 @@ settings:
|
|
|
60
61
|
# Worktree-aware: "{branchWT,prefix=' | '}" → " | main" or " | feat/auth [wt]"
|
|
61
62
|
# Project name: "{projectDirShort}" → "claude-code-sidekick"
|
|
62
63
|
#
|
|
63
|
-
format: "{devMode,suffix=' | '}{personaName,prefix='[',suffix='] | '}{model,prefix='[',suffix='] |
|
|
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
65
|
|
|
65
66
|
# Threshold configuration for visual warnings
|
|
66
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.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.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;
|
|
18834
18834
|
var zod_1 = require_zod();
|
|
18835
18835
|
exports2.HookInputBaseSchema = zod_1.z.object({
|
|
18836
18836
|
/** Unique identifier for the current Claude session */
|
|
@@ -18924,6 +18924,10 @@ var require_hook_input = __commonJS({
|
|
|
18924
18924
|
/** Human-readable display name (e.g., "Opus") */
|
|
18925
18925
|
display_name: zod_1.z.string()
|
|
18926
18926
|
});
|
|
18927
|
+
exports2.StatuslineEffortSchema = zod_1.z.object({
|
|
18928
|
+
/** Active effort level: "low", "medium", "high", "xhigh", or "max" */
|
|
18929
|
+
level: zod_1.z.string()
|
|
18930
|
+
});
|
|
18927
18931
|
exports2.StatuslineContextWindowSchema = zod_1.z.object({
|
|
18928
18932
|
/** Total input tokens used in session */
|
|
18929
18933
|
total_input_tokens: zod_1.z.number(),
|
|
@@ -18963,6 +18967,8 @@ var require_hook_input = __commonJS({
|
|
|
18963
18967
|
version: zod_1.z.string().optional(),
|
|
18964
18968
|
/** Model information with id and display_name */
|
|
18965
18969
|
model: exports2.StatuslineModelSchema,
|
|
18970
|
+
/** Model reasoning effort (present only when the model supports the effort parameter) */
|
|
18971
|
+
effort: exports2.StatuslineEffortSchema.optional(),
|
|
18966
18972
|
/** Workspace paths */
|
|
18967
18973
|
workspace: exports2.StatuslineWorkspaceSchema.optional(),
|
|
18968
18974
|
/** Cost and duration metrics */
|
|
@@ -28151,6 +28157,35 @@ var require_error_utils = __commonJS({
|
|
|
28151
28157
|
}
|
|
28152
28158
|
});
|
|
28153
28159
|
|
|
28160
|
+
// ../sidekick-core/dist/claude-paths.js
|
|
28161
|
+
var require_claude_paths = __commonJS({
|
|
28162
|
+
"../sidekick-core/dist/claude-paths.js"(exports2) {
|
|
28163
|
+
"use strict";
|
|
28164
|
+
var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {
|
|
28165
|
+
return mod && mod.__esModule ? mod : { "default": mod };
|
|
28166
|
+
};
|
|
28167
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
28168
|
+
exports2.claudeConfigDir = claudeConfigDir;
|
|
28169
|
+
exports2.encodeProjectPath = encodeProjectPath;
|
|
28170
|
+
exports2.reconstructTranscriptPath = reconstructTranscriptPath;
|
|
28171
|
+
var os_1 = require("os");
|
|
28172
|
+
var path_1 = __importDefault2(require("path"));
|
|
28173
|
+
function claudeConfigDir(home) {
|
|
28174
|
+
const override = process.env.CLAUDE_CONFIG_DIR?.trim();
|
|
28175
|
+
if (override)
|
|
28176
|
+
return override;
|
|
28177
|
+
return path_1.default.join(home ?? (0, os_1.homedir)(), ".claude");
|
|
28178
|
+
}
|
|
28179
|
+
function encodeProjectPath(projectDir) {
|
|
28180
|
+
return projectDir.replace(/\//g, "-");
|
|
28181
|
+
}
|
|
28182
|
+
function reconstructTranscriptPath(projectDir, sessionId) {
|
|
28183
|
+
const encodedPath = encodeProjectPath(projectDir);
|
|
28184
|
+
return path_1.default.join(claudeConfigDir(), "projects", encodedPath, `${sessionId}.jsonl`);
|
|
28185
|
+
}
|
|
28186
|
+
}
|
|
28187
|
+
});
|
|
28188
|
+
|
|
28154
28189
|
// ../sidekick-core/dist/assets.js
|
|
28155
28190
|
var require_assets = __commonJS({
|
|
28156
28191
|
"../sidekick-core/dist/assets.js"(exports2) {
|
|
@@ -28165,6 +28200,7 @@ var require_assets = __commonJS({
|
|
|
28165
28200
|
var node_os_1 = require("node:os");
|
|
28166
28201
|
var node_path_1 = require("node:path");
|
|
28167
28202
|
var error_utils_js_1 = require_error_utils();
|
|
28203
|
+
var claude_paths_js_1 = require_claude_paths();
|
|
28168
28204
|
function createCascadingResolver(options) {
|
|
28169
28205
|
const { cascadeLayers } = options;
|
|
28170
28206
|
const findFile = (relativePath) => {
|
|
@@ -28223,7 +28259,7 @@ var require_assets = __commonJS({
|
|
|
28223
28259
|
function buildCascadeLayers(defaultAssetsDir, homeDir, projectRoot) {
|
|
28224
28260
|
const layers = [];
|
|
28225
28261
|
layers.push(defaultAssetsDir);
|
|
28226
|
-
const userInstalled = (0, node_path_1.join)(
|
|
28262
|
+
const userInstalled = (0, node_path_1.join)((0, claude_paths_js_1.claudeConfigDir)(homeDir), "hooks", "sidekick", "assets");
|
|
28227
28263
|
layers.push(userInstalled);
|
|
28228
28264
|
const userPersistent = (0, node_path_1.join)(homeDir, ".sidekick", "assets");
|
|
28229
28265
|
layers.push(userPersistent);
|
|
@@ -28253,28 +28289,6 @@ var require_assets = __commonJS({
|
|
|
28253
28289
|
}
|
|
28254
28290
|
});
|
|
28255
28291
|
|
|
28256
|
-
// ../sidekick-core/dist/claude-paths.js
|
|
28257
|
-
var require_claude_paths = __commonJS({
|
|
28258
|
-
"../sidekick-core/dist/claude-paths.js"(exports2) {
|
|
28259
|
-
"use strict";
|
|
28260
|
-
var __importDefault2 = exports2 && exports2.__importDefault || function(mod) {
|
|
28261
|
-
return mod && mod.__esModule ? mod : { "default": mod };
|
|
28262
|
-
};
|
|
28263
|
-
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
28264
|
-
exports2.encodeProjectPath = encodeProjectPath;
|
|
28265
|
-
exports2.reconstructTranscriptPath = reconstructTranscriptPath;
|
|
28266
|
-
var os_1 = require("os");
|
|
28267
|
-
var path_1 = __importDefault2(require("path"));
|
|
28268
|
-
function encodeProjectPath(projectDir) {
|
|
28269
|
-
return projectDir.replace(/\//g, "-");
|
|
28270
|
-
}
|
|
28271
|
-
function reconstructTranscriptPath(projectDir, sessionId) {
|
|
28272
|
-
const encodedPath = encodeProjectPath(projectDir);
|
|
28273
|
-
return path_1.default.join((0, os_1.homedir)(), ".claude", "projects", encodedPath, `${sessionId}.jsonl`);
|
|
28274
|
-
}
|
|
28275
|
-
}
|
|
28276
|
-
});
|
|
28277
|
-
|
|
28278
28292
|
// ../sidekick-core/dist/sidekick-paths.js
|
|
28279
28293
|
var require_sidekick_paths = __commonJS({
|
|
28280
28294
|
"../sidekick-core/dist/sidekick-paths.js"(exports2) {
|
|
@@ -47579,7 +47593,7 @@ var require_build_identity = __commonJS({
|
|
|
47579
47593
|
var path_1 = __importDefault2(require("path"));
|
|
47580
47594
|
var DEV_PREFIX = "dev:";
|
|
47581
47595
|
var NO_DIST_SENTINEL = "nodist";
|
|
47582
|
-
function computeBuildIdentity(injectedVersion = true ? "0.1.
|
|
47596
|
+
function computeBuildIdentity(injectedVersion = true ? "0.1.33" : void 0, devFingerprint = computeDevFingerprint) {
|
|
47583
47597
|
return injectedVersion !== void 0 ? injectedVersion : DEV_PREFIX + devFingerprint();
|
|
47584
47598
|
}
|
|
47585
47599
|
function computeDevFingerprint() {
|
|
@@ -59107,6 +59121,7 @@ var require_plugin_detector = __commonJS({
|
|
|
59107
59121
|
var node_child_process_1 = require("node:child_process");
|
|
59108
59122
|
var api_key_detector_js_1 = require_api_key_detector();
|
|
59109
59123
|
var error_utils_js_1 = require_error_utils();
|
|
59124
|
+
var claude_paths_js_1 = require_claude_paths();
|
|
59110
59125
|
function isSidekickStatuslineCommand(command) {
|
|
59111
59126
|
return command?.toLowerCase().includes("sidekick") ?? false;
|
|
59112
59127
|
}
|
|
@@ -59165,7 +59180,7 @@ var require_plugin_detector = __commonJS({
|
|
|
59165
59180
|
});
|
|
59166
59181
|
}
|
|
59167
59182
|
async function detectActualStatusline(projectDir, homeDir) {
|
|
59168
|
-
const userSettingsPath = path.join(
|
|
59183
|
+
const userSettingsPath = path.join((0, claude_paths_js_1.claudeConfigDir)(homeDir), "settings.json");
|
|
59169
59184
|
const projectSettingsPath = path.join(projectDir, ".claude", "settings.local.json");
|
|
59170
59185
|
let inUser = false;
|
|
59171
59186
|
let inProject = false;
|
|
@@ -59244,7 +59259,7 @@ var require_plugin_detector = __commonJS({
|
|
|
59244
59259
|
}
|
|
59245
59260
|
async function detectDevModeFromSettings(projectDir, homeDir) {
|
|
59246
59261
|
const settingsPaths = [
|
|
59247
|
-
path.join(
|
|
59262
|
+
path.join((0, claude_paths_js_1.claudeConfigDir)(homeDir), "settings.json"),
|
|
59248
59263
|
path.join(projectDir, ".claude", "settings.local.json")
|
|
59249
59264
|
];
|
|
59250
59265
|
for (const settingsPath of settingsPaths) {
|
|
@@ -65715,9 +65730,9 @@ var require_dist4 = __commonJS({
|
|
|
65715
65730
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
|
|
65716
65731
|
};
|
|
65717
65732
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
65718
|
-
exports2.
|
|
65719
|
-
exports2.
|
|
65720
|
-
exports2.computeBuildIdentity = exports2.CoalescingGuard = exports2.loadUserProfile = exports2.parseGitStatusOutput = exports2.getGitFileStatus = exports2.toErrorMessage = exports2.isInSandbox = exports2.updateDaemonHealth = exports2.readDaemonHealth = exports2.ProjectRegistryService = exports2.encodeProjectDir = exports2.DaemonGlobalLogMetricsDescriptor = exports2.CliLogMetricsDescriptor = exports2.DaemonLogMetricsDescriptor = exports2.CompactionHistoryDescriptor = exports2.TranscriptMetricsDescriptor = exports2.GlobalStateAccessor = exports2.SessionStateAccessor = exports2.globalState = exports2.sessionState = exports2.StateCorruptError = exports2.StateNotFoundError = exports2.StateService = exports2.createHookableLogger = exports2.InstrumentedProfileProviderFactory = exports2.InstrumentedLLMProvider = exports2.ServiceFactoryImpl = exports2.TranscriptServiceImpl = exports2.createDefaultTokenUsage = void 0;
|
|
65733
|
+
exports2.USER_STATUS_FILENAME = exports2.createSetupStatusService = exports2.SetupStatusService = exports2.DaemonClient = exports2.findZombieDaemons = exports2.killZombieDaemons = exports2.killAllDaemons = exports2.SessionLogWriter = exports2.setSessionLogWriter = exports2.logEvent = exports2.LogEvents = exports2.DEFAULT_MAX_FILES = exports2.DEFAULT_ROTATE_SIZE_BYTES = exports2.getComponentLogLevel = exports2.setupGlobalErrorHandlers = exports2.createLoggerFacade = exports2.createLogManager = exports2.createConsoleLogger = exports2.getUserDaemonsDir = exports2.getUserPidPath = exports2.getTokenPath = exports2.getSocketPath = exports2.getProjectHash = exports2.getPidPath = exports2.getLockPath = exports2.IpcService = exports2.IpcServer = exports2.loadPersonaFile = exports2.getDefaultPersonasDir = exports2.discoverPersonas = exports2.createPersonaLoader = exports2.claudeConfigDir = exports2.reconstructTranscriptPath = exports2.encodeProjectPath = exports2.isSubagentStopEvent = exports2.isSubagentStartEvent = exports2.isPreCompactEvent = exports2.isStopEvent = exports2.isPostToolUseEvent = exports2.isPreToolUseEvent = exports2.isUserPromptSubmitEvent = exports2.isSessionEndEvent = exports2.isSessionStartEvent = exports2.isTranscriptEvent = exports2.isHookEvent = exports2.MetricsPersistPayloadSchema = exports2.CleanupPayloadSchema = exports2.ResumeGenerationPayloadSchema = exports2.SessionSummaryPayloadSchema = exports2.TaskTypes = void 0;
|
|
65734
|
+
exports2.copyWithTimestampSync = exports2.renameWithTimestampSync = exports2.renameWithTimestamp = exports2.copyWithTimestamp = exports2.getTimestampedPath = exports2.extractToolResultPreview = exports2.extractToolCallPreview = exports2.extractTextFromContent = exports2.extractContentPreview = exports2.HandlerRegistryImpl = exports2.extractConsumedTimestamp = exports2.createConsumedFilePattern = exports2.CONSUMED_FILE_PATTERN = exports2.filterActiveReminderFiles = exports2.validatePathSegment = exports2.isValidPathSegment = exports2.getReminderPath = exports2.getHookDir = exports2.getStagingRoot = exports2.SessionScopedStagingService = exports2.StagingServiceCore = exports2.GITIGNORE_ENTRIES = exports2.SIDEKICK_GITIGNORE_HEADER = exports2.SIDEKICK_SECTION_END = exports2.SIDEKICK_SECTION_START = exports2.removeLegacyGitignoreSection = exports2.detectLegacyGitignoreSection = exports2.detectGitignoreStatus = exports2.removeGitignoreSection = exports2.installGitignoreSection = exports2.validateOpenAIKey = exports2.validateOpenRouterKey = exports2.runDoctorCheck = exports2.detectPluginLiveness = exports2.detectPluginInstallation = exports2.detectDevModeFromSettings = exports2.detectActualStatusline = exports2.spawnWithTimeout = exports2.getDoctorTimeout = exports2.DOCTOR_TIMEOUTS = exports2.projectApiKeyStatusFromHealth = exports2.userApiKeyStatusFromHealth = exports2.buildProjectApiKeyStatus = exports2.buildUserApiKeyStatus = exports2.detectAllApiKeys = exports2.detectActualApiKey = exports2.readKeyFromEnvFile = exports2.determineOverallStatus = exports2.toScopeStatus = exports2.PROJECT_STATUS_FILENAME = void 0;
|
|
65735
|
+
exports2.computeBuildIdentity = exports2.CoalescingGuard = exports2.loadUserProfile = exports2.parseGitStatusOutput = exports2.getGitFileStatus = exports2.toErrorMessage = exports2.isInSandbox = exports2.updateDaemonHealth = exports2.readDaemonHealth = exports2.ProjectRegistryService = exports2.encodeProjectDir = exports2.DaemonGlobalLogMetricsDescriptor = exports2.CliLogMetricsDescriptor = exports2.DaemonLogMetricsDescriptor = exports2.CompactionHistoryDescriptor = exports2.TranscriptMetricsDescriptor = exports2.GlobalStateAccessor = exports2.SessionStateAccessor = exports2.globalState = exports2.sessionState = exports2.StateCorruptError = exports2.StateNotFoundError = exports2.StateService = exports2.createHookableLogger = exports2.InstrumentedProfileProviderFactory = exports2.InstrumentedLLMProvider = exports2.ServiceFactoryImpl = exports2.TranscriptServiceImpl = exports2.createDefaultTokenUsage = exports2.createDefaultMetrics = void 0;
|
|
65721
65736
|
var types_1 = require_dist();
|
|
65722
65737
|
Object.defineProperty(exports2, "TaskTypes", { enumerable: true, get: function() {
|
|
65723
65738
|
return types_1.TaskTypes;
|
|
@@ -65776,6 +65791,9 @@ var require_dist4 = __commonJS({
|
|
|
65776
65791
|
Object.defineProperty(exports2, "reconstructTranscriptPath", { enumerable: true, get: function() {
|
|
65777
65792
|
return claude_paths_1.reconstructTranscriptPath;
|
|
65778
65793
|
} });
|
|
65794
|
+
Object.defineProperty(exports2, "claudeConfigDir", { enumerable: true, get: function() {
|
|
65795
|
+
return claude_paths_1.claudeConfigDir;
|
|
65796
|
+
} });
|
|
65779
65797
|
__exportStar(require_sidekick_paths(), exports2);
|
|
65780
65798
|
var persona_loader_1 = require_persona_loader();
|
|
65781
65799
|
Object.defineProperty(exports2, "createPersonaLoader", { enumerable: true, get: function() {
|
|
@@ -80553,7 +80571,7 @@ var require_types4 = __commonJS({
|
|
|
80553
80571
|
});
|
|
80554
80572
|
exports2.DEFAULT_STATUSLINE_CONFIG = {
|
|
80555
80573
|
enabled: true,
|
|
80556
|
-
format: "{devMode,suffix=' | '}{personaName,prefix='[',suffix='] | '}{model,prefix='[',suffix='] |
|
|
80574
|
+
format: "{devMode,suffix=' | '}{personaName,prefix='[',suffix='] | '}{model,prefix='[',suffix=']'}{effort,prefix=' (',suffix=')'} | {contextBar} {tokenPercentageActual} | {logs} | {cwd,maxLength=40,truncateStyle='path'}{branchWT,prefix=' | ',maxLength=40}{title,wrapAt=80,prefix=' | ',wrapPrefix='\\n'}\n{summary}",
|
|
80557
80575
|
thresholds: {
|
|
80558
80576
|
tokens: { warning: 1e5, critical: 16e4 },
|
|
80559
80577
|
cost: { warning: 0.5, critical: 1 },
|
|
@@ -81287,6 +81305,7 @@ var require_formatter = __commonJS({
|
|
|
81287
81305
|
const convertedTitle = this.convertMarkdown(viewModel.title);
|
|
81288
81306
|
const rawTokens = {
|
|
81289
81307
|
model: viewModel.model,
|
|
81308
|
+
effort: viewModel.effort,
|
|
81290
81309
|
contextWindow: viewModel.contextWindow,
|
|
81291
81310
|
tokenUsageActual: viewModel.tokenUsageActual,
|
|
81292
81311
|
tokenUsageEffective: viewModel.tokenUsageEffective,
|
|
@@ -81409,6 +81428,8 @@ var require_formatter = __commonJS({
|
|
|
81409
81428
|
return this.colorizeByStatus(value, viewModel.logStatus);
|
|
81410
81429
|
case "model":
|
|
81411
81430
|
return this.colorize(value, this.theme.colors.model);
|
|
81431
|
+
case "effort":
|
|
81432
|
+
return this.colorize(value, this.theme.colors.effort ?? this.theme.colors.model);
|
|
81412
81433
|
case "contextWindow":
|
|
81413
81434
|
return this.colorize(value, this.theme.colors.tokens);
|
|
81414
81435
|
case "duration":
|
|
@@ -81744,6 +81765,7 @@ var require_statusline_service = __commonJS({
|
|
|
81744
81765
|
var types_js_1 = require_types4();
|
|
81745
81766
|
var EMPTY_STATUSLINE_VIEWMODEL = {
|
|
81746
81767
|
model: "",
|
|
81768
|
+
effort: "",
|
|
81747
81769
|
contextWindow: "",
|
|
81748
81770
|
tokenUsageActual: "",
|
|
81749
81771
|
tokenUsageEffective: "",
|
|
@@ -82144,6 +82166,7 @@ var require_statusline_service = __commonJS({
|
|
|
82144
82166
|
const costUsd = this.hookInput?.cost.total_cost_usd ?? 0;
|
|
82145
82167
|
const durationMs = this.hookInput?.cost.total_duration_ms ?? 0;
|
|
82146
82168
|
const modelName = this.hookInput?.model.display_name ?? "unknown";
|
|
82169
|
+
const effort = this.hookInput?.effort?.level ?? "";
|
|
82147
82170
|
const totalWithBuffer = effectiveTokens + baseline.autocompactBufferTokens;
|
|
82148
82171
|
const contextWindowSize = this.hookInput?.context_window.context_window_size ?? 2e5;
|
|
82149
82172
|
const actualPercentage = Math.round(effectiveTokens / contextWindowSize * 100);
|
|
@@ -82158,6 +82181,7 @@ var require_statusline_service = __commonJS({
|
|
|
82158
82181
|
const homeShorten = (p) => this.homeDir && p.startsWith(this.homeDir) ? "~" + p.slice(this.homeDir.length) : p;
|
|
82159
82182
|
return {
|
|
82160
82183
|
model: this.formatModelName(modelName),
|
|
82184
|
+
effort,
|
|
82161
82185
|
contextWindow: (0, formatter_js_1.formatTokens)(contextWindowSize),
|
|
82162
82186
|
tokenUsageActual: isIndeterminate ? "\u27F3 compacted" : (0, formatter_js_1.formatTokens)(effectiveTokens),
|
|
82163
82187
|
tokenUsageEffective: isIndeterminate ? "\u27F3 compacted" : (0, formatter_js_1.formatTokens)(totalWithBuffer),
|
|
@@ -82457,6 +82481,7 @@ Examples:
|
|
|
82457
82481
|
if (typeof raw.cwd !== "string")
|
|
82458
82482
|
return void 0;
|
|
82459
82483
|
const model = raw.model;
|
|
82484
|
+
const effort = raw.effort;
|
|
82460
82485
|
const workspace = raw.workspace;
|
|
82461
82486
|
const outputStyle = raw.output_style;
|
|
82462
82487
|
const cost = raw.cost;
|
|
@@ -82473,6 +82498,8 @@ Examples:
|
|
|
82473
82498
|
id: model?.id ?? "unknown",
|
|
82474
82499
|
display_name: model?.display_name ?? "unknown"
|
|
82475
82500
|
},
|
|
82501
|
+
// Preserve effort only when present; absent when the model doesn't support the parameter
|
|
82502
|
+
...typeof effort?.level === "string" && { effort: { level: effort.level } },
|
|
82476
82503
|
workspace: {
|
|
82477
82504
|
current_dir: workspace?.current_dir ?? raw.cwd,
|
|
82478
82505
|
project_dir: workspace?.project_dir ?? raw.cwd
|
|
@@ -85174,6 +85201,7 @@ var require_helpers = __commonJS({
|
|
|
85174
85201
|
var fs = __importStar(require("node:fs/promises"));
|
|
85175
85202
|
var path = __importStar(require("node:path"));
|
|
85176
85203
|
var settings_js_1 = require_settings();
|
|
85204
|
+
var core_1 = require_dist4();
|
|
85177
85205
|
exports2.STATUSLINE_COMMAND = "npx @scotthamilton77/sidekick statusline --project-dir=$CLAUDE_PROJECT_DIR";
|
|
85178
85206
|
function classifyStatusLine(existing) {
|
|
85179
85207
|
const command = existing?.command;
|
|
@@ -85188,7 +85216,7 @@ var require_helpers = __commonJS({
|
|
|
85188
85216
|
function statuslineSettingsPath(scope, homeDir, projectDir) {
|
|
85189
85217
|
switch (scope) {
|
|
85190
85218
|
case "user":
|
|
85191
|
-
return path.join(
|
|
85219
|
+
return path.join((0, core_1.claudeConfigDir)(homeDir), "settings.json");
|
|
85192
85220
|
case "project":
|
|
85193
85221
|
return path.join(projectDir, ".claude", "settings.json");
|
|
85194
85222
|
case "local":
|
|
@@ -86921,7 +86949,7 @@ var require_uninstall = __commonJS({
|
|
|
86921
86949
|
});
|
|
86922
86950
|
}
|
|
86923
86951
|
if (userDetected) {
|
|
86924
|
-
await cleanSettingsFile(path.join(
|
|
86952
|
+
await cleanSettingsFile(path.join((0, core_1.claudeConfigDir)(userHome), "settings.json"), "user", logger, actions, {
|
|
86925
86953
|
dryRun,
|
|
86926
86954
|
removeHooks: false
|
|
86927
86955
|
});
|
|
@@ -87038,7 +87066,7 @@ var require_uninstall = __commonJS({
|
|
|
87038
87066
|
return true;
|
|
87039
87067
|
} catch {
|
|
87040
87068
|
try {
|
|
87041
|
-
const content = await fs.readFile(path.join(
|
|
87069
|
+
const content = await fs.readFile(path.join((0, core_1.claudeConfigDir)(userHome), "settings.json"), "utf-8");
|
|
87042
87070
|
return content.includes("sidekick");
|
|
87043
87071
|
} catch {
|
|
87044
87072
|
return false;
|
|
@@ -87117,7 +87145,7 @@ var require_uninstall = __commonJS({
|
|
|
87117
87145
|
}
|
|
87118
87146
|
}
|
|
87119
87147
|
if (userDetected) {
|
|
87120
|
-
const userSettings = await (0, fs_js_1.readFileOrNull)(path.join(
|
|
87148
|
+
const userSettings = await (0, fs_js_1.readFileOrNull)(path.join((0, core_1.claudeConfigDir)(userHome), "settings.json"));
|
|
87121
87149
|
if (userSettings) {
|
|
87122
87150
|
try {
|
|
87123
87151
|
const settings = JSON.parse(userSettings);
|
|
@@ -87508,7 +87536,7 @@ var require_cli = __commonJS({
|
|
|
87508
87536
|
var promises_12 = require("node:fs/promises");
|
|
87509
87537
|
var node_stream_1 = require("node:stream");
|
|
87510
87538
|
var yargs_parser_1 = __importDefault2(require_build());
|
|
87511
|
-
var VERSION = true ? "0.1.
|
|
87539
|
+
var VERSION = true ? "0.1.33" : "dev";
|
|
87512
87540
|
var SANDBOX_ERROR_MESSAGE = `Error: Daemon commands cannot run in sandbox mode.
|
|
87513
87541
|
|
|
87514
87542
|
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.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.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;
|
|
17858
17858
|
var zod_1 = require_zod();
|
|
17859
17859
|
exports2.HookInputBaseSchema = zod_1.z.object({
|
|
17860
17860
|
/** Unique identifier for the current Claude session */
|
|
@@ -17948,6 +17948,10 @@ var require_hook_input = __commonJS({
|
|
|
17948
17948
|
/** Human-readable display name (e.g., "Opus") */
|
|
17949
17949
|
display_name: zod_1.z.string()
|
|
17950
17950
|
});
|
|
17951
|
+
exports2.StatuslineEffortSchema = zod_1.z.object({
|
|
17952
|
+
/** Active effort level: "low", "medium", "high", "xhigh", or "max" */
|
|
17953
|
+
level: zod_1.z.string()
|
|
17954
|
+
});
|
|
17951
17955
|
exports2.StatuslineContextWindowSchema = zod_1.z.object({
|
|
17952
17956
|
/** Total input tokens used in session */
|
|
17953
17957
|
total_input_tokens: zod_1.z.number(),
|
|
@@ -17987,6 +17991,8 @@ var require_hook_input = __commonJS({
|
|
|
17987
17991
|
version: zod_1.z.string().optional(),
|
|
17988
17992
|
/** Model information with id and display_name */
|
|
17989
17993
|
model: exports2.StatuslineModelSchema,
|
|
17994
|
+
/** Model reasoning effort (present only when the model supports the effort parameter) */
|
|
17995
|
+
effort: exports2.StatuslineEffortSchema.optional(),
|
|
17990
17996
|
/** Workspace paths */
|
|
17991
17997
|
workspace: exports2.StatuslineWorkspaceSchema.optional(),
|
|
17992
17998
|
/** Cost and duration metrics */
|
|
@@ -27175,6 +27181,35 @@ var require_error_utils = __commonJS({
|
|
|
27175
27181
|
}
|
|
27176
27182
|
});
|
|
27177
27183
|
|
|
27184
|
+
// ../sidekick-core/dist/claude-paths.js
|
|
27185
|
+
var require_claude_paths = __commonJS({
|
|
27186
|
+
"../sidekick-core/dist/claude-paths.js"(exports2) {
|
|
27187
|
+
"use strict";
|
|
27188
|
+
var __importDefault = exports2 && exports2.__importDefault || function(mod) {
|
|
27189
|
+
return mod && mod.__esModule ? mod : { "default": mod };
|
|
27190
|
+
};
|
|
27191
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
27192
|
+
exports2.claudeConfigDir = claudeConfigDir;
|
|
27193
|
+
exports2.encodeProjectPath = encodeProjectPath;
|
|
27194
|
+
exports2.reconstructTranscriptPath = reconstructTranscriptPath;
|
|
27195
|
+
var os_1 = require("os");
|
|
27196
|
+
var path_1 = __importDefault(require("path"));
|
|
27197
|
+
function claudeConfigDir(home) {
|
|
27198
|
+
const override = process.env.CLAUDE_CONFIG_DIR?.trim();
|
|
27199
|
+
if (override)
|
|
27200
|
+
return override;
|
|
27201
|
+
return path_1.default.join(home ?? (0, os_1.homedir)(), ".claude");
|
|
27202
|
+
}
|
|
27203
|
+
function encodeProjectPath(projectDir2) {
|
|
27204
|
+
return projectDir2.replace(/\//g, "-");
|
|
27205
|
+
}
|
|
27206
|
+
function reconstructTranscriptPath(projectDir2, sessionId) {
|
|
27207
|
+
const encodedPath = encodeProjectPath(projectDir2);
|
|
27208
|
+
return path_1.default.join(claudeConfigDir(), "projects", encodedPath, `${sessionId}.jsonl`);
|
|
27209
|
+
}
|
|
27210
|
+
}
|
|
27211
|
+
});
|
|
27212
|
+
|
|
27178
27213
|
// ../sidekick-core/dist/assets.js
|
|
27179
27214
|
var require_assets = __commonJS({
|
|
27180
27215
|
"../sidekick-core/dist/assets.js"(exports2) {
|
|
@@ -27189,6 +27224,7 @@ var require_assets = __commonJS({
|
|
|
27189
27224
|
var node_os_1 = require("node:os");
|
|
27190
27225
|
var node_path_1 = require("node:path");
|
|
27191
27226
|
var error_utils_js_1 = require_error_utils();
|
|
27227
|
+
var claude_paths_js_1 = require_claude_paths();
|
|
27192
27228
|
function createCascadingResolver(options) {
|
|
27193
27229
|
const { cascadeLayers } = options;
|
|
27194
27230
|
const findFile = (relativePath) => {
|
|
@@ -27247,7 +27283,7 @@ var require_assets = __commonJS({
|
|
|
27247
27283
|
function buildCascadeLayers(defaultAssetsDir, homeDir, projectRoot) {
|
|
27248
27284
|
const layers = [];
|
|
27249
27285
|
layers.push(defaultAssetsDir);
|
|
27250
|
-
const userInstalled = (0, node_path_1.join)(
|
|
27286
|
+
const userInstalled = (0, node_path_1.join)((0, claude_paths_js_1.claudeConfigDir)(homeDir), "hooks", "sidekick", "assets");
|
|
27251
27287
|
layers.push(userInstalled);
|
|
27252
27288
|
const userPersistent = (0, node_path_1.join)(homeDir, ".sidekick", "assets");
|
|
27253
27289
|
layers.push(userPersistent);
|
|
@@ -27277,28 +27313,6 @@ var require_assets = __commonJS({
|
|
|
27277
27313
|
}
|
|
27278
27314
|
});
|
|
27279
27315
|
|
|
27280
|
-
// ../sidekick-core/dist/claude-paths.js
|
|
27281
|
-
var require_claude_paths = __commonJS({
|
|
27282
|
-
"../sidekick-core/dist/claude-paths.js"(exports2) {
|
|
27283
|
-
"use strict";
|
|
27284
|
-
var __importDefault = exports2 && exports2.__importDefault || function(mod) {
|
|
27285
|
-
return mod && mod.__esModule ? mod : { "default": mod };
|
|
27286
|
-
};
|
|
27287
|
-
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
27288
|
-
exports2.encodeProjectPath = encodeProjectPath;
|
|
27289
|
-
exports2.reconstructTranscriptPath = reconstructTranscriptPath;
|
|
27290
|
-
var os_1 = require("os");
|
|
27291
|
-
var path_1 = __importDefault(require("path"));
|
|
27292
|
-
function encodeProjectPath(projectDir2) {
|
|
27293
|
-
return projectDir2.replace(/\//g, "-");
|
|
27294
|
-
}
|
|
27295
|
-
function reconstructTranscriptPath(projectDir2, sessionId) {
|
|
27296
|
-
const encodedPath = encodeProjectPath(projectDir2);
|
|
27297
|
-
return path_1.default.join((0, os_1.homedir)(), ".claude", "projects", encodedPath, `${sessionId}.jsonl`);
|
|
27298
|
-
}
|
|
27299
|
-
}
|
|
27300
|
-
});
|
|
27301
|
-
|
|
27302
27316
|
// ../sidekick-core/dist/sidekick-paths.js
|
|
27303
27317
|
var require_sidekick_paths = __commonJS({
|
|
27304
27318
|
"../sidekick-core/dist/sidekick-paths.js"(exports2) {
|
|
@@ -46603,7 +46617,7 @@ var require_build_identity = __commonJS({
|
|
|
46603
46617
|
var path_1 = __importDefault(require("path"));
|
|
46604
46618
|
var DEV_PREFIX = "dev:";
|
|
46605
46619
|
var NO_DIST_SENTINEL = "nodist";
|
|
46606
|
-
function computeBuildIdentity(injectedVersion = true ? "0.1.
|
|
46620
|
+
function computeBuildIdentity(injectedVersion = true ? "0.1.33" : void 0, devFingerprint = computeDevFingerprint) {
|
|
46607
46621
|
return injectedVersion !== void 0 ? injectedVersion : DEV_PREFIX + devFingerprint();
|
|
46608
46622
|
}
|
|
46609
46623
|
function computeDevFingerprint() {
|
|
@@ -58131,6 +58145,7 @@ var require_plugin_detector = __commonJS({
|
|
|
58131
58145
|
var node_child_process_1 = require("node:child_process");
|
|
58132
58146
|
var api_key_detector_js_1 = require_api_key_detector();
|
|
58133
58147
|
var error_utils_js_1 = require_error_utils();
|
|
58148
|
+
var claude_paths_js_1 = require_claude_paths();
|
|
58134
58149
|
function isSidekickStatuslineCommand(command) {
|
|
58135
58150
|
return command?.toLowerCase().includes("sidekick") ?? false;
|
|
58136
58151
|
}
|
|
@@ -58189,7 +58204,7 @@ var require_plugin_detector = __commonJS({
|
|
|
58189
58204
|
});
|
|
58190
58205
|
}
|
|
58191
58206
|
async function detectActualStatusline(projectDir2, homeDir) {
|
|
58192
|
-
const userSettingsPath = path.join(
|
|
58207
|
+
const userSettingsPath = path.join((0, claude_paths_js_1.claudeConfigDir)(homeDir), "settings.json");
|
|
58193
58208
|
const projectSettingsPath = path.join(projectDir2, ".claude", "settings.local.json");
|
|
58194
58209
|
let inUser = false;
|
|
58195
58210
|
let inProject = false;
|
|
@@ -58268,7 +58283,7 @@ var require_plugin_detector = __commonJS({
|
|
|
58268
58283
|
}
|
|
58269
58284
|
async function detectDevModeFromSettings(projectDir2, homeDir) {
|
|
58270
58285
|
const settingsPaths = [
|
|
58271
|
-
path.join(
|
|
58286
|
+
path.join((0, claude_paths_js_1.claudeConfigDir)(homeDir), "settings.json"),
|
|
58272
58287
|
path.join(projectDir2, ".claude", "settings.local.json")
|
|
58273
58288
|
];
|
|
58274
58289
|
for (const settingsPath of settingsPaths) {
|
|
@@ -64739,9 +64754,9 @@ var require_dist4 = __commonJS({
|
|
|
64739
64754
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p);
|
|
64740
64755
|
};
|
|
64741
64756
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
64742
|
-
exports2.
|
|
64743
|
-
exports2.
|
|
64744
|
-
exports2.computeBuildIdentity = exports2.CoalescingGuard = exports2.loadUserProfile = exports2.parseGitStatusOutput = exports2.getGitFileStatus = exports2.toErrorMessage = exports2.isInSandbox = exports2.updateDaemonHealth = exports2.readDaemonHealth = exports2.ProjectRegistryService = exports2.encodeProjectDir = exports2.DaemonGlobalLogMetricsDescriptor = exports2.CliLogMetricsDescriptor = exports2.DaemonLogMetricsDescriptor = exports2.CompactionHistoryDescriptor = exports2.TranscriptMetricsDescriptor = exports2.GlobalStateAccessor = exports2.SessionStateAccessor = exports2.globalState = exports2.sessionState = exports2.StateCorruptError = exports2.StateNotFoundError = exports2.StateService = exports2.createHookableLogger = exports2.InstrumentedProfileProviderFactory = exports2.InstrumentedLLMProvider = exports2.ServiceFactoryImpl = exports2.TranscriptServiceImpl = exports2.createDefaultTokenUsage = void 0;
|
|
64757
|
+
exports2.USER_STATUS_FILENAME = exports2.createSetupStatusService = exports2.SetupStatusService = exports2.DaemonClient = exports2.findZombieDaemons = exports2.killZombieDaemons = exports2.killAllDaemons = exports2.SessionLogWriter = exports2.setSessionLogWriter = exports2.logEvent = exports2.LogEvents = exports2.DEFAULT_MAX_FILES = exports2.DEFAULT_ROTATE_SIZE_BYTES = exports2.getComponentLogLevel = exports2.setupGlobalErrorHandlers = exports2.createLoggerFacade = exports2.createLogManager = exports2.createConsoleLogger = exports2.getUserDaemonsDir = exports2.getUserPidPath = exports2.getTokenPath = exports2.getSocketPath = exports2.getProjectHash = exports2.getPidPath = exports2.getLockPath = exports2.IpcService = exports2.IpcServer = exports2.loadPersonaFile = exports2.getDefaultPersonasDir = exports2.discoverPersonas = exports2.createPersonaLoader = exports2.claudeConfigDir = exports2.reconstructTranscriptPath = exports2.encodeProjectPath = exports2.isSubagentStopEvent = exports2.isSubagentStartEvent = exports2.isPreCompactEvent = exports2.isStopEvent = exports2.isPostToolUseEvent = exports2.isPreToolUseEvent = exports2.isUserPromptSubmitEvent = exports2.isSessionEndEvent = exports2.isSessionStartEvent = exports2.isTranscriptEvent = exports2.isHookEvent = exports2.MetricsPersistPayloadSchema = exports2.CleanupPayloadSchema = exports2.ResumeGenerationPayloadSchema = exports2.SessionSummaryPayloadSchema = exports2.TaskTypes = void 0;
|
|
64758
|
+
exports2.copyWithTimestampSync = exports2.renameWithTimestampSync = exports2.renameWithTimestamp = exports2.copyWithTimestamp = exports2.getTimestampedPath = exports2.extractToolResultPreview = exports2.extractToolCallPreview = exports2.extractTextFromContent = exports2.extractContentPreview = exports2.HandlerRegistryImpl = exports2.extractConsumedTimestamp = exports2.createConsumedFilePattern = exports2.CONSUMED_FILE_PATTERN = exports2.filterActiveReminderFiles = exports2.validatePathSegment = exports2.isValidPathSegment = exports2.getReminderPath = exports2.getHookDir = exports2.getStagingRoot = exports2.SessionScopedStagingService = exports2.StagingServiceCore = exports2.GITIGNORE_ENTRIES = exports2.SIDEKICK_GITIGNORE_HEADER = exports2.SIDEKICK_SECTION_END = exports2.SIDEKICK_SECTION_START = exports2.removeLegacyGitignoreSection = exports2.detectLegacyGitignoreSection = exports2.detectGitignoreStatus = exports2.removeGitignoreSection = exports2.installGitignoreSection = exports2.validateOpenAIKey = exports2.validateOpenRouterKey = exports2.runDoctorCheck = exports2.detectPluginLiveness = exports2.detectPluginInstallation = exports2.detectDevModeFromSettings = exports2.detectActualStatusline = exports2.spawnWithTimeout = exports2.getDoctorTimeout = exports2.DOCTOR_TIMEOUTS = exports2.projectApiKeyStatusFromHealth = exports2.userApiKeyStatusFromHealth = exports2.buildProjectApiKeyStatus = exports2.buildUserApiKeyStatus = exports2.detectAllApiKeys = exports2.detectActualApiKey = exports2.readKeyFromEnvFile = exports2.determineOverallStatus = exports2.toScopeStatus = exports2.PROJECT_STATUS_FILENAME = void 0;
|
|
64759
|
+
exports2.computeBuildIdentity = exports2.CoalescingGuard = exports2.loadUserProfile = exports2.parseGitStatusOutput = exports2.getGitFileStatus = exports2.toErrorMessage = exports2.isInSandbox = exports2.updateDaemonHealth = exports2.readDaemonHealth = exports2.ProjectRegistryService = exports2.encodeProjectDir = exports2.DaemonGlobalLogMetricsDescriptor = exports2.CliLogMetricsDescriptor = exports2.DaemonLogMetricsDescriptor = exports2.CompactionHistoryDescriptor = exports2.TranscriptMetricsDescriptor = exports2.GlobalStateAccessor = exports2.SessionStateAccessor = exports2.globalState = exports2.sessionState = exports2.StateCorruptError = exports2.StateNotFoundError = exports2.StateService = exports2.createHookableLogger = exports2.InstrumentedProfileProviderFactory = exports2.InstrumentedLLMProvider = exports2.ServiceFactoryImpl = exports2.TranscriptServiceImpl = exports2.createDefaultTokenUsage = exports2.createDefaultMetrics = void 0;
|
|
64745
64760
|
var types_1 = require_dist();
|
|
64746
64761
|
Object.defineProperty(exports2, "TaskTypes", { enumerable: true, get: function() {
|
|
64747
64762
|
return types_1.TaskTypes;
|
|
@@ -64800,6 +64815,9 @@ var require_dist4 = __commonJS({
|
|
|
64800
64815
|
Object.defineProperty(exports2, "reconstructTranscriptPath", { enumerable: true, get: function() {
|
|
64801
64816
|
return claude_paths_1.reconstructTranscriptPath;
|
|
64802
64817
|
} });
|
|
64818
|
+
Object.defineProperty(exports2, "claudeConfigDir", { enumerable: true, get: function() {
|
|
64819
|
+
return claude_paths_1.claudeConfigDir;
|
|
64820
|
+
} });
|
|
64803
64821
|
__exportStar(require_sidekick_paths(), exports2);
|
|
64804
64822
|
var persona_loader_1 = require_persona_loader();
|
|
64805
64823
|
Object.defineProperty(exports2, "createPersonaLoader", { enumerable: true, get: function() {
|