arc402-cli 1.8.3 → 1.8.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/chat/harness.d.ts +1 -0
- package/dist/chat/harness.d.ts.map +1 -1
- package/dist/chat/harness.js +28 -3
- package/dist/chat/harness.js.map +1 -1
- package/dist/commands/arena-v2.js +1 -1
- package/dist/commands/arena-v2.js.map +1 -1
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +4 -3
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +22 -2
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/daemon.d.ts.map +1 -1
- package/dist/commands/daemon.js +57 -11
- package/dist/commands/daemon.js.map +1 -1
- package/dist/commands/openshell.d.ts.map +1 -1
- package/dist/commands/openshell.js +16 -5
- package/dist/commands/openshell.js.map +1 -1
- package/dist/commands/wallet.d.ts.map +1 -1
- package/dist/commands/wallet.js +69 -50
- package/dist/commands/wallet.js.map +1 -1
- package/dist/commands/workroom.d.ts.map +1 -1
- package/dist/commands/workroom.js +4 -2
- package/dist/commands/workroom.js.map +1 -1
- package/dist/config.d.ts +4 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +108 -13
- package/dist/config.js.map +1 -1
- package/dist/daemon/config.d.ts +1 -1
- package/dist/daemon/config.d.ts.map +1 -1
- package/dist/daemon/config.js +2 -2
- package/dist/daemon/config.js.map +1 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +60 -1
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/worker-executor.d.ts +1 -0
- package/dist/daemon/worker-executor.d.ts.map +1 -1
- package/dist/daemon/worker-executor.js +16 -1
- package/dist/daemon/worker-executor.js.map +1 -1
- package/dist/openshell-runtime.d.ts +6 -0
- package/dist/openshell-runtime.d.ts.map +1 -1
- package/dist/openshell-runtime.js +93 -4
- package/dist/openshell-runtime.js.map +1 -1
- package/dist/renderer/ThemedText.d.ts +2 -1
- package/dist/renderer/ThemedText.d.ts.map +1 -1
- package/dist/renderer/ThemedText.js +4 -1
- package/dist/renderer/ThemedText.js.map +1 -1
- package/dist/renderer/reconciler.d.ts.map +1 -1
- package/dist/renderer/reconciler.js +13 -1
- package/dist/renderer/reconciler.js.map +1 -1
- package/dist/tui/App.d.ts +3 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +44 -6
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/Header.d.ts.map +1 -1
- package/dist/tui/Header.js +2 -1
- package/dist/tui/Header.js.map +1 -1
- package/dist/tui/InputLine.d.ts.map +1 -1
- package/dist/tui/InputLine.js +2 -1
- package/dist/tui/InputLine.js.map +1 -1
- package/dist/tui/KernelPayloadRenderer.d.ts.map +1 -1
- package/dist/tui/KernelPayloadRenderer.js +17 -0
- package/dist/tui/KernelPayloadRenderer.js.map +1 -1
- package/dist/tui/Viewport.d.ts +4 -8
- package/dist/tui/Viewport.d.ts.map +1 -1
- package/dist/tui/Viewport.js +18 -28
- package/dist/tui/Viewport.js.map +1 -1
- package/dist/tui/command-catalog.d.ts.map +1 -1
- package/dist/tui/command-catalog.js +7 -2
- package/dist/tui/command-catalog.js.map +1 -1
- package/dist/tui/command-renderers.d.ts +20 -12
- package/dist/tui/command-renderers.d.ts.map +1 -1
- package/dist/tui/command-renderers.js +154 -37
- package/dist/tui/command-renderers.js.map +1 -1
- package/dist/tui/components/AnsiTextLine.d.ts +4 -0
- package/dist/tui/components/AnsiTextLine.d.ts.map +1 -0
- package/dist/tui/components/AnsiTextLine.js +92 -0
- package/dist/tui/components/AnsiTextLine.js.map +1 -0
- package/dist/tui/components/Button.js +1 -1
- package/dist/tui/components/Button.js.map +1 -1
- package/dist/tui/components/ChatHarnessSelector.d.ts.map +1 -1
- package/dist/tui/components/ChatHarnessSelector.js +4 -3
- package/dist/tui/components/ChatHarnessSelector.js.map +1 -1
- package/dist/tui/components/CompletionDropdown.d.ts.map +1 -1
- package/dist/tui/components/CompletionDropdown.js +4 -3
- package/dist/tui/components/CompletionDropdown.js.map +1 -1
- package/dist/tui/components/ConfirmPrompt.d.ts.map +1 -1
- package/dist/tui/components/ConfirmPrompt.js +2 -1
- package/dist/tui/components/ConfirmPrompt.js.map +1 -1
- package/dist/tui/components/commerce/FeedCard.d.ts +13 -0
- package/dist/tui/components/commerce/FeedCard.d.ts.map +1 -0
- package/dist/tui/components/commerce/FeedCard.js +26 -0
- package/dist/tui/components/commerce/FeedCard.js.map +1 -0
- package/dist/tui/components/commerce/JobStatusCard.d.ts +17 -0
- package/dist/tui/components/commerce/JobStatusCard.d.ts.map +1 -0
- package/dist/tui/components/commerce/JobStatusCard.js +11 -0
- package/dist/tui/components/commerce/JobStatusCard.js.map +1 -0
- package/dist/tui/components/commerce/RoundsList.js +1 -1
- package/dist/tui/components/commerce/RoundsList.js.map +1 -1
- package/dist/tui/components/commerce/StandingsCard.d.ts +13 -0
- package/dist/tui/components/commerce/StandingsCard.d.ts.map +1 -0
- package/dist/tui/components/commerce/StandingsCard.js +9 -0
- package/dist/tui/components/commerce/StandingsCard.js.map +1 -0
- package/dist/tui/components/commerce/StatusCard.d.ts.map +1 -1
- package/dist/tui/components/commerce/StatusCard.js +1 -2
- package/dist/tui/components/commerce/StatusCard.js.map +1 -1
- package/dist/tui/components/commerce/common.d.ts.map +1 -1
- package/dist/tui/components/commerce/common.js +13 -12
- package/dist/tui/components/commerce/common.js.map +1 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +3 -1
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/kernel-payload.d.ts +23 -0
- package/dist/tui/kernel-payload.d.ts.map +1 -1
- package/dist/tui/kernel.d.ts.map +1 -1
- package/dist/tui/kernel.js +350 -2
- package/dist/tui/kernel.js.map +1 -1
- package/dist/tui/useDaemonEvents.d.ts.map +1 -1
- package/dist/tui/useDaemonEvents.js +142 -44
- package/dist/tui/useDaemonEvents.js.map +1 -1
- package/dist/tui/viewport-measure.d.ts +28 -0
- package/dist/tui/viewport-measure.d.ts.map +1 -0
- package/dist/tui/viewport-measure.js +35 -0
- package/dist/tui/viewport-measure.js.map +1 -0
- package/dist/ui/rpc-fallback.d.ts.map +1 -1
- package/dist/ui/rpc-fallback.js +4 -5
- package/dist/ui/rpc-fallback.js.map +1 -1
- package/dist/walletconnect.d.ts +1 -0
- package/dist/walletconnect.d.ts.map +1 -1
- package/dist/walletconnect.js +207 -128
- package/dist/walletconnect.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,68 +1,166 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.useDaemonEvents = useDaemonEvents;
|
|
4
37
|
const react_1 = require("react");
|
|
38
|
+
const http = __importStar(require("http"));
|
|
39
|
+
const https = __importStar(require("https"));
|
|
5
40
|
const DAEMON_EVENTS_URL = "http://127.0.0.1:4402/events";
|
|
41
|
+
const DAEMON_HEALTH_URL = "http://127.0.0.1:4402/health";
|
|
42
|
+
function connectSse(urlString, onEvent, onDisconnect) {
|
|
43
|
+
const url = new URL(urlString);
|
|
44
|
+
const transport = url.protocol === "https:" ? https : http;
|
|
45
|
+
const req = transport.request({
|
|
46
|
+
protocol: url.protocol,
|
|
47
|
+
hostname: url.hostname,
|
|
48
|
+
port: url.port || (url.protocol === "https:" ? 443 : 80),
|
|
49
|
+
path: `${url.pathname}${url.search}`,
|
|
50
|
+
method: "GET",
|
|
51
|
+
headers: {
|
|
52
|
+
Accept: "text/event-stream",
|
|
53
|
+
Connection: "keep-alive",
|
|
54
|
+
"Cache-Control": "no-cache",
|
|
55
|
+
},
|
|
56
|
+
}, (res) => {
|
|
57
|
+
if ((res.statusCode ?? 500) >= 400) {
|
|
58
|
+
res.resume();
|
|
59
|
+
onDisconnect();
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
let buffer = "";
|
|
63
|
+
res.setEncoding("utf8");
|
|
64
|
+
res.on("data", (chunk) => {
|
|
65
|
+
buffer += chunk;
|
|
66
|
+
while (true) {
|
|
67
|
+
const boundary = buffer.indexOf("\n\n");
|
|
68
|
+
if (boundary === -1)
|
|
69
|
+
break;
|
|
70
|
+
const rawEvent = buffer.slice(0, boundary);
|
|
71
|
+
buffer = buffer.slice(boundary + 2);
|
|
72
|
+
const lines = rawEvent.split(/\r?\n/);
|
|
73
|
+
let type = "message";
|
|
74
|
+
const dataLines = [];
|
|
75
|
+
for (const line of lines) {
|
|
76
|
+
if (line.startsWith(":"))
|
|
77
|
+
continue;
|
|
78
|
+
if (line.startsWith("event:")) {
|
|
79
|
+
type = line.slice(6).trim();
|
|
80
|
+
}
|
|
81
|
+
else if (line.startsWith("data:")) {
|
|
82
|
+
dataLines.push(line.slice(5).trimStart());
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (!dataLines.length || type === "message")
|
|
86
|
+
continue;
|
|
87
|
+
try {
|
|
88
|
+
onEvent(type, JSON.parse(dataLines.join("\n")));
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
// ignore malformed event payloads
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
res.on("end", onDisconnect);
|
|
96
|
+
res.on("close", onDisconnect);
|
|
97
|
+
res.on("error", onDisconnect);
|
|
98
|
+
});
|
|
99
|
+
req.on("error", onDisconnect);
|
|
100
|
+
req.end();
|
|
101
|
+
return () => {
|
|
102
|
+
req.destroy();
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
function probeHealth(timeoutMs = 500) {
|
|
106
|
+
return new Promise((resolve) => {
|
|
107
|
+
const url = new URL(DAEMON_HEALTH_URL);
|
|
108
|
+
const transport = url.protocol === "https:" ? https : http;
|
|
109
|
+
const req = transport.request({
|
|
110
|
+
protocol: url.protocol,
|
|
111
|
+
hostname: url.hostname,
|
|
112
|
+
port: url.port || (url.protocol === "https:" ? 443 : 80),
|
|
113
|
+
path: `${url.pathname}${url.search}`,
|
|
114
|
+
method: "GET",
|
|
115
|
+
}, (res) => {
|
|
116
|
+
res.resume();
|
|
117
|
+
resolve((res.statusCode ?? 500) < 500);
|
|
118
|
+
});
|
|
119
|
+
req.on("error", () => resolve(false));
|
|
120
|
+
req.setTimeout(timeoutMs, () => {
|
|
121
|
+
req.destroy();
|
|
122
|
+
resolve(false);
|
|
123
|
+
});
|
|
124
|
+
req.end();
|
|
125
|
+
});
|
|
126
|
+
}
|
|
6
127
|
function useDaemonEvents(onEvent, enabled = true) {
|
|
7
128
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
8
129
|
const stableHandler = (0, react_1.useCallback)(onEvent, []);
|
|
9
130
|
(0, react_1.useEffect)(() => {
|
|
10
131
|
if (!enabled)
|
|
11
132
|
return;
|
|
12
|
-
let
|
|
133
|
+
let teardown = null;
|
|
13
134
|
let reconnectTimer = null;
|
|
14
135
|
let mounted = true;
|
|
15
|
-
const
|
|
136
|
+
const scheduleReconnect = () => {
|
|
137
|
+
if (!mounted || reconnectTimer)
|
|
138
|
+
return;
|
|
139
|
+
reconnectTimer = setTimeout(() => {
|
|
140
|
+
reconnectTimer = null;
|
|
141
|
+
void start();
|
|
142
|
+
}, 5000);
|
|
143
|
+
};
|
|
144
|
+
const start = async () => {
|
|
16
145
|
if (!mounted)
|
|
17
146
|
return;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return;
|
|
23
|
-
try {
|
|
24
|
-
const data = JSON.parse(e.data ?? "{}");
|
|
25
|
-
stableHandler(type, data);
|
|
26
|
-
}
|
|
27
|
-
catch { /* ignore malformed */ }
|
|
28
|
-
};
|
|
29
|
-
const eventTypes = [
|
|
30
|
-
"hire_proposed",
|
|
31
|
-
"agreement_accepted",
|
|
32
|
-
"deliverable_committed",
|
|
33
|
-
"job_started",
|
|
34
|
-
"job_completed",
|
|
35
|
-
"job_failed",
|
|
36
|
-
"security_threat",
|
|
37
|
-
"handshake_received",
|
|
38
|
-
"round_resolved",
|
|
39
|
-
];
|
|
40
|
-
for (const type of eventTypes) {
|
|
41
|
-
source.addEventListener(type, handleEvent(type));
|
|
42
|
-
}
|
|
43
|
-
source.onerror = () => {
|
|
44
|
-
source?.close();
|
|
45
|
-
source = null;
|
|
46
|
-
if (mounted) {
|
|
47
|
-
reconnectTimer = setTimeout(connect, 5000);
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
catch {
|
|
52
|
-
if (mounted)
|
|
53
|
-
reconnectTimer = setTimeout(connect, 5000);
|
|
147
|
+
const healthy = await probeHealth();
|
|
148
|
+
if (!healthy) {
|
|
149
|
+
scheduleReconnect();
|
|
150
|
+
return;
|
|
54
151
|
}
|
|
152
|
+
teardown = connectSse(DAEMON_EVENTS_URL, stableHandler, () => {
|
|
153
|
+
teardown?.();
|
|
154
|
+
teardown = null;
|
|
155
|
+
scheduleReconnect();
|
|
156
|
+
});
|
|
55
157
|
};
|
|
56
|
-
|
|
57
|
-
fetch("http://127.0.0.1:4402/health", { signal: AbortSignal.timeout(500) })
|
|
58
|
-
.then(() => { if (mounted)
|
|
59
|
-
connect(); })
|
|
60
|
-
.catch(() => { });
|
|
158
|
+
void start();
|
|
61
159
|
return () => {
|
|
62
160
|
mounted = false;
|
|
63
161
|
if (reconnectTimer)
|
|
64
162
|
clearTimeout(reconnectTimer);
|
|
65
|
-
|
|
163
|
+
teardown?.();
|
|
66
164
|
};
|
|
67
165
|
}, [enabled, stableHandler]);
|
|
68
166
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDaemonEvents.js","sourceRoot":"","sources":["../../src/tui/useDaemonEvents.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useDaemonEvents.js","sourceRoot":"","sources":["../../src/tui/useDaemonEvents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface LogicalViewportEntry<T = unknown> {
|
|
2
|
+
entry: T;
|
|
3
|
+
logicalLines: string[];
|
|
4
|
+
rowStart: number;
|
|
5
|
+
rowEnd: number;
|
|
6
|
+
}
|
|
7
|
+
export interface VisibleLogicalSegment<T = unknown> {
|
|
8
|
+
item: LogicalViewportEntry<T>;
|
|
9
|
+
sliceStart: number;
|
|
10
|
+
sliceEnd: number;
|
|
11
|
+
isFull: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function measureLogicalEntries<T>(items: Array<{
|
|
14
|
+
entry: T;
|
|
15
|
+
logicalLines: string[];
|
|
16
|
+
}>): {
|
|
17
|
+
measured: LogicalViewportEntry<T>[];
|
|
18
|
+
totalRows: number;
|
|
19
|
+
};
|
|
20
|
+
export declare function sliceVisibleLogicalEntries<T>(measured: LogicalViewportEntry<T>[], scrollOffset: number, viewportHeight: number): {
|
|
21
|
+
segments: VisibleLogicalSegment<T>[];
|
|
22
|
+
totalRows: number;
|
|
23
|
+
startRow: number;
|
|
24
|
+
endRow: number;
|
|
25
|
+
visibleRowCount: number;
|
|
26
|
+
padCount: number;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=viewport-measure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewport-measure.d.ts","sourceRoot":"","sources":["../../src/tui/viewport-measure.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAG,OAAO;IAC/C,KAAK,EAAE,CAAC,CAAC;IACT,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,GAAG,OAAO;IAChD,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,KAAK,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,CAAC,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GACjD;IAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAS5D;AAED,wBAAgB,0BAA0B,CAAC,CAAC,EAC1C,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,EACnC,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,GACrB;IACD,QAAQ,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAqBA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.measureLogicalEntries = measureLogicalEntries;
|
|
4
|
+
exports.sliceVisibleLogicalEntries = sliceVisibleLogicalEntries;
|
|
5
|
+
function measureLogicalEntries(items) {
|
|
6
|
+
let cursor = 0;
|
|
7
|
+
const measured = items.map(({ entry, logicalLines }) => {
|
|
8
|
+
const rowStart = cursor;
|
|
9
|
+
const rowEnd = rowStart + logicalLines.length;
|
|
10
|
+
cursor = rowEnd;
|
|
11
|
+
return { entry, logicalLines, rowStart, rowEnd };
|
|
12
|
+
});
|
|
13
|
+
return { measured, totalRows: cursor };
|
|
14
|
+
}
|
|
15
|
+
function sliceVisibleLogicalEntries(measured, scrollOffset, viewportHeight) {
|
|
16
|
+
const totalRows = measured.length > 0 ? measured[measured.length - 1].rowEnd : 0;
|
|
17
|
+
const endRow = Math.max(0, totalRows - scrollOffset);
|
|
18
|
+
const startRow = Math.max(0, endRow - viewportHeight);
|
|
19
|
+
const segments = measured.flatMap((item) => {
|
|
20
|
+
if (item.rowEnd <= startRow || item.rowStart >= endRow)
|
|
21
|
+
return [];
|
|
22
|
+
const sliceStart = Math.max(0, startRow - item.rowStart);
|
|
23
|
+
const sliceEnd = Math.min(item.logicalLines.length, endRow - item.rowStart);
|
|
24
|
+
return [{
|
|
25
|
+
item,
|
|
26
|
+
sliceStart,
|
|
27
|
+
sliceEnd,
|
|
28
|
+
isFull: sliceStart === 0 && sliceEnd === item.logicalLines.length,
|
|
29
|
+
}];
|
|
30
|
+
});
|
|
31
|
+
const visibleRowCount = segments.reduce((sum, segment) => sum + (segment.sliceEnd - segment.sliceStart), 0);
|
|
32
|
+
const padCount = Math.max(0, viewportHeight - visibleRowCount);
|
|
33
|
+
return { segments, totalRows, startRow, endRow, visibleRowCount, padCount };
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=viewport-measure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewport-measure.js","sourceRoot":"","sources":["../../src/tui/viewport-measure.ts"],"names":[],"mappings":";;AAcA,sDAWC;AAED,gEAgCC;AA7CD,SAAgB,qBAAqB,CACnC,KAAkD;IAElD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE;QACrD,MAAM,QAAQ,GAAG,MAAM,CAAC;QACxB,MAAM,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC;QAC9C,MAAM,GAAG,MAAM,CAAC;QAChB,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AACzC,CAAC;AAED,SAAgB,0BAA0B,CACxC,QAAmC,EACnC,YAAoB,EACpB,cAAsB;IAStB,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC;IAEtD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACzC,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,MAAM;YAAE,OAAO,EAAE,CAAC;QAClE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5E,OAAO,CAAC;gBACN,IAAI;gBACJ,UAAU;gBACV,QAAQ;gBACR,MAAM,EAAE,UAAU,KAAK,CAAC,IAAI,QAAQ,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM;aAClE,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5G,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,eAAe,CAAC,CAAC;IAE/D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC;AAC9E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-fallback.d.ts","sourceRoot":"","sources":["../../src/ui/rpc-fallback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"rpc-fallback.d.ts","sourceRoot":"","sources":["../../src/ui/rpc-fallback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAShC,8EAA8E;AAC9E,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,uCAAuC;AACvC,wBAAgB,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAIhD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EACtC,gBAAgB,EAAE,MAAM,EACxB,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,GACnD,OAAO,CAAC,CAAC,CAAC,CA4BZ"}
|
package/dist/ui/rpc-fallback.js
CHANGED
|
@@ -4,15 +4,12 @@ exports.isVerbose = isVerbose;
|
|
|
4
4
|
exports.verbose = verbose;
|
|
5
5
|
exports.callWithFallback = callWithFallback;
|
|
6
6
|
const ethers_1 = require("ethers");
|
|
7
|
+
const config_1 = require("../config");
|
|
7
8
|
/**
|
|
8
9
|
* Public RPC endpoints for Base mainnet, ordered by reliability.
|
|
9
10
|
* Used as fallbacks when the configured RPC fails on read-only calls.
|
|
10
11
|
*/
|
|
11
|
-
const BASE_FALLBACK_RPCS =
|
|
12
|
-
"https://base.llamarpc.com",
|
|
13
|
-
"https://base-rpc.publicnode.com",
|
|
14
|
-
"https://1rpc.io/base",
|
|
15
|
-
];
|
|
12
|
+
const BASE_FALLBACK_RPCS = (0, config_1.getBaseRpcPriority)();
|
|
16
13
|
/** Check if verbose mode is enabled via --verbose flag or ARC402_DEBUG env */
|
|
17
14
|
function isVerbose() {
|
|
18
15
|
return process.argv.includes("--verbose") || process.env.ARC402_DEBUG === "1";
|
|
@@ -41,6 +38,8 @@ async function callWithFallback(configuredRpcUrl, fn) {
|
|
|
41
38
|
}
|
|
42
39
|
// Try each fallback
|
|
43
40
|
for (const rpc of BASE_FALLBACK_RPCS) {
|
|
41
|
+
if (rpc === configuredRpcUrl)
|
|
42
|
+
continue;
|
|
44
43
|
try {
|
|
45
44
|
verbose(`Falling back to ${rpc}`);
|
|
46
45
|
const provider = new ethers_1.ethers.JsonRpcProvider(rpc);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-fallback.js","sourceRoot":"","sources":["../../src/ui/rpc-fallback.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"rpc-fallback.js","sourceRoot":"","sources":["../../src/ui/rpc-fallback.ts"],"names":[],"mappings":";;AAUA,8BAEC;AAGD,0BAIC;AAMD,4CA+BC;AAxDD,mCAAgC;AAChC,sCAA+C;AAE/C;;;GAGG;AACH,MAAM,kBAAkB,GAAG,IAAA,2BAAkB,GAAE,CAAC;AAEhD,8EAA8E;AAC9E,SAAgB,SAAS;IACvB,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,GAAG,CAAC;AAChF,CAAC;AAED,uCAAuC;AACvC,SAAgB,OAAO,CAAC,GAAG,IAAe;IACxC,IAAI,SAAS,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,gBAAgB,CACpC,gBAAwB,EACxB,EAAoD;IAEpD,2BAA2B;IAC3B,IAAI,CAAC;QACH,OAAO,CAAC,gBAAgB,gBAAgB,EAAE,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,eAAM,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,iBAAiB,gBAAgB,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3G,CAAC;IAED,oBAAoB;IACpB,KAAK,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACrC,IAAI,GAAG,KAAK,gBAAgB;YAAE,SAAS;QACvC,IAAI,CAAC;YACH,OAAO,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAI,eAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;YAClC,OAAO,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;YACxC,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,sBAAsB,GAAG,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjG,SAAS;QACX,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;AACjE,CAAC"}
|
package/dist/walletconnect.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"walletconnect.d.ts","sourceRoot":"","sources":["../src/walletconnect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAKxD,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"walletconnect.d.ts","sourceRoot":"","sources":["../src/walletconnect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAKxD,OAAO,EAAE,YAAY,EAAsB,MAAM,UAAU,CAAC;AAW5D,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAC5D,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,GAAG,iBAAiB,GAAG,OAAO,GAAG,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACjH,CAAC;AAGF,KAAK,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,KAAK,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAiF3D;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,YAAY,EACpB,IAAI,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,YAAY,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,WAAW,CAAA;CAAE,GACnG,OAAO,CAAC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA+KvE;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,SAAS,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C,OAAO,CAAC,MAAM,CAAC,CAyDjB;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1E,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,YAAY,EAC3B,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA6F9C"}
|