@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.
Files changed (88) hide show
  1. package/README.md +74 -9
  2. package/dist/agent-auth.d.ts +129 -0
  3. package/dist/agent-auth.d.ts.map +1 -0
  4. package/dist/agent-auth.js +210 -0
  5. package/dist/agents.d.ts +10 -0
  6. package/dist/agents.d.ts.map +1 -1
  7. package/dist/agents.js +51 -1
  8. package/dist/app-gate.d.ts +6 -0
  9. package/dist/app-gate.d.ts.map +1 -0
  10. package/dist/app-gate.js +69 -0
  11. package/dist/apps.d.ts +13 -4
  12. package/dist/apps.d.ts.map +1 -1
  13. package/dist/apps.js +30 -4
  14. package/dist/dashboard/account.d.ts +63 -0
  15. package/dist/dashboard/account.d.ts.map +1 -0
  16. package/dist/dashboard/account.js +488 -0
  17. package/dist/dashboard/api.js +15 -68
  18. package/dist/dashboard/auth.d.ts.map +1 -1
  19. package/dist/dashboard/auth.js +14 -14
  20. package/dist/dashboard/docs.d.ts.map +1 -1
  21. package/dist/dashboard/docs.js +146 -3
  22. package/dist/dashboard/layout.d.ts.map +1 -1
  23. package/dist/dashboard/layout.js +2 -2
  24. package/dist/dashboard/mcp-setup.d.ts +15 -0
  25. package/dist/dashboard/mcp-setup.d.ts.map +1 -0
  26. package/dist/dashboard/mcp-setup.js +391 -0
  27. package/dist/dashboard/showcase.d.ts +6 -10
  28. package/dist/dashboard/showcase.d.ts.map +1 -1
  29. package/dist/dashboard/showcase.js +67 -991
  30. package/dist/dashboard/whitepaper.d.ts.map +1 -1
  31. package/dist/dashboard/whitepaper.js +42 -4
  32. package/dist/index.d.ts +5 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +660 -83
  35. package/dist/mcp.d.ts +20 -0
  36. package/dist/mcp.d.ts.map +1 -0
  37. package/dist/mcp.js +1290 -0
  38. package/dist/oauth-agent.d.ts +130 -0
  39. package/dist/oauth-agent.d.ts.map +1 -0
  40. package/dist/oauth-agent.js +194 -0
  41. package/dist/static.d.ts +781 -5
  42. package/dist/static.d.ts.map +1 -1
  43. package/dist/static.js +790 -111
  44. package/dist/tap-a2a-routes.d.ts +355 -0
  45. package/dist/tap-a2a-routes.d.ts.map +1 -0
  46. package/dist/tap-a2a-routes.js +475 -0
  47. package/dist/tap-a2a.d.ts +199 -0
  48. package/dist/tap-a2a.d.ts.map +1 -0
  49. package/dist/tap-a2a.js +502 -0
  50. package/dist/tap-agents.d.ts +15 -0
  51. package/dist/tap-agents.d.ts.map +1 -1
  52. package/dist/tap-agents.js +31 -1
  53. package/dist/tap-ans-routes.d.ts +302 -0
  54. package/dist/tap-ans-routes.d.ts.map +1 -0
  55. package/dist/tap-ans-routes.js +535 -0
  56. package/dist/tap-ans.d.ts +241 -0
  57. package/dist/tap-ans.d.ts.map +1 -0
  58. package/dist/tap-ans.js +481 -0
  59. package/dist/tap-delegation-routes.d.ts.map +1 -1
  60. package/dist/tap-delegation-routes.js +11 -0
  61. package/dist/tap-did.d.ts +140 -0
  62. package/dist/tap-did.d.ts.map +1 -0
  63. package/dist/tap-did.js +262 -0
  64. package/dist/tap-oidca-routes.d.ts +383 -0
  65. package/dist/tap-oidca-routes.d.ts.map +1 -0
  66. package/dist/tap-oidca-routes.js +597 -0
  67. package/dist/tap-oidca.d.ts +288 -0
  68. package/dist/tap-oidca.d.ts.map +1 -0
  69. package/dist/tap-oidca.js +461 -0
  70. package/dist/tap-routes.d.ts +24 -8
  71. package/dist/tap-routes.d.ts.map +1 -1
  72. package/dist/tap-routes.js +169 -23
  73. package/dist/tap-vc-routes.d.ts +358 -0
  74. package/dist/tap-vc-routes.d.ts.map +1 -0
  75. package/dist/tap-vc-routes.js +367 -0
  76. package/dist/tap-vc.d.ts +125 -0
  77. package/dist/tap-vc.d.ts.map +1 -0
  78. package/dist/tap-vc.js +245 -0
  79. package/dist/tap-x402-routes.d.ts +89 -0
  80. package/dist/tap-x402-routes.d.ts.map +1 -0
  81. package/dist/tap-x402-routes.js +579 -0
  82. package/dist/tap-x402.d.ts +222 -0
  83. package/dist/tap-x402.d.ts.map +1 -0
  84. package/dist/tap-x402.js +546 -0
  85. package/dist/webhooks.d.ts +99 -0
  86. package/dist/webhooks.d.ts.map +1 -0
  87. package/dist/webhooks.js +642 -0
  88. 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"}