@dupecom/botcha-cloudflare 0.20.2 → 0.23.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.md +74 -9
- package/dist/agent-auth.d.ts +129 -0
- package/dist/agent-auth.d.ts.map +1 -0
- package/dist/agent-auth.js +210 -0
- package/dist/agents.d.ts +10 -0
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +51 -1
- package/dist/app-gate.d.ts +6 -0
- package/dist/app-gate.d.ts.map +1 -0
- package/dist/app-gate.js +69 -0
- package/dist/apps.d.ts +13 -4
- package/dist/apps.d.ts.map +1 -1
- package/dist/apps.js +30 -4
- package/dist/dashboard/account.d.ts +63 -0
- package/dist/dashboard/account.d.ts.map +1 -0
- package/dist/dashboard/account.js +488 -0
- package/dist/dashboard/api.js +15 -68
- package/dist/dashboard/auth.d.ts.map +1 -1
- package/dist/dashboard/auth.js +14 -14
- package/dist/dashboard/docs.d.ts.map +1 -1
- package/dist/dashboard/docs.js +146 -3
- package/dist/dashboard/layout.d.ts.map +1 -1
- package/dist/dashboard/layout.js +2 -2
- package/dist/dashboard/mcp-setup.d.ts +15 -0
- package/dist/dashboard/mcp-setup.d.ts.map +1 -0
- package/dist/dashboard/mcp-setup.js +391 -0
- package/dist/dashboard/showcase.d.ts +6 -10
- package/dist/dashboard/showcase.d.ts.map +1 -1
- package/dist/dashboard/showcase.js +67 -991
- package/dist/dashboard/whitepaper.d.ts.map +1 -1
- package/dist/dashboard/whitepaper.js +42 -4
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +660 -83
- package/dist/mcp.d.ts +20 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +1290 -0
- package/dist/oauth-agent.d.ts +130 -0
- package/dist/oauth-agent.d.ts.map +1 -0
- package/dist/oauth-agent.js +194 -0
- package/dist/static.d.ts +781 -5
- package/dist/static.d.ts.map +1 -1
- package/dist/static.js +790 -111
- package/dist/tap-a2a-routes.d.ts +355 -0
- package/dist/tap-a2a-routes.d.ts.map +1 -0
- package/dist/tap-a2a-routes.js +475 -0
- package/dist/tap-a2a.d.ts +199 -0
- package/dist/tap-a2a.d.ts.map +1 -0
- package/dist/tap-a2a.js +502 -0
- package/dist/tap-agents.d.ts +15 -0
- package/dist/tap-agents.d.ts.map +1 -1
- package/dist/tap-agents.js +31 -1
- package/dist/tap-ans-routes.d.ts +302 -0
- package/dist/tap-ans-routes.d.ts.map +1 -0
- package/dist/tap-ans-routes.js +535 -0
- package/dist/tap-ans.d.ts +241 -0
- package/dist/tap-ans.d.ts.map +1 -0
- package/dist/tap-ans.js +481 -0
- package/dist/tap-delegation-routes.d.ts.map +1 -1
- package/dist/tap-delegation-routes.js +11 -0
- package/dist/tap-did.d.ts +140 -0
- package/dist/tap-did.d.ts.map +1 -0
- package/dist/tap-did.js +262 -0
- package/dist/tap-oidca-routes.d.ts +383 -0
- package/dist/tap-oidca-routes.d.ts.map +1 -0
- package/dist/tap-oidca-routes.js +597 -0
- package/dist/tap-oidca.d.ts +288 -0
- package/dist/tap-oidca.d.ts.map +1 -0
- package/dist/tap-oidca.js +461 -0
- package/dist/tap-routes.d.ts +24 -8
- package/dist/tap-routes.d.ts.map +1 -1
- package/dist/tap-routes.js +169 -23
- package/dist/tap-vc-routes.d.ts +358 -0
- package/dist/tap-vc-routes.d.ts.map +1 -0
- package/dist/tap-vc-routes.js +367 -0
- package/dist/tap-vc.d.ts +125 -0
- package/dist/tap-vc.d.ts.map +1 -0
- package/dist/tap-vc.js +245 -0
- package/dist/tap-x402-routes.d.ts +89 -0
- package/dist/tap-x402-routes.d.ts.map +1 -0
- package/dist/tap-x402-routes.js +579 -0
- package/dist/tap-x402.d.ts +222 -0
- package/dist/tap-x402.d.ts.map +1 -0
- package/dist/tap-x402.js +546 -0
- package/dist/webhooks.d.ts +99 -0
- package/dist/webhooks.d.ts.map +1 -0
- package/dist/webhooks.js +642 -0
- package/package.json +3 -1
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BOTCHA ANS API Routes — tap-ans-routes.ts
|
|
3
|
+
*
|
|
4
|
+
* HTTP route handlers for ANS (Agent Name Service) integration.
|
|
5
|
+
*
|
|
6
|
+
* Routes:
|
|
7
|
+
* GET /v1/ans/resolve/:name — Resolve ANS name to agent metadata
|
|
8
|
+
* POST /v1/ans/verify — Issue BOTCHA verification badge for ANS name
|
|
9
|
+
* GET /v1/ans/discover — List BOTCHA-verified ANS agents
|
|
10
|
+
* GET /v1/ans/nonce/:name — Get a nonce for ANS ownership proof
|
|
11
|
+
* GET /v1/ans/botcha — BOTCHA's own ANS record / identity
|
|
12
|
+
*
|
|
13
|
+
* Trust levels issued:
|
|
14
|
+
* domain-validated — ANS TXT record exists and resolves correctly
|
|
15
|
+
* key-validated — Caller proved control of the ANS keypair
|
|
16
|
+
* behavior-validated — Caller also passed a BOTCHA speed/reasoning challenge
|
|
17
|
+
*/
|
|
18
|
+
import type { Context } from 'hono';
|
|
19
|
+
/**
|
|
20
|
+
* GET /v1/ans/resolve/:name
|
|
21
|
+
*
|
|
22
|
+
* Resolve an ANS name to agent metadata via DNS TXT lookup.
|
|
23
|
+
*
|
|
24
|
+
* Accepts:
|
|
25
|
+
* - Path param: /v1/ans/resolve/ans%3A%2F%2Fv1.0.myagent.example.com
|
|
26
|
+
* - Path param: /v1/ans/resolve/myagent.example.com
|
|
27
|
+
* - Query param: /v1/ans/resolve/lookup?name=ans://v1.0.myagent.example.com
|
|
28
|
+
*
|
|
29
|
+
* Returns:
|
|
30
|
+
* - Parsed ANS name components
|
|
31
|
+
* - DNS TXT record fields (name, pub, cap, url, did)
|
|
32
|
+
* - Optional Agent Card (if record.url is set)
|
|
33
|
+
* - BOTCHA verification status (if already in registry)
|
|
34
|
+
*/
|
|
35
|
+
export declare function resolveANSNameRoute(c: Context): Promise<(Response & import("hono").TypedResponse<{
|
|
36
|
+
success: false;
|
|
37
|
+
error: string;
|
|
38
|
+
message: string;
|
|
39
|
+
examples: string[];
|
|
40
|
+
}, 400, "json">) | (Response & import("hono").TypedResponse<{
|
|
41
|
+
success: false;
|
|
42
|
+
error: string;
|
|
43
|
+
message: string | undefined;
|
|
44
|
+
name: {
|
|
45
|
+
raw: string;
|
|
46
|
+
domain: string;
|
|
47
|
+
label: string;
|
|
48
|
+
dns_lookup: string;
|
|
49
|
+
} | undefined;
|
|
50
|
+
hints: string[];
|
|
51
|
+
}, 404, "json">) | (Response & import("hono").TypedResponse<{
|
|
52
|
+
success: true;
|
|
53
|
+
ans_name: {
|
|
54
|
+
raw: string;
|
|
55
|
+
canonical: string;
|
|
56
|
+
version: string;
|
|
57
|
+
label: string;
|
|
58
|
+
domain: string;
|
|
59
|
+
fqdn: string;
|
|
60
|
+
dns_lookup_name: string;
|
|
61
|
+
};
|
|
62
|
+
record: {
|
|
63
|
+
version: string;
|
|
64
|
+
name: string | undefined;
|
|
65
|
+
capabilities: string[];
|
|
66
|
+
agent_card_url: string | undefined;
|
|
67
|
+
did: string | undefined;
|
|
68
|
+
has_public_key: boolean;
|
|
69
|
+
} | null;
|
|
70
|
+
agent_card: {
|
|
71
|
+
[x: string]: import("hono/utils/types").JSONValue;
|
|
72
|
+
} | null;
|
|
73
|
+
botcha_verified: boolean;
|
|
74
|
+
botcha_badge: {
|
|
75
|
+
badge_id: string;
|
|
76
|
+
trust_level: "domain-validated" | "key-validated" | "behavior-validated";
|
|
77
|
+
verified_at: string;
|
|
78
|
+
expires_at: string;
|
|
79
|
+
} | null;
|
|
80
|
+
resolved_at: string | null;
|
|
81
|
+
get_verified: {
|
|
82
|
+
note: string;
|
|
83
|
+
endpoint: string;
|
|
84
|
+
body: {
|
|
85
|
+
ans_name: string;
|
|
86
|
+
nonce: string;
|
|
87
|
+
signature: string;
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
}, import("hono/utils/http-status").ContentfulStatusCode, "json">) | (Response & import("hono").TypedResponse<{
|
|
91
|
+
success: false;
|
|
92
|
+
error: string;
|
|
93
|
+
message: string;
|
|
94
|
+
}, 500, "json">)>;
|
|
95
|
+
/**
|
|
96
|
+
* GET /v1/ans/nonce/:name
|
|
97
|
+
*
|
|
98
|
+
* Get a fresh nonce for ANS ownership verification.
|
|
99
|
+
* The caller must sign this nonce with their ANS private key,
|
|
100
|
+
* then submit it to POST /v1/ans/verify.
|
|
101
|
+
*
|
|
102
|
+
* Nonces expire in 10 minutes (single use).
|
|
103
|
+
*/
|
|
104
|
+
export declare function getANSNonceRoute(c: Context): Promise<(Response & import("hono").TypedResponse<{
|
|
105
|
+
success: false;
|
|
106
|
+
error: string;
|
|
107
|
+
message: string | undefined;
|
|
108
|
+
}, 400, "json">) | (Response & import("hono").TypedResponse<{
|
|
109
|
+
success: true;
|
|
110
|
+
nonce: string;
|
|
111
|
+
ans_name: string;
|
|
112
|
+
expires_in_seconds: number;
|
|
113
|
+
instructions: {
|
|
114
|
+
step1: string;
|
|
115
|
+
step2: string;
|
|
116
|
+
algorithm: string;
|
|
117
|
+
note: string;
|
|
118
|
+
};
|
|
119
|
+
}, import("hono/utils/http-status").ContentfulStatusCode, "json">) | (Response & import("hono").TypedResponse<{
|
|
120
|
+
success: false;
|
|
121
|
+
error: string;
|
|
122
|
+
message: string;
|
|
123
|
+
}, 500, "json">)>;
|
|
124
|
+
/**
|
|
125
|
+
* POST /v1/ans/verify
|
|
126
|
+
*
|
|
127
|
+
* Issue a BOTCHA verification badge for an ANS name.
|
|
128
|
+
*
|
|
129
|
+
* Input (JSON body):
|
|
130
|
+
* ans_name string — ANS name to verify (e.g. "ans://v1.0.myagent.example.com")
|
|
131
|
+
* nonce string — From GET /v1/ans/nonce/:name (required for key-validated+)
|
|
132
|
+
* signature string — base64url signature of nonce (required for key-validated+)
|
|
133
|
+
* algorithm string — "ECDSA-P256" (default) | "Ed25519"
|
|
134
|
+
* agent_id string — optional BOTCHA agent ID to link to this ANS name
|
|
135
|
+
*
|
|
136
|
+
* Trust levels:
|
|
137
|
+
* - domain-validated: ANS TXT record exists (no nonce/signature required)
|
|
138
|
+
* - key-validated: Caller signs nonce with ANS key (nonce + signature required)
|
|
139
|
+
* - behavior-validated: (future) key-validated + BOTCHA challenge passed
|
|
140
|
+
*
|
|
141
|
+
* Returns:
|
|
142
|
+
* BOTCHA-ANS verification badge (JWT credential)
|
|
143
|
+
*/
|
|
144
|
+
export declare function verifyANSNameRoute(c: Context): Promise<(Response & import("hono").TypedResponse<{
|
|
145
|
+
success: false;
|
|
146
|
+
error: string;
|
|
147
|
+
message: string;
|
|
148
|
+
}, 401, "json">) | (Response & import("hono").TypedResponse<{
|
|
149
|
+
success: false;
|
|
150
|
+
error: string;
|
|
151
|
+
message: string;
|
|
152
|
+
}, 403, "json">) | (Response & import("hono").TypedResponse<{
|
|
153
|
+
success: false;
|
|
154
|
+
error: string;
|
|
155
|
+
message: string;
|
|
156
|
+
}, 400, "json">) | (Response & import("hono").TypedResponse<{
|
|
157
|
+
success: false;
|
|
158
|
+
error: string;
|
|
159
|
+
message: string;
|
|
160
|
+
hint: string;
|
|
161
|
+
}, 422, "json">) | (Response & import("hono").TypedResponse<{
|
|
162
|
+
success: false;
|
|
163
|
+
error: string;
|
|
164
|
+
message: string | undefined;
|
|
165
|
+
hint: string;
|
|
166
|
+
}, 403, "json">) | (Response & import("hono").TypedResponse<{
|
|
167
|
+
success: false;
|
|
168
|
+
error: string;
|
|
169
|
+
message: string;
|
|
170
|
+
}, 404, "json">) | (Response & import("hono").TypedResponse<{
|
|
171
|
+
success: true;
|
|
172
|
+
badge: {
|
|
173
|
+
badge_id: string;
|
|
174
|
+
ans_name: string;
|
|
175
|
+
domain: string;
|
|
176
|
+
agent_id: string | undefined;
|
|
177
|
+
verified: boolean;
|
|
178
|
+
trust_level: "domain-validated" | "key-validated" | "behavior-validated";
|
|
179
|
+
verification_type: "dns-ownership" | "key-ownership" | "challenge-verified";
|
|
180
|
+
credential_token: string;
|
|
181
|
+
issued_at: string;
|
|
182
|
+
expires_at: string;
|
|
183
|
+
issuer: "botcha.ai";
|
|
184
|
+
};
|
|
185
|
+
record: {
|
|
186
|
+
capabilities: string[];
|
|
187
|
+
agent_card_url: string | undefined;
|
|
188
|
+
did: string | undefined;
|
|
189
|
+
has_public_key: boolean;
|
|
190
|
+
};
|
|
191
|
+
trust_levels: {
|
|
192
|
+
current: "domain-validated" | "key-validated";
|
|
193
|
+
description: string;
|
|
194
|
+
upgrade: {
|
|
195
|
+
to: string;
|
|
196
|
+
how: string;
|
|
197
|
+
} | null;
|
|
198
|
+
};
|
|
199
|
+
discovery: {
|
|
200
|
+
note: string;
|
|
201
|
+
endpoint: string;
|
|
202
|
+
};
|
|
203
|
+
}, 201, "json">) | (Response & import("hono").TypedResponse<{
|
|
204
|
+
success: false;
|
|
205
|
+
error: string;
|
|
206
|
+
message: string;
|
|
207
|
+
}, 500, "json">)>;
|
|
208
|
+
/**
|
|
209
|
+
* GET /v1/ans/discover
|
|
210
|
+
*
|
|
211
|
+
* List BOTCHA-verified ANS agents in the public discovery registry.
|
|
212
|
+
* These agents have passed BOTCHA verification and are safe to interact with.
|
|
213
|
+
*
|
|
214
|
+
* Query params:
|
|
215
|
+
* domain string — filter by domain (e.g. ?domain=example.com)
|
|
216
|
+
* limit number — max results (default: 50, max: 100)
|
|
217
|
+
*/
|
|
218
|
+
export declare function discoverANSAgentsRoute(c: Context): Promise<(Response & import("hono").TypedResponse<{
|
|
219
|
+
success: true;
|
|
220
|
+
count: number;
|
|
221
|
+
agents: {
|
|
222
|
+
ans_name: string;
|
|
223
|
+
domain: string;
|
|
224
|
+
label: string;
|
|
225
|
+
agent_id: string | undefined;
|
|
226
|
+
trust_level: "domain-validated" | "key-validated" | "behavior-validated";
|
|
227
|
+
capabilities: string[];
|
|
228
|
+
agent_card_url: string | undefined;
|
|
229
|
+
verified_at: string;
|
|
230
|
+
expires_at: string;
|
|
231
|
+
badge_id: string;
|
|
232
|
+
}[];
|
|
233
|
+
registry: {
|
|
234
|
+
description: string;
|
|
235
|
+
trust_levels: {
|
|
236
|
+
'domain-validated': string;
|
|
237
|
+
'key-validated': string;
|
|
238
|
+
'behavior-validated': string;
|
|
239
|
+
};
|
|
240
|
+
get_verified: string;
|
|
241
|
+
resolve_name: string;
|
|
242
|
+
};
|
|
243
|
+
filter: {
|
|
244
|
+
domain: string;
|
|
245
|
+
} | null;
|
|
246
|
+
}, import("hono/utils/http-status").ContentfulStatusCode, "json">) | (Response & import("hono").TypedResponse<{
|
|
247
|
+
success: false;
|
|
248
|
+
error: string;
|
|
249
|
+
message: string;
|
|
250
|
+
}, 500, "json">)>;
|
|
251
|
+
/**
|
|
252
|
+
* GET /v1/ans/botcha
|
|
253
|
+
*
|
|
254
|
+
* BOTCHA's own ANS record and identity.
|
|
255
|
+
* ans://v1.0.botcha.ai
|
|
256
|
+
*
|
|
257
|
+
* This endpoint serves as BOTCHA's Agent Card for ANS-aware clients.
|
|
258
|
+
* Also returns the DNS TXT record that should be published at _ans.botcha.ai.
|
|
259
|
+
*/
|
|
260
|
+
export declare function getBotchaANSRoute(c: Context): Promise<(Response & import("hono").TypedResponse<{
|
|
261
|
+
success: true;
|
|
262
|
+
identity: {
|
|
263
|
+
ans_name: string;
|
|
264
|
+
canonical: string;
|
|
265
|
+
dns_record: {
|
|
266
|
+
name: string;
|
|
267
|
+
type: string;
|
|
268
|
+
value: string;
|
|
269
|
+
};
|
|
270
|
+
};
|
|
271
|
+
agent_card: {
|
|
272
|
+
[x: string]: import("hono/utils/types").JSONValue;
|
|
273
|
+
};
|
|
274
|
+
endpoints: {
|
|
275
|
+
resolve: string;
|
|
276
|
+
verify: string;
|
|
277
|
+
discover: string;
|
|
278
|
+
nonce: string;
|
|
279
|
+
};
|
|
280
|
+
integration: {
|
|
281
|
+
note: string;
|
|
282
|
+
ans_spec: string;
|
|
283
|
+
botcha_docs: string;
|
|
284
|
+
trust_model: {
|
|
285
|
+
'ANS alone': string;
|
|
286
|
+
'ANS + BOTCHA': string;
|
|
287
|
+
};
|
|
288
|
+
};
|
|
289
|
+
}, import("hono/utils/http-status").ContentfulStatusCode, "json">) | (Response & import("hono").TypedResponse<{
|
|
290
|
+
success: false;
|
|
291
|
+
error: string;
|
|
292
|
+
message: string;
|
|
293
|
+
}, 500, "json">)>;
|
|
294
|
+
declare const _default: {
|
|
295
|
+
resolveANSNameRoute: typeof resolveANSNameRoute;
|
|
296
|
+
getANSNonceRoute: typeof getANSNonceRoute;
|
|
297
|
+
verifyANSNameRoute: typeof verifyANSNameRoute;
|
|
298
|
+
discoverANSAgentsRoute: typeof discoverANSAgentsRoute;
|
|
299
|
+
getBotchaANSRoute: typeof getBotchaANSRoute;
|
|
300
|
+
};
|
|
301
|
+
export default _default;
|
|
302
|
+
//# sourceMappingURL=tap-ans-routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tap-ans-routes.d.ts","sourceRoot":"","sources":["../src/tap-ans-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AA4DpC;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAkGnD;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,OAAO;;;;;;;;;;;;;;;;;;;kBA6ChD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA6MlD;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA6CtD;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAwCjD;;;;;;;;AAED,wBAME"}
|