@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.33" : void 0, devFingerprint = computeDevFingerprint) {
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.33" : "dev";
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.33" : void 0, devFingerprint = computeDevFingerprint) {
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() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scotthamilton77/sidekick",
3
- "version": "0.1.33",
3
+ "version": "0.1.34",
4
4
  "description": "AI pair programming assistant with personas, session tracking, and contextual nudges",
5
5
  "bin": {
6
6
  "sidekick": "dist/bin.js"