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
@@ -0,0 +1,147 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import { buildSleepWorkbenchExecution, buildSportsWorkbenchExecution } from "../../../lib/workbench/runtime.js";
3
+ import { createContextOutput, createSummaryOutput } from "../../../lib/workbench/contracts.js";
4
+ import { createGenericWorkbenchNodeView } from "../shared/generic-node-view.js";
5
+ import { defineWorkbenchBox } from "../shared/define-workbench-box.js";
6
+ function Slot({ children }) {
7
+ return _jsx(_Fragment, { children: children });
8
+ }
9
+ function defineHealthBox(input) {
10
+ return defineWorkbenchBox(Slot, {
11
+ id: input.id,
12
+ surfaceId: input.surfaceId,
13
+ routePath: input.routePath,
14
+ title: input.title,
15
+ icon: input.surfaceId,
16
+ description: input.description,
17
+ category: input.category,
18
+ tags: input.tags,
19
+ inputs: [],
20
+ params: [],
21
+ output: input.output,
22
+ tools: [],
23
+ NodeView: createGenericWorkbenchNodeView({
24
+ title: input.title,
25
+ description: input.description,
26
+ inputs: [],
27
+ params: [],
28
+ output: input.output,
29
+ tools: []
30
+ }),
31
+ execute: input.execute
32
+ });
33
+ }
34
+ export const SleepSummaryBox = defineHealthBox({
35
+ id: "surface:sleep-index:summary",
36
+ surfaceId: "sleep-index",
37
+ routePath: "/sleep",
38
+ title: "Sleep summary",
39
+ description: "Recent nightly sleep metrics and recovery posture.",
40
+ category: "Sleep",
41
+ tags: ["sleep", "summary"],
42
+ execute: (input) => buildSleepWorkbenchExecution(input),
43
+ output: [
44
+ createSummaryOutput({ label: "Sleep summary", description: "Summary of recent sleep and recovery posture." }),
45
+ createContextOutput({
46
+ key: "sleepView",
47
+ label: "Sleep view",
48
+ description: "Structured sleep history and derived sleep patterns.",
49
+ modelName: "ForgeSleepView"
50
+ })
51
+ ]
52
+ });
53
+ export const SleepPatternsBox = defineHealthBox({
54
+ id: "surface:sleep-index:patterns",
55
+ surfaceId: "sleep-index",
56
+ routePath: "/sleep",
57
+ title: "Sleep patterns",
58
+ description: "Trend, stage averages, recovery state, and timing patterns.",
59
+ category: "Sleep",
60
+ tags: ["sleep", "patterns"],
61
+ execute: (input) => buildSleepWorkbenchExecution(input),
62
+ output: [
63
+ createSummaryOutput({ label: "Sleep pattern summary", description: "Summary of trend, stage averages, and recovery state." }),
64
+ createContextOutput({
65
+ key: "sleepView",
66
+ label: "Sleep view",
67
+ description: "Structured sleep trend, stage averages, and recovery signals.",
68
+ modelName: "ForgeSleepView"
69
+ })
70
+ ]
71
+ });
72
+ export const SleepBrowserBox = defineHealthBox({
73
+ id: "surface:sleep-index:browser",
74
+ surfaceId: "sleep-index",
75
+ routePath: "/sleep",
76
+ title: "Night browser",
77
+ description: "Searchable and virtualized sleep history browser.",
78
+ category: "Sleep",
79
+ tags: ["sleep", "browser", "history"],
80
+ execute: (input) => buildSleepWorkbenchExecution(input),
81
+ output: [
82
+ createSummaryOutput({ label: "Night browser summary", description: "Summary of searchable sleep history." }),
83
+ createContextOutput({
84
+ key: "sleepView",
85
+ label: "Sleep view",
86
+ description: "Structured sleep history for browsing and analysis.",
87
+ modelName: "ForgeSleepView"
88
+ })
89
+ ]
90
+ });
91
+ export const SportsSummaryBox = defineHealthBox({
92
+ id: "surface:sports-index:summary",
93
+ surfaceId: "sports-index",
94
+ routePath: "/sports",
95
+ title: "Sports summary",
96
+ description: "Recent workout metrics, streaks, and linked-session totals.",
97
+ category: "Sports",
98
+ tags: ["sports", "summary"],
99
+ execute: (input) => buildSportsWorkbenchExecution(input),
100
+ output: [
101
+ createSummaryOutput({ label: "Sports summary", description: "Summary of recent workout metrics and streaks." }),
102
+ createContextOutput({
103
+ key: "sportsView",
104
+ label: "Sports view",
105
+ description: "Structured workout metrics, streaks, and linked session totals.",
106
+ modelName: "ForgeSportsView"
107
+ })
108
+ ]
109
+ });
110
+ export const SportsCompositionBox = defineHealthBox({
111
+ id: "surface:sports-index:composition",
112
+ surfaceId: "sports-index",
113
+ routePath: "/sports",
114
+ title: "Training composition",
115
+ description: "Workout mix, trend, and session composition context.",
116
+ category: "Sports",
117
+ tags: ["sports", "composition", "trend"],
118
+ execute: (input) => buildSportsWorkbenchExecution(input),
119
+ output: [
120
+ createSummaryOutput({ label: "Composition summary", description: "Summary of workout mix, trend, and session composition." }),
121
+ createContextOutput({
122
+ key: "sportsView",
123
+ label: "Sports view",
124
+ description: "Structured workout mix, trend, and session composition data.",
125
+ modelName: "ForgeSportsView"
126
+ })
127
+ ]
128
+ });
129
+ export const SportsBrowserBox = defineHealthBox({
130
+ id: "surface:sports-index:browser",
131
+ surfaceId: "sports-index",
132
+ routePath: "/sports",
133
+ title: "Session browser",
134
+ description: "Searchable and virtualized workout history browser.",
135
+ category: "Sports",
136
+ tags: ["sports", "browser", "history"],
137
+ execute: (input) => buildSportsWorkbenchExecution(input),
138
+ output: [
139
+ createSummaryOutput({ label: "Session browser summary", description: "Summary of searchable workout history." }),
140
+ createContextOutput({
141
+ key: "sportsView",
142
+ label: "Sports view",
143
+ description: "Structured workout history for browsing and analysis.",
144
+ modelName: "ForgeSportsView"
145
+ })
146
+ ]
147
+ });
@@ -0,0 +1,50 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import { buildInsightsWorkbenchExecution, buildStaticWorkbenchExecution } from "../../../lib/workbench/runtime.js";
3
+ import { createContextOutput, createSummaryOutput } from "../../../lib/workbench/contracts.js";
4
+ import { createGenericWorkbenchNodeView } from "../shared/generic-node-view.js";
5
+ import { defineWorkbenchBox } from "../shared/define-workbench-box.js";
6
+ function Slot({ children }) {
7
+ return _jsx(_Fragment, { children: children });
8
+ }
9
+ function defineInsightsBox(id, title, description, tags, execute, output) {
10
+ return defineWorkbenchBox(Slot, {
11
+ id,
12
+ surfaceId: "insights",
13
+ routePath: "/insights",
14
+ title,
15
+ icon: "insights",
16
+ description,
17
+ category: "Insights",
18
+ tags,
19
+ inputs: [],
20
+ params: [],
21
+ output,
22
+ tools: [],
23
+ NodeView: createGenericWorkbenchNodeView({
24
+ title,
25
+ description,
26
+ inputs: [],
27
+ params: [],
28
+ output,
29
+ tools: []
30
+ }),
31
+ execute
32
+ });
33
+ }
34
+ export const InsightsFeedBox = defineInsightsBox("surface:insights:feed", "Insights feed", "Current coaching feed, status summary, and evidence-backed insight stream.", ["insights", "feed"], (input) => buildInsightsWorkbenchExecution(input), [
35
+ createSummaryOutput({ label: "Insight summary", description: "Summary of the current coaching feed and evidence-backed insight stream." }),
36
+ createContextOutput({
37
+ key: "insights",
38
+ label: "Insight payload",
39
+ description: "Structured status and coaching payload returned by Forge insights.",
40
+ modelName: "ForgeInsightsPayload"
41
+ })
42
+ ]);
43
+ export const InsightsCoachingBox = defineInsightsBox("surface:insights:coaching", "Coaching recommendation", "Single-action coaching summary for what Forge thinks matters next.", ["insights", "coaching"], (input) => buildStaticWorkbenchExecution(input, {
44
+ focus: "coaching_recommendation"
45
+ }, "Coaching recommendation surface for the highest-leverage next move."), [
46
+ createSummaryOutput({
47
+ label: "Coaching recommendation",
48
+ description: "Summary of the highest-leverage coaching recommendation."
49
+ })
50
+ ]);
@@ -0,0 +1,136 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import { buildSearchWorkbenchExecution } from "../../../lib/workbench/runtime.js";
3
+ import { createSearchEntitiesTool, createSearchInputs, createSearchOutputs, createSearchParams, createSummaryOutput, createTaskStatusTool } from "../../../lib/workbench/contracts.js";
4
+ import { createGenericWorkbenchNodeView } from "../shared/generic-node-view.js";
5
+ import { defineWorkbenchBox } from "../shared/define-workbench-box.js";
6
+ function Slot({ children }) {
7
+ return _jsx(_Fragment, { children: children });
8
+ }
9
+ const kanbanSearchInputs = createSearchInputs({
10
+ itemKind: "task",
11
+ itemLabel: "Task",
12
+ defaultEntityTypes: ["task"],
13
+ defaultLimit: 24
14
+ });
15
+ const kanbanSearchParams = createSearchParams({
16
+ itemKind: "task",
17
+ defaultEntityTypes: ["task"],
18
+ defaultLimit: 24
19
+ });
20
+ export const KanbanSummaryBox = defineWorkbenchBox(Slot, {
21
+ id: "surface:kanban-index:summary",
22
+ surfaceId: "kanban-index",
23
+ routePath: "/kanban",
24
+ title: "Kanban summary",
25
+ icon: "kanban",
26
+ description: "Board summary and execution posture.",
27
+ category: "Execution",
28
+ tags: ["kanban", "summary"],
29
+ inputs: kanbanSearchInputs,
30
+ params: kanbanSearchParams,
31
+ output: [
32
+ createSummaryOutput({
33
+ label: "Kanban summary",
34
+ description: "Summary of board posture and execution pressure."
35
+ })
36
+ ],
37
+ tools: [],
38
+ NodeView: createGenericWorkbenchNodeView({
39
+ title: "Kanban summary",
40
+ description: "Board summary and execution posture.",
41
+ inputs: kanbanSearchInputs,
42
+ params: kanbanSearchParams,
43
+ output: [
44
+ createSummaryOutput({
45
+ label: "Kanban summary",
46
+ description: "Summary of board posture and execution pressure."
47
+ })
48
+ ],
49
+ tools: []
50
+ }),
51
+ execute: (input) => buildSearchWorkbenchExecution(input, {
52
+ query: "",
53
+ entityTypes: ["task"],
54
+ limit: 24
55
+ })
56
+ });
57
+ export const KanbanFiltersBox = defineWorkbenchBox(Slot, {
58
+ id: "surface:kanban-index:filters",
59
+ surfaceId: "kanban-index",
60
+ routePath: "/kanban",
61
+ title: "Kanban filters",
62
+ icon: "filter",
63
+ description: "Goal, owner, and tag filters for board scope.",
64
+ category: "Execution",
65
+ tags: ["kanban", "filters"],
66
+ inputs: kanbanSearchInputs,
67
+ params: kanbanSearchParams,
68
+ output: [
69
+ createSummaryOutput({
70
+ label: "Filter summary",
71
+ description: "Summary of the current Kanban filters and scope."
72
+ })
73
+ ],
74
+ tools: [
75
+ createSearchEntitiesTool("Search Forge entities by query and entity types.")
76
+ ],
77
+ NodeView: createGenericWorkbenchNodeView({
78
+ title: "Kanban filters",
79
+ description: "Goal, owner, and tag filters for board scope.",
80
+ inputs: kanbanSearchInputs,
81
+ params: kanbanSearchParams,
82
+ output: [
83
+ createSummaryOutput({
84
+ label: "Filter summary",
85
+ description: "Summary of the current Kanban filters and scope."
86
+ })
87
+ ],
88
+ tools: [
89
+ createSearchEntitiesTool("Search Forge entities by query and entity types.")
90
+ ]
91
+ }),
92
+ execute: (input) => buildSearchWorkbenchExecution(input, {
93
+ query: "",
94
+ entityTypes: ["task"],
95
+ limit: 24
96
+ })
97
+ });
98
+ export const KanbanBoardBox = defineWorkbenchBox(Slot, {
99
+ id: "surface:kanban-index:board",
100
+ surfaceId: "kanban-index",
101
+ routePath: "/kanban",
102
+ title: "Kanban board",
103
+ icon: "board",
104
+ description: "Task board with move and execution actions.",
105
+ category: "Execution",
106
+ tags: ["kanban", "board", "tasks"],
107
+ inputs: kanbanSearchInputs,
108
+ params: kanbanSearchParams,
109
+ output: createSearchOutputs({
110
+ itemKind: "kanban_task",
111
+ itemLabel: "Kanban task"
112
+ }),
113
+ tools: [
114
+ createSearchEntitiesTool("Search Forge entities by query and entity types."),
115
+ createTaskStatusTool("Update a task status.")
116
+ ],
117
+ NodeView: createGenericWorkbenchNodeView({
118
+ title: "Kanban board",
119
+ description: "Task board with move and execution actions.",
120
+ inputs: kanbanSearchInputs,
121
+ params: kanbanSearchParams,
122
+ output: createSearchOutputs({
123
+ itemKind: "kanban_task",
124
+ itemLabel: "Kanban task"
125
+ }),
126
+ tools: [
127
+ createSearchEntitiesTool("Search Forge entities by query and entity types."),
128
+ createTaskStatusTool("Update a task status.")
129
+ ]
130
+ }),
131
+ execute: (input) => buildSearchWorkbenchExecution(input, {
132
+ query: "",
133
+ entityTypes: ["task"],
134
+ limit: 24
135
+ })
136
+ });
@@ -0,0 +1,47 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import { buildMovementPlacesExecution, buildStaticWorkbenchExecution } from "../../../lib/workbench/runtime.js";
3
+ import { createRecordListOutput, createSummaryOutput } from "../../../lib/workbench/contracts.js";
4
+ import { createGenericWorkbenchNodeView } from "../shared/generic-node-view.js";
5
+ import { defineWorkbenchBox } from "../shared/define-workbench-box.js";
6
+ function Slot({ children }) {
7
+ return _jsx(_Fragment, { children: children });
8
+ }
9
+ function defineMovementBox(id, title, description, tags, execute, output) {
10
+ return defineWorkbenchBox(Slot, {
11
+ id,
12
+ surfaceId: "movement-index",
13
+ routePath: "/movement",
14
+ title,
15
+ icon: "movement",
16
+ description,
17
+ category: "Movement",
18
+ tags,
19
+ inputs: [],
20
+ params: [],
21
+ output,
22
+ tools: [],
23
+ NodeView: createGenericWorkbenchNodeView({
24
+ title,
25
+ description,
26
+ inputs: [],
27
+ params: [],
28
+ output,
29
+ tools: []
30
+ }),
31
+ execute
32
+ });
33
+ }
34
+ export const MovementSummaryBox = defineMovementBox("surface:movement-index:summary", "Movement summary", "Tracking mode, daily totals, and passive capture posture.", ["movement", "summary"], (input) => buildStaticWorkbenchExecution(input, null, "Movement summary is available."), [createSummaryOutput({ label: "Movement summary", description: "Summary of tracking mode, daily totals, and passive capture posture." })]);
35
+ export const MovementSelectionBox = defineMovementBox("surface:movement-index:selection", "Movement selection aggregate", "Selected-stay and selected-trip aggregate totals.", ["movement", "selection", "aggregate"], (input) => buildStaticWorkbenchExecution(input, null, "Selected stay and trip aggregate totals."), [createSummaryOutput({ label: "Selection summary", description: "Summary of selected-stay and selected-trip aggregates." })]);
36
+ export const MovementTimelineBox = defineMovementBox("surface:movement-index:timeline", "Movement life timeline", "Life-scale stay and trip timeline with edit access.", ["movement", "timeline", "life"], (input) => buildStaticWorkbenchExecution(input, null, "Movement life timeline with stay and trip history."), [createSummaryOutput({ label: "Timeline summary", description: "Summary of the movement life timeline and trip history." })]);
37
+ export const MovementPlacesBox = defineMovementBox("surface:movement-index:places", "Known places", "Known places, aliases, and category tags.", ["movement", "places"], (input) => buildMovementPlacesExecution(input), [
38
+ createSummaryOutput({ label: "Places summary", description: "Summary of known places, aliases, and category tags." }),
39
+ createRecordListOutput({
40
+ key: "places",
41
+ label: "Known places",
42
+ description: "Structured list of places known to Forge movement tracking.",
43
+ modelName: "ForgeMovementPlaces",
44
+ itemKind: "movement_place"
45
+ })
46
+ ]);
47
+ export const MovementDataBrowserBox = defineMovementBox("surface:movement-index:data-browser", "Movement data browser", "Datapoint browsing, invalid records, and movement data cleanup.", ["movement", "data", "browser"], (input) => buildStaticWorkbenchExecution(input, null, "Movement datapoint browser with cleanup actions."), [createSummaryOutput({ label: "Data browser summary", description: "Summary of movement datapoint browsing and cleanup." })]);
@@ -0,0 +1,132 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import { buildSearchWorkbenchExecution, buildStaticWorkbenchExecution } from "../../../lib/workbench/runtime.js";
3
+ import { createNoteTool, createSearchEntitiesTool, createSearchInputs, createSearchOutputs, createSearchParams, createSummaryOutput } from "../../../lib/workbench/contracts.js";
4
+ import { createGenericWorkbenchNodeView } from "../shared/generic-node-view.js";
5
+ import { defineWorkbenchBox } from "../shared/define-workbench-box.js";
6
+ function Slot({ children }) {
7
+ return _jsx(_Fragment, { children: children });
8
+ }
9
+ const noteSearchInputs = createSearchInputs({
10
+ itemKind: "note",
11
+ itemLabel: "Note",
12
+ defaultEntityTypes: ["note"],
13
+ defaultLimit: 20
14
+ });
15
+ const noteSearchParams = createSearchParams({
16
+ itemKind: "note",
17
+ defaultEntityTypes: ["note"],
18
+ defaultLimit: 20
19
+ });
20
+ export const NoteFiltersBox = defineWorkbenchBox(Slot, {
21
+ id: "surface:notes-index:filters",
22
+ surfaceId: "notes-index",
23
+ routePath: "/notes",
24
+ title: "Note filters",
25
+ icon: "filter",
26
+ description: "Entity, tag, text, author, and date filters for notes.",
27
+ category: "Notes",
28
+ tags: ["notes", "filters", "search"],
29
+ inputs: noteSearchInputs,
30
+ params: noteSearchParams,
31
+ output: [
32
+ createSummaryOutput({
33
+ label: "Filter summary",
34
+ description: "Summary of the current note filters and search scope."
35
+ })
36
+ ],
37
+ tools: [
38
+ createSearchEntitiesTool("Search Forge entities by query and entity types.")
39
+ ],
40
+ NodeView: createGenericWorkbenchNodeView({
41
+ title: "Note filters",
42
+ description: "Entity, tag, text, author, and date filters for notes.",
43
+ inputs: noteSearchInputs,
44
+ params: noteSearchParams,
45
+ output: [
46
+ createSummaryOutput({
47
+ label: "Filter summary",
48
+ description: "Summary of the current note filters and search scope."
49
+ })
50
+ ],
51
+ tools: [
52
+ createSearchEntitiesTool("Search Forge entities by query and entity types.")
53
+ ]
54
+ }),
55
+ execute: (input) => buildSearchWorkbenchExecution(input, {
56
+ query: "",
57
+ entityTypes: ["note"],
58
+ limit: 20
59
+ })
60
+ });
61
+ export const NoteComposerBox = defineWorkbenchBox(Slot, {
62
+ id: "surface:notes-index:composer",
63
+ surfaceId: "notes-index",
64
+ routePath: "/notes",
65
+ title: "Note composer",
66
+ icon: "write",
67
+ description: "Markdown note composer with links, tags, and capture actions.",
68
+ category: "Notes",
69
+ tags: ["notes", "composer", "capture"],
70
+ inputs: noteSearchInputs,
71
+ params: noteSearchParams,
72
+ output: [
73
+ createSummaryOutput({
74
+ label: "Draft summary",
75
+ description: "Summary of the current note drafting surface."
76
+ })
77
+ ],
78
+ tools: [
79
+ createNoteTool("Create an evidence note from markdown content.")
80
+ ],
81
+ NodeView: createGenericWorkbenchNodeView({
82
+ title: "Note composer",
83
+ description: "Markdown note composer with links, tags, and capture actions.",
84
+ inputs: noteSearchInputs,
85
+ params: noteSearchParams,
86
+ output: [
87
+ createSummaryOutput({
88
+ label: "Draft summary",
89
+ description: "Summary of the current note drafting surface."
90
+ })
91
+ ],
92
+ tools: [
93
+ createNoteTool("Create an evidence note from markdown content.")
94
+ ]
95
+ }),
96
+ execute: (input) => buildStaticWorkbenchExecution(input, {
97
+ draftable: true
98
+ }, "This node can draft or create a note.")
99
+ });
100
+ export const NotesLibraryBox = defineWorkbenchBox(Slot, {
101
+ id: "surface:notes-index:library",
102
+ surfaceId: "notes-index",
103
+ routePath: "/notes",
104
+ title: "Notes library",
105
+ icon: "library",
106
+ description: "Filtered library of Forge notes and linked evidence.",
107
+ category: "Notes",
108
+ tags: ["notes", "library", "history"],
109
+ inputs: [],
110
+ params: [],
111
+ output: createSearchOutputs({
112
+ itemKind: "note",
113
+ itemLabel: "Note"
114
+ }),
115
+ tools: [],
116
+ NodeView: createGenericWorkbenchNodeView({
117
+ title: "Notes library",
118
+ description: "Filtered library of Forge notes and linked evidence.",
119
+ inputs: [],
120
+ params: [],
121
+ output: createSearchOutputs({
122
+ itemKind: "note",
123
+ itemLabel: "Note"
124
+ }),
125
+ tools: []
126
+ }),
127
+ execute: (input) => buildSearchWorkbenchExecution(input, {
128
+ query: "",
129
+ entityTypes: ["note"],
130
+ limit: 20
131
+ })
132
+ });
@@ -0,0 +1,65 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import { buildInsightsWorkbenchExecution, buildOverviewWorkbenchExecution, buildStaticWorkbenchExecution } from "../../../lib/workbench/runtime.js";
3
+ import { createContextOutput, createSummaryOutput } from "../../../lib/workbench/contracts.js";
4
+ import { createGenericWorkbenchNodeView } from "../shared/generic-node-view.js";
5
+ import { defineWorkbenchBox } from "../shared/define-workbench-box.js";
6
+ function Slot({ children }) {
7
+ return _jsx(_Fragment, { children: children });
8
+ }
9
+ function defineOverviewBox(id, title, description, tags, execute, output) {
10
+ return defineWorkbenchBox(Slot, {
11
+ id,
12
+ surfaceId: "overview",
13
+ routePath: "/overview",
14
+ title,
15
+ icon: "overview",
16
+ description,
17
+ category: "Overview",
18
+ tags,
19
+ inputs: [],
20
+ params: [],
21
+ output,
22
+ tools: [],
23
+ NodeView: createGenericWorkbenchNodeView({
24
+ title,
25
+ description,
26
+ inputs: [],
27
+ params: [],
28
+ output,
29
+ tools: []
30
+ }),
31
+ execute
32
+ });
33
+ }
34
+ export const OverviewSnapshotBox = defineOverviewBox("surface:overview:snapshot", "Forge snapshot", "Live overview of goals, projects, tasks, habits, and current operating pressure.", ["overview", "snapshot"], (input) => buildOverviewWorkbenchExecution(input), [
35
+ createSummaryOutput({
36
+ label: "Overview summary",
37
+ description: "Compact summary of goals, projects, tasks, and habits."
38
+ }),
39
+ createContextOutput({
40
+ key: "context",
41
+ label: "Overview context",
42
+ description: "Structured Forge overview context for the current operating picture.",
43
+ modelName: "ForgeOverviewContext"
44
+ })
45
+ ]);
46
+ export const OverviewMomentumBox = defineOverviewBox("surface:overview:momentum", "Momentum and health", "Momentum-focused summary of streaks, neglected areas, and active execution pressure.", ["overview", "momentum"], (input) => buildStaticWorkbenchExecution(input, {
47
+ dimensions: ["momentum", "neglected_goals", "domain_balance"]
48
+ }, "Overview momentum surface tracking neglected goals, domain balance, and execution pressure."), [
49
+ createSummaryOutput({
50
+ label: "Momentum summary",
51
+ description: "Summary of momentum, neglected goals, and execution pressure."
52
+ })
53
+ ]);
54
+ export const OverviewInsightsBox = defineOverviewBox("surface:overview:insights", "Overview insights", "Insight-oriented summary of the current Forge operating picture.", ["overview", "insights"], (input) => buildInsightsWorkbenchExecution(input), [
55
+ createSummaryOutput({
56
+ label: "Insight summary",
57
+ description: "Compact explanation of the current insight payload."
58
+ }),
59
+ createContextOutput({
60
+ key: "insights",
61
+ label: "Insight payload",
62
+ description: "Structured insight and coaching payload returned by Forge.",
63
+ modelName: "ForgeInsightsPayload"
64
+ })
65
+ ]);
@@ -0,0 +1,78 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import { buildSearchWorkbenchExecution, buildStaticWorkbenchExecution } from "../../../lib/workbench/runtime.js";
3
+ import { createSearchEntitiesTool, createSearchInputs, createSearchOutputs, createSearchParams, createSummaryOutput } from "../../../lib/workbench/contracts.js";
4
+ import { createGenericWorkbenchNodeView } from "../shared/generic-node-view.js";
5
+ import { defineWorkbenchBox } from "../shared/define-workbench-box.js";
6
+ function Slot({ children }) {
7
+ return _jsx(_Fragment, { children: children });
8
+ }
9
+ function definePreferencesBox(id, title, description, tags, execute, output, tools = [], options) {
10
+ const inputs = options?.inputs ?? [];
11
+ const params = options?.params ?? [];
12
+ return defineWorkbenchBox(Slot, {
13
+ id,
14
+ surfaceId: "preferences",
15
+ routePath: "/preferences",
16
+ title,
17
+ icon: "preferences",
18
+ description,
19
+ category: "Preferences",
20
+ tags,
21
+ inputs,
22
+ params,
23
+ output,
24
+ tools,
25
+ NodeView: createGenericWorkbenchNodeView({
26
+ title,
27
+ description,
28
+ inputs,
29
+ params,
30
+ output,
31
+ tools
32
+ }),
33
+ execute
34
+ });
35
+ }
36
+ export const PreferencesWorkspaceBox = definePreferencesBox("surface:preferences:workspace", "Preferences workspace", "Main preference modeling workspace, including summaries, tradeoffs, and evidence.", ["preferences", "workspace"], (input) => buildStaticWorkbenchExecution(input, {
37
+ surfaces: ["summary", "comparison_game", "evidence"]
38
+ }, "Preferences workspace with summary, pairwise comparison, and evidence views."), [createSummaryOutput({ label: "Preference summary", description: "Summary of the active preference modeling workspace." })]);
39
+ export const PreferencesContextsBox = definePreferencesBox("surface:preferences:contexts", "Preference contexts", "Preference contexts that shape which tradeoffs and evidence are active.", ["preferences", "contexts"], (input) => buildSearchWorkbenchExecution(input, {
40
+ query: "",
41
+ entityTypes: ["preference_context"],
42
+ limit: 20
43
+ }), createSearchOutputs({
44
+ itemKind: "preference_context",
45
+ itemLabel: "Preference context"
46
+ }), [createSearchEntitiesTool("Search preference contexts and modeled preference items.")], {
47
+ inputs: createSearchInputs({
48
+ itemKind: "preference_context",
49
+ itemLabel: "Preference context",
50
+ defaultEntityTypes: ["preference_context"],
51
+ defaultLimit: 20
52
+ }),
53
+ params: createSearchParams({
54
+ itemKind: "preference_context",
55
+ defaultEntityTypes: ["preference_context"],
56
+ defaultLimit: 20
57
+ })
58
+ });
59
+ export const PreferencesItemsBox = definePreferencesBox("surface:preferences:items", "Preference items", "Preference items scored and compared inside the active context.", ["preferences", "items"], (input) => buildSearchWorkbenchExecution(input, {
60
+ query: "",
61
+ entityTypes: ["preference_item"],
62
+ limit: 20
63
+ }), createSearchOutputs({
64
+ itemKind: "preference_item",
65
+ itemLabel: "Preference item"
66
+ }), [createSearchEntitiesTool("Search preference contexts and modeled preference items.")], {
67
+ inputs: createSearchInputs({
68
+ itemKind: "preference_item",
69
+ itemLabel: "Preference item",
70
+ defaultEntityTypes: ["preference_item"],
71
+ defaultLimit: 20
72
+ }),
73
+ params: createSearchParams({
74
+ itemKind: "preference_item",
75
+ defaultEntityTypes: ["preference_item"],
76
+ defaultLimit: 20
77
+ })
78
+ });