@aaronbassett/midnight-local-devnet 0.1.2 → 0.2.1
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 +44 -5
- package/dist/cli/commands/dashboard.d.ts +3 -0
- package/dist/cli/commands/dashboard.js +20 -0
- package/dist/cli/commands/dashboard.js.map +1 -0
- package/dist/cli/commands/interactive.d.ts +3 -0
- package/dist/cli/commands/interactive.js +16 -0
- package/dist/cli/commands/interactive.js.map +1 -0
- package/dist/cli/dashboard/app.d.ts +9 -0
- package/dist/cli/dashboard/app.js +106 -0
- package/dist/cli/dashboard/app.js.map +1 -0
- package/dist/cli/dashboard/components/gauge.d.ts +9 -0
- package/dist/cli/dashboard/components/gauge.js +10 -0
- package/dist/cli/dashboard/components/gauge.js.map +1 -0
- package/dist/cli/dashboard/components/panel-box.d.ts +10 -0
- package/dist/cli/dashboard/components/panel-box.js +6 -0
- package/dist/cli/dashboard/components/panel-box.js.map +1 -0
- package/dist/cli/dashboard/components/sparkline.d.ts +9 -0
- package/dist/cli/dashboard/components/sparkline.js +25 -0
- package/dist/cli/dashboard/components/sparkline.js.map +1 -0
- package/dist/cli/dashboard/components/status-badge.d.ts +6 -0
- package/dist/cli/dashboard/components/status-badge.js +24 -0
- package/dist/cli/dashboard/components/status-badge.js.map +1 -0
- package/dist/cli/dashboard/hooks/use-breakpoint.d.ts +7 -0
- package/dist/cli/dashboard/hooks/use-breakpoint.js +15 -0
- package/dist/cli/dashboard/hooks/use-breakpoint.js.map +1 -0
- package/dist/cli/dashboard/hooks/use-health.d.ts +9 -0
- package/dist/cli/dashboard/hooks/use-health.js +35 -0
- package/dist/cli/dashboard/hooks/use-health.js.map +1 -0
- package/dist/cli/dashboard/hooks/use-indexer-info.d.ts +5 -0
- package/dist/cli/dashboard/hooks/use-indexer-info.js +19 -0
- package/dist/cli/dashboard/hooks/use-indexer-info.js.map +1 -0
- package/dist/cli/dashboard/hooks/use-logs.d.ts +19 -0
- package/dist/cli/dashboard/hooks/use-logs.js +55 -0
- package/dist/cli/dashboard/hooks/use-logs.js.map +1 -0
- package/dist/cli/dashboard/hooks/use-node-info.d.ts +21 -0
- package/dist/cli/dashboard/hooks/use-node-info.js +49 -0
- package/dist/cli/dashboard/hooks/use-node-info.js.map +1 -0
- package/dist/cli/dashboard/hooks/use-polling.d.ts +7 -0
- package/dist/cli/dashboard/hooks/use-polling.js +35 -0
- package/dist/cli/dashboard/hooks/use-polling.js.map +1 -0
- package/dist/cli/dashboard/hooks/use-proof-server.d.ts +7 -0
- package/dist/cli/dashboard/hooks/use-proof-server.js +14 -0
- package/dist/cli/dashboard/hooks/use-proof-server.js.map +1 -0
- package/dist/cli/dashboard/hooks/use-services.d.ts +3 -0
- package/dist/cli/dashboard/hooks/use-services.js +6 -0
- package/dist/cli/dashboard/hooks/use-services.js.map +1 -0
- package/dist/cli/dashboard/hooks/use-terminal-size.d.ts +5 -0
- package/dist/cli/dashboard/hooks/use-terminal-size.js +22 -0
- package/dist/cli/dashboard/hooks/use-terminal-size.js.map +1 -0
- package/dist/cli/dashboard/hooks/use-wallet-state.d.ts +10 -0
- package/dist/cli/dashboard/hooks/use-wallet-state.js +63 -0
- package/dist/cli/dashboard/hooks/use-wallet-state.js.map +1 -0
- package/dist/cli/dashboard/layouts/large.d.ts +7 -0
- package/dist/cli/dashboard/layouts/large.js +13 -0
- package/dist/cli/dashboard/layouts/large.js.map +1 -0
- package/dist/cli/dashboard/layouts/medium.d.ts +7 -0
- package/dist/cli/dashboard/layouts/medium.js +11 -0
- package/dist/cli/dashboard/layouts/medium.js.map +1 -0
- package/dist/cli/dashboard/layouts/small.d.ts +7 -0
- package/dist/cli/dashboard/layouts/small.js +11 -0
- package/dist/cli/dashboard/layouts/small.js.map +1 -0
- package/dist/cli/dashboard/lib/log-parser.d.ts +15 -0
- package/dist/cli/dashboard/lib/log-parser.js +44 -0
- package/dist/cli/dashboard/lib/log-parser.js.map +1 -0
- package/dist/cli/dashboard/lib/proof-server-api.d.ts +15 -0
- package/dist/cli/dashboard/lib/proof-server-api.js +48 -0
- package/dist/cli/dashboard/lib/proof-server-api.js.map +1 -0
- package/dist/cli/dashboard/lib/substrate-rpc.d.ts +16 -0
- package/dist/cli/dashboard/lib/substrate-rpc.js +39 -0
- package/dist/cli/dashboard/lib/substrate-rpc.js.map +1 -0
- package/dist/cli/dashboard/panels/indexer-panel.d.ts +11 -0
- package/dist/cli/dashboard/panels/indexer-panel.js +17 -0
- package/dist/cli/dashboard/panels/indexer-panel.js.map +1 -0
- package/dist/cli/dashboard/panels/log-panel.d.ts +13 -0
- package/dist/cli/dashboard/panels/log-panel.js +27 -0
- package/dist/cli/dashboard/panels/log-panel.js.map +1 -0
- package/dist/cli/dashboard/panels/node-panel.d.ts +10 -0
- package/dist/cli/dashboard/panels/node-panel.js +17 -0
- package/dist/cli/dashboard/panels/node-panel.js.map +1 -0
- package/dist/cli/dashboard/panels/proof-panel.d.ts +10 -0
- package/dist/cli/dashboard/panels/proof-panel.js +20 -0
- package/dist/cli/dashboard/panels/proof-panel.js.map +1 -0
- package/dist/cli/dashboard/panels/response-graph.d.ts +10 -0
- package/dist/cli/dashboard/panels/response-graph.js +12 -0
- package/dist/cli/dashboard/panels/response-graph.js.map +1 -0
- package/dist/cli/dashboard/panels/wallet-panel.d.ts +9 -0
- package/dist/cli/dashboard/panels/wallet-panel.js +24 -0
- package/dist/cli/dashboard/panels/wallet-panel.js.map +1 -0
- package/dist/cli/dashboard/types.d.ts +39 -0
- package/dist/cli/dashboard/types.js +2 -0
- package/dist/cli/dashboard/types.js.map +1 -0
- package/dist/cli.js +18 -18
- package/dist/cli.js.map +1 -1
- package/package.json +6 -2
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { PanelBox } from '../components/panel-box.js';
|
|
4
|
+
const SERVICE_COLORS = {
|
|
5
|
+
node: 'green',
|
|
6
|
+
indexer: 'blue',
|
|
7
|
+
'proof-server': 'yellow',
|
|
8
|
+
unknown: 'gray',
|
|
9
|
+
};
|
|
10
|
+
const LEVEL_COLORS = {
|
|
11
|
+
error: 'red',
|
|
12
|
+
warn: 'yellow',
|
|
13
|
+
info: 'white',
|
|
14
|
+
debug: 'gray',
|
|
15
|
+
};
|
|
16
|
+
export function LogPanel({ lines, filter, scrollOffset, maxLines = 10, focused, searchMode, searchText, }) {
|
|
17
|
+
const visibleLines = lines.slice(scrollOffset, scrollOffset + maxLines);
|
|
18
|
+
const filterLabel = [
|
|
19
|
+
filter.service ? `svc:${filter.service}` : null,
|
|
20
|
+
filter.level ? `lvl:${filter.level}` : null,
|
|
21
|
+
filter.search ? `/${filter.search}` : null,
|
|
22
|
+
]
|
|
23
|
+
.filter(Boolean)
|
|
24
|
+
.join(' ') || 'all';
|
|
25
|
+
return (_jsxs(PanelBox, { title: `Logs (${filterLabel})`, focused: focused, children: [visibleLines.length === 0 ? (_jsxs(Text, { color: "gray", children: ["No log entries", filter.service || filter.level || filter.search ? ' matching filter' : ''] })) : (visibleLines.map((line, i) => (_jsxs(Box, { children: [_jsxs(Text, { color: SERVICE_COLORS[line.service] ?? 'gray', children: ["[", line.service.padEnd(6).slice(0, 6), "]"] }), _jsx(Text, { children: " " }), _jsx(Text, { color: LEVEL_COLORS[line.level] ?? 'white', children: line.message.slice(0, 200) })] }, `${scrollOffset + i}-${line.service}`)))), searchMode && (_jsx(Box, { children: _jsxs(Text, { color: "cyan", children: ["Search: ", searchText ?? '', "_"] }) })), _jsx(Box, { children: _jsxs(Text, { color: "gray", children: [lines.length, " lines | s=service l=level /=search | ", '\u2191\u2193', " scroll"] }) })] }));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=log-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-panel.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/panels/log-panel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAatD,MAAM,cAAc,GAA2B;IAC7C,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,MAAM;IACf,cAAc,EAAE,QAAQ;IACxB,OAAO,EAAE,MAAM;CAChB,CAAC;AAEF,MAAM,YAAY,GAA2B;IAC3C,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,MAAM;CACd,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,EACvB,KAAK,EACL,MAAM,EACN,YAAY,EACZ,QAAQ,GAAG,EAAE,EACb,OAAO,EACP,UAAU,EACV,UAAU,GACI;IACd,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,GAAG,QAAQ,CAAC,CAAC;IAExE,MAAM,WAAW,GAAG;QAClB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI;QAC/C,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI;QAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI;KAC3C;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;IAEtB,OAAO,CACL,MAAC,QAAQ,IAAC,KAAK,EAAE,SAAS,WAAW,GAAG,EAAE,OAAO,EAAE,OAAO,aACvD,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC3B,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,+BAAgB,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,IAAQ,CACpH,CAAC,CAAC,CAAC,CACF,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAC5B,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,kBAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,SAC/B,EACP,KAAC,IAAI,oBAAS,EACd,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,YAC7C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GACtB,KAPC,GAAG,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAQzC,CACP,CAAC,CACH,EACA,UAAU,IAAI,CACb,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,yBAAU,UAAU,IAAI,EAAE,SAAS,GACjD,CACP,EACD,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,aACf,KAAK,CAAC,MAAM,4CAAwC,cAAc,eAC9D,GACH,IACG,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { NodeInfo } from '../hooks/use-node-info.js';
|
|
3
|
+
interface NodePanelProps {
|
|
4
|
+
data: NodeInfo | null;
|
|
5
|
+
loading: boolean;
|
|
6
|
+
focused?: boolean;
|
|
7
|
+
compact?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function NodePanel({ data, loading, focused, compact }: NodePanelProps): React.ReactElement;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Text } from 'ink';
|
|
3
|
+
import { PanelBox } from '../components/panel-box.js';
|
|
4
|
+
import { StatusBadge } from '../components/status-badge.js';
|
|
5
|
+
export function NodePanel({ data, loading, focused, compact }) {
|
|
6
|
+
if (loading && !data) {
|
|
7
|
+
return (_jsx(PanelBox, { title: "Node", focused: focused, children: _jsx(Text, { color: "gray", children: "Connecting..." }) }));
|
|
8
|
+
}
|
|
9
|
+
if (!data || data.bestBlock === null) {
|
|
10
|
+
return (_jsxs(PanelBox, { title: "Node", focused: focused, children: [_jsx(StatusBadge, { status: "stopped" }), _jsx(Text, { color: "gray", children: " Offline" })] }));
|
|
11
|
+
}
|
|
12
|
+
if (compact) {
|
|
13
|
+
return (_jsxs(Text, { children: [_jsx(StatusBadge, { status: data.health ? 'running' : 'stopped' }), _jsx(Text, { children: " node :9944 " }), _jsxs(Text, { color: "cyan", children: ["\u25B2 #", data.bestBlock] })] }));
|
|
14
|
+
}
|
|
15
|
+
return (_jsxs(PanelBox, { title: "Node", focused: focused, children: [_jsxs(Text, { children: ["Block: ", _jsxs(Text, { color: "cyan", children: ["#", data.bestBlock] })] }), data.avgBlockTime != null && (_jsxs(Text, { children: ["Avg time: ", _jsxs(Text, { color: "yellow", children: [data.avgBlockTime.toFixed(1), "s"] })] })), _jsxs(Text, { children: ["Chain: ", data.chainName ?? 'unknown'] }), _jsxs(Text, { children: ["Peers: ", data.health?.peers ?? 'N/A'] }), _jsxs(Text, { children: ["Sync: ", data.health?.isSyncing ? 'syncing' : 'idle'] }), _jsxs(Text, { children: ["Version: ", data.version ?? 'unknown'] })] }));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=node-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-panel.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/panels/node-panel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAU5D,MAAM,UAAU,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAkB;IAC3E,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO,CACL,KAAC,QAAQ,IAAC,KAAK,EAAC,MAAM,EAAC,OAAO,EAAE,OAAO,YACrC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,8BAAqB,GAC9B,CACZ,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QACrC,OAAO,CACL,MAAC,QAAQ,IAAC,KAAK,EAAC,MAAM,EAAC,OAAO,EAAE,OAAO,aACrC,KAAC,WAAW,IAAC,MAAM,EAAC,SAAS,GAAG,EAChC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,yBAAgB,IACzB,CACZ,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,MAAC,IAAI,eACH,KAAC,WAAW,IAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAI,EAC5D,KAAC,IAAI,+BAAoB,EACzB,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,yBAAK,IAAI,CAAC,SAAS,IAAQ,IACxC,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,QAAQ,IAAC,KAAK,EAAC,MAAM,EAAC,OAAO,EAAE,OAAO,aACrC,MAAC,IAAI,0BAAQ,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kBAAG,IAAI,CAAC,SAAS,IAAQ,IAAO,EAC9D,IAAI,CAAC,YAAY,IAAI,IAAI,IAAI,CAC5B,MAAC,IAAI,6BAAW,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,aAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,IAAO,CACnF,EACD,MAAC,IAAI,0BAAS,IAAI,CAAC,SAAS,IAAI,SAAS,IAAQ,EACjD,MAAC,IAAI,0BAAS,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,KAAK,IAAQ,EACjD,MAAC,IAAI,yBAAQ,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAAQ,EAChE,MAAC,IAAI,4BAAW,IAAI,CAAC,OAAO,IAAI,SAAS,IAAQ,IACxC,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ProofServerInfo } from '../hooks/use-proof-server.js';
|
|
3
|
+
interface ProofPanelProps {
|
|
4
|
+
data: ProofServerInfo | null;
|
|
5
|
+
loading: boolean;
|
|
6
|
+
focused?: boolean;
|
|
7
|
+
compact?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function ProofPanel({ data, loading, focused, compact }: ProofPanelProps): React.ReactElement;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Text } from 'ink';
|
|
3
|
+
import { PanelBox } from '../components/panel-box.js';
|
|
4
|
+
import { StatusBadge } from '../components/status-badge.js';
|
|
5
|
+
import { Gauge } from '../components/gauge.js';
|
|
6
|
+
export function ProofPanel({ data, loading, focused, compact }) {
|
|
7
|
+
if (loading && !data) {
|
|
8
|
+
return (_jsx(PanelBox, { title: "Proof Server", focused: focused, children: _jsx(Text, { color: "gray", children: "Connecting..." }) }));
|
|
9
|
+
}
|
|
10
|
+
if (!data) {
|
|
11
|
+
return (_jsxs(PanelBox, { title: "Proof Server", focused: focused, children: [_jsx(StatusBadge, { status: "stopped" }), _jsx(Text, { color: "gray", children: " Offline" })] }));
|
|
12
|
+
}
|
|
13
|
+
if (compact) {
|
|
14
|
+
const processing = data.ready?.jobsProcessing ?? 0;
|
|
15
|
+
const capacity = data.ready?.jobCapacity ?? 0;
|
|
16
|
+
return (_jsxs(Text, { children: [_jsx(StatusBadge, { status: data.ready ? (data.ready.status === 'ok' ? 'running' : 'busy') : 'stopped' }), _jsx(Text, { children: " proof :6300 " }), _jsxs(Text, { color: "cyan", children: ["\u25B2 ", processing, "/", capacity] })] }));
|
|
17
|
+
}
|
|
18
|
+
return (_jsxs(PanelBox, { title: "Proof Server", focused: focused, children: [_jsxs(Text, { children: ["Version: ", data.version ?? 'unknown'] }), _jsxs(Text, { children: ["Proofs: ", data.proofVersions?.join(', ') ?? 'unknown'] }), data.ready && (_jsxs(_Fragment, { children: [_jsxs(Text, { children: ["Status: ", _jsx(StatusBadge, { status: data.ready.status === 'ok' ? 'ok' : 'busy' })] }), _jsxs(Text, { children: ["Jobs: ", _jsx(Gauge, { value: data.ready.jobsProcessing, max: data.ready.jobCapacity, width: 8 })] }), _jsxs(Text, { children: ["Pending: ", data.ready.jobsPending] })] }))] }));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=proof-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proof-panel.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/panels/proof-panel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAU/C,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAmB;IAC7E,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO,CACL,KAAC,QAAQ,IAAC,KAAK,EAAC,cAAc,EAAC,OAAO,EAAE,OAAO,YAC7C,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,8BAAqB,GAC9B,CACZ,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CACL,MAAC,QAAQ,IAAC,KAAK,EAAC,cAAc,EAAC,OAAO,EAAE,OAAO,aAC7C,KAAC,WAAW,IAAC,MAAM,EAAC,SAAS,GAAG,EAChC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,yBAAgB,IACzB,CACZ,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,EAAE,cAAc,IAAI,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,CAAC,CAAC;QAC9C,OAAO,CACL,MAAC,IAAI,eACH,KAAC,WAAW,IAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,GAAI,EACnG,KAAC,IAAI,gCAAqB,EAC1B,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wBAAI,UAAU,OAAG,QAAQ,IAAQ,IAC9C,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,QAAQ,IAAC,KAAK,EAAC,cAAc,EAAC,OAAO,EAAE,OAAO,aAC7C,MAAC,IAAI,4BAAW,IAAI,CAAC,OAAO,IAAI,SAAS,IAAQ,EACjD,MAAC,IAAI,2BAAU,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,IAAQ,EACjE,IAAI,CAAC,KAAK,IAAI,CACb,8BACE,MAAC,IAAI,2BAAS,KAAC,WAAW,IAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAI,IAAO,EACxF,MAAC,IAAI,yBAAO,KAAC,KAAK,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,GAAI,IAAO,EACrG,MAAC,IAAI,4BAAW,IAAI,CAAC,KAAK,CAAC,WAAW,IAAQ,IAC7C,CACJ,IACQ,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface ResponseGraphProps {
|
|
3
|
+
nodeHistory: number[];
|
|
4
|
+
indexerHistory: number[];
|
|
5
|
+
proofServerHistory: number[];
|
|
6
|
+
focused?: boolean;
|
|
7
|
+
width?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function ResponseGraph({ nodeHistory, indexerHistory, proofServerHistory, focused, width, }: ResponseGraphProps): React.ReactElement;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { PanelBox } from '../components/panel-box.js';
|
|
4
|
+
import { Sparkline } from '../components/sparkline.js';
|
|
5
|
+
export function ResponseGraph({ nodeHistory, indexerHistory, proofServerHistory, focused, width, }) {
|
|
6
|
+
const sparkWidth = width ? Math.max(5, width - 20) : 20;
|
|
7
|
+
const lastNode = nodeHistory[nodeHistory.length - 1];
|
|
8
|
+
const lastIndexer = indexerHistory[indexerHistory.length - 1];
|
|
9
|
+
const lastProof = proofServerHistory[proofServerHistory.length - 1];
|
|
10
|
+
return (_jsxs(PanelBox, { title: "Response Times", focused: focused, children: [_jsxs(Box, { children: [_jsx(Text, { children: "node " }), _jsx(Sparkline, { data: nodeHistory, maxWidth: sparkWidth, color: "green" }), _jsxs(Text, { children: [" ", lastNode != null ? `${lastNode}ms` : 'N/A'] })] }), _jsxs(Box, { children: [_jsx(Text, { children: "idx " }), _jsx(Sparkline, { data: indexerHistory, maxWidth: sparkWidth, color: "blue" }), _jsxs(Text, { children: [" ", lastIndexer != null ? `${lastIndexer}ms` : 'N/A'] })] }), _jsxs(Box, { children: [_jsx(Text, { children: "proof " }), _jsx(Sparkline, { data: proofServerHistory, maxWidth: sparkWidth, color: "yellow" }), _jsxs(Text, { children: [" ", lastProof != null ? `${lastProof}ms` : 'N/A'] })] })] }));
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=response-graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-graph.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/panels/response-graph.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAUvD,MAAM,UAAU,aAAa,CAAC,EAC5B,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,OAAO,EACP,KAAK,GACc;IACnB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEpE,OAAO,CACL,MAAC,QAAQ,IAAC,KAAK,EAAC,gBAAgB,EAAC,OAAO,EAAE,OAAO,aAC/C,MAAC,GAAG,eACF,KAAC,IAAI,yBAAc,EACnB,KAAC,SAAS,IAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAC,OAAO,GAAG,EACpE,MAAC,IAAI,oBAAG,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,IAAQ,IACtD,EACN,MAAC,GAAG,eACF,KAAC,IAAI,yBAAc,EACnB,KAAC,SAAS,IAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAC,MAAM,GAAG,EACtE,MAAC,IAAI,oBAAG,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,CAAC,CAAC,CAAC,KAAK,IAAQ,IAC5D,EACN,MAAC,GAAG,eACF,KAAC,IAAI,yBAAc,EACnB,KAAC,SAAS,IAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAC,QAAQ,GAAG,EAC5E,MAAC,IAAI,oBAAG,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,KAAK,IAAQ,IACxD,IACG,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { WalletState } from '../hooks/use-wallet-state.js';
|
|
3
|
+
interface WalletPanelProps {
|
|
4
|
+
wallet: WalletState;
|
|
5
|
+
focused?: boolean;
|
|
6
|
+
compact?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function WalletPanel({ wallet, focused, compact }: WalletPanelProps): React.ReactElement;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { PanelBox } from '../components/panel-box.js';
|
|
4
|
+
function formatBalance(value) {
|
|
5
|
+
const whole = value / 10n ** 6n;
|
|
6
|
+
return whole.toLocaleString();
|
|
7
|
+
}
|
|
8
|
+
export function WalletPanel({ wallet, focused, compact }) {
|
|
9
|
+
if (wallet.connecting) {
|
|
10
|
+
return (_jsx(PanelBox, { title: "Wallet", focused: focused, children: _jsx(Text, { color: "yellow", children: "Connecting..." }) }));
|
|
11
|
+
}
|
|
12
|
+
if (wallet.error) {
|
|
13
|
+
return (_jsxs(PanelBox, { title: "Wallet", focused: focused, children: [_jsx(Text, { color: "red", children: "Unavailable" }), _jsx(Text, { color: "gray", children: wallet.error })] }));
|
|
14
|
+
}
|
|
15
|
+
if (!wallet.balances) {
|
|
16
|
+
return (_jsx(PanelBox, { title: "Wallet", focused: focused, children: _jsx(Text, { color: "gray", children: "No data" }) }));
|
|
17
|
+
}
|
|
18
|
+
const b = wallet.balances;
|
|
19
|
+
if (compact) {
|
|
20
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: `Wallet (${wallet.address ?? 'master'})` }), _jsxs(Text, { children: ["NIGHT ", formatBalance(b.total)] }), _jsxs(Text, { children: ["DUST ", formatBalance(b.dust)] })] }));
|
|
21
|
+
}
|
|
22
|
+
return (_jsxs(PanelBox, { title: "Wallet", focused: focused, children: [_jsx(Text, { color: "cyan", bold: true, children: `> ${wallet.address ?? 'master'}` }), _jsxs(Text, { children: [" NIGHT ", _jsx(Text, { color: "green", children: formatBalance(b.unshielded) }), " (unshielded)"] }), _jsxs(Text, { children: [" NIGHT ", _jsx(Text, { color: "green", children: formatBalance(b.shielded) }), " (shielded)"] }), _jsxs(Text, { children: [" DUST ", _jsx(Text, { color: "yellow", children: formatBalance(b.dust) })] }), _jsxs(Text, { children: [" Total ", _jsx(Text, { bold: true, children: formatBalance(b.total) })] })] }));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=wallet-panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet-panel.js","sourceRoot":"","sources":["../../../../src/cli/dashboard/panels/wallet-panel.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAStD,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,KAAK,GAAG,KAAK,GAAG,GAAG,IAAI,EAAE,CAAC;IAChC,OAAO,KAAK,CAAC,cAAc,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAoB;IACxE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,OAAO,CACL,KAAC,QAAQ,IAAC,KAAK,EAAC,QAAQ,EAAC,OAAO,EAAE,OAAO,YACvC,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,8BAAqB,GAChC,CACZ,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CACL,MAAC,QAAQ,IAAC,KAAK,EAAC,QAAQ,EAAC,OAAO,EAAE,OAAO,aACvC,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,4BAAmB,EACpC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,MAAM,CAAC,KAAK,GAAQ,IAC/B,CACZ,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,CACL,KAAC,QAAQ,IAAC,KAAK,EAAC,QAAQ,EAAC,OAAO,EAAE,OAAO,YACvC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wBAAe,GACxB,CACZ,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;IAE1B,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YAAE,WAAW,MAAM,CAAC,OAAO,IAAI,QAAQ,GAAG,GAAQ,EACzE,MAAC,IAAI,yBAAQ,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,IAAQ,EAC3C,MAAC,IAAI,yBAAQ,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAQ,IACtC,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,MAAC,QAAQ,IAAC,KAAK,EAAC,QAAQ,EAAC,OAAO,EAAE,OAAO,aACvC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,kBAAE,KAAK,MAAM,CAAC,OAAO,IAAI,QAAQ,EAAE,GAAQ,EAClE,MAAC,IAAI,4BAAU,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,GAAQ,qBAAoB,EAC3F,MAAC,IAAI,4BAAU,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAQ,mBAAkB,EACvF,MAAC,IAAI,4BAAU,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,YAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAQ,IAAO,EACzE,MAAC,IAAI,4BAAU,KAAC,IAAI,IAAC,IAAI,kBAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,GAAQ,IAAO,IACvD,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { NodeInfo } from './hooks/use-node-info.js';
|
|
2
|
+
import type { IndexerInfo } from './hooks/use-indexer-info.js';
|
|
3
|
+
import type { ProofServerInfo } from './hooks/use-proof-server.js';
|
|
4
|
+
import type { WalletState } from './hooks/use-wallet-state.js';
|
|
5
|
+
import type { ParsedLogLine, LogFilter } from './lib/log-parser.js';
|
|
6
|
+
export type PanelName = 'node' | 'indexer' | 'proof' | 'wallet' | 'logs' | 'graph';
|
|
7
|
+
export interface LogsData {
|
|
8
|
+
lines: ParsedLogLine[];
|
|
9
|
+
allLines: ParsedLogLine[];
|
|
10
|
+
filter: LogFilter;
|
|
11
|
+
scrollOffset: number;
|
|
12
|
+
loading: boolean;
|
|
13
|
+
cycleService: () => void;
|
|
14
|
+
cycleLevel: () => void;
|
|
15
|
+
setSearch: (search: string) => void;
|
|
16
|
+
scrollUp: () => void;
|
|
17
|
+
scrollDown: () => void;
|
|
18
|
+
}
|
|
19
|
+
export interface HealthHistory {
|
|
20
|
+
nodeHistory: number[];
|
|
21
|
+
indexerHistory: number[];
|
|
22
|
+
proofServerHistory: number[];
|
|
23
|
+
}
|
|
24
|
+
export interface DashboardData {
|
|
25
|
+
node: NodeInfo | null;
|
|
26
|
+
nodeLoading: boolean;
|
|
27
|
+
indexer: IndexerInfo | null;
|
|
28
|
+
indexerLoading: boolean;
|
|
29
|
+
proofServer: ProofServerInfo | null;
|
|
30
|
+
proofServerLoading: boolean;
|
|
31
|
+
wallet: WalletState;
|
|
32
|
+
logs: LogsData;
|
|
33
|
+
healthHistory: HealthHistory;
|
|
34
|
+
focusedPanel: PanelName;
|
|
35
|
+
searchMode: boolean;
|
|
36
|
+
searchText: string;
|
|
37
|
+
columns: number;
|
|
38
|
+
rows: number;
|
|
39
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/dashboard/types.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
CHANGED
|
@@ -4,15 +4,14 @@ import { NetworkManager } from './core/network-manager.js';
|
|
|
4
4
|
import { registerNetworkCommands } from './cli/commands/network.js';
|
|
5
5
|
import { registerWalletCommands } from './cli/commands/wallet.js';
|
|
6
6
|
import { registerAccountCommands } from './cli/commands/accounts.js';
|
|
7
|
-
import {
|
|
7
|
+
import { registerInteractiveCommand } from './cli/commands/interactive.js';
|
|
8
|
+
import { registerDashboardCommand } from './cli/commands/dashboard.js';
|
|
8
9
|
import { createLogger } from './core/logger.js';
|
|
9
10
|
import { setLogger as setWalletLogger } from './core/wallet.js';
|
|
10
11
|
import { setLogger as setFundingLogger } from './core/funding.js';
|
|
11
12
|
import { setLogger as setAccountsLogger } from './core/accounts.js';
|
|
12
13
|
const manager = new NetworkManager();
|
|
13
|
-
const
|
|
14
|
-
// In interactive mode, send logs to stderr so they don't stomp on the readline prompt
|
|
15
|
-
const logger = createLogger('info', isInteractive ? process.stderr : process.stdout);
|
|
14
|
+
const logger = createLogger('info', process.stdout);
|
|
16
15
|
setWalletLogger(logger);
|
|
17
16
|
setFundingLogger(logger);
|
|
18
17
|
setAccountsLogger(logger);
|
|
@@ -26,18 +25,19 @@ const shutdown = async () => {
|
|
|
26
25
|
};
|
|
27
26
|
process.on('SIGINT', shutdown);
|
|
28
27
|
process.on('SIGTERM', shutdown);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
program.
|
|
42
|
-
}
|
|
28
|
+
const program = new Command();
|
|
29
|
+
program
|
|
30
|
+
.name('midnight-local-devnet')
|
|
31
|
+
.description('Manage a local Midnight development network')
|
|
32
|
+
.version('0.2.1');
|
|
33
|
+
registerNetworkCommands(program, manager);
|
|
34
|
+
registerWalletCommands(program, manager);
|
|
35
|
+
registerAccountCommands(program, manager);
|
|
36
|
+
registerInteractiveCommand(program, manager);
|
|
37
|
+
registerDashboardCommand(program, manager);
|
|
38
|
+
// Show help when no subcommand is given
|
|
39
|
+
program.action(() => {
|
|
40
|
+
program.help();
|
|
41
|
+
});
|
|
42
|
+
program.parse();
|
|
43
43
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEpE,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;AAErC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AACpD,eAAe,CAAC,MAAM,CAAC,CAAC;AACxB,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACzB,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1B,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAE1B,wDAAwD;AACxD,MAAM,OAAO,CAAC,oBAAoB,EAAE,CAAC;AAErC,8BAA8B;AAC9B,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;IAC1B,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;IACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAEhC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,uBAAuB,CAAC;KAC7B,WAAW,CAAC,6CAA6C,CAAC;KAC1D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1C,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACzC,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1C,0BAA0B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7C,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAE3C,wCAAwC;AACxC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;IAClB,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aaronbassett/midnight-local-devnet",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Local Midnight development network manager — CLI and MCP server",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -39,7 +39,6 @@
|
|
|
39
39
|
"test:watch": "vitest"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
43
42
|
"@midnight-ntwrk/ledger-v7": "7.0.0",
|
|
44
43
|
"@midnight-ntwrk/midnight-js-network-id": "3.1.0",
|
|
45
44
|
"@midnight-ntwrk/wallet-sdk-abstractions": "1.0.0",
|
|
@@ -49,17 +48,22 @@
|
|
|
49
48
|
"@midnight-ntwrk/wallet-sdk-hd": "3.0.0",
|
|
50
49
|
"@midnight-ntwrk/wallet-sdk-shielded": "1.0.0",
|
|
51
50
|
"@midnight-ntwrk/wallet-sdk-unshielded-wallet": "1.0.0",
|
|
51
|
+
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
52
52
|
"@scure/bip39": "^2.0.1",
|
|
53
53
|
"commander": "^13.1.0",
|
|
54
|
+
"ink": "^6.8.0",
|
|
54
55
|
"pino": "^10.1.0",
|
|
55
56
|
"pino-pretty": "^13.1.3",
|
|
57
|
+
"react": "^19.2.4",
|
|
56
58
|
"rxjs": "^7.8.1",
|
|
57
59
|
"ws": "^8.18.3",
|
|
58
60
|
"zod": "^3.24.0"
|
|
59
61
|
},
|
|
60
62
|
"devDependencies": {
|
|
61
63
|
"@types/node": "^22.0.0",
|
|
64
|
+
"@types/react": "^19.2.14",
|
|
62
65
|
"@types/ws": "^8.18.1",
|
|
66
|
+
"ink-testing-library": "^4.0.0",
|
|
63
67
|
"typescript": "^5.9.3",
|
|
64
68
|
"vitest": "^3.1.0"
|
|
65
69
|
},
|