@inkd/cli 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 (54) hide show
  1. package/README.md +226 -0
  2. package/dist/abi.d.ts +408 -0
  3. package/dist/abi.d.ts.map +1 -0
  4. package/dist/abi.js +283 -0
  5. package/dist/abi.js.map +1 -0
  6. package/dist/client.d.ts +19 -0
  7. package/dist/client.d.ts.map +1 -0
  8. package/dist/client.js +34 -0
  9. package/dist/client.js.map +1 -0
  10. package/dist/commands/agent.d.ts +10 -0
  11. package/dist/commands/agent.d.ts.map +1 -0
  12. package/dist/commands/agent.js +106 -0
  13. package/dist/commands/agent.js.map +1 -0
  14. package/dist/commands/agentd.d.ts +35 -0
  15. package/dist/commands/agentd.d.ts.map +1 -0
  16. package/dist/commands/agentd.js +336 -0
  17. package/dist/commands/agentd.js.map +1 -0
  18. package/dist/commands/init.d.ts +5 -0
  19. package/dist/commands/init.d.ts.map +1 -0
  20. package/dist/commands/init.js +25 -0
  21. package/dist/commands/init.js.map +1 -0
  22. package/dist/commands/project.d.ts +16 -0
  23. package/dist/commands/project.d.ts.map +1 -0
  24. package/dist/commands/project.js +222 -0
  25. package/dist/commands/project.js.map +1 -0
  26. package/dist/commands/search.d.ts +14 -0
  27. package/dist/commands/search.d.ts.map +1 -0
  28. package/dist/commands/search.js +141 -0
  29. package/dist/commands/search.js.map +1 -0
  30. package/dist/commands/status.d.ts +5 -0
  31. package/dist/commands/status.d.ts.map +1 -0
  32. package/dist/commands/status.js +44 -0
  33. package/dist/commands/status.js.map +1 -0
  34. package/dist/commands/token.d.ts +46 -0
  35. package/dist/commands/token.d.ts.map +1 -0
  36. package/dist/commands/token.js +410 -0
  37. package/dist/commands/token.js.map +1 -0
  38. package/dist/commands/version.d.ts +12 -0
  39. package/dist/commands/version.d.ts.map +1 -0
  40. package/dist/commands/version.js +134 -0
  41. package/dist/commands/version.js.map +1 -0
  42. package/dist/commands/watch.d.ts +16 -0
  43. package/dist/commands/watch.d.ts.map +1 -0
  44. package/dist/commands/watch.js +175 -0
  45. package/dist/commands/watch.js.map +1 -0
  46. package/dist/config.d.ts +42 -0
  47. package/dist/config.d.ts.map +1 -0
  48. package/dist/config.js +94 -0
  49. package/dist/config.js.map +1 -0
  50. package/dist/index.d.ts +23 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +258 -0
  53. package/dist/index.js.map +1 -0
  54. package/package.json +59 -0
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ /**
3
+ * inkd watch — stream on-chain Inkd Protocol events in real-time
4
+ *
5
+ * Sub-commands:
6
+ * all — all events (default)
7
+ * projects — ProjectCreated + ProjectUpdated events only
8
+ * versions — VersionPushed events only
9
+ * agents — agent-related events only
10
+ *
11
+ * Flags:
12
+ * --poll <ms> Polling interval in ms (default: 3000)
13
+ * --from <block> Start block (default: latest - 1000)
14
+ * --json Output raw JSON (for piping)
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.cmdWatch = cmdWatch;
18
+ const viem_1 = require("viem");
19
+ const config_js_1 = require("../config.js");
20
+ const client_js_1 = require("../client.js");
21
+ // ─── Event signatures ─────────────────────────────────────────────────────────
22
+ const WATCH_ABI = (0, viem_1.parseAbi)([
23
+ 'event ProjectCreated(uint256 indexed projectId, address indexed owner, string name, bool isAgent)',
24
+ 'event VersionPushed(uint256 indexed projectId, uint256 indexed versionIndex, string arweaveHash, string versionTag)',
25
+ 'event ProjectTransferred(uint256 indexed projectId, address indexed from, address indexed to)',
26
+ 'event CollaboratorAdded(uint256 indexed projectId, address indexed collaborator)',
27
+ 'event CollaboratorRemoved(uint256 indexed projectId, address indexed collaborator)',
28
+ 'event VisibilityChanged(uint256 indexed projectId, bool isPublic)',
29
+ 'event ReadmeUpdated(uint256 indexed projectId, string arweaveHash)',
30
+ 'event AgentEndpointUpdated(uint256 indexed projectId, string endpoint)',
31
+ ]);
32
+ function parseFlag(args, flag) {
33
+ const i = args.indexOf(flag);
34
+ return i !== -1 && args[i + 1] ? args[i + 1] : undefined;
35
+ }
36
+ function formatTs() {
37
+ return new Date().toISOString().replace('T', ' ').slice(0, 19);
38
+ }
39
+ function renderEvent(log, jsonMode) {
40
+ try {
41
+ const decoded = (0, viem_1.decodeEventLog)({ abi: WATCH_ABI, data: log.data, topics: log.topics });
42
+ const name = decoded.eventName;
43
+ const args = decoded.args;
44
+ if (jsonMode) {
45
+ console.log(JSON.stringify({
46
+ event: name,
47
+ block: log.blockNumber?.toString(),
48
+ tx: log.transactionHash,
49
+ args: Object.fromEntries(Object.entries(args).map(([k, v]) => [k, typeof v === 'bigint' ? v.toString() : v])),
50
+ timestamp: formatTs(),
51
+ }));
52
+ return;
53
+ }
54
+ const ts = config_js_1.DIM + formatTs() + config_js_1.RESET;
55
+ const block = config_js_1.DIM + `#${log.blockNumber}` + config_js_1.RESET;
56
+ switch (name) {
57
+ case 'ProjectCreated': {
58
+ const badge = args['isAgent'] ? config_js_1.CYAN + ' [agent]' + config_js_1.RESET : '';
59
+ console.log(`${ts} ${config_js_1.GREEN}✦ ProjectCreated${config_js_1.RESET}${badge} ${block}`);
60
+ console.log(` id=${config_js_1.CYAN}${args['projectId']}${config_js_1.RESET} owner=${config_js_1.DIM}${String(args['owner']).slice(0, 10)}…${config_js_1.RESET} name=${config_js_1.BOLD}${args['name']}${config_js_1.RESET}`);
61
+ break;
62
+ }
63
+ case 'VersionPushed':
64
+ console.log(`${ts} ${config_js_1.CYAN}↑ VersionPushed${config_js_1.RESET} ${block}`);
65
+ console.log(` project=${config_js_1.CYAN}#${args['projectId']}${config_js_1.RESET} tag=${config_js_1.BOLD}${args['versionTag']}${config_js_1.RESET} hash=${config_js_1.DIM}ar://${String(args['arweaveHash']).slice(0, 12)}…${config_js_1.RESET}`);
66
+ break;
67
+ case 'ProjectTransferred':
68
+ console.log(`${ts} ${config_js_1.YELLOW}⇄ ProjectTransferred${config_js_1.RESET} ${block}`);
69
+ console.log(` project=${config_js_1.CYAN}#${args['projectId']}${config_js_1.RESET} from=${config_js_1.DIM}${String(args['from']).slice(0, 10)}…${config_js_1.RESET} to=${String(args['to']).slice(0, 10)}…`);
70
+ break;
71
+ case 'CollaboratorAdded':
72
+ console.log(`${ts} ${config_js_1.GREEN}+ CollaboratorAdded${config_js_1.RESET} ${block} project=${config_js_1.CYAN}#${args['projectId']}${config_js_1.RESET} ${config_js_1.DIM}${String(args['collaborator']).slice(0, 10)}…${config_js_1.RESET}`);
73
+ break;
74
+ case 'CollaboratorRemoved':
75
+ console.log(`${ts} ${config_js_1.YELLOW}- CollaboratorRemoved${config_js_1.RESET} ${block} project=${config_js_1.CYAN}#${args['projectId']}${config_js_1.RESET} ${config_js_1.DIM}${String(args['collaborator']).slice(0, 10)}…${config_js_1.RESET}`);
76
+ break;
77
+ case 'VisibilityChanged':
78
+ console.log(`${ts} ${config_js_1.CYAN}◎ VisibilityChanged${config_js_1.RESET} ${block} project=${config_js_1.CYAN}#${args['projectId']}${config_js_1.RESET} public=${args['isPublic'] ? config_js_1.GREEN + 'true' : config_js_1.YELLOW + 'false'}${config_js_1.RESET}`);
79
+ break;
80
+ case 'ReadmeUpdated':
81
+ console.log(`${ts} ${config_js_1.DIM}📄 ReadmeUpdated${config_js_1.RESET} project=${config_js_1.CYAN}#${args['projectId']}${config_js_1.RESET} hash=${config_js_1.DIM}ar://${String(args['arweaveHash']).slice(0, 12)}…${config_js_1.RESET}`);
82
+ break;
83
+ case 'AgentEndpointUpdated':
84
+ console.log(`${ts} ${config_js_1.CYAN}⚡ AgentEndpointUpdated${config_js_1.RESET} project=${config_js_1.CYAN}#${args['projectId']}${config_js_1.RESET} endpoint=${args['endpoint']}`);
85
+ break;
86
+ default:
87
+ console.log(`${ts} ${name} ${block} ${config_js_1.DIM}${JSON.stringify(args)}${config_js_1.RESET}`);
88
+ }
89
+ }
90
+ catch {
91
+ // unknown log — show raw
92
+ if (jsonMode) {
93
+ console.log(JSON.stringify({ raw: log.transactionHash, block: log.blockNumber?.toString() }));
94
+ }
95
+ }
96
+ }
97
+ // ─── Determine which events to include ───────────────────────────────────────
98
+ const FILTER_MAP = {
99
+ all: ['ProjectCreated', 'VersionPushed', 'ProjectTransferred', 'CollaboratorAdded', 'CollaboratorRemoved', 'VisibilityChanged', 'ReadmeUpdated', 'AgentEndpointUpdated'],
100
+ projects: ['ProjectCreated', 'ProjectTransferred', 'VisibilityChanged', 'ReadmeUpdated'],
101
+ versions: ['VersionPushed'],
102
+ agents: ['ProjectCreated', 'AgentEndpointUpdated'],
103
+ };
104
+ // ─── Main ─────────────────────────────────────────────────────────────────────
105
+ async function cmdWatch(args) {
106
+ const filterArg = (args[0] && !args[0].startsWith('--') ? args[0] : 'all');
107
+ if (!FILTER_MAP[filterArg]) {
108
+ (0, config_js_1.error)(`Unknown filter "${filterArg}". Use: all | projects | versions | agents`);
109
+ }
110
+ const pollMs = parseInt(parseFlag(args, '--poll') ?? '3000', 10);
111
+ const fromArg = parseFlag(args, '--from');
112
+ const jsonMode = args.includes('--json');
113
+ const cfg = (0, config_js_1.loadConfig)();
114
+ const addrs = config_js_1.ADDRESSES[cfg.network];
115
+ if (!addrs.registry)
116
+ (0, config_js_1.error)('Registry address not configured. Deploy contracts first.');
117
+ const client = (0, client_js_1.buildPublicClient)(cfg);
118
+ // Determine starting block
119
+ let fromBlock;
120
+ if (fromArg) {
121
+ fromBlock = BigInt(fromArg);
122
+ }
123
+ else {
124
+ const latest = await client.getBlockNumber();
125
+ fromBlock = latest > 1000n ? latest - 1000n : 0n;
126
+ }
127
+ if (!jsonMode) {
128
+ console.log();
129
+ console.log(` ${config_js_1.BOLD}Inkd Protocol — Live Event Feed${config_js_1.RESET}`);
130
+ console.log(` ${'─'.repeat(50)}`);
131
+ (0, config_js_1.info)(`Network: ${config_js_1.CYAN}${cfg.network}${config_js_1.RESET}`);
132
+ (0, config_js_1.info)(`Registry: ${config_js_1.DIM}${addrs.registry}${config_js_1.RESET}`);
133
+ (0, config_js_1.info)(`Filter: ${config_js_1.CYAN}${filterArg}${config_js_1.RESET} (${FILTER_MAP[filterArg].join(', ')})`);
134
+ (0, config_js_1.info)(`Polling: every ${pollMs}ms`);
135
+ (0, config_js_1.info)(`From: block #${fromBlock}`);
136
+ console.log();
137
+ console.log(` ${config_js_1.DIM}Watching… (Ctrl+C to stop)${config_js_1.RESET}`);
138
+ console.log();
139
+ }
140
+ let lastBlock = fromBlock;
141
+ let seenCount = 0;
142
+ while (true) {
143
+ try {
144
+ const currentBlock = await client.getBlockNumber();
145
+ if (currentBlock > lastBlock) {
146
+ const logs = await client.getLogs({
147
+ address: addrs.registry,
148
+ fromBlock: lastBlock + 1n,
149
+ toBlock: currentBlock,
150
+ });
151
+ for (const log of logs) {
152
+ // Attempt to decode and filter by event name
153
+ try {
154
+ const decoded = (0, viem_1.decodeEventLog)({ abi: WATCH_ABI, data: log.data, topics: log.topics });
155
+ if (FILTER_MAP[filterArg].includes(decoded.eventName)) {
156
+ renderEvent(log, jsonMode);
157
+ seenCount++;
158
+ }
159
+ }
160
+ catch {
161
+ // not one of our events
162
+ }
163
+ }
164
+ lastBlock = currentBlock;
165
+ }
166
+ }
167
+ catch (e) {
168
+ if (!jsonMode) {
169
+ console.error(`${config_js_1.DIM}[${formatTs()}] Poll error: ${e.message}${config_js_1.RESET}`);
170
+ }
171
+ }
172
+ await new Promise(r => setTimeout(r, pollMs));
173
+ }
174
+ }
175
+ //# sourceMappingURL=watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Inkd CLI — Config management
3
+ * Reads inkd.config.json from cwd, or falls back to env vars.
4
+ */
5
+ import type { Address } from 'viem';
6
+ export interface InkdConfig {
7
+ network: 'mainnet' | 'testnet';
8
+ rpcUrl?: string;
9
+ /** Private key hex string. Prefer INKD_PRIVATE_KEY env var over storing in file. */
10
+ privateKey?: string;
11
+ }
12
+ export declare const DEFAULT_CONFIG: InkdConfig;
13
+ export declare function loadConfig(): InkdConfig;
14
+ export declare function writeConfig(cfg: InkdConfig): void;
15
+ export declare function requirePrivateKey(cfg: InkdConfig): `0x${string}`;
16
+ export declare const ADDRESSES: {
17
+ readonly mainnet: {
18
+ readonly token: Address;
19
+ readonly registry: Address;
20
+ readonly treasury: Address;
21
+ readonly rpcUrl: "https://mainnet.base.org";
22
+ };
23
+ readonly testnet: {
24
+ readonly token: Address;
25
+ readonly registry: Address;
26
+ readonly treasury: Address;
27
+ readonly rpcUrl: "https://mainnet.base.org";
28
+ };
29
+ };
30
+ export type Network = keyof typeof ADDRESSES;
31
+ export declare function error(msg: string): never;
32
+ export declare function success(msg: string): void;
33
+ export declare function info(msg: string): void;
34
+ export declare function warn(msg: string): void;
35
+ export declare const RED: string;
36
+ export declare const GREEN: string;
37
+ export declare const YELLOW: string;
38
+ export declare const CYAN: string;
39
+ export declare const BOLD: string;
40
+ export declare const DIM: string;
41
+ export declare const RESET: string;
42
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,SAAS,GAAG,SAAS,CAAA;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,cAAc,EAAE,UAE5B,CAAA;AAID,wBAAgB,UAAU,IAAI,UAAU,CAkBvC;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAKjD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,KAAK,MAAM,EAAE,CAWhE;AAID,eAAO,MAAM,SAAS;;wBAGF,OAAO;2BACP,OAAO;2BACP,OAAO;;;;wBAKmC,OAAO;2BACP,OAAO;2BACP,OAAO;;;CAG3D,CAAA;AAEV,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,SAAS,CAAA;AAI5C,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAGxC;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAKD,eAAO,MAAM,GAAG,QAA+B,CAAA;AAC/C,eAAO,MAAM,KAAK,QAA6B,CAAA;AAC/C,eAAO,MAAM,MAAM,QAA4B,CAAA;AAC/C,eAAO,MAAM,IAAI,QAA8B,CAAA;AAC/C,eAAO,MAAM,IAAI,QAA6B,CAAA;AAC9C,eAAO,MAAM,GAAG,QAA8B,CAAA;AAC9C,eAAO,MAAM,KAAK,QAA4B,CAAA"}
package/dist/config.js ADDED
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ /**
3
+ * Inkd CLI — Config management
4
+ * Reads inkd.config.json from cwd, or falls back to env vars.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.RESET = exports.DIM = exports.BOLD = exports.CYAN = exports.YELLOW = exports.GREEN = exports.RED = exports.ADDRESSES = exports.DEFAULT_CONFIG = void 0;
8
+ exports.loadConfig = loadConfig;
9
+ exports.writeConfig = writeConfig;
10
+ exports.requirePrivateKey = requirePrivateKey;
11
+ exports.error = error;
12
+ exports.success = success;
13
+ exports.info = info;
14
+ exports.warn = warn;
15
+ const fs_1 = require("fs");
16
+ const path_1 = require("path");
17
+ exports.DEFAULT_CONFIG = {
18
+ network: 'testnet',
19
+ };
20
+ const CONFIG_FILE = 'inkd.config.json';
21
+ function loadConfig() {
22
+ const path = (0, path_1.resolve)(process.cwd(), CONFIG_FILE);
23
+ let file = {};
24
+ if ((0, fs_1.existsSync)(path)) {
25
+ try {
26
+ file = JSON.parse((0, fs_1.readFileSync)(path, 'utf-8'));
27
+ }
28
+ catch {
29
+ error(`Failed to parse ${CONFIG_FILE}. Is it valid JSON?`);
30
+ }
31
+ }
32
+ // Env var overrides
33
+ const privateKey = process.env['INKD_PRIVATE_KEY'] ?? file.privateKey;
34
+ const rpcUrl = process.env['INKD_RPC_URL'] ?? file.rpcUrl;
35
+ const network = (process.env['INKD_NETWORK'] ?? file.network ?? 'testnet');
36
+ return { network, rpcUrl, privateKey };
37
+ }
38
+ function writeConfig(cfg) {
39
+ const path = (0, path_1.resolve)(process.cwd(), CONFIG_FILE);
40
+ // Never persist private key to file
41
+ const { privateKey: _pk, ...safe } = cfg;
42
+ (0, fs_1.writeFileSync)(path, JSON.stringify(safe, null, 2) + '\n', 'utf-8');
43
+ }
44
+ function requirePrivateKey(cfg) {
45
+ const key = cfg.privateKey ?? process.env['INKD_PRIVATE_KEY'];
46
+ if (!key) {
47
+ error('Private key not found.\n' +
48
+ ' Set INKD_PRIVATE_KEY env var, or add "privateKey" to inkd.config.json\n' +
49
+ ' Example: export INKD_PRIVATE_KEY=0xabc123...');
50
+ }
51
+ const hex = key.startsWith('0x') ? key : `0x${key}`;
52
+ return hex;
53
+ }
54
+ // ─── Inkd contract addresses ─────────────────────────────────────────────────
55
+ exports.ADDRESSES = {
56
+ mainnet: {
57
+ // $INKD — real launch (tonight)
58
+ token: '',
59
+ registry: '',
60
+ treasury: '',
61
+ rpcUrl: 'https://mainnet.base.org',
62
+ },
63
+ testnet: {
64
+ // $TEST — beta launch on Base mainnet (2026-03-03)
65
+ token: '0xdea1645d97AE3090fb787bbdB49cf6D5638c1b55',
66
+ registry: '0x8daD662a4dEAF42187F5abeBC18886175a75A364',
67
+ treasury: '0x1B24F377C5264d07E7443cB714D27fA484BE0F02',
68
+ rpcUrl: 'https://mainnet.base.org',
69
+ },
70
+ };
71
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
72
+ function error(msg) {
73
+ console.error(`\n ${exports.RED}✗${exports.RESET} ${msg}\n`);
74
+ process.exit(1);
75
+ }
76
+ function success(msg) {
77
+ console.log(`\n ${exports.GREEN}✓${exports.RESET} ${msg}\n`);
78
+ }
79
+ function info(msg) {
80
+ console.log(` ${exports.CYAN}→${exports.RESET} ${msg}`);
81
+ }
82
+ function warn(msg) {
83
+ console.warn(` ${exports.YELLOW}⚠${exports.RESET} ${msg}`);
84
+ }
85
+ // ─── ANSI colours ─────────────────────────────────────────────────────────────
86
+ const noColor = process.env['NO_COLOR'] !== undefined || !process.stdout.isTTY;
87
+ exports.RED = noColor ? '' : '\x1b[31m';
88
+ exports.GREEN = noColor ? '' : '\x1b[32m';
89
+ exports.YELLOW = noColor ? '' : '\x1b[33m';
90
+ exports.CYAN = noColor ? '' : '\x1b[36m';
91
+ exports.BOLD = noColor ? '' : '\x1b[1m';
92
+ exports.DIM = noColor ? '' : '\x1b[2m';
93
+ exports.RESET = noColor ? '' : '\x1b[0m';
94
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @inkd/cli — Inkd Protocol command-line interface
4
+ *
5
+ * Usage: inkd <command> [sub-command] [flags]
6
+ *
7
+ * Commands:
8
+ * init Scaffold inkd.config.json
9
+ * status Show network status and fees
10
+ * project create Register a new project (locks 1 $INKD)
11
+ * project get <id> Fetch project details
12
+ * project list <address> List projects owned by an address
13
+ * project transfer Transfer project ownership
14
+ * project collab add|remove Manage collaborators
15
+ * version push Push a new version to a project
16
+ * version list <id> List all versions for a project
17
+ * version show Show a specific version
18
+ * agent list Browse agent directory
19
+ * agent lookup <name> Find an agent project by name
20
+ * help Show this help message
21
+ */
22
+ export {};
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;GAmBG"}
package/dist/index.js ADDED
@@ -0,0 +1,258 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * @inkd/cli — Inkd Protocol command-line interface
5
+ *
6
+ * Usage: inkd <command> [sub-command] [flags]
7
+ *
8
+ * Commands:
9
+ * init Scaffold inkd.config.json
10
+ * status Show network status and fees
11
+ * project create Register a new project (locks 1 $INKD)
12
+ * project get <id> Fetch project details
13
+ * project list <address> List projects owned by an address
14
+ * project transfer Transfer project ownership
15
+ * project collab add|remove Manage collaborators
16
+ * version push Push a new version to a project
17
+ * version list <id> List all versions for a project
18
+ * version show Show a specific version
19
+ * agent list Browse agent directory
20
+ * agent lookup <name> Find an agent project by name
21
+ * help Show this help message
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ const config_js_1 = require("./config.js");
25
+ const init_js_1 = require("./commands/init.js");
26
+ const status_js_1 = require("./commands/status.js");
27
+ const project_js_1 = require("./commands/project.js");
28
+ const version_js_1 = require("./commands/version.js");
29
+ const agent_js_1 = require("./commands/agent.js");
30
+ const watch_js_1 = require("./commands/watch.js");
31
+ const search_js_1 = require("./commands/search.js");
32
+ const agentd_js_1 = require("./commands/agentd.js");
33
+ const token_js_1 = require("./commands/token.js");
34
+ // ─── Help ─────────────────────────────────────────────────────────────────────
35
+ function showHelp() {
36
+ console.log(`
37
+ ${config_js_1.BOLD}inkd${config_js_1.RESET} — Inkd Protocol CLI ${config_js_1.DIM}v0.1.0${config_js_1.RESET}
38
+
39
+ ${config_js_1.DIM}Ownership layer for AI agents. Every file is a token.${config_js_1.RESET}
40
+
41
+ ${config_js_1.BOLD}USAGE${config_js_1.RESET}
42
+ inkd <command> [sub-command] [flags]
43
+
44
+ ${config_js_1.BOLD}COMMANDS${config_js_1.RESET}
45
+ ${config_js_1.CYAN}init${config_js_1.RESET} Scaffold ${config_js_1.DIM}inkd.config.json${config_js_1.RESET} in current dir
46
+ ${config_js_1.CYAN}status${config_js_1.RESET} Show network, contract addresses, and fees
47
+ ${config_js_1.CYAN}help${config_js_1.RESET} Show this help message
48
+
49
+ ${config_js_1.BOLD}PROJECT${config_js_1.RESET}
50
+ ${config_js_1.CYAN}project create${config_js_1.RESET} Register a new project (locks 1 $INKD)
51
+ ${config_js_1.DIM}--name <name>${config_js_1.RESET} Project name (required, unique, lowercased)
52
+ ${config_js_1.DIM}--description <desc>${config_js_1.RESET} Short description
53
+ ${config_js_1.DIM}--license <spdx>${config_js_1.RESET} SPDX license identifier (default: MIT)
54
+ ${config_js_1.DIM}--readme <arweave-hash>${config_js_1.RESET} Arweave hash of the README
55
+ ${config_js_1.DIM}--private${config_js_1.RESET} Make project private (default: public)
56
+ ${config_js_1.DIM}--agent${config_js_1.RESET} Flag as AI agent project
57
+ ${config_js_1.DIM}--endpoint <url>${config_js_1.RESET} Agent endpoint URL (if --agent)
58
+
59
+ ${config_js_1.CYAN}project get${config_js_1.RESET} <id> Fetch project details
60
+ ${config_js_1.CYAN}project list${config_js_1.RESET} <address> List projects owned by address
61
+ ${config_js_1.CYAN}project transfer${config_js_1.RESET} Transfer project ownership
62
+ ${config_js_1.DIM}--id <id>${config_js_1.RESET} Project ID (required)
63
+ ${config_js_1.DIM}--to <address>${config_js_1.RESET} New owner address (required)
64
+
65
+ ${config_js_1.CYAN}project collab${config_js_1.RESET} add|remove Manage collaborators
66
+ ${config_js_1.DIM}--id <id>${config_js_1.RESET} Project ID (required)
67
+ ${config_js_1.DIM}--address <address>${config_js_1.RESET} Collaborator address (required)
68
+
69
+ ${config_js_1.BOLD}VERSION${config_js_1.RESET}
70
+ ${config_js_1.CYAN}version push${config_js_1.RESET} Push a new version (requires versionFee ETH)
71
+ ${config_js_1.DIM}--id <id>${config_js_1.RESET} Project ID (required)
72
+ ${config_js_1.DIM}--hash <arweave-hash>${config_js_1.RESET} Arweave content hash (required)
73
+ ${config_js_1.DIM}--tag <semver>${config_js_1.RESET} Version tag e.g. v1.2.3 (required)
74
+ ${config_js_1.DIM}--changelog <text>${config_js_1.RESET} Changelog notes
75
+
76
+ ${config_js_1.CYAN}version list${config_js_1.RESET} <id> List all versions for a project
77
+ ${config_js_1.CYAN}version show${config_js_1.RESET} Show a specific version
78
+ ${config_js_1.DIM}--id <id>${config_js_1.RESET} Project ID (required)
79
+ ${config_js_1.DIM}--index <n>${config_js_1.RESET} Version index, 0-based (required)
80
+
81
+ ${config_js_1.BOLD}AGENT${config_js_1.RESET}
82
+ ${config_js_1.CYAN}agent list${config_js_1.RESET} Browse the agent project directory
83
+ ${config_js_1.DIM}--offset <n>${config_js_1.RESET} Pagination offset (default: 0)
84
+ ${config_js_1.DIM}--limit <n>${config_js_1.RESET} Page size (default: 25)
85
+
86
+ ${config_js_1.CYAN}agent lookup${config_js_1.RESET} <name> Find agent project by name
87
+
88
+ ${config_js_1.BOLD}TOKEN${config_js_1.RESET}
89
+ ${config_js_1.CYAN}token balance${config_js_1.RESET} [address] Show $INKD + ETH balance (default: own wallet)
90
+ ${config_js_1.CYAN}token allowance${config_js_1.RESET} [address] Check registry spend allowance
91
+ ${config_js_1.CYAN}token approve${config_js_1.RESET} <amount> Approve registry to spend N $INKD
92
+ ${config_js_1.CYAN}token transfer${config_js_1.RESET} <to> <amount> Send $INKD to another address
93
+ ${config_js_1.CYAN}token info${config_js_1.RESET} Show total supply + token metadata
94
+ ${config_js_1.DIM}--json${config_js_1.RESET} JSON output for all token commands
95
+
96
+ ${config_js_1.BOLD}SEARCH${config_js_1.RESET}
97
+ ${config_js_1.CYAN}search${config_js_1.RESET} <query> Search projects by name or description
98
+ ${config_js_1.DIM}--agents${config_js_1.RESET} Only search agent projects
99
+ ${config_js_1.DIM}--limit <n>${config_js_1.RESET} Max results (default: 20)
100
+ ${config_js_1.DIM}--json${config_js_1.RESET} JSON output (for scripting)
101
+
102
+ ${config_js_1.BOLD}DAEMON${config_js_1.RESET}
103
+ ${config_js_1.CYAN}agentd start${config_js_1.RESET} Run autonomous agent daemon (long-running)
104
+ ${config_js_1.DIM}--interval <ms>${config_js_1.RESET} Sync interval in ms (default: 60000)
105
+ ${config_js_1.DIM}--dry-run${config_js_1.RESET} Simulate only — no on-chain transactions
106
+ ${config_js_1.DIM}--quiet${config_js_1.RESET} Only print errors
107
+ ${config_js_1.DIM}--json${config_js_1.RESET} Newline-delimited JSON output (for log pipelines)
108
+ ${config_js_1.DIM}--once${config_js_1.RESET} Single cycle then exit (great for cron)
109
+
110
+ ${config_js_1.CYAN}agentd status${config_js_1.RESET} Print current daemon state
111
+ ${config_js_1.CYAN}agentd peers${config_js_1.RESET} List all discovered peer agents
112
+
113
+ ${config_js_1.DIM}Env vars:${config_js_1.RESET}
114
+ ${config_js_1.GREEN}INKD_AGENT_NAME${config_js_1.RESET} Your agent's project name (required)
115
+ ${config_js_1.GREEN}INKD_AGENT_ENDPOINT${config_js_1.RESET} API endpoint to advertise to peers
116
+ ${config_js_1.GREEN}INKD_INTERVAL${config_js_1.RESET} Default interval override in ms
117
+
118
+ ${config_js_1.BOLD}WATCH${config_js_1.RESET}
119
+ ${config_js_1.CYAN}watch${config_js_1.RESET} [filter] Stream real-time on-chain events
120
+ ${config_js_1.DIM}filter: all | projects | versions | agents${config_js_1.RESET} (default: all)
121
+ ${config_js_1.DIM}--poll <ms>${config_js_1.RESET} Polling interval (default: 3000)
122
+ ${config_js_1.DIM}--from <block>${config_js_1.RESET} Start from block (default: latest-1000)
123
+ ${config_js_1.DIM}--json${config_js_1.RESET} Newline-delimited JSON output
124
+
125
+ ${config_js_1.BOLD}ENVIRONMENT${config_js_1.RESET}
126
+ ${config_js_1.GREEN}INKD_PRIVATE_KEY${config_js_1.RESET} Wallet private key (hex, with or without 0x)
127
+ ${config_js_1.GREEN}INKD_NETWORK${config_js_1.RESET} ${config_js_1.DIM}mainnet${config_js_1.RESET} | ${config_js_1.DIM}testnet${config_js_1.RESET} (overrides config file)
128
+ ${config_js_1.GREEN}INKD_RPC_URL${config_js_1.RESET} Custom RPC endpoint
129
+
130
+ ${config_js_1.BOLD}EXAMPLES${config_js_1.RESET}
131
+ ${config_js_1.DIM}inkd init${config_js_1.RESET}
132
+ ${config_js_1.DIM}inkd status${config_js_1.RESET}
133
+ ${config_js_1.DIM}inkd project create --name my-agent --agent --endpoint https://api.example.com${config_js_1.RESET}
134
+ ${config_js_1.DIM}inkd project get 1${config_js_1.RESET}
135
+ ${config_js_1.DIM}inkd version push --id 1 --hash abc123xyz --tag v0.1.0 --changelog "initial release"${config_js_1.RESET}
136
+ ${config_js_1.DIM}inkd agent list --limit 50${config_js_1.RESET}
137
+ ${config_js_1.DIM}inkd agent lookup my-agent${config_js_1.RESET}
138
+ ${config_js_1.DIM}inkd search "trading bot" --agents${config_js_1.RESET}
139
+ ${config_js_1.DIM}inkd watch versions --poll 5000${config_js_1.RESET}
140
+ ${config_js_1.DIM}inkd watch --json | jq .${config_js_1.RESET}
141
+ ${config_js_1.DIM}inkd token balance${config_js_1.RESET}
142
+ ${config_js_1.DIM}inkd token balance 0xABC...${config_js_1.RESET}
143
+ ${config_js_1.DIM}inkd token approve 10${config_js_1.RESET}
144
+ ${config_js_1.DIM}inkd token transfer 0xDEF... 5${config_js_1.RESET}
145
+ ${config_js_1.DIM}inkd token info --json${config_js_1.RESET}
146
+ ${config_js_1.DIM}INKD_AGENT_NAME=my-bot inkd agentd start --interval 30000${config_js_1.RESET}
147
+ ${config_js_1.DIM}inkd agentd start --once${config_js_1.RESET}
148
+ ${config_js_1.DIM}inkd agentd status${config_js_1.RESET}
149
+ ${config_js_1.DIM}inkd agentd peers${config_js_1.RESET}
150
+
151
+ ${config_js_1.BOLD}DOCS${config_js_1.RESET} https://inkdprotocol.xyz/docs
152
+ ${config_js_1.BOLD}GITHUB${config_js_1.RESET} https://github.com/inkdprotocol/inkd-protocol
153
+ `);
154
+ }
155
+ // ─── Router ───────────────────────────────────────────────────────────────────
156
+ async function main() {
157
+ const [, , cmd, ...rest] = process.argv;
158
+ if (!cmd || cmd === 'help' || cmd === '--help' || cmd === '-h') {
159
+ showHelp();
160
+ return;
161
+ }
162
+ if (cmd === '--version' || cmd === '-v') {
163
+ console.log('0.1.0');
164
+ return;
165
+ }
166
+ switch (cmd) {
167
+ case 'init':
168
+ await (0, init_js_1.cmdInit)(rest);
169
+ break;
170
+ case 'status':
171
+ await (0, status_js_1.cmdStatus)();
172
+ break;
173
+ case 'project': {
174
+ const sub = rest[0];
175
+ const subArgs = rest.slice(1);
176
+ switch (sub) {
177
+ case 'create':
178
+ await (0, project_js_1.cmdProjectCreate)(subArgs);
179
+ break;
180
+ case 'get':
181
+ await (0, project_js_1.cmdProjectGet)(rest.slice(1));
182
+ break;
183
+ case 'list':
184
+ await (0, project_js_1.cmdProjectList)(rest.slice(1));
185
+ break;
186
+ case 'transfer':
187
+ await (0, project_js_1.cmdProjectTransfer)(subArgs);
188
+ break;
189
+ case 'collab':
190
+ await (0, project_js_1.cmdProjectCollab)(rest.slice(1));
191
+ break;
192
+ default:
193
+ console.error(`\n ${config_js_1.YELLOW}Unknown project sub-command: ${sub}${config_js_1.RESET}`);
194
+ console.error(` Run ${config_js_1.DIM}inkd help${config_js_1.RESET} for usage.\n`);
195
+ process.exit(1);
196
+ }
197
+ break;
198
+ }
199
+ case 'version': {
200
+ const sub = rest[0];
201
+ switch (sub) {
202
+ case 'push':
203
+ await (0, version_js_1.cmdVersionPush)(rest.slice(1));
204
+ break;
205
+ case 'list':
206
+ await (0, version_js_1.cmdVersionList)(rest.slice(1));
207
+ break;
208
+ case 'show':
209
+ await (0, version_js_1.cmdVersionShow)(rest.slice(1));
210
+ break;
211
+ default:
212
+ console.error(`\n ${config_js_1.YELLOW}Unknown version sub-command: ${sub}${config_js_1.RESET}`);
213
+ console.error(` Run ${config_js_1.DIM}inkd help${config_js_1.RESET} for usage.\n`);
214
+ process.exit(1);
215
+ }
216
+ break;
217
+ }
218
+ case 'agent': {
219
+ const sub = rest[0];
220
+ switch (sub) {
221
+ case 'list':
222
+ await (0, agent_js_1.cmdAgentList)(rest.slice(1));
223
+ break;
224
+ case 'lookup':
225
+ await (0, agent_js_1.cmdAgentLookup)(rest.slice(1));
226
+ break;
227
+ default:
228
+ console.error(`\n ${config_js_1.YELLOW}Unknown agent sub-command: ${sub}${config_js_1.RESET}`);
229
+ console.error(` Run ${config_js_1.DIM}inkd help${config_js_1.RESET} for usage.\n`);
230
+ process.exit(1);
231
+ }
232
+ break;
233
+ }
234
+ case 'token':
235
+ await (0, token_js_1.cmdToken)(rest);
236
+ break;
237
+ case 'search':
238
+ await (0, search_js_1.cmdSearch)(rest);
239
+ break;
240
+ case 'watch':
241
+ await (0, watch_js_1.cmdWatch)(rest);
242
+ break;
243
+ case 'agentd':
244
+ await (0, agentd_js_1.cmdAgentd)(rest);
245
+ break;
246
+ default:
247
+ console.error(`\n ${config_js_1.YELLOW}Unknown command: ${cmd}${config_js_1.RESET}`);
248
+ console.error(` Run ${config_js_1.DIM}inkd help${config_js_1.RESET} for usage.\n`);
249
+ process.exit(1);
250
+ }
251
+ }
252
+ main().catch((err) => {
253
+ console.error(`\n ${'\x1b[31m'}✗${'\x1b[0m'} ${err.message}\n`);
254
+ if (process.env['INKD_DEBUG'])
255
+ console.error(err.stack);
256
+ process.exit(1);
257
+ });
258
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}