forge-openclaw-plugin 0.2.60 → 0.2.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +121 -51
- package/dist/assets/{board-B1V3M__K.js → board-DUwMfZvN.js} +1 -1
- package/dist/assets/index-B9VOpR7r.css +1 -0
- package/dist/assets/index-DoHjjze2.js +90 -0
- package/dist/assets/{motion-CltSTItx.js → motion-Crg3QyXD.js} +1 -1
- package/dist/assets/{table-B-VrSFx8.js → table-CTlDeYRs.js} +1 -1
- package/dist/assets/{ui-DUqM4jkt.js → ui-CJPaElbj.js} +1 -1
- package/dist/assets/{vendor-C0otBhgu.js → vendor-BdrT2htV.js} +217 -207
- package/dist/companion-iroh/darwin-arm64/forge-companion-iroh +0 -0
- package/dist/companion-iroh/darwin-x64/forge-companion-iroh +0 -0
- package/dist/companion-iroh/linux-x64/forge-companion-iroh +0 -0
- package/dist/companion-iroh-src/Cargo.lock +4559 -0
- package/dist/companion-iroh-src/Cargo.toml +37 -0
- package/dist/companion-iroh-src/src/lib.rs +279 -0
- package/dist/companion-iroh-src/src/main.rs +478 -0
- package/dist/companion-iroh-src/src/protocol.rs +129 -0
- package/dist/gamification-previews/dark-fantasy-item-trophy-tasks-anvil-marathon.webp +0 -0
- package/dist/gamification-previews/dark-fantasy-item-trophy-xp-levels-the-first-heat.webp +0 -0
- package/dist/gamification-previews/dark-fantasy-item-unlock-streaks-molten-crown-fire.webp +0 -0
- package/dist/gamification-previews/dark-fantasy-mascot.webp +0 -0
- package/dist/gamification-previews/dramatic-smithie-item-trophy-tasks-anvil-marathon.webp +0 -0
- package/dist/gamification-previews/dramatic-smithie-item-trophy-xp-levels-the-first-heat.webp +0 -0
- package/dist/gamification-previews/dramatic-smithie-item-unlock-streaks-molten-crown-fire.webp +0 -0
- package/dist/gamification-previews/dramatic-smithie-mascot.webp +0 -0
- package/dist/gamification-previews/mind-locksmith-item-trophy-tasks-anvil-marathon.webp +0 -0
- package/dist/gamification-previews/mind-locksmith-item-trophy-xp-levels-the-first-heat.webp +0 -0
- package/dist/gamification-previews/mind-locksmith-item-unlock-streaks-molten-crown-fire.webp +0 -0
- package/dist/gamification-previews/mind-locksmith-mascot.webp +0 -0
- package/dist/index.html +7 -7
- package/dist/openclaw/parity.js +27 -0
- package/dist/openclaw/plugin-entry-shared.js +2 -2
- package/dist/openclaw/plugin-sdk-types.d.ts +2 -1
- package/dist/openclaw/routes.d.ts +4 -0
- package/dist/openclaw/routes.js +112 -3
- package/dist/openclaw/tools.js +32 -4
- package/dist/server/server/migrations/059_data_backup_retention.sql +2 -0
- package/dist/server/server/src/app.js +288 -61
- package/dist/server/server/src/data-management-types.js +2 -0
- package/dist/server/server/src/discovery-advertiser.js +13 -0
- package/dist/server/server/src/health.js +58 -3
- package/dist/server/server/src/movement.js +16 -1
- package/dist/server/server/src/openapi.js +410 -9
- package/dist/server/server/src/repositories/rewards.js +60 -0
- package/dist/server/server/src/services/companion-iroh.js +425 -0
- package/dist/server/server/src/services/data-management.js +32 -2
- package/dist/server/server/src/services/doctor.js +762 -0
- package/dist/server/server/src/services/gamification.js +75 -3
- package/dist/server/server/src/services/life-force.js +166 -25
- package/dist/server/server/src/web.js +88 -12
- package/dist/server/src/lib/api.js +9 -0
- package/dist/server/src/lib/gamification-catalog.js +1 -1
- package/openclaw.plugin.json +85 -3
- package/package.json +10 -6
- package/server/migrations/059_data_backup_retention.sql +2 -0
- package/skills/forge-openclaw/SKILL.md +80 -19
- package/skills/forge-openclaw/entity_conversation_playbooks.md +283 -25
- package/skills/forge-openclaw/psyche_entity_playbooks.md +82 -0
- package/dist/assets/index-BwKAPo98.css +0 -1
- package/dist/assets/index-Dy7c-dRY.js +0 -90
package/openclaw.plugin.json
CHANGED
|
@@ -2,10 +2,92 @@
|
|
|
2
2
|
"id": "forge-openclaw-plugin",
|
|
3
3
|
"name": "Forge",
|
|
4
4
|
"description": "Curated OpenClaw adapter for the Forge collaboration API, UI entrypoint, and localhost auto-start runtime.",
|
|
5
|
-
"version": "0.2.
|
|
5
|
+
"version": "0.2.65",
|
|
6
|
+
"activation": {
|
|
7
|
+
"onStartup": true,
|
|
8
|
+
"onCapabilities": [
|
|
9
|
+
"tool"
|
|
10
|
+
],
|
|
11
|
+
"onCommands": [
|
|
12
|
+
"forge"
|
|
13
|
+
]
|
|
14
|
+
},
|
|
6
15
|
"skills": [
|
|
7
16
|
"./skills"
|
|
8
17
|
],
|
|
18
|
+
"commandAliases": [
|
|
19
|
+
{
|
|
20
|
+
"name": "forge"
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"contracts": {
|
|
24
|
+
"tools": [
|
|
25
|
+
"forge_adjust_work_minutes",
|
|
26
|
+
"forge_apply_doctor_fix",
|
|
27
|
+
"forge_call_life_force_route",
|
|
28
|
+
"forge_call_movement_route",
|
|
29
|
+
"forge_call_workbench_route",
|
|
30
|
+
"forge_clone_questionnaire",
|
|
31
|
+
"forge_complete_questionnaire_run",
|
|
32
|
+
"forge_complete_task_run",
|
|
33
|
+
"forge_connect_calendar_provider",
|
|
34
|
+
"forge_create_entities",
|
|
35
|
+
"forge_create_task_timebox",
|
|
36
|
+
"forge_create_work_block_template",
|
|
37
|
+
"forge_delete_entities",
|
|
38
|
+
"forge_enqueue_preferences_item_from_entity",
|
|
39
|
+
"forge_ensure_questionnaire_draft",
|
|
40
|
+
"forge_focus_task_run",
|
|
41
|
+
"forge_get_agent_onboarding",
|
|
42
|
+
"forge_get_calendar_overview",
|
|
43
|
+
"forge_get_current_work",
|
|
44
|
+
"forge_get_doctor",
|
|
45
|
+
"forge_get_operator_context",
|
|
46
|
+
"forge_get_operator_overview",
|
|
47
|
+
"forge_get_preferences_workspace",
|
|
48
|
+
"forge_get_psyche_overview",
|
|
49
|
+
"forge_get_questionnaire",
|
|
50
|
+
"forge_get_questionnaire_run",
|
|
51
|
+
"forge_get_self_observation_calendar",
|
|
52
|
+
"forge_get_sleep_overview",
|
|
53
|
+
"forge_get_sports_overview",
|
|
54
|
+
"forge_get_ui_entrypoint",
|
|
55
|
+
"forge_get_user_directory",
|
|
56
|
+
"forge_get_weekly_review",
|
|
57
|
+
"forge_get_wiki_health",
|
|
58
|
+
"forge_get_wiki_page",
|
|
59
|
+
"forge_get_wiki_settings",
|
|
60
|
+
"forge_get_xp_metrics",
|
|
61
|
+
"forge_grant_reward_bonus",
|
|
62
|
+
"forge_heartbeat_task_run",
|
|
63
|
+
"forge_ingest_wiki_source",
|
|
64
|
+
"forge_list_questionnaires",
|
|
65
|
+
"forge_list_wiki_pages",
|
|
66
|
+
"forge_log_work",
|
|
67
|
+
"forge_merge_preferences_contexts",
|
|
68
|
+
"forge_post_insight",
|
|
69
|
+
"forge_publish_questionnaire_draft",
|
|
70
|
+
"forge_recommend_task_timeboxes",
|
|
71
|
+
"forge_reindex_wiki_embeddings",
|
|
72
|
+
"forge_release_task_run",
|
|
73
|
+
"forge_restore_entities",
|
|
74
|
+
"forge_search_entities",
|
|
75
|
+
"forge_search_wiki",
|
|
76
|
+
"forge_start_preferences_game",
|
|
77
|
+
"forge_start_questionnaire_run",
|
|
78
|
+
"forge_start_task_run",
|
|
79
|
+
"forge_submit_preferences_judgment",
|
|
80
|
+
"forge_submit_preferences_signal",
|
|
81
|
+
"forge_sync_calendar_connection",
|
|
82
|
+
"forge_sync_wiki_vault",
|
|
83
|
+
"forge_update_entities",
|
|
84
|
+
"forge_update_preferences_score",
|
|
85
|
+
"forge_update_questionnaire_run",
|
|
86
|
+
"forge_update_sleep_session",
|
|
87
|
+
"forge_update_workout_session",
|
|
88
|
+
"forge_upsert_wiki_page"
|
|
89
|
+
]
|
|
90
|
+
},
|
|
9
91
|
"uiHints": {
|
|
10
92
|
"origin": {
|
|
11
93
|
"label": "Forge Origin",
|
|
@@ -19,7 +101,7 @@
|
|
|
19
101
|
},
|
|
20
102
|
"dataRoot": {
|
|
21
103
|
"label": "Forge Data Root",
|
|
22
|
-
"help": "
|
|
104
|
+
"help": "Optional absolute folder path for Forge data. Defaults to ~/.forge. When set, Forge stores forge.sqlite directly in this folder; use the same value across adapters that should share one database.",
|
|
23
105
|
"placeholder": "~/.forge",
|
|
24
106
|
"advanced": true
|
|
25
107
|
},
|
|
@@ -63,7 +145,7 @@
|
|
|
63
145
|
"dataRoot": {
|
|
64
146
|
"type": "string",
|
|
65
147
|
"default": "~/.forge",
|
|
66
|
-
"description": "Absolute path for the shared Forge data root. Defaults to ~/.forge
|
|
148
|
+
"description": "Absolute path for the shared Forge data root. Defaults to ~/.forge. Explicit values override that default; use the same value across local adapters that should share one database."
|
|
67
149
|
},
|
|
68
150
|
"apiToken": {
|
|
69
151
|
"type": "string",
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "forge-openclaw-plugin",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.65",
|
|
4
4
|
"description": "Curated OpenClaw adapter for the Forge collaboration API, UI entrypoint, and localhost auto-start runtime.",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"license": "
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
7
|
"private": false,
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
@@ -38,10 +38,13 @@
|
|
|
38
38
|
"openclaw": {
|
|
39
39
|
"extensions": [
|
|
40
40
|
"./dist/openclaw/index.js"
|
|
41
|
-
]
|
|
41
|
+
],
|
|
42
|
+
"install": {
|
|
43
|
+
"minHostVersion": ">=2026.5.4"
|
|
44
|
+
}
|
|
42
45
|
},
|
|
43
46
|
"peerDependencies": {
|
|
44
|
-
"openclaw": "2026.4
|
|
47
|
+
"openclaw": "2026.5.4"
|
|
45
48
|
},
|
|
46
49
|
"dependencies": {
|
|
47
50
|
"@dnd-kit/core": "^6.3.1",
|
|
@@ -97,10 +100,11 @@
|
|
|
97
100
|
"overrides": {
|
|
98
101
|
"@aws-sdk/xml-builder": "^3.972.19",
|
|
99
102
|
"basic-ftp": "^5.3.0",
|
|
100
|
-
"axios": "^1.
|
|
103
|
+
"axios": "^1.16.0",
|
|
101
104
|
"fast-xml-parser": "^5.7.1",
|
|
102
105
|
"follow-redirects": "^1.16.0",
|
|
103
|
-
"hono": "4.12.
|
|
106
|
+
"hono": "^4.12.18",
|
|
107
|
+
"ip-address": "^10.2.0",
|
|
104
108
|
"uuid": "^14.0.0"
|
|
105
109
|
},
|
|
106
110
|
"scripts": {
|
|
@@ -87,6 +87,53 @@ guessing.
|
|
|
87
87
|
`forge_call_life_force_route`, or `forge_call_workbench_route`, use those
|
|
88
88
|
route-key tools after the conversation has selected the lane; otherwise use the
|
|
89
89
|
exact `/api/v1/*` route or OpenClaw `/forge/v1/*` mirror published in onboarding.
|
|
90
|
+
Life Force may be keyed as `lifeForce` and as the entity-style alias `life_force`;
|
|
91
|
+
both point to the same `/api/v1/life-force/*` route family.
|
|
92
|
+
- The live onboarding `methodRoutes` map and the specialized route-key tool schemas
|
|
93
|
+
include the exact route-key to method/path map. Use `methodRoutes` as the
|
|
94
|
+
route-key-to-`METHOD /api/v1/...` source of truth when checking specialized
|
|
95
|
+
methods, especially POST aggregate reads such as Movement `selection` and DELETE
|
|
96
|
+
repair paths. When a route key's exact path contains placeholders such as `:id`,
|
|
97
|
+
`:weekday`, `:runId`, or `:nodeId`, pass those values in `pathParams` using the
|
|
98
|
+
placeholder names exactly. Do not place IDs inside `routeKey`, invent a raw route
|
|
99
|
+
string, or ask the user to choose an endpoint when the lane already selects one. If
|
|
100
|
+
that schema and live onboarding disagree, trust the live onboarding for the current
|
|
101
|
+
call and treat the disagreement as a Forge contract bug to fix, not as a reason to
|
|
102
|
+
guess a nearby route.
|
|
103
|
+
|
|
104
|
+
Concrete route-key examples for internal use:
|
|
105
|
+
|
|
106
|
+
- Movement all-time read:
|
|
107
|
+
`{"routeKey":"allTime","query":{"userIds":["user_operator"]}}`
|
|
108
|
+
- Movement timeline read:
|
|
109
|
+
`{"routeKey":"timeline","query":{"from":"2026-05-01T00:00:00.000Z","to":"2026-05-06T23:59:59.999Z","userIds":["user_operator"]}}`
|
|
110
|
+
- Movement selection aggregate:
|
|
111
|
+
`{"routeKey":"selection","query":{"from":"2026-05-01T00:00:00.000Z","to":"2026-05-14T23:59:59.999Z","placeIds":["place_home"],"userIds":["user_operator"]}}`
|
|
112
|
+
- Movement trip detail:
|
|
113
|
+
`{"routeKey":"tripDetail","pathParams":{"id":"trip_123"}}`
|
|
114
|
+
- Movement missing-stay correction:
|
|
115
|
+
first `{"routeKey":"userBoxPreflight","body":{"kind":"stay","startedAt":"2026-05-06T13:00:00.000Z","endedAt":"2026-05-06T15:00:00.000Z","placeLabel":"Home","userId":"user_operator"}}`,
|
|
116
|
+
then `{"routeKey":"userBoxCreate","body":{"kind":"stay","startedAt":"2026-05-06T13:00:00.000Z","endedAt":"2026-05-06T15:00:00.000Z","placeLabel":"Home","userId":"user_operator","note":"Manual correction after reviewing the timeline."}}`
|
|
117
|
+
- Life Force overview:
|
|
118
|
+
`{"routeKey":"overview"}`
|
|
119
|
+
- Life Force profile edit:
|
|
120
|
+
`{"routeKey":"profile","body":{"baselineDailyAp":24,"recoveryNotes":"Clinic-admin days need a lower expected afternoon load."}}`
|
|
121
|
+
- Life Force weekday template edit:
|
|
122
|
+
`{"routeKey":"weekdayTemplate","pathParams":{"weekday":"monday"},"body":{"points":[{"hour":13,"freeAp":-4}]}}`
|
|
123
|
+
- Life Force fatigue signal:
|
|
124
|
+
`{"routeKey":"fatigueSignal","body":{"signal":"tired","intensity":7,"note":"Sharp post-lunch dip after clinic admin."}}`
|
|
125
|
+
- Workbench flow catalog:
|
|
126
|
+
`{"routeKey":"listFlows","query":{"includeArchived":false}}`
|
|
127
|
+
- Workbench box catalog:
|
|
128
|
+
`{"routeKey":"boxCatalog"}`
|
|
129
|
+
- Workbench run detail:
|
|
130
|
+
`{"routeKey":"runDetail","pathParams":{"id":"flow_research_digest","runId":"run_123"}}`
|
|
131
|
+
- Workbench published output:
|
|
132
|
+
`{"routeKey":"publishedOutput","pathParams":{"id":"flow_research_digest"}}`
|
|
133
|
+
- Workbench latest node output:
|
|
134
|
+
`{"routeKey":"latestNodeOutput","pathParams":{"id":"flow_research_digest","nodeId":"node_summary"}}`
|
|
135
|
+
- Workbench run execution:
|
|
136
|
+
`{"routeKey":"runFlow","pathParams":{"id":"flow_research_digest"},"body":{"input":{"topic":"question flow quality"}}}`
|
|
90
137
|
|
|
91
138
|
Preferences rule:
|
|
92
139
|
|
|
@@ -126,6 +173,11 @@ Health rule:
|
|
|
126
173
|
|
|
127
174
|
- Sleep and sports records are first-class health surfaces, not generic notes or tasks.
|
|
128
175
|
- Use `forge_get_sleep_overview` and `forge_get_sports_overview` for review and trend reading.
|
|
176
|
+
- In `forge_get_agent_onboarding.entityRouteModel.readModelOnlySurfaces`, the health
|
|
177
|
+
overview routes are published under both the plain names `sleepOverview` and
|
|
178
|
+
`sportsOverview` and the entity-style aliases `sleep_overview` and
|
|
179
|
+
`sports_overview`. Treat those as read-only overview surfaces, not batch CRUD
|
|
180
|
+
entities.
|
|
129
181
|
- Use the shared batch entity tools for ordinary `sleep_session` and `workout_session` create, update, delete, and search work. Do not force agents into a large one-route-per-entity mental model when the batch routes already cover the record cleanly.
|
|
130
182
|
- Use `forge_update_sleep_session` and `forge_update_workout_session` only when the job is reflective enrichment on one existing health record after review, such as attaching notes, tags, mood, meaning, or Forge links.
|
|
131
183
|
- Habit-generated workouts and imported HealthKit workouts belong to the same workout record model, so do not invent a separate storage path for sport sessions.
|
|
@@ -156,11 +208,15 @@ Entity conversation rule:
|
|
|
156
208
|
|
|
157
209
|
Forge data location rule:
|
|
158
210
|
|
|
159
|
-
-
|
|
160
|
-
- the
|
|
161
|
-
-
|
|
162
|
-
-
|
|
163
|
-
-
|
|
211
|
+
- never answer from a generic default. First check the actual configured `dataRoot` and, when possible, the live runtime file handle.
|
|
212
|
+
- the default local Forge data root is `~/.forge`, so the default database is `~/.forge/forge.sqlite`.
|
|
213
|
+
- the user can override that default. Determine the effective storage root from the active adapter config or runtime environment first: OpenClaw `plugins.entries["forge-openclaw-plugin"].config.dataRoot`, Hermes `~/.hermes/forge/config.json.dataRoot`, `FORGE_DATA_ROOT`, or the runtime's reported storage path.
|
|
214
|
+
- when `dataRoot` is set, Forge stores `forge.sqlite` directly inside that folder. That explicit setting overrides generic defaults.
|
|
215
|
+
- when a Forge server is running locally, verify the actual open database with a process/file-handle check such as `lsof -p <forge-pid> | rg 'forge.sqlite|forge.json'`.
|
|
216
|
+
- treat plugin extension folders, package-local `data/`, or adapter-local data folders as only possible candidates until config or live process evidence proves they are active.
|
|
217
|
+
- if the user wants to choose the data folder or configure backups from the UI, point them to Forge `Settings -> Data`. That page shows the live data folder, can move current data or adopt an existing Forge data folder, creates manual backups, enables recurring automatic backups, and lets the user choose how many days of automatic backups to keep.
|
|
218
|
+
- before changing data roots, restoring, or merging data, create backups of every candidate Forge database plus OpenClaw/Hermes config files. Do not merge side databases unless an ID/content-level audit proves relevant user data is missing from the selected active database.
|
|
219
|
+
- if the user asks where Forge data is stored, state both the configured path and the live verified database path, or say that the live path has not yet been verified.
|
|
164
220
|
|
|
165
221
|
Psyche interview rule:
|
|
166
222
|
|
|
@@ -251,13 +307,16 @@ Use these exact entity meanings when deciding what the user is describing.
|
|
|
251
307
|
|
|
252
308
|
`emotion_definition` is a reusable emotion entry, such as fear, shame, anger, grief, relief, or disgust.
|
|
253
309
|
|
|
254
|
-
|
|
310
|
+
Minimum-field checkpoint, not a question script: use this only after the
|
|
311
|
+
conversation has enough shape to save or update something. Do not ask every listed
|
|
312
|
+
item. Choose the single missing lane that affects the write, and stop when the
|
|
313
|
+
record is clear enough to persist.
|
|
255
314
|
|
|
256
315
|
`goal`
|
|
257
316
|
Use for a meaningful direction over time.
|
|
258
317
|
Minimum field: `title`
|
|
259
318
|
Usually useful: `description`, `horizon`, `status`
|
|
260
|
-
|
|
319
|
+
Only ask if missing or unclear:
|
|
261
320
|
|
|
262
321
|
1. What should this goal be called?
|
|
263
322
|
2. Why does it matter to you?
|
|
@@ -267,7 +326,7 @@ Ask:
|
|
|
267
326
|
Use for a bounded workstream under a goal.
|
|
268
327
|
Minimum field: `title`
|
|
269
328
|
Usually useful: `goalId`, `description`, `status`
|
|
270
|
-
|
|
329
|
+
Only ask if missing or unclear:
|
|
271
330
|
|
|
272
331
|
1. What should this project be called?
|
|
273
332
|
2. Which goal does it support?
|
|
@@ -277,7 +336,7 @@ Ask:
|
|
|
277
336
|
Use for one concrete action or deliverable.
|
|
278
337
|
Minimum field: `title`
|
|
279
338
|
Usually useful: `projectId`, `goalId`, `priority`, `dueDate`, `status`, `owner`
|
|
280
|
-
|
|
339
|
+
Only ask if missing or unclear:
|
|
281
340
|
|
|
282
341
|
1. What is the task in one concrete sentence?
|
|
283
342
|
2. Should it live under an existing goal or project?
|
|
@@ -294,7 +353,7 @@ CRITICAL NEGATIVE-HABIT CHECK-IN RULE:
|
|
|
294
353
|
- Do not treat `missed` on a `negative` habit as failure. In this case, `missed` is the successful outcome.
|
|
295
354
|
- In OpenClaw, official habit outcome logging should go through `forge_update_entities` on `entityType: "habit"` with `patch: { checkIn: { status, dateKey?, note?, description? } }`.
|
|
296
355
|
- Do not bypass the shared tool model with raw habit routes when the batch entity update already covers the write cleanly.
|
|
297
|
-
|
|
356
|
+
Only ask if missing or unclear:
|
|
298
357
|
|
|
299
358
|
1. What is the recurring behavior in one concrete sentence?
|
|
300
359
|
2. Is doing it good (`positive`) or a slip (`negative`)?
|
|
@@ -309,7 +368,7 @@ Ask only what is needed to start the run, such as the task, the actor, and wheth
|
|
|
309
368
|
Use for a value or committed direction.
|
|
310
369
|
Minimum field: `title`
|
|
311
370
|
Usually useful: `description`, `valuedDirection`, `whyItMatters`, links to goals, projects, or tasks
|
|
312
|
-
|
|
371
|
+
Only ask if missing or unclear:
|
|
313
372
|
|
|
314
373
|
1. What feels deeply important here, and what would you call that value or direction?
|
|
315
374
|
2. If you were living it a little more this week, what would someone actually see?
|
|
@@ -319,7 +378,7 @@ Ask:
|
|
|
319
378
|
Use for a recurring loop across situations.
|
|
320
379
|
Minimum field: `title`
|
|
321
380
|
Usually useful: `description`, `targetBehavior`, `cueContexts`, `shortTermPayoff`, `longTermCost`, `preferredResponse`
|
|
322
|
-
|
|
381
|
+
Only ask if missing or unclear:
|
|
323
382
|
|
|
324
383
|
1. Can we slow this down using one recent example first?
|
|
325
384
|
2. What usually sets the loop off, and what tends to happen in thoughts, feelings, body, and actions next?
|
|
@@ -329,7 +388,7 @@ Ask:
|
|
|
329
388
|
Use for one recurring move or action tendency.
|
|
330
389
|
Minimum fields: `kind`, `title`
|
|
331
390
|
Usually useful: `commonCues`, `urgeStory`, `shortTermPayoff`, `longTermCost`, `replacementMove`, `repairPlan`
|
|
332
|
-
|
|
391
|
+
Only ask if missing or unclear:
|
|
333
392
|
|
|
334
393
|
1. What does this behavior actually look like in plain language?
|
|
335
394
|
2. What cues or urges usually pull you toward it, and what does it do for you in the moment?
|
|
@@ -339,7 +398,7 @@ Ask:
|
|
|
339
398
|
Use for one explicit belief sentence.
|
|
340
399
|
Minimum fields: `statement`, `beliefType`
|
|
341
400
|
Usually useful: `confidence`, `evidenceFor`, `evidenceAgainst`, `flexibleAlternative`, `originNote`
|
|
342
|
-
|
|
401
|
+
Only ask if missing or unclear:
|
|
343
402
|
|
|
344
403
|
1. If we turn that reaction into one sentence, what does the belief sound like in your own words?
|
|
345
404
|
2. Is it `absolute` or `conditional`, and how true does it feel from 0 to 100?
|
|
@@ -349,7 +408,7 @@ Ask:
|
|
|
349
408
|
Use for a recurring part-state or inner role.
|
|
350
409
|
Minimum fields: `family`, `title`
|
|
351
410
|
Usually useful: `fear`, `burden`, `protectiveJob`, `originContext`, links to patterns, behaviors, and values
|
|
352
|
-
|
|
411
|
+
Only ask if missing or unclear:
|
|
353
412
|
|
|
354
413
|
1. When this part shows up, what is it like from the inside and what should it be called?
|
|
355
414
|
2. What kind of mode is this: `coping`, `child`, `critic_parent`, `healthy_adult`, or `happy_child`?
|
|
@@ -358,7 +417,7 @@ Ask:
|
|
|
358
417
|
`mode_guide_session`
|
|
359
418
|
Use for guided exploration before or alongside a durable mode profile.
|
|
360
419
|
Minimum fields: `summary`, `answers`
|
|
361
|
-
|
|
420
|
+
Only ask if missing or unclear:
|
|
362
421
|
|
|
363
422
|
1. What just happened that brought this part online right now?
|
|
364
423
|
2. If it had a voice, what would it say, fear, or need?
|
|
@@ -368,7 +427,7 @@ Ask:
|
|
|
368
427
|
Use for one specific emotionally important episode.
|
|
369
428
|
Minimum field: `title`
|
|
370
429
|
Usually useful: `eventSituation`, `occurredAt`, `emotions`, `thoughts`, `behaviors`, `consequences`, `nextMoves`, links to values, beliefs, patterns, modes, goals, projects, or tasks
|
|
371
|
-
|
|
430
|
+
Only ask if missing or unclear:
|
|
372
431
|
|
|
373
432
|
1. What happened, as concretely as you can say it?
|
|
374
433
|
2. What emotions were present, how intense were they, and what thoughts or meanings showed up?
|
|
@@ -378,7 +437,7 @@ Ask:
|
|
|
378
437
|
Use for a reusable trigger category.
|
|
379
438
|
Minimum field: `label`
|
|
380
439
|
Usually useful: `description`
|
|
381
|
-
|
|
440
|
+
Only ask if missing or unclear:
|
|
382
441
|
|
|
383
442
|
1. What kind of repeated moment or incident do you want future reports to name the same way?
|
|
384
443
|
2. What would count as inside this category, and what should stay outside it?
|
|
@@ -388,7 +447,7 @@ Ask:
|
|
|
388
447
|
Use for a reusable emotion vocabulary entry.
|
|
389
448
|
Minimum field: `label`
|
|
390
449
|
Usually useful: `description`, `category`
|
|
391
|
-
|
|
450
|
+
Only ask if missing or unclear:
|
|
392
451
|
|
|
393
452
|
1. When this feeling is present, what tells you it is this feeling and not a nearby one?
|
|
394
453
|
2. What would you want a later trigger report to mean when it uses this label?
|
|
@@ -628,6 +687,8 @@ When the user asks which Forge tools are available, list exactly these tools:
|
|
|
628
687
|
`forge_get_operator_overview`
|
|
629
688
|
`forge_get_operator_context`
|
|
630
689
|
`forge_get_agent_onboarding`
|
|
690
|
+
`forge_get_doctor`
|
|
691
|
+
`forge_apply_doctor_fix`
|
|
631
692
|
`forge_call_movement_route`
|
|
632
693
|
`forge_call_life_force_route`
|
|
633
694
|
`forge_call_workbench_route`
|