forge-openclaw-plugin 0.2.68 → 0.2.70
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/dist/assets/{board-DFNV9VAZ.js → board-BfqxFNiQ.js} +1 -1
- package/dist/assets/index-BfLQnCNZ.js +91 -0
- package/dist/assets/index-DIapFz9v.css +1 -0
- package/dist/assets/{motion-CXdn34ih.js → motion-C0ALlgho.js} +1 -1
- package/dist/assets/{table-CEq3bTDv.js → table-WcMjnJll.js} +1 -1
- package/dist/assets/{ui-g7FaEglG.js → ui-B5I-3U91.js} +1 -1
- package/dist/assets/vendor-B-Lq_OG3.css +1 -0
- package/dist/assets/vendor-C56o26_3.js +2163 -0
- package/dist/index.html +8 -8
- package/dist/server/server/migrations/061_health_workout_raw_evidence.sql +95 -0
- package/dist/server/server/migrations/062_health_mobile_sync_sessions.sql +55 -0
- package/dist/server/server/src/app.js +149 -21
- package/dist/server/server/src/health-workout-analytics.js +572 -0
- package/dist/server/server/src/health.js +612 -4
- package/dist/server/server/src/openapi.js +162 -0
- package/dist/server/server/src/psyche-types.js +59 -0
- package/dist/server/server/src/services/devrage.js +191 -0
- package/dist/server/src/lib/api.js +13 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -1
- package/server/migrations/061_health_workout_raw_evidence.sql +95 -0
- package/server/migrations/062_health_mobile_sync_sessions.sql +55 -0
- package/skills/forge-openclaw/SKILL.md +35 -6
- package/skills/forge-openclaw/entity_conversation_playbooks.md +179 -18
- package/dist/assets/index-B0PIKEnz.css +0 -1
- package/dist/assets/index-BofyMuFh.js +0 -90
- package/dist/assets/vendor-BcOHGipZ.js +0 -1341
- package/dist/assets/vendor-DT3pnAKJ.css +0 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS health_mobile_sync_sessions (
|
|
2
|
+
id TEXT PRIMARY KEY,
|
|
3
|
+
pairing_session_id TEXT NOT NULL REFERENCES companion_pairing_sessions(id) ON DELETE CASCADE,
|
|
4
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
5
|
+
status TEXT NOT NULL DEFAULT 'running',
|
|
6
|
+
schema_version TEXT NOT NULL DEFAULT 'healthkit-sync-v2',
|
|
7
|
+
requested_families_json TEXT NOT NULL DEFAULT '[]',
|
|
8
|
+
source_metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
9
|
+
expected_counts_json TEXT NOT NULL DEFAULT '{}',
|
|
10
|
+
received_counts_json TEXT NOT NULL DEFAULT '{}',
|
|
11
|
+
byte_totals_json TEXT NOT NULL DEFAULT '{}',
|
|
12
|
+
affected_workout_ids_json TEXT NOT NULL DEFAULT '[]',
|
|
13
|
+
error_json TEXT NOT NULL DEFAULT '{}',
|
|
14
|
+
started_at TEXT NOT NULL,
|
|
15
|
+
completed_at TEXT,
|
|
16
|
+
failed_at TEXT,
|
|
17
|
+
aborted_at TEXT,
|
|
18
|
+
expired_at TEXT,
|
|
19
|
+
created_at TEXT NOT NULL,
|
|
20
|
+
updated_at TEXT NOT NULL
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
CREATE INDEX IF NOT EXISTS idx_health_mobile_sync_sessions_pairing_status
|
|
24
|
+
ON health_mobile_sync_sessions(pairing_session_id, status, started_at DESC);
|
|
25
|
+
|
|
26
|
+
CREATE TABLE IF NOT EXISTS health_mobile_sync_chunks (
|
|
27
|
+
id TEXT PRIMARY KEY,
|
|
28
|
+
sync_session_id TEXT NOT NULL REFERENCES health_mobile_sync_sessions(id) ON DELETE CASCADE,
|
|
29
|
+
chunk_id TEXT NOT NULL,
|
|
30
|
+
sequence INTEGER NOT NULL,
|
|
31
|
+
family TEXT NOT NULL,
|
|
32
|
+
checksum_sha256 TEXT NOT NULL,
|
|
33
|
+
record_count INTEGER NOT NULL DEFAULT 0,
|
|
34
|
+
byte_count INTEGER NOT NULL DEFAULT 0,
|
|
35
|
+
payload_json TEXT NOT NULL DEFAULT '{}',
|
|
36
|
+
payload_summary_json TEXT NOT NULL DEFAULT '{}',
|
|
37
|
+
received_at TEXT NOT NULL,
|
|
38
|
+
applied_at TEXT,
|
|
39
|
+
created_at TEXT NOT NULL,
|
|
40
|
+
updated_at TEXT NOT NULL,
|
|
41
|
+
UNIQUE(sync_session_id, chunk_id)
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
CREATE INDEX IF NOT EXISTS idx_health_mobile_sync_chunks_session_sequence
|
|
45
|
+
ON health_mobile_sync_chunks(sync_session_id, sequence);
|
|
46
|
+
|
|
47
|
+
CREATE TABLE IF NOT EXISTS health_mobile_sync_family_cursors (
|
|
48
|
+
id TEXT PRIMARY KEY,
|
|
49
|
+
pairing_session_id TEXT NOT NULL REFERENCES companion_pairing_sessions(id) ON DELETE CASCADE,
|
|
50
|
+
user_id TEXT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
51
|
+
family TEXT NOT NULL,
|
|
52
|
+
cursor_json TEXT NOT NULL DEFAULT '{}',
|
|
53
|
+
updated_at TEXT NOT NULL,
|
|
54
|
+
UNIQUE(pairing_session_id, family)
|
|
55
|
+
);
|
|
@@ -111,6 +111,10 @@ Concrete route-key examples for internal use:
|
|
|
111
111
|
`{"routeKey":"selection","query":{"from":"2026-05-01T00:00:00.000Z","to":"2026-05-14T23:59:59.999Z","placeIds":["place_home"],"userIds":["user_operator"]}}`
|
|
112
112
|
- Movement trip detail:
|
|
113
113
|
`{"routeKey":"tripDetail","pathParams":{"id":"trip_123"}}`
|
|
114
|
+
- Movement settings read:
|
|
115
|
+
`{"routeKey":"settings","query":{"userIds":["user_operator"]}}`
|
|
116
|
+
- Movement settings update:
|
|
117
|
+
`{"routeKey":"settingsUpdate","body":{"trackingEnabled":true,"publishMode":"draft_review","retentionMode":"aggregates_only"}}`
|
|
114
118
|
- Movement missing-stay correction:
|
|
115
119
|
first `{"routeKey":"userBoxPreflight","body":{"kind":"stay","startedAt":"2026-05-06T13:00:00.000Z","endedAt":"2026-05-06T15:00:00.000Z","placeLabel":"Home","userId":"user_operator"}}`,
|
|
116
120
|
then `{"routeKey":"userBoxCreate","body":{"kind":"stay","startedAt":"2026-05-06T13:00:00.000Z","endedAt":"2026-05-06T15:00:00.000Z","placeLabel":"Home","userId":"user_operator","note":"Manual correction after reviewing the timeline."}}`
|
|
@@ -126,6 +130,12 @@ Concrete route-key examples for internal use:
|
|
|
126
130
|
`{"routeKey":"listFlows","query":{"includeArchived":false}}`
|
|
127
131
|
- Workbench box catalog:
|
|
128
132
|
`{"routeKey":"boxCatalog"}`
|
|
133
|
+
- Workbench flow creation:
|
|
134
|
+
`{"routeKey":"createFlow","body":{"title":"Research digest","slug":"research-digest","description":"Turn a topic into a cited digest with a stable published summary.","nodes":[],"edges":[]}}`
|
|
135
|
+
- Workbench flow edit:
|
|
136
|
+
`{"routeKey":"updateFlow","pathParams":{"id":"flow_research_digest"},"body":{"description":"Keep the same input contract but add a stronger evidence-check node."}}`
|
|
137
|
+
- Workbench flow deletion:
|
|
138
|
+
`{"routeKey":"deleteFlow","pathParams":{"id":"flow_research_digest"}}`
|
|
129
139
|
- Workbench run detail:
|
|
130
140
|
`{"routeKey":"runDetail","pathParams":{"id":"flow_research_digest","runId":"run_123"}}`
|
|
131
141
|
- Workbench published output:
|
|
@@ -134,6 +144,8 @@ Concrete route-key examples for internal use:
|
|
|
134
144
|
`{"routeKey":"latestNodeOutput","pathParams":{"id":"flow_research_digest","nodeId":"node_summary"}}`
|
|
135
145
|
- Workbench run execution:
|
|
136
146
|
`{"routeKey":"runFlow","pathParams":{"id":"flow_research_digest"},"body":{"input":{"topic":"question flow quality"}}}`
|
|
147
|
+
- Workbench flow chat follow-up:
|
|
148
|
+
`{"routeKey":"chatFlow","pathParams":{"id":"flow_research_digest"},"body":{"message":"Refine the summary around API route risks and keep the published output stable."}}`
|
|
137
149
|
|
|
138
150
|
Preferences rule:
|
|
139
151
|
|
|
@@ -173,11 +185,16 @@ Health rule:
|
|
|
173
185
|
|
|
174
186
|
- Sleep and sports records are first-class health surfaces, not generic notes or tasks.
|
|
175
187
|
- Use `forge_get_sleep_overview` and `forge_get_sports_overview` for review and trend reading.
|
|
176
|
-
- In `forge_get_agent_onboarding.entityRouteModel.readModelOnlySurfaces`,
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
`
|
|
180
|
-
|
|
188
|
+
- In `forge_get_agent_onboarding.entityRouteModel.readModelOnlySurfaces`, operator,
|
|
189
|
+
calendar, self-observation, sleep, and sports read models are published with
|
|
190
|
+
both camelCase names and entity-style aliases where useful, including
|
|
191
|
+
`operatorOverview`, `operatorContext`, `calendarOverview`, `sleepOverview`,
|
|
192
|
+
`sportsOverview`, `operator_overview`, `operator_context`,
|
|
193
|
+
`calendar_overview`, `self_observation`, `sleep_overview`, and
|
|
194
|
+
`sports_overview`. Treat those as read-only surfaces, not batch CRUD entities.
|
|
195
|
+
- Use `forge_get_operator_overview` for a broad Forge status read, `forge_get_operator_context`
|
|
196
|
+
for current work and risk, and `forge_get_calendar_overview` before calendar-aware
|
|
197
|
+
planning or scheduling mutations.
|
|
181
198
|
- Use the shared batch entity tools for ordinary `sleep_session` and `workout_session` create, update, delete, and search work. Do not force agents into a large one-route-per-entity mental model when the batch routes already cover the record cleanly.
|
|
182
199
|
- Use `forge_update_sleep_session` and `forge_update_workout_session` only when the job is reflective enrichment on one existing health record after review, such as attaching notes, tags, mood, meaning, or Forge links.
|
|
183
200
|
- Habit-generated workouts and imported HealthKit workouts belong to the same workout record model, so do not invent a separate storage path for sport sessions.
|
|
@@ -486,6 +503,10 @@ through `forge_create_entities` or `forge_update_entities`.
|
|
|
486
503
|
`/api/v1/movement/day`, `/api/v1/movement/month`, `/api/v1/movement/all-time`,
|
|
487
504
|
`/api/v1/movement/timeline`, `/api/v1/movement/places`,
|
|
488
505
|
`/api/v1/movement/selection`, and `/api/v1/movement/trips/:id`.
|
|
506
|
+
- Use `GET /api/v1/movement/settings` and `PATCH /api/v1/movement/settings` when
|
|
507
|
+
the user wants to inspect or change passive capture, publish mode, retention mode,
|
|
508
|
+
or companion readiness. Do not treat movement settings as a place, stay, trip, or
|
|
509
|
+
batch entity write.
|
|
489
510
|
- When the user is filling a missing-data gap, the default write path is a user-defined overlay box, not a raw stay or trip patch. Use `POST /api/v1/movement/user-boxes/preflight` if you need to confirm overlap or snap to the nearest missing interval, then `POST /api/v1/movement/user-boxes` with `kind: "stay"` or `kind: "trip"`.
|
|
490
511
|
- When the user is repairing already-saved movement data, use the repair routes that match the saved object:
|
|
491
512
|
`PATCH /api/v1/movement/user-boxes/:id`,
|
|
@@ -496,7 +517,7 @@ through `forge_create_entities` or `forge_update_entities`.
|
|
|
496
517
|
- Use `PATCH /api/v1/movement/stays/:id` or `PATCH /api/v1/movement/trips/:id` only when the user is editing an existing recorded stay or recorded trip. Do not use those routes to fill a missing span.
|
|
497
518
|
- If the user says something as explicit as "that missing block was me staying home", do not reopen broad intake. Confirm the interval or place only if it is still ambiguous, then create the overlay and read the timeline back.
|
|
498
519
|
- Life Force lives under `/api/v1/life-force*`. Use `GET /api/v1/life-force` for the current energy overview, `PATCH /api/v1/life-force/profile` for durable profile changes, `PUT /api/v1/life-force/templates/:weekday` for weekday curve edits, and `POST /api/v1/life-force/fatigue-signals` for real-time tired or recovered signals.
|
|
499
|
-
- Workbench lives under `/api/v1/workbench/*`. Use those dedicated routes for flow catalog reads, flow CRUD, runs, published outputs, node results, and latest-node-output reads instead of trying to force Workbench through the batch entity routes.
|
|
520
|
+
- Workbench lives under `/api/v1/workbench/*`. Use those dedicated routes for flow catalog reads, flow CRUD, runs, saved-flow chat follow-ups, published outputs, node results, and latest-node-output reads instead of trying to force Workbench through the batch entity routes.
|
|
500
521
|
- If you need the OpenClaw HTTP mirror instead of the raw Forge runtime path, the
|
|
501
522
|
same specialized families are exposed under `/forge/v1/movement/*`,
|
|
502
523
|
`/forge/v1/life-force/*`, and `/forge/v1/workbench/*`.
|
|
@@ -505,8 +526,16 @@ through `forge_create_entities` or `forge_update_entities`.
|
|
|
505
526
|
`POST /api/v1/workbench/flows` for flow creation,
|
|
506
527
|
`PATCH /api/v1/workbench/flows/:id` and `DELETE /api/v1/workbench/flows/:id` for saved-flow edits or deletion,
|
|
507
528
|
`/api/v1/workbench/flows/:id/run` or `/api/v1/workbench/run` for execution,
|
|
529
|
+
`POST /api/v1/workbench/flows/:id/chat` for saved-flow chat follow-ups,
|
|
508
530
|
`/api/v1/workbench/flows/:id/output` for published outputs, and the run/node routes
|
|
509
531
|
under `/api/v1/workbench/flows/:id` for run history and node-level inspection.
|
|
532
|
+
- For Workbench flow creation or edits, clarify the stable input contract, intended
|
|
533
|
+
published output, and smallest structural change before asking for raw JSON or node
|
|
534
|
+
payloads. For deletion, confirm the saved flow and whether published outputs or run
|
|
535
|
+
history need preservation elsewhere before using the delete route.
|
|
536
|
+
- For Workbench flow chat follow-ups, use `POST /api/v1/workbench/flows/:id/chat`
|
|
537
|
+
only when the user wants flow-specific conversation. Do not turn that follow-up
|
|
538
|
+
into a new run, note, or generic entity update unless the user asks for that.
|
|
510
539
|
- If you are unsure which specialized route family applies, check `forge_get_agent_onboarding` and use its `entityRouteModel.specializedDomainSurfaces` section before guessing.
|
|
511
540
|
- If the truth of the current Movement, Life Force, or Workbench state is still unclear, prefer the dedicated read before the mutation so the correction stays truthful.
|
|
512
541
|
- After a concrete Movement, Life Force, or Workbench correction, read the relevant specialized view back when the user is trying to understand the result rather than only store it.
|
|
@@ -237,10 +237,11 @@ Use this quick split before the conversation gets too detailed.
|
|
|
237
237
|
`preference_signal`, and `self_observation` are action workflows. Start from what
|
|
238
238
|
the user is trying to do, then use the dedicated action tool or note-backed write
|
|
239
239
|
model.
|
|
240
|
-
- `
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
240
|
+
- `operator_overview`, `operator_context`, `calendar_overview`, `sleep_overview`,
|
|
241
|
+
and `sports_overview` are read-model-only surfaces. Use them when the user wants
|
|
242
|
+
to understand current Forge state, work risk, calendar commitments, nights,
|
|
243
|
+
workouts, training load, recovery context, or health patterns before deciding
|
|
244
|
+
whether a stored entity needs creation or enrichment.
|
|
244
245
|
- Movement, Life Force, and Workbench are specialized domain areas. Use their
|
|
245
246
|
dedicated route families for timelines and overlays, energy profile/templates and
|
|
246
247
|
fatigue signals, and Workbench flow execution or result artifacts. When available,
|
|
@@ -282,6 +283,19 @@ still knowing the exact write/read family before it acts.
|
|
|
282
283
|
- `calendar_connection`: specialized CRUD. Use provider discovery, connection CRUD,
|
|
283
284
|
selected-calendar rediscovery, sync, and delete routes rather than batch entity
|
|
284
285
|
tools.
|
|
286
|
+
- `operator_overview`: read-model-only operator surface. Use
|
|
287
|
+
`forge_get_operator_overview` or `/api/v1/operator/overview` when the user wants
|
|
288
|
+
the current Forge picture, attention cues, or broad status before choosing a
|
|
289
|
+
specific entity action.
|
|
290
|
+
- `operator_context`: read-model-only operator surface. Use
|
|
291
|
+
`forge_get_operator_context` or `/api/v1/operator/context` when the user wants
|
|
292
|
+
current work, active runs, risks, board context, or next moves before mutating
|
|
293
|
+
anything.
|
|
294
|
+
- `calendar_overview`: read-model-only calendar surface. Use
|
|
295
|
+
`forge_get_calendar_overview` or `/api/v1/calendar/overview` when the user wants
|
|
296
|
+
mirrored events, work blocks, timeboxes, provider state, or availability before
|
|
297
|
+
creating a `calendar_event`, `work_block_template`, `task_timebox`, or
|
|
298
|
+
`calendar_connection`.
|
|
285
299
|
- `task_run`: action workflow. Use task-run start, heartbeat, focus, complete, and
|
|
286
300
|
release routes; never treat status changes as proof of live work.
|
|
287
301
|
- `work_adjustment`: action workflow. Use the signed work-adjustment route for real
|
|
@@ -1061,6 +1075,81 @@ Preferred opening question:
|
|
|
1061
1075
|
|
|
1062
1076
|
- "Which task or project should this time correction belong to?"
|
|
1063
1077
|
|
|
1078
|
+
## Operator Overview
|
|
1079
|
+
|
|
1080
|
+
Aim: read the broad Forge state before choosing a specific action, without turning a
|
|
1081
|
+
status check into generic intake.
|
|
1082
|
+
|
|
1083
|
+
Arc:
|
|
1084
|
+
|
|
1085
|
+
1. Ask what the user is trying to understand about Forge overall.
|
|
1086
|
+
2. Read the operator overview before asking the user to reconstruct active work,
|
|
1087
|
+
attention cues, or broad status from memory.
|
|
1088
|
+
3. Reflect the practical decision the overview should support.
|
|
1089
|
+
4. Move into a specific entity flow only when the overview points to a concrete goal,
|
|
1090
|
+
project, task, habit, note, Psyche record, or follow-up action.
|
|
1091
|
+
|
|
1092
|
+
Helpful follow-up lanes:
|
|
1093
|
+
|
|
1094
|
+
- whether the user wants a broad status read, a priority decision, or a handoff
|
|
1095
|
+
- which owner or user scope matters if several humans or bots are involved
|
|
1096
|
+
- what decision the overview should help them make next
|
|
1097
|
+
|
|
1098
|
+
Route note:
|
|
1099
|
+
|
|
1100
|
+
- `operator_overview` is a read-model-only operator surface. Use
|
|
1101
|
+
`forge_get_operator_overview` or `/api/v1/operator/overview`; do not create,
|
|
1102
|
+
update, or delete `operator_overview` through batch CRUD.
|
|
1103
|
+
- If the read reveals a specific record that needs work, switch to that record's
|
|
1104
|
+
normal route posture after the user chooses the follow-up.
|
|
1105
|
+
|
|
1106
|
+
Ready to review when:
|
|
1107
|
+
|
|
1108
|
+
- the broad question is clear enough
|
|
1109
|
+
- any owner or user scope that changes the read is clear enough
|
|
1110
|
+
|
|
1111
|
+
Preferred opening question:
|
|
1112
|
+
|
|
1113
|
+
- "What are you trying to understand about Forge overall right now?"
|
|
1114
|
+
|
|
1115
|
+
## Operator Context
|
|
1116
|
+
|
|
1117
|
+
Aim: inspect current work, active runs, risk, and next moves before changing records.
|
|
1118
|
+
|
|
1119
|
+
Arc:
|
|
1120
|
+
|
|
1121
|
+
1. Ask whether the user is checking current work, risk, blockers, active sessions, or
|
|
1122
|
+
the next move.
|
|
1123
|
+
2. Read operator context before reopening a create or update intake.
|
|
1124
|
+
3. Reflect what the read is meant to decide: continue, stop, reprioritize, update, or
|
|
1125
|
+
create.
|
|
1126
|
+
4. Move to task-run, work-adjustment, task, project, or note flow only when one
|
|
1127
|
+
concrete follow-up is visible.
|
|
1128
|
+
|
|
1129
|
+
Helpful follow-up lanes:
|
|
1130
|
+
|
|
1131
|
+
- current task or active run
|
|
1132
|
+
- blocked or stale work
|
|
1133
|
+
- next move versus broad review
|
|
1134
|
+
- owner or user scope when bot and human work are both present
|
|
1135
|
+
|
|
1136
|
+
Route note:
|
|
1137
|
+
|
|
1138
|
+
- `operator_context` is a read-model-only operator surface. Use
|
|
1139
|
+
`forge_get_operator_context` or `/api/v1/operator/context`; do not mutate it
|
|
1140
|
+
through batch CRUD.
|
|
1141
|
+
- If the user decides to start, complete, release, or adjust work after the read,
|
|
1142
|
+
switch to the dedicated action workflow for that operation.
|
|
1143
|
+
|
|
1144
|
+
Ready to review when:
|
|
1145
|
+
|
|
1146
|
+
- the current-work question is clear
|
|
1147
|
+
- any user or owner scope is clear enough
|
|
1148
|
+
|
|
1149
|
+
Preferred opening question:
|
|
1150
|
+
|
|
1151
|
+
- "What current work, risk, or next move are you trying to check?"
|
|
1152
|
+
|
|
1064
1153
|
## Self Observation
|
|
1065
1154
|
|
|
1066
1155
|
Aim: capture one observed episode in a structured chain without letting a loose note
|
|
@@ -1251,6 +1340,46 @@ Preferred opening question:
|
|
|
1251
1340
|
|
|
1252
1341
|
- "What are you trying to understand from your workout picture right now?"
|
|
1253
1342
|
|
|
1343
|
+
## Calendar Overview
|
|
1344
|
+
|
|
1345
|
+
Aim: review commitments, work blocks, provider state, and existing timeboxes before
|
|
1346
|
+
creating or changing calendar records.
|
|
1347
|
+
|
|
1348
|
+
Arc:
|
|
1349
|
+
|
|
1350
|
+
1. Ask what the user is trying to understand or decide from the calendar picture.
|
|
1351
|
+
2. Ask for the date range or owner scope only if it changes the read.
|
|
1352
|
+
3. Read the calendar overview before asking the user to recreate availability from
|
|
1353
|
+
memory.
|
|
1354
|
+
4. Reflect the practical decision the overview should support.
|
|
1355
|
+
5. Move to `calendar_event`, `work_block_template`, `task_timebox`, or
|
|
1356
|
+
`calendar_connection` only when a specific follow-up action is visible.
|
|
1357
|
+
|
|
1358
|
+
Helpful follow-up lanes:
|
|
1359
|
+
|
|
1360
|
+
- which day, week, or date range matters
|
|
1361
|
+
- whether the question is availability, conflicts, provider health, work blocks, or
|
|
1362
|
+
existing timeboxes
|
|
1363
|
+
- what scheduling or planning decision the review should support
|
|
1364
|
+
|
|
1365
|
+
Route note:
|
|
1366
|
+
|
|
1367
|
+
- `calendar_overview` is a read-model-only calendar surface. Use
|
|
1368
|
+
`forge_get_calendar_overview` or `/api/v1/calendar/overview`; do not create,
|
|
1369
|
+
update, or delete `calendar_overview` through batch CRUD.
|
|
1370
|
+
- If the review reveals a concrete scheduling action, switch to the stored
|
|
1371
|
+
`calendar_event`, `work_block_template`, or `task_timebox` batch route, or to the
|
|
1372
|
+
specialized `calendar_connection` lifecycle route.
|
|
1373
|
+
|
|
1374
|
+
Ready to review when:
|
|
1375
|
+
|
|
1376
|
+
- the user's practical calendar question is clear
|
|
1377
|
+
- the relevant date range or owner scope is clear enough
|
|
1378
|
+
|
|
1379
|
+
Preferred opening question:
|
|
1380
|
+
|
|
1381
|
+
- "What are you trying to understand or decide from your calendar picture?"
|
|
1382
|
+
|
|
1254
1383
|
## Calendar Connection
|
|
1255
1384
|
|
|
1256
1385
|
Aim: connect the right provider deliberately without turning setup into a credential
|
|
@@ -1370,8 +1499,9 @@ Preferred opening question:
|
|
|
1370
1499
|
## Movement
|
|
1371
1500
|
|
|
1372
1501
|
Aim: clarify whether the user wants to understand time in place, review travel
|
|
1373
|
-
behavior, add or update a stay or trip, inspect one place,
|
|
1374
|
-
another Forge record before choosing the
|
|
1502
|
+
behavior, add or update a stay or trip, inspect one place, change movement operating
|
|
1503
|
+
settings, or link movement context to another Forge record before choosing the
|
|
1504
|
+
dedicated route family.
|
|
1375
1505
|
|
|
1376
1506
|
Arc:
|
|
1377
1507
|
|
|
@@ -1382,14 +1512,16 @@ Arc:
|
|
|
1382
1512
|
3. Ask whether the focus is a stay, a trip, a place, a timeline window, or a selected span.
|
|
1383
1513
|
4. Ask for the time window, place, or movement item that makes the question concrete.
|
|
1384
1514
|
5. Ask what they are trying to notice, preserve, or answer through that movement context.
|
|
1385
|
-
6.
|
|
1386
|
-
|
|
1387
|
-
7.
|
|
1515
|
+
6. If the user is changing movement operating behavior, ask whether the change is
|
|
1516
|
+
about passive tracking, publish mode, retention, or companion readiness.
|
|
1517
|
+
7. Choose the dedicated day, month, all-time, timeline, places, trip-detail,
|
|
1518
|
+
selection, or settings route once the question shape is clear.
|
|
1519
|
+
8. If the truth of one uncertain span is still unclear, read the timeline or saved-box
|
|
1388
1520
|
detail before you mutate it.
|
|
1389
|
-
|
|
1521
|
+
9. Skip the meta lane question when the user already named the exact correction or
|
|
1390
1522
|
review target and only one ambiguity remains.
|
|
1391
|
-
|
|
1392
|
-
review, overlay, place or trip detail, selection summary, or repair.
|
|
1523
|
+
10. Use the dedicated movement route once you know whether the user needs timeline
|
|
1524
|
+
review, overlay, place or trip detail, selection summary, settings, or repair.
|
|
1393
1525
|
|
|
1394
1526
|
Direct action rules:
|
|
1395
1527
|
|
|
@@ -1398,6 +1530,11 @@ Direct action rules:
|
|
|
1398
1530
|
- Treat day, month, all-time, timeline, trip detail, and selection as internal read
|
|
1399
1531
|
lanes. With the user, ask for the useful time window, place, selected span, stay, or
|
|
1400
1532
|
trip instead of listing route choices.
|
|
1533
|
+
- Treat settings as a separate movement lane for passive capture, publish mode, and
|
|
1534
|
+
retention behavior. Ask what operating behavior should change instead of routing it
|
|
1535
|
+
through a place, stay, or trip edit.
|
|
1536
|
+
- Use settings reads before settings writes when the current capture or publish state
|
|
1537
|
+
is uncertain.
|
|
1401
1538
|
- Preflight with `/api/v1/movement/user-boxes/preflight` when overlap or exact timing
|
|
1402
1539
|
is unclear, then create the overlay with `/api/v1/movement/user-boxes`.
|
|
1403
1540
|
- Use `kind: "stay"` when the user stayed in one place and `kind: "trip"` when they
|
|
@@ -1427,6 +1564,8 @@ Helpful follow-up lanes:
|
|
|
1427
1564
|
- whether the edit is a missing-gap overlay versus a true recorded stay/trip patch
|
|
1428
1565
|
- whether the user is trying to repair one recorded movement item versus fill a
|
|
1429
1566
|
missing span
|
|
1567
|
+
- whether they are changing passive capture, publish mode, retention, or companion
|
|
1568
|
+
readiness rather than movement history
|
|
1430
1569
|
|
|
1431
1570
|
Lane-to-route map:
|
|
1432
1571
|
|
|
@@ -1436,6 +1575,8 @@ Lane-to-route map:
|
|
|
1436
1575
|
`/api/v1/movement/all-time`, `/api/v1/movement/places`, or `/api/v1/movement/selection`
|
|
1437
1576
|
- inspect the full life timeline:
|
|
1438
1577
|
`/api/v1/movement/timeline`
|
|
1578
|
+
- inspect or change passive capture and publishing settings:
|
|
1579
|
+
`GET /api/v1/movement/settings` or `PATCH /api/v1/movement/settings`
|
|
1439
1580
|
- create or revise one saved place:
|
|
1440
1581
|
`/api/v1/movement/places` or `/api/v1/movement/places/:id`
|
|
1441
1582
|
- inspect one trip:
|
|
@@ -1461,6 +1602,7 @@ Ready to act when:
|
|
|
1461
1602
|
- the time range, place, stay, trip, or selection is clear enough
|
|
1462
1603
|
- the user goal is clear enough to tell review, overlay, and repair apart
|
|
1463
1604
|
- the user goal is clear enough to choose the route
|
|
1605
|
+
- for settings changes, the intended tracking, publish, or retention behavior is clear
|
|
1464
1606
|
|
|
1465
1607
|
Preferred opening question:
|
|
1466
1608
|
|
|
@@ -1550,18 +1692,25 @@ Arc:
|
|
|
1550
1692
|
|
|
1551
1693
|
1. Ask what they are trying to learn, repair, publish, or run through Workbench
|
|
1552
1694
|
before you narrow to flow discovery, editing, execution, or results.
|
|
1553
|
-
2. Ask whether the job is flow discovery, one flow edit, execution, run history, published output, node-level inspection,
|
|
1695
|
+
2. Ask whether the job is flow discovery, one flow edit, execution, run history, published output, node-level inspection, latest-node-output lookup, or a follow-up message in a saved flow chat.
|
|
1554
1696
|
3. Ask which flow, slug, run, or node the request is about.
|
|
1555
1697
|
4. Ask whether they need the stable flow contract, one run result, one published
|
|
1556
1698
|
output, one node result, or the latest node output.
|
|
1557
|
-
5. If the user
|
|
1699
|
+
5. If the user is creating or editing a flow, clarify the flow's job, stable inputs,
|
|
1700
|
+
expected public output, and the smallest structural change before asking for node
|
|
1701
|
+
details.
|
|
1702
|
+
6. If the user wants to delete or archive a flow, ask which saved flow is affected
|
|
1703
|
+
and what future run, published output, or public contract should no longer exist.
|
|
1704
|
+
7. If the user wants to continue a saved flow chat, ask which flow should receive the
|
|
1705
|
+
follow-up and what the message should accomplish.
|
|
1706
|
+
8. If the user already named the flow and action clearly, skip the meta lane
|
|
1558
1707
|
question and ask only for the missing run, node, or output scope.
|
|
1559
|
-
|
|
1708
|
+
9. If the user wants a stable public input contract or published output, prefer those
|
|
1560
1709
|
dedicated reads instead of detouring through run history first.
|
|
1561
|
-
|
|
1710
|
+
10. If the user is debugging one failed run, ask whether the useful artifact is the run
|
|
1562
1711
|
summary, one node result, the latest node output, or the published output before
|
|
1563
1712
|
you start asking for edits.
|
|
1564
|
-
|
|
1713
|
+
11. Route to the dedicated workbench route family once the execution lane is clear.
|
|
1565
1714
|
|
|
1566
1715
|
Helpful follow-up lanes:
|
|
1567
1716
|
|
|
@@ -1582,7 +1731,7 @@ Lane-to-route map:
|
|
|
1582
1731
|
- run from a payload-first contract:
|
|
1583
1732
|
`/api/v1/workbench/run`
|
|
1584
1733
|
- send one follow-up message into a saved flow chat:
|
|
1585
|
-
|
|
1734
|
+
`POST /api/v1/workbench/flows/:id/chat`
|
|
1586
1735
|
- inspect published output or run history:
|
|
1587
1736
|
`/api/v1/workbench/flows/:id/output` or `/api/v1/workbench/flows/:id/runs`
|
|
1588
1737
|
- inspect one run or node result:
|
|
@@ -1617,12 +1766,24 @@ Direct action rules:
|
|
|
1617
1766
|
unless they explicitly want historical debugging.
|
|
1618
1767
|
- If the user wants to understand what inputs a flow can accept before editing or
|
|
1619
1768
|
running it, read the box catalog or flow detail before asking for a payload.
|
|
1769
|
+
- For new flows, ask what the flow should reliably produce, what input contract it
|
|
1770
|
+
should accept, and what first node or box should anchor it. Do not start by asking
|
|
1771
|
+
for raw JSON.
|
|
1772
|
+
- For flow edits, ask what behavior should change and how the public contract stays
|
|
1773
|
+
stable, unless the user explicitly wants to change the contract.
|
|
1774
|
+
- For flow deletion, confirm the saved flow and whether published outputs or run
|
|
1775
|
+
history still need to be preserved elsewhere before calling delete.
|
|
1776
|
+
- For flow chat follow-ups, use the saved flow chat route only when the user wants to
|
|
1777
|
+
continue a flow-specific conversation. Do not turn a chat follow-up into a new flow
|
|
1778
|
+
run, note, or generic entity update unless that is what the user asks for.
|
|
1620
1779
|
|
|
1621
1780
|
Ready to act when:
|
|
1622
1781
|
|
|
1623
1782
|
- the workbench lane is clear
|
|
1624
1783
|
- the flow, run, or node is clear enough
|
|
1625
1784
|
- the requested read or mutation is clear enough to choose the route
|
|
1785
|
+
- for flow CRUD, the intended stable input, output, or lifecycle effect is clear
|
|
1786
|
+
- for flow chat, the saved flow and follow-up message aim are clear
|
|
1626
1787
|
|
|
1627
1788
|
Preferred opening question:
|
|
1628
1789
|
|