返回 DeepSeek-Reasonix
registry-schema.sql
根目录 / workers / crash-report / registry-schema.sql
1 -- Reasonix registry: published skills/MCP servers, their versions, and the
2 -- activity/install event log. Apply:
3 -- wrangler d1 migrations apply reasonix-registry --local (or --remote)
4
5 -- One row per published capability. The registry stores only metadata and a
6 -- source pointer; it never fetches or executes the content — install happens
7 -- client-side through the install_source tool (SSRF-guarded, risk-rated).
8 CREATE TABLE IF NOT EXISTS packages (
9 id INTEGER PRIMARY KEY AUTOINCREMENT,
10 kind TEXT NOT NULL, -- skill | plugin | mcp
11 scope_handle TEXT NOT NULL, -- publisher handle (namespace)
12 name TEXT NOT NULL, -- capability slug within the scope
13 slug TEXT NOT NULL UNIQUE, -- '<handle>/<name>' canonical id
14 summary TEXT NOT NULL DEFAULT '', -- one-liner (SKILL.md description)
15 description TEXT NOT NULL DEFAULT '', -- long markdown (README)
16 source TEXT NOT NULL DEFAULT '', -- what install_source pulls from
17 install_kind TEXT NOT NULL DEFAULT 'auto', -- auto | skill | plugin | mcp
18 homepage TEXT NOT NULL DEFAULT '',
19 repo_url TEXT NOT NULL DEFAULT '',
20 tags TEXT NOT NULL DEFAULT '', -- comma-separated
21 latest_version TEXT NOT NULL DEFAULT '',
22 install_count INTEGER NOT NULL DEFAULT 0,
23 star_count INTEGER NOT NULL DEFAULT 0,
24 verified INTEGER NOT NULL DEFAULT 0, -- owner/admin trust badge
25 status TEXT NOT NULL DEFAULT 'active', -- active | hidden | removed
26 publisher_id INTEGER NOT NULL, -- accounts user id (owner)
27 created_at TEXT NOT NULL,
28 updated_at TEXT NOT NULL
29 );
30 CREATE INDEX IF NOT EXISTS packages_kind ON packages (kind, status);
31 CREATE INDEX IF NOT EXISTS packages_installs ON packages (install_count DESC);
32 CREATE INDEX IF NOT EXISTS packages_created ON packages (created_at DESC);
33 CREATE INDEX IF NOT EXISTS packages_publisher ON packages (publisher_id);
34
35 -- Immutable version history: one row per published version, carrying the source
36 -- snapshot and content hash so a consumer can audit provenance before install.
37 CREATE TABLE IF NOT EXISTS package_versions (
38 id INTEGER PRIMARY KEY AUTOINCREMENT,
39 package_id INTEGER NOT NULL,
40 version TEXT NOT NULL,
41 source TEXT NOT NULL DEFAULT '',
42 manifest TEXT NOT NULL DEFAULT '', -- JSON: frontmatter / mcp config snapshot
43 content_hash TEXT NOT NULL DEFAULT '', -- sha256 of the source
44 risk_level TEXT NOT NULL DEFAULT '', -- echoed from install_source plan
45 created_at TEXT NOT NULL,
46 UNIQUE (package_id, version)
47 );
48 CREATE INDEX IF NOT EXISTS versions_package ON package_versions (package_id, created_at DESC);
49
50 -- Per-user stars, so star_count is a real de-duplicated tally.
51 CREATE TABLE IF NOT EXISTS stars (
52 package_id INTEGER NOT NULL,
53 user_id INTEGER NOT NULL,
54 created_at TEXT NOT NULL,
55 PRIMARY KEY (package_id, user_id)
56 );
57
58 -- Activity log: powers the homepage live feed and the 7-day "trending" ranking.
59 CREATE TABLE IF NOT EXISTS events (
60 id INTEGER PRIMARY KEY AUTOINCREMENT,
61 type TEXT NOT NULL, -- publish | update | install | star
62 package_id INTEGER,
63 actor_handle TEXT NOT NULL DEFAULT '',
64 summary TEXT NOT NULL DEFAULT '',
65 created_at TEXT NOT NULL
66 );
67 CREATE INDEX IF NOT EXISTS events_created ON events (created_at DESC);
68 CREATE INDEX IF NOT EXISTS events_trending ON events (type, created_at);
69
69 lines SQL