@hivemind-os/collective-cli 0.2.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/dist/index.d.ts +6 -0
- package/dist/index.js +2379 -0
- package/dist/index.js.map +1 -0
- package/package.json +33 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/commands/config.ts","../src/utils/output.ts","../src/commands/analytics.ts","../src/utils/daemon-client.ts","../src/commands/auth.ts","../src/commands/connect.ts","../src/commands/daemon.ts","../src/commands/discover.ts","../src/commands/wallet.ts","../src/commands/dispute.ts","../src/commands/init.ts","../src/commands/logs.ts","../src/commands/marketplace.ts","../src/commands/metering.ts","../src/commands/multi-execute.ts","../src/commands/policy.ts","../src/commands/register.ts","../src/commands/relay-registry.ts","../src/commands/stake.ts","../src/commands/task.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { pathToFileURL } from 'node:url';\n\nimport { SessionExpiredError } from '@hivemind-os/collective-core';\n\nimport { handleAnalytics } from './commands/analytics.js';\nimport { handleAuth } from './commands/auth.js';\nimport { handleConfig } from './commands/config.js';\nimport { handleConnect } from './commands/connect.js';\nimport { handleDaemon } from './commands/daemon.js';\nimport { handleDiscover } from './commands/discover.js';\nimport { handleDispute } from './commands/dispute.js';\nimport { handleInit } from './commands/init.js';\nimport { handleLogs } from './commands/logs.js';\nimport { handleMarketplace } from './commands/marketplace.js';\nimport { handleMetering } from './commands/metering.js';\nimport { handleMultiExecute } from './commands/multi-execute.js';\nimport { handlePolicy } from './commands/policy.js';\nimport { handleRegister } from './commands/register.js';\nimport { handleRelayRegistry } from './commands/relay-registry.js';\nimport { handleStake } from './commands/stake.js';\nimport { handleTask } from './commands/task.js';\nimport { handleWallet } from './commands/wallet.js';\nimport { error, info } from './utils/output.js';\n\nconst VERSION = '0.1.0';\n\nexport async function runCli(args = process.argv.slice(2)): Promise<number> {\n const command = args[0];\n const subcommand = args[1];\n\n switch (command) {\n case 'init':\n return await handleInit(args.slice(1));\n case 'connect':\n return await handleConnect(args.slice(1));\n case 'daemon':\n return await handleDaemon(subcommand, args.slice(2));\n case 'auth':\n return await handleAuth(subcommand, args.slice(2));\n case 'register':\n return await handleRegister(args.slice(1));\n case 'config':\n return await handleConfig(args.slice(1));\n case 'analytics':\n return await handleAnalytics(subcommand, args.slice(2));\n case 'policy':\n return await handlePolicy(subcommand, args.slice(2));\n case 'wallet':\n return await handleWallet(subcommand, args.slice(2));\n case 'discover':\n return await handleDiscover(args.slice(1));\n case 'dispute':\n return await handleDispute(subcommand, args.slice(2));\n case 'stake':\n return await handleStake(subcommand, args.slice(2));\n case 'relay':\n return await handleRelayRegistry(subcommand, args.slice(2));\n case 'task':\n return await handleTask(subcommand, args.slice(2));\n case 'logs':\n return await handleLogs(args.slice(1));\n case 'marketplace':\n return await handleMarketplace(subcommand, args.slice(2));\n case 'metering':\n return await handleMetering(subcommand, args.slice(2));\n case 'multi-execute':\n return await handleMultiExecute(args.slice(1));\n case '--help':\n case '-h':\n case 'help':\n printHelp();\n return 0;\n case '--version':\n case '-v':\n printVersion();\n return 0;\n default:\n printHelp();\n return command ? 1 : 0;\n }\n}\n\nexport function printHelp(): void {\n console.log(`Agentic Mesh CLI\n\nUsage:\n mesh <command> [options]\n\nCommands:\n init First-time setup for your local mesh identity\n connect Start the MCP shim bridge\n daemon <cmd> Manage the background daemon (start|stop|status)\n auth <cmd> Inspect or refresh daemon auth (status|reauth)\n register Register this node as a provider\n config [subcmd] Show or update config values\n analytics <cmd> Query indexer analytics (summary|top-providers|task-volume)\n policy set Update spending limits\n wallet <cmd> Wallet tools (balance|fund|address)\n discover <cap> Find providers for a capability\n dispute <cmd> Manage disputes (open|respond|accept|status)\n marketplace <cmd> Marketplace tools (post|browse|bid|accept-bid)\n metering <cmd> Metered task tools (execute|verify|status)\n multi-execute Execute across multiple providers\n stake <cmd> Manage staking (deposit|status|withdraw)\n relay <cmd> Manage community relays (register|list|heartbeat|deactivate)\n task status <id> Inspect a task on Sui\n logs [--follow] Show daemon logs\n help Show this help text\n --version Print the CLI version`);\n}\n\nexport function printVersion(): void {\n console.log(VERSION);\n}\n\nasync function main(): Promise<void> {\n const exitCode = await runCli();\n process.exit(exitCode);\n}\n\nif (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {\n main().catch((caught) => {\n const message = caught instanceof Error ? caught.message : String(caught);\n error(message);\n if (isAuthError(caught)) {\n info('Run \"mesh auth status\" to inspect the session or \"mesh auth reauth\" to open the daemon portal.');\n }\n process.exit(1);\n });\n}\n\nfunction isAuthError(errorToCheck: unknown): boolean {\n if (errorToCheck instanceof SessionExpiredError) {\n return true;\n }\n\n return errorToCheck instanceof Error && /authentication expired|re-authenticate via the daemon portal/i.test(errorToCheck.message);\n}\n","import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { dirname, join, resolve } from 'node:path';\n\nimport { getDefaultIpcPath as getDaemonDefaultIpcPath } from '@hivemind-os/collective-daemon/config';\nimport { PaymentRail, NETWORK_PRESETS, getNetworkPreset, type NetworkConfig, type NetworkName, type SpendingPolicy } from '@hivemind-os/collective-types';\nimport yaml from 'js-yaml';\n\nimport { success } from '../utils/output.js';\n\nexport interface MeshCliConfig {\n network: NetworkConfig;\n identity: {\n dataDir: string;\n };\n spending: SpendingPolicy;\n daemon: {\n ipcPath: string;\n dataDir: string;\n pidFile: string;\n logLevel: 'debug' | 'info' | 'warn' | 'error';\n logFile?: string;\n };\n blobstore: {\n type: 'filesystem';\n baseDir: string;\n };\n indexer: {\n enabled: boolean;\n url?: string;\n };\n}\n\ntype LooseRecord = Record<string, unknown>;\nconst LOG_LEVELS = new Set<MeshCliConfig['daemon']['logLevel']>(['debug', 'info', 'warn', 'error']);\n\nexport async function handleConfig(args: string[]): Promise<number> {\n const [subcommand, ...rest] = args;\n\n if (!subcommand) {\n console.log(yaml.dump(redactConfig(serializeConfig(loadMeshConfig())), { lineWidth: 120 }));\n return 0;\n }\n\n if (subcommand === 'path') {\n console.log(getConfigPath());\n return 0;\n }\n\n if (subcommand === 'set') {\n const key = rest[0];\n const rawValue = rest.slice(1).join(' ');\n if (!key || !rawValue) {\n throw new Error('Usage: mesh config set <key> <value>');\n }\n\n const config = loadMeshConfig();\n setNestedValue(config as unknown as LooseRecord, key, parseConfigValue(rawValue));\n saveMeshConfig(config);\n success(`Updated ${key}`);\n return 0;\n }\n\n throw new Error('Usage: mesh config [path|set <key> <value>]');\n}\n\nexport function getMeshDataDir(): string {\n return normalizePath(process.env.COLLECTIVE_DATA_DIR ?? join(homedir(), '.hivemind-os/collective'));\n}\n\nexport function getConfigPath(configPath?: string): string {\n return normalizePath(configPath ?? join(getMeshDataDir(), 'config.yaml'));\n}\n\nexport function buildDefaultConfig(dataDir = getMeshDataDir()): MeshCliConfig {\n const resolvedDataDir = normalizePath(dataDir);\n const networkName = process.env.COLLECTIVE_NETWORK as NetworkName | undefined;\n const preset = networkName ? getNetworkPreset(networkName) : NETWORK_PRESETS.testnet;\n const defaultNetwork = preset ?? NETWORK_PRESETS.testnet;\n\n return {\n network: {\n rpcUrl: process.env.COLLECTIVE_RPC_URL ?? defaultNetwork.rpcUrl,\n faucetUrl: defaultNetwork.faucetUrl,\n packageId: process.env.COLLECTIVE_PACKAGE_ID ?? defaultNetwork.packageId,\n registryId: process.env.COLLECTIVE_REGISTRY_ID ?? defaultNetwork.registryId,\n },\n identity: {\n dataDir: join(resolvedDataDir, 'identity'),\n },\n spending: {\n defaultRail: PaymentRail.SUI_ESCROW,\n limits: [{ amount: 1_000_000_000n, interval: 'day', currency: 'MIST' }],\n },\n daemon: {\n ipcPath: getDaemonDefaultIpcPath(resolvedDataDir),\n dataDir: resolvedDataDir,\n pidFile: join(resolvedDataDir, 'daemon.pid'),\n logLevel: normalizeLogLevel(process.env.COLLECTIVE_LOG_LEVEL, 'info'),\n logFile: join(resolvedDataDir, 'daemon.log'),\n },\n blobstore: {\n type: 'filesystem',\n baseDir: join(resolvedDataDir, 'blobs'),\n },\n indexer: {\n enabled: Boolean(process.env.COLLECTIVE_INDEXER_URL),\n url: process.env.COLLECTIVE_INDEXER_URL,\n },\n };\n}\n\nexport function loadMeshConfig(configPath?: string): MeshCliConfig {\n const resolvedConfigPath = getConfigPath(configPath);\n const parsed = loadConfigFile(resolvedConfigPath);\n const baseDataDir = normalizePath(\n process.env.COLLECTIVE_DATA_DIR ?? readString(getNestedValue(parsed, 'daemon', 'dataDir')) ?? dirname(resolvedConfigPath),\n );\n const defaults = buildDefaultConfig(baseDataDir);\n const hasExplicitIpcPath = readString(getNestedValue(parsed, 'daemon', 'ipcPath')) !== undefined;\n const config = applyEnvironmentOverrides(mergeConfig(defaults, parsed), { hasExplicitIpcPath });\n validateConfig(config);\n\n if (!existsSync(resolvedConfigPath)) {\n saveMeshConfig(config, resolvedConfigPath);\n } else {\n enforcePrivateFilePermissions(resolvedConfigPath);\n }\n\n return config;\n}\n\nexport function saveMeshConfig(config: MeshCliConfig, configPath = getConfigPath()): string {\n const resolvedConfigPath = getConfigPath(configPath);\n mkdirSync(dirname(resolvedConfigPath), { recursive: true, mode: 0o700 });\n writePrivateConfigFile(resolvedConfigPath, yaml.dump(serializeConfig(config), { lineWidth: 120 }));\n return resolvedConfigPath;\n}\n\nfunction writePrivateConfigFile(configPath: string, contents: string): void {\n writeFileSync(configPath, contents, { encoding: 'utf8', mode: 0o600 });\n enforcePrivateFilePermissions(configPath);\n}\n\nfunction enforcePrivateFilePermissions(path: string): void {\n chmodSync(path, 0o600);\n}\n\nexport function serializeConfig(config: MeshCliConfig): LooseRecord {\n return serializeValue(config) as LooseRecord;\n}\n\nexport function redactConfig(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map((entry) => redactConfig(entry));\n }\n\n if (value && typeof value === 'object') {\n return Object.fromEntries(\n Object.entries(value as LooseRecord).map(([key, entry]) => [\n key,\n /(secret|token|password|private)/i.test(key) ? '<redacted>' : redactConfig(entry),\n ]),\n );\n }\n\n return value;\n}\n\nfunction loadConfigFile(configPath: string): LooseRecord {\n if (!existsSync(configPath)) {\n return {};\n }\n\n const loaded = yaml.load(readFileSync(configPath, 'utf8'));\n return isRecord(loaded) ? loaded : {};\n}\n\nfunction mergeConfig(defaults: MeshCliConfig, parsed: LooseRecord): MeshCliConfig {\n const network = isRecord(parsed.network) ? parsed.network : {};\n const identity = isRecord(parsed.identity) ? parsed.identity : {};\n const daemon = isRecord(parsed.daemon) ? parsed.daemon : {};\n const blobstore = isRecord(parsed.blobstore) ? parsed.blobstore : {};\n const indexer = isRecord(parsed.indexer) ? parsed.indexer : {};\n\n return {\n network: {\n rpcUrl: readString(network.rpcUrl) ?? defaults.network.rpcUrl,\n faucetUrl: readString(network.faucetUrl) ?? defaults.network.faucetUrl,\n packageId: readHexString(network.packageId) ?? defaults.network.packageId,\n registryId: readHexString(network.registryId) ?? defaults.network.registryId,\n },\n identity: {\n dataDir: normalizePath(readString(identity.dataDir) ?? defaults.identity.dataDir),\n },\n spending: normalizeSpendingPolicy(parsed.spending, defaults.spending),\n daemon: {\n ipcPath: readString(daemon.ipcPath) ?? defaults.daemon.ipcPath,\n dataDir: normalizePath(readString(daemon.dataDir) ?? defaults.daemon.dataDir),\n pidFile: normalizePath(readString(daemon.pidFile) ?? defaults.daemon.pidFile),\n logLevel: normalizeLogLevel(daemon.logLevel, defaults.daemon.logLevel),\n logFile: readString(daemon.logFile) ? normalizePath(readString(daemon.logFile) as string) : defaults.daemon.logFile,\n },\n blobstore: {\n type: 'filesystem',\n baseDir: normalizePath(readString(blobstore.baseDir) ?? defaults.blobstore.baseDir),\n },\n indexer: {\n enabled: readBoolean(indexer.enabled) ?? defaults.indexer.enabled,\n url: readString(indexer.url) ?? defaults.indexer.url,\n },\n };\n}\n\nfunction applyEnvironmentOverrides(\n config: MeshCliConfig,\n options: { hasExplicitIpcPath: boolean } = { hasExplicitIpcPath: false },\n): MeshCliConfig {\n const envDataDir = process.env.COLLECTIVE_DATA_DIR ? normalizePath(process.env.COLLECTIVE_DATA_DIR) : undefined;\n const withDataDir = envDataDir\n ? {\n ...config,\n identity: { dataDir: join(envDataDir, 'identity') },\n daemon: {\n ...config.daemon,\n dataDir: envDataDir,\n pidFile: join(envDataDir, 'daemon.pid'),\n ipcPath: options.hasExplicitIpcPath ? config.daemon.ipcPath : getDaemonDefaultIpcPath(envDataDir),\n logFile: join(envDataDir, 'daemon.log'),\n },\n blobstore: {\n type: 'filesystem' as const,\n baseDir: join(envDataDir, 'blobs'),\n },\n }\n : config;\n\n // COLLECTIVE_NETWORK env var applies a full preset\n const networkName = process.env.COLLECTIVE_NETWORK as NetworkName | undefined;\n const envPreset = networkName ? getNetworkPreset(networkName) : undefined;\n const baseNetwork = envPreset\n ? { ...withDataDir.network, ...envPreset }\n : withDataDir.network;\n\n return {\n ...withDataDir,\n network: {\n ...baseNetwork,\n rpcUrl: process.env.COLLECTIVE_RPC_URL ?? baseNetwork.rpcUrl,\n packageId: process.env.COLLECTIVE_PACKAGE_ID ?? baseNetwork.packageId,\n registryId: process.env.COLLECTIVE_REGISTRY_ID ?? baseNetwork.registryId,\n },\n daemon: {\n ...withDataDir.daemon,\n logLevel: normalizeLogLevel(process.env.COLLECTIVE_LOG_LEVEL, withDataDir.daemon.logLevel),\n },\n indexer: {\n enabled: process.env.COLLECTIVE_INDEXER_URL ? true : withDataDir.indexer.enabled,\n url: process.env.COLLECTIVE_INDEXER_URL ?? withDataDir.indexer.url,\n },\n };\n}\n\nfunction normalizeSpendingPolicy(value: unknown, defaults: SpendingPolicy): SpendingPolicy {\n if (!isRecord(value)) {\n return defaults;\n }\n\n return {\n defaultRail: normalizeRail(value.defaultRail) ?? defaults.defaultRail,\n requireConfirmationAbove:\n value.requireConfirmationAbove === undefined\n ? defaults.requireConfirmationAbove\n : parseBigInt(value.requireConfirmationAbove, 'spending.requireConfirmationAbove'),\n allowlist: Array.isArray(value.allowlist)\n ? value.allowlist.filter((entry): entry is string => typeof entry === 'string')\n : defaults.allowlist,\n denylist: Array.isArray(value.denylist)\n ? value.denylist.filter((entry): entry is string => typeof entry === 'string')\n : defaults.denylist,\n limits:\n Array.isArray(value.limits) && value.limits.length > 0\n ? value.limits.map((limit, index) => normalizeSpendingLimit(limit, index))\n : defaults.limits,\n };\n}\n\nfunction normalizeSpendingLimit(value: unknown, index: number): SpendingPolicy['limits'][number] {\n if (!isRecord(value)) {\n throw new Error(`spending.limits[${index}] must be an object.`);\n }\n\n const interval = readString(value.interval);\n if (!interval || !['transaction', 'hour', 'day', 'month', 'lifetime'].includes(interval)) {\n throw new Error(`spending.limits[${index}].interval is invalid.`);\n }\n\n return {\n amount: parseBigInt(value.amount, `spending.limits[${index}].amount`),\n interval,\n rail: normalizeRail(value.rail),\n currency: readString(value.currency)?.toUpperCase(),\n scope: readString(value.scope) ?? undefined,\n };\n}\n\nfunction validateConfig(config: MeshCliConfig): void {\n if (!config.network.rpcUrl) {\n throw new Error('network.rpcUrl is required.');\n }\n\n if (!config.identity.dataDir) {\n throw new Error('identity.dataDir is required.');\n }\n\n if (!config.daemon.ipcPath || !config.daemon.dataDir || !config.daemon.pidFile) {\n throw new Error('daemon configuration is incomplete.');\n }\n\n if (!LOG_LEVELS.has(config.daemon.logLevel)) {\n throw new Error(`Invalid log level: ${config.daemon.logLevel}`);\n }\n\n if (!config.blobstore.baseDir) {\n throw new Error('blobstore.baseDir is required.');\n }\n\n if (config.indexer.enabled && !config.indexer.url) {\n throw new Error('indexer.url is required when indexer.enabled is true.');\n }\n}\n\nfunction serializeValue(value: unknown): unknown {\n if (typeof value === 'bigint') {\n return value.toString();\n }\n\n if (Array.isArray(value)) {\n return value.map((entry) => serializeValue(entry));\n }\n\n if (value && typeof value === 'object') {\n return Object.fromEntries(Object.entries(value as LooseRecord).map(([key, entry]) => [key, serializeValue(entry)]));\n }\n\n return value;\n}\n\nfunction normalizeLogLevel(value: unknown, fallback: MeshCliConfig['daemon']['logLevel']): MeshCliConfig['daemon']['logLevel'] {\n return typeof value === 'string' && LOG_LEVELS.has(value as MeshCliConfig['daemon']['logLevel'])\n ? (value as MeshCliConfig['daemon']['logLevel'])\n : fallback;\n}\n\nfunction normalizeRail(value: unknown): PaymentRail | undefined {\n if (\n value === PaymentRail.SUI_ESCROW ||\n value === PaymentRail.SUI_TRANSFER ||\n value === PaymentRail.X402_BASE\n ) {\n return value;\n }\n\n return undefined;\n}\n\nfunction parseBigInt(value: unknown, field: string): bigint {\n if (typeof value === 'bigint') {\n return value;\n }\n\n if (typeof value === 'number' && Number.isSafeInteger(value) && value >= 0) {\n return BigInt(value);\n }\n\n if (typeof value === 'string' && /^\\d+$/.test(value.trim())) {\n return BigInt(value.trim());\n }\n\n throw new Error(`${field} must be a non-negative integer.`);\n}\n\nfunction readString(value: unknown): string | undefined {\n return typeof value === 'string' && value.trim() ? value.trim() : undefined;\n}\n\nfunction readBoolean(value: unknown): boolean | undefined {\n return typeof value === 'boolean' ? value : undefined;\n}\n\nfunction readHexString(value: unknown): string | undefined {\n if (typeof value === 'string' && value.trim()) {\n return value.trim();\n }\n\n if (typeof value === 'number' && Number.isSafeInteger(value) && value >= 0) {\n return `0x${value.toString(16)}`;\n }\n\n return undefined;\n}\n\nfunction normalizePath(value: string): string {\n return resolve(expandHome(value));\n}\n\nfunction expandHome(value: string): string {\n if (value === '~') {\n return homedir();\n }\n\n if (value.startsWith('~/') || value.startsWith('~\\\\')) {\n return join(homedir(), value.slice(2));\n }\n\n return value;\n}\n\nfunction getNestedValue(record: LooseRecord, ...keys: string[]): unknown {\n let current: unknown = record;\n for (const key of keys) {\n if (!isRecord(current)) {\n return undefined;\n }\n current = current[key];\n }\n return current;\n}\n\nfunction parseConfigValue(rawValue: string): unknown {\n const parsed = yaml.load(rawValue);\n return parsed === undefined ? rawValue : parsed;\n}\n\nfunction setNestedValue(target: LooseRecord, keyPath: string, value: unknown): void {\n const keys = keyPath.split('.').filter(Boolean);\n if (keys.length === 0) {\n throw new Error('Config key is required.');\n }\n\n let current: LooseRecord = target;\n for (const key of keys.slice(0, -1)) {\n const existing = current[key];\n if (!isRecord(existing)) {\n current[key] = {};\n }\n current = current[key] as LooseRecord;\n }\n\n current[keys[keys.length - 1] as string] = value;\n}\n\nfunction isRecord(value: unknown): value is LooseRecord {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n","const COLORS = {\n green: '\\x1b[32m',\n red: '\\x1b[31m',\n blue: '\\x1b[34m',\n yellow: '\\x1b[33m',\n reset: '\\x1b[0m',\n} as const;\n\nexport function success(message: string): void {\n console.log(formatMessage('\\u2713', message, COLORS.green));\n}\n\nexport function error(message: string): void {\n console.error(formatMessage('\\u2717', message, COLORS.red));\n}\n\nexport function info(message: string): void {\n console.log(formatMessage('\\u2139', message, COLORS.blue));\n}\n\nexport function warn(message: string): void {\n console.warn(formatMessage('\\u26A0', message, COLORS.yellow));\n}\n\nexport function table(headers: string[], rows: string[][]): void {\n console.log(formatTable(headers, rows));\n}\n\nexport function formatTable(headers: string[], rows: string[][]): string {\n const widths = headers.map((header, index) => {\n const rowWidth = Math.max(...rows.map((row) => (row[index] ?? '').length), 0);\n return Math.max(header.length, rowWidth);\n });\n\n const renderRow = (row: string[]) => row.map((cell, index) => (cell ?? '').padEnd(widths[index] ?? 0, ' ')).join(' | ');\n\n return [renderRow(headers), widths.map((width) => '-'.repeat(width)).join('-+-'), ...rows.map(renderRow)].join('\\n');\n}\n\nfunction formatMessage(symbol: string, message: string, color: string): string {\n const prefix = shouldUseColor() ? `${color}${symbol}${COLORS.reset}` : symbol;\n return `${prefix} ${message}`;\n}\n\nfunction shouldUseColor(): boolean {\n return !process.env.NO_COLOR && Boolean(process.stdout.isTTY);\n}\n","import type { MeshCliConfig } from './config.js';\nimport { loadMeshConfig } from './config.js';\nimport { info, table } from '../utils/output.js';\n\nexport interface AnalyticsCommandDeps {\n loadConfig?: () => MeshCliConfig;\n fetchImpl?: typeof fetch;\n}\n\nexport async function handleAnalytics(\n subcommand?: string,\n args: string[] = [],\n deps: AnalyticsCommandDeps = {},\n): Promise<number> {\n switch (subcommand) {\n case 'summary':\n return await showAnalyticsSummary(deps);\n case 'top-providers':\n return await showTopProviders(args, deps);\n case 'task-volume':\n return await showTaskVolume(args, deps);\n default:\n throw new Error('Usage: mesh analytics <summary|top-providers|task-volume>');\n }\n}\n\nasync function showAnalyticsSummary(deps: AnalyticsCommandDeps): Promise<number> {\n const data = await queryIndexer<{ analytics: {\n totalAgents: number;\n activeAgents: number;\n totalTasks: number;\n completedTasks: number;\n disputedTasks: number;\n totalVolumeMist: string;\n marketplace: { averageBidCount: number; acceptanceRate: number };\n } }>(deps, `query AnalyticsSummary {\n analytics {\n totalAgents\n activeAgents\n totalTasks\n completedTasks\n disputedTasks\n totalVolumeMist\n marketplace {\n averageBidCount\n acceptanceRate\n }\n }\n }`);\n\n info('Agentic Mesh analytics summary');\n table(\n ['Metric', 'Value'],\n [\n ['Total Agents', String(data.analytics.totalAgents)],\n ['Active Agents', String(data.analytics.activeAgents)],\n ['Total Tasks', String(data.analytics.totalTasks)],\n ['Completed Tasks', String(data.analytics.completedTasks)],\n ['Disputed Tasks', String(data.analytics.disputedTasks)],\n ['Total Volume (MIST)', data.analytics.totalVolumeMist],\n ['Average Bid Count', data.analytics.marketplace.averageBidCount.toFixed(2)],\n ['Acceptance Rate', `${(data.analytics.marketplace.acceptanceRate * 100).toFixed(1)}%`],\n ],\n );\n return 0;\n}\n\nasync function showTopProviders(args: string[], deps: AnalyticsCommandDeps): Promise<number> {\n const limit = readNumericFlag(args, '--limit') ?? 10;\n const sortBy = (readStringFlag(args, '--sort-by') ?? 'COMPLETED_TASKS').toUpperCase();\n const data = await queryIndexer<{ topProviders: Array<{\n name: string;\n did: string;\n completedTasks: number;\n earningsMist: string;\n successRate: number;\n reputation: number;\n }> }>(deps, `query TopProviders($limit: Int, $sortBy: ProviderSortField) {\n topProviders(limit: $limit, sortBy: $sortBy) {\n name\n did\n completedTasks\n earningsMist\n successRate\n reputation\n }\n }`, { limit, sortBy });\n\n info(`Top ${data.topProviders.length} providers`);\n table(\n ['Name', 'DID', 'Completed', 'Earnings (MIST)', 'Success Rate', 'Reputation'],\n data.topProviders.map((provider) => [\n provider.name,\n provider.did,\n String(provider.completedTasks),\n provider.earningsMist,\n `${(provider.successRate * 100).toFixed(1)}%`,\n provider.reputation.toFixed(2),\n ]),\n );\n return 0;\n}\n\nasync function showTaskVolume(args: string[], deps: AnalyticsCommandDeps): Promise<number> {\n const period = (readStringFlag(args, '--period') ?? 'DAY').toUpperCase();\n const buckets = readNumericFlag(args, '--buckets') ?? 14;\n const data = await queryIndexer<{ taskVolume: Array<{ label: string; count: number; volumeMist: string }> }>(\n deps,\n `query TaskVolume($period: TimePeriod!, $buckets: Int) {\n taskVolume(period: $period, buckets: $buckets) {\n label\n count\n volumeMist\n }\n }`,\n { period, buckets },\n );\n\n info(`Task volume by ${period.toLowerCase()}`);\n table(\n ['Bucket', 'Tasks', 'Volume (MIST)'],\n data.taskVolume.map((bucket) => [bucket.label, String(bucket.count), bucket.volumeMist]),\n );\n return 0;\n}\n\nasync function queryIndexer<TData>(\n deps: AnalyticsCommandDeps,\n query: string,\n variables?: Record<string, unknown>,\n): Promise<TData> {\n const config = (deps.loadConfig ?? loadMeshConfig)();\n if (!config.indexer.url) {\n throw new Error('indexer.url must be configured before using analytics commands.');\n }\n\n const fetchImpl = deps.fetchImpl ?? globalThis.fetch;\n const response = await fetchImpl(config.indexer.url, {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n },\n body: JSON.stringify({ query, variables }),\n });\n if (!response.ok) {\n throw new Error(`Indexer query failed with status ${response.status}.`);\n }\n const payload = (await response.json()) as { data?: TData; errors?: Array<{ message?: string }> };\n if (payload.errors?.length) {\n throw new Error(payload.errors.map((entry) => entry.message ?? 'Unknown GraphQL error').join('; '));\n }\n if (!payload.data) {\n throw new Error('Indexer query returned no data.');\n }\n return payload.data;\n}\n\nfunction readStringFlag(args: string[], name: string): string | undefined {\n const index = args.indexOf(name);\n if (index < 0) {\n return undefined;\n }\n const value = args[index + 1]?.trim();\n if (!value) {\n throw new Error(`Missing value for ${name}.`);\n }\n return value;\n}\n\nfunction readNumericFlag(args: string[], name: string): number | undefined {\n const value = readStringFlag(args, name);\n if (!value) {\n return undefined;\n }\n const parsed = Number(value);\n if (!Number.isFinite(parsed) || parsed <= 0) {\n throw new Error(`${name} must be a positive number.`);\n }\n return Math.floor(parsed);\n}\n","import net from 'node:net';\n\ninterface JsonRpcRequest {\n jsonrpc: '2.0';\n id: string | number;\n method: string;\n params?: unknown;\n}\n\ninterface JsonRpcResponse {\n jsonrpc: '2.0';\n id: string | number | null;\n result?: unknown;\n error?: {\n code: number;\n message: string;\n data?: unknown;\n };\n}\n\ninterface JsonRpcNotification {\n jsonrpc: '2.0';\n method: string;\n params?: unknown;\n}\n\nexport interface DaemonStatus {\n did: string;\n address: string;\n uptimeMs: number;\n connectedApps: Array<{\n connectionId: string;\n appName?: string;\n pid?: number;\n profile?: string;\n connectedAt: number;\n }>;\n}\n\nexport interface DaemonAuthStatus {\n authMode: string;\n authenticated: boolean;\n state: string;\n address: string | null;\n expiresAt: number | null;\n expiresInMs: number | null;\n refreshAvailable: boolean;\n lastError: string | null;\n updatedAt: number;\n}\n\nexport interface DaemonReauthResponse {\n portalUrl: string | null;\n browserOpened: boolean;\n status: DaemonAuthStatus;\n}\n\nexport class DaemonClient {\n private buffer = '';\n private readonly pending = new Map<string | number, { resolve: (value: JsonRpcResponse) => void; reject: (error: Error) => void }>();\n private nextId = 0;\n\n private constructor(private readonly socket: net.Socket) {\n socket.setEncoding('utf8');\n socket.on('data', (chunk: string | Buffer) => {\n this.buffer += chunk.toString();\n this.drainBuffer();\n });\n socket.on('error', (error) => {\n this.rejectPending(error instanceof Error ? error : new Error(String(error)));\n });\n socket.on('close', () => {\n this.rejectPending(new Error('Daemon IPC connection closed.'));\n });\n }\n\n static async connect(ipcPath: string): Promise<DaemonClient> {\n const socket = await new Promise<net.Socket>((resolvePromise, reject) => {\n const client = net.connect(ipcPath, () => {\n client.off('error', reject);\n resolvePromise(client);\n });\n client.once('error', reject);\n });\n\n const daemonClient = new DaemonClient(socket);\n await daemonClient.initialize();\n return daemonClient;\n }\n\n async getStatus(): Promise<DaemonStatus> {\n return (await this.callTool('collective_status', {})) as DaemonStatus;\n }\n\n async getAuthStatus(): Promise<DaemonAuthStatus> {\n return (await this.request('auth.status')).result as DaemonAuthStatus;\n }\n\n async triggerReauth(): Promise<DaemonReauthResponse> {\n return (await this.request('auth.reauth')).result as DaemonReauthResponse;\n }\n\n async close(): Promise<void> {\n if (this.socket.destroyed) {\n return;\n }\n\n await new Promise<void>((resolvePromise) => {\n this.socket.once('close', () => {\n resolvePromise();\n });\n this.socket.end();\n setTimeout(() => {\n if (!this.socket.destroyed) {\n this.socket.destroy();\n }\n }, 25);\n });\n }\n\n private async initialize(): Promise<void> {\n await this.request('shim_hello', {\n appName: 'mesh-cli',\n pid: process.pid,\n profile: process.env.USERPROFILE ?? process.env.HOME,\n });\n await this.request('initialize', {\n protocolVersion: '2025-03-26',\n capabilities: {},\n clientInfo: {\n name: 'mesh-cli',\n version: '0.1.0',\n },\n });\n this.socket.write(`${JSON.stringify({ jsonrpc: '2.0', method: 'notifications/initialized' })}\\n`);\n }\n\n private async callTool(name: string, args: Record<string, unknown>): Promise<unknown> {\n const response = await this.request('tools/call', {\n name,\n arguments: args,\n });\n const result = asRecord(response.result);\n return result.structuredContent ?? result;\n }\n\n private request(method: string, params?: unknown): Promise<JsonRpcResponse> {\n const id = `mesh-cli-${++this.nextId}`;\n const message: JsonRpcRequest = {\n jsonrpc: '2.0',\n id,\n method,\n params,\n };\n\n return new Promise<JsonRpcResponse>((resolvePromise, reject) => {\n this.pending.set(id, { resolve: resolvePromise, reject });\n this.socket.write(`${JSON.stringify(message)}\\n`);\n }).then((response) => {\n if (response.error) {\n throw new Error(response.error.message);\n }\n return response;\n });\n }\n\n private drainBuffer(): void {\n let newlineIndex = this.buffer.indexOf('\\n');\n while (newlineIndex >= 0) {\n const line = this.buffer.slice(0, newlineIndex).trim();\n this.buffer = this.buffer.slice(newlineIndex + 1);\n if (line) {\n const message = JSON.parse(line) as JsonRpcResponse | JsonRpcNotification;\n if ('id' in message && message.id !== null) {\n const pending = this.pending.get(message.id);\n if (pending) {\n this.pending.delete(message.id);\n pending.resolve(message);\n }\n }\n }\n newlineIndex = this.buffer.indexOf('\\n');\n }\n }\n\n private rejectPending(error: Error): void {\n for (const [id, pending] of this.pending) {\n this.pending.delete(id);\n pending.reject(error);\n }\n }\n}\n\nexport async function getDaemonStatus(ipcPath: string): Promise<DaemonStatus> {\n const client = await DaemonClient.connect(ipcPath);\n try {\n return await client.getStatus();\n } finally {\n await client.close();\n }\n}\n\nexport async function getDaemonAuthStatus(ipcPath: string): Promise<DaemonAuthStatus> {\n const client = await DaemonClient.connect(ipcPath);\n try {\n return await client.getAuthStatus();\n } finally {\n await client.close();\n }\n}\n\nexport async function requestDaemonReauth(ipcPath: string): Promise<DaemonReauthResponse> {\n const client = await DaemonClient.connect(ipcPath);\n try {\n return await client.triggerReauth();\n } finally {\n await client.close();\n }\n}\n\nfunction asRecord(value: unknown): Record<string, unknown> {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n throw new Error('Unexpected daemon response payload.');\n }\n\n return value as Record<string, unknown>;\n}\n","import { loadMeshConfig } from './config.js';\nimport {\n getDaemonAuthStatus,\n requestDaemonReauth,\n type DaemonAuthStatus,\n type DaemonReauthResponse,\n} from '../utils/daemon-client.js';\nimport { info, success, warn } from '../utils/output.js';\n\nexport interface AuthCommandDeps {\n getAuthStatus: (ipcPath: string) => Promise<DaemonAuthStatus>;\n triggerReauth: (ipcPath: string) => Promise<DaemonReauthResponse>;\n}\n\nconst defaultDeps: AuthCommandDeps = {\n getAuthStatus: getDaemonAuthStatus,\n triggerReauth: requestDaemonReauth,\n};\n\nexport async function handleAuth(\n subcommand?: string,\n _args: string[] = [],\n deps: AuthCommandDeps = defaultDeps,\n): Promise<number> {\n switch (subcommand) {\n case 'status':\n return await showAuthStatus(deps);\n case 'reauth':\n return await triggerReauth(deps);\n default:\n throw new Error('Usage: mesh auth <status|reauth>');\n }\n}\n\nasync function showAuthStatus(deps: AuthCommandDeps): Promise<number> {\n const status = await deps.getAuthStatus(loadMeshConfig().daemon.ipcPath);\n printAuthStatus(status);\n return status.authenticated ? 0 : 1;\n}\n\nasync function triggerReauth(deps: AuthCommandDeps): Promise<number> {\n const result = await deps.triggerReauth(loadMeshConfig().daemon.ipcPath);\n printAuthStatus(result.status);\n if (result.portalUrl) {\n if (result.browserOpened) {\n success(`Opened re-auth portal: ${result.portalUrl}`);\n } else {\n warn(`Open the re-auth portal manually: ${result.portalUrl}`);\n }\n } else {\n info('This daemon auth mode does not require browser re-authentication.');\n }\n\n return result.status.authenticated ? 0 : 1;\n}\n\nfunction printAuthStatus(status: DaemonAuthStatus): void {\n const expires = formatExpiry(status.expiresAt);\n const stateLabel = status.authenticated ? status.state : `${status.state} (action required)`;\n\n console.log(`Auth Mode: ${status.authMode}`);\n console.log(`State: ${stateLabel}`);\n console.log(`Address: ${status.address ?? '-'}`);\n console.log(`Expires: ${expires}`);\n console.log(`Refresh Available: ${status.refreshAvailable ? 'yes' : 'no'}`);\n if (status.lastError) {\n console.log(`Last Error: ${status.lastError}`);\n }\n}\n\nfunction formatExpiry(expiresAt: number | null): string {\n if (expiresAt === null) {\n return 'unknown';\n }\n\n return new Date(expiresAt).toISOString();\n}\n","import { spawn, spawnSync } from 'node:child_process';\nimport { readFileSync } from 'node:fs';\nimport { createRequire } from 'node:module';\nimport { dirname, resolve } from 'node:path';\n\nimport { error, info, warn } from '../utils/output.js';\n\nconst require = createRequire(import.meta.url);\n\nexport async function handleConnect(args: string[]): Promise<number> {\n const shimCommand = resolveShimCommand();\n if (!shimCommand) {\n warn('@hivemind-os/collective-shim is not available in this environment.');\n info('Build or install the shim package, then configure your MCP app to run `mesh connect`.');\n info('In the meantime, start the background service with `mesh daemon start`.');\n return 1;\n }\n\n return await new Promise<number>((resolvePromise, reject) => {\n const child = spawn(shimCommand.command, [...shimCommand.args, ...args], {\n stdio: 'inherit',\n windowsHide: true,\n });\n child.once('error', reject);\n child.once('exit', (code) => {\n resolvePromise(code ?? 0);\n });\n }).catch((caught) => {\n error(caught instanceof Error ? caught.message : String(caught));\n return 1;\n });\n}\n\nfunction resolveShimCommand(): { command: string; args: string[] } | undefined {\n try {\n const packageJsonPath = require.resolve('@hivemind-os/collective-shim/package.json');\n const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8')) as { bin?: string | Record<string, string> };\n const binField =\n typeof packageJson.bin === 'string'\n ? packageJson.bin\n : packageJson.bin?.['mesh-shim'] ?? Object.values(packageJson.bin ?? {})[0];\n if (!binField) {\n return undefined;\n }\n\n const entryPath = resolve(dirname(packageJsonPath), binField);\n return {\n command: process.execPath,\n args: [entryPath],\n };\n } catch {\n const onPath = process.platform === 'win32' ? findOnPath('mesh-shim.cmd') ?? findOnPath('mesh-shim') : findOnPath('mesh-shim');\n return onPath ? { command: onPath, args: [] } : undefined;\n }\n}\n\nfunction findOnPath(command: string): string | undefined {\n const checker = process.platform === 'win32' ? 'where.exe' : 'which';\n const result = spawnSync(checker, [command], { encoding: 'utf8', windowsHide: true });\n if (result.status !== 0) {\n return undefined;\n }\n\n return result.stdout\n .split(/\\r?\\n/)\n .map((entry) => entry.trim())\n .find(Boolean);\n}\n","import { spawn, type SpawnOptions } from 'node:child_process';\nimport { createRequire } from 'node:module';\nimport { existsSync, readFileSync, rmSync } from 'node:fs';\nimport { dirname, resolve } from 'node:path';\n\nimport { loadMeshConfig } from './config.js';\nimport { getDaemonStatus, type DaemonStatus } from '../utils/daemon-client.js';\nimport { error, info, success, table, warn } from '../utils/output.js';\n\nconst require = createRequire(import.meta.url);\n\nexport interface DaemonCommandDeps {\n spawnProcess: (command: string, args: string[], options: SpawnOptions) => { pid?: number; unref: () => void };\n resolveDaemonCommand: () => Promise<{ command: string; args: string[] }>;\n getStatus: (ipcPath: string) => Promise<DaemonStatus>;\n killProcess: (pid: number, signal?: NodeJS.Signals | number) => void;\n isProcessRunning: (pid: number) => boolean;\n sleep: (ms: number) => Promise<void>;\n}\n\nconst defaultDeps: DaemonCommandDeps = {\n spawnProcess: (command, args, options) => spawn(command, args, options),\n resolveDaemonCommand,\n getStatus: getDaemonStatus,\n killProcess: (pid, signal) => {\n process.kill(pid, signal);\n },\n isProcessRunning,\n sleep: (ms) => new Promise((resolvePromise) => {\n setTimeout(resolvePromise, ms);\n }),\n};\n\nexport async function handleDaemon(\n subcommand?: string,\n args: string[] = [],\n deps: DaemonCommandDeps = defaultDeps,\n): Promise<number> {\n void args;\n switch (subcommand) {\n case 'start':\n return await startDaemon(deps);\n case 'stop':\n return await stopDaemon(deps);\n case 'status':\n return await statusDaemon(deps);\n default:\n throw new Error('Usage: mesh daemon <start|stop|status>');\n }\n}\n\nasync function startDaemon(deps: DaemonCommandDeps): Promise<number> {\n const config = loadMeshConfig();\n const pid = readPid(config.daemon.pidFile);\n if (pid && deps.isProcessRunning(pid)) {\n info('Daemon is already running.');\n return await statusDaemon(deps);\n }\n\n if (pid && !deps.isProcessRunning(pid)) {\n rmSync(config.daemon.pidFile, { force: true });\n }\n\n const daemonCommand = await deps.resolveDaemonCommand();\n const child = deps.spawnProcess(daemonCommand.command, daemonCommand.args, {\n detached: true,\n stdio: 'ignore',\n windowsHide: true,\n env: process.env,\n });\n child.unref();\n\n const ready = await waitForReady(config.daemon.ipcPath, deps);\n if (!ready) {\n error('Daemon did not become ready in time.');\n return 1;\n }\n\n success(`Daemon started${child.pid ? ` (pid ${child.pid})` : ''}.`);\n const status = await deps.getStatus(config.daemon.ipcPath);\n printStatus(status);\n return 0;\n}\n\nasync function stopDaemon(deps: DaemonCommandDeps): Promise<number> {\n const config = loadMeshConfig();\n const pid = readPid(config.daemon.pidFile);\n if (!pid) {\n info('Daemon is not running.');\n return 1;\n }\n\n if (!deps.isProcessRunning(pid)) {\n rmSync(config.daemon.pidFile, { force: true });\n info('Daemon is not running.');\n return 1;\n }\n\n deps.killProcess(pid, 'SIGTERM');\n for (let attempt = 0; attempt < 30; attempt += 1) {\n await deps.sleep(100);\n if (!deps.isProcessRunning(pid)) {\n rmSync(config.daemon.pidFile, { force: true });\n success('Daemon stopped.');\n return 0;\n }\n }\n\n deps.killProcess(pid, 'SIGKILL');\n for (let attempt = 0; attempt < 10; attempt += 1) {\n await deps.sleep(100);\n if (!deps.isProcessRunning(pid)) {\n rmSync(config.daemon.pidFile, { force: true });\n success('Daemon stopped.');\n return 0;\n }\n }\n\n error('Unable to stop the daemon process.');\n return 1;\n}\n\nasync function statusDaemon(deps: DaemonCommandDeps): Promise<number> {\n const config = loadMeshConfig();\n const pid = readPid(config.daemon.pidFile);\n if (!pid || !deps.isProcessRunning(pid)) {\n if (pid && !deps.isProcessRunning(pid)) {\n rmSync(config.daemon.pidFile, { force: true });\n }\n info('Daemon is not running.');\n return 1;\n }\n\n try {\n const status = await deps.getStatus(config.daemon.ipcPath);\n success('Daemon is running.');\n printStatus(status);\n return 0;\n } catch (caught) {\n warn('Daemon process exists, but IPC status could not be fetched.');\n console.log(`PID: ${pid}`);\n console.log(`PID file: ${config.daemon.pidFile}`);\n console.log(`Reason: ${caught instanceof Error ? caught.message : String(caught)}`);\n return 1;\n }\n}\n\nasync function waitForReady(ipcPath: string, deps: DaemonCommandDeps): Promise<boolean> {\n for (let attempt = 0; attempt < 50; attempt += 1) {\n try {\n await deps.getStatus(ipcPath);\n return true;\n } catch {\n await deps.sleep(100);\n }\n }\n\n return false;\n}\n\nfunction printStatus(status: DaemonStatus): void {\n console.log(`DID: ${status.did}`);\n console.log(`Address: ${status.address}`);\n console.log(`Uptime: ${formatDuration(status.uptimeMs)}`);\n console.log(`Connected Apps: ${status.connectedApps.length}`);\n if (status.connectedApps.length > 0) {\n table(\n ['App', 'PID', 'Profile', 'Connected'],\n status.connectedApps.map((app) => [\n app.appName ?? '-',\n app.pid?.toString() ?? '-',\n app.profile ?? '-',\n new Date(app.connectedAt).toISOString(),\n ]),\n );\n }\n}\n\nasync function resolveDaemonCommand(): Promise<{ command: string; args: string[] }> {\n try {\n const packageJsonPath = require.resolve('@hivemind-os/collective-daemon/package.json');\n const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8')) as { main?: string };\n const entryPath = resolve(dirname(packageJsonPath), packageJson.main ?? 'dist/index.js');\n return {\n command: process.execPath,\n args: [entryPath],\n };\n } catch {\n const fallback = resolve(process.cwd(), 'packages', 'daemon', 'dist', 'index.js');\n if (existsSync(fallback)) {\n return {\n command: process.execPath,\n args: [fallback],\n };\n }\n\n throw new Error('Unable to locate @hivemind-os/collective-daemon. Run pnpm install && pnpm run build first.');\n }\n}\n\nfunction readPid(pidFile: string): number | undefined {\n if (!existsSync(pidFile)) {\n return undefined;\n }\n\n const pid = Number.parseInt(readFileSync(pidFile, 'utf8').trim(), 10);\n return Number.isInteger(pid) && pid > 0 ? pid : undefined;\n}\n\nfunction isProcessRunning(pid: number): boolean {\n try {\n process.kill(pid, 0);\n return true;\n } catch (caught) {\n return (caught as NodeJS.ErrnoException).code !== 'ESRCH';\n }\n}\n\nfunction formatDuration(ms: number): string {\n const totalSeconds = Math.max(0, Math.floor(ms / 1_000));\n const hours = Math.floor(totalSeconds / 3_600);\n const minutes = Math.floor((totalSeconds % 3_600) / 60);\n const seconds = totalSeconds % 60;\n const parts = [];\n if (hours > 0) {\n parts.push(`${hours}h`);\n }\n if (minutes > 0 || hours > 0) {\n parts.push(`${minutes}m`);\n }\n parts.push(`${seconds}s`);\n return parts.join(' ');\n}\n","import { MeshSuiClient, RegistryClient } from '@hivemind-os/collective-core';\n\nimport { loadMeshConfig } from './config.js';\nimport { formatMistToSui } from './wallet.js';\nimport { info, table } from '../utils/output.js';\n\nexport async function handleDiscover(args: string[]): Promise<number> {\n const capability = args[0]?.trim();\n if (!capability) {\n throw new Error('Usage: mesh discover <capability>');\n }\n\n const config = loadMeshConfig();\n if (!config.network.packageId || !config.network.registryId) {\n throw new Error('network.packageId and network.registryId must be configured before discovery.');\n }\n\n const registryClient = new RegistryClient(new MeshSuiClient(config.network), config.network);\n const agents = await registryClient.discoverByCapability(capability);\n info(`Found ${agents.length} provider(s) for ${capability}`);\n table(\n ['Name', 'DID', 'Price (SUI)', 'Endpoint'],\n agents.map((agent) => {\n const matched = agent.capabilities.find((entry) => entry.name.toLowerCase() === capability.toLowerCase());\n return [\n agent.name,\n agent.did,\n matched ? formatMistToSui(matched.pricing.amount) : '-',\n agent.endpoint ?? '-',\n ];\n }),\n );\n return 0;\n}\n","import { createDID, loadOrCreateKeypair, MeshSuiClient } from '@hivemind-os/collective-core';\nimport { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';\n\nimport { loadMeshConfig } from './config.js';\nimport { info, success, warn } from '../utils/output.js';\n\nexport async function handleWallet(subcommand?: string, args: string[] = []): Promise<number> {\n void args;\n switch (subcommand) {\n case 'balance':\n return await showBalance();\n case 'fund':\n return await fundWallet();\n case 'address':\n return await showAddress();\n default:\n throw new Error('Usage: mesh wallet <balance|fund|address>');\n }\n}\n\nexport function formatMistToSui(balanceMist: bigint): string {\n const whole = balanceMist / 1_000_000_000n;\n const fraction = balanceMist % 1_000_000_000n;\n if (fraction === 0n) {\n return whole.toString();\n }\n\n const fractionText = fraction.toString().padStart(9, '0').replace(/0+$/, '');\n return `${whole.toString()}.${fractionText}`;\n}\n\nexport function parseSuiToMist(input: string): bigint {\n const trimmed = input.trim();\n if (!/^\\d+(?:\\.\\d{1,9})?$/.test(trimmed)) {\n throw new Error(`Invalid SUI amount: ${input}`);\n }\n\n const [whole, fraction = ''] = trimmed.split('.');\n return BigInt(whole) * 1_000_000_000n + BigInt(fraction.padEnd(9, '0'));\n}\n\nasync function showBalance(): Promise<number> {\n const { config, address } = await loadWalletContext();\n const suiClient = new MeshSuiClient(config.network);\n const balanceMist = await suiClient.getBalance(address);\n success(`Wallet balance for ${address}`);\n console.log(`MIST: ${balanceMist.toString()}`);\n console.log(`SUI: ${formatMistToSui(balanceMist)}`);\n return 0;\n}\n\nasync function fundWallet(): Promise<number> {\n const { config, address, did } = await loadWalletContext();\n info(`Requesting faucet funds for ${address}`);\n const faucetUrls = [config.network.faucetUrl, `${config.network.faucetUrl.replace(/\\/$/, '')}/gas`].filter(Boolean);\n\n let funded = false;\n for (const faucetUrl of faucetUrls) {\n try {\n const response = await fetch(faucetUrl, {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({\n FixedAmountRequest: {\n recipient: address,\n },\n }),\n });\n if (response.ok) {\n funded = true;\n break;\n }\n } catch {\n // Try the next faucet endpoint shape.\n }\n }\n\n if (funded) {\n success('Faucet request submitted.');\n } else {\n warn('Automatic faucet request failed. Use your configured faucet or wallet UI to fund this address manually.');\n }\n console.log(`DID: ${did}`);\n console.log(`Address: ${address}`);\n console.log(`Faucet: ${config.network.faucetUrl}`);\n return funded ? 0 : 1;\n}\n\nasync function showAddress(): Promise<number> {\n const { address } = await loadWalletContext();\n console.log(address);\n return 0;\n}\n\nasync function loadWalletContext(): Promise<{ config: ReturnType<typeof loadMeshConfig>; did: string; address: string }> {\n const config = loadMeshConfig();\n const identity = await loadOrCreateKeypair(config.identity.dataDir);\n const did = createDID(identity.publicKey);\n const keypair = Ed25519Keypair.fromSecretKey(identity.secretKey);\n return {\n config,\n did,\n address: keypair.getPublicKey().toSuiAddress(),\n };\n}\n","import { readFile } from 'node:fs/promises';\n\nimport { DEFAULT_WALRUS_AGGREGATOR_URL, DEFAULT_WALRUS_PUBLISHER_URL, DisputeClient, MeshSuiClient, WalrusBlobStore, loadOrCreateKeypair } from '@hivemind-os/collective-core';\nimport { DisputeStatus, type Dispute } from '@hivemind-os/collective-types';\nimport { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';\n\nimport { loadMeshConfig, type MeshCliConfig } from './config.js';\nimport { formatMistToSui } from './wallet.js';\nimport { info, success, table } from '../utils/output.js';\n\ninterface EvidenceStoreLike {\n store(data: Uint8Array): Promise<{ blobId: string }>;\n}\n\nexport interface DisputeCommandDeps {\n loadConfig?: () => MeshCliConfig;\n loadKeypair?: (dataDir: string) => { secretKey: Uint8Array };\n createClient?: (config: MeshCliConfig) => Pick<\n DisputeClient,\n 'openDispute' | 'respondToDispute' | 'acceptResolution' | 'getDispute' | 'getDisputeByTask'\n >;\n createBlobStore?: () => EvidenceStoreLike;\n readEvidenceFile?: (path: string) => Promise<string>;\n}\n\nexport async function handleDispute(subcommand?: string, args: string[] = [], deps: DisputeCommandDeps = {}): Promise<number> {\n switch (subcommand) {\n case 'open':\n return await openDispute(args, deps);\n case 'respond':\n return await respondToDispute(args, deps);\n case 'accept':\n return await acceptResolution(args, deps);\n case 'status':\n return await showStatus(args, deps);\n default:\n throw new Error('Usage: mesh dispute <open|respond|accept|status>');\n }\n}\n\nasync function openDispute(args: string[], deps: DisputeCommandDeps): Promise<number> {\n const taskId = args[0];\n if (!taskId) {\n throw new Error('Usage: mesh dispute open <task-id> --split-mist <mist> (--evidence <text> | --evidence-file <path> | --evidence-blob-id <id>) [--arbitrator <address>]');\n }\n\n const proposedSplitMist = readMistFlag(args, '--split-mist');\n const arbitratorAddress = readOptionalFlag(args, '--arbitrator');\n const evidenceBlobId = await resolveEvidenceBlobId(args, deps);\n const { client, keypair } = loadDisputeContext(deps);\n const result = await client.openDispute({\n taskId,\n evidenceBlobId,\n proposedSplitMist,\n arbitratorAddress,\n signer: keypair,\n });\n\n success(`Opened dispute ${result.disputeId}`);\n console.log(`Task ID: ${taskId}`);\n console.log(`Evidence Blob: ${evidenceBlobId}`);\n console.log(`Tx Digest: ${result.txDigest}`);\n return 0;\n}\n\nasync function respondToDispute(args: string[], deps: DisputeCommandDeps): Promise<number> {\n const disputeId = args[0];\n if (!disputeId) {\n throw new Error('Usage: mesh dispute respond <dispute-id> --split-mist <mist> (--evidence <text> | --evidence-file <path> | --evidence-blob-id <id>)');\n }\n\n const proposedSplitMist = readMistFlag(args, '--split-mist');\n const evidenceBlobId = await resolveEvidenceBlobId(args, deps);\n const { client, keypair } = loadDisputeContext(deps);\n const result = await client.respondToDispute({\n disputeId,\n evidenceBlobId,\n proposedSplitMist,\n signer: keypair,\n });\n\n success(`Responded to dispute ${disputeId}`);\n console.log(`Evidence Blob: ${evidenceBlobId}`);\n console.log(`Tx Digest: ${result.txDigest}`);\n return 0;\n}\n\nasync function acceptResolution(args: string[], deps: DisputeCommandDeps): Promise<number> {\n const disputeId = args[0];\n const taskId = args[1];\n if (!disputeId || !taskId) {\n throw new Error('Usage: mesh dispute accept <dispute-id> <task-id>');\n }\n\n const { client, keypair } = loadDisputeContext(deps);\n const result = await client.acceptResolution({ disputeId, taskId, signer: keypair });\n\n success(`Resolved dispute ${disputeId}`);\n console.log(`Requester Amount (SUI): ${formatMistToSui(result.requesterAmount)}`);\n console.log(`Provider Amount (SUI): ${formatMistToSui(result.providerAmount)}`);\n console.log(`Tx Digest: ${result.txDigest}`);\n return 0;\n}\n\nasync function showStatus(args: string[], deps: DisputeCommandDeps): Promise<number> {\n const { client } = loadDisputeContext(deps);\n if (args[0] === '--task') {\n const taskId = readRequiredFlagValue(args, '--task');\n const dispute = await client.getDisputeByTask(taskId);\n if (!dispute) {\n throw new Error(`No dispute found for task ${taskId}.`);\n }\n return renderDisputeStatus(dispute);\n }\n\n const disputeId = args[0]?.trim();\n if (!disputeId) {\n throw new Error('Usage: mesh dispute status <dispute-id> | mesh dispute status --task <task-id>');\n }\n\n const dispute = await client.getDispute(disputeId);\n if (!dispute) {\n throw new Error(`Dispute ${disputeId} was not found.`);\n }\n\n return renderDisputeStatus(dispute);\n}\n\nfunction renderDisputeStatus(dispute: Dispute): number {\n\n info(`Dispute ${dispute.id}`);\n table(\n ['Field', 'Value'],\n [\n ['Task', dispute.taskId],\n ['Status', DisputeStatus[dispute.status] ?? 'UNKNOWN'],\n ['Requester', dispute.requester],\n ['Provider', dispute.provider],\n ['Escrow (SUI)', formatMistToSui(dispute.escrowAmount)],\n ['Requester Proposal (SUI)', formatMistToSui(dispute.requesterProposedSplit)],\n ['Provider Proposal (SUI)', formatMistToSui(dispute.providerProposedSplit)],\n ['Evidence', dispute.requesterEvidenceBlob],\n ['Counter Evidence', dispute.providerEvidenceBlob ?? '-'],\n ['Arbitrator', dispute.arbitrator ?? '-'],\n ['Opened', new Date(dispute.openedAt).toISOString()],\n ['Resolved', dispute.resolvedAt ? new Date(dispute.resolvedAt).toISOString() : '-'],\n ],\n );\n return 0;\n}\n\nfunction loadDisputeContext(deps: DisputeCommandDeps): {\n config: MeshCliConfig;\n keypair: Ed25519Keypair;\n client: Pick<DisputeClient, 'openDispute' | 'respondToDispute' | 'acceptResolution' | 'getDispute' | 'getDisputeByTask'>;\n} {\n const config = (deps.loadConfig ?? loadMeshConfig)();\n if (!config.network.packageId) {\n throw new Error('network.packageId must be configured before disputing tasks.');\n }\n\n const identity = (deps.loadKeypair ?? loadOrCreateKeypair)(config.identity.dataDir);\n const keypair = Ed25519Keypair.fromSecretKey(identity.secretKey);\n const client = deps.createClient?.(config) ?? new DisputeClient(new MeshSuiClient(config.network), config.network);\n return { config, keypair, client };\n}\n\nasync function resolveEvidenceBlobId(args: string[], deps: DisputeCommandDeps): Promise<string> {\n const directBlobId = readOptionalFlag(args, '--evidence-blob-id');\n const inlineEvidence = readOptionalFlag(args, '--evidence');\n const filePath = readOptionalFlag(args, '--evidence-file');\n const providedSources = [directBlobId, inlineEvidence, filePath].filter((value) => value !== undefined);\n if (providedSources.length !== 1) {\n throw new Error('Specify exactly one of --evidence, --evidence-file, or --evidence-blob-id.');\n }\n if (directBlobId) {\n return directBlobId;\n }\n\n const readEvidenceFile = deps.readEvidenceFile ?? (async (path: string) => await readFile(path, 'utf8'));\n const contents = inlineEvidence ?? (filePath ? await readEvidenceFile(filePath) : undefined);\n if (!contents) {\n throw new Error('Evidence is required. Use --evidence, --evidence-file, or --evidence-blob-id.');\n }\n\n const blobStore = deps.createBlobStore?.() ?? new WalrusBlobStore({\n publisherUrl: process.env.COLLECTIVE_WALRUS_PUBLISHER_URL ?? DEFAULT_WALRUS_PUBLISHER_URL,\n aggregatorUrl: process.env.COLLECTIVE_WALRUS_AGGREGATOR_URL ?? DEFAULT_WALRUS_AGGREGATOR_URL,\n });\n const stored = await blobStore.store(new TextEncoder().encode(contents));\n return stored.blobId;\n}\n\nfunction readMistFlag(args: string[], flag: string): bigint {\n const value = readOptionalFlag(args, flag);\n if (!value || !/^\\d+$/.test(value.trim())) {\n throw new Error(`Missing or invalid ${flag}.`);\n }\n return BigInt(value.trim());\n}\n\nfunction readOptionalFlag(args: string[], flag: string): string | undefined {\n const index = args.indexOf(flag);\n if (index < 0) {\n return undefined;\n }\n\n const value = args[index + 1]?.trim();\n if (!value || value.startsWith('--')) {\n throw new Error(`Missing value for ${flag}.`);\n }\n return value;\n}\n\nfunction readRequiredFlagValue(args: string[], flag: string): string {\n const value = readOptionalFlag(args, flag);\n if (!value) {\n throw new Error(`Missing value for ${flag}.`);\n }\n return value;\n}\n","import { existsSync, mkdirSync } from 'node:fs';\nimport { homedir } from 'node:os';\n\nimport { createDID, identityKeyExists, loadOrCreateKeypair } from '@hivemind-os/collective-core';\nimport { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';\n\nimport { buildDefaultConfig, getConfigPath, getMeshDataDir, saveMeshConfig } from './config.js';\nimport { success } from '../utils/output.js';\n\nexport async function handleInit(args: string[]): Promise<number> {\n void args;\n const dataDir = getMeshDataDir();\n const configPath = getConfigPath();\n const configExists = existsSync(configPath);\n const defaultConfig = buildDefaultConfig(dataDir);\n const keyExists = await identityKeyExists(defaultConfig.identity.dataDir);\n\n mkdirSync(dataDir, { recursive: true });\n mkdirSync(defaultConfig.identity.dataDir, { recursive: true });\n success(`Created data directory: ${displayPath(dataDir)}`);\n\n const identity = await loadOrCreateKeypair(defaultConfig.identity.dataDir);\n const did = createDID(identity.publicKey);\n const address = Ed25519Keypair.fromSecretKey(identity.secretKey).getPublicKey().toSuiAddress();\n\n success(keyExists ? 'Loaded identity key' : 'Generated identity key');\n console.log(` DID: ${did}`);\n console.log(` Sui Address: ${address}`);\n\n if (!configExists) {\n saveMeshConfig(defaultConfig, configPath);\n }\n success(`${configExists ? 'Using existing config' : 'Created config'}: ${displayPath(configPath)}`);\n\n console.log('');\n console.log('Next steps:');\n console.log(' 1. Fund your wallet: mesh wallet fund');\n console.log(' 2. Start the daemon: mesh daemon start');\n console.log(' 3. Configure your MCP app to use: mesh connect');\n return 0;\n}\n\nfunction displayPath(value: string): string {\n const home = homedir();\n return value.startsWith(home) ? `~${value.slice(home.length)}` : value;\n}\n","import { createReadStream, existsSync, readFileSync, watchFile } from 'node:fs';\n\nimport { loadMeshConfig } from './config.js';\nimport { info } from '../utils/output.js';\n\nexport async function handleLogs(args: string[]): Promise<number> {\n const lines = Number.parseInt(readFlag(args, '--lines') ?? '50', 10);\n const follow = args.includes('--follow');\n const config = loadMeshConfig();\n const logFile = config.daemon.logFile;\n if (!logFile || !existsSync(logFile)) {\n throw new Error('Daemon log file does not exist yet. Start the daemon first.');\n }\n\n const contents = readFileSync(logFile, 'utf8');\n const selected = contents\n .split(/\\r?\\n/)\n .slice(-Math.max(1, lines))\n .join('\\n')\n .trim();\n if (selected) {\n console.log(selected);\n }\n\n if (!follow) {\n return 0;\n }\n\n info(`Following ${logFile}`);\n watchFile(logFile, { interval: 500 }, (current, previous) => {\n if (current.size <= previous.size) {\n return;\n }\n\n const stream = createReadStream(logFile, {\n encoding: 'utf8',\n start: previous.size,\n end: current.size,\n });\n stream.on('data', (chunk) => {\n process.stdout.write(chunk);\n });\n });\n\n await new Promise(() => undefined);\n return 0;\n}\n\nfunction readFlag(args: string[], flag: string): string | undefined {\n const index = args.indexOf(flag);\n return index >= 0 ? args[index + 1] : undefined;\n}\n","import { readFile } from 'node:fs/promises';\n\nimport {\n DEFAULT_WALRUS_AGGREGATOR_URL,\n DEFAULT_WALRUS_PUBLISHER_URL,\n loadOrCreateKeypair,\n MarketplaceClient,\n MeshSuiClient,\n WalrusBlobStore,\n} from '@hivemind-os/collective-core';\nimport { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';\n\nimport { loadMeshConfig, type MeshCliConfig } from './config.js';\nimport { info, success, table } from '../utils/output.js';\n\ninterface InputStoreLike {\n store(data: Uint8Array): Promise<{ blobId: string }>;\n}\n\nexport interface MarketplaceCommandDeps {\n loadConfig?: () => MeshCliConfig;\n loadKeypair?: (dataDir: string) => { secretKey: Uint8Array };\n createClient?: (config: MeshCliConfig) => Pick<\n MarketplaceClient,\n 'postOpenTask' | 'browseOpenTasks' | 'placeBid' | 'acceptBid'\n >;\n createBlobStore?: () => InputStoreLike;\n readInputFile?: (path: string) => Promise<string>;\n}\n\nexport async function handleMarketplace(\n subcommand?: string,\n args: string[] = [],\n deps: MarketplaceCommandDeps = {},\n): Promise<number> {\n switch (subcommand) {\n case 'post':\n return await postMarketplaceTask(args, deps);\n case 'browse':\n return await browseMarketplaceTasks(args, deps);\n case 'bid':\n return await placeMarketplaceBid(args, deps);\n case 'accept-bid':\n return await acceptMarketplaceBid(args, deps);\n default:\n throw new Error('Usage: mesh marketplace <post|browse|bid|accept-bid>');\n }\n}\n\nasync function postMarketplaceTask(args: string[], deps: MarketplaceCommandDeps): Promise<number> {\n const capability = args[0];\n if (!capability) {\n throw new Error('Usage: mesh marketplace post <capability> --category <category> --price-mist <mist> (--input <text> | --input-file <path> | --input-blob-id <id>) [--agreement-hash <value>] [--dispute-window-ms <ms>] [--expiry-hours <hours>]');\n }\n\n const category = readRequiredFlag(args, '--category');\n const priceMist = readMistFlag(args, '--price-mist');\n const inputBlobId = await resolveInputBlobId(args, deps);\n const agreementHash = readOptionalFlag(args, '--agreement-hash');\n const disputeWindowMs = readOptionalInteger(args, '--dispute-window-ms') ?? 60_000;\n const expiryHours = readOptionalInteger(args, '--expiry-hours') ?? 24;\n const { client, keypair } = loadMarketplaceContext(deps);\n const result = await client.postOpenTask({\n capability,\n category,\n inputBlobId,\n agreementHash,\n priceMist,\n disputeWindowMs,\n expiryHours,\n signer: keypair,\n });\n\n success(`Posted marketplace task ${result.taskId}`);\n console.log(`Category: ${category}`);\n console.log(`Input Blob: ${inputBlobId}`);\n console.log(`Tx Digest: ${result.txDigest}`);\n return 0;\n}\n\nasync function browseMarketplaceTasks(args: string[], deps: MarketplaceCommandDeps): Promise<number> {\n const { client } = loadMarketplaceContext(deps);\n const tasks = await client.browseOpenTasks({\n category: readOptionalFlag(args, '--category'),\n minPriceMist: readOptionalMist(args, '--min-price-mist'),\n maxPriceMist: readOptionalMist(args, '--max-price-mist'),\n limit: readOptionalInteger(args, '--limit') ?? 20,\n });\n\n info(`Found ${tasks.length} open marketplace task(s).`);\n table(\n ['Task', 'Category', 'Capability', 'Price (MIST)', 'Requester'],\n tasks.map((task) => [task.id, task.category, task.capability, task.price.toString(), task.requester]),\n );\n return 0;\n}\n\nasync function placeMarketplaceBid(args: string[], deps: MarketplaceCommandDeps): Promise<number> {\n const taskId = args[0];\n if (!taskId) {\n throw new Error('Usage: mesh marketplace bid <task-id> --price-mist <mist> [--reputation-score <score>] [--evidence <text>]');\n }\n\n const { client, keypair } = loadMarketplaceContext(deps);\n const result = await client.placeBid({\n taskId,\n bidPriceMist: readMistFlag(args, '--price-mist'),\n reputationScore: readOptionalMist(args, '--reputation-score'),\n evidenceBlob: readOptionalFlag(args, '--evidence'),\n signer: keypair,\n });\n\n success(`Placed bid ${result.bidId}`);\n console.log(`Task ID: ${taskId}`);\n console.log(`Reputation Score: ${result.reputationScore.toString()}`);\n console.log(`Tx Digest: ${result.txDigest}`);\n return 0;\n}\n\nasync function acceptMarketplaceBid(args: string[], deps: MarketplaceCommandDeps): Promise<number> {\n const taskId = args[0];\n const bidId = args[1];\n if (!taskId || !bidId) {\n throw new Error('Usage: mesh marketplace accept-bid <task-id> <bid-id> [--keep-other-bids]');\n }\n\n const { client, keypair } = loadMarketplaceContext(deps);\n const result = await client.acceptBid({\n taskId,\n bidId,\n rejectCompeting: !args.includes('--keep-other-bids'),\n signer: keypair,\n });\n\n success(`Accepted bid ${bidId}`);\n console.log(`Rejected competing bids: ${result.rejectedBidIds.length}`);\n console.log(`Tx Digest: ${result.txDigest}`);\n return 0;\n}\n\nfunction loadMarketplaceContext(deps: MarketplaceCommandDeps): {\n config: MeshCliConfig;\n keypair: Ed25519Keypair;\n client: Pick<MarketplaceClient, 'postOpenTask' | 'browseOpenTasks' | 'placeBid' | 'acceptBid'>;\n} {\n const config = (deps.loadConfig ?? loadMeshConfig)();\n if (!config.network.packageId) {\n throw new Error('network.packageId must be configured before using marketplace commands.');\n }\n\n const identity = (deps.loadKeypair ?? loadOrCreateKeypair)(config.identity.dataDir);\n const keypair = Ed25519Keypair.fromSecretKey(identity.secretKey);\n const client = deps.createClient?.(config) ?? new MarketplaceClient(new MeshSuiClient(config.network), config.network);\n return { config, keypair, client };\n}\n\nasync function resolveInputBlobId(args: string[], deps: MarketplaceCommandDeps): Promise<string> {\n const directBlobId = readOptionalFlag(args, '--input-blob-id');\n const inlineInput = readOptionalFlag(args, '--input');\n const filePath = readOptionalFlag(args, '--input-file');\n const providedSources = [directBlobId, inlineInput, filePath].filter((value) => value !== undefined);\n if (providedSources.length !== 1) {\n throw new Error('Specify exactly one of --input, --input-file, or --input-blob-id.');\n }\n if (directBlobId) {\n return directBlobId;\n }\n\n const readInputFile = deps.readInputFile ?? (async (path: string) => await readFile(path, 'utf8'));\n const contents = inlineInput ?? (filePath ? await readInputFile(filePath) : undefined);\n if (!contents) {\n throw new Error('Task input is required. Use --input, --input-file, or --input-blob-id.');\n }\n\n const blobStore = deps.createBlobStore?.() ?? new WalrusBlobStore({\n publisherUrl: process.env.COLLECTIVE_WALRUS_PUBLISHER_URL ?? DEFAULT_WALRUS_PUBLISHER_URL,\n aggregatorUrl: process.env.COLLECTIVE_WALRUS_AGGREGATOR_URL ?? DEFAULT_WALRUS_AGGREGATOR_URL,\n });\n const stored = await blobStore.store(new TextEncoder().encode(contents));\n return stored.blobId;\n}\n\nfunction readMistFlag(args: string[], flag: string): bigint {\n const value = readOptionalFlag(args, flag);\n if (!value || !/^\\d+$/.test(value.trim())) {\n throw new Error(`Missing or invalid ${flag}.`);\n }\n return BigInt(value.trim());\n}\n\nfunction readOptionalMist(args: string[], flag: string): bigint | undefined {\n const value = readOptionalFlag(args, flag);\n if (!value) {\n return undefined;\n }\n if (!/^\\d+$/.test(value.trim())) {\n throw new Error(`Missing or invalid ${flag}.`);\n }\n return BigInt(value.trim());\n}\n\nfunction readOptionalInteger(args: string[], flag: string): number | undefined {\n const value = readOptionalFlag(args, flag);\n if (!value) {\n return undefined;\n }\n const parsed = Number(value);\n if (!Number.isSafeInteger(parsed) || parsed < 0) {\n throw new Error(`Missing or invalid ${flag}.`);\n }\n return parsed;\n}\n\nfunction readRequiredFlag(args: string[], flag: string): string {\n const value = readOptionalFlag(args, flag);\n if (!value) {\n throw new Error(`Missing required ${flag}.`);\n }\n return value;\n}\n\nfunction readOptionalFlag(args: string[], flag: string): string | undefined {\n const index = args.indexOf(flag);\n if (index < 0) {\n return undefined;\n }\n\n const value = args[index + 1]?.trim();\n if (!value || value.startsWith('--')) {\n throw new Error(`Missing value for ${flag}.`);\n }\n return value;\n}\n","import { loadConfig as loadDaemonConfig, type DaemonFullConfig } from '@hivemind-os/collective-daemon/config';\nimport { DaemonState } from '@hivemind-os/collective-daemon/state';\nimport {\n runMeshMeteredExecute,\n runMeshVerifyResult,\n type MeshMeteredExecuteParams,\n type MeshToolContext,\n} from '@hivemind-os/collective-mcp-server';\nimport { MeshSuiClient, TaskClient } from '@hivemind-os/collective-core';\nimport { PaymentScheme, TaskStatus } from '@hivemind-os/collective-types';\n\nimport { loadMeshConfig } from './config.js';\nimport { formatMistToSui } from './wallet.js';\nimport { success, table } from '../utils/output.js';\n\ninterface DaemonStateLike {\n did: MeshToolContext['did'];\n keypair: MeshToolContext['keypair'];\n suiClient: MeshToolContext['suiClient'];\n registryClient: MeshToolContext['registryClient'];\n taskClient: MeshToolContext['taskClient'];\n agentCache: MeshToolContext['agentCache'];\n blobStore: MeshToolContext['blobStore'];\n spendingPolicy: MeshToolContext['spendingPolicy'];\n network: MeshToolContext['networkConfig'];\n relayAuthProvider?: MeshToolContext['relayAuthProvider'];\n x402Client?: MeshToolContext['x402Client'];\n shutdown(): Promise<void>;\n}\n\nexport interface MeteringCommandDeps {\n loadConfig?: () => DaemonFullConfig;\n createState?: (config: DaemonFullConfig) => Promise<DaemonStateLike>;\n runMeteredExecute?: (params: MeshMeteredExecuteParams, context: MeshToolContext) => Promise<Awaited<ReturnType<typeof runMeshMeteredExecute>>>;\n runVerify?: (params: { task_id: string }, context: MeshToolContext) => Promise<Awaited<ReturnType<typeof runMeshVerifyResult>>>;\n}\n\nexport async function handleMetering(subcommand?: string, args: string[] = [], deps: MeteringCommandDeps = {}): Promise<number> {\n switch (subcommand) {\n case 'execute':\n return await handleMeteringExecute(args, deps);\n case 'verify':\n return await handleMeteringVerify(args, deps);\n case 'status':\n return await handleMeteringStatus(args);\n default:\n throw new Error('Usage: mesh metering <execute|verify|status>');\n }\n}\n\nasync function handleMeteringExecute(args: string[], deps: MeteringCommandDeps): Promise<number> {\n const capability = readRequiredFlag(args, '--capability');\n const input = readRequiredFlag(args, '--input');\n const maxPriceMist = readRequiredInteger(args, '--max-price-mist');\n const unitPriceMist = readRequiredInteger(args, '--unit-price-mist');\n const providerDid = readOptionalFlag(args, '--provider-did');\n const timeoutSeconds = readOptionalInteger(args, '--timeout-seconds');\n\n const config = deps.loadConfig?.() ?? loadDaemonConfig();\n const state = await (deps.createState?.(config) ?? DaemonState.create(config));\n try {\n const result = await (deps.runMeteredExecute ?? runMeshMeteredExecute)({\n capability,\n input,\n provider_did: providerDid,\n max_price_mist: maxPriceMist,\n unit_price_mist: unitPriceMist,\n timeout_seconds: timeoutSeconds,\n }, toMeshToolContext(state));\n\n success(`Metered task ${result.task_id}`);\n table(\n ['Field', 'Value'],\n [\n ['Provider', result.provider_did],\n ['Price (SUI)', formatMistToSui(BigInt(result.actual_price_mist))],\n ['Max Price (SUI)', formatMistToSui(BigInt(result.max_price_mist))],\n ['Unit Price (SUI)', formatMistToSui(BigInt(result.unit_price_mist))],\n ['Units', result.metered_units.toString()],\n ['Verified', result.verified ? 'yes' : 'no'],\n ],\n );\n console.log(result.result);\n return 0;\n } finally {\n await state.shutdown();\n }\n}\n\nasync function handleMeteringVerify(args: string[], deps: MeteringCommandDeps): Promise<number> {\n const taskId = args[0]?.trim();\n if (!taskId) {\n throw new Error('Usage: mesh metering verify <task-id>');\n }\n\n const config = deps.loadConfig?.() ?? loadDaemonConfig();\n const state = await (deps.createState?.(config) ?? DaemonState.create(config));\n try {\n const result = await (deps.runVerify ?? runMeshVerifyResult)({ task_id: taskId }, toMeshToolContext(state));\n success(`Verification ${result.verified ? 'passed' : 'failed'} for ${result.task_id}`);\n table(\n ['Field', 'Value'],\n [\n ['Verified', result.verified ? 'yes' : 'no'],\n ['Units', result.metered_units.toString()],\n ['Verification Hash', result.verification_hash ?? '-'],\n ],\n );\n return result.verified ? 0 : 1;\n } finally {\n await state.shutdown();\n }\n}\n\nasync function handleMeteringStatus(args: string[]): Promise<number> {\n const taskId = args[0]?.trim();\n if (!taskId) {\n throw new Error('Usage: mesh metering status <task-id>');\n }\n\n const config = loadMeshConfig();\n const taskClient = new TaskClient(new MeshSuiClient(config.network), config.network);\n const task = await taskClient.getTask(taskId);\n if (!task) {\n throw new Error(`Task ${taskId} was not found.`);\n }\n\n success(`Metered task ${task.id}`);\n table(\n ['Field', 'Value'],\n [\n ['Status', TaskStatus[task.status] ?? 'UNKNOWN'],\n ['Scheme', task.paymentScheme ? PaymentScheme[task.paymentScheme] : 'EXACT'],\n ['Actual Price (SUI)', formatMistToSui(task.price)],\n ['Max Price (SUI)', formatMistToSui(task.maxPrice ?? task.price)],\n ['Unit Price (SUI)', formatMistToSui(task.unitPrice ?? 0n)],\n ['Units', task.meteredUnits?.toString() ?? '0'],\n ['Verification Hash', task.verificationHash ?? '-'],\n ['Provider', task.provider ?? '-'],\n ],\n );\n return 0;\n}\n\nfunction toMeshToolContext(state: DaemonStateLike): MeshToolContext {\n return {\n did: state.did,\n keypair: state.keypair,\n suiClient: state.suiClient,\n registryClient: state.registryClient,\n taskClient: state.taskClient,\n agentCache: state.agentCache,\n blobStore: state.blobStore,\n spendingPolicy: state.spendingPolicy,\n networkConfig: state.network,\n relayAuthProvider: state.relayAuthProvider,\n x402Client: state.x402Client,\n };\n}\n\nfunction readRequiredFlag(args: string[], flag: string): string {\n const value = readOptionalFlag(args, flag);\n if (!value) {\n throw new Error('Usage: mesh metering execute --capability <cap> --input <text> --max-price-mist <mist> --unit-price-mist <mist> [--provider-did <did>] [--timeout-seconds <seconds>]');\n }\n return value;\n}\n\nfunction readRequiredInteger(args: string[], flag: string): number {\n const value = readOptionalInteger(args, flag);\n if (value === undefined) {\n throw new Error(`Missing or invalid ${flag}.`);\n }\n return value;\n}\n\nfunction readOptionalInteger(args: string[], flag: string): number | undefined {\n const value = readOptionalFlag(args, flag);\n if (!value) {\n return undefined;\n }\n const parsed = Number(value);\n if (!Number.isSafeInteger(parsed) || parsed < 0) {\n throw new Error(`Missing or invalid ${flag}.`);\n }\n return parsed;\n}\n\nfunction readOptionalFlag(args: string[], flag: string): string | undefined {\n const index = args.indexOf(flag);\n if (index < 0) {\n return undefined;\n }\n\n const value = args[index + 1]?.trim();\n if (!value || value.startsWith('--')) {\n throw new Error(`Missing value for ${flag}.`);\n }\n return value;\n}\n","import { loadConfig as loadDaemonConfig, type DaemonFullConfig } from '@hivemind-os/collective-daemon/config';\nimport { DaemonState } from '@hivemind-os/collective-daemon/state';\nimport {\n runMeshMultiExecute,\n type MeshMultiExecuteParams,\n type MeshMultiExecuteResult,\n type MeshToolContext,\n} from '@hivemind-os/collective-mcp-server';\nimport { AggregationMode, ProviderSelectionStrategy } from '@hivemind-os/collective-types';\n\nimport { info, success, table } from '../utils/output.js';\n\ninterface DaemonStateLike {\n did: MeshToolContext['did'];\n keypair: MeshToolContext['keypair'];\n suiClient: MeshToolContext['suiClient'];\n registryClient: MeshToolContext['registryClient'];\n taskClient: MeshToolContext['taskClient'];\n agentCache: MeshToolContext['agentCache'];\n blobStore: MeshToolContext['blobStore'];\n spendingPolicy: MeshToolContext['spendingPolicy'];\n network: MeshToolContext['networkConfig'];\n relayAuthProvider?: MeshToolContext['relayAuthProvider'];\n x402Client?: MeshToolContext['x402Client'];\n shutdown(): Promise<void>;\n}\n\nexport interface MultiExecuteCommandDeps {\n loadConfig?: () => DaemonFullConfig;\n createState?: (config: DaemonFullConfig) => Promise<DaemonStateLike>;\n runMultiExecute?: (params: MeshMultiExecuteParams, context: MeshToolContext) => Promise<MeshMultiExecuteResult>;\n}\n\nexport async function handleMultiExecute(args: string[] = [], deps: MultiExecuteCommandDeps = {}): Promise<number> {\n const capability = readRequiredFlag(args, '--capability');\n const input = parseJsonInput(readRequiredFlag(args, '--input'));\n const fanOutCount = readOptionalInteger(args, '--fan-out');\n const strategy = readOptionalStrategy(args, '--strategy');\n const aggregation = readOptionalAggregation(args, '--aggregation');\n const maxPricePerProvider = readOptionalInteger(args, '--max-price-per-provider');\n const timeout = readOptionalInteger(args, '--timeout');\n\n const config = deps.loadConfig?.() ?? loadDaemonConfig();\n const state = await (deps.createState?.(config) ?? DaemonState.create(config));\n\n try {\n const result = await (deps.runMultiExecute ?? runMeshMultiExecute)({\n capability,\n input,\n fanOutCount,\n strategy,\n aggregation,\n maxPricePerProvider,\n timeout,\n }, toMeshToolContext(state));\n\n info(`Selected ${result.providers.length} provider(s) for ${result.capability}.`);\n table(\n ['Provider', 'Price (MIST)', 'Reputation', 'Latency (ms)'],\n result.providers.map((provider) => [\n provider.did,\n provider.price_mist,\n provider.reputation.toFixed(2),\n provider.estimated_latency_ms?.toString() ?? '-',\n ]),\n );\n table(\n ['Provider', 'Status', 'Duration (ms)', 'Summary'],\n result.results.map((entry) => [\n entry.provider,\n entry.status,\n entry.duration_ms.toString(),\n entry.error ?? summarizeValue(entry.result),\n ]),\n );\n success(`Total cost: ${result.total_cost_mist} MIST`);\n if (result.aggregated_result !== undefined) {\n console.log(JSON.stringify(result.aggregated_result, null, 2));\n }\n return 0;\n } finally {\n await state.shutdown();\n }\n}\n\nfunction toMeshToolContext(state: DaemonStateLike): MeshToolContext {\n return {\n did: state.did,\n keypair: state.keypair,\n suiClient: state.suiClient,\n registryClient: state.registryClient,\n taskClient: state.taskClient,\n agentCache: state.agentCache,\n blobStore: state.blobStore,\n spendingPolicy: state.spendingPolicy,\n networkConfig: state.network,\n relayAuthProvider: state.relayAuthProvider,\n x402Client: state.x402Client,\n };\n}\n\nfunction summarizeValue(value: unknown): string {\n if (value === undefined) {\n return '-';\n }\n if (typeof value === 'string') {\n return value;\n }\n return JSON.stringify(value);\n}\n\nfunction parseJsonInput(value: string): unknown {\n try {\n return JSON.parse(value) as unknown;\n } catch {\n throw new Error('Invalid --input JSON.');\n }\n}\n\nfunction readOptionalStrategy(args: string[], flag: string): MeshMultiExecuteParams['strategy'] {\n const value = readOptionalFlag(args, flag);\n if (!value) {\n return undefined;\n }\n if (Object.values(ProviderSelectionStrategy).includes(value as ProviderSelectionStrategy)) {\n return value as ProviderSelectionStrategy;\n }\n throw new Error(`Invalid ${flag}.`);\n}\n\nfunction readOptionalAggregation(args: string[], flag: string): MeshMultiExecuteParams['aggregation'] {\n const value = readOptionalFlag(args, flag);\n if (!value) {\n return undefined;\n }\n if (Object.values(AggregationMode).includes(value as AggregationMode)) {\n return value as AggregationMode;\n }\n throw new Error(`Invalid ${flag}.`);\n}\n\nfunction readOptionalInteger(args: string[], flag: string): number | undefined {\n const value = readOptionalFlag(args, flag);\n if (!value) {\n return undefined;\n }\n const parsed = Number(value);\n if (!Number.isSafeInteger(parsed) || parsed < 0) {\n throw new Error(`Missing or invalid ${flag}.`);\n }\n return parsed;\n}\n\nfunction readRequiredFlag(args: string[], flag: string): string {\n const value = readOptionalFlag(args, flag);\n if (!value) {\n throw new Error('Usage: mesh multi-execute --capability <cap> --input <json> [--fan-out <n>] [--strategy <strategy>] [--aggregation <mode>] [--max-price-per-provider <mist>] [--timeout <ms>]');\n }\n return value;\n}\n\nfunction readOptionalFlag(args: string[], flag: string): string | undefined {\n const index = args.indexOf(flag);\n if (index < 0) {\n return undefined;\n }\n\n const value = args[index + 1]?.trim();\n if (!value || value.startsWith('--')) {\n throw new Error(`Missing value for ${flag}.`);\n }\n return value;\n}\n","import { PaymentRail } from '@hivemind-os/collective-types';\n\nimport { loadMeshConfig, saveMeshConfig } from './config.js';\nimport { parseSuiToMist } from './wallet.js';\nimport { success } from '../utils/output.js';\n\nexport async function handlePolicy(subcommand?: string, args: string[] = []): Promise<number> {\n if (subcommand !== 'set') {\n throw new Error('Usage: mesh policy set [--daily <amount_sui>] [--per-task <amount_sui>]');\n }\n\n const daily = readFlag(args, '--daily');\n const perTask = readFlag(args, '--per-task');\n if (!daily && !perTask) {\n throw new Error('Provide at least one policy flag: --daily or --per-task');\n }\n\n const config = loadMeshConfig();\n if (daily) {\n upsertLimit(config, 'day', parseSuiToMist(daily));\n }\n if (perTask) {\n upsertLimit(config, 'transaction', parseSuiToMist(perTask));\n }\n saveMeshConfig(config);\n\n success('Updated spending policy.');\n return 0;\n}\n\nfunction upsertLimit(config: ReturnType<typeof loadMeshConfig>, interval: 'day' | 'transaction', amount: bigint): void {\n const existing = config.spending.limits.find((limit) => limit.interval === interval);\n if (existing) {\n existing.amount = amount;\n existing.rail = PaymentRail.SUI_ESCROW;\n return;\n }\n\n config.spending.limits.push({\n amount,\n interval,\n rail: PaymentRail.SUI_ESCROW,\n });\n}\n\nfunction readFlag(args: string[], flag: string): string | undefined {\n const index = args.indexOf(flag);\n return index >= 0 ? args[index + 1] : undefined;\n}\n","import { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\n\nimport { createDID, ed25519ToX25519, loadOrCreateKeypair, MeshSuiClient, RegistryClient } from '@hivemind-os/collective-core';\nimport { PaymentRail, type Capability } from '@hivemind-os/collective-types';\nimport { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';\nimport yaml from 'js-yaml';\n\nimport { loadMeshConfig } from './config.js';\nimport { success } from '../utils/output.js';\n\ninterface ProviderDefinition {\n name: string;\n description: string;\n capabilities: Capability[];\n}\n\nexport async function handleRegister(args: string[]): Promise<number> {\n const definition = loadProviderDefinition(args);\n const config = loadMeshConfig();\n assertNetworkConfigured(config.network);\n\n const identity = await loadOrCreateKeypair(config.identity.dataDir);\n const did = createDID(identity.publicKey);\n const keypair = Ed25519Keypair.fromSecretKey(identity.secretKey);\n const encryptionKeyPair = ed25519ToX25519(identity.secretKey);\n const suiClient = new MeshSuiClient(config.network);\n const registryClient = new RegistryClient(suiClient, config.network);\n\n const result = await registryClient.registerAgent({\n name: definition.name,\n did,\n description: definition.description,\n capabilities: definition.capabilities,\n endpoint: `mesh://agent/${did}`,\n encryptionPublicKey: encryptionKeyPair.publicKey,\n keypair,\n });\n\n success('Provider registered on Agentic Mesh.');\n console.log(`Agent Card ID: ${result.agentCardId}`);\n console.log(`DID: ${did}`);\n console.log(`Tx Digest: ${result.txDigest}`);\n return 0;\n}\n\nfunction loadProviderDefinition(args: string[]): ProviderDefinition {\n const configFlagIndex = args.indexOf('--config');\n if (configFlagIndex >= 0) {\n const configPath = args[configFlagIndex + 1];\n if (!configPath) {\n throw new Error('Usage: mesh register --config <path>');\n }\n return parseProviderConfigFile(resolve(configPath));\n }\n\n const name = readFlag(args, '--name');\n const description = readFlag(args, '--description') ?? `${name ?? 'Agent'} provider`;\n const capabilityFlags = readFlags(args, '--capability');\n if (!name || capabilityFlags.length === 0) {\n throw new Error('Usage: mesh register --name <name> --capability \"name:description:version:price_mist\"');\n }\n\n return {\n name,\n description,\n capabilities: capabilityFlags.map(parseInlineCapability),\n };\n}\n\nfunction parseProviderConfigFile(path: string): ProviderDefinition {\n const loaded = yaml.load(readFileSync(path, 'utf8'));\n if (!loaded || typeof loaded !== 'object' || Array.isArray(loaded)) {\n throw new Error(`Invalid provider config: ${path}`);\n }\n\n const record = loaded as Record<string, unknown>;\n const name = asString(record.name);\n const description = asString(record.description) ?? `${name ?? 'Agent'} provider`;\n const capabilitiesRaw = Array.isArray(record.capabilities) ? record.capabilities : [];\n const capabilities = capabilitiesRaw.map((entry, index) => parseCapabilityRecord(entry, index));\n if (!name || capabilities.length === 0) {\n throw new Error('Provider config must include name and at least one capability.');\n }\n\n return { name, description, capabilities };\n}\n\nfunction parseCapabilityRecord(value: unknown, index: number): Capability {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n throw new Error(`capabilities[${index}] must be an object.`);\n }\n\n const record = value as Record<string, unknown>;\n const pricing = record.pricing && typeof record.pricing === 'object' && !Array.isArray(record.pricing)\n ? (record.pricing as Record<string, unknown>)\n : undefined;\n const amount =\n pricing?.amount ??\n record.priceMist ??\n record.price_mist ??\n record.price;\n\n const name = asString(record.name);\n const description = asString(record.description);\n const version = asString(record.version);\n if (!name || !description || !version || amount === undefined) {\n throw new Error(`capabilities[${index}] is missing required fields.`);\n }\n\n return buildCapability(name, description, version, amount);\n}\n\nfunction parseInlineCapability(value: string): Capability {\n const parts = value.split(':');\n if (parts.length < 4) {\n throw new Error(`Invalid capability format: ${value}`);\n }\n\n const [name, description, version, ...priceParts] = parts;\n return buildCapability(name, description, version, priceParts.join(':'));\n}\n\nfunction buildCapability(name: string, description: string, version: string, amount: unknown): Capability {\n return {\n name,\n description,\n version,\n pricing: {\n rail: PaymentRail.SUI_ESCROW,\n amount: parseMistAmount(amount),\n currency: 'MIST',\n },\n };\n}\n\nfunction parseMistAmount(value: unknown): bigint {\n if (typeof value === 'bigint') {\n return value;\n }\n if (typeof value === 'number' && Number.isFinite(value) && value >= 0) {\n return BigInt(Math.floor(value));\n }\n if (typeof value === 'string' && /^\\d+$/.test(value.trim())) {\n return BigInt(value.trim());\n }\n throw new Error(`Invalid MIST amount: ${String(value)}`);\n}\n\nfunction readFlag(args: string[], flag: string): string | undefined {\n const index = args.indexOf(flag);\n return index >= 0 ? args[index + 1] : undefined;\n}\n\nfunction readFlags(args: string[], flag: string): string[] {\n const values: string[] = [];\n for (let index = 0; index < args.length; index += 1) {\n if (args[index] === flag && args[index + 1]) {\n values.push(args[index + 1] as string);\n }\n }\n return values;\n}\n\nfunction assertNetworkConfigured(network: { packageId: string; registryId: string }): void {\n if (!network.packageId || !network.registryId) {\n throw new Error('network.packageId and network.registryId must be configured before registering.');\n }\n}\n\nfunction asString(value: unknown): string | undefined {\n return typeof value === 'string' && value.trim() ? value.trim() : undefined;\n}\n","import { loadOrCreateKeypair, MeshSuiClient, RelayRegistryClient } from '@hivemind-os/collective-core';\nimport type { RelayNode } from '@hivemind-os/collective-types';\nimport { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';\n\nimport { loadMeshConfig, type MeshCliConfig } from './config.js';\nimport { formatMistToSui } from './wallet.js';\nimport { info, success, table } from '../utils/output.js';\n\nexport interface RelayRegistryCommandDeps {\n loadConfig?: () => MeshCliConfig;\n loadKeypair?: (dataDir: string) => { secretKey: Uint8Array };\n createClient?: (config: MeshCliConfig) => Pick<\n RelayRegistryClient,\n 'registerRelay' | 'listRelays' | 'heartbeat' | 'deactivateRelay'\n >;\n}\n\nexport async function handleRelayRegistry(\n subcommand?: string,\n args: string[] = [],\n deps: RelayRegistryCommandDeps = {},\n): Promise<number> {\n switch (subcommand) {\n case 'register':\n return await registerRelay(args, deps);\n case 'list':\n return await listRelays(deps);\n case 'heartbeat':\n return await heartbeatRelay(args, deps);\n case 'deactivate':\n return await deactivateRelay(args, deps);\n default:\n throw new Error('Usage: mesh relay <register|list|heartbeat|deactivate>');\n }\n}\n\nasync function registerRelay(args: string[], deps: RelayRegistryCommandDeps): Promise<number> {\n const endpoint = readRequiredFlag(args, '--endpoint');\n const stakeId = readRequiredFlag(args, '--stake-id');\n const region = readRequiredFlag(args, '--region');\n const fee = Number(readRequiredFlag(args, '--fee'));\n if (!Number.isInteger(fee) || fee < 0 || fee > 10_000) {\n throw new Error('Usage: mesh relay register --endpoint <url> --stake-id <id> --region <region> --fee <bps> [--capabilities a,b]');\n }\n\n const capabilities = readCapabilities(args);\n const { client, keypair } = loadRelayContext(deps);\n const result = await client.registerRelay({\n endpoint,\n stakeId,\n region,\n routingFeeBps: fee,\n capabilities,\n signer: keypair,\n });\n\n success('Relay registered.');\n console.log(`Relay ID: ${result.relayId}`);\n console.log(`Tx Digest: ${result.txDigest}`);\n console.log(`Capabilities: ${capabilities.join(', ')}`);\n return 0;\n}\n\nasync function listRelays(deps: RelayRegistryCommandDeps): Promise<number> {\n const { client } = loadRelayContext(deps);\n const relays = await client.listRelays();\n\n info(`Found ${relays.length} active relay(s).`);\n table(\n ['Relay ID', 'Region', 'Fee (bps)', 'Stake (SUI)', 'Routed', 'Fees Earned (SUI)', 'Endpoint'],\n relays.map((relay) => summarizeRelay(relay)),\n );\n return 0;\n}\n\nasync function heartbeatRelay(args: string[], deps: RelayRegistryCommandDeps): Promise<number> {\n const relayId = readRequiredFlag(args, '--relay-id');\n const { client, keypair } = loadRelayContext(deps);\n const result = await client.heartbeat({ relayId, signer: keypair });\n\n success('Relay heartbeat submitted.');\n console.log(`Last Heartbeat: ${new Date(result.lastHeartbeat).toISOString()}`);\n console.log(`Tx Digest: ${result.txDigest}`);\n return 0;\n}\n\nasync function deactivateRelay(args: string[], deps: RelayRegistryCommandDeps): Promise<number> {\n const relayId = readRequiredFlag(args, '--relay-id');\n const { client, keypair } = loadRelayContext(deps);\n const result = await client.deactivateRelay({ relayId, signer: keypair });\n\n success('Relay deactivated.');\n console.log(`Tx Digest: ${result.txDigest}`);\n return 0;\n}\n\nfunction loadRelayContext(deps: RelayRegistryCommandDeps): {\n config: MeshCliConfig;\n keypair: Ed25519Keypair;\n client: Pick<RelayRegistryClient, 'registerRelay' | 'listRelays' | 'heartbeat' | 'deactivateRelay'>;\n} {\n const config = (deps.loadConfig ?? loadMeshConfig)();\n if (!config.network.packageId) {\n throw new Error('network.packageId must be configured before using relay registry commands.');\n }\n\n const identity = (deps.loadKeypair ?? loadOrCreateKeypair)(config.identity.dataDir);\n const keypair = Ed25519Keypair.fromSecretKey(identity.secretKey);\n const client = deps.createClient?.(config) ?? new RelayRegistryClient(new MeshSuiClient(config.network), config.network);\n return { config, keypair, client };\n}\n\nfunction readRequiredFlag(args: string[], flag: string): string {\n const index = args.indexOf(flag);\n const value = index >= 0 ? args[index + 1]?.trim() : '';\n if (!value) {\n throw new Error(`Missing required flag ${flag}.`);\n }\n return value;\n}\n\nfunction readCapabilities(args: string[]): string[] {\n const index = args.indexOf('--capabilities');\n const value = index >= 0 ? args[index + 1] : undefined;\n if (!value) {\n return ['routing'];\n }\n\n const parsed = value\n .split(',')\n .map((entry) => entry.trim())\n .filter(Boolean);\n\n return parsed.length > 0 ? parsed : ['routing'];\n}\n\nfunction summarizeRelay(relay: RelayNode): string[] {\n return [\n relay.id,\n relay.region,\n relay.routingFeeBps.toString(),\n relay.stakeAmountMist !== undefined ? formatMistToSui(relay.stakeAmountMist) : '-',\n relay.totalRouted.toString(),\n formatMistToSui(relay.totalFeesEarnedMist),\n relay.endpoint,\n ];\n}\n","import { loadOrCreateKeypair, MeshSuiClient, StakingClient, STAKING_COOLDOWN_MS } from '@hivemind-os/collective-core';\nimport { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';\n\nimport { loadMeshConfig, type MeshCliConfig } from './config.js';\nimport { formatMistToSui, parseSuiToMist } from './wallet.js';\nimport { info, success, table, warn } from '../utils/output.js';\n\nexport interface StakeCommandDeps {\n loadConfig?: () => MeshCliConfig;\n loadKeypair?: (dataDir: string) => { secretKey: Uint8Array };\n createClient?: (config: MeshCliConfig) => Pick<\n StakingClient,\n 'depositStake' | 'getStakeByOwner' | 'startDeactivation' | 'withdrawStake'\n >;\n}\n\nexport async function handleStake(subcommand?: string, args: string[] = [], deps: StakeCommandDeps = {}): Promise<number> {\n switch (subcommand) {\n case 'deposit':\n return await depositStake(args, deps);\n case 'status':\n return await showStakeStatus(deps);\n case 'withdraw':\n return await withdrawStake(args, deps);\n default:\n throw new Error('Usage: mesh stake <deposit|status|withdraw>');\n }\n}\n\nasync function depositStake(args: string[], deps: StakeCommandDeps): Promise<number> {\n const amount = args[0];\n if (!amount) {\n throw new Error('Usage: mesh stake deposit <amount-sui> [--type agent|relay]');\n }\n\n const stakeType = readStakeType(args.slice(1));\n const amountMist = parseSuiToMist(amount);\n const { client, keypair } = loadStakeContext(deps);\n const result = await client.depositStake({ amountMist, stakeType, signer: keypair });\n\n success(`Deposited ${amount} SUI as ${stakeType} stake.`);\n console.log(`Stake ID: ${result.stakeId}`);\n console.log(`Tx Digest: ${result.txDigest}`);\n return 0;\n}\n\nasync function showStakeStatus(deps: StakeCommandDeps): Promise<number> {\n const { client, keypair } = loadStakeContext(deps);\n const owner = keypair.getPublicKey().toSuiAddress();\n const stake = await client.getStakeByOwner(owner);\n if (!stake) {\n info('No stake position found for this wallet.');\n return 0;\n }\n\n const cooldownEndsAt = stake.deactivatedAt > 0 ? stake.deactivatedAt + STAKING_COOLDOWN_MS : 0;\n success(`Stake position ${stake.id}`);\n table(\n ['Field', 'Value'],\n [\n ['Owner', stake.owner],\n ['Type', stake.stakeType],\n ['Balance (SUI)', formatMistToSui(stake.balanceMist)],\n ['Balance (MIST)', stake.balanceMist.toString()],\n ['Active', String(stake.isActive ?? false)],\n ['Meets Minimum', String(stake.meetsMinium ?? false)],\n ['Slashed (SUI)', formatMistToSui(stake.slashedAmount)],\n ['Staked At', new Date(stake.stakedAt).toISOString()],\n ['Deactivated At', stake.deactivatedAt > 0 ? new Date(stake.deactivatedAt).toISOString() : '-'],\n ['Cooldown Ends', cooldownEndsAt > 0 ? new Date(cooldownEndsAt).toISOString() : '-'],\n ],\n );\n return 0;\n}\n\nasync function withdrawStake(args: string[], deps: StakeCommandDeps): Promise<number> {\n void args;\n const { client, keypair } = loadStakeContext(deps);\n const owner = keypair.getPublicKey().toSuiAddress();\n const stake = await client.getStakeByOwner(owner);\n if (!stake) {\n throw new Error('No stake position found for this wallet.');\n }\n\n if (stake.deactivatedAt === 0) {\n const result = await client.startDeactivation({ stakeId: stake.id, signer: keypair });\n info('Stake deactivation started.');\n console.log(`Cooldown ends: ${new Date(result.cooldownEndsAt).toISOString()}`);\n console.log(`Tx Digest: ${result.txDigest}`);\n return 0;\n }\n\n const cooldownEndsAt = stake.deactivatedAt + STAKING_COOLDOWN_MS;\n if (Date.now() < cooldownEndsAt) {\n warn(`Cooldown still active until ${new Date(cooldownEndsAt).toISOString()}.`);\n return 1;\n }\n\n const result = await client.withdrawStake({ stakeId: stake.id, signer: keypair });\n success('Stake withdrawn.');\n console.log(`Returned (SUI): ${formatMistToSui(result.amountReturned)}`);\n console.log(`Returned (MIST): ${result.amountReturned.toString()}`);\n console.log(`Tx Digest: ${result.txDigest}`);\n return 0;\n}\n\nfunction loadStakeContext(deps: StakeCommandDeps): {\n config: MeshCliConfig;\n keypair: Ed25519Keypair;\n client: Pick<StakingClient, 'depositStake' | 'getStakeByOwner' | 'startDeactivation' | 'withdrawStake'>;\n} {\n const config = (deps.loadConfig ?? loadMeshConfig)();\n if (!config.network.packageId) {\n throw new Error('network.packageId must be configured before staking.');\n }\n\n const identity = (deps.loadKeypair ?? loadOrCreateKeypair)(config.identity.dataDir);\n const keypair = Ed25519Keypair.fromSecretKey(identity.secretKey);\n const client = deps.createClient?.(config) ?? new StakingClient(new MeshSuiClient(config.network), config.network);\n return { config, keypair, client };\n}\n\nfunction readStakeType(args: string[]): 'agent' | 'relay' {\n const typeFlagIndex = args.indexOf('--type');\n if (typeFlagIndex >= 0) {\n const value = args[typeFlagIndex + 1]?.trim().toLowerCase();\n if (value === 'agent' || value === 'relay') {\n return value;\n }\n throw new Error('Usage: mesh stake deposit <amount-sui> [--type agent|relay]');\n }\n return 'agent';\n}\n","import { MeshSuiClient, TaskClient } from '@hivemind-os/collective-core';\nimport { TaskStatus } from '@hivemind-os/collective-types';\n\nimport { loadMeshConfig } from './config.js';\nimport { formatMistToSui } from './wallet.js';\nimport { success, table } from '../utils/output.js';\n\nexport async function handleTask(subcommand?: string, args: string[] = []): Promise<number> {\n if (subcommand !== 'status') {\n throw new Error('Usage: mesh task status <id>');\n }\n\n const taskId = args[0];\n if (!taskId) {\n throw new Error('Usage: mesh task status <id>');\n }\n\n const config = loadMeshConfig();\n const taskClient = new TaskClient(new MeshSuiClient(config.network), config.network);\n const task = await taskClient.getTask(taskId);\n if (!task) {\n throw new Error(`Task ${taskId} was not found.`);\n }\n\n success(`Task ${task.id}`);\n table(\n ['Field', 'Value'],\n [\n ['Status', TaskStatus[task.status] ?? 'UNKNOWN'],\n ['Capability', task.capability],\n ['Category', task.category],\n ['Price (SUI)', formatMistToSui(task.price)],\n ['Requester', task.requester],\n ['Provider', task.provider ?? '-'],\n ['Result Blob', task.resultBlobId ?? '-'],\n ['Created', new Date(task.createdAt).toISOString()],\n ['Expires', new Date(task.expiresAt).toISOString()],\n ],\n );\n return 0;\n}\n"],"mappings":"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","names":["error","readFileSync","dirname","resolve","require","readFileSync","resolve","dirname","spawn","createRequire","existsSync","readFileSync","dirname","resolve","require","createRequire","defaultDeps","spawn","readFileSync","resolve","dirname","existsSync","MeshSuiClient","MeshSuiClient","MeshSuiClient","loadOrCreateKeypair","Ed25519Keypair","dispute","loadOrCreateKeypair","Ed25519Keypair","MeshSuiClient","existsSync","mkdirSync","homedir","createDID","loadOrCreateKeypair","Ed25519Keypair","existsSync","mkdirSync","loadOrCreateKeypair","createDID","Ed25519Keypair","homedir","existsSync","readFileSync","existsSync","readFileSync","readFile","DEFAULT_WALRUS_AGGREGATOR_URL","DEFAULT_WALRUS_PUBLISHER_URL","loadOrCreateKeypair","MeshSuiClient","WalrusBlobStore","Ed25519Keypair","readMistFlag","readOptionalFlag","loadOrCreateKeypair","Ed25519Keypair","MeshSuiClient","readFile","WalrusBlobStore","DEFAULT_WALRUS_PUBLISHER_URL","DEFAULT_WALRUS_AGGREGATOR_URL","MeshSuiClient","readRequiredFlag","readOptionalFlag","readOptionalInteger","MeshSuiClient","loadDaemonConfig","DaemonState","readRequiredFlag","readOptionalInteger","loadDaemonConfig","DaemonState","toMeshToolContext","readOptionalFlag","PaymentRail","readFlag","PaymentRail","readFileSync","resolve","createDID","loadOrCreateKeypair","MeshSuiClient","RegistryClient","PaymentRail","Ed25519Keypair","yaml","loadOrCreateKeypair","createDID","Ed25519Keypair","MeshSuiClient","RegistryClient","resolve","readFlag","yaml","readFileSync","PaymentRail","loadOrCreateKeypair","MeshSuiClient","Ed25519Keypair","readRequiredFlag","loadOrCreateKeypair","Ed25519Keypair","MeshSuiClient","loadOrCreateKeypair","MeshSuiClient","Ed25519Keypair","result","loadOrCreateKeypair","Ed25519Keypair","MeshSuiClient","MeshSuiClient","TaskClient","TaskStatus","TaskClient","MeshSuiClient","TaskStatus"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hivemind-os/collective-cli",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"bin": {
|
|
11
|
+
"collective": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@mysten/sui": "^1.30.0",
|
|
15
|
+
"js-yaml": "^4.1.0",
|
|
16
|
+
"pino": "^9.0.0",
|
|
17
|
+
"@hivemind-os/collective-core": "0.2.0",
|
|
18
|
+
"@hivemind-os/collective-mcp-server": "0.2.0",
|
|
19
|
+
"@hivemind-os/collective-daemon": "0.2.0",
|
|
20
|
+
"@hivemind-os/collective-types": "0.2.0"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@types/js-yaml": "^4.0.0",
|
|
24
|
+
"tsup": "^8.0.0",
|
|
25
|
+
"typescript": "^5.7.0",
|
|
26
|
+
"vitest": "^3.0.0"
|
|
27
|
+
},
|
|
28
|
+
"scripts": {
|
|
29
|
+
"build": "tsup",
|
|
30
|
+
"test": "vitest",
|
|
31
|
+
"lint": "eslint src/ tests/ vitest.config.ts tsup.config.ts"
|
|
32
|
+
}
|
|
33
|
+
}
|