@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.
- package/LICENSE +21 -0
- package/README.md +882 -0
- package/dist/cjs/constants/index.js +43 -0
- package/dist/cjs/constants/index.js.map +1 -0
- package/dist/cjs/constants/limits.js +161 -0
- package/dist/cjs/constants/limits.js.map +1 -0
- package/dist/cjs/constants/programs.js +78 -0
- package/dist/cjs/constants/programs.js.map +1 -0
- package/dist/cjs/constants/seeds.js +57 -0
- package/dist/cjs/constants/seeds.js.map +1 -0
- package/dist/cjs/core/client.js +391 -0
- package/dist/cjs/core/client.js.map +1 -0
- package/dist/cjs/core/connection.js +319 -0
- package/dist/cjs/core/connection.js.map +1 -0
- package/dist/cjs/core/index.js +24 -0
- package/dist/cjs/core/index.js.map +1 -0
- package/dist/cjs/errors/index.js +334 -0
- package/dist/cjs/errors/index.js.map +1 -0
- package/dist/cjs/events/index.js +136 -0
- package/dist/cjs/events/index.js.map +1 -0
- package/dist/cjs/idl/index.js +63 -0
- package/dist/cjs/idl/index.js.map +1 -0
- package/dist/cjs/idl/synapse_agent_sap.json +9710 -0
- package/dist/cjs/index.js +147 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/modules/agent.js +272 -0
- package/dist/cjs/modules/agent.js.map +1 -0
- package/dist/cjs/modules/attestation.js +147 -0
- package/dist/cjs/modules/attestation.js.map +1 -0
- package/dist/cjs/modules/base.js +128 -0
- package/dist/cjs/modules/base.js.map +1 -0
- package/dist/cjs/modules/escrow.js +246 -0
- package/dist/cjs/modules/escrow.js.map +1 -0
- package/dist/cjs/modules/feedback.js +166 -0
- package/dist/cjs/modules/feedback.js.map +1 -0
- package/dist/cjs/modules/index.js +35 -0
- package/dist/cjs/modules/index.js.map +1 -0
- package/dist/cjs/modules/indexing.js +375 -0
- package/dist/cjs/modules/indexing.js.map +1 -0
- package/dist/cjs/modules/ledger.js +234 -0
- package/dist/cjs/modules/ledger.js.map +1 -0
- package/dist/cjs/modules/tools.js +319 -0
- package/dist/cjs/modules/tools.js.map +1 -0
- package/dist/cjs/modules/vault.js +410 -0
- package/dist/cjs/modules/vault.js.map +1 -0
- package/dist/cjs/pda/index.js +377 -0
- package/dist/cjs/pda/index.js.map +1 -0
- package/dist/cjs/plugin/index.js +934 -0
- package/dist/cjs/plugin/index.js.map +1 -0
- package/dist/cjs/plugin/protocols.js +282 -0
- package/dist/cjs/plugin/protocols.js.map +1 -0
- package/dist/cjs/plugin/schemas.js +831 -0
- package/dist/cjs/plugin/schemas.js.map +1 -0
- package/dist/cjs/postgres/adapter.js +715 -0
- package/dist/cjs/postgres/adapter.js.map +1 -0
- package/dist/cjs/postgres/index.js +50 -0
- package/dist/cjs/postgres/index.js.map +1 -0
- package/dist/cjs/postgres/serializers.js +381 -0
- package/dist/cjs/postgres/serializers.js.map +1 -0
- package/dist/cjs/postgres/sync.js +221 -0
- package/dist/cjs/postgres/sync.js.map +1 -0
- package/dist/cjs/postgres/types.js +44 -0
- package/dist/cjs/postgres/types.js.map +1 -0
- package/dist/cjs/registries/builder.js +414 -0
- package/dist/cjs/registries/builder.js.map +1 -0
- package/dist/cjs/registries/discovery.js +362 -0
- package/dist/cjs/registries/discovery.js.map +1 -0
- package/dist/cjs/registries/index.js +51 -0
- package/dist/cjs/registries/index.js.map +1 -0
- package/dist/cjs/registries/session.js +433 -0
- package/dist/cjs/registries/session.js.map +1 -0
- package/dist/cjs/registries/x402.js +577 -0
- package/dist/cjs/registries/x402.js.map +1 -0
- package/dist/cjs/types/accounts.js +13 -0
- package/dist/cjs/types/accounts.js.map +1 -0
- package/dist/cjs/types/common.js +13 -0
- package/dist/cjs/types/common.js.map +1 -0
- package/dist/cjs/types/enums.js +174 -0
- package/dist/cjs/types/enums.js.map +1 -0
- package/dist/cjs/types/index.js +36 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/instructions.js +92 -0
- package/dist/cjs/types/instructions.js.map +1 -0
- package/dist/cjs/utils/hash.js +58 -0
- package/dist/cjs/utils/hash.js.map +1 -0
- package/dist/cjs/utils/index.js +27 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/serialization.js +105 -0
- package/dist/cjs/utils/serialization.js.map +1 -0
- package/dist/cjs/utils/validation.js +36 -0
- package/dist/cjs/utils/validation.js.map +1 -0
- package/dist/esm/constants/index.js +29 -0
- package/dist/esm/constants/index.js.map +1 -0
- package/dist/esm/constants/limits.js +158 -0
- package/dist/esm/constants/limits.js.map +1 -0
- package/dist/esm/constants/programs.js +75 -0
- package/dist/esm/constants/programs.js.map +1 -0
- package/dist/esm/constants/seeds.js +54 -0
- package/dist/esm/constants/seeds.js.map +1 -0
- package/dist/esm/core/client.js +384 -0
- package/dist/esm/core/client.js.map +1 -0
- package/dist/esm/core/connection.js +315 -0
- package/dist/esm/core/connection.js.map +1 -0
- package/dist/esm/core/index.js +19 -0
- package/dist/esm/core/index.js.map +1 -0
- package/dist/esm/errors/index.js +325 -0
- package/dist/esm/errors/index.js.map +1 -0
- package/dist/esm/events/index.js +132 -0
- package/dist/esm/events/index.js.map +1 -0
- package/dist/esm/idl/index.js +57 -0
- package/dist/esm/idl/index.js.map +1 -0
- package/dist/esm/idl/synapse_agent_sap.json +9710 -0
- package/dist/esm/index.js +70 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/modules/agent.js +268 -0
- package/dist/esm/modules/agent.js.map +1 -0
- package/dist/esm/modules/attestation.js +143 -0
- package/dist/esm/modules/attestation.js.map +1 -0
- package/dist/esm/modules/base.js +124 -0
- package/dist/esm/modules/base.js.map +1 -0
- package/dist/esm/modules/escrow.js +242 -0
- package/dist/esm/modules/escrow.js.map +1 -0
- package/dist/esm/modules/feedback.js +162 -0
- package/dist/esm/modules/feedback.js.map +1 -0
- package/dist/esm/modules/index.js +23 -0
- package/dist/esm/modules/index.js.map +1 -0
- package/dist/esm/modules/indexing.js +371 -0
- package/dist/esm/modules/indexing.js.map +1 -0
- package/dist/esm/modules/ledger.js +230 -0
- package/dist/esm/modules/ledger.js.map +1 -0
- package/dist/esm/modules/tools.js +315 -0
- package/dist/esm/modules/tools.js.map +1 -0
- package/dist/esm/modules/vault.js +406 -0
- package/dist/esm/modules/vault.js.map +1 -0
- package/dist/esm/pda/index.js +357 -0
- package/dist/esm/pda/index.js.map +1 -0
- package/dist/esm/plugin/index.js +927 -0
- package/dist/esm/plugin/index.js.map +1 -0
- package/dist/esm/plugin/protocols.js +279 -0
- package/dist/esm/plugin/protocols.js.map +1 -0
- package/dist/esm/plugin/schemas.js +828 -0
- package/dist/esm/plugin/schemas.js.map +1 -0
- package/dist/esm/postgres/adapter.js +678 -0
- package/dist/esm/postgres/adapter.js.map +1 -0
- package/dist/esm/postgres/index.js +27 -0
- package/dist/esm/postgres/index.js.map +1 -0
- package/dist/esm/postgres/serializers.js +362 -0
- package/dist/esm/postgres/serializers.js.map +1 -0
- package/dist/esm/postgres/sync.js +217 -0
- package/dist/esm/postgres/sync.js.map +1 -0
- package/dist/esm/postgres/types.js +41 -0
- package/dist/esm/postgres/types.js.map +1 -0
- package/dist/esm/registries/builder.js +410 -0
- package/dist/esm/registries/builder.js.map +1 -0
- package/dist/esm/registries/discovery.js +358 -0
- package/dist/esm/registries/discovery.js.map +1 -0
- package/dist/esm/registries/index.js +44 -0
- package/dist/esm/registries/index.js.map +1 -0
- package/dist/esm/registries/session.js +429 -0
- package/dist/esm/registries/session.js.map +1 -0
- package/dist/esm/registries/x402.js +573 -0
- package/dist/esm/registries/x402.js.map +1 -0
- package/dist/esm/types/accounts.js +12 -0
- package/dist/esm/types/accounts.js.map +1 -0
- package/dist/esm/types/common.js +12 -0
- package/dist/esm/types/common.js.map +1 -0
- package/dist/esm/types/enums.js +171 -0
- package/dist/esm/types/enums.js.map +1 -0
- package/dist/esm/types/index.js +25 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/instructions.js +89 -0
- package/dist/esm/types/instructions.js.map +1 -0
- package/dist/esm/utils/hash.js +53 -0
- package/dist/esm/utils/hash.js.map +1 -0
- package/dist/esm/utils/index.js +19 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/serialization.js +98 -0
- package/dist/esm/utils/serialization.js.map +1 -0
- package/dist/esm/utils/validation.js +33 -0
- package/dist/esm/utils/validation.js.map +1 -0
- package/dist/types/constants/index.d.ts +27 -0
- package/dist/types/constants/index.d.ts.map +1 -0
- package/dist/types/constants/limits.d.ts +149 -0
- package/dist/types/constants/limits.d.ts.map +1 -0
- package/dist/types/constants/programs.d.ts +69 -0
- package/dist/types/constants/programs.d.ts.map +1 -0
- package/dist/types/constants/seeds.d.ts +61 -0
- package/dist/types/constants/seeds.d.ts.map +1 -0
- package/dist/types/core/client.d.ts +323 -0
- package/dist/types/core/client.d.ts.map +1 -0
- package/dist/types/core/connection.d.ts +279 -0
- package/dist/types/core/connection.d.ts.map +1 -0
- package/dist/types/core/index.d.ts +20 -0
- package/dist/types/core/index.d.ts.map +1 -0
- package/dist/types/errors/index.d.ts +276 -0
- package/dist/types/errors/index.d.ts.map +1 -0
- package/dist/types/events/index.d.ts +248 -0
- package/dist/types/events/index.d.ts.map +1 -0
- package/dist/types/idl/index.d.ts +70 -0
- package/dist/types/idl/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +68 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/modules/agent.d.ts +166 -0
- package/dist/types/modules/agent.d.ts.map +1 -0
- package/dist/types/modules/attestation.d.ts +96 -0
- package/dist/types/modules/attestation.d.ts.map +1 -0
- package/dist/types/modules/base.d.ts +126 -0
- package/dist/types/modules/base.d.ts.map +1 -0
- package/dist/types/modules/escrow.d.ts +151 -0
- package/dist/types/modules/escrow.d.ts.map +1 -0
- package/dist/types/modules/feedback.d.ts +105 -0
- package/dist/types/modules/feedback.d.ts.map +1 -0
- package/dist/types/modules/index.d.ts +24 -0
- package/dist/types/modules/index.d.ts.map +1 -0
- package/dist/types/modules/indexing.d.ts +200 -0
- package/dist/types/modules/indexing.d.ts.map +1 -0
- package/dist/types/modules/ledger.d.ts +150 -0
- package/dist/types/modules/ledger.d.ts.map +1 -0
- package/dist/types/modules/tools.d.ts +182 -0
- package/dist/types/modules/tools.d.ts.map +1 -0
- package/dist/types/modules/vault.d.ts +240 -0
- package/dist/types/modules/vault.d.ts.map +1 -0
- package/dist/types/pda/index.d.ts +296 -0
- package/dist/types/pda/index.d.ts.map +1 -0
- package/dist/types/plugin/index.d.ts +171 -0
- package/dist/types/plugin/index.d.ts.map +1 -0
- package/dist/types/plugin/protocols.d.ts +152 -0
- package/dist/types/plugin/protocols.d.ts.map +1 -0
- package/dist/types/plugin/schemas.d.ts +823 -0
- package/dist/types/plugin/schemas.d.ts.map +1 -0
- package/dist/types/postgres/adapter.d.ts +355 -0
- package/dist/types/postgres/adapter.d.ts.map +1 -0
- package/dist/types/postgres/index.d.ts +24 -0
- package/dist/types/postgres/index.d.ts.map +1 -0
- package/dist/types/postgres/serializers.d.ts +30 -0
- package/dist/types/postgres/serializers.d.ts.map +1 -0
- package/dist/types/postgres/sync.d.ts +132 -0
- package/dist/types/postgres/sync.d.ts.map +1 -0
- package/dist/types/postgres/types.d.ts +167 -0
- package/dist/types/postgres/types.d.ts.map +1 -0
- package/dist/types/registries/builder.d.ts +340 -0
- package/dist/types/registries/builder.d.ts.map +1 -0
- package/dist/types/registries/discovery.d.ts +333 -0
- package/dist/types/registries/discovery.d.ts.map +1 -0
- package/dist/types/registries/index.d.ts +48 -0
- package/dist/types/registries/index.d.ts.map +1 -0
- package/dist/types/registries/session.d.ts +323 -0
- package/dist/types/registries/session.d.ts.map +1 -0
- package/dist/types/registries/x402.d.ts +463 -0
- package/dist/types/registries/x402.d.ts.map +1 -0
- package/dist/types/types/accounts.d.ts +565 -0
- package/dist/types/types/accounts.d.ts.map +1 -0
- package/dist/types/types/common.d.ts +166 -0
- package/dist/types/types/common.d.ts.map +1 -0
- package/dist/types/types/enums.d.ts +238 -0
- package/dist/types/types/enums.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +28 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/types/instructions.d.ts +366 -0
- package/dist/types/types/instructions.d.ts.map +1 -0
- package/dist/types/utils/hash.d.ts +48 -0
- package/dist/types/utils/hash.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +19 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/serialization.d.ts +69 -0
- package/dist/types/utils/serialization.d.ts.map +1 -0
- package/dist/types/utils/validation.d.ts +29 -0
- package/dist/types/utils/validation.d.ts.map +1 -0
- package/package.json +178 -0
- package/src/constants/index.ts +44 -0
- package/src/constants/limits.ts +165 -0
- package/src/constants/programs.ts +83 -0
- package/src/constants/seeds.ts +66 -0
- package/src/core/client.ts +416 -0
- package/src/core/connection.ts +409 -0
- package/src/core/index.ts +20 -0
- package/src/errors/index.ts +346 -0
- package/src/events/index.ts +335 -0
- package/src/idl/index.ts +76 -0
- package/src/idl/synapse_agent_sap.json +9710 -0
- package/src/index.ts +253 -0
- package/src/modules/agent.ts +319 -0
- package/src/modules/attestation.ts +168 -0
- package/src/modules/base.ts +158 -0
- package/src/modules/escrow.ts +308 -0
- package/src/modules/feedback.ts +186 -0
- package/src/modules/index.ts +24 -0
- package/src/modules/indexing.ts +444 -0
- package/src/modules/ledger.ts +262 -0
- package/src/modules/tools.ts +411 -0
- package/src/modules/vault.ts +533 -0
- package/src/pda/index.ts +512 -0
- package/src/plugin/index.ts +1202 -0
- package/src/plugin/protocols.ts +404 -0
- package/src/plugin/schemas.ts +909 -0
- package/src/postgres/adapter.ts +904 -0
- package/src/postgres/index.ts +59 -0
- package/src/postgres/schema.sql +683 -0
- package/src/postgres/serializers.ts +485 -0
- package/src/postgres/sync.ts +254 -0
- package/src/postgres/types.ts +245 -0
- package/src/registries/builder.ts +607 -0
- package/src/registries/discovery.ts +572 -0
- package/src/registries/index.ts +77 -0
- package/src/registries/session.ts +613 -0
- package/src/registries/x402.ts +906 -0
- package/src/types/accounts.ts +618 -0
- package/src/types/common.ts +187 -0
- package/src/types/enums.ts +214 -0
- package/src/types/index.ts +92 -0
- package/src/types/instructions.ts +413 -0
- package/src/utils/hash.ts +57 -0
- package/src/utils/index.ts +19 -0
- package/src/utils/serialization.ts +98 -0
- 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
|
+
}
|