@proxysoul/soulforge 2.9.2 → 2.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/dist/index.js CHANGED
@@ -908,7 +908,7 @@ See https://react.dev/link/invalid-hook-call for tips about how to debug and fix
908
908
  exports.useTransition = function() {
909
909
  return resolveDispatcher().useTransition();
910
910
  };
911
- exports.version = "19.2.4";
911
+ exports.version = "19.2.5";
912
912
  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== "undefined" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === "function" && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());
913
913
  })();
914
914
  });
@@ -41307,7 +41307,7 @@ var package_default;
41307
41307
  var init_package = __esm(() => {
41308
41308
  package_default = {
41309
41309
  name: "@proxysoul/soulforge",
41310
- version: "2.9.2",
41310
+ version: "2.9.5",
41311
41311
  description: "Graph-powered code intelligence \u2014 multi-agent coding with codebase-aware AI",
41312
41312
  repository: {
41313
41313
  type: "git",
@@ -41378,21 +41378,21 @@ var init_package = __esm(() => {
41378
41378
  "@ai-sdk/mcp": "^1.0.35",
41379
41379
  "@ai-sdk/mistral": "^3.0.30",
41380
41380
  "@ai-sdk/openai": "3.0.52",
41381
- "@ai-sdk/xai": "3.0.80",
41382
- "@anthropic-ai/sdk": "0.85.0",
41381
+ "@ai-sdk/xai": "3.0.82",
41382
+ "@anthropic-ai/sdk": "0.86.1",
41383
41383
  "@llmgateway/ai-sdk-provider": "3.5.0",
41384
41384
  "@modelcontextprotocol/sdk": "^1.29.0",
41385
41385
  "@mozilla/readability": "0.6.0",
41386
41386
  "@openrouter/ai-sdk-provider": "2.5.0",
41387
41387
  "@opentui/react": "0.1.97",
41388
- ai: "6.0.152",
41388
+ ai: "6.0.154",
41389
41389
  "ghostty-opentui": "1.4.10",
41390
41390
  isbinaryfile: "6.0.0",
41391
41391
  linkedom: "0.18.12",
41392
41392
  "linkify-it": "5.0.0",
41393
41393
  marked: "17.0.5",
41394
41394
  neovim: "5.4.0",
41395
- react: "19.2.4",
41395
+ react: "19.2.5",
41396
41396
  shiki: "4.0.2",
41397
41397
  "strip-ansi": "7.2.0",
41398
41398
  "tree-sitter-wasms": "0.1.13",
@@ -41401,9 +41401,6 @@ var init_package = __esm(() => {
41401
41401
  "web-tree-sitter": "0.25.10",
41402
41402
  zod: "4.3.6",
41403
41403
  zustand: "5.0.12"
41404
- },
41405
- overrides: {
41406
- "@opentui/core": "0.1.96"
41407
41404
  }
41408
41405
  };
41409
41406
  });
@@ -67912,7 +67909,7 @@ var import_oidc, import_oidc2, marker27 = "vercel.ai.gateway.error", symbol28, _
67912
67909
  "ai-model-id": this.modelId
67913
67910
  };
67914
67911
  }
67915
- }, gatewayRerankingResponseSchema, parallelSearchInputSchema, parallelSearchOutputSchema, parallelSearchToolFactory, parallelSearch = (config2 = {}) => parallelSearchToolFactory(config2), perplexitySearchInputSchema, perplexitySearchOutputSchema, perplexitySearchToolFactory, perplexitySearch = (config2 = {}) => perplexitySearchToolFactory(config2), gatewayTools, VERSION14 = "3.0.93", AI_GATEWAY_PROTOCOL_VERSION = "0.0.1", gateway;
67912
+ }, gatewayRerankingResponseSchema, parallelSearchInputSchema, parallelSearchOutputSchema, parallelSearchToolFactory, parallelSearch = (config2 = {}) => parallelSearchToolFactory(config2), perplexitySearchInputSchema, perplexitySearchOutputSchema, perplexitySearchToolFactory, perplexitySearch = (config2 = {}) => perplexitySearchToolFactory(config2), gatewayTools, VERSION14 = "3.0.94", AI_GATEWAY_PROTOCOL_VERSION = "0.0.1", gateway;
67916
67913
  var init_dist21 = __esm(() => {
67917
67914
  init_dist3();
67918
67915
  init_dist();
@@ -73937,7 +73934,7 @@ var import_api, import_api2, __defProp4, __export2 = (target, all) => {
73937
73934
  const bytes = typeof data === "string" ? convertBase64ToUint8Array(data) : data;
73938
73935
  const id3Size = (bytes[6] & 127) << 21 | (bytes[7] & 127) << 14 | (bytes[8] & 127) << 7 | bytes[9] & 127;
73939
73936
  return bytes.slice(id3Size + 10);
73940
- }, VERSION15 = "6.0.152", download = async ({
73937
+ }, VERSION15 = "6.0.154", download = async ({
73941
73938
  url: url2,
73942
73939
  maxBytes,
73943
73940
  abortSignal
@@ -77504,6 +77501,7 @@ function mapXaiResponsesFinishReason(finishReason) {
77504
77501
  case "completed":
77505
77502
  return "stop";
77506
77503
  case "length":
77504
+ case "max_output_tokens":
77507
77505
  return "length";
77508
77506
  case "tool_calls":
77509
77507
  case "function_call":
@@ -78602,7 +78600,7 @@ var webSourceSchema, xSourceSchema, newsSourceSchema, rssSourceSchema, searchSou
78602
78600
  controller.enqueue({ type: "stream-start", warnings });
78603
78601
  },
78604
78602
  transform(chunk, controller) {
78605
- var _a210, _b16, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
78603
+ var _a210, _b16, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o;
78606
78604
  if (options.includeRawChunks) {
78607
78605
  controller.enqueue({ type: "raw", rawValue: chunk.rawValue });
78608
78606
  }
@@ -78725,12 +78723,18 @@ var webSourceSchema, xSourceSchema, newsSourceSchema, rssSourceSchema, searchSou
78725
78723
  }
78726
78724
  return;
78727
78725
  }
78728
- if (event.type === "response.done" || event.type === "response.completed") {
78726
+ if (event.type === "response.done" || event.type === "response.completed" || event.type === "response.incomplete") {
78729
78727
  const response2 = event.response;
78730
78728
  if (response2.usage) {
78731
78729
  usage = convertXaiResponsesUsage(response2.usage);
78732
78730
  }
78733
- if (response2.status) {
78731
+ if (event.type === "response.incomplete") {
78732
+ const reason = "incomplete_details" in response2 ? (_c = response2.incomplete_details) == null ? undefined : _c.reason : undefined;
78733
+ finishReason = {
78734
+ unified: reason ? mapXaiResponsesFinishReason(reason) : "other",
78735
+ raw: reason != null ? reason : "incomplete"
78736
+ };
78737
+ } else if ("status" in response2 && response2.status) {
78734
78738
  finishReason = {
78735
78739
  unified: hasFunctionCall ? "tool-calls" : mapXaiResponsesFinishReason(response2.status),
78736
78740
  raw: response2.status
@@ -78738,6 +78742,21 @@ var webSourceSchema, xSourceSchema, newsSourceSchema, rssSourceSchema, searchSou
78738
78742
  }
78739
78743
  return;
78740
78744
  }
78745
+ if (event.type === "response.failed") {
78746
+ const reason = (_d = event.response.incomplete_details) == null ? undefined : _d.reason;
78747
+ finishReason = {
78748
+ unified: reason ? mapXaiResponsesFinishReason(reason) : "error",
78749
+ raw: reason != null ? reason : "error"
78750
+ };
78751
+ if (event.response.usage) {
78752
+ usage = convertXaiResponsesUsage(event.response.usage);
78753
+ }
78754
+ return;
78755
+ }
78756
+ if (event.type === "error") {
78757
+ controller.enqueue({ type: "error", error: event });
78758
+ return;
78759
+ }
78741
78760
  if (event.type === "response.custom_tool_call_input.delta" || event.type === "response.custom_tool_call_input.done") {
78742
78761
  return;
78743
78762
  }
@@ -78820,13 +78839,13 @@ var webSourceSchema, xSourceSchema, newsSourceSchema, rssSourceSchema, searchSou
78820
78839
  toolCallId: part.id,
78821
78840
  toolName,
78822
78841
  result: {
78823
- queries: (_c = part.queries) != null ? _c : [],
78824
- results: (_e = (_d = part.results) == null ? undefined : _d.map((result) => ({
78842
+ queries: (_e = part.queries) != null ? _e : [],
78843
+ results: (_g = (_f = part.results) == null ? undefined : _f.map((result) => ({
78825
78844
  fileId: result.file_id,
78826
78845
  filename: result.filename,
78827
78846
  score: result.score,
78828
78847
  text: result.text
78829
- }))) != null ? _e : null
78848
+ }))) != null ? _g : null
78830
78849
  }
78831
78850
  });
78832
78851
  }
@@ -78844,17 +78863,17 @@ var webSourceSchema, xSourceSchema, newsSourceSchema, rssSourceSchema, searchSou
78844
78863
  "x_semantic_search",
78845
78864
  "x_thread_fetch"
78846
78865
  ];
78847
- let toolName = (_f = part.name) != null ? _f : "";
78848
- if (webSearchSubTools.includes((_g = part.name) != null ? _g : "") || part.type === "web_search_call") {
78866
+ let toolName = (_h = part.name) != null ? _h : "";
78867
+ if (webSearchSubTools.includes((_i = part.name) != null ? _i : "") || part.type === "web_search_call") {
78849
78868
  toolName = webSearchToolName != null ? webSearchToolName : "web_search";
78850
- } else if (xSearchSubTools.includes((_h = part.name) != null ? _h : "") || part.type === "x_search_call") {
78869
+ } else if (xSearchSubTools.includes((_j = part.name) != null ? _j : "") || part.type === "x_search_call") {
78851
78870
  toolName = xSearchToolName != null ? xSearchToolName : "x_search";
78852
78871
  } else if (part.name === "code_execution" || part.type === "code_interpreter_call" || part.type === "code_execution_call") {
78853
78872
  toolName = codeExecutionToolName != null ? codeExecutionToolName : "code_execution";
78854
78873
  } else if (part.type === "mcp_call") {
78855
- toolName = (_i = mcpToolName != null ? mcpToolName : part.name) != null ? _i : "mcp";
78874
+ toolName = (_k = mcpToolName != null ? mcpToolName : part.name) != null ? _k : "mcp";
78856
78875
  }
78857
- const toolInput = part.type === "custom_tool_call" ? (_j = part.input) != null ? _j : "" : part.type === "mcp_call" ? (_k = part.arguments) != null ? _k : "" : (_l = part.arguments) != null ? _l : "";
78876
+ const toolInput = part.type === "custom_tool_call" ? (_l = part.input) != null ? _l : "" : part.type === "mcp_call" ? (_m = part.arguments) != null ? _m : "" : (_n = part.arguments) != null ? _n : "";
78858
78877
  const shouldEmit = part.type === "custom_tool_call" ? event.type === "response.output_item.done" : !seenToolCalls.has(part.id);
78859
78878
  if (shouldEmit && !seenToolCalls.has(part.id)) {
78860
78879
  seenToolCalls.add(part.id);
@@ -78907,7 +78926,7 @@ var webSourceSchema, xSourceSchema, newsSourceSchema, rssSourceSchema, searchSou
78907
78926
  sourceType: "url",
78908
78927
  id: self2.config.generateId(),
78909
78928
  url: annotation.url,
78910
- title: (_m = annotation.title) != null ? _m : annotation.url
78929
+ title: (_o = annotation.title) != null ? _o : annotation.url
78911
78930
  });
78912
78931
  }
78913
78932
  }
@@ -78969,7 +78988,7 @@ var webSourceSchema, xSourceSchema, newsSourceSchema, rssSourceSchema, searchSou
78969
78988
  response: { headers: responseHeaders }
78970
78989
  };
78971
78990
  }
78972
- }, codeExecutionOutputSchema, codeExecutionToolFactory, codeExecution2 = (args2 = {}) => codeExecutionToolFactory(args2), viewImageOutputSchema, viewImageToolFactory, viewImage = (args2 = {}) => viewImageToolFactory(args2), viewXVideoOutputSchema, viewXVideoToolFactory, viewXVideo = (args2 = {}) => viewXVideoToolFactory(args2), xaiTools, VERSION16 = "3.0.80", nonEmptyStringSchema, resolutionSchema, modeSchema, baseFields, editVideoSchema, extendVideoSchema, referenceToVideoSchema, autoDetectSchema, xaiVideoModelOptions, runtimeSchema, xaiVideoModelOptionsSchema, RESOLUTION_MAP, XaiVideoModel = class {
78991
+ }, codeExecutionOutputSchema, codeExecutionToolFactory, codeExecution2 = (args2 = {}) => codeExecutionToolFactory(args2), viewImageOutputSchema, viewImageToolFactory, viewImage = (args2 = {}) => viewImageToolFactory(args2), viewXVideoOutputSchema, viewXVideoToolFactory, viewXVideo = (args2 = {}) => viewXVideoToolFactory(args2), xaiTools, VERSION16 = "3.0.82", nonEmptyStringSchema, resolutionSchema, modeSchema, baseFields, editVideoSchema, extendVideoSchema, referenceToVideoSchema, autoDetectSchema, xaiVideoModelOptions, runtimeSchema, xaiVideoModelOptionsSchema, RESOLUTION_MAP, XaiVideoModel = class {
78973
78992
  constructor(modelId, config2) {
78974
78993
  this.modelId = modelId;
78975
78994
  this.config = config2;
@@ -79784,6 +79803,30 @@ var init_dist23 = __esm(() => {
79784
79803
  output_index: exports_external.number(),
79785
79804
  output: exports_external.string().optional()
79786
79805
  }),
79806
+ exports_external.object({
79807
+ type: exports_external.literal("response.incomplete"),
79808
+ response: exports_external.object({
79809
+ incomplete_details: exports_external.object({ reason: exports_external.string() }).nullish(),
79810
+ usage: xaiResponsesUsageSchema.nullish()
79811
+ })
79812
+ }),
79813
+ exports_external.object({
79814
+ type: exports_external.literal("response.failed"),
79815
+ response: exports_external.object({
79816
+ error: exports_external.object({
79817
+ code: exports_external.string().nullish(),
79818
+ message: exports_external.string()
79819
+ }).nullish(),
79820
+ incomplete_details: exports_external.object({ reason: exports_external.string() }).nullish(),
79821
+ usage: xaiResponsesUsageSchema.nullish()
79822
+ })
79823
+ }),
79824
+ exports_external.object({
79825
+ type: exports_external.literal("error"),
79826
+ code: exports_external.string().nullish(),
79827
+ message: exports_external.string(),
79828
+ param: exports_external.string().nullish()
79829
+ }),
79787
79830
  exports_external.object({
79788
79831
  type: exports_external.literal("response.done"),
79789
79832
  response: xaiResponsesResponseSchema
@@ -264640,6 +264683,7 @@ var require_dist2 = __commonJS((exports) => {
264640
264683
 
264641
264684
  // node_modules/tinyglobby/dist/index.cjs
264642
264685
  var require_dist3 = __commonJS((exports) => {
264686
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
264643
264687
  var __create2 = Object.create;
264644
264688
  var __defProp6 = Object.defineProperty;
264645
264689
  var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
@@ -264663,29 +264707,26 @@ var require_dist3 = __commonJS((exports) => {
264663
264707
  enumerable: true
264664
264708
  }) : target, mod));
264665
264709
  var fs2 = __require("fs");
264666
- fs2 = __toESM2(fs2);
264667
264710
  var path = __require("path");
264668
- path = __toESM2(path);
264669
264711
  var url2 = __require("url");
264670
- url2 = __toESM2(url2);
264671
264712
  var fdir = require_dist2();
264672
- fdir = __toESM2(fdir);
264673
264713
  var picomatch = require_picomatch2();
264674
264714
  picomatch = __toESM2(picomatch);
264675
264715
  var isReadonlyArray = Array.isArray;
264716
+ var BACKSLASHES = /\\/g;
264676
264717
  var isWin = process.platform === "win32";
264677
264718
  var ONLY_PARENT_DIRECTORIES = /^(\/?\.\.)+$/;
264678
264719
  function getPartialMatcher(patterns, options = {}) {
264679
264720
  const patternsCount = patterns.length;
264680
264721
  const patternsParts = Array(patternsCount);
264681
264722
  const matchers = Array(patternsCount);
264682
- const globstarEnabled = !options.noglobstar;
264683
- for (let i2 = 0;i2 < patternsCount; i2++) {
264723
+ let i2, j;
264724
+ for (i2 = 0;i2 < patternsCount; i2++) {
264684
264725
  const parts2 = splitPattern(patterns[i2]);
264685
264726
  patternsParts[i2] = parts2;
264686
264727
  const partsCount = parts2.length;
264687
264728
  const partMatchers = Array(partsCount);
264688
- for (let j = 0;j < partsCount; j++)
264729
+ for (j = 0;j < partsCount; j++)
264689
264730
  partMatchers[j] = (0, picomatch.default)(parts2[j], options);
264690
264731
  matchers[i2] = partMatchers;
264691
264732
  }
@@ -264693,20 +264734,19 @@ var require_dist3 = __commonJS((exports) => {
264693
264734
  const inputParts = input.split("/");
264694
264735
  if (inputParts[0] === ".." && ONLY_PARENT_DIRECTORIES.test(input))
264695
264736
  return true;
264696
- for (let i2 = 0;i2 < patterns.length; i2++) {
264737
+ for (i2 = 0;i2 < patternsCount; i2++) {
264697
264738
  const patternParts = patternsParts[i2];
264698
264739
  const matcher = matchers[i2];
264699
264740
  const inputPatternCount = inputParts.length;
264700
264741
  const minParts = Math.min(inputPatternCount, patternParts.length);
264701
- let j = 0;
264742
+ j = 0;
264702
264743
  while (j < minParts) {
264703
264744
  const part = patternParts[j];
264704
264745
  if (part.includes("/"))
264705
264746
  return true;
264706
- const match = matcher[j](inputParts[j]);
264707
- if (!match)
264747
+ if (!matcher[j](inputParts[j]))
264708
264748
  break;
264709
- if (globstarEnabled && part === "**")
264749
+ if (!options.noglobstar && part === "**")
264710
264750
  return true;
264711
264751
  j++;
264712
264752
  }
@@ -264721,7 +264761,7 @@ var require_dist3 = __commonJS((exports) => {
264721
264761
  function buildFormat(cwd, root, absolute) {
264722
264762
  if (cwd === root || root.startsWith(`${cwd}/`)) {
264723
264763
  if (absolute) {
264724
- const start2 = isRoot(cwd) ? cwd.length : cwd.length + 1;
264764
+ const start2 = cwd.length + +!isRoot(cwd);
264725
264765
  return (p, isDir) => p.slice(start2, isDir ? -1 : undefined) || ".";
264726
264766
  }
264727
264767
  const prefix = root.slice(cwd.length + 1);
@@ -264745,29 +264785,27 @@ var require_dist3 = __commonJS((exports) => {
264745
264785
  }
264746
264786
  return (p) => {
264747
264787
  const result = path.posix.relative(cwd, `${root}/${p}`);
264748
- if (p.endsWith("/") && result !== "")
264749
- return `${result}/`;
264750
- return result || ".";
264788
+ return p[p.length - 1] === "/" && result !== "" ? `${result}/` : result || ".";
264751
264789
  };
264752
264790
  }
264753
264791
  var splitPatternOptions = { parts: true };
264754
- function splitPattern(path$2) {
264792
+ function splitPattern(path$1) {
264755
264793
  var _result$parts;
264756
- const result = picomatch.default.scan(path$2, splitPatternOptions);
264757
- return ((_result$parts = result.parts) === null || _result$parts === undefined ? undefined : _result$parts.length) ? result.parts : [path$2];
264794
+ const result = picomatch.default.scan(path$1, splitPatternOptions);
264795
+ return ((_result$parts = result.parts) === null || _result$parts === undefined ? undefined : _result$parts.length) ? result.parts : [path$1];
264758
264796
  }
264759
264797
  var ESCAPED_WIN32_BACKSLASHES = /\\(?![()[\]{}!+@])/g;
264760
264798
  function convertPosixPathToPattern(path$2) {
264761
264799
  return escapePosixPath(path$2);
264762
264800
  }
264763
- function convertWin32PathToPattern(path$2) {
264764
- return escapeWin32Path(path$2).replace(ESCAPED_WIN32_BACKSLASHES, "/");
264801
+ function convertWin32PathToPattern(path$3) {
264802
+ return escapeWin32Path(path$3).replace(ESCAPED_WIN32_BACKSLASHES, "/");
264765
264803
  }
264766
264804
  var convertPathToPattern = isWin ? convertWin32PathToPattern : convertPosixPathToPattern;
264767
264805
  var POSIX_UNESCAPED_GLOB_SYMBOLS = /(?<!\\)([()[\]{}*?|]|^!|[!+@](?=\()|\\(?![()[\]{}!*+?@|]))/g;
264768
264806
  var WIN32_UNESCAPED_GLOB_SYMBOLS = /(?<!\\)([()[\]{}]|^!|[!+@](?=\())/g;
264769
- var escapePosixPath = (path$2) => path$2.replace(POSIX_UNESCAPED_GLOB_SYMBOLS, "\\$&");
264770
- var escapeWin32Path = (path$2) => path$2.replace(WIN32_UNESCAPED_GLOB_SYMBOLS, "\\$&");
264807
+ var escapePosixPath = (path$4) => path$4.replace(POSIX_UNESCAPED_GLOB_SYMBOLS, "\\$&");
264808
+ var escapeWin32Path = (path$5) => path$5.replace(WIN32_UNESCAPED_GLOB_SYMBOLS, "\\$&");
264771
264809
  var escapePath = isWin ? escapeWin32Path : escapePosixPath;
264772
264810
  function isDynamicPattern(pattern, options) {
264773
264811
  if ((options === null || options === undefined ? undefined : options.caseSensitiveMatch) === false)
@@ -264778,32 +264816,33 @@ var require_dist3 = __commonJS((exports) => {
264778
264816
  function log(...tasks) {
264779
264817
  console.log(`[tinyglobby ${(/* @__PURE__ */ new Date()).toLocaleTimeString("es")}]`, ...tasks);
264780
264818
  }
264819
+ function ensureStringArray(value) {
264820
+ return typeof value === "string" ? [value] : value !== null && value !== undefined ? value : [];
264821
+ }
264781
264822
  var PARENT_DIRECTORY = /^(\/?\.\.)+/;
264782
264823
  var ESCAPING_BACKSLASHES = /\\(?=[()[\]{}!*+?@|])/g;
264783
- var BACKSLASHES = /\\/g;
264784
- function normalizePattern(pattern, expandDirectories, cwd, props, isIgnore) {
264824
+ function normalizePattern(pattern, opts, props, isIgnore) {
264825
+ var _PARENT_DIRECTORY$exe;
264826
+ const cwd = opts.cwd;
264785
264827
  let result = pattern;
264786
- if (pattern.endsWith("/"))
264828
+ if (pattern[pattern.length - 1] === "/")
264787
264829
  result = pattern.slice(0, -1);
264788
- if (!result.endsWith("*") && expandDirectories)
264830
+ if (result[result.length - 1] !== "*" && opts.expandDirectories)
264789
264831
  result += "/**";
264790
264832
  const escapedCwd = escapePath(cwd);
264791
- if (path.default.isAbsolute(result.replace(ESCAPING_BACKSLASHES, "")))
264792
- result = path.posix.relative(escapedCwd, result);
264793
- else
264794
- result = path.posix.normalize(result);
264795
- const parentDirectoryMatch = PARENT_DIRECTORY.exec(result);
264833
+ result = (0, path.isAbsolute)(result.replace(ESCAPING_BACKSLASHES, "")) ? path.posix.relative(escapedCwd, result) : path.posix.normalize(result);
264834
+ const parentDir = (_PARENT_DIRECTORY$exe = PARENT_DIRECTORY.exec(result)) === null || _PARENT_DIRECTORY$exe === undefined ? undefined : _PARENT_DIRECTORY$exe[0];
264796
264835
  const parts2 = splitPattern(result);
264797
- if (parentDirectoryMatch === null || parentDirectoryMatch === undefined ? undefined : parentDirectoryMatch[0]) {
264798
- const n = (parentDirectoryMatch[0].length + 1) / 3;
264836
+ if (parentDir) {
264837
+ const n = (parentDir.length + 1) / 3;
264799
264838
  let i2 = 0;
264800
264839
  const cwdParts = escapedCwd.split("/");
264801
264840
  while (i2 < n && parts2[i2 + n] === cwdParts[cwdParts.length + i2 - n]) {
264802
264841
  result = result.slice(0, (n - i2 - 1) * 3) + result.slice((n - i2) * 3 + parts2[i2 + n].length + 1) || ".";
264803
264842
  i2++;
264804
264843
  }
264805
- const potentialRoot = path.posix.join(cwd, parentDirectoryMatch[0].slice(i2 * 3));
264806
- if (!potentialRoot.startsWith(".") && props.root.length > potentialRoot.length) {
264844
+ const potentialRoot = path.posix.join(cwd, parentDir.slice(i2 * 3));
264845
+ if (potentialRoot[0] !== "." && props.root.length > potentialRoot.length) {
264807
264846
  props.root = potentialRoot;
264808
264847
  props.depthOffset = -n + i2;
264809
264848
  }
@@ -264819,7 +264858,7 @@ var require_dist3 = __commonJS((exports) => {
264819
264858
  newCommonPath.pop();
264820
264859
  break;
264821
264860
  }
264822
- if (part !== props.commonPath[i2] || isDynamicPattern(part) || i2 === parts2.length - 1)
264861
+ if (i2 === parts2.length - 1 || part !== props.commonPath[i2] || isDynamicPattern(part))
264823
264862
  break;
264824
264863
  newCommonPath.push(part);
264825
264864
  }
@@ -264829,167 +264868,143 @@ var require_dist3 = __commonJS((exports) => {
264829
264868
  }
264830
264869
  return result;
264831
264870
  }
264832
- function processPatterns({ patterns = ["**/*"], ignore = [], expandDirectories = true }, cwd, props) {
264833
- if (typeof patterns === "string")
264834
- patterns = [patterns];
264835
- if (typeof ignore === "string")
264836
- ignore = [ignore];
264871
+ function processPatterns(options, patterns, props) {
264837
264872
  const matchPatterns = [];
264838
264873
  const ignorePatterns = [];
264839
- for (const pattern of ignore) {
264874
+ for (const pattern of options.ignore) {
264840
264875
  if (!pattern)
264841
264876
  continue;
264842
264877
  if (pattern[0] !== "!" || pattern[1] === "(")
264843
- ignorePatterns.push(normalizePattern(pattern, expandDirectories, cwd, props, true));
264878
+ ignorePatterns.push(normalizePattern(pattern, options, props, true));
264844
264879
  }
264845
264880
  for (const pattern of patterns) {
264846
264881
  if (!pattern)
264847
264882
  continue;
264848
264883
  if (pattern[0] !== "!" || pattern[1] === "(")
264849
- matchPatterns.push(normalizePattern(pattern, expandDirectories, cwd, props, false));
264884
+ matchPatterns.push(normalizePattern(pattern, options, props, false));
264850
264885
  else if (pattern[1] !== "!" || pattern[2] === "(")
264851
- ignorePatterns.push(normalizePattern(pattern.slice(1), expandDirectories, cwd, props, true));
264886
+ ignorePatterns.push(normalizePattern(pattern.slice(1), options, props, true));
264852
264887
  }
264853
264888
  return {
264854
264889
  match: matchPatterns,
264855
264890
  ignore: ignorePatterns
264856
264891
  };
264857
264892
  }
264858
- function formatPaths(paths, relative2) {
264859
- for (let i2 = paths.length - 1;i2 >= 0; i2--) {
264860
- const path$2 = paths[i2];
264861
- paths[i2] = relative2(path$2);
264862
- }
264863
- return paths;
264864
- }
264865
- function normalizeCwd(cwd) {
264866
- if (!cwd)
264867
- return process.cwd().replace(BACKSLASHES, "/");
264868
- if (cwd instanceof URL)
264869
- return (0, url2.fileURLToPath)(cwd).replace(BACKSLASHES, "/");
264870
- return path.default.resolve(cwd).replace(BACKSLASHES, "/");
264871
- }
264872
- function getCrawler(patterns, inputOptions = {}) {
264873
- const options = process.env.TINYGLOBBY_DEBUG ? {
264874
- ...inputOptions,
264875
- debug: true
264876
- } : inputOptions;
264877
- const cwd = normalizeCwd(options.cwd);
264878
- if (options.debug)
264879
- log("globbing with:", {
264880
- patterns,
264881
- options,
264882
- cwd
264883
- });
264884
- if (Array.isArray(patterns) && patterns.length === 0)
264885
- return [{
264886
- sync: () => [],
264887
- withPromise: async () => []
264888
- }, false];
264893
+ function buildCrawler(options, patterns) {
264894
+ const cwd = options.cwd;
264889
264895
  const props = {
264890
264896
  root: cwd,
264891
- commonPath: null,
264892
264897
  depthOffset: 0
264893
264898
  };
264894
- const processed = processPatterns({
264895
- ...options,
264896
- patterns
264897
- }, cwd, props);
264899
+ const processed = processPatterns(options, patterns, props);
264898
264900
  if (options.debug)
264899
264901
  log("internal processing patterns:", processed);
264902
+ const { absolute, caseSensitiveMatch, debug, dot, followSymbolicLinks, onlyDirectories } = options;
264903
+ const root = props.root.replace(BACKSLASHES, "");
264900
264904
  const matchOptions = {
264901
- dot: options.dot,
264905
+ dot,
264902
264906
  nobrace: options.braceExpansion === false,
264903
- nocase: options.caseSensitiveMatch === false,
264907
+ nocase: !caseSensitiveMatch,
264904
264908
  noextglob: options.extglob === false,
264905
264909
  noglobstar: options.globstar === false,
264906
264910
  posix: true
264907
264911
  };
264908
- const matcher = (0, picomatch.default)(processed.match, {
264909
- ...matchOptions,
264910
- ignore: processed.ignore
264911
- });
264912
+ const matcher = (0, picomatch.default)(processed.match, matchOptions);
264912
264913
  const ignore = (0, picomatch.default)(processed.ignore, matchOptions);
264913
264914
  const partialMatcher = getPartialMatcher(processed.match, matchOptions);
264914
- const format = buildFormat(cwd, props.root, options.absolute);
264915
- const formatExclude = options.absolute ? format : buildFormat(cwd, props.root, true);
264916
- const fdirOptions = {
264917
- filters: [options.debug ? (p, isDirectory) => {
264918
- const path$2 = format(p, isDirectory);
264919
- const matches = matcher(path$2);
264915
+ const format = buildFormat(cwd, root, absolute);
264916
+ const excludeFormatter = absolute ? format : buildFormat(cwd, root, true);
264917
+ const excludePredicate = (_, p) => {
264918
+ const relativePath = excludeFormatter(p, true);
264919
+ return relativePath !== "." && !partialMatcher(relativePath) || ignore(relativePath);
264920
+ };
264921
+ let maxDepth;
264922
+ if (options.deep !== undefined)
264923
+ maxDepth = Math.round(options.deep - props.depthOffset);
264924
+ const crawler = new fdir.fdir({
264925
+ filters: [debug ? (p, isDirectory) => {
264926
+ const path2 = format(p, isDirectory);
264927
+ const matches = matcher(path2) && !ignore(path2);
264920
264928
  if (matches)
264921
- log(`matched ${path$2}`);
264929
+ log(`matched ${path2}`);
264922
264930
  return matches;
264923
- } : (p, isDirectory) => matcher(format(p, isDirectory))],
264924
- exclude: options.debug ? (_, p) => {
264925
- const relativePath = formatExclude(p, true);
264926
- const skipped = relativePath !== "." && !partialMatcher(relativePath) || ignore(relativePath);
264927
- if (skipped)
264928
- log(`skipped ${p}`);
264929
- else
264930
- log(`crawling ${p}`);
264931
+ } : (p, isDirectory) => {
264932
+ const path2 = format(p, isDirectory);
264933
+ return matcher(path2) && !ignore(path2);
264934
+ }],
264935
+ exclude: debug ? (_, p) => {
264936
+ const skipped = excludePredicate(_, p);
264937
+ log(`${skipped ? "skipped" : "crawling"} ${p}`);
264931
264938
  return skipped;
264932
- } : (_, p) => {
264933
- const relativePath = formatExclude(p, true);
264934
- return relativePath !== "." && !partialMatcher(relativePath) || ignore(relativePath);
264935
- },
264936
- fs: options.fs ? {
264937
- readdir: options.fs.readdir || fs2.default.readdir,
264938
- readdirSync: options.fs.readdirSync || fs2.default.readdirSync,
264939
- realpath: options.fs.realpath || fs2.default.realpath,
264940
- realpathSync: options.fs.realpathSync || fs2.default.realpathSync,
264941
- stat: options.fs.stat || fs2.default.stat,
264942
- statSync: options.fs.statSync || fs2.default.statSync
264943
- } : undefined,
264939
+ } : excludePredicate,
264940
+ fs: options.fs,
264944
264941
  pathSeparator: "/",
264945
- relativePaths: true,
264946
- resolveSymlinks: true,
264942
+ relativePaths: !absolute,
264943
+ resolvePaths: absolute,
264944
+ includeBasePath: absolute,
264945
+ resolveSymlinks: followSymbolicLinks,
264946
+ excludeSymlinks: !followSymbolicLinks,
264947
+ excludeFiles: onlyDirectories,
264948
+ includeDirs: onlyDirectories || !options.onlyFiles,
264949
+ maxDepth,
264947
264950
  signal: options.signal
264948
- };
264949
- if (options.deep !== undefined)
264950
- fdirOptions.maxDepth = Math.round(options.deep - props.depthOffset);
264951
- if (options.absolute) {
264952
- fdirOptions.relativePaths = false;
264953
- fdirOptions.resolvePaths = true;
264954
- fdirOptions.includeBasePath = true;
264955
- }
264956
- if (options.followSymbolicLinks === false) {
264957
- fdirOptions.resolveSymlinks = false;
264958
- fdirOptions.excludeSymlinks = true;
264959
- }
264960
- if (options.onlyDirectories) {
264961
- fdirOptions.excludeFiles = true;
264962
- fdirOptions.includeDirs = true;
264963
- } else if (options.onlyFiles === false)
264964
- fdirOptions.includeDirs = true;
264965
- props.root = props.root.replace(BACKSLASHES, "");
264966
- const root = props.root;
264951
+ }).crawl(root);
264967
264952
  if (options.debug)
264968
- log("internal properties:", props);
264969
- const relative2 = cwd !== root && !options.absolute && buildRelative(cwd, props.root);
264970
- return [new fdir.fdir(fdirOptions).crawl(root), relative2];
264953
+ log("internal properties:", {
264954
+ ...props,
264955
+ root
264956
+ });
264957
+ return [crawler, cwd !== root && !absolute && buildRelative(cwd, root)];
264971
264958
  }
264972
- async function glob(patternsOrOptions, options) {
264973
- if (patternsOrOptions && (options === null || options === undefined ? undefined : options.patterns))
264974
- throw new Error("Cannot pass patterns as both an argument and an option");
264975
- const isModern = isReadonlyArray(patternsOrOptions) || typeof patternsOrOptions === "string";
264976
- const opts = isModern ? options : patternsOrOptions;
264977
- const patterns = isModern ? patternsOrOptions : patternsOrOptions.patterns;
264978
- const [crawler, relative2] = getCrawler(patterns, opts);
264979
- if (!relative2)
264980
- return crawler.withPromise();
264981
- return formatPaths(await crawler.withPromise(), relative2);
264982
- }
264983
- function globSync(patternsOrOptions, options) {
264984
- if (patternsOrOptions && (options === null || options === undefined ? undefined : options.patterns))
264959
+ function formatPaths(paths, mapper) {
264960
+ if (mapper)
264961
+ for (let i2 = paths.length - 1;i2 >= 0; i2--)
264962
+ paths[i2] = mapper(paths[i2]);
264963
+ return paths;
264964
+ }
264965
+ var defaultOptions6 = {
264966
+ caseSensitiveMatch: true,
264967
+ cwd: process.cwd(),
264968
+ debug: !!process.env.TINYGLOBBY_DEBUG,
264969
+ expandDirectories: true,
264970
+ followSymbolicLinks: true,
264971
+ onlyFiles: true
264972
+ };
264973
+ function getOptions(options) {
264974
+ const opts = {
264975
+ ...defaultOptions6,
264976
+ ...options
264977
+ };
264978
+ opts.cwd = (opts.cwd instanceof URL ? (0, url2.fileURLToPath)(opts.cwd) : (0, path.resolve)(opts.cwd)).replace(BACKSLASHES, "/");
264979
+ opts.ignore = ensureStringArray(opts.ignore);
264980
+ opts.fs && (opts.fs = {
264981
+ readdir: opts.fs.readdir || fs2.readdir,
264982
+ readdirSync: opts.fs.readdirSync || fs2.readdirSync,
264983
+ realpath: opts.fs.realpath || fs2.realpath,
264984
+ realpathSync: opts.fs.realpathSync || fs2.realpathSync,
264985
+ stat: opts.fs.stat || fs2.stat,
264986
+ statSync: opts.fs.statSync || fs2.statSync
264987
+ });
264988
+ if (opts.debug)
264989
+ log("globbing with options:", opts);
264990
+ return opts;
264991
+ }
264992
+ function getCrawler(globInput, inputOptions = {}) {
264993
+ var _ref;
264994
+ if (globInput && (inputOptions === null || inputOptions === undefined ? undefined : inputOptions.patterns))
264985
264995
  throw new Error("Cannot pass patterns as both an argument and an option");
264986
- const isModern = isReadonlyArray(patternsOrOptions) || typeof patternsOrOptions === "string";
264987
- const opts = isModern ? options : patternsOrOptions;
264988
- const patterns = isModern ? patternsOrOptions : patternsOrOptions.patterns;
264989
- const [crawler, relative2] = getCrawler(patterns, opts);
264990
- if (!relative2)
264991
- return crawler.sync();
264992
- return formatPaths(crawler.sync(), relative2);
264996
+ const isModern = isReadonlyArray(globInput) || typeof globInput === "string";
264997
+ const patterns = ensureStringArray((_ref = isModern ? globInput : globInput.patterns) !== null && _ref !== undefined ? _ref : "**/*");
264998
+ const options = getOptions(isModern ? inputOptions : globInput);
264999
+ return patterns.length > 0 ? buildCrawler(options, patterns) : [];
265000
+ }
265001
+ async function glob(globInput, options) {
265002
+ const [crawler, relative2] = getCrawler(globInput, options);
265003
+ return crawler ? formatPaths(await crawler.withPromise(), relative2) : [];
265004
+ }
265005
+ function globSync(globInput, options) {
265006
+ const [crawler, relative2] = getCrawler(globInput, options);
265007
+ return crawler ? formatPaths(crawler.sync(), relative2) : [];
264993
265008
  }
264994
265009
  exports.convertPathToPattern = convertPathToPattern;
264995
265010
  exports.escapePath = escapePath;
@@ -410623,7 +410638,7 @@ var init_highlights5 = () => {};
410623
410638
  var tree_sitter_zig_default = "./tree-sitter-zig-e78zbjpm.wasm";
410624
410639
  var init_tree_sitter_zig = () => {};
410625
410640
 
410626
- // node_modules/@opentui/core/index-vy1rm1x3.js
410641
+ // node_modules/@opentui/core/index-kgg0v67t.js
410627
410642
  import { EventEmitter } from "events";
410628
410643
  import { Buffer as Buffer22 } from "buffer";
410629
410644
  import { Buffer as Buffer32 } from "buffer";
@@ -415362,7 +415377,7 @@ function detectLinks(chunks, context2) {
415362
415377
  }
415363
415378
  return chunks;
415364
415379
  }
415365
- function packDrawOptions(border2, shouldFill, titleAlignment) {
415380
+ function packDrawOptions(border2, shouldFill, titleAlignment, bottomTitleAlignment) {
415366
415381
  let packed = 0;
415367
415382
  if (border2 === true) {
415368
415383
  packed |= 15;
@@ -415385,7 +415400,9 @@ function packDrawOptions(border2, shouldFill, titleAlignment) {
415385
415400
  right: 2
415386
415401
  };
415387
415402
  const alignment = alignmentMap[titleAlignment];
415403
+ const bottomAlignment = alignmentMap[bottomTitleAlignment];
415388
415404
  packed |= alignment << 5;
415405
+ packed |= bottomAlignment << 7;
415389
415406
  return packed;
415390
415407
  }
415391
415408
 
@@ -415617,8 +415634,8 @@ class OptimizedBuffer {
415617
415634
  this.guard();
415618
415635
  const style = parseBorderStyle(options.borderStyle, "single");
415619
415636
  const borderChars = options.customBorderChars ?? BorderCharArrays[style];
415620
- const packedOptions = packDrawOptions(options.border, options.shouldFill ?? false, options.titleAlignment || "left");
415621
- this.lib.bufferDrawBox(this.bufferPtr, options.x, options.y, options.width, options.height, borderChars, packedOptions, options.borderColor, options.backgroundColor, options.title ?? null);
415637
+ const packedOptions = packDrawOptions(options.border, options.shouldFill ?? false, options.titleAlignment || "left", options.bottomTitleAlignment || "left");
415638
+ this.lib.bufferDrawBox(this.bufferPtr, options.x, options.y, options.width, options.height, borderChars, packedOptions, options.borderColor, options.backgroundColor, options.title ?? null, options.bottomTitle ?? null);
415622
415639
  }
415623
415640
  pushScissorRect(x3, y4, width, height) {
415624
415641
  this.guard();
@@ -416479,7 +416496,7 @@ function getOpenTUILib(libPath) {
416479
416496
  returns: "void"
416480
416497
  },
416481
416498
  bufferDrawBox: {
416482
- args: ["ptr", "i32", "i32", "u32", "u32", "ptr", "u32", "ptr", "ptr", "ptr", "u32"],
416499
+ args: ["ptr", "i32", "i32", "u32", "u32", "ptr", "u32", "ptr", "ptr", "ptr", "u32", "ptr", "u32"],
416483
416500
  returns: "void"
416484
416501
  },
416485
416502
  bufferPushScissorRect: {
@@ -417640,11 +417657,14 @@ class FFIRenderLib {
417640
417657
  });
417641
417658
  this.opentui.symbols.bufferDrawGrid(buffer, borderChars, borderFg.buffer, borderBg.buffer, columnOffsets, columnCount, rowOffsets, rowCount, ptr4(optionsBuffer));
417642
417659
  }
417643
- bufferDrawBox(buffer, x3, y4, width, height, borderChars, packedOptions, borderColor, backgroundColor, title) {
417660
+ bufferDrawBox(buffer, x3, y4, width, height, borderChars, packedOptions, borderColor, backgroundColor, title, bottomTitle) {
417644
417661
  const titleBytes = title ? this.encoder.encode(title) : null;
417645
417662
  const titleLen = title ? titleBytes.length : 0;
417646
417663
  const titlePtr = title ? titleBytes : null;
417647
- this.opentui.symbols.bufferDrawBox(buffer, x3, y4, width, height, borderChars, packedOptions, borderColor.buffer, backgroundColor.buffer, titlePtr, titleLen);
417664
+ const bottomTitleBytes = bottomTitle ? this.encoder.encode(bottomTitle) : null;
417665
+ const bottomTitleLen = bottomTitle ? bottomTitleBytes.length : 0;
417666
+ const bottomTitlePtr = bottomTitle ? bottomTitleBytes : null;
417667
+ this.opentui.symbols.bufferDrawBox(buffer, x3, y4, width, height, borderChars, packedOptions, borderColor.buffer, backgroundColor.buffer, titlePtr, titleLen, bottomTitlePtr, bottomTitleLen);
417648
417668
  }
417649
417669
  bufferResize(buffer, width, height) {
417650
417670
  this.opentui.symbols.bufferResize(buffer, width, height);
@@ -419873,7 +419893,7 @@ var __defProp8, __returnValue2 = (v3) => v3, __export3 = (target, all2) => {
419873
419893
  }
419874
419894
  return key3;
419875
419895
  }, MouseParser, singletonCacheSymbol, envRegistry, envStore, env, DEFAULT_TIMEOUT_MS = 20, DEFAULT_MAX_PENDING_BYTES, INITIAL_PENDING_CAPACITY = 256, ESC = 27, BEL = 7, BRACKETED_PASTE_START, BRACKETED_PASTE_END, EMPTY_BYTES, KEY_DECODER, DEFAULT_PROTOCOL_CONTEXT, RXVT_DOLLAR_CSI_RE, SYSTEM_CLOCK, TIMERS_MAP, _cachedParsers, DEFAULT_PARSERS, isUrl3 = (path6) => path6.startsWith("http://") || path6.startsWith("https://"), TreeSitterClient, DataPathsManager, extensionToFiletype, basenameToFiletype, __dirname2 = "/Users/runner/work/opentui/opentui/packages/core/src/lib/tree-sitter/assets", SYSTEM_CLOCK2, OSC4_RESPONSE, OSC_SPECIAL_RESPONSE, PASTE_TEXT_DECODER, URL_SCOPES, pointerSize, typeSizes, primitiveKeys, typeAlignments, typeGetters, pointerPacker, pointerUnpacker, encoder3, decoder, rgbaPackTransform = (rgba) => rgba ? ptr3(rgba.buffer) : null, rgbaUnpackTransform = (ptr42) => ptr42 ? RGBA.fromArray(new Float32Array(toArrayBuffer3(ptr42))) : undefined, StyledChunkStruct, HighlightStruct, LogicalCursorStruct, VisualCursorStruct, UnicodeMethodEnum, TerminalCapabilitiesStruct, EncodedCharStruct, LineInfoStruct, MeasureResultStruct, CursorStateStruct, CursorStyleOptionsStruct, GridDrawOptionsStruct, BuildOptionsStruct, AllocatorStatsStruct, GrowthPolicyEnum, NativeSpanFeedOptionsStruct, NativeSpanFeedStatsStruct, SpanInfoStruct, ReserveInfoStruct, module2, targetLibPath, CURSOR_STYLE_TO_ID, CURSOR_ID_TO_STYLE, MOUSE_STYLE_TO_ID, globalTraceSymbols = null, globalFFILogPath = null, exitHandlerRegistered = false, LogLevel2, opentuiLibPath, opentuiLib, BrandedRenderable, LayoutEvents, RenderableEvents, BaseRenderable, yogaConfig, Renderable, RootRenderable, BrandedVNode, EditBuffer, Capture, CapturedWritableStream, defaultKeyAliases, capture, TerminalConsoleCache, terminalConsoleCache, ConsolePosition, defaultConsoleKeybindings, DEFAULT_CONSOLE_OPTIONS, INDENT_WIDTH = 2, TerminalConsole, BrandedEditBufferRenderable, EditBufferRenderableEvents, EditBufferRenderable, ANSI, DEFAULT_FOOTER_HEIGHT = 12, DEFAULT_FORWARDED_ENV_KEYS, KITTY_FLAG_DISAMBIGUATE = 1, KITTY_FLAG_EVENT_TYPES = 2, KITTY_FLAG_ALTERNATE_KEYS = 4, KITTY_FLAG_ALL_KEYS_AS_ESCAPES = 8, KITTY_FLAG_REPORT_TEXT = 16, DEFAULT_STDIN_PARSER_MAX_BUFFER_BYTES = 67108864, MouseButton, rendererTracker, CliRenderEvents, RendererControlState, CliRenderer;
419876
- var init_index_vy1rm1x3 = __esm(async () => {
419896
+ var init_index_kgg0v67t = __esm(async () => {
419877
419897
  init_highlights();
419878
419898
  init_tree_sitter_javascript();
419879
419899
  init_highlights2();
@@ -425048,13 +425068,6 @@ var init_index_vy1rm1x3 = __esm(async () => {
425048
425068
  const { logType, data } = event.data;
425049
425069
  const message = data.join(" ");
425050
425070
  this.emit("worker:log", logType, message);
425051
- if (logType === "log") {
425052
- console.log("TSWorker:", ...data);
425053
- } else if (logType === "error") {
425054
- console.error("TSWorker:", ...data);
425055
- } else if (logType === "warn") {
425056
- console.warn("TSWorker:", ...data);
425057
- }
425058
425071
  return;
425059
425072
  }
425060
425073
  }
@@ -425672,7 +425685,8 @@ var init_index_vy1rm1x3 = __esm(async () => {
425672
425685
  len: value.len
425673
425686
  })
425674
425687
  });
425675
- targetLibPath = require("path").join(import.meta.dir, "native", "libopentui." + (process.platform === "darwin" ? "dylib" : "so"));
425688
+ module2 = await import(`@opentui/core-${process.platform}-${process.arch}/index.ts`);
425689
+ targetLibPath = module2.default;
425676
425690
  if (isBunfsPath(targetLibPath)) {
425677
425691
  targetLibPath = targetLibPath.replace("../", "");
425678
425692
  }
@@ -429464,8 +429478,7 @@ Captured output:
429464
429478
  "SIGHUP",
429465
429479
  "SIGBREAK",
429466
429480
  "SIGPIPE",
429467
- "SIGBUS",
429468
- "SIGFPE"
429481
+ "SIGBUS"
429469
429482
  ];
429470
429483
  this.clipboard = new Clipboard(this.lib, this.rendererPtr);
429471
429484
  this.resizeDebounceDelay = config2.debounceDelay || 100;
@@ -430974,7 +430987,7 @@ Captured output:
430974
430987
  };
430975
430988
  });
430976
430989
 
430977
- // node_modules/@opentui/core/index-dg6qsc3m.js
430990
+ // node_modules/@opentui/core/index-9y4vegye.js
430978
430991
  import { toArrayBuffer as toArrayBuffer5 } from "bun:ffi";
430979
430992
 
430980
430993
  class TextBufferView {
@@ -434638,8 +434651,8 @@ Please report this to https://github.com/markedjs/marked.`, e) {
434638
434651
  };
434639
434652
  }
434640
434653
  }, _4, Dt, Ht, Zt, Gt, Nt, Ft2, jt2, TRAILING_MARKDOWN_BLOCK_BREAKS_RE, MarkdownRenderable, defaultThumbBackgroundColor, defaultTrackBackgroundColor, SliderRenderable, ScrollBarRenderable, ArrowRenderable, ContentRenderable, SCROLLBOX_PADDING_KEYS, ScrollBoxRenderable, defaultSelectKeybindings, SelectRenderableEvents, SelectRenderable, defaultTabSelectKeybindings, TabSelectRenderableEvents, TabSelectRenderable, TimeToFirstDrawRenderable;
434641
- var init_index_dg6qsc3m = __esm(async () => {
434642
- await init_index_vy1rm1x3();
434654
+ var init_index_9y4vegye = __esm(async () => {
434655
+ await init_index_kgg0v67t();
434643
434656
  exports_src2 = {};
434644
434657
  __export3(exports_src2, {
434645
434658
  yellow: () => yellow,
@@ -435685,6 +435698,8 @@ var init_index_dg6qsc3m = __esm(async () => {
435685
435698
  shouldFill;
435686
435699
  _title;
435687
435700
  _titleAlignment;
435701
+ _bottomTitle;
435702
+ _bottomTitleAlignment;
435688
435703
  _defaultOptions = {
435689
435704
  backgroundColor: "transparent",
435690
435705
  borderStyle: "single",
@@ -435692,6 +435707,7 @@ var init_index_dg6qsc3m = __esm(async () => {
435692
435707
  borderColor: "#FFFFFF",
435693
435708
  shouldFill: true,
435694
435709
  titleAlignment: "left",
435710
+ bottomTitleAlignment: "left",
435695
435711
  focusedBorderColor: "#00AAFF"
435696
435712
  };
435697
435713
  constructor(ctx, options) {
@@ -435713,6 +435729,8 @@ var init_index_dg6qsc3m = __esm(async () => {
435713
435729
  this.shouldFill = options.shouldFill ?? this._defaultOptions.shouldFill;
435714
435730
  this._title = options.title;
435715
435731
  this._titleAlignment = options.titleAlignment || this._defaultOptions.titleAlignment;
435732
+ this._bottomTitle = options.bottomTitle;
435733
+ this._bottomTitleAlignment = options.bottomTitleAlignment || this._defaultOptions.bottomTitleAlignment;
435716
435734
  this.applyYogaBorders();
435717
435735
  const hasInitialGapProps = options.gap !== undefined || options.rowGap !== undefined || options.columnGap !== undefined;
435718
435736
  if (hasInitialGapProps) {
@@ -435809,6 +435827,24 @@ var init_index_dg6qsc3m = __esm(async () => {
435809
435827
  this.requestRender();
435810
435828
  }
435811
435829
  }
435830
+ get bottomTitle() {
435831
+ return this._bottomTitle;
435832
+ }
435833
+ set bottomTitle(value) {
435834
+ if (this._bottomTitle !== value) {
435835
+ this._bottomTitle = value;
435836
+ this.requestRender();
435837
+ }
435838
+ }
435839
+ get bottomTitleAlignment() {
435840
+ return this._bottomTitleAlignment;
435841
+ }
435842
+ set bottomTitleAlignment(value) {
435843
+ if (this._bottomTitleAlignment !== value) {
435844
+ this._bottomTitleAlignment = value;
435845
+ this.requestRender();
435846
+ }
435847
+ }
435812
435848
  renderSelf(buffer) {
435813
435849
  const currentBorderColor = this._focused ? this._focusedBorderColor : this._borderColor;
435814
435850
  buffer.drawBox({
@@ -435823,7 +435859,9 @@ var init_index_dg6qsc3m = __esm(async () => {
435823
435859
  backgroundColor: this._backgroundColor,
435824
435860
  shouldFill: this.shouldFill,
435825
435861
  title: this._title,
435826
- titleAlignment: this._titleAlignment
435862
+ titleAlignment: this._titleAlignment,
435863
+ bottomTitle: this._bottomTitle,
435864
+ bottomTitleAlignment: this._bottomTitleAlignment
435827
435865
  });
435828
435866
  }
435829
435867
  getScissorRect() {
@@ -443017,8 +443055,8 @@ __export(exports_core3, {
443017
443055
  });
443018
443056
  var init_core4 = __esm(async () => {
443019
443057
  await __promiseAll([
443020
- init_index_dg6qsc3m(),
443021
- init_index_vy1rm1x3()
443058
+ init_index_9y4vegye(),
443059
+ init_index_kgg0v67t()
443022
443060
  ]);
443023
443061
  });
443024
443062