@oobe-protocol-labs/synapse-sap-sdk 0.1.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 (315) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +882 -0
  3. package/dist/cjs/constants/index.js +43 -0
  4. package/dist/cjs/constants/index.js.map +1 -0
  5. package/dist/cjs/constants/limits.js +161 -0
  6. package/dist/cjs/constants/limits.js.map +1 -0
  7. package/dist/cjs/constants/programs.js +78 -0
  8. package/dist/cjs/constants/programs.js.map +1 -0
  9. package/dist/cjs/constants/seeds.js +57 -0
  10. package/dist/cjs/constants/seeds.js.map +1 -0
  11. package/dist/cjs/core/client.js +391 -0
  12. package/dist/cjs/core/client.js.map +1 -0
  13. package/dist/cjs/core/connection.js +319 -0
  14. package/dist/cjs/core/connection.js.map +1 -0
  15. package/dist/cjs/core/index.js +24 -0
  16. package/dist/cjs/core/index.js.map +1 -0
  17. package/dist/cjs/errors/index.js +334 -0
  18. package/dist/cjs/errors/index.js.map +1 -0
  19. package/dist/cjs/events/index.js +136 -0
  20. package/dist/cjs/events/index.js.map +1 -0
  21. package/dist/cjs/idl/index.js +63 -0
  22. package/dist/cjs/idl/index.js.map +1 -0
  23. package/dist/cjs/idl/synapse_agent_sap.json +9710 -0
  24. package/dist/cjs/index.js +147 -0
  25. package/dist/cjs/index.js.map +1 -0
  26. package/dist/cjs/modules/agent.js +272 -0
  27. package/dist/cjs/modules/agent.js.map +1 -0
  28. package/dist/cjs/modules/attestation.js +147 -0
  29. package/dist/cjs/modules/attestation.js.map +1 -0
  30. package/dist/cjs/modules/base.js +128 -0
  31. package/dist/cjs/modules/base.js.map +1 -0
  32. package/dist/cjs/modules/escrow.js +246 -0
  33. package/dist/cjs/modules/escrow.js.map +1 -0
  34. package/dist/cjs/modules/feedback.js +166 -0
  35. package/dist/cjs/modules/feedback.js.map +1 -0
  36. package/dist/cjs/modules/index.js +35 -0
  37. package/dist/cjs/modules/index.js.map +1 -0
  38. package/dist/cjs/modules/indexing.js +375 -0
  39. package/dist/cjs/modules/indexing.js.map +1 -0
  40. package/dist/cjs/modules/ledger.js +234 -0
  41. package/dist/cjs/modules/ledger.js.map +1 -0
  42. package/dist/cjs/modules/tools.js +319 -0
  43. package/dist/cjs/modules/tools.js.map +1 -0
  44. package/dist/cjs/modules/vault.js +410 -0
  45. package/dist/cjs/modules/vault.js.map +1 -0
  46. package/dist/cjs/pda/index.js +377 -0
  47. package/dist/cjs/pda/index.js.map +1 -0
  48. package/dist/cjs/plugin/index.js +934 -0
  49. package/dist/cjs/plugin/index.js.map +1 -0
  50. package/dist/cjs/plugin/protocols.js +282 -0
  51. package/dist/cjs/plugin/protocols.js.map +1 -0
  52. package/dist/cjs/plugin/schemas.js +831 -0
  53. package/dist/cjs/plugin/schemas.js.map +1 -0
  54. package/dist/cjs/postgres/adapter.js +715 -0
  55. package/dist/cjs/postgres/adapter.js.map +1 -0
  56. package/dist/cjs/postgres/index.js +50 -0
  57. package/dist/cjs/postgres/index.js.map +1 -0
  58. package/dist/cjs/postgres/serializers.js +381 -0
  59. package/dist/cjs/postgres/serializers.js.map +1 -0
  60. package/dist/cjs/postgres/sync.js +221 -0
  61. package/dist/cjs/postgres/sync.js.map +1 -0
  62. package/dist/cjs/postgres/types.js +44 -0
  63. package/dist/cjs/postgres/types.js.map +1 -0
  64. package/dist/cjs/registries/builder.js +414 -0
  65. package/dist/cjs/registries/builder.js.map +1 -0
  66. package/dist/cjs/registries/discovery.js +362 -0
  67. package/dist/cjs/registries/discovery.js.map +1 -0
  68. package/dist/cjs/registries/index.js +51 -0
  69. package/dist/cjs/registries/index.js.map +1 -0
  70. package/dist/cjs/registries/session.js +433 -0
  71. package/dist/cjs/registries/session.js.map +1 -0
  72. package/dist/cjs/registries/x402.js +577 -0
  73. package/dist/cjs/registries/x402.js.map +1 -0
  74. package/dist/cjs/types/accounts.js +13 -0
  75. package/dist/cjs/types/accounts.js.map +1 -0
  76. package/dist/cjs/types/common.js +13 -0
  77. package/dist/cjs/types/common.js.map +1 -0
  78. package/dist/cjs/types/enums.js +174 -0
  79. package/dist/cjs/types/enums.js.map +1 -0
  80. package/dist/cjs/types/index.js +36 -0
  81. package/dist/cjs/types/index.js.map +1 -0
  82. package/dist/cjs/types/instructions.js +92 -0
  83. package/dist/cjs/types/instructions.js.map +1 -0
  84. package/dist/cjs/utils/hash.js +58 -0
  85. package/dist/cjs/utils/hash.js.map +1 -0
  86. package/dist/cjs/utils/index.js +27 -0
  87. package/dist/cjs/utils/index.js.map +1 -0
  88. package/dist/cjs/utils/serialization.js +105 -0
  89. package/dist/cjs/utils/serialization.js.map +1 -0
  90. package/dist/cjs/utils/validation.js +36 -0
  91. package/dist/cjs/utils/validation.js.map +1 -0
  92. package/dist/esm/constants/index.js +29 -0
  93. package/dist/esm/constants/index.js.map +1 -0
  94. package/dist/esm/constants/limits.js +158 -0
  95. package/dist/esm/constants/limits.js.map +1 -0
  96. package/dist/esm/constants/programs.js +75 -0
  97. package/dist/esm/constants/programs.js.map +1 -0
  98. package/dist/esm/constants/seeds.js +54 -0
  99. package/dist/esm/constants/seeds.js.map +1 -0
  100. package/dist/esm/core/client.js +384 -0
  101. package/dist/esm/core/client.js.map +1 -0
  102. package/dist/esm/core/connection.js +315 -0
  103. package/dist/esm/core/connection.js.map +1 -0
  104. package/dist/esm/core/index.js +19 -0
  105. package/dist/esm/core/index.js.map +1 -0
  106. package/dist/esm/errors/index.js +325 -0
  107. package/dist/esm/errors/index.js.map +1 -0
  108. package/dist/esm/events/index.js +132 -0
  109. package/dist/esm/events/index.js.map +1 -0
  110. package/dist/esm/idl/index.js +57 -0
  111. package/dist/esm/idl/index.js.map +1 -0
  112. package/dist/esm/idl/synapse_agent_sap.json +9710 -0
  113. package/dist/esm/index.js +70 -0
  114. package/dist/esm/index.js.map +1 -0
  115. package/dist/esm/modules/agent.js +268 -0
  116. package/dist/esm/modules/agent.js.map +1 -0
  117. package/dist/esm/modules/attestation.js +143 -0
  118. package/dist/esm/modules/attestation.js.map +1 -0
  119. package/dist/esm/modules/base.js +124 -0
  120. package/dist/esm/modules/base.js.map +1 -0
  121. package/dist/esm/modules/escrow.js +242 -0
  122. package/dist/esm/modules/escrow.js.map +1 -0
  123. package/dist/esm/modules/feedback.js +162 -0
  124. package/dist/esm/modules/feedback.js.map +1 -0
  125. package/dist/esm/modules/index.js +23 -0
  126. package/dist/esm/modules/index.js.map +1 -0
  127. package/dist/esm/modules/indexing.js +371 -0
  128. package/dist/esm/modules/indexing.js.map +1 -0
  129. package/dist/esm/modules/ledger.js +230 -0
  130. package/dist/esm/modules/ledger.js.map +1 -0
  131. package/dist/esm/modules/tools.js +315 -0
  132. package/dist/esm/modules/tools.js.map +1 -0
  133. package/dist/esm/modules/vault.js +406 -0
  134. package/dist/esm/modules/vault.js.map +1 -0
  135. package/dist/esm/pda/index.js +357 -0
  136. package/dist/esm/pda/index.js.map +1 -0
  137. package/dist/esm/plugin/index.js +927 -0
  138. package/dist/esm/plugin/index.js.map +1 -0
  139. package/dist/esm/plugin/protocols.js +279 -0
  140. package/dist/esm/plugin/protocols.js.map +1 -0
  141. package/dist/esm/plugin/schemas.js +828 -0
  142. package/dist/esm/plugin/schemas.js.map +1 -0
  143. package/dist/esm/postgres/adapter.js +678 -0
  144. package/dist/esm/postgres/adapter.js.map +1 -0
  145. package/dist/esm/postgres/index.js +27 -0
  146. package/dist/esm/postgres/index.js.map +1 -0
  147. package/dist/esm/postgres/serializers.js +362 -0
  148. package/dist/esm/postgres/serializers.js.map +1 -0
  149. package/dist/esm/postgres/sync.js +217 -0
  150. package/dist/esm/postgres/sync.js.map +1 -0
  151. package/dist/esm/postgres/types.js +41 -0
  152. package/dist/esm/postgres/types.js.map +1 -0
  153. package/dist/esm/registries/builder.js +410 -0
  154. package/dist/esm/registries/builder.js.map +1 -0
  155. package/dist/esm/registries/discovery.js +358 -0
  156. package/dist/esm/registries/discovery.js.map +1 -0
  157. package/dist/esm/registries/index.js +44 -0
  158. package/dist/esm/registries/index.js.map +1 -0
  159. package/dist/esm/registries/session.js +429 -0
  160. package/dist/esm/registries/session.js.map +1 -0
  161. package/dist/esm/registries/x402.js +573 -0
  162. package/dist/esm/registries/x402.js.map +1 -0
  163. package/dist/esm/types/accounts.js +12 -0
  164. package/dist/esm/types/accounts.js.map +1 -0
  165. package/dist/esm/types/common.js +12 -0
  166. package/dist/esm/types/common.js.map +1 -0
  167. package/dist/esm/types/enums.js +171 -0
  168. package/dist/esm/types/enums.js.map +1 -0
  169. package/dist/esm/types/index.js +25 -0
  170. package/dist/esm/types/index.js.map +1 -0
  171. package/dist/esm/types/instructions.js +89 -0
  172. package/dist/esm/types/instructions.js.map +1 -0
  173. package/dist/esm/utils/hash.js +53 -0
  174. package/dist/esm/utils/hash.js.map +1 -0
  175. package/dist/esm/utils/index.js +19 -0
  176. package/dist/esm/utils/index.js.map +1 -0
  177. package/dist/esm/utils/serialization.js +98 -0
  178. package/dist/esm/utils/serialization.js.map +1 -0
  179. package/dist/esm/utils/validation.js +33 -0
  180. package/dist/esm/utils/validation.js.map +1 -0
  181. package/dist/types/constants/index.d.ts +27 -0
  182. package/dist/types/constants/index.d.ts.map +1 -0
  183. package/dist/types/constants/limits.d.ts +149 -0
  184. package/dist/types/constants/limits.d.ts.map +1 -0
  185. package/dist/types/constants/programs.d.ts +69 -0
  186. package/dist/types/constants/programs.d.ts.map +1 -0
  187. package/dist/types/constants/seeds.d.ts +61 -0
  188. package/dist/types/constants/seeds.d.ts.map +1 -0
  189. package/dist/types/core/client.d.ts +323 -0
  190. package/dist/types/core/client.d.ts.map +1 -0
  191. package/dist/types/core/connection.d.ts +279 -0
  192. package/dist/types/core/connection.d.ts.map +1 -0
  193. package/dist/types/core/index.d.ts +20 -0
  194. package/dist/types/core/index.d.ts.map +1 -0
  195. package/dist/types/errors/index.d.ts +276 -0
  196. package/dist/types/errors/index.d.ts.map +1 -0
  197. package/dist/types/events/index.d.ts +248 -0
  198. package/dist/types/events/index.d.ts.map +1 -0
  199. package/dist/types/idl/index.d.ts +70 -0
  200. package/dist/types/idl/index.d.ts.map +1 -0
  201. package/dist/types/index.d.ts +68 -0
  202. package/dist/types/index.d.ts.map +1 -0
  203. package/dist/types/modules/agent.d.ts +166 -0
  204. package/dist/types/modules/agent.d.ts.map +1 -0
  205. package/dist/types/modules/attestation.d.ts +96 -0
  206. package/dist/types/modules/attestation.d.ts.map +1 -0
  207. package/dist/types/modules/base.d.ts +126 -0
  208. package/dist/types/modules/base.d.ts.map +1 -0
  209. package/dist/types/modules/escrow.d.ts +151 -0
  210. package/dist/types/modules/escrow.d.ts.map +1 -0
  211. package/dist/types/modules/feedback.d.ts +105 -0
  212. package/dist/types/modules/feedback.d.ts.map +1 -0
  213. package/dist/types/modules/index.d.ts +24 -0
  214. package/dist/types/modules/index.d.ts.map +1 -0
  215. package/dist/types/modules/indexing.d.ts +200 -0
  216. package/dist/types/modules/indexing.d.ts.map +1 -0
  217. package/dist/types/modules/ledger.d.ts +150 -0
  218. package/dist/types/modules/ledger.d.ts.map +1 -0
  219. package/dist/types/modules/tools.d.ts +182 -0
  220. package/dist/types/modules/tools.d.ts.map +1 -0
  221. package/dist/types/modules/vault.d.ts +240 -0
  222. package/dist/types/modules/vault.d.ts.map +1 -0
  223. package/dist/types/pda/index.d.ts +296 -0
  224. package/dist/types/pda/index.d.ts.map +1 -0
  225. package/dist/types/plugin/index.d.ts +171 -0
  226. package/dist/types/plugin/index.d.ts.map +1 -0
  227. package/dist/types/plugin/protocols.d.ts +152 -0
  228. package/dist/types/plugin/protocols.d.ts.map +1 -0
  229. package/dist/types/plugin/schemas.d.ts +823 -0
  230. package/dist/types/plugin/schemas.d.ts.map +1 -0
  231. package/dist/types/postgres/adapter.d.ts +355 -0
  232. package/dist/types/postgres/adapter.d.ts.map +1 -0
  233. package/dist/types/postgres/index.d.ts +24 -0
  234. package/dist/types/postgres/index.d.ts.map +1 -0
  235. package/dist/types/postgres/serializers.d.ts +30 -0
  236. package/dist/types/postgres/serializers.d.ts.map +1 -0
  237. package/dist/types/postgres/sync.d.ts +132 -0
  238. package/dist/types/postgres/sync.d.ts.map +1 -0
  239. package/dist/types/postgres/types.d.ts +167 -0
  240. package/dist/types/postgres/types.d.ts.map +1 -0
  241. package/dist/types/registries/builder.d.ts +340 -0
  242. package/dist/types/registries/builder.d.ts.map +1 -0
  243. package/dist/types/registries/discovery.d.ts +333 -0
  244. package/dist/types/registries/discovery.d.ts.map +1 -0
  245. package/dist/types/registries/index.d.ts +48 -0
  246. package/dist/types/registries/index.d.ts.map +1 -0
  247. package/dist/types/registries/session.d.ts +323 -0
  248. package/dist/types/registries/session.d.ts.map +1 -0
  249. package/dist/types/registries/x402.d.ts +463 -0
  250. package/dist/types/registries/x402.d.ts.map +1 -0
  251. package/dist/types/types/accounts.d.ts +565 -0
  252. package/dist/types/types/accounts.d.ts.map +1 -0
  253. package/dist/types/types/common.d.ts +166 -0
  254. package/dist/types/types/common.d.ts.map +1 -0
  255. package/dist/types/types/enums.d.ts +238 -0
  256. package/dist/types/types/enums.d.ts.map +1 -0
  257. package/dist/types/types/index.d.ts +28 -0
  258. package/dist/types/types/index.d.ts.map +1 -0
  259. package/dist/types/types/instructions.d.ts +366 -0
  260. package/dist/types/types/instructions.d.ts.map +1 -0
  261. package/dist/types/utils/hash.d.ts +48 -0
  262. package/dist/types/utils/hash.d.ts.map +1 -0
  263. package/dist/types/utils/index.d.ts +19 -0
  264. package/dist/types/utils/index.d.ts.map +1 -0
  265. package/dist/types/utils/serialization.d.ts +69 -0
  266. package/dist/types/utils/serialization.d.ts.map +1 -0
  267. package/dist/types/utils/validation.d.ts +29 -0
  268. package/dist/types/utils/validation.d.ts.map +1 -0
  269. package/package.json +178 -0
  270. package/src/constants/index.ts +44 -0
  271. package/src/constants/limits.ts +165 -0
  272. package/src/constants/programs.ts +83 -0
  273. package/src/constants/seeds.ts +66 -0
  274. package/src/core/client.ts +416 -0
  275. package/src/core/connection.ts +409 -0
  276. package/src/core/index.ts +20 -0
  277. package/src/errors/index.ts +346 -0
  278. package/src/events/index.ts +335 -0
  279. package/src/idl/index.ts +76 -0
  280. package/src/idl/synapse_agent_sap.json +9710 -0
  281. package/src/index.ts +253 -0
  282. package/src/modules/agent.ts +319 -0
  283. package/src/modules/attestation.ts +168 -0
  284. package/src/modules/base.ts +158 -0
  285. package/src/modules/escrow.ts +308 -0
  286. package/src/modules/feedback.ts +186 -0
  287. package/src/modules/index.ts +24 -0
  288. package/src/modules/indexing.ts +444 -0
  289. package/src/modules/ledger.ts +262 -0
  290. package/src/modules/tools.ts +411 -0
  291. package/src/modules/vault.ts +533 -0
  292. package/src/pda/index.ts +512 -0
  293. package/src/plugin/index.ts +1202 -0
  294. package/src/plugin/protocols.ts +404 -0
  295. package/src/plugin/schemas.ts +909 -0
  296. package/src/postgres/adapter.ts +904 -0
  297. package/src/postgres/index.ts +59 -0
  298. package/src/postgres/schema.sql +683 -0
  299. package/src/postgres/serializers.ts +485 -0
  300. package/src/postgres/sync.ts +254 -0
  301. package/src/postgres/types.ts +245 -0
  302. package/src/registries/builder.ts +607 -0
  303. package/src/registries/discovery.ts +572 -0
  304. package/src/registries/index.ts +77 -0
  305. package/src/registries/session.ts +613 -0
  306. package/src/registries/x402.ts +906 -0
  307. package/src/types/accounts.ts +618 -0
  308. package/src/types/common.ts +187 -0
  309. package/src/types/enums.ts +214 -0
  310. package/src/types/index.ts +92 -0
  311. package/src/types/instructions.ts +413 -0
  312. package/src/utils/hash.ts +57 -0
  313. package/src/utils/index.ts +19 -0
  314. package/src/utils/serialization.ts +98 -0
  315. package/src/utils/validation.ts +36 -0
package/src/index.ts ADDED
@@ -0,0 +1,253 @@
1
+ /**
2
+ * @synapse-sap/sdk — TypeScript SDK for SAP v2 (Solana Agent Protocol)
3
+ *
4
+ * Modular architecture:
5
+ *
6
+ * | Path | Description |
7
+ * |-------------------|-----------------------------------------------|
8
+ * | `core/` | SapClient, SapConnection (RPC factory) |
9
+ * | `types/` | On-chain enums, account data, instruction DTOs|
10
+ * | `constants/` | Program IDs, PDA seeds, size limits |
11
+ * | `pda/` | Deterministic PDA derivation helpers |
12
+ * | `events/` | Transaction-log event parser |
13
+ * | `errors/` | Typed SDK error classes |
14
+ * | `utils/` | Hashing, validation, serialization |
15
+ * | `modules/` | Low-level per-domain instruction wrappers |
16
+ * | `registries/` | High-level abstractions (discovery, x402, …) |
17
+ * | `plugin/` | SynapseAgentKit adapter (52 tools) |
18
+ * | `idl/` | Embedded Anchor IDL |
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * import { SapClient, SapConnection } from "@synapse-sap/sdk";
23
+ *
24
+ * // Quick start — from Anchor provider
25
+ * const client = SapClient.from(provider);
26
+ *
27
+ * // Or from RPC URL (synapse-client-sdk compatible)
28
+ * const conn = SapConnection.devnet();
29
+ * const client2 = conn.fromKeypair(keypair);
30
+ *
31
+ * // Use domain modules:
32
+ * await client.agent.register({ ... });
33
+ * await client.escrow.create(agentWallet, { ... });
34
+ * await client.ledger.write(sessionPda, data, contentHash);
35
+ *
36
+ * // Use registries (high-level):
37
+ * const agents = await client.discovery.findAgentsByProtocol("jupiter");
38
+ * const ctx = await client.session.start("conv-123");
39
+ * ```
40
+ *
41
+ * @packageDocumentation
42
+ * @category SDK
43
+ * @since v0.1.0
44
+ */
45
+
46
+ // ── Core ─────────────────────────────────────────────
47
+ export { SapClient, SapConnection } from "./core";
48
+ export type { SapCluster, SapConnectionConfig } from "./core";
49
+
50
+ // ── Types ────────────────────────────────────────────
51
+ export type {
52
+ // Enums
53
+ TokenTypeKind,
54
+ PluginTypeKind,
55
+ SettlementModeKind,
56
+ ToolHttpMethodKind,
57
+ ToolCategoryKind,
58
+ DelegatePermissionBit,
59
+ SchemaTypeValue,
60
+ CompressionTypeValue,
61
+ // Helper structs
62
+ Capability,
63
+ VolumeCurveBreakpoint,
64
+ PricingTier,
65
+ PluginRef,
66
+ Settlement,
67
+ // Account data
68
+ AgentAccountData,
69
+ FeedbackAccountData,
70
+ CapabilityIndexData,
71
+ ProtocolIndexData,
72
+ GlobalRegistryData,
73
+ MemoryVaultData,
74
+ SessionLedgerData,
75
+ EpochPageData,
76
+ VaultDelegateData,
77
+ ToolDescriptorData,
78
+ SessionCheckpointData,
79
+ EscrowAccountData,
80
+ AgentStatsData,
81
+ ToolCategoryIndexData,
82
+ AgentAttestationData,
83
+ MemoryLedgerData,
84
+ LedgerPageData,
85
+ // Instruction args
86
+ RegisterAgentArgs,
87
+ UpdateAgentArgs,
88
+ GiveFeedbackArgs,
89
+ UpdateFeedbackArgs,
90
+ PublishToolArgs,
91
+ UpdateToolArgs,
92
+ InscribeMemoryArgs,
93
+ CompactInscribeArgs,
94
+ CreateEscrowArgs,
95
+ CreateAttestationArgs,
96
+ InscribeToolSchemaArgs,
97
+ } from "./types";
98
+
99
+ export {
100
+ TokenType,
101
+ PluginType,
102
+ SettlementMode,
103
+ ToolHttpMethod,
104
+ ToolCategory,
105
+ DelegatePermission,
106
+ SchemaType,
107
+ CompressionType,
108
+ } from "./types";
109
+
110
+ // ── Constants ────────────────────────────────────────
111
+ export {
112
+ SAP_PROGRAM_ADDRESS,
113
+ SAP_PROGRAM_ID,
114
+ MAINNET_SAP_PROGRAM_ID,
115
+ DEVNET_SAP_PROGRAM_ID,
116
+ LOCALNET_SAP_PROGRAM_ID,
117
+ SEEDS,
118
+ LIMITS,
119
+ AGENT_VERSION,
120
+ VAULT_PROTOCOL_VERSION,
121
+ TOOL_CATEGORY_VALUES,
122
+ HTTP_METHOD_VALUES,
123
+ } from "./constants";
124
+
125
+ // ── IDL ──────────────────────────────────────────────
126
+ export { SAP_IDL, IDL_PROGRAM_ADDRESS, IDL_METADATA } from "./idl/index";
127
+ export type { SynapseAgentSapIDL } from "./idl/index";
128
+
129
+ // ── PDA Derivation ───────────────────────────────────
130
+ export {
131
+ deriveGlobalRegistry,
132
+ deriveAgent,
133
+ deriveAgentStats,
134
+ deriveFeedback,
135
+ deriveCapabilityIndex,
136
+ deriveProtocolIndex,
137
+ deriveToolCategoryIndex,
138
+ deriveVault,
139
+ deriveSession,
140
+ deriveEpochPage,
141
+ deriveVaultDelegate,
142
+ deriveCheckpoint,
143
+ deriveTool,
144
+ deriveEscrow,
145
+ deriveAttestation,
146
+ deriveLedger,
147
+ deriveLedgerPage,
148
+ } from "./pda";
149
+
150
+ // ── Utilities ────────────────────────────────────────
151
+ export { sha256, hashToArray, assert } from "./utils";
152
+ export { serializeAccount, serializeValue } from "./utils";
153
+
154
+ // ── Errors ───────────────────────────────────────────
155
+ export {
156
+ SapError,
157
+ SapValidationError,
158
+ SapRpcError,
159
+ SapAccountNotFoundError,
160
+ SapTimeoutError,
161
+ SapPermissionError,
162
+ } from "./errors";
163
+
164
+ // ── Events ───────────────────────────────────────────
165
+ export { EventParser, SAP_EVENT_NAMES } from "./events";
166
+ export type {
167
+ SapEvent,
168
+ SapEventName,
169
+ ParsedEvent,
170
+ RegisteredEventData,
171
+ UpdatedEventData,
172
+ FeedbackEventData,
173
+ MemoryInscribedEventData,
174
+ PaymentSettledEventData,
175
+ LedgerEntryEventData,
176
+ } from "./events";
177
+
178
+ // ── Modules (for advanced usage / tree-shaking) ──────
179
+ export {
180
+ AgentModule,
181
+ FeedbackModule,
182
+ IndexingModule,
183
+ ToolsModule,
184
+ VaultModule,
185
+ EscrowModule,
186
+ AttestationModule,
187
+ LedgerModule,
188
+ BaseModule,
189
+ } from "./modules/index";
190
+ export type { SapProgram, SapTransactionResult } from "./modules/base";
191
+
192
+ // ── Plugin (SynapseAgentKit integration) ─────────────
193
+ export { createSAPPlugin, SAPPlugin } from "./plugin/index";
194
+ export type {
195
+ SAPPluginConfig,
196
+ SynapsePlugin,
197
+ PluginMeta,
198
+ PluginContext,
199
+ PluginInstallResult,
200
+ } from "./plugin/index";
201
+ export type {
202
+ ProtocolMethod,
203
+ PluginProtocol,
204
+ } from "./plugin/protocols";
205
+ export { SAP_PROTOCOLS } from "./plugin/protocols";
206
+
207
+ // ── PostgreSQL Adapter (off-chain mirror) ────────────────
208
+ export { SapPostgres, SapSyncEngine, SAP_TABLE_MAP } from "./postgres";
209
+ export type {
210
+ PgClient,
211
+ SyncAllResult,
212
+ SapAccountType,
213
+ SyncMeta,
214
+ AgentRow,
215
+ EscrowRow,
216
+ ToolRow,
217
+ LedgerRow,
218
+ EventRow,
219
+ SyncCursorRow,
220
+ SyncOptions,
221
+ } from "./postgres";
222
+
223
+ // ── Registries (high-level developer abstractions) ────
224
+ export {
225
+ DiscoveryRegistry,
226
+ X402Registry,
227
+ SessionManager,
228
+ AgentBuilder,
229
+ } from "./registries/index";
230
+ export type {
231
+ DiscoveredAgent,
232
+ AgentProfile,
233
+ DiscoveredTool,
234
+ NetworkOverview,
235
+ ToolCategoryName,
236
+ CostEstimate,
237
+ PaymentContext,
238
+ PreparePaymentOptions,
239
+ X402Headers,
240
+ EscrowBalance,
241
+ SettlementResult,
242
+ BatchSettlementResult,
243
+ SessionContext,
244
+ WriteResult,
245
+ SealResult,
246
+ RingBufferEntry,
247
+ SessionStatus,
248
+ CapabilityInput,
249
+ PricingTierInput,
250
+ ToolInput,
251
+ RegisterResult,
252
+ RegisterWithToolsResult,
253
+ } from "./registries/index";
@@ -0,0 +1,319 @@
1
+ /**
2
+ * @module agent
3
+ * @description Agent lifecycle operations for the Solana Agent Protocol.
4
+ *
5
+ * Covers: register, update, deactivate, reactivate, close,
6
+ * report calls, update reputation metrics, and account fetching.
7
+ *
8
+ * @category Modules
9
+ * @since v0.1.0
10
+ * @packageDocumentation
11
+ */
12
+
13
+ import { SystemProgram, type PublicKey, type TransactionSignature } from "@solana/web3.js";
14
+ import { BaseModule } from "./base";
15
+ import { deriveAgent, deriveAgentStats, deriveGlobalRegistry } from "../pda";
16
+ import type {
17
+ AgentAccountData,
18
+ AgentStatsData,
19
+ RegisterAgentArgs,
20
+ UpdateAgentArgs,
21
+ } from "../types";
22
+
23
+ /**
24
+ * @name AgentModule
25
+ * @description Manages the full agent lifecycle on the Solana Agent Protocol.
26
+ * Provides methods to register, update, deactivate, reactivate, and close
27
+ * agent identities, as well as self-report call metrics and reputation data.
28
+ *
29
+ * @category Modules
30
+ * @since v0.1.0
31
+ * @extends BaseModule
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * const sap = new SapClient(provider);
36
+ * // Register a new agent
37
+ * const sig = await sap.agent.register({
38
+ * name: "my-agent",
39
+ * description: "An example agent",
40
+ * capabilities: [0, 1],
41
+ * pricing: { free: {} },
42
+ * protocols: [0],
43
+ * });
44
+ * // Fetch agent data
45
+ * const data = await sap.agent.fetch();
46
+ * ```
47
+ */
48
+ export class AgentModule extends BaseModule {
49
+ // ── PDA helpers ──────────────────────────────────────
50
+
51
+ /**
52
+ * @name deriveAgent
53
+ * @description Derive the `AgentAccount` PDA for a wallet.
54
+ * @param wallet - The wallet public key. Defaults to the connected wallet.
55
+ * @returns A tuple of `[PublicKey, bump]` for the agent PDA.
56
+ * @see {@link deriveAgent} from `pda/` module for the underlying derivation.
57
+ * @since v0.1.0
58
+ */
59
+ deriveAgent(wallet?: PublicKey): readonly [PublicKey, number] {
60
+ return deriveAgent(wallet ?? this.walletPubkey);
61
+ }
62
+
63
+ /**
64
+ * @name deriveStats
65
+ * @description Derive the `AgentStats` PDA for a given agent.
66
+ * @param agentPda - The agent account PDA.
67
+ * @returns A tuple of `[PublicKey, bump]` for the stats PDA.
68
+ * @see {@link deriveAgentStats} from `pda/` module for the underlying derivation.
69
+ * @since v0.1.0
70
+ */
71
+ deriveStats(agentPda: PublicKey): readonly [PublicKey, number] {
72
+ return deriveAgentStats(agentPda);
73
+ }
74
+
75
+ // ── Instructions ─────────────────────────────────────
76
+
77
+ /**
78
+ * @name register
79
+ * @description Register a new agent identity on-chain. Creates the
80
+ * `AgentAccount`, `AgentStats`, and updates the `GlobalRegistry`.
81
+ * @param args - Registration parameters (name, description, capabilities, pricing, protocols, etc.).
82
+ * @returns {Promise<TransactionSignature>} The transaction signature.
83
+ * @since v0.1.0
84
+ */
85
+ async register(args: RegisterAgentArgs): Promise<TransactionSignature> {
86
+ const [agentPda] = this.deriveAgent();
87
+ const [statsPda] = this.deriveStats(agentPda);
88
+ const [globalPda] = deriveGlobalRegistry();
89
+
90
+ return this.methods
91
+ .registerAgent(
92
+ args.name,
93
+ args.description,
94
+ args.capabilities,
95
+ args.pricing,
96
+ args.protocols,
97
+ args.agentId ?? null,
98
+ args.agentUri ?? null,
99
+ args.x402Endpoint ?? null,
100
+ )
101
+ .accounts({
102
+ wallet: this.walletPubkey,
103
+ agent: agentPda,
104
+ agentStats: statsPda,
105
+ globalRegistry: globalPda,
106
+ systemProgram: SystemProgram.programId,
107
+ })
108
+ .rpc();
109
+ }
110
+
111
+ /**
112
+ * @name update
113
+ * @description Update an existing agent's metadata fields. All fields
114
+ * are optional — only non-null values are written.
115
+ * @param args - Partial update parameters.
116
+ * @returns {Promise<TransactionSignature>} The transaction signature.
117
+ * @since v0.1.0
118
+ */
119
+ async update(args: UpdateAgentArgs): Promise<TransactionSignature> {
120
+ const [agentPda] = this.deriveAgent();
121
+
122
+ return this.methods
123
+ .updateAgent(
124
+ args.name ?? null,
125
+ args.description ?? null,
126
+ args.capabilities ?? null,
127
+ args.pricing ?? null,
128
+ args.protocols ?? null,
129
+ args.agentId ?? null,
130
+ args.agentUri ?? null,
131
+ args.x402Endpoint ?? null,
132
+ )
133
+ .accounts({
134
+ wallet: this.walletPubkey,
135
+ agent: agentPda,
136
+ systemProgram: SystemProgram.programId,
137
+ })
138
+ .rpc();
139
+ }
140
+
141
+ /**
142
+ * @name deactivate
143
+ * @description Deactivate an agent, setting `is_active = false`.
144
+ * The agent remains on-chain but is excluded from active discovery.
145
+ * @returns {Promise<TransactionSignature>} The transaction signature.
146
+ * @since v0.1.0
147
+ */
148
+ async deactivate(): Promise<TransactionSignature> {
149
+ const [agentPda] = this.deriveAgent();
150
+ const [statsPda] = this.deriveStats(agentPda);
151
+
152
+ return this.methods
153
+ .deactivateAgent()
154
+ .accounts({
155
+ wallet: this.walletPubkey,
156
+ agent: agentPda,
157
+ agentStats: statsPda,
158
+ })
159
+ .rpc();
160
+ }
161
+
162
+ /**
163
+ * @name reactivate
164
+ * @description Reactivate a previously deactivated agent, restoring
165
+ * it to active status.
166
+ * @returns {Promise<TransactionSignature>} The transaction signature.
167
+ * @since v0.1.0
168
+ */
169
+ async reactivate(): Promise<TransactionSignature> {
170
+ const [agentPda] = this.deriveAgent();
171
+ const [statsPda] = this.deriveStats(agentPda);
172
+
173
+ return this.methods
174
+ .reactivateAgent()
175
+ .accounts({
176
+ wallet: this.walletPubkey,
177
+ agent: agentPda,
178
+ agentStats: statsPda,
179
+ })
180
+ .rpc();
181
+ }
182
+
183
+ /**
184
+ * @name close
185
+ * @description Close an agent PDA and its associated stats PDA.
186
+ * Rent is returned to the owner wallet.
187
+ * @returns {Promise<TransactionSignature>} The transaction signature.
188
+ * @since v0.1.0
189
+ */
190
+ async close(): Promise<TransactionSignature> {
191
+ const [agentPda] = this.deriveAgent();
192
+ const [statsPda] = this.deriveStats(agentPda);
193
+ const [globalPda] = deriveGlobalRegistry();
194
+
195
+ return this.methods
196
+ .closeAgent()
197
+ .accounts({
198
+ wallet: this.walletPubkey,
199
+ agent: agentPda,
200
+ agentStats: statsPda,
201
+ globalRegistry: globalPda,
202
+ systemProgram: SystemProgram.programId,
203
+ })
204
+ .rpc();
205
+ }
206
+
207
+ /**
208
+ * @name reportCalls
209
+ * @description Self-report call metrics for the agent. This updates the
210
+ * `AgentStats` counter but does not affect on-chain reputation.
211
+ * @param callsServed - The number of calls to report.
212
+ * @returns {Promise<TransactionSignature>} The transaction signature.
213
+ * @since v0.1.0
214
+ */
215
+ async reportCalls(callsServed: number | bigint): Promise<TransactionSignature> {
216
+ const [agentPda] = this.deriveAgent();
217
+ const [statsPda] = this.deriveStats(agentPda);
218
+
219
+ return this.methods
220
+ .reportCalls(this.bn(callsServed))
221
+ .accounts({
222
+ wallet: this.walletPubkey,
223
+ agent: agentPda,
224
+ agentStats: statsPda,
225
+ })
226
+ .rpc();
227
+ }
228
+
229
+ /**
230
+ * @name updateReputation
231
+ * @description Update self-reported latency and uptime metrics.
232
+ * These are informational and do not affect on-chain reputation scoring.
233
+ * @param avgLatencyMs - Average response latency in milliseconds.
234
+ * @param uptimePercent - Uptime percentage (0–100).
235
+ * @returns {Promise<TransactionSignature>} The transaction signature.
236
+ * @since v0.1.0
237
+ */
238
+ async updateReputation(
239
+ avgLatencyMs: number,
240
+ uptimePercent: number,
241
+ ): Promise<TransactionSignature> {
242
+ const [agentPda] = this.deriveAgent();
243
+
244
+ return this.methods
245
+ .updateReputation(avgLatencyMs, uptimePercent)
246
+ .accounts({
247
+ wallet: this.walletPubkey,
248
+ agent: agentPda,
249
+ })
250
+ .rpc();
251
+ }
252
+
253
+ // ── Fetchers ─────────────────────────────────────────
254
+
255
+ /**
256
+ * @name fetch
257
+ * @description Fetch the deserialized `AgentAccount` data for a wallet.
258
+ * @param wallet - The wallet public key. Defaults to the connected wallet.
259
+ * @returns {Promise<AgentAccountData>} The agent account data.
260
+ * @throws Will throw if the agent account does not exist.
261
+ * @since v0.1.0
262
+ */
263
+ async fetch(wallet?: PublicKey): Promise<AgentAccountData> {
264
+ const [pda] = this.deriveAgent(wallet ?? this.walletPubkey);
265
+ return this.fetchAccount<AgentAccountData>("agentAccount", pda);
266
+ }
267
+
268
+ /**
269
+ * @name fetchNullable
270
+ * @description Fetch the deserialized `AgentAccount` data, or `null`
271
+ * if the account doesn't exist on-chain.
272
+ * @param wallet - The wallet public key. Defaults to the connected wallet.
273
+ * @returns {Promise<AgentAccountData | null>} The agent data or `null`.
274
+ * @since v0.1.0
275
+ */
276
+ async fetchNullable(wallet?: PublicKey): Promise<AgentAccountData | null> {
277
+ const [pda] = this.deriveAgent(wallet ?? this.walletPubkey);
278
+ return this.fetchAccountNullable<AgentAccountData>("agentAccount", pda);
279
+ }
280
+
281
+ /**
282
+ * @name fetchStats
283
+ * @description Fetch the deserialized `AgentStats` data for an agent.
284
+ * @param agentPda - The agent account PDA.
285
+ * @returns {Promise<AgentStatsData>} The agent stats data.
286
+ * @throws Will throw if the stats account does not exist.
287
+ * @since v0.1.0
288
+ */
289
+ async fetchStats(agentPda: PublicKey): Promise<AgentStatsData> {
290
+ const [pda] = this.deriveStats(agentPda);
291
+ return this.fetchAccount<AgentStatsData>("agentStats", pda);
292
+ }
293
+
294
+ /**
295
+ * @name fetchStatsNullable
296
+ * @description Fetch the deserialized `AgentStats` data, or `null`
297
+ * if the account doesn't exist on-chain.
298
+ * @param agentPda - The agent account PDA.
299
+ * @returns {Promise<AgentStatsData | null>} The stats data or `null`.
300
+ * @since v0.1.0
301
+ */
302
+ async fetchStatsNullable(agentPda: PublicKey): Promise<AgentStatsData | null> {
303
+ const [pda] = this.deriveStats(agentPda);
304
+ return this.fetchAccountNullable<AgentStatsData>("agentStats", pda);
305
+ }
306
+
307
+ /**
308
+ * @name fetchGlobalRegistry
309
+ * @description Fetch the `GlobalRegistry` singleton account that tracks
310
+ * aggregate protocol statistics.
311
+ * @returns {Promise<GlobalRegistryData>} The global registry data.
312
+ * @throws Will throw if the registry has not been initialized.
313
+ * @since v0.1.0
314
+ */
315
+ async fetchGlobalRegistry(): Promise<import("../types").GlobalRegistryData> {
316
+ const [pda] = deriveGlobalRegistry();
317
+ return this.fetchAccount("globalRegistry", pda);
318
+ }
319
+ }