artemys 0.2.0 → 0.2.1

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 (332) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +194 -146
  3. package/dist/cli/index.d.ts +1 -1
  4. package/dist/cli/index.d.ts.map +1 -1
  5. package/dist/cli/index.js +446 -379
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/coffeeshop/client.d.ts +158 -0
  8. package/dist/coffeeshop/client.d.ts.map +1 -0
  9. package/dist/coffeeshop/client.js +293 -0
  10. package/dist/coffeeshop/client.js.map +1 -0
  11. package/dist/coffeeshop/index.d.ts +2 -0
  12. package/dist/coffeeshop/index.d.ts.map +1 -0
  13. package/dist/coffeeshop/index.js +2 -0
  14. package/dist/coffeeshop/index.js.map +1 -0
  15. package/dist/discovery/agent-card.schema.d.ts +37 -109
  16. package/dist/discovery/agent-card.schema.d.ts.map +1 -1
  17. package/dist/discovery/discovery-query.schema.d.ts +6 -15
  18. package/dist/discovery/discovery-query.schema.d.ts.map +1 -1
  19. package/dist/discovery/index.d.ts +1 -1
  20. package/dist/discovery/index.d.ts.map +1 -1
  21. package/dist/discovery/index.js +1 -1
  22. package/dist/discovery/index.js.map +1 -1
  23. package/dist/discovery/intro-decision.schema.d.ts +9 -11
  24. package/dist/discovery/intro-decision.schema.d.ts.map +1 -1
  25. package/dist/discovery/intro-request.schema.d.ts +2 -14
  26. package/dist/discovery/intro-request.schema.d.ts.map +1 -1
  27. package/dist/discovery/session-bootstrap.schema.d.ts +86 -66
  28. package/dist/discovery/session-bootstrap.schema.d.ts.map +1 -1
  29. package/dist/discovery/session-bootstrap.schema.js +84 -8
  30. package/dist/discovery/session-bootstrap.schema.js.map +1 -1
  31. package/dist/mcp-server/index.d.ts +4 -0
  32. package/dist/mcp-server/index.d.ts.map +1 -0
  33. package/dist/mcp-server/index.js +4 -0
  34. package/dist/mcp-server/index.js.map +1 -0
  35. package/dist/mcp-server/persistence.d.ts +37 -0
  36. package/dist/mcp-server/persistence.d.ts.map +1 -0
  37. package/dist/mcp-server/persistence.js +309 -0
  38. package/dist/mcp-server/persistence.js.map +1 -0
  39. package/dist/mcp-server/resources.d.ts +20 -0
  40. package/dist/mcp-server/resources.d.ts.map +1 -0
  41. package/dist/mcp-server/resources.js +49 -0
  42. package/dist/mcp-server/resources.js.map +1 -0
  43. package/dist/mcp-server/server.d.ts +33 -0
  44. package/dist/mcp-server/server.d.ts.map +1 -0
  45. package/dist/mcp-server/server.js +220 -0
  46. package/dist/mcp-server/server.js.map +1 -0
  47. package/dist/mcp-server/state.d.ts +43 -0
  48. package/dist/mcp-server/state.d.ts.map +1 -0
  49. package/dist/mcp-server/state.js +111 -0
  50. package/dist/mcp-server/state.js.map +1 -0
  51. package/dist/mcp-server/tools/common.d.ts +225 -0
  52. package/dist/mcp-server/tools/common.d.ts.map +1 -0
  53. package/dist/mcp-server/tools/common.js +11 -0
  54. package/dist/mcp-server/tools/common.js.map +1 -0
  55. package/dist/mcp-server/tools/discovery.d.ts +3 -0
  56. package/dist/mcp-server/tools/discovery.d.ts.map +1 -0
  57. package/dist/mcp-server/tools/discovery.js +48 -0
  58. package/dist/mcp-server/tools/discovery.js.map +1 -0
  59. package/dist/mcp-server/tools/index.d.ts +4 -0
  60. package/dist/mcp-server/tools/index.d.ts.map +1 -0
  61. package/dist/mcp-server/tools/index.js +13 -0
  62. package/dist/mcp-server/tools/index.js.map +1 -0
  63. package/dist/mcp-server/tools/intro.d.ts +3 -0
  64. package/dist/mcp-server/tools/intro.d.ts.map +1 -0
  65. package/dist/mcp-server/tools/intro.js +53 -0
  66. package/dist/mcp-server/tools/intro.js.map +1 -0
  67. package/dist/mcp-server/tools/protocol.d.ts +3 -0
  68. package/dist/mcp-server/tools/protocol.d.ts.map +1 -0
  69. package/dist/mcp-server/tools/protocol.js +73 -0
  70. package/dist/mcp-server/tools/protocol.js.map +1 -0
  71. package/dist/mcp-server/tools/talent.d.ts +3 -0
  72. package/dist/mcp-server/tools/talent.d.ts.map +1 -0
  73. package/dist/mcp-server/tools/talent.js +226 -0
  74. package/dist/mcp-server/tools/talent.js.map +1 -0
  75. package/dist/openclaw/index.d.ts +2 -0
  76. package/dist/openclaw/index.d.ts.map +1 -0
  77. package/dist/openclaw/index.js +2 -0
  78. package/dist/openclaw/index.js.map +1 -0
  79. package/dist/openclaw/skill.d.ts +13 -0
  80. package/dist/openclaw/skill.d.ts.map +1 -0
  81. package/dist/openclaw/skill.js +18 -0
  82. package/dist/openclaw/skill.js.map +1 -0
  83. package/dist/protocol/consent.schema.d.ts +18 -48
  84. package/dist/protocol/consent.schema.d.ts.map +1 -1
  85. package/dist/protocol/consent.schema.js +1 -1
  86. package/dist/protocol/consent.schema.js.map +1 -1
  87. package/dist/protocol/dialogue.schema.d.ts +21 -177
  88. package/dist/protocol/dialogue.schema.d.ts.map +1 -1
  89. package/dist/protocol/envelope.schema.d.ts +46 -28
  90. package/dist/protocol/envelope.schema.d.ts.map +1 -1
  91. package/dist/protocol/errors.d.ts +8 -1
  92. package/dist/protocol/errors.d.ts.map +1 -1
  93. package/dist/protocol/handshake.schema.d.ts +130 -385
  94. package/dist/protocol/handshake.schema.d.ts.map +1 -1
  95. package/dist/protocol/handshake.schema.js +1 -0
  96. package/dist/protocol/handshake.schema.js.map +1 -1
  97. package/dist/protocol/identity.schema.d.ts +44 -94
  98. package/dist/protocol/identity.schema.d.ts.map +1 -1
  99. package/dist/protocol/index.d.ts +1 -0
  100. package/dist/protocol/index.d.ts.map +1 -1
  101. package/dist/protocol/index.js +1 -0
  102. package/dist/protocol/index.js.map +1 -1
  103. package/dist/protocol/message-types.d.ts +14 -1
  104. package/dist/protocol/message-types.d.ts.map +1 -1
  105. package/dist/protocol/message.schema.d.ts +100 -715
  106. package/dist/protocol/message.schema.d.ts.map +1 -1
  107. package/dist/protocol/resolution.schema.d.ts +22 -268
  108. package/dist/protocol/resolution.schema.d.ts.map +1 -1
  109. package/dist/protocol/resolution.schema.js +1 -1
  110. package/dist/protocol/resolution.schema.js.map +1 -1
  111. package/dist/protocol/state-machine.d.ts +10 -1
  112. package/dist/protocol/state-machine.d.ts.map +1 -1
  113. package/dist/protocol/talent.schema.d.ts +106 -0
  114. package/dist/protocol/talent.schema.d.ts.map +1 -0
  115. package/dist/protocol/talent.schema.js +47 -0
  116. package/dist/protocol/talent.schema.js.map +1 -0
  117. package/dist/protocol/transport.schema.d.ts +16 -18
  118. package/dist/protocol/transport.schema.d.ts.map +1 -1
  119. package/dist/transport/client.d.ts +32 -0
  120. package/dist/transport/client.d.ts.map +1 -0
  121. package/dist/transport/client.js +155 -0
  122. package/dist/transport/client.js.map +1 -0
  123. package/dist/transport/dedup.d.ts +9 -0
  124. package/dist/transport/dedup.d.ts.map +1 -0
  125. package/dist/transport/dedup.js +36 -0
  126. package/dist/transport/dedup.js.map +1 -0
  127. package/dist/transport/handler.d.ts +9 -0
  128. package/dist/transport/handler.d.ts.map +1 -0
  129. package/dist/transport/handler.js +105 -0
  130. package/dist/transport/handler.js.map +1 -0
  131. package/dist/transport/hmac.d.ts +3 -0
  132. package/dist/transport/hmac.d.ts.map +1 -0
  133. package/dist/transport/hmac.js +43 -0
  134. package/dist/transport/hmac.js.map +1 -0
  135. package/dist/transport/index.d.ts +6 -0
  136. package/dist/transport/index.d.ts.map +1 -0
  137. package/dist/transport/index.js +6 -0
  138. package/dist/transport/index.js.map +1 -0
  139. package/dist/transport/reference-runner.d.ts +37 -0
  140. package/dist/transport/reference-runner.d.ts.map +1 -0
  141. package/dist/transport/reference-runner.js +372 -0
  142. package/dist/transport/reference-runner.js.map +1 -0
  143. package/package.json +19 -31
  144. package/dist/agent/archiver.d.ts +0 -8
  145. package/dist/agent/archiver.d.ts.map +0 -1
  146. package/dist/agent/archiver.js +0 -48
  147. package/dist/agent/archiver.js.map +0 -1
  148. package/dist/agent/capabilities.d.ts +0 -23
  149. package/dist/agent/capabilities.d.ts.map +0 -1
  150. package/dist/agent/capabilities.js +0 -87
  151. package/dist/agent/capabilities.js.map +0 -1
  152. package/dist/agent/config.d.ts +0 -60
  153. package/dist/agent/config.d.ts.map +0 -1
  154. package/dist/agent/config.js +0 -84
  155. package/dist/agent/config.js.map +0 -1
  156. package/dist/agent/context-provider.d.ts +0 -12
  157. package/dist/agent/context-provider.d.ts.map +0 -1
  158. package/dist/agent/context-provider.js +0 -34
  159. package/dist/agent/context-provider.js.map +0 -1
  160. package/dist/agent/context.d.ts +0 -9
  161. package/dist/agent/context.d.ts.map +0 -1
  162. package/dist/agent/context.js +0 -80
  163. package/dist/agent/context.js.map +0 -1
  164. package/dist/agent/events.d.ts +0 -62
  165. package/dist/agent/events.d.ts.map +0 -1
  166. package/dist/agent/events.js +0 -21
  167. package/dist/agent/events.js.map +0 -1
  168. package/dist/agent/index.d.ts +0 -32
  169. package/dist/agent/index.d.ts.map +0 -1
  170. package/dist/agent/index.js +0 -28
  171. package/dist/agent/index.js.map +0 -1
  172. package/dist/agent/mcp.d.ts +0 -16
  173. package/dist/agent/mcp.d.ts.map +0 -1
  174. package/dist/agent/mcp.js +0 -69
  175. package/dist/agent/mcp.js.map +0 -1
  176. package/dist/agent/notifications/decision-parser.d.ts +0 -10
  177. package/dist/agent/notifications/decision-parser.d.ts.map +0 -1
  178. package/dist/agent/notifications/decision-parser.js +0 -21
  179. package/dist/agent/notifications/decision-parser.js.map +0 -1
  180. package/dist/agent/notifications/index.d.ts +0 -4
  181. package/dist/agent/notifications/index.d.ts.map +0 -1
  182. package/dist/agent/notifications/index.js +0 -3
  183. package/dist/agent/notifications/index.js.map +0 -1
  184. package/dist/agent/notifications/opportunity-templates.d.ts +0 -14
  185. package/dist/agent/notifications/opportunity-templates.d.ts.map +0 -1
  186. package/dist/agent/notifications/opportunity-templates.js +0 -21
  187. package/dist/agent/notifications/opportunity-templates.js.map +0 -1
  188. package/dist/agent/notifications/types.d.ts +0 -16
  189. package/dist/agent/notifications/types.d.ts.map +0 -1
  190. package/dist/agent/notifications/types.js +0 -2
  191. package/dist/agent/notifications/types.js.map +0 -1
  192. package/dist/agent/providers.d.ts +0 -9
  193. package/dist/agent/providers.d.ts.map +0 -1
  194. package/dist/agent/providers.js +0 -29
  195. package/dist/agent/providers.js.map +0 -1
  196. package/dist/agent/runtime.d.ts +0 -63
  197. package/dist/agent/runtime.d.ts.map +0 -1
  198. package/dist/agent/runtime.js +0 -395
  199. package/dist/agent/runtime.js.map +0 -1
  200. package/dist/agent/scanning/index.d.ts +0 -3
  201. package/dist/agent/scanning/index.d.ts.map +0 -1
  202. package/dist/agent/scanning/index.js +0 -3
  203. package/dist/agent/scanning/index.js.map +0 -1
  204. package/dist/agent/scanning/opportunity-scorer.d.ts +0 -24
  205. package/dist/agent/scanning/opportunity-scorer.d.ts.map +0 -1
  206. package/dist/agent/scanning/opportunity-scorer.js +0 -90
  207. package/dist/agent/scanning/opportunity-scorer.js.map +0 -1
  208. package/dist/agent/scanning/types.d.ts +0 -65
  209. package/dist/agent/scanning/types.d.ts.map +0 -1
  210. package/dist/agent/scanning/types.js +0 -32
  211. package/dist/agent/scanning/types.js.map +0 -1
  212. package/dist/agent/scheduler.d.ts +0 -38
  213. package/dist/agent/scheduler.d.ts.map +0 -1
  214. package/dist/agent/scheduler.js +0 -125
  215. package/dist/agent/scheduler.js.map +0 -1
  216. package/dist/agent/session.d.ts +0 -20
  217. package/dist/agent/session.d.ts.map +0 -1
  218. package/dist/agent/session.js +0 -88
  219. package/dist/agent/session.js.map +0 -1
  220. package/dist/agent/stores.d.ts +0 -48
  221. package/dist/agent/stores.d.ts.map +0 -1
  222. package/dist/agent/stores.js +0 -2
  223. package/dist/agent/stores.js.map +0 -1
  224. package/dist/agent/tools/browser/ats-patterns.d.ts +0 -20
  225. package/dist/agent/tools/browser/ats-patterns.d.ts.map +0 -1
  226. package/dist/agent/tools/browser/ats-patterns.js +0 -226
  227. package/dist/agent/tools/browser/ats-patterns.js.map +0 -1
  228. package/dist/agent/tools/browser/index.d.ts +0 -14
  229. package/dist/agent/tools/browser/index.d.ts.map +0 -1
  230. package/dist/agent/tools/browser/index.js +0 -126
  231. package/dist/agent/tools/browser/index.js.map +0 -1
  232. package/dist/agent/tools/browser/operator-runtime.d.ts +0 -35
  233. package/dist/agent/tools/browser/operator-runtime.d.ts.map +0 -1
  234. package/dist/agent/tools/browser/operator-runtime.js +0 -93
  235. package/dist/agent/tools/browser/operator-runtime.js.map +0 -1
  236. package/dist/agent/tools/browser/providers/chrome-mcp.d.ts +0 -3
  237. package/dist/agent/tools/browser/providers/chrome-mcp.d.ts.map +0 -1
  238. package/dist/agent/tools/browser/providers/chrome-mcp.js +0 -164
  239. package/dist/agent/tools/browser/providers/chrome-mcp.js.map +0 -1
  240. package/dist/agent/tools/browser/providers/playwright.d.ts +0 -7
  241. package/dist/agent/tools/browser/providers/playwright.d.ts.map +0 -1
  242. package/dist/agent/tools/browser/providers/playwright.js +0 -619
  243. package/dist/agent/tools/browser/providers/playwright.js.map +0 -1
  244. package/dist/agent/tools/browser/types.d.ts +0 -22
  245. package/dist/agent/tools/browser/types.d.ts.map +0 -1
  246. package/dist/agent/tools/browser/types.js +0 -15
  247. package/dist/agent/tools/browser/types.js.map +0 -1
  248. package/dist/agent/tools/cancel-task.d.ts +0 -4
  249. package/dist/agent/tools/cancel-task.d.ts.map +0 -1
  250. package/dist/agent/tools/cancel-task.js +0 -29
  251. package/dist/agent/tools/cancel-task.js.map +0 -1
  252. package/dist/agent/tools/career-advice.d.ts +0 -3
  253. package/dist/agent/tools/career-advice.d.ts.map +0 -1
  254. package/dist/agent/tools/career-advice.js +0 -49
  255. package/dist/agent/tools/career-advice.js.map +0 -1
  256. package/dist/agent/tools/index.d.ts +0 -15
  257. package/dist/agent/tools/index.d.ts.map +0 -1
  258. package/dist/agent/tools/index.js +0 -94
  259. package/dist/agent/tools/index.js.map +0 -1
  260. package/dist/agent/tools/job-search.d.ts +0 -3
  261. package/dist/agent/tools/job-search.d.ts.map +0 -1
  262. package/dist/agent/tools/job-search.js +0 -77
  263. package/dist/agent/tools/job-search.js.map +0 -1
  264. package/dist/agent/tools/list-tasks.d.ts +0 -4
  265. package/dist/agent/tools/list-tasks.d.ts.map +0 -1
  266. package/dist/agent/tools/list-tasks.js +0 -24
  267. package/dist/agent/tools/list-tasks.js.map +0 -1
  268. package/dist/agent/tools/market-data.d.ts +0 -8
  269. package/dist/agent/tools/market-data.d.ts.map +0 -1
  270. package/dist/agent/tools/market-data.js +0 -133
  271. package/dist/agent/tools/market-data.js.map +0 -1
  272. package/dist/agent/tools/memory-write.d.ts +0 -3
  273. package/dist/agent/tools/memory-write.d.ts.map +0 -1
  274. package/dist/agent/tools/memory-write.js +0 -48
  275. package/dist/agent/tools/memory-write.js.map +0 -1
  276. package/dist/agent/tools/resume.d.ts +0 -3
  277. package/dist/agent/tools/resume.d.ts.map +0 -1
  278. package/dist/agent/tools/resume.js +0 -70
  279. package/dist/agent/tools/resume.js.map +0 -1
  280. package/dist/agent/tools/schedule-task.d.ts +0 -4
  281. package/dist/agent/tools/schedule-task.d.ts.map +0 -1
  282. package/dist/agent/tools/schedule-task.js +0 -39
  283. package/dist/agent/tools/schedule-task.js.map +0 -1
  284. package/dist/agent/tools/shell.d.ts +0 -6
  285. package/dist/agent/tools/shell.d.ts.map +0 -1
  286. package/dist/agent/tools/shell.js +0 -66
  287. package/dist/agent/tools/shell.js.map +0 -1
  288. package/dist/agent/tools/web-search.d.ts +0 -6
  289. package/dist/agent/tools/web-search.d.ts.map +0 -1
  290. package/dist/agent/tools/web-search.js +0 -73
  291. package/dist/agent/tools/web-search.js.map +0 -1
  292. package/dist/agent/types.d.ts +0 -103
  293. package/dist/agent/types.d.ts.map +0 -1
  294. package/dist/agent/types.js +0 -11
  295. package/dist/agent/types.js.map +0 -1
  296. package/dist/channels/index.d.ts +0 -10
  297. package/dist/channels/index.d.ts.map +0 -1
  298. package/dist/channels/index.js +0 -15
  299. package/dist/channels/index.js.map +0 -1
  300. package/dist/channels/telegram.d.ts +0 -21
  301. package/dist/channels/telegram.d.ts.map +0 -1
  302. package/dist/channels/telegram.js +0 -255
  303. package/dist/channels/telegram.js.map +0 -1
  304. package/dist/channels/types.d.ts +0 -24
  305. package/dist/channels/types.d.ts.map +0 -1
  306. package/dist/channels/types.js +0 -2
  307. package/dist/channels/types.js.map +0 -1
  308. package/dist/cli/templates/HEARTBEAT.md +0 -6
  309. package/dist/cli/templates/MEMORY.md +0 -6
  310. package/dist/cli/templates/PREFERENCES.md +0 -40
  311. package/dist/cli/templates/PROFILE.md +0 -26
  312. package/dist/cli/templates/SOUL.md +0 -23
  313. package/dist/connectors/google-calendar.d.ts +0 -8
  314. package/dist/connectors/google-calendar.d.ts.map +0 -1
  315. package/dist/connectors/google-calendar.js +0 -23
  316. package/dist/connectors/google-calendar.js.map +0 -1
  317. package/dist/connectors/google-gmail.d.ts +0 -8
  318. package/dist/connectors/google-gmail.d.ts.map +0 -1
  319. package/dist/connectors/google-gmail.js +0 -30
  320. package/dist/connectors/google-gmail.js.map +0 -1
  321. package/dist/connectors/google-oauth.d.ts +0 -17
  322. package/dist/connectors/google-oauth.d.ts.map +0 -1
  323. package/dist/connectors/google-oauth.js +0 -52
  324. package/dist/connectors/google-oauth.js.map +0 -1
  325. package/dist/connectors/index.d.ts +0 -5
  326. package/dist/connectors/index.d.ts.map +0 -1
  327. package/dist/connectors/index.js +0 -5
  328. package/dist/connectors/index.js.map +0 -1
  329. package/dist/connectors/types.d.ts +0 -20
  330. package/dist/connectors/types.d.ts.map +0 -1
  331. package/dist/connectors/types.js +0 -5
  332. package/dist/connectors/types.js.map +0 -1
@@ -0,0 +1,32 @@
1
+ import { type ProtocolMessage, type TransportAck, type TransportErrorResponse } from "../protocol/index.js";
2
+ export type TransportResult = {
3
+ ok: true;
4
+ ack: TransportAck;
5
+ } | {
6
+ ok: false;
7
+ error: TransportErrorResponse;
8
+ status: number;
9
+ } | {
10
+ ok: false;
11
+ error: {
12
+ error_code: "network_error";
13
+ message: string;
14
+ };
15
+ };
16
+ export interface TransportClientOptions {
17
+ agentId: string;
18
+ getSharedSecret: (targetAgentId: string) => Promise<string>;
19
+ maxRetries?: number;
20
+ initialDelayMs?: number;
21
+ maxDelayMs?: number;
22
+ resolveTargetAgentId?: (endpoint: string, message: ProtocolMessage) => string;
23
+ }
24
+ export interface TransportSendOptions {
25
+ targetAgentId?: string;
26
+ }
27
+ export declare class ProtocolTransportClient {
28
+ private readonly options;
29
+ constructor(options: TransportClientOptions);
30
+ send(endpoint: string, message: ProtocolMessage, options?: TransportSendOptions): Promise<TransportResult>;
31
+ }
32
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/transport/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC5B,MAAM,sBAAsB,CAAA;AAO7B,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,YAAY,CAAA;CAAE,GAC/B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,sBAAsB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE;QAAE,UAAU,EAAE,eAAe,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAA;AAE1E,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,KAAK,MAAM,CAAA;CAC9E;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AA8DD,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CACqC;gBAEjD,OAAO,EAAE,sBAAsB;IAcrC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,eAAe,CAAC;CA2FrH"}
@@ -0,0 +1,155 @@
1
+ import { TransportAckSchema, TransportErrorResponseSchema, parseProtocolMessageSafe, } from "../protocol/index.js";
2
+ import { signPayload } from "./hmac.js";
3
+ const DEFAULT_MAX_RETRIES = 5;
4
+ const DEFAULT_INITIAL_DELAY_MS = 5000;
5
+ const DEFAULT_MAX_DELAY_MS = 60000;
6
+ function sanitizeTransportError(status, data) {
7
+ const parsed = TransportErrorResponseSchema.safeParse(data);
8
+ if (parsed.success) {
9
+ return parsed.data;
10
+ }
11
+ if (status === 401) {
12
+ return { error_code: "unauthorized", message: "Unauthorized" };
13
+ }
14
+ if (status === 409) {
15
+ return { error_code: "conflict", message: "Duplicate message" };
16
+ }
17
+ if (status === 429) {
18
+ return { error_code: "rate_limited", message: "Rate limited" };
19
+ }
20
+ return {
21
+ error_code: status >= 500 ? "internal_error" : "bad_request",
22
+ message: status >= 500 ? "Transport server error" : "Transport request failed",
23
+ };
24
+ }
25
+ async function parseJson(response) {
26
+ const text = await response.text();
27
+ if (!text) {
28
+ return null;
29
+ }
30
+ try {
31
+ return JSON.parse(text);
32
+ }
33
+ catch {
34
+ return null;
35
+ }
36
+ }
37
+ function parseRetryAfterMs(response) {
38
+ const header = response.headers.get("retry-after");
39
+ if (!header) {
40
+ return null;
41
+ }
42
+ const asSeconds = Number.parseInt(header, 10);
43
+ if (Number.isFinite(asSeconds)) {
44
+ return Math.max(0, asSeconds * 1000);
45
+ }
46
+ const asDate = Date.parse(header);
47
+ if (Number.isNaN(asDate)) {
48
+ return null;
49
+ }
50
+ return Math.max(0, asDate - Date.now());
51
+ }
52
+ function sleep(ms) {
53
+ return new Promise((resolve) => {
54
+ setTimeout(resolve, ms);
55
+ });
56
+ }
57
+ export class ProtocolTransportClient {
58
+ options;
59
+ constructor(options) {
60
+ this.options = {
61
+ ...options,
62
+ maxRetries: options.maxRetries ?? DEFAULT_MAX_RETRIES,
63
+ initialDelayMs: options.initialDelayMs ?? DEFAULT_INITIAL_DELAY_MS,
64
+ maxDelayMs: options.maxDelayMs ?? DEFAULT_MAX_DELAY_MS,
65
+ resolveTargetAgentId: options.resolveTargetAgentId ??
66
+ ((endpoint) => {
67
+ return endpoint;
68
+ }),
69
+ };
70
+ }
71
+ async send(endpoint, message, options = {}) {
72
+ const parsed = parseProtocolMessageSafe(message);
73
+ if (!parsed.ok) {
74
+ return {
75
+ ok: false,
76
+ status: 400,
77
+ error: {
78
+ error_code: "bad_request",
79
+ message: parsed.error.message,
80
+ },
81
+ };
82
+ }
83
+ if (parsed.message.sender_agent_id !== this.options.agentId) {
84
+ return {
85
+ ok: false,
86
+ status: 400,
87
+ error: {
88
+ error_code: "bad_request",
89
+ message: "message.sender_agent_id must match client agentId",
90
+ },
91
+ };
92
+ }
93
+ const body = JSON.stringify(parsed.message);
94
+ const timestamp = new Date().toISOString();
95
+ const targetAgentId = options.targetAgentId ?? this.options.resolveTargetAgentId(endpoint, parsed.message);
96
+ const sharedSecret = await this.options.getSharedSecret(targetAgentId);
97
+ const signature = await signPayload(this.options.agentId, timestamp, body, sharedSecret);
98
+ let retries = 0;
99
+ let delayMs = this.options.initialDelayMs;
100
+ while (true) {
101
+ try {
102
+ const response = await fetch(endpoint, {
103
+ method: "POST",
104
+ headers: {
105
+ "content-type": "application/json",
106
+ "x-artemys-message-id": parsed.message.message_id,
107
+ "x-artemys-timestamp": timestamp,
108
+ "x-artemys-sender-agent-id": this.options.agentId,
109
+ "x-artemys-signature": signature,
110
+ },
111
+ body,
112
+ });
113
+ if (response.status === 202) {
114
+ const json = await parseJson(response);
115
+ const ack = TransportAckSchema.parse(json);
116
+ return { ok: true, ack };
117
+ }
118
+ if (response.status === 429 && retries < this.options.maxRetries) {
119
+ const retryAfterMs = parseRetryAfterMs(response);
120
+ await sleep(retryAfterMs ?? delayMs);
121
+ retries += 1;
122
+ delayMs = Math.min(this.options.maxDelayMs, delayMs * 2);
123
+ continue;
124
+ }
125
+ if (response.status >= 500 && retries < this.options.maxRetries) {
126
+ await sleep(delayMs);
127
+ retries += 1;
128
+ delayMs = Math.min(this.options.maxDelayMs, delayMs * 2);
129
+ continue;
130
+ }
131
+ const errorJson = await parseJson(response);
132
+ return {
133
+ ok: false,
134
+ status: response.status,
135
+ error: sanitizeTransportError(response.status, errorJson),
136
+ };
137
+ }
138
+ catch (error) {
139
+ if (retries >= this.options.maxRetries) {
140
+ return {
141
+ ok: false,
142
+ error: {
143
+ error_code: "network_error",
144
+ message: error instanceof Error ? error.message : "Unknown network error",
145
+ },
146
+ };
147
+ }
148
+ await sleep(delayMs);
149
+ retries += 1;
150
+ delayMs = Math.min(this.options.maxDelayMs, delayMs * 2);
151
+ }
152
+ }
153
+ }
154
+ }
155
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/transport/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare class MessageDeduplicationCache {
2
+ private readonly ttlMs;
3
+ private readonly entries;
4
+ constructor(ttlMs?: number);
5
+ has(senderAgentId: string, messageId: string): boolean;
6
+ add(senderAgentId: string, messageId: string): void;
7
+ private evictExpired;
8
+ }
9
+ //# sourceMappingURL=dedup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dedup.d.ts","sourceRoot":"","sources":["../../src/transport/dedup.ts"],"names":[],"mappings":"AAMA,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;gBAExC,KAAK,SAAiB;IAIlC,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAetD,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAKnD,OAAO,CAAC,YAAY;CAQrB"}
@@ -0,0 +1,36 @@
1
+ const DEFAULT_TTL_MS = 15 * 60 * 1000;
2
+ function makeKey(senderAgentId, messageId) {
3
+ return `${senderAgentId}:${messageId}`;
4
+ }
5
+ export class MessageDeduplicationCache {
6
+ ttlMs;
7
+ entries = new Map();
8
+ constructor(ttlMs = DEFAULT_TTL_MS) {
9
+ this.ttlMs = ttlMs;
10
+ }
11
+ has(senderAgentId, messageId) {
12
+ const key = makeKey(senderAgentId, messageId);
13
+ const expiresAt = this.entries.get(key);
14
+ if (!expiresAt) {
15
+ return false;
16
+ }
17
+ if (expiresAt <= Date.now()) {
18
+ this.entries.delete(key);
19
+ return false;
20
+ }
21
+ return true;
22
+ }
23
+ add(senderAgentId, messageId) {
24
+ this.evictExpired();
25
+ this.entries.set(makeKey(senderAgentId, messageId), Date.now() + this.ttlMs);
26
+ }
27
+ evictExpired() {
28
+ const now = Date.now();
29
+ for (const [key, expiresAt] of this.entries.entries()) {
30
+ if (expiresAt <= now) {
31
+ this.entries.delete(key);
32
+ }
33
+ }
34
+ }
35
+ }
36
+ //# sourceMappingURL=dedup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dedup.js","sourceRoot":"","sources":["../../src/transport/dedup.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AAErC,SAAS,OAAO,CAAC,aAAqB,EAAE,SAAiB;IACvD,OAAO,GAAG,aAAa,IAAI,SAAS,EAAE,CAAA;AACxC,CAAC;AAED,MAAM,OAAO,yBAAyB;IACnB,KAAK,CAAQ;IACb,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;IAEpD,YAAY,KAAK,GAAG,cAAc;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,GAAG,CAAC,aAAqB,EAAE,SAAiB;QAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACvC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACxB,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,GAAG,CAAC,aAAqB,EAAE,SAAiB;QAC1C,IAAI,CAAC,YAAY,EAAE,CAAA;QACnB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;IAC9E,CAAC;IAEO,YAAY;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YACtD,IAAI,SAAS,IAAI,GAAG,EAAE,CAAC;gBACrB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import { type ProtocolMessage } from "../protocol/index.js";
2
+ export interface ProtocolHandlerOptions {
3
+ getSharedSecret: (senderAgentId: string) => Promise<string | null>;
4
+ onMessage: (message: ProtocolMessage, senderAgentId: string) => Promise<void>;
5
+ maxBodySize?: number;
6
+ replayWindowMs?: number;
7
+ }
8
+ export declare function createProtocolHandler(options: ProtocolHandlerOptions): (request: Request) => Promise<Response>;
9
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/transport/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EAErB,MAAM,sBAAsB,CAAA;AAO7B,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAClE,SAAS,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAwCD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAmF9G"}
@@ -0,0 +1,105 @@
1
+ import { TransportAckSchema, parseProtocolMessageSafe, } from "../protocol/index.js";
2
+ import { MessageDeduplicationCache } from "./dedup.js";
3
+ import { verifyPayload } from "./hmac.js";
4
+ const DEFAULT_MAX_BODY_SIZE = 256 * 1024;
5
+ const DEFAULT_REPLAY_WINDOW_MS = 5 * 60 * 1000;
6
+ function jsonResponse(status, payload) {
7
+ return new Response(JSON.stringify(payload), {
8
+ status,
9
+ headers: { "content-type": "application/json" },
10
+ });
11
+ }
12
+ function errorResponse(status, errorCode, message, details) {
13
+ return jsonResponse(status, {
14
+ error_code: errorCode,
15
+ message,
16
+ ...(details ? { details } : {}),
17
+ });
18
+ }
19
+ function requireHeader(request, name) {
20
+ const value = request.headers.get(name);
21
+ if (!value) {
22
+ return null;
23
+ }
24
+ const trimmed = value.trim();
25
+ return trimmed.length > 0 ? trimmed : null;
26
+ }
27
+ function isTimestampFresh(timestamp, replayWindowMs) {
28
+ const parsed = Date.parse(timestamp);
29
+ if (Number.isNaN(parsed)) {
30
+ return false;
31
+ }
32
+ return Math.abs(Date.now() - parsed) <= replayWindowMs;
33
+ }
34
+ export function createProtocolHandler(options) {
35
+ const maxBodySize = options.maxBodySize ?? DEFAULT_MAX_BODY_SIZE;
36
+ const replayWindowMs = options.replayWindowMs ?? DEFAULT_REPLAY_WINDOW_MS;
37
+ const dedupCache = new MessageDeduplicationCache();
38
+ return async function protocolHandler(request) {
39
+ if (request.method !== "POST") {
40
+ return new Response("Method Not Allowed", { status: 405 });
41
+ }
42
+ try {
43
+ const contentLengthHeader = request.headers.get("content-length");
44
+ if (contentLengthHeader) {
45
+ const contentLength = Number.parseInt(contentLengthHeader, 10);
46
+ if (Number.isFinite(contentLength) && contentLength > maxBodySize) {
47
+ return errorResponse(400, "bad_request", "Request body exceeds maximum allowed size");
48
+ }
49
+ }
50
+ const body = await request.text();
51
+ if (new TextEncoder().encode(body).byteLength > maxBodySize) {
52
+ return errorResponse(400, "bad_request", "Request body exceeds maximum allowed size");
53
+ }
54
+ const senderAgentId = requireHeader(request, "X-Artemys-Sender-Agent-Id");
55
+ const timestamp = requireHeader(request, "X-Artemys-Timestamp");
56
+ const signature = requireHeader(request, "X-Artemys-Signature");
57
+ const headerMessageId = requireHeader(request, "X-Artemys-Message-Id");
58
+ if (!senderAgentId || !timestamp || !signature || !headerMessageId) {
59
+ return errorResponse(401, "unauthorized", "Missing required authentication headers");
60
+ }
61
+ if (!isTimestampFresh(timestamp, replayWindowMs)) {
62
+ return errorResponse(401, "unauthorized", "Request timestamp is outside replay window");
63
+ }
64
+ const sharedSecret = await options.getSharedSecret(senderAgentId);
65
+ if (!sharedSecret) {
66
+ return errorResponse(401, "unauthorized", "Unknown sender");
67
+ }
68
+ const isValid = await verifyPayload(senderAgentId, timestamp, body, signature, sharedSecret);
69
+ if (!isValid) {
70
+ return errorResponse(401, "unauthorized", "Invalid signature");
71
+ }
72
+ if (dedupCache.has(senderAgentId, headerMessageId)) {
73
+ return errorResponse(409, "conflict", "Duplicate message_id for sender");
74
+ }
75
+ let rawMessage;
76
+ try {
77
+ rawMessage = JSON.parse(body);
78
+ }
79
+ catch {
80
+ return errorResponse(400, "bad_request", "Body is not valid JSON");
81
+ }
82
+ const parsed = parseProtocolMessageSafe(rawMessage);
83
+ if (!parsed.ok) {
84
+ return errorResponse(400, "bad_request", parsed.error.message);
85
+ }
86
+ if (parsed.message.sender_agent_id !== senderAgentId) {
87
+ return errorResponse(401, "unauthorized", "sender_agent_id does not match header");
88
+ }
89
+ if (parsed.message.message_id !== headerMessageId) {
90
+ return errorResponse(400, "bad_request", "message_id does not match header");
91
+ }
92
+ await options.onMessage(parsed.message, senderAgentId);
93
+ dedupCache.add(senderAgentId, parsed.message.message_id);
94
+ const ack = TransportAckSchema.parse({
95
+ received: true,
96
+ message_id: parsed.message.message_id,
97
+ });
98
+ return jsonResponse(202, ack);
99
+ }
100
+ catch {
101
+ return errorResponse(500, "internal_error", "Internal server error");
102
+ }
103
+ };
104
+ }
105
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/transport/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GAGzB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,qBAAqB,GAAG,GAAG,GAAG,IAAI,CAAA;AACxC,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AAS9C,SAAS,YAAY,CAAC,MAAc,EAAE,OAAgB;IACpD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;QAC3C,MAAM;QACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,MAAc,EACd,SAA6B,EAC7B,OAAe,EACf,OAAiC;IAEjC,OAAO,YAAY,CAAC,MAAM,EAAE;QAC1B,UAAU,EAAE,SAAS;QACrB,OAAO;QACP,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,OAAgB,EAAE,IAAY;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC5B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;AAC5C,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAiB,EAAE,cAAsB;IACjE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IACpC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,cAAc,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAA+B;IACnE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,qBAAqB,CAAA;IAChE,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,wBAAwB,CAAA;IACzE,MAAM,UAAU,GAAG,IAAI,yBAAyB,EAAE,CAAA;IAElD,OAAO,KAAK,UAAU,eAAe,CAAC,OAAgB;QACpD,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,IAAI,QAAQ,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAC5D,CAAC;QAED,IAAI,CAAC;YACH,MAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;YACjE,IAAI,mBAAmB,EAAE,CAAC;gBACxB,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAA;gBAC9D,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,WAAW,EAAE,CAAC;oBAClE,OAAO,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,2CAA2C,CAAC,CAAA;gBACvF,CAAC;YACH,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;YACjC,IAAI,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,WAAW,EAAE,CAAC;gBAC5D,OAAO,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,2CAA2C,CAAC,CAAA;YACvF,CAAC;YAED,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAA;YACzE,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAA;YAC/D,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAA;YAC/D,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAA;YAEtE,IAAI,CAAC,aAAa,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,IAAI,CAAC,eAAe,EAAE,CAAC;gBACnE,OAAO,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,yCAAyC,CAAC,CAAA;YACtF,CAAC;YAED,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC;gBACjD,OAAO,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,4CAA4C,CAAC,CAAA;YACzF,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;YACjE,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAA;YAC7D,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAA;YAC5F,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAA;YAChE,CAAC;YAED,IAAI,UAAU,CAAC,GAAG,CAAC,aAAa,EAAE,eAAe,CAAC,EAAE,CAAC;gBACnD,OAAO,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,iCAAiC,CAAC,CAAA;YAC1E,CAAC;YAED,IAAI,UAAmB,CAAA;YACvB,IAAI,CAAC;gBACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,wBAAwB,CAAC,CAAA;YACpE,CAAC;YAED,MAAM,MAAM,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAA;YACnD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,OAAO,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAChE,CAAC;YAED,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,KAAK,aAAa,EAAE,CAAC;gBACrD,OAAO,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,uCAAuC,CAAC,CAAA;YACpF,CAAC;YAED,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,KAAK,eAAe,EAAE,CAAC;gBAClD,OAAO,aAAa,CAAC,GAAG,EAAE,aAAa,EAAE,kCAAkC,CAAC,CAAA;YAC9E,CAAC;YAED,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;YACtD,UAAU,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;YAExD,MAAM,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC;gBACnC,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU;aACtC,CAAC,CAAA;YACF,OAAO,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,aAAa,CAAC,GAAG,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,CAAA;QACtE,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function signPayload(senderAgentId: string, timestamp: string, body: string, secret: string): Promise<string>;
2
+ export declare function verifyPayload(senderAgentId: string, timestamp: string, body: string, signature: string, secret: string): Promise<boolean>;
3
+ //# sourceMappingURL=hmac.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmac.d.ts","sourceRoot":"","sources":["../../src/transport/hmac.ts"],"names":[],"mappings":"AAuCA,wBAAsB,WAAW,CAC/B,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED,wBAAsB,aAAa,CACjC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAalB"}
@@ -0,0 +1,43 @@
1
+ const encoder = new TextEncoder();
2
+ function getSubtleCrypto() {
3
+ if (!globalThis.crypto?.subtle) {
4
+ throw new Error("Web Crypto API is not available in this runtime");
5
+ }
6
+ return globalThis.crypto.subtle;
7
+ }
8
+ function toHex(buffer) {
9
+ return Array.from(new Uint8Array(buffer), (byte) => byte.toString(16).padStart(2, "0")).join("");
10
+ }
11
+ function fromHex(hex) {
12
+ if (hex.length % 2 !== 0) {
13
+ throw new Error("Invalid hex string");
14
+ }
15
+ const bytes = new Uint8Array(new ArrayBuffer(hex.length / 2));
16
+ for (let i = 0; i < hex.length; i += 2) {
17
+ bytes[i / 2] = Number.parseInt(hex.slice(i, i + 2), 16);
18
+ }
19
+ return bytes;
20
+ }
21
+ async function importHmacKey(secret, usage) {
22
+ return await getSubtleCrypto().importKey("raw", encoder.encode(secret), { name: "HMAC", hash: "SHA-256" }, false, [usage]);
23
+ }
24
+ function buildPayload(senderAgentId, timestamp, body) {
25
+ return `${senderAgentId}.${timestamp}.${body}`;
26
+ }
27
+ export async function signPayload(senderAgentId, timestamp, body, secret) {
28
+ const key = await importHmacKey(secret, "sign");
29
+ const payload = buildPayload(senderAgentId, timestamp, body);
30
+ const signature = await getSubtleCrypto().sign("HMAC", key, encoder.encode(payload));
31
+ return toHex(signature);
32
+ }
33
+ export async function verifyPayload(senderAgentId, timestamp, body, signature, secret) {
34
+ try {
35
+ const key = await importHmacKey(secret, "verify");
36
+ const payload = buildPayload(senderAgentId, timestamp, body);
37
+ return await getSubtleCrypto().verify("HMAC", key, fromHex(signature), encoder.encode(payload));
38
+ }
39
+ catch {
40
+ return false;
41
+ }
42
+ }
43
+ //# sourceMappingURL=hmac.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmac.js","sourceRoot":"","sources":["../../src/transport/hmac.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { signPayload, verifyPayload } from "./hmac.js";
2
+ export { ProtocolTransportClient, type TransportClientOptions, type TransportResult, type TransportSendOptions, } from "./client.js";
3
+ export { createProtocolHandler, type ProtocolHandlerOptions } from "./handler.js";
4
+ export { MessageDeduplicationCache } from "./dedup.js";
5
+ export { runReferenceConversation, type ReferenceRunnerOptions, type ReferenceRunnerResult, type ReferenceRunnerScenario, } from "./reference-runner.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEtD,OAAO,EACL,uBAAuB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,oBAAoB,GAC1B,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,qBAAqB,EAAE,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAEjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAEtD,OAAO,EACL,wBAAwB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,GAC7B,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,6 @@
1
+ export { signPayload, verifyPayload } from "./hmac.js";
2
+ export { ProtocolTransportClient, } from "./client.js";
3
+ export { createProtocolHandler } from "./handler.js";
4
+ export { MessageDeduplicationCache } from "./dedup.js";
5
+ export { runReferenceConversation, } from "./reference-runner.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEtD,OAAO,EACL,uBAAuB,GAIxB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,qBAAqB,EAA+B,MAAM,cAAc,CAAA;AAEjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAEtD,OAAO,EACL,wBAAwB,GAIzB,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,37 @@
1
+ import { ConversationTracker } from "../mcp-server/state.js";
2
+ import { type ProtocolMessage } from "../protocol/index.js";
3
+ import { type SessionBootstrap } from "../discovery/index.js";
4
+ export type ReferenceRunnerScenario = "happy_path" | "timeout_deferred";
5
+ export interface ReferenceRunnerOptions {
6
+ scenario?: ReferenceRunnerScenario;
7
+ responseTimeoutMs?: number;
8
+ }
9
+ export interface ReferenceRunnerResult {
10
+ scenario: ReferenceRunnerScenario;
11
+ discovery: {
12
+ requester_agent_id: string;
13
+ discovered_target_agent_id: string;
14
+ };
15
+ intro: {
16
+ intro_id: string;
17
+ bootstrap: SessionBootstrap;
18
+ };
19
+ transport_receipts: Array<{
20
+ message_id: string;
21
+ sender_agent_id: string;
22
+ receiver_endpoint: string;
23
+ status: 202;
24
+ }>;
25
+ semantic_replies: Array<{
26
+ trigger_message_id: string;
27
+ reply_message_id: string;
28
+ }>;
29
+ transcript: ProtocolMessage[];
30
+ final_state: ReturnType<ConversationTracker["getState"]>;
31
+ timeout_policy: {
32
+ response_timeout_ms: number;
33
+ deferred_emitted: boolean;
34
+ };
35
+ }
36
+ export declare function runReferenceConversation(options?: ReferenceRunnerOptions): Promise<ReferenceRunnerResult>;
37
+ //# sourceMappingURL=reference-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-runner.d.ts","sourceRoot":"","sources":["../../src/transport/reference-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,EAA0C,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACnG,OAAO,EAA0C,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAIrG,MAAM,MAAM,uBAAuB,GAAG,YAAY,GAAG,kBAAkB,CAAA;AAEvE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,uBAAuB,CAAA;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,uBAAuB,CAAA;IACjC,SAAS,EAAE;QACT,kBAAkB,EAAE,MAAM,CAAA;QAC1B,0BAA0B,EAAE,MAAM,CAAA;KACnC,CAAA;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,MAAM,CAAA;QAChB,SAAS,EAAE,gBAAgB,CAAA;KAC5B,CAAA;IACD,kBAAkB,EAAE,KAAK,CAAC;QACxB,UAAU,EAAE,MAAM,CAAA;QAClB,eAAe,EAAE,MAAM,CAAA;QACvB,iBAAiB,EAAE,MAAM,CAAA;QACzB,MAAM,EAAE,GAAG,CAAA;KACZ,CAAC,CAAA;IACF,gBAAgB,EAAE,KAAK,CAAC;QACtB,kBAAkB,EAAE,MAAM,CAAA;QAC1B,gBAAgB,EAAE,MAAM,CAAA;KACzB,CAAC,CAAA;IACF,UAAU,EAAE,eAAe,EAAE,CAAA;IAC7B,WAAW,EAAE,UAAU,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAA;IACxD,cAAc,EAAE;QACd,mBAAmB,EAAE,MAAM,CAAA;QAC3B,gBAAgB,EAAE,OAAO,CAAA;KAC1B,CAAA;CACF;AA6MD,wBAAsB,wBAAwB,CAAC,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA0NnH"}