@mrciphersmith/keryx 0.2.135 → 0.2.137

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli.js +62 -10
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -51141,7 +51141,7 @@ import path47 from "path";
51141
51141
  // package.json
51142
51142
  var package_default = {
51143
51143
  name: "@mrciphersmith/keryx",
51144
- version: "0.2.135",
51144
+ version: "0.2.137",
51145
51145
  description: "Version-controlled project context for AI coding agents: code graph, architecture wiki, project memory, relevant tests, quality signals, and task flows.",
51146
51146
  private: false,
51147
51147
  publishConfig: {
@@ -94907,6 +94907,8 @@ var SIDEBAR_WIDTH = 30;
94907
94907
  var SIDEBAR_BORDER_LEFT = 1;
94908
94908
  var SIDEBAR_PADDING_LEFT = 2;
94909
94909
  var SIDEBAR_PADDING_RIGHT = 1;
94910
+ var WORKSPACE_GUTTER_X = 1;
94911
+ var TRANSCRIPT_PADDING_X = 1;
94910
94912
  var SIDEBAR_TEXT_WIDTH = SIDEBAR_WIDTH - SIDEBAR_BORDER_LEFT - SIDEBAR_PADDING_LEFT - SIDEBAR_PADDING_RIGHT;
94911
94913
  function formatSidebarVersionUpdateAdvisory(result) {
94912
94914
  const advisory = formatVersionUpdateAdvisory(result);
@@ -95023,7 +95025,15 @@ async function createShellChrome(otui, renderer, opts) {
95023
95025
  let appliedTheme = getTheme();
95024
95026
  const rootRow = new otui.BoxRenderable(r, { id: "root-row", flexGrow: 1, flexDirection: "row" });
95025
95027
  r.root.add(rootRow);
95026
- const main = new otui.BoxRenderable(r, { id: "main", flexGrow: 1, minWidth: 0, flexDirection: "column" });
95028
+ const main = new otui.BoxRenderable(r, {
95029
+ id: "main",
95030
+ flexGrow: 1,
95031
+ flexShrink: 1,
95032
+ minWidth: 0,
95033
+ flexDirection: "column",
95034
+ paddingLeft: WORKSPACE_GUTTER_X,
95035
+ paddingRight: WORKSPACE_GUTTER_X
95036
+ });
95027
95037
  rootRow.add(main);
95028
95038
  const sidebar = new otui.BoxRenderable(r, {
95029
95039
  id: "sidebar",
@@ -95031,7 +95041,8 @@ async function createShellChrome(otui, renderer, opts) {
95031
95041
  flexShrink: 0,
95032
95042
  flexDirection: "column",
95033
95043
  border: ["left"],
95034
- borderColor: getTheme().highlight,
95044
+ borderColor: getTheme().border,
95045
+ backgroundColor: getTheme().panel,
95035
95046
  paddingLeft: SIDEBAR_PADDING_LEFT,
95036
95047
  paddingRight: SIDEBAR_PADDING_RIGHT,
95037
95048
  paddingTop: 1
@@ -95095,10 +95106,14 @@ async function createShellChrome(otui, renderer, opts) {
95095
95106
  flexShrink: 0,
95096
95107
  flexDirection: "row",
95097
95108
  justifyContent: "space-between",
95109
+ backgroundColor: getTheme().bg,
95098
95110
  paddingLeft: 1,
95099
95111
  paddingRight: 1
95100
95112
  });
95101
- const headerLeft = new otui.TextRenderable(r, { id: "header-left", content: otui.t`${otui.dim(opts.title)}` });
95113
+ const headerLeft = new otui.TextRenderable(r, {
95114
+ id: "header-left",
95115
+ content: otui.t`${otui.bold(`\u25C6 ${opts.title}`)}`
95116
+ });
95102
95117
  header.add(headerLeft);
95103
95118
  const headerRight = new otui.TextRenderable(r, { id: "header-right", content: "" });
95104
95119
  header.add(headerRight);
@@ -95114,7 +95129,12 @@ async function createShellChrome(otui, renderer, opts) {
95114
95129
  scrollY: true,
95115
95130
  stickyScroll: true,
95116
95131
  stickyStart: "bottom",
95117
- contentOptions: { flexDirection: "column", paddingLeft: 1, paddingRight: 1 }
95132
+ contentOptions: {
95133
+ flexDirection: "column",
95134
+ paddingLeft: TRANSCRIPT_PADDING_X,
95135
+ paddingRight: TRANSCRIPT_PADDING_X,
95136
+ paddingTop: 1
95137
+ }
95118
95138
  });
95119
95139
  main.add(scroll);
95120
95140
  const transcript = scroll.content;
@@ -95216,6 +95236,7 @@ async function createShellChrome(otui, renderer, opts) {
95216
95236
  borderStyle: "rounded",
95217
95237
  border: true,
95218
95238
  borderColor: getTheme().border,
95239
+ backgroundColor: getTheme().panel,
95219
95240
  paddingLeft: 1,
95220
95241
  paddingRight: 1
95221
95242
  });
@@ -95298,6 +95319,7 @@ async function createShellChrome(otui, renderer, opts) {
95298
95319
  flexShrink: 0,
95299
95320
  flexDirection: "row",
95300
95321
  justifyContent: "space-between",
95322
+ backgroundColor: getTheme().bg,
95301
95323
  paddingLeft: 1,
95302
95324
  paddingRight: 1
95303
95325
  });
@@ -95526,12 +95548,16 @@ async function createShellChrome(otui, renderer, opts) {
95526
95548
  try {
95527
95549
  r.setBackgroundColor(theme.bg);
95528
95550
  } catch {}
95529
- sidebar.borderColor = theme.highlight;
95551
+ sidebar.borderColor = theme.border;
95552
+ sidebar.backgroundColor = theme.panel;
95553
+ header.backgroundColor = theme.bg;
95554
+ footer.backgroundColor = theme.bg;
95530
95555
  dock.backgroundColor = theme.panel;
95531
95556
  dock.borderColor = theme.border;
95532
95557
  queueDock.backgroundColor = theme.panel;
95533
95558
  queueDock.borderColor = theme.border;
95534
95559
  composer.borderColor = theme.border;
95560
+ composer.backgroundColor = theme.panel;
95535
95561
  menu.backgroundColor = theme.panel;
95536
95562
  menu.focusedBackgroundColor = theme.panel;
95537
95563
  menu.selectedBackgroundColor = theme.highlight;
@@ -97938,11 +97964,15 @@ function presentSessionInfo(openModal, otui, chrome, options) {
97938
97964
  } catch {}
97939
97965
  };
97940
97966
  let unsubscribeKey;
97967
+ const contextRows = Math.max(1, formatContextUsageText(snapshot.context).trimEnd().split(`
97968
+ `).length);
97969
+ const contentRows = Math.max(snapshot.sessionRows.length + snapshot.usageRows.length, contextRows, snapshot.workspaceLines.length, snapshot.flowLines.length);
97941
97970
  const handle = openModal(otui, chrome, {
97942
97971
  title: "/status",
97943
97972
  tabs: statusModalTabs(snapshot),
97944
97973
  initialTab: "status",
97945
97974
  footer: SESSION_INFO_FOOTER,
97975
+ contentRows,
97946
97976
  renderTab: (tabId, body, ctx) => {
97947
97977
  const renderer = options.renderer ?? chrome?.renderer;
97948
97978
  const width = ctx?.width;
@@ -98437,6 +98467,7 @@ function presentThemePicker(openModal, otui, chrome, options) {
98437
98467
  tabs: [{ id: "picker", label: "Theme" }],
98438
98468
  initialTab: "picker",
98439
98469
  footer: THEME_PICKER_FOOTER,
98470
+ contentRows: 22,
98440
98471
  renderTab: (_tabId, body) => {
98441
98472
  if (core === undefined || body === undefined || body === null) {
98442
98473
  return;
@@ -103972,11 +104003,12 @@ function sessionPickerOptions(sessions, leaseState = () => "free") {
103972
104003
  const updated = formatSessionDate(s.updatedAt);
103973
104004
  const short = shortSessionId(s.id);
103974
104005
  const title = s.title.length > 52 ? `${s.title.slice(0, 49)}\u2026` : s.title;
103975
- const label = withLeaseMarker(`${short} \xB7 ${title}`, leaseState(s.id));
104006
+ const label = withLeaseMarker(`${title} \xB7 ${short}`, leaseState(s.id));
104007
+ const messages = `${s.messageCount} ${s.messageCount === 1 ? "message" : "messages"}`;
103976
104008
  return {
103977
104009
  value: s.id,
103978
104010
  label,
103979
- description: `${s.projectPath} \xB7 created ${created} \xB7 updated ${updated}`,
104011
+ description: `updated ${updated} \xB7 created ${created} \xB7 ${messages}`,
103980
104012
  search: `${s.id} ${label} ${s.projectPath} ${s.title} ${created} ${updated}`.toLowerCase()
103981
104013
  };
103982
104014
  });
@@ -104025,7 +104057,7 @@ function pickSessionInTui(otui, rOrChrome, sessions, leaseState) {
104025
104057
  renderTab: (_tabId, body, ctx) => {
104026
104058
  const list = mountFilterList(otui, r, body, {
104027
104059
  ...listSpec,
104028
- idleHint: "type to filter by id, title, project, created, updated",
104060
+ idleHint: "type to filter \xB7 title, id, date",
104029
104061
  width: "100%",
104030
104062
  height: adaptiveSelectHeight(all.length, Math.max(1, ctx.height - 1), ROWS_PER_SESSION),
104031
104063
  onPick: (row) => {
@@ -104849,6 +104881,26 @@ async function launchTuiAgentShell(opts) {
104849
104881
  const mainWidth = chrome.main.width > 0 ? chrome.main.width : r.width - SIDEBAR_WIDTH;
104850
104882
  return renderCommandHelp("agent", undefined, Math.max(HELP_MIN_COLS, mainWidth - TRANSCRIPT_CHROME_COLS));
104851
104883
  };
104884
+ const openHelp = () => {
104885
+ const content = helpText().trimEnd();
104886
+ openModal(otui, chrome, {
104887
+ title: "/help",
104888
+ tabs: [{ id: "commands", label: "Commands" }],
104889
+ initialTab: "commands",
104890
+ footer: [
104891
+ { key: "\u2191/\u2193", label: "scroll" },
104892
+ { key: "esc", label: "close" }
104893
+ ],
104894
+ contentRows: Math.max(1, content.split(`
104895
+ `).length),
104896
+ renderTab: (_tabId, body) => {
104897
+ body.add(new otui.TextRenderable(r, {
104898
+ id: `help-${uid++}`,
104899
+ content
104900
+ }));
104901
+ }
104902
+ });
104903
+ };
104852
104904
  const sessionCwd = opts.session?.cwd ?? process.cwd();
104853
104905
  let permissionMode = opts.initialPermissionMode ?? getProjectPermissionMode(sessionCwd) ?? DEFAULT_PERMISSION_MODE;
104854
104906
  io.permissionMode = () => permissionMode;
@@ -106581,7 +106633,7 @@ Usage: /reasoning <${REASONING_EFFORT_LEVELS.join("|")}>
106581
106633
  })();
106582
106634
  return;
106583
106635
  }
106584
- io.onSystem?.(helpText());
106636
+ openHelp();
106585
106637
  return;
106586
106638
  }
106587
106639
  if (line.startsWith("/")) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrciphersmith/keryx",
3
- "version": "0.2.135",
3
+ "version": "0.2.137",
4
4
  "description": "Version-controlled project context for AI coding agents: code graph, architecture wiki, project memory, relevant tests, quality signals, and task flows.",
5
5
  "private": false,
6
6
  "publishConfig": {