@hasna/coders 0.0.9 → 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.9"}`
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";
@@ -70074,16 +70080,13 @@ function App2({ model, mode, initialPrompt }) {
70074
70080
  } else if (key.escape) setInput("");
70075
70081
  else if (!key.ctrl && !key.meta && ch) setInput((p) => p + ch);
70076
70082
  });
70077
- const maxVisibleMsgs = busy ? 2 : Math.max(3, Math.floor((rows - 6) / 4));
70078
- const visible = msgs.slice(-maxVisibleMsgs);
70079
70083
  const recentTools = activeTools.slice(-3);
70080
- const streamLines = streaming.split("\n");
70081
- const maxStreamLines = Math.max(3, rows - 15);
70084
+ const streamLines = streaming ? streaming.split("\n") : [];
70085
+ const maxStreamLines = Math.max(5, rows - 10);
70082
70086
  const truncatedStream = streamLines.length > maxStreamLines ? streamLines.slice(-maxStreamLines).join("\n") : streaming;
70083
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box_default, { flexDirection: "column", children: [
70084
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Header, { model, mode }),
70085
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box_default, { flexDirection: "column", flexGrow: 1, children: [
70086
- 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: [
70087
70090
  busy && recentTools.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box_default, { flexDirection: "column", children: [
70088
70091
  activeTools.length > 3 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { dimColor: true, children: [
70089
70092
  " \u2026 +",
@@ -70092,30 +70095,29 @@ function App2({ model, mode, initialPrompt }) {
70092
70095
  ] }) }),
70093
70096
  recentTools.map((t) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ToolItem, { tool: t }, t.id))
70094
70097
  ] }),
70095
- 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: [
70096
70099
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { color: "green", children: "\u25CF " }),
70097
70100
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { children: truncatedStream })
70098
70101
  ] }),
70099
- 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: [
70100
70103
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SpinnerDot, {}),
70101
70104
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { dimColor: true, children: [
70102
70105
  " ",
70103
70106
  recentTools.some((t) => t.status === "running") ? "Working" : "Thinking",
70104
70107
  "..."
70105
70108
  ] })
70106
- ] })
70107
- ] }),
70108
- /* @__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)) }) }),
70109
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box_default, { children: [
70110
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Text, { color: "cyan", bold: true, children: [
70111
- PROMPT,
70112
- " "
70113
70109
  ] }),
70114
- input.startsWith("/") ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { color: "magenta", children: input }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { children: input }),
70115
- !busy && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Text, { color: "gray", children: "\u258E" })
70116
- ] }),
70117
- /* @__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)) }) }),
70118
- /* @__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
+ ] })
70119
70121
  ] });
70120
70122
  }
70121
70123
  function launchInkApp(opts = {}) {
@@ -70404,8 +70406,8 @@ async function bootstrap() {
70404
70406
  var VERSION, BUILD_TIME, PACKAGE_NAME2, ISSUES_URL2, startupTimestamps, originalCwd, RESET_TERMINAL, cleanupHandlers, earlyInput, earlyInputCapturing;
70405
70407
  var init_index = __esm({
70406
70408
  "src/cli/index.ts"() {
70407
- VERSION = "0.0.9";
70408
- BUILD_TIME = "2026-03-20T08:10:27.716Z";
70409
+ VERSION = "0.0.10";
70410
+ BUILD_TIME = "2026-03-20T08:16:11.053Z";
70409
70411
  PACKAGE_NAME2 = "@hasna/coders";
70410
70412
  ISSUES_URL2 = "https://github.com/hasnaxyz/open-coders/issues";
70411
70413
  startupTimestamps = {};