@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 +52 -50
- package/dist/cli.mjs.map +3 -3
- package/package.json +1 -1
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
|
|
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
|
|
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 !==
|
|
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 ===
|
|
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
|
|
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
|
|
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(
|
|
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,
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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.
|
|
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(
|
|
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)(
|
|
70084
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
70085
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Box_default, { flexDirection: "column",
|
|
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, {
|
|
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, {
|
|
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
|
-
|
|
70115
|
-
|
|
70116
|
-
|
|
70117
|
-
|
|
70118
|
-
|
|
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.
|
|
70408
|
-
BUILD_TIME = "2026-03-20T08:
|
|
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 = {};
|