fuli-context 0.20.0-beta.1 → 0.20.0-beta.10

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 (967) hide show
  1. package/README.md +151 -33
  2. package/README.zh-CN.md +106 -30
  3. package/dist/web/assets/AboutPage-Bxm7RJZg.css +1 -0
  4. package/dist/web/assets/AboutPage-CjDenGS_.js +1 -0
  5. package/dist/web/assets/AgentName-DdlJlpT3.js +1 -0
  6. package/dist/web/assets/AgentProfilePage-Cx_Uf5Vf.js +1 -0
  7. package/dist/web/assets/AgentProfilePage-DXvLQu-C.css +1 -0
  8. package/dist/web/assets/AgentsDirectoryPage-BwF-0nFO.css +1 -0
  9. package/dist/web/assets/AgentsDirectoryPage-DylT-GSW.js +1 -0
  10. package/dist/web/assets/BackLink-D7oAvDG5.js +1 -0
  11. package/dist/web/assets/BoardMoveMenu-B0pA7LLx.js +1 -0
  12. package/dist/web/assets/CaptureChangePage-Cch3mT4b.css +1 -0
  13. package/dist/web/assets/CaptureChangePage-DEuqPb14.js +1 -0
  14. package/dist/web/assets/Card-BZFLZ_2I.js +1 -0
  15. package/dist/web/assets/CardHeader-C_c0keQn.js +1 -0
  16. package/dist/web/assets/CardTitle-yXOhV577.js +1 -0
  17. package/dist/web/assets/ConnectionsPage-DlnHdtwn.js +1 -0
  18. package/dist/web/assets/CreateProjectDialog-BVJqWdlT.js +2 -0
  19. package/dist/web/assets/CreateProjectDialog-BaPfiS1T.css +1 -0
  20. package/dist/web/assets/DataFormatPage-BdcjcyhZ.js +1 -0
  21. package/dist/web/assets/DataFormatPage-Dp7mePUw.css +1 -0
  22. package/dist/web/assets/DialogFooter-DYawfDCD.js +1 -0
  23. package/dist/web/assets/EmployeeRecruitDialog-C6ADVxkQ.css +1 -0
  24. package/dist/web/assets/EmployeeRecruitDialog-CB4ARFkM.js +1 -0
  25. package/dist/web/assets/EmployeeWorkbenchPage-BUMfMBc8.js +3 -0
  26. package/dist/web/assets/EmployeeWorkbenchPage-BenZP7De.css +1 -0
  27. package/dist/web/assets/GrowthLoading-B_QrPkEy.css +1 -0
  28. package/dist/web/assets/GrowthLoading-smW3-Gfp.js +1 -0
  29. package/dist/web/assets/InboxPage-CbbiHgTr.css +1 -0
  30. package/dist/web/assets/InboxPage-Crn1UU7s.js +4 -0
  31. package/dist/web/assets/Input-F1oftPWh.js +1 -0
  32. package/dist/web/assets/KnowledgeEditDialog-D0se__D4.css +1 -0
  33. package/dist/web/assets/KnowledgeEditDialog-VdQwbX4E.js +1 -0
  34. package/dist/web/assets/KnowledgeHardDeleteSection-CXRmNnZF.js +1 -0
  35. package/dist/web/assets/KnowledgeItemEditPage-CQo3TbCJ.js +1 -0
  36. package/dist/web/assets/KnowledgeItemSummaryCard-Dd2McM-d.js +1 -0
  37. package/dist/web/assets/KnowledgeOrganizerPage-D1a3cGwL.js +1 -0
  38. package/dist/web/assets/KnowledgeOrganizerPage-DfBiCITI.css +1 -0
  39. package/dist/web/assets/KnowledgePage-Bfbfz_Z8.js +1 -0
  40. package/dist/web/assets/KnowledgePeek-BNBkh1ey.js +1 -0
  41. package/dist/web/assets/KnowledgePeek-DEo6IbBP.css +1 -0
  42. package/dist/web/assets/KnowledgeTurnReceiptPage-Ckw_olrt.js +1 -0
  43. package/dist/web/assets/KnowledgeWorkspace-C6l_yvWO.css +1 -0
  44. package/dist/web/assets/KnowledgeWorkspace-pH2tAFld.js +4 -0
  45. package/dist/web/assets/Label-yDCtlpkb.js +1 -0
  46. package/dist/web/assets/ModelSettingsPage-C3eBDWRL.js +1 -0
  47. package/dist/web/assets/ModelSettingsPage-DZkrJw7R.css +1 -0
  48. package/dist/web/assets/NotFoundPage-8gVVukRR.js +1 -0
  49. package/dist/web/assets/OccupationsPage-BTormZIO.css +1 -0
  50. package/dist/web/assets/OccupationsPage-PNoqE21Y.js +1 -0
  51. package/dist/web/assets/OverviewPage-DiwYSnhh.js +2 -0
  52. package/dist/web/assets/OverviewPage-YBQHyU7s.css +1 -0
  53. package/dist/web/assets/PersonalProfilePage-CGW50MHm.css +1 -0
  54. package/dist/web/assets/PersonalProfilePage-C_v2BFee.js +1 -0
  55. package/dist/web/assets/PersonalProjectsPage-Cf5mrQmy.css +1 -0
  56. package/dist/web/assets/PersonalProjectsPage-DGRV8cM5.js +1 -0
  57. package/dist/web/assets/PopperContent-5zqbtnYr.js +1 -0
  58. package/dist/web/assets/Presence-BYfYJNMD.js +3 -0
  59. package/dist/web/assets/ProjectAgentDetailPage-BQ9ffaCX.js +8 -0
  60. package/dist/web/assets/ProjectAgentDetailPage-CRFE6n-s.css +1 -0
  61. package/dist/web/assets/ProjectAgentDialog-BGckQDTq.js +5 -0
  62. package/dist/web/assets/ProjectAgentDialog-DHP7BfAf.css +1 -0
  63. package/dist/web/assets/ProjectAgentFirstTask-BVDcaNNi.css +1 -0
  64. package/dist/web/assets/ProjectAgentFirstTask-DrSd3nR-.js +1 -0
  65. package/dist/web/assets/ProjectAgentsPage-BBzKAhZx.css +1 -0
  66. package/dist/web/assets/ProjectAgentsPage-U4Om3EPu.js +1 -0
  67. package/dist/web/assets/ProjectScopePicker-BM3MbIYV.css +1 -0
  68. package/dist/web/assets/ProjectScopePicker-D0oxbwOd.js +1 -0
  69. package/dist/web/assets/PublicProjectsPage-CvkQ3E8I.js +1 -0
  70. package/dist/web/assets/PublicProjectsPage-Ditr0SY-.css +1 -0
  71. package/dist/web/assets/RadioGroupItem-CBpbQlHx.js +1 -0
  72. package/dist/web/assets/RoundtablesPage-BEUaKOjI.js +1 -0
  73. package/dist/web/assets/RoundtablesPage-BMYSDYH8.css +1 -0
  74. package/dist/web/assets/RovingFocusGroup-X9U-ufYr.js +1 -0
  75. package/dist/web/assets/RovingFocusItem-_uA_OCLT.js +1 -0
  76. package/dist/web/assets/SessionMigrationPage-WVFSDcUO.js +1 -0
  77. package/dist/web/assets/SessionRecordsPage-Bs2eLXEi.js +1 -0
  78. package/dist/web/assets/SettingsPage-BbX9ysTX.css +1 -0
  79. package/dist/web/assets/SettingsPage-DlIwICIz.js +1 -0
  80. package/dist/web/assets/SharedJefaReportPage-B_rreEep.js +1 -0
  81. package/dist/web/assets/SharedJefaReportPage-CcD-06mK.css +1 -0
  82. package/dist/web/assets/TabsContent-8pXwYJPz.js +1 -0
  83. package/dist/web/assets/TabsTrigger-Cd6SI2yI.js +1 -0
  84. package/dist/web/assets/TagVocabularyPage-BQiuKG-4.js +1 -0
  85. package/dist/web/assets/TaskExecutionPlan-C9kJJJKk.css +1 -0
  86. package/dist/web/assets/TaskExecutionPlan-CupxJeyo.js +2 -0
  87. package/dist/web/assets/TaskSchedulesPage-DcmDdY10.css +1 -0
  88. package/dist/web/assets/TaskSchedulesPage-zYQs7s6T.js +1 -0
  89. package/dist/web/assets/Teleport-BZX1Eb7R.js +1 -0
  90. package/dist/web/assets/TextField-CielK4l3.js +1 -0
  91. package/dist/web/assets/UiDialog-BSDblUpR.js +1 -0
  92. package/dist/web/assets/UiDisclosure-DLmVwmy1.js +1 -0
  93. package/dist/web/assets/UiIcon-B8eZeuGI.js +1 -0
  94. package/dist/web/assets/UiIcon-EWCwhyKc.css +1 -0
  95. package/dist/web/assets/UiIconButton-e754Tmnq.js +1 -0
  96. package/dist/web/assets/UiSegmented-D1HD-qin.js +1 -0
  97. package/dist/web/assets/UiSelect-CbkTsi2e.js +1 -0
  98. package/dist/web/assets/UiSelect-CiSPw-7k.css +1 -0
  99. package/dist/web/assets/UiToggle-B2sPCVZe.css +1 -0
  100. package/dist/web/assets/UiToggle-Dz93aXFK.js +1 -0
  101. package/dist/web/assets/UiWeight-CUvyApSB.js +1 -0
  102. package/dist/web/assets/UiWeight-aUNtanHz.css +1 -0
  103. package/dist/web/assets/UnassignedConversationsPanel-xY7gsFot.js +1 -0
  104. package/dist/web/assets/VirtualDirectoryList-Dv6PwLjU.js +1 -0
  105. package/dist/web/assets/Workbench3D--4N_uKzp.js +2 -0
  106. package/dist/web/assets/Workbench3D-BxpszsXO.css +1 -0
  107. package/dist/web/assets/WritingTastePage-B7KojA4r.js +1 -0
  108. package/dist/web/assets/WritingTastePage-asIa-2U5.css +1 -0
  109. package/dist/web/assets/_plugin-vue_export-helper-BmfQlfI8.js +10 -0
  110. package/dist/web/assets/accordion-gXElbGP_.js +1 -0
  111. package/dist/web/assets/agent-identity-color-RqpT7gtx.js +1 -0
  112. package/dist/web/assets/agent-occupation-ChN-1QjC.js +1 -0
  113. package/dist/web/assets/agent-pins-Chh_rdBi.js +1 -0
  114. package/dist/web/assets/agent-profile-LzhgJINr.css +1 -0
  115. package/dist/web/assets/agent-profile.css_vue_type_style_index_0_src_true_lang-DWlz7UoN.js +1 -0
  116. package/dist/web/assets/agent-work-summary-C9yMf019.js +1 -0
  117. package/dist/web/assets/astro-avatar-GADWtfJX.webp +0 -0
  118. package/dist/web/assets/attention-store-CG9cF6DX.js +1 -0
  119. package/dist/web/assets/{avatars-z6ANYG_r.js → avatars-CUyfvsKO.js} +1 -1
  120. package/dist/web/assets/badge-DvvDq2Wb.js +1 -0
  121. package/dist/web/assets/board-task-peek-C7CQ78B5.js +1 -0
  122. package/dist/web/assets/button-CFEnxtio.js +1 -0
  123. package/dist/web/assets/checkbox-DovdRz8u.js +1 -0
  124. package/dist/web/assets/client-lh80ewvs.js +1 -0
  125. package/dist/web/assets/console-CQMgYkk9.js +1 -0
  126. package/dist/web/assets/conversation-launcher-settings-B1QM-wZB.js +1 -0
  127. package/dist/web/assets/date-time-Clwafva-.js +1 -0
  128. package/dist/web/assets/debounce-CFk-gEUl.js +1 -0
  129. package/dist/web/assets/design-lab-BDKwIbI8.js +1 -0
  130. package/dist/web/assets/dialog-D2mO6m3B.js +1 -0
  131. package/dist/web/assets/dist-PmK0PfVA.js +1 -0
  132. package/dist/web/assets/dropdown-menu-YzCnvjAb.js +1 -0
  133. package/dist/web/assets/field-BMEFEyVC.js +1 -0
  134. package/dist/web/assets/galaxy-scene-BwL9s-x4.js +1 -0
  135. package/dist/web/assets/handleAndDispatchCustomEvent-Bng2rRDf.js +1 -0
  136. package/dist/web/assets/identity-bK-fJdnj.js +1 -0
  137. package/dist/web/assets/index-8KuAcL6X.js +2 -0
  138. package/dist/web/assets/index-DedvhyS3.css +1 -0
  139. package/dist/web/assets/judgment-types-DJnAr9c0.js +1 -0
  140. package/dist/web/assets/layout-DCeMsVR8.js +1 -0
  141. package/dist/web/assets/model-BwNZZZNP.js +1 -0
  142. package/dist/web/assets/model-CPMYnu3S.js +1 -0
  143. package/dist/web/assets/model-Cengn9fg.js +1 -0
  144. package/dist/web/assets/model-CuY1vtEy.js +1 -0
  145. package/dist/web/assets/model-DpVrfbnj.js +1 -0
  146. package/dist/web/assets/model-rumuELTi.js +1 -0
  147. package/dist/web/assets/motion-preference-A1AMssSH.js +1 -0
  148. package/dist/web/assets/occupation-catalog-DxwlYD1L.js +1 -0
  149. package/dist/web/assets/office-scene-Df4cLTmp.js +1 -0
  150. package/dist/web/assets/orchestration-filters-DZpJ0FN3.js +1 -0
  151. package/dist/web/assets/page-title-Bg-mVyrS.js +1 -0
  152. package/dist/web/assets/personal-profile-graph-tMneNj_m.js +1 -0
  153. package/dist/web/assets/preload-helper-BLdHbfdN.js +1 -0
  154. package/dist/web/assets/{profile-model-BQO4zNs9.js → profile-model-kCmPHrmk.js} +1 -1
  155. package/dist/web/assets/project-capture-QgMw6qvo.js +1 -0
  156. package/dist/web/assets/project-origin-ppsYHpYL.js +1 -0
  157. package/dist/web/assets/project-team-api-DwP0O3rn.js +1 -0
  158. package/dist/web/assets/quick-edit-api-BiyK3ih-.js +1 -0
  159. package/dist/web/assets/shared-report-D3Hem1t5.js +7 -0
  160. package/dist/web/assets/shared-report-eUYPCJTS.css +1 -0
  161. package/dist/web/assets/short-ids-BpNwVgnt.js +1 -0
  162. package/dist/web/assets/stage-Bw1Kfjt_.js +1 -0
  163. package/dist/web/assets/stage-ucn3npX-.js +3835 -0
  164. package/dist/web/assets/task-board-model-BohbBuwF.js +1 -0
  165. package/dist/web/assets/task-labels-7KyNw9id.js +1 -0
  166. package/dist/web/assets/task-updates-ChvjLQXV.js +1 -0
  167. package/dist/web/assets/ui-CE38wkv4.css +1 -0
  168. package/dist/web/assets/ui-Ck58paqr.js +1 -0
  169. package/dist/web/assets/useAgentRecords-C6RrZwwv.js +1 -0
  170. package/dist/web/assets/useApi-CROJJdhE-BujjnKN_.js +1 -0
  171. package/dist/web/assets/useArrowNavigation-LczgkNfS.js +1 -0
  172. package/dist/web/assets/useFocusReturn-D9IOIg17.js +1 -0
  173. package/dist/web/assets/useKnowledgeItemPeek-C6nAzvDL.js +1 -0
  174. package/dist/web/assets/useMinimumLoadingDisplay-HnxkDut6.js +1 -0
  175. package/dist/web/assets/useRoutePeek-BvYFc1BA.js +1 -0
  176. package/dist/web/assets/vue-router-Bl55c88B.js +1 -0
  177. package/dist/web/assets/workbench-model-CaNC35vW.js +1 -0
  178. package/dist/web/index.html +44 -21
  179. package/docs/agent-apps.md +110 -0
  180. package/docs/agent-conversations-and-collaboration.md +6 -0
  181. package/docs/agent-interface-architecture.md +10 -0
  182. package/docs/agent-roundtable.md +42 -1
  183. package/docs/client-connections.md +158 -110
  184. package/docs/employee-agents.md +28 -4
  185. package/docs/external-knowledge-architecture.md +1 -1
  186. package/docs/judgment-and-autonomy.md +36 -2
  187. package/docs/project-agent-memory.md +29 -8
  188. package/graph-provider/fuli_graph/agent_confirmation_progress.py +62 -0
  189. package/graph-provider/fuli_graph/agent_conversation_models.py +1 -0
  190. package/graph-provider/fuli_graph/agent_conversation_routes.py +29 -0
  191. package/graph-provider/fuli_graph/app.py +93 -5
  192. package/graph-provider/fuli_graph/collaboration_context.py +79 -43
  193. package/graph-provider/fuli_graph/config.py +6 -0
  194. package/graph-provider/fuli_graph/conversation_context.py +90 -41
  195. package/graph-provider/fuli_graph/conversation_scope.py +80 -0
  196. package/graph-provider/fuli_graph/conversation_triage_models.py +48 -0
  197. package/graph-provider/fuli_graph/default_project_lead.py +3 -3
  198. package/graph-provider/fuli_graph/graph_field_contract.py +844 -0
  199. package/graph-provider/fuli_graph/graph_format.py +454 -0
  200. package/graph-provider/fuli_graph/graph_format_backfills.py +490 -0
  201. package/graph-provider/fuli_graph/graph_format_confirm.py +359 -0
  202. package/graph-provider/fuli_graph/graph_format_journal.py +329 -0
  203. package/graph-provider/fuli_graph/graph_format_ledger.py +239 -0
  204. package/graph-provider/fuli_graph/graph_format_migrations.py +145 -0
  205. package/graph-provider/fuli_graph/graph_format_routes.py +73 -0
  206. package/graph-provider/fuli_graph/graph_format_schema.py +251 -0
  207. package/graph-provider/fuli_graph/graph_models.py +37 -3
  208. package/graph-provider/fuli_graph/graph_query.py +65 -19
  209. package/graph-provider/fuli_graph/graph_schema_state.py +99 -0
  210. package/graph-provider/fuli_graph/knowledge_audit.py +77 -16
  211. package/graph-provider/fuli_graph/knowledge_audit_models.py +29 -0
  212. package/graph-provider/fuli_graph/knowledge_basis_review.py +244 -0
  213. package/graph-provider/fuli_graph/knowledge_batch_confirmation.py +120 -40
  214. package/graph-provider/fuli_graph/knowledge_deletion_watermark.py +36 -0
  215. package/graph-provider/fuli_graph/knowledge_dependencies.py +199 -0
  216. package/graph-provider/fuli_graph/knowledge_hard_delete.py +626 -0
  217. package/graph-provider/fuli_graph/knowledge_hard_delete_models.py +177 -0
  218. package/graph-provider/fuli_graph/knowledge_hard_delete_operations.py +131 -0
  219. package/graph-provider/fuli_graph/knowledge_hard_delete_publications.py +42 -0
  220. package/graph-provider/fuli_graph/knowledge_hard_delete_routes.py +57 -0
  221. package/graph-provider/fuli_graph/knowledge_hard_delete_traces.py +149 -0
  222. package/graph-provider/fuli_graph/knowledge_integrity.py +135 -0
  223. package/graph-provider/fuli_graph/knowledge_item_routes.py +54 -0
  224. package/graph-provider/fuli_graph/knowledge_item_version.py +38 -0
  225. package/graph-provider/fuli_graph/knowledge_item_view.py +271 -0
  226. package/graph-provider/fuli_graph/knowledge_item_view_models.py +220 -0
  227. package/graph-provider/fuli_graph/knowledge_management.py +347 -48
  228. package/graph-provider/fuli_graph/knowledge_outdated.py +80 -0
  229. package/graph-provider/fuli_graph/knowledge_project_scope.py +109 -0
  230. package/graph-provider/fuli_graph/knowledge_records.py +3 -1
  231. package/graph-provider/fuli_graph/knowledge_review.py +121 -2
  232. package/graph-provider/fuli_graph/knowledge_review_models.py +36 -0
  233. package/graph-provider/fuli_graph/knowledge_scope_edit.py +149 -0
  234. package/graph-provider/fuli_graph/knowledge_search.py +36 -11
  235. package/graph-provider/fuli_graph/knowledge_session_migration.py +137 -0
  236. package/graph-provider/fuli_graph/knowledge_session_migration_models.py +78 -0
  237. package/graph-provider/fuli_graph/knowledge_source_delete_copies.py +62 -0
  238. package/graph-provider/fuli_graph/knowledge_source_delete_inventory.py +71 -0
  239. package/graph-provider/fuli_graph/knowledge_source_delete_lineages.py +64 -0
  240. package/graph-provider/fuli_graph/knowledge_source_delete_models.py +87 -0
  241. package/graph-provider/fuli_graph/knowledge_source_delete_mutation.py +39 -0
  242. package/graph-provider/fuli_graph/knowledge_source_delete_plan.py +100 -0
  243. package/graph-provider/fuli_graph/knowledge_source_delete_selection.py +65 -0
  244. package/graph-provider/fuli_graph/knowledge_source_delete_target.py +44 -0
  245. package/graph-provider/fuli_graph/knowledge_source_fence.py +38 -0
  246. package/graph-provider/fuli_graph/knowledge_source_memory.py +109 -0
  247. package/graph-provider/fuli_graph/knowledge_source_tasks.py +52 -0
  248. package/graph-provider/fuli_graph/knowledge_tag_governance.py +713 -0
  249. package/graph-provider/fuli_graph/knowledge_tag_governance_models.py +240 -0
  250. package/graph-provider/fuli_graph/knowledge_tag_models.py +225 -0
  251. package/graph-provider/fuli_graph/knowledge_tag_ranking.py +109 -0
  252. package/graph-provider/fuli_graph/knowledge_tag_redirects.py +24 -0
  253. package/graph-provider/fuli_graph/knowledge_tag_relations.py +213 -0
  254. package/graph-provider/fuli_graph/knowledge_tag_routes.py +77 -0
  255. package/graph-provider/fuli_graph/knowledge_tag_similarity.py +114 -0
  256. package/graph-provider/fuli_graph/knowledge_tag_vocabulary.py +169 -0
  257. package/graph-provider/fuli_graph/knowledge_tags.py +425 -0
  258. package/graph-provider/fuli_graph/knowledge_versions.py +581 -0
  259. package/graph-provider/fuli_graph/knowledge_weight.py +40 -0
  260. package/graph-provider/fuli_graph/knowledge_weight_models.py +9 -0
  261. package/graph-provider/fuli_graph/migrate_lead_occupation.py +187 -0
  262. package/graph-provider/fuli_graph/model_validation.py +14 -0
  263. package/graph-provider/fuli_graph/models.py +109 -5
  264. package/graph-provider/fuli_graph/name_identity.py +31 -0
  265. package/graph-provider/fuli_graph/negative_feedback_block.py +53 -0
  266. package/graph-provider/fuli_graph/occupation_catalog.py +116 -0
  267. package/graph-provider/fuli_graph/occupation_routes.py +25 -0
  268. package/graph-provider/fuli_graph/personal_global_preferences.py +6 -10
  269. package/graph-provider/fuli_graph/preference_conflicts.py +42 -2
  270. package/graph-provider/fuli_graph/preference_task_scope.py +74 -0
  271. package/graph-provider/fuli_graph/project_agent_attention_models.py +7 -0
  272. package/graph-provider/fuli_graph/project_agent_attention_routes.py +9 -1
  273. package/graph-provider/fuli_graph/project_agent_coordination_models.py +57 -5
  274. package/graph-provider/fuli_graph/project_agent_delegations.py +129 -13
  275. package/graph-provider/fuli_graph/project_agent_dismissal_models.py +122 -0
  276. package/graph-provider/fuli_graph/project_agent_dismissal_routes.py +52 -0
  277. package/graph-provider/fuli_graph/project_agent_executor_models.py +12 -18
  278. package/graph-provider/fuli_graph/project_agent_hierarchy.py +98 -0
  279. package/graph-provider/fuli_graph/project_agent_memory_models.py +22 -3
  280. package/graph-provider/fuli_graph/project_agent_memory_routes.py +13 -1
  281. package/graph-provider/fuli_graph/project_agent_models.py +10 -2
  282. package/graph-provider/fuli_graph/project_agent_occupation_models.py +36 -0
  283. package/graph-provider/fuli_graph/project_agent_recruitment_occupation.py +74 -0
  284. package/graph-provider/fuli_graph/project_agent_recruitment_values.py +10 -1
  285. package/graph-provider/fuli_graph/project_agent_remote_origins.py +24 -11
  286. package/graph-provider/fuli_graph/project_agent_routes.py +67 -4
  287. package/graph-provider/fuli_graph/project_agent_score_card.py +237 -0
  288. package/graph-provider/fuli_graph/project_agent_score_card_models.py +126 -0
  289. package/graph-provider/fuli_graph/project_agent_score_card_routes.py +24 -0
  290. package/graph-provider/fuli_graph/project_agent_task_models.py +37 -17
  291. package/graph-provider/fuli_graph/project_agent_worker_access.py +229 -0
  292. package/graph-provider/fuli_graph/project_agent_worker_models.py +59 -0
  293. package/graph-provider/fuli_graph/project_agent_worker_routes.py +88 -0
  294. package/graph-provider/fuli_graph/project_brief.py +46 -0
  295. package/graph-provider/fuli_graph/project_knowledge.py +38 -9
  296. package/graph-provider/fuli_graph/project_memory_usage.py +175 -0
  297. package/graph-provider/fuli_graph/project_memory_usage_projection.py +35 -0
  298. package/graph-provider/fuli_graph/project_memory_usage_routes.py +26 -0
  299. package/graph-provider/fuli_graph/provider_values.py +5 -0
  300. package/graph-provider/fuli_graph/publication_source_copies.py +98 -0
  301. package/graph-provider/fuli_graph/publication_submission.py +105 -0
  302. package/graph-provider/fuli_graph/publication_submission_models.py +40 -0
  303. package/graph-provider/fuli_graph/runtime.py +204 -567
  304. package/graph-provider/fuli_graph/search_projection.py +6 -27
  305. package/graph-provider/fuli_graph/session_records.py +257 -0
  306. package/graph-provider/fuli_graph/session_records_models.py +96 -0
  307. package/graph-provider/fuli_graph/staffing_demand.py +74 -0
  308. package/graph-provider/fuli_graph/store.py +16 -0
  309. package/graph-provider/fuli_graph/store_agent_conversations.py +117 -28
  310. package/graph-provider/fuli_graph/store_conversation_triage.py +123 -0
  311. package/graph-provider/fuli_graph/store_identity.py +3 -1
  312. package/graph-provider/fuli_graph/store_knowledge.py +500 -369
  313. package/graph-provider/fuli_graph/store_knowledge_tags.py +391 -0
  314. package/graph-provider/fuli_graph/store_occupation_catalog.py +146 -0
  315. package/graph-provider/fuli_graph/store_project_agent_attention.py +21 -1
  316. package/graph-provider/fuli_graph/store_project_agent_context.py +5 -2
  317. package/graph-provider/fuli_graph/store_project_agent_coordination_policy.py +19 -1
  318. package/graph-provider/fuli_graph/store_project_agent_dismissal.py +314 -0
  319. package/graph-provider/fuli_graph/store_project_agent_executor_learning.py +2 -2
  320. package/graph-provider/fuli_graph/store_project_agent_executor_routing.py +1 -1
  321. package/graph-provider/fuli_graph/store_project_agent_executors.py +1 -1
  322. package/graph-provider/fuli_graph/store_project_agent_memory.py +17 -2
  323. package/graph-provider/fuli_graph/store_project_agent_occupation.py +75 -0
  324. package/graph-provider/fuli_graph/store_project_agent_pages.py +84 -0
  325. package/graph-provider/fuli_graph/store_project_agent_score_card.py +97 -0
  326. package/graph-provider/fuli_graph/store_project_agent_task_activity.py +31 -1
  327. package/graph-provider/fuli_graph/store_project_agent_task_persistence.py +3 -1
  328. package/graph-provider/fuli_graph/store_project_agent_task_reads.py +15 -1
  329. package/graph-provider/fuli_graph/store_project_agent_task_recruitment.py +82 -138
  330. package/graph-provider/fuli_graph/store_project_agent_task_staffing.py +32 -7
  331. package/graph-provider/fuli_graph/store_project_agent_tasks.py +95 -16
  332. package/graph-provider/fuli_graph/store_project_agent_worker_runs.py +368 -0
  333. package/graph-provider/fuli_graph/store_project_agents.py +89 -89
  334. package/graph-provider/fuli_graph/store_projects.py +16 -1
  335. package/graph-provider/fuli_graph/store_publication.py +97 -43
  336. package/graph-provider/fuli_graph/store_records.py +12 -3
  337. package/graph-provider/fuli_graph/store_recruitment_fulfillment.py +95 -0
  338. package/graph-provider/fuli_graph/store_task_contexts.py +209 -33
  339. package/graph-provider/fuli_graph/store_transcript_recovery.py +60 -0
  340. package/graph-provider/fuli_graph/system_agents.py +47 -8
  341. package/graph-provider/fuli_graph/system_hr_identity.py +8 -1
  342. package/graph-provider/fuli_graph/task_activity_origin.py +70 -0
  343. package/graph-provider/fuli_graph/task_context_adoption.py +8 -5
  344. package/graph-provider/fuli_graph/task_context_auto_close.py +54 -0
  345. package/graph-provider/fuli_graph/task_context_coordination.py +114 -0
  346. package/graph-provider/fuli_graph/task_context_models.py +96 -1
  347. package/graph-provider/fuli_graph/task_context_routes.py +25 -1
  348. package/graph-provider/fuli_graph/task_participant_running.py +15 -0
  349. package/graph-provider/fuli_graph/task_scene.py +60 -0
  350. package/graph-provider/fuli_graph/task_session_hints.py +51 -0
  351. package/graph-provider/fuli_graph/task_turn_receipts.py +92 -0
  352. package/graph-provider/fuli_graph/task_worker_attribution.py +111 -0
  353. package/graph-provider/fuli_graph/temporary_project_scope.py +26 -8
  354. package/graph-provider/fuli_graph/worker_run_execution.py +48 -0
  355. package/graph-provider/fuli_graph/workflow_candidates.py +4 -9
  356. package/graph-provider/pyproject.toml +2 -1
  357. package/native/win32/fuli-win-helper.exe +0 -0
  358. package/npm-shrinkwrap.json +1260 -250
  359. package/package.json +27 -6
  360. package/packages/roundtable/bin/fuli-roundtable.js +9 -0
  361. package/packages/roundtable/package.json +31 -0
  362. package/{src → packages/roundtable/src}/agents/claude-code/wake.js +8 -9
  363. package/{src → packages/roundtable/src}/agents/codex/wake.js +7 -10
  364. package/{src/publication → packages/roundtable/src}/canonical-json.js +13 -7
  365. package/packages/roundtable/src/errors.js +10 -0
  366. package/packages/roundtable/src/host.js +48 -0
  367. package/packages/roundtable/src/peer/chat-coordinator.js +104 -0
  368. package/packages/roundtable/src/peer/chat-port.js +77 -0
  369. package/packages/roundtable/src/peer/control-cli.js +97 -0
  370. package/packages/roundtable/src/peer/control.js +47 -0
  371. package/{src/agent-peer → packages/roundtable/src/peer}/coordinator-http.js +10 -0
  372. package/{src/agent-peer → packages/roundtable/src/peer}/coordinator-service.js +25 -8
  373. package/{src/agent-peer → packages/roundtable/src/peer}/coordinator-store.js +37 -18
  374. package/{src/agent-peer → packages/roundtable/src/peer}/node-store.js +25 -20
  375. package/{src/agent-peer → packages/roundtable/src/peer}/origin-proof.js +6 -4
  376. package/{src/agent-peer → packages/roundtable/src/peer}/peer-port.js +34 -18
  377. package/{src/agent-peer → packages/roundtable/src/peer}/peer-runtime.js +50 -46
  378. package/{src/agent-peer → packages/roundtable/src/peer}/peer-transport.js +1 -1
  379. package/{src/agent-peer → packages/roundtable/src/peer}/protocol.js +16 -2
  380. package/{src/agent-peer → packages/roundtable/src/peer}/runner.js +21 -14
  381. package/packages/roundtable/src/roundtable/attention-inbox-store.js +39 -0
  382. package/packages/roundtable/src/roundtable/attention-inbox.js +48 -0
  383. package/packages/roundtable/src/roundtable/chat-contract.js +49 -0
  384. package/packages/roundtable/src/roundtable/chat-notifications.js +53 -0
  385. package/packages/roundtable/src/roundtable/chat-service.js +132 -0
  386. package/packages/roundtable/src/roundtable/chat-snapshot.js +52 -0
  387. package/packages/roundtable/src/roundtable/chat-store.js +111 -0
  388. package/packages/roundtable/src/roundtable/chat-updates.js +28 -0
  389. package/packages/roundtable/src/roundtable/chat-wait.js +36 -0
  390. package/packages/roundtable/src/roundtable/chat-wake.js +53 -0
  391. package/packages/roundtable/src/roundtable/chat.js +97 -0
  392. package/packages/roundtable/src/roundtable/discovery.js +12 -0
  393. package/packages/roundtable/src/roundtable/memory-observation.js +24 -0
  394. package/packages/roundtable/src/roundtable/project-target.js +37 -0
  395. package/{src/agent-roundtable → packages/roundtable/src/roundtable}/service.js +216 -70
  396. package/packages/roundtable/src/roundtable/store.js +181 -0
  397. package/packages/roundtable/src/roundtable/wake.js +204 -0
  398. package/packages/roundtable/src/standalone/cli.js +134 -0
  399. package/packages/roundtable/src/standalone/host.js +114 -0
  400. package/packages/roundtable/src/standalone/mcp.js +98 -0
  401. package/packages/roundtable/src/standalone/runtime.js +25 -0
  402. package/packages/roundtable/src/standalone/serve.js +60 -0
  403. package/packages/roundtable/src/standalone/store.js +111 -0
  404. package/packages/roundtable/src/storage/data-format-error.js +34 -0
  405. package/packages/roundtable/src/storage/database-backup-process.js +12 -0
  406. package/packages/roundtable/src/storage/database-format.js +575 -0
  407. package/packages/roundtable/src/storage/database-migration.js +375 -0
  408. package/packages/roundtable/src/storage/format-backup-names.js +41 -0
  409. package/skills/capturing-session-knowledge/SKILL.md +13 -355
  410. package/skills/capturing-session-knowledge/references/capture.md +161 -0
  411. package/skills/capturing-session-knowledge/references/coordination.md +70 -0
  412. package/skills/capturing-session-knowledge/references/retrieval.md +153 -0
  413. package/skills/flreview/SKILL.md +1 -1
  414. package/skills/fuli/SKILL.md +12 -0
  415. package/skills/operating-fuli/SKILL.md +2 -2
  416. package/skills/operating-fuli/references/workflow-recipes.md +6 -1
  417. package/src/adaptive-runtime/graph-services.js +8 -34
  418. package/src/adaptive-runtime/settings.js +6 -10
  419. package/src/adaptive-runtime/state.js +5 -2
  420. package/src/agent-apps/activation.js +94 -0
  421. package/src/agent-apps/app-data-fs.js +134 -0
  422. package/src/agent-apps/app-host.js +150 -0
  423. package/src/agent-apps/app-launcher.js +25 -0
  424. package/src/agent-apps/app-tokens.js +84 -0
  425. package/src/agent-apps/authorization.js +78 -0
  426. package/src/agent-apps/bounded-wait.js +13 -0
  427. package/src/agent-apps/confirmed-decisions.js +262 -0
  428. package/src/agent-apps/data-deletion.js +127 -0
  429. package/src/agent-apps/data-directory.js +110 -0
  430. package/src/agent-apps/decision-source.js +31 -0
  431. package/src/agent-apps/errors.js +28 -0
  432. package/src/agent-apps/host-identity.js +166 -0
  433. package/src/agent-apps/host-tools/catalog.js +214 -0
  434. package/src/agent-apps/host-tools/fuli-tools.js +13 -0
  435. package/src/agent-apps/instances.js +473 -0
  436. package/src/agent-apps/manifest.js +74 -0
  437. package/src/agent-apps/operations.js +33 -0
  438. package/src/agent-apps/owner-lease.js +157 -0
  439. package/src/agent-apps/package-files.js +118 -0
  440. package/src/agent-apps/removal.js +112 -0
  441. package/src/agent-apps/run-gate.js +50 -0
  442. package/src/agent-apps/service.js +109 -0
  443. package/src/agent-apps/store.js +434 -0
  444. package/src/agent-apps/trust-terms.js +23 -0
  445. package/src/agent-apps/trusted-runner.js +136 -0
  446. package/src/agent-apps/versions.js +145 -0
  447. package/src/agent-apps/views.js +93 -0
  448. package/src/agent-apps/write-gate.js +41 -0
  449. package/src/agent-peer/http.js +5 -44
  450. package/src/agent-roundtable/http.js +30 -0
  451. package/src/agent-roundtable/task-context.js +109 -0
  452. package/src/agent-roundtable/tools.js +19 -5
  453. package/src/agent-tools/agent-app-definitions.js +29 -0
  454. package/src/agent-tools/agent-attention-definitions.js +5 -4
  455. package/src/agent-tools/agent-collaboration-definitions.js +6 -2
  456. package/src/agent-tools/agent-dismissal-definitions.js +38 -0
  457. package/src/agent-tools/agent-score-card-definitions.js +24 -0
  458. package/src/agent-tools/checkpoint-definitions.js +35 -0
  459. package/src/agent-tools/employee-definitions.js +5 -4
  460. package/src/agent-tools/graph-definitions.js +69 -59
  461. package/src/agent-tools/graph-handlers.js +116 -25
  462. package/src/agent-tools/interface-catalog.js +50 -5
  463. package/src/agent-tools/interface-definitions.js +30 -6
  464. package/src/agent-tools/judgment-definitions.js +1 -1
  465. package/src/agent-tools/knowledge-tag-definitions.js +43 -0
  466. package/src/agent-tools/knowledge-usage-definitions.js +22 -0
  467. package/src/agent-tools/model-backend-definitions.js +16 -0
  468. package/src/agent-tools/project-agent-definitions.js +16 -5
  469. package/src/agent-tools/project-agent-memory-definitions.js +2 -2
  470. package/src/agent-tools/schema.js +4 -0
  471. package/src/agent-tools/session-fuli-gate.js +81 -0
  472. package/src/agent-tools/task-preference-definitions.js +13 -0
  473. package/src/agent-tools/task-run-definitions.js +11 -0
  474. package/src/agent-tools/task-schedule-definitions.js +15 -0
  475. package/src/agent-tools.js +11 -7
  476. package/src/agents/agent-label.js +8 -0
  477. package/src/agents/claude-code/host-notification.js +36 -0
  478. package/src/agents/claude-code/judgment.js +9 -0
  479. package/src/agents/claude-code/lifecycle-hook.js +155 -64
  480. package/src/agents/claude-code/native-session.js +9 -0
  481. package/src/agents/claude-code/preference-evidence.js +31 -0
  482. package/src/agents/claude-code/session-file.js +30 -0
  483. package/src/agents/claude-code/turn-ownership.js +51 -0
  484. package/src/agents/codex/acp-process.js +244 -0
  485. package/src/agents/codex/acp-session.js +190 -0
  486. package/src/agents/codex/acp-worker.js +54 -0
  487. package/src/agents/codex/judgment.js +9 -0
  488. package/src/agents/codex/lifecycle-hook.js +202 -69
  489. package/src/agents/codex/lifecycle-hooks.js +47 -38
  490. package/src/agents/codex/mcp-context.js +16 -0
  491. package/src/agents/codex/preference-evidence.js +46 -0
  492. package/src/agents/codex/review-command.js +29 -0
  493. package/src/agents/codex/shell-session.js +23 -0
  494. package/src/agents/codex/token-usage.js +14 -2
  495. package/src/agents/cursor/lifecycle-hook.js +26 -18
  496. package/src/agents/cursor/lifecycle-hooks.js +10 -9
  497. package/src/agents/directory-snapshots.js +98 -29
  498. package/src/agents/identity-receipt.js +122 -15
  499. package/src/agents/judgment-registry.js +11 -0
  500. package/src/agents/lifecycle-input.js +20 -0
  501. package/src/agents/lifecycle-message.js +7 -0
  502. package/src/agents/memory-state.js +6 -0
  503. package/src/agents/native-mcp-context.js +9 -0
  504. package/src/agents/native-session-env.js +23 -0
  505. package/src/agents/preference-evidence.js +28 -0
  506. package/src/agents/system-prompt.js +8 -0
  507. package/src/agents/turn-receipt.js +142 -0
  508. package/src/app/agent-request-context.js +42 -1
  509. package/src/app/application-error.js +12 -1
  510. package/src/backup/graph-backup.js +2 -12
  511. package/src/backup/graph-census.js +57 -0
  512. package/src/backup/identity-reconciliation.js +24 -41
  513. package/src/backup/runtime-adapters.js +64 -27
  514. package/src/backup/runtime-migration.js +88 -0
  515. package/src/cli/app-command.js +170 -0
  516. package/src/cli/capture-scope-prompt.js +49 -0
  517. package/src/cli/clients-command.js +94 -0
  518. package/src/cli/command-registry.js +22 -3
  519. package/src/cli/connect-command.js +1 -1
  520. package/src/cli/graph-data-command.js +25 -4
  521. package/src/cli/graph-migrate-command.js +107 -0
  522. package/src/cli/local-runtime-command.js +5 -6
  523. package/src/cli/local-runtime-control.js +27 -0
  524. package/src/cli/local-runtime-options.js +5 -3
  525. package/src/cli/mcp-command.js +34 -2
  526. package/src/cli/migrate-command.js +308 -0
  527. package/src/cli/models-command.js +55 -0
  528. package/src/cli/native-runtime-command.js +44 -0
  529. package/src/cli/peer-command.js +9 -90
  530. package/src/cli/remote-mcp-command.js +7 -0
  531. package/src/cli/session-command.js +80 -0
  532. package/src/cli/setup-command.js +39 -23
  533. package/src/cli/terminal-io.js +87 -0
  534. package/src/cli/uninstall-command.js +17 -15
  535. package/src/cli/update-command.js +12 -20
  536. package/src/cli/update-installation.js +3 -3
  537. package/src/cli/worker-command.js +80 -0
  538. package/src/cli/workspace-connection-command.js +6 -7
  539. package/src/cli.js +33 -10
  540. package/src/conversations/capture-window.js +65 -0
  541. package/src/conversations/entry-budget.js +116 -0
  542. package/src/conversations/entry-rules.js +83 -0
  543. package/src/conversations/fallback-transcript-boundary.js +48 -0
  544. package/src/conversations/human-interaction.js +9 -0
  545. package/src/conversations/preference-evidence.js +113 -0
  546. package/src/conversations/preference-lifecycle.js +46 -0
  547. package/src/conversations/preference-session.js +230 -0
  548. package/src/conversations/preference-snapshot.js +203 -0
  549. package/src/conversations/preference-view.js +31 -0
  550. package/src/conversations/recent-context.js +170 -0
  551. package/src/conversations/session-fuli-entry.js +64 -0
  552. package/src/conversations/stop-auto-close.js +30 -0
  553. package/src/conversations/sync-transcript.js +154 -46
  554. package/src/conversations/task-context-view.js +129 -43
  555. package/src/conversations/transcript-append.js +56 -0
  556. package/src/conversations/transcript-capture-gap.js +435 -0
  557. package/src/conversations/transcript-guard-lock.js +59 -0
  558. package/src/conversations/transcript-guard.js +67 -25
  559. package/src/conversations/transcript-lifecycle.js +125 -0
  560. package/src/conversations/transcript-reader.js +39 -14
  561. package/src/conversations/unresolved-turns.js +132 -0
  562. package/src/data-format/apply-receipts.js +36 -0
  563. package/src/data-format/backup-retention.js +127 -0
  564. package/src/data-format/external-writers.js +16 -0
  565. package/src/data-format/format-notices.js +109 -0
  566. package/src/data-format/format-retention.js +126 -0
  567. package/src/data-format/format-status.js +75 -0
  568. package/src/data-format/graph-format-client.js +44 -0
  569. package/src/data-format/local-stores.js +139 -0
  570. package/src/data-format/maintenance-lock.js +70 -0
  571. package/src/data-format/migration-operations.js +196 -0
  572. package/src/data-format/migration-plan.js +68 -0
  573. package/src/data-format/operations-log.js +32 -0
  574. package/src/desktop/windows-command-options.js +20 -0
  575. package/src/desktop/windows-controller.js +160 -0
  576. package/src/desktop/windows-install.js +55 -0
  577. package/src/desktop/windows-installation-context.js +49 -0
  578. package/src/desktop/windows-installation-switch.js +143 -0
  579. package/src/desktop/windows-installation.js +246 -0
  580. package/src/desktop/windows-rollback-command.js +24 -0
  581. package/src/desktop/windows-rollback.js +69 -0
  582. package/src/desktop/windows-uninstall-command.js +27 -0
  583. package/src/desktop/windows-uninstall.js +94 -0
  584. package/src/desktop/windows-update-command.js +30 -0
  585. package/src/desktop/windows-update-lock.js +38 -0
  586. package/src/desktop/windows-update-runtime.js +57 -0
  587. package/src/desktop/windows-update.js +97 -0
  588. package/src/employees/catalog/assistant.json +26 -0
  589. package/src/employees/catalog/bole.json +7 -6
  590. package/src/employees/install-package.js +10 -7
  591. package/src/employees/management-policy.js +19 -12
  592. package/src/employees/manifest.js +14 -12
  593. package/src/employees/recruitment.js +5 -2
  594. package/src/employees/task-entry.js +6 -2
  595. package/src/external-knowledge/conflict-policy.js +5 -7
  596. package/src/external-knowledge/connected-search.js +4 -23
  597. package/src/external-knowledge/connectors/custom.js +1 -12
  598. package/src/external-knowledge/connectors/feishu.js +13 -44
  599. package/src/external-knowledge/connectors/mcp.js +2 -22
  600. package/src/external-knowledge/connectors/notion.js +6 -47
  601. package/src/external-knowledge/connectors/response-values.js +34 -0
  602. package/src/external-knowledge/connectors/retrieval-api.js +2 -32
  603. package/src/external-knowledge/document-mapping.js +1 -7
  604. package/src/external-knowledge/registry.js +74 -35
  605. package/src/external-knowledge/service.js +1 -14
  606. package/src/graphiti/agent-access-policy.js +6 -23
  607. package/src/graphiti/agent-attention.js +41 -2
  608. package/src/graphiti/agent-collaboration.js +69 -21
  609. package/src/graphiti/agent-conversations.js +70 -30
  610. package/src/graphiti/agent-knowledge-workflows.js +157 -62
  611. package/src/graphiti/agent-performance-review.js +117 -0
  612. package/src/graphiti/agent-score-card.js +82 -0
  613. package/src/graphiti/assistant-project-candidate.js +140 -0
  614. package/src/graphiti/capture-change-confirmation.js +244 -0
  615. package/src/graphiti/capture-decision.js +220 -0
  616. package/src/graphiti/capture-notice.js +68 -0
  617. package/src/graphiti/capture-onboarding.js +144 -0
  618. package/src/graphiti/capture-policy.js +225 -34
  619. package/src/graphiti/capture-project-mode.js +167 -0
  620. package/src/graphiti/capture-session-pause.js +341 -0
  621. package/src/graphiti/checkpoint-capture.js +26 -0
  622. package/src/graphiti/checkpoint-human-interaction.js +16 -0
  623. package/src/graphiti/collaboration-preference-projection.js +5 -4
  624. package/src/graphiti/collaboration-preference-workflow.js +87 -33
  625. package/src/graphiti/conversation-triage.js +88 -0
  626. package/src/graphiti/entry-hint-claim.js +13 -0
  627. package/src/graphiti/execution-mode.js +27 -0
  628. package/src/graphiti/federated-application.js +258 -259
  629. package/src/graphiti/federated-search.js +186 -0
  630. package/src/graphiti/human-review-channel.js +63 -0
  631. package/src/graphiti/jefa-board-match.js +170 -0
  632. package/src/graphiti/knowledge-item-edit.js +57 -0
  633. package/src/graphiti/knowledge-provider-mapping.js +13 -0
  634. package/src/graphiti/knowledge-result-budget.js +179 -0
  635. package/src/graphiti/knowledge-review.js +11 -0
  636. package/src/graphiti/knowledge-tags.js +138 -0
  637. package/src/graphiti/occupation-catalog.js +7 -0
  638. package/src/graphiti/occupation-staffing.js +21 -0
  639. package/src/graphiti/preference-task-scope.js +61 -12
  640. package/src/graphiti/project-agent-control-plane.js +97 -7
  641. package/src/graphiti/project-agent-dismissal.js +106 -0
  642. package/src/graphiti/project-agent-mapping.js +34 -30
  643. package/src/graphiti/project-agent-memory.js +18 -7
  644. package/src/graphiti/project-agent-run-control.js +64 -0
  645. package/src/graphiti/project-agent-task-entry.js +59 -35
  646. package/src/graphiti/project-agent-team-context.js +9 -5
  647. package/src/graphiti/project-agent-workflows.js +69 -9
  648. package/src/graphiti/project-brief.js +49 -0
  649. package/src/graphiti/project-memory-usage.js +50 -0
  650. package/src/graphiti/project-profile-mapping.js +1 -0
  651. package/src/graphiti/project-team-hierarchy.js +27 -0
  652. package/src/graphiti/project-team-view.js +14 -1
  653. package/src/graphiti/provider-client.js +281 -32
  654. package/src/graphiti/public-submission-reconciliation.js +37 -0
  655. package/src/graphiti/public-submission.js +77 -0
  656. package/src/graphiti/publication-draft-input.js +11 -0
  657. package/src/graphiti/recall-policy.js +49 -0
  658. package/src/graphiti/repository-project-registration.js +9 -2
  659. package/src/graphiti/role-suggestion-note.js +51 -0
  660. package/src/graphiti/role-work-sessions.js +10 -0
  661. package/src/graphiti/roundtable-host.js +70 -0
  662. package/src/graphiti/runtime-config.js +22 -8
  663. package/src/graphiti/session-capture-pause-request.js +58 -0
  664. package/src/graphiti/session-fuli-switch.js +135 -0
  665. package/src/graphiti/session-knowledge-migration.js +96 -0
  666. package/src/graphiti/session-layer-decision.js +138 -0
  667. package/src/graphiti/session-records.js +212 -0
  668. package/src/graphiti/setup.js +2 -2
  669. package/src/graphiti/shared-project-list.js +36 -0
  670. package/src/graphiti/task-activity-origin.js +8 -0
  671. package/src/graphiti/task-agent-assignment.js +49 -0
  672. package/src/graphiti/task-collaboration-attribution.js +27 -0
  673. package/src/graphiti/task-entry-activity-origin.js +9 -0
  674. package/src/graphiti/task-entry-preferences.js +138 -58
  675. package/src/graphiti/task-entry-project-mention.js +119 -0
  676. package/src/graphiti/task-entry-project-scope.js +19 -16
  677. package/src/graphiti/task-experiences.js +54 -0
  678. package/src/graphiti/task-knowledge-recall.js +92 -14
  679. package/src/graphiti/task-knowledge-routing.js +170 -0
  680. package/src/graphiti/task-preference-pages.js +91 -0
  681. package/src/graphiti/task-preference-reader.js +123 -0
  682. package/src/graphiti/task-remember.js +119 -0
  683. package/src/graphiti/task-scene.js +93 -0
  684. package/src/graphiti/temporary-project-scope.js +34 -0
  685. package/src/graphiti/topic-proposals.js +83 -0
  686. package/src/graphiti/turn-receipt-delivery.js +100 -0
  687. package/src/graphiti/user-taste-skill.js +4 -15
  688. package/src/graphiti/worker-descriptor.js +42 -0
  689. package/src/graphiti/worker-plan-host.js +92 -0
  690. package/src/graphiti/worker-run-host.js +287 -0
  691. package/src/graphiti/worker-run-view.js +25 -0
  692. package/src/graphiti/worker-task-context.js +157 -0
  693. package/src/graphiti/workflow-observation.js +3 -13
  694. package/src/graphiti/writing-taste-profile.js +8 -15
  695. package/src/http/agent-app-api-router.js +60 -0
  696. package/src/http/agent-attention-api-router.js +7 -0
  697. package/src/http/agent-score-card-api-router.js +28 -0
  698. package/src/http/api-router.js +46 -3
  699. package/src/http/capture-change-api-router.js +19 -0
  700. package/src/http/capture-onboarding-api-router.js +18 -0
  701. package/src/http/data-format-api-router.js +44 -0
  702. package/src/http/error-mapping.js +22 -2
  703. package/src/http/graph-api-router.js +87 -5
  704. package/src/http/knowledge-hard-delete-api-router.js +35 -0
  705. package/src/http/knowledge-item-api-router.js +36 -0
  706. package/src/http/knowledge-scope-api-router.js +28 -0
  707. package/src/http/knowledge-tags-api-router.js +77 -0
  708. package/src/http/occupation-api-router.js +19 -0
  709. package/src/http/request-policy.js +10 -1
  710. package/src/http/session-records-api-router.js +13 -0
  711. package/src/http/task-events-api-router.js +29 -2
  712. package/src/http/task-schedules-api-router.js +31 -0
  713. package/src/http/topic-proposals-api-router.js +14 -0
  714. package/src/judgment/acceptance.js +47 -19
  715. package/src/judgment/backend.js +83 -0
  716. package/src/judgment/conversation.js +19 -0
  717. package/src/judgment/engine.js +169 -47
  718. package/src/judgment/http.js +15 -2
  719. package/src/judgment/model.js +6 -4
  720. package/src/judgment/preference-receipt.js +64 -0
  721. package/src/judgment/review-prompt.js +13 -0
  722. package/src/judgment/review-recovery.js +35 -0
  723. package/src/judgment/review-undo.js +51 -0
  724. package/src/judgment/review-verdicts.js +29 -0
  725. package/src/judgment/routing.js +32 -15
  726. package/src/judgment/runtime.js +21 -0
  727. package/src/judgment/scheduler.js +4 -2
  728. package/src/judgment/service.js +32 -5
  729. package/src/judgment/store.js +127 -38
  730. package/src/judgment/verdict-schema.js +8 -0
  731. package/src/knowledge-hard-delete/console-port.js +247 -0
  732. package/src/knowledge-hard-delete/delete-ledger.js +226 -0
  733. package/src/knowledge-hard-delete/forget-references.js +56 -0
  734. package/src/knowledge-hard-delete/input.js +50 -0
  735. package/src/knowledge-hard-delete/ledger-format.js +24 -0
  736. package/src/knowledge-hard-delete/memory-scopes.js +37 -0
  737. package/src/knowledge-hard-delete/reconcile-local.js +45 -0
  738. package/src/knowledge-hard-delete/recovery-gate.js +105 -0
  739. package/src/knowledge-hard-delete/role-work-references.js +36 -0
  740. package/src/knowledge-scope/console-port.js +22 -0
  741. package/src/knowledge-tags/console-port.js +20 -0
  742. package/src/local-runtime/lifecycle.js +26 -15
  743. package/src/local-runtime/processes.js +19 -0
  744. package/src/local-runtime/provider-readiness.js +41 -0
  745. package/src/local-runtime/windows-process-handle.js +96 -0
  746. package/src/mcp/chat-listing.js +37 -0
  747. package/src/mcp/context-resources.js +13 -4
  748. package/src/mcp/create-mcp-server.js +166 -42
  749. package/src/mcp/direct-call.js +8 -7
  750. package/src/mcp/instructions.js +15 -1
  751. package/src/mcp/preference-delivery.js +70 -0
  752. package/src/mcp/process-registry.js +65 -0
  753. package/src/mcp/provider-task-context-registry.js +101 -4
  754. package/src/mcp/remote-http-server.js +6 -11
  755. package/src/mcp/runtime.js +15 -3
  756. package/src/mcp/session-id.js +39 -5
  757. package/src/mcp/tool-annotations.js +19 -5
  758. package/src/mcp/tool-input-budget.js +121 -0
  759. package/src/mcp/tool-profiles.js +5 -19
  760. package/src/mcp/tool-result.js +71 -11
  761. package/src/model-backends/adapters/anthropic-messages.js +94 -0
  762. package/src/model-backends/adapters/exchange.js +116 -0
  763. package/src/model-backends/adapters/ollama-local-build.js +48 -0
  764. package/src/model-backends/adapters/openai-chat.js +83 -0
  765. package/src/model-backends/adapters/registry.js +10 -0
  766. package/src/model-backends/adapters/typesafe-systemone.js +56 -0
  767. package/src/model-backends/budget.js +57 -0
  768. package/src/model-backends/config.js +231 -0
  769. package/src/model-backends/decision-contract.js +116 -0
  770. package/src/model-backends/egress.js +16 -0
  771. package/src/model-backends/evaluation-record.js +49 -0
  772. package/src/model-backends/failures.js +55 -0
  773. package/src/model-backends/http.js +95 -0
  774. package/src/model-backends/no-redirect-fetch.js +26 -0
  775. package/src/model-backends/port.js +288 -0
  776. package/src/model-backends/prompt.js +38 -0
  777. package/src/model-backends/receipt.js +6 -0
  778. package/src/model-backends/request.js +92 -0
  779. package/src/model-backends/role-settings.js +54 -0
  780. package/src/model-backends/role-trust.js +159 -0
  781. package/src/model-backends/role-work-store.js +318 -0
  782. package/src/model-backends/role-work.js +245 -0
  783. package/src/model-backends/runtime.js +36 -0
  784. package/src/model-backends/secret-store.js +118 -0
  785. package/src/model-backends/suggestion-log.js +234 -0
  786. package/src/model-backends/usage-ledger.js +212 -0
  787. package/src/model-backends/usage.js +25 -0
  788. package/src/model-backends/windows-dpapi.js +47 -0
  789. package/src/native-runtime/java-runtime.js +47 -0
  790. package/src/native-runtime/macos-ports.js +41 -0
  791. package/src/native-runtime/neo4j-asset-state.js +101 -0
  792. package/src/native-runtime/neo4j-install.js +84 -0
  793. package/src/native-runtime/neo4j-lifecycle.js +151 -0
  794. package/src/native-runtime/neo4j-store-formats.js +36 -0
  795. package/src/native-runtime/runtime.js +254 -161
  796. package/src/native-runtime/windows-assets.js +70 -0
  797. package/src/native-runtime/windows-job-process.cs +169 -0
  798. package/src/native-runtime/windows-job-process.js +116 -0
  799. package/src/native-runtime/windows-processes.js +243 -0
  800. package/src/notifications/needs-person.js +75 -0
  801. package/src/presence/platforms.js +23 -0
  802. package/src/presence/port.js +16 -0
  803. package/src/presence/windows-hello.js +113 -0
  804. package/src/presence/windows-helper-pin.js +6 -0
  805. package/src/security/digest.js +13 -0
  806. package/src/server/blocked-ports.js +1 -1
  807. package/src/server/listen.js +27 -0
  808. package/src/server/worker-plan-runtime.js +56 -0
  809. package/src/server.js +177 -86
  810. package/src/setup/agent-installation-status.js +12 -102
  811. package/src/setup/agents/adapter-contract.js +47 -0
  812. package/src/setup/agents/claude-code/adapter.test.js +36 -0
  813. package/src/setup/agents/claude-code/descriptor.json +96 -0
  814. package/src/setup/agents/claude-desktop/adapter.test.js +34 -0
  815. package/src/setup/agents/claude-desktop/index.js +27 -0
  816. package/src/setup/agents/client-manifest.js +78 -0
  817. package/src/setup/agents/client-pack-change.js +133 -0
  818. package/src/setup/agents/client-pack-store.js +44 -0
  819. package/src/setup/agents/codex/adapter.test.js +36 -0
  820. package/src/setup/agents/codex/config-preview.js +15 -0
  821. package/src/setup/agents/codex/descriptor-schema.js +13 -0
  822. package/src/setup/agents/codex/descriptor.json +115 -0
  823. package/src/setup/agents/config-directory.js +7 -0
  824. package/src/setup/agents/config-preview.js +25 -0
  825. package/src/setup/agents/config-writers.js +14 -0
  826. package/src/setup/agents/cursor/adapter.test.js +52 -0
  827. package/src/setup/agents/cursor/descriptor.json +83 -0
  828. package/src/setup/agents/descriptor-adapter.js +56 -0
  829. package/src/setup/agents/descriptor-adapter.test.js +99 -0
  830. package/src/setup/agents/descriptor-packs.js +37 -0
  831. package/src/setup/agents/descriptor-packs.test.js +98 -0
  832. package/src/setup/agents/descriptor-schema.js +109 -0
  833. package/src/setup/agents/gemini/adapter.test.js +32 -0
  834. package/src/setup/agents/gemini/index.js +14 -0
  835. package/src/setup/agents/json-mcp.js +66 -0
  836. package/src/setup/agents/kiro/adapter.test.js +12 -0
  837. package/src/setup/agents/kiro/index.js +14 -0
  838. package/src/setup/agents/mcp-entry-template.js +17 -0
  839. package/src/setup/agents/opencode/adapter.test.js +39 -0
  840. package/src/setup/agents/opencode/index.js +19 -0
  841. package/src/setup/agents/qwen-code/adapter.test.js +14 -0
  842. package/src/setup/agents/qwen-code/index.js +14 -0
  843. package/src/setup/agents/registration.js +13 -0
  844. package/src/setup/agents/registry.js +24 -0
  845. package/src/setup/agents.js +16 -122
  846. package/src/setup/claude-code-config.js +49 -58
  847. package/src/setup/claude-desktop-config.js +9 -11
  848. package/src/setup/client-connection.js +1 -1
  849. package/src/setup/codex-bootstrap.js +17 -47
  850. package/src/setup/codex-config.js +101 -51
  851. package/src/setup/container-runtime.js +28 -29
  852. package/src/setup/cursor-config.js +29 -23
  853. package/src/setup/first-run-capture.js +29 -0
  854. package/src/setup/graph-runtime.js +24 -56
  855. package/src/setup/install-agent.js +78 -0
  856. package/src/setup/options.js +4 -2
  857. package/src/setup/paths.js +17 -2
  858. package/src/setup/provider-env.js +13 -0
  859. package/src/setup/setup.js +35 -40
  860. package/src/setup/uninstall.js +20 -5
  861. package/src/storage/file-lock.js +26 -0
  862. package/src/storage/json-file.js +63 -8
  863. package/src/storage/json-format-migration.js +259 -0
  864. package/src/storage/json-format.js +342 -0
  865. package/src/system/client-connection-install.js +28 -0
  866. package/src/system/client-connection-status.js +13 -6
  867. package/src/system/main-module.js +16 -0
  868. package/src/system/open-without-following.js +38 -0
  869. package/src/system/platform-path.js +8 -0
  870. package/src/system/runtime-settings.js +16 -9
  871. package/src/system/settings-apply.js +2 -6
  872. package/src/system/settings-guide.js +88 -0
  873. package/src/system/system-service.js +9 -3
  874. package/src/task-schedules/dispatch.js +104 -0
  875. package/src/task-schedules/scheduler.js +34 -0
  876. package/src/task-schedules/service.js +167 -0
  877. package/src/task-schedules/store.js +165 -0
  878. package/src/text/clock-time.js +8 -0
  879. package/src/text/model-json.js +6 -0
  880. package/src/text/single-line.js +5 -0
  881. package/src/text/utf8-preview.js +12 -0
  882. package/src/validation/values.js +44 -0
  883. package/src/workspace-protocol/publication-contract.js +1 -1
  884. package/src/workspace-protocol/sync-contract.js +1 -1
  885. package/dist/web/assets/AboutPage-DC3Eu95G.js +0 -1
  886. package/dist/web/assets/AboutPage-c4dQpUiP.css +0 -1
  887. package/dist/web/assets/AgentHand-Bex3jrOr.js +0 -1
  888. package/dist/web/assets/AgentHand-Y83Oo36U.css +0 -1
  889. package/dist/web/assets/AgentName-E3TrVNIR.js +0 -1
  890. package/dist/web/assets/AgentProfilePage-pHzDx457.js +0 -1
  891. package/dist/web/assets/AgentsDirectoryPage-itsP9chX.js +0 -1
  892. package/dist/web/assets/AgentsDirectoryPage-kc3EgeGO.css +0 -1
  893. package/dist/web/assets/ConnectionsPage-D0L5VcbN.js +0 -1
  894. package/dist/web/assets/EmployeeRecruitDialog-CVbqCzHb.css +0 -1
  895. package/dist/web/assets/EmployeeRecruitDialog-DcYqq75q.js +0 -1
  896. package/dist/web/assets/EmployeeWorkbenchPage-BDN6whBV.js +0 -3
  897. package/dist/web/assets/EmployeeWorkbenchPage-BQes4L1f.css +0 -1
  898. package/dist/web/assets/KnowledgeEditDialog-BnFbCSK7.js +0 -1
  899. package/dist/web/assets/KnowledgeEditDialog-hT9znkoe.css +0 -1
  900. package/dist/web/assets/KnowledgeInspector-u0HypEW7.js +0 -1
  901. package/dist/web/assets/KnowledgeOrganizerPage-B3GoSV-E.js +0 -1
  902. package/dist/web/assets/KnowledgeOrganizerPage-ccgscrPd.css +0 -1
  903. package/dist/web/assets/KnowledgePage-DrRnvfrO.js +0 -1
  904. package/dist/web/assets/KnowledgeWorkspace-D4a7FcAb.css +0 -1
  905. package/dist/web/assets/KnowledgeWorkspace-_wWZQw_h.js +0 -4
  906. package/dist/web/assets/NotFoundPage-BcPx7tfG.js +0 -1
  907. package/dist/web/assets/OverviewPage-8LBN8Shi.css +0 -1
  908. package/dist/web/assets/OverviewPage-C2jrJWDc.js +0 -1
  909. package/dist/web/assets/PersonalProfilePage-B0_zIINs.css +0 -1
  910. package/dist/web/assets/PersonalProfilePage-DkOcops6.js +0 -1
  911. package/dist/web/assets/PersonalProjectsPage-uJXnueKw.js +0 -1
  912. package/dist/web/assets/ProjectAgentFirstTask-Bi1ZsTC1.css +0 -1
  913. package/dist/web/assets/ProjectAgentFirstTask-Cwto-bOU.js +0 -1
  914. package/dist/web/assets/ProjectAgentsPage-DDuhJnAH.js +0 -12
  915. package/dist/web/assets/ProjectAgentsPage-VYiEOpFJ.css +0 -1
  916. package/dist/web/assets/ProjectScopePicker-Bc7A6Rdj.js +0 -1
  917. package/dist/web/assets/ProjectScopePicker-DYA7L1Ex.css +0 -1
  918. package/dist/web/assets/PublicProjectsPage-DKamXDV9.css +0 -1
  919. package/dist/web/assets/PublicProjectsPage-KvmU4tDo.js +0 -1
  920. package/dist/web/assets/ReviewPage-BfKG8Hgw.js +0 -1
  921. package/dist/web/assets/RoundtablesPage-Drou-B81.css +0 -1
  922. package/dist/web/assets/RoundtablesPage-IXKQq62P.js +0 -1
  923. package/dist/web/assets/SettingsPage-6FZ7_3-X.css +0 -1
  924. package/dist/web/assets/SettingsPage-Clhe1bei.js +0 -1
  925. package/dist/web/assets/SharedJefaReportPage-B55966fF.js +0 -1
  926. package/dist/web/assets/SharedJefaReportPage-D92FSPru.css +0 -1
  927. package/dist/web/assets/TaskExecutionPlan-BuEIInIV.css +0 -1
  928. package/dist/web/assets/TaskExecutionPlan-ZoOE8Ltc.js +0 -2
  929. package/dist/web/assets/UiButton-DYcQLYXP.js +0 -1
  930. package/dist/web/assets/UiDialog-D70VuNpZ.js +0 -1
  931. package/dist/web/assets/UiDisclosure-CaeBp1mn.js +0 -1
  932. package/dist/web/assets/UiSegmented-DpXRULl-.js +0 -1
  933. package/dist/web/assets/UiSelect-Alpe2iY3.js +0 -1
  934. package/dist/web/assets/UiSelect-Bv6R0yr1.css +0 -1
  935. package/dist/web/assets/WritingTastePage-B_zYD1df.css +0 -1
  936. package/dist/web/assets/WritingTastePage-BwNCyys9.js +0 -1
  937. package/dist/web/assets/_plugin-vue_export-helper-BDNMzG2s.js +0 -1
  938. package/dist/web/assets/agent-pins-DbcPCnxU.js +0 -1
  939. package/dist/web/assets/agent-profile-DTn-2VAG.css +0 -1
  940. package/dist/web/assets/agent-work-summary-DRJy9v48.js +0 -1
  941. package/dist/web/assets/attention-store-AfhjzTC5.js +0 -1
  942. package/dist/web/assets/catalog-ykylXINx.js +0 -1
  943. package/dist/web/assets/client-CIuQ1icy.css +0 -1
  944. package/dist/web/assets/client-mT6kHxUd.js +0 -1
  945. package/dist/web/assets/console-CDOkjZU8.js +0 -1
  946. package/dist/web/assets/conversation-launcher-settings-CJfHOqqX.js +0 -1
  947. package/dist/web/assets/i18n-DUTWmrzf.js +0 -10
  948. package/dist/web/assets/identity-CAQk8V-Q.js +0 -1
  949. package/dist/web/assets/index-DSUd-aqC.js +0 -5
  950. package/dist/web/assets/index-DsExj49_.css +0 -1
  951. package/dist/web/assets/judgment-types-aERVgHxJ.js +0 -1
  952. package/dist/web/assets/model-DiN6uWZA.js +0 -1
  953. package/dist/web/assets/personal-profile-graph-C6IZoTJK.js +0 -1
  954. package/dist/web/assets/project-team-api-B3dwwoUU.js +0 -1
  955. package/dist/web/assets/shared-report-CGlCpmNd.css +0 -1
  956. package/dist/web/assets/shared-report-n864kqhr.js +0 -1
  957. package/dist/web/assets/useAgentRoster-BF8eZGbq.js +0 -1
  958. package/dist/web/assets/useApi-CROJJdhE-sOV3uq1T.js +0 -1
  959. package/dist/web/assets/vue-router-CBdnor1K.js +0 -1
  960. package/src/agent-roundtable/store.js +0 -86
  961. package/src/agent-roundtable/wake.js +0 -109
  962. package/src/setup/review-skill-adapters.js +0 -49
  963. /package/dist/web/assets/{ConnectionsPage-CM9C-zEI.css → TextField-CM9C-zEI.css} +0 -0
  964. /package/dist/web/assets/{KnowledgeInspector-pgDELOEf.css → VirtualDirectoryList-pgDELOEf.css} +0 -0
  965. /package/{src → packages/roundtable/src}/agents/session-log.js +0 -0
  966. /package/{src → packages/roundtable/src}/agents/wake-registry.js +0 -0
  967. /package/{src/agent-peer → packages/roundtable/src/peer}/device-identity.js +0 -0
package/README.md CHANGED
@@ -14,7 +14,20 @@
14
14
  <a href="LICENSE"><img src="https://img.shields.io/npm/l/fuli-context?style=flat" alt="license" /></a>
15
15
  </p>
16
16
 
17
- **Switch AI tools. Keep your agent.**
17
+ **Switch AI tools. Keep yourself**
18
+
19
+ Fuli (复利) is Chinese for **compound interest**: returns that generate further returns.
20
+
21
+ Fuli exists to preserve your own taste, personality, and judgment as you work with AI.
22
+ We believe people should no longer be tied to doing everything themselves. You should
23
+ be free to make decisions, come up with ideas, and take a break.
24
+
25
+ Fuli works with Codex, Claude Code, and other agent clients that support MCP and Skills.
26
+ Connect supported clients to the same Fuli data and continue with the same agent,
27
+ carrying forward its recorded work and relevant context.
28
+
29
+ As AI learns to take on more of the work, Fuli helps you make the transition while
30
+ keeping your own judgment at the center.
18
31
 
19
32
  Fuli is a collaboration layer for long-lived agents across MCP-compatible AI clients. Connect
20
33
  your tools to the same accessible Fuli data, select the same agent, and continue with its identity,
@@ -49,7 +62,19 @@ Explore the [product website](https://有点.意思.com/fuli/).
49
62
 
50
63
  ## Start here
51
64
 
52
- With Node.js 24.12+ and Docker Compose v2 available, run:
65
+ Install Fuli, connect a client, and run one actual tool call to verify the connection. See
66
+ [Installation](#installation) for full requirements and [client connections](docs/client-connections.md)
67
+ for configuration formats, Hooks, and troubleshooting.
68
+
69
+ Humans retain login, Hook trust, and manual review. **Settings showing `Connected` (`connected`)
70
+ only means the current Fuli entry is present in the client's configuration file — it does not prove
71
+ that the client loaded the MCP process, that a Hook delivered context, or that a tool call
72
+ succeeded.**
73
+
74
+ ### 1. Install
75
+
76
+ With Node.js 24.12+ and Docker Compose v2 available (default container mode; see
77
+ [Installation](#installation) for macOS/Linux native mode), run:
53
78
 
54
79
  ```bash
55
80
  npm install --global fuli-context
@@ -57,24 +82,44 @@ fuli setup
57
82
  fuli open
58
83
  ```
59
84
 
60
- The setup wizard shows its plan before changing your environment. See [Installation](#installation)
61
- for requirements and the macOS/Linux native runtime option.
62
-
63
- To try a cross-tool handoff, ask for a task inside a project directory (Fuli registers the project and
64
- staffs a lead agent), complete it through one connected client, then use the agent's continuation instruction in another client connected
65
- to the same data. Check whether it recovers the correct project and prior work, and asks for
66
- missing context rather than inventing it. See [Agent conversations and collaboration](docs/agent-conversations-and-collaboration.md)
67
- for supported adapters and boundaries.
68
-
69
- For a one-off task, this source version also supports an isolated **temporary project**: ask the
70
- connected client to coordinate the task with Fuli even when no registered project matches. Fuli
71
- retains its task history and follows the existing Agent recruitment and executor permissions.
72
- Reading preferences alone creates nothing. An ambiguous project still needs a choice.
73
- This behavior is available in the stable release.
74
-
75
- The Agent directory now explains the first-task entry, and task details distinguish assignment
76
- from actual worker reports. A completion table appears only after real execution is reported;
77
- an assigned Agent or an ordinary local conversation alone is not worker evidence.
85
+ The setup wizard shows its plan before changing your environment.
86
+
87
+ ### 2. Connect a client
88
+
89
+ - **Detected Codex, Claude Code, Cursor, or Claude Desktop:** `fuli setup` writes the MCP entry and
90
+ supported Hooks/Skills. Quit and reopen apps that read MCP configuration only at launch, then open
91
+ a new task. Codex Hook trust requires manual `/hooks` review in Codex.
92
+ - **Other MCP clients:** run `fuli connect` (or open **Settings → Client connection** in the
93
+ console), merge the `fuli` entry into the client's MCP configuration while keeping other servers,
94
+ and reload or trust the server in that client. `fuli connect` prints JSON only.
95
+
96
+ ### 3. First actual tool call and verification
97
+
98
+ 1. Run `fuli status` and confirm the management UI and personal graph are ready (default
99
+ `http://127.0.0.1:2727`).
100
+ 2. Confirm Fuli tools appear in the client and **make one actual tool call** inside a project
101
+ directory (for example, ask the Agent to load project collaboration preferences or coordinate a
102
+ small task). Verify that Fuli resolves the right project (or registers/staffs a lead Agent) and
103
+ asks for missing context rather than inventing it.
104
+ 3. Optional cross-tool handoff: use the Agent's continuation instruction in another client
105
+ connected to the same data and verify that it recovers the same Agent, project, and prior work.
106
+ See [Agent conversations and collaboration](docs/agent-conversations-and-collaboration.md).
107
+
108
+ For a one-off task, this source version also supports an isolated **temporary project** when no
109
+ registered project matches; reading preferences alone creates nothing, and an ambiguous project
110
+ still needs a choice. Fuli retains its task history and follows the existing Agent recruitment and
111
+ executor permissions. The Agent directory explains the first-task entry, and task details show a
112
+ completion table only after real worker execution is reported — an assigned Agent or an ordinary
113
+ local conversation alone is not worker evidence.
114
+
115
+ ### 4. Troubleshooting
116
+
117
+ If setup, client detection, or tool calls fail, see
118
+ [Common failure recovery](docs/client-connections.md#common-failure-recovery). Use
119
+ `fuli setup --yes --connected-only` only to refresh clients that still have an existing Fuli MCP
120
+ entry (**Connected** / `connected` or **Configuration changed** / `changed` in Settings); clients
121
+ showing **Skills only** (`skills_left`), **Removed** (`removed`), **Not connected**
122
+ (`not_connected`), or newly installed clients without a Fuli MCP entry require a full `fuli setup`.
78
123
 
79
124
  [How it works](#philosophy) · [Installation](#installation) ·
80
125
  [Agent roles and teams](docs/employee-agents.md) ·
@@ -91,6 +136,10 @@ forks the conversation; Codex records the exchange in it (or uses a new session
91
136
  open in the app). A message that cannot be delivered waits in the recipient's inbox for its
92
137
  next task.
93
138
 
139
+ Agents can also keep direct and group chats with `agent_chat`. Messages are pushed: an Agent
140
+ that calls `wait` gets new messages at once, and a direct message or an `@` mention wakes an
141
+ Agent that is not waiting. Chats only carry communication; they never change knowledge weights.
142
+
94
143
  Every exchange is kept locally; the console's Roundtable page shows who asked whom, through
95
144
  which client, and exactly what was said. Tools and limits: [Agent Roundtable](docs/agent-roundtable.md).
96
145
 
@@ -312,8 +361,48 @@ At task end, hook mode calls `checkpoint_task_knowledge`: use `capture_candidate
312
361
  durable, evidence-backed batch; otherwise use `retain_nothing`. A prompt-fallback Agent applies the
313
362
  same rule and writes through `capture_session_knowledge`. Personal preferences set the correct
314
363
  `profileAspect` and stable `attributes.preferenceKey`; project facts omit `profileAspect`. If
315
- automatic capture is disabled under Settings, writes return `capture_disabled` and no category is
316
- created.
364
+ automatic capture is disabled under Settings, automatic writes return `capture_disabled` and no
365
+ category is created: transcripts, checkpoints, knowledge and preference candidates, knowledge usage,
366
+ view records, and feedback or corrections reported through an Agent all stop. If the capture
367
+ settings cannot be read, automatic writes stop the same way (`reason: policy_unavailable`). Edits
368
+ you submit yourself in the FULI console and an explicit `新项目:` request still save, and reading
369
+ existing knowledge keeps working. Session turns written while automatic recording is off are skipped
370
+ with a content-free marker and are never imported after it comes back on.
371
+
372
+ Capture can also be limited to projects. `projectMode` is `all` (the default), `all_except` with
373
+ `excludedProjectIds`, or `selected` with `selectedProjectIds`; `unregisteredDirectories`
374
+ (`skip` by default under `selected`, `capture` otherwise) decides work outside every registered
375
+ project. A directory resolves to its project the same way task entry does, so a worktree of a
376
+ repository is that repository's project. A project that is not recorded returns
377
+ `reason: project_off`, an unregistered directory `project_unregistered`, and every task receipt
378
+ ends with the reason and that explicit edits still save, for example
379
+ `此项目未开启记忆;你明确提交的修改仍会保存`. Switching a project off never hides or
380
+ deletes what it already recorded; `projectsOffSince` keeps when it stopped. Agents read the
381
+ settings with `get_capture_policy` (pass `projectPath` to learn about the current project) and
382
+ change them with `update_capture_policy` only after restating the change and getting the user's
383
+ confirmation; the settings page uses `PATCH /api/capture-policy`. Saying "这次别记" in a session pauses
384
+ only that session at once, without a confirmation: the Agent calls `update_capture_policy` with just
385
+ `sessionPaused: true` and its `taskContextToken`, and every later receipt in the session says
386
+ `本会话已暂停记录(自 HH:mm 起)` (`reason: session_paused`). Earlier records stay, workers the session
387
+ starts are paused with it, "继续记" (`sessionPaused: false`) resumes from then on, and nothing written
388
+ while paused is recorded later. The pause lives in the local runtime directory and ends with the session.
389
+
390
+ To turn FULI off for one session altogether, the person types `/fuli stop` (Claude Code and Cursor, where
391
+ setup installs the `fuli` command Skill) or `fuli stop` (any client; Codex accepts no custom slash command).
392
+ The prompt hook answers the line itself, so the model never sees it: from then on that session gets no
393
+ injected memory, preferences or recall, its Agent's own FULI reads (searches, Agent memory, conversations)
394
+ are refused, it records nothing and starts no collaboration (workers, loans, other Agents, role work), while other sessions, the local service and existing memories stay as they are.
395
+ `fuli start` turns it back on within the existing settings (a pause or a stricter global, client or project
396
+ setting still applies), `fuli restart` also gives the next turn the full context again, and `fuli status`
397
+ shows the session and the default; nothing said while FULI was off is recorded later. Context already sent
398
+ to the model cannot be taken back, so isolation needs a new session. Only a task token shows which session a
399
+ tool call is for (Claude Code keeps its tool connection across /clear; Codex and Cursor connections name no
400
+ session), so while any session of a client is off FULI refuses that client's tool calls without a task token,
401
+ rather than serve memory to a session that may be the stopped one. Agents pass the `taskContextToken` they
402
+ already have (entry, searches and team reads take it), so other windows keep working. The same switch runs from a shell the
403
+ client started (`!fuli session stop`), so an Agent with shell access can run it too (the same trust as
404
+ access to your files); the console and `fuli mcp --call` still read for you, and `fuli session default off` makes new sessions start with FULI
405
+ off until started; sessions already open keep theirs.
317
406
 
318
407
  Run these local contract tests to check that the README and project-path behavior still match the
319
408
  implementation:
@@ -360,18 +449,16 @@ sequenceDiagram
360
449
  opt The task creates a decision, contradiction, or stale signal
361
450
  A->>F: Record rationale or knowledge feedback
362
451
  end
363
- A->>F: checkpoint_task_knowledge
364
- alt A small durable candidate batch exists
452
+ opt Something is worth keeping (candidates, a decision, a meaningful work log)
453
+ A->>F: checkpoint_task_knowledge
365
454
  F->>G: capture_candidates
366
- else Nothing should be retained
367
- F-->>A: retain_nothing
368
455
  end
369
456
 
370
457
  alt Loaded and trusted Claude Code / Codex Stop hook
371
458
  L->>F: verify_task_checkpoint
372
- F-->>L: Allow stop only after review
373
- else Cursor reminder or prompt-fallback agent
374
- Note over A,F: Same contract; a bounded reminder is not an unconditional Stop gate
459
+ F-->>L: Close a routine task as retain_nothing / reported, otherwise remind
460
+ else Cursor or an Agent without a Stop hook
461
+ Note over A,F: Same contract. A routine fallback task closes at the next task entry
375
462
  end
376
463
  A-->>U: Return the result and any Fuli sources actually used
377
464
  ```
@@ -406,7 +493,8 @@ are isolated per target. Use Bind projects on an existing connection to add or r
406
493
  `export PROJECT_KB_TOKEN='...'` and then `fl restart`.
407
494
  3. Open `http://127.0.0.1:2727/connections`. Under External knowledge, enter a connection name,
408
495
  connector, one or more bound projects, and retrieval mode.
409
- 4. For MCP HTTP, enter the server URL and optional token environment-variable name. For MCP stdio,
496
+ 4. For MCP HTTP, enter the final endpoint URL (redirects to another origin are not followed) and an
497
+ optional token environment-variable name. For MCP stdio,
410
498
  enter its command and arguments. For Notion, enter the token environment-variable name and Page
411
499
  IDs or Data Source IDs. For Feishu/Lark, enter the token environment-variable name, region, and
412
500
  an explicit Space ID, root-node token, or node tokens. For RAG Retrieval API, enter a
@@ -473,6 +561,17 @@ Core mechanisms covered by implementation and automated tests include:
473
561
  - common-knowledge discovery and preview-token-protected atomic promotion;
474
562
  - read-only multi-project MCP, Notion, Feishu/Lark, Dify-compatible RAG Retrieval API, and trusted-code bindings with connected retrieval.
475
563
 
564
+ New in 0.20 (public preview `0.20.0-beta`, see the [release notes](docs/releases/0.20.0.md)):
565
+
566
+ - **Projects and people**: unassigned conversations go to Astro, Jefa triages them, and when a topic keeps coming back (three conversations over at least two days) Astro asks whether to make it a project with its own people. Every project has a brief and every Agent an occupation, which Bole recruits by.
567
+ - **Tasks**: assign without starting (backlog), schedule recurring tasks that pause after repeated failures, and stop, retry, or review any run from the task details. A temporary failure is retried automatically only when no prompt was sent.
568
+ - **Decisions**: an Agent that needs you asks in the conversation first. A request that must wait for you goes to the Decisions page, and your reply reaches the Agent that asked.
569
+ - **Roundtable**: besides asks (`message_agent`), Agents have direct and group chats (`agent_chat`) with push delivery and `wait`; the console shows them live.
570
+ - **Memory between projects**: weighted links (related, frequent, close) say how much one project may draw on another. Weights never grant access.
571
+ - **Lower token cost**: a smaller task entry, shared rules read on demand, long preference lists read in pages, and a Stop hook that closes routine tasks without another model turn.
572
+ - **Console**: six entries (Workbench, Agents, Conversations, Projects, Memory, Settings), a phone layout, and Alt/Option-click explanations for any status or term.
573
+ - **Windows**: an installed build with Update-Fuli, Rollback-Fuli, and Uninstall-Fuli that keeps your data.
574
+
476
575
  The following must not be presented as already proven:
477
576
 
478
577
  - the A/B thresholds in `FULI_ALIGNMENT_BENCHMARK.md` are acceptance conventions; claims that Fuli
@@ -553,6 +652,7 @@ system locale. User data such as paths and space names is displayed unchanged.
553
652
  | `fuli open [--data-dir DIR]` | Open the current management UI in the default browser |
554
653
  | `fuli graph export --output DIR [--mode container\|native]` | Export graph data as a checksummed, copyable offline bundle |
555
654
  | `fuli graph import --input DIR [--target-mode container\|native] [--yes]` | Verify and replace target graph data, preserving an automatic pre-import rollback bundle |
655
+ | `fuli graph migrate --to native [--yes]` | Move a container graph to native mode, accepted only when node and relationship counts match |
556
656
  | `fuli update [setup options]` | Update the npm package and refresh local integrations |
557
657
  | `fuli uninstall [--yes] [--data-dir DIR]` | Remove agent integrations and services while preserving knowledge data and Neo4j volumes |
558
658
 
@@ -608,6 +708,7 @@ and tells you to run `fuli setup`; it never applies setup changes implicitly.
608
708
  | `--skip-agents` | Do not change agent configuration or Skills |
609
709
  | `--connected-only` | Refresh only clients that already have a Fuli MCP entry; used automatically by update |
610
710
  | `--no-start` | Initialize the Provider without starting the UI |
711
+ | `--allow-provider-downgrade` | Accept a lower native Provider version, for example moving from a local `rc` build to a public `beta`; back up the data folder first |
611
712
  | `--personal-only` | Use only the personal Provider; this is the default |
612
713
  | `--with-dev-public` | Start a development shared Provider for local integration work only |
613
714
 
@@ -641,6 +742,8 @@ Tonborg's workbench shows decisions and feedback. **Project Agents → Hire an A
641
742
  Recruitment reuses a durable identity with separate project assignments. An installed employee workbench,
642
743
  API and A2A share the FULI port; existing FULI MCP clients discover and call its tools. Recruitment does not
643
744
  start a model or rewrite client settings. See the [employee package and extension contract](docs/employee-agents.md).
745
+ Agents can also grow small [Agent apps](docs/agent-apps.md); in this version an approved app runs
746
+ unsandboxed with your account's permissions, after you confirm it with `fl app approve` in a terminal.
644
747
 
645
748
  Project Agent identities remain control-plane records rather than one resident process per identity.
646
749
  Roles now keep versioned, project-private working memory in the same Neo4j Provider. Task entry
@@ -669,6 +772,18 @@ fuli setup --yes --runtime-mode native --memory-profile low --adaptive-memory
669
772
  fuli graph import --target-mode native --input "$HOME/Backups/fuli-container" --yes
670
773
  ```
671
774
 
775
+ Or run the same steps as one command, from a package that has the native runtime (on Windows the
776
+ installed Fuli desktop package):
777
+
778
+ ```bash
779
+ fuli graph migrate --to native
780
+ ```
781
+
782
+ It stops the running console, counts and exports the container graph, sets up native mode, imports,
783
+ and accepts the result only when every label and relationship-type count matches. On any failure it
784
+ switches back to container mode. The container volume is only read and is left stopped, never removed.
785
+ Client integrations are not changed.
786
+
672
787
  Swap `container` and `native` for the reverse direction. Export briefly stops the source database
673
788
  and resumes only services that were actually running beforehand. Import validates the manifest and
674
789
  every dump's SHA-256 before stopping the target. It preserves the old target under `backups/graph`
@@ -699,8 +814,9 @@ refreshes only clients with an existing Fuli MCP entry. Existing knowledge, conf
699
814
  and Neo4j volumes remain intact. Reuse any custom setup options during updates.
700
815
 
701
816
  Reconnect Fuli in already-open clients, or restart those clients and open a new task, to load the
702
- new MCP process. To repair existing integrations without upgrading, run
703
- `fuli setup --yes --connected-only`. Use normal `fuli setup` to connect a new client.
817
+ new MCP process. To repair existing integrations that still have a Fuli MCP entry without upgrading,
818
+ run `fuli setup --yes --connected-only`. Clients that are `skills-only`, `removed`, or newly added
819
+ (no Fuli MCP entry) require a full `fuli setup`.
704
820
 
705
821
  Uninstall:
706
822
 
@@ -716,7 +832,9 @@ reuse the same data.
716
832
 
717
833
  Fuli installs the `capturing-session-knowledge`, `grilling-project`, `operating-fuli`, and `flreview` Skills for
718
834
  supported agents. `/flreview` asks FULI for ranked candidates, then the invoking Agent generates a
719
- fresh interactive review artifact. FULI remains the durable source of truth and write surface; no
835
+ fresh interactive review artifact. Codex rejects custom slash commands before any hook runs, so there the person
836
+ types `fuli review` (or `flreview`) on its own line; the Codex prompt hook passes that exact line to the model with
837
+ the installed Skill named, and in a session where FULI is off it answers the line itself without starting a review. FULI remains the durable source of truth and write surface; no
720
838
  permanent review tab or one-question-at-a-time chat flow is required.
721
839
  `operating-fuli` makes Agents inspect the structured interface-parity catalog before changing data,
722
840
  verify writes through matching read tools, and treat browser automation as visual verification only.
package/README.zh-CN.md CHANGED
@@ -14,20 +14,30 @@
14
14
  <a href="LICENSE"><img src="https://img.shields.io/npm/l/fuli-context?style=flat" alt="许可证" /></a>
15
15
  </p>
16
16
 
17
- **换 AI 工具,不用换搭档。**
17
+ **换 AI 工具,留住你自己。**
18
+
19
+ 复利(Fuli)就是 **compound interest**:收益再生收益。
20
+
21
+ 复利的初衷,是在你和 AI 一起工作时,留住你自己的品味、个性和判断。我们相信,人不必再事事亲力亲为。
22
+ 你可以腾出手来做决定、想点子,也可以歇一歇。
23
+
24
+ 复利支持 Codex、Claude Code,以及其他支持 MCP 和 Skills 的 Agent 客户端。让这些客户端接入同一份 Fuli 数据,
25
+ 就能继续和同一位 Agent 合作,延续它记录下的工作和相关上下文。
26
+
27
+ AI 能接手的工作越来越多。复利帮你完成这段过渡,同时让你自己的判断始终居中。
18
28
 
19
29
  复利是跨兼容 MCP 客户端的长期 Agent 协作层。让 AI 工具接入同一份可访问的 Fuli 数据,
20
30
  选中同一位 Agent,就能延续它的身份、项目职责和相关工作脉络。运行 `fuli connect` 获取标准
21
31
  MCP 配置,有适配器的客户端还支持自动配置(Codex、Claude Code、Cursor,以及使用精简聊天工具集的 Claude
22
32
  桌面版)。详见[客户端接入](docs/client-connections.md)。
23
33
 
24
- - **搭档留得住:**任务结束后,Agent 的职责、合作记录与工作记忆继续保留。
25
- - **上下文有边界:**按需取回项目知识、决定与偏好,保留来源、作用域和确认状态。
26
- - **需要时一起做:**协调不同专长的 Agent,通过可用且获授权的客户端或执行器开展任务,记录真实执行。
27
- - **每个任务都有负责人:**在项目目录里直接提需求,Fuli 自动登记项目并安排一位负责 Agent;回复最后一行写明谁负责、谁协助。
28
- - **三位专职随时在岗:**Jefa 管项目,Bole 做 AR(Agent Resources),负责招募与人员安排,Tonborg 帮你做判断;每个空间都自带这三位。
29
- - **按你的偏好判断:**[Tonborg](docs/judgment-and-autonomy.md) 在你设定的自主程度内协助审核、建议客户端与模型。每次判断都有记录,点赞、点踩或补一句理由,帮助它改进后续判断。
30
- - **Agent 之间直接对话:**通过[圆桌](#agent-圆桌),一个 Agent 可以直接去问另一段对话里的 Agent,往来全程留痕。
34
+ - **搭档留得住**:任务结束后,Agent 的职责、合作记录与工作记忆继续保留。
35
+ - **上下文有边界**:按需取回项目知识、决定与偏好,保留来源、作用域和确认状态。
36
+ - **需要时一起做**:协调不同专长的 Agent,通过可用且获授权的客户端或执行器开展任务,记录真实执行。
37
+ - **每个任务都有负责人**:在项目目录里直接提需求,Fuli 自动登记项目并安排一位负责 Agent;回复最后一行写明谁负责、谁协助。
38
+ - **三位专职随时在岗**:Jefa 管项目,Bole 做 AR(Agent Resources),负责招募与人员安排,Tonborg 帮你做判断;每个空间都自带这三位。
39
+ - **按你的偏好判断**:[Tonborg](docs/judgment-and-autonomy.md) 在你设定的自主程度内协助审核、建议客户端与模型。每次判断都有记录,点赞、点踩或补一句理由,帮助它改进后续判断。
40
+ - **Agent 之间直接对话**:通过[圆桌](#agent-圆桌),一个 Agent 可以直接去问另一段对话里的 Agent,往来全程留痕。
31
41
 
32
42
  这里的“长期”指身份和上下文持续存在。Fuli 负责组织上下文与协调任务,接入的 AI 工具负责执行。
33
43
  能采集、接续哪些对话取决于客户端适配器;换工具不会自动获得其他项目的私有记忆。
@@ -37,7 +47,14 @@ AI 负责检索、提醒、归纳和执行;人始终保留最终判断权。
37
47
 
38
48
  ## 先用起来
39
49
 
40
- 准备好 Node.js 24.12+ 和 Docker Compose v2 后,运行:
50
+ 安装 Fuli、接入客户端,并通过一次实际工具调用完成验证。完整要求见[安装](#安装);配置格式、Hook 与排错见
51
+ [客户端接入(英文)](docs/client-connections.md)。
52
+
53
+ 登录、Hook 信任与人工审核仍由人确认。**“设置 → 客户端接入”显示 `已接入`(`connected`)仅代表客户端配置文件中已有当前版本的 Fuli 条目,不代表客户端进程已加载该 MCP、Hook 已送达上下文或工具已成功调用。**
54
+
55
+ ### 1. 安装
56
+
57
+ 在具备 Node.js 24.12+ 和 Docker Compose v2 的环境下(默认容器模式;macOS / Linux 原生模式见[安装](#安装)),运行:
41
58
 
42
59
  ```bash
43
60
  npm install --global fuli-context
@@ -45,18 +62,26 @@ fuli setup
45
62
  fuli open
46
63
  ```
47
64
 
48
- 设置向导会先展示计划,再修改环境。完整要求与 macOS / Linux 原生运行方式见[安装](#安装)。
65
+ 设置向导会先展示计划,再修改环境。
66
+
67
+ ### 2. 接入客户端
68
+
69
+ - **已检测到 Codex、Claude Code、Cursor 或 Claude 桌面版:** `fuli setup` 会写入 MCP 配置及支持的
70
+ Hook / Skills。只在启动时读取配置的应用须退出重开,重连后新建任务;Codex Hook 信任须在 Codex 的 `/hooks` 中人工审阅。
71
+ - **其他 MCP 客户端:** 运行 `fuli connect`(或打开控制台 **设置 → 客户端接入**),将 `fuli` 条目合并到客户端 MCP 配置并保留其他服务器,再按该客户端要求重载或信任连接。`fuli connect` 只打印 JSON。
72
+
73
+ ### 3. 首次实际工具调用与验证
49
74
 
50
- 第一次可以试一次跨工具接续:在项目目录里提一个需求(Fuli 会登记项目并安排负责 Agent),在一个已接入客户端完成任务,
51
- 再把这位 Agent 的接续指令带到连接同一份数据的另一客户端。检查它是否找对项目、恢复上次的工作,
52
- 并在缺少信息时如实说明。支持范围见[Agent 对话与协作说明](docs/agent-conversations-and-collaboration.md)。
75
+ 1. 运行 `fuli status`,确认管理界面与个人图谱就绪(默认 `http://127.0.0.1:2727`)。
76
+ 2. 在客户端中确认 Fuli 工具已出现,并在项目目录里**发起一次实际工具调用**(例如让 Agent 读取当前项目协作偏好或协调一个小任务),检查它是否找对项目(或登记项目并安排负责 Agent),且在缺少信息时如实询问而非编造。
77
+ 3. 可选的跨工具接续:把这位 Agent 的接续指令带到连接同一份数据的另一客户端,验证它能否恢复同一位 Agent、项目和上次工作。支持范围见[Agent 对话与协作说明](docs/agent-conversations-and-collaboration.md)。
53
78
 
54
- 临时任务也能交给 Agent:本次源码支持在没有匹配到已登记项目时,建立隔离的**临时项目**,
55
- 继续用 Fuli 协调任务。任务历史会保留,Agent 招募与执行器授权沿用现有规则;
56
- 单纯读取偏好不会创建项目,多个候选项目仍需明确选择。此能力已包含在正式版中。
79
+ 临时任务也能交给 Agent:本次源码支持在没有匹配到已登记项目时建立隔离的**临时项目**;单纯读取偏好不会创建项目,多个候选项目仍需明确选择。Fuli 会保留其任务历史,并遵循既有的 Agent 招募与执行器权限。Agent 目录提供首次任务入口,任务详情只有在收到真实执行报告后才展示完成汇总——仅分配了 Agent 或普通本机对话都不等于工作进程证据。
57
80
 
58
- Agent 目录提供首次任务入口,任务详情会区分“已分配”和“收到工作进程报告”。
59
- 只有上报真实执行后才有完成汇总;分配了 Agent、或仅完成普通本机对话,都不等于已运行工作进程。
81
+ ### 4. 排错与恢复
82
+
83
+ 若安装、客户端检测或工具调用失败,见[常见失败与恢复(英文)](docs/client-connections.md#common-failure-recovery)。
84
+ `fuli setup --yes --connected-only` 仅用于刷新仍保留 Fuli MCP 条目的客户端(“设置”页显示**已接入** / `connected` 或**配置有变化** / `changed`);显示**只剩技能文件**(`skills_left`)、**已移除**(`removed`)、**未接入**(`not_connected`)或新安装的客户端(无 Fuli MCP 条目)须运行完整的 `fuli setup`。
60
85
 
61
86
  [工作原理](#项目理念) · [安装](#安装) · [Agent 角色与团队](docs/employee-agents.md) ·
62
87
  [跨客户端验收](acceptance/cross-client-handoff.md) · [参与贡献](CONTRIBUTING.md) ·
@@ -70,6 +95,9 @@ Agent 调用 `message_agent`,Fuli 在对方自己的客户端里以只读方
70
95
  Claude Code 会 fork 原会话;Codex 会在原对话里记下这次问答(对话正在 Codex 中打开时改用新会话)。
71
96
  暂时唤不醒的消息会在对方下次开始任务时出现在它的收件箱里。
72
97
 
98
+ Agent 之间还可以用 `agent_chat` 私聊和建群。消息是推送的:调用 `wait` 的 Agent 会立刻收到新消息,
99
+ 私聊或 `@` 点名会唤醒不在等待的 Agent。聊天只负责通信,不会改变知识权重。
100
+
73
101
  每一段往来都保存在本机,控制台的“圆桌”页能看到谁问了谁、通过哪个客户端、原文和回答。
74
102
  工具与限制见[圆桌说明](docs/agent-roundtable.md)。
75
103
 
@@ -264,7 +292,33 @@ Code、Codex 和 Cursor 生命周期适配器。已加载、获信任的入口 H
264
292
  `capture_candidates`;否则使用 `retain_nothing`。Prompt fallback Agent 遵守相同判断标准,并
265
293
  通过 `capture_session_knowledge` 写入。写个人偏好时设置正确的 `profileAspect` 和稳定的
266
294
  `attributes.preferenceKey`;写项目事实时不设置 `profileAspect`。如果“设置”中的自动沉淀已
267
- 关闭,写入会返回 `capture_disabled`,不会产生任何类别的条目。
295
+ 关闭,自动写入会返回 `capture_disabled`,不会产生任何类别的条目:会话原文、checkpoint、知识和
296
+ 偏好候选、知识使用记录、查看记录,以及经由 Agent 上报的反馈或纠正都会停止。记录设置读取失败时
297
+ 自动写入同样停止(`reason: policy_unavailable`)。你在 FULI 控制台里明确提交的修改和显式的
298
+ `新项目:` 仍会保存,查询已有知识不受影响。关闭期间写下的会话轮次只留一条不含内容的跳过标记,重新打开后
299
+ 也不会补记。
300
+
301
+ 记录范围还可以按项目选择。`projectMode` 为 `all`(默认)、`all_except`(配合
302
+ `excludedProjectIds`)或 `selected`(配合 `selectedProjectIds`);`unregisteredDirectories`
303
+ 决定没有登记为 FULI 项目的目录记不记(`selected` 下默认 `skip`,其余默认 `capture`)。目录按
304
+ 任务入口相同的规则解析为项目,所以同一仓库的 worktree 就是同一个项目。未开启的项目返回
305
+ `reason: project_off`,未登记目录返回 `project_unregistered`,每轮任务回执末尾都会写明原因以及
306
+ 明确提交的修改仍会保存,例如「此项目未开启记忆;你明确提交的修改仍会保存」。关闭某个项目不会隐藏或删除它已有的记录,`projectsOffSince` 记下它从何时
307
+ 停止记录。Agent 用 `get_capture_policy` 读取(传 `projectPath` 可得知当前项目是否记录),用
308
+ `update_capture_policy` 修改前必须先复述改动并得到用户确认;设置页使用 `PATCH /api/capture-policy`。
309
+ 在会话里说「这次别记」只暂停这一个会话、立即生效、无需确认:Agent 只带 `sessionPaused: true` 和当前
310
+ `taskContextToken` 调用 `update_capture_policy`,此后本会话每轮回执都写「本会话已暂停记录(自 HH:mm 起)」
311
+ (`reason: session_paused`)。之前的记录保留,该会话派出的 worker 一并暂停;说「继续记」(`sessionPaused: false`)
312
+ 从此恢复,暂停期间的内容不会补记。暂停状态存在本地运行目录,会话结束即失效。
313
+
314
+ 要让某个会话整体停用 FULI,由用户自己输入 `/fuli stop`(Claude Code 和 Cursor,setup 会安装 `fuli` 命令 Skill)
315
+ 或 `fuli stop`(所有客户端;Codex 不支持自定义斜杠命令)。这一行由提示词 Hook 直接答复,模型看不到:此后该会话不再注入
316
+ 记忆、偏好和召回,其 Agent 自己发起的 FULI 读取(搜索、Agent 记忆、对话)也被拒绝,不再自动记录,也不再自动发起协作(worker、借调、其他 Agent、角色任务);其他会话、本地服务和已有记忆不变。
317
+ `fuli start` 在现有设置内重新启用(暂停或更严格的全局、客户端、项目设置照样生效),`fuli restart` 还会让下一轮重新拿到完整
318
+ 上下文,`fuli status` 显示本会话和默认设置;停用期间的对话不会补录。已发给模型的上下文无法撤回,需要完全隔离请新开会话。
319
+ 只有任务令牌能说明一次工具调用属于哪个会话(Claude Code 的工具连接跨 /clear 保留,Codex、Cursor 的连接不带会话),所以某个客户端有任一会话停用期间,它不带任务令牌的工具调用一律拒绝,不把记忆提供给可能正是已停用的那个会话。Agent 传入手上已有的 `taskContextToken`(入口、搜索和团队类读取都接受),其他窗口照常工作。
320
+ 在客户端启动的 shell 里也可以运行同一开关(`!fuli session stop`),因此能运行 shell 的 Agent 也能改它(与能读写本地文件同等信任);控制台和 `fuli mcp --call` 仍可为你读取;`fuli session default off` 让新会话默认不启用、
321
+ 需显式启用,已打开的会话保持原状。
268
322
 
269
323
  本地可先运行下面两个契约测试,验证 README 说明和项目路径解析仍与实现一致:
270
324
 
@@ -309,18 +363,16 @@ sequenceDiagram
309
363
  opt 产生决策、反证或失效证据
310
364
  A->>F: 记录理由或知识反馈
311
365
  end
312
- A->>F: checkpoint_task_knowledge
313
- alt 有少量可复用候选
366
+ opt 有值得保留的内容(候选、决策、有意义的工作记录)
367
+ A->>F: checkpoint_task_knowledge
314
368
  F->>G: capture_candidates
315
- else 没有值得长期保留的内容
316
- F-->>A: retain_nothing
317
369
  end
318
370
 
319
371
  alt 已加载并获信任的 Claude Code / Codex Stop Hook
320
372
  L->>F: verify_task_checkpoint
321
- F-->>L: 已检查才允许结束
322
- else Cursor 提醒或 Prompt fallback Agent
323
- Note over A,F: 遵循同一契约;有限提醒不是无条件 Stop Gate
373
+ F-->>L: 日常任务如实收尾为 retain_nothing / reported,其余给出提醒
374
+ else Cursor 或没有 Stop Hook 的 Agent
375
+ Note over A,F: 遵循同一契约。日常兜底任务在下一次任务入口时收尾
324
376
  end
325
377
  A-->>U: 返回结果与实际使用的 Fuli 来源
326
378
  ```
@@ -352,7 +404,7 @@ sequenceDiagram
352
404
  环境变量名,例如先执行 `export PROJECT_KB_TOKEN='...'`,再执行 `fl restart`。
353
405
  3. 打开 `http://127.0.0.1:2727/connections`,在“外部知识库”中填写连接名称、连接器、
354
406
  绑定项目(可多选)和检索模式。
355
- 4. MCP HTTP 填写服务 URL 和可选的令牌环境变量名;MCP stdio 填写命令与参数;Notion
407
+ 4. MCP HTTP 填写最终端点 URL(不跟随跨源重定向)和可选的令牌环境变量名;MCP stdio 填写命令与参数;Notion
356
408
  填写令牌环境变量名以及 Page IDs 或 Data Source IDs;飞书 / Lark 填写令牌环境变量名、
357
409
  区域和明确的 Space ID、根节点 Token 或 Node Tokens;RAG Retrieval API 填写 Dify 兼容
358
410
  端点、知识库 ID 和可选令牌环境变量名;自定义连接器填写受信任本地 ESM 模块与来源 JSON。
@@ -408,6 +460,17 @@ Agent 上下文。
408
460
  - 公共知识候选发现,以及预览令牌保护的原子提升;
409
461
  - MCP、Notion、飞书 / Lark、Dify 兼容 RAG Retrieval API 和可信自定义代码的只读多项目绑定与聚合检索。
410
462
 
463
+ 0.20 新增(公开预览版 `0.20.0-beta`,详见[发布说明](docs/releases/0.20.0.md)):
464
+
465
+ - **项目与人员**:没有归属的会话先交给 Astro,Jefa 负责分诊,同一话题反复出现(累计 3 个会话、跨至少 2 天)时,Astro 会问你要不要为它成立项目、招人维护。项目都有简介,Agent 都有职业,Bole 按职业招聘。
466
+ - **任务**:可以只指派不开工(backlog);可以定时创建任务,连续失败会自动暂停;在任务详情里可以停止、重试、回看任何一次运行。临时故障只在确定没发出指令时才自动重试。
467
+ - **待决策**:Agent 需要你时,先在当前会话里问你。需要等你稍后处理的请求进「待决策」页,你的回复会送回发起请求的 Agent。
468
+ - **圆桌**:除了问答(`message_agent`),Agent 之间还能私聊和群聊(`agent_chat`),支持推送和 `wait` 等待;控制台实时显示。
469
+ - **项目间记忆**:用权重(有关系 / 常往来 / 密切)表示一个项目能从另一个项目取多少记忆。权重不授予权限。
470
+ - **更省 Token**:任务入口更小,共享规则按需读取,长偏好分页读完,Stop Hook 直接收尾日常任务,省掉一次模型往返。
471
+ - **控制台**:六个入口(工作台、Agents、对话、项目、记忆、设置),适配手机;按住 Alt / Option 点任意状态或名词就能看到解释。
472
+ - **Windows**:安装版自带 Update-Fuli、Rollback-Fuli、Uninstall-Fuli,数据都会保留。
473
+
411
474
  仍需与“已经证明”区分的内容:
412
475
 
413
476
  - `FULI_ALIGNMENT_BENCHMARK.md` 中 A/B 阈值是验收约定;只有完成足量、同条件的真实配对任务
@@ -483,6 +546,7 @@ CLI 的帮助、交互提示、状态和错误信息固定使用英文,不跟
483
546
  | `fuli open [--data-dir DIR]` | 在默认浏览器中打开当前管理界面 |
484
547
  | `fuli graph export --output DIR [--mode container\|native]` | 把当前图数据导出为可校验、可复制的离线备份包 |
485
548
  | `fuli graph import --input DIR [--target-mode container\|native] [--yes]` | 校验备份并替换目标图数据;导入前自动保留回滚包 |
549
+ | `fuli graph migrate --to native [--yes]` | 把容器图谱迁移到原生模式;节点和关系数量完全一致才算成功 |
486
550
  | `fuli update [setup 选项]` | 更新 npm 包并刷新本机接入 |
487
551
  | `fuli uninstall [--yes] [--data-dir DIR]` | 清理 Agent 接入和服务,保留知识数据和 Neo4j 数据卷 |
488
552
 
@@ -538,6 +602,7 @@ HTTPS 公网部署。
538
602
  | `--skip-agents` | 不修改 Agent 配置或 Skills |
539
603
  | `--connected-only` | 仅刷新已有 Fuli MCP 配置的客户端;update 自动使用此选项 |
540
604
  | `--no-start` | 初始化 Provider,但不启动管理界面 |
605
+ | `--allow-provider-downgrade` | 接受更低版本的原生 Provider,例如从本机 `rc` 版换到公开的 `beta` 版;先备份数据目录 |
541
606
  | `--personal-only` | 只使用个人 Provider;默认模式 |
542
607
  | `--with-dev-public` | 同时启动开发用公共 Provider,仅用于开发或联调 |
543
608
 
@@ -567,6 +632,7 @@ Jefa(项目经理)、Bole(AR,Agent Resources)和 Tonborg(决策员
567
632
  “Agents → 聘请 Agent”提供其他可复用的员工模板。招募复用持久身份,
568
633
  按项目单独任职;安装员工包后,侧栏工作台与 API/A2A 共用 FULI 端口,已有 FULI MCP 可发现和调用员工工具。
569
634
  招募不等于启动模型,也不改写已有客户端配置。详见[员工包安装与扩展协议](docs/employee-agents.md)。
635
+ Agent 还可以自己做小的 [Agent 应用](docs/agent-apps.md);本版本没有沙箱,经你在终端用 `fl app approve` 确认后,应用以你的账户权限运行。
570
636
 
571
637
  Project Agent 身份仍是控制面记录,不会每个身份常驻一个进程。角色工作记忆按项目私有、
572
638
  版本化地保存在同一个 Neo4j Provider 中;任务入口恢复唯一负责人,结束检查跨 MCP 进程持久化。
@@ -591,6 +657,16 @@ fuli setup --yes --runtime-mode native --memory-profile low --adaptive-memory
591
657
  fuli graph import --target-mode native --input "$HOME/Backups/fuli-container" --yes
592
658
  ```
593
659
 
660
+ 也可以用一条命令完成同样的步骤(需要带原生运行时的安装包;Windows 上是已安装的 Fuli 桌面版):
661
+
662
+ ```bash
663
+ fuli graph migrate --to native
664
+ ```
665
+
666
+ 它会停止正在运行的控制台,统计并导出容器图谱,切到原生模式后导入;只有每种标签和关系类型的数量都一致,
667
+ 才接受迁移结果。任何一步失败都会切回容器模式。容器卷只会被读取,之后保持停止,不会被删除;
668
+ 客户端接入不受影响。
669
+
594
670
  反向迁移只需交换 `container` 和 `native`。导出会短暂停止来源数据库,完成后只恢复导出前
595
671
  确实在运行的服务;导入会先校验清单和每个 dump 的 SHA-256,再停止目标数据库。替换前的
596
672
  目标数据会自动保存在数据目录下的 `backups/graph`,导入失败时会立即尝试回滚。执行前应让
@@ -618,8 +694,7 @@ fuli update
618
694
  相同选项。
619
695
 
620
696
  已打开的客户端需要重新连接 Fuli MCP,或重启客户端后新建任务,才能加载新进程。
621
- 只需修复已有接入时,运行 `fuli setup --yes --connected-only`;接入新客户端仍使用普通
622
- `fuli setup`。
697
+ 只需修复仍保留 Fuli MCP 条目的已有接入时,运行 `fuli setup --yes --connected-only`;仅剩 Skills(`skills-only`)、已移除(`removed`)或新接入的客户端(无 Fuli MCP 条目)须运行完整的 `fuli setup`。
623
698
 
624
699
  卸载:
625
700
 
@@ -633,7 +708,8 @@ npm uninstall --global fuli-context
633
708
  ## Agent 接入与主要工具
634
709
 
635
710
  Fuli 为支持的 Agent 安装 `capturing-session-knowledge`、`grilling-project`、`operating-fuli` 和 `flreview`
636
- Skills。输入 `/flreview` 后可选择全部、个人偏好或个人项目;若用户表示完全没耐心,流程会
711
+ Skills。输入 `/flreview` 后可选择全部、个人偏好或个人项目(Codex 在 Hook 运行前就拒绝自定义斜杠命令,
712
+ 请单独一行输入 `fuli review` 或 `flreview`:Codex 提示词 Hook 会把这一行连同已安装 Skill 的名称交给模型;本会话停用 FULI 时由 Hook 直接答复,不开始复核);若用户表示完全没耐心,流程会
637
713
  跳过心情、时间和 token 询问,只处理少量最高优先级问题。Fuli setup 为 Claude Code 生成
638
714
  `UserPromptSubmit`/`Stop` MCP Hook,为 Codex 生成 `UserPromptSubmit` MCP Hook 和本地 `Stop`
639
715
  命令,为 Cursor 生成 `sessionStart`/`beforeSubmitPrompt`/`stop` Hook。Codex bootstrap 和 Cursor
@@ -0,0 +1 @@
1
+ .about-section-heading[data-v-99ca5811]{border-bottom:1px solid var(--color-border);padding-bottom:24px}.about-section-heading h2[data-v-99ca5811]{color:var(--color-ink);letter-spacing:-.02em;margin:0;font-size:clamp(20px,2.6vw,26px);font-weight:650;line-height:1.25}.about-section-heading p[data-v-99ca5811]{max-width:680px;color:var(--color-muted);margin-top:8px;font-size:14px;line-height:1.65}.label-dimension-strip[data-v-e657da2b]{border-block:1px solid var(--color-border);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.label-dimension-strip article[data-v-e657da2b]{grid-template-columns:22px minmax(0,1fr);gap:11px;min-width:0;padding:16px 18px;display:grid}.label-dimension-strip article+article[data-v-e657da2b]{border-left:1px solid var(--color-border)}.label-dimension-strip i[data-v-e657da2b]{border:1px solid var(--color-border-strong);border-radius:6px;width:22px;height:22px;position:relative}.label-dimension-strip i[data-v-e657da2b]:before,.label-dimension-strip i[data-v-e657da2b]:after{content:"";position:absolute}.label-dimension-strip [data-dimension=profile] i[data-v-e657da2b]:before{border:1.5px solid var(--color-muted);border-radius:50%;inset:5px}.label-dimension-strip [data-dimension=profile] i[data-v-e657da2b]:after{background:var(--color-danger);border-radius:50%;width:4px;height:4px;top:2px;right:2px}.label-dimension-strip [data-dimension=origin] i[data-v-e657da2b]:before{border-right:1px solid var(--color-muted);border-bottom:1px solid var(--color-muted);inset:4px}.label-dimension-strip [data-dimension=origin] i[data-v-e657da2b]:after{background:var(--color-muted);border-radius:50%;width:5px;height:5px;top:4px;right:4px}.label-dimension-strip [data-dimension=confirmation] i[data-v-e657da2b]:before{border-left:2px solid var(--color-muted);border-bottom:2px solid var(--color-muted);width:11px;height:6px;top:5px;left:5px;transform:rotate(-45deg)}.label-dimension-strip dl[data-v-e657da2b],.label-dimension-strip dt[data-v-e657da2b],.label-dimension-strip dd[data-v-e657da2b]{margin:0}.label-dimension-strip dt[data-v-e657da2b]{color:var(--color-ink);font-size:12px;font-weight:680}.label-dimension-strip dd[data-v-e657da2b]{color:var(--color-muted);margin-top:3px;font-size:12px;line-height:1.45}.label-dimension-strip small[data-v-e657da2b]{color:var(--color-muted);margin-top:5px;font-size:12px;line-height:1.4;display:block}.label-guide-sheet[data-v-e657da2b]{gap:42px;margin-top:40px;display:grid}.label-guide-section[data-v-e657da2b]{border-top:1px solid var(--color-border);grid-template-columns:148px minmax(0,1fr);gap:26px;padding-top:28px;display:grid}.label-guide-section>header[data-v-e657da2b]{grid-template-columns:26px minmax(0,1fr);align-content:start;gap:9px;display:grid}.label-guide-section>header>span[data-v-e657da2b]{color:var(--color-accent);letter-spacing:.06em;font-size:12px;font-weight:650}.label-guide-section h3[data-v-e657da2b]{color:var(--color-ink);margin:0;font-size:15px;font-weight:650}.label-guide-section header p[data-v-e657da2b]{color:var(--color-muted);margin-top:5px;font-size:12px;line-height:1.45}.label-definition-list[data-v-e657da2b]{margin:0;display:grid}.label-definition-row[data-v-e657da2b]{grid-template-columns:116px minmax(0,1fr);align-items:start;gap:16px;padding:13px 0;display:grid}.label-definition-row+.label-definition-row[data-v-e657da2b]{border-top:1px solid var(--color-border)}.label-definition-row dt[data-v-e657da2b],.label-definition-row dd[data-v-e657da2b]{margin:0}.label-token[data-v-e657da2b]{--token:var(--color-faint);border:1px solid var(--color-border);border-radius:var(--radius-pill);width:max-content;max-width:100%;height:24px;color:var(--color-ink-soft);background:var(--color-surface);white-space:nowrap;align-items:center;gap:6px;padding:0 10px 0 8px;font-size:12px;font-weight:500;line-height:1;display:inline-flex}.label-token[data-v-e657da2b]:before{background:var(--token);content:"";border-radius:50%;flex:none;width:6px;height:6px}.profile-token[data-kind=taste][data-v-e657da2b]{--token:var(--aspect-taste)}.profile-token[data-kind=personality][data-v-e657da2b]{--token:var(--aspect-personality)}.profile-token[data-kind=judgment][data-v-e657da2b]{--token:var(--aspect-judgment)}.origin-token[data-v-e657da2b]{--token:var(--color-ink-soft)}.status-token[data-status=pending][data-v-e657da2b]{--token:var(--color-warning)}.status-token[data-status=agent-confirmed][data-v-e657da2b]{--token:var(--color-accent-line)}.status-token[data-status=confirmed][data-v-e657da2b]{--token:var(--color-success)}.label-definition-row strong[data-v-e657da2b]{color:var(--color-ink);font-size:13px;font-weight:650}.label-definition-row p[data-v-e657da2b]{color:var(--color-muted);margin-top:5px;font-size:12px;line-height:1.6}.quadrant-explainer[data-v-e657da2b]{grid-template-rows:auto 28px auto;grid-template-columns:36px minmax(0,1fr);display:grid}.quadrant-y-axis[data-v-e657da2b]{color:var(--color-muted);flex-direction:column;grid-row:1;justify-content:space-between;align-items:center;padding:3px 0;font-size:12px;display:flex}.quadrant-y-axis strong[data-v-e657da2b]{color:var(--color-muted);letter-spacing:.08em;text-orientation:upright;writing-mode:vertical-rl;font-size:12px;font-weight:650}.quadrant-grid[data-v-e657da2b]{border:1px solid var(--color-border);border-radius:var(--radius-control);grid-template-columns:repeat(2,minmax(0,1fr));display:grid;overflow:hidden}.quadrant-grid article[data-v-e657da2b]{background:0 0;min-height:108px;padding:13px 15px}.quadrant-grid article[data-v-e657da2b]:nth-child(2n){border-left:1px solid var(--color-border)}.quadrant-grid article[data-v-e657da2b]:nth-child(n+3){border-top:1px solid var(--color-border)}.quadrant-grid span[data-v-e657da2b]{color:var(--color-muted);font-size:12px}.quadrant-grid strong[data-v-e657da2b]{color:var(--color-ink);margin-top:6px;font-size:13px;font-weight:650;display:block}.quadrant-grid p[data-v-e657da2b]{max-width:340px;color:var(--color-muted);margin-top:5px;font-size:12px;line-height:1.5}.quadrant-x-axis[data-v-e657da2b]{color:var(--color-muted);grid-area:2/2;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;font-size:12px;display:grid}.quadrant-x-axis span[data-v-e657da2b]:last-child{text-align:right}.quadrant-x-axis strong[data-v-e657da2b]{color:var(--color-muted);letter-spacing:.08em;font-size:12px;font-weight:650}.quadrant-notes[data-v-e657da2b]{flex-wrap:wrap;grid-area:3/2;gap:6px 20px;padding-top:8px;display:flex}.quadrant-notes p[data-v-e657da2b],.status-boundaries p[data-v-e657da2b]{color:var(--color-muted);font-size:12px;line-height:1.5}.status-table-wrap[data-v-e657da2b]{min-width:0}.status-definition-table[data-v-e657da2b]{border-collapse:collapse;width:100%}.status-definition-table th[data-v-e657da2b],.status-definition-table td[data-v-e657da2b]{border-bottom:1px solid var(--color-border);color:var(--color-muted);text-align:left;vertical-align:top;padding:13px 12px;font-size:12px;line-height:1.55}.status-definition-table thead th[data-v-e657da2b]{color:var(--color-muted);padding-top:0;font-size:12px;font-weight:650}.status-definition-table tbody th[data-v-e657da2b]{padding-left:0}.status-definition-table tbody td[data-v-e657da2b]:last-child{padding-right:0}.status-definition-table td strong[data-v-e657da2b]{color:var(--color-ink);font-size:12px;font-weight:620}.status-boundaries[data-v-e657da2b]{flex-wrap:wrap;gap:6px 20px;padding-top:12px;display:flex}.label-example[data-v-e657da2b]{border-top:1px solid var(--color-border);grid-template-columns:minmax(180px,.8fr) auto minmax(200px,1fr);align-items:center;gap:18px;padding:20px 0 0;display:grid}.label-example>div[data-v-e657da2b]:first-child{gap:4px;display:grid}.label-example>div:first-child span[data-v-e657da2b]{color:var(--color-muted);letter-spacing:.08em;text-transform:uppercase;font-size:12px}.label-example>div:first-child strong[data-v-e657da2b]{color:var(--color-ink);font-size:12px;font-weight:620}.label-example-tags[data-v-e657da2b]{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.label-example>p[data-v-e657da2b]{color:var(--color-muted);font-size:12px;line-height:1.5}.label-all-note[data-v-e657da2b]{color:var(--color-muted);margin:0;font-size:12px;line-height:1.5}@media (width<=720px){.label-dimension-strip[data-v-e657da2b]{grid-template-columns:1fr}.label-dimension-strip article+article[data-v-e657da2b]{border-top:1px solid var(--color-border);border-left:0}.label-guide-sheet[data-v-e657da2b]{gap:34px;margin-top:32px}.label-guide-section[data-v-e657da2b]{grid-template-columns:1fr;gap:16px}.status-definition-table thead[data-v-e657da2b]{display:none}.status-definition-table[data-v-e657da2b],.status-definition-table tbody[data-v-e657da2b],.status-definition-table tr[data-v-e657da2b],.status-definition-table th[data-v-e657da2b],.status-definition-table td[data-v-e657da2b]{display:block}.status-definition-table tbody tr[data-v-e657da2b]{padding:15px 0}.status-definition-table tbody tr+tr[data-v-e657da2b]{border-top:1px solid var(--color-border)}.status-definition-table tbody th[data-v-e657da2b],.status-definition-table tbody td[data-v-e657da2b]{border:0;padding:0}.status-definition-table tbody td[data-v-e657da2b]{margin-top:9px}.status-definition-table tbody td[data-v-e657da2b]:before{color:var(--color-muted);content:attr(data-label);margin-bottom:2px;font-size:12px;font-weight:650;display:block}.label-example[data-v-e657da2b]{grid-template-columns:1fr;gap:12px}.label-example-tags[data-v-e657da2b]{justify-content:flex-start}}.open-source-credits[data-v-c9330c37]{min-width:0}.credit-grid[data-v-c9330c37]{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:24px 0 0;padding:0;list-style:none;display:grid}.credit-grid>li[data-v-c9330c37]{display:flex}.credit-card[data-v-c9330c37]{border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);min-height:84px;color:inherit;transition:border-color var(--motion-fast), transform var(--motion-fast) var(--motion-ease);flex:1;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:12px;padding:16px;text-decoration:none;display:grid;position:relative}.credit-card[data-v-c9330c37]:hover{border-color:var(--color-border-strong);transform:translateY(-2px)}.credit-card[data-v-c9330c37]:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.credit-mark[data-v-c9330c37]{background:var(--color-surface-subtle);border-radius:12px;place-items:center;width:44px;height:44px;display:grid}.credit-mark img[data-v-c9330c37]{object-fit:contain;width:30px;height:30px}.credit-mark.is-fallback[data-v-c9330c37]{color:var(--color-accent);background:var(--color-accent-soft);font-size:18px;font-weight:700}.credit-copy[data-v-c9330c37]{gap:3px;min-width:0;display:grid}.credit-copy strong[data-v-c9330c37],.credit-copy small[data-v-c9330c37]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.credit-copy strong[data-v-c9330c37]{color:var(--color-ink);font-size:14px;font-weight:650;line-height:1.3}.credit-copy small[data-v-c9330c37]{color:var(--color-muted);font-size:12px;line-height:1.4}.credit-arrow[data-v-c9330c37]{color:var(--color-accent);opacity:0;transition:opacity var(--motion-fast);font-size:13px;position:absolute;top:10px;right:12px}.credit-card:hover .credit-arrow[data-v-c9330c37],.credit-card:focus-visible .credit-arrow[data-v-c9330c37]{opacity:1}.credit-source-note[data-v-c9330c37]{color:var(--color-muted);margin-top:18px;font-size:12px;line-height:1.55}.fuli-finale[data-v-c9330c37]{border-top:1px solid var(--color-border);text-align:center;justify-items:center;gap:16px;margin-top:88px;padding-top:72px;display:grid}.finale-logo-plate[data-v-c9330c37]{background:var(--color-surface-subtle);border-radius:50%;place-items:center;width:72px;height:72px;display:grid}.finale-logo-plate img[data-v-c9330c37]{object-fit:contain;width:50px;height:50px}.finale-brand[data-v-c9330c37]{gap:4px;display:grid}.finale-brand strong[data-v-c9330c37]{color:var(--color-ink);letter-spacing:-.03em;font-size:24px;font-weight:650}.finale-brand span[data-v-c9330c37]{color:var(--color-muted);letter-spacing:.08em;text-transform:uppercase;font-size:12px}.fuli-finale>p[data-v-c9330c37]{max-width:420px;color:var(--color-muted);font-size:14px;line-height:1.65}.finale-site-link[data-v-c9330c37]{border-bottom:1px solid var(--color-accent);color:var(--color-accent);margin-top:4px;padding-bottom:4px;font-size:13px;text-decoration:none}.finale-site-link[data-v-c9330c37]:hover{border-color:var(--color-accent-hover);color:var(--color-accent-hover)}.finale-site-link[data-v-c9330c37]:focus-visible{outline:2px solid var(--color-accent);outline-offset:5px}@media (width<=980px){.credit-grid[data-v-c9330c37]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (prefers-reduced-motion:reduce){.credit-card[data-v-c9330c37]:hover{transform:none}}:root[data-motion=reduced] .credit-card[data-v-c9330c37]:hover{transform:none}@media (width<=680px){.credit-grid[data-v-c9330c37]{grid-template-columns:1fr}.credits-heading[data-v-c9330c37]{gap:12px}.fuli-finale[data-v-c9330c37]{margin-top:64px;padding-top:56px}}.product-principles[data-v-caaf4c60]{min-width:0}.principle-sequence[data-v-caaf4c60]{display:grid}.principle-sequence article[data-v-caaf4c60]{border-bottom:1px solid var(--color-border);grid-template-columns:34px minmax(0,1fr);align-content:start;gap:16px;padding:22px 0;display:grid}.principle-sequence article>span[data-v-caaf4c60]{color:var(--color-accent);letter-spacing:.06em;padding-top:3px;font-size:12px;font-weight:650}.principle-sequence h3[data-v-caaf4c60],.principle-boundaries h4[data-v-caaf4c60]{color:var(--color-ink);margin:0;font-size:15px;font-weight:680}.principle-sequence p[data-v-caaf4c60],.principle-boundaries p[data-v-caaf4c60]{color:var(--color-muted);margin-top:9px;font-size:13px;line-height:1.7}.principle-boundaries[data-v-caaf4c60]{padding-top:30px}.principle-boundaries>h3[data-v-caaf4c60]{color:var(--color-ink);margin:0;font-size:14px;font-weight:650}.principle-boundaries>div[data-v-caaf4c60]{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:18px;display:grid}.principle-boundaries article[data-v-caaf4c60]{min-width:0;padding:0 20px}.principle-boundaries article[data-v-caaf4c60]:first-child{padding-left:0}.principle-boundaries article[data-v-caaf4c60]:last-child{padding-right:0}.principle-boundaries article+article[data-v-caaf4c60]{border-left:1px solid var(--color-border)}.principle-boundaries i[data-v-caaf4c60]{border:1.5px solid var(--color-muted);border-radius:50%;width:8px;height:8px;margin-bottom:12px;display:inline-block}.principle-boundaries i[data-boundary=authority][data-v-caaf4c60]{border-radius:2px}.principle-boundaries i[data-boundary=scope][data-v-caaf4c60]{border-radius:1px;transform:rotate(45deg)}@media (width<=680px){.principle-sequence article[data-v-caaf4c60]{gap:12px;padding:20px 0}.principle-boundaries>div[data-v-caaf4c60]{grid-template-columns:1fr;gap:20px}.principle-boundaries article[data-v-caaf4c60]{padding:0}.principle-boundaries article+article[data-v-caaf4c60]{border-top:1px solid var(--color-border);border-left:0;padding-top:20px}}.about-view[data-v-473e14a6]{color:var(--color-ink);scrollbar-gutter:stable;padding-top:clamp(24px,4vw,48px);padding-bottom:96px}.about-content[data-v-473e14a6]{width:100%;max-width:var(--layout-max);gap:72px;margin:0 auto;display:grid}.about-opening[data-v-473e14a6]{border-bottom:1px solid var(--color-border);text-align:center;justify-items:center;gap:20px;padding:8px 0 56px;display:grid}.about-brand-lockup[data-v-473e14a6]{justify-items:center;gap:11px;display:grid}.about-logo-plate[data-v-473e14a6]{background:var(--color-surface-subtle);border-radius:50%;place-items:center;width:68px;height:68px;display:grid}.about-logo-plate img[data-v-473e14a6]{object-fit:contain;width:48px;height:48px}.about-brand-name[data-v-473e14a6]{color:var(--color-ink);letter-spacing:-.02em;font-size:18px;font-weight:700}.about-opening-claim[data-v-473e14a6]{max-width:660px;color:var(--color-ink);letter-spacing:-.035em;text-wrap:balance;font-size:clamp(26px,4.2vw,36px);font-weight:650;line-height:1.18}.about-opening-copy[data-v-473e14a6]{max-width:620px;color:var(--color-muted);font-size:15px;line-height:1.8}.about-labels-section[data-v-473e14a6]{gap:32px;display:grid}@media (width<=680px){.about-view[data-v-473e14a6]{padding-top:32px;padding-bottom:64px}.about-content[data-v-473e14a6]{gap:56px}.about-opening[data-v-473e14a6]{padding-bottom:44px}.about-opening-copy[data-v-473e14a6]{font-size:14px}}
@@ -0,0 +1 @@
1
+ import{A as e,C as t,D as n,Dt as r,J as i,M as a,Mt as o,X as s,b as c,gt as l,k as u,kt as d,s as f,t as p,w as m}from"./_plugin-vue_export-helper-BmfQlfI8.js";import{t as h}from"./fuli-logo-Bu9WBuQe.js";var g={class:`about-section-heading`},ee=[`id`],_=p(a({__name:`AboutSectionHeading`,props:{titleId:{},title:{},description:{}},setup(e){return(t,r)=>(i(),n(`header`,g,[m(`h2`,{id:e.titleId},o(e.title),9,ee),m(`p`,null,o(e.description),1)]))}}),[[`__scopeId`,`data-v-99ca5811`]]),v=[`aria-label`],y={class:`label-dimension-strip`},b=[`data-dimension`],x={class:`label-guide-sheet`},S={class:`label-guide-section profile-guide`},C={class:`label-definition-list`},w=[`data-kind`],T={class:`label-guide-section quadrant-guide`},E={class:`quadrant-explainer`},D={class:`quadrant-y-axis`,"aria-hidden":`true`},O=[`aria-label`],k=[`data-quadrant`],A={class:`quadrant-x-axis`,"aria-hidden":`true`},j={class:`quadrant-notes`},M={class:`label-guide-section confirmation-guide`},N={class:`status-table-wrap`},P={class:`status-definition-table`},F={scope:`col`},I={scope:`col`},L={scope:`col`},R={scope:`row`},z=[`data-status`],B=[`data-label`],V=[`data-label`],H={class:`status-boundaries`},U={class:`label-example`},W={class:`label-example-tags`,"aria-hidden":`true`},te={class:`label-token profile-token`,"data-kind":`taste`},G={class:`label-token origin-token`},K={class:`label-token status-token`,"data-status":`confirmed`},q={class:`label-all-note`},J=p(a({__name:`LabelGuide`,setup(e){let a=t(()=>[{key:`profile`,title:f(`about.dimensions.profile.title`),question:f(`about.dimensions.profile.question`),timing:f(`about.dimensions.profile.timing`)},{key:`origin`,title:f(`about.dimensions.origin.title`),question:f(`about.dimensions.origin.question`),timing:f(`about.dimensions.origin.timing`)},{key:`confirmation`,title:f(`about.dimensions.confirmation.title`),question:f(`about.dimensions.confirmation.question`),timing:f(`about.dimensions.confirmation.timing`)}]),l=t(()=>[{key:`taste`,label:f(`about.profiles.taste.label`),short:f(`about.profiles.taste.short`),description:f(`about.profiles.taste.description`)},{key:`personality`,label:f(`about.profiles.personality.label`),short:f(`about.profiles.personality.short`),description:f(`about.profiles.personality.description`)},{key:`judgment`,label:f(`about.profiles.judgment.label`),short:f(`about.profiles.judgment.short`),description:f(`about.profiles.judgment.description`)}]),d=t(()=>[{key:`known-unknown`,label:f(`about.quadrants.knownUnknown.label`),coordinate:f(`about.quadrants.knownUnknown.coordinate`),description:f(`about.quadrants.knownUnknown.description`)},{key:`known-known`,label:f(`about.quadrants.knownKnown.label`),coordinate:f(`about.quadrants.knownKnown.coordinate`),description:f(`about.quadrants.knownKnown.description`)},{key:`unknown-unknown`,label:f(`about.quadrants.unknownUnknown.label`),coordinate:f(`about.quadrants.unknownUnknown.coordinate`),description:f(`about.quadrants.unknownUnknown.description`)},{key:`unknown-known`,label:f(`about.quadrants.unknownKnown.label`),coordinate:f(`about.quadrants.unknownKnown.coordinate`),description:f(`about.quadrants.unknownKnown.description`)}]),p=t(()=>[{key:`pending`,label:f(`about.statuses.pending.label`),description:f(`about.statuses.pending.description`),rule:f(`about.statuses.pending.rule`)},{key:`agent-confirmed`,label:f(`about.statuses.agentConfirmed.label`),description:f(`about.statuses.agentConfirmed.description`),rule:f(`about.statuses.agentConfirmed.rule`)},{key:`confirmed`,label:f(`about.statuses.confirmed.label`),description:f(`about.statuses.confirmed.description`),rule:f(`about.statuses.confirmed.rule`)}]);return(e,t)=>(i(),n(`section`,{class:`label-guide`,"aria-label":r(f)(`about.labelsAria`)},[m(`div`,y,[(i(!0),n(c,null,s(a.value,e=>(i(),n(`article`,{key:e.key,"data-dimension":e.key},[t[0]||=m(`i`,{"aria-hidden":`true`},null,-1),m(`dl`,null,[m(`dt`,null,o(e.title),1),m(`dd`,null,[u(o(e.question)+` `,1),m(`small`,null,o(e.timing),1)])])],8,b))),128))]),m(`div`,x,[m(`section`,S,[m(`header`,null,[m(`span`,null,o(r(f)(`about.sections.profile.index`)),1),m(`div`,null,[m(`h3`,null,o(r(f)(`about.sections.profile.title`)),1),m(`p`,null,o(r(f)(`about.sections.profile.meta`)),1)])]),m(`dl`,C,[(i(!0),n(c,null,s(l.value,e=>(i(),n(`div`,{key:e.key,class:`label-definition-row`},[m(`dt`,null,[m(`span`,{class:`label-token profile-token`,"data-kind":e.key},o(e.label),9,w)]),m(`dd`,null,[m(`strong`,null,o(e.short),1),m(`p`,null,o(e.description),1)])]))),128))])]),m(`section`,T,[m(`header`,null,[m(`span`,null,o(r(f)(`about.sections.origin.index`)),1),m(`div`,null,[m(`h3`,null,o(r(f)(`about.sections.origin.title`)),1),m(`p`,null,o(r(f)(`about.sections.origin.meta`)),1)])]),m(`div`,E,[m(`div`,D,[m(`span`,null,o(r(f)(`about.quadrants.aware`)),1),m(`strong`,null,o(r(f)(`about.quadrants.awareness`)),1),m(`span`,null,o(r(f)(`about.quadrants.unaware`)),1)]),m(`div`,{class:`quadrant-grid`,role:`group`,"aria-label":r(f)(`about.sections.origin.title`)},[(i(!0),n(c,null,s(d.value,e=>(i(),n(`article`,{key:e.key,"data-quadrant":e.key},[m(`span`,null,o(e.coordinate),1),m(`strong`,null,o(e.label),1),m(`p`,null,o(e.description),1)],8,k))),128))],8,O),m(`div`,A,[m(`span`,null,o(r(f)(`about.quadrants.unmastered`)),1),m(`strong`,null,o(r(f)(`about.quadrants.mastery`)),1),m(`span`,null,o(r(f)(`about.quadrants.mastered`)),1)]),m(`div`,j,[m(`p`,null,o(r(f)(`about.quadrants.immutable`)),1),m(`p`,null,o(r(f)(`about.quadrants.unclassified`)),1)])])]),m(`section`,M,[m(`header`,null,[m(`span`,null,o(r(f)(`about.sections.confirmation.index`)),1),m(`div`,null,[m(`h3`,null,o(r(f)(`about.sections.confirmation.title`)),1),m(`p`,null,o(r(f)(`about.sections.confirmation.meta`)),1)])]),m(`div`,N,[m(`table`,P,[m(`thead`,null,[m(`tr`,null,[m(`th`,F,o(r(f)(`about.sections.confirmation.title`)),1),m(`th`,I,o(r(f)(`about.statuses.descriptionHeader`)),1),m(`th`,L,o(r(f)(`about.statuses.entryCondition`)),1)])]),m(`tbody`,null,[(i(!0),n(c,null,s(p.value,e=>(i(),n(`tr`,{key:e.key,class:`status-definition-row`},[m(`th`,R,[m(`span`,{class:`label-token status-token`,"data-status":e.key},o(e.label),9,z)]),m(`td`,{"data-label":r(f)(`about.statuses.descriptionHeader`)},o(e.description),9,B),m(`td`,{"data-label":r(f)(`about.statuses.entryCondition`)},[m(`strong`,null,o(e.rule),1)],8,V)]))),128))])]),m(`div`,H,[m(`p`,null,o(r(f)(`about.statuses.usageBoundary`)),1),m(`p`,null,o(r(f)(`about.statuses.resetBoundary`)),1)])])]),m(`section`,U,[m(`div`,null,[m(`span`,null,o(r(f)(`about.example.title`)),1),m(`strong`,null,o(r(f)(`about.example.item`)),1)]),m(`div`,W,[m(`span`,te,o(r(f)(`about.example.profile`)),1),m(`span`,G,o(r(f)(`about.example.origin`)),1),m(`span`,K,o(r(f)(`about.example.status`)),1)]),m(`p`,null,o(r(f)(`about.example.description`)),1)]),m(`p`,q,o(r(f)(`about.allFilter`)),1)])],8,v))}}),[[`__scopeId`,`data-v-e657da2b`]]),Y={class:`open-source-credits`,"aria-labelledby":`credits-title`},X={class:`credit-grid`},Z=[`href`,`data-credit`],Q=[`src`,`onError`],ne={key:1,"aria-hidden":`true`},re={class:`credit-copy`},ie=[`title`],ae={class:`credit-source-note`},oe={class:`fuli-finale`},se={class:`finale-logo-plate`},ce=[`src`],le={class:`finale-brand`},ue={class:`finale-site-link`,"data-testid":`about-website-link`,href:`https://xn--8ovp9s.xn--m8txu.com/fuli/`,target:`_blank`,rel:`noreferrer`},de=p(a({__name:`OpenSourceCredits`,setup(a){let u=l(new Set),p=t(()=>[{name:`Vue.js`,role:f(`about.credits.roles.vue`),url:`https://vuejs.org/`,logo:`https://raw.githubusercontent.com/vuejs/docs/main/src/public/logo.svg`},{name:`Vite`,role:f(`about.credits.roles.vite`),url:`https://vite.dev/`,logo:`https://raw.githubusercontent.com/vitejs/vite/main/docs/public/logo-without-border.svg`},{name:`Pinia`,role:f(`about.credits.roles.pinia`),url:`https://pinia.vuejs.org/`,logo:`https://raw.githubusercontent.com/vuejs/pinia/v4/packages/docs/public/logo.svg`},{name:`D3.js`,role:f(`about.credits.roles.d3`),url:`https://d3js.org/`,logo:`https://raw.githubusercontent.com/d3/d3-logo/master/d3.svg`},{name:`Vitest`,role:f(`about.credits.roles.vitest`),url:`https://vitest.dev/`,logo:`https://raw.githubusercontent.com/vitest-dev/vitest/main/docs/public/logo-without-border.svg`},{name:`Hono`,role:f(`about.credits.roles.hono`),url:`https://hono.dev/`,logo:`https://raw.githubusercontent.com/honojs/website/main/public/images/logo.svg`},{name:`Neo4j`,role:f(`about.credits.roles.neo4j`),url:`https://neo4j.com/`,logo:`https://avatars.githubusercontent.com/u/201120?v=4`},{name:`Zod`,role:f(`about.credits.roles.zod`),url:`https://zod.dev/`,logo:`https://raw.githubusercontent.com/colinhacks/zod/main/packages/docs/public/logo/logo_square.png`},{name:`FastAPI`,role:f(`about.credits.roles.fastapi`),url:`https://fastapi.tiangolo.com/`,logo:`https://raw.githubusercontent.com/fastapi/fastapi/master/docs/en/docs/img/favicon.png`},{name:`Graphiti`,role:f(`about.credits.roles.graphiti`),url:`https://github.com/getzep/graphiti`,logo:`https://avatars.githubusercontent.com/u/132832125?s=128&v=4`},{name:`MCP`,role:f(`about.credits.roles.mcp`),url:`https://modelcontextprotocol.io/`,logo:`https://raw.githubusercontent.com/modelcontextprotocol/docs/main/favicon.svg`}]);return(t,a)=>(i(),n(`section`,Y,[e(_,{"title-id":`credits-title`,title:r(f)(`about.credits.title`),description:r(f)(`about.credits.description`)},null,8,[`title`,`description`]),m(`ul`,X,[(i(!0),n(c,null,s(p.value,e=>(i(),n(`li`,{key:e.name},[m(`a`,{class:`credit-card`,href:e.url,target:`_blank`,rel:`noreferrer`,"data-credit":e.name},[m(`span`,{class:d([`credit-mark`,{"is-fallback":u.has(e.name)}])},[u.has(e.name)?(i(),n(`span`,ne,o(e.name.charAt(0)),1)):(i(),n(`img`,{key:0,src:e.logo,alt:``,loading:`lazy`,referrerpolicy:`no-referrer`,onError:t=>u.add(e.name)},null,40,Q))],2),m(`span`,re,[m(`strong`,{title:e.name},o(e.name),9,ie),m(`small`,null,o(e.role),1)]),a[0]||=m(`span`,{class:`credit-arrow`,"aria-hidden":`true`},`↗`,-1)],8,Z)]))),128))]),m(`p`,ae,o(r(f)(`about.credits.sourceNote`)),1),m(`footer`,oe,[m(`span`,se,[m(`img`,{src:r(h),alt:``,"aria-hidden":`true`},null,8,ce)]),m(`div`,le,[m(`strong`,null,o(r(f)(`common.brand`)),1),a[1]||=m(`span`,null,`Context Graph`,-1)]),m(`p`,null,o(r(f)(`about.credits.finale`)),1),m(`a`,ue,o(r(f)(`about.credits.website`)),1)])]))}}),[[`__scopeId`,`data-v-c9330c37`]]),fe={class:`product-principles`,"aria-labelledby":`principles-title`},pe={class:`principle-sequence`},me={class:`principle-boundaries`},he=[`data-boundary`],ge=p(a({__name:`ProductPrinciples`,setup(a){let l=t(()=>[{key:`capture`,index:f(`about.philosophy.capture.index`),title:f(`about.philosophy.capture.title`),description:f(`about.philosophy.capture.description`)},{key:`project`,index:f(`about.philosophy.project.index`),title:f(`about.philosophy.project.title`),description:f(`about.philosophy.project.description`)},{key:`review`,index:f(`about.philosophy.review.index`),title:f(`about.philosophy.review.title`),description:f(`about.philosophy.review.description`)},{key:`reuse`,index:f(`about.philosophy.reuse.index`),title:f(`about.philosophy.reuse.title`),description:f(`about.philosophy.reuse.description`)}]),u=t(()=>[{key:`local`,title:f(`about.philosophy.local.title`),description:f(`about.philosophy.local.description`)},{key:`authority`,title:f(`about.philosophy.authority.title`),description:f(`about.philosophy.authority.description`)},{key:`scope`,title:f(`about.philosophy.scope.title`),description:f(`about.philosophy.scope.description`)}]);return(t,a)=>(i(),n(`section`,fe,[e(_,{"title-id":`principles-title`,title:r(f)(`about.philosophy.sectionTitle`),description:r(f)(`about.philosophy.support`)},null,8,[`title`,`description`]),m(`div`,pe,[(i(!0),n(c,null,s(l.value,e=>(i(),n(`article`,{key:e.key},[m(`span`,null,o(e.index),1),m(`div`,null,[m(`h3`,null,o(e.title),1),m(`p`,null,o(e.description),1)])]))),128))]),m(`div`,me,[m(`h3`,null,o(r(f)(`about.philosophy.boundariesTitle`)),1),m(`div`,null,[(i(!0),n(c,null,s(u.value,e=>(i(),n(`article`,{key:e.key},[m(`i`,{"data-boundary":e.key,"aria-hidden":`true`},null,8,he),m(`h4`,null,o(e.title),1),m(`p`,null,o(e.description),1)]))),128))])])]))}}),[[`__scopeId`,`data-v-caaf4c60`]]),_e=[`aria-label`],ve={class:`about-content`},ye={class:`about-opening`},be={class:`about-brand-lockup`},$={class:`about-logo-plate`},xe=[`src`],Se={class:`about-brand-name`},Ce={class:`about-opening-claim`},we={class:`about-opening-copy`},Te={class:`about-labels-section`,"aria-labelledby":`about-labels-title`},Ee=p(a({__name:`AboutPage`,setup(t){return(t,a)=>(i(),n(`section`,{class:`view about-view`,"aria-label":r(f)(`about.aria`)},[m(`div`,ve,[m(`header`,ye,[m(`div`,be,[m(`span`,$,[m(`img`,{"data-testid":`about-opening-logo`,src:r(h),alt:``,"aria-hidden":`true`},null,8,xe)]),m(`span`,Se,o(r(f)(`common.brand`)),1)]),m(`p`,Ce,o(r(f)(`about.philosophy.title`)),1),m(`p`,we,o(r(f)(`about.philosophy.intro`)),1)]),e(ge),m(`section`,Te,[e(_,{"title-id":`about-labels-title`,title:r(f)(`about.labelsIntro.title`),description:r(f)(`about.labelsIntro.description`)},null,8,[`title`,`description`]),e(J)]),e(de)])],8,_e))}}),[[`__scopeId`,`data-v-473e14a6`]]);export{Ee as default};
@@ -0,0 +1 @@
1
+ import{Dt as e,J as t,M as n,Mt as r,T as i,k as a,ot as o,t as s}from"./_plugin-vue_export-helper-BmfQlfI8.js";import{t as c}from"./vue-router-Bl55c88B.js";import{n as l}from"./profile-model-kCmPHrmk.js";var u=s(n({__name:`AgentName`,props:{spaceId:{},agentId:{},name:{}},setup(n){return(s,u)=>(t(),i(e(c),{class:`agent-name-link`,to:e(l)(n.spaceId,n.agentId)},{default:o(()=>[a(r(n.name),1)]),_:1},8,[`to`]))}}),[[`__scopeId`,`data-v-4c868995`]]);export{u as t};