@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
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module registries/session
|
|
3
|
+
* @description Unified session lifecycle manager.
|
|
4
|
+
*
|
|
5
|
+
* Wraps the vault + ledger modules into a single cohesive API
|
|
6
|
+
* that manages the full memory session lifecycle:
|
|
7
|
+
* 1. Ensure vault exists (create if needed)
|
|
8
|
+
* 2. Open a named session
|
|
9
|
+
* 3. Initialize a ledger for the session
|
|
10
|
+
* 4. Write data (ring buffer + TX log)
|
|
11
|
+
* 5. Read latest entries from ring buffer
|
|
12
|
+
* 6. Seal the ring buffer into permanent archive pages
|
|
13
|
+
* 7. Close ledger + session when done
|
|
14
|
+
*
|
|
15
|
+
* This is the RECOMMENDED way to manage agent memory.
|
|
16
|
+
*
|
|
17
|
+
* @category Registries
|
|
18
|
+
* @since v0.1.0
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* const session = client.session;
|
|
23
|
+
*
|
|
24
|
+
* // Start a new conversation session
|
|
25
|
+
* const ctx = await session.start("conversation-123");
|
|
26
|
+
*
|
|
27
|
+
* // Write messages
|
|
28
|
+
* await session.write(ctx, "Hello from the agent");
|
|
29
|
+
* await session.write(ctx, "Processing your request...");
|
|
30
|
+
*
|
|
31
|
+
* // Read latest messages from ring buffer
|
|
32
|
+
* const messages = await session.readLatest(ctx);
|
|
33
|
+
*
|
|
34
|
+
* // Seal into permanent archive
|
|
35
|
+
* await session.seal(ctx);
|
|
36
|
+
*
|
|
37
|
+
* // Close when done
|
|
38
|
+
* await session.close(ctx);
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
import { type PublicKey, type TransactionSignature } from "@solana/web3.js";
|
|
42
|
+
import type { SapProgram } from "../modules/base";
|
|
43
|
+
/**
|
|
44
|
+
* @interface SessionContext
|
|
45
|
+
* @name SessionContext
|
|
46
|
+
* @description Resolved session context with all derived PDAs.
|
|
47
|
+
* Created by {@link SessionManager.deriveContext} or {@link SessionManager.start}.
|
|
48
|
+
* Contains the human-readable session ID, SHA-256 hash, and all
|
|
49
|
+
* PDA addresses needed for session operations.
|
|
50
|
+
* @category Registries
|
|
51
|
+
* @since v0.1.0
|
|
52
|
+
*/
|
|
53
|
+
export interface SessionContext {
|
|
54
|
+
/** Human-readable session identifier. */
|
|
55
|
+
readonly sessionId: string;
|
|
56
|
+
/** SHA-256 of the session ID. */
|
|
57
|
+
readonly sessionHash: Uint8Array;
|
|
58
|
+
/** Session hash as number[] for instruction args. */
|
|
59
|
+
readonly sessionHashArray: number[];
|
|
60
|
+
/** Agent PDA. */
|
|
61
|
+
readonly agentPda: PublicKey;
|
|
62
|
+
/** Memory vault PDA. */
|
|
63
|
+
readonly vaultPda: PublicKey;
|
|
64
|
+
/** Session ledger PDA. */
|
|
65
|
+
readonly sessionPda: PublicKey;
|
|
66
|
+
/** Memory ledger PDA (unified ring buffer). */
|
|
67
|
+
readonly ledgerPda: PublicKey;
|
|
68
|
+
/** Wallet public key. */
|
|
69
|
+
readonly wallet: PublicKey;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* @interface WriteResult
|
|
73
|
+
* @name WriteResult
|
|
74
|
+
* @description Result of writing data to a session via {@link SessionManager.write}.
|
|
75
|
+
* Contains the transaction signature, content hash, and data size.
|
|
76
|
+
* @category Registries
|
|
77
|
+
* @since v0.1.0
|
|
78
|
+
*/
|
|
79
|
+
export interface WriteResult {
|
|
80
|
+
/** Transaction signature. */
|
|
81
|
+
readonly txSignature: TransactionSignature;
|
|
82
|
+
/** Content hash of the written data. */
|
|
83
|
+
readonly contentHash: number[];
|
|
84
|
+
/** Data size in bytes. */
|
|
85
|
+
readonly dataSize: number;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* @interface SealResult
|
|
89
|
+
* @name SealResult
|
|
90
|
+
* @description Result of sealing the ring buffer into a permanent archive page
|
|
91
|
+
* via {@link SessionManager.seal}.
|
|
92
|
+
* @category Registries
|
|
93
|
+
* @since v0.1.0
|
|
94
|
+
*/
|
|
95
|
+
export interface SealResult {
|
|
96
|
+
/** Transaction signature. */
|
|
97
|
+
readonly txSignature: TransactionSignature;
|
|
98
|
+
/** Page index of the sealed archive. */
|
|
99
|
+
readonly pageIndex: number;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* @interface RingBufferEntry
|
|
103
|
+
* @name RingBufferEntry
|
|
104
|
+
* @description Decoded ring buffer entry from the on-chain memory ledger.
|
|
105
|
+
* Contains raw bytes, UTF-8 text representation, and byte size.
|
|
106
|
+
* @category Registries
|
|
107
|
+
* @since v0.1.0
|
|
108
|
+
*/
|
|
109
|
+
export interface RingBufferEntry {
|
|
110
|
+
/** Raw data bytes. */
|
|
111
|
+
readonly data: Uint8Array;
|
|
112
|
+
/** Data decoded as UTF-8 string (if applicable). */
|
|
113
|
+
readonly text: string;
|
|
114
|
+
/** Size in bytes. */
|
|
115
|
+
readonly size: number;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* @interface SessionStatus
|
|
119
|
+
* @name SessionStatus
|
|
120
|
+
* @description Full session status including vault, session, and ledger state.
|
|
121
|
+
* Returned by {@link SessionManager.getStatus}.
|
|
122
|
+
* @category Registries
|
|
123
|
+
* @since v0.1.0
|
|
124
|
+
*/
|
|
125
|
+
export interface SessionStatus {
|
|
126
|
+
/** Whether the vault exists. */
|
|
127
|
+
readonly vaultExists: boolean;
|
|
128
|
+
/** Whether the session exists. */
|
|
129
|
+
readonly sessionExists: boolean;
|
|
130
|
+
/** Whether the ledger exists. */
|
|
131
|
+
readonly ledgerExists: boolean;
|
|
132
|
+
/** Whether the session is closed. */
|
|
133
|
+
readonly isClosed: boolean;
|
|
134
|
+
/** Total entries written to the ledger. */
|
|
135
|
+
readonly totalEntries: number;
|
|
136
|
+
/** Total data size in bytes. */
|
|
137
|
+
readonly totalDataSize: string;
|
|
138
|
+
/** Number of sealed archive pages. */
|
|
139
|
+
readonly numPages: number;
|
|
140
|
+
/** Merkle root hex string. */
|
|
141
|
+
readonly merkleRoot: string;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* @name SessionManager
|
|
145
|
+
* @description Unified session lifecycle manager for agent memory.
|
|
146
|
+
*
|
|
147
|
+
* Wraps vault + ledger modules into a single API that manages
|
|
148
|
+
* the full memory session lifecycle: create vault, open session,
|
|
149
|
+
* write data, read ring buffer, seal archives, and close sessions.
|
|
150
|
+
*
|
|
151
|
+
* @category Registries
|
|
152
|
+
* @since v0.1.0
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```ts
|
|
156
|
+
* const session = client.session;
|
|
157
|
+
* const ctx = await session.start("conversation-123");
|
|
158
|
+
* await session.write(ctx, "Hello from the agent");
|
|
159
|
+
* const entries = await session.readLatest(ctx);
|
|
160
|
+
* await session.seal(ctx);
|
|
161
|
+
* await session.close(ctx);
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
export declare class SessionManager {
|
|
165
|
+
private readonly program;
|
|
166
|
+
private readonly wallet;
|
|
167
|
+
constructor(program: SapProgram);
|
|
168
|
+
/**
|
|
169
|
+
* @name deriveContext
|
|
170
|
+
* @description Derive all PDAs for a session without creating anything.
|
|
171
|
+
* Pure computation — no network calls.
|
|
172
|
+
*
|
|
173
|
+
* @param sessionId - Human-readable session identifier (hashed for PDA derivation).
|
|
174
|
+
* @returns A {@link SessionContext} with all resolved PDAs.
|
|
175
|
+
* @since v0.1.0
|
|
176
|
+
*/
|
|
177
|
+
deriveContext(sessionId: string): SessionContext;
|
|
178
|
+
/**
|
|
179
|
+
* @name start
|
|
180
|
+
* @description Start a new session: ensures vault exists, opens session,
|
|
181
|
+
* and initializes a ledger. Idempotent — skips any step
|
|
182
|
+
* that’s already done.
|
|
183
|
+
*
|
|
184
|
+
* @param sessionId - Human-readable session name (hashed for PDA).
|
|
185
|
+
* @param vaultNonce - Optional 32-byte nonce for vault init (only used if vault doesn’t exist).
|
|
186
|
+
* @returns A {@link SessionContext} with all resolved PDAs.
|
|
187
|
+
* @since v0.1.0
|
|
188
|
+
*/
|
|
189
|
+
start(sessionId: string, vaultNonce?: number[]): Promise<SessionContext>;
|
|
190
|
+
/**
|
|
191
|
+
* @name write
|
|
192
|
+
* @description Write data to a session (ring buffer + permanent TX log).
|
|
193
|
+
* Cost: TX fee only (~0.000005 SOL per write).
|
|
194
|
+
*
|
|
195
|
+
* @param ctx - Session context from {@link SessionManager.start} or {@link SessionManager.deriveContext}.
|
|
196
|
+
* @param data - UTF-8 string or raw bytes to write.
|
|
197
|
+
* @returns A {@link WriteResult} with the transaction signature, content hash, and data size.
|
|
198
|
+
* @since v0.1.0
|
|
199
|
+
*/
|
|
200
|
+
write(ctx: SessionContext, data: string | Buffer | Uint8Array): Promise<WriteResult>;
|
|
201
|
+
/**
|
|
202
|
+
* @name readLatest
|
|
203
|
+
* @description Read the latest entries from the ring buffer.
|
|
204
|
+
* FREE — uses `getAccountInfo()` on any RPC (no archival needed).
|
|
205
|
+
*
|
|
206
|
+
* @param ctx - Session context.
|
|
207
|
+
* @returns An array of {@link RingBufferEntry} from the current ring buffer.
|
|
208
|
+
* @since v0.1.0
|
|
209
|
+
*/
|
|
210
|
+
readLatest(ctx: SessionContext): Promise<RingBufferEntry[]>;
|
|
211
|
+
/**
|
|
212
|
+
* @name seal
|
|
213
|
+
* @description Seal the ring buffer into a permanent LedgerPage.
|
|
214
|
+
* Creates a write-once, never-delete archive (~0.031 SOL per page).
|
|
215
|
+
*
|
|
216
|
+
* @param ctx - Session context.
|
|
217
|
+
* @returns A {@link SealResult} with the transaction signature and page index.
|
|
218
|
+
* @since v0.1.0
|
|
219
|
+
*/
|
|
220
|
+
seal(ctx: SessionContext): Promise<SealResult>;
|
|
221
|
+
/**
|
|
222
|
+
* @name closeLedger
|
|
223
|
+
* @description Close the ledger and reclaim ~0.032 SOL rent.
|
|
224
|
+
*
|
|
225
|
+
* @param ctx - Session context.
|
|
226
|
+
* @returns The transaction signature.
|
|
227
|
+
* @since v0.1.0
|
|
228
|
+
*/
|
|
229
|
+
closeLedger(ctx: SessionContext): Promise<TransactionSignature>;
|
|
230
|
+
/**
|
|
231
|
+
* @name closeSession
|
|
232
|
+
* @description Close the session (no more writes allowed).
|
|
233
|
+
*
|
|
234
|
+
* @param ctx - Session context.
|
|
235
|
+
* @returns The transaction signature.
|
|
236
|
+
* @since v0.1.0
|
|
237
|
+
*/
|
|
238
|
+
closeSession(ctx: SessionContext): Promise<TransactionSignature>;
|
|
239
|
+
/**
|
|
240
|
+
* @name close
|
|
241
|
+
* @description Full session teardown: close ledger → close session.
|
|
242
|
+
* Reclaims all rent. Idempotent — skips steps already done.
|
|
243
|
+
*
|
|
244
|
+
* @param ctx - Session context.
|
|
245
|
+
* @returns Resolves when the session is fully closed.
|
|
246
|
+
* @since v0.1.0
|
|
247
|
+
*/
|
|
248
|
+
close(ctx: SessionContext): Promise<void>;
|
|
249
|
+
/**
|
|
250
|
+
* @name getStatus
|
|
251
|
+
* @description Get the full status of a session.
|
|
252
|
+
* Returns vault/session/ledger existence, closure state, and metrics.
|
|
253
|
+
*
|
|
254
|
+
* @param ctx - Session context.
|
|
255
|
+
* @returns A {@link SessionStatus} with all session state information.
|
|
256
|
+
* @since v0.1.0
|
|
257
|
+
*/
|
|
258
|
+
getStatus(ctx: SessionContext): Promise<SessionStatus>;
|
|
259
|
+
/**
|
|
260
|
+
* @name readPage
|
|
261
|
+
* @description Read a sealed archive page by index.
|
|
262
|
+
*
|
|
263
|
+
* @param ctx - Session context.
|
|
264
|
+
* @param pageIndex - Zero-based index of the sealed page.
|
|
265
|
+
* @returns An array of {@link RingBufferEntry} from the sealed page.
|
|
266
|
+
* @since v0.1.0
|
|
267
|
+
*/
|
|
268
|
+
readPage(ctx: SessionContext, pageIndex: number): Promise<RingBufferEntry[]>;
|
|
269
|
+
/**
|
|
270
|
+
* @name readAll
|
|
271
|
+
* @description Read ALL data: ring buffer (latest) + all sealed pages (history).
|
|
272
|
+
* Returns entries in chronological order (oldest first).
|
|
273
|
+
*
|
|
274
|
+
* @param ctx - Session context.
|
|
275
|
+
* @returns An array of all {@link RingBufferEntry} in chronological order.
|
|
276
|
+
* @since v0.1.0
|
|
277
|
+
*/
|
|
278
|
+
readAll(ctx: SessionContext): Promise<RingBufferEntry[]>;
|
|
279
|
+
/**
|
|
280
|
+
* @name decodeRingBuffer
|
|
281
|
+
* @description Decode a raw ring buffer byte array into structured entries.
|
|
282
|
+
* Parses length-prefixed (u16 LE) entries from the byte stream.
|
|
283
|
+
* @param ring - Raw ring buffer bytes.
|
|
284
|
+
* @returns An array of decoded {@link RingBufferEntry}.
|
|
285
|
+
* @private
|
|
286
|
+
*/
|
|
287
|
+
private decodeRingBuffer;
|
|
288
|
+
/**
|
|
289
|
+
* @name accountExists
|
|
290
|
+
* @description Check if an on-chain account exists at the given PDA.
|
|
291
|
+
* @param pda - Account public key to check.
|
|
292
|
+
* @returns `true` if the account exists, `false` otherwise.
|
|
293
|
+
* @private
|
|
294
|
+
*/
|
|
295
|
+
private accountExists;
|
|
296
|
+
/**
|
|
297
|
+
* @name methods
|
|
298
|
+
* @description Accessor for the Anchor program methods namespace.
|
|
299
|
+
* @returns The program methods object for building RPC calls.
|
|
300
|
+
* @private
|
|
301
|
+
*/
|
|
302
|
+
private get methods();
|
|
303
|
+
/**
|
|
304
|
+
* @name fetch
|
|
305
|
+
* @description Fetch an on-chain account by name and PDA. Throws if not found.
|
|
306
|
+
* @param name - Anchor account discriminator name.
|
|
307
|
+
* @param pda - Account public key to fetch.
|
|
308
|
+
* @returns The deserialized account data.
|
|
309
|
+
* @throws If the account does not exist.
|
|
310
|
+
* @private
|
|
311
|
+
*/
|
|
312
|
+
private fetch;
|
|
313
|
+
/**
|
|
314
|
+
* @name fetchNullable
|
|
315
|
+
* @description Fetch an on-chain account by name and PDA. Returns `null` if not found.
|
|
316
|
+
* @param name - Anchor account discriminator name.
|
|
317
|
+
* @param pda - Account public key to fetch.
|
|
318
|
+
* @returns The deserialized account data, or `null` if the account does not exist.
|
|
319
|
+
* @private
|
|
320
|
+
*/
|
|
321
|
+
private fetchNullable;
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/registries/session.ts"],"names":[],"mappings":"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"}
|