@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,683 @@
|
|
|
1
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
2
|
+
-- SAP v2 — PostgreSQL Schema
|
|
3
|
+
-- Mirrors all 22 on-chain account types as relational tables.
|
|
4
|
+
--
|
|
5
|
+
-- Program ID: SAPTU7aUXk2AaAdktexae1iuxXpokxzNDBAYYhaVyQL
|
|
6
|
+
-- Generated from: synapse_agent_sap IDL (72 instructions, 22 accounts)
|
|
7
|
+
--
|
|
8
|
+
-- Usage:
|
|
9
|
+
-- psql -d your_database -f schema.sql
|
|
10
|
+
--
|
|
11
|
+
-- Every table includes:
|
|
12
|
+
-- - pda (TEXT PRIMARY KEY) — base58-encoded PDA address
|
|
13
|
+
-- - slot (BIGINT) — Solana slot at which the record was synced
|
|
14
|
+
-- - synced_at (TIMESTAMPTZ) — wall-clock time of sync
|
|
15
|
+
-- - raw_data (JSONB) — full deserialized account data (escape hatch)
|
|
16
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
17
|
+
|
|
18
|
+
-- ── Enum Types ──────────────────────────────────────
|
|
19
|
+
|
|
20
|
+
CREATE TYPE sap_token_type AS ENUM ('sol', 'usdc', 'spl');
|
|
21
|
+
CREATE TYPE sap_settlement_mode AS ENUM ('instant', 'escrow', 'batched', 'x402');
|
|
22
|
+
CREATE TYPE sap_tool_http_method AS ENUM ('get', 'post', 'put', 'delete', 'compound');
|
|
23
|
+
CREATE TYPE sap_tool_category AS ENUM (
|
|
24
|
+
'swap', 'lend', 'stake', 'nft', 'payment',
|
|
25
|
+
'data', 'governance', 'bridge', 'analytics', 'custom'
|
|
26
|
+
);
|
|
27
|
+
CREATE TYPE sap_plugin_type AS ENUM (
|
|
28
|
+
'memory', 'validation', 'delegation',
|
|
29
|
+
'analytics', 'governance', 'custom'
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
33
|
+
-- 1. Global Registry (singleton)
|
|
34
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
35
|
+
|
|
36
|
+
CREATE TABLE IF NOT EXISTS sap_global_registry (
|
|
37
|
+
pda TEXT PRIMARY KEY,
|
|
38
|
+
bump SMALLINT NOT NULL,
|
|
39
|
+
total_agents BIGINT NOT NULL DEFAULT 0,
|
|
40
|
+
active_agents BIGINT NOT NULL DEFAULT 0,
|
|
41
|
+
total_feedbacks BIGINT NOT NULL DEFAULT 0,
|
|
42
|
+
total_capabilities INTEGER NOT NULL DEFAULT 0,
|
|
43
|
+
total_protocols INTEGER NOT NULL DEFAULT 0,
|
|
44
|
+
last_registered_at BIGINT, -- unix timestamp
|
|
45
|
+
initialized_at BIGINT NOT NULL,
|
|
46
|
+
authority TEXT NOT NULL, -- base58 pubkey
|
|
47
|
+
total_tools INTEGER NOT NULL DEFAULT 0,
|
|
48
|
+
total_vaults INTEGER NOT NULL DEFAULT 0,
|
|
49
|
+
total_escrows INTEGER NOT NULL DEFAULT 0,
|
|
50
|
+
total_attestations INTEGER NOT NULL DEFAULT 0,
|
|
51
|
+
-- sync metadata
|
|
52
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
53
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
54
|
+
raw_data JSONB
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
58
|
+
-- 2. Agent Account
|
|
59
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
60
|
+
|
|
61
|
+
CREATE TABLE IF NOT EXISTS sap_agents (
|
|
62
|
+
pda TEXT PRIMARY KEY,
|
|
63
|
+
bump SMALLINT NOT NULL,
|
|
64
|
+
version SMALLINT NOT NULL DEFAULT 1,
|
|
65
|
+
wallet TEXT NOT NULL, -- owner wallet (base58)
|
|
66
|
+
name VARCHAR(64) NOT NULL,
|
|
67
|
+
description VARCHAR(256) NOT NULL,
|
|
68
|
+
agent_id VARCHAR(128),
|
|
69
|
+
agent_uri VARCHAR(256),
|
|
70
|
+
x402_endpoint VARCHAR(256),
|
|
71
|
+
is_active BOOLEAN NOT NULL DEFAULT true,
|
|
72
|
+
created_at BIGINT NOT NULL,
|
|
73
|
+
updated_at BIGINT NOT NULL,
|
|
74
|
+
reputation_score SMALLINT NOT NULL DEFAULT 0,
|
|
75
|
+
total_feedbacks INTEGER NOT NULL DEFAULT 0,
|
|
76
|
+
reputation_sum BIGINT NOT NULL DEFAULT 0,
|
|
77
|
+
total_calls_served BIGINT NOT NULL DEFAULT 0,
|
|
78
|
+
avg_latency_ms INTEGER NOT NULL DEFAULT 0,
|
|
79
|
+
uptime_percent SMALLINT NOT NULL DEFAULT 0,
|
|
80
|
+
capabilities JSONB NOT NULL DEFAULT '[]',
|
|
81
|
+
pricing JSONB NOT NULL DEFAULT '[]',
|
|
82
|
+
protocols TEXT[] NOT NULL DEFAULT '{}',
|
|
83
|
+
active_plugins JSONB NOT NULL DEFAULT '[]',
|
|
84
|
+
-- sync metadata
|
|
85
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
86
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
87
|
+
raw_data JSONB
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
CREATE INDEX IF NOT EXISTS idx_sap_agents_wallet ON sap_agents (wallet);
|
|
91
|
+
CREATE INDEX IF NOT EXISTS idx_sap_agents_active ON sap_agents (is_active) WHERE is_active = true;
|
|
92
|
+
CREATE INDEX IF NOT EXISTS idx_sap_agents_name ON sap_agents (name);
|
|
93
|
+
|
|
94
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
95
|
+
-- 3. Agent Stats (hot-path metrics)
|
|
96
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
97
|
+
|
|
98
|
+
CREATE TABLE IF NOT EXISTS sap_agent_stats (
|
|
99
|
+
pda TEXT PRIMARY KEY,
|
|
100
|
+
bump SMALLINT NOT NULL,
|
|
101
|
+
agent TEXT NOT NULL REFERENCES sap_agents(pda) ON DELETE CASCADE,
|
|
102
|
+
wallet TEXT NOT NULL,
|
|
103
|
+
total_calls_served BIGINT NOT NULL DEFAULT 0,
|
|
104
|
+
is_active BOOLEAN NOT NULL DEFAULT true,
|
|
105
|
+
updated_at BIGINT NOT NULL,
|
|
106
|
+
-- sync metadata
|
|
107
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
108
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
109
|
+
raw_data JSONB
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
CREATE INDEX IF NOT EXISTS idx_sap_agent_stats_agent ON sap_agent_stats (agent);
|
|
113
|
+
|
|
114
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
115
|
+
-- 4. Feedback Account
|
|
116
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
117
|
+
|
|
118
|
+
CREATE TABLE IF NOT EXISTS sap_feedbacks (
|
|
119
|
+
pda TEXT PRIMARY KEY,
|
|
120
|
+
bump SMALLINT NOT NULL,
|
|
121
|
+
agent TEXT NOT NULL, -- agent PDA
|
|
122
|
+
reviewer TEXT NOT NULL, -- reviewer wallet (base58)
|
|
123
|
+
score SMALLINT NOT NULL CHECK (score BETWEEN 0 AND 1000),
|
|
124
|
+
tag VARCHAR(64) NOT NULL,
|
|
125
|
+
comment_hash BYTEA, -- 32 bytes, nullable
|
|
126
|
+
created_at BIGINT NOT NULL,
|
|
127
|
+
updated_at BIGINT NOT NULL,
|
|
128
|
+
is_revoked BOOLEAN NOT NULL DEFAULT false,
|
|
129
|
+
-- sync metadata
|
|
130
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
131
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
132
|
+
raw_data JSONB
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
CREATE INDEX IF NOT EXISTS idx_sap_feedbacks_agent ON sap_feedbacks (agent);
|
|
136
|
+
CREATE INDEX IF NOT EXISTS idx_sap_feedbacks_reviewer ON sap_feedbacks (reviewer);
|
|
137
|
+
|
|
138
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
139
|
+
-- 5. Capability Index
|
|
140
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
141
|
+
|
|
142
|
+
CREATE TABLE IF NOT EXISTS sap_capability_indexes (
|
|
143
|
+
pda TEXT PRIMARY KEY,
|
|
144
|
+
bump SMALLINT NOT NULL,
|
|
145
|
+
capability_id VARCHAR(128) NOT NULL,
|
|
146
|
+
capability_hash BYTEA NOT NULL, -- 32 bytes
|
|
147
|
+
agents TEXT[] NOT NULL DEFAULT '{}',
|
|
148
|
+
total_pages INTEGER NOT NULL DEFAULT 0,
|
|
149
|
+
last_updated BIGINT NOT NULL,
|
|
150
|
+
-- sync metadata
|
|
151
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
152
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
153
|
+
raw_data JSONB
|
|
154
|
+
);
|
|
155
|
+
|
|
156
|
+
CREATE INDEX IF NOT EXISTS idx_sap_cap_idx_id ON sap_capability_indexes (capability_id);
|
|
157
|
+
|
|
158
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
159
|
+
-- 6. Protocol Index
|
|
160
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
161
|
+
|
|
162
|
+
CREATE TABLE IF NOT EXISTS sap_protocol_indexes (
|
|
163
|
+
pda TEXT PRIMARY KEY,
|
|
164
|
+
bump SMALLINT NOT NULL,
|
|
165
|
+
protocol_id VARCHAR(128) NOT NULL,
|
|
166
|
+
protocol_hash BYTEA NOT NULL, -- 32 bytes
|
|
167
|
+
agents TEXT[] NOT NULL DEFAULT '{}',
|
|
168
|
+
total_pages INTEGER NOT NULL DEFAULT 0,
|
|
169
|
+
last_updated BIGINT NOT NULL,
|
|
170
|
+
-- sync metadata
|
|
171
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
172
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
173
|
+
raw_data JSONB
|
|
174
|
+
);
|
|
175
|
+
|
|
176
|
+
CREATE INDEX IF NOT EXISTS idx_sap_proto_idx_id ON sap_protocol_indexes (protocol_id);
|
|
177
|
+
|
|
178
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
179
|
+
-- 7. Plugin Slot
|
|
180
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
181
|
+
|
|
182
|
+
CREATE TABLE IF NOT EXISTS sap_plugin_slots (
|
|
183
|
+
pda TEXT PRIMARY KEY,
|
|
184
|
+
bump SMALLINT NOT NULL,
|
|
185
|
+
agent TEXT NOT NULL,
|
|
186
|
+
plugin_type sap_plugin_type NOT NULL,
|
|
187
|
+
authority TEXT NOT NULL,
|
|
188
|
+
is_active BOOLEAN NOT NULL DEFAULT true,
|
|
189
|
+
created_at BIGINT NOT NULL,
|
|
190
|
+
updated_at BIGINT NOT NULL,
|
|
191
|
+
config_hash BYTEA, -- 32 bytes
|
|
192
|
+
-- sync metadata
|
|
193
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
194
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
195
|
+
raw_data JSONB
|
|
196
|
+
);
|
|
197
|
+
|
|
198
|
+
CREATE INDEX IF NOT EXISTS idx_sap_plugin_agent ON sap_plugin_slots (agent);
|
|
199
|
+
|
|
200
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
201
|
+
-- 8. Memory Entry (legacy)
|
|
202
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
203
|
+
|
|
204
|
+
CREATE TABLE IF NOT EXISTS sap_memory_entries (
|
|
205
|
+
pda TEXT PRIMARY KEY,
|
|
206
|
+
bump SMALLINT NOT NULL,
|
|
207
|
+
agent TEXT NOT NULL,
|
|
208
|
+
entry_hash BYTEA NOT NULL, -- 32 bytes
|
|
209
|
+
content_type VARCHAR(64),
|
|
210
|
+
total_chunks SMALLINT NOT NULL DEFAULT 0,
|
|
211
|
+
total_size BIGINT NOT NULL DEFAULT 0,
|
|
212
|
+
ipfs_cid VARCHAR(128),
|
|
213
|
+
created_at BIGINT NOT NULL,
|
|
214
|
+
-- sync metadata
|
|
215
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
216
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
217
|
+
raw_data JSONB
|
|
218
|
+
);
|
|
219
|
+
|
|
220
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
221
|
+
-- 9. Memory Chunk (legacy)
|
|
222
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
223
|
+
|
|
224
|
+
CREATE TABLE IF NOT EXISTS sap_memory_chunks (
|
|
225
|
+
pda TEXT PRIMARY KEY,
|
|
226
|
+
bump SMALLINT NOT NULL,
|
|
227
|
+
entry TEXT NOT NULL, -- memory entry PDA
|
|
228
|
+
chunk_index SMALLINT NOT NULL,
|
|
229
|
+
data BYTEA NOT NULL,
|
|
230
|
+
size INTEGER NOT NULL,
|
|
231
|
+
-- sync metadata
|
|
232
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
233
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
234
|
+
raw_data JSONB
|
|
235
|
+
);
|
|
236
|
+
|
|
237
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
238
|
+
-- 10. Memory Vault
|
|
239
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
240
|
+
|
|
241
|
+
CREATE TABLE IF NOT EXISTS sap_memory_vaults (
|
|
242
|
+
pda TEXT PRIMARY KEY,
|
|
243
|
+
bump SMALLINT NOT NULL,
|
|
244
|
+
agent TEXT NOT NULL,
|
|
245
|
+
wallet TEXT NOT NULL,
|
|
246
|
+
vault_nonce BYTEA NOT NULL, -- 32 bytes
|
|
247
|
+
total_sessions INTEGER NOT NULL DEFAULT 0,
|
|
248
|
+
total_inscriptions BIGINT NOT NULL DEFAULT 0,
|
|
249
|
+
total_bytes_inscribed BIGINT NOT NULL DEFAULT 0,
|
|
250
|
+
created_at BIGINT NOT NULL,
|
|
251
|
+
protocol_version SMALLINT NOT NULL DEFAULT 1,
|
|
252
|
+
nonce_version SMALLINT NOT NULL DEFAULT 0,
|
|
253
|
+
last_nonce_rotation BIGINT,
|
|
254
|
+
-- sync metadata
|
|
255
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
256
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
257
|
+
raw_data JSONB
|
|
258
|
+
);
|
|
259
|
+
|
|
260
|
+
CREATE INDEX IF NOT EXISTS idx_sap_vaults_agent ON sap_memory_vaults (agent);
|
|
261
|
+
|
|
262
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
263
|
+
-- 11. Session Ledger
|
|
264
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
265
|
+
|
|
266
|
+
CREATE TABLE IF NOT EXISTS sap_sessions (
|
|
267
|
+
pda TEXT PRIMARY KEY,
|
|
268
|
+
bump SMALLINT NOT NULL,
|
|
269
|
+
vault TEXT NOT NULL,
|
|
270
|
+
session_hash BYTEA NOT NULL, -- 32 bytes
|
|
271
|
+
sequence_counter INTEGER NOT NULL DEFAULT 0,
|
|
272
|
+
total_bytes BIGINT NOT NULL DEFAULT 0,
|
|
273
|
+
current_epoch INTEGER NOT NULL DEFAULT 0,
|
|
274
|
+
total_epochs INTEGER NOT NULL DEFAULT 0,
|
|
275
|
+
created_at BIGINT NOT NULL,
|
|
276
|
+
last_inscribed_at BIGINT,
|
|
277
|
+
is_closed BOOLEAN NOT NULL DEFAULT false,
|
|
278
|
+
merkle_root BYTEA NOT NULL, -- 32 bytes
|
|
279
|
+
total_checkpoints INTEGER NOT NULL DEFAULT 0,
|
|
280
|
+
tip_hash BYTEA NOT NULL, -- 32 bytes
|
|
281
|
+
-- sync metadata
|
|
282
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
283
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
284
|
+
raw_data JSONB
|
|
285
|
+
);
|
|
286
|
+
|
|
287
|
+
CREATE INDEX IF NOT EXISTS idx_sap_sessions_vault ON sap_sessions (vault);
|
|
288
|
+
|
|
289
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
290
|
+
-- 12. Epoch Page
|
|
291
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
292
|
+
|
|
293
|
+
CREATE TABLE IF NOT EXISTS sap_epoch_pages (
|
|
294
|
+
pda TEXT PRIMARY KEY,
|
|
295
|
+
bump SMALLINT NOT NULL,
|
|
296
|
+
session TEXT NOT NULL,
|
|
297
|
+
epoch_index INTEGER NOT NULL,
|
|
298
|
+
start_sequence INTEGER NOT NULL,
|
|
299
|
+
inscription_count INTEGER NOT NULL DEFAULT 0,
|
|
300
|
+
total_bytes INTEGER NOT NULL DEFAULT 0,
|
|
301
|
+
first_ts BIGINT NOT NULL,
|
|
302
|
+
last_ts BIGINT NOT NULL,
|
|
303
|
+
-- sync metadata
|
|
304
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
305
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
306
|
+
raw_data JSONB
|
|
307
|
+
);
|
|
308
|
+
|
|
309
|
+
CREATE INDEX IF NOT EXISTS idx_sap_epoch_session ON sap_epoch_pages (session);
|
|
310
|
+
|
|
311
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
312
|
+
-- 13. Vault Delegate
|
|
313
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
314
|
+
|
|
315
|
+
CREATE TABLE IF NOT EXISTS sap_vault_delegates (
|
|
316
|
+
pda TEXT PRIMARY KEY,
|
|
317
|
+
bump SMALLINT NOT NULL,
|
|
318
|
+
vault TEXT NOT NULL,
|
|
319
|
+
delegate TEXT NOT NULL, -- delegate wallet (base58)
|
|
320
|
+
permissions SMALLINT NOT NULL, -- bitmask
|
|
321
|
+
expires_at BIGINT NOT NULL,
|
|
322
|
+
created_at BIGINT NOT NULL,
|
|
323
|
+
-- sync metadata
|
|
324
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
325
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
326
|
+
raw_data JSONB
|
|
327
|
+
);
|
|
328
|
+
|
|
329
|
+
CREATE INDEX IF NOT EXISTS idx_sap_delegates_vault ON sap_vault_delegates (vault);
|
|
330
|
+
|
|
331
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
332
|
+
-- 14. Tool Descriptor
|
|
333
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
334
|
+
|
|
335
|
+
CREATE TABLE IF NOT EXISTS sap_tools (
|
|
336
|
+
pda TEXT PRIMARY KEY,
|
|
337
|
+
bump SMALLINT NOT NULL,
|
|
338
|
+
agent TEXT NOT NULL,
|
|
339
|
+
tool_name_hash BYTEA NOT NULL, -- 32 bytes
|
|
340
|
+
tool_name VARCHAR(32) NOT NULL,
|
|
341
|
+
protocol_hash BYTEA NOT NULL, -- 32 bytes
|
|
342
|
+
version SMALLINT NOT NULL DEFAULT 1,
|
|
343
|
+
description_hash BYTEA NOT NULL, -- 32 bytes
|
|
344
|
+
input_schema_hash BYTEA NOT NULL, -- 32 bytes
|
|
345
|
+
output_schema_hash BYTEA NOT NULL, -- 32 bytes
|
|
346
|
+
http_method sap_tool_http_method NOT NULL,
|
|
347
|
+
category sap_tool_category NOT NULL,
|
|
348
|
+
params_count SMALLINT NOT NULL,
|
|
349
|
+
required_params SMALLINT NOT NULL,
|
|
350
|
+
is_compound BOOLEAN NOT NULL DEFAULT false,
|
|
351
|
+
is_active BOOLEAN NOT NULL DEFAULT true,
|
|
352
|
+
total_invocations BIGINT NOT NULL DEFAULT 0,
|
|
353
|
+
created_at BIGINT NOT NULL,
|
|
354
|
+
updated_at BIGINT NOT NULL,
|
|
355
|
+
previous_version TEXT, -- previous tool PDA (null if first)
|
|
356
|
+
-- sync metadata
|
|
357
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
358
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
359
|
+
raw_data JSONB
|
|
360
|
+
);
|
|
361
|
+
|
|
362
|
+
CREATE INDEX IF NOT EXISTS idx_sap_tools_agent ON sap_tools (agent);
|
|
363
|
+
CREATE INDEX IF NOT EXISTS idx_sap_tools_name ON sap_tools (tool_name);
|
|
364
|
+
CREATE INDEX IF NOT EXISTS idx_sap_tools_category ON sap_tools (category);
|
|
365
|
+
|
|
366
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
367
|
+
-- 15. Session Checkpoint
|
|
368
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
369
|
+
|
|
370
|
+
CREATE TABLE IF NOT EXISTS sap_checkpoints (
|
|
371
|
+
pda TEXT PRIMARY KEY,
|
|
372
|
+
bump SMALLINT NOT NULL,
|
|
373
|
+
session TEXT NOT NULL,
|
|
374
|
+
checkpoint_index INTEGER NOT NULL,
|
|
375
|
+
merkle_root BYTEA NOT NULL, -- 32 bytes
|
|
376
|
+
sequence_at INTEGER NOT NULL,
|
|
377
|
+
epoch_at INTEGER NOT NULL,
|
|
378
|
+
total_bytes_at BIGINT NOT NULL,
|
|
379
|
+
inscriptions_at BIGINT NOT NULL,
|
|
380
|
+
created_at BIGINT NOT NULL,
|
|
381
|
+
-- sync metadata
|
|
382
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
383
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
384
|
+
raw_data JSONB
|
|
385
|
+
);
|
|
386
|
+
|
|
387
|
+
CREATE INDEX IF NOT EXISTS idx_sap_checkpoints_session ON sap_checkpoints (session);
|
|
388
|
+
|
|
389
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
390
|
+
-- 16. Escrow Account
|
|
391
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
392
|
+
|
|
393
|
+
CREATE TABLE IF NOT EXISTS sap_escrows (
|
|
394
|
+
pda TEXT PRIMARY KEY,
|
|
395
|
+
bump SMALLINT NOT NULL,
|
|
396
|
+
agent TEXT NOT NULL, -- agent PDA
|
|
397
|
+
depositor TEXT NOT NULL, -- depositor wallet (base58)
|
|
398
|
+
agent_wallet TEXT NOT NULL, -- agent wallet (base58)
|
|
399
|
+
balance BIGINT NOT NULL DEFAULT 0,
|
|
400
|
+
total_deposited BIGINT NOT NULL DEFAULT 0,
|
|
401
|
+
total_settled BIGINT NOT NULL DEFAULT 0,
|
|
402
|
+
total_calls_settled BIGINT NOT NULL DEFAULT 0,
|
|
403
|
+
price_per_call BIGINT NOT NULL,
|
|
404
|
+
max_calls BIGINT NOT NULL,
|
|
405
|
+
created_at BIGINT NOT NULL,
|
|
406
|
+
last_settled_at BIGINT,
|
|
407
|
+
expires_at BIGINT,
|
|
408
|
+
volume_curve JSONB NOT NULL DEFAULT '[]',
|
|
409
|
+
token_mint TEXT, -- base58, null for SOL
|
|
410
|
+
token_decimals SMALLINT NOT NULL DEFAULT 9,
|
|
411
|
+
-- sync metadata
|
|
412
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
413
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
414
|
+
raw_data JSONB
|
|
415
|
+
);
|
|
416
|
+
|
|
417
|
+
CREATE INDEX IF NOT EXISTS idx_sap_escrows_agent ON sap_escrows (agent);
|
|
418
|
+
CREATE INDEX IF NOT EXISTS idx_sap_escrows_depositor ON sap_escrows (depositor);
|
|
419
|
+
|
|
420
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
421
|
+
-- 17. Tool Category Index
|
|
422
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
423
|
+
|
|
424
|
+
CREATE TABLE IF NOT EXISTS sap_tool_category_indexes (
|
|
425
|
+
pda TEXT PRIMARY KEY,
|
|
426
|
+
bump SMALLINT NOT NULL,
|
|
427
|
+
category sap_tool_category NOT NULL,
|
|
428
|
+
tools TEXT[] NOT NULL DEFAULT '{}',
|
|
429
|
+
total_pages INTEGER NOT NULL DEFAULT 0,
|
|
430
|
+
last_updated BIGINT NOT NULL,
|
|
431
|
+
-- sync metadata
|
|
432
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
433
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
434
|
+
raw_data JSONB
|
|
435
|
+
);
|
|
436
|
+
|
|
437
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
438
|
+
-- 18. Agent Attestation
|
|
439
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
440
|
+
|
|
441
|
+
CREATE TABLE IF NOT EXISTS sap_attestations (
|
|
442
|
+
pda TEXT PRIMARY KEY,
|
|
443
|
+
bump SMALLINT NOT NULL,
|
|
444
|
+
agent TEXT NOT NULL, -- attested agent PDA
|
|
445
|
+
attester TEXT NOT NULL, -- attester wallet (base58)
|
|
446
|
+
attestation_type VARCHAR(64) NOT NULL,
|
|
447
|
+
metadata_hash BYTEA NOT NULL, -- 32 bytes
|
|
448
|
+
is_active BOOLEAN NOT NULL DEFAULT true,
|
|
449
|
+
expires_at BIGINT NOT NULL,
|
|
450
|
+
created_at BIGINT NOT NULL,
|
|
451
|
+
updated_at BIGINT NOT NULL,
|
|
452
|
+
-- sync metadata
|
|
453
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
454
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
455
|
+
raw_data JSONB
|
|
456
|
+
);
|
|
457
|
+
|
|
458
|
+
CREATE INDEX IF NOT EXISTS idx_sap_attestations_agent ON sap_attestations (agent);
|
|
459
|
+
CREATE INDEX IF NOT EXISTS idx_sap_attestations_attester ON sap_attestations (attester);
|
|
460
|
+
|
|
461
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
462
|
+
-- 19. Memory Buffer
|
|
463
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
464
|
+
|
|
465
|
+
CREATE TABLE IF NOT EXISTS sap_memory_buffers (
|
|
466
|
+
pda TEXT PRIMARY KEY,
|
|
467
|
+
bump SMALLINT NOT NULL,
|
|
468
|
+
session TEXT NOT NULL,
|
|
469
|
+
page_index INTEGER NOT NULL,
|
|
470
|
+
authority TEXT NOT NULL,
|
|
471
|
+
data_len INTEGER NOT NULL DEFAULT 0,
|
|
472
|
+
created_at BIGINT NOT NULL,
|
|
473
|
+
updated_at BIGINT NOT NULL,
|
|
474
|
+
data BYTEA,
|
|
475
|
+
-- sync metadata
|
|
476
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
477
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
478
|
+
raw_data JSONB
|
|
479
|
+
);
|
|
480
|
+
|
|
481
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
482
|
+
-- 20. Memory Digest
|
|
483
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
484
|
+
|
|
485
|
+
CREATE TABLE IF NOT EXISTS sap_memory_digests (
|
|
486
|
+
pda TEXT PRIMARY KEY,
|
|
487
|
+
bump SMALLINT NOT NULL,
|
|
488
|
+
session TEXT NOT NULL,
|
|
489
|
+
authority TEXT NOT NULL,
|
|
490
|
+
merkle_root BYTEA NOT NULL, -- 32 bytes
|
|
491
|
+
total_entries INTEGER NOT NULL DEFAULT 0,
|
|
492
|
+
total_data_size BIGINT NOT NULL DEFAULT 0,
|
|
493
|
+
latest_hash BYTEA NOT NULL, -- 32 bytes
|
|
494
|
+
storage_ref BYTEA, -- 32 bytes, nullable
|
|
495
|
+
storage_type SMALLINT,
|
|
496
|
+
created_at BIGINT NOT NULL,
|
|
497
|
+
updated_at BIGINT NOT NULL,
|
|
498
|
+
-- sync metadata
|
|
499
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
500
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
501
|
+
raw_data JSONB
|
|
502
|
+
);
|
|
503
|
+
|
|
504
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
505
|
+
-- 21. Memory Ledger (★ recommended)
|
|
506
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
507
|
+
|
|
508
|
+
CREATE TABLE IF NOT EXISTS sap_memory_ledgers (
|
|
509
|
+
pda TEXT PRIMARY KEY,
|
|
510
|
+
bump SMALLINT NOT NULL,
|
|
511
|
+
session TEXT NOT NULL,
|
|
512
|
+
authority TEXT NOT NULL,
|
|
513
|
+
num_entries INTEGER NOT NULL DEFAULT 0,
|
|
514
|
+
merkle_root BYTEA NOT NULL, -- 32 bytes
|
|
515
|
+
latest_hash BYTEA NOT NULL, -- 32 bytes
|
|
516
|
+
total_data_size BIGINT NOT NULL DEFAULT 0,
|
|
517
|
+
created_at BIGINT NOT NULL,
|
|
518
|
+
updated_at BIGINT NOT NULL,
|
|
519
|
+
num_pages INTEGER NOT NULL DEFAULT 0,
|
|
520
|
+
-- ring buffer stored as raw bytes (4096 max)
|
|
521
|
+
ring BYTEA,
|
|
522
|
+
-- sync metadata
|
|
523
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
524
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
525
|
+
raw_data JSONB
|
|
526
|
+
);
|
|
527
|
+
|
|
528
|
+
CREATE INDEX IF NOT EXISTS idx_sap_ledgers_session ON sap_memory_ledgers (session);
|
|
529
|
+
|
|
530
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
531
|
+
-- 22. Ledger Page (sealed, permanent)
|
|
532
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
533
|
+
|
|
534
|
+
CREATE TABLE IF NOT EXISTS sap_ledger_pages (
|
|
535
|
+
pda TEXT PRIMARY KEY,
|
|
536
|
+
bump SMALLINT NOT NULL,
|
|
537
|
+
ledger TEXT NOT NULL,
|
|
538
|
+
page_index INTEGER NOT NULL,
|
|
539
|
+
sealed_at BIGINT NOT NULL,
|
|
540
|
+
entries_in_page INTEGER NOT NULL,
|
|
541
|
+
data_size INTEGER NOT NULL,
|
|
542
|
+
merkle_root_at_seal BYTEA NOT NULL, -- 32 bytes
|
|
543
|
+
data BYTEA, -- archived ring buffer bytes
|
|
544
|
+
-- sync metadata
|
|
545
|
+
slot BIGINT NOT NULL DEFAULT 0,
|
|
546
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
547
|
+
raw_data JSONB
|
|
548
|
+
);
|
|
549
|
+
|
|
550
|
+
CREATE INDEX IF NOT EXISTS idx_sap_ledger_pages_ledger ON sap_ledger_pages (ledger);
|
|
551
|
+
|
|
552
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
553
|
+
-- Events Log (denormalized event store for audit trail)
|
|
554
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
555
|
+
|
|
556
|
+
CREATE TABLE IF NOT EXISTS sap_events (
|
|
557
|
+
id BIGSERIAL PRIMARY KEY,
|
|
558
|
+
event_name VARCHAR(64) NOT NULL,
|
|
559
|
+
tx_signature TEXT NOT NULL,
|
|
560
|
+
slot BIGINT NOT NULL,
|
|
561
|
+
block_time BIGINT,
|
|
562
|
+
data JSONB NOT NULL,
|
|
563
|
+
-- derived fields for fast queries
|
|
564
|
+
agent_pda TEXT,
|
|
565
|
+
wallet TEXT,
|
|
566
|
+
synced_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
567
|
+
);
|
|
568
|
+
|
|
569
|
+
CREATE INDEX IF NOT EXISTS idx_sap_events_name ON sap_events (event_name);
|
|
570
|
+
CREATE INDEX IF NOT EXISTS idx_sap_events_agent ON sap_events (agent_pda) WHERE agent_pda IS NOT NULL;
|
|
571
|
+
CREATE INDEX IF NOT EXISTS idx_sap_events_tx ON sap_events (tx_signature);
|
|
572
|
+
CREATE INDEX IF NOT EXISTS idx_sap_events_slot ON sap_events (slot);
|
|
573
|
+
|
|
574
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
575
|
+
-- Sync Cursor (tracks last synced slot per account type)
|
|
576
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
577
|
+
|
|
578
|
+
CREATE TABLE IF NOT EXISTS sap_sync_cursors (
|
|
579
|
+
account_type VARCHAR(64) PRIMARY KEY,
|
|
580
|
+
last_slot BIGINT NOT NULL DEFAULT 0,
|
|
581
|
+
last_signature TEXT,
|
|
582
|
+
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
583
|
+
);
|
|
584
|
+
|
|
585
|
+
-- Pre-populate cursor entries for all account types
|
|
586
|
+
INSERT INTO sap_sync_cursors (account_type) VALUES
|
|
587
|
+
('global_registry'),
|
|
588
|
+
('agents'),
|
|
589
|
+
('agent_stats'),
|
|
590
|
+
('feedbacks'),
|
|
591
|
+
('capability_indexes'),
|
|
592
|
+
('protocol_indexes'),
|
|
593
|
+
('plugin_slots'),
|
|
594
|
+
('memory_entries'),
|
|
595
|
+
('memory_chunks'),
|
|
596
|
+
('memory_vaults'),
|
|
597
|
+
('sessions'),
|
|
598
|
+
('epoch_pages'),
|
|
599
|
+
('vault_delegates'),
|
|
600
|
+
('tools'),
|
|
601
|
+
('checkpoints'),
|
|
602
|
+
('escrows'),
|
|
603
|
+
('tool_category_indexes'),
|
|
604
|
+
('attestations'),
|
|
605
|
+
('memory_buffers'),
|
|
606
|
+
('memory_digests'),
|
|
607
|
+
('memory_ledgers'),
|
|
608
|
+
('ledger_pages'),
|
|
609
|
+
('events')
|
|
610
|
+
ON CONFLICT (account_type) DO NOTHING;
|
|
611
|
+
|
|
612
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
613
|
+
-- Useful Views
|
|
614
|
+
-- ═══════════════════════════════════════════════════════════════════
|
|
615
|
+
|
|
616
|
+
-- Active agents with stats
|
|
617
|
+
CREATE OR REPLACE VIEW sap_active_agents AS
|
|
618
|
+
SELECT
|
|
619
|
+
a.pda,
|
|
620
|
+
a.wallet,
|
|
621
|
+
a.name,
|
|
622
|
+
a.description,
|
|
623
|
+
a.agent_id,
|
|
624
|
+
a.agent_uri,
|
|
625
|
+
a.x402_endpoint,
|
|
626
|
+
a.reputation_score,
|
|
627
|
+
a.total_feedbacks,
|
|
628
|
+
a.total_calls_served,
|
|
629
|
+
a.avg_latency_ms,
|
|
630
|
+
a.uptime_percent,
|
|
631
|
+
a.capabilities,
|
|
632
|
+
a.pricing,
|
|
633
|
+
a.protocols,
|
|
634
|
+
s.total_calls_served AS stats_calls,
|
|
635
|
+
a.created_at,
|
|
636
|
+
a.updated_at
|
|
637
|
+
FROM sap_agents a
|
|
638
|
+
LEFT JOIN sap_agent_stats s ON s.agent = a.pda
|
|
639
|
+
WHERE a.is_active = true;
|
|
640
|
+
|
|
641
|
+
-- Escrow balances with agent name
|
|
642
|
+
CREATE OR REPLACE VIEW sap_escrow_balances AS
|
|
643
|
+
SELECT
|
|
644
|
+
e.pda,
|
|
645
|
+
a.name AS agent_name,
|
|
646
|
+
e.agent,
|
|
647
|
+
e.depositor,
|
|
648
|
+
e.balance,
|
|
649
|
+
e.total_deposited,
|
|
650
|
+
e.total_settled,
|
|
651
|
+
e.total_calls_settled,
|
|
652
|
+
e.price_per_call,
|
|
653
|
+
e.max_calls,
|
|
654
|
+
e.expires_at,
|
|
655
|
+
e.token_mint,
|
|
656
|
+
e.token_decimals,
|
|
657
|
+
CASE
|
|
658
|
+
WHEN e.max_calls > 0
|
|
659
|
+
THEN e.max_calls - e.total_calls_settled
|
|
660
|
+
ELSE -1 -- unlimited
|
|
661
|
+
END AS calls_remaining
|
|
662
|
+
FROM sap_escrows e
|
|
663
|
+
LEFT JOIN sap_agents a ON a.pda = e.agent;
|
|
664
|
+
|
|
665
|
+
-- Agent tools summary
|
|
666
|
+
CREATE OR REPLACE VIEW sap_agent_tools AS
|
|
667
|
+
SELECT
|
|
668
|
+
t.pda,
|
|
669
|
+
a.name AS agent_name,
|
|
670
|
+
t.agent,
|
|
671
|
+
t.tool_name,
|
|
672
|
+
t.version,
|
|
673
|
+
t.http_method,
|
|
674
|
+
t.category,
|
|
675
|
+
t.params_count,
|
|
676
|
+
t.required_params,
|
|
677
|
+
t.is_compound,
|
|
678
|
+
t.is_active,
|
|
679
|
+
t.total_invocations,
|
|
680
|
+
t.created_at
|
|
681
|
+
FROM sap_tools t
|
|
682
|
+
LEFT JOIN sap_agents a ON a.pda = t.agent
|
|
683
|
+
WHERE t.is_active = true;
|