Changeset 0.29.2 (#197)

Co-authored-by: Jeffrey Smith <jasafpro@gmail.com>
Co-committed-by: Jeffrey Smith <jasafpro@gmail.com>
This commit is contained in:
2026-03-17 22:31:34 +00:00
committed by xcaliber
parent d4de84f3f1
commit 115004a3ab
35 changed files with 2285 additions and 48 deletions

View File

@@ -7,6 +7,7 @@
--
-- v0.28.7: packages table + package_user_settings in 012.
-- v0.29.0: status column + extension_permissions table.
-- v0.29.2: ext_data_tables catalog + platform read views.
-- ==========================================
CREATE TABLE IF NOT EXISTS packages (
@@ -88,3 +89,39 @@ CREATE INDEX IF NOT EXISTS idx_ext_perm_granted ON extension_permissions(granted
COMMENT ON TABLE extension_permissions IS 'Declared permissions from package manifests. Admin grants control runtime module injection.';
COMMENT ON COLUMN extension_permissions.permission IS 'Capability key: secrets.read, notifications.send, filters.pre_completion, db.read, db.write, api.http';
COMMENT ON COLUMN extension_permissions.granted IS 'Admin has reviewed and approved this capability for the package';
-- =========================================
-- EXTENSION DATA TABLES CATALOG
-- =========================================
-- Tracks namespaced tables created for each extension on install.
-- Used by uninstall hooks (DROP TABLE) and db.list_tables().
-- Table names stored without the ext_{id}_ prefix.
-- v0.29.2: Extension data storage.
CREATE TABLE IF NOT EXISTS ext_data_tables (
package_id TEXT NOT NULL REFERENCES packages(id) ON DELETE CASCADE,
table_name TEXT NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
PRIMARY KEY (package_id, table_name)
);
CREATE INDEX IF NOT EXISTS idx_ext_data_tables_pkg ON ext_data_tables(package_id);
COMMENT ON TABLE ext_data_tables IS 'Catalog of namespaced tables created by extension install hooks. Drives uninstall cleanup and db.list_tables().';
COMMENT ON COLUMN ext_data_tables.table_name IS 'Logical name (without ext_{id}_ prefix). Physical table is ext_{package_id}_{table_name}.';
-- =========================================
-- PLATFORM VIEWS (extension read access)
-- =========================================
-- Column-allowlisted views over core platform tables.
-- Extensions query these via db.view("users"), db.view("channels").
-- Only safe, non-sensitive columns are exposed.
-- v0.29.2: Read contract for cross-platform data access.
CREATE OR REPLACE VIEW ext_view_users AS
SELECT id, display_name, email FROM users;
CREATE OR REPLACE VIEW ext_view_channels AS
SELECT id, title, type, team_id FROM channels;

View File

@@ -2,6 +2,7 @@
-- Unified package registry. Replaces surface_registry + extensions.
-- v0.28.7: packages + package_user_settings
-- v0.29.0: status column + extension_permissions table
-- v0.29.2: ext_data_tables catalog + platform read views
CREATE TABLE IF NOT EXISTS packages (
id TEXT PRIMARY KEY,
@@ -61,3 +62,28 @@ CREATE TABLE IF NOT EXISTS extension_permissions (
CREATE INDEX IF NOT EXISTS idx_ext_perm_package ON extension_permissions(package_id);
CREATE INDEX IF NOT EXISTS idx_ext_perm_granted ON extension_permissions(granted);
-- Extension data tables catalog (v0.29.2)
-- Tracks namespaced tables created by extension install hooks.
CREATE TABLE IF NOT EXISTS ext_data_tables (
package_id TEXT NOT NULL REFERENCES packages(id) ON DELETE CASCADE,
table_name TEXT NOT NULL,
created_at TEXT NOT NULL DEFAULT (datetime('now')),
PRIMARY KEY (package_id, table_name)
);
CREATE INDEX IF NOT EXISTS idx_ext_data_tables_pkg ON ext_data_tables(package_id);
-- Platform views — column-allowlisted read access for extensions (v0.29.2)
-- Extensions query these via db.view("users"), db.view("channels").
DROP VIEW IF EXISTS ext_view_users;
CREATE VIEW ext_view_users AS
SELECT id, display_name, email FROM users;
DROP VIEW IF EXISTS ext_view_channels;
CREATE VIEW ext_view_channels AS
SELECT id, title, type, team_id FROM channels;