48 lines
2.7 KiB
SQL
48 lines
2.7 KiB
SQL
-- Additive upgrade: existing accounts do not silently opt into learning or discovery memory.
|
|
ALTER TABLE companion_discovery_settings ADD COLUMN learning_enabled INTEGER NOT NULL DEFAULT 0;
|
|
ALTER TABLE companion_discovery_settings ADD COLUMN recall_enabled INTEGER NOT NULL DEFAULT 0;
|
|
ALTER TABLE companion_discovery_settings ADD COLUMN learning_cursor INTEGER NOT NULL DEFAULT 0;
|
|
ALTER TABLE companion_discovery_settings ADD COLUMN last_memory_revision INTEGER NOT NULL DEFAULT -1;
|
|
ALTER TABLE companion_memories ADD COLUMN kind TEXT NOT NULL DEFAULT 'explicit';
|
|
ALTER TABLE companion_memories ADD COLUMN scope_notebook_id TEXT;
|
|
ALTER TABLE companion_memories ADD COLUMN rule_key TEXT;
|
|
ALTER TABLE companion_memories ADD COLUMN state TEXT NOT NULL DEFAULT 'active';
|
|
CREATE UNIQUE INDEX idx_companion_memory_rule ON companion_memories(workspace_id, owner_id, rule_key);
|
|
CREATE TABLE companion_memory_evidence (
|
|
workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
|
|
owner_id TEXT NOT NULL,
|
|
rule_key TEXT NOT NULL,
|
|
event_id TEXT NOT NULL,
|
|
memo_id TEXT NOT NULL,
|
|
choice_id TEXT NOT NULL,
|
|
created_at TEXT NOT NULL,
|
|
PRIMARY KEY(workspace_id, owner_id, rule_key, event_id)
|
|
);
|
|
CREATE INDEX idx_companion_evidence_scope ON companion_memory_evidence(workspace_id, owner_id, rule_key);
|
|
-- Keep only rule identifiers, never forgotten content or excerpts.
|
|
CREATE TABLE companion_memory_exclusions (
|
|
workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
|
|
owner_id TEXT NOT NULL,
|
|
rule_key TEXT NOT NULL,
|
|
PRIMARY KEY(workspace_id, owner_id, rule_key)
|
|
);
|
|
CREATE INDEX idx_audit_actor_learning ON audit_events(actor_id, actor_type, created_at);
|
|
-- Expand the discovery kind constraint without modifying prior migrations.
|
|
CREATE TABLE companion_discoveries_next (
|
|
id TEXT PRIMARY KEY,
|
|
workspace_id TEXT NOT NULL REFERENCES workspaces(id) ON DELETE CASCADE,
|
|
owner_id TEXT NOT NULL,
|
|
turn_id TEXT NOT NULL REFERENCES companion_turns(id) ON DELETE CASCADE,
|
|
action_id TEXT REFERENCES companion_actions(id) ON DELETE CASCADE,
|
|
settings_version INTEGER NOT NULL,
|
|
kind TEXT NOT NULL CHECK(kind IN ('insight', 'merge', 'append', 'move', 'tag')),
|
|
title TEXT NOT NULL, body TEXT NOT NULL, sources_json TEXT NOT NULL,
|
|
fingerprint TEXT NOT NULL, seen_at TEXT, dismissed_at TEXT, created_at TEXT NOT NULL,
|
|
UNIQUE(workspace_id, owner_id, fingerprint)
|
|
);
|
|
INSERT INTO companion_discoveries_next SELECT * FROM companion_discoveries;
|
|
DROP TABLE companion_discoveries;
|
|
ALTER TABLE companion_discoveries_next RENAME TO companion_discoveries;
|
|
CREATE INDEX companion_discoveries_feed ON companion_discoveries(workspace_id, owner_id, created_at DESC);
|
|
ALTER TABLE companion_discoveries ADD COLUMN memory_ids_json TEXT NOT NULL DEFAULT '[]';
|