forge-openclaw-plugin 0.3.15 → 0.3.16

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 (362) hide show
  1. package/README.md +6 -6
  2. package/dist/assets/{action-bar-B9MYlps2.js → action-bar-DgrmzFrI.js} +1 -1
  3. package/dist/assets/{activity-page-DbzbChcE.js → activity-page-CF451ueg.js} +1 -1
  4. package/dist/assets/{ai-surface-workspace-CF0257Hs.js → ai-surface-workspace-DtwybxJB.js} +1 -1
  5. package/dist/assets/{atlas-panel-CO3RYAKn.js → atlas-panel-CB3uYk_K.js} +1 -1
  6. package/dist/assets/{calendar-page-BuuHKEHC.js → calendar-page-BYsDuLnh.js} +1 -1
  7. package/dist/assets/{calendar-rules-DKftgNx5.js → calendar-rules-DXuOv2J-.js} +1 -1
  8. package/dist/assets/{calendar-week-toolbar-ChIpkT-G.js → calendar-week-toolbar-8PJmiUE_.js} +1 -1
  9. package/dist/assets/{companion-sync-lab-page-BZRX4Btw.js → companion-sync-lab-page-DzWNOaBh.js} +1 -1
  10. package/dist/assets/{daily-metrics-dashboard-CXDsaAQd.js → daily-metrics-dashboard-CHcYxDhs.js} +1 -1
  11. package/dist/assets/{define-workbench-box-CpG0Zb1L.js → define-workbench-box-DcI0_QKW.js} +1 -1
  12. package/dist/assets/{entity-link-multiselect-Dl4rZqdg.js → entity-link-multiselect-C--AiCMb.js} +1 -1
  13. package/dist/assets/{entity-note-count-link-Bs1aKYyD.js → entity-note-count-link-xne6mshj.js} +1 -1
  14. package/dist/assets/{entity-notes-surface-B56XSw7M.js → entity-notes-surface-jy6Psist.js} +1 -1
  15. package/dist/assets/{execution-board-D66C_ikW.js → execution-board-BSUZCIIx.js} +1 -1
  16. package/dist/assets/{faceted-token-search-Dg2rjknH.js → faceted-token-search-BMQ1Wwzt.js} +1 -1
  17. package/dist/assets/{flagship-signal-deck-C6KVPhmM.js → flagship-signal-deck-DjcskRwF.js} +1 -1
  18. package/dist/assets/{floating-action-menu-DAFAEBcA.js → floating-action-menu-cGhbJ2tc.js} +1 -1
  19. package/dist/assets/{generic-node-view-C6DK5hJ6.js → generic-node-view-DNVwfqqq.js} +1 -1
  20. package/dist/assets/{goal-detail-page-CC4VXud6.js → goal-detail-page-dAbyCilO.js} +1 -1
  21. package/dist/assets/{goal-dialog-15hD8EBp.js → goal-dialog-DH50D0tP.js} +1 -1
  22. package/dist/assets/{goals-page-CQ2lJMzI.js → goals-page-DkMy9mPD.js} +1 -1
  23. package/dist/assets/{habits-page-a7KVPaQp.js → habits-page-CCQR8rg6.js} +1 -1
  24. package/dist/assets/{health-boxes-DqgvIYoL.js → health-boxes-BPTgGM6G.js} +1 -1
  25. package/dist/assets/index-VzCGTBS_.css +1 -0
  26. package/dist/assets/{index-FpGANF9S.js → index-izRKx6JK.js} +2 -2
  27. package/dist/assets/{inline-note-fields-COgzxr_7.js → inline-note-fields-D4mCM1gO.js} +1 -1
  28. package/dist/assets/{insight-flow-dialog-Dmb6NSGp.js → insight-flow-dialog-Btp6bkbV.js} +1 -1
  29. package/dist/assets/{insights-page-OnqR4cYI.js → insights-page-1qM4mxjS.js} +1 -1
  30. package/dist/assets/{kanban-boxes-BWUzntCV.js → kanban-boxes-u_A-UJG-.js} +1 -1
  31. package/dist/assets/{kanban-page-BI16Gzp_.js → kanban-page-CKCa_3Qb.js} +1 -1
  32. package/dist/assets/{knowledge-graph-page-DxEBaEke.js → knowledge-graph-page-BZOxRv19.js} +1 -1
  33. package/dist/assets/{life-force-page-CDEXEQai.js → life-force-page-BZlyA144.js} +1 -1
  34. package/dist/assets/{life-force-workspace-C7UOnJEf.js → life-force-workspace-CtAWZXNw.js} +1 -1
  35. package/dist/assets/{metric-tile-boeHB1R1.js → metric-tile-Bkx2btO2.js} +1 -1
  36. package/dist/assets/{movement-boxes-BUSqaTL2.js → movement-boxes-QZ2EIS9q.js} +1 -1
  37. package/dist/assets/{movement-page-DcbO0497.js → movement-page-B-3ihggI.js} +1 -1
  38. package/dist/assets/{note-markdown-DXXI3W3V.js → note-markdown-BWedRE3c.js} +1 -1
  39. package/dist/assets/{note-tags-input-CYh3TVW2.js → note-tags-input-DZkCqI1w.js} +1 -1
  40. package/dist/assets/{notes-boxes-CMJXX2K0.js → notes-boxes-DGFmt7Dp.js} +1 -1
  41. package/dist/assets/{notes-page-DvHMcQey.js → notes-page-DYkn04tz.js} +1 -1
  42. package/dist/assets/{open-in-graph-button-4UYrp1XP.js → open-in-graph-button-CjvkEj1P.js} +1 -1
  43. package/dist/assets/{orbit-map-BwK7sDaC.js → orbit-map-CRHSPenk.js} +1 -1
  44. package/dist/assets/{overview-page-Z5vaUTm3.js → overview-page-D6LsjPWe.js} +1 -1
  45. package/dist/assets/{page-hero-DvrM83_C.js → page-hero-BLhM8FF3.js} +1 -1
  46. package/dist/assets/{pill-cluster-DYI3Ibj8.js → pill-cluster-B5bYs_e2.js} +1 -1
  47. package/dist/assets/{preference-entity-handoff-button-C2ATjvws.js → preference-entity-handoff-button-CfCQl3cW.js} +1 -1
  48. package/dist/assets/{preferences-page-BAexXHye.js → preferences-page-OltGdsQ2.js} +1 -1
  49. package/dist/assets/{project-collections-B9nr-Ts-.js → project-collections-FfBIVwXu.js} +1 -1
  50. package/dist/assets/{project-detail-page-B9PqyPu9.js → project-detail-page-CCm3iZPQ.js} +1 -1
  51. package/dist/assets/{project-dialog-CBA-D65n.js → project-dialog-B_J1ESMk.js} +1 -1
  52. package/dist/assets/{project-management-hierarchy-page-DXK14jn0.js → project-management-hierarchy-page-BNzvtNZj.js} +1 -1
  53. package/dist/assets/{project-management-section-nav-DJ3QKCtr.js → project-management-section-nav-DBNHt9p5.js} +1 -1
  54. package/dist/assets/{projects-boxes-iBu_PRqe.js → projects-boxes-BvlVsO5q.js} +1 -1
  55. package/dist/assets/{projects-page-CdAk-ByT.js → projects-page-BUf7KV-_.js} +1 -1
  56. package/dist/assets/{psyche-behaviors-page-CbhhTfU2.js → psyche-behaviors-page-jtyhdpJ1.js} +1 -1
  57. package/dist/assets/{psyche-flashcards-page-DQaw_vUQ.js → psyche-flashcards-page-05606-97.js} +1 -1
  58. package/dist/assets/{psyche-goal-map-page-C-ZTVOEP.js → psyche-goal-map-page-Cw-aqS3Y.js} +1 -1
  59. package/dist/assets/{psyche-graph-DYzeClxn.js → psyche-graph-0E22QHPe.js} +1 -1
  60. package/dist/assets/{psyche-metrics-page-C9hKn10A.js → psyche-metrics-page-DBFVPeMa.js} +1 -1
  61. package/dist/assets/{psyche-mode-guide-page-CR8e984W.js → psyche-mode-guide-page-DI-LNEDT.js} +1 -1
  62. package/dist/assets/psyche-modes-page-CaMupyfi.js +1 -0
  63. package/dist/assets/{psyche-page-CTdIDkw9.js → psyche-page-CFBq0YKf.js} +1 -1
  64. package/dist/assets/{psyche-patterns-page-Drgm-f7I.js → psyche-patterns-page-sp4ikoef.js} +1 -1
  65. package/dist/assets/{psyche-questionnaire-builder-page-gRwdGXde.js → psyche-questionnaire-builder-page-DEt0UDsz.js} +1 -1
  66. package/dist/assets/{psyche-questionnaire-detail-page-CIP9b2UI.js → psyche-questionnaire-detail-page-BXQbOE6A.js} +1 -1
  67. package/dist/assets/{psyche-questionnaire-run-detail-page-SYndwtF3.js → psyche-questionnaire-run-detail-page-Cd3ClsSK.js} +1 -1
  68. package/dist/assets/{psyche-questionnaire-run-page-CXiJyd5i.js → psyche-questionnaire-run-page-D_EokOQm.js} +1 -1
  69. package/dist/assets/{psyche-questionnaires-page-CFPKwA3O.js → psyche-questionnaires-page-D1Ov2L4n.js} +1 -1
  70. package/dist/assets/{psyche-report-detail-page-dU30a2WE.js → psyche-report-detail-page-9HyPr8BJ.js} +1 -1
  71. package/dist/assets/{psyche-reports-page-Cn0EBndy.js → psyche-reports-page-BeyJg5fb.js} +1 -1
  72. package/dist/assets/{psyche-schemas-beliefs-page-Bab4xSWv.js → psyche-schemas-beliefs-page-DNmf-Vma.js} +1 -1
  73. package/dist/assets/{psyche-screen-time-page-lIe6GQxJ.js → psyche-screen-time-page-DJMDR5oo.js} +1 -1
  74. package/dist/assets/{psyche-self-observation-page-BTE3KfIl.js → psyche-self-observation-page-DFKXG1Yv.js} +1 -1
  75. package/dist/assets/{psyche-values-page-DclBZ9xw.js → psyche-values-page-TWKth89J.js} +1 -1
  76. package/dist/assets/{question-flow-dialog-Ded2E85L.js → question-flow-dialog-D-_EvoAt.js} +1 -1
  77. package/dist/assets/{report-chain-fields-DY640iqL.js → report-chain-fields-Dy-jBQDn.js} +1 -1
  78. package/dist/assets/{rewards-page-FxUXB76B.js → rewards-page-D3ymEd2X.js} +1 -1
  79. package/dist/assets/{scheduling-rules-editor-jakFfxqF.js → scheduling-rules-editor-CAd290IE.js} +1 -1
  80. package/dist/assets/{schema-badge-30B5syHA.js → schema-badge-BLaVI1D7.js} +1 -1
  81. package/dist/assets/{schemas-Db29G8NU.js → schemas-B0Pa-V-A.js} +1 -1
  82. package/dist/assets/{select-menu-BF2zI3RW.js → select-menu-DcS4Ukjf.js} +1 -1
  83. package/dist/assets/{settings-agents-page-Bh-Bv6FQ.js → settings-agents-page-Bt38HhEJ.js} +1 -1
  84. package/dist/assets/{settings-bin-page-DT8JJero.js → settings-bin-page-DqyVI1i1.js} +1 -1
  85. package/dist/assets/{settings-calendar-page-BA4_Qqiu.js → settings-calendar-page-DPSSZV3s.js} +1 -1
  86. package/dist/assets/{settings-data-page-K4kpmQJY.js → settings-data-page-BdHsD1C_.js} +1 -1
  87. package/dist/assets/{settings-logs-page-DkuNPAZo.js → settings-logs-page-D9OnWoFq.js} +1 -1
  88. package/dist/assets/{settings-mobile-page-4pCNwD91.js → settings-mobile-page-DFpsXA4M.js} +1 -1
  89. package/dist/assets/{settings-models-page-CZHG3t7W.js → settings-models-page-DaFXLp-O.js} +1 -1
  90. package/dist/assets/{settings-page-B_Be0vOY.js → settings-page-m_3iYPwU.js} +1 -1
  91. package/dist/assets/{settings-rewards-page-C6nFTWJu.js → settings-rewards-page-B2aBm-dA.js} +1 -1
  92. package/dist/assets/{settings-section-nav-Lo-VKCfZ.js → settings-section-nav-CMeU19Rx.js} +1 -1
  93. package/dist/assets/{settings-users-page-CVzNp4-m.js → settings-users-page-D8jyewJl.js} +1 -1
  94. package/dist/assets/{settings-wiki-page-DXM--7BB.js → settings-wiki-page-DjOgQJAh.js} +1 -1
  95. package/dist/assets/{sleep-page-DvPdZMKx.js → sleep-page-D8-dA4bE.js} +1 -1
  96. package/dist/assets/{sports-page-DjuZlOur.js → sports-page-CK3PgPKB.js} +1 -1
  97. package/dist/assets/{strategies-page-PE1IlatS.js → strategies-page-aFpJath-.js} +1 -1
  98. package/dist/assets/{strategy-detail-page-C4KiEGCI.js → strategy-detail-page-CobF5qLv.js} +1 -1
  99. package/dist/assets/{strategy-dialog-Cwf7Y3P5.js → strategy-dialog-Fgoaoob5.js} +1 -1
  100. package/dist/assets/{surface-ubuOfukq.js → surface-D0dqgX-k.js} +1 -1
  101. package/dist/assets/{task-detail-page-B3SMFZQ3.js → task-detail-page-CDK79bzk.js} +1 -1
  102. package/dist/assets/{task-dialog-CI_Fy_FW.js → task-dialog-eCDTF8xe.js} +4 -4
  103. package/dist/assets/{timebox-planning-dialog-BtFuVoA1.js → timebox-planning-dialog-CNZIGSpd.js} +1 -1
  104. package/dist/assets/{today-boxes-CYuxSkZf.js → today-boxes-CYfskVrM.js} +1 -1
  105. package/dist/assets/{today-page-CHGpLEZ3.js → today-page-Bnh8wopq.js} +1 -1
  106. package/dist/assets/{training-load-page-GZJF-Yy5.js → training-load-page-C7lq-jqy.js} +1 -1
  107. package/dist/assets/{user-badge-ByhC6bMU.js → user-badge-MEZuJiir.js} +1 -1
  108. package/dist/assets/{utility-widgets-ilORjDmg.js → utility-widgets-h5eG2jvc.js} +1 -1
  109. package/dist/assets/{vitals-page-mdEqIm_9.js → vitals-page-eoFnQ3XL.js} +1 -1
  110. package/dist/assets/{weekly-review-page-C8W-yg5r.js → weekly-review-page-C7BU1gkK.js} +1 -1
  111. package/dist/assets/{weight-loss-page-BApTknCn.js → weight-loss-page-Cc7Do3XY.js} +1 -1
  112. package/dist/assets/{wiki-article-markdown-DBccllQg.js → wiki-article-markdown-CCKoSptz.js} +1 -1
  113. package/dist/assets/{wiki-editor-page-BfRfH1O3.js → wiki-editor-page-BpbxZrgz.js} +1 -1
  114. package/dist/assets/{wiki-ingest-history-page-C-6H3MU6.js → wiki-ingest-history-page-D5Wfr8pc.js} +1 -1
  115. package/dist/assets/{wiki-ingest-modal-DnlhByD_.js → wiki-ingest-modal-DhRVsEwC.js} +1 -1
  116. package/dist/assets/{wiki-page-DPZ55e3x.js → wiki-page-1vf-HErs.js} +1 -1
  117. package/dist/assets/{workbench-flow-page-_-NKIx5R.js → workbench-flow-page-y9FxDbKO.js} +1 -1
  118. package/dist/assets/{workbench-page-NIAzggwX.js → workbench-page-Da16AZvN.js} +1 -1
  119. package/dist/assets/{workout-detail-page-3fxr6HL4.js → workout-detail-page-Cq0YamXF.js} +1 -1
  120. package/dist/index.html +2 -2
  121. package/dist/openclaw/api-client.js +28 -2
  122. package/dist/openclaw/local-runtime.js +31 -14
  123. package/dist/server/{server → apps/api}/src/app.js +1 -1
  124. package/dist/server/{server → apps/api}/src/connectors/box-registry.js +3 -3
  125. package/dist/server/{server → apps/api}/src/db.js +23 -4
  126. package/dist/server/{server → apps/api}/src/health-weight-loss.js +1 -1
  127. package/dist/server/{server → apps/api}/src/questionnaire-seeds.js +1 -1
  128. package/dist/server/{server → apps/api}/src/repositories/ai-connectors.js +1 -1
  129. package/dist/server/{server → apps/api}/src/repositories/habits.js +1 -1
  130. package/dist/server/{server → apps/api}/src/services/companion-iroh.js +4 -1
  131. package/dist/server/{server → apps/api}/src/services/doctor.js +3 -3
  132. package/dist/server/{server → apps/api}/src/services/gamification-assets.js +1 -1
  133. package/dist/server/{server → apps/api}/src/services/gamification.js +1 -1
  134. package/dist/server/{server → apps/api}/src/services/knowledge-graph.js +3 -3
  135. package/dist/server/{server → apps/api}/src/types.js +2 -2
  136. package/dist/server/{server → apps/api}/src/watch-mobile.js +1 -1
  137. package/openclaw.plugin.json +1 -1
  138. package/package.json +3 -3
  139. package/server/index.js +3 -3
  140. package/skills/forge-openclaw/SKILL.md +5 -5
  141. package/dist/assets/index-ClJbJhca.css +0 -1
  142. package/dist/assets/psyche-modes-page-lQdpAcY3.js +0 -1
  143. /package/dist/server/{server → apps/api}/migrations/001_core.sql +0 -0
  144. /package/dist/server/{server → apps/api}/migrations/002_psyche.sql +0 -0
  145. /package/dist/server/{server → apps/api}/migrations/003_habits.sql +0 -0
  146. /package/dist/server/{server → apps/api}/migrations/004_habit_links.sql +0 -0
  147. /package/dist/server/{server → apps/api}/migrations/005_habit_psyche_links.sql +0 -0
  148. /package/dist/server/{server → apps/api}/migrations/006_work_adjustments.sql +0 -0
  149. /package/dist/server/{server → apps/api}/migrations/007_weekly_review_closures.sql +0 -0
  150. /package/dist/server/{server → apps/api}/migrations/008_calendar_execution.sql +0 -0
  151. /package/dist/server/{server → apps/api}/migrations/009_true_calendar_events.sql +0 -0
  152. /package/dist/server/{server → apps/api}/migrations/010_calendar_selection_state.sql +0 -0
  153. /package/dist/server/{server → apps/api}/migrations/011_calendar_timezone_backfill.sql +0 -0
  154. /package/dist/server/{server → apps/api}/migrations/012_work_block_ranges.sql +0 -0
  155. /package/dist/server/{server → apps/api}/migrations/013_microsoft_local_auth_settings.sql +0 -0
  156. /package/dist/server/{server → apps/api}/migrations/014_note_tags_and_ephemeral.sql +0 -0
  157. /package/dist/server/{server → apps/api}/migrations/015_multi_user_and_strategies.sql +0 -0
  158. /package/dist/server/{server → apps/api}/migrations/016_health_companion.sql +0 -0
  159. /package/dist/server/{server → apps/api}/migrations/016_strategy_contracts_and_user_graph.sql +0 -0
  160. /package/dist/server/{server → apps/api}/migrations/017_preferences.sql +0 -0
  161. /package/dist/server/{server → apps/api}/migrations/018_preference_catalogs.sql +0 -0
  162. /package/dist/server/{server → apps/api}/migrations/019_wiki_memory.sql +0 -0
  163. /package/dist/server/{server → apps/api}/migrations/020_wiki_page_hierarchy.sql +0 -0
  164. /package/dist/server/{server → apps/api}/migrations/021_hide_evidence_from_wiki_index.sql +0 -0
  165. /package/dist/server/{server → apps/api}/migrations/022_wiki_ingest_background.sql +0 -0
  166. /package/dist/server/{server → apps/api}/migrations/023_diagnostic_logs.sql +0 -0
  167. /package/dist/server/{server → apps/api}/migrations/024_questionnaires.sql +0 -0
  168. /package/dist/server/{server → apps/api}/migrations/025_ai_model_connections.sql +0 -0
  169. /package/dist/server/{server → apps/api}/migrations/026_custom_theme_settings.sql +0 -0
  170. /package/dist/server/{server → apps/api}/migrations/027_ai_processors.sql +0 -0
  171. /package/dist/server/{server → apps/api}/migrations/028_movement_domain.sql +0 -0
  172. /package/dist/server/{server → apps/api}/migrations/029_watch_micro_capture.sql +0 -0
  173. /package/dist/server/{server → apps/api}/migrations/030_surface_layouts.sql +0 -0
  174. /package/dist/server/{server → apps/api}/migrations/031_ai_processor_runtime_upgrades.sql +0 -0
  175. /package/dist/server/{server → apps/api}/migrations/032_ai_connectors.sql +0 -0
  176. /package/dist/server/{server → apps/api}/migrations/033_movement_trip_point_sync.sql +0 -0
  177. /package/dist/server/{server → apps/api}/migrations/034_movement_segment_sync.sql +0 -0
  178. /package/dist/server/{server → apps/api}/migrations/035_google_local_auth_settings.sql +0 -0
  179. /package/dist/server/{server → apps/api}/migrations/036_google_local_auth_client_secret.sql +0 -0
  180. /package/dist/server/{server → apps/api}/migrations/037_workbench_public_inputs_and_run_inputs.sql +0 -0
  181. /package/dist/server/{server → apps/api}/migrations/038_data_management_settings.sql +0 -0
  182. /package/dist/server/{server → apps/api}/migrations/039_life_force_and_action_points.sql +0 -0
  183. /package/dist/server/{server → apps/api}/migrations/040_screen_time_domain.sql +0 -0
  184. /package/dist/server/{server → apps/api}/migrations/041_companion_source_states.sql +0 -0
  185. /package/dist/server/{server → apps/api}/migrations/042_movement_boxes.sql +0 -0
  186. /package/dist/server/{server → apps/api}/migrations/043_movement_box_overlap_overrides.sql +0 -0
  187. /package/dist/server/{server → apps/api}/migrations/044_macos_local_calendar_provider.sql +0 -0
  188. /package/dist/server/{server → apps/api}/migrations/045_sleep_nights_and_raw_segments.sql +0 -0
  189. /package/dist/server/{server → apps/api}/migrations/046_work_item_hierarchy.sql +0 -0
  190. /package/dist/server/{server → apps/api}/migrations/047_sleep_source_records.sql +0 -0
  191. /package/dist/server/{server → apps/api}/migrations/048_task_run_git_context.sql +0 -0
  192. /package/dist/server/{server → apps/api}/migrations/049_agent_runtime_sessions.sql +0 -0
  193. /package/dist/server/{server → apps/api}/migrations/050_agent_token_bootstrap_policy.sql +0 -0
  194. /package/dist/server/{server → apps/api}/migrations/051_agent_token_scope_policy.sql +0 -0
  195. /package/dist/server/{server → apps/api}/migrations/052_agent_identity_tightening.sql +0 -0
  196. /package/dist/server/{server → apps/api}/migrations/053_agent_runtime_session_canonical_labels.sql +0 -0
  197. /package/dist/server/{server → apps/api}/migrations/054_sqlite_backed_wiki_memory.sql +0 -0
  198. /package/dist/server/{server → apps/api}/migrations/055_gamification_progression.sql +0 -0
  199. /package/dist/server/{server → apps/api}/migrations/056_gamification_equipment.sql +0 -0
  200. /package/dist/server/{server → apps/api}/migrations/057_gamification_catalog_cleanup.sql +0 -0
  201. /package/dist/server/{server → apps/api}/migrations/058_gamification_theme_preference.sql +0 -0
  202. /package/dist/server/{server → apps/api}/migrations/059_data_backup_retention.sql +0 -0
  203. /package/dist/server/{server → apps/api}/migrations/060_psyche_devrage_metrics.sql +0 -0
  204. /package/dist/server/{server → apps/api}/migrations/061_health_workout_raw_evidence.sql +0 -0
  205. /package/dist/server/{server → apps/api}/migrations/062_health_mobile_sync_sessions.sql +0 -0
  206. /package/dist/server/{server → apps/api}/migrations/063_psyche_flashcards.sql +0 -0
  207. /package/dist/server/{server → apps/api}/migrations/064_health_workout_time_series_identity.sql +0 -0
  208. /package/dist/server/{server → apps/api}/migrations/065_weight_loss_nutrition_insights.sql +0 -0
  209. /package/dist/server/{server → apps/api}/migrations/066_watch_action_receipts.sql +0 -0
  210. /package/dist/server/{server → apps/api}/migrations/067_weight_loss_daily_active_overrides.sql +0 -0
  211. /package/dist/server/{server → apps/api}/migrations/068_remove_generated_movement_wiki_logs.sql +0 -0
  212. /package/dist/server/{server → apps/api}/migrations/069_psyche_devrage_cumulative_rage.sql +0 -0
  213. /package/dist/server/{server → apps/api}/migrations/070_health_mobile_sync_completion_index.sql +0 -0
  214. /package/dist/server/{server → apps/api}/migrations/071_agent_runtime_claude_identity.sql +0 -0
  215. /package/dist/server/{server → apps/api}/src/data-management-types.js +0 -0
  216. /package/dist/server/{server → apps/api}/src/debug.js +0 -0
  217. /package/dist/server/{server → apps/api}/src/demo-data.js +0 -0
  218. /package/dist/server/{server → apps/api}/src/discovery-advertiser.js +0 -0
  219. /package/dist/server/{server → apps/api}/src/e2e-server.js +0 -0
  220. /package/dist/server/{server → apps/api}/src/errors.js +0 -0
  221. /package/dist/server/{server → apps/api}/src/health-workout-adapters.js +0 -0
  222. /package/dist/server/{server → apps/api}/src/health-workout-analytics.js +0 -0
  223. /package/dist/server/{server → apps/api}/src/health.js +0 -0
  224. /package/dist/server/{server → apps/api}/src/index.js +0 -0
  225. /package/dist/server/{server → apps/api}/src/managers/base.js +0 -0
  226. /package/dist/server/{server → apps/api}/src/managers/contracts.js +0 -0
  227. /package/dist/server/{server → apps/api}/src/managers/platform/api-gateway-manager.js +0 -0
  228. /package/dist/server/{server → apps/api}/src/managers/platform/audit-manager.js +0 -0
  229. /package/dist/server/{server → apps/api}/src/managers/platform/authentication-manager.js +0 -0
  230. /package/dist/server/{server → apps/api}/src/managers/platform/authorization-manager.js +0 -0
  231. /package/dist/server/{server → apps/api}/src/managers/platform/background-job-manager.js +0 -0
  232. /package/dist/server/{server → apps/api}/src/managers/platform/configuration-manager.js +0 -0
  233. /package/dist/server/{server → apps/api}/src/managers/platform/database-manager.js +0 -0
  234. /package/dist/server/{server → apps/api}/src/managers/platform/event-bus-manager.js +0 -0
  235. /package/dist/server/{server → apps/api}/src/managers/platform/external-service-manager.js +0 -0
  236. /package/dist/server/{server → apps/api}/src/managers/platform/health-manager.js +0 -0
  237. /package/dist/server/{server → apps/api}/src/managers/platform/llm-manager.js +0 -0
  238. /package/dist/server/{server → apps/api}/src/managers/platform/migration-manager.js +0 -0
  239. /package/dist/server/{server → apps/api}/src/managers/platform/mock-workbench-provider.js +0 -0
  240. /package/dist/server/{server → apps/api}/src/managers/platform/openai-responses-provider.js +0 -0
  241. /package/dist/server/{server → apps/api}/src/managers/platform/search-index-manager.js +0 -0
  242. /package/dist/server/{server → apps/api}/src/managers/platform/secrets-manager.js +0 -0
  243. /package/dist/server/{server → apps/api}/src/managers/platform/session-manager.js +0 -0
  244. /package/dist/server/{server → apps/api}/src/managers/platform/storage-manager.js +0 -0
  245. /package/dist/server/{server → apps/api}/src/managers/platform/token-manager.js +0 -0
  246. /package/dist/server/{server → apps/api}/src/managers/platform/transaction-manager.js +0 -0
  247. /package/dist/server/{server → apps/api}/src/managers/platform/trusted-network.js +0 -0
  248. /package/dist/server/{server → apps/api}/src/managers/runtime.js +0 -0
  249. /package/dist/server/{server → apps/api}/src/managers/type-guards.js +0 -0
  250. /package/dist/server/{server → apps/api}/src/movement.js +0 -0
  251. /package/dist/server/{server → apps/api}/src/openapi.js +0 -0
  252. /package/dist/server/{server → apps/api}/src/preferences-seeds.js +0 -0
  253. /package/dist/server/{server → apps/api}/src/preferences-types.js +0 -0
  254. /package/dist/server/{server → apps/api}/src/psyche-types.js +0 -0
  255. /package/dist/server/{server → apps/api}/src/questionnaire-flow.js +0 -0
  256. /package/dist/server/{server → apps/api}/src/questionnaire-types.js +0 -0
  257. /package/dist/server/{server → apps/api}/src/repositories/activity-events.js +0 -0
  258. /package/dist/server/{server → apps/api}/src/repositories/agent-runtime-sessions.js +0 -0
  259. /package/dist/server/{server → apps/api}/src/repositories/ai-processors.js +0 -0
  260. /package/dist/server/{server → apps/api}/src/repositories/calendar.js +0 -0
  261. /package/dist/server/{server → apps/api}/src/repositories/collaboration.js +0 -0
  262. /package/dist/server/{server → apps/api}/src/repositories/deleted-entities.js +0 -0
  263. /package/dist/server/{server → apps/api}/src/repositories/diagnostic-logs.js +0 -0
  264. /package/dist/server/{server → apps/api}/src/repositories/domains.js +0 -0
  265. /package/dist/server/{server → apps/api}/src/repositories/entity-ownership.js +0 -0
  266. /package/dist/server/{server → apps/api}/src/repositories/event-log.js +0 -0
  267. /package/dist/server/{server → apps/api}/src/repositories/gamification.js +0 -0
  268. /package/dist/server/{server → apps/api}/src/repositories/goals.js +0 -0
  269. /package/dist/server/{server → apps/api}/src/repositories/model-settings.js +0 -0
  270. /package/dist/server/{server → apps/api}/src/repositories/notes.js +0 -0
  271. /package/dist/server/{server → apps/api}/src/repositories/preferences.js +0 -0
  272. /package/dist/server/{server → apps/api}/src/repositories/projects.js +0 -0
  273. /package/dist/server/{server → apps/api}/src/repositories/psyche.js +0 -0
  274. /package/dist/server/{server → apps/api}/src/repositories/questionnaires.js +0 -0
  275. /package/dist/server/{server → apps/api}/src/repositories/rewards.js +0 -0
  276. /package/dist/server/{server → apps/api}/src/repositories/settings.js +0 -0
  277. /package/dist/server/{server → apps/api}/src/repositories/strategies.js +0 -0
  278. /package/dist/server/{server → apps/api}/src/repositories/surface-layouts.js +0 -0
  279. /package/dist/server/{server → apps/api}/src/repositories/tags.js +0 -0
  280. /package/dist/server/{server → apps/api}/src/repositories/task-runs.js +0 -0
  281. /package/dist/server/{server → apps/api}/src/repositories/tasks.js +0 -0
  282. /package/dist/server/{server → apps/api}/src/repositories/users.js +0 -0
  283. /package/dist/server/{server → apps/api}/src/repositories/weekly-reviews.js +0 -0
  284. /package/dist/server/{server → apps/api}/src/repositories/wiki-memory.js +0 -0
  285. /package/dist/server/{server → apps/api}/src/repositories/work-adjustments.js +0 -0
  286. /package/dist/server/{server → apps/api}/src/runtime-data-root.js +0 -0
  287. /package/dist/server/{server → apps/api}/src/screen-time.js +0 -0
  288. /package/dist/server/{server → apps/api}/src/seed-demo.js +0 -0
  289. /package/dist/server/{server → apps/api}/src/services/calendar-runtime.js +0 -0
  290. /package/dist/server/{server → apps/api}/src/services/context.js +0 -0
  291. /package/dist/server/{server → apps/api}/src/services/dashboard.js +0 -0
  292. /package/dist/server/{server → apps/api}/src/services/data-management.js +0 -0
  293. /package/dist/server/{server → apps/api}/src/services/devrage-scanner.js +0 -0
  294. /package/dist/server/{server → apps/api}/src/services/devrage.js +0 -0
  295. /package/dist/server/{server → apps/api}/src/services/entity-crud.js +0 -0
  296. /package/dist/server/{server → apps/api}/src/services/git-helper.js +0 -0
  297. /package/dist/server/{server → apps/api}/src/services/google-calendar-oauth-config.js +0 -0
  298. /package/dist/server/{server → apps/api}/src/services/insights.js +0 -0
  299. /package/dist/server/{server → apps/api}/src/services/legacy-wiki-markdown-import.js +0 -0
  300. /package/dist/server/{server → apps/api}/src/services/life-force-model.js +0 -0
  301. /package/dist/server/{server → apps/api}/src/services/life-force.js +0 -0
  302. /package/dist/server/{server → apps/api}/src/services/macos-calendar-helper.js +0 -0
  303. /package/dist/server/{server → apps/api}/src/services/openai-codex-oauth.js +0 -0
  304. /package/dist/server/{server → apps/api}/src/services/projects.js +0 -0
  305. /package/dist/server/{server → apps/api}/src/services/psyche-observation-calendar.js +0 -0
  306. /package/dist/server/{server → apps/api}/src/services/psyche.js +0 -0
  307. /package/dist/server/{server → apps/api}/src/services/relations.js +0 -0
  308. /package/dist/server/{server → apps/api}/src/services/reviews.js +0 -0
  309. /package/dist/server/{server → apps/api}/src/services/run-recovery.js +0 -0
  310. /package/dist/server/{server → apps/api}/src/services/tagging.js +0 -0
  311. /package/dist/server/{server → apps/api}/src/services/task-run-watchdog.js +0 -0
  312. /package/dist/server/{server → apps/api}/src/services/work-time.js +0 -0
  313. /package/dist/server/{server → apps/api}/src/web.js +0 -0
  314. /package/dist/server/{src → apps/web/src}/components/customization/utility-widgets.js +0 -0
  315. /package/dist/server/{src → apps/web/src}/components/ui/info-tooltip.js +0 -0
  316. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/calendar/calendar-boxes.js +0 -0
  317. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/goals/goals-boxes.js +0 -0
  318. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/habits/habits-boxes.js +0 -0
  319. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/health/health-boxes.js +0 -0
  320. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/insights/insights-boxes.js +0 -0
  321. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/kanban/kanban-boxes.js +0 -0
  322. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/movement/movement-boxes.js +0 -0
  323. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/notes/notes-boxes.js +0 -0
  324. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/overview/overview-boxes.js +0 -0
  325. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/preferences/preferences-boxes.js +0 -0
  326. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/projects/projects-boxes.js +0 -0
  327. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/psyche/psyche-boxes.js +0 -0
  328. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/questionnaires/questionnaires-boxes.js +0 -0
  329. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/review/review-boxes.js +0 -0
  330. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/shared/define-workbench-box.js +0 -0
  331. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/shared/generic-node-view.js +0 -0
  332. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/strategies/strategies-boxes.js +0 -0
  333. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/tasks/tasks-boxes.js +0 -0
  334. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/today/today-boxes.js +0 -0
  335. /package/dist/server/{src → apps/web/src}/components/workbench-boxes/wiki/wiki-boxes.js +0 -0
  336. /package/dist/server/{src → apps/web/src}/lib/api-error.js +0 -0
  337. /package/dist/server/{src → apps/web/src}/lib/api.js +0 -0
  338. /package/dist/server/{src → apps/web/src}/lib/calendar-name-deduper.js +0 -0
  339. /package/dist/server/{src → apps/web/src}/lib/data-management-types.js +0 -0
  340. /package/dist/server/{src → apps/web/src}/lib/date-keys.js +0 -0
  341. /package/dist/server/{src → apps/web/src}/lib/diagnostics.js +0 -0
  342. /package/dist/server/{src → apps/web/src}/lib/entity-visuals.js +0 -0
  343. /package/dist/server/{src → apps/web/src}/lib/gamification-catalog.js +0 -0
  344. /package/dist/server/{src → apps/web/src}/lib/knowledge-graph-types.js +0 -0
  345. /package/dist/server/{src → apps/web/src}/lib/knowledge-graph.js +0 -0
  346. /package/dist/server/{src → apps/web/src}/lib/psyche-schemas.js +0 -0
  347. /package/dist/server/{src → apps/web/src}/lib/psyche-types.js +0 -0
  348. /package/dist/server/{src → apps/web/src}/lib/questionnaire-types.js +0 -0
  349. /package/dist/server/{src → apps/web/src}/lib/runtime-paths.js +0 -0
  350. /package/dist/server/{src → apps/web/src}/lib/schemas.js +0 -0
  351. /package/dist/server/{src → apps/web/src}/lib/snapshot-normalizer.js +0 -0
  352. /package/dist/server/{src → apps/web/src}/lib/theme-system.js +0 -0
  353. /package/dist/server/{src → apps/web/src}/lib/types.js +0 -0
  354. /package/dist/server/{src → apps/web/src}/lib/utils.js +0 -0
  355. /package/dist/server/{src → apps/web/src}/lib/weight-loss-energy-model.js +0 -0
  356. /package/dist/server/{src → apps/web/src}/lib/weight-loss-types.js +0 -0
  357. /package/dist/server/{src → apps/web/src}/lib/workbench/boxes.js +0 -0
  358. /package/dist/server/{src → apps/web/src}/lib/workbench/contracts.js +0 -0
  359. /package/dist/server/{src → apps/web/src}/lib/workbench/nodes.js +0 -0
  360. /package/dist/server/{src → apps/web/src}/lib/workbench/registry.js +0 -0
  361. /package/dist/server/{src → apps/web/src}/lib/workbench/runtime.js +0 -0
  362. /package/dist/server/{src → apps/web/src}/lib/workbench/tool-catalog.js +0 -0
package/README.md CHANGED
@@ -69,11 +69,11 @@ The Forge web app also exposes these controls in `Settings -> Data`. Use it to s
69
69
 
70
70
  Overview dashboard:
71
71
 
72
- ![Forge overview dashboard](https://raw.githubusercontent.com/albertbuchard/forge/main/openclaw-plugin/docs/assets/forge-overview-dashboard.png)
72
+ ![Forge overview dashboard](https://raw.githubusercontent.com/albertbuchard/forge/main/plugins/openclaw/docs/assets/forge-overview-dashboard.png)
73
73
 
74
74
  Psyche graph:
75
75
 
76
- ![Forge Psyche graph](https://raw.githubusercontent.com/albertbuchard/forge/main/openclaw-plugin/docs/assets/forge-psyche-graph.png)
76
+ ![Forge Psyche graph](https://raw.githubusercontent.com/albertbuchard/forge/main/plugins/openclaw/docs/assets/forge-psyche-graph.png)
77
77
 
78
78
  ## What this plugin is
79
79
 
@@ -269,7 +269,7 @@ openclaw forge health
269
269
  Use this path when you are editing Forge and want OpenClaw to load this checkout directly:
270
270
 
271
271
  ```bash
272
- openclaw plugins install --link --dangerously-force-unsafe-install ./openclaw-plugin
272
+ openclaw plugins install --link --dangerously-force-unsafe-install ./plugins/openclaw
273
273
  openclaw plugins enable forge-openclaw-plugin
274
274
  openclaw gateway restart
275
275
  openclaw plugins inspect forge-openclaw-plugin --runtime
@@ -281,7 +281,7 @@ Use `--link` for active local development. Omit `--link` when you want to test t
281
281
  If you are running the command from the monorepo root instead of the Forge repo root, use:
282
282
 
283
283
  ```bash
284
- openclaw plugins install --link --dangerously-force-unsafe-install ./projects/forge/openclaw-plugin
284
+ openclaw plugins install --link --dangerously-force-unsafe-install ./projects/forge/plugins/openclaw
285
285
  ```
286
286
 
287
287
  ### Manual Fallback For Older OpenClaw Builds
@@ -547,13 +547,13 @@ FORGE_RELEASE_MODE=prepare ./scripts/release/release-forge-openclaw-plugin.sh pa
547
547
 
548
548
  That command bumps the aligned plugin versions, runs the verification suite, commits
549
549
  the release, and pushes `main` plus a matching tag like `v0.2.27`. The
550
- `.github/workflows/release-openclaw-plugin.yml` workflow then publishes the package
550
+ `.github/workflows/release-plugins/openclaw.yml` workflow then publishes the package
551
551
  from that tag.
552
552
 
553
553
  One-time npm setup for CI:
554
554
 
555
555
  - configure npm Trusted Publishing for this GitHub repository and the
556
- `release-openclaw-plugin.yml` workflow
556
+ `release-plugins/openclaw.yml` workflow
557
557
  - keep using GitHub-hosted runners for the publish job, because npm Trusted Publishing
558
558
  does not support self-hosted runners yet
559
559
 
@@ -1 +1 @@
1
- import{b6 as be,r as p,j as o,bU as ge,b7 as ee,bV as ye,bW as xe,aV as te,bw as ve,aS as re,bv as ae,bX as oe,bm as ke,bu as we,aH as Te,ba as je,aL as Ne,aY as Pe,bo as _e,aP as Ce,bj as Re,aU as Be,aE as Le}from"./vendor-BwL6m4SE.js";import{R as Se,P as Ae,O as Ie,C as $e,T as Ee,D as Me}from"./ui-B9TWEtCx.js";import{i as Fe}from"./state-Bpe5dF3T.js";import{E as qe}from"./entity-link-multiselect-Dl4rZqdg.js";import{g as Z,u as Ue,I as We,E as De,c as R,a as Ke,b as ze,s as He}from"./index-FpGANF9S.js";import{f as k}from"./user-ownership-DJGl4rAj.js";import"./use-anchored-overlay-position-BY4kNzPj.js";import"./motion-DcgUnXhY.js";import"./board-CuxQRKPJ.js";import"./forms-D1qJ3oOP.js";const Ge=["goal","project","task","strategy","habit","note","insight","calendar_event","work_block_template","task_timebox","psyche_value","behavior_pattern","behavior","belief_entry","mode_profile","flashcard","trigger_report"];function q(r){return r.map(t=>(t==null?void 0:t.trim())??"").filter(Boolean)}function d(r){return typeof r=="string"&&r.trim().length>0?r.trim():null}function Ve(r){if(!r||typeof r!="object")return null;const t=r,i=d(t.id),n=d(t.kind),c=d(t.displayName);return!i||!c||n!=="human"&&n!=="bot"?null:{id:i,kind:n,displayName:c,handle:d(t.handle)??"",description:d(t.description)??"",accentColor:d(t.accentColor)??"",createdAt:d(t.createdAt)??"",updatedAt:d(t.updatedAt)??""}}function Oe(r){return r==="create"||r==="new"||r.startsWith("create ")||r.startsWith("new ")}function Ye(r){return r==="create"||r==="new"?"":r.startsWith("create ")?r.slice(7).trim():r.startsWith("new ")?r.slice(4).trim():null}function A(r){return r.trim().toLowerCase()}function Qe(r,t){return r==="note"?Z(r,{noteKind:d(t==null?void 0:t.kind)==="wiki"?"wiki":"evidence"}):Z(r)}function M(r,t){switch(r){case"goal":return"Goal";case"project":return"Project";case"task":return"Task";case"strategy":return"Strategy";case"habit":return"Habit";case"note":return d(t==null?void 0:t.kind)==="wiki"?"Wiki page":"Note";case"insight":return"Insight";case"calendar_event":return"Calendar event";case"work_block_template":return"Work block";case"task_timebox":return"Timebox";case"psyche_value":return"Value";case"behavior_pattern":return"Pattern";case"behavior":return"Behavior";case"belief_entry":return"Belief";case"mode_profile":return"Mode";case"flashcard":return"Flashcard";case"trigger_report":return"Report";default:return r.replaceAll("_"," ")}}const J=[{id:"goal",family:"entity-type",label:"Goal",kind:"goal",searchText:"goal life goal direction",entityTypes:["goal"]},{id:"project",family:"entity-type",label:"Project",kind:"project",searchText:"project initiative",entityTypes:["project"]},{id:"task",family:"entity-type",label:"Task",kind:"task",searchText:"task action work item",entityTypes:["task"]},{id:"strategy",family:"entity-type",label:"Strategy",kind:"strategy",searchText:"strategy plan sequence roadmap",entityTypes:["strategy"]},{id:"habit",family:"entity-type",label:"Habit",kind:"habit",searchText:"habit recurring routine",entityTypes:["habit"]},{id:"note",family:"entity-type",label:"Note",kind:"note",searchText:"note evidence scratch note",entityTypes:["note"]},{id:"wiki_page",family:"entity-type",label:"Wiki page",kind:"wiki_page",searchText:"wiki page karpawiki article knowledge page",entityTypes:["note"]},{id:"calendar_event",family:"entity-type",label:"Calendar event",kind:"calendar_event",searchText:"calendar event meeting block schedule",entityTypes:["calendar_event"]},{id:"psyche_value",family:"entity-type",label:"Value",kind:"value",searchText:"value psyche value",entityTypes:["psyche_value"]},{id:"behavior_pattern",family:"entity-type",label:"Pattern",kind:"pattern",searchText:"pattern loop psyche pattern",entityTypes:["behavior_pattern"]},{id:"behavior",family:"entity-type",label:"Behavior",kind:"behavior",searchText:"behavior psyche behavior",entityTypes:["behavior"]},{id:"belief_entry",family:"entity-type",label:"Belief",kind:"belief",searchText:"belief schema belief entry",entityTypes:["belief_entry"]},{id:"mode_profile",family:"entity-type",label:"Mode",kind:"mode",searchText:"mode profile psyche mode",entityTypes:["mode_profile"]},{id:"flashcard",family:"entity-type",label:"Flashcard",kind:"flashcard",searchText:"flashcard card urge trigger reminder psyche",entityTypes:["flashcard"]},{id:"trigger_report",family:"entity-type",label:"Report",kind:"report",searchText:"report trigger report psyche report",entityTypes:["trigger_report"]}];function se(r,t){return(r==="belief_entry"?[t.statement,t.title,t.name]:r==="flashcard"?[t.title,t.message,t.triggerSentence]:r==="note"?[t.title,t.slug]:[t.title,t.displayName,t.statement,t.name,t.label,t.slug]).map(d).find(Boolean)??`${M(r,t)} ${String(t.id??"")}`}function ne(r,t){const i=[t.summary,t.description,t.overview,t.flexibleAlternative,t.originNote,t.endState,t.whyItMatters,t.valuedDirection,t.triggerSentence,t.triggerSituation,t.contentPlain].map(d).find(Boolean),n=[t.goalTitle,t.projectTitle,t.status,t.kind].map(d).find(Boolean),c=k(Ve(t.user)),u=q([r==="note"?M(r,t):null,c||null]).join(" · ");return q([i,n,c||null]).join(" · ")||u}function Xe(r,t){return q([se(r,t),ne(r,t),M(r,t),d(t.slug),d(t.handle)]).join(" ").toLowerCase()}function Ze(r,t,i){switch(r){case"goal":return`/goals/${encodeURIComponent(t)}`;case"project":return`/projects/${encodeURIComponent(t)}`;case"task":return`/tasks/${encodeURIComponent(t)}`;case"strategy":return`/strategies/${encodeURIComponent(t)}`;case"habit":return`/habits?focus=${encodeURIComponent(t)}`;case"note":{const n=d(i.kind),c=d(i.slug),u=d(i.spaceId);if(n==="wiki"&&c){const e=u?`?spaceId=${encodeURIComponent(u)}`:"";return`/wiki/page/${encodeURIComponent(c)}${e}`}return"/notes"}case"insight":return"/insights";case"calendar_event":case"work_block_template":case"task_timebox":return"/calendar";case"psyche_value":return`/psyche/values?focus=${encodeURIComponent(t)}`;case"behavior_pattern":return`/psyche/patterns?focus=${encodeURIComponent(t)}`;case"behavior":return`/psyche/behaviors?focus=${encodeURIComponent(t)}`;case"belief_entry":return`/psyche/schemas-beliefs?focus=${encodeURIComponent(t)}`;case"mode_profile":return`/psyche/modes?focus=${encodeURIComponent(t)}`;case"flashcard":return`/psyche/flashcards?focus=${encodeURIComponent(t)}`;case"trigger_report":return`/psyche/reports/${encodeURIComponent(t)}`;default:return null}}function U(r,t,i){const n=A(r);if(!n)return 0;const c=A(t),u=A(i),e=n.split(/\s+/).filter(Boolean);let h=0;c===n&&(h+=400),c.startsWith(n)&&(h+=240),c.includes(n)&&(h+=180),u.startsWith(n)&&(h+=32),u.includes(n)&&(h+=20);for(const N of e)c.startsWith(N)?h+=36:c.includes(N)&&(h+=24),u.includes(N)&&(h+=12);return h}function ie(r){if(r.length===0)return Ge;const t=new Set;return r.forEach(i=>{i.entityTypes.forEach(n=>t.add(n))}),Array.from(t)}function Je(r,t,i){if(!r.entityTypes.includes(t))return!1;if(t!=="note")return!0;const n=d(i.kind);return r.id==="wiki_page"?n==="wiki":r.id==="note"?n!=="wiki":!0}function et(r,t,i){if(i.length===0)return!0;const n=new Map;i.forEach(c=>{const u=n.get(c.family)??[];u.push(c),n.set(c.family,u)});for(const c of n.values())if(!c.some(e=>Je(e,r,t)))return!1;return!0}function tt(r,t){if(t.length===0)return!0;const i=new Set(t.filter(n=>n.family==="entity-type").map(n=>n.id));return i.size===0?!0:r.filterIds.some(n=>i.has(n))}function rt(r,t){const i=A(r);if(!Oe(i))return[];const n=Ye(i);return n===null?[]:t.map(c=>{const u=[c.title,c.quickActionTitle,c.description,...c.aliases].join(" ").toLowerCase(),e=n.length===0?1:U(n,c.quickActionTitle,u);return{...c,score:e}}).filter(c=>c.score>0).sort((c,u)=>u.score-c.score||c.quickActionTitle.localeCompare(u.quickActionTitle))}const at=new Set(ie([]));function ot(r){return typeof r=="string"&&at.has(r)}function l(r,t){const i=t??ee;switch(r){case"action":return{icon:oe,tileClassName:"border-emerald-300/18 bg-emerald-300/12 text-emerald-100 shadow-[0_18px_36px_rgba(52,211,153,0.12)]",badgeClassName:"border-emerald-300/18 bg-emerald-300/10 text-emerald-100"};case"wiki":return{icon:ae,tileClassName:"border-blue-300/18 bg-blue-300/12 text-blue-100 shadow-[0_18px_36px_rgba(96,165,250,0.12)]",badgeClassName:"border-blue-300/18 bg-blue-300/10 text-blue-100"};case"note":return{icon:re,tileClassName:"border-amber-300/18 bg-amber-300/12 text-amber-100 shadow-[0_18px_36px_rgba(251,191,36,0.12)]",badgeClassName:"border-amber-300/18 bg-amber-300/10 text-amber-100"};case"insight":return{icon:ve,tileClassName:"border-emerald-300/18 bg-emerald-300/12 text-emerald-100 shadow-[0_18px_36px_rgba(52,211,153,0.12)]",badgeClassName:"border-emerald-300/18 bg-emerald-300/10 text-emerald-100"};case"calendar":return{icon:te,tileClassName:"border-cyan-300/18 bg-cyan-300/12 text-cyan-100 shadow-[0_18px_36px_rgba(34,211,238,0.12)]",badgeClassName:"border-cyan-300/18 bg-cyan-300/10 text-cyan-100"};case"route":return{icon:i,tileClassName:"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] text-[var(--ui-ink-medium)] shadow-[var(--ui-shadow-soft)]",badgeClassName:"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] text-[var(--ui-ink-soft)]"};default:return{icon:i,tileClassName:"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] text-[var(--ui-ink-medium)] shadow-[var(--ui-shadow-soft)]",badgeClassName:"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] text-[var(--ui-ink-soft)]"}}}function st({item:r}){if(r.kind){const n=Ke(r.kind),c=n.icon;return o.jsx("span",{className:R("mt-0.5 inline-flex size-11 shrink-0 items-center justify-center rounded-[17px] border",n.subtleBadgeClassName),children:o.jsx(c,{className:R("size-5",n.iconClassName)})})}const t=l("search",r.icon),i=r.icon??t.icon;return o.jsx("span",{className:R("mt-0.5 inline-flex size-11 shrink-0 items-center justify-center rounded-[17px] border",r.tileClassName??t.tileClassName),children:o.jsx(i,{className:"size-5"})})}function nt({item:r}){if(r.kind&&r.section==="results")return o.jsx(ze,{kind:r.kind,label:r.category,compact:!0,gradient:!1});const t=l(r.section==="quick-actions"?"action":"search",r.icon),i=r.icon??t.icon;return o.jsxs("span",{className:R("inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-[11px] font-medium",r.badgeClassName??t.badgeClassName),children:[o.jsx(i,{className:"size-3.5"}),r.category]})}function f(r,t,i){return`${r} ${t} ${i}`.trim().toLowerCase()}function gt({open:r,onOpenChange:t,snapshot:i,selectedUserIds:n,createActions:c}){var O;const u=be(),{t:e}=Ue(),h=p.useRef([]),[N,W]=p.useState(""),[B,P]=p.useState(0),[L,D]=p.useState([]),j=p.useDeferredValue(N),y=A(j),b=p.useMemo(()=>J.filter(a=>L.includes(a.id)),[L]);p.useEffect(()=>{r||(W(""),P(0),D([]))},[r]);const ce=p.useMemo(()=>J.map(a=>({value:a.id,label:a.label,description:a.id==="wiki_page"?"Search only KarpaWiki pages.":a.id==="note"?"Search notes and evidence that are not wiki pages.":`Search ${a.label.toLowerCase()} records.`,searchText:a.searchText,kind:a.kind})),[]),le=p.useMemo(()=>({routes:e("common.actionBar.sections.routes"),recent:e("common.actionBar.sections.recent"),"quick-actions":e("common.actionBar.sections.quickActions"),results:e("common.actionBar.sections.results")}),[e]),I=p.useMemo(()=>[{id:"route-overview",title:e("common.routeLabels.overview"),detail:e("common.commandPalette.routeOverview"),href:"/overview",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.overview"),e("common.commandPalette.routeOverview"),e("common.commandPalette.categoryRoute")),score:0,...l("route",ke)},{id:"route-today",title:e("common.routeLabels.today"),detail:e("common.commandPalette.routeToday"),href:"/today",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.today"),e("common.commandPalette.routeToday"),e("common.commandPalette.categoryRoute")),score:0,...l("route",we)},{id:"route-kanban",title:e("common.routeLabels.kanban"),detail:e("common.commandPalette.routeKanban"),href:"/kanban",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.kanban"),e("common.commandPalette.routeKanban"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Te)},{id:"route-psyche",title:e("common.routeLabels.psyche"),detail:e("common.commandPalette.routePsyche"),href:"/psyche",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.psyche"),e("common.commandPalette.routePsyche"),e("common.commandPalette.categoryRoute")),score:0,...l("route",je)},{id:"route-notes",title:e("common.routeLabels.notes"),detail:e("common.commandPalette.routeNotes"),href:"/notes",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.notes"),e("common.commandPalette.routeNotes"),e("common.commandPalette.categoryRoute")),score:0,...l("route",re)},{id:"route-wiki",title:e("common.routeLabels.wiki"),detail:e("common.commandPalette.routeWiki"),href:"/wiki",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.wiki"),e("common.commandPalette.routeWiki"),e("common.commandPalette.categoryRoute")),score:0,...l("route",ae)},{id:"route-goals",title:e("common.routeLabels.goals"),detail:e("common.commandPalette.routeGoals"),href:"/goals",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.goals"),e("common.commandPalette.routeGoals"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Ne)},{id:"route-habits",title:e("common.routeLabels.habits"),detail:e("common.commandPalette.routeHabits"),href:"/habits",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.habits"),e("common.commandPalette.routeHabits"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Pe)},{id:"route-projects",title:e("common.routeLabels.projects"),detail:e("common.commandPalette.routeProjects"),href:"/projects",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.projects"),e("common.commandPalette.routeProjects"),e("common.commandPalette.categoryRoute")),score:0,...l("route",_e)},{id:"route-strategies",title:e("common.routeLabels.strategies"),detail:e("common.commandPalette.routeStrategies"),href:"/strategies",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.strategies"),e("common.commandPalette.routeStrategies"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Ce)},{id:"route-preferences",title:e("common.routeLabels.preferences"),detail:e("common.commandPalette.routePreferences"),href:"/preferences",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.preferences"),e("common.commandPalette.routePreferences"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Re)},{id:"route-calendar",title:e("common.routeLabels.calendar"),detail:e("common.commandPalette.routeCalendar"),href:"/calendar",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.calendar"),e("common.commandPalette.routeCalendar"),e("common.commandPalette.categoryRoute")),score:0,...l("route",te)},{id:"route-knowledge-graph",title:"Knowledge Graph",detail:"Open the world model and graph views for Forge.",href:"/knowledge-graph",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f("Knowledge Graph","Open the world model and graph views for Forge.",e("common.commandPalette.categoryRoute")),score:0,...l("route",Be)},{id:"route-settings",title:e("common.routeLabels.settings"),detail:e("common.commandPalette.routeSettings"),href:"/settings",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.settings"),e("common.commandPalette.routeSettings"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Le)}],[e]),K=p.useMemo(()=>{const a=[...i.overview.topTasks.slice(0,4).map(s=>({id:`task-${s.id}`,title:s.title,detail:k(s.user)||e("common.commandPalette.openFocusTask"),href:`/tasks/${s.id}`,category:e("common.commandPalette.categoryTask"),section:"recent",searchText:`${s.title} ${k(s.user)}`.toLowerCase(),score:0,kind:"task"})),...i.dashboard.projects.slice(0,3).map(s=>({id:`project-${s.id}`,title:s.title,detail:[s.goalTitle,k(s.user)].filter(Boolean).join(" · "),href:`/projects/${s.id}`,category:e("common.commandPalette.categoryProject"),section:"recent",searchText:`${s.title} ${s.goalTitle??""} ${k(s.user)}`.toLowerCase(),score:0,kind:"project"})),...i.overview.activeGoals.slice(0,2).map(s=>({id:`goal-${s.id}`,title:s.title,detail:k(s.user)||e("common.commandPalette.openLifeGoal"),href:`/goals/${s.id}`,category:e("common.commandPalette.categoryGoal"),section:"recent",searchText:`${s.title} ${k(s.user)}`.toLowerCase(),score:0,kind:"goal"})),...i.dashboard.habits.slice(0,2).map(s=>({id:`habit-${s.id}`,title:s.title,detail:[s.frequency==="daily"?"Daily habit":"Weekly habit",k(s.user)].filter(Boolean).join(" · "),href:`/habits?focus=${s.id}`,category:e("common.routeLabels.habits"),section:"recent",searchText:`${s.title} ${s.frequency} ${k(s.user)}`.toLowerCase(),score:0,kind:"habit"}))].slice(0,8);return[...I.slice(0,6),...a]},[I,i,e]),$=Fe({queryKey:["forge-action-bar-search",y,[...L].sort().join("|"),[...n].sort().join("|")],enabled:r&&(y.length>0||b.length>0),queryFn:async()=>{const a=ie(b),s=await He({searches:a.map(g=>({entityTypes:[g],query:j.trim()||void 0,userIds:n.length>0?n:void 0,limit:g==="note"?6:4,clientRef:g}))}),x=new Map;for(const g of s.results){const w=Array.isArray(g.matches)?g.matches??[]:[];for(const S of w){if(!S||typeof S!="object")continue;const m=S;if(!ot(m.entityType)||typeof m.id!="string"||!m.entity||typeof m.entity!="object")continue;const T=m.entity;if(!et(m.entityType,T,b))continue;const Y=Ze(m.entityType,m.id,T);if(!Y)continue;const Q=se(m.entityType,T),de=ne(m.entityType,T),pe=M(m.entityType,T),X=Xe(m.entityType,T),fe=Qe(m.entityType,T)??void 0,he=y.length>0?U(j,Q,X):0;let _=l("search");m.entityType==="note"?_=l(T.kind==="wiki"?"wiki":"note"):m.entityType==="insight"?_=l("insight"):(m.entityType==="calendar_event"||m.entityType==="task_timebox"||m.entityType==="work_block_template")&&(_=l("calendar"));const C={id:`${m.entityType}-${m.id}`,title:Q,detail:de,href:Y,category:pe,section:"results",searchText:X,score:he,kind:fe,icon:_.icon,tileClassName:_.tileClassName,badgeClassName:_.badgeClassName},E=x.get(C.id);(!E||C.score>E.score||C.score===E.score&&C.title<E.title)&&x.set(C.id,C)}}return Array.from(x.values()).sort((g,w)=>w.score!==g.score?w.score-g.score:g.title.localeCompare(w.title)).slice(0,12)}}),z=p.useMemo(()=>y?I.map(a=>({...a,score:U(j,a.title,a.searchText)})).filter(a=>a.score>0).sort((a,s)=>s.score-a.score||a.title.localeCompare(s.title)).slice(0,4):[],[j,y,I]),H=p.useMemo(()=>rt(j,c).filter(a=>tt(a,b)).slice(0,6).map(a=>({id:`quick-${a.id}`,title:a.quickActionTitle,detail:a.description,category:"Quick action",section:"quick-actions",searchText:`${a.quickActionTitle} ${a.description} ${a.aliases.join(" ")}`.toLowerCase(),score:a.score,onSelect:a.onSelect,...l("action",oe)})),[c,j,b]),v=p.useMemo(()=>{if(!y&&b.length===0)return K;const a=[...H,...z],s=new Set(a.map(x=>x.id));for(const x of $.data??[])s.has(x.id)||(s.add(x.id),a.push(x));return a.slice(0,16)},[K,$.data,y,H,z,b.length]);p.useEffect(()=>{P(0)},[y,r,L.join("|")]),p.useEffect(()=>{v.length!==0&&P(a=>Math.min(Math.max(a,0),v.length-1))},[v]),p.useEffect(()=>{const a=h.current[B];a==null||a.scrollIntoView({block:"nearest"})},[B]);const G=v[B]??null,F=i.users.filter(a=>n.includes(a.id)),me=n.length===0?"All humans and bots":F.length===1?((O=F[0])==null?void 0:O.displayName)??"1 selected owner":`${F.length||n.length} selected owners`,ue=(y.length>0||b.length>0)&&$.isFetching,V=a=>{if(t(!1),a.onSelect){a.onSelect();return}a.href&&u(a.href)};return o.jsx(Se,{open:r,onOpenChange:t,children:o.jsxs(Ae,{children:[o.jsx(Ie,{className:"surface-overlay fixed inset-0 z-40 backdrop-blur-xl"}),o.jsxs($e,{className:"surface-modal-panel fixed inset-x-3 bottom-3 top-3 z-50 flex flex-col overflow-hidden rounded-[30px] border sm:inset-x-6 sm:bottom-6 sm:top-6 md:left-1/2 md:right-auto md:top-[9vh] md:h-[min(82vh,48rem)] md:w-[min(64rem,calc(100vw-2rem))] md:-translate-x-1/2 md:bottom-auto",children:[o.jsx(Ee,{className:"sr-only",children:e("common.actionBar.title")}),o.jsx(Me,{className:"sr-only",children:e("common.actionBar.description")}),o.jsxs("div",{className:"border-b border-[var(--ui-border-subtle)] px-4 py-4 sm:px-5",children:[o.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[o.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[o.jsxs("div",{className:"inline-flex items-center gap-2 rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-3 py-1.5 text-[12px] text-[var(--ui-ink-medium)]",children:[o.jsx("span",{className:"rounded-full bg-[var(--ui-surface-2)] px-2 py-0.5 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:"Scope"}),o.jsx("span",{children:me})]}),b.length>0?o.jsxs("div",{className:"inline-flex items-center gap-2 rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-3 py-1.5 text-[12px] text-[var(--ui-ink-medium)]",children:[o.jsx(ge,{className:"size-3.5 text-[var(--ui-ink-faint)]"}),o.jsxs("span",{children:[b.length," filter",b.length===1?"":"s"]})]}):null]}),o.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:[o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Shift Shift"}),o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Cmd/Ctrl K"})]})]}),o.jsxs("div",{className:"mt-4 rounded-[24px] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-2)] px-4 py-4 shadow-[inset_0_1px_0_var(--ui-border-subtle)]",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(ee,{className:"size-5 text-[var(--ui-ink-faint)]"}),o.jsx(We,{autoFocus:!0,value:N,onChange:a=>W(a.target.value),onKeyDown:a=>{if(a.key==="ArrowDown"){a.preventDefault(),P(s=>v.length===0?0:Math.min(s+1,v.length-1));return}if(a.key==="ArrowUp"){a.preventDefault(),P(s=>Math.max(s-1,0));return}if(a.key==="Enter"&&G){a.preventDefault(),V(G);return}a.key==="Escape"&&(a.preventDefault(),t(!1))},placeholder:e("common.actionBar.searchPlaceholder"),className:"border-0 bg-transparent px-0 py-0 text-[1rem] focus:border-0"}),ue?o.jsx(ye,{className:"size-4 shrink-0 animate-spin text-[var(--ui-ink-faint)]"}):null]}),o.jsx("div",{className:"mt-2 pl-8 text-[13px] leading-6 text-[var(--ui-ink-soft)]",children:e(y?"common.actionBar.activeHint":"common.actionBar.idleHint")}),o.jsxs("div",{className:"mt-4 border-t border-[var(--ui-border-subtle)] pt-4",children:[o.jsx("div",{className:"mb-2 pl-1 text-[11px] uppercase tracking-[0.18em] text-[var(--ui-ink-faint)]",children:e("common.actionBar.filtersLabel")}),o.jsx(qe,{options:ce,selectedValues:L,onChange:D,placeholder:e("common.actionBar.filtersPlaceholder"),emptyMessage:e("common.actionBar.filtersEmpty"),variant:"action-bar"})]})]})]}),o.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto px-3 py-3 sm:px-4",children:v.length===0?o.jsx("div",{className:"rounded-[24px] border border-dashed border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-4 py-8 text-center text-sm text-[var(--ui-ink-soft)]",children:$.isFetching?e("common.actionBar.searching"):b.length>0?e("common.actionBar.noResultsWithFilters"):e("common.actionBar.noResults")}):o.jsx("div",{className:"grid gap-2",children:v.map((a,s)=>{var w;const g=(((w=v[s-1])==null?void 0:w.section)??null)!==a.section;return o.jsxs("div",{children:[g?o.jsx("div",{className:"px-2 pb-1 pt-2 text-[11px] uppercase tracking-[0.18em] text-[var(--ui-ink-faint)] first:pt-0",children:le[a.section]}):null,o.jsxs("button",{ref:S=>{h.current[s]=S},type:"button",className:R("group flex w-full items-start gap-3 rounded-[24px] border px-4 py-3.5 text-left transition",s===B?"border-[var(--ui-border-strong)] bg-[var(--ui-surface-3)] shadow-[var(--ui-shadow-soft)]":"border-transparent bg-[var(--ui-surface-1)] hover:border-[var(--ui-border-subtle)] hover:bg-[var(--ui-surface-hover)]"),onMouseEnter:()=>P(s),onClick:()=>V(a),children:[o.jsx(st,{item:a}),o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx("div",{className:"flex flex-wrap items-center gap-2",children:o.jsx(nt,{item:a})}),o.jsx("div",{className:"mt-2 text-[15px] font-medium text-[var(--ui-ink-strong)]",children:a.kind&&a.section==="results"?o.jsx(De,{kind:a.kind,label:a.title,showIcon:!1,labelClassName:"text-[var(--ui-ink-strong)]"}):a.title}),o.jsx("div",{className:"mt-1 text-sm leading-6 text-[var(--ui-ink-soft)]",children:a.detail})]}),o.jsx(xe,{className:R("mt-1 size-4 shrink-0 transition",s===B?"text-[var(--ui-ink-medium)]":"text-[var(--ui-ink-faint)] group-hover:text-[var(--ui-ink-soft)]")})]})]},a.id)})})}),o.jsx("div",{className:"border-t border-[var(--ui-border-subtle)] px-4 py-3 sm:px-5",children:o.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-[12px] text-[var(--ui-ink-faint)]",children:[o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Up/Down navigate"}),o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Enter open"}),o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Esc close"})]})})]})]})})}export{gt as ActionBar};
1
+ import{b6 as be,r as p,j as o,bU as ge,b7 as ee,bV as ye,bW as xe,aV as te,bw as ve,aS as re,bv as ae,bX as oe,bm as ke,bu as we,aH as Te,ba as je,aL as Ne,aY as Pe,bo as _e,aP as Ce,bj as Re,aU as Be,aE as Le}from"./vendor-BwL6m4SE.js";import{R as Se,P as Ae,O as Ie,C as $e,T as Ee,D as Me}from"./ui-B9TWEtCx.js";import{i as Fe}from"./state-Bpe5dF3T.js";import{E as qe}from"./entity-link-multiselect-C--AiCMb.js";import{g as Z,u as Ue,I as We,E as De,c as R,a as Ke,b as ze,s as He}from"./index-izRKx6JK.js";import{f as k}from"./user-ownership-DJGl4rAj.js";import"./use-anchored-overlay-position-BY4kNzPj.js";import"./motion-DcgUnXhY.js";import"./board-CuxQRKPJ.js";import"./forms-D1qJ3oOP.js";const Ge=["goal","project","task","strategy","habit","note","insight","calendar_event","work_block_template","task_timebox","psyche_value","behavior_pattern","behavior","belief_entry","mode_profile","flashcard","trigger_report"];function q(r){return r.map(t=>(t==null?void 0:t.trim())??"").filter(Boolean)}function d(r){return typeof r=="string"&&r.trim().length>0?r.trim():null}function Ve(r){if(!r||typeof r!="object")return null;const t=r,i=d(t.id),n=d(t.kind),c=d(t.displayName);return!i||!c||n!=="human"&&n!=="bot"?null:{id:i,kind:n,displayName:c,handle:d(t.handle)??"",description:d(t.description)??"",accentColor:d(t.accentColor)??"",createdAt:d(t.createdAt)??"",updatedAt:d(t.updatedAt)??""}}function Oe(r){return r==="create"||r==="new"||r.startsWith("create ")||r.startsWith("new ")}function Ye(r){return r==="create"||r==="new"?"":r.startsWith("create ")?r.slice(7).trim():r.startsWith("new ")?r.slice(4).trim():null}function A(r){return r.trim().toLowerCase()}function Qe(r,t){return r==="note"?Z(r,{noteKind:d(t==null?void 0:t.kind)==="wiki"?"wiki":"evidence"}):Z(r)}function M(r,t){switch(r){case"goal":return"Goal";case"project":return"Project";case"task":return"Task";case"strategy":return"Strategy";case"habit":return"Habit";case"note":return d(t==null?void 0:t.kind)==="wiki"?"Wiki page":"Note";case"insight":return"Insight";case"calendar_event":return"Calendar event";case"work_block_template":return"Work block";case"task_timebox":return"Timebox";case"psyche_value":return"Value";case"behavior_pattern":return"Pattern";case"behavior":return"Behavior";case"belief_entry":return"Belief";case"mode_profile":return"Mode";case"flashcard":return"Flashcard";case"trigger_report":return"Report";default:return r.replaceAll("_"," ")}}const J=[{id:"goal",family:"entity-type",label:"Goal",kind:"goal",searchText:"goal life goal direction",entityTypes:["goal"]},{id:"project",family:"entity-type",label:"Project",kind:"project",searchText:"project initiative",entityTypes:["project"]},{id:"task",family:"entity-type",label:"Task",kind:"task",searchText:"task action work item",entityTypes:["task"]},{id:"strategy",family:"entity-type",label:"Strategy",kind:"strategy",searchText:"strategy plan sequence roadmap",entityTypes:["strategy"]},{id:"habit",family:"entity-type",label:"Habit",kind:"habit",searchText:"habit recurring routine",entityTypes:["habit"]},{id:"note",family:"entity-type",label:"Note",kind:"note",searchText:"note evidence scratch note",entityTypes:["note"]},{id:"wiki_page",family:"entity-type",label:"Wiki page",kind:"wiki_page",searchText:"wiki page karpawiki article knowledge page",entityTypes:["note"]},{id:"calendar_event",family:"entity-type",label:"Calendar event",kind:"calendar_event",searchText:"calendar event meeting block schedule",entityTypes:["calendar_event"]},{id:"psyche_value",family:"entity-type",label:"Value",kind:"value",searchText:"value psyche value",entityTypes:["psyche_value"]},{id:"behavior_pattern",family:"entity-type",label:"Pattern",kind:"pattern",searchText:"pattern loop psyche pattern",entityTypes:["behavior_pattern"]},{id:"behavior",family:"entity-type",label:"Behavior",kind:"behavior",searchText:"behavior psyche behavior",entityTypes:["behavior"]},{id:"belief_entry",family:"entity-type",label:"Belief",kind:"belief",searchText:"belief schema belief entry",entityTypes:["belief_entry"]},{id:"mode_profile",family:"entity-type",label:"Mode",kind:"mode",searchText:"mode profile psyche mode",entityTypes:["mode_profile"]},{id:"flashcard",family:"entity-type",label:"Flashcard",kind:"flashcard",searchText:"flashcard card urge trigger reminder psyche",entityTypes:["flashcard"]},{id:"trigger_report",family:"entity-type",label:"Report",kind:"report",searchText:"report trigger report psyche report",entityTypes:["trigger_report"]}];function se(r,t){return(r==="belief_entry"?[t.statement,t.title,t.name]:r==="flashcard"?[t.title,t.message,t.triggerSentence]:r==="note"?[t.title,t.slug]:[t.title,t.displayName,t.statement,t.name,t.label,t.slug]).map(d).find(Boolean)??`${M(r,t)} ${String(t.id??"")}`}function ne(r,t){const i=[t.summary,t.description,t.overview,t.flexibleAlternative,t.originNote,t.endState,t.whyItMatters,t.valuedDirection,t.triggerSentence,t.triggerSituation,t.contentPlain].map(d).find(Boolean),n=[t.goalTitle,t.projectTitle,t.status,t.kind].map(d).find(Boolean),c=k(Ve(t.user)),u=q([r==="note"?M(r,t):null,c||null]).join(" · ");return q([i,n,c||null]).join(" · ")||u}function Xe(r,t){return q([se(r,t),ne(r,t),M(r,t),d(t.slug),d(t.handle)]).join(" ").toLowerCase()}function Ze(r,t,i){switch(r){case"goal":return`/goals/${encodeURIComponent(t)}`;case"project":return`/projects/${encodeURIComponent(t)}`;case"task":return`/tasks/${encodeURIComponent(t)}`;case"strategy":return`/strategies/${encodeURIComponent(t)}`;case"habit":return`/habits?focus=${encodeURIComponent(t)}`;case"note":{const n=d(i.kind),c=d(i.slug),u=d(i.spaceId);if(n==="wiki"&&c){const e=u?`?spaceId=${encodeURIComponent(u)}`:"";return`/wiki/page/${encodeURIComponent(c)}${e}`}return"/notes"}case"insight":return"/insights";case"calendar_event":case"work_block_template":case"task_timebox":return"/calendar";case"psyche_value":return`/psyche/values?focus=${encodeURIComponent(t)}`;case"behavior_pattern":return`/psyche/patterns?focus=${encodeURIComponent(t)}`;case"behavior":return`/psyche/behaviors?focus=${encodeURIComponent(t)}`;case"belief_entry":return`/psyche/schemas-beliefs?focus=${encodeURIComponent(t)}`;case"mode_profile":return`/psyche/modes?focus=${encodeURIComponent(t)}`;case"flashcard":return`/psyche/flashcards?focus=${encodeURIComponent(t)}`;case"trigger_report":return`/psyche/reports/${encodeURIComponent(t)}`;default:return null}}function U(r,t,i){const n=A(r);if(!n)return 0;const c=A(t),u=A(i),e=n.split(/\s+/).filter(Boolean);let h=0;c===n&&(h+=400),c.startsWith(n)&&(h+=240),c.includes(n)&&(h+=180),u.startsWith(n)&&(h+=32),u.includes(n)&&(h+=20);for(const N of e)c.startsWith(N)?h+=36:c.includes(N)&&(h+=24),u.includes(N)&&(h+=12);return h}function ie(r){if(r.length===0)return Ge;const t=new Set;return r.forEach(i=>{i.entityTypes.forEach(n=>t.add(n))}),Array.from(t)}function Je(r,t,i){if(!r.entityTypes.includes(t))return!1;if(t!=="note")return!0;const n=d(i.kind);return r.id==="wiki_page"?n==="wiki":r.id==="note"?n!=="wiki":!0}function et(r,t,i){if(i.length===0)return!0;const n=new Map;i.forEach(c=>{const u=n.get(c.family)??[];u.push(c),n.set(c.family,u)});for(const c of n.values())if(!c.some(e=>Je(e,r,t)))return!1;return!0}function tt(r,t){if(t.length===0)return!0;const i=new Set(t.filter(n=>n.family==="entity-type").map(n=>n.id));return i.size===0?!0:r.filterIds.some(n=>i.has(n))}function rt(r,t){const i=A(r);if(!Oe(i))return[];const n=Ye(i);return n===null?[]:t.map(c=>{const u=[c.title,c.quickActionTitle,c.description,...c.aliases].join(" ").toLowerCase(),e=n.length===0?1:U(n,c.quickActionTitle,u);return{...c,score:e}}).filter(c=>c.score>0).sort((c,u)=>u.score-c.score||c.quickActionTitle.localeCompare(u.quickActionTitle))}const at=new Set(ie([]));function ot(r){return typeof r=="string"&&at.has(r)}function l(r,t){const i=t??ee;switch(r){case"action":return{icon:oe,tileClassName:"border-emerald-300/18 bg-emerald-300/12 text-emerald-100 shadow-[0_18px_36px_rgba(52,211,153,0.12)]",badgeClassName:"border-emerald-300/18 bg-emerald-300/10 text-emerald-100"};case"wiki":return{icon:ae,tileClassName:"border-blue-300/18 bg-blue-300/12 text-blue-100 shadow-[0_18px_36px_rgba(96,165,250,0.12)]",badgeClassName:"border-blue-300/18 bg-blue-300/10 text-blue-100"};case"note":return{icon:re,tileClassName:"border-amber-300/18 bg-amber-300/12 text-amber-100 shadow-[0_18px_36px_rgba(251,191,36,0.12)]",badgeClassName:"border-amber-300/18 bg-amber-300/10 text-amber-100"};case"insight":return{icon:ve,tileClassName:"border-emerald-300/18 bg-emerald-300/12 text-emerald-100 shadow-[0_18px_36px_rgba(52,211,153,0.12)]",badgeClassName:"border-emerald-300/18 bg-emerald-300/10 text-emerald-100"};case"calendar":return{icon:te,tileClassName:"border-cyan-300/18 bg-cyan-300/12 text-cyan-100 shadow-[0_18px_36px_rgba(34,211,238,0.12)]",badgeClassName:"border-cyan-300/18 bg-cyan-300/10 text-cyan-100"};case"route":return{icon:i,tileClassName:"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] text-[var(--ui-ink-medium)] shadow-[var(--ui-shadow-soft)]",badgeClassName:"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] text-[var(--ui-ink-soft)]"};default:return{icon:i,tileClassName:"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] text-[var(--ui-ink-medium)] shadow-[var(--ui-shadow-soft)]",badgeClassName:"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] text-[var(--ui-ink-soft)]"}}}function st({item:r}){if(r.kind){const n=Ke(r.kind),c=n.icon;return o.jsx("span",{className:R("mt-0.5 inline-flex size-11 shrink-0 items-center justify-center rounded-[17px] border",n.subtleBadgeClassName),children:o.jsx(c,{className:R("size-5",n.iconClassName)})})}const t=l("search",r.icon),i=r.icon??t.icon;return o.jsx("span",{className:R("mt-0.5 inline-flex size-11 shrink-0 items-center justify-center rounded-[17px] border",r.tileClassName??t.tileClassName),children:o.jsx(i,{className:"size-5"})})}function nt({item:r}){if(r.kind&&r.section==="results")return o.jsx(ze,{kind:r.kind,label:r.category,compact:!0,gradient:!1});const t=l(r.section==="quick-actions"?"action":"search",r.icon),i=r.icon??t.icon;return o.jsxs("span",{className:R("inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-[11px] font-medium",r.badgeClassName??t.badgeClassName),children:[o.jsx(i,{className:"size-3.5"}),r.category]})}function f(r,t,i){return`${r} ${t} ${i}`.trim().toLowerCase()}function gt({open:r,onOpenChange:t,snapshot:i,selectedUserIds:n,createActions:c}){var O;const u=be(),{t:e}=Ue(),h=p.useRef([]),[N,W]=p.useState(""),[B,P]=p.useState(0),[L,D]=p.useState([]),j=p.useDeferredValue(N),y=A(j),b=p.useMemo(()=>J.filter(a=>L.includes(a.id)),[L]);p.useEffect(()=>{r||(W(""),P(0),D([]))},[r]);const ce=p.useMemo(()=>J.map(a=>({value:a.id,label:a.label,description:a.id==="wiki_page"?"Search only KarpaWiki pages.":a.id==="note"?"Search notes and evidence that are not wiki pages.":`Search ${a.label.toLowerCase()} records.`,searchText:a.searchText,kind:a.kind})),[]),le=p.useMemo(()=>({routes:e("common.actionBar.sections.routes"),recent:e("common.actionBar.sections.recent"),"quick-actions":e("common.actionBar.sections.quickActions"),results:e("common.actionBar.sections.results")}),[e]),I=p.useMemo(()=>[{id:"route-overview",title:e("common.routeLabels.overview"),detail:e("common.commandPalette.routeOverview"),href:"/overview",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.overview"),e("common.commandPalette.routeOverview"),e("common.commandPalette.categoryRoute")),score:0,...l("route",ke)},{id:"route-today",title:e("common.routeLabels.today"),detail:e("common.commandPalette.routeToday"),href:"/today",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.today"),e("common.commandPalette.routeToday"),e("common.commandPalette.categoryRoute")),score:0,...l("route",we)},{id:"route-kanban",title:e("common.routeLabels.kanban"),detail:e("common.commandPalette.routeKanban"),href:"/kanban",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.kanban"),e("common.commandPalette.routeKanban"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Te)},{id:"route-psyche",title:e("common.routeLabels.psyche"),detail:e("common.commandPalette.routePsyche"),href:"/psyche",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.psyche"),e("common.commandPalette.routePsyche"),e("common.commandPalette.categoryRoute")),score:0,...l("route",je)},{id:"route-notes",title:e("common.routeLabels.notes"),detail:e("common.commandPalette.routeNotes"),href:"/notes",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.notes"),e("common.commandPalette.routeNotes"),e("common.commandPalette.categoryRoute")),score:0,...l("route",re)},{id:"route-wiki",title:e("common.routeLabels.wiki"),detail:e("common.commandPalette.routeWiki"),href:"/wiki",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.wiki"),e("common.commandPalette.routeWiki"),e("common.commandPalette.categoryRoute")),score:0,...l("route",ae)},{id:"route-goals",title:e("common.routeLabels.goals"),detail:e("common.commandPalette.routeGoals"),href:"/goals",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.goals"),e("common.commandPalette.routeGoals"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Ne)},{id:"route-habits",title:e("common.routeLabels.habits"),detail:e("common.commandPalette.routeHabits"),href:"/habits",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.habits"),e("common.commandPalette.routeHabits"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Pe)},{id:"route-projects",title:e("common.routeLabels.projects"),detail:e("common.commandPalette.routeProjects"),href:"/projects",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.projects"),e("common.commandPalette.routeProjects"),e("common.commandPalette.categoryRoute")),score:0,...l("route",_e)},{id:"route-strategies",title:e("common.routeLabels.strategies"),detail:e("common.commandPalette.routeStrategies"),href:"/strategies",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.strategies"),e("common.commandPalette.routeStrategies"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Ce)},{id:"route-preferences",title:e("common.routeLabels.preferences"),detail:e("common.commandPalette.routePreferences"),href:"/preferences",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.preferences"),e("common.commandPalette.routePreferences"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Re)},{id:"route-calendar",title:e("common.routeLabels.calendar"),detail:e("common.commandPalette.routeCalendar"),href:"/calendar",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.calendar"),e("common.commandPalette.routeCalendar"),e("common.commandPalette.categoryRoute")),score:0,...l("route",te)},{id:"route-knowledge-graph",title:"Knowledge Graph",detail:"Open the world model and graph views for Forge.",href:"/knowledge-graph",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f("Knowledge Graph","Open the world model and graph views for Forge.",e("common.commandPalette.categoryRoute")),score:0,...l("route",Be)},{id:"route-settings",title:e("common.routeLabels.settings"),detail:e("common.commandPalette.routeSettings"),href:"/settings",category:e("common.commandPalette.categoryRoute"),section:"routes",searchText:f(e("common.routeLabels.settings"),e("common.commandPalette.routeSettings"),e("common.commandPalette.categoryRoute")),score:0,...l("route",Le)}],[e]),K=p.useMemo(()=>{const a=[...i.overview.topTasks.slice(0,4).map(s=>({id:`task-${s.id}`,title:s.title,detail:k(s.user)||e("common.commandPalette.openFocusTask"),href:`/tasks/${s.id}`,category:e("common.commandPalette.categoryTask"),section:"recent",searchText:`${s.title} ${k(s.user)}`.toLowerCase(),score:0,kind:"task"})),...i.dashboard.projects.slice(0,3).map(s=>({id:`project-${s.id}`,title:s.title,detail:[s.goalTitle,k(s.user)].filter(Boolean).join(" · "),href:`/projects/${s.id}`,category:e("common.commandPalette.categoryProject"),section:"recent",searchText:`${s.title} ${s.goalTitle??""} ${k(s.user)}`.toLowerCase(),score:0,kind:"project"})),...i.overview.activeGoals.slice(0,2).map(s=>({id:`goal-${s.id}`,title:s.title,detail:k(s.user)||e("common.commandPalette.openLifeGoal"),href:`/goals/${s.id}`,category:e("common.commandPalette.categoryGoal"),section:"recent",searchText:`${s.title} ${k(s.user)}`.toLowerCase(),score:0,kind:"goal"})),...i.dashboard.habits.slice(0,2).map(s=>({id:`habit-${s.id}`,title:s.title,detail:[s.frequency==="daily"?"Daily habit":"Weekly habit",k(s.user)].filter(Boolean).join(" · "),href:`/habits?focus=${s.id}`,category:e("common.routeLabels.habits"),section:"recent",searchText:`${s.title} ${s.frequency} ${k(s.user)}`.toLowerCase(),score:0,kind:"habit"}))].slice(0,8);return[...I.slice(0,6),...a]},[I,i,e]),$=Fe({queryKey:["forge-action-bar-search",y,[...L].sort().join("|"),[...n].sort().join("|")],enabled:r&&(y.length>0||b.length>0),queryFn:async()=>{const a=ie(b),s=await He({searches:a.map(g=>({entityTypes:[g],query:j.trim()||void 0,userIds:n.length>0?n:void 0,limit:g==="note"?6:4,clientRef:g}))}),x=new Map;for(const g of s.results){const w=Array.isArray(g.matches)?g.matches??[]:[];for(const S of w){if(!S||typeof S!="object")continue;const m=S;if(!ot(m.entityType)||typeof m.id!="string"||!m.entity||typeof m.entity!="object")continue;const T=m.entity;if(!et(m.entityType,T,b))continue;const Y=Ze(m.entityType,m.id,T);if(!Y)continue;const Q=se(m.entityType,T),de=ne(m.entityType,T),pe=M(m.entityType,T),X=Xe(m.entityType,T),fe=Qe(m.entityType,T)??void 0,he=y.length>0?U(j,Q,X):0;let _=l("search");m.entityType==="note"?_=l(T.kind==="wiki"?"wiki":"note"):m.entityType==="insight"?_=l("insight"):(m.entityType==="calendar_event"||m.entityType==="task_timebox"||m.entityType==="work_block_template")&&(_=l("calendar"));const C={id:`${m.entityType}-${m.id}`,title:Q,detail:de,href:Y,category:pe,section:"results",searchText:X,score:he,kind:fe,icon:_.icon,tileClassName:_.tileClassName,badgeClassName:_.badgeClassName},E=x.get(C.id);(!E||C.score>E.score||C.score===E.score&&C.title<E.title)&&x.set(C.id,C)}}return Array.from(x.values()).sort((g,w)=>w.score!==g.score?w.score-g.score:g.title.localeCompare(w.title)).slice(0,12)}}),z=p.useMemo(()=>y?I.map(a=>({...a,score:U(j,a.title,a.searchText)})).filter(a=>a.score>0).sort((a,s)=>s.score-a.score||a.title.localeCompare(s.title)).slice(0,4):[],[j,y,I]),H=p.useMemo(()=>rt(j,c).filter(a=>tt(a,b)).slice(0,6).map(a=>({id:`quick-${a.id}`,title:a.quickActionTitle,detail:a.description,category:"Quick action",section:"quick-actions",searchText:`${a.quickActionTitle} ${a.description} ${a.aliases.join(" ")}`.toLowerCase(),score:a.score,onSelect:a.onSelect,...l("action",oe)})),[c,j,b]),v=p.useMemo(()=>{if(!y&&b.length===0)return K;const a=[...H,...z],s=new Set(a.map(x=>x.id));for(const x of $.data??[])s.has(x.id)||(s.add(x.id),a.push(x));return a.slice(0,16)},[K,$.data,y,H,z,b.length]);p.useEffect(()=>{P(0)},[y,r,L.join("|")]),p.useEffect(()=>{v.length!==0&&P(a=>Math.min(Math.max(a,0),v.length-1))},[v]),p.useEffect(()=>{const a=h.current[B];a==null||a.scrollIntoView({block:"nearest"})},[B]);const G=v[B]??null,F=i.users.filter(a=>n.includes(a.id)),me=n.length===0?"All humans and bots":F.length===1?((O=F[0])==null?void 0:O.displayName)??"1 selected owner":`${F.length||n.length} selected owners`,ue=(y.length>0||b.length>0)&&$.isFetching,V=a=>{if(t(!1),a.onSelect){a.onSelect();return}a.href&&u(a.href)};return o.jsx(Se,{open:r,onOpenChange:t,children:o.jsxs(Ae,{children:[o.jsx(Ie,{className:"surface-overlay fixed inset-0 z-40 backdrop-blur-xl"}),o.jsxs($e,{className:"surface-modal-panel fixed inset-x-3 bottom-3 top-3 z-50 flex flex-col overflow-hidden rounded-[30px] border sm:inset-x-6 sm:bottom-6 sm:top-6 md:left-1/2 md:right-auto md:top-[9vh] md:h-[min(82vh,48rem)] md:w-[min(64rem,calc(100vw-2rem))] md:-translate-x-1/2 md:bottom-auto",children:[o.jsx(Ee,{className:"sr-only",children:e("common.actionBar.title")}),o.jsx(Me,{className:"sr-only",children:e("common.actionBar.description")}),o.jsxs("div",{className:"border-b border-[var(--ui-border-subtle)] px-4 py-4 sm:px-5",children:[o.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[o.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[o.jsxs("div",{className:"inline-flex items-center gap-2 rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-3 py-1.5 text-[12px] text-[var(--ui-ink-medium)]",children:[o.jsx("span",{className:"rounded-full bg-[var(--ui-surface-2)] px-2 py-0.5 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:"Scope"}),o.jsx("span",{children:me})]}),b.length>0?o.jsxs("div",{className:"inline-flex items-center gap-2 rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-3 py-1.5 text-[12px] text-[var(--ui-ink-medium)]",children:[o.jsx(ge,{className:"size-3.5 text-[var(--ui-ink-faint)]"}),o.jsxs("span",{children:[b.length," filter",b.length===1?"":"s"]})]}):null]}),o.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:[o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Shift Shift"}),o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Cmd/Ctrl K"})]})]}),o.jsxs("div",{className:"mt-4 rounded-[24px] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-2)] px-4 py-4 shadow-[inset_0_1px_0_var(--ui-border-subtle)]",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(ee,{className:"size-5 text-[var(--ui-ink-faint)]"}),o.jsx(We,{autoFocus:!0,value:N,onChange:a=>W(a.target.value),onKeyDown:a=>{if(a.key==="ArrowDown"){a.preventDefault(),P(s=>v.length===0?0:Math.min(s+1,v.length-1));return}if(a.key==="ArrowUp"){a.preventDefault(),P(s=>Math.max(s-1,0));return}if(a.key==="Enter"&&G){a.preventDefault(),V(G);return}a.key==="Escape"&&(a.preventDefault(),t(!1))},placeholder:e("common.actionBar.searchPlaceholder"),className:"border-0 bg-transparent px-0 py-0 text-[1rem] focus:border-0"}),ue?o.jsx(ye,{className:"size-4 shrink-0 animate-spin text-[var(--ui-ink-faint)]"}):null]}),o.jsx("div",{className:"mt-2 pl-8 text-[13px] leading-6 text-[var(--ui-ink-soft)]",children:e(y?"common.actionBar.activeHint":"common.actionBar.idleHint")}),o.jsxs("div",{className:"mt-4 border-t border-[var(--ui-border-subtle)] pt-4",children:[o.jsx("div",{className:"mb-2 pl-1 text-[11px] uppercase tracking-[0.18em] text-[var(--ui-ink-faint)]",children:e("common.actionBar.filtersLabel")}),o.jsx(qe,{options:ce,selectedValues:L,onChange:D,placeholder:e("common.actionBar.filtersPlaceholder"),emptyMessage:e("common.actionBar.filtersEmpty"),variant:"action-bar"})]})]})]}),o.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto px-3 py-3 sm:px-4",children:v.length===0?o.jsx("div",{className:"rounded-[24px] border border-dashed border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-4 py-8 text-center text-sm text-[var(--ui-ink-soft)]",children:$.isFetching?e("common.actionBar.searching"):b.length>0?e("common.actionBar.noResultsWithFilters"):e("common.actionBar.noResults")}):o.jsx("div",{className:"grid gap-2",children:v.map((a,s)=>{var w;const g=(((w=v[s-1])==null?void 0:w.section)??null)!==a.section;return o.jsxs("div",{children:[g?o.jsx("div",{className:"px-2 pb-1 pt-2 text-[11px] uppercase tracking-[0.18em] text-[var(--ui-ink-faint)] first:pt-0",children:le[a.section]}):null,o.jsxs("button",{ref:S=>{h.current[s]=S},type:"button",className:R("group flex w-full items-start gap-3 rounded-[24px] border px-4 py-3.5 text-left transition",s===B?"border-[var(--ui-border-strong)] bg-[var(--ui-surface-3)] shadow-[var(--ui-shadow-soft)]":"border-transparent bg-[var(--ui-surface-1)] hover:border-[var(--ui-border-subtle)] hover:bg-[var(--ui-surface-hover)]"),onMouseEnter:()=>P(s),onClick:()=>V(a),children:[o.jsx(st,{item:a}),o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx("div",{className:"flex flex-wrap items-center gap-2",children:o.jsx(nt,{item:a})}),o.jsx("div",{className:"mt-2 text-[15px] font-medium text-[var(--ui-ink-strong)]",children:a.kind&&a.section==="results"?o.jsx(De,{kind:a.kind,label:a.title,showIcon:!1,labelClassName:"text-[var(--ui-ink-strong)]"}):a.title}),o.jsx("div",{className:"mt-1 text-sm leading-6 text-[var(--ui-ink-soft)]",children:a.detail})]}),o.jsx(xe,{className:R("mt-1 size-4 shrink-0 transition",s===B?"text-[var(--ui-ink-medium)]":"text-[var(--ui-ink-faint)] group-hover:text-[var(--ui-ink-soft)]")})]})]},a.id)})})}),o.jsx("div",{className:"border-t border-[var(--ui-border-subtle)] px-4 py-3 sm:px-5",children:o.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-[12px] text-[var(--ui-ink-faint)]",children:[o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Up/Down navigate"}),o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Enter open"}),o.jsx("span",{className:"rounded-full border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-2.5 py-1",children:"Esc close"})]})})]})]})})}export{gt as ActionBar};
@@ -1 +1 @@
1
- import{j as e,aC as p,bY as C}from"./vendor-BwL6m4SE.js";import{j as E,i as _,k as I}from"./state-Bpe5dF3T.js";import{C as b,f as v,B as g,d as P,L as S,e as L,h as R,i as T,r as U,l as q}from"./index-FpGANF9S.js";import{P as Q}from"./page-hero-DvrM83_C.js";import{u as F,f as y,g as H,c as M}from"./table-U7otr5go.js";import{U as k}from"./user-badge-ByhC6bMU.js";import{g as m,a as f}from"./entity-links-DwpxhW2H.js";import"./motion-DcgUnXhY.js";import"./ui-B9TWEtCx.js";import"./board-CuxQRKPJ.js";import"./forms-D1qJ3oOP.js";const o=M(),j=[o.accessor("title",{header:"Event",cell:r=>{const a=m(r.row.original);return a?e.jsx(p,{to:a,className:"font-medium text-[var(--ui-ink-strong)] transition hover:text-[var(--primary)]",children:r.getValue()}):e.jsx("div",{className:"font-medium text-[var(--ui-ink-strong)]",children:r.getValue()})}}),o.accessor("source",{header:"Source",cell:r=>e.jsx("div",{className:"font-label text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:r.getValue()})}),o.display({id:"owner",header:"Owner",cell:r=>r.row.original.user?e.jsx(k,{user:r.row.original.user,compact:!0}):e.jsx("div",{className:"text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:"Unowned"})}),o.accessor("createdAt",{header:"When",cell:r=>e.jsx("div",{className:"text-sm text-[var(--ui-ink-soft)]",children:v(r.getValue())})}),o.display({id:"actions",header:"Open",cell:r=>{const a=m(r.row.original);return a?e.jsx(p,{to:a,className:"inline-flex text-[11px] uppercase tracking-[0.16em] text-[var(--primary)] transition hover:text-[var(--ui-ink-strong)]",children:"Open"}):e.jsx("div",{className:"text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:"Archive only"})}})];function O({rows:r,onRemove:a}){const l=a?[...j,o.display({id:"remove",header:"Correct",cell:t=>e.jsx(g,{variant:"ghost",className:"h-auto px-0 py-0 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-soft)]",onClick:()=>{a(t.row.original.id)},children:"Remove log"})})]:j,c=F({columns:l,data:r,getCoreRowModel:H()});return e.jsxs(b,{className:"min-w-0 overflow-hidden p-0",children:[e.jsxs("table",{className:"hidden w-full border-collapse md:table",children:[e.jsx("thead",{children:c.getHeaderGroups().map(t=>e.jsx("tr",{className:"bg-[var(--ui-surface-2)]",children:t.headers.map(i=>e.jsx("th",{className:"px-5 py-4 text-left font-label text-[11px] uppercase tracking-[0.18em] text-[var(--ui-ink-faint)]",children:i.isPlaceholder?null:y(i.column.columnDef.header,i.getContext())},i.id))},t.id))}),e.jsx("tbody",{children:c.getRowModel().rows.map(t=>e.jsx("tr",{className:"border-t border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] transition hover:bg-[var(--ui-surface-hover)]",children:t.getVisibleCells().map(i=>e.jsx("td",{className:"px-5 py-4 align-top",children:y(i.column.columnDef.cell,i.getContext())},i.id))},t.id))})]}),e.jsx("div",{className:"grid gap-3 p-3 md:hidden",children:r.map(t=>{const i=m(t);return e.jsxs("article",{className:"min-w-0 rounded-[22px] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] p-4",children:[e.jsxs("div",{className:"flex min-w-0 items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:t.source}),e.jsx("div",{className:"mt-2 break-words text-sm font-semibold text-[var(--ui-ink-strong)]",children:t.title})]}),t.user?e.jsx(k,{user:t.user,compact:!0}):null]}),e.jsx("div",{className:"mt-2 text-sm leading-6 text-[var(--ui-ink-soft)]",children:t.description}),e.jsx("div",{className:"mt-3 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:v(t.createdAt)}),e.jsxs("div",{className:"mt-3 flex flex-wrap gap-3",children:[i?e.jsx(p,{to:i,className:"inline-flex text-[11px] uppercase tracking-[0.16em] text-[var(--primary)] transition hover:text-[var(--ui-ink-strong)]",children:"Open"}):null,a?e.jsx(g,{variant:"ghost",className:"h-auto px-0 py-0 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-soft)]",onClick:()=>{a(t.id)},children:"Remove log"}):null]})]},t.id)})})]})}function Z(){var h;const r=P(),a=Array.isArray(r.selectedUserIds)?r.selectedUserIds:[],[l]=C(),c=E(),t=l.get("entityId")??void 0,i=l.get("entityType")??void 0,N=l.get("eventId"),d=_({queryKey:["activity-archive",i,t,...a],queryFn:()=>q({limit:100,entityType:i,entityId:t,userIds:a})}),w=I({mutationFn:n=>U(n),onSuccess:async()=>{await Promise.all([c.invalidateQueries({queryKey:["activity-archive"]}),T(c),c.invalidateQueries({queryKey:["task-context"]}),c.invalidateQueries({queryKey:["project-board"]})])}}),u=((h=d.data)==null?void 0:h.activity)??[];if(d.isLoading)return e.jsx(S,{eyebrow:"Evidence archive",title:"Loading activity",description:"Pulling the visible audit trail, grouped evidence, and correction history."});if(d.isError)return e.jsx(L,{eyebrow:"Evidence archive",error:d.error,onRetry:()=>void d.refetch()});if(u.length===0)return e.jsx(R,{eyebrow:"Evidence archive",title:t?"No evidence matched this filter":"No activity recorded yet",description:t?"Forge could not find visible events for this specific entity yet. Try a broader archive view or create some work first.":"As you complete work, log runs, or make corrections, the audit trail will appear here."});const A=u.reduce((n,x)=>{const s=x.createdAt.slice(0,10);return n[s]=[...n[s]??[],x],n},{});return e.jsxs("div",{className:"grid gap-5",children:[e.jsx(Q,{title:"Activity",description:t?"This filtered archive shows the evidence connected to the item you opened, so you can confirm what changed and when.":"Activity is your visible audit trail. Use it to inspect progress, confirm corrections, and trace work back to the goal, project, or task it came from.",badge:`${u.length} recent events`}),e.jsxs("section",{className:"grid gap-5 xl:grid-cols-[minmax(0,1.1fr)_minmax(0,0.9fr)]",children:[e.jsx(O,{rows:u,onRemove:async n=>{await w.mutateAsync(n)}}),e.jsx("div",{className:"grid gap-4",children:Object.entries(A).slice(0,6).map(([n,x])=>e.jsxs(b,{className:"min-w-0",children:[e.jsx("div",{className:"font-label text-[11px] uppercase tracking-[0.18em] text-[var(--ui-ink-faint)]",children:n}),e.jsx("div",{className:"mt-4 grid gap-3",children:x.slice(0,3).map(s=>e.jsxs("div",{className:`min-w-0 rounded-[18px] border p-4 ${N===s.id?"border-[color-mix(in_srgb,var(--primary)_30%,transparent)] bg-[var(--ui-accent-soft)] shadow-[inset_0_0_0_1px_color-mix(in_srgb,var(--primary)_16%,transparent)]":"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-2)]"}`,children:[e.jsx("div",{className:"break-words font-medium text-[var(--ui-ink-strong)]",children:s.title}),e.jsx("div",{className:"mt-2 text-sm text-[var(--ui-ink-soft)]",children:s.description}),e.jsx("div",{className:"mt-3 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:v(s.createdAt)}),m(s)&&f(s)?e.jsx(p,{to:m(s),className:"mt-3 inline-flex text-[11px] uppercase tracking-[0.16em] text-[var(--primary)] transition hover:text-[var(--ui-ink-strong)]",children:f(s)}):null]},s.id))})]},n))})]})]})}export{Z as ActivityPage};
1
+ import{j as e,aC as p,bY as C}from"./vendor-BwL6m4SE.js";import{j as E,i as _,k as I}from"./state-Bpe5dF3T.js";import{C as b,f as v,B as g,d as P,L as S,e as L,h as R,i as T,r as U,l as q}from"./index-izRKx6JK.js";import{P as Q}from"./page-hero-BLhM8FF3.js";import{u as F,f as y,g as H,c as M}from"./table-U7otr5go.js";import{U as k}from"./user-badge-MEZuJiir.js";import{g as m,a as f}from"./entity-links-DwpxhW2H.js";import"./motion-DcgUnXhY.js";import"./ui-B9TWEtCx.js";import"./board-CuxQRKPJ.js";import"./forms-D1qJ3oOP.js";const o=M(),j=[o.accessor("title",{header:"Event",cell:r=>{const a=m(r.row.original);return a?e.jsx(p,{to:a,className:"font-medium text-[var(--ui-ink-strong)] transition hover:text-[var(--primary)]",children:r.getValue()}):e.jsx("div",{className:"font-medium text-[var(--ui-ink-strong)]",children:r.getValue()})}}),o.accessor("source",{header:"Source",cell:r=>e.jsx("div",{className:"font-label text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:r.getValue()})}),o.display({id:"owner",header:"Owner",cell:r=>r.row.original.user?e.jsx(k,{user:r.row.original.user,compact:!0}):e.jsx("div",{className:"text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:"Unowned"})}),o.accessor("createdAt",{header:"When",cell:r=>e.jsx("div",{className:"text-sm text-[var(--ui-ink-soft)]",children:v(r.getValue())})}),o.display({id:"actions",header:"Open",cell:r=>{const a=m(r.row.original);return a?e.jsx(p,{to:a,className:"inline-flex text-[11px] uppercase tracking-[0.16em] text-[var(--primary)] transition hover:text-[var(--ui-ink-strong)]",children:"Open"}):e.jsx("div",{className:"text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:"Archive only"})}})];function O({rows:r,onRemove:a}){const l=a?[...j,o.display({id:"remove",header:"Correct",cell:t=>e.jsx(g,{variant:"ghost",className:"h-auto px-0 py-0 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-soft)]",onClick:()=>{a(t.row.original.id)},children:"Remove log"})})]:j,c=F({columns:l,data:r,getCoreRowModel:H()});return e.jsxs(b,{className:"min-w-0 overflow-hidden p-0",children:[e.jsxs("table",{className:"hidden w-full border-collapse md:table",children:[e.jsx("thead",{children:c.getHeaderGroups().map(t=>e.jsx("tr",{className:"bg-[var(--ui-surface-2)]",children:t.headers.map(i=>e.jsx("th",{className:"px-5 py-4 text-left font-label text-[11px] uppercase tracking-[0.18em] text-[var(--ui-ink-faint)]",children:i.isPlaceholder?null:y(i.column.columnDef.header,i.getContext())},i.id))},t.id))}),e.jsx("tbody",{children:c.getRowModel().rows.map(t=>e.jsx("tr",{className:"border-t border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] transition hover:bg-[var(--ui-surface-hover)]",children:t.getVisibleCells().map(i=>e.jsx("td",{className:"px-5 py-4 align-top",children:y(i.column.columnDef.cell,i.getContext())},i.id))},t.id))})]}),e.jsx("div",{className:"grid gap-3 p-3 md:hidden",children:r.map(t=>{const i=m(t);return e.jsxs("article",{className:"min-w-0 rounded-[22px] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] p-4",children:[e.jsxs("div",{className:"flex min-w-0 items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:t.source}),e.jsx("div",{className:"mt-2 break-words text-sm font-semibold text-[var(--ui-ink-strong)]",children:t.title})]}),t.user?e.jsx(k,{user:t.user,compact:!0}):null]}),e.jsx("div",{className:"mt-2 text-sm leading-6 text-[var(--ui-ink-soft)]",children:t.description}),e.jsx("div",{className:"mt-3 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:v(t.createdAt)}),e.jsxs("div",{className:"mt-3 flex flex-wrap gap-3",children:[i?e.jsx(p,{to:i,className:"inline-flex text-[11px] uppercase tracking-[0.16em] text-[var(--primary)] transition hover:text-[var(--ui-ink-strong)]",children:"Open"}):null,a?e.jsx(g,{variant:"ghost",className:"h-auto px-0 py-0 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-soft)]",onClick:()=>{a(t.id)},children:"Remove log"}):null]})]},t.id)})})]})}function Z(){var h;const r=P(),a=Array.isArray(r.selectedUserIds)?r.selectedUserIds:[],[l]=C(),c=E(),t=l.get("entityId")??void 0,i=l.get("entityType")??void 0,N=l.get("eventId"),d=_({queryKey:["activity-archive",i,t,...a],queryFn:()=>q({limit:100,entityType:i,entityId:t,userIds:a})}),w=I({mutationFn:n=>U(n),onSuccess:async()=>{await Promise.all([c.invalidateQueries({queryKey:["activity-archive"]}),T(c),c.invalidateQueries({queryKey:["task-context"]}),c.invalidateQueries({queryKey:["project-board"]})])}}),u=((h=d.data)==null?void 0:h.activity)??[];if(d.isLoading)return e.jsx(S,{eyebrow:"Evidence archive",title:"Loading activity",description:"Pulling the visible audit trail, grouped evidence, and correction history."});if(d.isError)return e.jsx(L,{eyebrow:"Evidence archive",error:d.error,onRetry:()=>void d.refetch()});if(u.length===0)return e.jsx(R,{eyebrow:"Evidence archive",title:t?"No evidence matched this filter":"No activity recorded yet",description:t?"Forge could not find visible events for this specific entity yet. Try a broader archive view or create some work first.":"As you complete work, log runs, or make corrections, the audit trail will appear here."});const A=u.reduce((n,x)=>{const s=x.createdAt.slice(0,10);return n[s]=[...n[s]??[],x],n},{});return e.jsxs("div",{className:"grid gap-5",children:[e.jsx(Q,{title:"Activity",description:t?"This filtered archive shows the evidence connected to the item you opened, so you can confirm what changed and when.":"Activity is your visible audit trail. Use it to inspect progress, confirm corrections, and trace work back to the goal, project, or task it came from.",badge:`${u.length} recent events`}),e.jsxs("section",{className:"grid gap-5 xl:grid-cols-[minmax(0,1.1fr)_minmax(0,0.9fr)]",children:[e.jsx(O,{rows:u,onRemove:async n=>{await w.mutateAsync(n)}}),e.jsx("div",{className:"grid gap-4",children:Object.entries(A).slice(0,6).map(([n,x])=>e.jsxs(b,{className:"min-w-0",children:[e.jsx("div",{className:"font-label text-[11px] uppercase tracking-[0.18em] text-[var(--ui-ink-faint)]",children:n}),e.jsx("div",{className:"mt-4 grid gap-3",children:x.slice(0,3).map(s=>e.jsxs("div",{className:`min-w-0 rounded-[18px] border p-4 ${N===s.id?"border-[color-mix(in_srgb,var(--primary)_30%,transparent)] bg-[var(--ui-accent-soft)] shadow-[inset_0_0_0_1px_color-mix(in_srgb,var(--primary)_16%,transparent)]":"border-[var(--ui-border-subtle)] bg-[var(--ui-surface-2)]"}`,children:[e.jsx("div",{className:"break-words font-medium text-[var(--ui-ink-strong)]",children:s.title}),e.jsx("div",{className:"mt-2 text-sm text-[var(--ui-ink-soft)]",children:s.description}),e.jsx("div",{className:"mt-3 text-[11px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:v(s.createdAt)}),m(s)&&f(s)?e.jsx(p,{to:m(s),className:"mt-3 inline-flex text-[11px] uppercase tracking-[0.16em] text-[var(--primary)] transition hover:text-[var(--ui-ink-strong)]",children:f(s)}):null]},s.id))})]},n))})]})]})}export{Z as ActivityPage};
@@ -1 +1 @@
1
- import{j as r,r as x,cF as Z,cQ as ee,by as te,cR as re,cS as ie,cT as ne,cU as se,cV as ae,aC as le,b1 as oe}from"./vendor-BwL6m4SE.js";import{u as ue,a as ce,P as de,D as fe,c as me,S as xe,v as he,d as ve,b as be,C as pe}from"./board-CuxQRKPJ.js";import{i as ge,k as U}from"./state-Bpe5dF3T.js";import{ci as je,cj as Ne,B as H,c as W,C as ye,ck as Se}from"./index-FpGANF9S.js";function ke({children:e}){return r.jsx(r.Fragment,{children:e})}const k={lg:1280,md:996,sm:768,xs:480},A={lg:12,md:10,sm:6,xs:4,xxs:2},We="forge.surface-layout.v3";function I(e){return`${We}.${e}`}function F(e,i,n){return Math.min(Math.max(e,i),n)}function Ce(e){return e>=k.lg?"lg":e>=k.md?"md":e>=k.sm?"sm":e>=k.xs?"xs":"xxs"}function Ee(e,i){const n=A[i];if(i==="lg")return F(e.defaultWidth,e.minWidth??1,Math.min(e.maxWidth??n,n));const s=Math.round(e.defaultWidth/A.lg*n);return F(Math.max(e.minWidth??1,s||(e.minWidth??1)),e.minWidth??1,Math.min(e.maxWidth??n,n))}function Me(e){return{hidden:e.defaultHidden??!1,fullWidth:e.defaultFullWidth??!1,titleVisible:e.defaultTitleVisible??!0,descriptionVisible:e.defaultDescriptionVisible??!0}}function P(e,i){const n=[...i.filter(s=>s.defaultPlacement==="top"),...i.filter(s=>s.defaultPlacement!=="top")];return{surfaceId:e,order:n.map(s=>s.id),widgets:Object.fromEntries(i.map(s=>[s.id,Me(s)])),updatedAt:new Date(0).toISOString()}}function V(e,i,n){const s=P(e,i),l=new Set(i.map(o=>o.id)),c=((n==null?void 0:n.order)??[]).filter(o=>l.has(o)),h=s.order.filter(o=>!c.includes(o)),d=Object.fromEntries(i.map(o=>{var N,g,m,b,p;const f=(N=n==null?void 0:n.widgets)==null?void 0:N[o.id];return[o.id,{...s.widgets[o.id],hidden:(f==null?void 0:f.hidden)??((g=s.widgets[o.id])==null?void 0:g.hidden)??!1,fullWidth:(f==null?void 0:f.fullWidth)??((m=s.widgets[o.id])==null?void 0:m.fullWidth)??!1,titleVisible:(f==null?void 0:f.titleVisible)??((b=s.widgets[o.id])==null?void 0:b.titleVisible)??!0,descriptionVisible:(f==null?void 0:f.descriptionVisible)??((p=s.widgets[o.id])==null?void 0:p.descriptionVisible)??!0}]}));return{surfaceId:e,order:[...c,...h],widgets:d,updatedAt:typeof(n==null?void 0:n.updatedAt)=="string"?n.updatedAt:s.updatedAt}}function Ve(e,i){const n=new Map(i.order.map((s,l)=>[s,l]));return[...e].sort((s,l)=>{const c=n.get(s.id)??Number.MAX_SAFE_INTEGER,h=n.get(l.id)??Number.MAX_SAFE_INTEGER;return c!==h?c-h:s.id.localeCompare(l.id)})}function Re(e,i,n){const s=e.indexOf(i);if(s===-1)return e;const l=F(n,0,e.length-1);if(s===l)return e;const c=[...e];return c.splice(s,1),c.splice(l,0,i),c}function R(e){if(typeof window>"u")return null;try{const i=window.localStorage.getItem(I(e));return i?JSON.parse(i):null}catch{return null}}function O(e){if(!(typeof window>"u"))try{window.localStorage.setItem(I(e.surfaceId),JSON.stringify(e))}catch{}}const Oe=500;function G(e,i){return e.surfaceId===i.surfaceId&&JSON.stringify(e.order)===JSON.stringify(i.order)&&JSON.stringify(e.widgets)===JSON.stringify(i.widgets)}function Ae({definition:e,preferences:i,editing:n,width:s,children:l}){const c=s<=4;return e.surfaceChrome==="none"?r.jsx("div",{"data-surface-card":"true",className:W("min-w-0",n&&"rounded-[28px] ring-1 ring-[var(--ui-border-subtle)] ring-inset"),children:l}):r.jsxs(ye,{"data-surface-card":"true",className:W("surface-grid-card flex min-w-0 flex-col gap-3 overflow-visible p-4 md:p-5",n&&"ring-1 ring-[var(--ui-border-subtle)]"),children:[i.titleVisible||i.descriptionVisible&&e.description?r.jsxs("div",{className:"min-w-0",children:[i.titleVisible?r.jsx("div",{className:"truncate text-[0.72rem] font-semibold uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:e.title}):null,i.descriptionVisible&&e.description&&!c?r.jsx("div",{className:"mt-1 text-[12px] leading-5 text-[var(--ui-ink-soft)]",children:e.description}):null]}):null,r.jsx("div",{className:"min-h-0 flex-1",children:l})]})}function Fe({widget:e,preferences:i,index:n,total:s,onMove:l,onToggleHidden:c,onToggleFullWidth:h}){const d=be({id:e.id});return r.jsxs("div",{ref:d.setNodeRef,style:{transform:pe.Transform.toString(d.transform),transition:d.transition},className:"flex min-w-0 items-center gap-2 rounded-[18px] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-3 py-2.5",children:[r.jsx("button",{type:"button",className:"inline-flex size-8 shrink-0 items-center justify-center rounded-full bg-[var(--ui-surface-2)] text-[var(--ui-ink-soft)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]","aria-label":`Drag ${e.title}`,...d.attributes,...d.listeners,children:r.jsx(te,{className:"size-4"})}),r.jsxs("div",{className:"min-w-0 flex-1",children:[r.jsx("div",{className:"truncate text-sm font-medium text-[var(--ui-ink-strong)]",children:e.title}),e.description?r.jsx("div",{className:"truncate text-[12px] text-[var(--ui-ink-faint)]",children:e.description}):null]}),r.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[r.jsx("button",{type:"button",className:"inline-flex size-8 items-center justify-center rounded-full bg-[var(--ui-surface-2)] text-[var(--ui-ink-soft)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)] disabled:opacity-40",onClick:()=>l(n-1),disabled:n===0,"aria-label":`Move ${e.title} up`,children:r.jsx(re,{className:"size-3.5"})}),r.jsx("button",{type:"button",className:"inline-flex size-8 items-center justify-center rounded-full bg-[var(--ui-surface-2)] text-[var(--ui-ink-soft)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)] disabled:opacity-40",onClick:()=>l(n+1),disabled:n===s-1,"aria-label":`Move ${e.title} down`,children:r.jsx(ie,{className:"size-3.5"})}),r.jsxs("button",{type:"button",className:W("inline-flex h-8 items-center gap-2 rounded-full px-3 text-[12px] transition",i.fullWidth?"bg-[var(--primary)] text-[var(--ui-ink-on-accent)]":"bg-[var(--ui-surface-2)] text-[var(--ui-ink-medium)] hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]"),onClick:h,children:[i.fullWidth?r.jsx(ne,{className:"size-3.5"}):r.jsx(se,{className:"size-3.5"}),i.fullWidth?"Normal width":"Full width"]}),e.removable!==!1?r.jsxs("button",{type:"button",className:"inline-flex h-8 items-center gap-2 rounded-full bg-[var(--ui-surface-2)] px-3 text-[12px] text-[var(--ui-ink-medium)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]",onClick:c,children:[r.jsx(ae,{className:"size-3.5"}),"Hide"]}):null]})]})}function Pe({surfaceId:e,widgets:i,defaultEditing:n=!1,actions:s,normalizeLayout:l}){var B;const c=x.useMemo(()=>JSON.stringify(i.map(t=>({id:t.id,defaultWidth:t.defaultWidth,defaultHidden:t.defaultHidden,defaultPlacement:t.defaultPlacement,defaultFullWidth:t.defaultFullWidth,defaultTitleVisible:t.defaultTitleVisible,defaultDescriptionVisible:t.defaultDescriptionVisible}))),[i]),h=x.useMemo(()=>{const t=P(e,i);return l?l(t):t},[l,e,c]),d=t=>l?l(t):t,[o,f]=x.useState(n),[N,g]=x.useState(1280),[m,b]=x.useState(()=>d(V(e,i,R(e)??h))),p=x.useRef(null),T=x.useRef(!1),y=x.useRef(d(V(e,i,R(e)??h))),z=x.useRef(null),q=ue(ce(de,{activationConstraint:{distance:6}})),C=ge({queryKey:["forge-surface-layout",e],queryFn:()=>Se(e)}),D=(B=C==null?void 0:C.data)==null?void 0:B.layout,L=U({mutationFn:t=>je(e,{order:t.order,widgets:t.widgets})}),K=U({mutationFn:()=>Ne(e)});x.useEffect(()=>{const t=d(V(e,i,D??R(e)??h));b(a=>G(a,t)?a:t),O(t),y.current=t,T.current=!0},[h,D,l,e,c,i]),x.useEffect(()=>{const t=z.current;if(!t||typeof ResizeObserver>"u")return;const a=new ResizeObserver(u=>{var j;const v=((j=u[0])==null?void 0:j.contentRect.width)??t.clientWidth;g(Math.max(320,Math.round(v)))});return a.observe(t),g(Math.max(320,Math.round(t.clientWidth||1280))),()=>a.disconnect()},[]),x.useEffect(()=>{if(T.current&&!G(m,y.current))return O(m),p.current!==null&&window.clearTimeout(p.current),p.current=window.setTimeout(()=>{const t=m;L.mutateAsync(t).then(()=>{y.current=t})},Oe),()=>{p.current!==null&&window.clearTimeout(p.current)}},[m,L,e]);const $=Ce(N),E=A[$],_=x.useMemo(()=>Ve(i,m),[m,i]),S=_.filter(t=>{var a;return!((a=m.widgets[t.id])!=null&&a.hidden)}),w=_.filter(t=>{var a;return(a=m.widgets[t.id])==null?void 0:a.hidden});function M(t,a){b(u=>d({...u,widgets:{...u.widgets,[t]:{...u.widgets[t],...a}}}))}function X(t,a){b(u=>d({...u,order:Re(u.order,t,a)}))}function Q(t){const{active:a,over:u}=t;!u||a.id===u.id||b(v=>{const j=v.order.indexOf(String(a.id)),J=v.order.indexOf(String(u.id));return j===-1||J===-1?v:d({...v,order:ve(v.order,j,J)})})}function Y(){const t=d(P(e,i));b(t),O(t),y.current=t,K.mutateAsync()}return r.jsxs("div",{className:"grid gap-4",children:[o?r.jsx(fe,{sensors:q,collisionDetection:me,onDragEnd:Q,children:r.jsxs("div",{className:"grid gap-3 rounded-[24px] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] p-4",children:[r.jsx("div",{className:"text-[12px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:"Visible boxes"}),r.jsx(xe,{items:S.map(t=>t.id),strategy:he,children:r.jsx("div",{className:"grid gap-2",children:S.map((t,a)=>{const u=m.widgets[t.id]??{hidden:!1,fullWidth:!1,titleVisible:!0,descriptionVisible:!0};return r.jsx(Fe,{widget:t,preferences:u,index:a,total:S.length,onMove:v=>X(t.id,v),onToggleHidden:()=>M(t.id,{hidden:!0}),onToggleFullWidth:()=>M(t.id,{fullWidth:!u.fullWidth})},t.id)})})}),w.length>0?r.jsxs(r.Fragment,{children:[r.jsx("div",{className:"pt-2 text-[12px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:"Hidden boxes"}),r.jsx("div",{className:"flex flex-wrap gap-2",children:w.map(t=>r.jsx("button",{type:"button",className:"rounded-full bg-[var(--ui-surface-2)] px-3 py-2 text-sm text-[var(--ui-ink-medium)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]",onClick:()=>M(t.id,{hidden:!1}),children:t.title},t.id))})]}):null]})}):null,r.jsxs("div",{ref:z,className:"relative",children:[r.jsx("div",{className:"pointer-events-none absolute top-3 right-3 z-20 flex max-w-[calc(100%-1.5rem)] flex-wrap items-center justify-end gap-1.5",children:r.jsxs("div",{className:"pointer-events-auto flex flex-wrap items-center justify-end gap-1.5",children:[s,o?r.jsxs(H,{type:"button",size:"sm",variant:"secondary",className:"h-8 rounded-full border-[var(--ui-border-subtle)] bg-[var(--surface-glass)] px-2.5 text-[12px] text-[var(--ui-ink-medium)] backdrop-blur-xl hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]",onClick:Y,children:[r.jsx(Z,{className:"size-3.5"}),r.jsx("span",{className:"hidden sm:inline",children:"Reset"})]}):null,r.jsxs(H,{type:"button",size:"sm",variant:o?"primary":"secondary",className:W("h-8 rounded-full px-2 text-[12px] backdrop-blur-xl [&>span]:gap-1.5",o?"bg-[var(--primary)] text-[var(--ui-ink-on-accent)] hover:opacity-95":"border-[var(--ui-border-subtle)] bg-[var(--surface-glass)] text-[var(--ui-ink-medium)] hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]"),onClick:()=>f(t=>!t),children:[r.jsx(ee,{className:"size-3.5"}),r.jsx("span",{className:"hidden xl:inline",children:o?"Done":"Layout"})]})]})}),r.jsx("div",{className:"surface-flow-grid",style:{display:"grid",gap:"16px",gridTemplateColumns:`repeat(${E}, minmax(0, 1fr))`,alignItems:"start"},children:S.map(t=>{const a=m.widgets[t.id]??{hidden:!1,fullWidth:!1,titleVisible:!0,descriptionVisible:!0},u=a.fullWidth?E:Math.min(Ee(t,$),E);return r.jsx("div",{style:{gridColumn:`span ${u} / span ${u}`},children:r.jsx(Ae,{definition:t,preferences:a,editing:o,width:u,children:r.jsx(ke,{boxId:t.workbenchBoxId??`surface:${e}:${t.id}`,surfaceId:e,children:t.render({compact:u<=4,width:u,editing:o,preferences:a})})})},t.id)})})]})]})}function $e({surfaceId:e,baseWidgets:i,actions:n,normalizeLayout:s}){return r.jsx(Pe,{surfaceId:e,widgets:i,normalizeLayout:s,actions:r.jsxs(r.Fragment,{children:[n,r.jsxs(le,{to:`/workbench?surface=${encodeURIComponent(e)}`,className:"inline-flex h-8 items-center gap-1.5 rounded-full border border-[var(--ui-border-subtle)] bg-[var(--surface-glass)] px-2.5 text-[12px] font-medium text-[var(--ui-ink-medium)] backdrop-blur-xl transition hover:border-[var(--ui-border-strong)] hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]",children:[r.jsx(oe,{className:"size-3.5"}),r.jsx("span",{className:"hidden sm:inline",children:"Workbench"})]})]})})}export{$e as A};
1
+ import{j as r,r as x,cF as Z,cQ as ee,by as te,cR as re,cS as ie,cT as ne,cU as se,cV as ae,aC as le,b1 as oe}from"./vendor-BwL6m4SE.js";import{u as ue,a as ce,P as de,D as fe,c as me,S as xe,v as he,d as ve,b as be,C as pe}from"./board-CuxQRKPJ.js";import{i as ge,k as U}from"./state-Bpe5dF3T.js";import{ci as je,cj as Ne,B as H,c as W,C as ye,ck as Se}from"./index-izRKx6JK.js";function ke({children:e}){return r.jsx(r.Fragment,{children:e})}const k={lg:1280,md:996,sm:768,xs:480},A={lg:12,md:10,sm:6,xs:4,xxs:2},We="forge.surface-layout.v3";function I(e){return`${We}.${e}`}function F(e,i,n){return Math.min(Math.max(e,i),n)}function Ce(e){return e>=k.lg?"lg":e>=k.md?"md":e>=k.sm?"sm":e>=k.xs?"xs":"xxs"}function Ee(e,i){const n=A[i];if(i==="lg")return F(e.defaultWidth,e.minWidth??1,Math.min(e.maxWidth??n,n));const s=Math.round(e.defaultWidth/A.lg*n);return F(Math.max(e.minWidth??1,s||(e.minWidth??1)),e.minWidth??1,Math.min(e.maxWidth??n,n))}function Me(e){return{hidden:e.defaultHidden??!1,fullWidth:e.defaultFullWidth??!1,titleVisible:e.defaultTitleVisible??!0,descriptionVisible:e.defaultDescriptionVisible??!0}}function P(e,i){const n=[...i.filter(s=>s.defaultPlacement==="top"),...i.filter(s=>s.defaultPlacement!=="top")];return{surfaceId:e,order:n.map(s=>s.id),widgets:Object.fromEntries(i.map(s=>[s.id,Me(s)])),updatedAt:new Date(0).toISOString()}}function V(e,i,n){const s=P(e,i),l=new Set(i.map(o=>o.id)),c=((n==null?void 0:n.order)??[]).filter(o=>l.has(o)),h=s.order.filter(o=>!c.includes(o)),d=Object.fromEntries(i.map(o=>{var N,g,m,b,p;const f=(N=n==null?void 0:n.widgets)==null?void 0:N[o.id];return[o.id,{...s.widgets[o.id],hidden:(f==null?void 0:f.hidden)??((g=s.widgets[o.id])==null?void 0:g.hidden)??!1,fullWidth:(f==null?void 0:f.fullWidth)??((m=s.widgets[o.id])==null?void 0:m.fullWidth)??!1,titleVisible:(f==null?void 0:f.titleVisible)??((b=s.widgets[o.id])==null?void 0:b.titleVisible)??!0,descriptionVisible:(f==null?void 0:f.descriptionVisible)??((p=s.widgets[o.id])==null?void 0:p.descriptionVisible)??!0}]}));return{surfaceId:e,order:[...c,...h],widgets:d,updatedAt:typeof(n==null?void 0:n.updatedAt)=="string"?n.updatedAt:s.updatedAt}}function Ve(e,i){const n=new Map(i.order.map((s,l)=>[s,l]));return[...e].sort((s,l)=>{const c=n.get(s.id)??Number.MAX_SAFE_INTEGER,h=n.get(l.id)??Number.MAX_SAFE_INTEGER;return c!==h?c-h:s.id.localeCompare(l.id)})}function Re(e,i,n){const s=e.indexOf(i);if(s===-1)return e;const l=F(n,0,e.length-1);if(s===l)return e;const c=[...e];return c.splice(s,1),c.splice(l,0,i),c}function R(e){if(typeof window>"u")return null;try{const i=window.localStorage.getItem(I(e));return i?JSON.parse(i):null}catch{return null}}function O(e){if(!(typeof window>"u"))try{window.localStorage.setItem(I(e.surfaceId),JSON.stringify(e))}catch{}}const Oe=500;function G(e,i){return e.surfaceId===i.surfaceId&&JSON.stringify(e.order)===JSON.stringify(i.order)&&JSON.stringify(e.widgets)===JSON.stringify(i.widgets)}function Ae({definition:e,preferences:i,editing:n,width:s,children:l}){const c=s<=4;return e.surfaceChrome==="none"?r.jsx("div",{"data-surface-card":"true",className:W("min-w-0",n&&"rounded-[28px] ring-1 ring-[var(--ui-border-subtle)] ring-inset"),children:l}):r.jsxs(ye,{"data-surface-card":"true",className:W("surface-grid-card flex min-w-0 flex-col gap-3 overflow-visible p-4 md:p-5",n&&"ring-1 ring-[var(--ui-border-subtle)]"),children:[i.titleVisible||i.descriptionVisible&&e.description?r.jsxs("div",{className:"min-w-0",children:[i.titleVisible?r.jsx("div",{className:"truncate text-[0.72rem] font-semibold uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:e.title}):null,i.descriptionVisible&&e.description&&!c?r.jsx("div",{className:"mt-1 text-[12px] leading-5 text-[var(--ui-ink-soft)]",children:e.description}):null]}):null,r.jsx("div",{className:"min-h-0 flex-1",children:l})]})}function Fe({widget:e,preferences:i,index:n,total:s,onMove:l,onToggleHidden:c,onToggleFullWidth:h}){const d=be({id:e.id});return r.jsxs("div",{ref:d.setNodeRef,style:{transform:pe.Transform.toString(d.transform),transition:d.transition},className:"flex min-w-0 items-center gap-2 rounded-[18px] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] px-3 py-2.5",children:[r.jsx("button",{type:"button",className:"inline-flex size-8 shrink-0 items-center justify-center rounded-full bg-[var(--ui-surface-2)] text-[var(--ui-ink-soft)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]","aria-label":`Drag ${e.title}`,...d.attributes,...d.listeners,children:r.jsx(te,{className:"size-4"})}),r.jsxs("div",{className:"min-w-0 flex-1",children:[r.jsx("div",{className:"truncate text-sm font-medium text-[var(--ui-ink-strong)]",children:e.title}),e.description?r.jsx("div",{className:"truncate text-[12px] text-[var(--ui-ink-faint)]",children:e.description}):null]}),r.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[r.jsx("button",{type:"button",className:"inline-flex size-8 items-center justify-center rounded-full bg-[var(--ui-surface-2)] text-[var(--ui-ink-soft)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)] disabled:opacity-40",onClick:()=>l(n-1),disabled:n===0,"aria-label":`Move ${e.title} up`,children:r.jsx(re,{className:"size-3.5"})}),r.jsx("button",{type:"button",className:"inline-flex size-8 items-center justify-center rounded-full bg-[var(--ui-surface-2)] text-[var(--ui-ink-soft)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)] disabled:opacity-40",onClick:()=>l(n+1),disabled:n===s-1,"aria-label":`Move ${e.title} down`,children:r.jsx(ie,{className:"size-3.5"})}),r.jsxs("button",{type:"button",className:W("inline-flex h-8 items-center gap-2 rounded-full px-3 text-[12px] transition",i.fullWidth?"bg-[var(--primary)] text-[var(--ui-ink-on-accent)]":"bg-[var(--ui-surface-2)] text-[var(--ui-ink-medium)] hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]"),onClick:h,children:[i.fullWidth?r.jsx(ne,{className:"size-3.5"}):r.jsx(se,{className:"size-3.5"}),i.fullWidth?"Normal width":"Full width"]}),e.removable!==!1?r.jsxs("button",{type:"button",className:"inline-flex h-8 items-center gap-2 rounded-full bg-[var(--ui-surface-2)] px-3 text-[12px] text-[var(--ui-ink-medium)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]",onClick:c,children:[r.jsx(ae,{className:"size-3.5"}),"Hide"]}):null]})]})}function Pe({surfaceId:e,widgets:i,defaultEditing:n=!1,actions:s,normalizeLayout:l}){var B;const c=x.useMemo(()=>JSON.stringify(i.map(t=>({id:t.id,defaultWidth:t.defaultWidth,defaultHidden:t.defaultHidden,defaultPlacement:t.defaultPlacement,defaultFullWidth:t.defaultFullWidth,defaultTitleVisible:t.defaultTitleVisible,defaultDescriptionVisible:t.defaultDescriptionVisible}))),[i]),h=x.useMemo(()=>{const t=P(e,i);return l?l(t):t},[l,e,c]),d=t=>l?l(t):t,[o,f]=x.useState(n),[N,g]=x.useState(1280),[m,b]=x.useState(()=>d(V(e,i,R(e)??h))),p=x.useRef(null),T=x.useRef(!1),y=x.useRef(d(V(e,i,R(e)??h))),z=x.useRef(null),q=ue(ce(de,{activationConstraint:{distance:6}})),C=ge({queryKey:["forge-surface-layout",e],queryFn:()=>Se(e)}),D=(B=C==null?void 0:C.data)==null?void 0:B.layout,L=U({mutationFn:t=>je(e,{order:t.order,widgets:t.widgets})}),K=U({mutationFn:()=>Ne(e)});x.useEffect(()=>{const t=d(V(e,i,D??R(e)??h));b(a=>G(a,t)?a:t),O(t),y.current=t,T.current=!0},[h,D,l,e,c,i]),x.useEffect(()=>{const t=z.current;if(!t||typeof ResizeObserver>"u")return;const a=new ResizeObserver(u=>{var j;const v=((j=u[0])==null?void 0:j.contentRect.width)??t.clientWidth;g(Math.max(320,Math.round(v)))});return a.observe(t),g(Math.max(320,Math.round(t.clientWidth||1280))),()=>a.disconnect()},[]),x.useEffect(()=>{if(T.current&&!G(m,y.current))return O(m),p.current!==null&&window.clearTimeout(p.current),p.current=window.setTimeout(()=>{const t=m;L.mutateAsync(t).then(()=>{y.current=t})},Oe),()=>{p.current!==null&&window.clearTimeout(p.current)}},[m,L,e]);const $=Ce(N),E=A[$],_=x.useMemo(()=>Ve(i,m),[m,i]),S=_.filter(t=>{var a;return!((a=m.widgets[t.id])!=null&&a.hidden)}),w=_.filter(t=>{var a;return(a=m.widgets[t.id])==null?void 0:a.hidden});function M(t,a){b(u=>d({...u,widgets:{...u.widgets,[t]:{...u.widgets[t],...a}}}))}function X(t,a){b(u=>d({...u,order:Re(u.order,t,a)}))}function Q(t){const{active:a,over:u}=t;!u||a.id===u.id||b(v=>{const j=v.order.indexOf(String(a.id)),J=v.order.indexOf(String(u.id));return j===-1||J===-1?v:d({...v,order:ve(v.order,j,J)})})}function Y(){const t=d(P(e,i));b(t),O(t),y.current=t,K.mutateAsync()}return r.jsxs("div",{className:"grid gap-4",children:[o?r.jsx(fe,{sensors:q,collisionDetection:me,onDragEnd:Q,children:r.jsxs("div",{className:"grid gap-3 rounded-[24px] border border-[var(--ui-border-subtle)] bg-[var(--ui-surface-1)] p-4",children:[r.jsx("div",{className:"text-[12px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:"Visible boxes"}),r.jsx(xe,{items:S.map(t=>t.id),strategy:he,children:r.jsx("div",{className:"grid gap-2",children:S.map((t,a)=>{const u=m.widgets[t.id]??{hidden:!1,fullWidth:!1,titleVisible:!0,descriptionVisible:!0};return r.jsx(Fe,{widget:t,preferences:u,index:a,total:S.length,onMove:v=>X(t.id,v),onToggleHidden:()=>M(t.id,{hidden:!0}),onToggleFullWidth:()=>M(t.id,{fullWidth:!u.fullWidth})},t.id)})})}),w.length>0?r.jsxs(r.Fragment,{children:[r.jsx("div",{className:"pt-2 text-[12px] uppercase tracking-[0.16em] text-[var(--ui-ink-faint)]",children:"Hidden boxes"}),r.jsx("div",{className:"flex flex-wrap gap-2",children:w.map(t=>r.jsx("button",{type:"button",className:"rounded-full bg-[var(--ui-surface-2)] px-3 py-2 text-sm text-[var(--ui-ink-medium)] transition hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]",onClick:()=>M(t.id,{hidden:!1}),children:t.title},t.id))})]}):null]})}):null,r.jsxs("div",{ref:z,className:"relative",children:[r.jsx("div",{className:"pointer-events-none absolute top-3 right-3 z-20 flex max-w-[calc(100%-1.5rem)] flex-wrap items-center justify-end gap-1.5",children:r.jsxs("div",{className:"pointer-events-auto flex flex-wrap items-center justify-end gap-1.5",children:[s,o?r.jsxs(H,{type:"button",size:"sm",variant:"secondary",className:"h-8 rounded-full border-[var(--ui-border-subtle)] bg-[var(--surface-glass)] px-2.5 text-[12px] text-[var(--ui-ink-medium)] backdrop-blur-xl hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]",onClick:Y,children:[r.jsx(Z,{className:"size-3.5"}),r.jsx("span",{className:"hidden sm:inline",children:"Reset"})]}):null,r.jsxs(H,{type:"button",size:"sm",variant:o?"primary":"secondary",className:W("h-8 rounded-full px-2 text-[12px] backdrop-blur-xl [&>span]:gap-1.5",o?"bg-[var(--primary)] text-[var(--ui-ink-on-accent)] hover:opacity-95":"border-[var(--ui-border-subtle)] bg-[var(--surface-glass)] text-[var(--ui-ink-medium)] hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]"),onClick:()=>f(t=>!t),children:[r.jsx(ee,{className:"size-3.5"}),r.jsx("span",{className:"hidden xl:inline",children:o?"Done":"Layout"})]})]})}),r.jsx("div",{className:"surface-flow-grid",style:{display:"grid",gap:"16px",gridTemplateColumns:`repeat(${E}, minmax(0, 1fr))`,alignItems:"start"},children:S.map(t=>{const a=m.widgets[t.id]??{hidden:!1,fullWidth:!1,titleVisible:!0,descriptionVisible:!0},u=a.fullWidth?E:Math.min(Ee(t,$),E);return r.jsx("div",{style:{gridColumn:`span ${u} / span ${u}`},children:r.jsx(Ae,{definition:t,preferences:a,editing:o,width:u,children:r.jsx(ke,{boxId:t.workbenchBoxId??`surface:${e}:${t.id}`,surfaceId:e,children:t.render({compact:u<=4,width:u,editing:o,preferences:a})})})},t.id)})})]})]})}function $e({surfaceId:e,baseWidgets:i,actions:n,normalizeLayout:s}){return r.jsx(Pe,{surfaceId:e,widgets:i,normalizeLayout:s,actions:r.jsxs(r.Fragment,{children:[n,r.jsxs(le,{to:`/workbench?surface=${encodeURIComponent(e)}`,className:"inline-flex h-8 items-center gap-1.5 rounded-full border border-[var(--ui-border-subtle)] bg-[var(--surface-glass)] px-2.5 text-[12px] font-medium text-[var(--ui-ink-medium)] backdrop-blur-xl transition hover:border-[var(--ui-border-strong)] hover:bg-[var(--ui-surface-hover)] hover:text-[var(--ui-ink-strong)]",children:[r.jsx(oe,{className:"size-3.5"}),r.jsx("span",{className:"hidden sm:inline",children:"Workbench"})]})]})})}export{$e as A};
@@ -1 +1 @@
1
- import{j as a}from"./vendor-BwL6m4SE.js";import{a4 as c,c as m}from"./index-FpGANF9S.js";function x({eyebrow:s,title:r,description:e,titleHelp:t,tone:n="default",children:i,className:l}){const o={default:"bg-[var(--ui-surface-section)]",mint:"bg-[radial-gradient(circle_at_top_left,color-mix(in_srgb,var(--success)_12%,transparent),transparent_42%),var(--ui-surface-section)]",sky:"bg-[radial-gradient(circle_at_top_left,color-mix(in_srgb,var(--info)_12%,transparent),transparent_42%),var(--ui-surface-section)]",violet:"bg-[radial-gradient(circle_at_top_left,color-mix(in_srgb,var(--primary)_12%,transparent),transparent_42%),var(--ui-surface-section)]",rose:"bg-[radial-gradient(circle_at_top_left,color-mix(in_srgb,var(--danger)_12%,transparent),transparent_42%),var(--ui-surface-section)]",amber:"bg-[radial-gradient(circle_at_top_left,color-mix(in_srgb,var(--warning)_12%,transparent),transparent_42%),var(--ui-surface-section)]"};return a.jsxs("section",{className:m("min-w-0 overflow-hidden rounded-[30px] border border-[var(--ui-border-subtle)] px-4 py-5 shadow-[var(--card-shadow)] sm:px-5 lg:px-6",o[n],l),children:[a.jsx("div",{className:"font-label text-[11px] uppercase tracking-[0.18em] text-[var(--ui-ink-faint)]",children:s}),a.jsxs("div",{className:"mt-3 flex min-w-0 items-start gap-2",children:[a.jsx("h2",{className:"min-w-0 break-words font-display text-[clamp(1.8rem,3.2vw,3rem)] leading-none text-[var(--ui-ink-strong)]",children:r}),t?a.jsx(c,{content:t,label:`Explain ${r.toLowerCase()}`,className:"mt-1 shrink-0"}):null]}),e?a.jsx("p",{className:"mt-3 max-w-3xl break-words text-sm leading-7 text-[var(--ui-ink-soft)]",children:e}):null,a.jsx("div",{className:"mt-5 min-w-0",children:i})]})}export{x as A};
1
+ import{j as a}from"./vendor-BwL6m4SE.js";import{a4 as c,c as m}from"./index-izRKx6JK.js";function x({eyebrow:s,title:r,description:e,titleHelp:t,tone:n="default",children:i,className:l}){const o={default:"bg-[var(--ui-surface-section)]",mint:"bg-[radial-gradient(circle_at_top_left,color-mix(in_srgb,var(--success)_12%,transparent),transparent_42%),var(--ui-surface-section)]",sky:"bg-[radial-gradient(circle_at_top_left,color-mix(in_srgb,var(--info)_12%,transparent),transparent_42%),var(--ui-surface-section)]",violet:"bg-[radial-gradient(circle_at_top_left,color-mix(in_srgb,var(--primary)_12%,transparent),transparent_42%),var(--ui-surface-section)]",rose:"bg-[radial-gradient(circle_at_top_left,color-mix(in_srgb,var(--danger)_12%,transparent),transparent_42%),var(--ui-surface-section)]",amber:"bg-[radial-gradient(circle_at_top_left,color-mix(in_srgb,var(--warning)_12%,transparent),transparent_42%),var(--ui-surface-section)]"};return a.jsxs("section",{className:m("min-w-0 overflow-hidden rounded-[30px] border border-[var(--ui-border-subtle)] px-4 py-5 shadow-[var(--card-shadow)] sm:px-5 lg:px-6",o[n],l),children:[a.jsx("div",{className:"font-label text-[11px] uppercase tracking-[0.18em] text-[var(--ui-ink-faint)]",children:s}),a.jsxs("div",{className:"mt-3 flex min-w-0 items-start gap-2",children:[a.jsx("h2",{className:"min-w-0 break-words font-display text-[clamp(1.8rem,3.2vw,3rem)] leading-none text-[var(--ui-ink-strong)]",children:r}),t?a.jsx(c,{content:t,label:`Explain ${r.toLowerCase()}`,className:"mt-1 shrink-0"}):null]}),e?a.jsx("p",{className:"mt-3 max-w-3xl break-words text-sm leading-7 text-[var(--ui-ink-soft)]",children:e}):null,a.jsx("div",{className:"mt-5 min-w-0",children:i})]})}export{x as A};