ainize 0.1.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.
Files changed (95) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +225 -0
  3. package/dist/bin.d.ts +10 -0
  4. package/dist/bin.d.ts.map +1 -0
  5. package/dist/bin.js +711 -0
  6. package/dist/bin.js.map +1 -0
  7. package/dist/client.d.ts +38 -0
  8. package/dist/client.d.ts.map +1 -0
  9. package/dist/client.js +164 -0
  10. package/dist/client.js.map +1 -0
  11. package/dist/commands/auth.d.ts +30 -0
  12. package/dist/commands/auth.d.ts.map +1 -0
  13. package/dist/commands/auth.js +216 -0
  14. package/dist/commands/auth.js.map +1 -0
  15. package/dist/commands/branch.d.ts +326 -0
  16. package/dist/commands/branch.d.ts.map +1 -0
  17. package/dist/commands/branch.js +467 -0
  18. package/dist/commands/branch.js.map +1 -0
  19. package/dist/commands/chain.d.ts +43 -0
  20. package/dist/commands/chain.d.ts.map +1 -0
  21. package/dist/commands/chain.js +224 -0
  22. package/dist/commands/chain.js.map +1 -0
  23. package/dist/commands/chat.d.ts +157 -0
  24. package/dist/commands/chat.d.ts.map +1 -0
  25. package/dist/commands/chat.js +395 -0
  26. package/dist/commands/chat.js.map +1 -0
  27. package/dist/commands/dataset.d.ts +51 -0
  28. package/dist/commands/dataset.d.ts.map +1 -0
  29. package/dist/commands/dataset.js +157 -0
  30. package/dist/commands/dataset.js.map +1 -0
  31. package/dist/commands/drive.d.ts +32 -0
  32. package/dist/commands/drive.d.ts.map +1 -0
  33. package/dist/commands/drive.js +68 -0
  34. package/dist/commands/drive.js.map +1 -0
  35. package/dist/commands/huggingface-dataset.d.ts +63 -0
  36. package/dist/commands/huggingface-dataset.d.ts.map +1 -0
  37. package/dist/commands/huggingface-dataset.js +254 -0
  38. package/dist/commands/huggingface-dataset.js.map +1 -0
  39. package/dist/commands/init.d.ts +107 -0
  40. package/dist/commands/init.d.ts.map +1 -0
  41. package/dist/commands/init.js +538 -0
  42. package/dist/commands/init.js.map +1 -0
  43. package/dist/commands/ledger.d.ts +43 -0
  44. package/dist/commands/ledger.d.ts.map +1 -0
  45. package/dist/commands/ledger.js +125 -0
  46. package/dist/commands/ledger.js.map +1 -0
  47. package/dist/commands/node.d.ts +250 -0
  48. package/dist/commands/node.d.ts.map +1 -0
  49. package/dist/commands/node.js +651 -0
  50. package/dist/commands/node.js.map +1 -0
  51. package/dist/commands/patch.d.ts +852 -0
  52. package/dist/commands/patch.d.ts.map +1 -0
  53. package/dist/commands/patch.js +1527 -0
  54. package/dist/commands/patch.js.map +1 -0
  55. package/dist/commands/peers.d.ts +86 -0
  56. package/dist/commands/peers.d.ts.map +1 -0
  57. package/dist/commands/peers.js +143 -0
  58. package/dist/commands/peers.js.map +1 -0
  59. package/dist/commands/teach-dataset.d.ts +381 -0
  60. package/dist/commands/teach-dataset.d.ts.map +1 -0
  61. package/dist/commands/teach-dataset.js +780 -0
  62. package/dist/commands/teach-dataset.js.map +1 -0
  63. package/dist/commands/teach.d.ts +351 -0
  64. package/dist/commands/teach.d.ts.map +1 -0
  65. package/dist/commands/teach.js +435 -0
  66. package/dist/commands/teach.js.map +1 -0
  67. package/dist/context.d.ts +55 -0
  68. package/dist/context.d.ts.map +1 -0
  69. package/dist/context.js +102 -0
  70. package/dist/context.js.map +1 -0
  71. package/dist/ens.d.ts +50 -0
  72. package/dist/ens.d.ts.map +1 -0
  73. package/dist/ens.js +155 -0
  74. package/dist/ens.js.map +1 -0
  75. package/dist/help.d.ts +57 -0
  76. package/dist/help.d.ts.map +1 -0
  77. package/dist/help.js +227 -0
  78. package/dist/help.js.map +1 -0
  79. package/dist/index.d.ts +15 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +15 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/output.d.ts +104 -0
  84. package/dist/output.d.ts.map +1 -0
  85. package/dist/output.js +383 -0
  86. package/dist/output.js.map +1 -0
  87. package/dist/pid.d.ts +5 -0
  88. package/dist/pid.d.ts.map +1 -0
  89. package/dist/pid.js +25 -0
  90. package/dist/pid.js.map +1 -0
  91. package/dist/quiet.d.ts +2 -0
  92. package/dist/quiet.d.ts.map +1 -0
  93. package/dist/quiet.js +12 -0
  94. package/dist/quiet.js.map +1 -0
  95. package/package.json +55 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../src/commands/ledger.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,MAAM,WAAW,UAAU;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CAAE;AAmDhJ,wBAAsB,QAAQ,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,GAAE;IAAE,IAAI,CAAC,EAAE,UAAU,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAgBrJ;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAIlH;AAED,MAAM,WAAW,aAAa;IAAG,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;CAAE;AAE9N,wBAAsB,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAuBzE;AAKD,wBAAsB,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAcjF"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * `ainize ledger ls|verify|graph|export`
3
+ */
4
+ import { writeFileSync } from 'node:fs';
5
+ import { NodeClient, query } from '../client.js';
6
+ import { c, emit, fmtTime, kv, ok, shortAddr, shortHash, statusColor, table } from '../output.js';
7
+ /**
8
+ * Item 197 — a settle row said `<id> · 10 CREDIT · buyer 0x81…` and stopped exactly one field short of the money:
9
+ * `royalty` on the same record body says who was actually paid what. A creator checking whether her 30 % arrived
10
+ * had to re-run with `--json` and read addresses. `names` resolves an address to a name using the records
11
+ * themselves (a `node` record carries a node's name, an `anchor` its author's and its contributors'), so nothing is
12
+ * invented — an address the record never named stays an address.
13
+ */
14
+ function summary(r, names) {
15
+ const who = (a) => names?.(String(a ?? '')) ?? shortAddr(String(a ?? ''), 4);
16
+ const b = r.body;
17
+ switch (r.kind) {
18
+ case 'anchor': return `${b.id} · ${b.model?.id_M ?? b.id_M ?? ''} · ${b.rows ?? '?'} rows`;
19
+ case 'attest': return `${b.patch_id ?? b.id} · ${b.passed === false ? 'FAIL' : 'PASS'} · ${b.verified_on ?? ''}`;
20
+ case 'settle': {
21
+ const seller = String(b.seller ?? '').toLowerCase();
22
+ const paid = Object.entries((b.royalty ?? {}))
23
+ .filter(([addr, v]) => Number(v) > 0 && addr.toLowerCase() !== seller)
24
+ .map(([addr, v]) => `${who(addr)} ${v}`);
25
+ const unresolved = Object.values((b.royalty_unresolved ?? {})).reduce((n, v) => n + Number(v), 0);
26
+ return `${b.patch_id ?? b.resource} · ${b.amount} ${b.currency ?? ''} · buyer ${who(b.buyer)}`
27
+ + (paid.length ? ` → ${paid.join(' · ')} (creator share)` : '')
28
+ + (unresolved > 0 ? ` · ${Math.round(unresolved * 1e6) / 1e6} ${b.currency ?? ''} with no payee yet` : '');
29
+ }
30
+ case 'branch': return `${b.name} · ${b.patch_ids?.length ?? 0} patch(es)`;
31
+ case 'node': return `${b.name} · ${b.endpoint} · ${b.roles?.join(',')}`;
32
+ case 'supersede': return `${b.new_patch_id} supersedes ${b.old_patch_id} (${b.overlap_rows} rows)`;
33
+ case 'subscribe': return `${b.action} ${b.branch}`;
34
+ case 'challenge': return `${b.patch_id} · ${b.reason}`;
35
+ default: return JSON.stringify(b).slice(0, 60);
36
+ }
37
+ }
38
+ /** Every name the record set itself carries, for the settle rows that pay those addresses (item 197). */
39
+ function nameOf(records) {
40
+ const m = new Map();
41
+ for (const r of records) {
42
+ const b = (r.body ?? {});
43
+ if (r.kind === 'node' && typeof b.address === 'string' && typeof b.name === 'string' && b.name)
44
+ m.set(b.address.toLowerCase(), b.name);
45
+ if (r.kind === 'anchor') {
46
+ if (typeof b.author === 'string' && typeof b.author_name === 'string' && b.author_name)
47
+ m.set(b.author.toLowerCase(), b.author_name);
48
+ for (const con of b.contributors ?? []) {
49
+ if (con.name && con.address)
50
+ m.set(con.address.toLowerCase(), con.name);
51
+ if (con.name && con.signer)
52
+ m.set(con.signer.toLowerCase(), con.name);
53
+ }
54
+ }
55
+ }
56
+ return (address) => m.get(address.toLowerCase());
57
+ }
58
+ export async function ledgerLs(ctx, a = {}) {
59
+ const d = await new NodeClient(ctx).get(`/api/ledger${query({ kind: a.kind, limit: a.limit ?? 50 })}`);
60
+ // "ledger is empty" two lines under "records 1223" was the lie: an empty *filter* is not an empty ledger (item 116)
61
+ const empty = a.kind
62
+ ? `no records of kind '${a.kind}' (${d.info.records} record(s) in the ledger)`
63
+ : d.info.records ? `no records in the newest ${a.limit ?? 50} (${d.info.records} in the ledger)` : 'ledger is empty';
64
+ emit(ctx, d, (x) => [
65
+ kv([['ledger', `${x.info.kind} · ${x.info.network}${x.info.provider ? ` · ${x.info.provider}` : ''}`], ['records', x.info.records], ['height', x.info.height ?? '-'], ['head', x.info.head ? shortHash(x.info.head, 20) : '-']]),
66
+ '',
67
+ table(x.records, [
68
+ { key: 't', title: 'AT', get: (r) => fmtTime(r.ts) }, { key: 'k', title: 'KIND', get: (r) => c.id(r.kind.padEnd(9)) },
69
+ { key: 'a', title: 'AUTHOR', get: (r) => shortAddr(r.author, 6) }, { key: 's', title: 'SUMMARY', get: (r) => summary(r, nameOf(x.records)) },
70
+ { key: 'h', title: 'HASH', get: (r) => shortHash(r.hash, 14) },
71
+ ], empty),
72
+ ].join('\n'));
73
+ return d;
74
+ }
75
+ export async function ledgerVerify(ctx) {
76
+ const d = await new NodeClient(ctx).get('/api/ledger/verify');
77
+ emit(ctx, d, (x) => (x.valid ? c.ok(`✓ ledger valid — ${x.checked} record(s) checked (hashes, signatures, imported chain linkage)`) : c.err(`✗ ledger INVALID — ${x.errors.length} problem(s):\n`) + x.errors.map((e) => ` - ${e}`).join('\n')));
78
+ return d;
79
+ }
80
+ export async function ledgerGraph(ctx) {
81
+ const g = await new NodeClient(ctx).get('/api/ledger/graph');
82
+ emit(ctx, g, (x) => {
83
+ const byId = new Map(x.nodes.map((n) => [n.id, n]));
84
+ const children = new Map();
85
+ const hasParent = new Set();
86
+ for (const e of x.edges.filter((e) => e.type === 'extends')) {
87
+ children.set(e.to, [...(children.get(e.to) ?? []), e.from]);
88
+ hasParent.add(e.from);
89
+ }
90
+ const sup = new Map();
91
+ for (const e of x.edges.filter((e) => e.type === 'supersedes'))
92
+ sup.set(e.from, [...(sup.get(e.from) ?? []), e.to]);
93
+ const lines = [c.head('lineage (child → parent edges, royalties flow upward)')];
94
+ const draw = (id, prefix, last, depth) => {
95
+ const n = byId.get(id);
96
+ const label = n ? `${c.id(id)} ${c.dim(`[${n.model} · ${n.schema}${n.branch ? ` · ${n.branch}` : ''}]`)} ${statusColor(n.status)}` : c.dim(id);
97
+ const s = sup.get(id)?.length ? c.dim(` supersedes ${sup.get(id).join(', ')}`) : '';
98
+ lines.push(depth === 0 ? `${label}${s}` : `${prefix}${last ? '└─ ' : '├─ '}${label}${s}`);
99
+ const kids = children.get(id) ?? [];
100
+ kids.forEach((k, i) => draw(k, depth === 0 ? '' : prefix + (last ? ' ' : '│ '), i === kids.length - 1, depth + 1));
101
+ };
102
+ const roots = x.nodes.filter((n) => !hasParent.has(n.id)).map((n) => n.id);
103
+ roots.forEach((r) => { draw(r, '', true, 0); lines.push(''); });
104
+ return lines.join('\n').trimEnd() || c.dim('(empty)');
105
+ });
106
+ return g;
107
+ }
108
+ /** The node returns the NEWEST `limit` records and cannot page backwards (GET /api/ledger). */
109
+ const EXPORT_MAX = 5000;
110
+ export async function ledgerExport(ctx, file) {
111
+ const client = new NodeClient(ctx);
112
+ // Ask how big the ledger is first, then ask for exactly that many: exporting a fixed 1,000 silently dropped
113
+ // everything older once the chain grew past it, and still printed "exported 1000 record(s)".
114
+ const head = await client.get('/api/ledger?limit=1');
115
+ const total = head.info.records ?? 0;
116
+ const want = Math.min(Math.max(total, 1), EXPORT_MAX);
117
+ const d = await client.get(`/api/ledger?limit=${want}`);
118
+ const recs = [...d.records].reverse();
119
+ writeFileSync(file, recs.map((r) => JSON.stringify(r)).join('\n') + (recs.length ? '\n' : ''));
120
+ ok(ctx, recs.length < total
121
+ ? `exported the most recent ${recs.length} of ${total} record(s) to ${file} — this node returns at most ${EXPORT_MAX} per request and cannot page further back`
122
+ : `exported ${recs.length} record(s) to ${file}`);
123
+ return recs.length;
124
+ }
125
+ //# sourceMappingURL=ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../src/commands/ledger.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAIlG;;;;;;GAMG;AACH,SAAS,OAAO,CAAC,CAAe,EAAE,KAA+C;IAC/E,MAAM,GAAG,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACtF,MAAM,CAAC,GAAG,CAAC,CAAC,IAA+B,CAAC;IAC5C,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,MAAO,CAAC,CAAC,KAA2B,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC;QAClH,KAAK,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;QACjH,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAA2B,CAAC;iBACrE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;iBACrE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,kBAAkB,IAAI,EAAE,CAA2B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5H,OAAO,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;kBAC1F,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;kBAC7D,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/G,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,MAAO,CAAC,CAAC,SAAsB,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC;QACxF,KAAK,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,QAAQ,MAAO,CAAC,CAAC,KAAkB,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtF,KAAK,WAAW,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,YAAY,eAAe,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,YAAY,QAAQ,CAAC;QACnG,KAAK,WAAW,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACnD,KAAK,WAAW,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;QACvD,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,yGAAyG;AACzG,SAAS,MAAM,CAAC,OAAuB;IACrC,MAAM,CAAC,GAAG,IAAI,GAAG,EAAkB,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;QACpD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI;YAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACvI,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxB,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW;gBAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;YACrI,KAAK,MAAM,GAAG,IAAK,CAAC,CAAC,YAAmF,IAAI,EAAE,EAAE,CAAC;gBAC/G,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO;oBAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBACxE,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM;oBAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAe,EAAE,IAA2C,EAAE;IAC3F,MAAM,CAAC,GAAG,MAAM,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAgD,cAAc,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACtJ,oHAAoH;IACpH,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI;QAClB,CAAC,CAAC,uBAAuB,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,2BAA2B;QAC9E,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,KAAK,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC;IACvH,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;QAClB,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChO,EAAE;QACF,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE;YACf,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YACrH,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE;YAC5I,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE;SAC/D,EAAE,KAAK,CAAC;KACV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACd,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAe;IAChD,MAAM,CAAC,GAAG,MAAM,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAwD,oBAAoB,CAAC,CAAC;IACrH,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,OAAO,iEAAiE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClP,OAAO,CAAC,CAAC;AACX,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAe;IAC/C,MAAM,CAAC,GAAG,MAAM,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,CAAgB,mBAAmB,CAAC,CAAC;IAC5E,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;QACjB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QACpJ,MAAM,GAAG,GAAG,IAAI,GAAG,EAAoB,CAAC;QACxC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpH,MAAM,KAAK,GAAa,CAAC,CAAC,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC,CAAC;QAC1F,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,MAAc,EAAE,IAAa,EAAE,KAAa,EAAE,EAAE;YACxE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvB,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/I,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1F,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACxH,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3E,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,CAAC;AACX,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAe,EAAE,IAAY;IAC9D,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;IACnC,4GAA4G;IAC5G,6FAA6F;IAC7F,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAuB,qBAAqB,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IACtD,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,GAAG,CAA8B,qBAAqB,IAAI,EAAE,CAAC,CAAC;IACrF,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;IACtC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/F,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK;QACzB,CAAC,CAAC,4BAA4B,IAAI,CAAC,MAAM,OAAO,KAAK,iBAAiB,IAAI,gCAAgC,UAAU,2CAA2C;QAC/J,CAAC,CAAC,YAAY,IAAI,CAAC,MAAM,iBAAiB,IAAI,EAAE,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC"}
@@ -0,0 +1,250 @@
1
+ import { type DiskReport, type GcCandidate, type SeedOptions, type SeedReport } from '@ainize/core';
2
+ import type { RunningNode } from '@ainize/node';
3
+ import { type CliContext } from '../context.js';
4
+ import { runningPid } from '../pid.js';
5
+ import { warn } from '../output.js';
6
+ import { type PeerStatus } from './peers.js';
7
+ export { runningPid };
8
+ export interface StartArgs {
9
+ port?: number;
10
+ peer?: string[];
11
+ detach?: boolean;
12
+ roles?: string;
13
+ publicUrl?: string;
14
+ }
15
+ /** Above this, `start -d` rolls node.log aside before appending (item 128: nothing ever rotated it). */
16
+ export declare const LOG_MAX_BYTES: number;
17
+ /** How many rolled generations are kept (node.log.1 … node.log.N). */
18
+ export declare const LOG_GENERATIONS = 2;
19
+ /**
20
+ * Roll node.log when it has grown past `LOG_MAX_BYTES`, keeping `LOG_GENERATIONS` older copies (item 128).
21
+ * `start -d` opened the file with 'a' and nothing ever truncated it, so a long-lived node's only crash log was
22
+ * also an unbounded consumer of the same volume as the blob store.
23
+ */
24
+ export declare function rotateLog(home: string): boolean;
25
+ /** Last `n` lines of the node log — the only place a failed start ever wrote its reason. */
26
+ export declare function logTail(home: string, n?: number): string;
27
+ /** Start the node in-process (returns when it is listening; caller keeps the event loop alive) or detached. */
28
+ export declare function start(ctx: CliContext, a?: StartArgs): Promise<RunningNode | {
29
+ detached: true;
30
+ pid: number;
31
+ log: string;
32
+ }>;
33
+ export declare function stop(ctx: CliContext): Promise<{
34
+ stopped: boolean;
35
+ pid: number | null;
36
+ killed?: boolean;
37
+ }>;
38
+ export interface InfoResponse {
39
+ node: {
40
+ address: string;
41
+ name: string;
42
+ endpoint: string;
43
+ roles: string[];
44
+ ledger: string;
45
+ model?: string;
46
+ branches: string[];
47
+ blobs: string[];
48
+ version: string;
49
+ build?: string;
50
+ config_version?: string;
51
+ };
52
+ ledger: {
53
+ kind: string;
54
+ network: string;
55
+ height?: number;
56
+ records: number;
57
+ provider?: string;
58
+ head?: string;
59
+ };
60
+ runtime: {
61
+ available: boolean;
62
+ api: string | null;
63
+ model: string | null;
64
+ hook: boolean;
65
+ repo: string | null;
66
+ error?: string;
67
+ applied?: string[];
68
+ /** item 144: the mailbox this node's applies are written into, and whether it was configured or derived. */
69
+ patch_dir?: string | null;
70
+ patch_dir_source?: 'config' | 'repo' | 'none';
71
+ /** item 135: the cross-process lock on the shared model, and how many callers are waiting behind it. */
72
+ queue?: {
73
+ running: {
74
+ label: string;
75
+ since: number;
76
+ } | null;
77
+ waiting: number;
78
+ lock: {
79
+ owner: string;
80
+ label: string;
81
+ since: number;
82
+ alive: boolean;
83
+ stale: boolean;
84
+ mine: boolean;
85
+ } | null;
86
+ };
87
+ /** item 215: the watchdog's last physical measurement of the table (`patch.py status`), not the store's flag. */
88
+ checked?: {
89
+ patch_id: string;
90
+ sha256: string;
91
+ at: number;
92
+ present: boolean;
93
+ source: string;
94
+ } | null;
95
+ };
96
+ quorum: number;
97
+ currency: string;
98
+ peers: number;
99
+ counts: {
100
+ patches: number;
101
+ listed: number;
102
+ };
103
+ /** item 142: what this node has to pay for announces, attestations and settlements. Operator session only. */
104
+ balance?: number | null;
105
+ /** item 170: how many peers ANSWERED, how many of those verify, and which are on a ledger this node cannot read. */
106
+ peer_status?: PeerStatus;
107
+ /** item 128: bytes held on disk, and what is free on the volume. Absent on nodes older than this CLI. */
108
+ disk?: DiskReport;
109
+ }
110
+ /** `1.1 GB (bodies 932 MB · sets 0 B · uploads 115 MB · db 9 MB) · 12 GB free` — item 128. */
111
+ export declare function diskLine(d: DiskReport | undefined, showReclaimable?: boolean): string;
112
+ /** What build is actually running — with the config's own version only when it differs (item 141). */
113
+ export declare function nodeVersion(n: InfoResponse['node']): string;
114
+ export interface ReadyResponse {
115
+ ok: boolean;
116
+ node: string;
117
+ address: string;
118
+ version: string;
119
+ checks: {
120
+ ledger: {
121
+ ok: boolean;
122
+ kind: string;
123
+ height: number | null;
124
+ records: number | null;
125
+ error?: string;
126
+ };
127
+ runtime: {
128
+ ok: boolean;
129
+ required: boolean;
130
+ available: boolean;
131
+ model: string | null;
132
+ error?: string;
133
+ };
134
+ peers: {
135
+ ok: boolean;
136
+ configured: number;
137
+ unreachable: number;
138
+ };
139
+ };
140
+ }
141
+ /**
142
+ * `status --check`: the node's own readiness, for a monitor or a deploy script. Exit 1 when a check fails —
143
+ * `/api/info` answers 200 whether the model server is up or down, so it could never be a health check (item 134).
144
+ */
145
+ export declare function statusCheck(ctx: CliContext): Promise<ReadyResponse>;
146
+ /**
147
+ * `available · Qwen3.8-Flash-Next · hook ok · held by pid:1859000 (runtime) for 4m · 2 waiting` (item 135).
148
+ *
149
+ * Several nodes on one host serialise on a cross-process lock in the shared patch directory, with a 20-minute wait
150
+ * before a caller gives up. The holder was reported only to visitors through the chat endpoints, so the commonest
151
+ * cause of "why is nothing happening" on a multi-node host was invisible on every operator surface.
152
+ */
153
+ export declare function runtimeLine(r: InfoResponse['runtime']): string;
154
+ /**
155
+ * `09-01 → 09-02 · on the table (checked 12 s ago)` (item 215). `applied` is a row in this node's database; the only
156
+ * thing that knows whether the rows are physically there is the watchdog's `patch.py status`, every 20 s, on the top
157
+ * of the stack. Through a rollback and through every verification restore the flag said yes and the model answered no.
158
+ */
159
+ export declare function appliedLine(r: InfoResponse['runtime']): string;
160
+ /** `3 known · 3 answered · 2 verifiers` — the peer count alone said nothing about whether anyone was there (item 170). */
161
+ export declare function peersLine(st: PeerStatus | undefined, fallback: number): string;
162
+ export declare function status(ctx: CliContext): Promise<InfoResponse>;
163
+ /** `18s` / `12m` / `4h 03m` / `9d` — an age a column can hold, for the SEEN column and the peer state. */
164
+ export declare function relAge(ms: number): string;
165
+ export interface EventRow {
166
+ seq: number;
167
+ ts: number;
168
+ level: string;
169
+ kind: string;
170
+ patch_id: string | null;
171
+ message: string;
172
+ data: unknown;
173
+ }
174
+ /**
175
+ * The event table read straight from `<dataDir>/node.sqlite` (item 131).
176
+ *
177
+ * `ainize logs` fetched `/api/events` over HTTP, so it worked only while the node was up — and a crash is precisely
178
+ * when the log is needed. The rows are in the node's own database either way; this reads them with no node. Opened
179
+ * read-only when SQLite allows it (a WAL left behind by a kill needs a writable open to be replayed).
180
+ */
181
+ export declare function offlineEvents(dataDir: string, a?: {
182
+ limit?: number;
183
+ kind?: string;
184
+ level?: string;
185
+ patch?: string;
186
+ }): EventRow[];
187
+ export declare function logs(ctx: CliContext, a?: {
188
+ follow?: boolean;
189
+ patch?: string;
190
+ limit?: number;
191
+ kind?: string;
192
+ level?: string;
193
+ }): Promise<EventRow[]>;
194
+ export declare function seed(ctx: CliContext, opts?: SeedOptions): Promise<SeedReport>;
195
+ export interface BlobRowView {
196
+ sha256: string;
197
+ path: string;
198
+ size_bytes: number;
199
+ rows: number;
200
+ imported_at: number;
201
+ patch_id: string | null;
202
+ name: string | null;
203
+ status: string | null;
204
+ mine: boolean;
205
+ purchased: boolean;
206
+ applied: boolean;
207
+ reclaimable: boolean;
208
+ holders: number;
209
+ }
210
+ export declare function blobsLs(ctx: CliContext): Promise<{
211
+ items: BlobRowView[];
212
+ disk: DiskReport;
213
+ kept: Record<string, number>;
214
+ }>;
215
+ export interface GcArgs {
216
+ dryRun?: boolean;
217
+ keepPurchased?: boolean;
218
+ olderThan?: string;
219
+ allowSoleCopy?: boolean;
220
+ yes?: boolean;
221
+ }
222
+ /** `--older-than 30d` / `12h` / `90` (days). */
223
+ export declare function parseAge(v: string | undefined): number | undefined;
224
+ export interface GcResponse {
225
+ candidates: GcCandidate[];
226
+ removed: GcCandidate[];
227
+ freed: number;
228
+ bytes: number;
229
+ dry_run: boolean;
230
+ kept: Record<string, number>;
231
+ disk: DiskReport;
232
+ }
233
+ /**
234
+ * `ainize gc` — give back the disk that verification duty cost (item 128). A dry run first, always: the operator
235
+ * sees every body and its size before anything is deleted, and `--yes` is what turns the plan into a deletion.
236
+ */
237
+ export declare function gc(ctx: CliContext, a?: GcArgs): Promise<GcResponse>;
238
+ export interface NodesArgs {
239
+ all?: boolean;
240
+ limit?: number;
241
+ }
242
+ /** How recently a node must have been heard from to make the default `ainize nodes` list (item 140). */
243
+ export declare const NODES_RECENT_MS = 3600000;
244
+ export declare function nodesTable(ctx: CliContext, a?: NodesArgs): Promise<{
245
+ nodes: unknown[];
246
+ peers: unknown[];
247
+ self: string;
248
+ }>;
249
+ export { warn };
250
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/commands/node.ts"],"names":[],"mappings":"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"}