chia-explorer 0.2.2 → 0.3.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 +2 -1
- package/dist/chia-docs/index.d.ts +12 -0
- package/dist/chia-docs/index.js +24 -0
- package/dist/chia-docs/index.js.map +1 -0
- package/dist/chia-docs/parser.d.ts +15 -0
- package/dist/chia-docs/parser.js +129 -0
- package/dist/chia-docs/parser.js.map +1 -0
- package/dist/server.js +5 -2
- package/dist/server.js.map +1 -1
- package/dist/tools/forks/list-forks.d.ts +2 -0
- package/dist/tools/forks/list-forks.js +14 -0
- package/dist/tools/forks/list-forks.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -224,8 +224,9 @@ Skills are read-only and idempotent, persist state between runs, and accept stru
|
|
|
224
224
|
| `get_chip` | One CHIP by number. Returns the merged version (if any), any open PR drafts proposing the same number, and optionally the full markdown |
|
|
225
225
|
| `list_chip_drafts` | Open PRs against `Chia-Network/chips` that add or modify a CHIP, with parsed front matter and PR context (author, reviewers, draft flag) |
|
|
226
226
|
| `search_chips` | Keyword search across merged CHIPs and open PR drafts (title, description, abstract, authors) |
|
|
227
|
+
| `list_forks` | Every Chia consensus fork (hard and soft) with status (Activated, Planned, …), activation block, build, and a link to the purpose (CHIP, post-mortem, blog post). Sourced from the canonical docs page at docs.chia.net, with the source's `last_updated` date included so callers can judge freshness |
|
|
227
228
|
|
|
228
|
-
Blockchain tools take an optional `network: "mainnet" | "testnet11"` (default `mainnet`). The price and
|
|
229
|
+
Blockchain tools take an optional `network: "mainnet" | "testnet11"` (default `mainnet`). The price, CHIPs, and forks tools take no network arg. The prefarm tools are mainnet only.
|
|
229
230
|
|
|
230
231
|
## Optional config
|
|
231
232
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Fork } from './parser.js';
|
|
2
|
+
export type { Fork, ForkType, ForksDocument } from './parser.js';
|
|
3
|
+
export declare const FORKS_SOURCE_URL = "https://docs.chia.net/chia-blockchain/consensus/forks/";
|
|
4
|
+
export declare const FORKS_MARKDOWN_URL = "https://github.com/Chia-Network/chia-docs/blob/main/docs/chia-blockchain/consensus/forks.md";
|
|
5
|
+
export interface ForksResult {
|
|
6
|
+
source_url: string;
|
|
7
|
+
markdown_url: string;
|
|
8
|
+
last_updated: string | null;
|
|
9
|
+
count: number;
|
|
10
|
+
forks: Fork[];
|
|
11
|
+
}
|
|
12
|
+
export declare function getForks(): Promise<ForksResult>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { fetchRawFile } from '../github/client.js';
|
|
2
|
+
import { getCached } from '../github/cache.js';
|
|
3
|
+
import { parseForksMarkdown } from './parser.js';
|
|
4
|
+
const REPO = 'Chia-Network/chia-docs';
|
|
5
|
+
const REF = 'main';
|
|
6
|
+
const FORKS_PATH = 'docs/chia-blockchain/consensus/forks.md';
|
|
7
|
+
const FORKS_TTL_MS = 10 * 60_000;
|
|
8
|
+
export const FORKS_SOURCE_URL = 'https://docs.chia.net/chia-blockchain/consensus/forks/';
|
|
9
|
+
export const FORKS_MARKDOWN_URL = `https://github.com/${REPO}/blob/${REF}/${FORKS_PATH}`;
|
|
10
|
+
async function fetchForksDocument() {
|
|
11
|
+
const body = await fetchRawFile(REPO, REF, FORKS_PATH);
|
|
12
|
+
return parseForksMarkdown(body);
|
|
13
|
+
}
|
|
14
|
+
export async function getForks() {
|
|
15
|
+
const doc = await getCached('chia-docs:forks', fetchForksDocument, FORKS_TTL_MS);
|
|
16
|
+
return {
|
|
17
|
+
source_url: FORKS_SOURCE_URL,
|
|
18
|
+
markdown_url: FORKS_MARKDOWN_URL,
|
|
19
|
+
last_updated: doc.last_updated,
|
|
20
|
+
count: doc.forks.length,
|
|
21
|
+
forks: doc.forks,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chia-docs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAiC,MAAM,aAAa,CAAC;AAIhF,MAAM,IAAI,GAAG,wBAAwB,CAAC;AACtC,MAAM,GAAG,GAAG,MAAM,CAAC;AACnB,MAAM,UAAU,GAAG,yCAAyC,CAAC;AAC7D,MAAM,YAAY,GAAG,EAAE,GAAG,MAAM,CAAC;AAEjC,MAAM,CAAC,MAAM,gBAAgB,GAAG,wDAAwD,CAAC;AACzF,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,IAAI,SAAS,GAAG,IAAI,UAAU,EAAE,CAAC;AAUzF,KAAK,UAAU,kBAAkB;IAC/B,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IACvD,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC;IACjF,OAAO;QACL,UAAU,EAAE,gBAAgB;QAC5B,YAAY,EAAE,kBAAkB;QAChC,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;QACvB,KAAK,EAAE,GAAG,CAAC,KAAK;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type ForkType = 'hard' | 'soft';
|
|
2
|
+
export interface Fork {
|
|
3
|
+
type: ForkType;
|
|
4
|
+
name: string;
|
|
5
|
+
activation_block: number | null;
|
|
6
|
+
activation_date: string | null;
|
|
7
|
+
build: string | null;
|
|
8
|
+
status: string;
|
|
9
|
+
purpose_url: string | null;
|
|
10
|
+
}
|
|
11
|
+
export interface ForksDocument {
|
|
12
|
+
last_updated: string | null;
|
|
13
|
+
forks: Fork[];
|
|
14
|
+
}
|
|
15
|
+
export declare function parseForksMarkdown(markdown: string): ForksDocument;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
const HEADER_KEYS = {
|
|
2
|
+
block: 'activation block',
|
|
3
|
+
date: 'activation date',
|
|
4
|
+
type: 'type',
|
|
5
|
+
build: 'build',
|
|
6
|
+
status: 'status',
|
|
7
|
+
description: 'description',
|
|
8
|
+
};
|
|
9
|
+
const LAST_UPDATED_PATTERN = /last updated on\s+(\d{4}-\d{2}-\d{2})/i;
|
|
10
|
+
const MARKDOWN_LINK_PATTERN = /\[([^\]]+)\]\(([^)]+)\)/g;
|
|
11
|
+
function splitRow(line) {
|
|
12
|
+
let s = line.trim();
|
|
13
|
+
if (s.startsWith('|'))
|
|
14
|
+
s = s.slice(1);
|
|
15
|
+
if (s.endsWith('|'))
|
|
16
|
+
s = s.slice(0, -1);
|
|
17
|
+
return s.split('|').map((c) => c.trim());
|
|
18
|
+
}
|
|
19
|
+
function isSeparatorRow(cells) {
|
|
20
|
+
if (cells.length === 0)
|
|
21
|
+
return false;
|
|
22
|
+
return cells.every((c) => /^:?-+:?$/.test(c.trim()));
|
|
23
|
+
}
|
|
24
|
+
function isTableRow(line) {
|
|
25
|
+
const trimmed = line.trim();
|
|
26
|
+
return trimmed.startsWith('|') && trimmed.endsWith('|') && trimmed.length > 2;
|
|
27
|
+
}
|
|
28
|
+
function blankToNull(value) {
|
|
29
|
+
const v = value.trim();
|
|
30
|
+
if (!v || v === '-' || v.toLowerCase() === 'n/a' || v.toLowerCase() === 'tbd')
|
|
31
|
+
return null;
|
|
32
|
+
return v;
|
|
33
|
+
}
|
|
34
|
+
function parseBlock(raw) {
|
|
35
|
+
// Strip backticks, whitespace (incl. NBSP via \s), commas, underscores.
|
|
36
|
+
const cleaned = raw.replace(/[`\s,_]/g, '');
|
|
37
|
+
if (!cleaned)
|
|
38
|
+
return null;
|
|
39
|
+
if (!/^\d+$/.test(cleaned))
|
|
40
|
+
return null;
|
|
41
|
+
const n = Number(cleaned);
|
|
42
|
+
return Number.isFinite(n) ? n : null;
|
|
43
|
+
}
|
|
44
|
+
function parseType(raw) {
|
|
45
|
+
const v = raw.trim().toLowerCase();
|
|
46
|
+
if (v === 'hard')
|
|
47
|
+
return 'hard';
|
|
48
|
+
if (v === 'soft')
|
|
49
|
+
return 'soft';
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
function parseDescription(raw) {
|
|
53
|
+
const trimmed = raw.trim();
|
|
54
|
+
let firstUrl = null;
|
|
55
|
+
const stripped = trimmed
|
|
56
|
+
.replace(MARKDOWN_LINK_PATTERN, (_match, text, url) => {
|
|
57
|
+
if (firstUrl == null)
|
|
58
|
+
firstUrl = url.trim();
|
|
59
|
+
return text;
|
|
60
|
+
})
|
|
61
|
+
.replace(/\s+/g, ' ')
|
|
62
|
+
.trim();
|
|
63
|
+
return { name: stripped, purpose_url: firstUrl };
|
|
64
|
+
}
|
|
65
|
+
function buildColumnMap(headerCells) {
|
|
66
|
+
const idx = {};
|
|
67
|
+
headerCells.forEach((cell, i) => {
|
|
68
|
+
idx[cell.trim().toLowerCase()] = i;
|
|
69
|
+
});
|
|
70
|
+
const block = idx[HEADER_KEYS.block];
|
|
71
|
+
const date = idx[HEADER_KEYS.date];
|
|
72
|
+
const type = idx[HEADER_KEYS.type];
|
|
73
|
+
const build = idx[HEADER_KEYS.build];
|
|
74
|
+
const status = idx[HEADER_KEYS.status];
|
|
75
|
+
const description = idx[HEADER_KEYS.description];
|
|
76
|
+
if (block == null ||
|
|
77
|
+
date == null ||
|
|
78
|
+
type == null ||
|
|
79
|
+
build == null ||
|
|
80
|
+
status == null ||
|
|
81
|
+
description == null) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
return { block, date, type, build, status, description };
|
|
85
|
+
}
|
|
86
|
+
export function parseForksMarkdown(markdown) {
|
|
87
|
+
const lastUpdated = markdown.match(LAST_UPDATED_PATTERN)?.[1] ?? null;
|
|
88
|
+
const forks = [];
|
|
89
|
+
const lines = markdown.split(/\r?\n/);
|
|
90
|
+
let cols = null;
|
|
91
|
+
for (let i = 0; i < lines.length; i++) {
|
|
92
|
+
const line = lines[i];
|
|
93
|
+
if (!isTableRow(line))
|
|
94
|
+
continue;
|
|
95
|
+
const cells = splitRow(line);
|
|
96
|
+
if (cells.length === 0)
|
|
97
|
+
continue;
|
|
98
|
+
if (!cols) {
|
|
99
|
+
const candidate = buildColumnMap(cells);
|
|
100
|
+
if (!candidate)
|
|
101
|
+
continue;
|
|
102
|
+
const next = lines[i + 1];
|
|
103
|
+
if (!next || !isSeparatorRow(splitRow(next)))
|
|
104
|
+
continue;
|
|
105
|
+
cols = candidate;
|
|
106
|
+
i++;
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (isSeparatorRow(cells))
|
|
110
|
+
continue;
|
|
111
|
+
const type = parseType(cells[cols.type] ?? '');
|
|
112
|
+
if (!type)
|
|
113
|
+
continue;
|
|
114
|
+
const description = parseDescription(cells[cols.description] ?? '');
|
|
115
|
+
if (!description.name)
|
|
116
|
+
continue;
|
|
117
|
+
forks.push({
|
|
118
|
+
type,
|
|
119
|
+
name: description.name,
|
|
120
|
+
activation_block: parseBlock(cells[cols.block] ?? ''),
|
|
121
|
+
activation_date: blankToNull(cells[cols.date] ?? ''),
|
|
122
|
+
build: blankToNull(cells[cols.build] ?? ''),
|
|
123
|
+
status: cells[cols.status]?.trim() || 'Unknown',
|
|
124
|
+
purpose_url: description.purpose_url,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
return { last_updated: lastUpdated, forks };
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/chia-docs/parser.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -30,6 +30,7 @@ import { register as registerListChips } from './tools/chips/list-chips.js';
|
|
|
30
30
|
import { register as registerGetChip } from './tools/chips/get-chip.js';
|
|
31
31
|
import { register as registerListChipDrafts } from './tools/chips/list-chip-drafts.js';
|
|
32
32
|
import { register as registerSearchChips } from './tools/chips/search-chips.js';
|
|
33
|
+
import { register as registerListForks } from './tools/forks/list-forks.js';
|
|
33
34
|
import { register as registerNetworkStatusPrompt } from './prompts/network-status.js';
|
|
34
35
|
import { register as registerAddressSummaryPrompt } from './prompts/address-summary.js';
|
|
35
36
|
import { register as registerBlockSummaryPrompt } from './prompts/block-summary.js';
|
|
@@ -38,11 +39,12 @@ export function createServer() {
|
|
|
38
39
|
const server = new McpServer({ name: 'chia-explorer', version: VERSION }, {
|
|
39
40
|
instructions: 'chia-explorer answers questions about the Chia blockchain via the public coinset.org API, ' +
|
|
40
41
|
'plus XCH spot price and fiat conversion via the public CoinGecko API, ' +
|
|
41
|
-
'plus Chia Improvement Proposals (CHIPs) read directly from the Chia-Network/chips GitHub repo (merged on main and open PR drafts)
|
|
42
|
+
'plus Chia Improvement Proposals (CHIPs) read directly from the Chia-Network/chips GitHub repo (merged on main and open PR drafts), ' +
|
|
43
|
+
'plus Chia consensus fork history (hard and soft forks, with status and activation block) read from the Chia-Network/chia-docs GitHub repo. ' +
|
|
42
44
|
'Read-only: no signing, no key material, no push_tx. ' +
|
|
43
45
|
"Blockchain tools accept an optional `network: 'mainnet' | 'testnet11'` argument; mainnet is the default. " +
|
|
44
46
|
'When an address is provided, the network is auto-detected from the prefix (xch / txch). ' +
|
|
45
|
-
'Price and
|
|
47
|
+
'Price, CHIPs, and forks tools take no network argument. ' +
|
|
46
48
|
'An optional GITHUB_TOKEN env var lifts the unauthenticated GitHub rate limit on CHIPs listings.',
|
|
47
49
|
});
|
|
48
50
|
registerGetBlockchainState(server);
|
|
@@ -75,6 +77,7 @@ export function createServer() {
|
|
|
75
77
|
registerGetChip(server);
|
|
76
78
|
registerListChipDrafts(server);
|
|
77
79
|
registerSearchChips(server);
|
|
80
|
+
registerListForks(server);
|
|
78
81
|
registerNetworkStatusPrompt(server);
|
|
79
82
|
registerAddressSummaryPrompt(server);
|
|
80
83
|
registerBlockSummaryPrompt(server);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { getForks } from '../../chia-docs/index.js';
|
|
2
|
+
import { errorText, jsonText } from '../shared/response.js';
|
|
3
|
+
export function register(server) {
|
|
4
|
+
server.tool('list_forks', 'List every Chia consensus fork (hard and soft) with current status, drawn from the canonical docs page at https://docs.chia.net/chia-blockchain/consensus/forks/ (sourced from the Chia-Network/chia-docs GitHub repo). Each entry has type ("hard" | "soft"), name, activation_block, activation_date, build, status (e.g. Activated, Planned), and a purpose_url linking to the relevant CHIP, post-mortem, or blog post when available. Includes the source\'s last_updated date so callers can judge freshness. No arguments, no network selector (consensus forks are protocol-level).', {}, async () => {
|
|
5
|
+
try {
|
|
6
|
+
const result = await getForks();
|
|
7
|
+
return jsonText(result);
|
|
8
|
+
}
|
|
9
|
+
catch (err) {
|
|
10
|
+
return errorText(err);
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=list-forks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-forks.js","sourceRoot":"","sources":["../../../src/tools/forks/list-forks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,6jBAA6jB,EAC7jB,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,EAAE,CAAC;YAChC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED