forge-openclaw-plugin 0.2.25 → 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.
Files changed (189) hide show
  1. package/dist/assets/{board-VmF4FAfr.js → board-ta0rUHOf.js} +3 -3
  2. package/dist/assets/{board-VmF4FAfr.js.map → board-ta0rUHOf.js.map} +1 -1
  3. package/dist/assets/index-Ro0ZF_az.css +1 -0
  4. package/dist/assets/index-ytlpSj23.js +79 -0
  5. package/dist/assets/index-ytlpSj23.js.map +1 -0
  6. package/dist/assets/{motion-DvkU14p-.js → motion-fBKPB6yw.js} +2 -2
  7. package/dist/assets/{motion-DvkU14p-.js.map → motion-fBKPB6yw.js.map} +1 -1
  8. package/dist/assets/{table-DgiPof9E.js → table-C-IGTQni.js} +2 -2
  9. package/dist/assets/{table-DgiPof9E.js.map → table-C-IGTQni.js.map} +1 -1
  10. package/dist/assets/{ui-nYfoC0Gq.js → ui-DInOpaYF.js} +2 -2
  11. package/dist/assets/{ui-nYfoC0Gq.js.map → ui-DInOpaYF.js.map} +1 -1
  12. package/dist/assets/vendor-lE3tZJcC.js +876 -0
  13. package/dist/assets/vendor-lE3tZJcC.js.map +1 -0
  14. package/dist/index.html +7 -8
  15. package/dist/openclaw/local-runtime.d.ts +3 -1
  16. package/dist/openclaw/local-runtime.js +51 -15
  17. package/dist/openclaw/plugin-entry-shared.js +24 -2
  18. package/dist/openclaw/plugin-sdk-types.d.ts +17 -0
  19. package/dist/openclaw/tools.js +0 -3
  20. package/dist/server/server/migrations/001_core.sql +411 -0
  21. package/dist/server/server/migrations/002_psyche.sql +392 -0
  22. package/dist/server/server/migrations/003_habits.sql +30 -0
  23. package/dist/server/server/migrations/004_habit_links.sql +8 -0
  24. package/dist/server/server/migrations/005_habit_psyche_links.sql +24 -0
  25. package/dist/server/server/migrations/006_work_adjustments.sql +14 -0
  26. package/dist/server/server/migrations/007_weekly_review_closures.sql +17 -0
  27. package/dist/server/server/migrations/008_calendar_execution.sql +147 -0
  28. package/dist/server/server/migrations/009_true_calendar_events.sql +195 -0
  29. package/dist/server/server/migrations/010_calendar_selection_state.sql +6 -0
  30. package/dist/server/server/migrations/011_calendar_timezone_backfill.sql +11 -0
  31. package/dist/server/server/migrations/012_work_block_ranges.sql +7 -0
  32. package/dist/server/server/migrations/013_microsoft_local_auth_settings.sql +8 -0
  33. package/dist/server/server/migrations/014_note_tags_and_ephemeral.sql +8 -0
  34. package/dist/server/server/migrations/015_multi_user_and_strategies.sql +244 -0
  35. package/dist/server/server/migrations/016_health_companion.sql +158 -0
  36. package/dist/server/server/migrations/016_strategy_contracts_and_user_graph.sql +22 -0
  37. package/dist/server/server/migrations/017_preferences.sql +131 -0
  38. package/dist/server/server/migrations/018_preference_catalogs.sql +31 -0
  39. package/dist/server/server/migrations/019_wiki_memory.sql +255 -0
  40. package/dist/server/server/migrations/020_wiki_page_hierarchy.sql +11 -0
  41. package/dist/server/server/migrations/021_hide_evidence_from_wiki_index.sql +3 -0
  42. package/dist/server/server/migrations/022_wiki_ingest_background.sql +85 -0
  43. package/dist/server/server/migrations/023_diagnostic_logs.sql +28 -0
  44. package/dist/server/server/migrations/024_questionnaires.sql +96 -0
  45. package/dist/server/server/migrations/025_ai_model_connections.sql +26 -0
  46. package/dist/server/server/migrations/026_custom_theme_settings.sql +2 -0
  47. package/dist/server/server/migrations/027_ai_processors.sql +31 -0
  48. package/dist/server/server/migrations/028_movement_domain.sql +136 -0
  49. package/dist/server/server/migrations/029_watch_micro_capture.sql +23 -0
  50. package/dist/server/server/migrations/030_surface_layouts.sql +5 -0
  51. package/dist/server/server/migrations/031_ai_processor_runtime_upgrades.sql +10 -0
  52. package/dist/server/server/migrations/032_ai_connectors.sql +44 -0
  53. package/dist/server/server/migrations/033_movement_trip_point_sync.sql +36 -0
  54. package/dist/server/server/migrations/034_movement_segment_sync.sql +49 -0
  55. package/dist/server/server/migrations/035_google_local_auth_settings.sql +2 -0
  56. package/dist/server/server/migrations/036_google_local_auth_client_secret.sql +2 -0
  57. package/dist/server/{app.js → server/src/app.js} +242 -111
  58. package/dist/server/server/src/connectors/box-registry.js +188 -0
  59. package/dist/server/{db.js → server/src/db.js} +4 -0
  60. package/dist/server/server/src/debug.js +19 -0
  61. package/dist/server/{openapi.js → server/src/openapi.js} +2 -2
  62. package/dist/server/{repositories → server/src/repositories}/ai-connectors.js +286 -23
  63. package/dist/server/{repositories → server/src/repositories}/calendar.js +1 -1
  64. package/dist/server/{repositories → server/src/repositories}/settings.js +51 -3
  65. package/dist/server/{services → server/src/services}/calendar-runtime.js +775 -58
  66. package/dist/server/server/src/services/google-calendar-oauth-config.js +176 -0
  67. package/dist/server/{types.js → server/src/types.js} +137 -19
  68. package/dist/server/{web.js → server/src/web.js} +21 -2
  69. package/dist/server/src/components/customization/utility-widgets.js +330 -0
  70. package/dist/server/src/components/workbench-boxes/health/health-boxes.js +92 -0
  71. package/dist/server/src/components/workbench-boxes/kanban/kanban-boxes.js +128 -0
  72. package/dist/server/src/components/workbench-boxes/movement/movement-boxes.js +37 -0
  73. package/dist/server/src/components/workbench-boxes/notes/notes-boxes.js +114 -0
  74. package/dist/server/src/components/workbench-boxes/projects/projects-boxes.js +57 -0
  75. package/dist/server/src/components/workbench-boxes/shared/define-workbench-box.js +4 -0
  76. package/dist/server/src/components/workbench-boxes/shared/generic-node-view.js +13 -0
  77. package/dist/server/src/components/workbench-boxes/today/today-boxes.js +63 -0
  78. package/dist/server/src/lib/api-error.js +37 -0
  79. package/dist/server/src/lib/api.js +1859 -0
  80. package/dist/server/src/lib/calendar-name-deduper.js +144 -0
  81. package/dist/server/src/lib/diagnostics.js +67 -0
  82. package/dist/server/src/lib/psyche-types.js +1 -0
  83. package/dist/server/src/lib/questionnaire-types.js +1 -0
  84. package/dist/server/src/lib/runtime-paths.js +24 -0
  85. package/dist/server/src/lib/schemas.js +234 -0
  86. package/dist/server/src/lib/snapshot-normalizer.js +374 -0
  87. package/dist/server/src/lib/theme-system.js +319 -0
  88. package/dist/server/src/lib/types.js +1 -0
  89. package/dist/server/src/lib/utils.js +22 -0
  90. package/dist/server/src/lib/workbench/boxes.js +16 -0
  91. package/dist/server/src/lib/workbench/nodes.js +15 -0
  92. package/dist/server/src/lib/workbench/registry.js +73 -0
  93. package/dist/server/src/lib/workbench/runtime.js +181 -0
  94. package/openclaw.plugin.json +1 -1
  95. package/package.json +1 -1
  96. package/server/index.js +68 -0
  97. package/server/migrations/035_google_local_auth_settings.sql +2 -0
  98. package/server/migrations/036_google_local_auth_client_secret.sql +2 -0
  99. package/skills/forge-openclaw/SKILL.md +3 -0
  100. package/skills/forge-openclaw/entity_conversation_playbooks.md +213 -24
  101. package/skills/forge-openclaw/psyche_entity_playbooks.md +82 -3
  102. package/dist/assets/index-CFCKDIMH.js +0 -67
  103. package/dist/assets/index-CFCKDIMH.js.map +0 -1
  104. package/dist/assets/index-ZPY6U1TU.css +0 -1
  105. package/dist/assets/vendor-D9PTEPSB.js +0 -824
  106. package/dist/assets/vendor-D9PTEPSB.js.map +0 -1
  107. package/dist/assets/viz-Cqb6s--o.js +0 -34
  108. package/dist/assets/viz-Cqb6s--o.js.map +0 -1
  109. package/dist/server/connectors/box-registry.js +0 -257
  110. /package/dist/server/{demo-data.js → server/src/demo-data.js} +0 -0
  111. /package/dist/server/{discovery-advertiser.js → server/src/discovery-advertiser.js} +0 -0
  112. /package/dist/server/{e2e-server.js → server/src/e2e-server.js} +0 -0
  113. /package/dist/server/{errors.js → server/src/errors.js} +0 -0
  114. /package/dist/server/{health.js → server/src/health.js} +0 -0
  115. /package/dist/server/{index.js → server/src/index.js} +0 -0
  116. /package/dist/server/{managers → server/src/managers}/base.js +0 -0
  117. /package/dist/server/{managers → server/src/managers}/contracts.js +0 -0
  118. /package/dist/server/{managers → server/src/managers}/platform/api-gateway-manager.js +0 -0
  119. /package/dist/server/{managers → server/src/managers}/platform/audit-manager.js +0 -0
  120. /package/dist/server/{managers → server/src/managers}/platform/authentication-manager.js +0 -0
  121. /package/dist/server/{managers → server/src/managers}/platform/authorization-manager.js +0 -0
  122. /package/dist/server/{managers → server/src/managers}/platform/background-job-manager.js +0 -0
  123. /package/dist/server/{managers → server/src/managers}/platform/configuration-manager.js +0 -0
  124. /package/dist/server/{managers → server/src/managers}/platform/database-manager.js +0 -0
  125. /package/dist/server/{managers → server/src/managers}/platform/event-bus-manager.js +0 -0
  126. /package/dist/server/{managers → server/src/managers}/platform/external-service-manager.js +0 -0
  127. /package/dist/server/{managers → server/src/managers}/platform/health-manager.js +0 -0
  128. /package/dist/server/{managers → server/src/managers}/platform/llm-manager.js +0 -0
  129. /package/dist/server/{managers → server/src/managers}/platform/migration-manager.js +0 -0
  130. /package/dist/server/{managers → server/src/managers}/platform/openai-responses-provider.js +0 -0
  131. /package/dist/server/{managers → server/src/managers}/platform/search-index-manager.js +0 -0
  132. /package/dist/server/{managers → server/src/managers}/platform/secrets-manager.js +0 -0
  133. /package/dist/server/{managers → server/src/managers}/platform/session-manager.js +0 -0
  134. /package/dist/server/{managers → server/src/managers}/platform/storage-manager.js +0 -0
  135. /package/dist/server/{managers → server/src/managers}/platform/token-manager.js +0 -0
  136. /package/dist/server/{managers → server/src/managers}/platform/transaction-manager.js +0 -0
  137. /package/dist/server/{managers → server/src/managers}/platform/trusted-network.js +0 -0
  138. /package/dist/server/{managers → server/src/managers}/runtime.js +0 -0
  139. /package/dist/server/{managers → server/src/managers}/type-guards.js +0 -0
  140. /package/dist/server/{movement.js → server/src/movement.js} +0 -0
  141. /package/dist/server/{preferences-seeds.js → server/src/preferences-seeds.js} +0 -0
  142. /package/dist/server/{preferences-types.js → server/src/preferences-types.js} +0 -0
  143. /package/dist/server/{psyche-types.js → server/src/psyche-types.js} +0 -0
  144. /package/dist/server/{questionnaire-flow.js → server/src/questionnaire-flow.js} +0 -0
  145. /package/dist/server/{questionnaire-seeds.js → server/src/questionnaire-seeds.js} +0 -0
  146. /package/dist/server/{questionnaire-types.js → server/src/questionnaire-types.js} +0 -0
  147. /package/dist/server/{repositories → server/src/repositories}/activity-events.js +0 -0
  148. /package/dist/server/{repositories → server/src/repositories}/ai-processors.js +0 -0
  149. /package/dist/server/{repositories → server/src/repositories}/collaboration.js +0 -0
  150. /package/dist/server/{repositories → server/src/repositories}/deleted-entities.js +0 -0
  151. /package/dist/server/{repositories → server/src/repositories}/diagnostic-logs.js +0 -0
  152. /package/dist/server/{repositories → server/src/repositories}/domains.js +0 -0
  153. /package/dist/server/{repositories → server/src/repositories}/entity-ownership.js +0 -0
  154. /package/dist/server/{repositories → server/src/repositories}/event-log.js +0 -0
  155. /package/dist/server/{repositories → server/src/repositories}/goals.js +0 -0
  156. /package/dist/server/{repositories → server/src/repositories}/habits.js +0 -0
  157. /package/dist/server/{repositories → server/src/repositories}/model-settings.js +0 -0
  158. /package/dist/server/{repositories → server/src/repositories}/notes.js +0 -0
  159. /package/dist/server/{repositories → server/src/repositories}/preferences.js +0 -0
  160. /package/dist/server/{repositories → server/src/repositories}/projects.js +0 -0
  161. /package/dist/server/{repositories → server/src/repositories}/psyche.js +0 -0
  162. /package/dist/server/{repositories → server/src/repositories}/questionnaires.js +0 -0
  163. /package/dist/server/{repositories → server/src/repositories}/rewards.js +0 -0
  164. /package/dist/server/{repositories → server/src/repositories}/strategies.js +0 -0
  165. /package/dist/server/{repositories → server/src/repositories}/surface-layouts.js +0 -0
  166. /package/dist/server/{repositories → server/src/repositories}/tags.js +0 -0
  167. /package/dist/server/{repositories → server/src/repositories}/task-runs.js +0 -0
  168. /package/dist/server/{repositories → server/src/repositories}/tasks.js +0 -0
  169. /package/dist/server/{repositories → server/src/repositories}/users.js +0 -0
  170. /package/dist/server/{repositories → server/src/repositories}/weekly-reviews.js +0 -0
  171. /package/dist/server/{repositories → server/src/repositories}/wiki-memory.js +0 -0
  172. /package/dist/server/{repositories → server/src/repositories}/work-adjustments.js +0 -0
  173. /package/dist/server/{seed-demo.js → server/src/seed-demo.js} +0 -0
  174. /package/dist/server/{services → server/src/services}/context.js +0 -0
  175. /package/dist/server/{services → server/src/services}/dashboard.js +0 -0
  176. /package/dist/server/{services → server/src/services}/entity-crud.js +0 -0
  177. /package/dist/server/{services → server/src/services}/gamification.js +0 -0
  178. /package/dist/server/{services → server/src/services}/insights.js +0 -0
  179. /package/dist/server/{services → server/src/services}/openai-codex-oauth.js +0 -0
  180. /package/dist/server/{services → server/src/services}/projects.js +0 -0
  181. /package/dist/server/{services → server/src/services}/psyche-observation-calendar.js +0 -0
  182. /package/dist/server/{services → server/src/services}/psyche.js +0 -0
  183. /package/dist/server/{services → server/src/services}/relations.js +0 -0
  184. /package/dist/server/{services → server/src/services}/reviews.js +0 -0
  185. /package/dist/server/{services → server/src/services}/run-recovery.js +0 -0
  186. /package/dist/server/{services → server/src/services}/tagging.js +0 -0
  187. /package/dist/server/{services → server/src/services}/task-run-watchdog.js +0 -0
  188. /package/dist/server/{services → server/src/services}/work-time.js +0 -0
  189. /package/dist/server/{watch-mobile.js → server/src/watch-mobile.js} +0 -0
@@ -7,6 +7,8 @@ Forge correctly, and gather only the structure that still matters.
7
7
 
8
8
  ## Core stance
9
9
 
10
+ - Lead with what the user is trying to preserve, change, resolve, or make true, not
11
+ with the entity label.
10
12
  - Ask only for what is missing or still unclear.
11
13
  - Before every question, decide the one missing thing you are trying to clarify.
12
14
  - Know where the conversation is headed before you ask the next question.
@@ -20,6 +22,10 @@ Forge correctly, and gather only the structure that still matters.
20
22
  brief reflection -> one orienting question.
21
23
  - Another good shorthand for the same rhythm is:
22
24
  short reflection -> one orienting question.
25
+ - When the user is vague, ask for the smallest real example, desired outcome, or stake
26
+ before you ask for wording.
27
+ - When the user is clear, say what the record seems to be becoming and move straight to
28
+ the last missing structural detail.
23
29
  - For straightforward logistical entities such as tasks, calendar events, work blocks,
24
30
  timeboxes, and task runs, use a fast path:
25
31
  one brief confirming sentence -> one operational question.
@@ -33,6 +39,8 @@ Forge correctly, and gather only the structure that still matters.
33
39
  yourself and ask whether it fits.
34
40
  - If the user already answered the usual opening question, do not repeat the stock
35
41
  opener. Move straight to the next missing clarification.
42
+ - After a substantive answer, briefly say what is becoming clear so the user can
43
+ correct the direction early.
36
44
  - Once the record is clear enough to name, stop exploring broadly and ask only for the
37
45
  last missing structural detail.
38
46
 
@@ -71,6 +79,40 @@ Update record:
71
79
 
72
80
  - "Before I change it, what feels newly true now, and what should stay intact?"
73
81
 
82
+ ## Steering moves
83
+
84
+ Use these small moves to keep the intake natural and intentional.
85
+
86
+ When the user is still searching:
87
+
88
+ - reflect the stake in one sentence, then ask for the smallest concrete example or the
89
+ desired outcome
90
+
91
+ When the user already knows what they mean:
92
+
93
+ - offer the working formulation, then ask only for the last missing placement, timing,
94
+ or ownership detail
95
+
96
+ When the record carries emotion but is not Psyche:
97
+
98
+ - reflect what the user is trying to hold onto, repair, or not lose, then ask one
99
+ orienting question
100
+
101
+ When the user is updating an existing record:
102
+
103
+ - ask what is changing, what should remain true, and what prompted the change now only
104
+ if those answers would alter the record shape
105
+
106
+ When you are about to save:
107
+
108
+ - give one short working summary in the user's language and ask whether it feels true
109
+ enough or needs one correction
110
+
111
+ When an adjacent record becomes visible:
112
+
113
+ - name it gently and ask whether it should be linked now, saved separately later, or
114
+ left alone for now
115
+
74
116
  ## Question design rules
75
117
 
76
118
  - Let each question have one job:
@@ -83,15 +125,29 @@ Update record:
83
125
  - Do not over-warm or over-therapize logistical records. For those flows, one brief
84
126
  confirming sentence plus one question is usually enough.
85
127
  - Ask the more meaning-bearing question before the more administrative one.
128
+ - Prefer "what", "when", and "how" before "why" when the user's meaning is still
129
+ forming. "Why" is often better after the experience or outcome is already clear.
86
130
  - If the user is uncertain, ask for a recent example before asking for an abstraction.
87
131
  - If the user is clear and decisive, confirm the working formulation and move directly
88
132
  to the one missing structural detail.
89
133
  - Avoid dead-form prompts such as "What should this be called?" when the user is still
90
134
  figuring out what the thing is.
135
+ - For labels such as `tag`, `event_type`, and `emotion_definition`, do not open with a
136
+ naming question unless the meaning is already clear and only the wording is missing.
91
137
  - Before the final save question, it is often better to offer a candidate formulation
92
138
  than to ask for raw wording from scratch.
93
139
  - When useful, say what you think the record is becoming before asking the next
94
140
  question. That helps the user correct the shape early.
141
+ - For reusable vocabulary or taxonomy records such as `tag`, `event_type`,
142
+ `emotion_definition`, `preference_catalog`, and `preference_context`, ask what
143
+ distinction the label should help the user notice, sort, or retrieve later before
144
+ you ask about naming or aliases.
145
+ - For emotionally meaningful vocabulary records such as `event_type`,
146
+ `emotion_definition`, and many `self_observation` entries, start from the lived
147
+ moment or felt meaning before you move to reuse or retrieval language.
148
+ - For collection-like records such as `preference_catalog` and
149
+ `questionnaire_instrument`, ask what they are for before you ask what should go
150
+ inside them.
95
151
 
96
152
  ## Ready-to-save check
97
153
 
@@ -104,6 +160,11 @@ Before saving, make sure you can answer all of these in plain language:
104
160
 
105
161
  If the answer to the last question is "none", save it instead of prolonging intake.
106
162
 
163
+ Before the final write, it is usually worth asking one light confirmation such as:
164
+
165
+ - "That sounds like the right shape to save. Do you want to keep it that way, or is
166
+ there one thing you want adjusted first?"
167
+
107
168
  ## Update loop
108
169
 
109
170
  Use this when the user is updating an existing record rather than creating a new one.
@@ -113,6 +174,9 @@ Use this when the user is updating an existing record rather than creating a new
113
174
  3. Ask what prompted the update now if that changes the shape of the record.
114
175
  4. Then ask only for the missing structural detail required by the change.
115
176
 
177
+ If the current title or shape may no longer fit, offer one revised formulation yourself
178
+ before asking the user to rewrite it from scratch.
179
+
116
180
  ## Goal
117
181
 
118
182
  Aim: clarify the direction and why it matters, not just produce a title.
@@ -253,6 +317,34 @@ Preferred opening question:
253
317
 
254
318
  - "What recurring move are you trying to strengthen or loosen?"
255
319
 
320
+ ## Tag
321
+
322
+ Aim: create a label that helps future retrieval or grouping, not just another vague
323
+ bucket.
324
+
325
+ Arc:
326
+
327
+ 1. Ask what the tag should help the user notice, group, or find later.
328
+ 2. Ask what kinds of records should belong under it.
329
+ 3. Offer a concise label if the meaning is clearer than the wording.
330
+ 4. Ask about color, kind, or parent grouping only if that changes how it will be used.
331
+
332
+ Helpful follow-up lanes:
333
+
334
+ - what the tag is for later
335
+ - what should count as inside versus outside the label
336
+ - whether the user already has nearby tags that this should stay distinct from
337
+
338
+ Ready to save when:
339
+
340
+ - the tag has a stable label
341
+ - the grouping meaning is clear enough to reuse later
342
+ - any important distinction from nearby tags is clear
343
+
344
+ Preferred opening question:
345
+
346
+ - "What do you want this tag to help you notice or find again later?"
347
+
256
348
  ## Note
257
349
 
258
350
  Aim: preserve the useful context and link it to the right places without turning the
@@ -279,7 +371,7 @@ Ready to save when:
279
371
 
280
372
  Preferred opening question:
281
373
 
282
- - "What feels important to preserve from this?"
374
+ - "What feels important enough here that you would want to be able to find it again later?"
283
375
 
284
376
  ## Insight
285
377
 
@@ -426,6 +518,9 @@ Arc:
426
518
  3. Ask what it may connect to: pattern, belief, value, mode, task, project, or note.
427
519
  4. Ask for tags or extra context only if that will help later review.
428
520
 
521
+ If the user already gave the moment or timing, move straight to what they noticed most
522
+ clearly instead of re-asking when.
523
+
429
524
  Ready to save when:
430
525
 
431
526
  - the observation itself is clear
@@ -455,7 +550,7 @@ Ready to update when:
455
550
 
456
551
  Preferred opening question:
457
552
 
458
- - "What about this night feels worth remembering or linking?"
553
+ - "What about this night feels important enough to remember or connect?"
459
554
 
460
555
  ## Workout Session
461
556
 
@@ -475,33 +570,121 @@ Ready to update when:
475
570
 
476
571
  Preferred opening question:
477
572
 
478
- - "What about this workout feels most worth capturing?"
573
+ - "What about this workout feels most worth remembering or connecting?"
479
574
 
480
- ## Preference Item Or Context
575
+ ## Preference Catalog
481
576
 
482
- Aim: understand whether the user is trying to save a preference signal, define a
483
- context, or inspect the learned model.
577
+ Aim: define a useful comparison pool, not just a list with no decision purpose.
484
578
 
485
579
  Arc:
486
580
 
487
- 1. Ask what preference question the user is trying to answer.
488
- 2. Distinguish whether this is:
489
- a direct item signal,
490
- a context change,
491
- or a request to inspect what Forge already knows.
492
- 3. If the user wants live comparisons, hand off to the Preferences game UI.
493
- 4. If the user wants a direct signal or context change, ask only for the missing domain,
494
- item, or context detail.
581
+ 1. Ask what preference question this catalog is meant to support.
582
+ 2. Ask what domain or concept area it belongs to.
583
+ 3. Ask what kinds of items should be included or excluded.
584
+ 4. Offer a working catalog name once the purpose is clear.
495
585
 
496
- Ready to act when:
586
+ Helpful follow-up lanes:
587
+
588
+ - what decision or taste question this catalog should help answer
589
+ - what belongs in scope
590
+ - what would make the catalog immediately useful instead of bloated
497
591
 
592
+ Ready to save when:
593
+
594
+ - the catalog has a stable purpose
498
595
  - the domain is clear
499
- - the user intent is clear: inspect, compare, signal, or context-edit
500
- - the missing item or context detail is clear enough
596
+ - the boundary of what belongs inside is clear enough
597
+
598
+ Preferred opening question:
599
+
600
+ - "What preference question do you want this catalog to help answer?"
601
+
602
+ ## Preference Catalog Item
603
+
604
+ Aim: add one candidate in a way that will make later comparisons feel clear and fair.
605
+
606
+ Arc:
607
+
608
+ 1. Ask what makes this item worth including in the catalog.
609
+ 2. Ask what catalog or domain it belongs to if that is still unclear.
610
+ 3. Ask for a short clarifying description only if the label would be ambiguous later.
611
+ 4. Ask about aliases or tags only if they help retrieval.
612
+
613
+ Helpful follow-up lanes:
614
+
615
+ - why this item belongs in the comparison pool
616
+ - what would distinguish it from nearby items
617
+ - whether the label alone will be clear later
618
+
619
+ Ready to save when:
620
+
621
+ - the item label is clear
622
+ - the parent catalog is clear
623
+ - there is enough context to recognize it later if the label is ambiguous
624
+
625
+ Preferred opening question:
626
+
627
+ - "What makes this item worth comparing in that catalog?"
628
+
629
+ ## Preference Context
630
+
631
+ Aim: define a real operating mode for preferences, not a decorative label.
632
+
633
+ Arc:
634
+
635
+ 1. Ask what situation or mode this context is meant to represent.
636
+ 2. Ask what should count inside that context and what should stay outside it.
637
+ 3. Ask whether it should be active, default, or kept separate from other evidence.
638
+ 4. Offer a concise name if the mode is clearer than the wording.
639
+
640
+ Helpful follow-up lanes:
641
+
642
+ - what decisions this context should shape
643
+ - what belongs inside versus outside the mode
644
+ - whether it should be default or explicitly separate
645
+
646
+ Ready to save when:
647
+
648
+ - the context has a stable purpose
649
+ - its boundary is clear enough to use consistently
650
+ - any default or sharing choice that matters is clear
651
+
652
+ Preferred opening question:
653
+
654
+ - "What situation or mode should this context help Forge treat differently?"
655
+
656
+ ## Preference Item
657
+
658
+ Aim: save one concrete preference candidate or signal without losing the context that
659
+ makes it meaningful.
660
+
661
+ Arc:
662
+
663
+ 1. Ask what preference or taste question this item belongs to.
664
+ 2. Ask what domain or context it should live in.
665
+ 3. Ask whether the user is trying to save it as a comparison candidate or as a direct
666
+ signal such as favorite, veto, or compare-later.
667
+ 4. Ask what makes this item distinct enough to compare usefully only if it is still a
668
+ comparison candidate.
669
+ 5. If the user is really trying to send a direct signal, ask only for the missing
670
+ detail and then act.
671
+
672
+ Helpful follow-up lanes:
673
+
674
+ - what domain this belongs to
675
+ - what context makes the preference meaningful
676
+ - whether this is a signal or a comparison candidate
677
+ - what distinguishes the item from nearby options
678
+
679
+ Ready to act when:
680
+
681
+ - the item is clear
682
+ - the domain or profile context is clear enough
683
+ - any needed distinguishing detail is captured
501
684
 
502
685
  Preferred opening question:
503
686
 
504
- - "What preference are you trying to make clearer right now?"
687
+ - "What preference are you trying to make clearer by saving this item?"
505
688
 
506
689
  ## Questionnaire Instrument
507
690
 
@@ -512,7 +695,8 @@ Arc:
512
695
 
513
696
  1. Ask what the questionnaire is meant to measure or surface.
514
697
  2. Ask who it is for and when it should be used.
515
- 3. Ask what style of questions it needs before getting into item wording.
698
+ 3. Ask what kind of questions would make it honest and useful before getting into
699
+ item wording.
516
700
  4. Move to draft creation once the purpose is clear.
517
701
 
518
702
  Ready to act when:
@@ -551,9 +735,14 @@ consistent.
551
735
 
552
736
  Arc:
553
737
 
554
- 1. Ask what category the label should capture.
738
+ 1. Ask what kind of moment or incident this label should capture in lived terms.
555
739
  2. Ask how narrow or broad it should be.
556
- 3. Ask for a short description only if the label could be ambiguous later.
740
+ 3. Ask what would count as inside versus outside the category if that boundary is
741
+ still fuzzy.
742
+ 4. Ask for a short description only if the label could be ambiguous later.
743
+
744
+ If the user already offered a candidate label, keep the wording provisional and ask
745
+ what kinds of moments belong inside it before you ask whether the label is right.
557
746
 
558
747
  Ready to save when:
559
748
 
@@ -562,7 +751,7 @@ Ready to save when:
562
751
 
563
752
  Preferred opening question:
564
753
 
565
- - "What kind of incident should this event type capture?"
754
+ - "What kind of moment do you want this event type to help you name more consistently?"
566
755
 
567
756
  ## Emotion Definition
568
757
 
@@ -570,7 +759,7 @@ Aim: define one reusable emotion entry clearly enough that future reports stay p
570
759
 
571
760
  Arc:
572
761
 
573
- 1. Ask what emotion this should represent.
762
+ 1. Ask what this feeling is like in lived terms when the user says it.
574
763
  2. Ask what distinguishes it from nearby emotions if that matters.
575
764
  3. Ask for a short description only if later reports would benefit from it.
576
765
 
@@ -581,4 +770,4 @@ Ready to save when:
581
770
 
582
771
  Preferred opening question:
583
772
 
584
- - "Which emotion do you want this entry to help name more clearly?"
773
+ - "When you say this feeling, what does it actually feel like for you?"
@@ -27,17 +27,64 @@ Forge without turning the conversation into a worksheet.
27
27
  - Do not rush to naming, reframing, or repair before the experience itself is clearer.
28
28
  - Once the formulation is coherent, help with wording instead of forcing the user to
29
29
  generate all the language alone.
30
+ - When the user is close to the experience but far from the wording, do some of the
31
+ formulation work for them. Offer one careful candidate name or summary and invite
32
+ correction.
30
33
  - Ask only one lane at a time. Do not jump from the example straight into belief,
31
34
  mode, value, and repair all in one turn.
32
35
  - If the user gives a rich answer with several possible lanes, choose the one that most
33
36
  improves understanding and leave the others for later.
34
37
  - Before the next question, reflect back what you just heard in one or two sentences so
35
38
  the user can feel understood and correct you if needed.
39
+ - Before you ask for change, naming, or repair, usually ask what the experience is
40
+ trying to protect, prevent, or hold onto.
36
41
  - The warmth should come from accuracy and steadiness, not from extra softness,
37
42
  diagnosis language, or a polished performance of care.
38
43
  - If the user becomes flooded, vague, or circular, narrow the focus to the smallest
39
44
  concrete slice you can ask about: one moment, one sentence, one body signal, or one
40
45
  thing they did next.
46
+ - When the user gives an abstraction first, gently bring it back to one recent moment
47
+ before helping them name the pattern.
48
+ - Prefer "what", "when", and "how" early. Save "why" for later unless the user is
49
+ already grounded enough that it will deepen rather than blur the picture.
50
+ - Before you ask for the user's preferred fix, understand what the response is trying
51
+ to protect, achieve, or prevent.
52
+
53
+ ## Therapist micro-skills
54
+
55
+ Use these in small doses rather than as a script.
56
+
57
+ Reflect:
58
+
59
+ - briefly mirror the user's felt sense, stake, or sequence in plain language
60
+
61
+ Locate:
62
+
63
+ - ask where this shows up most clearly: the last moment, the first cue, the body
64
+ signal, the feared consequence, or the move that happened next
65
+
66
+ Deepen:
67
+
68
+ - choose one lane that improves understanding most:
69
+ situation,
70
+ sequence,
71
+ meaning,
72
+ protection,
73
+ cost,
74
+ longing/value,
75
+ or naming
76
+
77
+ Formulate:
78
+
79
+ - once the experience is coherent, offer one careful working sentence or title and ask
80
+ whether it feels true, too sharp, or still misses something important
81
+
82
+ Connect:
83
+
84
+ - near the end, notice whether this belongs with a value, belief, pattern, mode, note,
85
+ goal, project, or task and ask whether the user wants to map that too
86
+ - when another record is clearly present, ask whether the user wants to link it now,
87
+ save it separately later, or just keep it in the note/context for now
41
88
 
42
89
  ## First-turn rule
43
90
 
@@ -59,6 +106,13 @@ Good first-turn shapes:
59
106
  that moment?"
60
107
  - "I can help slow it down. When do you notice this most clearly?"
61
108
 
109
+ If the user is already direct and just wants to save a clear Psyche record, shorten the
110
+ opening:
111
+
112
+ - one brief reflection
113
+ - one missing-detail question
114
+ - then move toward the write instead of forcing exploration
115
+
62
116
  ## Lane chooser
63
117
 
64
118
  After each real answer, choose the next best lane. Do not mix several lanes at once.
@@ -118,6 +172,11 @@ Example shape:
118
172
  and pulling back gives you a little protection fast. What does withdrawing prevent in
119
173
  that moment?"
120
174
 
175
+ Another strong shape when the user is getting abstract:
176
+
177
+ - "So the painful part seems to be less the event itself and more what it starts to
178
+ mean about you. What does it seem to prove in that moment?"
179
+
121
180
  ## Formulation rules
122
181
 
123
182
  - Do not front-load a finished case formulation.
@@ -130,6 +189,8 @@ Example shape:
130
189
  detail into normalized fields.
131
190
  - Before saving, give a short working summary in the user's own language and ask
132
191
  whether it feels true enough.
192
+ - A good final check is often:
193
+ "Does that feel true enough to save, or is there one part that needs to be said more accurately?"
133
194
 
134
195
  ## Naming turn
135
196
 
@@ -164,6 +225,21 @@ If the entity is not yet clear:
164
225
  meaning
165
226
  - then move toward naming and save
166
227
 
228
+ ## Psyche update loop
229
+
230
+ Use this when the user is revising an existing Psyche record rather than creating one
231
+ from scratch.
232
+
233
+ 1. Ask what feels newly true, newly visible, or newly inaccurate.
234
+ 2. Ask what still feels essentially right and should not be lost.
235
+ 3. Re-check the name only if the old wording no longer fits the lived experience.
236
+ 4. Ask for one concrete recent example if the update is abstract or sweeping.
237
+ 5. Then change only the parts the new understanding actually affects.
238
+
239
+ Good update opener:
240
+
241
+ - "Before we change it, what feels newly true about this now, and what still feels basically right?"
242
+
167
243
  ## Safety rule
168
244
 
169
245
  If the user shows imminent risk of self-harm, suicide, violence, inability to stay
@@ -224,6 +300,7 @@ Helpful follow-up lanes:
224
300
 
225
301
  - the earliest cue or vulnerability factor
226
302
  - the moment the loop starts to make sense internally
303
+ - where the pattern stops feeling like a choice
227
304
  - what the loop protects or prevents
228
305
  - what it costs later
229
306
  - what a preferred response would still need to honor
@@ -299,6 +376,7 @@ Arc:
299
376
  Helpful follow-up lanes:
300
377
 
301
378
  - the feared consequence inside the belief
379
+ - what the moment seems to prove
302
380
  - how old or familiar the rule feels
303
381
  - evidence for
304
382
  - evidence against
@@ -318,7 +396,7 @@ Ready to save when:
318
396
 
319
397
  Preferred opening question:
320
398
 
321
- - "When that reaction hits, what does it start telling you?"
399
+ - "When that reaction hits, what does it start telling you about you, them, or what happens next?"
322
400
 
323
401
  ## Mode Profile
324
402
 
@@ -356,7 +434,7 @@ Ready to save when:
356
434
 
357
435
  Preferred opening question:
358
436
 
359
- - "When this part takes over, what is it trying to protect?"
437
+ - "When this part takes over, what feels most at risk or most in need of protection?"
360
438
 
361
439
  ## Mode Guide Session
362
440
 
@@ -391,7 +469,7 @@ Ready to save when:
391
469
 
392
470
  Preferred opening question:
393
471
 
394
- - "What just happened that brought this part online right now?"
472
+ - "What just happened, and what is this part trying to get you to do or stop doing right now?"
395
473
 
396
474
  ## Trigger Report
397
475
 
@@ -412,6 +490,7 @@ Helpful follow-up lanes:
412
490
 
413
491
  - what happened first
414
492
  - what emotions were present and how intense they felt
493
+ - what felt most threatened or unbearable
415
494
  - what meaning or interpretation arrived fast
416
495
  - what action followed
417
496
  - what happened next short term and long term