reasonix 0.43.0 → 0.44.0
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/README.md +49 -11
- package/README.zh-CN.md +35 -7
- package/dashboard/app.css +225 -4
- package/dashboard/dist/app.js +6441 -6080
- package/dashboard/dist/app.js.map +1 -1
- package/data/deepseek-tokenizer.json.gz +0 -0
- package/dist/cli/{acp-DAGPCVFZ.js → acp-TYZ2CTDL.js} +28 -30
- package/dist/cli/acp-TYZ2CTDL.js.map +1 -0
- package/dist/cli/chat-TH7VNNCJ.js +51 -0
- package/dist/cli/chunk-2425HK6U.js +0 -0
- package/dist/cli/chunk-25T6CVUP.js +0 -0
- package/dist/cli/chunk-2UQP6H6T.js +0 -0
- package/dist/cli/{chunk-3Z6IBU3D.js → chunk-2V6EAEUW.js} +95 -31
- package/dist/cli/chunk-2V6EAEUW.js.map +1 -0
- package/dist/cli/{chunk-XCGGEJTI.js → chunk-4CTDEJUF.js} +2 -2
- package/dist/cli/chunk-4QUNBQQ2.js +0 -0
- package/dist/cli/{chunk-74EX7SUH.js → chunk-5QCB62C4.js} +33 -7
- package/dist/cli/{chunk-74EX7SUH.js.map → chunk-5QCB62C4.js.map} +1 -1
- package/dist/cli/chunk-6OWJV3YW.js +390 -0
- package/dist/cli/chunk-6OWJV3YW.js.map +1 -0
- package/dist/cli/chunk-6PBZN4VI.js +0 -0
- package/dist/cli/{chunk-7O5ALB4C.js → chunk-7CIGMZT3.js} +2 -2
- package/dist/cli/{chunk-H6PS7IUE.js → chunk-7UCMM425.js} +7 -3
- package/dist/cli/chunk-7UCMM425.js.map +1 -0
- package/dist/cli/{chunk-TJX6BFZZ.js → chunk-AB2RED3C.js} +3 -3
- package/dist/cli/{chunk-XPDVG52A.js → chunk-AVFXO2EZ.js} +361 -13
- package/dist/cli/chunk-AVFXO2EZ.js.map +1 -0
- package/dist/cli/{chunk-FHOGSSCH.js → chunk-C53JQES5.js} +3 -3
- package/dist/cli/{chunk-RE4RAVFF.js → chunk-CGDR2ELH.js} +92 -30
- package/dist/cli/chunk-CGDR2ELH.js.map +1 -0
- package/dist/cli/{chunk-OSZC7C6F.js → chunk-CWZKQ5FE.js} +7 -4
- package/dist/cli/chunk-CWZKQ5FE.js.map +1 -0
- package/dist/cli/{devtools-YECO25QO.js → chunk-FEZK652I.js} +10 -85
- package/dist/cli/chunk-FEZK652I.js.map +1 -0
- package/dist/cli/{chunk-45U62RI3.js → chunk-HNXDZGC6.js} +104 -2
- package/dist/cli/chunk-HNXDZGC6.js.map +1 -0
- package/dist/cli/chunk-J5XJHLWM.js +0 -0
- package/dist/cli/chunk-JMBMLOBP.js +0 -0
- package/dist/cli/{chunk-5JJRUIPA.js → chunk-JNAQYELD.js} +16 -8
- package/dist/cli/{chunk-5JJRUIPA.js.map → chunk-JNAQYELD.js.map} +1 -1
- package/dist/cli/{chunk-YFGF5NKA.js → chunk-KGBG6M2X.js} +19 -15
- package/dist/cli/chunk-KGBG6M2X.js.map +1 -0
- package/dist/cli/{chunk-3BXRZFWS.js → chunk-KLQTAZIY.js} +12 -4
- package/dist/cli/chunk-KLQTAZIY.js.map +1 -0
- package/dist/cli/{chunk-VK5HG73G.js → chunk-KM465GST.js} +9 -9
- package/dist/cli/{chunk-DOYHN4KB.js → chunk-LIR2HBQH.js} +2 -2
- package/dist/cli/{chunk-YYQAUTTN.js → chunk-MJ6W5UN3.js} +2 -2
- package/dist/cli/{chunk-6PZ3CXBP.js → chunk-MRHHQJAQ.js} +5 -4
- package/dist/cli/chunk-MRHHQJAQ.js.map +1 -0
- package/dist/cli/{chunk-PQXPXJBJ.js → chunk-NVURFF27.js} +16 -5
- package/dist/cli/chunk-NVURFF27.js.map +1 -0
- package/dist/cli/{chunk-2R4QCDOZ.js → chunk-OPFUUYHL.js} +540 -287
- package/dist/cli/chunk-OPFUUYHL.js.map +1 -0
- package/dist/cli/chunk-PLHAZOLZ.js +0 -0
- package/dist/cli/{chunk-HFEAY5DT.js → chunk-R3CTO2HM.js} +2 -2
- package/dist/cli/{chunk-O52OLQL3.js → chunk-RDRC3XDT.js} +136 -38
- package/dist/cli/chunk-RDRC3XDT.js.map +1 -0
- package/dist/cli/chunk-S4XVGLRW.js +0 -0
- package/dist/cli/chunk-SZ5XES2N.js +0 -0
- package/dist/cli/{chunk-2K65GZBT.js → chunk-TEUDEGX2.js} +64 -19
- package/dist/cli/chunk-TEUDEGX2.js.map +1 -0
- package/dist/cli/{chunk-2Z35JOA4.js → chunk-TKVXTQ3T.js} +4 -4
- package/dist/cli/{chunk-2Z35JOA4.js.map → chunk-TKVXTQ3T.js.map} +1 -1
- package/dist/cli/chunk-TUK7OWJA.js +0 -0
- package/dist/cli/{chunk-32TIKD5U.js → chunk-TXJMRPIL.js} +3 -3
- package/dist/cli/{chunk-2KDUS647.js → chunk-V26WPN3J.js} +7 -4
- package/dist/cli/chunk-V26WPN3J.js.map +1 -0
- package/dist/cli/{chunk-F3PXYSNN.js → chunk-WK3UFQY3.js} +2 -2
- package/dist/cli/{chunk-6G3CUUFG.js → chunk-X53B3JIX.js} +3 -3
- package/dist/cli/{chunk-6G3CUUFG.js.map → chunk-X53B3JIX.js.map} +1 -1
- package/dist/cli/chunk-XJXDHAES.js +0 -0
- package/dist/cli/{chunk-6AK4EY3D.js → chunk-XSU4QVFW.js} +1 -81
- package/dist/cli/chunk-XSU4QVFW.js.map +1 -0
- package/dist/cli/chunk-XXC2BYTV.js +0 -0
- package/dist/cli/{chunk-P7EKE5ZQ.js → chunk-Z4S7EYXG.js} +4482 -1310
- package/dist/cli/chunk-Z4S7EYXG.js.map +1 -0
- package/dist/cli/chunk-ZZM6QJ4W.js +0 -0
- package/dist/cli/{chunk-YQ6NTIIE.js → chunk-ZZYBBX5N.js} +13 -5
- package/dist/cli/chunk-ZZYBBX5N.js.map +1 -0
- package/dist/cli/{code-SMKEW6CD.js → code-PSVJ3KEN.js} +48 -36
- package/dist/cli/code-PSVJ3KEN.js.map +1 -0
- package/dist/cli/{commands-FVVB5FZF.js → commands-OCU42XG4.js} +4 -4
- package/dist/cli/{commit-HE4VSPZ7.js → commit-XCQIQCYG.js} +3 -3
- package/dist/cli/{desktop-Q7NDXCON.js → desktop-KWGR4BNE.js} +210 -69
- package/dist/cli/desktop-KWGR4BNE.js.map +1 -0
- package/dist/cli/devtools-HW3WDT3Q.js +91 -0
- package/dist/cli/devtools-HW3WDT3Q.js.map +1 -0
- package/dist/cli/{diff-435UTPC5.js → diff-NHANTNC3.js} +9 -9
- package/dist/cli/{doctor-OT7KH75K.js → doctor-CC5CLOGG.js} +10 -10
- package/dist/cli/events-XEFAD5VX.js +0 -0
- package/dist/cli/index.js +132 -94
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/{mcp-WUL2WO75.js → mcp-MPVGBBJF.js} +2 -2
- package/dist/cli/{mcp-browse-RR7R4XET.js → mcp-browse-4XOTC3FJ.js} +3 -3
- package/dist/cli/{mcp-inspect-REGLYBWT.js → mcp-inspect-CEMGKKAH.js} +14 -9
- package/dist/cli/mcp-inspect-CEMGKKAH.js.map +1 -0
- package/dist/cli/{prompt-UW6EFLVR.js → prompt-2D7ID24X.js} +4 -4
- package/dist/cli/prune-sessions-3RWUBYRS.js +0 -0
- package/dist/cli/{replay-YOURXV4C.js → replay-SR44E6RS.js} +10 -10
- package/dist/cli/{run-Q6BUXV66.js → run-MDGL27WL.js} +35 -36
- package/dist/cli/run-MDGL27WL.js.map +1 -0
- package/dist/cli/{server-XGDBRWMB.js → server-27ARQXIZ.js} +67 -24
- package/dist/cli/server-27ARQXIZ.js.map +1 -0
- package/dist/cli/{sessions-FH7QVYSY.js → sessions-CKQXCYGP.js} +18 -18
- package/dist/cli/sessions-CKQXCYGP.js.map +1 -0
- package/dist/cli/{setup-VDS6SVEP.js → setup-TPAGSVXO.js} +6 -6
- package/dist/cli/{stats-MQVI2XQH.js → stats-DPUBZNVX.js} +6 -4
- package/dist/cli/update-6ITLPRDV.js +0 -0
- package/dist/cli/{version-DAHGZY5N.js → version-2X3BHVVK.js} +15 -15
- package/dist/index.d.ts +181 -53
- package/dist/index.js +1322 -533
- package/dist/index.js.map +1 -1
- package/package.json +21 -8
- package/dist/cli/.-3G6VX5S7.js +0 -327
- package/dist/cli/.-6YRPB2C7.js +0 -329
- package/dist/cli/.-EYSVINK3.js +0 -317
- package/dist/cli/acp-DAGPCVFZ.js.map +0 -1
- package/dist/cli/chat-7ES4IBNH.js +0 -50
- package/dist/cli/chunk-2K65GZBT.js.map +0 -1
- package/dist/cli/chunk-2KDUS647.js.map +0 -1
- package/dist/cli/chunk-2R4QCDOZ.js.map +0 -1
- package/dist/cli/chunk-3BXRZFWS.js.map +0 -1
- package/dist/cli/chunk-3Z6IBU3D.js.map +0 -1
- package/dist/cli/chunk-45U62RI3.js.map +0 -1
- package/dist/cli/chunk-6AK4EY3D.js.map +0 -1
- package/dist/cli/chunk-6PZ3CXBP.js.map +0 -1
- package/dist/cli/chunk-H6PS7IUE.js.map +0 -1
- package/dist/cli/chunk-O52OLQL3.js.map +0 -1
- package/dist/cli/chunk-OSZC7C6F.js.map +0 -1
- package/dist/cli/chunk-P7EKE5ZQ.js.map +0 -1
- package/dist/cli/chunk-PQXPXJBJ.js.map +0 -1
- package/dist/cli/chunk-PV55UMTO.js +0 -200
- package/dist/cli/chunk-PV55UMTO.js.map +0 -1
- package/dist/cli/chunk-RE4RAVFF.js.map +0 -1
- package/dist/cli/chunk-XPDVG52A.js.map +0 -1
- package/dist/cli/chunk-YFGF5NKA.js.map +0 -1
- package/dist/cli/chunk-YQ6NTIIE.js.map +0 -1
- package/dist/cli/code-SMKEW6CD.js.map +0 -1
- package/dist/cli/desktop-Q7NDXCON.js.map +0 -1
- package/dist/cli/devtools-YECO25QO.js.map +0 -1
- package/dist/cli/doctor-OT7KH75K.js.map +0 -1
- package/dist/cli/mcp-inspect-REGLYBWT.js.map +0 -1
- package/dist/cli/prompt-UW6EFLVR.js.map +0 -1
- package/dist/cli/run-Q6BUXV66.js.map +0 -1
- package/dist/cli/server-XGDBRWMB.js.map +0 -1
- package/dist/cli/sessions-FH7QVYSY.js.map +0 -1
- package/dist/cli/stats-MQVI2XQH.js.map +0 -1
- /package/dist/cli/{.-3G6VX5S7.js.map → chat-TH7VNNCJ.js.map} +0 -0
- /package/dist/cli/{chunk-XCGGEJTI.js.map → chunk-4CTDEJUF.js.map} +0 -0
- /package/dist/cli/{chunk-7O5ALB4C.js.map → chunk-7CIGMZT3.js.map} +0 -0
- /package/dist/cli/{chunk-TJX6BFZZ.js.map → chunk-AB2RED3C.js.map} +0 -0
- /package/dist/cli/{chunk-FHOGSSCH.js.map → chunk-C53JQES5.js.map} +0 -0
- /package/dist/cli/{chunk-VK5HG73G.js.map → chunk-KM465GST.js.map} +0 -0
- /package/dist/cli/{chunk-DOYHN4KB.js.map → chunk-LIR2HBQH.js.map} +0 -0
- /package/dist/cli/{chunk-YYQAUTTN.js.map → chunk-MJ6W5UN3.js.map} +0 -0
- /package/dist/cli/{chunk-HFEAY5DT.js.map → chunk-R3CTO2HM.js.map} +0 -0
- /package/dist/cli/{chunk-32TIKD5U.js.map → chunk-TXJMRPIL.js.map} +0 -0
- /package/dist/cli/{chunk-F3PXYSNN.js.map → chunk-WK3UFQY3.js.map} +0 -0
- /package/dist/cli/{commands-FVVB5FZF.js.map → commands-OCU42XG4.js.map} +0 -0
- /package/dist/cli/{commit-HE4VSPZ7.js.map → commit-XCQIQCYG.js.map} +0 -0
- /package/dist/cli/{diff-435UTPC5.js.map → diff-NHANTNC3.js.map} +0 -0
- /package/dist/cli/{.-6YRPB2C7.js.map → doctor-CC5CLOGG.js.map} +0 -0
- /package/dist/cli/{mcp-WUL2WO75.js.map → mcp-MPVGBBJF.js.map} +0 -0
- /package/dist/cli/{mcp-browse-RR7R4XET.js.map → mcp-browse-4XOTC3FJ.js.map} +0 -0
- /package/dist/cli/{.-EYSVINK3.js.map → prompt-2D7ID24X.js.map} +0 -0
- /package/dist/cli/{replay-YOURXV4C.js.map → replay-SR44E6RS.js.map} +0 -0
- /package/dist/cli/{setup-VDS6SVEP.js.map → setup-TPAGSVXO.js.map} +0 -0
- /package/dist/cli/{chat-7ES4IBNH.js.map → stats-DPUBZNVX.js.map} +0 -0
- /package/dist/cli/{version-DAHGZY5N.js.map → version-2X3BHVVK.js.map} +0 -0
|
@@ -7,7 +7,10 @@ import {
|
|
|
7
7
|
defaultUsageLogPath,
|
|
8
8
|
formatLogSize,
|
|
9
9
|
readUsageLog
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-R3CTO2HM.js";
|
|
11
|
+
import {
|
|
12
|
+
t
|
|
13
|
+
} from "./chunk-CGDR2ELH.js";
|
|
11
14
|
|
|
12
15
|
// src/cli/commands/stats.ts
|
|
13
16
|
import { existsSync, readFileSync } from "fs";
|
|
@@ -49,8 +52,8 @@ function dashboard(opts) {
|
|
|
49
52
|
console.log("");
|
|
50
53
|
console.log(` ${path}`);
|
|
51
54
|
console.log("");
|
|
52
|
-
console.log("
|
|
53
|
-
console.log("
|
|
55
|
+
console.log(t("stats.usageHint"));
|
|
56
|
+
console.log(t("stats.usageDetail"));
|
|
54
57
|
return;
|
|
55
58
|
}
|
|
56
59
|
const agg = aggregateUsage(records, { now: opts.now });
|
|
@@ -147,4 +150,4 @@ export {
|
|
|
147
150
|
statsCommand,
|
|
148
151
|
renderDashboard
|
|
149
152
|
};
|
|
150
|
-
//# sourceMappingURL=chunk-
|
|
153
|
+
//# sourceMappingURL=chunk-CWZKQ5FE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cli/commands/stats.ts"],"sourcesContent":["/** `reasonix stats [path]` — path arg switches to per-transcript mode; default is the cross-session dashboard. */\n\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { t } from \"../../i18n/index.js\";\nimport {\n type UsageAggregate,\n type UsageBucket,\n aggregateUsage,\n bucketCacheHitRatio,\n bucketSavingsFraction,\n defaultUsageLogPath,\n formatLogSize,\n readUsageLog,\n} from \"../../telemetry/usage.js\";\n\nexport interface StatsOptions {\n /** Optional transcript path. Absent → dashboard mode. */\n transcript?: string;\n /** Override usage log location (tests). */\n logPath?: string;\n /** Inject a fixed timestamp (tests) so rolling windows are deterministic. */\n now?: number;\n}\n\nexport function statsCommand(opts: StatsOptions): void {\n if (opts.transcript) {\n transcriptSummary(opts.transcript);\n return;\n }\n dashboard(opts);\n}\n\nfunction transcriptSummary(path: string): void {\n if (!existsSync(path)) {\n console.error(`no such transcript: ${path}`);\n process.exit(1);\n }\n const lines = readFileSync(path, \"utf8\").split(/\\r?\\n/).filter(Boolean);\n let assistantTurns = 0;\n let toolCalls = 0;\n let lastTurn = 0;\n for (const line of lines) {\n try {\n const rec = JSON.parse(line);\n if (rec.role === \"assistant_final\") assistantTurns++;\n if (rec.role === \"tool\") toolCalls++;\n if (typeof rec.turn === \"number\") lastTurn = Math.max(lastTurn, rec.turn);\n } catch {\n /* skip */\n }\n }\n console.log(`transcript: ${path}`);\n console.log(`assistant turns: ${assistantTurns}`);\n console.log(`tool invocations: ${toolCalls}`);\n console.log(`last turn index: ${lastTurn}`);\n}\n\nfunction dashboard(opts: StatsOptions): void {\n const path = opts.logPath ?? defaultUsageLogPath();\n const records = readUsageLog(path);\n if (records.length === 0) {\n console.log(\"no usage data yet.\");\n console.log(\"\");\n console.log(` ${path}`);\n console.log(\"\");\n console.log(t(\"stats.usageHint\"));\n console.log(t(\"stats.usageDetail\"));\n return;\n }\n\n const agg = aggregateUsage(records, { now: opts.now });\n console.log(renderDashboard(agg, path));\n}\n\n/** Pure renderer — pulled out so tests can assert on the string directly. */\nexport function renderDashboard(agg: UsageAggregate, logPath: string): string {\n const lines: string[] = [];\n const size = formatLogSize(logPath);\n lines.push(`Reasonix usage — ${logPath}${size ? ` (${size})` : \"\"}`);\n lines.push(\"\");\n lines.push(header());\n lines.push(divider());\n for (const b of agg.buckets) {\n lines.push(bucketRow(b));\n }\n lines.push(\"\");\n\n // Model + session breakdown — both trim to top 3 so a user with 20\n // sessions doesn't drown the table.\n if (agg.byModel.length > 0) {\n const totalTurns = agg.buckets[agg.buckets.length - 1]?.turns ?? 0;\n const top = agg.byModel[0];\n if (top && totalTurns > 0) {\n const pct = ((top.turns / totalTurns) * 100).toFixed(0);\n lines.push(`most used model: ${top.model} (${pct}% of turns)`);\n }\n }\n if (agg.bySession.length > 0) {\n const top = agg.bySession[0];\n if (top) lines.push(`top session: ${top.session} (${top.turns} turns)`);\n }\n if (agg.firstSeen) {\n lines.push(`tracked since: ${new Date(agg.firstSeen).toISOString().slice(0, 10)}`);\n }\n if (agg.subagents) {\n lines.push(\"\");\n lines.push(renderSubagentSection(agg.subagents));\n }\n return lines.join(\"\\n\");\n}\n\nfunction renderSubagentSection(sub: NonNullable<UsageAggregate[\"subagents\"]>): string {\n const lines: string[] = [];\n const seconds = (sub.totalDurationMs / 1000).toFixed(1);\n lines.push(\n `subagent activity: ${sub.total} run(s) · $${sub.costUsd.toFixed(6)} · ${seconds}s total`,\n );\n // Show at most 5 skills so the section never dwarfs the main table.\n const top = sub.bySkill.slice(0, 5);\n for (const s of top) {\n const sec = (s.durationMs / 1000).toFixed(1);\n lines.push(\n ` ${pad(s.skillName, 18)} ${pad(`${s.count}`, 4, \"right\")} $${s.costUsd.toFixed(6)} ${sec}s`,\n );\n }\n if (sub.bySkill.length > top.length) {\n lines.push(` (+${sub.bySkill.length - top.length} more)`);\n }\n return lines.join(\"\\n\");\n}\n\nfunction header(): string {\n // Fixed column widths so alignment works in any TTY.\n // `cache saved` reports DeepSeek's hit-vs-miss USD diff; the existing\n // `saved` column is the % saved vs Claude-Sonnet equivalent.\n return [\n pad(\"\", 10),\n pad(\"turns\", 8, \"right\"),\n pad(\"cache hit\", 10, \"right\"),\n pad(\"cost (USD)\", 14, \"right\"),\n pad(\"cache saved\", 14, \"right\"),\n pad(\"vs Claude\", 14, \"right\"),\n pad(\"saved\", 10, \"right\"),\n ].join(\" \");\n}\n\nfunction divider(): string {\n return \"-\".repeat(86);\n}\n\nfunction bucketRow(b: UsageBucket): string {\n const hit = bucketCacheHitRatio(b);\n const savings = bucketSavingsFraction(b);\n return [\n pad(b.label, 10),\n pad(b.turns.toString(), 8, \"right\"),\n pad(b.turns > 0 ? `${(hit * 100).toFixed(1)}%` : \"—\", 10, \"right\"),\n pad(b.turns > 0 ? `$${b.costUsd.toFixed(6)}` : \"—\", 14, \"right\"),\n pad(\n b.turns > 0 && b.cacheSavingsUsd > 0 ? `$${b.cacheSavingsUsd.toFixed(4)}` : \"—\",\n 14,\n \"right\",\n ),\n pad(b.turns > 0 ? `$${b.claudeEquivUsd.toFixed(4)}` : \"—\", 14, \"right\"),\n pad(b.turns > 0 && savings > 0 ? `${(savings * 100).toFixed(1)}%` : \"—\", 10, \"right\"),\n ].join(\" \");\n}\n\nfunction pad(s: string, width: number, align: \"left\" | \"right\" = \"left\"): string {\n if (s.length >= width) return s;\n const fill = \" \".repeat(width - s.length);\n return align === \"right\" ? `${fill}${s}` : `${s}${fill}`;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1336,6 +1336,9 @@ var require_sender = __commonJS({
|
|
|
1336
1336
|
"use strict";
|
|
1337
1337
|
var { Duplex } = __require("stream");
|
|
1338
1338
|
var { randomFillSync } = __require("crypto");
|
|
1339
|
+
var {
|
|
1340
|
+
types: { isUint8Array }
|
|
1341
|
+
} = __require("util");
|
|
1339
1342
|
var PerMessageDeflate2 = require_permessage_deflate();
|
|
1340
1343
|
var { EMPTY_BUFFER, kWebSocket, NOOP } = require_constants();
|
|
1341
1344
|
var { isBlob, isValidStatusCode } = require_validation();
|
|
@@ -1489,8 +1492,10 @@ var require_sender = __commonJS({
|
|
|
1489
1492
|
buf.writeUInt16BE(code, 0);
|
|
1490
1493
|
if (typeof data === "string") {
|
|
1491
1494
|
buf.write(data, 2);
|
|
1492
|
-
} else {
|
|
1495
|
+
} else if (isUint8Array(data)) {
|
|
1493
1496
|
buf.set(data, 2);
|
|
1497
|
+
} else {
|
|
1498
|
+
throw new TypeError("Second argument must be a string or a Uint8Array");
|
|
1494
1499
|
}
|
|
1495
1500
|
}
|
|
1496
1501
|
const options = {
|
|
@@ -3633,87 +3638,7 @@ var import_websocket = __toESM(require_websocket(), 1);
|
|
|
3633
3638
|
var import_websocket_server = __toESM(require_websocket_server(), 1);
|
|
3634
3639
|
var wrapper_default = import_websocket.default;
|
|
3635
3640
|
|
|
3636
|
-
|
|
3637
|
-
|
|
3638
|
-
|
|
3639
|
-
|
|
3640
|
-
customGlobal.self ||= globalThis;
|
|
3641
|
-
customGlobal.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__ = [
|
|
3642
|
-
{
|
|
3643
|
-
// ComponentFilterElementType
|
|
3644
|
-
type: 1,
|
|
3645
|
-
// ElementTypeHostComponent
|
|
3646
|
-
value: 7,
|
|
3647
|
-
isEnabled: true
|
|
3648
|
-
},
|
|
3649
|
-
{
|
|
3650
|
-
// ComponentFilterDisplayName
|
|
3651
|
-
type: 2,
|
|
3652
|
-
value: "InternalApp",
|
|
3653
|
-
isEnabled: true,
|
|
3654
|
-
isValid: true
|
|
3655
|
-
},
|
|
3656
|
-
{
|
|
3657
|
-
// ComponentFilterDisplayName
|
|
3658
|
-
type: 2,
|
|
3659
|
-
value: "InternalAppContext",
|
|
3660
|
-
isEnabled: true,
|
|
3661
|
-
isValid: true
|
|
3662
|
-
},
|
|
3663
|
-
{
|
|
3664
|
-
// ComponentFilterDisplayName
|
|
3665
|
-
type: 2,
|
|
3666
|
-
value: "InternalStdoutContext",
|
|
3667
|
-
isEnabled: true,
|
|
3668
|
-
isValid: true
|
|
3669
|
-
},
|
|
3670
|
-
{
|
|
3671
|
-
// ComponentFilterDisplayName
|
|
3672
|
-
type: 2,
|
|
3673
|
-
value: "InternalStderrContext",
|
|
3674
|
-
isEnabled: true,
|
|
3675
|
-
isValid: true
|
|
3676
|
-
},
|
|
3677
|
-
{
|
|
3678
|
-
// ComponentFilterDisplayName
|
|
3679
|
-
type: 2,
|
|
3680
|
-
value: "InternalStdinContext",
|
|
3681
|
-
isEnabled: true,
|
|
3682
|
-
isValid: true
|
|
3683
|
-
},
|
|
3684
|
-
{
|
|
3685
|
-
// ComponentFilterDisplayName
|
|
3686
|
-
type: 2,
|
|
3687
|
-
value: "InternalFocusContext",
|
|
3688
|
-
isEnabled: true,
|
|
3689
|
-
isValid: true
|
|
3690
|
-
}
|
|
3691
|
-
];
|
|
3692
|
-
|
|
3693
|
-
// node_modules/ink/build/devtools.js
|
|
3694
|
-
import devtools from "react-devtools-core";
|
|
3695
|
-
var isDevToolsReachable = async () => new Promise((resolve) => {
|
|
3696
|
-
const socket = new wrapper_default("ws://localhost:8097");
|
|
3697
|
-
const timeout = setTimeout(() => {
|
|
3698
|
-
socket.terminate();
|
|
3699
|
-
resolve(false);
|
|
3700
|
-
}, 2e3);
|
|
3701
|
-
timeout.unref();
|
|
3702
|
-
socket.on("open", () => {
|
|
3703
|
-
clearTimeout(timeout);
|
|
3704
|
-
socket.terminate();
|
|
3705
|
-
resolve(true);
|
|
3706
|
-
});
|
|
3707
|
-
socket.on("error", () => {
|
|
3708
|
-
clearTimeout(timeout);
|
|
3709
|
-
socket.terminate();
|
|
3710
|
-
resolve(false);
|
|
3711
|
-
});
|
|
3712
|
-
});
|
|
3713
|
-
if (await isDevToolsReachable()) {
|
|
3714
|
-
devtools.initialize();
|
|
3715
|
-
devtools.connectToDevTools();
|
|
3716
|
-
} else {
|
|
3717
|
-
console.warn("DEV is set to true, but the React DevTools server is not running. Start it with:\n\n$ npx react-devtools\n");
|
|
3718
|
-
}
|
|
3719
|
-
//# sourceMappingURL=devtools-YECO25QO.js.map
|
|
3641
|
+
export {
|
|
3642
|
+
wrapper_default
|
|
3643
|
+
};
|
|
3644
|
+
//# sourceMappingURL=chunk-FEZK652I.js.map
|