repositories
loading repo index
repositories
loading repo index
repository
loading code, commits, and activity
public Clawd ADK gateway launch mirror
stars
latest
clone command
git clone gitlawb://did:key:z6Mkq5mY...iFZ5/my-project-publ...git clone gitlawb://did:key:z6Mkq5mY.../my-project-publ...2fa351d6docs: add automaton and perps launch sources16d ago| #1 | /** |
| #2 | * Automaton SQLite Schema |
| #3 | * |
| #4 | * All tables for the automaton's persistent state. |
| #5 | * The database IS the automaton's memory. |
| #6 | */ |
| #7 | export const SCHEMA_VERSION = 3; |
| #8 | export const CREATE_TABLES = ` |
| #9 | -- Schema version tracking |
| #10 | CREATE TABLE IF NOT EXISTS schema_version ( |
| #11 | version INTEGER PRIMARY KEY, |
| #12 | applied_at TEXT NOT NULL DEFAULT (datetime('now')) |
| #13 | ); |
| #14 | |
| #15 | -- Core identity key-value store |
| #16 | CREATE TABLE IF NOT EXISTS identity ( |
| #17 | key TEXT PRIMARY KEY, |
| #18 | value TEXT NOT NULL |
| #19 | ); |
| #20 | |
| #21 | -- Agent reasoning turns (the thinking/action log) |
| #22 | CREATE TABLE IF NOT EXISTS turns ( |
| #23 | id TEXT PRIMARY KEY, |
| #24 | timestamp TEXT NOT NULL, |
| #25 | state TEXT NOT NULL, |
| #26 | input TEXT, |
| #27 | input_source TEXT, |
| #28 | thinking TEXT NOT NULL, |
| #29 | tool_calls TEXT NOT NULL DEFAULT '[]', |
| #30 | token_usage TEXT NOT NULL DEFAULT '{}', |
| #31 | cost_cents INTEGER NOT NULL DEFAULT 0, |
| #32 | created_at TEXT NOT NULL DEFAULT (datetime('now')) |
| #33 | ); |
| #34 | |
| #35 | -- Tool call results (denormalized for fast lookup) |
| #36 | CREATE TABLE IF NOT EXISTS tool_calls ( |
| #37 | id TEXT PRIMARY KEY, |
| #38 | turn_id TEXT NOT NULL REFERENCES turns(id), |
| #39 | name TEXT NOT NULL, |
| #40 | arguments TEXT NOT NULL DEFAULT '{}', |
| #41 | result TEXT NOT NULL DEFAULT '', |
| #42 | duration_ms INTEGER NOT NULL DEFAULT 0, |
| #43 | error TEXT, |
| #44 | created_at TEXT NOT NULL DEFAULT (datetime('now')) |
| #45 | ); |
| #46 | |
| #47 | -- Heartbeat configuration entries |
| #48 | CREATE TABLE IF NOT EXISTS heartbeat_entries ( |
| #49 | name TEXT PRIMARY KEY, |
| #50 | schedule TEXT NOT NULL, |
| #51 | task TEXT NOT NULL, |
| #52 | enabled INTEGER NOT NULL DEFAULT 1, |
| #53 | last_run TEXT, |
| #54 | next_run TEXT, |
| #55 | params TEXT DEFAULT '{}', |
| #56 | created_at TEXT NOT NULL DEFAULT (datetime('now')), |
| #57 | updated_at TEXT NOT NULL DEFAULT (datetime('now')) |
| #58 | ); |
| #59 | |
| #60 | -- Financial transaction log |
| #61 | CREATE TABLE IF NOT EXISTS transactions ( |
| #62 | id TEXT PRIMARY KEY, |
| #63 | type TEXT NOT NULL, |
| #64 | amount_cents INTEGER, |
| #65 | balance_after_cents INTEGER, |
| #66 | description TEXT NOT NULL DEFAULT '', |
| #67 | created_at TEXT NOT NULL DEFAULT (datetime('now')) |
| #68 | ); |
| #69 | |
| #70 | -- Installed tools and MCP servers |
| #71 | CREATE TABLE IF NOT EXISTS installed_tools ( |
| #72 | id TEXT PRIMARY KEY, |
| #73 | name TEXT NOT NULL, |
| #74 | type TEXT NOT NULL, |
| #75 | config TEXT DEFAULT '{}', |
| #76 | installed_at TEXT NOT NULL DEFAULT (datetime('now')), |
| #77 | enabled INTEGER NOT NULL DEFAULT 1 |
| #78 | ); |
| #79 | |
| #80 | -- Self-modification audit log (append-only) |
| #81 | CREATE TABLE IF NOT EXISTS modifications ( |
| #82 | id TEXT PRIMARY KEY, |
| #83 | timestamp TEXT NOT NULL, |
| #84 | type TEXT NOT NULL, |
| #85 | description TEXT NOT NULL, |
| #86 | file_path TEXT, |
| #87 | diff TEXT, |
| #88 | reversible INTEGER NOT NULL DEFAULT 1, |
| #89 | created_at TEXT NOT NULL DEFAULT (datetime('now')) |
| #90 | ); |
| #91 | |
| #92 | -- General key-value store for arbitrary state |
| #93 | CREATE TABLE IF NOT EXISTS kv ( |
| #94 | key TEXT PRIMARY KEY, |
| #95 | value TEXT NOT NULL, |
| #96 | updated_at TEXT NOT NULL DEFAULT (datetime('now')) |
| #97 | ); |
| #98 | |
| #99 | -- Installed skills |
| #100 | CREATE TABLE IF NOT EXISTS skills ( |
| #101 | name TEXT PRIMARY KEY, |
| #102 | description TEXT NOT NULL DEFAULT '', |
| #103 | auto_activate INTEGER NOT NULL DEFAULT 1, |
| #104 | requires TEXT DEFAULT '{}', |
| #105 | instructions TEXT NOT NULL DEFAULT '', |
| #106 | source TEXT NOT NULL DEFAULT 'builtin', |
| #107 | path TEXT NOT NULL DEFAULT '', |
| #108 | enabled INTEGER NOT NULL DEFAULT 1, |
| #109 | installed_at TEXT NOT NULL DEFAULT (datetime('now')) |
| #110 | ); |
| #111 | |
| #112 | -- Spawned child automatons |
| #113 | CREATE TABLE IF NOT EXISTS children ( |
| #114 | id TEXT PRIMARY KEY, |
| #115 | name TEXT NOT NULL, |
| #116 | address TEXT NOT NULL, |
| #117 | sandbox_id TEXT NOT NULL, |
| #118 | genesis_prompt TEXT NOT NULL, |
| #119 | creator_message TEXT, |
| #120 | funded_amount_cents INTEGER NOT NULL DEFAULT 0, |
| #121 | status TEXT NOT NULL DEFAULT 'spawning', |
| #122 | created_at TEXT NOT NULL DEFAULT (datetime('now')), |
| #123 | last_checked TEXT |
| #124 | ); |
| #125 | |
| #126 | -- ERC-8004 registration state |
| #127 | CREATE TABLE IF NOT EXISTS registry ( |
| #128 | agent_id TEXT PRIMARY KEY, |
| #129 | agent_uri TEXT NOT NULL, |
| #130 | chain TEXT NOT NULL DEFAULT 'eip155:8453', |
| #131 | contract_address TEXT NOT NULL, |
| #132 | tx_hash TEXT NOT NULL, |
| #133 | registered_at TEXT NOT NULL DEFAULT (datetime('now')) |
| #134 | ); |
| #135 | |
| #136 | -- Reputation feedback received and given |
| #137 | CREATE TABLE IF NOT EXISTS reputation ( |
| #138 | id TEXT PRIMARY KEY, |
| #139 | from_agent TEXT NOT NULL, |
| #140 | to_agent TEXT NOT NULL, |
| #141 | score INTEGER NOT NULL, |
| #142 | comment TEXT NOT NULL DEFAULT '', |
| #143 | tx_hash TEXT, |
| #144 | created_at TEXT NOT NULL DEFAULT (datetime('now')) |
| #145 | ); |
| #146 | |
| #147 | -- Indices for common queries |
| #148 | CREATE INDEX IF NOT EXISTS idx_turns_timestamp ON turns(timestamp); |
| #149 | CREATE INDEX IF NOT EXISTS idx_turns_state ON turns(state); |
| #150 | CREATE INDEX IF NOT EXISTS idx_tool_calls_turn ON tool_calls(turn_id); |
| #151 | CREATE INDEX IF NOT EXISTS idx_transactions_type ON transactions(type); |
| #152 | CREATE INDEX IF NOT EXISTS idx_modifications_type ON modifications(type); |
| #153 | CREATE INDEX IF NOT EXISTS idx_skills_enabled ON skills(enabled); |
| #154 | CREATE INDEX IF NOT EXISTS idx_children_status ON children(status); |
| #155 | CREATE INDEX IF NOT EXISTS idx_reputation_to ON reputation(to_agent); |
| #156 | |
| #157 | -- Inbox messages table |
| #158 | CREATE TABLE IF NOT EXISTS inbox_messages ( |
| #159 | id TEXT PRIMARY KEY, |
| #160 | from_address TEXT NOT NULL, |
| #161 | content TEXT NOT NULL, |
| #162 | received_at TEXT NOT NULL DEFAULT (datetime('now')), |
| #163 | processed_at TEXT, |
| #164 | reply_to TEXT |
| #165 | ); |
| #166 | |
| #167 | CREATE INDEX IF NOT EXISTS idx_inbox_unprocessed |
| #168 | ON inbox_messages(received_at) WHERE processed_at IS NULL; |
| #169 | `; |
| #170 | export const MIGRATION_V3 = ` |
| #171 | CREATE TABLE IF NOT EXISTS inbox_messages ( |
| #172 | id TEXT PRIMARY KEY, |
| #173 | from_address TEXT NOT NULL, |
| #174 | content TEXT NOT NULL, |
| #175 | received_at TEXT NOT NULL DEFAULT (datetime('now')), |
| #176 | processed_at TEXT, |
| #177 | reply_to TEXT |
| #178 | ); |
| #179 | |
| #180 | CREATE INDEX IF NOT EXISTS idx_inbox_unprocessed |
| #181 | ON inbox_messages(received_at) WHERE processed_at IS NULL; |
| #182 | `; |
| #183 | export const MIGRATION_V2 = ` |
| #184 | CREATE TABLE IF NOT EXISTS skills ( |
| #185 | name TEXT PRIMARY KEY, |
| #186 | description TEXT NOT NULL DEFAULT '', |
| #187 | auto_activate INTEGER NOT NULL DEFAULT 1, |
| #188 | requires TEXT DEFAULT '{}', |
| #189 | instructions TEXT NOT NULL DEFAULT '', |
| #190 | source TEXT NOT NULL DEFAULT 'builtin', |
| #191 | path TEXT NOT NULL DEFAULT '', |
| #192 | enabled INTEGER NOT NULL DEFAULT 1, |
| #193 | installed_at TEXT NOT NULL DEFAULT (datetime('now')) |
| #194 | ); |
| #195 | |
| #196 | CREATE TABLE IF NOT EXISTS children ( |
| #197 | id TEXT PRIMARY KEY, |
| #198 | name TEXT NOT NULL, |
| #199 | address TEXT NOT NULL, |
| #200 | sandbox_id TEXT NOT NULL, |
| #201 | genesis_prompt TEXT NOT NULL, |
| #202 | creator_message TEXT, |
| #203 | funded_amount_cents INTEGER NOT NULL DEFAULT 0, |
| #204 | status TEXT NOT NULL DEFAULT 'spawning', |
| #205 | created_at TEXT NOT NULL DEFAULT (datetime('now')), |
| #206 | last_checked TEXT |
| #207 | ); |
| #208 | |
| #209 | CREATE TABLE IF NOT EXISTS registry ( |
| #210 | agent_id TEXT PRIMARY KEY, |
| #211 | agent_uri TEXT NOT NULL, |
| #212 | chain TEXT NOT NULL DEFAULT 'eip155:8453', |
| #213 | contract_address TEXT NOT NULL, |
| #214 | tx_hash TEXT NOT NULL, |
| #215 | registered_at TEXT NOT NULL DEFAULT (datetime('now')) |
| #216 | ); |
| #217 | |
| #218 | CREATE TABLE IF NOT EXISTS reputation ( |
| #219 | id TEXT PRIMARY KEY, |
| #220 | from_agent TEXT NOT NULL, |
| #221 | to_agent TEXT NOT NULL, |
| #222 | score INTEGER NOT NULL, |
| #223 | comment TEXT NOT NULL DEFAULT '', |
| #224 | tx_hash TEXT, |
| #225 | created_at TEXT NOT NULL DEFAULT (datetime('now')) |
| #226 | ); |
| #227 | |
| #228 | CREATE INDEX IF NOT EXISTS idx_skills_enabled ON skills(enabled); |
| #229 | CREATE INDEX IF NOT EXISTS idx_children_status ON children(status); |
| #230 | CREATE INDEX IF NOT EXISTS idx_reputation_to ON reputation(to_agent); |
| #231 | `; |
| #232 | //# sourceMappingURL=schema.js.map |