forge-openclaw-plugin 0.2.25 → 0.2.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/README.md +59 -3
  2. package/dist/assets/{board-VmF4FAfr.js → board-C6jCchjI.js} +3 -3
  3. package/dist/assets/{board-VmF4FAfr.js.map → board-C6jCchjI.js.map} +1 -1
  4. package/dist/assets/index-DVvS8iiU.css +1 -0
  5. package/dist/assets/index-zYB-9Dfo.js +85 -0
  6. package/dist/assets/index-zYB-9Dfo.js.map +1 -0
  7. package/dist/assets/knowledge-graph-layout.worker-DRvzPxhP.js +2 -0
  8. package/dist/assets/knowledge-graph-layout.worker-DRvzPxhP.js.map +1 -0
  9. package/dist/assets/{motion-DvkU14p-.js → motion-DFHrH2rd.js} +2 -2
  10. package/dist/assets/{motion-DvkU14p-.js.map → motion-DFHrH2rd.js.map} +1 -1
  11. package/dist/assets/{table-DgiPof9E.js → table-ZL7Di_u3.js} +2 -2
  12. package/dist/assets/{table-DgiPof9E.js.map → table-ZL7Di_u3.js.map} +1 -1
  13. package/dist/assets/{ui-nYfoC0Gq.js → ui-CKNPpz7q.js} +2 -2
  14. package/dist/assets/{ui-nYfoC0Gq.js.map → ui-CKNPpz7q.js.map} +1 -1
  15. package/dist/assets/vendor-DoNZuFhn.js +1247 -0
  16. package/dist/assets/vendor-DoNZuFhn.js.map +1 -0
  17. package/dist/index.html +7 -8
  18. package/dist/openclaw/local-runtime.d.ts +3 -1
  19. package/dist/openclaw/local-runtime.js +67 -15
  20. package/dist/openclaw/plugin-entry-shared.js +24 -2
  21. package/dist/openclaw/plugin-sdk-types.d.ts +17 -0
  22. package/dist/openclaw/routes.d.ts +27 -0
  23. package/dist/openclaw/routes.js +16 -12
  24. package/dist/openclaw/tools.js +0 -3
  25. package/dist/server/server/migrations/001_core.sql +411 -0
  26. package/dist/server/server/migrations/002_psyche.sql +392 -0
  27. package/dist/server/server/migrations/003_habits.sql +30 -0
  28. package/dist/server/server/migrations/004_habit_links.sql +8 -0
  29. package/dist/server/server/migrations/005_habit_psyche_links.sql +24 -0
  30. package/dist/server/server/migrations/006_work_adjustments.sql +14 -0
  31. package/dist/server/server/migrations/007_weekly_review_closures.sql +17 -0
  32. package/dist/server/server/migrations/008_calendar_execution.sql +147 -0
  33. package/dist/server/server/migrations/009_true_calendar_events.sql +195 -0
  34. package/dist/server/server/migrations/010_calendar_selection_state.sql +6 -0
  35. package/dist/server/server/migrations/011_calendar_timezone_backfill.sql +11 -0
  36. package/dist/server/server/migrations/012_work_block_ranges.sql +7 -0
  37. package/dist/server/server/migrations/013_microsoft_local_auth_settings.sql +8 -0
  38. package/dist/server/server/migrations/014_note_tags_and_ephemeral.sql +8 -0
  39. package/dist/server/server/migrations/015_multi_user_and_strategies.sql +244 -0
  40. package/dist/server/server/migrations/016_health_companion.sql +158 -0
  41. package/dist/server/server/migrations/016_strategy_contracts_and_user_graph.sql +22 -0
  42. package/dist/server/server/migrations/017_preferences.sql +131 -0
  43. package/dist/server/server/migrations/018_preference_catalogs.sql +31 -0
  44. package/dist/server/server/migrations/019_wiki_memory.sql +255 -0
  45. package/dist/server/server/migrations/020_wiki_page_hierarchy.sql +11 -0
  46. package/dist/server/server/migrations/021_hide_evidence_from_wiki_index.sql +3 -0
  47. package/dist/server/server/migrations/022_wiki_ingest_background.sql +85 -0
  48. package/dist/server/server/migrations/023_diagnostic_logs.sql +28 -0
  49. package/dist/server/server/migrations/024_questionnaires.sql +96 -0
  50. package/dist/server/server/migrations/025_ai_model_connections.sql +26 -0
  51. package/dist/server/server/migrations/026_custom_theme_settings.sql +2 -0
  52. package/dist/server/server/migrations/027_ai_processors.sql +31 -0
  53. package/dist/server/server/migrations/028_movement_domain.sql +136 -0
  54. package/dist/server/server/migrations/029_watch_micro_capture.sql +23 -0
  55. package/dist/server/server/migrations/030_surface_layouts.sql +5 -0
  56. package/dist/server/server/migrations/031_ai_processor_runtime_upgrades.sql +10 -0
  57. package/dist/server/server/migrations/032_ai_connectors.sql +44 -0
  58. package/dist/server/server/migrations/033_movement_trip_point_sync.sql +36 -0
  59. package/dist/server/server/migrations/034_movement_segment_sync.sql +49 -0
  60. package/dist/server/server/migrations/035_google_local_auth_settings.sql +2 -0
  61. package/dist/server/server/migrations/036_google_local_auth_client_secret.sql +2 -0
  62. package/dist/server/server/migrations/037_workbench_public_inputs_and_run_inputs.sql +5 -0
  63. package/dist/server/server/migrations/038_data_management_settings.sql +11 -0
  64. package/dist/server/server/migrations/039_life_force_and_action_points.sql +114 -0
  65. package/dist/server/server/migrations/040_screen_time_domain.sql +89 -0
  66. package/dist/server/server/migrations/041_companion_source_states.sql +21 -0
  67. package/dist/server/server/migrations/042_movement_boxes.sql +47 -0
  68. package/dist/server/server/migrations/043_movement_box_overlap_overrides.sql +26 -0
  69. package/dist/server/{app.js → server/src/app.js} +2112 -414
  70. package/dist/server/server/src/connectors/box-registry.js +223 -0
  71. package/dist/server/server/src/data-management-types.js +107 -0
  72. package/dist/server/{db.js → server/src/db.js} +72 -4
  73. package/dist/server/server/src/debug.js +19 -0
  74. package/dist/server/{demo-data.js → server/src/demo-data.js} +2 -2
  75. package/dist/server/{health.js → server/src/health.js} +702 -18
  76. package/dist/server/{managers → server/src/managers}/platform/llm-manager.js +7 -4
  77. package/dist/server/server/src/managers/platform/mock-workbench-provider.js +149 -0
  78. package/dist/server/{managers → server/src/managers}/platform/secrets-manager.js +18 -1
  79. package/dist/server/{managers → server/src/managers}/runtime.js +9 -0
  80. package/dist/server/{movement.js → server/src/movement.js} +1971 -112
  81. package/dist/server/{openapi.js → server/src/openapi.js} +491 -3
  82. package/dist/server/{psyche-types.js → server/src/psyche-types.js} +9 -1
  83. package/dist/server/{repositories → server/src/repositories}/activity-events.js +8 -0
  84. package/dist/server/{repositories → server/src/repositories}/ai-connectors.js +758 -47
  85. package/dist/server/{repositories → server/src/repositories}/calendar.js +1 -1
  86. package/dist/server/{repositories → server/src/repositories}/habits.js +37 -1
  87. package/dist/server/{repositories → server/src/repositories}/model-settings.js +13 -3
  88. package/dist/server/{repositories → server/src/repositories}/notes.js +3 -0
  89. package/dist/server/{repositories → server/src/repositories}/settings.js +431 -21
  90. package/dist/server/{repositories → server/src/repositories}/tasks.js +170 -10
  91. package/dist/server/server/src/runtime-data-root.js +82 -0
  92. package/dist/server/server/src/screen-time.js +802 -0
  93. package/dist/server/{services → server/src/services}/calendar-runtime.js +775 -58
  94. package/dist/server/server/src/services/data-management.js +788 -0
  95. package/dist/server/{services → server/src/services}/entity-crud.js +205 -2
  96. package/dist/server/server/src/services/google-calendar-oauth-config.js +176 -0
  97. package/dist/server/server/src/services/knowledge-graph.js +1455 -0
  98. package/dist/server/server/src/services/life-force-model.js +197 -0
  99. package/dist/server/server/src/services/life-force.js +1270 -0
  100. package/dist/server/server/src/services/psyche-observation-calendar.js +413 -0
  101. package/dist/server/{types.js → server/src/types.js} +420 -29
  102. package/dist/server/server/src/web.js +332 -0
  103. package/dist/server/src/components/customization/utility-widgets.js +439 -0
  104. package/dist/server/src/components/ui/info-tooltip.js +25 -0
  105. package/dist/server/src/components/workbench-boxes/calendar/calendar-boxes.js +78 -0
  106. package/dist/server/src/components/workbench-boxes/goals/goals-boxes.js +62 -0
  107. package/dist/server/src/components/workbench-boxes/habits/habits-boxes.js +62 -0
  108. package/dist/server/src/components/workbench-boxes/health/health-boxes.js +147 -0
  109. package/dist/server/src/components/workbench-boxes/insights/insights-boxes.js +50 -0
  110. package/dist/server/src/components/workbench-boxes/kanban/kanban-boxes.js +136 -0
  111. package/dist/server/src/components/workbench-boxes/movement/movement-boxes.js +47 -0
  112. package/dist/server/src/components/workbench-boxes/notes/notes-boxes.js +132 -0
  113. package/dist/server/src/components/workbench-boxes/overview/overview-boxes.js +65 -0
  114. package/dist/server/src/components/workbench-boxes/preferences/preferences-boxes.js +78 -0
  115. package/dist/server/src/components/workbench-boxes/projects/projects-boxes.js +62 -0
  116. package/dist/server/src/components/workbench-boxes/psyche/psyche-boxes.js +88 -0
  117. package/dist/server/src/components/workbench-boxes/questionnaires/questionnaires-boxes.js +61 -0
  118. package/dist/server/src/components/workbench-boxes/review/review-boxes.js +53 -0
  119. package/dist/server/src/components/workbench-boxes/shared/define-workbench-box.js +6 -0
  120. package/dist/server/src/components/workbench-boxes/shared/generic-node-view.js +49 -0
  121. package/dist/server/src/components/workbench-boxes/strategies/strategies-boxes.js +62 -0
  122. package/dist/server/src/components/workbench-boxes/tasks/tasks-boxes.js +76 -0
  123. package/dist/server/src/components/workbench-boxes/today/today-boxes.js +78 -0
  124. package/dist/server/src/components/workbench-boxes/wiki/wiki-boxes.js +60 -0
  125. package/dist/server/src/lib/api-error.js +37 -0
  126. package/dist/server/src/lib/api.js +2118 -0
  127. package/dist/server/src/lib/calendar-name-deduper.js +144 -0
  128. package/dist/server/src/lib/data-management-types.js +1 -0
  129. package/dist/server/src/lib/diagnostics.js +67 -0
  130. package/dist/server/src/lib/entity-visuals.js +279 -0
  131. package/dist/server/src/lib/knowledge-graph-types.js +276 -0
  132. package/dist/server/src/lib/knowledge-graph.js +470 -0
  133. package/dist/server/src/lib/psyche-types.js +1 -0
  134. package/dist/server/src/lib/questionnaire-types.js +1 -0
  135. package/dist/server/src/lib/runtime-paths.js +24 -0
  136. package/dist/server/src/lib/schemas.js +238 -0
  137. package/dist/server/src/lib/snapshot-normalizer.js +416 -0
  138. package/dist/server/src/lib/theme-system.js +319 -0
  139. package/dist/server/src/lib/types.js +1 -0
  140. package/dist/server/src/lib/utils.js +22 -0
  141. package/dist/server/src/lib/workbench/boxes.js +16 -0
  142. package/dist/server/src/lib/workbench/contracts.js +229 -0
  143. package/dist/server/src/lib/workbench/nodes.js +215 -0
  144. package/dist/server/src/lib/workbench/registry.js +120 -0
  145. package/dist/server/src/lib/workbench/runtime.js +397 -0
  146. package/dist/server/src/lib/workbench/tool-catalog.js +68 -0
  147. package/openclaw.plugin.json +1 -1
  148. package/package.json +1 -1
  149. package/server/index.js +68 -0
  150. package/server/migrations/035_google_local_auth_settings.sql +2 -0
  151. package/server/migrations/036_google_local_auth_client_secret.sql +2 -0
  152. package/server/migrations/037_workbench_public_inputs_and_run_inputs.sql +5 -0
  153. package/server/migrations/038_data_management_settings.sql +11 -0
  154. package/server/migrations/039_life_force_and_action_points.sql +114 -0
  155. package/server/migrations/040_screen_time_domain.sql +89 -0
  156. package/server/migrations/041_companion_source_states.sql +21 -0
  157. package/server/migrations/042_movement_boxes.sql +47 -0
  158. package/server/migrations/043_movement_box_overlap_overrides.sql +26 -0
  159. package/skills/forge-openclaw/SKILL.md +27 -11
  160. package/skills/forge-openclaw/entity_conversation_playbooks.md +411 -46
  161. package/skills/forge-openclaw/psyche_entity_playbooks.md +195 -20
  162. package/dist/assets/index-CFCKDIMH.js +0 -67
  163. package/dist/assets/index-CFCKDIMH.js.map +0 -1
  164. package/dist/assets/index-ZPY6U1TU.css +0 -1
  165. package/dist/assets/vendor-D9PTEPSB.js +0 -824
  166. package/dist/assets/vendor-D9PTEPSB.js.map +0 -1
  167. package/dist/assets/viz-Cqb6s--o.js +0 -34
  168. package/dist/assets/viz-Cqb6s--o.js.map +0 -1
  169. package/dist/server/connectors/box-registry.js +0 -257
  170. package/dist/server/services/psyche-observation-calendar.js +0 -46
  171. package/dist/server/web.js +0 -98
  172. /package/dist/server/{discovery-advertiser.js → server/src/discovery-advertiser.js} +0 -0
  173. /package/dist/server/{e2e-server.js → server/src/e2e-server.js} +0 -0
  174. /package/dist/server/{errors.js → server/src/errors.js} +0 -0
  175. /package/dist/server/{index.js → server/src/index.js} +0 -0
  176. /package/dist/server/{managers → server/src/managers}/base.js +0 -0
  177. /package/dist/server/{managers → server/src/managers}/contracts.js +0 -0
  178. /package/dist/server/{managers → server/src/managers}/platform/api-gateway-manager.js +0 -0
  179. /package/dist/server/{managers → server/src/managers}/platform/audit-manager.js +0 -0
  180. /package/dist/server/{managers → server/src/managers}/platform/authentication-manager.js +0 -0
  181. /package/dist/server/{managers → server/src/managers}/platform/authorization-manager.js +0 -0
  182. /package/dist/server/{managers → server/src/managers}/platform/background-job-manager.js +0 -0
  183. /package/dist/server/{managers → server/src/managers}/platform/configuration-manager.js +0 -0
  184. /package/dist/server/{managers → server/src/managers}/platform/database-manager.js +0 -0
  185. /package/dist/server/{managers → server/src/managers}/platform/event-bus-manager.js +0 -0
  186. /package/dist/server/{managers → server/src/managers}/platform/external-service-manager.js +0 -0
  187. /package/dist/server/{managers → server/src/managers}/platform/health-manager.js +0 -0
  188. /package/dist/server/{managers → server/src/managers}/platform/migration-manager.js +0 -0
  189. /package/dist/server/{managers → server/src/managers}/platform/openai-responses-provider.js +0 -0
  190. /package/dist/server/{managers → server/src/managers}/platform/search-index-manager.js +0 -0
  191. /package/dist/server/{managers → server/src/managers}/platform/session-manager.js +0 -0
  192. /package/dist/server/{managers → server/src/managers}/platform/storage-manager.js +0 -0
  193. /package/dist/server/{managers → server/src/managers}/platform/token-manager.js +0 -0
  194. /package/dist/server/{managers → server/src/managers}/platform/transaction-manager.js +0 -0
  195. /package/dist/server/{managers → server/src/managers}/platform/trusted-network.js +0 -0
  196. /package/dist/server/{managers → server/src/managers}/type-guards.js +0 -0
  197. /package/dist/server/{preferences-seeds.js → server/src/preferences-seeds.js} +0 -0
  198. /package/dist/server/{preferences-types.js → server/src/preferences-types.js} +0 -0
  199. /package/dist/server/{questionnaire-flow.js → server/src/questionnaire-flow.js} +0 -0
  200. /package/dist/server/{questionnaire-seeds.js → server/src/questionnaire-seeds.js} +0 -0
  201. /package/dist/server/{questionnaire-types.js → server/src/questionnaire-types.js} +0 -0
  202. /package/dist/server/{repositories → server/src/repositories}/ai-processors.js +0 -0
  203. /package/dist/server/{repositories → server/src/repositories}/collaboration.js +0 -0
  204. /package/dist/server/{repositories → server/src/repositories}/deleted-entities.js +0 -0
  205. /package/dist/server/{repositories → server/src/repositories}/diagnostic-logs.js +0 -0
  206. /package/dist/server/{repositories → server/src/repositories}/domains.js +0 -0
  207. /package/dist/server/{repositories → server/src/repositories}/entity-ownership.js +0 -0
  208. /package/dist/server/{repositories → server/src/repositories}/event-log.js +0 -0
  209. /package/dist/server/{repositories → server/src/repositories}/goals.js +0 -0
  210. /package/dist/server/{repositories → server/src/repositories}/preferences.js +0 -0
  211. /package/dist/server/{repositories → server/src/repositories}/projects.js +0 -0
  212. /package/dist/server/{repositories → server/src/repositories}/psyche.js +0 -0
  213. /package/dist/server/{repositories → server/src/repositories}/questionnaires.js +0 -0
  214. /package/dist/server/{repositories → server/src/repositories}/rewards.js +0 -0
  215. /package/dist/server/{repositories → server/src/repositories}/strategies.js +0 -0
  216. /package/dist/server/{repositories → server/src/repositories}/surface-layouts.js +0 -0
  217. /package/dist/server/{repositories → server/src/repositories}/tags.js +0 -0
  218. /package/dist/server/{repositories → server/src/repositories}/task-runs.js +0 -0
  219. /package/dist/server/{repositories → server/src/repositories}/users.js +0 -0
  220. /package/dist/server/{repositories → server/src/repositories}/weekly-reviews.js +0 -0
  221. /package/dist/server/{repositories → server/src/repositories}/wiki-memory.js +0 -0
  222. /package/dist/server/{repositories → server/src/repositories}/work-adjustments.js +0 -0
  223. /package/dist/server/{seed-demo.js → server/src/seed-demo.js} +0 -0
  224. /package/dist/server/{services → server/src/services}/context.js +0 -0
  225. /package/dist/server/{services → server/src/services}/dashboard.js +0 -0
  226. /package/dist/server/{services → server/src/services}/gamification.js +0 -0
  227. /package/dist/server/{services → server/src/services}/insights.js +0 -0
  228. /package/dist/server/{services → server/src/services}/openai-codex-oauth.js +0 -0
  229. /package/dist/server/{services → server/src/services}/projects.js +0 -0
  230. /package/dist/server/{services → server/src/services}/psyche.js +0 -0
  231. /package/dist/server/{services → server/src/services}/relations.js +0 -0
  232. /package/dist/server/{services → server/src/services}/reviews.js +0 -0
  233. /package/dist/server/{services → server/src/services}/run-recovery.js +0 -0
  234. /package/dist/server/{services → server/src/services}/tagging.js +0 -0
  235. /package/dist/server/{services → server/src/services}/task-run-watchdog.js +0 -0
  236. /package/dist/server/{services → server/src/services}/work-time.js +0 -0
  237. /package/dist/server/{watch-mobile.js → server/src/watch-mobile.js} +0 -0
@@ -7,8 +7,14 @@ 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.
12
+ - Start by saying what seems to matter here or what the record is becoming, then ask
13
+ the next useful question.
10
14
  - Ask only for what is missing or still unclear.
11
15
  - Before every question, decide the one missing thing you are trying to clarify.
16
+ - Ask first for the missing thing that would change the record shape, title, or next
17
+ action most, not just the easiest field to fill.
12
18
  - Know where the conversation is headed before you ask the next question.
13
19
  - Prefer one clean question to a stacked sentence with several asks.
14
20
  - Reflect briefly when the user gives meaning, ambivalence, or emotionally loaded
@@ -20,6 +26,10 @@ Forge correctly, and gather only the structure that still matters.
20
26
  brief reflection -> one orienting question.
21
27
  - Another good shorthand for the same rhythm is:
22
28
  short reflection -> one orienting question.
29
+ - When the user is vague, ask for the smallest real example, desired outcome, or stake
30
+ before you ask for wording.
31
+ - When the user is clear, say what the record seems to be becoming and move straight to
32
+ the last missing structural detail.
23
33
  - For straightforward logistical entities such as tasks, calendar events, work blocks,
24
34
  timeboxes, and task runs, use a fast path:
25
35
  one brief confirming sentence -> one operational question.
@@ -27,14 +37,24 @@ Forge correctly, and gather only the structure that still matters.
27
37
  task runs, use a fast path:
28
38
  one brief confirming sentence -> one operational question.
29
39
  - Do not read schema fields out loud unless the user explicitly wants a checklist.
40
+ - One focused question is the default. Ask two only when both questions serve the same
41
+ job and the user is steady enough for it.
30
42
  - Do not ask the user to do naming work alone when the meaning is already clear. Offer
31
43
  a tentative title or formulation and invite correction.
32
44
  - When the meaning is clearer than the wording, offer a tentative title or summary
33
45
  yourself and ask whether it fits.
46
+ - After each substantive answer, briefly say what is becoming clearer before you ask
47
+ for the next missing detail.
48
+ - Let the user feel the direction of the intake. The next question should make sense
49
+ because of what just became clearer, not because a hidden checklist says it is next.
34
50
  - If the user already answered the usual opening question, do not repeat the stock
35
51
  opener. Move straight to the next missing clarification.
52
+ - After a substantive answer, briefly say what is becoming clear so the user can
53
+ correct the direction early.
36
54
  - Once the record is clear enough to name, stop exploring broadly and ask only for the
37
55
  last missing structural detail.
56
+ - When the record is already clear enough to save, save it instead of performing a
57
+ ceremonial extra question.
38
58
 
39
59
  ## Conversation arc
40
60
 
@@ -71,6 +91,123 @@ Update record:
71
91
 
72
92
  - "Before I change it, what feels newly true now, and what should stay intact?"
73
93
 
94
+ ## Turn shapes
95
+
96
+ Use these as small conversation molds when you need the next turn to feel guided
97
+ rather than mechanical.
98
+
99
+ Opening turn:
100
+
101
+ - briefly reflect what seems to matter here
102
+ - ask the one question that clarifies shape, stake, or outcome most
103
+
104
+ Middle turn:
105
+
106
+ - say what is becoming clearer
107
+ - name the one thing that still needs to be known
108
+ - ask only for that
109
+
110
+ Closing turn:
111
+
112
+ - offer the working title, summary, or record shape in plain language
113
+ - ask whether it feels true enough to save or needs one correction
114
+ - if the user says yes, move to the write instead of reopening the intake
115
+
116
+ ## Steering moves
117
+
118
+ Use these small moves to keep the intake natural and intentional.
119
+
120
+ When the user is still searching:
121
+
122
+ - reflect the stake in one sentence, then ask for the smallest concrete example or the
123
+ desired outcome
124
+
125
+ When the user already knows what they mean:
126
+
127
+ - offer the working formulation, then ask only for the last missing placement, timing,
128
+ or ownership detail
129
+
130
+ When the record carries emotion but is not Psyche:
131
+
132
+ - reflect what the user is trying to hold onto, repair, or not lose, then ask one
133
+ orienting question
134
+
135
+ When the user is updating an existing record:
136
+
137
+ - ask what is changing, what should remain true, and what prompted the change now only
138
+ if those answers would alter the record shape
139
+
140
+ When you are about to save:
141
+
142
+ - give one short working summary in the user's language and ask whether it feels true
143
+ enough or needs one correction
144
+ - if the user confirms it, stop asking and save
145
+
146
+ When an adjacent record becomes visible:
147
+
148
+ - name it gently and ask whether it should be linked now, saved separately later, or
149
+ left alone for now
150
+
151
+ ## Question Calibration Loop
152
+
153
+ Use this quick internal check before every follow-up question.
154
+
155
+ 1. What is the one thing still unknown?
156
+ 2. Does that unknown affect the entity shape, the wording, the placement, or the
157
+ operational detail?
158
+ 3. What is the smallest question that would answer that unknown?
159
+ 4. If the user already gave enough to act, stop asking and move to a short summary or
160
+ the write.
161
+
162
+ Useful calibration heuristics:
163
+
164
+ - If the unknown changes whether this is a goal, project, task, note, or Psyche
165
+ record, ask that first.
166
+ - If the shape is already clear but the wording is soft, offer a candidate title or
167
+ formulation rather than asking the user to invent one from scratch.
168
+ - If the wording is clear but the placement is missing, ask only for the parent,
169
+ timing, owner, or linked context that will make the record usable later.
170
+ - If the user is emotionally invested but the entity is not Psyche, reflect the stake
171
+ once and then return to the one missing structural detail.
172
+ - If the next question would only decorate the record and not change its usefulness,
173
+ skip it.
174
+
175
+ ## Abstract And Reusable Record Moves
176
+
177
+ Use this posture for tags, event types, emotion definitions, preference contexts,
178
+ preference catalogs, preference items, questionnaire instruments, and similar
179
+ reusable records.
180
+
181
+ - Start from the future use, decision, or repeated moment the record should clarify,
182
+ not from the label alone.
183
+ - Ask what distinction this record should help the user notice, compare, sort, or
184
+ retrieve later.
185
+ - For collection records, ask what they are meant to help decide before you ask what
186
+ belongs inside them.
187
+ - For vocabulary records, ask what counts as inside versus outside the term before you
188
+ settle the wording.
189
+ - If the user already proposes a label, keep it provisional until the boundary and
190
+ future use are clear.
191
+ - Once the distinction is clear, offer a candidate label yourself and invite
192
+ correction instead of making the user wordsmith alone.
193
+
194
+ ## Name, Define, Connect
195
+
196
+ Once the core record is visible, use this short checkpoint.
197
+
198
+ Name:
199
+
200
+ - offer a working title or label if the user has the meaning but not the wording yet
201
+
202
+ Define:
203
+
204
+ - ask what belongs inside this record and what would make it stop being this record
205
+
206
+ Connect:
207
+
208
+ - ask about links only after the record itself feels named and defined enough to stay
209
+ stable
210
+
74
211
  ## Question design rules
75
212
 
76
213
  - Let each question have one job:
@@ -82,16 +219,36 @@ Update record:
82
219
  or clarify the links.
83
220
  - Do not over-warm or over-therapize logistical records. For those flows, one brief
84
221
  confirming sentence plus one question is usually enough.
222
+ - The first question should usually clarify lived meaning, use, stake, or timing, not
223
+ ask the user to invent a title from scratch.
85
224
  - Ask the more meaning-bearing question before the more administrative one.
225
+ - Prefer "what", "when", and "how" before "why" when the user's meaning is still
226
+ forming. "Why" is often better after the experience or outcome is already clear.
86
227
  - If the user is uncertain, ask for a recent example before asking for an abstraction.
87
228
  - If the user is clear and decisive, confirm the working formulation and move directly
88
229
  to the one missing structural detail.
89
230
  - Avoid dead-form prompts such as "What should this be called?" when the user is still
90
231
  figuring out what the thing is.
232
+ - For labels such as `tag`, `event_type`, and `emotion_definition`, do not open with a
233
+ naming question unless the meaning is already clear and only the wording is missing.
234
+ - For reusable records, help the user define the boundary before you settle the final
235
+ label.
91
236
  - Before the final save question, it is often better to offer a candidate formulation
92
237
  than to ask for raw wording from scratch.
93
238
  - When useful, say what you think the record is becoming before asking the next
94
239
  question. That helps the user correct the shape early.
240
+ - For reusable vocabulary or taxonomy records such as `tag`, `event_type`,
241
+ `emotion_definition`, `preference_catalog`, and `preference_context`, ask what
242
+ distinction the label should help the user notice, sort, or retrieve later before
243
+ you ask about naming or aliases.
244
+ - For emotionally meaningful vocabulary records such as `event_type`,
245
+ `emotion_definition`, and many `self_observation` entries, start from the lived
246
+ moment or felt meaning before you move to reuse or retrieval language.
247
+ - For collection-like records such as `preference_catalog` and
248
+ `questionnaire_instrument`, ask what they are for before you ask what should go
249
+ inside them.
250
+ - After the user answers, prefer "what is becoming clearer is..." over a cold jump to
251
+ the next field.
95
252
 
96
253
  ## Ready-to-save check
97
254
 
@@ -104,6 +261,14 @@ Before saving, make sure you can answer all of these in plain language:
104
261
 
105
262
  If the answer to the last question is "none", save it instead of prolonging intake.
106
263
 
264
+ Before the final write, it is usually worth asking one light confirmation such as:
265
+
266
+ - "That sounds like the right shape to save. Do you want to keep it that way, or is
267
+ there one thing you want adjusted first?"
268
+
269
+ If an adjacent goal, project, task, note, value, pattern, or tag became visible, ask
270
+ about linking only after the main record already feels named and steady.
271
+
107
272
  ## Update loop
108
273
 
109
274
  Use this when the user is updating an existing record rather than creating a new one.
@@ -113,6 +278,9 @@ Use this when the user is updating an existing record rather than creating a new
113
278
  3. Ask what prompted the update now if that changes the shape of the record.
114
279
  4. Then ask only for the missing structural detail required by the change.
115
280
 
281
+ If the current title or shape may no longer fit, offer one revised formulation yourself
282
+ before asking the user to rewrite it from scratch.
283
+
116
284
  ## Goal
117
285
 
118
286
  Aim: clarify the direction and why it matters, not just produce a title.
@@ -120,9 +288,10 @@ Aim: clarify the direction and why it matters, not just produce a title.
120
288
  Arc:
121
289
 
122
290
  1. Ask what direction or outcome the user wants to keep in view.
123
- 2. Ask why it matters now.
124
- 3. Distinguish the goal from a project or task if needed.
125
- 4. Clarify horizon and status only after the meaning is clear.
291
+ 2. Reflect back the deeper stake in plain language before moving on.
292
+ 3. Ask why it matters now.
293
+ 4. Distinguish the goal from a project or task if needed.
294
+ 5. Clarify horizon and status only after the meaning is clear.
126
295
 
127
296
  Helpful follow-up lanes:
128
297
 
@@ -138,7 +307,7 @@ Ready to save when:
138
307
 
139
308
  Preferred opening question:
140
309
 
141
- - "What direction here feels important enough that you want to keep it in view?"
310
+ - "What direction are you trying to keep hold of here?"
142
311
 
143
312
  ## Project
144
313
 
@@ -147,10 +316,11 @@ Aim: turn an intention into a bounded workstream with a clear outcome.
147
316
  Arc:
148
317
 
149
318
  1. Ask what this piece of work is trying to make true.
150
- 2. Ask what outcome would make it feel real or complete for now.
151
- 3. Ask which goal it belongs under.
152
- 4. Land on a working name once the scope is clear.
153
- 5. Clarify status, owner, and notes only after the scope is clear.
319
+ 2. Reflect the emerging boundary so the user can hear what is in scope.
320
+ 3. Ask what outcome would make it feel real or complete for now.
321
+ 4. Ask which goal it belongs under.
322
+ 5. Land on a working name once the scope is clear.
323
+ 6. Clarify status, owner, and notes only after the scope is clear.
154
324
 
155
325
  Helpful follow-up lanes:
156
326
 
@@ -166,7 +336,7 @@ Ready to save when:
166
336
 
167
337
  Preferred opening question:
168
338
 
169
- - "If this became a real project, what would you be trying to make true?"
339
+ - "If this became a real project, what would you be trying to make true in your life or work?"
170
340
 
171
341
  ## Strategy
172
342
 
@@ -175,10 +345,11 @@ Aim: turn a vague plan into a deliberate sequence toward a real end state.
175
345
  Arc:
176
346
 
177
347
  1. Ask what future state the strategy is trying to make real.
178
- 2. Ask which goals or projects are the true targets.
179
- 3. Ask what the major steps or phases are.
180
- 4. Ask about order, dependencies, and anything that must not be skipped.
181
- 5. Clarify links or ownership once the sequence itself makes sense.
348
+ 2. Reflect the destination in plain language so the user can correct it early.
349
+ 3. Ask which goals or projects are the true targets.
350
+ 4. Ask what the major steps or phases are.
351
+ 5. Ask about order, dependencies, and anything that must not be skipped.
352
+ 6. Clarify links or ownership once the sequence itself makes sense.
182
353
 
183
354
  Helpful follow-up lanes:
184
355
 
@@ -195,7 +366,7 @@ Ready to save when:
195
366
 
196
367
  Preferred opening question:
197
368
 
198
- - "What future state is this strategy supposed to make real?"
369
+ - "What future state are you actually trying to arrive at with this strategy?"
199
370
 
200
371
  ## Task
201
372
 
@@ -222,7 +393,7 @@ Ready to save when:
222
393
 
223
394
  Preferred opening question:
224
395
 
225
- - "What is the next concrete move you want to remember or do?"
396
+ - "What is the next concrete move here?"
226
397
 
227
398
  ## Habit
228
399
 
@@ -251,7 +422,35 @@ Ready to save when:
251
422
 
252
423
  Preferred opening question:
253
424
 
254
- - "What recurring move are you trying to strengthen or loosen?"
425
+ - "What recurring move are you trying to strengthen or interrupt?"
426
+
427
+ ## Tag
428
+
429
+ Aim: create a label that helps future retrieval or grouping, not just another vague
430
+ bucket.
431
+
432
+ Arc:
433
+
434
+ 1. Ask what the tag should help the user notice, group, or find later.
435
+ 2. Ask what kinds of records should belong under it.
436
+ 3. Offer a concise label if the meaning is clearer than the wording.
437
+ 4. Ask about color, kind, or parent grouping only if that changes how it will be used.
438
+
439
+ Helpful follow-up lanes:
440
+
441
+ - what the tag is for later
442
+ - what should count as inside versus outside the label
443
+ - whether the user already has nearby tags that this should stay distinct from
444
+
445
+ Ready to save when:
446
+
447
+ - the tag has a stable label
448
+ - the grouping meaning is clear enough to reuse later
449
+ - any important distinction from nearby tags is clear
450
+
451
+ Preferred opening question:
452
+
453
+ - "What do you want this tag to help you notice or find again later?"
255
454
 
256
455
  ## Note
257
456
 
@@ -270,6 +469,8 @@ Helpful follow-up lanes:
270
469
  - what the note is for later
271
470
  - what should stay linked
272
471
  - whether it is durable or should expire
472
+ - whether part of the detail belongs in a note while the cleaner structure belongs on
473
+ another entity
273
474
 
274
475
  Ready to save when:
275
476
 
@@ -279,7 +480,36 @@ Ready to save when:
279
480
 
280
481
  Preferred opening question:
281
482
 
282
- - "What feels important to preserve from this?"
483
+ - "What about this feels worth preserving in a note?"
484
+
485
+ ## Wiki Page
486
+
487
+ Aim: create a durable reference page with a clear scope instead of dumping raw notes
488
+ into the wiki.
489
+
490
+ Arc:
491
+
492
+ 1. Ask what topic this page should become the canonical place for.
493
+ 2. Ask whether it is a durable wiki page or supporting evidence.
494
+ 3. Ask what future lookup, decision, or collaboration this page should support.
495
+ 4. Ask about linked entities, aliases, or tags only if they will make the page more
496
+ navigable later.
497
+
498
+ Helpful follow-up lanes:
499
+
500
+ - what this page should be the home for
501
+ - what should belong on the page versus remain linked evidence
502
+ - who would open this page later and what they should quickly understand
503
+
504
+ Ready to save when:
505
+
506
+ - the page scope is clear
507
+ - the page kind is clear enough
508
+ - the title is stable enough to find later
509
+
510
+ Preferred opening question:
511
+
512
+ - "What should this page become the main reference for?"
283
513
 
284
514
  ## Insight
285
515
 
@@ -422,9 +652,13 @@ without pretending it is already a full interpretation.
422
652
  Arc:
423
653
 
424
654
  1. Ask what was observed.
425
- 2. Ask when it happened or became noticeable.
426
- 3. Ask what it may connect to: pattern, belief, value, mode, task, project, or note.
427
- 4. Ask for tags or extra context only if that will help later review.
655
+ 2. Reflect the moment without pretending it is already a finished interpretation.
656
+ 3. Ask when it happened or became noticeable.
657
+ 4. Ask what it may connect to: pattern, belief, value, mode, task, project, or note.
658
+ 5. Ask for tags or extra context only if that will help later review.
659
+
660
+ If the user already gave the moment or timing, move straight to what they noticed most
661
+ clearly instead of re-asking when.
428
662
 
429
663
  Ready to save when:
430
664
 
@@ -434,7 +668,7 @@ Ready to save when:
434
668
 
435
669
  Preferred opening question:
436
670
 
437
- - "What did you notice that feels worth capturing?"
671
+ - "What did you notice most clearly in that moment?"
438
672
 
439
673
  ## Sleep Session
440
674
 
@@ -455,7 +689,7 @@ Ready to update when:
455
689
 
456
690
  Preferred opening question:
457
691
 
458
- - "What about this night feels worth remembering or linking?"
692
+ - "What about this night feels important enough to remember or connect?"
459
693
 
460
694
  ## Workout Session
461
695
 
@@ -475,33 +709,152 @@ Ready to update when:
475
709
 
476
710
  Preferred opening question:
477
711
 
478
- - "What about this workout feels most worth capturing?"
712
+ - "What about this workout feels most worth remembering or connecting?"
479
713
 
480
- ## Preference Item Or Context
714
+ ## Calendar Connection
481
715
 
482
- Aim: understand whether the user is trying to save a preference signal, define a
483
- context, or inspect the learned model.
716
+ Aim: connect the right provider deliberately without turning setup into a credential
717
+ dump.
484
718
 
485
719
  Arc:
486
720
 
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.
721
+ 1. Ask which provider the user wants to connect and what they want Forge to do with
722
+ it.
723
+ 2. Ask whether the goal is read-only visibility, writable planning, or both.
724
+ 3. Ask only for the next provider-specific step that still matters, such as auth flow,
725
+ label, or calendar selection.
726
+ 4. Move into the actual connection flow once the setup goal is clear.
727
+
728
+ Helpful follow-up lanes:
729
+
730
+ - what calendar workflow the user wants to unlock
731
+ - whether writable projection matters
732
+ - whether the provider requires a local sign-in step instead of manual fields
495
733
 
496
734
  Ready to act when:
497
735
 
736
+ - the provider is clear
737
+ - the intended sync behavior is clear enough
738
+ - the next setup step is obvious
739
+
740
+ Preferred opening question:
741
+
742
+ - "Which calendar provider are you trying to connect, and what do you want Forge to do with it?"
743
+
744
+ ## Preference Catalog
745
+
746
+ Aim: define a useful comparison pool, not just a list with no decision purpose.
747
+
748
+ Arc:
749
+
750
+ 1. Ask what preference question this catalog is meant to support.
751
+ 2. Ask what domain or concept area it belongs to.
752
+ 3. Ask what kinds of items should be included or excluded.
753
+ 4. Offer a working catalog name once the purpose is clear.
754
+
755
+ Helpful follow-up lanes:
756
+
757
+ - what decision or taste question this catalog should help answer
758
+ - what belongs in scope
759
+ - what would make the catalog immediately useful instead of bloated
760
+
761
+ Ready to save when:
762
+
763
+ - the catalog has a stable purpose
498
764
  - 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
765
+ - the boundary of what belongs inside is clear enough
501
766
 
502
767
  Preferred opening question:
503
768
 
504
- - "What preference are you trying to make clearer right now?"
769
+ - "What decision or taste question should this catalog help with?"
770
+
771
+ ## Preference Catalog Item
772
+
773
+ Aim: add one candidate in a way that will make later comparisons feel clear and fair.
774
+
775
+ Arc:
776
+
777
+ 1. Ask what makes this item worth including in the catalog.
778
+ 2. Ask what catalog or domain it belongs to if that is still unclear.
779
+ 3. Ask for a short clarifying description only if the label would be ambiguous later.
780
+ 4. Ask about aliases or tags only if they help retrieval.
781
+
782
+ Helpful follow-up lanes:
783
+
784
+ - why this item belongs in the comparison pool
785
+ - what would distinguish it from nearby items
786
+ - whether the label alone will be clear later
787
+
788
+ Ready to save when:
789
+
790
+ - the item label is clear
791
+ - the parent catalog is clear
792
+ - there is enough context to recognize it later if the label is ambiguous
793
+
794
+ Preferred opening question:
795
+
796
+ - "What makes this option meaningfully worth comparing?"
797
+
798
+ ## Preference Context
799
+
800
+ Aim: define a real operating mode for preferences, not a decorative label.
801
+
802
+ Arc:
803
+
804
+ 1. Ask what situation or mode this context is meant to represent.
805
+ 2. Ask what decisions or comparisons should feel different inside that context.
806
+ 3. Ask what should count inside that context and what should stay outside it.
807
+ 4. Ask whether it should be active, default, or kept separate from other evidence.
808
+ 5. Offer a concise name if the mode is clearer than the wording.
809
+
810
+ Helpful follow-up lanes:
811
+
812
+ - what decisions this context should shape
813
+ - what belongs inside versus outside the mode
814
+ - whether it should be default or explicitly separate
815
+
816
+ Ready to save when:
817
+
818
+ - the context has a stable purpose
819
+ - its boundary is clear enough to use consistently
820
+ - any default or sharing choice that matters is clear
821
+
822
+ Preferred opening question:
823
+
824
+ - "In what situation should Forge treat your preferences differently here?"
825
+
826
+ ## Preference Item
827
+
828
+ Aim: save one concrete preference candidate or signal without losing the context that
829
+ makes it meaningful.
830
+
831
+ Arc:
832
+
833
+ 1. Ask what preference or taste question this item belongs to.
834
+ 2. Ask what domain or context it should live in.
835
+ 3. Ask whether the user is trying to save it as a comparison candidate or as a direct
836
+ signal such as favorite, veto, or compare-later.
837
+ 4. Ask what makes this item distinct enough to compare usefully only if it is still a
838
+ comparison candidate.
839
+ 5. If the user is really trying to send a direct signal, ask only for the missing
840
+ detail and then act.
841
+
842
+ Helpful follow-up lanes:
843
+
844
+ - what domain this belongs to
845
+ - what context makes the preference meaningful
846
+ - whether this is a signal or a comparison candidate
847
+ - what distinguishes the item from nearby options
848
+
849
+ Ready to act when:
850
+
851
+ - the item is clear
852
+ - the domain or profile context is clear enough
853
+ - any needed distinguishing detail is captured
854
+
855
+ Preferred opening question:
856
+
857
+ - "What preference are you trying to make clearer by saving this item?"
505
858
 
506
859
  ## Questionnaire Instrument
507
860
 
@@ -512,8 +865,10 @@ Arc:
512
865
 
513
866
  1. Ask what the questionnaire is meant to measure or surface.
514
867
  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.
516
- 4. Move to draft creation once the purpose is clear.
868
+ 3. Ask what kind of honest moment or decision it should help someone answer before
869
+ getting into item wording.
870
+ 4. Reflect the practical use case back in plain language.
871
+ 5. Move to draft creation once the purpose is clear.
517
872
 
518
873
  Ready to act when:
519
874
 
@@ -523,7 +878,7 @@ Ready to act when:
523
878
 
524
879
  Preferred opening question:
525
880
 
526
- - "What is this questionnaire meant to help surface or measure?"
881
+ - "What would this questionnaire help someone notice or track?"
527
882
 
528
883
  ## Questionnaire Run
529
884
 
@@ -542,7 +897,7 @@ Ready to act when:
542
897
 
543
898
  Preferred opening question:
544
899
 
545
- - "Are you trying to start a questionnaire, continue one, or review a finished run?"
900
+ - "Do you want to start, continue, review, or finish a questionnaire run?"
546
901
 
547
902
  ## Event Type
548
903
 
@@ -551,9 +906,14 @@ consistent.
551
906
 
552
907
  Arc:
553
908
 
554
- 1. Ask what category the label should capture.
909
+ 1. Ask what kind of moment or incident this label should capture in lived terms.
555
910
  2. Ask how narrow or broad it should be.
556
- 3. Ask for a short description only if the label could be ambiguous later.
911
+ 3. Ask what would count as inside versus outside the category if that boundary is
912
+ still fuzzy.
913
+ 4. Ask for a short description only if the label could be ambiguous later.
914
+
915
+ If the user already offered a candidate label, keep the wording provisional and ask
916
+ what kinds of moments belong inside it before you ask whether the label is right.
557
917
 
558
918
  Ready to save when:
559
919
 
@@ -562,7 +922,7 @@ Ready to save when:
562
922
 
563
923
  Preferred opening question:
564
924
 
565
- - "What kind of incident should this event type capture?"
925
+ - "What kind of moment keeps happening that you want future reports to name the same way each time?"
566
926
 
567
927
  ## Emotion Definition
568
928
 
@@ -570,10 +930,15 @@ Aim: define one reusable emotion entry clearly enough that future reports stay p
570
930
 
571
931
  Arc:
572
932
 
573
- 1. Ask what emotion this should represent.
933
+ 1. Ask what this feeling is like in lived terms when the user says it.
574
934
  2. Ask what distinguishes it from nearby emotions if that matters.
575
935
  3. Ask for a short description only if later reports would benefit from it.
576
936
 
937
+ Helpful follow-up lanes:
938
+
939
+ - what tells the user this is that feeling and not a nearby one
940
+ - what kind of moments this emotion name should be used for later
941
+
577
942
  Ready to save when:
578
943
 
579
944
  - the label is clear
@@ -581,4 +946,4 @@ Ready to save when:
581
946
 
582
947
  Preferred opening question:
583
948
 
584
- - "Which emotion do you want this entry to help name more clearly?"
949
+ - "When this feeling is present, what tells you it is this feeling and not a nearby one?"