forge-openclaw-plugin 0.2.25 → 0.2.27
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/README.md +59 -3
- package/dist/assets/{board-VmF4FAfr.js → board-C6jCchjI.js} +3 -3
- package/dist/assets/{board-VmF4FAfr.js.map → board-C6jCchjI.js.map} +1 -1
- package/dist/assets/index-DVvS8iiU.css +1 -0
- package/dist/assets/index-zYB-9Dfo.js +85 -0
- package/dist/assets/index-zYB-9Dfo.js.map +1 -0
- package/dist/assets/knowledge-graph-layout.worker-DRvzPxhP.js +2 -0
- package/dist/assets/knowledge-graph-layout.worker-DRvzPxhP.js.map +1 -0
- package/dist/assets/{motion-DvkU14p-.js → motion-DFHrH2rd.js} +2 -2
- package/dist/assets/{motion-DvkU14p-.js.map → motion-DFHrH2rd.js.map} +1 -1
- package/dist/assets/{table-DgiPof9E.js → table-ZL7Di_u3.js} +2 -2
- package/dist/assets/{table-DgiPof9E.js.map → table-ZL7Di_u3.js.map} +1 -1
- package/dist/assets/{ui-nYfoC0Gq.js → ui-CKNPpz7q.js} +2 -2
- package/dist/assets/{ui-nYfoC0Gq.js.map → ui-CKNPpz7q.js.map} +1 -1
- package/dist/assets/vendor-DoNZuFhn.js +1247 -0
- package/dist/assets/vendor-DoNZuFhn.js.map +1 -0
- package/dist/index.html +7 -8
- package/dist/openclaw/local-runtime.d.ts +3 -1
- package/dist/openclaw/local-runtime.js +67 -15
- package/dist/openclaw/plugin-entry-shared.js +24 -2
- package/dist/openclaw/plugin-sdk-types.d.ts +17 -0
- package/dist/openclaw/routes.d.ts +27 -0
- package/dist/openclaw/routes.js +16 -12
- package/dist/openclaw/tools.js +0 -3
- package/dist/server/server/migrations/001_core.sql +411 -0
- package/dist/server/server/migrations/002_psyche.sql +392 -0
- package/dist/server/server/migrations/003_habits.sql +30 -0
- package/dist/server/server/migrations/004_habit_links.sql +8 -0
- package/dist/server/server/migrations/005_habit_psyche_links.sql +24 -0
- package/dist/server/server/migrations/006_work_adjustments.sql +14 -0
- package/dist/server/server/migrations/007_weekly_review_closures.sql +17 -0
- package/dist/server/server/migrations/008_calendar_execution.sql +147 -0
- package/dist/server/server/migrations/009_true_calendar_events.sql +195 -0
- package/dist/server/server/migrations/010_calendar_selection_state.sql +6 -0
- package/dist/server/server/migrations/011_calendar_timezone_backfill.sql +11 -0
- package/dist/server/server/migrations/012_work_block_ranges.sql +7 -0
- package/dist/server/server/migrations/013_microsoft_local_auth_settings.sql +8 -0
- package/dist/server/server/migrations/014_note_tags_and_ephemeral.sql +8 -0
- package/dist/server/server/migrations/015_multi_user_and_strategies.sql +244 -0
- package/dist/server/server/migrations/016_health_companion.sql +158 -0
- package/dist/server/server/migrations/016_strategy_contracts_and_user_graph.sql +22 -0
- package/dist/server/server/migrations/017_preferences.sql +131 -0
- package/dist/server/server/migrations/018_preference_catalogs.sql +31 -0
- package/dist/server/server/migrations/019_wiki_memory.sql +255 -0
- package/dist/server/server/migrations/020_wiki_page_hierarchy.sql +11 -0
- package/dist/server/server/migrations/021_hide_evidence_from_wiki_index.sql +3 -0
- package/dist/server/server/migrations/022_wiki_ingest_background.sql +85 -0
- package/dist/server/server/migrations/023_diagnostic_logs.sql +28 -0
- package/dist/server/server/migrations/024_questionnaires.sql +96 -0
- package/dist/server/server/migrations/025_ai_model_connections.sql +26 -0
- package/dist/server/server/migrations/026_custom_theme_settings.sql +2 -0
- package/dist/server/server/migrations/027_ai_processors.sql +31 -0
- package/dist/server/server/migrations/028_movement_domain.sql +136 -0
- package/dist/server/server/migrations/029_watch_micro_capture.sql +23 -0
- package/dist/server/server/migrations/030_surface_layouts.sql +5 -0
- package/dist/server/server/migrations/031_ai_processor_runtime_upgrades.sql +10 -0
- package/dist/server/server/migrations/032_ai_connectors.sql +44 -0
- package/dist/server/server/migrations/033_movement_trip_point_sync.sql +36 -0
- package/dist/server/server/migrations/034_movement_segment_sync.sql +49 -0
- package/dist/server/server/migrations/035_google_local_auth_settings.sql +2 -0
- package/dist/server/server/migrations/036_google_local_auth_client_secret.sql +2 -0
- package/dist/server/server/migrations/037_workbench_public_inputs_and_run_inputs.sql +5 -0
- package/dist/server/server/migrations/038_data_management_settings.sql +11 -0
- package/dist/server/server/migrations/039_life_force_and_action_points.sql +114 -0
- package/dist/server/server/migrations/040_screen_time_domain.sql +89 -0
- package/dist/server/server/migrations/041_companion_source_states.sql +21 -0
- package/dist/server/server/migrations/042_movement_boxes.sql +47 -0
- package/dist/server/server/migrations/043_movement_box_overlap_overrides.sql +26 -0
- package/dist/server/{app.js → server/src/app.js} +2112 -414
- package/dist/server/server/src/connectors/box-registry.js +223 -0
- package/dist/server/server/src/data-management-types.js +107 -0
- package/dist/server/{db.js → server/src/db.js} +72 -4
- package/dist/server/server/src/debug.js +19 -0
- package/dist/server/{demo-data.js → server/src/demo-data.js} +2 -2
- package/dist/server/{health.js → server/src/health.js} +702 -18
- package/dist/server/{managers → server/src/managers}/platform/llm-manager.js +7 -4
- package/dist/server/server/src/managers/platform/mock-workbench-provider.js +149 -0
- package/dist/server/{managers → server/src/managers}/platform/secrets-manager.js +18 -1
- package/dist/server/{managers → server/src/managers}/runtime.js +9 -0
- package/dist/server/{movement.js → server/src/movement.js} +1971 -112
- package/dist/server/{openapi.js → server/src/openapi.js} +491 -3
- package/dist/server/{psyche-types.js → server/src/psyche-types.js} +9 -1
- package/dist/server/{repositories → server/src/repositories}/activity-events.js +8 -0
- package/dist/server/{repositories → server/src/repositories}/ai-connectors.js +758 -47
- package/dist/server/{repositories → server/src/repositories}/calendar.js +1 -1
- package/dist/server/{repositories → server/src/repositories}/habits.js +37 -1
- package/dist/server/{repositories → server/src/repositories}/model-settings.js +13 -3
- package/dist/server/{repositories → server/src/repositories}/notes.js +3 -0
- package/dist/server/{repositories → server/src/repositories}/settings.js +431 -21
- package/dist/server/{repositories → server/src/repositories}/tasks.js +170 -10
- package/dist/server/server/src/runtime-data-root.js +82 -0
- package/dist/server/server/src/screen-time.js +802 -0
- package/dist/server/{services → server/src/services}/calendar-runtime.js +775 -58
- package/dist/server/server/src/services/data-management.js +788 -0
- package/dist/server/{services → server/src/services}/entity-crud.js +205 -2
- package/dist/server/server/src/services/google-calendar-oauth-config.js +176 -0
- package/dist/server/server/src/services/knowledge-graph.js +1455 -0
- package/dist/server/server/src/services/life-force-model.js +197 -0
- package/dist/server/server/src/services/life-force.js +1270 -0
- package/dist/server/server/src/services/psyche-observation-calendar.js +413 -0
- package/dist/server/{types.js → server/src/types.js} +420 -29
- package/dist/server/server/src/web.js +332 -0
- package/dist/server/src/components/customization/utility-widgets.js +439 -0
- package/dist/server/src/components/ui/info-tooltip.js +25 -0
- package/dist/server/src/components/workbench-boxes/calendar/calendar-boxes.js +78 -0
- package/dist/server/src/components/workbench-boxes/goals/goals-boxes.js +62 -0
- package/dist/server/src/components/workbench-boxes/habits/habits-boxes.js +62 -0
- package/dist/server/src/components/workbench-boxes/health/health-boxes.js +147 -0
- package/dist/server/src/components/workbench-boxes/insights/insights-boxes.js +50 -0
- package/dist/server/src/components/workbench-boxes/kanban/kanban-boxes.js +136 -0
- package/dist/server/src/components/workbench-boxes/movement/movement-boxes.js +47 -0
- package/dist/server/src/components/workbench-boxes/notes/notes-boxes.js +132 -0
- package/dist/server/src/components/workbench-boxes/overview/overview-boxes.js +65 -0
- package/dist/server/src/components/workbench-boxes/preferences/preferences-boxes.js +78 -0
- package/dist/server/src/components/workbench-boxes/projects/projects-boxes.js +62 -0
- package/dist/server/src/components/workbench-boxes/psyche/psyche-boxes.js +88 -0
- package/dist/server/src/components/workbench-boxes/questionnaires/questionnaires-boxes.js +61 -0
- package/dist/server/src/components/workbench-boxes/review/review-boxes.js +53 -0
- package/dist/server/src/components/workbench-boxes/shared/define-workbench-box.js +6 -0
- package/dist/server/src/components/workbench-boxes/shared/generic-node-view.js +49 -0
- package/dist/server/src/components/workbench-boxes/strategies/strategies-boxes.js +62 -0
- package/dist/server/src/components/workbench-boxes/tasks/tasks-boxes.js +76 -0
- package/dist/server/src/components/workbench-boxes/today/today-boxes.js +78 -0
- package/dist/server/src/components/workbench-boxes/wiki/wiki-boxes.js +60 -0
- package/dist/server/src/lib/api-error.js +37 -0
- package/dist/server/src/lib/api.js +2118 -0
- package/dist/server/src/lib/calendar-name-deduper.js +144 -0
- package/dist/server/src/lib/data-management-types.js +1 -0
- package/dist/server/src/lib/diagnostics.js +67 -0
- package/dist/server/src/lib/entity-visuals.js +279 -0
- package/dist/server/src/lib/knowledge-graph-types.js +276 -0
- package/dist/server/src/lib/knowledge-graph.js +470 -0
- package/dist/server/src/lib/psyche-types.js +1 -0
- package/dist/server/src/lib/questionnaire-types.js +1 -0
- package/dist/server/src/lib/runtime-paths.js +24 -0
- package/dist/server/src/lib/schemas.js +238 -0
- package/dist/server/src/lib/snapshot-normalizer.js +416 -0
- package/dist/server/src/lib/theme-system.js +319 -0
- package/dist/server/src/lib/types.js +1 -0
- package/dist/server/src/lib/utils.js +22 -0
- package/dist/server/src/lib/workbench/boxes.js +16 -0
- package/dist/server/src/lib/workbench/contracts.js +229 -0
- package/dist/server/src/lib/workbench/nodes.js +215 -0
- package/dist/server/src/lib/workbench/registry.js +120 -0
- package/dist/server/src/lib/workbench/runtime.js +397 -0
- package/dist/server/src/lib/workbench/tool-catalog.js +68 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/server/index.js +68 -0
- package/server/migrations/035_google_local_auth_settings.sql +2 -0
- package/server/migrations/036_google_local_auth_client_secret.sql +2 -0
- package/server/migrations/037_workbench_public_inputs_and_run_inputs.sql +5 -0
- package/server/migrations/038_data_management_settings.sql +11 -0
- package/server/migrations/039_life_force_and_action_points.sql +114 -0
- package/server/migrations/040_screen_time_domain.sql +89 -0
- package/server/migrations/041_companion_source_states.sql +21 -0
- package/server/migrations/042_movement_boxes.sql +47 -0
- package/server/migrations/043_movement_box_overlap_overrides.sql +26 -0
- package/skills/forge-openclaw/SKILL.md +27 -11
- package/skills/forge-openclaw/entity_conversation_playbooks.md +411 -46
- package/skills/forge-openclaw/psyche_entity_playbooks.md +195 -20
- package/dist/assets/index-CFCKDIMH.js +0 -67
- package/dist/assets/index-CFCKDIMH.js.map +0 -1
- package/dist/assets/index-ZPY6U1TU.css +0 -1
- package/dist/assets/vendor-D9PTEPSB.js +0 -824
- package/dist/assets/vendor-D9PTEPSB.js.map +0 -1
- package/dist/assets/viz-Cqb6s--o.js +0 -34
- package/dist/assets/viz-Cqb6s--o.js.map +0 -1
- package/dist/server/connectors/box-registry.js +0 -257
- package/dist/server/services/psyche-observation-calendar.js +0 -46
- package/dist/server/web.js +0 -98
- /package/dist/server/{discovery-advertiser.js → server/src/discovery-advertiser.js} +0 -0
- /package/dist/server/{e2e-server.js → server/src/e2e-server.js} +0 -0
- /package/dist/server/{errors.js → server/src/errors.js} +0 -0
- /package/dist/server/{index.js → server/src/index.js} +0 -0
- /package/dist/server/{managers → server/src/managers}/base.js +0 -0
- /package/dist/server/{managers → server/src/managers}/contracts.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/api-gateway-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/audit-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/authentication-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/authorization-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/background-job-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/configuration-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/database-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/event-bus-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/external-service-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/health-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/migration-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/openai-responses-provider.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/search-index-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/session-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/storage-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/token-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/transaction-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/trusted-network.js +0 -0
- /package/dist/server/{managers → server/src/managers}/type-guards.js +0 -0
- /package/dist/server/{preferences-seeds.js → server/src/preferences-seeds.js} +0 -0
- /package/dist/server/{preferences-types.js → server/src/preferences-types.js} +0 -0
- /package/dist/server/{questionnaire-flow.js → server/src/questionnaire-flow.js} +0 -0
- /package/dist/server/{questionnaire-seeds.js → server/src/questionnaire-seeds.js} +0 -0
- /package/dist/server/{questionnaire-types.js → server/src/questionnaire-types.js} +0 -0
- /package/dist/server/{repositories → server/src/repositories}/ai-processors.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/collaboration.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/deleted-entities.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/diagnostic-logs.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/domains.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/entity-ownership.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/event-log.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/goals.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/preferences.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/projects.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/psyche.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/questionnaires.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/rewards.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/strategies.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/surface-layouts.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/tags.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/task-runs.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/users.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/weekly-reviews.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/wiki-memory.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/work-adjustments.js +0 -0
- /package/dist/server/{seed-demo.js → server/src/seed-demo.js} +0 -0
- /package/dist/server/{services → server/src/services}/context.js +0 -0
- /package/dist/server/{services → server/src/services}/dashboard.js +0 -0
- /package/dist/server/{services → server/src/services}/gamification.js +0 -0
- /package/dist/server/{services → server/src/services}/insights.js +0 -0
- /package/dist/server/{services → server/src/services}/openai-codex-oauth.js +0 -0
- /package/dist/server/{services → server/src/services}/projects.js +0 -0
- /package/dist/server/{services → server/src/services}/psyche.js +0 -0
- /package/dist/server/{services → server/src/services}/relations.js +0 -0
- /package/dist/server/{services → server/src/services}/reviews.js +0 -0
- /package/dist/server/{services → server/src/services}/run-recovery.js +0 -0
- /package/dist/server/{services → server/src/services}/tagging.js +0 -0
- /package/dist/server/{services → server/src/services}/task-run-watchdog.js +0 -0
- /package/dist/server/{services → server/src/services}/work-time.js +0 -0
- /package/dist/server/{watch-mobile.js → server/src/watch-mobile.js} +0 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS preference_profiles (
|
|
2
|
+
id TEXT PRIMARY KEY,
|
|
3
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
4
|
+
domain TEXT NOT NULL,
|
|
5
|
+
default_context_id TEXT,
|
|
6
|
+
model_version TEXT NOT NULL,
|
|
7
|
+
created_at TEXT NOT NULL,
|
|
8
|
+
updated_at TEXT NOT NULL,
|
|
9
|
+
UNIQUE (user_id, domain)
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
CREATE TABLE IF NOT EXISTS preference_contexts (
|
|
13
|
+
id TEXT PRIMARY KEY,
|
|
14
|
+
profile_id TEXT NOT NULL REFERENCES preference_profiles(id) ON DELETE CASCADE,
|
|
15
|
+
name TEXT NOT NULL,
|
|
16
|
+
description TEXT NOT NULL DEFAULT '',
|
|
17
|
+
share_mode TEXT NOT NULL DEFAULT 'blended' CHECK (share_mode IN ('shared', 'isolated', 'blended')),
|
|
18
|
+
active INTEGER NOT NULL DEFAULT 1,
|
|
19
|
+
is_default INTEGER NOT NULL DEFAULT 0,
|
|
20
|
+
decay_days INTEGER NOT NULL DEFAULT 90,
|
|
21
|
+
created_at TEXT NOT NULL,
|
|
22
|
+
updated_at TEXT NOT NULL
|
|
23
|
+
);
|
|
24
|
+
|
|
25
|
+
CREATE TABLE IF NOT EXISTS preference_items (
|
|
26
|
+
id TEXT PRIMARY KEY,
|
|
27
|
+
profile_id TEXT NOT NULL REFERENCES preference_profiles(id) ON DELETE CASCADE,
|
|
28
|
+
label TEXT NOT NULL,
|
|
29
|
+
description TEXT NOT NULL DEFAULT '',
|
|
30
|
+
tags_json TEXT NOT NULL DEFAULT '[]',
|
|
31
|
+
feature_weights_json TEXT NOT NULL DEFAULT '{}',
|
|
32
|
+
source_entity_type TEXT,
|
|
33
|
+
source_entity_id TEXT,
|
|
34
|
+
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
35
|
+
created_at TEXT NOT NULL,
|
|
36
|
+
updated_at TEXT NOT NULL
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
CREATE TABLE IF NOT EXISTS pairwise_judgments (
|
|
40
|
+
id TEXT PRIMARY KEY,
|
|
41
|
+
profile_id TEXT NOT NULL REFERENCES preference_profiles(id) ON DELETE CASCADE,
|
|
42
|
+
context_id TEXT NOT NULL REFERENCES preference_contexts(id) ON DELETE CASCADE,
|
|
43
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
44
|
+
left_item_id TEXT NOT NULL REFERENCES preference_items(id) ON DELETE CASCADE,
|
|
45
|
+
right_item_id TEXT NOT NULL REFERENCES preference_items(id) ON DELETE CASCADE,
|
|
46
|
+
outcome TEXT NOT NULL CHECK (outcome IN ('left', 'right', 'tie', 'skip')),
|
|
47
|
+
strength REAL NOT NULL DEFAULT 1,
|
|
48
|
+
response_time_ms INTEGER,
|
|
49
|
+
source TEXT NOT NULL DEFAULT 'ui',
|
|
50
|
+
reason_tags_json TEXT NOT NULL DEFAULT '[]',
|
|
51
|
+
created_at TEXT NOT NULL
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
CREATE TABLE IF NOT EXISTS absolute_signals (
|
|
55
|
+
id TEXT PRIMARY KEY,
|
|
56
|
+
profile_id TEXT NOT NULL REFERENCES preference_profiles(id) ON DELETE CASCADE,
|
|
57
|
+
context_id TEXT NOT NULL REFERENCES preference_contexts(id) ON DELETE CASCADE,
|
|
58
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
59
|
+
item_id TEXT NOT NULL REFERENCES preference_items(id) ON DELETE CASCADE,
|
|
60
|
+
signal_type TEXT NOT NULL CHECK (signal_type IN ('favorite', 'veto', 'must_have', 'bookmark', 'neutral', 'compare_later')),
|
|
61
|
+
strength REAL NOT NULL DEFAULT 1,
|
|
62
|
+
source TEXT NOT NULL DEFAULT 'ui',
|
|
63
|
+
created_at TEXT NOT NULL
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
CREATE TABLE IF NOT EXISTS preference_item_scores (
|
|
67
|
+
id TEXT PRIMARY KEY,
|
|
68
|
+
profile_id TEXT NOT NULL REFERENCES preference_profiles(id) ON DELETE CASCADE,
|
|
69
|
+
context_id TEXT NOT NULL REFERENCES preference_contexts(id) ON DELETE CASCADE,
|
|
70
|
+
item_id TEXT NOT NULL REFERENCES preference_items(id) ON DELETE CASCADE,
|
|
71
|
+
latent_score REAL NOT NULL DEFAULT 0,
|
|
72
|
+
confidence REAL NOT NULL DEFAULT 0,
|
|
73
|
+
uncertainty REAL NOT NULL DEFAULT 1,
|
|
74
|
+
evidence_count INTEGER NOT NULL DEFAULT 0,
|
|
75
|
+
pairwise_wins INTEGER NOT NULL DEFAULT 0,
|
|
76
|
+
pairwise_losses INTEGER NOT NULL DEFAULT 0,
|
|
77
|
+
pairwise_ties INTEGER NOT NULL DEFAULT 0,
|
|
78
|
+
signal_count INTEGER NOT NULL DEFAULT 0,
|
|
79
|
+
conflict_count INTEGER NOT NULL DEFAULT 0,
|
|
80
|
+
status TEXT NOT NULL DEFAULT 'uncertain',
|
|
81
|
+
dominant_dimensions_json TEXT NOT NULL DEFAULT '[]',
|
|
82
|
+
explanation_json TEXT NOT NULL DEFAULT '[]',
|
|
83
|
+
manual_status TEXT,
|
|
84
|
+
manual_score REAL,
|
|
85
|
+
confidence_lock REAL,
|
|
86
|
+
bookmarked INTEGER NOT NULL DEFAULT 0,
|
|
87
|
+
compare_later INTEGER NOT NULL DEFAULT 0,
|
|
88
|
+
frozen INTEGER NOT NULL DEFAULT 0,
|
|
89
|
+
last_inferred_at TEXT NOT NULL,
|
|
90
|
+
last_judgment_at TEXT,
|
|
91
|
+
updated_at TEXT NOT NULL,
|
|
92
|
+
UNIQUE (context_id, item_id)
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
CREATE TABLE IF NOT EXISTS preference_dimension_summaries (
|
|
96
|
+
id TEXT PRIMARY KEY,
|
|
97
|
+
profile_id TEXT NOT NULL REFERENCES preference_profiles(id) ON DELETE CASCADE,
|
|
98
|
+
context_id TEXT NOT NULL REFERENCES preference_contexts(id) ON DELETE CASCADE,
|
|
99
|
+
dimension_id TEXT NOT NULL,
|
|
100
|
+
leaning REAL NOT NULL DEFAULT 0,
|
|
101
|
+
confidence REAL NOT NULL DEFAULT 0,
|
|
102
|
+
movement REAL NOT NULL DEFAULT 0,
|
|
103
|
+
context_sensitivity REAL NOT NULL DEFAULT 0,
|
|
104
|
+
evidence_count INTEGER NOT NULL DEFAULT 0,
|
|
105
|
+
updated_at TEXT NOT NULL,
|
|
106
|
+
UNIQUE (context_id, dimension_id)
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
CREATE TABLE IF NOT EXISTS preference_snapshots (
|
|
110
|
+
id TEXT PRIMARY KEY,
|
|
111
|
+
profile_id TEXT NOT NULL REFERENCES preference_profiles(id) ON DELETE CASCADE,
|
|
112
|
+
context_id TEXT NOT NULL REFERENCES preference_contexts(id) ON DELETE CASCADE,
|
|
113
|
+
summary_metrics_json TEXT NOT NULL DEFAULT '{}',
|
|
114
|
+
serialized_model_state_json TEXT NOT NULL DEFAULT '{}',
|
|
115
|
+
created_at TEXT NOT NULL
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
CREATE INDEX IF NOT EXISTS idx_preference_profiles_user_domain
|
|
119
|
+
ON preference_profiles(user_id, domain);
|
|
120
|
+
CREATE INDEX IF NOT EXISTS idx_preference_contexts_profile_active
|
|
121
|
+
ON preference_contexts(profile_id, active, is_default);
|
|
122
|
+
CREATE INDEX IF NOT EXISTS idx_preference_items_profile
|
|
123
|
+
ON preference_items(profile_id, updated_at DESC);
|
|
124
|
+
CREATE INDEX IF NOT EXISTS idx_pairwise_judgments_context_created
|
|
125
|
+
ON pairwise_judgments(context_id, created_at DESC);
|
|
126
|
+
CREATE INDEX IF NOT EXISTS idx_absolute_signals_context_created
|
|
127
|
+
ON absolute_signals(context_id, created_at DESC);
|
|
128
|
+
CREATE INDEX IF NOT EXISTS idx_preference_scores_context
|
|
129
|
+
ON preference_item_scores(context_id, status, confidence DESC, latent_score DESC);
|
|
130
|
+
CREATE INDEX IF NOT EXISTS idx_preference_snapshots_context
|
|
131
|
+
ON preference_snapshots(context_id, created_at DESC);
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS preference_catalogs (
|
|
2
|
+
id TEXT PRIMARY KEY,
|
|
3
|
+
profile_id TEXT NOT NULL REFERENCES preference_profiles(id) ON DELETE CASCADE,
|
|
4
|
+
domain TEXT NOT NULL,
|
|
5
|
+
slug TEXT NOT NULL,
|
|
6
|
+
title TEXT NOT NULL,
|
|
7
|
+
description TEXT NOT NULL DEFAULT '',
|
|
8
|
+
source TEXT NOT NULL DEFAULT 'custom' CHECK (source IN ('seeded', 'custom')),
|
|
9
|
+
archived INTEGER NOT NULL DEFAULT 0,
|
|
10
|
+
created_at TEXT NOT NULL,
|
|
11
|
+
updated_at TEXT NOT NULL,
|
|
12
|
+
UNIQUE (profile_id, slug)
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
CREATE TABLE IF NOT EXISTS preference_catalog_items (
|
|
16
|
+
id TEXT PRIMARY KEY,
|
|
17
|
+
catalog_id TEXT NOT NULL REFERENCES preference_catalogs(id) ON DELETE CASCADE,
|
|
18
|
+
label TEXT NOT NULL,
|
|
19
|
+
description TEXT NOT NULL DEFAULT '',
|
|
20
|
+
tags_json TEXT NOT NULL DEFAULT '[]',
|
|
21
|
+
feature_weights_json TEXT NOT NULL DEFAULT '{}',
|
|
22
|
+
position INTEGER NOT NULL DEFAULT 0,
|
|
23
|
+
archived INTEGER NOT NULL DEFAULT 0,
|
|
24
|
+
created_at TEXT NOT NULL,
|
|
25
|
+
updated_at TEXT NOT NULL
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
CREATE INDEX IF NOT EXISTS idx_preference_catalogs_profile
|
|
29
|
+
ON preference_catalogs(profile_id, archived, source, title);
|
|
30
|
+
CREATE INDEX IF NOT EXISTS idx_preference_catalog_items_catalog
|
|
31
|
+
ON preference_catalog_items(catalog_id, archived, position, label);
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
ALTER TABLE notes
|
|
2
|
+
ADD COLUMN kind TEXT NOT NULL DEFAULT 'evidence';
|
|
3
|
+
|
|
4
|
+
ALTER TABLE notes
|
|
5
|
+
ADD COLUMN title TEXT NOT NULL DEFAULT '';
|
|
6
|
+
|
|
7
|
+
ALTER TABLE notes
|
|
8
|
+
ADD COLUMN slug TEXT NOT NULL DEFAULT '';
|
|
9
|
+
|
|
10
|
+
ALTER TABLE notes
|
|
11
|
+
ADD COLUMN space_id TEXT NOT NULL DEFAULT '';
|
|
12
|
+
|
|
13
|
+
ALTER TABLE notes
|
|
14
|
+
ADD COLUMN aliases_json TEXT NOT NULL DEFAULT '[]';
|
|
15
|
+
|
|
16
|
+
ALTER TABLE notes
|
|
17
|
+
ADD COLUMN summary TEXT NOT NULL DEFAULT '';
|
|
18
|
+
|
|
19
|
+
ALTER TABLE notes
|
|
20
|
+
ADD COLUMN source_path TEXT NOT NULL DEFAULT '';
|
|
21
|
+
|
|
22
|
+
ALTER TABLE notes
|
|
23
|
+
ADD COLUMN frontmatter_json TEXT NOT NULL DEFAULT '{}';
|
|
24
|
+
|
|
25
|
+
ALTER TABLE notes
|
|
26
|
+
ADD COLUMN revision_hash TEXT NOT NULL DEFAULT '';
|
|
27
|
+
|
|
28
|
+
ALTER TABLE notes
|
|
29
|
+
ADD COLUMN last_synced_at TEXT;
|
|
30
|
+
|
|
31
|
+
CREATE INDEX IF NOT EXISTS idx_notes_kind_updated
|
|
32
|
+
ON notes (kind, updated_at DESC);
|
|
33
|
+
|
|
34
|
+
CREATE INDEX IF NOT EXISTS idx_notes_space_updated
|
|
35
|
+
ON notes (space_id, updated_at DESC);
|
|
36
|
+
|
|
37
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_notes_space_slug_unique
|
|
38
|
+
ON notes (space_id, slug)
|
|
39
|
+
WHERE slug != '';
|
|
40
|
+
|
|
41
|
+
CREATE TABLE IF NOT EXISTS wiki_spaces (
|
|
42
|
+
id TEXT PRIMARY KEY,
|
|
43
|
+
slug TEXT NOT NULL UNIQUE,
|
|
44
|
+
label TEXT NOT NULL,
|
|
45
|
+
description TEXT NOT NULL DEFAULT '',
|
|
46
|
+
owner_user_id TEXT,
|
|
47
|
+
visibility TEXT NOT NULL DEFAULT 'personal',
|
|
48
|
+
created_at TEXT NOT NULL,
|
|
49
|
+
updated_at TEXT NOT NULL
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
CREATE INDEX IF NOT EXISTS idx_wiki_spaces_owner
|
|
53
|
+
ON wiki_spaces (owner_user_id, updated_at DESC);
|
|
54
|
+
|
|
55
|
+
INSERT INTO wiki_spaces (id, slug, label, description, owner_user_id, visibility, created_at, updated_at)
|
|
56
|
+
VALUES (
|
|
57
|
+
'wiki_space_shared',
|
|
58
|
+
'shared',
|
|
59
|
+
'Shared Forge Memory',
|
|
60
|
+
'Shared wiki space for file-backed Forge knowledge.',
|
|
61
|
+
NULL,
|
|
62
|
+
'shared',
|
|
63
|
+
CURRENT_TIMESTAMP,
|
|
64
|
+
CURRENT_TIMESTAMP
|
|
65
|
+
)
|
|
66
|
+
ON CONFLICT(id) DO NOTHING;
|
|
67
|
+
|
|
68
|
+
UPDATE notes
|
|
69
|
+
SET space_id = 'wiki_space_shared'
|
|
70
|
+
WHERE trim(space_id) = '';
|
|
71
|
+
|
|
72
|
+
UPDATE notes
|
|
73
|
+
SET title = CASE
|
|
74
|
+
WHEN trim(title) != '' THEN title
|
|
75
|
+
WHEN trim(content_plain) != '' THEN substr(trim(content_plain), 1, 120)
|
|
76
|
+
ELSE 'Untitled note'
|
|
77
|
+
END
|
|
78
|
+
WHERE trim(title) = '';
|
|
79
|
+
|
|
80
|
+
UPDATE notes
|
|
81
|
+
SET slug = replace(replace(lower(id), '_', '-'), ' ', '-')
|
|
82
|
+
WHERE trim(slug) = '';
|
|
83
|
+
|
|
84
|
+
CREATE TABLE IF NOT EXISTS wiki_link_edges (
|
|
85
|
+
source_note_id TEXT NOT NULL,
|
|
86
|
+
target_type TEXT NOT NULL,
|
|
87
|
+
target_note_id TEXT,
|
|
88
|
+
target_entity_type TEXT,
|
|
89
|
+
target_entity_id TEXT,
|
|
90
|
+
label TEXT NOT NULL DEFAULT '',
|
|
91
|
+
raw_target TEXT NOT NULL DEFAULT '',
|
|
92
|
+
is_embed INTEGER NOT NULL DEFAULT 0,
|
|
93
|
+
created_at TEXT NOT NULL,
|
|
94
|
+
updated_at TEXT NOT NULL,
|
|
95
|
+
PRIMARY KEY (
|
|
96
|
+
source_note_id,
|
|
97
|
+
target_type,
|
|
98
|
+
target_note_id,
|
|
99
|
+
target_entity_type,
|
|
100
|
+
target_entity_id,
|
|
101
|
+
raw_target,
|
|
102
|
+
is_embed
|
|
103
|
+
),
|
|
104
|
+
FOREIGN KEY (source_note_id) REFERENCES notes(id) ON DELETE CASCADE,
|
|
105
|
+
FOREIGN KEY (target_note_id) REFERENCES notes(id) ON DELETE CASCADE
|
|
106
|
+
);
|
|
107
|
+
|
|
108
|
+
CREATE INDEX IF NOT EXISTS idx_wiki_link_edges_source
|
|
109
|
+
ON wiki_link_edges (source_note_id, updated_at DESC);
|
|
110
|
+
|
|
111
|
+
CREATE INDEX IF NOT EXISTS idx_wiki_link_edges_target_note
|
|
112
|
+
ON wiki_link_edges (target_note_id, updated_at DESC);
|
|
113
|
+
|
|
114
|
+
CREATE INDEX IF NOT EXISTS idx_wiki_link_edges_target_entity
|
|
115
|
+
ON wiki_link_edges (target_entity_type, target_entity_id, updated_at DESC);
|
|
116
|
+
|
|
117
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS wiki_pages_fts
|
|
118
|
+
USING fts5(
|
|
119
|
+
note_id UNINDEXED,
|
|
120
|
+
title,
|
|
121
|
+
slug,
|
|
122
|
+
aliases,
|
|
123
|
+
summary,
|
|
124
|
+
content_plain,
|
|
125
|
+
linked_entities
|
|
126
|
+
);
|
|
127
|
+
|
|
128
|
+
INSERT INTO wiki_pages_fts (note_id, title, slug, aliases, summary, content_plain, linked_entities)
|
|
129
|
+
SELECT
|
|
130
|
+
notes.id,
|
|
131
|
+
notes.title,
|
|
132
|
+
notes.slug,
|
|
133
|
+
COALESCE(notes.aliases_json, '[]'),
|
|
134
|
+
COALESCE(notes.summary, ''),
|
|
135
|
+
notes.content_plain,
|
|
136
|
+
''
|
|
137
|
+
FROM notes
|
|
138
|
+
WHERE NOT EXISTS (
|
|
139
|
+
SELECT 1
|
|
140
|
+
FROM wiki_pages_fts
|
|
141
|
+
WHERE wiki_pages_fts.note_id = notes.id
|
|
142
|
+
);
|
|
143
|
+
|
|
144
|
+
CREATE TABLE IF NOT EXISTS wiki_media_assets (
|
|
145
|
+
id TEXT PRIMARY KEY,
|
|
146
|
+
space_id TEXT NOT NULL,
|
|
147
|
+
note_id TEXT,
|
|
148
|
+
label TEXT NOT NULL,
|
|
149
|
+
mime_type TEXT NOT NULL,
|
|
150
|
+
file_name TEXT NOT NULL,
|
|
151
|
+
file_path TEXT NOT NULL,
|
|
152
|
+
size_bytes INTEGER NOT NULL DEFAULT 0,
|
|
153
|
+
checksum TEXT NOT NULL DEFAULT '',
|
|
154
|
+
transcript_note_id TEXT,
|
|
155
|
+
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
156
|
+
created_at TEXT NOT NULL,
|
|
157
|
+
updated_at TEXT NOT NULL,
|
|
158
|
+
FOREIGN KEY (note_id) REFERENCES notes(id) ON DELETE SET NULL,
|
|
159
|
+
FOREIGN KEY (transcript_note_id) REFERENCES notes(id) ON DELETE SET NULL
|
|
160
|
+
);
|
|
161
|
+
|
|
162
|
+
CREATE INDEX IF NOT EXISTS idx_wiki_media_assets_space
|
|
163
|
+
ON wiki_media_assets (space_id, updated_at DESC);
|
|
164
|
+
|
|
165
|
+
CREATE TABLE IF NOT EXISTS wiki_llm_profiles (
|
|
166
|
+
id TEXT PRIMARY KEY,
|
|
167
|
+
label TEXT NOT NULL,
|
|
168
|
+
provider TEXT NOT NULL,
|
|
169
|
+
base_url TEXT NOT NULL DEFAULT '',
|
|
170
|
+
model TEXT NOT NULL,
|
|
171
|
+
secret_id TEXT,
|
|
172
|
+
system_prompt TEXT NOT NULL DEFAULT '',
|
|
173
|
+
enabled INTEGER NOT NULL DEFAULT 1,
|
|
174
|
+
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
175
|
+
created_at TEXT NOT NULL,
|
|
176
|
+
updated_at TEXT NOT NULL
|
|
177
|
+
);
|
|
178
|
+
|
|
179
|
+
CREATE TABLE IF NOT EXISTS wiki_embedding_profiles (
|
|
180
|
+
id TEXT PRIMARY KEY,
|
|
181
|
+
label TEXT NOT NULL,
|
|
182
|
+
provider TEXT NOT NULL,
|
|
183
|
+
base_url TEXT NOT NULL DEFAULT '',
|
|
184
|
+
model TEXT NOT NULL,
|
|
185
|
+
secret_id TEXT,
|
|
186
|
+
dimensions INTEGER,
|
|
187
|
+
chunk_size INTEGER NOT NULL DEFAULT 1200,
|
|
188
|
+
chunk_overlap INTEGER NOT NULL DEFAULT 200,
|
|
189
|
+
enabled INTEGER NOT NULL DEFAULT 1,
|
|
190
|
+
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
191
|
+
created_at TEXT NOT NULL,
|
|
192
|
+
updated_at TEXT NOT NULL
|
|
193
|
+
);
|
|
194
|
+
|
|
195
|
+
CREATE TABLE IF NOT EXISTS wiki_embedding_chunks (
|
|
196
|
+
id TEXT PRIMARY KEY,
|
|
197
|
+
note_id TEXT NOT NULL,
|
|
198
|
+
space_id TEXT NOT NULL,
|
|
199
|
+
profile_id TEXT NOT NULL,
|
|
200
|
+
chunk_key TEXT NOT NULL,
|
|
201
|
+
heading_path TEXT NOT NULL DEFAULT '',
|
|
202
|
+
content_text TEXT NOT NULL,
|
|
203
|
+
vector_json TEXT NOT NULL,
|
|
204
|
+
created_at TEXT NOT NULL,
|
|
205
|
+
updated_at TEXT NOT NULL,
|
|
206
|
+
FOREIGN KEY (note_id) REFERENCES notes(id) ON DELETE CASCADE,
|
|
207
|
+
FOREIGN KEY (profile_id) REFERENCES wiki_embedding_profiles(id) ON DELETE CASCADE
|
|
208
|
+
);
|
|
209
|
+
|
|
210
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_wiki_embedding_chunks_unique
|
|
211
|
+
ON wiki_embedding_chunks (note_id, profile_id, chunk_key);
|
|
212
|
+
|
|
213
|
+
CREATE INDEX IF NOT EXISTS idx_wiki_embedding_chunks_profile_space
|
|
214
|
+
ON wiki_embedding_chunks (profile_id, space_id, updated_at DESC);
|
|
215
|
+
|
|
216
|
+
CREATE TABLE IF NOT EXISTS wiki_ingest_jobs (
|
|
217
|
+
id TEXT PRIMARY KEY,
|
|
218
|
+
space_id TEXT NOT NULL,
|
|
219
|
+
llm_profile_id TEXT,
|
|
220
|
+
status TEXT NOT NULL,
|
|
221
|
+
source_kind TEXT NOT NULL,
|
|
222
|
+
source_locator TEXT NOT NULL DEFAULT '',
|
|
223
|
+
mime_type TEXT NOT NULL DEFAULT '',
|
|
224
|
+
title_hint TEXT NOT NULL DEFAULT '',
|
|
225
|
+
summary TEXT NOT NULL DEFAULT '',
|
|
226
|
+
page_note_id TEXT,
|
|
227
|
+
created_by_actor TEXT,
|
|
228
|
+
error_message TEXT NOT NULL DEFAULT '',
|
|
229
|
+
created_at TEXT NOT NULL,
|
|
230
|
+
updated_at TEXT NOT NULL,
|
|
231
|
+
completed_at TEXT,
|
|
232
|
+
FOREIGN KEY (llm_profile_id) REFERENCES wiki_llm_profiles(id) ON DELETE SET NULL,
|
|
233
|
+
FOREIGN KEY (page_note_id) REFERENCES notes(id) ON DELETE SET NULL
|
|
234
|
+
);
|
|
235
|
+
|
|
236
|
+
CREATE INDEX IF NOT EXISTS idx_wiki_ingest_jobs_space
|
|
237
|
+
ON wiki_ingest_jobs (space_id, created_at DESC);
|
|
238
|
+
|
|
239
|
+
CREATE TABLE IF NOT EXISTS wiki_ingest_job_items (
|
|
240
|
+
id TEXT PRIMARY KEY,
|
|
241
|
+
job_id TEXT NOT NULL,
|
|
242
|
+
item_type TEXT NOT NULL,
|
|
243
|
+
status TEXT NOT NULL,
|
|
244
|
+
note_id TEXT,
|
|
245
|
+
media_asset_id TEXT,
|
|
246
|
+
payload_json TEXT NOT NULL DEFAULT '{}',
|
|
247
|
+
created_at TEXT NOT NULL,
|
|
248
|
+
updated_at TEXT NOT NULL,
|
|
249
|
+
FOREIGN KEY (job_id) REFERENCES wiki_ingest_jobs(id) ON DELETE CASCADE,
|
|
250
|
+
FOREIGN KEY (note_id) REFERENCES notes(id) ON DELETE SET NULL,
|
|
251
|
+
FOREIGN KEY (media_asset_id) REFERENCES wiki_media_assets(id) ON DELETE SET NULL
|
|
252
|
+
);
|
|
253
|
+
|
|
254
|
+
CREATE INDEX IF NOT EXISTS idx_wiki_ingest_job_items_job
|
|
255
|
+
ON wiki_ingest_job_items (job_id, created_at DESC);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
ALTER TABLE notes
|
|
2
|
+
ADD COLUMN parent_slug TEXT;
|
|
3
|
+
|
|
4
|
+
ALTER TABLE notes
|
|
5
|
+
ADD COLUMN index_order INTEGER NOT NULL DEFAULT 0;
|
|
6
|
+
|
|
7
|
+
ALTER TABLE notes
|
|
8
|
+
ADD COLUMN show_in_index INTEGER NOT NULL DEFAULT 1;
|
|
9
|
+
|
|
10
|
+
CREATE INDEX IF NOT EXISTS idx_notes_space_parent_order
|
|
11
|
+
ON notes (space_id, parent_slug, index_order, updated_at DESC);
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
ALTER TABLE wiki_ingest_jobs
|
|
2
|
+
ADD COLUMN phase TEXT NOT NULL DEFAULT 'queued';
|
|
3
|
+
|
|
4
|
+
ALTER TABLE wiki_ingest_jobs
|
|
5
|
+
ADD COLUMN progress_percent INTEGER NOT NULL DEFAULT 0;
|
|
6
|
+
|
|
7
|
+
ALTER TABLE wiki_ingest_jobs
|
|
8
|
+
ADD COLUMN total_files INTEGER NOT NULL DEFAULT 0;
|
|
9
|
+
|
|
10
|
+
ALTER TABLE wiki_ingest_jobs
|
|
11
|
+
ADD COLUMN processed_files INTEGER NOT NULL DEFAULT 0;
|
|
12
|
+
|
|
13
|
+
ALTER TABLE wiki_ingest_jobs
|
|
14
|
+
ADD COLUMN created_page_count INTEGER NOT NULL DEFAULT 0;
|
|
15
|
+
|
|
16
|
+
ALTER TABLE wiki_ingest_jobs
|
|
17
|
+
ADD COLUMN created_entity_count INTEGER NOT NULL DEFAULT 0;
|
|
18
|
+
|
|
19
|
+
ALTER TABLE wiki_ingest_jobs
|
|
20
|
+
ADD COLUMN accepted_count INTEGER NOT NULL DEFAULT 0;
|
|
21
|
+
|
|
22
|
+
ALTER TABLE wiki_ingest_jobs
|
|
23
|
+
ADD COLUMN rejected_count INTEGER NOT NULL DEFAULT 0;
|
|
24
|
+
|
|
25
|
+
ALTER TABLE wiki_ingest_jobs
|
|
26
|
+
ADD COLUMN latest_message TEXT NOT NULL DEFAULT '';
|
|
27
|
+
|
|
28
|
+
ALTER TABLE wiki_ingest_jobs
|
|
29
|
+
ADD COLUMN input_json TEXT NOT NULL DEFAULT '{}';
|
|
30
|
+
|
|
31
|
+
CREATE TABLE IF NOT EXISTS wiki_ingest_job_logs (
|
|
32
|
+
id TEXT PRIMARY KEY,
|
|
33
|
+
job_id TEXT NOT NULL,
|
|
34
|
+
level TEXT NOT NULL DEFAULT 'info',
|
|
35
|
+
message TEXT NOT NULL,
|
|
36
|
+
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
37
|
+
created_at TEXT NOT NULL,
|
|
38
|
+
FOREIGN KEY (job_id) REFERENCES wiki_ingest_jobs(id) ON DELETE CASCADE
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
CREATE INDEX IF NOT EXISTS idx_wiki_ingest_job_logs_job
|
|
42
|
+
ON wiki_ingest_job_logs (job_id, created_at ASC);
|
|
43
|
+
|
|
44
|
+
CREATE TABLE IF NOT EXISTS wiki_ingest_job_assets (
|
|
45
|
+
id TEXT PRIMARY KEY,
|
|
46
|
+
job_id TEXT NOT NULL,
|
|
47
|
+
status TEXT NOT NULL DEFAULT 'queued',
|
|
48
|
+
source_kind TEXT NOT NULL,
|
|
49
|
+
source_locator TEXT NOT NULL DEFAULT '',
|
|
50
|
+
file_name TEXT NOT NULL DEFAULT '',
|
|
51
|
+
mime_type TEXT NOT NULL DEFAULT '',
|
|
52
|
+
file_path TEXT NOT NULL DEFAULT '',
|
|
53
|
+
size_bytes INTEGER NOT NULL DEFAULT 0,
|
|
54
|
+
checksum TEXT NOT NULL DEFAULT '',
|
|
55
|
+
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
56
|
+
created_at TEXT NOT NULL,
|
|
57
|
+
updated_at TEXT NOT NULL,
|
|
58
|
+
FOREIGN KEY (job_id) REFERENCES wiki_ingest_jobs(id) ON DELETE CASCADE
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
CREATE INDEX IF NOT EXISTS idx_wiki_ingest_job_assets_job
|
|
62
|
+
ON wiki_ingest_job_assets (job_id, created_at ASC);
|
|
63
|
+
|
|
64
|
+
CREATE TABLE IF NOT EXISTS wiki_ingest_job_candidates (
|
|
65
|
+
id TEXT PRIMARY KEY,
|
|
66
|
+
job_id TEXT NOT NULL,
|
|
67
|
+
source_asset_id TEXT,
|
|
68
|
+
candidate_type TEXT NOT NULL,
|
|
69
|
+
status TEXT NOT NULL DEFAULT 'suggested',
|
|
70
|
+
title TEXT NOT NULL DEFAULT '',
|
|
71
|
+
summary TEXT NOT NULL DEFAULT '',
|
|
72
|
+
target_key TEXT NOT NULL DEFAULT '',
|
|
73
|
+
payload_json TEXT NOT NULL DEFAULT '{}',
|
|
74
|
+
published_note_id TEXT,
|
|
75
|
+
published_entity_type TEXT,
|
|
76
|
+
published_entity_id TEXT,
|
|
77
|
+
created_at TEXT NOT NULL,
|
|
78
|
+
updated_at TEXT NOT NULL,
|
|
79
|
+
FOREIGN KEY (job_id) REFERENCES wiki_ingest_jobs(id) ON DELETE CASCADE,
|
|
80
|
+
FOREIGN KEY (source_asset_id) REFERENCES wiki_ingest_job_assets(id) ON DELETE SET NULL,
|
|
81
|
+
FOREIGN KEY (published_note_id) REFERENCES notes(id) ON DELETE SET NULL
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
CREATE INDEX IF NOT EXISTS idx_wiki_ingest_job_candidates_job
|
|
85
|
+
ON wiki_ingest_job_candidates (job_id, created_at ASC);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS diagnostic_logs (
|
|
2
|
+
id TEXT PRIMARY KEY,
|
|
3
|
+
level TEXT NOT NULL DEFAULT 'info',
|
|
4
|
+
source TEXT NOT NULL DEFAULT 'server',
|
|
5
|
+
scope TEXT NOT NULL,
|
|
6
|
+
event_key TEXT NOT NULL DEFAULT '',
|
|
7
|
+
message TEXT NOT NULL,
|
|
8
|
+
route TEXT,
|
|
9
|
+
function_name TEXT,
|
|
10
|
+
request_id TEXT,
|
|
11
|
+
entity_type TEXT,
|
|
12
|
+
entity_id TEXT,
|
|
13
|
+
job_id TEXT,
|
|
14
|
+
details_json TEXT NOT NULL DEFAULT '{}',
|
|
15
|
+
created_at TEXT NOT NULL
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
CREATE INDEX IF NOT EXISTS idx_diagnostic_logs_created
|
|
19
|
+
ON diagnostic_logs (created_at DESC);
|
|
20
|
+
|
|
21
|
+
CREATE INDEX IF NOT EXISTS idx_diagnostic_logs_scope
|
|
22
|
+
ON diagnostic_logs (scope, created_at DESC);
|
|
23
|
+
|
|
24
|
+
CREATE INDEX IF NOT EXISTS idx_diagnostic_logs_job
|
|
25
|
+
ON diagnostic_logs (job_id, created_at DESC);
|
|
26
|
+
|
|
27
|
+
CREATE INDEX IF NOT EXISTS idx_diagnostic_logs_entity
|
|
28
|
+
ON diagnostic_logs (entity_type, entity_id, created_at DESC);
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS questionnaire_instruments (
|
|
2
|
+
id TEXT PRIMARY KEY,
|
|
3
|
+
key TEXT NOT NULL UNIQUE,
|
|
4
|
+
slug TEXT NOT NULL UNIQUE,
|
|
5
|
+
title TEXT NOT NULL,
|
|
6
|
+
subtitle TEXT NOT NULL DEFAULT '',
|
|
7
|
+
description TEXT NOT NULL DEFAULT '',
|
|
8
|
+
aliases_json TEXT NOT NULL DEFAULT '[]',
|
|
9
|
+
symptom_domains_json TEXT NOT NULL DEFAULT '[]',
|
|
10
|
+
tags_json TEXT NOT NULL DEFAULT '[]',
|
|
11
|
+
source_class TEXT NOT NULL,
|
|
12
|
+
availability TEXT NOT NULL,
|
|
13
|
+
is_self_report INTEGER NOT NULL DEFAULT 1,
|
|
14
|
+
is_system INTEGER NOT NULL DEFAULT 0,
|
|
15
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
16
|
+
owner_user_id TEXT,
|
|
17
|
+
current_draft_version_id TEXT,
|
|
18
|
+
current_published_version_id TEXT,
|
|
19
|
+
created_at TEXT NOT NULL,
|
|
20
|
+
updated_at TEXT NOT NULL
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
CREATE TABLE IF NOT EXISTS questionnaire_versions (
|
|
24
|
+
id TEXT PRIMARY KEY,
|
|
25
|
+
instrument_id TEXT NOT NULL REFERENCES questionnaire_instruments(id) ON DELETE CASCADE,
|
|
26
|
+
version_number INTEGER NOT NULL,
|
|
27
|
+
status TEXT NOT NULL,
|
|
28
|
+
label TEXT NOT NULL DEFAULT '',
|
|
29
|
+
definition_json TEXT NOT NULL,
|
|
30
|
+
scoring_json TEXT NOT NULL,
|
|
31
|
+
provenance_json TEXT NOT NULL,
|
|
32
|
+
is_read_only INTEGER NOT NULL DEFAULT 0,
|
|
33
|
+
created_by TEXT,
|
|
34
|
+
created_at TEXT NOT NULL,
|
|
35
|
+
updated_at TEXT NOT NULL,
|
|
36
|
+
published_at TEXT,
|
|
37
|
+
UNIQUE (instrument_id, version_number)
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
CREATE TABLE IF NOT EXISTS questionnaire_runs (
|
|
41
|
+
id TEXT PRIMARY KEY,
|
|
42
|
+
instrument_id TEXT NOT NULL REFERENCES questionnaire_instruments(id) ON DELETE CASCADE,
|
|
43
|
+
version_id TEXT NOT NULL REFERENCES questionnaire_versions(id) ON DELETE CASCADE,
|
|
44
|
+
user_id TEXT,
|
|
45
|
+
status TEXT NOT NULL,
|
|
46
|
+
progress_index INTEGER NOT NULL DEFAULT 0,
|
|
47
|
+
started_at TEXT NOT NULL,
|
|
48
|
+
updated_at TEXT NOT NULL,
|
|
49
|
+
completed_at TEXT
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
CREATE TABLE IF NOT EXISTS questionnaire_answers (
|
|
53
|
+
id TEXT PRIMARY KEY,
|
|
54
|
+
run_id TEXT NOT NULL REFERENCES questionnaire_runs(id) ON DELETE CASCADE,
|
|
55
|
+
item_id TEXT NOT NULL,
|
|
56
|
+
option_key TEXT,
|
|
57
|
+
value_text TEXT NOT NULL DEFAULT '',
|
|
58
|
+
numeric_value REAL,
|
|
59
|
+
answer_json TEXT NOT NULL DEFAULT '{}',
|
|
60
|
+
created_at TEXT NOT NULL,
|
|
61
|
+
updated_at TEXT NOT NULL,
|
|
62
|
+
UNIQUE (run_id, item_id)
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
CREATE TABLE IF NOT EXISTS questionnaire_run_scores (
|
|
66
|
+
id TEXT PRIMARY KEY,
|
|
67
|
+
run_id TEXT NOT NULL REFERENCES questionnaire_runs(id) ON DELETE CASCADE,
|
|
68
|
+
score_key TEXT NOT NULL,
|
|
69
|
+
label TEXT NOT NULL,
|
|
70
|
+
value_numeric REAL,
|
|
71
|
+
value_text TEXT,
|
|
72
|
+
band_label TEXT NOT NULL DEFAULT '',
|
|
73
|
+
severity TEXT NOT NULL DEFAULT '',
|
|
74
|
+
sort_order INTEGER NOT NULL DEFAULT 0,
|
|
75
|
+
details_json TEXT NOT NULL DEFAULT '{}',
|
|
76
|
+
created_at TEXT NOT NULL,
|
|
77
|
+
UNIQUE (run_id, score_key)
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
CREATE INDEX IF NOT EXISTS idx_questionnaire_versions_instrument
|
|
81
|
+
ON questionnaire_versions (instrument_id, version_number);
|
|
82
|
+
|
|
83
|
+
CREATE INDEX IF NOT EXISTS idx_questionnaire_runs_instrument
|
|
84
|
+
ON questionnaire_runs (instrument_id, updated_at DESC);
|
|
85
|
+
|
|
86
|
+
CREATE INDEX IF NOT EXISTS idx_questionnaire_runs_version
|
|
87
|
+
ON questionnaire_runs (version_id, updated_at DESC);
|
|
88
|
+
|
|
89
|
+
CREATE INDEX IF NOT EXISTS idx_questionnaire_runs_user
|
|
90
|
+
ON questionnaire_runs (user_id, updated_at DESC);
|
|
91
|
+
|
|
92
|
+
CREATE INDEX IF NOT EXISTS idx_questionnaire_answers_run
|
|
93
|
+
ON questionnaire_answers (run_id, item_id);
|
|
94
|
+
|
|
95
|
+
CREATE INDEX IF NOT EXISTS idx_questionnaire_run_scores_run
|
|
96
|
+
ON questionnaire_run_scores (run_id, sort_order, score_key);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS ai_model_connections (
|
|
2
|
+
id TEXT PRIMARY KEY,
|
|
3
|
+
label TEXT NOT NULL,
|
|
4
|
+
provider TEXT NOT NULL,
|
|
5
|
+
auth_mode TEXT NOT NULL,
|
|
6
|
+
base_url TEXT NOT NULL,
|
|
7
|
+
model TEXT NOT NULL,
|
|
8
|
+
account_label TEXT,
|
|
9
|
+
secret_id TEXT,
|
|
10
|
+
enabled INTEGER NOT NULL DEFAULT 1,
|
|
11
|
+
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
12
|
+
created_at TEXT NOT NULL,
|
|
13
|
+
updated_at TEXT NOT NULL
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
ALTER TABLE app_settings
|
|
17
|
+
ADD COLUMN forge_basic_chat_connection_id TEXT NOT NULL DEFAULT '';
|
|
18
|
+
|
|
19
|
+
ALTER TABLE app_settings
|
|
20
|
+
ADD COLUMN forge_basic_chat_model TEXT NOT NULL DEFAULT 'gpt-5.4-mini';
|
|
21
|
+
|
|
22
|
+
ALTER TABLE app_settings
|
|
23
|
+
ADD COLUMN forge_wiki_connection_id TEXT NOT NULL DEFAULT '';
|
|
24
|
+
|
|
25
|
+
ALTER TABLE app_settings
|
|
26
|
+
ADD COLUMN forge_wiki_model TEXT NOT NULL DEFAULT 'gpt-5.4-mini';
|