proofscan 0.10.61 → 0.11.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/README.ja.md +1 -0
- package/README.md +2 -0
- package/dist/a2a/agent-card.d.ts +40 -0
- package/dist/a2a/agent-card.d.ts.map +1 -0
- package/dist/a2a/agent-card.js +227 -0
- package/dist/a2a/agent-card.js.map +1 -0
- package/dist/a2a/client.d.ts +169 -0
- package/dist/a2a/client.d.ts.map +1 -0
- package/dist/a2a/client.js +854 -0
- package/dist/a2a/client.js.map +1 -0
- package/dist/a2a/config.d.ts +35 -0
- package/dist/a2a/config.d.ts.map +1 -0
- package/dist/a2a/config.js +474 -0
- package/dist/a2a/config.js.map +1 -0
- package/dist/a2a/index.d.ts +11 -0
- package/dist/a2a/index.d.ts.map +1 -0
- package/dist/a2a/index.js +11 -0
- package/dist/a2a/index.js.map +1 -0
- package/dist/a2a/normalizer.d.ts +66 -0
- package/dist/a2a/normalizer.d.ts.map +1 -0
- package/dist/a2a/normalizer.js +146 -0
- package/dist/a2a/normalizer.js.map +1 -0
- package/dist/a2a/session-manager.d.ts +81 -0
- package/dist/a2a/session-manager.d.ts.map +1 -0
- package/dist/a2a/session-manager.js +176 -0
- package/dist/a2a/session-manager.js.map +1 -0
- package/dist/a2a/types.d.ts +249 -0
- package/dist/a2a/types.d.ts.map +1 -0
- package/dist/a2a/types.js +8 -0
- package/dist/a2a/types.js.map +1 -0
- package/dist/cli.d.ts +2 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +8 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/agent.d.ts +12 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +339 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +12 -10
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/connectors.js +2 -2
- package/dist/commands/connectors.js.map +1 -1
- package/dist/commands/index.d.ts +2 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +2 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/plans.js +1 -1
- package/dist/commands/plans.js.map +1 -1
- package/dist/commands/record.js +5 -4
- package/dist/commands/record.js.map +1 -1
- package/dist/commands/rpc.d.ts.map +1 -1
- package/dist/commands/rpc.js +220 -3
- package/dist/commands/rpc.js.map +1 -1
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +8 -10
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/secrets.d.ts.map +1 -1
- package/dist/commands/secrets.js +11 -10
- package/dist/commands/secrets.js.map +1 -1
- package/dist/commands/sessions.js +2 -2
- package/dist/commands/sessions.js.map +1 -1
- package/dist/commands/summary.d.ts.map +1 -1
- package/dist/commands/summary.js +4 -2
- package/dist/commands/summary.js.map +1 -1
- package/dist/commands/task.d.ts +14 -0
- package/dist/commands/task.d.ts.map +1 -0
- package/dist/commands/task.js +520 -0
- package/dist/commands/task.js.map +1 -0
- package/dist/db/agent-cache-store.d.ts +57 -0
- package/dist/db/agent-cache-store.d.ts.map +1 -0
- package/dist/db/agent-cache-store.js +99 -0
- package/dist/db/agent-cache-store.js.map +1 -0
- package/dist/db/connection.d.ts.map +1 -1
- package/dist/db/connection.js +86 -1
- package/dist/db/connection.js.map +1 -1
- package/dist/db/events-store.d.ts +321 -7
- package/dist/db/events-store.d.ts.map +1 -1
- package/dist/db/events-store.js +659 -31
- package/dist/db/events-store.js.map +1 -1
- package/dist/db/index.d.ts +2 -0
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +2 -0
- package/dist/db/index.js.map +1 -1
- package/dist/db/proofs-store.d.ts +8 -1
- package/dist/db/proofs-store.d.ts.map +1 -1
- package/dist/db/proofs-store.js +18 -8
- package/dist/db/proofs-store.js.map +1 -1
- package/dist/db/schema.d.ts +27 -3
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +201 -5
- package/dist/db/schema.js.map +1 -1
- package/dist/db/targets-store.d.ts +79 -0
- package/dist/db/targets-store.d.ts.map +1 -0
- package/dist/db/targets-store.js +150 -0
- package/dist/db/targets-store.js.map +1 -0
- package/dist/db/tool-analysis.d.ts +15 -3
- package/dist/db/tool-analysis.d.ts.map +1 -1
- package/dist/db/tool-analysis.js +35 -17
- package/dist/db/tool-analysis.js.map +1 -1
- package/dist/db/types.d.ts +86 -2
- package/dist/db/types.d.ts.map +1 -1
- package/dist/db/types.js +1 -1
- package/dist/filter/fields.d.ts.map +1 -1
- package/dist/filter/fields.js +22 -0
- package/dist/filter/fields.js.map +1 -1
- package/dist/filter/parser.js +2 -2
- package/dist/filter/parser.js.map +1 -1
- package/dist/filter/types.d.ts +1 -1
- package/dist/filter/types.d.ts.map +1 -1
- package/dist/html/analytics.test.ts +682 -0
- package/dist/html/analytics.ts +499 -0
- package/dist/html/browser.ts +39 -0
- package/dist/html/index.ts +97 -0
- package/dist/html/rpc-inspector.test.ts +529 -0
- package/dist/html/rpc-inspector.ts +1700 -0
- package/dist/html/templates.js +4 -4
- package/dist/html/templates.js.map +1 -1
- package/dist/html/templates.test.ts +861 -0
- package/dist/html/templates.ts +3163 -0
- package/dist/html/trace-viewer.html +624 -0
- package/dist/html/types.d.ts +3 -3
- package/dist/html/types.d.ts.map +1 -1
- package/dist/html/types.ts +491 -0
- package/dist/html/utils.ts +107 -0
- package/dist/monitor/data/connectors.d.ts.map +1 -1
- package/dist/monitor/data/connectors.js +113 -8
- package/dist/monitor/data/connectors.js.map +1 -1
- package/dist/monitor/data/popl.js +2 -2
- package/dist/monitor/data/popl.js.map +1 -1
- package/dist/monitor/routes/api.js +2 -2
- package/dist/monitor/routes/api.js.map +1 -1
- package/dist/monitor/routes/connectors.js +15 -15
- package/dist/monitor/routes/connectors.js.map +1 -1
- package/dist/monitor/routes/popl.js +5 -5
- package/dist/monitor/routes/popl.js.map +1 -1
- package/dist/monitor/templates/components.js +2 -2
- package/dist/monitor/templates/components.js.map +1 -1
- package/dist/monitor/templates/popl.js +4 -4
- package/dist/monitor/templates/popl.js.map +1 -1
- package/dist/monitor/types.d.ts +2 -2
- package/dist/monitor/types.d.ts.map +1 -1
- package/dist/proxy/bridge-utils.d.ts +41 -0
- package/dist/proxy/bridge-utils.d.ts.map +1 -0
- package/dist/proxy/bridge-utils.js +60 -0
- package/dist/proxy/bridge-utils.js.map +1 -0
- package/dist/proxy/ipc-client.d.ts.map +1 -1
- package/dist/proxy/ipc-client.js +1 -2
- package/dist/proxy/ipc-client.js.map +1 -1
- package/dist/proxy/ipc-server.d.ts.map +1 -1
- package/dist/proxy/ipc-server.js +4 -2
- package/dist/proxy/ipc-server.js.map +1 -1
- package/dist/proxy/mcp-server.d.ts +31 -0
- package/dist/proxy/mcp-server.d.ts.map +1 -1
- package/dist/proxy/mcp-server.js +393 -4
- package/dist/proxy/mcp-server.js.map +1 -1
- package/dist/proxy/types.d.ts +95 -0
- package/dist/proxy/types.d.ts.map +1 -1
- package/dist/secrets/management.d.ts +2 -2
- package/dist/secrets/management.d.ts.map +1 -1
- package/dist/secrets/management.js +7 -7
- package/dist/secrets/management.js.map +1 -1
- package/dist/shell/completer.d.ts.map +1 -1
- package/dist/shell/completer.js +16 -0
- package/dist/shell/completer.js.map +1 -1
- package/dist/shell/context-applicator.d.ts.map +1 -1
- package/dist/shell/context-applicator.js +32 -0
- package/dist/shell/context-applicator.js.map +1 -1
- package/dist/shell/filter-mappers.d.ts +5 -1
- package/dist/shell/filter-mappers.d.ts.map +1 -1
- package/dist/shell/filter-mappers.js +12 -0
- package/dist/shell/filter-mappers.js.map +1 -1
- package/dist/shell/find-command.js +13 -13
- package/dist/shell/find-command.js.map +1 -1
- package/dist/shell/inscribe-commands.js +5 -5
- package/dist/shell/inscribe-commands.js.map +1 -1
- package/dist/shell/pager/less-pager.d.ts +1 -1
- package/dist/shell/pager/less-pager.d.ts.map +1 -1
- package/dist/shell/pager/less-pager.js +5 -2
- package/dist/shell/pager/less-pager.js.map +1 -1
- package/dist/shell/pager/more-pager.d.ts +1 -1
- package/dist/shell/pager/more-pager.d.ts.map +1 -1
- package/dist/shell/pager/more-pager.js +3 -2
- package/dist/shell/pager/more-pager.js.map +1 -1
- package/dist/shell/pager/renderer.d.ts.map +1 -1
- package/dist/shell/pager/renderer.js +66 -15
- package/dist/shell/pager/renderer.js.map +1 -1
- package/dist/shell/pager/types.d.ts +5 -2
- package/dist/shell/pager/types.d.ts.map +1 -1
- package/dist/shell/pager/utils.d.ts +5 -2
- package/dist/shell/pager/utils.d.ts.map +1 -1
- package/dist/shell/pager/utils.js +14 -17
- package/dist/shell/pager/utils.js.map +1 -1
- package/dist/shell/pipeline-types.d.ts +12 -4
- package/dist/shell/pipeline-types.d.ts.map +1 -1
- package/dist/shell/ref-commands.js +7 -7
- package/dist/shell/ref-commands.js.map +1 -1
- package/dist/shell/ref-resolver.d.ts +15 -15
- package/dist/shell/ref-resolver.d.ts.map +1 -1
- package/dist/shell/ref-resolver.js +34 -20
- package/dist/shell/ref-resolver.js.map +1 -1
- package/dist/shell/repl.d.ts +25 -0
- package/dist/shell/repl.d.ts.map +1 -1
- package/dist/shell/repl.js +285 -51
- package/dist/shell/repl.js.map +1 -1
- package/dist/shell/router-commands.d.ts +30 -0
- package/dist/shell/router-commands.d.ts.map +1 -1
- package/dist/shell/router-commands.js +1011 -62
- package/dist/shell/router-commands.js.map +1 -1
- package/dist/shell/selector.d.ts +1 -1
- package/dist/shell/selector.d.ts.map +1 -1
- package/dist/shell/selector.js +1 -1
- package/dist/shell/selector.js.map +1 -1
- package/dist/shell/types.d.ts.map +1 -1
- package/dist/shell/types.js +3 -1
- package/dist/shell/types.js.map +1 -1
- package/dist/shell/where-command.d.ts.map +1 -1
- package/dist/shell/where-command.js +19 -3
- package/dist/shell/where-command.js.map +1 -1
- package/dist/utils/output.d.ts.map +1 -1
- package/dist/utils/output.js +7 -1
- package/dist/utils/output.js.map +1 -1
- package/package.json +2 -2
package/README.ja.md
CHANGED
|
@@ -24,6 +24,7 @@ proofscan は MCP (Model Context Protocol) サーバー通信の完全な可視
|
|
|
24
24
|
- 🐚 **[シェルモードガイド](docs/SHELL.ja.md)** - 対話型シェルと @参照
|
|
25
25
|
- 🎭 **[プロキシガイド](docs/PROXY.ja.md)** - MCP プロキシサーバードキュメント
|
|
26
26
|
- 📦 **[POPL ガイド](docs/POPL.ja.md)** - 公開可能証明台帳
|
|
27
|
+
- 🖥️ **[MCP Apps UI](docs/MCP_APPS.ja.md)** - インタラクティブトレースビューア
|
|
27
28
|
- 🔧 **[API ドキュメント](docs/API.ja.md)** - 開発者向け TypeScript API
|
|
28
29
|
|
|
29
30
|
## インストール
|
package/README.md
CHANGED
|
@@ -30,6 +30,7 @@ proofscan provides complete visibility into MCP (Model Context Protocol) server
|
|
|
30
30
|
| 📦 **Catalog** | Search and install MCP servers from registry |
|
|
31
31
|
| 📈 **Analyze** | Tool usage analysis across sessions |
|
|
32
32
|
| 📝 **Plans** | Validation plans for automated testing |
|
|
33
|
+
| 🖥️ **MCP Apps** | Interactive trace viewer UI in Claude Desktop |
|
|
33
34
|
| 🌍 **i18n** | Multi-language support (English, 日本語) |
|
|
34
35
|
|
|
35
36
|
## Quick Links
|
|
@@ -41,6 +42,7 @@ proofscan provides complete visibility into MCP (Model Context Protocol) server
|
|
|
41
42
|
- 🎭 **[Proxy Guide](docs/PROXY.md)** ([日本語](docs/PROXY.ja.md)) – MCP proxy server
|
|
42
43
|
- 📦 **[POPL Guide](docs/POPL.md)** ([日本語](docs/POPL.ja.md)) – Public Observable Proof Ledger
|
|
43
44
|
- 🔧 **[MCP Server Setup](docs/MCP_SERVER_SETUP_GUIDE.md)** ([日本語](docs/MCP_SERVER_SETUP_GUIDE.ja.md)) – Setting up MCP servers
|
|
45
|
+
- 🖥️ **[MCP Apps UI](docs/MCP_APPS.md)** ([日本語](docs/MCP_APPS.ja.md)) – Interactive trace viewer UI
|
|
44
46
|
|
|
45
47
|
### For Developers
|
|
46
48
|
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Card Fetching
|
|
3
|
+
*
|
|
4
|
+
* Fetches and parses Agent Cards from A2A agent endpoints.
|
|
5
|
+
*/
|
|
6
|
+
import type { AgentCard } from './types.js';
|
|
7
|
+
export interface FetchAgentCardOptions {
|
|
8
|
+
timeout?: number;
|
|
9
|
+
headers?: Record<string, string>;
|
|
10
|
+
/** Allow private/local URLs (development only) */
|
|
11
|
+
allowLocal?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface FetchAgentCardResult {
|
|
14
|
+
ok: boolean;
|
|
15
|
+
agentCard?: AgentCard;
|
|
16
|
+
hash?: string;
|
|
17
|
+
error?: string;
|
|
18
|
+
statusCode?: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Validates that a URL is not a private/internal URL
|
|
22
|
+
* Blocks localhost, private IP ranges, and non-HTTP/HTTPS protocols
|
|
23
|
+
* @param url - URL string to validate
|
|
24
|
+
* @returns true if URL should be blocked (private/local)
|
|
25
|
+
*/
|
|
26
|
+
export declare function isPrivateUrl(url: string): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Normalizes URL for Agent Card endpoint
|
|
29
|
+
* Appends /.well-known/agent.json if not present
|
|
30
|
+
* Exported for testing
|
|
31
|
+
*/
|
|
32
|
+
export declare function normalizeAgentCardUrl(url: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Fetch Agent Card from A2A agent endpoint
|
|
35
|
+
* @param url - Agent base URL or full Agent Card URL
|
|
36
|
+
* @param options - Fetch options (timeout, headers)
|
|
37
|
+
* @returns FetchAgentCardResult with parsed AgentCard or error
|
|
38
|
+
*/
|
|
39
|
+
export declare function fetchAgentCard(url: string, options?: FetchAgentCardOptions): Promise<FetchAgentCardResult>;
|
|
40
|
+
//# sourceMappingURL=agent-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-card.d.ts","sourceRoot":"","sources":["../../src/a2a/agent-card.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,kDAAkD;IAClD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAOD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAiDjD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA4BzD;AASD;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,oBAAoB,CAAC,CA4H/B"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Card Fetching
|
|
3
|
+
*
|
|
4
|
+
* Fetches and parses Agent Cards from A2A agent endpoints.
|
|
5
|
+
*/
|
|
6
|
+
import { createHash } from 'crypto';
|
|
7
|
+
import { parseAgentCard } from './config.js';
|
|
8
|
+
/**
|
|
9
|
+
* Maximum allowed response body size (1MB)
|
|
10
|
+
*/
|
|
11
|
+
const MAX_RESPONSE_SIZE = 1024 * 1024;
|
|
12
|
+
/**
|
|
13
|
+
* Validates that a URL is not a private/internal URL
|
|
14
|
+
* Blocks localhost, private IP ranges, and non-HTTP/HTTPS protocols
|
|
15
|
+
* @param url - URL string to validate
|
|
16
|
+
* @returns true if URL should be blocked (private/local)
|
|
17
|
+
*/
|
|
18
|
+
export function isPrivateUrl(url) {
|
|
19
|
+
const parsed = new URL(url);
|
|
20
|
+
const hostname = parsed.hostname.toLowerCase();
|
|
21
|
+
// localhost variants
|
|
22
|
+
if (hostname === 'localhost' || hostname === '127.0.0.1' || hostname === '::1') {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
// IPv6 loopback addresses (any within ::1/128)
|
|
26
|
+
if (hostname.startsWith('[') && hostname.includes('::')) {
|
|
27
|
+
const ipv6 = hostname.slice(1, -1);
|
|
28
|
+
if (ipv6 === '::1' || ipv6 === '0:0:0:0:0:0:0:1') {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Private IPv4 address ranges
|
|
33
|
+
const ipv4Match = hostname.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);
|
|
34
|
+
if (ipv4Match) {
|
|
35
|
+
const [, a, b] = ipv4Match.map(Number);
|
|
36
|
+
// 10.0.0.0/8
|
|
37
|
+
if (a === 10)
|
|
38
|
+
return true;
|
|
39
|
+
// 172.16.0.0/12
|
|
40
|
+
if (a === 172 && b >= 16 && b <= 31)
|
|
41
|
+
return true;
|
|
42
|
+
// 192.168.0.0/16
|
|
43
|
+
if (a === 192 && b === 168)
|
|
44
|
+
return true;
|
|
45
|
+
// 169.254.0.0/16 (link-local)
|
|
46
|
+
if (a === 169 && b === 254)
|
|
47
|
+
return true;
|
|
48
|
+
// 127.0.0.0/8 (loopback - extra safety)
|
|
49
|
+
if (a === 127)
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
// Private IPv6 address ranges
|
|
53
|
+
if (hostname.startsWith('[') && hostname.endsWith(']')) {
|
|
54
|
+
const ipv6 = hostname.slice(1, -1);
|
|
55
|
+
// fc00::/7 (unique local)
|
|
56
|
+
if (ipv6.startsWith('fc') || ipv6.startsWith('fd'))
|
|
57
|
+
return true;
|
|
58
|
+
// fe80::/10 (link-local)
|
|
59
|
+
if (ipv6.startsWith('fe8') || ipv6.startsWith('fe9') ||
|
|
60
|
+
ipv6.startsWith('fea') || ipv6.startsWith('feb'))
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
// Only allow HTTP and HTTPS protocols
|
|
64
|
+
if (!['http:', 'https:'].includes(parsed.protocol)) {
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Normalizes URL for Agent Card endpoint
|
|
71
|
+
* Appends /.well-known/agent.json if not present
|
|
72
|
+
* Exported for testing
|
|
73
|
+
*/
|
|
74
|
+
export function normalizeAgentCardUrl(url) {
|
|
75
|
+
const normalizedUrl = url.trim();
|
|
76
|
+
// Check if URL already contains /.well-known/agent.json
|
|
77
|
+
if (normalizedUrl.includes('/.well-known/agent.json')) {
|
|
78
|
+
return normalizedUrl;
|
|
79
|
+
}
|
|
80
|
+
// Parse URL to handle query parameters and hash correctly
|
|
81
|
+
try {
|
|
82
|
+
const urlObj = new URL(normalizedUrl);
|
|
83
|
+
// Build base URL without trailing slash
|
|
84
|
+
const baseUrl = normalizedUrl.split('?')[0].split('#')[0].replace(/\/+$/, '');
|
|
85
|
+
const query = urlObj.search;
|
|
86
|
+
const hash = urlObj.hash;
|
|
87
|
+
// Reconstruct URL with agent.json appended
|
|
88
|
+
let result = `${baseUrl}/.well-known/agent.json`;
|
|
89
|
+
if (query)
|
|
90
|
+
result += query;
|
|
91
|
+
if (hash)
|
|
92
|
+
result += hash;
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// Fallback: just append to the end if URL parsing fails
|
|
97
|
+
const baseUrl = normalizedUrl.replace(/\/+$/, '');
|
|
98
|
+
return `${baseUrl}/.well-known/agent.json`;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Computes SHA-256 hash of response body
|
|
103
|
+
*/
|
|
104
|
+
function computeHash(body) {
|
|
105
|
+
return createHash('sha256').update(body).digest('hex');
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Fetch Agent Card from A2A agent endpoint
|
|
109
|
+
* @param url - Agent base URL or full Agent Card URL
|
|
110
|
+
* @param options - Fetch options (timeout, headers)
|
|
111
|
+
* @returns FetchAgentCardResult with parsed AgentCard or error
|
|
112
|
+
*/
|
|
113
|
+
export async function fetchAgentCard(url, options = {}) {
|
|
114
|
+
const { timeout = 10000, headers = {}, allowLocal = false } = options;
|
|
115
|
+
const agentCardUrl = normalizeAgentCardUrl(url);
|
|
116
|
+
// Validate URL format
|
|
117
|
+
try {
|
|
118
|
+
new URL(agentCardUrl);
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return {
|
|
122
|
+
ok: false,
|
|
123
|
+
error: `Invalid URL: ${url}`,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
// SSRF protection: Block private and local URLs
|
|
127
|
+
if (isPrivateUrl(agentCardUrl) && !allowLocal) {
|
|
128
|
+
return {
|
|
129
|
+
ok: false,
|
|
130
|
+
error: 'Private or local URLs are not allowed',
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
// Set up abort controller for timeout
|
|
134
|
+
const controller = new AbortController();
|
|
135
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
136
|
+
try {
|
|
137
|
+
const response = await fetch(agentCardUrl, {
|
|
138
|
+
headers: {
|
|
139
|
+
'Accept': 'application/json',
|
|
140
|
+
...headers,
|
|
141
|
+
},
|
|
142
|
+
signal: controller.signal,
|
|
143
|
+
});
|
|
144
|
+
clearTimeout(timeoutId);
|
|
145
|
+
// Response size limit: Check Content-Length header first
|
|
146
|
+
const contentLength = response.headers.get('content-length');
|
|
147
|
+
if (contentLength) {
|
|
148
|
+
const length = parseInt(contentLength, 10);
|
|
149
|
+
if (length > MAX_RESPONSE_SIZE) {
|
|
150
|
+
return {
|
|
151
|
+
ok: false,
|
|
152
|
+
statusCode: response.status,
|
|
153
|
+
error: `Response too large: ${length} bytes (max ${MAX_RESPONSE_SIZE})`,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Get response body
|
|
158
|
+
const bodyText = await response.text();
|
|
159
|
+
// Response size limit: Check actual body size
|
|
160
|
+
if (bodyText.length > MAX_RESPONSE_SIZE) {
|
|
161
|
+
return {
|
|
162
|
+
ok: false,
|
|
163
|
+
statusCode: response.status,
|
|
164
|
+
error: `Response body too large: ${bodyText.length} bytes (max ${MAX_RESPONSE_SIZE})`,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
const hash = computeHash(bodyText);
|
|
168
|
+
// Handle non-OK responses
|
|
169
|
+
if (!response.ok) {
|
|
170
|
+
return {
|
|
171
|
+
ok: false,
|
|
172
|
+
statusCode: response.status,
|
|
173
|
+
error: `HTTP ${response.status}: ${response.statusText}`,
|
|
174
|
+
hash,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
// Parse JSON
|
|
178
|
+
let parsedBody;
|
|
179
|
+
try {
|
|
180
|
+
parsedBody = JSON.parse(bodyText);
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
return {
|
|
184
|
+
ok: false,
|
|
185
|
+
statusCode: response.status,
|
|
186
|
+
error: 'Invalid JSON response',
|
|
187
|
+
hash,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
// Validate Agent Card
|
|
191
|
+
const result = parseAgentCard(parsedBody);
|
|
192
|
+
if (!result.ok) {
|
|
193
|
+
return {
|
|
194
|
+
ok: false,
|
|
195
|
+
statusCode: response.status,
|
|
196
|
+
error: `Invalid Agent Card: ${result.error}`,
|
|
197
|
+
hash,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
201
|
+
ok: true,
|
|
202
|
+
agentCard: result.value,
|
|
203
|
+
hash,
|
|
204
|
+
statusCode: response.status,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
catch (error) {
|
|
208
|
+
clearTimeout(timeoutId);
|
|
209
|
+
if (error instanceof Error) {
|
|
210
|
+
if (error.name === 'AbortError') {
|
|
211
|
+
return {
|
|
212
|
+
ok: false,
|
|
213
|
+
error: `Request timeout after ${timeout}ms`,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
return {
|
|
217
|
+
ok: false,
|
|
218
|
+
error: error.message,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
return {
|
|
222
|
+
ok: false,
|
|
223
|
+
error: String(error),
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=agent-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-card.js","sourceRoot":"","sources":["../../src/a2a/agent-card.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A Client
|
|
3
|
+
*
|
|
4
|
+
* Client for sending messages to A2A agents via JSON-RPC 2.0.
|
|
5
|
+
* Implements message/send, tasks/get, tasks/list, and tasks/cancel operations.
|
|
6
|
+
*
|
|
7
|
+
* Phase 4 - Client Implementation
|
|
8
|
+
* Phase 2 - Task Management (getTask, listTasks, cancelTask)
|
|
9
|
+
* Phase 2.4 - Task DB event recording
|
|
10
|
+
*/
|
|
11
|
+
import type { AgentCard, TaskStatusUpdateEvent, TaskArtifactUpdateEvent, StreamMessageResult, A2AMessage, A2ATask, Task, ListTasksParams, ListTasksResponse, AgentCapabilities } from './types.js';
|
|
12
|
+
import type { EventsStore } from '../db/events-store.js';
|
|
13
|
+
export type { A2AMessage, A2ATask, Task, ListTasksParams, ListTasksResponse } from './types.js';
|
|
14
|
+
export interface SendMessageOptions {
|
|
15
|
+
timeout?: number;
|
|
16
|
+
headers?: Record<string, string>;
|
|
17
|
+
blocking?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface SendMessageResult {
|
|
20
|
+
ok: boolean;
|
|
21
|
+
task?: A2ATask;
|
|
22
|
+
message?: A2AMessage;
|
|
23
|
+
error?: string;
|
|
24
|
+
statusCode?: number;
|
|
25
|
+
}
|
|
26
|
+
export interface StreamMessageOptions {
|
|
27
|
+
timeout?: number;
|
|
28
|
+
headers?: Record<string, string>;
|
|
29
|
+
onStatus?: (event: TaskStatusUpdateEvent) => void;
|
|
30
|
+
onArtifact?: (event: TaskArtifactUpdateEvent) => void;
|
|
31
|
+
onMessage?: (message: A2AMessage) => void;
|
|
32
|
+
onTask?: (task: A2ATask) => void;
|
|
33
|
+
onError?: (error: string) => void;
|
|
34
|
+
signal?: AbortSignal;
|
|
35
|
+
}
|
|
36
|
+
export interface GetTaskOptions {
|
|
37
|
+
historyLength?: number;
|
|
38
|
+
headers?: Record<string, string>;
|
|
39
|
+
timeout?: number;
|
|
40
|
+
}
|
|
41
|
+
export interface GetTaskResult {
|
|
42
|
+
ok: boolean;
|
|
43
|
+
task?: Task;
|
|
44
|
+
error?: string;
|
|
45
|
+
statusCode?: number;
|
|
46
|
+
}
|
|
47
|
+
export interface CancelTaskResult {
|
|
48
|
+
ok: boolean;
|
|
49
|
+
task?: Task;
|
|
50
|
+
error?: string;
|
|
51
|
+
statusCode?: number;
|
|
52
|
+
}
|
|
53
|
+
export interface ListTasksResult {
|
|
54
|
+
ok: boolean;
|
|
55
|
+
response?: ListTasksResponse;
|
|
56
|
+
error?: string;
|
|
57
|
+
statusCode?: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* A2A Client for sending messages to agents
|
|
61
|
+
*/
|
|
62
|
+
export declare class A2AClient {
|
|
63
|
+
private baseUrl;
|
|
64
|
+
private defaultHeaders;
|
|
65
|
+
private agentCard;
|
|
66
|
+
private allowLocal;
|
|
67
|
+
private eventsStore?;
|
|
68
|
+
constructor(agentCard: AgentCard, options?: {
|
|
69
|
+
headers?: Record<string, string>;
|
|
70
|
+
allowLocal?: boolean;
|
|
71
|
+
eventsStore?: EventsStore;
|
|
72
|
+
});
|
|
73
|
+
/**
|
|
74
|
+
* Get EventsStore instance (Phase 2.4)
|
|
75
|
+
* @private
|
|
76
|
+
*/
|
|
77
|
+
private getEventsStore;
|
|
78
|
+
/**
|
|
79
|
+
* Send a message to the agent
|
|
80
|
+
* POST /message/send (JSON-RPC 2.0)
|
|
81
|
+
*/
|
|
82
|
+
sendMessage(message: string | A2AMessage, options?: SendMessageOptions): Promise<SendMessageResult>;
|
|
83
|
+
/**
|
|
84
|
+
* Get task by ID (Phase 2 - A2A Protocol Compliant)
|
|
85
|
+
* POST /a2a (JSON-RPC 2.0)
|
|
86
|
+
*
|
|
87
|
+
* @param taskId - The task ID to retrieve
|
|
88
|
+
* @param options - Optional: historyLength, headers, timeout
|
|
89
|
+
* @returns Promise<GetTaskResult> with task or error
|
|
90
|
+
*/
|
|
91
|
+
getTask(taskId: string, options?: GetTaskOptions): Promise<GetTaskResult>;
|
|
92
|
+
/**
|
|
93
|
+
* List tasks with optional filters (Phase 2)
|
|
94
|
+
* POST /a2a (JSON-RPC 2.0)
|
|
95
|
+
*
|
|
96
|
+
* @param params - Optional: contextId, status, pageSize, pageToken, includeArtifacts
|
|
97
|
+
* @returns Promise<ListTasksResult> with tasks list or error
|
|
98
|
+
*/
|
|
99
|
+
listTasks(params?: ListTasksParams): Promise<ListTasksResult>;
|
|
100
|
+
/**
|
|
101
|
+
* Cancel a task (Phase 2 - A2A Protocol Compliant)
|
|
102
|
+
* POST /a2a (JSON-RPC 2.0)
|
|
103
|
+
*
|
|
104
|
+
* @param taskId - The task ID to cancel
|
|
105
|
+
* @returns Promise<CancelTaskResult> with canceled task or error
|
|
106
|
+
*/
|
|
107
|
+
cancelTask(taskId: string): Promise<CancelTaskResult>;
|
|
108
|
+
/**
|
|
109
|
+
* Stream message to agent
|
|
110
|
+
* POST /message/stream (JSON-RPC 2.0 + SSE response)
|
|
111
|
+
*/
|
|
112
|
+
streamMessage(message: string | A2AMessage, options?: StreamMessageOptions): Promise<StreamMessageResult>;
|
|
113
|
+
/**
|
|
114
|
+
* Parse Task from JSON-RPC response
|
|
115
|
+
*/
|
|
116
|
+
private parseTask;
|
|
117
|
+
/**
|
|
118
|
+
* Parse Message from JSON-RPC response
|
|
119
|
+
*/
|
|
120
|
+
private parseMessage;
|
|
121
|
+
/**
|
|
122
|
+
* Parse Message Part from JSON-RPC response
|
|
123
|
+
*/
|
|
124
|
+
private parsePart;
|
|
125
|
+
/**
|
|
126
|
+
* Parse task status string
|
|
127
|
+
*/
|
|
128
|
+
private parseTaskStatus;
|
|
129
|
+
/**
|
|
130
|
+
* Parse SSE event data
|
|
131
|
+
*/
|
|
132
|
+
private parseStreamEvent;
|
|
133
|
+
/**
|
|
134
|
+
* Parse status event
|
|
135
|
+
*/
|
|
136
|
+
private parseStatusEvent;
|
|
137
|
+
/**
|
|
138
|
+
* Parse artifact event
|
|
139
|
+
*/
|
|
140
|
+
private parseArtifactEvent;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Create A2A client from agent ID
|
|
144
|
+
* Fetches Agent Card from cache or remote endpoint
|
|
145
|
+
*/
|
|
146
|
+
export declare function createA2AClient(configDir: string, agentId: string): Promise<{
|
|
147
|
+
ok: true;
|
|
148
|
+
client: A2AClient;
|
|
149
|
+
agentCard: AgentCard;
|
|
150
|
+
} | {
|
|
151
|
+
ok: false;
|
|
152
|
+
error: string;
|
|
153
|
+
}>;
|
|
154
|
+
/**
|
|
155
|
+
* Probe agent capabilities (Phase 2.5)
|
|
156
|
+
*
|
|
157
|
+
* Detects agent capabilities by:
|
|
158
|
+
* 1. Checking Agent Card capabilities field (if present)
|
|
159
|
+
* 2. Probing tasks/list endpoint to detect task support
|
|
160
|
+
*
|
|
161
|
+
* Note: Streaming capability is only detected from Agent Card, not probed,
|
|
162
|
+
* because SSE probing is more complex and unreliable.
|
|
163
|
+
*
|
|
164
|
+
* @param agentCard - The agent's Agent Card
|
|
165
|
+
* @param _allowLocal - Reserved for future use (URL validation)
|
|
166
|
+
* @returns Promise<AgentCapabilities> with detected capabilities
|
|
167
|
+
*/
|
|
168
|
+
export declare function probeCapabilities(agentCard: AgentCard, _allowLocal?: boolean): Promise<AgentCapabilities>;
|
|
169
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/a2a/client.ts"],"names":[],"mappings":"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"}
|