@hasna/coders 0.0.8 → 0.0.10

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/cli.mjs CHANGED
@@ -17658,7 +17658,7 @@ var require_react_reconciler_development = __commonJS({
17658
17658
  var HostPortal = 4;
17659
17659
  var HostComponent = 5;
17660
17660
  var HostText = 6;
17661
- var Fragment = 7;
17661
+ var Fragment2 = 7;
17662
17662
  var Mode = 8;
17663
17663
  var ContextConsumer = 9;
17664
17664
  var ContextProvider = 10;
@@ -17798,7 +17798,7 @@ var require_react_reconciler_development = __commonJS({
17798
17798
  return "DehydratedFragment";
17799
17799
  case ForwardRef:
17800
17800
  return getWrappedName$1(type, type.render, "ForwardRef");
17801
- case Fragment:
17801
+ case Fragment2:
17802
17802
  return "Fragment";
17803
17803
  case HostComponent:
17804
17804
  return type;
@@ -20932,7 +20932,7 @@ var require_react_reconciler_development = __commonJS({
20932
20932
  }
20933
20933
  }
20934
20934
  function updateFragment2(returnFiber, current2, fragment, lanes, key) {
20935
- if (current2 === null || current2.tag !== Fragment) {
20935
+ if (current2 === null || current2.tag !== Fragment2) {
20936
20936
  var created = createFiberFromFragment(fragment, returnFiber.mode, lanes, key);
20937
20937
  created.return = returnFiber;
20938
20938
  return created;
@@ -21335,7 +21335,7 @@ var require_react_reconciler_development = __commonJS({
21335
21335
  if (child.key === key) {
21336
21336
  var elementType = element.type;
21337
21337
  if (elementType === REACT_FRAGMENT_TYPE) {
21338
- if (child.tag === Fragment) {
21338
+ if (child.tag === Fragment2) {
21339
21339
  deleteRemainingChildren(returnFiber, child.sibling);
21340
21340
  var existing = useFiber(child, element.props.children);
21341
21341
  existing.return = returnFiber;
@@ -26826,7 +26826,7 @@ var require_react_reconciler_development = __commonJS({
26826
26826
  var _resolvedProps2 = workInProgress2.elementType === type ? _unresolvedProps2 : resolveDefaultProps(type, _unresolvedProps2);
26827
26827
  return updateForwardRef(current2, workInProgress2, type, _resolvedProps2, renderLanes2);
26828
26828
  }
26829
- case Fragment:
26829
+ case Fragment2:
26830
26830
  return updateFragment(current2, workInProgress2, renderLanes2);
26831
26831
  case Mode:
26832
26832
  return updateMode(current2, workInProgress2, renderLanes2);
@@ -27263,7 +27263,7 @@ var require_react_reconciler_development = __commonJS({
27263
27263
  case SimpleMemoComponent:
27264
27264
  case FunctionComponent:
27265
27265
  case ForwardRef:
27266
- case Fragment:
27266
+ case Fragment2:
27267
27267
  case Mode:
27268
27268
  case Profiler:
27269
27269
  case ContextConsumer:
@@ -32031,7 +32031,7 @@ var require_react_reconciler_development = __commonJS({
32031
32031
  return fiber;
32032
32032
  }
32033
32033
  function createFiberFromFragment(elements, mode, lanes, key) {
32034
- var fiber = createFiber(Fragment, elements, key, mode);
32034
+ var fiber = createFiber(Fragment2, elements, key, mode);
32035
32035
  fiber.lanes = lanes;
32036
32036
  return fiber;
32037
32037
  }
@@ -47322,7 +47322,7 @@ var require_backend = __commonJS({
47322
47322
  var symbolOrNumber = renderer_typeof(type) === "object" && type !== null ? type.$$typeof : type;
47323
47323
  return renderer_typeof(symbolOrNumber) === "symbol" ? symbolOrNumber.toString() : symbolOrNumber;
47324
47324
  }
47325
- var _ReactTypeOfWork = ReactTypeOfWork, CacheComponent = _ReactTypeOfWork.CacheComponent, ClassComponent = _ReactTypeOfWork.ClassComponent, IncompleteClassComponent = _ReactTypeOfWork.IncompleteClassComponent, IncompleteFunctionComponent = _ReactTypeOfWork.IncompleteFunctionComponent, FunctionComponent = _ReactTypeOfWork.FunctionComponent, IndeterminateComponent = _ReactTypeOfWork.IndeterminateComponent, ForwardRef = _ReactTypeOfWork.ForwardRef, HostRoot = _ReactTypeOfWork.HostRoot, HostHoistable = _ReactTypeOfWork.HostHoistable, HostSingleton = _ReactTypeOfWork.HostSingleton, HostComponent = _ReactTypeOfWork.HostComponent, HostPortal = _ReactTypeOfWork.HostPortal, HostText = _ReactTypeOfWork.HostText, Fragment = _ReactTypeOfWork.Fragment, LazyComponent = _ReactTypeOfWork.LazyComponent, LegacyHiddenComponent = _ReactTypeOfWork.LegacyHiddenComponent, MemoComponent = _ReactTypeOfWork.MemoComponent, OffscreenComponent = _ReactTypeOfWork.OffscreenComponent, Profiler = _ReactTypeOfWork.Profiler, ScopeComponent = _ReactTypeOfWork.ScopeComponent, SimpleMemoComponent = _ReactTypeOfWork.SimpleMemoComponent, SuspenseComponent = _ReactTypeOfWork.SuspenseComponent, SuspenseListComponent = _ReactTypeOfWork.SuspenseListComponent, TracingMarkerComponent = _ReactTypeOfWork.TracingMarkerComponent, Throw = _ReactTypeOfWork.Throw, ViewTransitionComponent = _ReactTypeOfWork.ViewTransitionComponent, ActivityComponent = _ReactTypeOfWork.ActivityComponent;
47325
+ var _ReactTypeOfWork = ReactTypeOfWork, CacheComponent = _ReactTypeOfWork.CacheComponent, ClassComponent = _ReactTypeOfWork.ClassComponent, IncompleteClassComponent = _ReactTypeOfWork.IncompleteClassComponent, IncompleteFunctionComponent = _ReactTypeOfWork.IncompleteFunctionComponent, FunctionComponent = _ReactTypeOfWork.FunctionComponent, IndeterminateComponent = _ReactTypeOfWork.IndeterminateComponent, ForwardRef = _ReactTypeOfWork.ForwardRef, HostRoot = _ReactTypeOfWork.HostRoot, HostHoistable = _ReactTypeOfWork.HostHoistable, HostSingleton = _ReactTypeOfWork.HostSingleton, HostComponent = _ReactTypeOfWork.HostComponent, HostPortal = _ReactTypeOfWork.HostPortal, HostText = _ReactTypeOfWork.HostText, Fragment2 = _ReactTypeOfWork.Fragment, LazyComponent = _ReactTypeOfWork.LazyComponent, LegacyHiddenComponent = _ReactTypeOfWork.LegacyHiddenComponent, MemoComponent = _ReactTypeOfWork.MemoComponent, OffscreenComponent = _ReactTypeOfWork.OffscreenComponent, Profiler = _ReactTypeOfWork.Profiler, ScopeComponent = _ReactTypeOfWork.ScopeComponent, SimpleMemoComponent = _ReactTypeOfWork.SimpleMemoComponent, SuspenseComponent = _ReactTypeOfWork.SuspenseComponent, SuspenseListComponent = _ReactTypeOfWork.SuspenseListComponent, TracingMarkerComponent = _ReactTypeOfWork.TracingMarkerComponent, Throw = _ReactTypeOfWork.Throw, ViewTransitionComponent = _ReactTypeOfWork.ViewTransitionComponent, ActivityComponent = _ReactTypeOfWork.ActivityComponent;
47326
47326
  function resolveFiberType(type) {
47327
47327
  var typeSymbol = getTypeSymbol(type);
47328
47328
  switch (typeSymbol) {
@@ -47378,7 +47378,7 @@ var require_backend = __commonJS({
47378
47378
  case HostPortal:
47379
47379
  case HostText:
47380
47380
  return null;
47381
- case Fragment:
47381
+ case Fragment2:
47382
47382
  return "Fragment";
47383
47383
  case LazyComponent:
47384
47384
  return "Lazy";
@@ -47533,7 +47533,7 @@ var require_backend = __commonJS({
47533
47533
  function renderer_attach(hook, rendererID, renderer2, global2, shouldStartProfilingNow, profilingSettings) {
47534
47534
  var version = renderer2.reconcilerVersion || renderer2.version;
47535
47535
  var _getInternalReactCons = getInternalReactConstants(version), getDisplayNameForFiber = _getInternalReactCons.getDisplayNameForFiber, getTypeSymbol = _getInternalReactCons.getTypeSymbol, ReactPriorityLevels = _getInternalReactCons.ReactPriorityLevels, ReactTypeOfWork = _getInternalReactCons.ReactTypeOfWork, StrictModeBits = _getInternalReactCons.StrictModeBits, SuspenseyImagesMode = _getInternalReactCons.SuspenseyImagesMode;
47536
- var ActivityComponent = ReactTypeOfWork.ActivityComponent, ClassComponent = ReactTypeOfWork.ClassComponent, ContextConsumer = ReactTypeOfWork.ContextConsumer, DehydratedSuspenseComponent = ReactTypeOfWork.DehydratedSuspenseComponent, ForwardRef = ReactTypeOfWork.ForwardRef, Fragment = ReactTypeOfWork.Fragment, FunctionComponent = ReactTypeOfWork.FunctionComponent, HostRoot = ReactTypeOfWork.HostRoot, HostHoistable = ReactTypeOfWork.HostHoistable, HostSingleton = ReactTypeOfWork.HostSingleton, HostPortal = ReactTypeOfWork.HostPortal, HostComponent = ReactTypeOfWork.HostComponent, HostText = ReactTypeOfWork.HostText, IncompleteClassComponent = ReactTypeOfWork.IncompleteClassComponent, IncompleteFunctionComponent = ReactTypeOfWork.IncompleteFunctionComponent, IndeterminateComponent = ReactTypeOfWork.IndeterminateComponent, LegacyHiddenComponent = ReactTypeOfWork.LegacyHiddenComponent, MemoComponent = ReactTypeOfWork.MemoComponent, OffscreenComponent = ReactTypeOfWork.OffscreenComponent, SimpleMemoComponent = ReactTypeOfWork.SimpleMemoComponent, SuspenseComponent = ReactTypeOfWork.SuspenseComponent, SuspenseListComponent = ReactTypeOfWork.SuspenseListComponent, TracingMarkerComponent = ReactTypeOfWork.TracingMarkerComponent, Throw = ReactTypeOfWork.Throw, ViewTransitionComponent = ReactTypeOfWork.ViewTransitionComponent;
47536
+ var ActivityComponent = ReactTypeOfWork.ActivityComponent, ClassComponent = ReactTypeOfWork.ClassComponent, ContextConsumer = ReactTypeOfWork.ContextConsumer, DehydratedSuspenseComponent = ReactTypeOfWork.DehydratedSuspenseComponent, ForwardRef = ReactTypeOfWork.ForwardRef, Fragment2 = ReactTypeOfWork.Fragment, FunctionComponent = ReactTypeOfWork.FunctionComponent, HostRoot = ReactTypeOfWork.HostRoot, HostHoistable = ReactTypeOfWork.HostHoistable, HostSingleton = ReactTypeOfWork.HostSingleton, HostPortal = ReactTypeOfWork.HostPortal, HostComponent = ReactTypeOfWork.HostComponent, HostText = ReactTypeOfWork.HostText, IncompleteClassComponent = ReactTypeOfWork.IncompleteClassComponent, IncompleteFunctionComponent = ReactTypeOfWork.IncompleteFunctionComponent, IndeterminateComponent = ReactTypeOfWork.IndeterminateComponent, LegacyHiddenComponent = ReactTypeOfWork.LegacyHiddenComponent, MemoComponent = ReactTypeOfWork.MemoComponent, OffscreenComponent = ReactTypeOfWork.OffscreenComponent, SimpleMemoComponent = ReactTypeOfWork.SimpleMemoComponent, SuspenseComponent = ReactTypeOfWork.SuspenseComponent, SuspenseListComponent = ReactTypeOfWork.SuspenseListComponent, TracingMarkerComponent = ReactTypeOfWork.TracingMarkerComponent, Throw = ReactTypeOfWork.Throw, ViewTransitionComponent = ReactTypeOfWork.ViewTransitionComponent;
47537
47537
  var ImmediatePriority = ReactPriorityLevels.ImmediatePriority, UserBlockingPriority = ReactPriorityLevels.UserBlockingPriority, NormalPriority = ReactPriorityLevels.NormalPriority, LowPriority = ReactPriorityLevels.LowPriority, IdlePriority = ReactPriorityLevels.IdlePriority, NoPriority = ReactPriorityLevels.NoPriority;
47538
47538
  var getLaneLabelMap = renderer2.getLaneLabelMap, injectProfilingHooks = renderer2.injectProfilingHooks, overrideHookState = renderer2.overrideHookState, overrideHookStateDeletePath = renderer2.overrideHookStateDeletePath, overrideHookStateRenamePath = renderer2.overrideHookStateRenamePath, overrideProps = renderer2.overrideProps, overridePropsDeletePath = renderer2.overridePropsDeletePath, overridePropsRenamePath = renderer2.overridePropsRenamePath, scheduleRefresh = renderer2.scheduleRefresh, setErrorHandler = renderer2.setErrorHandler, setSuspenseHandler = renderer2.setSuspenseHandler, scheduleUpdate = renderer2.scheduleUpdate, scheduleRetry = renderer2.scheduleRetry, getCurrentFiber = renderer2.getCurrentFiber;
47539
47539
  var supportsTogglingError = typeof setErrorHandler === "function" && typeof scheduleUpdate === "function";
@@ -47894,7 +47894,7 @@ var require_backend = __commonJS({
47894
47894
  return true;
47895
47895
  case HostRoot:
47896
47896
  return false;
47897
- case Fragment:
47897
+ case Fragment2:
47898
47898
  return key === null;
47899
47899
  default:
47900
47900
  var typeSymbol = getTypeSymbol(type);
@@ -47968,7 +47968,7 @@ var require_backend = __commonJS({
47968
47968
  return ElementTypeHostComponent;
47969
47969
  case HostPortal:
47970
47970
  case HostText:
47971
- case Fragment:
47971
+ case Fragment2:
47972
47972
  return ElementTypeOtherOrUnknown;
47973
47973
  case MemoComponent:
47974
47974
  case SimpleMemoComponent:
@@ -57566,6 +57566,25 @@ var init_render = __esm({
57566
57566
  });
57567
57567
 
57568
57568
  // node_modules/ink/build/components/Static.js
57569
+ function Static(props) {
57570
+ const { items, children: render2, style: customStyle } = props;
57571
+ const [index, setIndex] = (0, import_react11.useState)(0);
57572
+ const itemsToRender = (0, import_react11.useMemo)(() => {
57573
+ return items.slice(index);
57574
+ }, [items, index]);
57575
+ (0, import_react11.useLayoutEffect)(() => {
57576
+ setIndex(items.length);
57577
+ }, [items.length]);
57578
+ const children = itemsToRender.map((item, itemIndex) => {
57579
+ return render2(item, index + itemIndex);
57580
+ });
57581
+ const style = (0, import_react11.useMemo)(() => ({
57582
+ position: "absolute",
57583
+ flexDirection: "column",
57584
+ ...customStyle
57585
+ }), [customStyle]);
57586
+ return import_react11.default.createElement("ink-box", { internal_static: true, style }, children);
57587
+ }
57569
57588
  var import_react11;
57570
57589
  var init_Static = __esm({
57571
57590
  "node_modules/ink/build/components/Static.js"() {
@@ -58429,7 +58448,7 @@ var init_client = __esm({
58429
58448
  "Content-Type": "application/json",
58430
58449
  "anthropic-version": "2023-06-01",
58431
58450
  "anthropic-beta": BETA_HEADERS.join(","),
58432
- "User-Agent": `coders/${"0.0.8"}`
58451
+ "User-Agent": `coders/${"0.0.10"}`
58433
58452
  };
58434
58453
  if (key.isOAuth) {
58435
58454
  headers["Authorization"] = `Bearer ${key.apiKey}`;
@@ -69769,19 +69788,6 @@ function SpinnerDot() {
69769
69788
  const f = useSpinner(true);
69770
69789
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { color: "cyan", children: f });
69771
69790
  }
69772
- function Header({ model, mode }) {
69773
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box_default, { marginBottom: 1, children: [
69774
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { bold: true, color: "cyan", children: "@hasna/coders" }),
69775
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { dimColor: true, children: [
69776
- " v",
69777
- VERSION,
69778
- " \xB7 ",
69779
- model,
69780
- " \xB7 ",
69781
- mode
69782
- ] })
69783
- ] });
69784
- }
69785
69791
  function ToolItem({ tool }) {
69786
69792
  const f = useSpinner(tool.status === "running");
69787
69793
  const icon = tool.status === "running" ? "\xB7" : tool.status === "error" ? "\u25CF" : "\u25CF";
@@ -69932,6 +69938,8 @@ function App2({ model, mode, initialPrompt }) {
69932
69938
  const [tokens, setTokens] = (0, import_react22.useState)(0);
69933
69939
  const [history, setHistory] = (0, import_react22.useState)([]);
69934
69940
  const [activeTools, setActiveTools] = (0, import_react22.useState)([]);
69941
+ const activeToolsRef = import_react22.default.useRef([]);
69942
+ activeToolsRef.current = activeTools;
69935
69943
  const rows = stdout?.rows ?? 24;
69936
69944
  const [permissionPending, setPermissionPending] = (0, import_react22.useState)(null);
69937
69945
  const requestPermission = (0, import_react22.useCallback)((toolName, summary) => {
@@ -70024,9 +70032,10 @@ function App2({ model, mode, initialPrompt }) {
70024
70032
  );
70025
70033
  setCost((p) => p + c.totalCostUsd);
70026
70034
  setTokens((p) => p + result.usage.totalInputTokens + result.usage.totalOutputTokens);
70027
- const frozenTools = [...activeTools].map(
70035
+ const frozenTools = [...activeToolsRef.current].map(
70028
70036
  (t) => t.status === "running" ? { ...t, status: "done" } : t
70029
70037
  );
70038
+ const verb = VERBS[Math.floor(Math.random() * VERBS.length)];
70030
70039
  setMsgs((p) => [...p, {
70031
70040
  id: `a${Date.now()}`,
70032
70041
  role: "assistant",
@@ -70034,8 +70043,7 @@ function App2({ model, mode, initialPrompt }) {
70034
70043
  timestamp: Date.now(),
70035
70044
  tools: frozenTools.length > 0 ? frozenTools : void 0,
70036
70045
  durationMs: dur,
70037
- durationVerb: VERBS[Math.floor(Math.random() * VERBS.length)]
70038
- // Fixed once at creation
70046
+ durationVerb: verb
70039
70047
  }]);
70040
70048
  setHistory(result.messages.filter((m) => m.role === "user" || m.role === "assistant"));
70041
70049
  setStreaming("");
@@ -70072,16 +70080,13 @@ function App2({ model, mode, initialPrompt }) {
70072
70080
  } else if (key.escape) setInput("");
70073
70081
  else if (!key.ctrl && !key.meta && ch) setInput((p) => p + ch);
70074
70082
  });
70075
- const maxMsgs = busy ? 1 : 3;
70076
- const visible = msgs.slice(-maxMsgs);
70077
70083
  const recentTools = activeTools.slice(-3);
70078
- const streamLines = streaming.split("\n");
70079
- const maxStreamLines = Math.max(3, rows - 15);
70084
+ const streamLines = streaming ? streaming.split("\n") : [];
70085
+ const maxStreamLines = Math.max(5, rows - 10);
70080
70086
  const truncatedStream = streamLines.length > maxStreamLines ? streamLines.slice(-maxStreamLines).join("\n") : streaming;
70081
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box_default, { flexDirection: "column", children: [
70082
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Header, { model, mode }),
70083
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box_default, { flexDirection: "column", flexGrow: 1, children: [
70084
- visible.map((m) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MessageView, { msg: m }, m.id)),
70087
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
70088
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Static, { items: msgs, children: (msg) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MessageView, { msg }, msg.id) }),
70089
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box_default, { flexDirection: "column", children: [
70085
70090
  busy && recentTools.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box_default, { flexDirection: "column", children: [
70086
70091
  activeTools.length > 3 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { dimColor: true, children: [
70087
70092
  " \u2026 +",
@@ -70090,30 +70095,29 @@ function App2({ model, mode, initialPrompt }) {
70090
70095
  ] }) }),
70091
70096
  recentTools.map((t) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToolItem, { tool: t }, t.id))
70092
70097
  ] }),
70093
- busy && truncatedStream && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box_default, { marginTop: 0, children: [
70098
+ busy && truncatedStream && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box_default, { children: [
70094
70099
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { color: "green", children: "\u25CF " }),
70095
70100
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { children: truncatedStream })
70096
70101
  ] }),
70097
- busy && !streaming && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box_default, { marginTop: 0, children: [
70102
+ busy && !streaming && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box_default, { children: [
70098
70103
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SpinnerDot, {}),
70099
70104
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { dimColor: true, children: [
70100
70105
  " ",
70101
70106
  recentTools.some((t) => t.status === "running") ? "Working" : "Thinking",
70102
70107
  "..."
70103
70108
  ] })
70104
- ] })
70105
- ] }),
70106
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { dimColor: true, children: "\u2500".repeat(Math.min(stdout?.columns ?? 80, 120)) }) }),
70107
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box_default, { children: [
70108
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { color: "cyan", bold: true, children: [
70109
- PROMPT,
70110
- " "
70111
70109
  ] }),
70112
- input.startsWith("/") ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { color: "magenta", children: input }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { children: input }),
70113
- !busy && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { color: "gray", children: "\u258E" })
70114
- ] }),
70115
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { dimColor: true, children: "\u2500".repeat(Math.min(stdout?.columns ?? 80, 120)) }) }),
70116
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StatusBar, { model, mode, cost, tokens })
70110
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { dimColor: true, children: "\u2500".repeat(Math.min(stdout?.columns ?? 80, 120)) }) }),
70111
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box_default, { children: [
70112
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { color: "cyan", bold: true, children: [
70113
+ PROMPT,
70114
+ " "
70115
+ ] }),
70116
+ input.startsWith("/") ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { color: "magenta", children: input }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { children: input }),
70117
+ !busy && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { color: "gray", children: "\u258E" })
70118
+ ] }),
70119
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StatusBar, { model, mode, cost, tokens })
70120
+ ] })
70117
70121
  ] });
70118
70122
  }
70119
70123
  function launchInkApp(opts = {}) {
@@ -70402,8 +70406,8 @@ async function bootstrap() {
70402
70406
  var VERSION, BUILD_TIME, PACKAGE_NAME2, ISSUES_URL2, startupTimestamps, originalCwd, RESET_TERMINAL, cleanupHandlers, earlyInput, earlyInputCapturing;
70403
70407
  var init_index = __esm({
70404
70408
  "src/cli/index.ts"() {
70405
- VERSION = "0.0.8";
70406
- BUILD_TIME = "2026-03-20T08:07:42.452Z";
70409
+ VERSION = "0.0.10";
70410
+ BUILD_TIME = "2026-03-20T08:16:11.053Z";
70407
70411
  PACKAGE_NAME2 = "@hasna/coders";
70408
70412
  ISSUES_URL2 = "https://github.com/hasnaxyz/open-coders/issues";
70409
70413
  startupTimestamps = {};