forge-openclaw-plugin 0.2.60 → 0.2.65
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 +121 -51
- package/dist/assets/{board-B1V3M__K.js → board-DUwMfZvN.js} +1 -1
- package/dist/assets/index-B9VOpR7r.css +1 -0
- package/dist/assets/index-DoHjjze2.js +90 -0
- package/dist/assets/{motion-CltSTItx.js → motion-Crg3QyXD.js} +1 -1
- package/dist/assets/{table-B-VrSFx8.js → table-CTlDeYRs.js} +1 -1
- package/dist/assets/{ui-DUqM4jkt.js → ui-CJPaElbj.js} +1 -1
- package/dist/assets/{vendor-C0otBhgu.js → vendor-BdrT2htV.js} +217 -207
- package/dist/companion-iroh/darwin-arm64/forge-companion-iroh +0 -0
- package/dist/companion-iroh/darwin-x64/forge-companion-iroh +0 -0
- package/dist/companion-iroh/linux-x64/forge-companion-iroh +0 -0
- package/dist/companion-iroh-src/Cargo.lock +4559 -0
- package/dist/companion-iroh-src/Cargo.toml +37 -0
- package/dist/companion-iroh-src/src/lib.rs +279 -0
- package/dist/companion-iroh-src/src/main.rs +478 -0
- package/dist/companion-iroh-src/src/protocol.rs +129 -0
- package/dist/gamification-previews/dark-fantasy-item-trophy-tasks-anvil-marathon.webp +0 -0
- package/dist/gamification-previews/dark-fantasy-item-trophy-xp-levels-the-first-heat.webp +0 -0
- package/dist/gamification-previews/dark-fantasy-item-unlock-streaks-molten-crown-fire.webp +0 -0
- package/dist/gamification-previews/dark-fantasy-mascot.webp +0 -0
- package/dist/gamification-previews/dramatic-smithie-item-trophy-tasks-anvil-marathon.webp +0 -0
- package/dist/gamification-previews/dramatic-smithie-item-trophy-xp-levels-the-first-heat.webp +0 -0
- package/dist/gamification-previews/dramatic-smithie-item-unlock-streaks-molten-crown-fire.webp +0 -0
- package/dist/gamification-previews/dramatic-smithie-mascot.webp +0 -0
- package/dist/gamification-previews/mind-locksmith-item-trophy-tasks-anvil-marathon.webp +0 -0
- package/dist/gamification-previews/mind-locksmith-item-trophy-xp-levels-the-first-heat.webp +0 -0
- package/dist/gamification-previews/mind-locksmith-item-unlock-streaks-molten-crown-fire.webp +0 -0
- package/dist/gamification-previews/mind-locksmith-mascot.webp +0 -0
- package/dist/index.html +7 -7
- package/dist/openclaw/parity.js +27 -0
- package/dist/openclaw/plugin-entry-shared.js +2 -2
- package/dist/openclaw/plugin-sdk-types.d.ts +2 -1
- package/dist/openclaw/routes.d.ts +4 -0
- package/dist/openclaw/routes.js +112 -3
- package/dist/openclaw/tools.js +32 -4
- package/dist/server/server/migrations/059_data_backup_retention.sql +2 -0
- package/dist/server/server/src/app.js +288 -61
- package/dist/server/server/src/data-management-types.js +2 -0
- package/dist/server/server/src/discovery-advertiser.js +13 -0
- package/dist/server/server/src/health.js +58 -3
- package/dist/server/server/src/movement.js +16 -1
- package/dist/server/server/src/openapi.js +410 -9
- package/dist/server/server/src/repositories/rewards.js +60 -0
- package/dist/server/server/src/services/companion-iroh.js +425 -0
- package/dist/server/server/src/services/data-management.js +32 -2
- package/dist/server/server/src/services/doctor.js +762 -0
- package/dist/server/server/src/services/gamification.js +75 -3
- package/dist/server/server/src/services/life-force.js +166 -25
- package/dist/server/server/src/web.js +88 -12
- package/dist/server/src/lib/api.js +9 -0
- package/dist/server/src/lib/gamification-catalog.js +1 -1
- package/openclaw.plugin.json +85 -3
- package/package.json +10 -6
- package/server/migrations/059_data_backup_retention.sql +2 -0
- package/skills/forge-openclaw/SKILL.md +80 -19
- package/skills/forge-openclaw/entity_conversation_playbooks.md +283 -25
- package/skills/forge-openclaw/psyche_entity_playbooks.md +82 -0
- package/dist/assets/index-BwKAPo98.css +0 -1
- package/dist/assets/index-Dy7c-dRY.js +0 -90
|
@@ -18,6 +18,12 @@ Forge correctly, and gather only the structure that still matters.
|
|
|
18
18
|
- The first question should usually clarify whether the user is trying to understand,
|
|
19
19
|
preserve, decide, schedule, or change something, not just which field or provider
|
|
20
20
|
they want.
|
|
21
|
+
- Before asking, decide the API posture internally: shared batch entity route,
|
|
22
|
+
specialized CRUD surface, action workflow, or specialized domain route. If that
|
|
23
|
+
posture is unclear, ask the one user-facing question that will choose it.
|
|
24
|
+
- Do not let API uncertainty leak out as vague wording. With the user, ask about the
|
|
25
|
+
real thing: the time window, flow, run, feeling, boundary, owner, or decision that
|
|
26
|
+
would change the action.
|
|
21
27
|
- First identify the user's job when the lane is not already explicit:
|
|
22
28
|
are they trying to add, update, review, compare, navigate, link, or run something?
|
|
23
29
|
- Before every question, decide the one missing thing you are trying to clarify.
|
|
@@ -27,6 +33,9 @@ Forge correctly, and gather only the structure that still matters.
|
|
|
27
33
|
- Prefer one clean question to a stacked sentence with several asks.
|
|
28
34
|
- Reflect briefly when the user gives meaning, ambivalence, or emotionally loaded
|
|
29
35
|
context that matters to the record.
|
|
36
|
+
- Avoid generic reflections such as "that sounds important" unless you name what is
|
|
37
|
+
important in plain language. A useful reflection should make the next question feel
|
|
38
|
+
earned.
|
|
30
39
|
- Especially for goals, habits, notes, and updates, reflect what the user is trying to
|
|
31
40
|
preserve, change, or make true before you ask for structure.
|
|
32
41
|
- For emotionally meaningful non-Psyche records such as goals, habits, notes, and many
|
|
@@ -105,6 +114,24 @@ With the user, say the human thing:
|
|
|
105
114
|
The API path still matters, but it should not leak into the question unless the user
|
|
106
115
|
is explicitly asking about implementation.
|
|
107
116
|
|
|
117
|
+
## Dedicated surface lane translation
|
|
118
|
+
|
|
119
|
+
Use this when Movement, Life Force, or Workbench work needs a route choice. The route
|
|
120
|
+
choice is an internal classification step, not a user-facing menu.
|
|
121
|
+
|
|
122
|
+
- Translate "day, month, all-time, timeline, trip detail, or selection" into "which
|
|
123
|
+
time window or specific stay/trip should we look at?"
|
|
124
|
+
- Translate "overview, profile, weekdayTemplate, or fatigueSignal" into "is this about
|
|
125
|
+
your current state, a durable assumption, a repeated weekday rhythm, or how you feel
|
|
126
|
+
right now?"
|
|
127
|
+
- Translate "listFlows, boxCatalog, runDetail, nodeResult, latestNodeOutput, or
|
|
128
|
+
publishedOutput" into "do you need the saved flow, its inputs, one run, one node, or
|
|
129
|
+
the public result?"
|
|
130
|
+
- If the user already gave the concrete object, time window, weekday, flow, run, or
|
|
131
|
+
node, skip the route menu entirely and ask only for the missing product detail.
|
|
132
|
+
- Once the lane is selected, use the exact route key internally and do not invent a
|
|
133
|
+
friendlier path.
|
|
134
|
+
|
|
108
135
|
## Psyche and memory routing
|
|
109
136
|
|
|
110
137
|
Self-observation is not the default container for psychological material. Use it only
|
|
@@ -200,6 +227,9 @@ Use this quick split before the conversation gets too detailed.
|
|
|
200
227
|
`/api/v1/entities/search`, `/api/v1/entities/create`,
|
|
201
228
|
`/api/v1/entities/update`, `/api/v1/entities/delete`, and
|
|
202
229
|
`/api/v1/entities/restore`.
|
|
230
|
+
- Every normal entity section below inherits that batch-route default unless its own
|
|
231
|
+
route note says otherwise. Do not invent one-off entity endpoints for ordinary
|
|
232
|
+
stored records.
|
|
203
233
|
- `wiki_page` and `calendar_connection` are specialized CRUD areas. Use the wiki
|
|
204
234
|
page routes and calendar connection setup or sync routes instead of pretending they
|
|
205
235
|
are simple batch records.
|
|
@@ -207,6 +237,10 @@ Use this quick split before the conversation gets too detailed.
|
|
|
207
237
|
`preference_signal`, and `self_observation` are action workflows. Start from what
|
|
208
238
|
the user is trying to do, then use the dedicated action tool or note-backed write
|
|
209
239
|
model.
|
|
240
|
+
- `sleep_overview` and `sports_overview` are read-model-only surfaces. Use them when
|
|
241
|
+
the user wants to review nights, workouts, training load, recovery context, or
|
|
242
|
+
health patterns before deciding whether one stored `sleep_session` or
|
|
243
|
+
`workout_session` needs enrichment.
|
|
210
244
|
- Movement, Life Force, and Workbench are specialized domain areas. Use their
|
|
211
245
|
dedicated route families for timelines and overlays, energy profile/templates and
|
|
212
246
|
fatigue signals, and Workbench flow execution or result artifacts. When available,
|
|
@@ -216,6 +250,65 @@ Use this quick split before the conversation gets too detailed.
|
|
|
216
250
|
- Once the route posture is clear, keep the questioning focused on the missing detail
|
|
217
251
|
that selects the route or payload. Do not ask route-neutral reflective questions
|
|
218
252
|
after the action path is already obvious.
|
|
253
|
+
- If the tool schema and live onboarding disagree about a specialized route key or
|
|
254
|
+
path, treat that as a contract mismatch to fix. Do not guess a nearby route.
|
|
255
|
+
|
|
256
|
+
## Full Route Posture Matrix
|
|
257
|
+
|
|
258
|
+
Use this as an internal checklist when simulating or handling an entity flow. Do not
|
|
259
|
+
read this table to the user. It exists so the agent can ask natural questions while
|
|
260
|
+
still knowing the exact write/read family before it acts.
|
|
261
|
+
|
|
262
|
+
- `goal`, `project`, `strategy`, `task`, `habit`, `tag`, `note`, `insight`,
|
|
263
|
+
`calendar_event`, `work_block_template`, and `task_timebox`: normal stored Forge
|
|
264
|
+
entities. Search, create, update, delete, and restore through the shared batch
|
|
265
|
+
entity routes.
|
|
266
|
+
- `preference_catalog`, `preference_catalog_item`, `preference_context`, and
|
|
267
|
+
`preference_item`: normal stored Preferences records. Use shared batch entity
|
|
268
|
+
routes for CRUD; switch to Preferences action routes only for judgments, signals,
|
|
269
|
+
game starts, merges, entity seeding, or explicit score overrides.
|
|
270
|
+
- `questionnaire_instrument`: normal stored questionnaire CRUD for ordinary authoring
|
|
271
|
+
and edits. Use questionnaire action routes only for clone, draft, and publish
|
|
272
|
+
state.
|
|
273
|
+
- `sleep_session` and `workout_session`: normal stored health records for ordinary
|
|
274
|
+
CRUD. Use health overview/read helpers for review and reflective update helpers only
|
|
275
|
+
when enriching one already-known record after review.
|
|
276
|
+
- `psyche_value`, `behavior_pattern`, `behavior`, `belief_entry`, `mode_profile`,
|
|
277
|
+
`mode_guide_session`, `trigger_report`, `event_type`, and `emotion_definition`:
|
|
278
|
+
psychologically meaningful records, but normal stored entities for API purposes.
|
|
279
|
+
Search and mutate through shared batch entity routes after the formulation is clear.
|
|
280
|
+
- `wiki_page`: specialized CRUD. Use wiki page/search/upsert routes so page rows,
|
|
281
|
+
backlinks, spaces, aliases, and metadata stay coherent.
|
|
282
|
+
- `calendar_connection`: specialized CRUD. Use provider discovery, connection CRUD,
|
|
283
|
+
selected-calendar rediscovery, sync, and delete routes rather than batch entity
|
|
284
|
+
tools.
|
|
285
|
+
- `task_run`: action workflow. Use task-run start, heartbeat, focus, complete, and
|
|
286
|
+
release routes; never treat status changes as proof of live work.
|
|
287
|
+
- `work_adjustment`: action workflow. Use the signed work-adjustment route for real
|
|
288
|
+
minutes that happened outside a live run.
|
|
289
|
+
- `preference_judgment` and `preference_signal`: action workflows. Use the dedicated
|
|
290
|
+
Preferences judgment and signal routes, not batch CRUD.
|
|
291
|
+
- `questionnaire_run`: action workflow. Use questionnaire run start, read, update, and
|
|
292
|
+
complete routes.
|
|
293
|
+
- `self_observation`: read-model and note-backed workflow. Read the self-observation
|
|
294
|
+
calendar, then create or update an observed `note` with `frontmatter.observedAt`
|
|
295
|
+
only when a lightweight episode observation is the right container.
|
|
296
|
+
- `sleep_overview`: read-model-only health surface. Use the sleep overview route or
|
|
297
|
+
`forge_get_sleep_overview` when the user wants to review recent nights, regularity,
|
|
298
|
+
score, stages, or recovery patterns before deciding whether a specific
|
|
299
|
+
`sleep_session` needs reflective enrichment.
|
|
300
|
+
- `sports_overview`: read-model-only health surface. Use the sports overview route or
|
|
301
|
+
`forge_get_sports_overview` when the user wants to review workouts, training load,
|
|
302
|
+
effort, type distribution, or recovery context before deciding whether a specific
|
|
303
|
+
`workout_session` needs reflective enrichment.
|
|
304
|
+
- `movement`: specialized domain surface. Use the dedicated movement routes for day,
|
|
305
|
+
month, all-time, timeline, places, trip detail, selection aggregates, manual
|
|
306
|
+
overlays, and repair actions.
|
|
307
|
+
- `life_force`: specialized domain surface. Use the dedicated Life Force routes for
|
|
308
|
+
overview, profile updates, weekday templates, and fatigue signals.
|
|
309
|
+
- `workbench`: specialized domain surface. Use the dedicated Workbench routes for
|
|
310
|
+
flow catalog/detail, flow CRUD, execution, run history, published output, node
|
|
311
|
+
result, and latest-node-output work.
|
|
219
312
|
|
|
220
313
|
## Active-listening patterns
|
|
221
314
|
|
|
@@ -314,8 +407,8 @@ exists.
|
|
|
314
407
|
- If the next answer would not change the route, wording, timing, links, or useful
|
|
315
408
|
interpretation, stop asking and act.
|
|
316
409
|
- Close cleanly:
|
|
317
|
-
once the user says the wording or
|
|
318
|
-
or write.
|
|
410
|
+
once the user says the wording or next action lands, summarize once and move to the
|
|
411
|
+
read or write.
|
|
319
412
|
|
|
320
413
|
When an adjacent record becomes visible:
|
|
321
414
|
|
|
@@ -344,8 +437,10 @@ Use this quick internal check before every follow-up question.
|
|
|
344
437
|
1. What is the one thing still unknown?
|
|
345
438
|
2. Does that unknown affect the entity shape, the wording, the placement, or the
|
|
346
439
|
operational detail?
|
|
347
|
-
3.
|
|
348
|
-
|
|
440
|
+
3. Does it affect the API posture: batch CRUD, specialized CRUD, action workflow, or
|
|
441
|
+
specialized domain route?
|
|
442
|
+
4. What is the smallest question that would answer that unknown?
|
|
443
|
+
5. If the user already gave enough to act, stop asking and move to a short summary or
|
|
349
444
|
the write.
|
|
350
445
|
|
|
351
446
|
Useful calibration heuristics:
|
|
@@ -360,6 +455,8 @@ Useful calibration heuristics:
|
|
|
360
455
|
once and then return to the one missing structural detail.
|
|
361
456
|
- If the next question would only decorate the record and not change its usefulness,
|
|
362
457
|
skip it.
|
|
458
|
+
- If the next question would not change the API path, payload, wording, timing, or
|
|
459
|
+
useful links, skip it.
|
|
363
460
|
|
|
364
461
|
## Abstract And Reusable Record Moves
|
|
365
462
|
|
|
@@ -777,6 +874,8 @@ Routing rule:
|
|
|
777
874
|
book or article, keep a concept, or build a reusable explanation, consider
|
|
778
875
|
`wiki_page` before `note`. Use `note` for temporary evidence, work logs, or linked
|
|
779
876
|
detail; use `wiki_page` for durable memory.
|
|
877
|
+
- Use the wiki tools and `/api/v1/wiki/pages` family for page reads and writes. Do
|
|
878
|
+
not route `wiki_page` through batch entity CRUD.
|
|
780
879
|
|
|
781
880
|
Ready to save when:
|
|
782
881
|
|
|
@@ -922,6 +1021,13 @@ Preferred opening question:
|
|
|
922
1021
|
|
|
923
1022
|
- "Which task should I start?"
|
|
924
1023
|
|
|
1024
|
+
Route note:
|
|
1025
|
+
|
|
1026
|
+
- `task_run` is an action workflow. Start live work with `/api/v1/tasks/:id/runs`.
|
|
1027
|
+
Use `/api/v1/task-runs/:id/heartbeat`, `/focus`, `/complete`, and `/release` for
|
|
1028
|
+
the rest of the run lifecycle. Do not represent live work by only changing task
|
|
1029
|
+
status.
|
|
1030
|
+
|
|
925
1031
|
## Work Adjustment
|
|
926
1032
|
|
|
927
1033
|
Aim: correct tracked minutes truthfully without pretending a live run happened.
|
|
@@ -939,6 +1045,12 @@ Helpful follow-up lanes:
|
|
|
939
1045
|
- whether the adjustment is positive or negative
|
|
940
1046
|
- what truthful reason should stay attached to the correction
|
|
941
1047
|
|
|
1048
|
+
Route note:
|
|
1049
|
+
|
|
1050
|
+
- `work_adjustment` is an action workflow. Use the dedicated work-adjustment tool or
|
|
1051
|
+
`/api/v1/work-adjustments` path after the target and signed minute correction are
|
|
1052
|
+
clear. Do not create a fake task run or invent a standalone batch CRUD entity.
|
|
1053
|
+
|
|
942
1054
|
Ready to act when:
|
|
943
1055
|
|
|
944
1056
|
- the target task or project is clear
|
|
@@ -987,7 +1099,8 @@ Route note:
|
|
|
987
1099
|
|
|
988
1100
|
- `self_observation` is note-backed. Read the calendar first, then create or update an
|
|
989
1101
|
observed `note` with `frontmatter.observedAt` instead of inventing a standalone CRUD
|
|
990
|
-
write.
|
|
1102
|
+
write. The read path is `/api/v1/psyche/self-observation/calendar`; the stored
|
|
1103
|
+
write is a linked `note` through the shared batch entity route.
|
|
991
1104
|
- Do not promote self-observation over functional analysis. If the user is describing
|
|
992
1105
|
a loop, use `behavior_pattern`; if they are describing one emotionally meaningful
|
|
993
1106
|
episode, use `trigger_report`; if a part-state is central, use `mode_guide_session`
|
|
@@ -1062,6 +1175,82 @@ Preferred opening question:
|
|
|
1062
1175
|
|
|
1063
1176
|
- "What about this workout feels most worth remembering or connecting?"
|
|
1064
1177
|
|
|
1178
|
+
## Sleep Overview
|
|
1179
|
+
|
|
1180
|
+
Aim: review sleep patterns before deciding whether one night needs a reflective update
|
|
1181
|
+
or a planning follow-up.
|
|
1182
|
+
|
|
1183
|
+
Arc:
|
|
1184
|
+
|
|
1185
|
+
1. Ask what the user wants to understand from the sleep picture: one night, a recent
|
|
1186
|
+
trend, regularity, recovery, stages, or links to work and Psyche context.
|
|
1187
|
+
2. Read the sleep overview before asking the user to reconstruct metrics from memory.
|
|
1188
|
+
3. Reflect the practical question the user is trying to answer from the overview.
|
|
1189
|
+
4. Move to `sleep_session` enrichment only when one specific night needs context,
|
|
1190
|
+
tags, notes, or links.
|
|
1191
|
+
|
|
1192
|
+
Helpful follow-up lanes:
|
|
1193
|
+
|
|
1194
|
+
- which night or date range matters
|
|
1195
|
+
- whether the question is recovery, regularity, stages, schedule drift, or links
|
|
1196
|
+
- what decision the sleep review should help with
|
|
1197
|
+
|
|
1198
|
+
Route note:
|
|
1199
|
+
|
|
1200
|
+
- `sleep_overview` is a read-model-only surface. Use `forge_get_sleep_overview` or
|
|
1201
|
+
`/api/v1/health/sleep` for review. Do not create, update, or delete
|
|
1202
|
+
`sleep_overview` through batch CRUD.
|
|
1203
|
+
- If the review reveals that one night needs reflective context, switch to the stored
|
|
1204
|
+
`sleep_session` batch route or reflective update helper for that known session.
|
|
1205
|
+
|
|
1206
|
+
Ready to review when:
|
|
1207
|
+
|
|
1208
|
+
- the user's practical sleep question is clear
|
|
1209
|
+
- the relevant night or date range is clear enough
|
|
1210
|
+
|
|
1211
|
+
Preferred opening question:
|
|
1212
|
+
|
|
1213
|
+
- "What are you trying to understand from your sleep picture right now?"
|
|
1214
|
+
|
|
1215
|
+
## Sports Overview
|
|
1216
|
+
|
|
1217
|
+
Aim: review workout and training-load context before deciding whether one workout
|
|
1218
|
+
needs a reflective update or recovery follow-up.
|
|
1219
|
+
|
|
1220
|
+
Arc:
|
|
1221
|
+
|
|
1222
|
+
1. Ask what the user wants to understand from the sports picture: one workout, a
|
|
1223
|
+
recent training trend, effort, volume, type mix, recovery, or links to mood and
|
|
1224
|
+
goals.
|
|
1225
|
+
2. Read the sports overview before asking the user to reconstruct metrics from memory.
|
|
1226
|
+
3. Reflect the practical decision the review should support.
|
|
1227
|
+
4. Move to `workout_session` enrichment only when one specific workout needs context,
|
|
1228
|
+
tags, notes, or links.
|
|
1229
|
+
|
|
1230
|
+
Helpful follow-up lanes:
|
|
1231
|
+
|
|
1232
|
+
- which workout or date range matters
|
|
1233
|
+
- whether the question is load, effort, activity type, recovery, mood, or links
|
|
1234
|
+
- what decision the sports review should help with
|
|
1235
|
+
|
|
1236
|
+
Route note:
|
|
1237
|
+
|
|
1238
|
+
- `sports_overview` is a read-model-only surface. Use `forge_get_sports_overview` or
|
|
1239
|
+
`/api/v1/health/fitness` for review. Do not create, update, or delete
|
|
1240
|
+
`sports_overview` through batch CRUD.
|
|
1241
|
+
- If the review reveals that one workout needs reflective context, switch to the
|
|
1242
|
+
stored `workout_session` batch route or reflective update helper for that known
|
|
1243
|
+
session.
|
|
1244
|
+
|
|
1245
|
+
Ready to review when:
|
|
1246
|
+
|
|
1247
|
+
- the user's practical training or recovery question is clear
|
|
1248
|
+
- the relevant workout or date range is clear enough
|
|
1249
|
+
|
|
1250
|
+
Preferred opening question:
|
|
1251
|
+
|
|
1252
|
+
- "What are you trying to understand from your workout picture right now?"
|
|
1253
|
+
|
|
1065
1254
|
## Calendar Connection
|
|
1066
1255
|
|
|
1067
1256
|
Aim: connect the right provider deliberately without turning setup into a credential
|
|
@@ -1076,13 +1265,29 @@ Arc:
|
|
|
1076
1265
|
real use case.
|
|
1077
1266
|
4. Ask only for the next provider-specific step that still matters, such as auth flow,
|
|
1078
1267
|
label, or calendar selection.
|
|
1079
|
-
5.
|
|
1268
|
+
5. If the user is updating or removing an existing connection, ask which connection
|
|
1269
|
+
and what exact lifecycle action they want before touching credentials or sync.
|
|
1270
|
+
6. Move into the actual connection flow once the setup goal is clear.
|
|
1080
1271
|
|
|
1081
1272
|
Helpful follow-up lanes:
|
|
1082
1273
|
|
|
1083
1274
|
- what calendar workflow the user wants to unlock
|
|
1084
1275
|
- whether writable projection matters
|
|
1085
1276
|
- whether the provider requires a local sign-in step instead of manual fields
|
|
1277
|
+
- whether this is new setup, rediscovery, selected-calendar update, sync, or removal
|
|
1278
|
+
|
|
1279
|
+
Route note:
|
|
1280
|
+
|
|
1281
|
+
- `calendar_connection` is a specialized CRUD surface, not a batch CRUD entity.
|
|
1282
|
+
- Use `GET /api/v1/calendar/connections` to read existing connections.
|
|
1283
|
+
- Use `POST /api/v1/calendar/discovery` for Apple or custom CalDAV discovery and
|
|
1284
|
+
`GET /api/v1/calendar/macos-local/discovery` for calendars already configured on
|
|
1285
|
+
this Mac.
|
|
1286
|
+
- Use `GET /api/v1/calendar/connections/:id/discovery` before changing selected
|
|
1287
|
+
calendars on an existing connection.
|
|
1288
|
+
- Use `POST /api/v1/calendar/connections`, `PATCH /api/v1/calendar/connections/:id`,
|
|
1289
|
+
`POST /api/v1/calendar/connections/:id/sync`, or
|
|
1290
|
+
`DELETE /api/v1/calendar/connections/:id` for the connection lifecycle.
|
|
1086
1291
|
|
|
1087
1292
|
Ready to act when:
|
|
1088
1293
|
|
|
@@ -1190,6 +1395,9 @@ Direct action rules:
|
|
|
1190
1395
|
|
|
1191
1396
|
- If the user is clearly talking about a missing-data gap that should become a stay or
|
|
1192
1397
|
trip, use a user-defined movement box.
|
|
1398
|
+
- Treat day, month, all-time, timeline, trip detail, and selection as internal read
|
|
1399
|
+
lanes. With the user, ask for the useful time window, place, selected span, stay, or
|
|
1400
|
+
trip instead of listing route choices.
|
|
1193
1401
|
- Preflight with `/api/v1/movement/user-boxes/preflight` when overlap or exact timing
|
|
1194
1402
|
is unclear, then create the overlay with `/api/v1/movement/user-boxes`.
|
|
1195
1403
|
- Use `kind: "stay"` when the user stayed in one place and `kind: "trip"` when they
|
|
@@ -1301,6 +1509,15 @@ Lane-to-route map:
|
|
|
1301
1509
|
|
|
1302
1510
|
Direct action rules:
|
|
1303
1511
|
|
|
1512
|
+
- In onboarding, this surface may be keyed as `lifeForce` and also as the entity-style
|
|
1513
|
+
alias `life_force`. Treat both names as the same dedicated Life Force route family,
|
|
1514
|
+
not as batch CRUD.
|
|
1515
|
+
- Treat overview, profile, weekday-template, and fatigue-signal lanes as internal
|
|
1516
|
+
route choices. With the user, ask whether this is a current read, a durable
|
|
1517
|
+
assumption, a repeated weekday rhythm, or a right-now state instead of reciting route
|
|
1518
|
+
names.
|
|
1519
|
+
- The overview route key is `overview` and the concrete runtime path is
|
|
1520
|
+
`GET /api/v1/life-force`. Do not invent `/api/v1/life-force/overview`.
|
|
1304
1521
|
- If the user is describing a durable baseline such as work capacity, recovery style,
|
|
1305
1522
|
or action-point assumptions, patch the profile instead of logging a fatigue signal.
|
|
1306
1523
|
- If the user is describing a repeatable weekday rhythm, update that weekday template
|
|
@@ -1381,6 +1598,13 @@ Direct action rules:
|
|
|
1381
1598
|
|
|
1382
1599
|
- If the user needs the stable public contract of a flow, prefer the flow detail or
|
|
1383
1600
|
published-output routes before a run-history read.
|
|
1601
|
+
- Treat saved-flow catalog, box catalog, run history, run detail, node result, latest
|
|
1602
|
+
node output, and published output as internal read lanes. With the user, ask whether
|
|
1603
|
+
they need the saved flow, its input contract, one run, one node, or the public
|
|
1604
|
+
result instead of listing route keys.
|
|
1605
|
+
- For flow catalog questions, use `GET /api/v1/workbench/flows`; for available box
|
|
1606
|
+
inputs, use `GET /api/v1/workbench/catalog/boxes`. Do not blur those into one vague
|
|
1607
|
+
"catalog" read when the user needs a runnable flow versus an input-box contract.
|
|
1384
1608
|
- If the user wants to execute a known saved flow, use `/api/v1/workbench/flows/:id/run`.
|
|
1385
1609
|
- If the user wants payload-first execution without depending on a saved flow id, use
|
|
1386
1610
|
`/api/v1/workbench/run`.
|
|
@@ -1566,7 +1790,9 @@ Route note:
|
|
|
1566
1790
|
|
|
1567
1791
|
- `questionnaire_instrument` is normal stored CRUD for ordinary create, update,
|
|
1568
1792
|
delete, and search work. Use clone, draft, and publish action routes only when the
|
|
1569
|
-
user is working with instrument version state.
|
|
1793
|
+
user is working with instrument version state. Questionnaire action paths live under
|
|
1794
|
+
`/api/v1/psyche/questionnaires`, including `/:id/clone`, `/:id/draft`, and
|
|
1795
|
+
`/:id/publish`.
|
|
1570
1796
|
|
|
1571
1797
|
Ready to act when:
|
|
1572
1798
|
|
|
@@ -1599,7 +1825,10 @@ Helpful follow-up lanes:
|
|
|
1599
1825
|
Route note:
|
|
1600
1826
|
|
|
1601
1827
|
- `questionnaire_run` is an action workflow. Use the questionnaire run start, read,
|
|
1602
|
-
update, and complete routes instead of treating answers as generic batch CRUD
|
|
1828
|
+
update, and complete routes instead of treating answers as generic batch CRUD:
|
|
1829
|
+
`/api/v1/psyche/questionnaires/:id/runs`,
|
|
1830
|
+
`/api/v1/psyche/questionnaire-runs/:id`, and
|
|
1831
|
+
`/api/v1/psyche/questionnaire-runs/:id/complete`.
|
|
1603
1832
|
|
|
1604
1833
|
Ready to act when:
|
|
1605
1834
|
|
|
@@ -1612,26 +1841,38 @@ Preferred opening question:
|
|
|
1612
1841
|
|
|
1613
1842
|
## Event Type
|
|
1614
1843
|
|
|
1615
|
-
Aim:
|
|
1616
|
-
|
|
1844
|
+
Aim: bridge into the Psyche playbook for a reusable incident category without
|
|
1845
|
+
flattening the lived episode into cold taxonomy. `event_type` is a Psyche taxonomy
|
|
1846
|
+
record: use the deeper Event Type guidance in `psyche_entity_playbooks.md` when the
|
|
1847
|
+
user is exploring meaning, and keep this section as the route and handoff reminder.
|
|
1617
1848
|
|
|
1618
1849
|
Arc:
|
|
1619
1850
|
|
|
1620
|
-
1. Ask what kind of
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1851
|
+
1. Ask what kind of emotionally meaningful moment keeps recurring and why naming it
|
|
1852
|
+
consistently would help future trigger reports.
|
|
1853
|
+
2. Reflect the repeated moment back in plain language by naming the emotional or
|
|
1854
|
+
relational stake before narrowing the wording.
|
|
1855
|
+
3. Ask for one recent example if the boundary is still abstract.
|
|
1856
|
+
4. Clarify what belongs inside this event type and what should stay outside it.
|
|
1857
|
+
5. Offer one concise candidate label once the repeated moment is clear.
|
|
1858
|
+
6. Link it to trigger reports, beliefs, patterns, modes, or emotion definitions only
|
|
1859
|
+
after the category itself feels accurate.
|
|
1627
1860
|
|
|
1628
1861
|
If the user already offered a candidate label, keep the wording provisional and ask
|
|
1629
1862
|
what kinds of moments belong inside it before you ask whether the label is right.
|
|
1630
1863
|
|
|
1864
|
+
Route note:
|
|
1865
|
+
|
|
1866
|
+
- `event_type` is psychologically meaningful but still uses shared batch CRUD for
|
|
1867
|
+
storage. Search and mutate it through the shared entity routes after the lived
|
|
1868
|
+
category, boundary, and wording are clear enough. Do not treat it as a generic tag
|
|
1869
|
+
or route it through `self_observation`.
|
|
1870
|
+
|
|
1631
1871
|
Ready to save when:
|
|
1632
1872
|
|
|
1633
|
-
- the
|
|
1634
|
-
- the
|
|
1873
|
+
- the repeated moment is understandable in plain language
|
|
1874
|
+
- the boundary is clear enough for future reports to use consistently
|
|
1875
|
+
- the label feels accurate enough or has one candidate wording to confirm
|
|
1635
1876
|
|
|
1636
1877
|
Preferred opening question:
|
|
1637
1878
|
|
|
@@ -1639,25 +1880,42 @@ Preferred opening question:
|
|
|
1639
1880
|
|
|
1640
1881
|
## Emotion Definition
|
|
1641
1882
|
|
|
1642
|
-
Aim:
|
|
1883
|
+
Aim: `emotion_definition` is a Psyche taxonomy record, so bridge into the Psyche
|
|
1884
|
+
playbook for a reusable emotion entry by its lived signature, not by a dictionary
|
|
1885
|
+
definition. Use the deeper Emotion Definition guidance in
|
|
1886
|
+
`psyche_entity_playbooks.md` when the user is exploring the feeling.
|
|
1643
1887
|
|
|
1644
1888
|
Arc:
|
|
1645
1889
|
|
|
1646
|
-
1. Ask
|
|
1647
|
-
2. Reflect the felt signature back in plain language before
|
|
1890
|
+
1. Ask when this feeling was present recently and what made it recognizable.
|
|
1891
|
+
2. Reflect the felt signature back in plain language before asking for category or
|
|
1892
|
+
label polish.
|
|
1648
1893
|
3. Ask what distinguishes it from nearby emotions if that matters.
|
|
1649
|
-
4.
|
|
1650
|
-
5.
|
|
1894
|
+
4. Ask what the feeling tends to signal, protect, warn about, long for, or demand.
|
|
1895
|
+
5. Offer one concise definition in the user's language and invite correction.
|
|
1896
|
+
6. Link it to trigger reports, modes, beliefs, or patterns only after the definition
|
|
1897
|
+
feels steady.
|
|
1651
1898
|
|
|
1652
1899
|
Helpful follow-up lanes:
|
|
1653
1900
|
|
|
1654
1901
|
- what tells the user this is that feeling and not a nearby one
|
|
1902
|
+
- body signal, urge, image, thought, or relational meaning that identifies it
|
|
1655
1903
|
- what kind of moments this emotion name should be used for later
|
|
1904
|
+
- what the feeling usually warns about, longs for, protects, or demands
|
|
1905
|
+
|
|
1906
|
+
Route note:
|
|
1907
|
+
|
|
1908
|
+
- `emotion_definition` is psychologically meaningful but still uses shared batch CRUD
|
|
1909
|
+
for storage. Search and mutate it through the shared entity routes after the felt
|
|
1910
|
+
signature, boundary, and wording are clear enough. Do not treat it as a generic
|
|
1911
|
+
dictionary item.
|
|
1656
1912
|
|
|
1657
1913
|
Ready to save when:
|
|
1658
1914
|
|
|
1659
1915
|
- the label is clear
|
|
1660
|
-
- the
|
|
1916
|
+
- the felt signature is clear enough to recognize later
|
|
1917
|
+
- the boundary from nearby feelings is clear enough when it matters
|
|
1918
|
+
- the definition can be written in language the user recognizes
|
|
1661
1919
|
|
|
1662
1920
|
Preferred opening question:
|
|
1663
1921
|
|
|
@@ -188,6 +188,65 @@ material without a usable formulation.
|
|
|
188
188
|
defending the formulation.
|
|
189
189
|
- Do not use hypotheses as diagnosis, certainty, or replacement belief work. They are
|
|
190
190
|
collaborative formulations that can be saved, revised, or discarded.
|
|
191
|
+
- Hypotheses are not decorative reassurance. Use them when they help the user see a
|
|
192
|
+
function, prediction, protection, payoff, cost, or value conflict that their own
|
|
193
|
+
example already supports.
|
|
194
|
+
- If a user is circling around a behavior pattern, mode, belief, or trigger report
|
|
195
|
+
after one concrete example is visible, offer one careful hypothesis and then one
|
|
196
|
+
question that tests or corrects it.
|
|
197
|
+
- Do not make the user supply every interpretation alone. If the sequence is clear
|
|
198
|
+
enough, do the formulation work in plain language and invite correction.
|
|
199
|
+
|
|
200
|
+
## Hypothesis To Record Bridge
|
|
201
|
+
|
|
202
|
+
Once a hypothesis lands or is corrected, turn it into a saveable Forge shape instead
|
|
203
|
+
of leaving it as warm reflective prose.
|
|
204
|
+
|
|
205
|
+
- Name what the hypothesis is becoming: a belief sentence, functional loop, behavior,
|
|
206
|
+
mode, trigger report, value, event type, or emotion definition.
|
|
207
|
+
- Translate the accepted hypothesis into the smallest useful record fields: title,
|
|
208
|
+
core sentence, cue, protection, payoff, cost, preferred response, fear, body signal,
|
|
209
|
+
or linked episode.
|
|
210
|
+
- Ask one confirmation question about accuracy, not another broad exploration
|
|
211
|
+
question.
|
|
212
|
+
- If the user corrects the hypothesis, revise the formulation once in their language
|
|
213
|
+
and then ask whether that corrected version is true enough to save.
|
|
214
|
+
- If adjacent Psyche records became visible, mention them as optional links after the
|
|
215
|
+
primary record is stable. Do not switch containers midstream unless the user wants
|
|
216
|
+
that.
|
|
217
|
+
- Save through shared batch entity routes only after the user accepts the working
|
|
218
|
+
wording or explicitly asks to save.
|
|
219
|
+
|
|
220
|
+
## Psyche Hypothesis Map
|
|
221
|
+
|
|
222
|
+
Use these shapes after at least one concrete example is clear. The hypothesis should
|
|
223
|
+
help the user understand function, meaning, protection, cost, or connection. Keep it
|
|
224
|
+
short, tentative, and correctable.
|
|
225
|
+
|
|
226
|
+
- `psyche_value`: hypothesize about the longing or pain that makes the value alive
|
|
227
|
+
now, and what ordinary behavior would show movement toward it.
|
|
228
|
+
- `behavior_pattern`: hypothesize about the cue, body/emotion shift, meaning,
|
|
229
|
+
behavior or urge, short-term payoff, long-term cost, and what a replacement response
|
|
230
|
+
would still need to protect.
|
|
231
|
+
- `behavior`: hypothesize about the immediate problem the move solves, the cue or
|
|
232
|
+
urge that pulls it online, and whether it functions as away, committed, or recovery
|
|
233
|
+
behavior.
|
|
234
|
+
- `belief_entry`: hypothesize about the rule, prediction, or self/other/world sentence
|
|
235
|
+
the moment seems to activate, then ask whether that wording lands.
|
|
236
|
+
- `mode_profile`: hypothesize about the protective job, feared danger, burden, and
|
|
237
|
+
possible mode family only after the part's lived voice or posture is visible.
|
|
238
|
+
- `mode_guide_session`: hypothesize about what the active part is trying to stop,
|
|
239
|
+
force, prevent, or secure right now while keeping candidate mode labels provisional.
|
|
240
|
+
- `trigger_report`: hypothesize about the episode chain only after the situation,
|
|
241
|
+
felt stake, meaning, action, and consequence are at least partly visible.
|
|
242
|
+
- `event_type`: hypothesize about the repeated emotional or relational stake that
|
|
243
|
+
makes future reports need the same category.
|
|
244
|
+
- `emotion_definition`: hypothesize about the feeling's body signature, urge, warning,
|
|
245
|
+
protection, or longing, and what distinguishes it from nearby emotions.
|
|
246
|
+
- schema themes: hypothesize through the concrete container that best fits the
|
|
247
|
+
material: belief sentence, recurring functional loop, active mode, one trigger
|
|
248
|
+
episode, or durable wiki explanation. Do not flatten schema work into a loose
|
|
249
|
+
self-observation.
|
|
191
250
|
|
|
192
251
|
## Therapeutic Direction Check
|
|
193
252
|
|
|
@@ -320,6 +379,29 @@ Do not ask the user to pick the container first. Reflect the active meaning in p
|
|
|
320
379
|
language, ask for one recent moment or one belief sentence, then choose the record that
|
|
321
380
|
will preserve the structure best.
|
|
322
381
|
|
|
382
|
+
## Psyche API Posture
|
|
383
|
+
|
|
384
|
+
Psyche records are psychologically meaningful, but they are still normal stored Forge
|
|
385
|
+
entities for API purposes. Once the formulation is clear and the user has consented to
|
|
386
|
+
save or update it, use the shared batch entity routes for `psyche_value`,
|
|
387
|
+
`behavior_pattern`, `behavior`, `belief_entry`, `mode_profile`,
|
|
388
|
+
`mode_guide_session`, `trigger_report`, `event_type`, and `emotion_definition`.
|
|
389
|
+
|
|
390
|
+
Keep the route decision internal. With the user, keep talking about the lived moment,
|
|
391
|
+
belief sentence, pattern, mode, value, report, event kind, or feeling signature.
|
|
392
|
+
Do not ask them about batch CRUD, payloads, or route families.
|
|
393
|
+
|
|
394
|
+
Use `forge_search_entities` before creating when a duplicate is plausible. Use
|
|
395
|
+
`forge_create_entities` or `forge_update_entities` after the wording, record type,
|
|
396
|
+
and useful links are clear enough. Preserve nuance in a linked `note` when the
|
|
397
|
+
experience is richer than the normalized fields.
|
|
398
|
+
|
|
399
|
+
Do not divert Psyche material into `self_observation` just because it started as an
|
|
400
|
+
episode. Use `trigger_report` for one emotionally meaningful incident, use
|
|
401
|
+
`behavior_pattern` for a recurring functional loop, use `belief_entry` for one
|
|
402
|
+
explicit sentence, and use `mode_guide_session` or `mode_profile` when a part-state is
|
|
403
|
+
central.
|
|
404
|
+
|
|
323
405
|
## Lane chooser
|
|
324
406
|
|
|
325
407
|
After each real answer, choose the next best lane. Do not mix several lanes at once.
|