@moltium/world-core 0.1.21 → 0.1.22
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/{CardFetcher-3QKJ2I5P.js → CardFetcher-4ENWKI6E.js} +2 -2
- package/dist/CardFetcher-UCJGPZ7X.cjs +9 -0
- package/dist/{CardFetcher-AR7IANM7.cjs.map → CardFetcher-UCJGPZ7X.cjs.map} +1 -1
- package/dist/{chunk-NEXCYEQT.cjs → chunk-DHQFXIEW.cjs} +2 -2
- package/dist/chunk-DHQFXIEW.cjs.map +1 -0
- package/dist/{chunk-JW3PZRCW.js → chunk-DWXNX5V3.js} +2 -2
- package/dist/chunk-DWXNX5V3.js.map +1 -0
- package/dist/index.cjs +31 -19
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +19 -7
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/CardFetcher-AR7IANM7.cjs +0 -9
- package/dist/chunk-JW3PZRCW.js.map +0 -1
- package/dist/chunk-NEXCYEQT.cjs.map +0 -1
- /package/dist/{CardFetcher-3QKJ2I5P.js.map → CardFetcher-4ENWKI6E.js.map} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@moltium/world-core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.22",
|
|
4
4
|
"description": "World runtime for creating agent simulation environments with A2A-based admission and blockchain validation",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"access": "public"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@moltium/core": "^0.1.
|
|
41
|
+
"@moltium/core": "^0.1.22",
|
|
42
42
|
"@a2a-js/sdk": "^0.3.0",
|
|
43
43
|
"express": "^4.21.0",
|
|
44
44
|
"winston": "^3.17.0",
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var _chunkNEXCYEQTcjs = require('./chunk-NEXCYEQT.cjs');
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
exports.CardFetcher = _chunkNEXCYEQTcjs.CardFetcher; exports.normalizeAgentUrl = _chunkNEXCYEQTcjs.normalizeAgentUrl;
|
|
9
|
-
//# sourceMappingURL=CardFetcher-AR7IANM7.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/logger.ts","../src/discovery/CardFetcher.ts"],"sourcesContent":["import winston from 'winston';\n\n/**\n * ============================================================================\n * WORLD SDK LOGGER\n * ============================================================================\n * \n * Winston-based logger for World SDK.\n * Follows the same pattern as @moltium/core logger.\n */\n\nconst logLevel = process.env.LOG_LEVEL || 'info';\n\nexport const logger = winston.createLogger({\n level: logLevel,\n format: winston.format.combine(\n winston.format.timestamp(),\n winston.format.colorize(),\n winston.format.printf(({ level, message, timestamp, ...meta }) => {\n const metaStr = Object.keys(meta).length ? ` ${JSON.stringify(meta)}` : '';\n return `${timestamp} [${level}] ${message}${metaStr}`;\n })\n ),\n transports: [new winston.transports.Console()],\n});\n\n/**\n * Create a child logger with a specific module name\n */\nexport function createLogger(moduleName: string): winston.Logger {\n return logger.child({ module: moduleName });\n}\n","import type { AgentCard } from '@a2a-js/sdk';\nimport { createLogger } from '../logger.js';\n\nconst logger = createLogger('CardFetcher');\n\n/**\n * ============================================================================\n * AGENT CARD FETCHER\n * ============================================================================\n * \n * Discovers agents by fetching their A2A Agent Cards.\n * Follows the A2A protocol specification.\n */\n\nexport interface FetchResult {\n success: boolean;\n card?: AgentCard;\n error?: string;\n}\n\nexport class CardFetcher {\n /**\n * Fetch an agent's card from their A2A endpoint.\n * \n * @param agentUrl Base URL of the agent (e.g., http://localhost:3000)\n * @returns Fetch result with card or error\n */\n async fetchCard(agentUrl: string): Promise<FetchResult> {\n try {\n // A2A spec: Agent Card is available at /.well-known/agent-card.json\n const cardUrl = new URL('/.well-known/agent-card.json', agentUrl).toString();\n \n logger.debug(`Fetching agent card from ${cardUrl}`);\n \n const response = await fetch(cardUrl, {\n method: 'GET',\n headers: {\n 'Accept': 'application/json',\n 'User-Agent': '@moltium/world-core/0.1.0',\n },\n signal: AbortSignal.timeout(5000), // 5 second timeout\n });\n \n if (!response.ok) {\n return {\n success: false,\n error: `HTTP ${response.status}: ${response.statusText}`,\n };\n }\n \n const card = await response.json() as AgentCard;\n \n // Basic validation\n if (!card.name || !card.protocolVersion || !card.url || !card.skills) {\n return {\n success: false,\n error: 'Invalid agent card: missing required fields',\n };\n }\n \n logger.info(`Successfully fetched card for agent: ${card.name}`, {\n protocolVersion: card.protocolVersion,\n skillCount: card.skills.length,\n });\n \n return {\n success: true,\n card,\n };\n } catch (error: any) {\n logger.error(`Failed to fetch agent card from ${agentUrl}:`, error.message);\n \n return {\n success: false,\n error: error.message || 'Unknown error',\n };\n }\n }\n \n /**\n * Fetch multiple agent cards in parallel.\n * \n * @param agentUrls Array of agent URLs\n * @returns Array of fetch results\n */\n async fetchCards(agentUrls: string[]): Promise<FetchResult[]> {\n logger.info(`Fetching ${agentUrls.length} agent cards...`);\n \n const results = await Promise.all(\n agentUrls.map(url => this.fetchCard(url))\n );\n \n const successCount = results.filter(r => r.success).length;\n logger.info(`Fetched ${successCount}/${agentUrls.length} agent cards successfully`);\n \n return results;\n }\n \n /**\n * Verify that an agent card is valid for A2A protocol v0.3.0.\n * \n * @param card Agent card to verify\n * @returns True if valid\n */\n verifyCard(card: AgentCard): boolean {\n // Check required fields\n if (!card.name || !card.protocolVersion || !card.url || !card.skills) {\n logger.warn('Agent card missing required fields', { name: card.name });\n return false;\n }\n \n // Check protocol version compatibility\n if (!card.protocolVersion.startsWith('0.3')) {\n logger.warn('Agent card has incompatible protocol version', {\n name: card.name,\n version: card.protocolVersion,\n });\n return false;\n }\n \n // Check skills array\n if (!Array.isArray(card.skills) || card.skills.length === 0) {\n logger.warn('Agent card has no skills', { name: card.name });\n return false;\n }\n \n // Check capabilities\n if (!card.capabilities || typeof card.capabilities !== 'object') {\n logger.warn('Agent card missing capabilities', { name: card.name });\n return false;\n }\n \n return true;\n }\n}\n\n/**\n * Helper to extract base URL from various formats\n */\nexport function normalizeAgentUrl(url: string): string {\n try {\n const parsed = new URL(url);\n return `${parsed.protocol}//${parsed.host}`;\n } catch {\n // If already in base format, return as-is\n return url;\n }\n}\n"],"mappings":"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","names":["logger"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/brooklyn/Desktop/SchrodingerLabs/Byzantium/packages/world-core/dist/chunk-NEXCYEQT.cjs","../src/logger.ts","../src/discovery/CardFetcher.ts"],"names":[],"mappings":"AAAA;ACAA,oFAAoB;AAWpB,IAAM,SAAA,EAAW,OAAA,CAAQ,GAAA,CAAI,UAAA,GAAa,MAAA;AAEnC,IAAM,OAAA,EAAS,iBAAA,CAAQ,YAAA,CAAa;AAAA,EACzC,KAAA,EAAO,QAAA;AAAA,EACP,MAAA,EAAQ,iBAAA,CAAQ,MAAA,CAAO,OAAA;AAAA,IACrB,iBAAA,CAAQ,MAAA,CAAO,SAAA,CAAU,CAAA;AAAA,IACzB,iBAAA,CAAQ,MAAA,CAAO,QAAA,CAAS,CAAA;AAAA,IACxB,iBAAA,CAAQ,MAAA,CAAO,MAAA,CAAO,CAAC,EAAE,KAAA,EAAO,OAAA,EAAS,SAAA,EAAW,GAAG,KAAK,CAAA,EAAA,GAAM;AAChE,MAAA,MAAM,QAAA,EAAU,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,CAAE,OAAA,EAAS,CAAA,CAAA,EAAI,IAAA,CAAK,SAAA,CAAU,IAAI,CAAC,CAAA,EAAA;AAChB,MAAA;AACpD,IAAA;AACH,EAAA;AAC6C,EAAA;AAC9C;AAKgE;AACrB,EAAA;AAC5C;ADb0E;AACA;AEhBjC;AAiBhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOiC,EAAA;AAClD,IAAA;AAEgE,MAAA;AAEhB,MAAA;AAEZ,MAAA;AAC5B,QAAA;AACC,QAAA;AACG,UAAA;AACI,UAAA;AAChB,QAAA;AACgC,QAAA;AAAA;AACjC,MAAA;AAEiB,MAAA;AACT,QAAA;AACI,UAAA;AAC6C,UAAA;AACxD,QAAA;AACF,MAAA;AAEiC,MAAA;AAG6B,MAAA;AACrD,QAAA;AACI,UAAA;AACF,UAAA;AACT,QAAA;AACF,MAAA;AAEiE,MAAA;AACzC,QAAA;AACE,QAAA;AACzB,MAAA;AAEM,MAAA;AACI,QAAA;AACT,QAAA;AACF,MAAA;AACmB,IAAA;AACgD,MAAA;AAE5D,MAAA;AACI,QAAA;AACe,QAAA;AAC1B,MAAA;AACF,IAAA;AACF,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ8D,EAAA;AACH,IAAA;AAE3B,IAAA;AACY,MAAA;AAC1C,IAAA;AAEoD,IAAA;AACG,IAAA;AAEhD,IAAA;AACT,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQqC,EAAA;AAEmC,IAAA;AACL,MAAA;AACxD,MAAA;AACT,IAAA;AAG6C,IAAA;AACiB,MAAA;AAC/C,QAAA;AACG,QAAA;AACf,MAAA;AACM,MAAA;AACT,IAAA;AAG6D,IAAA;AACA,MAAA;AACpD,MAAA;AACT,IAAA;AAGiE,IAAA;AACG,MAAA;AAC3D,MAAA;AACT,IAAA;AAEO,IAAA;AACT,EAAA;AACF;AAKuD;AACjD,EAAA;AACwB,IAAA;AACe,IAAA;AACnC,EAAA;AAEC,IAAA;AACT,EAAA;AACF;AFzB0E;AACA;AACA;AACA;AACA;AACA;AACA","file":"/Users/brooklyn/Desktop/SchrodingerLabs/Byzantium/packages/world-core/dist/chunk-NEXCYEQT.cjs","sourcesContent":[null,"import winston from 'winston';\n\n/**\n * ============================================================================\n * WORLD SDK LOGGER\n * ============================================================================\n * \n * Winston-based logger for World SDK.\n * Follows the same pattern as @moltium/core logger.\n */\n\nconst logLevel = process.env.LOG_LEVEL || 'info';\n\nexport const logger = winston.createLogger({\n level: logLevel,\n format: winston.format.combine(\n winston.format.timestamp(),\n winston.format.colorize(),\n winston.format.printf(({ level, message, timestamp, ...meta }) => {\n const metaStr = Object.keys(meta).length ? ` ${JSON.stringify(meta)}` : '';\n return `${timestamp} [${level}] ${message}${metaStr}`;\n })\n ),\n transports: [new winston.transports.Console()],\n});\n\n/**\n * Create a child logger with a specific module name\n */\nexport function createLogger(moduleName: string): winston.Logger {\n return logger.child({ module: moduleName });\n}\n","import type { AgentCard } from '@a2a-js/sdk';\nimport { createLogger } from '../logger.js';\n\nconst logger = createLogger('CardFetcher');\n\n/**\n * ============================================================================\n * AGENT CARD FETCHER\n * ============================================================================\n * \n * Discovers agents by fetching their A2A Agent Cards.\n * Follows the A2A protocol specification.\n */\n\nexport interface FetchResult {\n success: boolean;\n card?: AgentCard;\n error?: string;\n}\n\nexport class CardFetcher {\n /**\n * Fetch an agent's card from their A2A endpoint.\n * \n * @param agentUrl Base URL of the agent (e.g., http://localhost:3000)\n * @returns Fetch result with card or error\n */\n async fetchCard(agentUrl: string): Promise<FetchResult> {\n try {\n // A2A spec: Agent Card is available at /.well-known/agent-card.json\n const cardUrl = new URL('/.well-known/agent-card.json', agentUrl).toString();\n \n logger.debug(`Fetching agent card from ${cardUrl}`);\n \n const response = await fetch(cardUrl, {\n method: 'GET',\n headers: {\n 'Accept': 'application/json',\n 'User-Agent': '@moltium/world-core/0.1.0',\n },\n signal: AbortSignal.timeout(5000), // 5 second timeout\n });\n \n if (!response.ok) {\n return {\n success: false,\n error: `HTTP ${response.status}: ${response.statusText}`,\n };\n }\n \n const card = await response.json() as AgentCard;\n \n // Basic validation\n if (!card.name || !card.protocolVersion || !card.url || !card.skills) {\n return {\n success: false,\n error: 'Invalid agent card: missing required fields',\n };\n }\n \n logger.info(`Successfully fetched card for agent: ${card.name}`, {\n protocolVersion: card.protocolVersion,\n skillCount: card.skills.length,\n });\n \n return {\n success: true,\n card,\n };\n } catch (error: any) {\n logger.error(`Failed to fetch agent card from ${agentUrl}:`, error.message);\n \n return {\n success: false,\n error: error.message || 'Unknown error',\n };\n }\n }\n \n /**\n * Fetch multiple agent cards in parallel.\n * \n * @param agentUrls Array of agent URLs\n * @returns Array of fetch results\n */\n async fetchCards(agentUrls: string[]): Promise<FetchResult[]> {\n logger.info(`Fetching ${agentUrls.length} agent cards...`);\n \n const results = await Promise.all(\n agentUrls.map(url => this.fetchCard(url))\n );\n \n const successCount = results.filter(r => r.success).length;\n logger.info(`Fetched ${successCount}/${agentUrls.length} agent cards successfully`);\n \n return results;\n }\n \n /**\n * Verify that an agent card is valid for A2A protocol v0.3.0.\n * \n * @param card Agent card to verify\n * @returns True if valid\n */\n verifyCard(card: AgentCard): boolean {\n // Check required fields\n if (!card.name || !card.protocolVersion || !card.url || !card.skills) {\n logger.warn('Agent card missing required fields', { name: card.name });\n return false;\n }\n \n // Check protocol version compatibility\n if (!card.protocolVersion.startsWith('0.3')) {\n logger.warn('Agent card has incompatible protocol version', {\n name: card.name,\n version: card.protocolVersion,\n });\n return false;\n }\n \n // Check skills array\n if (!Array.isArray(card.skills) || card.skills.length === 0) {\n logger.warn('Agent card has no skills', { name: card.name });\n return false;\n }\n \n // Check capabilities\n if (!card.capabilities || typeof card.capabilities !== 'object') {\n logger.warn('Agent card missing capabilities', { name: card.name });\n return false;\n }\n \n return true;\n }\n}\n\n/**\n * Helper to extract base URL from various formats\n */\nexport function normalizeAgentUrl(url: string): string {\n try {\n const parsed = new URL(url);\n return `${parsed.protocol}//${parsed.host}`;\n } catch {\n // If already in base format, return as-is\n return url;\n }\n}\n"]}
|
|
File without changes
|