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
@@ -1998,7 +1998,7 @@ export function buildOpenApiDocument() {
1998
1998
  },
1999
1999
  themePreference: {
2000
2000
  type: "string",
2001
- enum: ["obsidian", "solar", "aurora", "ember", "custom", "system"]
2001
+ enum: ["obsidian", "solar", "aurora", "ember", "paper", "dawn", "atelier", "custom", "system"]
2002
2002
  },
2003
2003
  customTheme: nullable({
2004
2004
  type: "object",
@@ -2515,7 +2515,7 @@ export function buildOpenApiDocument() {
2515
2515
  execution: { $ref: "#/components/schemas/ExecutionSettings" },
2516
2516
  themePreference: {
2517
2517
  type: "string",
2518
- enum: ["obsidian", "solar", "aurora", "ember", "custom", "system"]
2518
+ enum: ["obsidian", "solar", "aurora", "ember", "paper", "dawn", "atelier", "custom", "system"]
2519
2519
  },
2520
2520
  customTheme: nullable({
2521
2521
  type: "object",
@@ -2591,9 +2591,15 @@ export function buildOpenApiDocument() {
2591
2591
  "conceptModel",
2592
2592
  "psycheSubmoduleModel",
2593
2593
  "psycheCoachingPlaybooks",
2594
+ "conversationRules",
2595
+ "entityConversationPlaybooks",
2594
2596
  "relationshipModel",
2597
+ "entityRouteModel",
2598
+ "multiUserModel",
2599
+ "strategyContractModel",
2595
2600
  "entityCatalog",
2596
2601
  "toolInputCatalog",
2602
+ "connectionGuides",
2597
2603
  "verificationPaths",
2598
2604
  "recommendedPluginTools",
2599
2605
  "interactionGuidance",
@@ -2690,6 +2696,12 @@ export function buildOpenApiDocument() {
2690
2696
  "task",
2691
2697
  "taskRun",
2692
2698
  "note",
2699
+ "wiki",
2700
+ "sleepSession",
2701
+ "workoutSession",
2702
+ "preferences",
2703
+ "questionnaire",
2704
+ "selfObservation",
2693
2705
  "insight",
2694
2706
  "calendar",
2695
2707
  "workBlock",
@@ -2702,6 +2714,12 @@ export function buildOpenApiDocument() {
2702
2714
  task: { type: "string" },
2703
2715
  taskRun: { type: "string" },
2704
2716
  note: { type: "string" },
2717
+ wiki: { type: "string" },
2718
+ sleepSession: { type: "string" },
2719
+ workoutSession: { type: "string" },
2720
+ preferences: { type: "string" },
2721
+ questionnaire: { type: "string" },
2722
+ selfObservation: { type: "string" },
2705
2723
  insight: { type: "string" },
2706
2724
  calendar: { type: "string" },
2707
2725
  workBlock: { type: "string" },
@@ -2761,24 +2779,130 @@ export function buildOpenApiDocument() {
2761
2779
  notes: arrayOf({ type: "string" })
2762
2780
  }
2763
2781
  }),
2782
+ conversationRules: arrayOf({ type: "string" }),
2783
+ entityConversationPlaybooks: arrayOf({
2784
+ type: "object",
2785
+ additionalProperties: false,
2786
+ required: ["focus", "openingQuestion", "coachingGoal", "askSequence"],
2787
+ properties: {
2788
+ focus: { type: "string" },
2789
+ openingQuestion: { type: "string" },
2790
+ coachingGoal: { type: "string" },
2791
+ askSequence: arrayOf({ type: "string" })
2792
+ }
2793
+ }),
2764
2794
  relationshipModel: arrayOf({ type: "string" }),
2795
+ entityRouteModel: {
2796
+ type: "object",
2797
+ additionalProperties: false,
2798
+ required: [
2799
+ "batchCrudEntities",
2800
+ "batchRoutes",
2801
+ "specializedCrudEntities",
2802
+ "actionEntities",
2803
+ "readModelOnlySurfaces"
2804
+ ],
2805
+ properties: {
2806
+ batchCrudEntities: arrayOf({ type: "string" }),
2807
+ batchRoutes: {
2808
+ type: "object",
2809
+ additionalProperties: false,
2810
+ required: ["search", "create", "update", "delete", "restore"],
2811
+ properties: {
2812
+ search: { type: "string" },
2813
+ create: { type: "string" },
2814
+ update: { type: "string" },
2815
+ delete: { type: "string" },
2816
+ restore: { type: "string" }
2817
+ }
2818
+ },
2819
+ specializedCrudEntities: {
2820
+ type: "object",
2821
+ additionalProperties: {
2822
+ type: "object",
2823
+ additionalProperties: { type: "string" }
2824
+ }
2825
+ },
2826
+ actionEntities: {
2827
+ type: "object",
2828
+ additionalProperties: {
2829
+ type: "object",
2830
+ additionalProperties: true
2831
+ }
2832
+ },
2833
+ readModelOnlySurfaces: {
2834
+ type: "object",
2835
+ additionalProperties: { type: "string" }
2836
+ }
2837
+ }
2838
+ },
2839
+ multiUserModel: {
2840
+ type: "object",
2841
+ additionalProperties: false,
2842
+ required: [
2843
+ "summary",
2844
+ "defaultUserScopeBehavior",
2845
+ "routeScoping",
2846
+ "relationshipGraphDefaults"
2847
+ ],
2848
+ properties: {
2849
+ summary: { type: "string" },
2850
+ defaultUserScopeBehavior: { type: "string" },
2851
+ routeScoping: arrayOf({ type: "string" }),
2852
+ relationshipGraphDefaults: arrayOf({ type: "string" })
2853
+ }
2854
+ },
2855
+ strategyContractModel: {
2856
+ type: "object",
2857
+ additionalProperties: false,
2858
+ required: [
2859
+ "draftSummary",
2860
+ "lockSummary",
2861
+ "unlockSummary",
2862
+ "alignmentSummary",
2863
+ "metricBreakdown"
2864
+ ],
2865
+ properties: {
2866
+ draftSummary: { type: "string" },
2867
+ lockSummary: { type: "string" },
2868
+ unlockSummary: { type: "string" },
2869
+ alignmentSummary: { type: "string" },
2870
+ metricBreakdown: arrayOf({ type: "string" })
2871
+ }
2872
+ },
2765
2873
  entityCatalog: arrayOf({
2766
2874
  type: "object",
2767
2875
  additionalProperties: false,
2768
2876
  required: [
2769
2877
  "entityType",
2878
+ "classification",
2770
2879
  "purpose",
2771
2880
  "minimumCreateFields",
2772
2881
  "relationshipRules",
2773
2882
  "searchHints",
2774
- "fieldGuide"
2883
+ "fieldGuide",
2884
+ "preferredMutationPath"
2775
2885
  ],
2776
2886
  properties: {
2777
2887
  entityType: { type: "string" },
2888
+ classification: {
2889
+ type: "string",
2890
+ enum: [
2891
+ "batch_crud_entity",
2892
+ "specialized_crud_entity",
2893
+ "action_workflow_entity",
2894
+ "read_model_only_surface"
2895
+ ]
2896
+ },
2778
2897
  purpose: { type: "string" },
2779
2898
  minimumCreateFields: arrayOf({ type: "string" }),
2780
2899
  relationshipRules: arrayOf({ type: "string" }),
2781
2900
  searchHints: arrayOf({ type: "string" }),
2901
+ routeBase: nullable({ type: "string" }),
2902
+ preferredMutationPath: { type: "string" },
2903
+ preferredReadPath: nullable({ type: "string" }),
2904
+ preferredMutationTool: nullable({ type: "string" }),
2905
+ examples: arrayOf({ type: "string" }),
2782
2906
  fieldGuide: arrayOf({
2783
2907
  type: "object",
2784
2908
  additionalProperties: false,
@@ -2831,6 +2955,11 @@ export function buildOpenApiDocument() {
2831
2955
  "context",
2832
2956
  "xpMetrics",
2833
2957
  "weeklyReview",
2958
+ "sleepOverview",
2959
+ "sportsOverview",
2960
+ "wikiSettings",
2961
+ "wikiSearch",
2962
+ "wikiHealth",
2834
2963
  "calendarOverview",
2835
2964
  "settingsBin",
2836
2965
  "batchSearch",
@@ -2842,6 +2971,11 @@ export function buildOpenApiDocument() {
2842
2971
  context: { type: "string" },
2843
2972
  xpMetrics: { type: "string" },
2844
2973
  weeklyReview: { type: "string" },
2974
+ sleepOverview: { type: "string" },
2975
+ sportsOverview: { type: "string" },
2976
+ wikiSettings: { type: "string" },
2977
+ wikiSearch: { type: "string" },
2978
+ wikiHealth: { type: "string" },
2845
2979
  calendarOverview: { type: "string" },
2846
2980
  settingsBin: { type: "string" },
2847
2981
  batchSearch: { type: "string" },
@@ -2858,6 +2992,9 @@ export function buildOpenApiDocument() {
2858
2992
  "readModels",
2859
2993
  "uiWorkflow",
2860
2994
  "entityWorkflow",
2995
+ "wikiWorkflow",
2996
+ "healthWorkflow",
2997
+ "rewardWorkflow",
2861
2998
  "workWorkflow",
2862
2999
  "calendarWorkflow",
2863
3000
  "insightWorkflow"
@@ -2867,6 +3004,9 @@ export function buildOpenApiDocument() {
2867
3004
  readModels: arrayOf({ type: "string" }),
2868
3005
  uiWorkflow: arrayOf({ type: "string" }),
2869
3006
  entityWorkflow: arrayOf({ type: "string" }),
3007
+ wikiWorkflow: arrayOf({ type: "string" }),
3008
+ healthWorkflow: arrayOf({ type: "string" }),
3009
+ rewardWorkflow: arrayOf({ type: "string" }),
2870
3010
  workWorkflow: arrayOf({ type: "string" }),
2871
3011
  calendarWorkflow: arrayOf({ type: "string" }),
2872
3012
  insightWorkflow: arrayOf({ type: "string" })
@@ -2880,6 +3020,8 @@ export function buildOpenApiDocument() {
2880
3020
  "saveSuggestionPlacement",
2881
3021
  "saveSuggestionTone",
2882
3022
  "maxQuestionsPerTurn",
3023
+ "psycheExplorationRule",
3024
+ "psycheOpeningQuestionRule",
2883
3025
  "duplicateCheckRoute",
2884
3026
  "uiSuggestionRule",
2885
3027
  "browserFallbackRule",
@@ -2890,12 +3032,28 @@ export function buildOpenApiDocument() {
2890
3032
  saveSuggestionPlacement: { type: "string" },
2891
3033
  saveSuggestionTone: { type: "string" },
2892
3034
  maxQuestionsPerTurn: { type: "integer" },
3035
+ psycheExplorationRule: { type: "string" },
3036
+ psycheOpeningQuestionRule: { type: "string" },
2893
3037
  duplicateCheckRoute: { type: "string" },
2894
3038
  uiSuggestionRule: { type: "string" },
2895
3039
  browserFallbackRule: { type: "string" },
2896
3040
  writeConsentRule: { type: "string" }
2897
3041
  }
2898
3042
  },
3043
+ connectionGuides: {
3044
+ type: "object",
3045
+ additionalProperties: {
3046
+ type: "object",
3047
+ additionalProperties: false,
3048
+ required: ["label", "installSteps", "verifyCommands", "configNotes"],
3049
+ properties: {
3050
+ label: { type: "string" },
3051
+ installSteps: arrayOf({ type: "string" }),
3052
+ verifyCommands: arrayOf({ type: "string" }),
3053
+ configNotes: arrayOf({ type: "string" })
3054
+ }
3055
+ }
3056
+ },
2899
3057
  mutationGuidance: {
2900
3058
  type: "object",
2901
3059
  additionalProperties: false,
@@ -3843,6 +4001,19 @@ export function buildOpenApiDocument() {
3843
4001
  }
3844
4002
  }, "Sleep overview")
3845
4003
  }
4004
+ },
4005
+ post: {
4006
+ summary: "Create one manual sleep session",
4007
+ responses: {
4008
+ "201": jsonResponse({
4009
+ type: "object",
4010
+ required: ["sleep"],
4011
+ properties: {
4012
+ sleep: { $ref: "#/components/schemas/SleepSession" }
4013
+ }
4014
+ }, "Created sleep session"),
4015
+ default: { $ref: "#/components/responses/Error" }
4016
+ }
3846
4017
  }
3847
4018
  },
3848
4019
  "/api/v1/health/fitness": {
@@ -3859,7 +4030,35 @@ export function buildOpenApiDocument() {
3859
4030
  }
3860
4031
  }
3861
4032
  },
4033
+ "/api/v1/health/workouts": {
4034
+ post: {
4035
+ summary: "Create one manual workout session",
4036
+ responses: {
4037
+ "201": jsonResponse({
4038
+ type: "object",
4039
+ required: ["workout"],
4040
+ properties: {
4041
+ workout: { $ref: "#/components/schemas/WorkoutSession" }
4042
+ }
4043
+ }, "Created workout session"),
4044
+ default: { $ref: "#/components/responses/Error" }
4045
+ }
4046
+ }
4047
+ },
3862
4048
  "/api/v1/health/workouts/{id}": {
4049
+ get: {
4050
+ summary: "Read one workout session",
4051
+ responses: {
4052
+ "200": jsonResponse({
4053
+ type: "object",
4054
+ required: ["workout"],
4055
+ properties: {
4056
+ workout: { $ref: "#/components/schemas/WorkoutSession" }
4057
+ }
4058
+ }, "Workout session"),
4059
+ "404": { $ref: "#/components/responses/Error" }
4060
+ }
4061
+ },
3863
4062
  patch: {
3864
4063
  summary: "Update one workout session's reflective metadata",
3865
4064
  responses: {
@@ -3872,9 +4071,35 @@ export function buildOpenApiDocument() {
3872
4071
  }, "Updated workout session"),
3873
4072
  "404": { $ref: "#/components/responses/Error" }
3874
4073
  }
4074
+ },
4075
+ delete: {
4076
+ summary: "Delete one workout session immediately",
4077
+ responses: {
4078
+ "200": jsonResponse({
4079
+ type: "object",
4080
+ required: ["workout"],
4081
+ properties: {
4082
+ workout: { $ref: "#/components/schemas/WorkoutSession" }
4083
+ }
4084
+ }, "Deleted workout session"),
4085
+ "404": { $ref: "#/components/responses/Error" }
4086
+ }
3875
4087
  }
3876
4088
  },
3877
4089
  "/api/v1/health/sleep/{id}": {
4090
+ get: {
4091
+ summary: "Read one sleep session",
4092
+ responses: {
4093
+ "200": jsonResponse({
4094
+ type: "object",
4095
+ required: ["sleep"],
4096
+ properties: {
4097
+ sleep: { $ref: "#/components/schemas/SleepSession" }
4098
+ }
4099
+ }, "Sleep session"),
4100
+ "404": { $ref: "#/components/responses/Error" }
4101
+ }
4102
+ },
3878
4103
  patch: {
3879
4104
  summary: "Update one sleep session's reflective metadata",
3880
4105
  responses: {
@@ -3887,6 +4112,19 @@ export function buildOpenApiDocument() {
3887
4112
  }, "Updated sleep session"),
3888
4113
  "404": { $ref: "#/components/responses/Error" }
3889
4114
  }
4115
+ },
4116
+ delete: {
4117
+ summary: "Delete one sleep session immediately",
4118
+ responses: {
4119
+ "200": jsonResponse({
4120
+ type: "object",
4121
+ required: ["sleep"],
4122
+ properties: {
4123
+ sleep: { $ref: "#/components/schemas/SleepSession" }
4124
+ }
4125
+ }, "Deleted sleep session"),
4126
+ "404": { $ref: "#/components/responses/Error" }
4127
+ }
3890
4128
  }
3891
4129
  },
3892
4130
  "/api/v1/wiki/settings": {
@@ -4107,6 +4345,22 @@ export function buildOpenApiDocument() {
4107
4345
  }
4108
4346
  },
4109
4347
  "/api/v1/preferences/catalogs": {
4348
+ get: {
4349
+ summary: "List Preferences concept lists",
4350
+ responses: {
4351
+ "200": jsonResponse({
4352
+ type: "object",
4353
+ required: ["catalogs"],
4354
+ properties: {
4355
+ catalogs: arrayOf({
4356
+ type: "object",
4357
+ additionalProperties: true
4358
+ })
4359
+ }
4360
+ }, "Preferences catalogs"),
4361
+ default: { $ref: "#/components/responses/Error" }
4362
+ }
4363
+ },
4110
4364
  post: {
4111
4365
  summary: "Create a Preferences concept list",
4112
4366
  responses: {
@@ -4125,6 +4379,22 @@ export function buildOpenApiDocument() {
4125
4379
  }
4126
4380
  },
4127
4381
  "/api/v1/preferences/catalogs/{id}": {
4382
+ get: {
4383
+ summary: "Get one Preferences concept list",
4384
+ responses: {
4385
+ "200": jsonResponse({
4386
+ type: "object",
4387
+ required: ["catalog"],
4388
+ properties: {
4389
+ catalog: {
4390
+ type: "object",
4391
+ additionalProperties: true
4392
+ }
4393
+ }
4394
+ }, "Preferences catalog"),
4395
+ default: { $ref: "#/components/responses/Error" }
4396
+ }
4397
+ },
4128
4398
  patch: {
4129
4399
  summary: "Update a Preferences concept list",
4130
4400
  responses: {
@@ -4159,6 +4429,22 @@ export function buildOpenApiDocument() {
4159
4429
  }
4160
4430
  },
4161
4431
  "/api/v1/preferences/catalog-items": {
4432
+ get: {
4433
+ summary: "List Preferences concept entries",
4434
+ responses: {
4435
+ "200": jsonResponse({
4436
+ type: "object",
4437
+ required: ["items"],
4438
+ properties: {
4439
+ items: arrayOf({
4440
+ type: "object",
4441
+ additionalProperties: true
4442
+ })
4443
+ }
4444
+ }, "Preferences catalog items"),
4445
+ default: { $ref: "#/components/responses/Error" }
4446
+ }
4447
+ },
4162
4448
  post: {
4163
4449
  summary: "Create a Preferences concept entry",
4164
4450
  responses: {
@@ -4177,6 +4463,22 @@ export function buildOpenApiDocument() {
4177
4463
  }
4178
4464
  },
4179
4465
  "/api/v1/preferences/catalog-items/{id}": {
4466
+ get: {
4467
+ summary: "Get one Preferences concept entry",
4468
+ responses: {
4469
+ "200": jsonResponse({
4470
+ type: "object",
4471
+ required: ["item"],
4472
+ properties: {
4473
+ item: {
4474
+ type: "object",
4475
+ additionalProperties: true
4476
+ }
4477
+ }
4478
+ }, "Preferences catalog item"),
4479
+ default: { $ref: "#/components/responses/Error" }
4480
+ }
4481
+ },
4180
4482
  patch: {
4181
4483
  summary: "Update a Preferences concept entry",
4182
4484
  responses: {
@@ -4211,6 +4513,22 @@ export function buildOpenApiDocument() {
4211
4513
  }
4212
4514
  },
4213
4515
  "/api/v1/preferences/contexts": {
4516
+ get: {
4517
+ summary: "List Preferences contexts",
4518
+ responses: {
4519
+ "200": jsonResponse({
4520
+ type: "object",
4521
+ required: ["contexts"],
4522
+ properties: {
4523
+ contexts: arrayOf({
4524
+ type: "object",
4525
+ additionalProperties: true
4526
+ })
4527
+ }
4528
+ }, "Preferences contexts"),
4529
+ default: { $ref: "#/components/responses/Error" }
4530
+ }
4531
+ },
4214
4532
  post: {
4215
4533
  summary: "Create a Preferences context",
4216
4534
  responses: {
@@ -4229,6 +4547,22 @@ export function buildOpenApiDocument() {
4229
4547
  }
4230
4548
  },
4231
4549
  "/api/v1/preferences/contexts/{id}": {
4550
+ get: {
4551
+ summary: "Get one Preferences context",
4552
+ responses: {
4553
+ "200": jsonResponse({
4554
+ type: "object",
4555
+ required: ["context"],
4556
+ properties: {
4557
+ context: {
4558
+ type: "object",
4559
+ additionalProperties: true
4560
+ }
4561
+ }
4562
+ }, "Preferences context"),
4563
+ default: { $ref: "#/components/responses/Error" }
4564
+ }
4565
+ },
4232
4566
  patch: {
4233
4567
  summary: "Update a Preferences context",
4234
4568
  responses: {
@@ -4244,6 +4578,22 @@ export function buildOpenApiDocument() {
4244
4578
  }, "Updated Preferences context"),
4245
4579
  default: { $ref: "#/components/responses/Error" }
4246
4580
  }
4581
+ },
4582
+ delete: {
4583
+ summary: "Delete a Preferences context",
4584
+ responses: {
4585
+ "200": jsonResponse({
4586
+ type: "object",
4587
+ required: ["context"],
4588
+ properties: {
4589
+ context: {
4590
+ type: "object",
4591
+ additionalProperties: true
4592
+ }
4593
+ }
4594
+ }, "Deleted Preferences context"),
4595
+ default: { $ref: "#/components/responses/Error" }
4596
+ }
4247
4597
  }
4248
4598
  },
4249
4599
  "/api/v1/preferences/contexts/merge": {
@@ -4265,6 +4615,22 @@ export function buildOpenApiDocument() {
4265
4615
  }
4266
4616
  },
4267
4617
  "/api/v1/preferences/items": {
4618
+ get: {
4619
+ summary: "List Preferences items",
4620
+ responses: {
4621
+ "200": jsonResponse({
4622
+ type: "object",
4623
+ required: ["items"],
4624
+ properties: {
4625
+ items: arrayOf({
4626
+ type: "object",
4627
+ additionalProperties: true
4628
+ })
4629
+ }
4630
+ }, "Preferences items"),
4631
+ default: { $ref: "#/components/responses/Error" }
4632
+ }
4633
+ },
4268
4634
  post: {
4269
4635
  summary: "Create a standalone Preferences item",
4270
4636
  responses: {
@@ -4283,6 +4649,22 @@ export function buildOpenApiDocument() {
4283
4649
  }
4284
4650
  },
4285
4651
  "/api/v1/preferences/items/{id}": {
4652
+ get: {
4653
+ summary: "Get one Preferences item",
4654
+ responses: {
4655
+ "200": jsonResponse({
4656
+ type: "object",
4657
+ required: ["item"],
4658
+ properties: {
4659
+ item: {
4660
+ type: "object",
4661
+ additionalProperties: true
4662
+ }
4663
+ }
4664
+ }, "Preferences item"),
4665
+ default: { $ref: "#/components/responses/Error" }
4666
+ }
4667
+ },
4286
4668
  patch: {
4287
4669
  summary: "Update a Preferences item",
4288
4670
  responses: {
@@ -4298,6 +4680,22 @@ export function buildOpenApiDocument() {
4298
4680
  }, "Updated Preferences item"),
4299
4681
  default: { $ref: "#/components/responses/Error" }
4300
4682
  }
4683
+ },
4684
+ delete: {
4685
+ summary: "Delete a Preferences item",
4686
+ responses: {
4687
+ "200": jsonResponse({
4688
+ type: "object",
4689
+ required: ["item"],
4690
+ properties: {
4691
+ item: {
4692
+ type: "object",
4693
+ additionalProperties: true
4694
+ }
4695
+ }
4696
+ }, "Deleted Preferences item"),
4697
+ default: { $ref: "#/components/responses/Error" }
4698
+ }
4301
4699
  }
4302
4700
  },
4303
4701
  "/api/v1/preferences/items/from-entity": {
@@ -4422,6 +4820,38 @@ export function buildOpenApiDocument() {
4422
4820
  }, "Questionnaire instrument detail"),
4423
4821
  default: { $ref: "#/components/responses/Error" }
4424
4822
  }
4823
+ },
4824
+ patch: {
4825
+ summary: "Update one questionnaire instrument through the direct route",
4826
+ responses: {
4827
+ "200": jsonResponse({
4828
+ type: "object",
4829
+ required: ["instrument"],
4830
+ properties: {
4831
+ instrument: {
4832
+ type: "object",
4833
+ additionalProperties: true
4834
+ }
4835
+ }
4836
+ }, "Updated questionnaire instrument"),
4837
+ default: { $ref: "#/components/responses/Error" }
4838
+ }
4839
+ },
4840
+ delete: {
4841
+ summary: "Archive one questionnaire instrument through the direct route",
4842
+ responses: {
4843
+ "200": jsonResponse({
4844
+ type: "object",
4845
+ required: ["instrument"],
4846
+ properties: {
4847
+ instrument: {
4848
+ type: "object",
4849
+ additionalProperties: true
4850
+ }
4851
+ }
4852
+ }, "Archived questionnaire instrument"),
4853
+ default: { $ref: "#/components/responses/Error" }
4854
+ }
4425
4855
  }
4426
4856
  },
4427
4857
  "/api/v1/psyche/questionnaires/{id}/clone": {
@@ -5611,6 +6041,21 @@ export function buildOpenApiDocument() {
5611
6041
  }
5612
6042
  }
5613
6043
  },
6044
+ "/api/v1/calendar/work-block-templates/{id}": {
6045
+ get: {
6046
+ summary: "Get one recurring work-block template",
6047
+ responses: {
6048
+ "200": jsonResponse({
6049
+ type: "object",
6050
+ required: ["template"],
6051
+ properties: {
6052
+ template: { $ref: "#/components/schemas/WorkBlockTemplate" }
6053
+ }
6054
+ }, "Work-block template"),
6055
+ default: { $ref: "#/components/responses/Error" }
6056
+ }
6057
+ }
6058
+ },
5614
6059
  "/api/v1/calendar/timeboxes": {
5615
6060
  get: {
5616
6061
  summary: "List task timeboxes",
@@ -5641,6 +6086,21 @@ export function buildOpenApiDocument() {
5641
6086
  }
5642
6087
  }
5643
6088
  },
6089
+ "/api/v1/calendar/timeboxes/{id}": {
6090
+ get: {
6091
+ summary: "Get one task timebox",
6092
+ responses: {
6093
+ "200": jsonResponse({
6094
+ type: "object",
6095
+ required: ["timebox"],
6096
+ properties: {
6097
+ timebox: { $ref: "#/components/schemas/TaskTimebox" }
6098
+ }
6099
+ }, "Task timebox"),
6100
+ default: { $ref: "#/components/responses/Error" }
6101
+ }
6102
+ }
6103
+ },
5644
6104
  "/api/v1/calendar/timeboxes/recommend": {
5645
6105
  post: {
5646
6106
  summary: "Suggest future timeboxes for a task",
@@ -5660,6 +6120,21 @@ export function buildOpenApiDocument() {
5660
6120
  }
5661
6121
  },
5662
6122
  "/api/v1/calendar/events": {
6123
+ get: {
6124
+ summary: "List native and mirrored calendar events for a range",
6125
+ responses: {
6126
+ "200": jsonResponse({
6127
+ type: "object",
6128
+ required: ["events"],
6129
+ properties: {
6130
+ events: arrayOf({
6131
+ $ref: "#/components/schemas/CalendarEvent"
6132
+ })
6133
+ }
6134
+ }, "Calendar events"),
6135
+ default: { $ref: "#/components/responses/Error" }
6136
+ }
6137
+ },
5663
6138
  post: {
5664
6139
  summary: "Create a native Forge calendar event",
5665
6140
  description: "Forge stores the event canonically first, then projects it to a connected writable calendar when a preferred calendar is selected.",
@@ -5676,6 +6151,19 @@ export function buildOpenApiDocument() {
5676
6151
  }
5677
6152
  },
5678
6153
  "/api/v1/calendar/events/{id}": {
6154
+ get: {
6155
+ summary: "Get one Forge calendar event",
6156
+ responses: {
6157
+ "200": jsonResponse({
6158
+ type: "object",
6159
+ required: ["event"],
6160
+ properties: {
6161
+ event: { $ref: "#/components/schemas/CalendarEvent" }
6162
+ }
6163
+ }, "Calendar event"),
6164
+ default: { $ref: "#/components/responses/Error" }
6165
+ }
6166
+ },
5679
6167
  patch: {
5680
6168
  summary: "Update a Forge calendar event and sync remote projections",
5681
6169
  responses: {