fuli-context 0.7.10-beta.0 → 0.8.0

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 (174) hide show
  1. package/README.md +5 -2
  2. package/README.zh-CN.md +5 -3
  3. package/dist/web/assets/{AboutPage-BvXH4hsO.js → AboutPage-BjMmpwJB.js} +1 -1
  4. package/dist/web/assets/AboutPage-vYIBifKw.css +1 -0
  5. package/dist/web/assets/AgentHand-BfLYPGjg.js +1 -0
  6. package/dist/web/assets/AgentHand-D9sQu2vc.css +1 -0
  7. package/dist/web/assets/ConnectionsPage-BKGxFDos.js +1 -0
  8. package/dist/web/assets/EmployeeRecruitDialog-B59X3rOi.css +1 -0
  9. package/dist/web/assets/EmployeeRecruitDialog-D-W043v4.js +1 -0
  10. package/dist/web/assets/EmployeeWorkbenchPage-Cz7y-IFD.css +1 -0
  11. package/dist/web/assets/EmployeeWorkbenchPage-HHQPxdqI.js +3 -0
  12. package/dist/web/assets/GrowthLoading-B_Hh0CRS.css +1 -0
  13. package/dist/web/assets/GrowthLoading-WXCj8b0r.js +1 -0
  14. package/dist/web/assets/KnowledgeEditDialog-Bkie08ZA.js +1 -0
  15. package/dist/web/assets/KnowledgeEditDialog-D9NuRHvp.css +1 -0
  16. package/dist/web/assets/KnowledgeInspector-Cez-Z_95.js +1 -0
  17. package/dist/web/assets/KnowledgeOrganizerPage-BYmTPA_8.js +1 -0
  18. package/dist/web/assets/KnowledgeOrganizerPage-h2iKvQpO.css +1 -0
  19. package/dist/web/assets/KnowledgePage-Ck7tIBDn.js +1 -0
  20. package/dist/web/assets/KnowledgeWorkspace-DKij2_B4.js +4 -0
  21. package/dist/web/assets/KnowledgeWorkspace-sb8OJ97I.css +1 -0
  22. package/dist/web/assets/NotFoundPage-HGV-q-bh.js +1 -0
  23. package/dist/web/assets/{OverviewPage-D4vLhIFD.js → OverviewPage-DE29_F_Y.js} +1 -1
  24. package/dist/web/assets/PersonalProfilePage-B95DFc7x.js +1 -0
  25. package/dist/web/assets/PersonalProfilePage-L8T5xMEC.css +1 -0
  26. package/dist/web/assets/PersonalProjectsPage-Bt7tFF5Z.js +1 -0
  27. package/dist/web/assets/ProjectAgentsPage-BioDR9OW.css +1 -0
  28. package/dist/web/assets/ProjectAgentsPage-CiiPNe_G.js +12 -0
  29. package/dist/web/assets/ProjectScopePicker-BvaGTMFx.css +1 -0
  30. package/dist/web/assets/ProjectScopePicker-Cu5PdxF6.js +1 -0
  31. package/dist/web/assets/PublicProjectsPage-BY4B3_t3.js +1 -0
  32. package/dist/web/assets/ReviewPage-C9vCesNu.js +1 -0
  33. package/dist/web/assets/{SearchableSelect-DY-TWC2i.js → SearchableSelect-214TvfYg.js} +1 -1
  34. package/dist/web/assets/SettingsPage-Brl-SL33.css +1 -0
  35. package/dist/web/assets/SettingsPage-D9TnzcFc.js +1 -0
  36. package/dist/web/assets/SharedJefaReportPage-CdSGI_OE.js +1 -0
  37. package/dist/web/assets/SharedJefaReportPage-DXbj_JhO.css +1 -0
  38. package/dist/web/assets/WritingTastePage-Bzg6AvnB.css +1 -0
  39. package/dist/web/assets/WritingTastePage-CUE1dU8f.js +1 -0
  40. package/dist/web/assets/bole-avatar-CVIr-bU_.webp +0 -0
  41. package/dist/web/assets/client-Bl4oiW3E.js +1 -0
  42. package/dist/web/assets/console-BAIVNC-N.js +1 -0
  43. package/dist/web/assets/conversation-launcher-settings-DpRI_Jp2.js +1 -0
  44. package/dist/web/assets/employee-dialog-Bh5ccIbK.css +1 -0
  45. package/dist/web/assets/{i18n-C7r_00q2.js → i18n-CVFADb_M.js} +3 -3
  46. package/dist/web/assets/{identity-COvBmUF4.js → identity-Dt0WZgqo.js} +1 -1
  47. package/dist/web/assets/index-BUMq5zNh.js +2 -0
  48. package/dist/web/assets/index-C0ci8dnU.css +1 -0
  49. package/dist/web/assets/{model-CL1JILt4.js → model-B8sOxih0.js} +1 -1
  50. package/dist/web/assets/personal-profile-graph-aAqex7ty.js +1 -0
  51. package/dist/web/assets/shared-report-BQD6l_cS.js +1 -0
  52. package/dist/web/assets/shared-report-ezeb8dW4.css +1 -0
  53. package/dist/web/assets/{useApi-CROJJdhE-DERnOR_k.js → useApi-CROJJdhE-CuJ16v2S.js} +1 -1
  54. package/dist/web/assets/useModalDialog-Ddv2XJQi.js +1 -0
  55. package/dist/web/assets/{vue-router-DJ6C6-8v.js → vue-router-C8KuEZ6a.js} +1 -1
  56. package/dist/web/index.html +14 -8
  57. package/docs/agent-interface-architecture.md +97 -0
  58. package/docs/employee-agents.md +58 -2
  59. package/docs/project-agent-memory.md +69 -449
  60. package/graph-provider/fuli_graph/app.py +2 -0
  61. package/graph-provider/fuli_graph/collaboration_context.py +2 -1
  62. package/graph-provider/fuli_graph/graph_models.py +5 -3
  63. package/graph-provider/fuli_graph/graph_query.py +4 -0
  64. package/graph-provider/fuli_graph/knowledge_search.py +2 -1
  65. package/graph-provider/fuli_graph/preference_conflicts.py +4 -1
  66. package/graph-provider/fuli_graph/project_agent_access.py +2 -0
  67. package/graph-provider/fuli_graph/project_agent_attention_models.py +64 -0
  68. package/graph-provider/fuli_graph/project_agent_attention_routes.py +38 -0
  69. package/graph-provider/fuli_graph/project_agent_coordination_models.py +23 -1
  70. package/graph-provider/fuli_graph/project_agent_memory_models.py +11 -0
  71. package/graph-provider/fuli_graph/project_agent_models.py +2 -0
  72. package/graph-provider/fuli_graph/project_agent_names.py +33 -0
  73. package/graph-provider/fuli_graph/project_agent_routes.py +12 -0
  74. package/graph-provider/fuli_graph/project_agent_team_growth.py +56 -0
  75. package/graph-provider/fuli_graph/project_agent_work_log.py +34 -0
  76. package/graph-provider/fuli_graph/runtime.py +49 -20
  77. package/graph-provider/fuli_graph/store.py +2 -0
  78. package/graph-provider/fuli_graph/store_knowledge.py +4 -2
  79. package/graph-provider/fuli_graph/store_project_agent_attention.py +138 -0
  80. package/graph-provider/fuli_graph/store_project_agent_coordination_policy.py +56 -2
  81. package/graph-provider/fuli_graph/store_project_agent_executor_learning.py +8 -0
  82. package/graph-provider/fuli_graph/store_project_agent_memory.py +43 -13
  83. package/graph-provider/fuli_graph/store_project_agent_task_activity.py +1 -1
  84. package/graph-provider/fuli_graph/store_project_agent_task_recruitment.py +6 -1
  85. package/graph-provider/fuli_graph/store_project_agent_task_staffing.py +21 -3
  86. package/graph-provider/fuli_graph/store_project_agent_tasks.py +4 -0
  87. package/graph-provider/fuli_graph/store_project_agents.py +109 -0
  88. package/graph-provider/fuli_graph/store_task_contexts.py +12 -2
  89. package/graph-provider/fuli_graph/system_hr_identity.py +218 -0
  90. package/graph-provider/fuli_graph/task_context_adoption.py +65 -0
  91. package/graph-provider/fuli_graph/task_context_models.py +23 -1
  92. package/graph-provider/fuli_graph/task_context_routes.py +5 -1
  93. package/graph-provider/pyproject.toml +1 -1
  94. package/npm-shrinkwrap.json +52 -60
  95. package/package.json +2 -2
  96. package/skills/operating-fuli/SKILL.md +47 -0
  97. package/skills/operating-fuli/agents/openai.yaml +4 -0
  98. package/skills/operating-fuli/references/workflow-recipes.md +33 -0
  99. package/src/agent-tools/agent-attention-definitions.js +33 -0
  100. package/src/agent-tools/graph-definitions.js +22 -7
  101. package/src/agent-tools/graph-handlers.js +41 -0
  102. package/src/agent-tools/interface-catalog.js +101 -0
  103. package/src/agent-tools/interface-definitions.js +184 -0
  104. package/src/agent-tools/project-agent-definitions.js +2 -0
  105. package/src/agents/codex/lifecycle-hook.js +1 -0
  106. package/src/cli/local-runtime-command.js +2 -1
  107. package/src/cli/setup-command.js +1 -1
  108. package/src/employees/catalog/bole.json +19 -0
  109. package/src/employees/install-package.js +3 -0
  110. package/src/employees/manifest.js +4 -0
  111. package/src/employees/package-registry.js +2 -0
  112. package/src/employees/recruitment.js +3 -0
  113. package/src/employees/service.js +10 -0
  114. package/src/external-knowledge/registry.js +24 -0
  115. package/src/external-knowledge/service.js +34 -1
  116. package/src/graphiti/agent-attention.js +26 -0
  117. package/src/graphiti/agent-knowledge-workflows.js +14 -4
  118. package/src/graphiti/project-agent-control-plane.js +30 -0
  119. package/src/graphiti/project-agent-mapping.js +18 -1
  120. package/src/graphiti/project-agent-memory.js +10 -2
  121. package/src/graphiti/project-agent-task-entry.js +4 -1
  122. package/src/graphiti/project-agent-team-context.js +21 -0
  123. package/src/graphiti/project-agent-workflows.js +18 -0
  124. package/src/graphiti/provider-client.js +20 -1
  125. package/src/graphiti/workspace-provider-client.js +9 -1
  126. package/src/graphiti/writing-taste-profile-workflow.js +62 -9
  127. package/src/graphiti/writing-taste-profile.js +43 -16
  128. package/src/http/agent-attention-api-router.js +28 -0
  129. package/src/http/error-mapping.js +3 -0
  130. package/src/http/graph-api-router.js +11 -0
  131. package/src/local-runtime/lifecycle.js +8 -2
  132. package/src/mcp/create-mcp-server.js +15 -4
  133. package/src/mcp/instructions.js +3 -3
  134. package/src/mcp/provider-task-context-registry.js +11 -1
  135. package/src/mcp/task-context-registry.js +2 -1
  136. package/src/mcp/tool-annotations.js +31 -0
  137. package/src/mcp/tool-result.js +11 -7
  138. package/src/setup/agent-installation-status.js +2 -1
  139. package/src/setup/agents.js +4 -0
  140. package/src/setup/graph-runtime.js +4 -0
  141. package/src/setup/paths.js +2 -1
  142. package/src/setup/setup.js +4 -2
  143. package/src/setup/uninstall.js +4 -2
  144. package/src/system/resource-monitor.js +11 -1
  145. package/src/system/runtime-settings.js +7 -0
  146. package/dist/web/assets/AboutPage-DXh7Fwxt.css +0 -1
  147. package/dist/web/assets/ConnectionsPage-WVc6Srbd.js +0 -1
  148. package/dist/web/assets/EmployeeRecruitDialog-CnA7rOnB.css +0 -1
  149. package/dist/web/assets/EmployeeRecruitDialog-Dal5wy8a.js +0 -1
  150. package/dist/web/assets/EmployeeWorkbenchPage-BDJvrpcn.css +0 -1
  151. package/dist/web/assets/EmployeeWorkbenchPage-CW5pu_Yb.js +0 -1
  152. package/dist/web/assets/KnowledgeEditDialog-BBvm74ln.js +0 -1
  153. package/dist/web/assets/KnowledgeEditDialog-iv-dgUeD.css +0 -1
  154. package/dist/web/assets/KnowledgeInspector-CE9ADmtT.js +0 -1
  155. package/dist/web/assets/KnowledgeOrganizerPage-BRtizGUS.js +0 -1
  156. package/dist/web/assets/KnowledgeOrganizerPage-Cx1w1jb2.css +0 -1
  157. package/dist/web/assets/KnowledgePage-D5clXGCw.js +0 -1
  158. package/dist/web/assets/KnowledgeWorkspace-CKLH6cIf.js +0 -4
  159. package/dist/web/assets/PersonalProfilePage-7w8rAzkg.js +0 -1
  160. package/dist/web/assets/PersonalProfilePage-B7T09bow.css +0 -1
  161. package/dist/web/assets/PersonalProjectsPage-BY0B1t24.js +0 -1
  162. package/dist/web/assets/ProjectAgentsPage-C3vW6wmk.css +0 -1
  163. package/dist/web/assets/ProjectAgentsPage-LHPOuLWw.js +0 -11
  164. package/dist/web/assets/PublicProjectsPage-PSp6RzVZ.js +0 -1
  165. package/dist/web/assets/ReviewPage-DPP23xLF.js +0 -1
  166. package/dist/web/assets/SettingsPage-C59OPsNP.js +0 -1
  167. package/dist/web/assets/SettingsPage-CwZp2ka4.css +0 -1
  168. package/dist/web/assets/WritingTastePage-DNXhCdgn.js +0 -1
  169. package/dist/web/assets/WritingTastePage-DSgvTH6x.css +0 -1
  170. package/dist/web/assets/avatars-BfZueqlm.js +0 -1
  171. package/dist/web/assets/console-CYXvhGCR.js +0 -1
  172. package/dist/web/assets/conversation-launcher-settings-SwmUP91W.js +0 -1
  173. package/dist/web/assets/index-B-rXoqYP.js +0 -2
  174. package/dist/web/assets/index-Ch1jmkyO.css +0 -1
@@ -0,0 +1 @@
1
+ import{C as e,F as t,N as n,T as r,V as i,Z as a,_ as o,a as s,at as c,b as l,h as u,j as ee,nt as d,rt as f,v as p,w as m,x as h,y as g,z as te}from"./i18n-CVFADb_M.js";import{t as ne}from"./console-BAIVNC-N.js";import{t as _}from"./GrowthLoading-WXCj8b0r.js";import{t as v}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as re}from"./vue-router-C8KuEZ6a.js";import{n as ie}from"./client-Bl4oiW3E.js";import{i as y,n as b,t as x}from"./KnowledgeEditDialog-Bkie08ZA.js";import{u as S,x as ae}from"./model-B8sOxih0.js";import{t as oe}from"./personal-profile-graph-aAqex7ty.js";var se={class:`view writing-taste-view`},ce={key:2,class:`writing-taste-unavailable`},le=[`role`],ue={class:`writing-taste-hero__copy`},de={class:`writing-taste-status`},C={class:`writing-taste-hero__score`,"aria-hidden":`true`},w=[`aria-label`],T={"aria-hidden":`true`},E={class:`writing-taste-rules`},D={key:0,class:`writing-taste-rule-list`},O={class:`writing-taste-rule__status`},k={key:0,class:`conflict`},A={class:`writing-taste-rule__body`},j={key:0},M={key:1},N={key:0},P={key:0,class:`writing-taste-rule__actions`},F=[`onClick`],I=[`onClick`],L={key:1,class:`writing-taste-empty`},R={key:0,class:`writing-taste-agent-preview`},z={key:0},B=v(r({__name:`WritingTastePage`,setup(r){let v=ne(),B=a(null),V=a(null),H=a(!1),U=a(!1),W=a(null),G=a(null),K=a(!1),q=0,J=null,Y=y(o(()=>H.value&&!B.value)),X=o(()=>ae(V.value)),Z=o(()=>new Map(X.value.map(e=>[`${e.itemKind}:${e.id}`,e]))),fe=o(()=>B.value?.status===`active`?s(`writingTaste.page.activeTitle`):B.value?.status===`preview_ready`?s(`writingTaste.page.previewTitle`):s(`writingTaste.page.collectingTitle`)),pe=o(()=>B.value?.status===`active`?s(`writingTaste.page.activeCopy`):B.value?.status===`preview_ready`?s(`writingTaste.page.previewCopy`):s(`writingTaste.page.collectingCopy`));te(()=>v.activePersonalSpace?.id,e=>{B.value=null,V.value=null,W.value=null,G.value=null,K.value=!1,Q(e)},{immediate:!0,flush:`sync`});async function Q(e=v.activePersonalSpace?.id){let t=++q;if(J?.abort(),J=null,U.value=!1,!e){H.value=!1;return}let n=new AbortController;J=n,H.value=!0;try{let r=new URLSearchParams({personalSpaceId:e,limit:`500`}),[i,a]=await Promise.all([ie(`/api/writing-taste-profile?${r}`,{signal:n.signal}),oe(e,n.signal)]);if(t!==q)return;B.value=ye(i)?i:null,V.value=be(a)?a:null,ve()}catch{if(t!==q)return;B.value=null,V.value=null,U.value=!0}finally{t===q&&(H.value=!1,J=null)}}ee(()=>{q+=1,J?.abort()});function $(e){return Z.value.get(`${e.item_kind}:${e.item_id}`)??null}function me(e){W.value=$(e)}function he(e){G.value=$(e)}function ge(e){if(e.preference_scope!==`project`||!e.preference_project_id)return s(`writingTaste.page.globalScope`);let t=v.state?.personalProjects?.find(({project_id:t})=>t===e.preference_project_id);return s(`writingTaste.page.projectScope`,{project:t?.profile.name??e.preference_project_id})}function _e(e){return e.key===`conflicts`?s(`writingTaste.criteria.conflictsProgress`,{current:e.current}):s(`writingTaste.criteria.progress`,{current:e.current,target:e.target})}function ve(){W.value&&=Z.value.get(`${W.value.itemKind}:${W.value.id}`)??null,G.value&&=Z.value.get(`${G.value.itemKind}:${G.value.id}`)??null}function ye(e){if(!e||typeof e!=`object`)return!1;let t=e;return[`collecting`,`preview_ready`,`active`].includes(t.status??``)&&!!t.readiness&&Array.isArray(t.rules)}function be(e){if(!e||typeof e!=`object`)return!1;let t=e;return Array.isArray(t.nodes)&&Array.isArray(t.edges)}return(r,a)=>(n(),h(`section`,se,[m(d(re),{class:`writing-taste-back`,to:`/preferences`},{default:i(()=>[a[6]||=p(`span`,{"aria-hidden":`true`},`←`,-1),e(` `+c(d(s)(`writingTaste.page.back`)),1)]),_:1}),H.value&&!d(Y)?(n(),g(_,{key:0,variant:`inline`,label:d(s)(`writingTaste.page.loading`)},null,8,[`label`])):l(``,!0),d(Y)?(n(),g(_,{key:1,label:d(s)(`writingTaste.page.loading`)},null,8,[`label`])):B.value?(n(),h(u,{key:3},[p(`header`,{class:f([`writing-taste-hero`,`status-${B.value.status}`])},[p(`div`,ue,[p(`span`,de,[a[7]||=p(`i`,{"aria-hidden":`true`},null,-1),e(` `+c(d(s)(`writingTaste.status.${B.value.status}`)),1)]),p(`h2`,null,c(fe.value),1),p(`p`,null,c(pe.value),1)]),p(`div`,C,[p(`strong`,null,c(B.value.readiness.rule_count),1),p(`span`,null,`/ `+c(B.value.readiness.thresholds.rule_count),1),p(`small`,null,c(d(s)(`writingTaste.criteria.rules`)),1)])],2),p(`section`,{class:`writing-taste-readiness`,"aria-label":d(s)(`writingTaste.page.readinessAria`)},[(n(!0),h(u,null,t(B.value.readiness.criteria,e=>(n(),h(`article`,{key:e.key,class:f({met:e.met})},[p(`span`,T,c(e.met?`✓`:`·`),1),p(`div`,null,[p(`strong`,null,c(d(s)(`writingTaste.criteria.${e.key}`)),1),p(`small`,null,c(_e(e)),1)])],2))),128))],8,w),p(`section`,E,[p(`header`,null,[p(`h2`,null,c(d(s)(`writingTaste.page.rulesTitle`)),1),p(`span`,null,c(B.value.rules.length),1)]),B.value.rules.length?(n(),h(`div`,D,[(n(!0),h(u,null,t(B.value.rules,e=>(n(),h(`article`,{key:`${e.item_kind}:${e.item_id}`,class:f([`writing-taste-rule`,{"has-conflict":e.has_conflict,"is-hypothesis":e.evidence_status===`Working hypothesis`}])},[p(`div`,O,[p(`span`,{class:f(e.evidence_status.replaceAll(` `,`-`).toLowerCase())},c(d(s)(`writingTaste.evidenceStatus.${e.evidence_status}`)),3),p(`span`,null,c(ge(e)),1),e.has_conflict?(n(),h(`span`,k,c(d(s)(`writingTaste.page.conflict`)),1)):l(``,!0)]),p(`div`,A,[p(`h3`,null,c(e.title),1),p(`p`,null,c(e.instruction),1),e.reason?(n(),h(`small`,j,c(e.reason),1)):l(``,!0),e.contexts.length?(n(),h(`small`,M,c(d(s)(`writingTaste.page.contexts`,{contexts:e.contexts.join(`、`)})),1)):l(``,!0)]),p(`footer`,null,[p(`div`,null,[p(`span`,null,c(d(s)(`writingTaste.page.evidence`,{evidence:e.evidence_count})),1),p(`span`,null,c(d(s)(`writingTaste.page.sessions`,{sessions:e.session_count})),1),e.updated_at?(n(),h(`span`,N,c(d(s)(`writingTaste.page.updated`,{time:d(S)(e.updated_at)})),1)):l(``,!0)]),$(e)?(n(),h(`div`,P,[p(`button`,{class:`secondary-action`,type:`button`,onClick:t=>he(e)},c(d(s)(`writingTaste.page.edit`)),9,F),e.evidence_status===`Confirmed`?l(``,!0):(n(),h(`button`,{key:0,class:`primary-action`,type:`button`,onClick:t=>me(e)},c(d(s)(`writingTaste.page.confirm`)),9,I))])):l(``,!0)])],2))),128))])):(n(),h(`div`,L,c(d(s)(`writingTaste.page.rulesEmpty`)),1))]),B.value.ready&&B.value.agent_markdown?(n(),h(`section`,R,[p(`div`,null,[p(`h2`,null,c(d(s)(`writingTaste.page.agentPreviewTitle`)),1),p(`p`,null,c(d(s)(`writingTaste.page.agentPreviewCopy`)),1)]),p(`button`,{class:`secondary-action`,type:`button`,onClick:a[1]||=e=>K.value=!K.value},c(K.value?d(s)(`writingTaste.page.hideAgentPreview`):d(s)(`writingTaste.page.showAgentPreview`)),1),K.value?(n(),h(`pre`,z,c(B.value.agent_markdown),1)):l(``,!0)])):l(``,!0)],64)):(n(),h(`div`,ce,[p(`p`,{role:U.value?`alert`:void 0},c(d(s)(U.value?`common.errors.loadFailed`:`writingTaste.page.profileUnavailable`)),9,le),d(v).activePersonalSpace?(n(),h(`button`,{key:0,type:`button`,class:`secondary-action`,onClick:a[0]||=e=>Q()},c(d(s)(`common.actions.retry`)),1)):l(``,!0)])),m(x,{item:G.value,"personal-space-id":d(v).activePersonalSpace?.id??``,"personal-project-id":null,projects:d(v).state?.personalProjects??[],"replacement-items":X.value,onClose:a[2]||=e=>G.value=null,onSaved:a[3]||=e=>Q()},null,8,[`item`,`personal-space-id`,`projects`,`replacement-items`]),m(b,{item:W.value,"personal-space-id":d(v).activePersonalSpace?.id??``,"personal-project-id":null,onClose:a[4]||=e=>W.value=null,onSaved:a[5]||=e=>Q()},null,8,[`item`,`personal-space-id`])]))}}),[[`__scopeId`,`data-v-4bfe6da0`]]);export{B as default};
@@ -0,0 +1 @@
1
+ import{a as e}from"./i18n-CVFADb_M.js";var t=class extends Error{status;detail;constructor(e,t,n=``){super(e),this.name=`ApiError`,this.status=t,this.detail=n}};async function n(n,r){let i=await fetch(n,r);if(!i.ok){let n=(await i.text()).trim();throw new t(i.status>=500?e(`common.errors.serviceUnavailable`,{status:i.status}):n||e(`common.errors.requestFailed`,{status:i.status}),i.status,n)}return i.json()}function r(e,t){return n(e,t)}function i(e,t){return n(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function a(e,t){return n(e,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function o(e,t){return n(e,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function s(e){return n(e,{method:`DELETE`})}export{a,i,r as n,o as r,s as t};
@@ -0,0 +1 @@
1
+ import{$ as e,A as t,D as n,G as r,J as i,K as a,O as o,U as s,W as c,Y as l,Z as u,_ as d,a as f,et as p,q as m,tt as h,z as g}from"./i18n-CVFADb_M.js";import{n as _,r as v}from"./client-Bl4oiW3E.js";var y=typeof window<`u`,b,x=e=>b=e,S=Symbol();function C(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var w=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null};function T(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function E(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){j(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function D(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function O(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var k=typeof navigator==`object`?navigator:{userAgent:``},A=/Macintosh/.test(k.userAgent)&&/AppleWebKit/.test(k.userAgent)&&!/Safari/.test(k.userAgent),j=y?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!A?M:`msSaveOrOpenBlob`in k?N:P:()=>{};function M(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?O(r):D(r.href)?E(e,t,n):(r.target=`_blank`,O(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){O(r)},0))}function N(e,t=`download`,n){if(typeof e==`string`)if(D(e))E(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){O(t)})}else navigator.msSaveOrOpenBlob(T(e,n),t)}function P(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return E(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(w.HTMLElement))||`safari`in w,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||A)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:F}=Object;function I(){let e=s(!0),t=e.run(()=>u({})),n=[],r=[],i=m({install(e){x(i),i._a=e,e.provide(S,i),e.config.globalProperties.$pinia=i,r.forEach(e=>n.push(e)),r=[]},use(e){return this._a?n.push(e):r.push(e),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return i}var L=()=>{};function R(e,t,n,r=L){e.add(t);let a=()=>{e.delete(t)&&r()};return!n&&c()&&i(a),a}function z(e,...t){e.forEach(e=>{e(...t)})}var B=e=>e(),V=Symbol(),H=Symbol();function U(e,t){e instanceof Map&&t instanceof Map?t.forEach((t,n)=>e.set(n,t)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(let n in t){if(!Object.hasOwn(t,n))continue;let i=t[n],o=e[n];C(o)&&C(i)&&Object.hasOwn(e,n)&&!a(i)&&!r(i)?e[n]=U(o,i):e[n]=i}return e}var W=Symbol();function G(e){return!e||typeof e!=`object`||!Object.hasOwn(e,W)}var{assign:K}=Object;function q(e){return!!(a(e)&&e.effect)}function J(e,t,n,r){let{state:i,actions:a,getters:o}=t,s=n.state.value[e],c;function l(){return s||(n.state.value[e]=i?i():{}),K(h(n.state.value[e]),a,Object.keys(o||{}).reduce((t,r)=>(t[r]=m(d(()=>{x(n);let t=n._s.get(e);return o[r].call(t,t)})),t),{}))}return c=Y(e,l,t,n,r,!0),c}function Y(e,n,i={},o,c,u){let d,f=K({actions:{}},i),m={deep:!0},h,_,v=new Set,y=new Set,b=o.state.value[e];!u&&!b&&(o.state.value[e]={});let S;function C(n){let r;h=_=!1,typeof n==`function`?(n(o.state.value[e]),r={type:`patch function`,storeId:e,events:void 0}):(U(o.state.value[e],n),r={type:`patch object`,payload:n,storeId:e,events:void 0});let i=S=Symbol();t().then(()=>{S===i&&(h=!0)}),_=!0,z(v,r,o.state.value[e])}let w=u?function(){let{state:e}=i,t=e?e():{};this.$patch(e=>{K(e,t)})}:L;function T(){d.stop(),v.clear(),y.clear(),o._s.delete(e)}let E=(t,n=``)=>{if(V in t)return t[H]=n,t;let r=function(){x(o);let n=Array.from(arguments),i=new Set,a=new Set;function s(e){i.add(e)}function c(e){a.add(e)}z(y,{args:n,name:r[H],store:D,after:s,onError:c});let l;try{l=t.apply(this&&this.$id===e?this:D,n)}catch(e){throw z(a,e),e}return l instanceof Promise?l.then(e=>(z(i,e),e)).catch(e=>(z(a,e),Promise.reject(e))):(z(i,l),l)};return r[V]=!0,r[H]=n,r},D=l({_p:o,$id:e,$onAction:R.bind(null,y),$patch:C,$reset:w,$subscribe(t,n={}){if(v.has(t))return L;let r=R(v,t,n.detached,()=>i()),i=d.run(()=>g(()=>o.state.value[e],r=>{(n.flush===`sync`?_:h)&&t({storeId:e,type:`direct`,events:void 0},r)},K({},m,n)));return r},$dispose:T});o._s.set(e,D);let O=(o._a&&o._a.runWithContext||B)(()=>o._e.run(()=>(d=s()).run(()=>n({action:E}))));for(let t in O){let n=O[t];a(n)&&!q(n)||r(n)?u||(b&&G(n)&&(a(n)?n.value=b[t]:U(n,b[t])),o.state.value[e][t]=n):typeof n==`function`&&(O[t]=E(n,t),f.actions[t]=n)}return K(D,O),K(p(D),O),Object.defineProperty(D,"$state",{get:()=>o.state.value[e],set:e=>{C(t=>{K(t,e)})}}),o._p.forEach(e=>{let t=d.run(()=>e({store:D,app:o._a,pinia:o,options:f}));K(D,t)}),b&&u&&i.hydrate&&i.hydrate(D.$state,b),h=!0,_=!0,D}function X(e,t,r){let i,a=typeof t==`function`;i=a?r:t;function s(r,s){let c=n();return r||=c?o(S,null):null,r&&x(r),r=b,r._s.has(e)||(a?Y(e,t,i,r):J(e,i,r)),r._s.get(e)}return s.$id=e,s}var Z=X(`console`,()=>{let t=e(null),n=u(`idle`),r=u(!1),i=u(null),a=d(()=>{let e=t.value;return e?e.personalSpaces.find(({id:t})=>t===e.activePersonalSpaceId)??e.personalSpaces[0]??null:null}),o=d(()=>t.value?.mode===`connected`?`ready`:t.value?.mode===`degraded`?`error`:`disconnected`);async function s(){n.value=`loading`;try{t.value=await _(`/api/state`),n.value=`ready`}catch(e){n.value=`error`,h(e)}}async function c(e){try{let n=await v(`/api/capture-policy`,{enabled:e});t.value&&={...t.value,capturePolicy:n},m(f(e?`console.captureNotices.enabled`:`console.captureNotices.disabled`))}catch(e){h(e)}}async function l(e){try{let n=await v(`/api/agent-access-policy`,{enabled:e});t.value&&={...t.value,agentAccessPolicy:n},m(f(e?`console.agentAccess.enabledNotice`:`console.agentAccess.disabledNotice`))}catch(e){h(e)}}function p(e){return t.value?.capabilities?.[e]===!0}function m(e){i.value={message:e,tone:`success`}}function h(e){i.value={message:e instanceof Error?e.message:f(`common.errors.operationFailed`),tone:`error`}}function g(){i.value=null}return{state:t,runtimeStatus:n,settingsSaving:r,feedback:i,activePersonalSpace:a,publicRuntimeStatus:o,refresh:s,updateCapturePolicy:c,updateAgentAccessPolicy:l,hasCapability:p,notify:m,reportError:h,clearFeedback:g}});export{I as n,X as r,Z as t};
@@ -0,0 +1 @@
1
+ import{$ as e,X as t,a as n}from"./i18n-CVFADb_M.js";import{n as r}from"./client-Bl4oiW3E.js";var i=[`codex`,`claude`,`claude_code`,`cursor`,`gemini_cli`,`kiro`,`other`],a={codex:`Codex`,claude:`Claude`,claude_code:`Claude Code`,cursor:`Cursor`,gemini_cli:`Gemini CLI`,kiro:`Kiro`,other:`Other Agent`},o=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,s=/^[^\u0000-\u001f\u007f]{1,512}$/,c=new Set([`about`,`blob`,`data`,`file`,`javascript`]),l={codex:{enabled:!0,idFormat:`uuid`,appName:`Codex`,urlTemplate:`codex://threads/{id}`},claude:{enabled:!1,idFormat:`any`,appName:`Claude`,urlTemplate:``},claude_code:{enabled:!1,idFormat:`any`,appName:`Claude Code`,urlTemplate:``},cursor:{enabled:!1,idFormat:`any`,appName:`Cursor`,urlTemplate:``},gemini_cli:{enabled:!1,idFormat:`any`,appName:`Gemini CLI`,urlTemplate:``},kiro:{enabled:!1,idFormat:`any`,appName:`Kiro`,urlTemplate:``},other:{enabled:!1,idFormat:`any`,appName:`Other Agent`,urlTemplate:``}};function u(e={}){let t=e.source_application?.trim().toLocaleLowerCase().replaceAll(`-`,`_`).replaceAll(` `,`_`);if(t&&a[t])return t;let n=`${e.source_kind??``} ${e.source_description??``}`.toLocaleLowerCase();return n.includes(`claude`)?`claude_code`:n.includes(`cursor`)?`cursor`:n.includes(`gemini`)?`gemini_cli`:n.includes(`kiro`)?`kiro`:n.includes(`codex`)?`codex`:`other`}function d(e){let t=u(e);return t===`other`?n(`knowledge.domain.actors.otherAgent`):a[t]}function f(e){return a[e]}function p(e={},t=l){if(m(e,t)!==`available`)return null;let n=t[u(e)],r=e.session_id.trim();return n.urlTemplate.replace(`{id}`,encodeURIComponent(r))}function m(e={},t=l){let n=t[u(e)];return n?.enabled?_(e.session_id?.trim()??``,n.idFormat)?v(n.urlTemplate)?`available`:`invalid_template`:`invalid_id`:`disabled`}function h(e={},t=l){let n=t[u(e)];return n?.enabled&&n.appName.trim()?n.appName.trim():null}async function g(e={},t=globalThis.navigator?.clipboard){return!e.session_id||!t?.writeText?!1:(await t.writeText(e.session_id),!0)}function _(e,t){return s.test(e)?t===`any`||o.test(e):!1}function v(e){if(e.split(`{id}`).length!==2||/\s/.test(e))return!1;let t=/^([a-z][a-z0-9+.-]*):/i.exec(e)?.[1]?.toLocaleLowerCase();return!!t&&!c.has(t)}var y=e(w(l)),b=null;function x(){return C(),t(y)}function S(e){y.value=w(e)}function C({force:e=!1}={}){return!e&&b||(b=r(`/api/system/settings`).then(e=>{S(e.configured.conversationLaunchers)}).catch(()=>void 0)),b}function w(e){return Object.fromEntries(i.map(t=>[t,{...l[t],...e?.[t]??{}}]))}export{g as a,h as c,i,p as l,S as n,d as o,x as r,f as s,w as t};
@@ -0,0 +1 @@
1
+ .employee-dialog{color:#253c2f;box-sizing:border-box;background:#fff;border:1px solid #dce4df;border-radius:16px;width:min(640px,100vw - 32px);max-height:calc(100dvh - 32px);padding:0;overflow:hidden}.employee-dialog::backdrop{background:#0f1d1561}.employee-dialog-shell{flex-direction:column;min-height:0;max-height:calc(100dvh - 34px);display:flex}.employee-dialog header,.employee-dialog footer{flex:none;justify-content:space-between;align-items:center;gap:12px;padding:18px 24px;display:flex}.employee-dialog header{border-bottom:1px solid #e6ece8}.employee-dialog h2{margin:0;font-size:20px}.employee-dialog button{color:#36523f;min-height:40px;font:inherit;cursor:pointer;background:#fff;border:1px solid #d8e2dc;border-radius:8px;padding:8px 12px}.employee-dialog header>button{border:0;font-size:24px}.employee-dialog button:disabled{opacity:.5;cursor:default}.employee-dialog .primary{color:#fff;background:#315c43;border-color:#315c43}.employee-dialog footer{border-top:1px solid #e6ece8;justify-content:flex-end}.employee-dialog-body{overscroll-behavior:contain;flex-direction:column;gap:18px;min-height:0;padding:20px 24px;display:flex;overflow-y:auto}.employee-dialog-body>label{color:#526659;flex-direction:column;gap:8px;font-size:13px;display:flex}.employee-dialog-body input:not([type=checkbox]),.employee-dialog-body select,.employee-dialog-body textarea{width:100%;min-width:0;min-height:40px;font:inherit;color:#253c2f;box-sizing:border-box;background:#fff;border:1px solid #cddbd2;border-radius:8px;padding:9px 11px}.employee-dialog-body textarea{resize:vertical}.employee-dialog :is(button,input,textarea,select,a):focus-visible{outline-offset:2px;outline:2px solid #356448}.employee-dialog-error{color:#903c30}.employee-dialog-body p{overflow-wrap:anywhere;margin:0;font-size:13px;line-height:1.6}.employee-task-status{color:#526659}@media (width<=640px){.employee-dialog header,.employee-dialog footer,.employee-dialog-body{padding:16px}}