✨ 🚡 ShellDetailDialog.tsx
This commit is contained in:
@@ -22,8 +22,7 @@ main().catch((err) => {
|
|||||||
console.error("Fatal error:", err);
|
console.error("Fatal error:", err);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
});
|
});
|
||||||
try {
|
|
||||||
return (await fs.stat(p)).isDirectory();
|
|
||||||
} catch {
|
} catch {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -955,3 +955,4 @@ export async function validateSrcRoot(): Promise<void> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
20
server.json
Normal file
20
server.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
||||||
|
"name": "io.github.nirholas/claude-code-explorer-mcp",
|
||||||
|
"description": "MCP server for exploring the Claude Code CLI source code — tools, commands, and architecture.",
|
||||||
|
"repository": {
|
||||||
|
"url": "https://github.com/nirholas/claude-code",
|
||||||
|
"source": "github"
|
||||||
|
},
|
||||||
|
"version": "1.1.0",
|
||||||
|
"packages": [
|
||||||
|
{
|
||||||
|
"registryType": "npm",
|
||||||
|
"identifier": "claude-code-explorer-mcp",
|
||||||
|
"version": "1.1.0",
|
||||||
|
"transport": {
|
||||||
|
"type": "stdio"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
141
src/services/x402/types.ts
Normal file
141
src/services/x402/types.ts
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
/**
|
||||||
|
* x402 Protocol Types
|
||||||
|
*
|
||||||
|
* Implements the x402 HTTP 402 Payment Required protocol for machine-to-machine
|
||||||
|
* crypto payments (USDC on Base). See: https://github.com/coinbase/x402
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** Supported payment schemes */
|
||||||
|
export type PaymentScheme = 'exact'
|
||||||
|
|
||||||
|
/** Supported blockchain networks */
|
||||||
|
export type PaymentNetwork =
|
||||||
|
| 'base'
|
||||||
|
| 'base-sepolia'
|
||||||
|
| 'ethereum'
|
||||||
|
| 'ethereum-sepolia'
|
||||||
|
|
||||||
|
/** Payment requirement returned in 402 response headers */
|
||||||
|
export interface PaymentRequirement {
|
||||||
|
/** Payment scheme (currently only 'exact') */
|
||||||
|
scheme: PaymentScheme
|
||||||
|
/** Target blockchain network */
|
||||||
|
network: PaymentNetwork
|
||||||
|
/** Maximum amount required in smallest unit (e.g. USDC has 6 decimals) */
|
||||||
|
maxAmountRequired: string
|
||||||
|
/** The resource URL being paid for */
|
||||||
|
resource: string
|
||||||
|
/** Human-readable description of what's being purchased */
|
||||||
|
description: string
|
||||||
|
/** MIME type of the resource */
|
||||||
|
mimeType?: string
|
||||||
|
/** Recipient wallet address (EIP-55 checksummed) */
|
||||||
|
payTo: string
|
||||||
|
/** Max seconds the server will wait for payment settlement */
|
||||||
|
maxTimeoutSeconds: number
|
||||||
|
/** Token contract address */
|
||||||
|
asset: string
|
||||||
|
/** Additional token metadata */
|
||||||
|
extra?: {
|
||||||
|
name?: string
|
||||||
|
version?: string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Signed payment payload sent in request header */
|
||||||
|
export interface PaymentPayload {
|
||||||
|
/** x402 protocol version */
|
||||||
|
x402Version: 1
|
||||||
|
/** Payment scheme */
|
||||||
|
scheme: PaymentScheme
|
||||||
|
/** Target blockchain network */
|
||||||
|
network: PaymentNetwork
|
||||||
|
/** Payment authorization details */
|
||||||
|
payload: {
|
||||||
|
/** Signature of the EIP-712 typed data */
|
||||||
|
signature: string
|
||||||
|
/** Authorization details for EIP-3009 transferWithAuthorization */
|
||||||
|
authorization: {
|
||||||
|
/** Payer wallet address */
|
||||||
|
from: string
|
||||||
|
/** Recipient wallet address */
|
||||||
|
to: string
|
||||||
|
/** Payment amount in smallest unit */
|
||||||
|
value: string
|
||||||
|
/** Validity start timestamp (usually 0) */
|
||||||
|
validAfter: string
|
||||||
|
/** Validity end timestamp */
|
||||||
|
validBefore: string
|
||||||
|
/** Unique nonce to prevent replay */
|
||||||
|
nonce: string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/** x402 wallet configuration stored in global config */
|
||||||
|
export interface X402WalletConfig {
|
||||||
|
/** Whether x402 payments are enabled */
|
||||||
|
enabled: boolean
|
||||||
|
/** Blockchain network to use */
|
||||||
|
network: PaymentNetwork
|
||||||
|
/** Wallet address (derived from private key, stored for display) */
|
||||||
|
address?: string
|
||||||
|
/** Maximum payment per request in USD (safety limit) */
|
||||||
|
maxPaymentPerRequestUSD: number
|
||||||
|
/** Maximum total spend per session in USD */
|
||||||
|
maxSessionSpendUSD: number
|
||||||
|
/** Facilitator URL for payment verification */
|
||||||
|
facilitatorUrl?: string
|
||||||
|
}
|
||||||
|
|
||||||
|
/** x402 payment record for cost tracking */
|
||||||
|
export interface X402PaymentRecord {
|
||||||
|
/** Timestamp of payment */
|
||||||
|
timestamp: number
|
||||||
|
/** URL that required payment */
|
||||||
|
resource: string
|
||||||
|
/** Amount paid in token smallest unit */
|
||||||
|
amount: string
|
||||||
|
/** USD equivalent at time of payment */
|
||||||
|
amountUSD: number
|
||||||
|
/** Token used (e.g. 'USDC') */
|
||||||
|
token: string
|
||||||
|
/** Network used */
|
||||||
|
network: PaymentNetwork
|
||||||
|
/** Recipient address */
|
||||||
|
payTo: string
|
||||||
|
/** Transaction signature/hash */
|
||||||
|
signature: string
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Header names used in the x402 protocol */
|
||||||
|
export const X402_HEADERS = {
|
||||||
|
/** Server → Client: Payment requirement details (JSON) */
|
||||||
|
PAYMENT_REQUIRED: 'x-payment-required',
|
||||||
|
/** Client → Server: Signed payment payload (base64 JSON) */
|
||||||
|
PAYMENT: 'x-payment',
|
||||||
|
} as const
|
||||||
|
|
||||||
|
/** Default facilitator URLs by network */
|
||||||
|
export const DEFAULT_FACILITATOR_URLS: Record<PaymentNetwork, string> = {
|
||||||
|
'base': 'https://x402.org/facilitator',
|
||||||
|
'base-sepolia': 'https://x402.org/facilitator',
|
||||||
|
'ethereum': 'https://x402.org/facilitator',
|
||||||
|
'ethereum-sepolia': 'https://x402.org/facilitator',
|
||||||
|
} as const
|
||||||
|
|
||||||
|
/** USDC contract addresses by network */
|
||||||
|
export const USDC_ADDRESSES: Record<PaymentNetwork, string> = {
|
||||||
|
'base': '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
|
||||||
|
'base-sepolia': '0x036CbD53842c5426634e7929541eC2318f3dCF7e',
|
||||||
|
'ethereum': '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
||||||
|
'ethereum-sepolia': '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',
|
||||||
|
} as const
|
||||||
|
|
||||||
|
/** Default configuration values */
|
||||||
|
export const X402_DEFAULTS: X402WalletConfig = {
|
||||||
|
enabled: false,
|
||||||
|
network: 'base',
|
||||||
|
maxPaymentPerRequestUSD: 0.10,
|
||||||
|
maxSessionSpendUSD: 5.00,
|
||||||
|
} as const
|
||||||
Reference in New Issue
Block a user