forge-openclaw-plugin 0.2.24 → 0.2.26
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 +13 -0
- package/dist/assets/{board-_C6oMy5w.js → board-ta0rUHOf.js} +3 -3
- package/dist/assets/{board-_C6oMy5w.js.map → board-ta0rUHOf.js.map} +1 -1
- package/dist/assets/index-Ro0ZF_az.css +1 -0
- package/dist/assets/index-ytlpSj23.js +79 -0
- package/dist/assets/index-ytlpSj23.js.map +1 -0
- package/dist/assets/{motion-D4sZgCHd.js → motion-fBKPB6yw.js} +3 -3
- package/dist/assets/motion-fBKPB6yw.js.map +1 -0
- package/dist/assets/{table-BWzTaky1.js → table-C-IGTQni.js} +2 -2
- package/dist/assets/{table-BWzTaky1.js.map → table-C-IGTQni.js.map} +1 -1
- package/dist/assets/{ui-BzK4azQb.js → ui-DInOpaYF.js} +2 -2
- package/dist/assets/{ui-BzK4azQb.js.map → ui-DInOpaYF.js.map} +1 -1
- package/dist/assets/vendor-lE3tZJcC.js +876 -0
- package/dist/assets/vendor-lE3tZJcC.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 +51 -15
- package/dist/openclaw/parity.d.ts +1 -1
- package/dist/openclaw/parity.js +29 -0
- package/dist/openclaw/plugin-entry-shared.d.ts +1 -0
- package/dist/openclaw/plugin-entry-shared.js +31 -6
- package/dist/openclaw/plugin-sdk-types.d.ts +29 -0
- package/dist/openclaw/routes.js +236 -0
- package/dist/openclaw/session-bootstrap.d.ts +78 -0
- package/dist/openclaw/session-bootstrap.js +240 -0
- package/dist/openclaw/tools.js +279 -6
- 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/{app.js → server/src/app.js} +992 -25
- package/dist/server/server/src/connectors/box-registry.js +188 -0
- package/dist/server/{db.js → server/src/db.js} +6 -0
- package/dist/server/server/src/debug.js +19 -0
- package/dist/server/server/src/discovery-advertiser.js +114 -0
- package/dist/server/{health.js → server/src/health.js} +39 -11
- package/dist/server/{index.js → server/src/index.js} +4 -0
- package/dist/server/{managers → server/src/managers}/platform/llm-manager.js +40 -4
- package/dist/server/{managers → server/src/managers}/platform/openai-responses-provider.js +129 -19
- package/dist/server/server/src/movement.js +2935 -0
- package/dist/server/{openapi.js → server/src/openapi.js} +628 -5
- package/dist/server/{psyche-types.js → server/src/psyche-types.js} +15 -1
- package/dist/server/server/src/questionnaire-flow.js +552 -0
- package/dist/server/server/src/questionnaire-seeds.js +853 -0
- package/dist/server/server/src/questionnaire-types.js +340 -0
- package/dist/server/server/src/repositories/ai-connectors.js +1207 -0
- package/dist/server/server/src/repositories/ai-processors.js +547 -0
- package/dist/server/{repositories → server/src/repositories}/calendar.js +1 -1
- package/dist/server/{repositories → server/src/repositories}/entity-ownership.js +9 -1
- package/dist/server/{repositories → server/src/repositories}/habits.js +69 -5
- package/dist/server/server/src/repositories/model-settings.js +216 -0
- package/dist/server/{repositories → server/src/repositories}/notes.js +57 -15
- package/dist/server/{repositories → server/src/repositories}/preferences.js +124 -0
- package/dist/server/server/src/repositories/questionnaires.js +1338 -0
- package/dist/server/{repositories → server/src/repositories}/settings.js +156 -12
- package/dist/server/server/src/repositories/surface-layouts.js +76 -0
- package/dist/server/{repositories → server/src/repositories}/wiki-memory.js +5 -1
- package/dist/server/{services → server/src/services}/calendar-runtime.js +775 -58
- package/dist/server/{services → server/src/services}/entity-crud.js +81 -2
- package/dist/server/server/src/services/google-calendar-oauth-config.js +176 -0
- package/dist/server/server/src/services/openai-codex-oauth.js +153 -0
- package/dist/server/server/src/services/psyche-observation-calendar.js +46 -0
- package/dist/server/{types.js → server/src/types.js} +621 -14
- package/dist/server/server/src/watch-mobile.js +562 -0
- package/dist/server/{web.js → server/src/web.js} +30 -4
- package/dist/server/src/components/customization/utility-widgets.js +330 -0
- package/dist/server/src/components/workbench-boxes/health/health-boxes.js +92 -0
- package/dist/server/src/components/workbench-boxes/kanban/kanban-boxes.js +128 -0
- package/dist/server/src/components/workbench-boxes/movement/movement-boxes.js +37 -0
- package/dist/server/src/components/workbench-boxes/notes/notes-boxes.js +114 -0
- package/dist/server/src/components/workbench-boxes/projects/projects-boxes.js +57 -0
- package/dist/server/src/components/workbench-boxes/shared/define-workbench-box.js +4 -0
- package/dist/server/src/components/workbench-boxes/shared/generic-node-view.js +13 -0
- package/dist/server/src/components/workbench-boxes/today/today-boxes.js +63 -0
- package/dist/server/src/lib/api-error.js +37 -0
- package/dist/server/src/lib/api.js +1859 -0
- package/dist/server/src/lib/calendar-name-deduper.js +144 -0
- package/dist/server/src/lib/diagnostics.js +67 -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 +234 -0
- package/dist/server/src/lib/snapshot-normalizer.js +374 -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/nodes.js +15 -0
- package/dist/server/src/lib/workbench/registry.js +73 -0
- package/dist/server/src/lib/workbench/runtime.js +181 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +6 -1
- package/server/index.js +68 -0
- package/server/migrations/024_questionnaires.sql +96 -0
- package/server/migrations/025_ai_model_connections.sql +26 -0
- package/server/migrations/026_custom_theme_settings.sql +2 -0
- package/server/migrations/027_ai_processors.sql +31 -0
- package/server/migrations/028_movement_domain.sql +136 -0
- package/server/migrations/029_watch_micro_capture.sql +23 -0
- package/server/migrations/030_surface_layouts.sql +5 -0
- package/server/migrations/031_ai_processor_runtime_upgrades.sql +10 -0
- package/server/migrations/032_ai_connectors.sql +44 -0
- package/server/migrations/033_movement_trip_point_sync.sql +36 -0
- package/server/migrations/034_movement_segment_sync.sql +49 -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/skills/forge-openclaw/SKILL.md +15 -1
- package/skills/forge-openclaw/entity_conversation_playbooks.md +523 -87
- package/skills/forge-openclaw/psyche_entity_playbooks.md +331 -221
- package/dist/assets/index-DTCwBWAs.js +0 -65
- package/dist/assets/index-DTCwBWAs.js.map +0 -1
- package/dist/assets/index-DttXlAgi.css +0 -1
- package/dist/assets/motion-D4sZgCHd.js.map +0 -1
- package/dist/assets/vendor-De38P6YR.js +0 -729
- package/dist/assets/vendor-De38P6YR.js.map +0 -1
- package/dist/assets/viz-C6hfyqzu.js +0 -34
- package/dist/assets/viz-C6hfyqzu.js.map +0 -1
- package/skills/forge-openclaw/cron_jobs.md +0 -395
- /package/dist/server/{demo-data.js → server/src/demo-data.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/{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/search-index-manager.js +0 -0
- /package/dist/server/{managers → server/src/managers}/platform/secrets-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}/runtime.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/{repositories → server/src/repositories}/activity-events.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}/event-log.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/goals.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}/rewards.js +0 -0
- /package/dist/server/{repositories → server/src/repositories}/strategies.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}/tasks.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}/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}/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
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS movement_places (
|
|
2
|
+
id TEXT PRIMARY KEY,
|
|
3
|
+
external_uid TEXT NOT NULL DEFAULT '',
|
|
4
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
5
|
+
label TEXT NOT NULL,
|
|
6
|
+
aliases_json TEXT NOT NULL DEFAULT '[]',
|
|
7
|
+
latitude REAL NOT NULL,
|
|
8
|
+
longitude REAL NOT NULL,
|
|
9
|
+
radius_meters REAL NOT NULL DEFAULT 100,
|
|
10
|
+
category_tags_json TEXT NOT NULL DEFAULT '[]',
|
|
11
|
+
visibility TEXT NOT NULL DEFAULT 'shared',
|
|
12
|
+
wiki_note_id TEXT REFERENCES notes(id) ON DELETE SET NULL,
|
|
13
|
+
linked_entities_json TEXT NOT NULL DEFAULT '[]',
|
|
14
|
+
linked_people_json TEXT NOT NULL DEFAULT '[]',
|
|
15
|
+
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
16
|
+
source TEXT NOT NULL DEFAULT 'user',
|
|
17
|
+
created_at TEXT NOT NULL,
|
|
18
|
+
updated_at TEXT NOT NULL,
|
|
19
|
+
UNIQUE (user_id, source, external_uid)
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
CREATE INDEX IF NOT EXISTS idx_movement_places_user
|
|
23
|
+
ON movement_places(user_id, updated_at DESC);
|
|
24
|
+
|
|
25
|
+
CREATE TABLE IF NOT EXISTS movement_settings (
|
|
26
|
+
user_id TEXT PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE,
|
|
27
|
+
tracking_enabled INTEGER NOT NULL DEFAULT 0,
|
|
28
|
+
publish_mode TEXT NOT NULL DEFAULT 'auto_publish',
|
|
29
|
+
retention_mode TEXT NOT NULL DEFAULT 'aggregates_only',
|
|
30
|
+
location_permission_status TEXT NOT NULL DEFAULT 'not_determined',
|
|
31
|
+
motion_permission_status TEXT NOT NULL DEFAULT 'unknown',
|
|
32
|
+
background_tracking_ready INTEGER NOT NULL DEFAULT 0,
|
|
33
|
+
last_companion_sync_at 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 movement_stays (
|
|
40
|
+
id TEXT PRIMARY KEY,
|
|
41
|
+
external_uid TEXT NOT NULL,
|
|
42
|
+
pairing_session_id TEXT REFERENCES companion_pairing_sessions(id) ON DELETE SET NULL,
|
|
43
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
44
|
+
place_id TEXT REFERENCES movement_places(id) ON DELETE SET NULL,
|
|
45
|
+
label TEXT NOT NULL DEFAULT '',
|
|
46
|
+
status TEXT NOT NULL DEFAULT 'completed',
|
|
47
|
+
classification TEXT NOT NULL DEFAULT 'stationary',
|
|
48
|
+
started_at TEXT NOT NULL,
|
|
49
|
+
ended_at TEXT NOT NULL,
|
|
50
|
+
center_latitude REAL NOT NULL,
|
|
51
|
+
center_longitude REAL NOT NULL,
|
|
52
|
+
radius_meters REAL NOT NULL DEFAULT 100,
|
|
53
|
+
sample_count INTEGER NOT NULL DEFAULT 0,
|
|
54
|
+
weather_json TEXT NOT NULL DEFAULT '{}',
|
|
55
|
+
metrics_json TEXT NOT NULL DEFAULT '{}',
|
|
56
|
+
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
57
|
+
published_note_id TEXT REFERENCES notes(id) ON DELETE SET NULL,
|
|
58
|
+
created_at TEXT NOT NULL,
|
|
59
|
+
updated_at TEXT NOT NULL,
|
|
60
|
+
UNIQUE (user_id, external_uid)
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
CREATE INDEX IF NOT EXISTS idx_movement_stays_user
|
|
64
|
+
ON movement_stays(user_id, started_at DESC);
|
|
65
|
+
|
|
66
|
+
CREATE TABLE IF NOT EXISTS movement_trips (
|
|
67
|
+
id TEXT PRIMARY KEY,
|
|
68
|
+
external_uid TEXT NOT NULL,
|
|
69
|
+
pairing_session_id TEXT REFERENCES companion_pairing_sessions(id) ON DELETE SET NULL,
|
|
70
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
71
|
+
start_place_id TEXT REFERENCES movement_places(id) ON DELETE SET NULL,
|
|
72
|
+
end_place_id TEXT REFERENCES movement_places(id) ON DELETE SET NULL,
|
|
73
|
+
label TEXT NOT NULL DEFAULT '',
|
|
74
|
+
status TEXT NOT NULL DEFAULT 'completed',
|
|
75
|
+
travel_mode TEXT NOT NULL DEFAULT 'travel',
|
|
76
|
+
activity_type TEXT NOT NULL DEFAULT '',
|
|
77
|
+
started_at TEXT NOT NULL,
|
|
78
|
+
ended_at TEXT NOT NULL,
|
|
79
|
+
distance_meters REAL NOT NULL DEFAULT 0,
|
|
80
|
+
moving_seconds INTEGER NOT NULL DEFAULT 0,
|
|
81
|
+
idle_seconds INTEGER NOT NULL DEFAULT 0,
|
|
82
|
+
average_speed_mps REAL,
|
|
83
|
+
max_speed_mps REAL,
|
|
84
|
+
calories_kcal REAL,
|
|
85
|
+
expected_met REAL,
|
|
86
|
+
weather_json TEXT NOT NULL DEFAULT '{}',
|
|
87
|
+
tags_json TEXT NOT NULL DEFAULT '[]',
|
|
88
|
+
linked_entities_json TEXT NOT NULL DEFAULT '[]',
|
|
89
|
+
linked_people_json TEXT NOT NULL DEFAULT '[]',
|
|
90
|
+
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
91
|
+
published_note_id TEXT REFERENCES notes(id) ON DELETE SET NULL,
|
|
92
|
+
created_at TEXT NOT NULL,
|
|
93
|
+
updated_at TEXT NOT NULL,
|
|
94
|
+
UNIQUE (user_id, external_uid)
|
|
95
|
+
);
|
|
96
|
+
|
|
97
|
+
CREATE INDEX IF NOT EXISTS idx_movement_trips_user
|
|
98
|
+
ON movement_trips(user_id, started_at DESC);
|
|
99
|
+
|
|
100
|
+
CREATE TABLE IF NOT EXISTS movement_trip_points (
|
|
101
|
+
id TEXT PRIMARY KEY,
|
|
102
|
+
trip_id TEXT NOT NULL REFERENCES movement_trips(id) ON DELETE CASCADE,
|
|
103
|
+
sequence_index INTEGER NOT NULL,
|
|
104
|
+
recorded_at TEXT NOT NULL,
|
|
105
|
+
latitude REAL NOT NULL,
|
|
106
|
+
longitude REAL NOT NULL,
|
|
107
|
+
accuracy_meters REAL,
|
|
108
|
+
altitude_meters REAL,
|
|
109
|
+
speed_mps REAL,
|
|
110
|
+
is_stop_anchor INTEGER NOT NULL DEFAULT 0,
|
|
111
|
+
created_at TEXT NOT NULL
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
CREATE INDEX IF NOT EXISTS idx_movement_trip_points_trip
|
|
115
|
+
ON movement_trip_points(trip_id, sequence_index ASC);
|
|
116
|
+
|
|
117
|
+
CREATE TABLE IF NOT EXISTS movement_trip_stops (
|
|
118
|
+
id TEXT PRIMARY KEY,
|
|
119
|
+
external_uid TEXT NOT NULL DEFAULT '',
|
|
120
|
+
trip_id TEXT NOT NULL REFERENCES movement_trips(id) ON DELETE CASCADE,
|
|
121
|
+
sequence_index INTEGER NOT NULL DEFAULT 0,
|
|
122
|
+
label TEXT NOT NULL DEFAULT '',
|
|
123
|
+
place_id TEXT REFERENCES movement_places(id) ON DELETE SET NULL,
|
|
124
|
+
started_at TEXT NOT NULL,
|
|
125
|
+
ended_at TEXT NOT NULL,
|
|
126
|
+
duration_seconds INTEGER NOT NULL DEFAULT 0,
|
|
127
|
+
latitude REAL NOT NULL,
|
|
128
|
+
longitude REAL NOT NULL,
|
|
129
|
+
radius_meters REAL NOT NULL DEFAULT 80,
|
|
130
|
+
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
131
|
+
created_at TEXT NOT NULL,
|
|
132
|
+
updated_at TEXT NOT NULL
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
CREATE INDEX IF NOT EXISTS idx_movement_trip_stops_trip
|
|
136
|
+
ON movement_trip_stops(trip_id, sequence_index ASC);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS watch_capture_events (
|
|
2
|
+
id TEXT PRIMARY KEY,
|
|
3
|
+
pairing_session_id TEXT REFERENCES companion_pairing_sessions(id) ON DELETE SET NULL,
|
|
4
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
5
|
+
dedupe_key TEXT NOT NULL,
|
|
6
|
+
source_device TEXT NOT NULL DEFAULT 'Apple Watch',
|
|
7
|
+
event_type TEXT NOT NULL,
|
|
8
|
+
prompt_id TEXT,
|
|
9
|
+
recorded_at TEXT NOT NULL,
|
|
10
|
+
received_at TEXT NOT NULL,
|
|
11
|
+
linked_context_json TEXT NOT NULL DEFAULT '{}',
|
|
12
|
+
payload_json TEXT NOT NULL DEFAULT '{}',
|
|
13
|
+
projection_status TEXT NOT NULL DEFAULT 'stored',
|
|
14
|
+
projection_details_json TEXT NOT NULL DEFAULT '{}',
|
|
15
|
+
created_at TEXT NOT NULL,
|
|
16
|
+
UNIQUE (user_id, dedupe_key)
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
CREATE INDEX IF NOT EXISTS idx_watch_capture_events_user_recorded
|
|
20
|
+
ON watch_capture_events(user_id, recorded_at DESC);
|
|
21
|
+
|
|
22
|
+
CREATE INDEX IF NOT EXISTS idx_watch_capture_events_event_type
|
|
23
|
+
ON watch_capture_events(user_id, event_type, recorded_at DESC);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
ALTER TABLE ai_processors ADD COLUMN slug TEXT NOT NULL DEFAULT '';
|
|
2
|
+
ALTER TABLE ai_processors ADD COLUMN agent_config_json TEXT NOT NULL DEFAULT '[]';
|
|
3
|
+
ALTER TABLE ai_processors ADD COLUMN run_history_json TEXT NOT NULL DEFAULT '[]';
|
|
4
|
+
|
|
5
|
+
UPDATE ai_processors
|
|
6
|
+
SET slug = lower(replace(replace(trim(title), ' ', '-'), '--', '-')) || '-' || substr(id, -6)
|
|
7
|
+
WHERE trim(slug) = '';
|
|
8
|
+
|
|
9
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_ai_processors_slug
|
|
10
|
+
ON ai_processors(slug);
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS ai_connectors (
|
|
2
|
+
id TEXT PRIMARY KEY,
|
|
3
|
+
slug TEXT NOT NULL UNIQUE,
|
|
4
|
+
title TEXT NOT NULL,
|
|
5
|
+
description TEXT NOT NULL DEFAULT '',
|
|
6
|
+
kind TEXT NOT NULL,
|
|
7
|
+
home_surface_id TEXT,
|
|
8
|
+
endpoint_enabled INTEGER NOT NULL DEFAULT 1,
|
|
9
|
+
graph_json TEXT NOT NULL,
|
|
10
|
+
published_outputs_json TEXT NOT NULL DEFAULT '[]',
|
|
11
|
+
last_run_json TEXT,
|
|
12
|
+
legacy_processor_id TEXT UNIQUE,
|
|
13
|
+
created_at TEXT NOT NULL,
|
|
14
|
+
updated_at TEXT NOT NULL
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
CREATE TABLE IF NOT EXISTS ai_connector_runs (
|
|
18
|
+
id TEXT PRIMARY KEY,
|
|
19
|
+
connector_id TEXT NOT NULL,
|
|
20
|
+
mode TEXT NOT NULL,
|
|
21
|
+
status TEXT NOT NULL,
|
|
22
|
+
user_input TEXT NOT NULL DEFAULT '',
|
|
23
|
+
context_json TEXT NOT NULL DEFAULT '{}',
|
|
24
|
+
conversation_id TEXT,
|
|
25
|
+
result_json TEXT,
|
|
26
|
+
error TEXT,
|
|
27
|
+
created_at TEXT NOT NULL,
|
|
28
|
+
completed_at TEXT,
|
|
29
|
+
FOREIGN KEY(connector_id) REFERENCES ai_connectors(id) ON DELETE CASCADE
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
CREATE INDEX IF NOT EXISTS idx_ai_connector_runs_connector_created
|
|
33
|
+
ON ai_connector_runs(connector_id, created_at DESC);
|
|
34
|
+
|
|
35
|
+
CREATE TABLE IF NOT EXISTS ai_connector_conversations (
|
|
36
|
+
id TEXT PRIMARY KEY,
|
|
37
|
+
connector_id TEXT NOT NULL UNIQUE,
|
|
38
|
+
provider TEXT,
|
|
39
|
+
external_conversation_id TEXT,
|
|
40
|
+
transcript_json TEXT NOT NULL DEFAULT '[]',
|
|
41
|
+
created_at TEXT NOT NULL,
|
|
42
|
+
updated_at TEXT NOT NULL,
|
|
43
|
+
FOREIGN KEY(connector_id) REFERENCES ai_connectors(id) ON DELETE CASCADE
|
|
44
|
+
);
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
ALTER TABLE movement_trip_points
|
|
2
|
+
ADD COLUMN external_uid TEXT NOT NULL DEFAULT '';
|
|
3
|
+
|
|
4
|
+
UPDATE movement_trip_points
|
|
5
|
+
SET external_uid = id
|
|
6
|
+
WHERE trim(external_uid) = '';
|
|
7
|
+
|
|
8
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_movement_trip_points_trip_external
|
|
9
|
+
ON movement_trip_points(trip_id, external_uid);
|
|
10
|
+
|
|
11
|
+
CREATE TABLE IF NOT EXISTS movement_trip_point_tombstones (
|
|
12
|
+
id TEXT PRIMARY KEY,
|
|
13
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
14
|
+
trip_external_uid TEXT NOT NULL,
|
|
15
|
+
point_external_uid TEXT NOT NULL,
|
|
16
|
+
created_at TEXT NOT NULL,
|
|
17
|
+
updated_at TEXT NOT NULL,
|
|
18
|
+
UNIQUE (user_id, trip_external_uid, point_external_uid)
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
CREATE INDEX IF NOT EXISTS idx_movement_trip_point_tombstones_user_trip
|
|
22
|
+
ON movement_trip_point_tombstones(user_id, trip_external_uid, updated_at DESC);
|
|
23
|
+
|
|
24
|
+
CREATE TABLE IF NOT EXISTS movement_trip_point_overrides (
|
|
25
|
+
id TEXT PRIMARY KEY,
|
|
26
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
27
|
+
trip_external_uid TEXT NOT NULL,
|
|
28
|
+
point_external_uid TEXT NOT NULL,
|
|
29
|
+
point_json TEXT NOT NULL,
|
|
30
|
+
created_at TEXT NOT NULL,
|
|
31
|
+
updated_at TEXT NOT NULL,
|
|
32
|
+
UNIQUE (user_id, trip_external_uid, point_external_uid)
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
CREATE INDEX IF NOT EXISTS idx_movement_trip_point_overrides_user_trip
|
|
36
|
+
ON movement_trip_point_overrides(user_id, trip_external_uid, updated_at DESC);
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS movement_stay_tombstones (
|
|
2
|
+
id TEXT PRIMARY KEY,
|
|
3
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
4
|
+
stay_external_uid TEXT NOT NULL,
|
|
5
|
+
created_at TEXT NOT NULL,
|
|
6
|
+
updated_at TEXT NOT NULL,
|
|
7
|
+
UNIQUE (user_id, stay_external_uid)
|
|
8
|
+
);
|
|
9
|
+
|
|
10
|
+
CREATE INDEX IF NOT EXISTS idx_movement_stay_tombstones_user
|
|
11
|
+
ON movement_stay_tombstones(user_id, updated_at DESC);
|
|
12
|
+
|
|
13
|
+
CREATE TABLE IF NOT EXISTS movement_stay_overrides (
|
|
14
|
+
id TEXT PRIMARY KEY,
|
|
15
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
16
|
+
stay_external_uid TEXT NOT NULL,
|
|
17
|
+
stay_json TEXT NOT NULL,
|
|
18
|
+
created_at TEXT NOT NULL,
|
|
19
|
+
updated_at TEXT NOT NULL,
|
|
20
|
+
UNIQUE (user_id, stay_external_uid)
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
CREATE INDEX IF NOT EXISTS idx_movement_stay_overrides_user
|
|
24
|
+
ON movement_stay_overrides(user_id, updated_at DESC);
|
|
25
|
+
|
|
26
|
+
CREATE TABLE IF NOT EXISTS movement_trip_tombstones (
|
|
27
|
+
id TEXT PRIMARY KEY,
|
|
28
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
29
|
+
trip_external_uid TEXT NOT NULL,
|
|
30
|
+
created_at TEXT NOT NULL,
|
|
31
|
+
updated_at TEXT NOT NULL,
|
|
32
|
+
UNIQUE (user_id, trip_external_uid)
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
CREATE INDEX IF NOT EXISTS idx_movement_trip_tombstones_user
|
|
36
|
+
ON movement_trip_tombstones(user_id, updated_at DESC);
|
|
37
|
+
|
|
38
|
+
CREATE TABLE IF NOT EXISTS movement_trip_overrides (
|
|
39
|
+
id TEXT PRIMARY KEY,
|
|
40
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
41
|
+
trip_external_uid TEXT NOT NULL,
|
|
42
|
+
trip_json TEXT NOT NULL,
|
|
43
|
+
created_at TEXT NOT NULL,
|
|
44
|
+
updated_at TEXT NOT NULL,
|
|
45
|
+
UNIQUE (user_id, trip_external_uid)
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
CREATE INDEX IF NOT EXISTS idx_movement_trip_overrides_user
|
|
49
|
+
ON movement_trip_overrides(user_id, updated_at DESC);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: forge-openclaw
|
|
3
|
-
description: use when the user wants to save, search, update, review, start, stop, reward, explain, or
|
|
3
|
+
description: use when the user wants to save, search, update, review, start, stop, reward, explain, compare, or run Forge records, or when the conversation is clearly about a Forge entity such as a goal, project, strategy, task, habit, note, calendar_event, work_block_template, task_timebox, task_run, insight, preference item, preference context, preference catalog, questionnaire instrument, questionnaire run, self observation, psyche_value, behavior_pattern, behavior, belief_entry, mode_profile, mode_guide_session, trigger_report, event_type, emotion_definition, sleep_session, or workout_session. identify the exact Forge object, keep the main conversation natural, guide psyche intake with active listening before storing it, and for psyche issues that need understanding first usually begin with one exploratory question before any formulation or save suggestion.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
Forge is the user's structured system for planning work, doing work, reflecting on patterns, and keeping a truthful record of what is happening. Use it when the user is clearly working inside that system, or when they are describing something that naturally belongs there and would benefit from being stored, updated, reviewed, or acted on in Forge. Keep the conversation natural first. Do not turn every message into intake. When a real Forge entity is clearly present, name the exact entity type plainly, help with the substance of the conversation, and then offer Forge once, lightly, if storing it would genuinely help.
|
|
@@ -52,9 +52,12 @@ Entity conversation rule:
|
|
|
52
52
|
- For all entity creation or update flows, first use [`entity_conversation_playbooks.md`](./entity_conversation_playbooks.md) to decide the next best question.
|
|
53
53
|
- Ask only for what is missing or unclear. Do not walk through every schema field.
|
|
54
54
|
- Let each question have one job. Know what you are trying to clarify before you ask it.
|
|
55
|
+
- Before you ask, decide the exact missing thing you need and how that answer will help you name, place, or save the record.
|
|
55
56
|
- Prefer a progression of:
|
|
56
57
|
concrete example or intent -> working name -> purpose or meaning -> placement in Forge -> operational details -> linked context.
|
|
57
58
|
- For emotionally meaningful non-Psyche records such as goals, habits, and notes, reflect the meaning before you ask for structure.
|
|
59
|
+
- When the user is vague, ask for one small concrete example, stake, or desired outcome before you ask them to name the record.
|
|
60
|
+
- When the user is clear, say what the record seems to be becoming and ask only for the last missing detail.
|
|
58
61
|
- When updating an entity, start with what is changing, what should stay true, and what prompted the update now.
|
|
59
62
|
- When enough is clear, briefly summarize what you heard in the user's own language before asking for the last missing structural detail.
|
|
60
63
|
- The quick intake prompts later in this file are fallback checkpoints, not a script to read aloud.
|
|
@@ -73,7 +76,9 @@ Psyche interview rule:
|
|
|
73
76
|
- First use the active-listening playbooks in [`psyche_entity_playbooks.md`](./psyche_entity_playbooks.md).
|
|
74
77
|
- Ask permission before going deeper, ask one or two focused questions at a time, reflect back what you heard, and summarize before moving on.
|
|
75
78
|
- Start from a recent concrete example before naming an abstract pattern, belief, or mode.
|
|
79
|
+
- Sound professionally warm and therapist-like: grounded, accurate, reflective, and intentional, not clinical, vague, or lecture-like.
|
|
76
80
|
- After the first real answer, choose one follow-up lane at a time: situation, sequence, meaning, protection, cost, longing/value, or tentative name.
|
|
81
|
+
- For Psyche updates, start with what feels newly true, newly visible, or newly inaccurate, then ask what should stay true before changing the formulation.
|
|
77
82
|
- If the user says they want help understanding a Psyche issue before saving it, ask one orienting question first instead of jumping straight into a full interpretation, diagnosis-like label, save suggestion, replacement belief, or suggested title.
|
|
78
83
|
- In that first exploratory turn, keep the reflection to one or two short sentences, avoid numbered lists or schema dumps, and wait for the user's answer before offering a fuller formulation.
|
|
79
84
|
- In that first exploratory turn, stay in plain prose, end with one question, and do not mention Forge fields or save formatting yet unless the user interrupts to save immediately.
|
|
@@ -466,3 +471,12 @@ When the user asks which Forge tools are available, list exactly these tools:
|
|
|
466
471
|
`forge_create_work_block_template`
|
|
467
472
|
`forge_recommend_task_timeboxes`
|
|
468
473
|
`forge_create_task_timebox`
|
|
474
|
+
|
|
475
|
+
Additional first-class surfaces:
|
|
476
|
+
|
|
477
|
+
- Use the high-level batch routes for basic Preferences CRUD. `preference_catalog`, `preference_catalog_item`, `preference_context`, and `preference_item` all go through `forge_create_entities`, `forge_update_entities`, and `forge_delete_entities`.
|
|
478
|
+
- Use the high-level batch routes for basic questionnaire CRUD too. `questionnaire_instrument` goes through `forge_create_entities`, `forge_update_entities`, and `forge_delete_entities`.
|
|
479
|
+
- Keep the dedicated Preferences tools only for real preference actions and read models: `forge_get_preferences_workspace`, `forge_start_preferences_game`, `forge_merge_preferences_contexts`, `forge_enqueue_preferences_item_from_entity`, `forge_submit_preferences_judgment`, `forge_submit_preferences_signal`, and `forge_update_preferences_score`.
|
|
480
|
+
- Keep the dedicated questionnaire tools only for real flow actions and read models: `forge_list_questionnaires`, `forge_get_questionnaire`, `forge_clone_questionnaire`, `forge_ensure_questionnaire_draft`, `forge_publish_questionnaire_draft`, `forge_start_questionnaire_run`, `forge_get_questionnaire_run`, `forge_update_questionnaire_run`, and `forge_complete_questionnaire_run`.
|
|
481
|
+
- Self-observation is note-backed. Read the calendar through `forge_get_self_observation_calendar`, but create or update the stored observation as a `note` tagged `Self-observation` with `frontmatter.observedAt` and links to the relevant `behavior_pattern`, `trigger_report`, or other Forge records.
|
|
482
|
+
- `sleep_session` and `workout_session` are first-class health records. Review them through the dedicated health tools instead of treating them like loose notes.
|