forge-openclaw-plugin 0.2.24 → 0.2.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/README.md +13 -0
  2. package/dist/assets/{board-_C6oMy5w.js → board-ta0rUHOf.js} +3 -3
  3. package/dist/assets/{board-_C6oMy5w.js.map → board-ta0rUHOf.js.map} +1 -1
  4. package/dist/assets/index-Ro0ZF_az.css +1 -0
  5. package/dist/assets/index-ytlpSj23.js +79 -0
  6. package/dist/assets/index-ytlpSj23.js.map +1 -0
  7. package/dist/assets/{motion-D4sZgCHd.js → motion-fBKPB6yw.js} +3 -3
  8. package/dist/assets/motion-fBKPB6yw.js.map +1 -0
  9. package/dist/assets/{table-BWzTaky1.js → table-C-IGTQni.js} +2 -2
  10. package/dist/assets/{table-BWzTaky1.js.map → table-C-IGTQni.js.map} +1 -1
  11. package/dist/assets/{ui-BzK4azQb.js → ui-DInOpaYF.js} +2 -2
  12. package/dist/assets/{ui-BzK4azQb.js.map → ui-DInOpaYF.js.map} +1 -1
  13. package/dist/assets/vendor-lE3tZJcC.js +876 -0
  14. package/dist/assets/vendor-lE3tZJcC.js.map +1 -0
  15. package/dist/index.html +7 -8
  16. package/dist/openclaw/local-runtime.d.ts +3 -1
  17. package/dist/openclaw/local-runtime.js +51 -15
  18. package/dist/openclaw/parity.d.ts +1 -1
  19. package/dist/openclaw/parity.js +29 -0
  20. package/dist/openclaw/plugin-entry-shared.d.ts +1 -0
  21. package/dist/openclaw/plugin-entry-shared.js +31 -6
  22. package/dist/openclaw/plugin-sdk-types.d.ts +29 -0
  23. package/dist/openclaw/routes.js +236 -0
  24. package/dist/openclaw/session-bootstrap.d.ts +78 -0
  25. package/dist/openclaw/session-bootstrap.js +240 -0
  26. package/dist/openclaw/tools.js +279 -6
  27. package/dist/server/server/migrations/001_core.sql +411 -0
  28. package/dist/server/server/migrations/002_psyche.sql +392 -0
  29. package/dist/server/server/migrations/003_habits.sql +30 -0
  30. package/dist/server/server/migrations/004_habit_links.sql +8 -0
  31. package/dist/server/server/migrations/005_habit_psyche_links.sql +24 -0
  32. package/dist/server/server/migrations/006_work_adjustments.sql +14 -0
  33. package/dist/server/server/migrations/007_weekly_review_closures.sql +17 -0
  34. package/dist/server/server/migrations/008_calendar_execution.sql +147 -0
  35. package/dist/server/server/migrations/009_true_calendar_events.sql +195 -0
  36. package/dist/server/server/migrations/010_calendar_selection_state.sql +6 -0
  37. package/dist/server/server/migrations/011_calendar_timezone_backfill.sql +11 -0
  38. package/dist/server/server/migrations/012_work_block_ranges.sql +7 -0
  39. package/dist/server/server/migrations/013_microsoft_local_auth_settings.sql +8 -0
  40. package/dist/server/server/migrations/014_note_tags_and_ephemeral.sql +8 -0
  41. package/dist/server/server/migrations/015_multi_user_and_strategies.sql +244 -0
  42. package/dist/server/server/migrations/016_health_companion.sql +158 -0
  43. package/dist/server/server/migrations/016_strategy_contracts_and_user_graph.sql +22 -0
  44. package/dist/server/server/migrations/017_preferences.sql +131 -0
  45. package/dist/server/server/migrations/018_preference_catalogs.sql +31 -0
  46. package/dist/server/server/migrations/019_wiki_memory.sql +255 -0
  47. package/dist/server/server/migrations/020_wiki_page_hierarchy.sql +11 -0
  48. package/dist/server/server/migrations/021_hide_evidence_from_wiki_index.sql +3 -0
  49. package/dist/server/server/migrations/022_wiki_ingest_background.sql +85 -0
  50. package/dist/server/server/migrations/023_diagnostic_logs.sql +28 -0
  51. package/dist/server/server/migrations/024_questionnaires.sql +96 -0
  52. package/dist/server/server/migrations/025_ai_model_connections.sql +26 -0
  53. package/dist/server/server/migrations/026_custom_theme_settings.sql +2 -0
  54. package/dist/server/server/migrations/027_ai_processors.sql +31 -0
  55. package/dist/server/server/migrations/028_movement_domain.sql +136 -0
  56. package/dist/server/server/migrations/029_watch_micro_capture.sql +23 -0
  57. package/dist/server/server/migrations/030_surface_layouts.sql +5 -0
  58. package/dist/server/server/migrations/031_ai_processor_runtime_upgrades.sql +10 -0
  59. package/dist/server/server/migrations/032_ai_connectors.sql +44 -0
  60. package/dist/server/server/migrations/033_movement_trip_point_sync.sql +36 -0
  61. package/dist/server/server/migrations/034_movement_segment_sync.sql +49 -0
  62. package/dist/server/server/migrations/035_google_local_auth_settings.sql +2 -0
  63. package/dist/server/server/migrations/036_google_local_auth_client_secret.sql +2 -0
  64. package/dist/server/{app.js → server/src/app.js} +992 -25
  65. package/dist/server/server/src/connectors/box-registry.js +188 -0
  66. package/dist/server/{db.js → server/src/db.js} +6 -0
  67. package/dist/server/server/src/debug.js +19 -0
  68. package/dist/server/server/src/discovery-advertiser.js +114 -0
  69. package/dist/server/{health.js → server/src/health.js} +39 -11
  70. package/dist/server/{index.js → server/src/index.js} +4 -0
  71. package/dist/server/{managers → server/src/managers}/platform/llm-manager.js +40 -4
  72. package/dist/server/{managers → server/src/managers}/platform/openai-responses-provider.js +129 -19
  73. package/dist/server/server/src/movement.js +2935 -0
  74. package/dist/server/{openapi.js → server/src/openapi.js} +628 -5
  75. package/dist/server/{psyche-types.js → server/src/psyche-types.js} +15 -1
  76. package/dist/server/server/src/questionnaire-flow.js +552 -0
  77. package/dist/server/server/src/questionnaire-seeds.js +853 -0
  78. package/dist/server/server/src/questionnaire-types.js +340 -0
  79. package/dist/server/server/src/repositories/ai-connectors.js +1207 -0
  80. package/dist/server/server/src/repositories/ai-processors.js +547 -0
  81. package/dist/server/{repositories → server/src/repositories}/calendar.js +1 -1
  82. package/dist/server/{repositories → server/src/repositories}/entity-ownership.js +9 -1
  83. package/dist/server/{repositories → server/src/repositories}/habits.js +69 -5
  84. package/dist/server/server/src/repositories/model-settings.js +216 -0
  85. package/dist/server/{repositories → server/src/repositories}/notes.js +57 -15
  86. package/dist/server/{repositories → server/src/repositories}/preferences.js +124 -0
  87. package/dist/server/server/src/repositories/questionnaires.js +1338 -0
  88. package/dist/server/{repositories → server/src/repositories}/settings.js +156 -12
  89. package/dist/server/server/src/repositories/surface-layouts.js +76 -0
  90. package/dist/server/{repositories → server/src/repositories}/wiki-memory.js +5 -1
  91. package/dist/server/{services → server/src/services}/calendar-runtime.js +775 -58
  92. package/dist/server/{services → server/src/services}/entity-crud.js +81 -2
  93. package/dist/server/server/src/services/google-calendar-oauth-config.js +176 -0
  94. package/dist/server/server/src/services/openai-codex-oauth.js +153 -0
  95. package/dist/server/server/src/services/psyche-observation-calendar.js +46 -0
  96. package/dist/server/{types.js → server/src/types.js} +621 -14
  97. package/dist/server/server/src/watch-mobile.js +562 -0
  98. package/dist/server/{web.js → server/src/web.js} +30 -4
  99. package/dist/server/src/components/customization/utility-widgets.js +330 -0
  100. package/dist/server/src/components/workbench-boxes/health/health-boxes.js +92 -0
  101. package/dist/server/src/components/workbench-boxes/kanban/kanban-boxes.js +128 -0
  102. package/dist/server/src/components/workbench-boxes/movement/movement-boxes.js +37 -0
  103. package/dist/server/src/components/workbench-boxes/notes/notes-boxes.js +114 -0
  104. package/dist/server/src/components/workbench-boxes/projects/projects-boxes.js +57 -0
  105. package/dist/server/src/components/workbench-boxes/shared/define-workbench-box.js +4 -0
  106. package/dist/server/src/components/workbench-boxes/shared/generic-node-view.js +13 -0
  107. package/dist/server/src/components/workbench-boxes/today/today-boxes.js +63 -0
  108. package/dist/server/src/lib/api-error.js +37 -0
  109. package/dist/server/src/lib/api.js +1859 -0
  110. package/dist/server/src/lib/calendar-name-deduper.js +144 -0
  111. package/dist/server/src/lib/diagnostics.js +67 -0
  112. package/dist/server/src/lib/psyche-types.js +1 -0
  113. package/dist/server/src/lib/questionnaire-types.js +1 -0
  114. package/dist/server/src/lib/runtime-paths.js +24 -0
  115. package/dist/server/src/lib/schemas.js +234 -0
  116. package/dist/server/src/lib/snapshot-normalizer.js +374 -0
  117. package/dist/server/src/lib/theme-system.js +319 -0
  118. package/dist/server/src/lib/types.js +1 -0
  119. package/dist/server/src/lib/utils.js +22 -0
  120. package/dist/server/src/lib/workbench/boxes.js +16 -0
  121. package/dist/server/src/lib/workbench/nodes.js +15 -0
  122. package/dist/server/src/lib/workbench/registry.js +73 -0
  123. package/dist/server/src/lib/workbench/runtime.js +181 -0
  124. package/openclaw.plugin.json +1 -1
  125. package/package.json +6 -1
  126. package/server/index.js +68 -0
  127. package/server/migrations/024_questionnaires.sql +96 -0
  128. package/server/migrations/025_ai_model_connections.sql +26 -0
  129. package/server/migrations/026_custom_theme_settings.sql +2 -0
  130. package/server/migrations/027_ai_processors.sql +31 -0
  131. package/server/migrations/028_movement_domain.sql +136 -0
  132. package/server/migrations/029_watch_micro_capture.sql +23 -0
  133. package/server/migrations/030_surface_layouts.sql +5 -0
  134. package/server/migrations/031_ai_processor_runtime_upgrades.sql +10 -0
  135. package/server/migrations/032_ai_connectors.sql +44 -0
  136. package/server/migrations/033_movement_trip_point_sync.sql +36 -0
  137. package/server/migrations/034_movement_segment_sync.sql +49 -0
  138. package/server/migrations/035_google_local_auth_settings.sql +2 -0
  139. package/server/migrations/036_google_local_auth_client_secret.sql +2 -0
  140. package/skills/forge-openclaw/SKILL.md +15 -1
  141. package/skills/forge-openclaw/entity_conversation_playbooks.md +523 -87
  142. package/skills/forge-openclaw/psyche_entity_playbooks.md +331 -221
  143. package/dist/assets/index-DTCwBWAs.js +0 -65
  144. package/dist/assets/index-DTCwBWAs.js.map +0 -1
  145. package/dist/assets/index-DttXlAgi.css +0 -1
  146. package/dist/assets/motion-D4sZgCHd.js.map +0 -1
  147. package/dist/assets/vendor-De38P6YR.js +0 -729
  148. package/dist/assets/vendor-De38P6YR.js.map +0 -1
  149. package/dist/assets/viz-C6hfyqzu.js +0 -34
  150. package/dist/assets/viz-C6hfyqzu.js.map +0 -1
  151. package/skills/forge-openclaw/cron_jobs.md +0 -395
  152. /package/dist/server/{demo-data.js → server/src/demo-data.js} +0 -0
  153. /package/dist/server/{e2e-server.js → server/src/e2e-server.js} +0 -0
  154. /package/dist/server/{errors.js → server/src/errors.js} +0 -0
  155. /package/dist/server/{managers → server/src/managers}/base.js +0 -0
  156. /package/dist/server/{managers → server/src/managers}/contracts.js +0 -0
  157. /package/dist/server/{managers → server/src/managers}/platform/api-gateway-manager.js +0 -0
  158. /package/dist/server/{managers → server/src/managers}/platform/audit-manager.js +0 -0
  159. /package/dist/server/{managers → server/src/managers}/platform/authentication-manager.js +0 -0
  160. /package/dist/server/{managers → server/src/managers}/platform/authorization-manager.js +0 -0
  161. /package/dist/server/{managers → server/src/managers}/platform/background-job-manager.js +0 -0
  162. /package/dist/server/{managers → server/src/managers}/platform/configuration-manager.js +0 -0
  163. /package/dist/server/{managers → server/src/managers}/platform/database-manager.js +0 -0
  164. /package/dist/server/{managers → server/src/managers}/platform/event-bus-manager.js +0 -0
  165. /package/dist/server/{managers → server/src/managers}/platform/external-service-manager.js +0 -0
  166. /package/dist/server/{managers → server/src/managers}/platform/health-manager.js +0 -0
  167. /package/dist/server/{managers → server/src/managers}/platform/migration-manager.js +0 -0
  168. /package/dist/server/{managers → server/src/managers}/platform/search-index-manager.js +0 -0
  169. /package/dist/server/{managers → server/src/managers}/platform/secrets-manager.js +0 -0
  170. /package/dist/server/{managers → server/src/managers}/platform/session-manager.js +0 -0
  171. /package/dist/server/{managers → server/src/managers}/platform/storage-manager.js +0 -0
  172. /package/dist/server/{managers → server/src/managers}/platform/token-manager.js +0 -0
  173. /package/dist/server/{managers → server/src/managers}/platform/transaction-manager.js +0 -0
  174. /package/dist/server/{managers → server/src/managers}/platform/trusted-network.js +0 -0
  175. /package/dist/server/{managers → server/src/managers}/runtime.js +0 -0
  176. /package/dist/server/{managers → server/src/managers}/type-guards.js +0 -0
  177. /package/dist/server/{preferences-seeds.js → server/src/preferences-seeds.js} +0 -0
  178. /package/dist/server/{preferences-types.js → server/src/preferences-types.js} +0 -0
  179. /package/dist/server/{repositories → server/src/repositories}/activity-events.js +0 -0
  180. /package/dist/server/{repositories → server/src/repositories}/collaboration.js +0 -0
  181. /package/dist/server/{repositories → server/src/repositories}/deleted-entities.js +0 -0
  182. /package/dist/server/{repositories → server/src/repositories}/diagnostic-logs.js +0 -0
  183. /package/dist/server/{repositories → server/src/repositories}/domains.js +0 -0
  184. /package/dist/server/{repositories → server/src/repositories}/event-log.js +0 -0
  185. /package/dist/server/{repositories → server/src/repositories}/goals.js +0 -0
  186. /package/dist/server/{repositories → server/src/repositories}/projects.js +0 -0
  187. /package/dist/server/{repositories → server/src/repositories}/psyche.js +0 -0
  188. /package/dist/server/{repositories → server/src/repositories}/rewards.js +0 -0
  189. /package/dist/server/{repositories → server/src/repositories}/strategies.js +0 -0
  190. /package/dist/server/{repositories → server/src/repositories}/tags.js +0 -0
  191. /package/dist/server/{repositories → server/src/repositories}/task-runs.js +0 -0
  192. /package/dist/server/{repositories → server/src/repositories}/tasks.js +0 -0
  193. /package/dist/server/{repositories → server/src/repositories}/users.js +0 -0
  194. /package/dist/server/{repositories → server/src/repositories}/weekly-reviews.js +0 -0
  195. /package/dist/server/{repositories → server/src/repositories}/work-adjustments.js +0 -0
  196. /package/dist/server/{seed-demo.js → server/src/seed-demo.js} +0 -0
  197. /package/dist/server/{services → server/src/services}/context.js +0 -0
  198. /package/dist/server/{services → server/src/services}/dashboard.js +0 -0
  199. /package/dist/server/{services → server/src/services}/gamification.js +0 -0
  200. /package/dist/server/{services → server/src/services}/insights.js +0 -0
  201. /package/dist/server/{services → server/src/services}/projects.js +0 -0
  202. /package/dist/server/{services → server/src/services}/psyche.js +0 -0
  203. /package/dist/server/{services → server/src/services}/relations.js +0 -0
  204. /package/dist/server/{services → server/src/services}/reviews.js +0 -0
  205. /package/dist/server/{services → server/src/services}/run-recovery.js +0 -0
  206. /package/dist/server/{services → server/src/services}/tagging.js +0 -0
  207. /package/dist/server/{services → server/src/services}/task-run-watchdog.js +0 -0
  208. /package/dist/server/{services → server/src/services}/work-time.js +0 -0
@@ -1,72 +1,182 @@
1
1
  # Entity Conversation Playbooks
2
2
 
3
3
  Use this file whenever the user is creating or updating a Forge entity outside the
4
- deeper Psyche exploration flow. The point is to keep the conversation natural and
5
- intentional while still gathering enough structure to store the right record.
4
+ deeper Psyche exploration flow. The goal is not to walk through a form. The goal is to
5
+ help the user recognize what they are trying to save, name it cleanly, place it in
6
+ Forge correctly, and gather only the structure that still matters.
6
7
 
7
- ## Interaction stance
8
+ ## Core stance
8
9
 
10
+ - Lead with what the user is trying to preserve, change, resolve, or make true, not
11
+ with the entity label.
9
12
  - Ask only for what is missing or still unclear.
10
- - Lead the user somewhere. Know whether you are trying to clarify the name, the role,
11
- the outcome, the placement, the timing, the success condition, or the links.
12
- - Let each question have one job. If you cannot say what the question is trying to
13
- clarify, ask a different question.
14
- - Ask one to three focused questions at a time. One is usually best when the user is
15
- unsure or emotionally loaded.
16
- - Reflect briefly before the next question when the user gives nuance that matters.
17
- - For emotionally meaningful planning records such as goals, habits, and notes, reflect
18
- the meaning first and then ask for the structure.
19
- - Do not read schema fields out loud unless the user explicitly wants a mechanical
20
- checklist.
21
- - Prefer a progression of:
22
- recent intent or concrete example -> working name -> purpose or outcome -> placement
23
- in Forge -> operational details -> linked context.
24
- - If the user already gave a usable title, timing, or parent context, do not ask for it
25
- again just because the schema has that field.
26
- - When the user says "save something about..." and the record is still fuzzy, help them
27
- sharpen what they are trying to preserve before you ask for the final Forge shape.
13
+ - Before every question, decide the one missing thing you are trying to clarify.
14
+ - Know where the conversation is headed before you ask the next question.
15
+ - Prefer one clean question to a stacked sentence with several asks.
16
+ - Reflect briefly when the user gives meaning, ambivalence, or emotionally loaded
17
+ context that matters to the record.
18
+ - Especially for goals, habits, notes, and updates, reflect what the user is trying to
19
+ preserve, change, or make true before you ask for structure.
20
+ - For emotionally meaningful non-Psyche records such as goals, habits, notes, and many
21
+ updates, use a simple rhythm:
22
+ brief reflection -> one orienting question.
23
+ - Another good shorthand for the same rhythm is:
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.
29
+ - For straightforward logistical entities such as tasks, calendar events, work blocks,
30
+ timeboxes, and task runs, use a fast path:
31
+ one brief confirming sentence -> one operational question.
32
+ - For logistical records such as tasks, calendar events, work blocks, timeboxes, and
33
+ task runs, use a fast path:
34
+ one brief confirming sentence -> one operational question.
35
+ - Do not read schema fields out loud unless the user explicitly wants a checklist.
36
+ - Do not ask the user to do naming work alone when the meaning is already clear. Offer
37
+ a tentative title or formulation and invite correction.
28
38
  - When the meaning is clearer than the wording, offer a tentative title or summary
29
- yourself and ask whether it fits. Do not make the user do all the naming work alone.
30
- - Before saving, offer a short working summary in the user's own language when that
31
- would reduce ambiguity.
32
- - When updating, start with:
33
- what is changing,
34
- what should stay true,
35
- and what prompted the update now.
39
+ yourself and ask whether it fits.
40
+ - If the user already answered the usual opening question, do not repeat the stock
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.
44
+ - Once the record is clear enough to name, stop exploring broadly and ask only for the
45
+ last missing structural detail.
46
+
47
+ ## Conversation arc
48
+
49
+ Most good Forge intake flows follow this sequence:
50
+
51
+ 1. Clarify what the user is trying to preserve, change, or make true.
52
+ 2. Land on the right Forge shape.
53
+ 3. Offer or confirm a working name.
54
+ 4. Clarify the outcome, placement, timing, or cadence that will matter later.
55
+ 5. Ask about links only when those links will make the record more useful.
56
+
57
+ That sequence is not a script. Skip steps the user already answered.
58
+
59
+ ## Active-listening patterns
60
+
61
+ Use one of these shapes when the user is not yet precise.
62
+
63
+ Meaning-bearing record:
64
+
65
+ - "It sounds like you want to keep hold of something important here. What feels most
66
+ worth preserving about it?"
67
+
68
+ Bounded-work record:
69
+
70
+ - "So this is becoming a real piece of work, not just a passing idea. What outcome
71
+ would make it feel real or complete for now?"
72
+
73
+ Operational record:
74
+
75
+ - "I can save that. What is the one timing or placement detail that still needs to be
76
+ decided?"
77
+
78
+ Update record:
79
+
80
+ - "Before I change it, what feels newly true now, and what should stay intact?"
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
36
115
 
37
116
  ## Question design rules
38
117
 
39
- - Prefer one clean question over a stacked sentence with multiple asks.
40
- - For straightforward logistical entities such as tasks, calendar events, work blocks,
41
- timeboxes, and task runs, use the fast path: confirm what is already clear and ask
42
- for only the one missing operational detail.
43
- - When you need two details, ask for the more meaning-bearing one first.
44
- - If the user sounds uncertain, ask for an example before an abstraction.
45
- - If the user sounds clear and decisive, confirm the working formulation and move to the
46
- one missing structural detail.
47
- - A good next question usually clarifies one of these:
48
- what this is,
49
- why it matters,
50
- where it belongs,
51
- what success looks like,
52
- when it should happen,
53
- or what should stay linked.
54
- - Before the final save question, it is often better to offer a tentative formulation
55
- than to ask for a raw title. Example shape:
56
- "This sounds like a project about repairing trust with Lea, not just a loose note.
57
- Does that fit, and if so what outcome would tell you it is moving?"
58
- - Avoid dead-form prompts like "What should this be called?" when the user is still
59
- figuring out what the thing is. Name first, then ask for correction.
118
+ - Let each question have one job:
119
+ clarify the shape,
120
+ clarify the purpose,
121
+ clarify the placement,
122
+ clarify the success condition,
123
+ clarify the timing,
124
+ or clarify the links.
125
+ - Do not over-warm or over-therapize logistical records. For those flows, one brief
126
+ confirming sentence plus one question is usually enough.
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.
130
+ - If the user is uncertain, ask for a recent example before asking for an abstraction.
131
+ - If the user is clear and decisive, confirm the working formulation and move directly
132
+ to the one missing structural detail.
133
+ - Avoid dead-form prompts such as "What should this be called?" when the user is still
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.
137
+ - Before the final save question, it is often better to offer a candidate formulation
138
+ than to ask for raw wording from scratch.
139
+ - When useful, say what you think the record is becoming before asking the next
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.
151
+
152
+ ## Ready-to-save check
153
+
154
+ Before saving, make sure you can answer all of these in plain language:
155
+
156
+ - What is this record actually for?
157
+ - Why is this the right Forge entity type?
158
+ - What would make the record recognizable later?
159
+ - What one structural detail is still worth asking for, if any?
160
+
161
+ If the answer to the last question is "none", save it instead of prolonging intake.
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?"
60
167
 
61
168
  ## Update loop
62
169
 
63
170
  Use this when the user is updating an existing record rather than creating a new one.
64
171
 
65
172
  1. Ask what feels newly true, newly urgent, or newly clear.
66
- 2. Ask what should stay intact so the record does not lose its core meaning.
67
- 3. Ask for the concrete trigger for the update if it matters.
173
+ 2. Ask what should stay true so the record keeps its core meaning.
174
+ 3. Ask what prompted the update now if that changes the shape of the record.
68
175
  4. Then ask only for the missing structural detail required by the change.
69
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
+
70
180
  ## Goal
71
181
 
72
182
  Aim: clarify the direction and why it matters, not just produce a title.
@@ -75,9 +185,15 @@ Arc:
75
185
 
76
186
  1. Ask what direction or outcome the user wants to keep in view.
77
187
  2. Ask why it matters now.
78
- 3. Distinguish the goal from a project or task.
188
+ 3. Distinguish the goal from a project or task if needed.
79
189
  4. Clarify horizon and status only after the meaning is clear.
80
190
 
191
+ Helpful follow-up lanes:
192
+
193
+ - why this direction matters now
194
+ - what would count as movement without turning it into a task list
195
+ - whether it is a quarter, year, or life direction
196
+
81
197
  Ready to save when:
82
198
 
83
199
  - the goal has a stable name
@@ -86,7 +202,7 @@ Ready to save when:
86
202
 
87
203
  Preferred opening question:
88
204
 
89
- - "What direction are you trying to hold onto here, in a way you would want future-you to keep seeing?"
205
+ - "What direction here feels important enough that you want to keep it in view?"
90
206
 
91
207
  ## Project
92
208
 
@@ -94,20 +210,27 @@ Aim: turn an intention into a bounded workstream with a clear outcome.
94
210
 
95
211
  Arc:
96
212
 
97
- 1. Ask what this piece of work should be called.
98
- 2. Ask what outcome would make the project feel real or complete for now.
213
+ 1. Ask what this piece of work is trying to make true.
214
+ 2. Ask what outcome would make it feel real or complete for now.
99
215
  3. Ask which goal it belongs under.
100
- 4. Clarify status, owner, and notes only after the scope is clear.
216
+ 4. Land on a working name once the scope is clear.
217
+ 5. Clarify status, owner, and notes only after the scope is clear.
218
+
219
+ Helpful follow-up lanes:
220
+
221
+ - what concrete outcome would make this project complete enough
222
+ - what belongs inside the boundary and what does not
223
+ - which goal gives the project meaning
101
224
 
102
225
  Ready to save when:
103
226
 
104
227
  - the project has a clear name
105
228
  - the outcome is concrete enough to recognize later
106
- - its parent goal is known or intentionally absent pending follow-up
229
+ - its parent goal is known or intentionally absent
107
230
 
108
231
  Preferred opening question:
109
232
 
110
- - "If this becomes a real project in Forge, what outcome would make it feel genuinely underway or complete?"
233
+ - "If this became a real project, what would you be trying to make true?"
111
234
 
112
235
  ## Strategy
113
236
 
@@ -115,17 +238,24 @@ Aim: turn a vague plan into a deliberate sequence toward a real end state.
115
238
 
116
239
  Arc:
117
240
 
118
- 1. Ask what end state the strategy is trying to land.
241
+ 1. Ask what future state the strategy is trying to make real.
119
242
  2. Ask which goals or projects are the true targets.
120
- 3. Ask what the major steps or nodes are.
243
+ 3. Ask what the major steps or phases are.
121
244
  4. Ask about order, dependencies, and anything that must not be skipped.
122
- 5. Clarify linked entities or ownership once the sequence itself makes sense.
245
+ 5. Clarify links or ownership once the sequence itself makes sense.
246
+
247
+ Helpful follow-up lanes:
248
+
249
+ - what the end state looks like when it is real
250
+ - what the major phases are
251
+ - which steps must happen before others
252
+ - what is in scope versus out of scope
123
253
 
124
254
  Ready to save when:
125
255
 
126
256
  - the strategy has a stable name
127
257
  - the end state is concrete enough to test
128
- - the directed sequence is sketched clearly enough to build the graph
258
+ - the directed sequence is sketched clearly enough to build
129
259
 
130
260
  Preferred opening question:
131
261
 
@@ -139,7 +269,14 @@ Arc:
139
269
 
140
270
  1. Ask what the next concrete action is.
141
271
  2. Ask where it belongs: project, goal, both, or standalone.
142
- 3. Ask what would make it easier to do: due date, priority, owner, or brief context.
272
+ 3. Ask what would make it easier to do: due date, priority, owner, or one line of
273
+ context.
274
+
275
+ Helpful follow-up lanes:
276
+
277
+ - turn vague intent into an actionable verb
278
+ - identify parent project or goal
279
+ - capture the one timing or priority detail that will actually help
143
280
 
144
281
  Ready to save when:
145
282
 
@@ -153,14 +290,22 @@ Preferred opening question:
153
290
 
154
291
  ## Habit
155
292
 
156
- Aim: define the recurring behavior and the cadence in a way that makes later check-ins unambiguous.
293
+ Aim: define the recurring behavior and the cadence in a way that makes later check-ins
294
+ unambiguous.
157
295
 
158
296
  Arc:
159
297
 
160
- 1. Ask what the recurring behavior is in plain language.
298
+ 1. Ask what recurring move the user is trying to strengthen or loosen.
161
299
  2. Ask whether doing it is aligned or a slip.
162
- 3. Ask about cadence and what counts as success in practice.
163
- 4. Ask about links to goals, tasks, or Psyche entities only if that would help later review.
300
+ 3. Ask what honest success or failure looks like in practice.
301
+ 4. Ask about cadence and links only after the behavior is concrete.
302
+
303
+ Helpful follow-up lanes:
304
+
305
+ - what the recurring move looks like on an ordinary day
306
+ - whether the habit is `positive` or `negative`
307
+ - what counts as an honest check-in
308
+ - what cadence is realistic and meaningful
164
309
 
165
310
  Ready to save when:
166
311
 
@@ -170,32 +315,68 @@ Ready to save when:
170
315
 
171
316
  Preferred opening question:
172
317
 
173
- - "What is the recurring behavior you want Forge to keep track of?"
318
+ - "What recurring move are you trying to strengthen or loosen?"
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?"
174
347
 
175
348
  ## Note
176
349
 
177
- Aim: preserve the useful context and link it to the right places without turning the note into a dumping ground.
350
+ Aim: preserve the useful context and link it to the right places without turning the
351
+ note into a dumping ground.
178
352
 
179
353
  Arc:
180
354
 
181
355
  1. Ask what the note needs to preserve.
182
356
  2. Ask what entities it should stay attached to.
183
357
  3. Ask whether it should be durable or temporary.
184
- 4. Ask about tags or author only if they help retrieval or handoff.
358
+ 4. Ask about tags or author only if they will help retrieval or handoff.
359
+
360
+ Helpful follow-up lanes:
361
+
362
+ - what the note is for later
363
+ - what should stay linked
364
+ - whether it is durable or should expire
185
365
 
186
366
  Ready to save when:
187
367
 
188
368
  - the note body captures the important point
189
369
  - the links are clear
190
- - durability versus ephemeral memory is clear when relevant
370
+ - durability is clear when relevant
191
371
 
192
372
  Preferred opening question:
193
373
 
194
- - "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?"
195
375
 
196
376
  ## Insight
197
377
 
198
- Aim: capture one grounded observation or recommendation clearly enough that it remains useful later.
378
+ Aim: capture one grounded observation or recommendation clearly enough that it stays
379
+ useful later.
199
380
 
200
381
  Arc:
201
382
 
@@ -203,6 +384,12 @@ Arc:
203
384
  2. Ask what entity or timeframe it belongs to, if any.
204
385
  3. Ask what recommendation, caution, or invitation should remain explicit.
205
386
 
387
+ Helpful follow-up lanes:
388
+
389
+ - what the core observation is
390
+ - who or what it belongs to
391
+ - what the practical recommendation is
392
+
206
393
  Ready to save when:
207
394
 
208
395
  - the observation has a stable title or phrase
@@ -215,7 +402,8 @@ Preferred opening question:
215
402
 
216
403
  ## Calendar Event
217
404
 
218
- Aim: make the event legible as a real commitment in time, with the right timezone and links.
405
+ Aim: make the event legible as a real commitment in time, with the right timezone and
406
+ links.
219
407
 
220
408
  Arc:
221
409
 
@@ -224,6 +412,12 @@ Arc:
224
412
  3. Ask where it belongs or what it supports.
225
413
  4. Ask whether it should stay Forge-only only if that choice matters.
226
414
 
415
+ Helpful follow-up lanes:
416
+
417
+ - exact start and end time
418
+ - local timezone if there is ambiguity
419
+ - linked goal, project, task, or note
420
+
227
421
  Ready to save when:
228
422
 
229
423
  - the title is clear
@@ -245,6 +439,13 @@ Arc:
245
439
  3. Ask whether it allows or blocks work.
246
440
  4. Ask whether it has a start or end date.
247
441
 
442
+ Helpful follow-up lanes:
443
+
444
+ - what the block is for
445
+ - recurrence timing
446
+ - blocking state
447
+ - optional date bounds
448
+
248
449
  Ready to save when:
249
450
 
250
451
  - the block has a clear purpose
@@ -263,9 +464,16 @@ Arc:
263
464
 
264
465
  1. Ask which task the slot belongs to.
265
466
  2. Ask when the slot should start and end.
266
- 3. Ask whether this is a manual reservation, a suggestion, or a live-run alignment only if relevant.
467
+ 3. Ask whether this is a manual reservation, a suggestion, or live-run alignment only
468
+ if relevant.
267
469
  4. Ask about override reason only if calendar rules are being bypassed.
268
470
 
471
+ Helpful follow-up lanes:
472
+
473
+ - attached task
474
+ - exact time window
475
+ - scheduling context only if it changes the action
476
+
269
477
  Ready to save when:
270
478
 
271
479
  - the task is known
@@ -298,40 +506,268 @@ Preferred opening question:
298
506
 
299
507
  - "Which task should I start?"
300
508
 
509
+ ## Self Observation
510
+
511
+ Aim: capture one observation clearly enough that it can support later reflection
512
+ without pretending it is already a full interpretation.
513
+
514
+ Arc:
515
+
516
+ 1. Ask what was observed.
517
+ 2. Ask when it happened or became noticeable.
518
+ 3. Ask what it may connect to: pattern, belief, value, mode, task, project, or note.
519
+ 4. Ask for tags or extra context only if that will help later review.
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
+
524
+ Ready to save when:
525
+
526
+ - the observation itself is clear
527
+ - timing is clear enough
528
+ - any useful links are captured
529
+
530
+ Preferred opening question:
531
+
532
+ - "What did you notice that feels worth capturing?"
533
+
534
+ ## Sleep Session
535
+
536
+ Aim: enrich one night's record with reflective context instead of treating it like a
537
+ generic note.
538
+
539
+ Arc:
540
+
541
+ 1. Ask what about this night feels worth capturing.
542
+ 2. Ask whether the main point is quality, pattern, context, meaning, or links.
543
+ 3. Ask what goal, project, task, habit, or Psyche record it should stay connected to.
544
+ 4. Ask about tags only if they will help later review.
545
+
546
+ Ready to update when:
547
+
548
+ - the reflective takeaway is clear
549
+ - the relevant links or tags are clear when needed
550
+
551
+ Preferred opening question:
552
+
553
+ - "What about this night feels important enough to remember or connect?"
554
+
555
+ ## Workout Session
556
+
557
+ Aim: enrich one workout with subjective effort, mood, meaning, or linked context.
558
+
559
+ Arc:
560
+
561
+ 1. Ask what about the session the user wants to preserve.
562
+ 2. Ask whether the key layer is effort, mood, meaning, social context, or links.
563
+ 3. Ask what it connects to in Forge if links matter.
564
+ 4. Ask about tags only if they help later retrieval.
565
+
566
+ Ready to update when:
567
+
568
+ - the reflective point is clear
569
+ - the key mood, effort, meaning, or links are clear when needed
570
+
571
+ Preferred opening question:
572
+
573
+ - "What about this workout feels most worth remembering or connecting?"
574
+
575
+ ## Preference Catalog
576
+
577
+ Aim: define a useful comparison pool, not just a list with no decision purpose.
578
+
579
+ Arc:
580
+
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.
585
+
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
591
+
592
+ Ready to save when:
593
+
594
+ - the catalog has a stable purpose
595
+ - the domain is clear
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
684
+
685
+ Preferred opening question:
686
+
687
+ - "What preference are you trying to make clearer by saving this item?"
688
+
689
+ ## Questionnaire Instrument
690
+
691
+ Aim: clarify whether the user is authoring a reusable questionnaire and what the
692
+ instrument is for.
693
+
694
+ Arc:
695
+
696
+ 1. Ask what the questionnaire is meant to measure or surface.
697
+ 2. Ask who it is for and when it should be used.
698
+ 3. Ask what kind of questions would make it honest and useful before getting into
699
+ item wording.
700
+ 4. Move to draft creation once the purpose is clear.
701
+
702
+ Ready to act when:
703
+
704
+ - the purpose is clear
705
+ - the audience or use context is clear
706
+ - the instrument is distinct enough to draft
707
+
708
+ Preferred opening question:
709
+
710
+ - "What is this questionnaire meant to help surface or measure?"
711
+
712
+ ## Questionnaire Run
713
+
714
+ Aim: clarify whether the user wants to start, continue, or complete one answer session.
715
+
716
+ Arc:
717
+
718
+ 1. Ask which questionnaire run this is about.
719
+ 2. Ask whether the user wants to start, continue, review, or complete it.
720
+ 3. If answering is still in progress, ask only for the next answer or note that matters.
721
+
722
+ Ready to act when:
723
+
724
+ - the questionnaire is identified
725
+ - the user intent for the run is clear
726
+
727
+ Preferred opening question:
728
+
729
+ - "Are you trying to start a questionnaire, continue one, or review a finished run?"
730
+
301
731
  ## Event Type
302
732
 
303
- Aim: create a reusable incident category that will actually help future reports stay consistent.
733
+ Aim: create a reusable incident category that will actually help future reports stay
734
+ consistent.
304
735
 
305
736
  Arc:
306
737
 
307
- 1. Ask what category the label should capture.
738
+ 1. Ask what kind of moment or incident this label should capture in lived terms.
308
739
  2. Ask how narrow or broad it should be.
309
- 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.
310
746
 
311
747
  Ready to save when:
312
748
 
313
749
  - the label is stable
314
- - the category boundary is clear enough to reuse
750
+ - the intended category is clear enough that future reports will use it consistently
315
751
 
316
752
  Preferred opening question:
317
753
 
318
- - "What kind of incident should this category stand for?"
754
+ - "What kind of moment do you want this event type to help you name more consistently?"
319
755
 
320
756
  ## Emotion Definition
321
757
 
322
- Aim: create a reusable emotion label with enough clarity to use consistently later.
758
+ Aim: define one reusable emotion entry clearly enough that future reports stay precise.
323
759
 
324
760
  Arc:
325
761
 
326
- 1. Ask what emotion label the user wants to preserve.
327
- 2. Ask what distinguishes it from nearby emotions.
328
- 3. Ask for a broader category only if it will help later browsing or reporting.
762
+ 1. Ask what this feeling is like in lived terms when the user says it.
763
+ 2. Ask what distinguishes it from nearby emotions if that matters.
764
+ 3. Ask for a short description only if later reports would benefit from it.
329
765
 
330
766
  Ready to save when:
331
767
 
332
- - the label is stable
333
- - the meaning is clear enough to reuse
768
+ - the label is clear
769
+ - the meaning is clear enough to reuse later
334
770
 
335
771
  Preferred opening question:
336
772
 
337
- - "What emotion label do you want to keep reusable in Forge?"
773
+ - "When you say this feeling, what does it actually feel like for you?"