fuli-context 0.8.0 → 0.8.1

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 (121) hide show
  1. package/README.md +4 -0
  2. package/README.zh-CN.md +4 -1
  3. package/dist/web/assets/{AboutPage-BjMmpwJB.js → AboutPage-fBq5VFoQ.js} +1 -1
  4. package/dist/web/assets/AgentHand-CMZk5GjY.js +1 -0
  5. package/dist/web/assets/AgentName-Cydd0UI4.css +1 -0
  6. package/dist/web/assets/AgentName-DRZHAIB2.js +1 -0
  7. package/dist/web/assets/AgentProfilePage-BPQEfMhB.js +1 -0
  8. package/dist/web/assets/AgentsDirectoryPage-CKZfrcuD.js +1 -0
  9. package/dist/web/assets/{ConnectionsPage-BKGxFDos.js → ConnectionsPage-COb56qnk.js} +1 -1
  10. package/dist/web/assets/EmployeeRecruitDialog-BLTpjCcK.js +1 -0
  11. package/dist/web/assets/EmployeeWorkbenchPage-CQwZnTA0.css +1 -0
  12. package/dist/web/assets/EmployeeWorkbenchPage-HUd-gne2.js +3 -0
  13. package/dist/web/assets/{GrowthLoading-WXCj8b0r.js → GrowthLoading-Bu_kH-I8.js} +1 -1
  14. package/dist/web/assets/{KnowledgeEditDialog-Bkie08ZA.js → KnowledgeEditDialog-BTwXXRCD.js} +1 -1
  15. package/dist/web/assets/{KnowledgeInspector-Cez-Z_95.js → KnowledgeInspector-Ct5hl2--.js} +1 -1
  16. package/dist/web/assets/{KnowledgeOrganizerPage-BYmTPA_8.js → KnowledgeOrganizerPage-DMC8Hh43.js} +1 -1
  17. package/dist/web/assets/KnowledgePage-uXW1Eovz.js +1 -0
  18. package/dist/web/assets/{KnowledgeWorkspace-DKij2_B4.js → KnowledgeWorkspace-DmHIc0jb.js} +1 -1
  19. package/dist/web/assets/{NotFoundPage-HGV-q-bh.js → NotFoundPage-C0yOR9T9.js} +1 -1
  20. package/dist/web/assets/{OverviewPage-DE29_F_Y.js → OverviewPage-BreX_kb4.js} +1 -1
  21. package/dist/web/assets/{PersonalProfilePage-B95DFc7x.js → PersonalProfilePage-CX1a6_E3.js} +1 -1
  22. package/dist/web/assets/PersonalProjectsPage-Br1S8ETM.js +1 -0
  23. package/dist/web/assets/ProjectAgentsPage-CA04h1Uf.js +13 -0
  24. package/dist/web/assets/ProjectAgentsPage-CZWWV4Kw.css +1 -0
  25. package/dist/web/assets/{ProjectScopePicker-Cu5PdxF6.js → ProjectScopePicker-DVHfXX1f.js} +1 -1
  26. package/dist/web/assets/{PublicProjectsPage-BY4B3_t3.js → PublicProjectsPage-CtctKml1.js} +1 -1
  27. package/dist/web/assets/{ReviewPage-C9vCesNu.js → ReviewPage-DUqaK-do.js} +1 -1
  28. package/dist/web/assets/{SearchableSelect-214TvfYg.js → SearchableSelect-BZtyYmZN.js} +1 -1
  29. package/dist/web/assets/{SettingsPage-D9TnzcFc.js → SettingsPage-CB4ymLr8.js} +1 -1
  30. package/dist/web/assets/{SharedJefaReportPage-CdSGI_OE.js → SharedJefaReportPage-CbFtrDCY.js} +1 -1
  31. package/dist/web/assets/{WritingTastePage-CUE1dU8f.js → WritingTastePage-B7lSzs2z.js} +1 -1
  32. package/dist/web/assets/agent-profile-CdKOh5xw.css +1 -0
  33. package/dist/web/assets/agent-profile.css_vue_type_style_index_0_src_true_lang-C22UdfU0.js +1 -0
  34. package/dist/web/assets/catalog-DU4Kfd-N.js +1 -0
  35. package/dist/web/assets/{client-Bl4oiW3E.js → client-CEHkJJ-5.js} +1 -1
  36. package/dist/web/assets/{console-BAIVNC-N.js → console--CZxc3PW.js} +1 -1
  37. package/dist/web/assets/{conversation-launcher-settings-DpRI_Jp2.js → conversation-launcher-settings-Co1RlTFH.js} +1 -1
  38. package/dist/web/assets/{i18n-CVFADb_M.js → i18n-BtOOoyJd.js} +3 -3
  39. package/dist/web/assets/{identity-Dt0WZgqo.js → identity-CsowvtIm.js} +1 -1
  40. package/dist/web/assets/index-CWMqDq8g.css +1 -0
  41. package/dist/web/assets/index-MKmHNBtc.js +2 -0
  42. package/dist/web/assets/{model-B8sOxih0.js → model-CGpllrds.js} +1 -1
  43. package/dist/web/assets/{personal-profile-graph-aAqex7ty.js → personal-profile-graph-BNTG4PSY.js} +1 -1
  44. package/dist/web/assets/profile-model-BQO4zNs9.js +1 -0
  45. package/dist/web/assets/{shared-report-BQD6l_cS.js → shared-report-BFUJqqQe.js} +1 -1
  46. package/dist/web/assets/task-evidence-BUu7yYIn.js +1 -0
  47. package/dist/web/assets/{useApi-CROJJdhE-CuJ16v2S.js → useApi-CROJJdhE-raNlHRDl.js} +1 -1
  48. package/dist/web/assets/{useModalDialog-Ddv2XJQi.js → useModalDialog-CroGk2Cs.js} +1 -1
  49. package/dist/web/assets/{vue-router-C8KuEZ6a.js → vue-router-JFYBLXB1.js} +1 -1
  50. package/dist/web/index.html +12 -10
  51. package/docs/agent-conversations-and-collaboration.md +115 -0
  52. package/docs/project-agent-memory.md +28 -0
  53. package/graph-provider/fuli_graph/agent_conversation_models.py +72 -0
  54. package/graph-provider/fuli_graph/agent_conversation_routes.py +47 -0
  55. package/graph-provider/fuli_graph/agent_loan_models.py +28 -0
  56. package/graph-provider/fuli_graph/agent_quality_policy.py +151 -0
  57. package/graph-provider/fuli_graph/agent_verification_models.py +22 -0
  58. package/graph-provider/fuli_graph/conversation_context.py +30 -0
  59. package/graph-provider/fuli_graph/project_agent_executor_models.py +3 -0
  60. package/graph-provider/fuli_graph/project_agent_memory_routes.py +2 -0
  61. package/graph-provider/fuli_graph/project_agent_models.py +10 -0
  62. package/graph-provider/fuli_graph/project_agent_task_models.py +4 -0
  63. package/graph-provider/fuli_graph/runtime.py +14 -0
  64. package/graph-provider/fuli_graph/store.py +6 -0
  65. package/graph-provider/fuli_graph/store_agent_conversations.py +206 -0
  66. package/graph-provider/fuli_graph/store_agent_loans.py +146 -0
  67. package/graph-provider/fuli_graph/store_agent_verification.py +111 -0
  68. package/graph-provider/fuli_graph/store_project_agent_executors.py +2 -0
  69. package/graph-provider/fuli_graph/store_project_agent_task_activity.py +6 -0
  70. package/graph-provider/fuli_graph/store_project_agent_tasks.py +20 -8
  71. package/graph-provider/fuli_graph/store_task_contexts.py +9 -0
  72. package/graph-provider/fuli_graph/task_context_routes.py +7 -0
  73. package/graph-provider/pyproject.toml +1 -1
  74. package/npm-shrinkwrap.json +2 -2
  75. package/package.json +2 -1
  76. package/skills/operating-fuli/SKILL.md +4 -0
  77. package/src/agent-tools/agent-collaboration-definitions.js +30 -0
  78. package/src/agent-tools/agent-conversation-definitions.js +21 -0
  79. package/src/agent-tools/graph-definitions.js +17 -33
  80. package/src/agent-tools/graph-handlers.js +17 -1
  81. package/src/agent-tools/interface-catalog.js +2 -0
  82. package/src/agent-tools/project-agent-definitions.js +21 -0
  83. package/src/agent-tools/project-relation-definitions.js +36 -0
  84. package/src/agents/claude-code/conversation-transcript.js +20 -0
  85. package/src/agents/claude-code/lifecycle-hook.js +154 -0
  86. package/src/agents/claude-code/lifecycle-hooks.js +20 -0
  87. package/src/agents/codex/conversation-transcript.js +22 -0
  88. package/src/agents/codex/lifecycle-hook.js +47 -8
  89. package/src/agents/codex/lifecycle-hooks.js +6 -6
  90. package/src/agents/cursor/lifecycle-hook.js +5 -4
  91. package/src/app/agent-request-context.js +6 -1
  92. package/src/app/test-tools.js +26 -0
  93. package/src/conversations/sync-transcript.js +144 -0
  94. package/src/conversations/task-context-view.js +28 -0
  95. package/src/conversations/transcript-guard.js +54 -0
  96. package/src/conversations/transcript-reader.js +113 -0
  97. package/src/graphiti/agent-collaboration.js +62 -0
  98. package/src/graphiti/agent-conversations.js +75 -0
  99. package/src/graphiti/agent-knowledge-workflows.js +7 -1
  100. package/src/graphiti/project-agent-control-plane.js +22 -2
  101. package/src/graphiti/project-agent-mapping.js +19 -1
  102. package/src/graphiti/project-agent-task-entry.js +11 -1
  103. package/src/graphiti/project-agent-workflows.js +1 -0
  104. package/src/graphiti/provider-client.js +17 -0
  105. package/src/graphiti/verification-preference.js +24 -0
  106. package/src/http/graph-api-router.js +17 -0
  107. package/src/mcp/create-mcp-server.js +13 -4
  108. package/src/mcp/session-id.js +4 -0
  109. package/src/mcp/tool-annotations.js +8 -1
  110. package/src/setup/agent-installation-status.js +1 -0
  111. package/src/setup/claude-code-config.js +13 -19
  112. package/dist/web/assets/AgentHand-BfLYPGjg.js +0 -1
  113. package/dist/web/assets/EmployeeRecruitDialog-D-W043v4.js +0 -1
  114. package/dist/web/assets/EmployeeWorkbenchPage-Cz7y-IFD.css +0 -1
  115. package/dist/web/assets/EmployeeWorkbenchPage-HHQPxdqI.js +0 -3
  116. package/dist/web/assets/KnowledgePage-Ck7tIBDn.js +0 -1
  117. package/dist/web/assets/PersonalProjectsPage-Bt7tFF5Z.js +0 -1
  118. package/dist/web/assets/ProjectAgentsPage-BioDR9OW.css +0 -1
  119. package/dist/web/assets/ProjectAgentsPage-CiiPNe_G.js +0 -12
  120. package/dist/web/assets/index-BUMq5zNh.js +0 -2
  121. package/dist/web/assets/index-C0ci8dnU.css +0 -1
@@ -1,4 +1,7 @@
1
1
  const READ_TOOLS = new Set([
2
+ 'get_agent_quality_gate',
3
+ 'plan_agent_collaboration', 'list_agent_loans',
4
+ 'list_agent_conversations', 'read_agent_conversation', 'get_agent_conversation_policy',
2
5
  'list_agent_attention',
3
6
  'list_project_agent_tasks',
4
7
  'list_preference_conflicts',
@@ -46,6 +49,9 @@ const READ_TOOLS = new Set([
46
49
  ]);
47
50
 
48
51
  const WRITE_TOOLS = new Set([
52
+ 'record_agent_verification',
53
+ 'request_agent_loan', 'decide_agent_loan',
54
+ 'resume_agent_conversation', 'update_agent_conversation_policy',
49
55
  'request_agent_attention',
50
56
  'cancel_agent_attention',
51
57
  'update_capture_policy',
@@ -128,7 +134,8 @@ const DESTRUCTIVE_TOOLS = new Set([
128
134
  'review_project_proposal',
129
135
  'review_project_relation',
130
136
  'review_personal_draft',
131
- 'unsubscribe_public_project'
137
+ 'unsubscribe_public_project',
138
+ 'cleanup_test_project_agents'
132
139
  ]);
133
140
 
134
141
  export function annotationsFor(name) {
@@ -39,6 +39,7 @@ export function inspectAgentInstallations(agents, context, {
39
39
  );
40
40
  const claudeLifecycleCurrent = agent.id !== 'claude-code' ||
41
41
  hasCurrentClaudeCodeHooks(readJson(agent.settingsPath), {
42
+ ...context,
42
43
  hookTimeoutSec: context.hookTimeoutSec ?? 30
43
44
  });
44
45
  const codexConfig = agent.id === 'codex' && agent.hooksPath
@@ -1,5 +1,6 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { isDeepStrictEqual } from 'node:util';
3
+ import { claudeLifecycleCommand, isClaudeLifecycleCommand } from '../agents/claude-code/lifecycle-hooks.js';
3
4
 
4
5
  import {
5
6
  readJsonFile,
@@ -48,9 +49,7 @@ export function connectClaudeCode(agent, context, {
48
49
  }
49
50
  }
50
51
  };
51
- const nextSettings = withManagedHooks(settings, {
52
- hookTimeoutSec: context.hookTimeoutSec
53
- });
52
+ const nextSettings = withManagedHooks(settings, context);
54
53
  const registrationChanged = !sameJson(current, next);
55
54
  const hooksChanged = !sameJson(settings, nextSettings);
56
55
  if (registrationChanged) writeConfig(agent.configPath, next);
@@ -104,13 +103,13 @@ export function disconnectClaudeCode(agent, {
104
103
  };
105
104
  }
106
105
 
107
- export function hasCurrentClaudeCodeHooks(settings, { hookTimeoutSec = 30 } = {}) {
106
+ export function hasCurrentClaudeCodeHooks(settings, context = {}) {
108
107
  try {
109
108
  assertObject(settings, 'Claude Code settings');
110
109
  assertHookSettings(settings.hooks ?? {});
111
110
  assertPermissionSettings(settings.permissions ?? {});
112
111
  return sameJson(
113
- withManagedHooks(settings, { hookTimeoutSec }),
112
+ withManagedHooks(settings, context),
114
113
  settings
115
114
  );
116
115
  } catch {
@@ -118,23 +117,20 @@ export function hasCurrentClaudeCodeHooks(settings, { hookTimeoutSec = 30 } = {}
118
117
  }
119
118
  }
120
119
 
121
- function withManagedHooks(settings, { hookTimeoutSec = 30 } = {}) {
120
+ function withManagedHooks(settings, context) {
121
+ const { hookTimeoutSec = 30 } = context;
122
122
  const normalizedHookTimeoutSec = positiveHookTimeout(hookTimeoutSec);
123
123
  const clean = withoutManagedSettings(settings);
124
124
  const hooks = { ...(clean.hooks ?? {}) };
125
125
  hooks.UserPromptSubmit = [
126
126
  ...(hooks.UserPromptSubmit ?? []),
127
- managedHookGroup('begin_task_context', {
128
- sessionId: '${session_id}',
129
- projectPath: '${cwd}',
130
- taskPrompt: '${prompt}'
131
- }, 'Loading Fuli task context', normalizedHookTimeoutSec)
127
+ managedHookGroup(context, 'UserPromptSubmit', 'Loading Fuli task context', normalizedHookTimeoutSec)
132
128
  ];
133
129
  hooks.Stop = [
134
130
  ...(hooks.Stop ?? []),
135
131
  managedHookGroup(
136
- 'verify_task_checkpoint',
137
- { sessionId: '${session_id}' },
132
+ context,
133
+ 'Stop',
138
134
  'Checking Fuli task checkpoint',
139
135
  normalizedHookTimeoutSec
140
136
  )
@@ -186,13 +182,11 @@ function withoutManagedHooks(settings) {
186
182
  return { ...settings, hooks };
187
183
  }
188
184
 
189
- function managedHookGroup(tool, input, statusMessage, timeout) {
185
+ function managedHookGroup(context, event, statusMessage, timeout) {
190
186
  return {
191
187
  hooks: [{
192
- type: 'mcp_tool',
193
- server: FULI_SERVER,
194
- tool,
195
- input,
188
+ type: 'command',
189
+ command: claudeLifecycleCommand(context, event, timeout),
196
190
  timeout,
197
191
  statusMessage
198
192
  }]
@@ -207,7 +201,7 @@ function positiveHookTimeout(value) {
207
201
  }
208
202
 
209
203
  function isManagedHook(hook, tool = null) {
210
- return hook?.type === 'mcp_tool'
204
+ return isClaudeLifecycleCommand(hook) || hook?.type === 'mcp_tool'
211
205
  && hook.server === FULI_SERVER
212
206
  && MANAGED_HOOK_TOOLS.has(hook.tool)
213
207
  && (tool === null || hook.tool === tool);
@@ -1 +0,0 @@
1
- import{L as e,N as t,T as n,V as r,Z as i,_ as a,a as o,at as s,b as c,nt as l,v as u,y as d}from"./i18n-CVFADb_M.js";import{r as f}from"./console-BAIVNC-N.js";import{t as p}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{i as m,n as h}from"./client-Bl4oiW3E.js";function g(e){let t=/^employee\.([a-z][a-z0-9-]{0,63})$/.exec(e.agentId)?.[1];return t&&e.profile.capabilities.includes(`fuli.employee:${t}`)?t:null}var _=i([]),v=i(!1),y=i(``),b=``,x=null,S=0;async function C(e){if(!e)return[];let t=await h(`/api/employee-templates?${new URLSearchParams({personalSpaceId:e})}`);return Array.isArray(t.templates)?t.templates:[]}function w(e){if(e===b&&x)return x;let t=++S;return e!==b&&(_.value=[]),b=e,y.value=``,e?(v.value=!0,x=C(e).then(e=>{t===S&&(_.value=e)}).catch(e=>{t===S&&(_.value=[],y.value=T(e))}).finally(()=>{t===S&&(v.value=!1,x=null)}),x):(_.value=[],v.value=!1,Promise.resolve())}function T(e){let t=e instanceof Error?e.message:``;try{let e=JSON.parse(t);return e.code&&[`runtime_unavailable`,`assignment_required`,`project_not_found`,`identity_conflict`,`reactivation_required`,`assignment_scope_conflict`,`assignment_update_incomplete`].includes(e.code)?o(`employees.errors.${e.code}`):e.error||o(`employees.loadError`)}catch{return t||o(`employees.loadError`)}}var E={jefa:`/assets/jefa-avatar-Dew42td5.webp`,bole:`/assets/bole-avatar-CVIr-bU_.webp`};function D(e){return E[e]}var O=f(`agent-attention`,()=>{let e=i(``),t=i({}),n=i(0),r=i([]),a=i(0),o=i(``),s=i(!1),c=i(!1),l=i(``),u=0;async function d(){let i=++u;if(e.value){c.value=!0;try{let c=new URLSearchParams({personalSpaceId:e.value,status:`open`}),d=await h(`/api/agent-attention?${c}&limit=1`);if(i!==u)return;if(t.value=d.counts,n.value=d.total,s.value){o.value&&c.set(`agentId`,o.value);let e=await h(`/api/agent-attention?${c}&limit=100`);if(i!==u)return;r.value=e.items,a.value=e.total}l.value=``}catch(e){i===u&&(l.value=e instanceof Error?e.message:String(e))}finally{i===u&&(c.value=!1)}}}function f(i){e.value!==i&&(u++,e.value=i,t.value={},r.value=[],n.value=0,a.value=0,l.value=``,s.value=!1,c.value=!1,o.value=``,i&&d())}function p(e=``){o.value=e,r.value=[],a.value=0,s.value=!0,d()}async function g(){if(c.value)return;let t=++u;c.value=!0;try{let n=new URLSearchParams({personalSpaceId:e.value,status:`open`,limit:`100`,offset:String(r.value.length)});o.value&&n.set(`agentId`,o.value);let i=await h(`/api/agent-attention?${n}`);if(t!==u)return;let s=new Set(r.value.map(e=>e.requestId));r.value.push(...i.items.filter(e=>!s.has(e.requestId))),a.value=i.total}catch(e){t===u&&(l.value=String(e))}finally{t===u&&(c.value=!1)}}async function _(t,n){let r=e.value;if(!r||t.personalSpaceId!==r)throw Error(`This request belongs to a different space. Reopen it before replying.`);await m(`/api/agent-attention/respond`,{personalSpaceId:r,personalProjectId:t.personalProjectId,requestId:t.requestId,expectedRevision:t.revision,response:n}),e.value===r&&await d()}return{spaceId:e,counts:t,total:n,items:r,filteredTotal:a,agentId:o,open:s,loading:c,error:l,setSpace:f,show:p,refresh:d,more:g,respond:_}});function k(e){let t=new URLSearchParams({agent:e.agentId,project:e.personalProjectId});return e.taskId&&t.set(`task`,e.taskId),`/project-agents?${t}${e.taskId?`#task-${encodeURIComponent(e.taskId)}`:``}`}var A={"aria-hidden":`true`},j=p(n({__name:`AgentHand`,props:{agentId:{},passive:{type:Boolean}},setup(n){let i=n,f=O(),p=a(()=>i.agentId?f.counts[i.agentId]??0:f.total);function m(e){i.passive||(e.preventDefault(),e.stopPropagation(),f.show(i.agentId))}return(i,a)=>p.value?(t(),d(e(n.passive?`span`:`button`),{key:0,type:n.passive?void 0:`button`,class:`agent-hand`,"aria-label":l(o)(`attention.count`,{count:p.value}),title:l(o)(`attention.count`,{count:p.value}),onClick:m},{default:r(()=>[a[0]||=u(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.7`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[u(`path`,{d:`M8 13V5a1.5 1.5 0 0 1 3 0v6-8a1.5 1.5 0 0 1 3 0v8-6a1.5 1.5 0 0 1 3 0v7-3a1.5 1.5 0 0 1 3 0v6c0 4-2 7-6 7h-1c-3 0-4-1-6-4l-3-4a1.6 1.6 0 0 1 2.5-2z`})],-1),u(`span`,A,s(p.value),1)]),_:1},8,[`type`,`aria-label`,`title`])):c(``,!0)}}),[[`__scopeId`,`data-v-0ed1321f`]]);export{y as a,g as c,w as d,D as i,_ as l,k as n,v as o,O as r,T as s,j as t,C as u};
@@ -1 +0,0 @@
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,m as ee,nt as d,rt as te,v as f,w as p,x as m,y as h,z as g}from"./i18n-CVFADb_M.js";import{t as _}from"./GrowthLoading-WXCj8b0r.js";import{t as v}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as y}from"./vue-router-C8KuEZ6a.js";import{i as ne}from"./client-Bl4oiW3E.js";import{d as re,i as b,l as ie,s as ae,u as oe}from"./AgentHand-BfLYPGjg.js";import{t as se}from"./useModalDialog-Ddv2XJQi.js";import{n as ce}from"./paths-CDREouhi.js";import{t as x}from"./SearchableSelect-214TvfYg.js";import{t as le}from"./ProjectScopePicker-Cu5PdxF6.js";var ue={class:`employee-recruit-heading`},de={id:`employee-recruit-title`},fe=[`disabled`],pe={key:1,role:`alert`,class:`employee-message`},me={key:2},he={class:`employee-recruit-body`},ge={key:0,class:`employee-picker-field`},_e={class:`employee-profile`},ve={class:`employee-avatar`,"aria-hidden":`true`},ye=[`src`],be={class:`employee-specialties`},xe=[`aria-label`],Se=[`data-scope`,`aria-checked`,`tabindex`,`disabled`,`onClick`],Ce={key:3,class:`employee-scope-rule`,role:`status`},we={key:4,class:`employee-muted`},Te={key:5,class:`employee-muted`},Ee={key:6,class:`employee-muted`},De=[`aria-label`],Oe={class:`employee-title-controls`},ke={class:`employee-picker-field`},Ae={class:`employee-picker-field`},je={class:`employee-title-preview`},Me={class:`employee-muted`},Ne=[`aria-label`],Pe={key:9,class:`employee-error`,role:`alert`},Fe=[`disabled`],Ie={key:11,class:`employee-success`,role:`status`},Le={class:`employee-recruit-actions`},Re=[`disabled`],ze=[`disabled`],S=v(r({__name:`EmployeeRecruitDialog`,props:{open:{type:Boolean},personalSpaceId:{},projects:{},defaultProjectId:{},defaultProjectIds:{},templateId:{}},emits:[`close`,`recruited`],setup(r,{emit:v}){let S=r,C=v,w=a([]),T=a([]),E=a(`selected`),D=a([]),O=a(`auto`),k=a(`emoji`),A=a(``),j=a(``),M=a(!1),N=a(!1),P=a(``),F=a(!1),I=a(``),L=a(null),R=a([]),z=a(``),{dialogRef:Be,initialFocusRef:Ve,onCancel:He,onKeydown:Ue}=se(()=>S.open,Q),B=o(()=>R.value),V=o(()=>S.templateId?B.value.find(e=>e.id===S.templateId):B.value.find(e=>e.id===P.value)??B.value[0]),We=o(()=>V.value?.agentId?s(`employees.manageProjectsTitle`,{name:V.value.name}):s(`employees.recruit`)),H=o(()=>S.projects.filter(e=>e.profile.lifecycle!==`archived`).map(e=>({id:e.project_id,name:e.profile.name}))),U=o(()=>V.value?.management!==void 0),W=o({get:()=>E.value===`all`?H.value.filter(e=>!D.value.includes(e.id)).map(e=>e.id):w.value,set:e=>{if(E.value===`all`){let t=new Set(H.value.map(e=>e.id));D.value=[...D.value.filter(e=>!t.has(e)),...H.value.filter(t=>!e.includes(t.id)).map(e=>e.id)]}else w.value=e}}),G=o(()=>({mode:E.value,projectIds:E.value===`selected`?[...w.value].sort():[],excludedProjectIds:E.value===`all`?[...D.value].sort():[],titleMode:O.value,titleStyle:k.value})),Ge=o(()=>[`auto`,`suggest`,`off`].map(e=>({value:e,label:s(`employees.titles.${e}`)}))),Ke=o(()=>[`emoji`,`text`].map(e=>({value:e,label:s(`employees.titles.${e}`)}))),K=o(()=>new Set(T.value)),qe=o(()=>[...K.value].filter(e=>!W.value.includes(e))),q=o(()=>!!(V.value?.agentStatus&&V.value.agentStatus!==`active`)),J=o(()=>V.value?.agentStatus===`active`&&(U.value?JSON.stringify(G.value)===A.value&&(E.value===`all`||w.value.length===K.value.size&&w.value.every(e=>K.value.has(e))):w.value.length===K.value.size&&w.value.every(e=>K.value.has(e)))),Je=o(()=>F.value?s(`employees.recruiting`):q.value?s(`employees.rehire`,{name:V.value?.name??``}):J.value||V.value?.agentId?s(`employees.assign`):s(`employees.recruitName`,{name:V.value?.name??``})),Ye=o(()=>V.value&&W.value.length?`/employees/${encodeURIComponent(V.value.id)}?project=${encodeURIComponent(W.value[0])}`:``),Y=0;g([()=>S.open,()=>S.personalSpaceId,()=>S.templateId],([e])=>{Y+=1,e&&Z(!0)},{immediate:!0}),g(P,()=>{S.open&&!M.value&&X(!0)}),g(G,()=>{I.value=N.value?I.value:``,L.value=null},{flush:`sync`});function X(e=!1){let t=new Set(H.value.map(e=>e.id));T.value=[...new Set((V.value?.assignments??[]).filter(e=>e.status===`active`&&t.has(e.personalProjectId)).map(e=>e.personalProjectId))];let n=e&&!V.value?.agentId?S.defaultProjectIds??(S.defaultProjectId?[S.defaultProjectId]:[]):[];w.value=[...new Set([...T.value,...n.filter(e=>t.has(e))])];let r=V.value?.management;E.value=r?.mode??`selected`,D.value=[...r?.excludedProjectIds??[]],O.value=r?.titleMode??`auto`,k.value=r?.titleStyle??`emoji`,r?.mode===`selected`&&V.value?.agentId&&(w.value=r.projectIds.filter(e=>t.has(e))),r?.mode===`all`&&V.value?.agentId&&(T.value=[...W.value]),A.value=JSON.stringify(G.value),j.value=V.value?.assignmentsVersion??``,N.value=!1,I.value=``,L.value=null}async function Z(e=!1){let t=++Y;M.value=!0,R.value=[],z.value=``;try{let n=await oe(S.personalSpaceId);if(t!==Y||!S.open)return;R.value=n,X(e)}catch(e){t===Y&&S.open&&(R.value=[],z.value=ae(e))}finally{t===Y&&(M.value=!1)}}function Q(){F.value||C(`close`)}async function Xe(){if(!V.value||V.value.identityConflict||!S.personalSpaceId||F.value||M.value||N.value||!j.value||J.value)return;F.value=!0,I.value=``;let e=V.value.id;try{let t=await ne(`/api/employee-templates/${encodeURIComponent(e)}/recruit`,{personalSpaceId:S.personalSpaceId,...U.value?{management:G.value}:{personalProjectIds:[...w.value]},replaceAssignments:!0,expectedAssignmentsVersion:j.value,...q.value?{reactivate:!0}:{}});await re(S.personalSpaceId),R.value=[...ie.value],X(),L.value=t,C(`recruited`,t)}catch(e){I.value=ae(e);try{let t=JSON.parse(e instanceof Error?e.message:``);N.value=t.code===`assignment_scope_conflict`||t.code===`assignment_update_incomplete`}catch{}}finally{F.value=!1}}function $(e){e===`selected`&&(w.value=[...W.value]),E.value=e}function Ze(e){if(!(F.value||M.value||N.value)&&[`ArrowLeft`,`ArrowRight`,`Home`,`End`].includes(e.key)){e.preventDefault();let t=e.key===`Home`?`all`:e.key===`End`||E.value===`all`?`selected`:`all`;$(t),e.currentTarget.querySelector(`[data-scope="${t}"]`)?.focus()}}return(a,o)=>r.open?(n(),m(`dialog`,{key:0,ref_key:`dialogRef`,ref:Be,class:`employee-recruit-dialog`,"aria-modal":`true`,"aria-labelledby":`employee-recruit-title`,onCancel:o[6]||=(...e)=>d(He)&&d(He)(...e),onKeydown:o[7]||=(...e)=>d(Ue)&&d(Ue)(...e)},[f(`header`,ue,[f(`h2`,de,c(We.value),1),f(`button`,{ref_key:`initialFocusRef`,ref:Ve,type:`button`,class:`quiet-button`,disabled:F.value,onClick:Q},c(d(s)(`employees.close`)),9,fe)]),M.value&&!B.value.length?(n(),h(_,{key:0,variant:`compact`,label:d(s)(`employees.loading`)},null,8,[`label`])):z.value?(n(),m(`div`,pe,[f(`p`,null,c(z.value),1),f(`button`,{class:`quiet-button`,type:`button`,onClick:o[0]||=e=>Z(!0)},c(d(s)(`employees.retry`)),1)])):V.value?(n(),m(`form`,{key:3,onSubmit:ee(Xe,[`prevent`])},[f(`div`,he,[B.value.length>1&&!S.templateId?(n(),m(`div`,ge,[f(`span`,null,c(d(s)(`employees.choose`)),1),p(x,{modelValue:P.value,"onUpdate:modelValue":o[1]||=e=>P.value=e,"control-id":`employee-template`,label:d(s)(`employees.choose`),options:B.value.map(e=>({value:e.id,label:e.name,meta:e.role})),disabled:F.value||M.value},null,8,[`modelValue`,`label`,`options`,`disabled`])])):l(``,!0),f(`div`,_e,[f(`span`,ve,[d(b)(V.value.id)?(n(),m(`img`,{key:0,src:d(b)(V.value.id),alt:``},null,8,ye)):(n(),m(u,{key:1},[e(c(V.value.name.slice(0,1)),1)],64))]),f(`div`,null,[f(`h3`,null,[e(c(V.value.name)+` `,1),f(`span`,null,c(V.value.role),1)]),f(`p`,null,c(V.value.description),1)])]),f(`p`,be,c(V.value.capabilities.join(` · `)),1),M.value?(n(),h(_,{key:1,variant:`compact`,label:d(s)(`employees.loadingScope`)},null,8,[`label`])):l(``,!0),U.value?(n(),m(`div`,{key:2,class:`employee-scope-mode`,role:`radiogroup`,"aria-label":d(s)(`employees.scope.rule`),onKeydown:Ze},[(n(),m(u,null,t([`all`,`selected`],e=>f(`button`,{key:e,type:`button`,role:`radio`,"data-scope":e,"aria-checked":E.value===e,tabindex:E.value===e?0:-1,disabled:F.value||M.value||N.value,onClick:t=>$(e)},c(d(s)(`employees.scope.${e===`all`?`continuousAll`:`onlySelected`}`)),9,Se)),64))],40,xe)):l(``,!0),U.value?(n(),m(`p`,Ce,c(E.value===`all`?d(s)(`employees.scope.allHint`,{name:V.value.name}):d(s)(`employees.scope.selectedHint`)),1)):l(``,!0),p(le,{modelValue:W.value,"onUpdate:modelValue":o[2]||=e=>W.value=e,projects:H.value,inline:``,hint:E.value===`all`?d(s)(`employees.scope.excludeHint`):void 0,disabled:F.value||M.value||N.value},null,8,[`modelValue`,`projects`,`hint`,`disabled`]),E.value===`all`&&D.value.length?(n(),m(`p`,we,c(d(s)(`employees.scope.excludedCount`,{count:D.value.length})),1)):l(``,!0),H.value.length?l(``,!0):(n(),m(`p`,Te,[e(c(d(s)(`employees.noProjects`))+` `,1),p(d(y),{to:d(ce)(r.personalSpaceId,`directory`),onClick:Q},{default:i(()=>[e(c(d(s)(`employees.createProject`)),1)]),_:1},8,[`to`])])),qe.value.length&&!L.value?(n(),m(`p`,Ee,c(d(s)(`employees.scopeRemoved`,{count:qe.value.length})),1)):l(``,!0),U.value&&V.value.permissions.includes(`session.title`)?(n(),m(`section`,{key:7,class:`employee-title-settings`,"aria-label":d(s)(`employees.titles.heading`)},[f(`h3`,null,c(d(s)(`employees.titles.heading`)),1),f(`div`,Oe,[f(`div`,ke,[f(`span`,null,c(d(s)(`employees.titles.mode`)),1),p(x,{modelValue:O.value,"onUpdate:modelValue":o[3]||=e=>O.value=e,"control-id":`employee-title-mode`,label:d(s)(`employees.titles.mode`),options:Ge.value,disabled:F.value||M.value||N.value},null,8,[`modelValue`,`label`,`options`,`disabled`])]),f(`div`,Ae,[f(`span`,null,c(d(s)(`employees.titles.style`)),1),p(x,{modelValue:k.value,"onUpdate:modelValue":o[4]||=e=>k.value=e,"control-id":`employee-title-style`,label:d(s)(`employees.titles.style`),options:Ke.value,disabled:F.value||M.value||N.value||O.value===`off`},null,8,[`modelValue`,`label`,`options`,`disabled`])])]),f(`p`,je,[e(c(d(s)(`employees.titles.example`))+` `,1),f(`span`,null,`【P1|`+c(k.value===`emoji`?`🔧 `:``)+`FIX|`+c(d(s)(`employees.titles.exampleTask`))+`】`,1)]),f(`p`,Me,c(d(s)(`employees.titles.boundary`)),1)],8,De)):l(``,!0),f(`section`,{class:`employee-permissions`,"aria-label":d(s)(`employees.permissions`)},[f(`strong`,null,c(d(s)(`employees.permissions`)),1),f(`ul`,null,[(n(!0),m(u,null,t(V.value.permissions,e=>(n(),m(`li`,{key:e},c(e===`board.read`?d(s)(`employees.boardRead`):e===`board.write`?d(s)(`employees.boardWrite`):e===`session.title`?d(s)(`employees.titles.heading`):e),1))),128))]),f(`p`,null,c(d(s)(`employees.noExecutor`)),1)],8,Ne),V.value.runtime?(n(),m(`p`,{key:8,class:te([`employee-runtime`,{"is-warning":V.value.runtimeStatus!==`ready`}])},c(V.value.runtimeStatus===`ready`?d(s)(`employees.hostReady`):d(s)(`employees.installRequired`)),3)):l(``,!0),I.value||V.value.identityConflict?(n(),m(`p`,Pe,c(I.value||d(s)(`employees.errors.identity_conflict`)),1)):l(``,!0),N.value?(n(),m(`button`,{key:10,type:`button`,class:`quiet-button`,disabled:M.value,onClick:o[5]||=e=>Z()},c(d(s)(`employees.reloadScope`)),9,Fe)):l(``,!0),L.value?(n(),m(`div`,Ie,[f(`strong`,null,c(d(s)(`employees.scopeSaved`)),1),f(`p`,null,c(E.value===`all`?d(s)(`employees.scope.successAll`,{count:W.value.length}):W.value.length?d(s)(`employees.successMultiple`,{count:W.value.length}):d(s)(`employees.successUnassigned`)),1)])):l(``,!0)]),f(`footer`,Le,[f(`button`,{class:`quiet-button`,type:`button`,disabled:F.value,onClick:Q},c(d(s)(`employees.cancel`)),9,Re),J.value&&Ye.value&&!F.value&&!M.value&&!N.value&&V.value.runtimeStatus===`ready`?(n(),h(d(y),{key:0,class:`employee-primary`,to:Ye.value,onClick:Q},{default:i(()=>[e(c(d(s)(`employees.open`)),1)]),_:1},8,[`to`])):(n(),m(`button`,{key:1,class:`employee-primary`,type:`submit`,disabled:F.value||M.value||N.value||!j.value||J.value||V.value.identityConflict||!r.personalSpaceId},[F.value?(n(),h(_,{key:0,variant:`inline`,label:Je.value},null,8,[`label`])):(n(),m(u,{key:1},[e(c(Je.value),1)],64))],8,ze))])],32)):(n(),m(`p`,me,c(d(s)(`employees.noTemplates`)),1))],544)):l(``,!0)}}),[[`__scopeId`,`data-v-53eaa264`]]);export{S as t};
@@ -1 +0,0 @@
1
- .bole-panel[data-v-b9fe7dc9]{--bole-ink:#293d31;--bole-muted:#596b60;--bole-line:#dde5df;min-width:0;min-height:0;color:var(--bole-ink);background:#fafbf9;flex-direction:column;flex:1;display:flex;overflow:hidden}.bole-header[data-v-b9fe7dc9],.bole-controls[data-v-b9fe7dc9]{flex:none;padding-inline:24px}.bole-header[data-v-b9fe7dc9]{border-bottom:1px solid var(--bole-line);background:#fff;flex-wrap:wrap;align-items:center;gap:4px 16px;padding-block:8px;display:flex}.bole-heading[data-v-b9fe7dc9]{flex-wrap:wrap;align-items:center;gap:4px 24px;display:flex}.bole-heading h2[data-v-b9fe7dc9]{margin:0;font-size:20px;font-weight:650;line-height:1.3}.bole-refresh[data-v-b9fe7dc9],.bole-alert button[data-v-b9fe7dc9]{min-height:36px;color:var(--bole-muted);background:0 0;border:0;border-radius:8px;padding:8px 12px;font-size:13px}.bole-refresh[data-v-b9fe7dc9]:hover:not(:disabled),.bole-alert button[data-v-b9fe7dc9]:hover{background:#e9efea}.bole-refresh[data-v-b9fe7dc9]:disabled{cursor:progress}.bole-summary[data-v-b9fe7dc9]{flex-wrap:wrap;gap:8px 16px;margin:0 0 0 auto;display:flex}.bole-summary div[data-v-b9fe7dc9]{align-items:baseline;gap:8px;display:flex}.bole-summary dt[data-v-b9fe7dc9]{color:var(--bole-muted);font-size:12px}.bole-summary dd[data-v-b9fe7dc9]{font-variant-numeric:tabular-nums;margin:0;font-size:15px;font-weight:650}.bole-controls[data-v-b9fe7dc9]{z-index:2;border-bottom:1px solid var(--bole-line);background:#fff;padding-bottom:12px}.bole-views[data-v-b9fe7dc9]{flex-wrap:wrap;gap:20px;display:flex}.bole-views button[data-v-b9fe7dc9]{min-height:44px;color:var(--bole-muted);background:0 0;border:0;align-items:center;gap:8px;padding:10px 0;font-size:14px;display:flex;position:relative}.bole-views button[aria-pressed=true][data-v-b9fe7dc9]{color:#214b33;font-weight:650}.bole-views button[aria-pressed=true][data-v-b9fe7dc9]:after{content:"";background:#315c43;height:2px;position:absolute;inset:auto 0 -1px}.bole-views span[data-v-b9fe7dc9]{color:var(--bole-muted);font-variant-numeric:tabular-nums;font-size:12px;font-weight:500}.bole-filters[data-v-b9fe7dc9]{flex-wrap:wrap;align-items:center;gap:12px;padding-top:12px;display:flex}.bole-search[data-v-b9fe7dc9]{flex:220px;min-width:0}.bole-search[data-v-b9fe7dc9],.bole-filters select[data-v-b9fe7dc9]{min-height:44px;color:var(--bole-ink);background:#fff;border:1px solid #bdcbbf;border-radius:8px;padding:10px 12px;font-size:13px}.bole-search[data-v-b9fe7dc9]::placeholder{color:var(--bole-muted)}.bole-filters .project-scope-picker[data-v-b9fe7dc9]{flex:0 260px}.bole-role-filters[data-v-b9fe7dc9]{flex-wrap:wrap;gap:4px 8px;margin-top:12px;display:flex}.bole-role-filters button[data-v-b9fe7dc9]{min-height:36px;color:var(--bole-muted);background:0 0;border:0;border-radius:8px;padding:8px 10px;font-size:12px}.bole-role-filters button[aria-pressed=true][data-v-b9fe7dc9]{color:#244d34;background:#e8f0e9;font-weight:600}.bole-role-filters button[data-v-b9fe7dc9]:hover{background:#edf2ed}.bole-role-filters span[data-v-b9fe7dc9]{font-variant-numeric:tabular-nums;margin-left:4px}.bole-role-filters .bole-clear[data-v-b9fe7dc9]{text-underline-offset:3px;margin-left:auto;text-decoration:underline}.bole-content[data-v-b9fe7dc9]{overscroll-behavior:contain;scrollbar-gutter:stable;flex:1;min-height:0;padding:16px 24px 32px;overflow:auto}.bole-result-count[data-v-b9fe7dc9]{color:var(--bole-muted);align-self:center;font-size:12px}.bole-agent-list[data-v-b9fe7dc9]{border:1px solid var(--bole-line);background:#fff;border-radius:12px}.bole-table-heading[data-v-b9fe7dc9],.bole-agent-row[data-v-b9fe7dc9]{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr) minmax(0,.8fr);gap:24px;padding:16px;display:grid}.bole-table-heading[data-v-b9fe7dc9]{color:var(--bole-muted);background:#f0f4f0;border-radius:12px 12px 0 0;padding-block:12px;font-size:12px}.bole-agent-row[data-v-b9fe7dc9]{border-top:1px solid var(--bole-line);align-items:center}.bole-agent-row[data-v-b9fe7dc9]:hover{background:#f8faf7}.bole-agent-row[data-v-b9fe7dc9]:last-child{border-radius:0 0 12px 12px}.bole-agent-identity[data-v-b9fe7dc9]{align-items:center;gap:12px;min-width:0;display:flex}.bole-agent-identity>div[data-v-b9fe7dc9]{min-width:0}.bole-agent-mark[data-v-b9fe7dc9]{background:#edf2ed;border-radius:10px;flex:0 0 36px;place-items:center;height:36px;font-size:18px;display:grid;overflow:hidden}.bole-agent-mark img[data-v-b9fe7dc9]{object-fit:cover;width:100%;height:100%}.bole-agent-identity strong[data-v-b9fe7dc9],.bole-recruitment-identity strong[data-v-b9fe7dc9]{overflow-wrap:anywhere;font-size:14px;font-weight:600;display:block}.bole-agent-identity small[data-v-b9fe7dc9],.bole-timeline small[data-v-b9fe7dc9]{color:var(--bole-muted);margin-top:4px;font-size:12px;line-height:1.5;display:block}.bole-agent-work p[data-v-b9fe7dc9]{overflow-wrap:anywhere;margin:6px 0 0;font-size:13px;line-height:1.6}.bole-agent-work .is-idle[data-v-b9fe7dc9]{color:var(--bole-muted);margin:0}.bole-status[data-v-b9fe7dc9]{color:#315b40;background:#edf4ee;border-radius:4px;padding:3px 6px;font-size:11px;display:inline-block}.bole-status[data-status=blocked][data-v-b9fe7dc9]{color:#893f2d;background:#faeae4}.bole-status[data-status=awaiting_review][data-v-b9fe7dc9]{color:#6f591f;background:#f4efd9}.bole-agent-projects[data-v-b9fe7dc9]{min-width:0;color:var(--bole-muted);font-size:12px;line-height:1.6}.bole-agent-projects span[data-v-b9fe7dc9]{overflow-wrap:anywhere;display:block}.bole-agent-projects summary[data-v-b9fe7dc9]{cursor:pointer;color:#315c43;width:fit-content;min-height:32px;padding-block:6px}.bole-timeline[data-v-b9fe7dc9]{border-top:1px solid var(--bole-line);margin:0;padding:0;list-style:none}.bole-timeline li[data-v-b9fe7dc9]{border-bottom:1px solid var(--bole-line);grid-template-columns:minmax(0,1fr) minmax(0,1.7fr) minmax(120px,.6fr);gap:24px;padding:20px 0;display:grid}.bole-recruitment-reason p[data-v-b9fe7dc9]{overflow-wrap:anywhere;max-width:70ch;margin:0;font-size:13px;line-height:1.7}.bole-timeline time[data-v-b9fe7dc9]{color:var(--bole-muted);font-size:12px;line-height:1.6}.bole-empty[data-v-b9fe7dc9]{color:var(--bole-muted);text-align:center;padding:32px 16px;font-size:13px}.bole-alert[data-v-b9fe7dc9]{color:#7b4033;background:#fff1e9;flex:none;justify-content:space-between;align-items:center;gap:16px;padding:8px 24px;font-size:13px;display:flex}.bole-panel[data-v-b9fe7dc9] :is(button,input,select,summary):focus-visible,.bole-content[data-v-b9fe7dc9]:focus-visible{outline-offset:2px;outline:2px solid #356448}@media (width<=1100px){.bole-table-heading[data-v-b9fe7dc9],.bole-agent-row[data-v-b9fe7dc9]{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:16px}.bole-table-heading[data-v-b9fe7dc9]>:last-child{display:none}.bole-agent-projects[data-v-b9fe7dc9]{grid-column:2}.bole-timeline li[data-v-b9fe7dc9]{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:12px 20px}.bole-timeline time[data-v-b9fe7dc9]{grid-column:2}}@media (width<=700px),(height<=560px){.bole-panel[data-v-b9fe7dc9]{overscroll-behavior:contain;overflow:auto}.bole-content[data-v-b9fe7dc9]{flex:none;overflow:visible}}@media (width<=700px){.bole-header[data-v-b9fe7dc9],.bole-controls[data-v-b9fe7dc9]{padding-inline:16px}.bole-content[data-v-b9fe7dc9]{padding:16px 16px 28px}.bole-heading[data-v-b9fe7dc9]{gap:4px 16px;width:100%}.bole-views[data-v-b9fe7dc9]{gap:16px}.bole-summary[data-v-b9fe7dc9]{gap:8px 16px;margin-left:0}.bole-refresh[data-v-b9fe7dc9]{margin-left:auto}.bole-filters[data-v-b9fe7dc9]{gap:8px}.bole-search[data-v-b9fe7dc9]{flex-basis:100%}.bole-filters .project-scope-picker[data-v-b9fe7dc9]{flex:180px}.bole-filters select[data-v-b9fe7dc9]{flex:120px}.bole-role-filters[data-v-b9fe7dc9]{gap:4px}.bole-table-heading[data-v-b9fe7dc9]{display:none}.bole-agent-row[data-v-b9fe7dc9]{grid-template-columns:minmax(0,1fr);gap:12px}.bole-agent-row[data-v-b9fe7dc9]:first-of-type{border-top:0}.bole-agent-projects[data-v-b9fe7dc9]{grid-column:auto;padding-left:48px}.bole-agent-work[data-v-b9fe7dc9]{padding-left:48px}.bole-timeline li[data-v-b9fe7dc9]{grid-template-columns:minmax(0,1fr);gap:12px}.bole-timeline time[data-v-b9fe7dc9]{grid-column:auto}.bole-alert[data-v-b9fe7dc9]{padding-inline:16px}}fieldset[data-v-2da40afc]{border:0;min-width:0;margin:0;padding:0}.employee-share-result[data-v-2da40afc]{gap:12px;display:grid}.employee-share-result label[data-v-2da40afc]{gap:8px;font-size:13px;display:grid}.employee-share-result>div[data-v-2da40afc]{align-items:center;gap:16px;display:flex}.employee-share-result a[data-v-2da40afc]{color:#315c43;font-size:13px}.employee-share-local[data-v-2da40afc]{color:#725a2d}.employee-share-preview[data-v-2da40afc]{color:#315c43;font-weight:600}.employee-share-empty[data-v-2da40afc]{color:#725a2d;line-height:1.6}.employee-share-active[data-v-2da40afc]{border-top:1px solid #e6ece8;padding-top:16px}.employee-share-active h3[data-v-2da40afc]{margin:0 0 10px;font-size:14px}.employee-share-active>div[data-v-2da40afc]{justify-content:space-between;align-items:center;gap:12px;padding:6px 0;font-size:13px;display:flex}.employee-share-active span[data-v-2da40afc]{overflow-wrap:anywhere}footer>span[data-v-2da40afc]{color:#526659;margin-right:auto;font-size:12px}.employee-workbench-view[data-v-fba11ab5]{background:#fff;flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.employee-workbench-toolbar[data-v-fba11ab5]{flex:none;justify-content:space-between;align-items:center;gap:20px;padding:16px 24px 10px;display:flex}.employee-workbench-identity[data-v-fba11ab5]{align-items:center;gap:10px;min-width:0;display:flex}.employee-workbench-mark[data-v-fba11ab5]{color:#315c43;background:#eaf0ec;border-radius:9px;flex:0 0 32px;place-items:center;height:32px;font-size:17px;font-weight:650;display:grid;overflow:hidden}.employee-workbench-mark img[data-v-fba11ab5]{object-fit:cover;width:100%;height:100%}.employee-share-button[data-v-fba11ab5]{color:#42624c;cursor:pointer;background:0 0;border:0;border-radius:8px;flex:0 0 40px;place-items:center;width:40px;height:40px;display:grid}.employee-share-button[data-v-fba11ab5]:hover{background:#edf3ee}.employee-share-button[data-v-fba11ab5]:focus-visible{outline-offset:2px;outline:2px solid #356448}.employee-workbench-toolbar h1[data-v-fba11ab5]{color:#253c2f;overflow-wrap:anywhere;margin:0;font-size:18px;font-weight:650;line-height:1.4}.employee-workbench-toolbar h1 span[data-v-fba11ab5]{color:#59685f;margin-left:8px;font-size:12px;font-weight:400}.employee-workbench-actions[data-v-fba11ab5]{align-items:center;gap:12px;min-width:0;display:flex}.employee-manage-projects[data-v-fba11ab5],.employee-back-to-all[data-v-fba11ab5]{color:#465b4d;min-height:40px;font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:8px;justify-content:center;align-items:center;gap:7px;padding:8px 10px;font-size:13px;display:inline-flex}.employee-manage-projects[data-v-fba11ab5]:hover:not(:disabled),.employee-back-to-all[data-v-fba11ab5]:hover{background:#e2ece5}.employee-manage-projects[data-v-fba11ab5]:disabled{color:#647568;cursor:default}.employee-manage-projects[data-v-fba11ab5]:focus-visible,.employee-back-to-all[data-v-fba11ab5]:focus-visible{outline-offset:3px;outline:2px solid #356448}.employee-workbench-frame[data-v-fba11ab5]{border:0;flex:1;width:100%;height:100%;min-height:0}.employee-workbench-state[data-v-fba11ab5]{color:#58695e;text-align:center;flex:1;place-content:center;justify-items:center;gap:14px;padding:30px;font-size:14px;display:grid}.employee-workbench-state a[data-v-fba11ab5]{color:#315c43}.employee-workbench-state h2[data-v-fba11ab5]{color:#253c2f;font-size:20px;font-weight:600}.employee-workbench-state p[data-v-fba11ab5]{max-width:48ch;margin:0;line-height:1.7}@media (width<=640px){.employee-workbench-toolbar[data-v-fba11ab5]{flex-wrap:wrap;gap:10px;padding:8px 16px 10px}.employee-workbench-actions[data-v-fba11ab5]{justify-content:flex-end;gap:8px;width:100%}.employee-workbench-toolbar h1 span[data-v-fba11ab5]{margin-left:6px}}
@@ -1,3 +0,0 @@
1
- import{C as e,F as t,H as n,N as r,T as i,V as a,Z as o,_ as s,a as c,at as l,b as u,d,h as f,m as p,nt as m,u as h,v as g,w as _,x as v,y,z as b}from"./i18n-CVFADb_M.js";import{t as x}from"./console-BAIVNC-N.js";import{t as ee}from"./GrowthLoading-WXCj8b0r.js";import{t as S}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{h as C,m as w}from"./useApi-CROJJdhE-CuJ16v2S.js";import{t as T}from"./vue-router-C8KuEZ6a.js";import{i as E,n as D,r as O}from"./client-Bl4oiW3E.js";import{a as k,d as A,i as j,l as M,o as N,s as P,t as F}from"./AgentHand-BfLYPGjg.js";import{t as I}from"./useModalDialog-Ddv2XJQi.js";/* empty css */import{t as L}from"./ProjectScopePicker-Cu5PdxF6.js";import{i as te,r as R,t as z}from"./shared-report-BQD6l_cS.js";import{t as ne}from"./EmployeeRecruitDialog-D-W043v4.js";var B=[`aria-busy`],V={key:0,class:`bole-alert`,role:`alert`},re={class:`bole-header`},H={class:`bole-heading`},ie={id:`bole-overview-title`},ae=[`aria-label`],oe=[`aria-pressed`],U={"data-testid":`people-total`},W=[`aria-pressed`],G=[`aria-label`],K={"data-testid":`people-working`},q=[`disabled`],se={class:`bole-controls`},ce={class:`bole-filters`},le=[`aria-label`,`placeholder`],ue=[`aria-label`],J={value:`all`},de={value:`working`},Y={value:`idle`},fe=[`aria-label`],pe=[`aria-pressed`],me=[`aria-pressed`,`onClick`],X={key:1,class:`bole-result-count`,role:`status`},he=[`aria-label`],ge={key:1,"aria-labelledby":`bole-work-title`},Z={key:0,class:`bole-empty`,role:`status`},_e={key:1,class:`bole-agent-list`},ve={class:`bole-table-heading`,"aria-hidden":`true`},ye={class:`bole-agent-identity`},be={class:`bole-agent-mark`,"aria-hidden":`true`},xe=[`src`],Se={class:`bole-agent-work`},Ce=[`data-status`],we={key:1,class:`is-idle`},Te={class:`bole-agent-projects`},Ee={key:0},De={key:1},Oe={key:2,class:`bole-empty`},ke={key:2,"aria-labelledby":`bole-history-title`},Ae={key:0,class:`bole-timeline`},je={class:`bole-recruitment-identity`},Me={class:`bole-recruitment-reason`},Ne=[`datetime`],Pe={key:1,class:`bole-empty`},Fe=`__bole_unassigned__`,Ie=200,Le=S(i({__name:`BolePeoplePanel`,props:{personalSpaceId:{},projects:{}},setup(i){let a=i,p=o([]),x=o([]),S=o([]),C=o(!1),w=o(!1),T=o(`people`),E=o(``),O=o(``),k=o(`all`),A=o(null),M=o(null),N=s(()=>x.value.length>=Ie),P=0,I=new Set([`awaiting_recruitment`,`queued`,`running`,`paused`,`awaiting_review`,`blocked`]),te=s(()=>new Map(a.projects.map(e=>[e.project_id,e.profile.name]))),R=s(()=>p.value.filter(e=>e.status===`active`)),z=s(()=>x.value.filter(e=>I.has(e.status))),ne=s(()=>new Set(ze.value.filter(e=>e.task).map(e=>e.id))),Le=s(()=>new Set(R.value.flatMap(e=>e.projectIds).filter(Boolean))),Re=s(()=>{let e=[`coordinator`,`durable`,`hr`,`temporary`],t=new Map;for(let e of R.value)t.set(e.type,(t.get(e.type)??0)+1);return[...t.entries()].sort(([t],[n])=>rt(e,t)-rt(e,n)).map(([e,t])=>({type:e,count:t,label:it(e)}))}),ze=s(()=>R.value.map(e=>({...e,task:e.workStatus?I.has(e.workStatus)&&e.currentTaskId?x.value.find(t=>t.id===e.currentTaskId)??{id:e.currentTaskId,title:e.currentTaskId,status:e.workStatus,projectId:``,agentIds:[e.id],updatedAt:``}:void 0:z.value.filter(t=>t.agentIds.includes(e.id)).sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt))[0]}))),Be=s(()=>[...S.value].sort((e,t)=>t.createdAt.localeCompare(e.createdAt))),Ve=s(()=>[...new Set([...a.projects.map(e=>e.project_id),...p.value.flatMap(e=>e.projectIds),...x.value.map(e=>e.projectId),...S.value.map(e=>e.projectId)].filter(Boolean))].map(e=>({id:e,name:te.value.get(e)??e})).sort((e,t)=>e.name.localeCompare(t.name)).concat({id:Fe,name:c(`employees.bole.noProject`)})),He=s({get:()=>A.value??Ve.value.map(e=>e.id),set:e=>{A.value=e.length===Ve.value.length?null:e}}),Ue=s(()=>ze.value.filter(e=>{let t=[...e.projectIds,...e.task?.projectId?[e.task.projectId]:[]];return Ke(t)&&(!O.value||e.type===O.value)&&(k.value===`all`||(k.value===`working`?!!e.task:!e.task))&&qe([e.name,e.responsibility,e.task?.title??``,...t.map(st)])}).sort((e,t)=>Number(!!t.task)-Number(!!e.task)||e.name.localeCompare(t.name))),We=s(()=>Be.value.filter(e=>Ke(e.projectId?[e.projectId]:[])&&(!O.value||e.positionKind===O.value)&&qe([ot(e.agentId),e.reason,e.workKind,st(e.projectId)]))),Ge=s(()=>E.value||O.value||A.value!==null||T.value===`people`&&k.value!==`all`);function Ke(e){return A.value===null||(e.length?e:[Fe]).some(e=>A.value?.includes(e))}function qe(e){return e.join(` `).toLocaleLowerCase().includes(E.value.trim().toLocaleLowerCase())}function Je(){E.value=``,O.value=``,k.value=`all`,A.value=null}function Ye(e){return j(e.replace(/^employee\./,``))}b([T,E,O,k,A],()=>{M.value&&(M.value.scrollTop=0)}),b(()=>a.personalSpaceId,()=>{Je(),Xe()},{immediate:!0});async function Xe(){let e=++P;if(p.value=[],x.value=[],S.value=[],w.value=!1,!a.personalSpaceId){C.value=!1;return}C.value=!0;let t=new URLSearchParams({personalSpaceId:a.personalSpaceId}),n=await Promise.allSettled([D(`/api/project-agents?${t}`),D(`/api/project-agent-tasks?${t}&limit=${Ie}`),D(`/api/project-agent-recruitments?${t}`)]);e===P&&(n[0].status===`fulfilled`&&(p.value=Ze(n[0].value,`agents`).map($e).filter(nt)),n[1].status===`fulfilled`&&(x.value=Ze(n[1].value,`tasks`).map(et).filter(nt)),n[2].status===`fulfilled`&&(S.value=Ze(n[2].value,`recruitments`).map(tt).filter(nt)),w.value=n.some(e=>e.status===`rejected`),C.value=!1)}function Q(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function Ze(e,t){if(Array.isArray(e))return e;let n=Q(e),r=n[t]??n.items;return Array.isArray(r)?r:[]}function $(e,t,n=t){let r=e[t]??e[n];return typeof r==`string`?r:``}function Qe(e){return Array.isArray(e)?e:[]}function $e(e){let t=Q(e),n=Q(t.profile),r=$(t,`agentId`,`agent_id`);if(!r)return null;let i=Qe(t.assignments).flatMap(e=>{let t=Q(e),n=$(t,`status`),r=$(t,`personalProjectId`,`personal_project_id`);return n===`active`&&r?[r]:[]}),a=$(t,`personalProjectId`,`personal_project_id`);return{id:r,name:$(n,`displayName`,`display_name`)||$(n,`name`)||r,emoji:$(n,`occupationEmoji`,`occupation_emoji`)||`✦`,responsibility:$(n,`responsibility`),type:$(n,`agentType`,`agent_type`)||`other`,status:$(n,`status`)||`active`,projectIds:[...new Set([...i,...a?[a]:[]])],currentTaskId:$(t,`currentTaskId`,`current_task_id`),workStatus:$(t,`workStatus`,`work_status`)}}function et(e){let t=Q(e),n=$(t,`taskId`,`task_id`);if(!n)return null;let r=[$(t,`ownerAgentId`,`owner_agent_id`),$(t,`leadAgentId`,`lead_agent_id`)],i=Qe(t.participants).flatMap(e=>{let t=Q(e),n=$(t,`status`);return n&&!I.has(n)?[]:[$(t,`agentId`,`agent_id`)]});return{id:n,title:$(t,`title`)||n,status:$(t,`status`)||`queued`,projectId:$(t,`personalProjectId`,`personal_project_id`),agentIds:[...new Set([...r,...i].filter(Boolean))],updatedAt:$(t,`updatedAt`,`updated_at`)||$(t,`createdAt`,`created_at`)}}function tt(e){let t=Q(e),n=$(t,`recruitmentId`,`recruitment_id`);return n?{id:n,agentId:$(t,`recruitedAgentId`,`recruited_agent_id`)||$(t,`proposedAgentId`,`proposed_agent_id`),projectId:$(t,`personalProjectId`,`personal_project_id`),workKind:$(t,`workKind`,`work_kind`),positionKind:$(t,`positionKind`,`position_kind`),reason:$(t,`reason`)||$(t,`reasonCode`,`reason_code`),status:$(t,`status`),createdAt:$(t,`createdAt`,`created_at`)}:null}function nt(e){return e!==null}function rt(e,t){let n=e.indexOf(t);return n<0?e.length:n}function it(e){return[`coordinator`,`durable`,`hr`,`temporary`].includes(e)?c(`employees.bole.types.${e}`):c(`employees.bole.types.other`)}function at(e){return[`awaiting_recruitment`,`queued`,`running`,`paused`,`failed`,`awaiting_review`,`blocked`].includes(e)?c(`employees.bole.status.${e}`):e}function ot(e){return p.value.find(t=>t.id===e)?.name??e}function st(e){return te.value.get(e)??c(`employees.bole.noProject`)}function ct(e){if(!e)return c(`employees.bole.unknownTime`);let t=new Date(e);return Number.isNaN(t.getTime())?e:new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`}).format(t)}return(i,a)=>(r(),v(`div`,{class:`bole-panel`,"aria-busy":C.value},[w.value?(r(),v(`div`,V,[g(`span`,null,l(m(c)(`employees.bole.partialError`)),1),g(`button`,{type:`button`,onClick:Xe},l(m(c)(`employees.retry`)),1)])):u(``,!0),g(`header`,re,[g(`div`,H,[g(`h2`,ie,l(m(c)(`employees.bole.title`)),1),g(`nav`,{class:`bole-views`,"aria-label":m(c)(`employees.bole.viewLabel`)},[g(`button`,{id:`bole-work-title`,type:`button`,"aria-pressed":T.value===`people`,onClick:a[0]||=e=>T.value=`people`},[e(l(m(c)(`employees.bole.currentWork`))+` `,1),g(`span`,U,l(C.value?`—`:R.value.length),1)],8,oe),g(`button`,{id:`bole-history-title`,type:`button`,"aria-pressed":T.value===`history`,onClick:a[1]||=e=>T.value=`history`},[e(l(m(c)(`employees.bole.recruitmentHistory`))+` `,1),g(`span`,null,l(C.value?`—`:S.value.length),1)],8,W)],8,ae)]),g(`dl`,{class:`bole-summary`,"aria-label":m(c)(`employees.bole.overview`)},[g(`div`,K,[g(`dt`,null,l(m(c)(`employees.bole.workingNow`)),1),g(`dd`,null,l(C.value?`—`:ne.value.size),1)]),g(`div`,null,[g(`dt`,null,l(m(c)(`employees.bole.coveredProjects`)),1),g(`dd`,null,l(C.value?`—`:Le.value.size),1)])],8,G),g(`button`,{class:`bole-refresh`,type:`button`,disabled:C.value,onClick:Xe},l(m(c)(`common.actions.refresh`)),9,q)]),g(`div`,se,[g(`div`,ce,[n(g(`input`,{"onUpdate:modelValue":a[2]||=e=>E.value=e,type:`search`,class:`bole-search`,"aria-label":m(c)(`employees.bole.search`),placeholder:m(c)(`employees.bole.search`)},null,8,le),[[d,E.value]]),_(L,{modelValue:He.value,"onUpdate:modelValue":a[3]||=e=>He.value=e,projects:Ve.value,label:m(c)(`employees.allProjects.projectFilter`),"all-label":m(c)(`employees.bole.allProjects`),"empty-label":m(c)(`employees.filterEmpty`),compact:``,hint:``},null,8,[`modelValue`,`projects`,`label`,`all-label`,`empty-label`]),T.value===`people`?n((r(),v(`select`,{key:0,"onUpdate:modelValue":a[4]||=e=>k.value=e,"aria-label":m(c)(`employees.bole.workFilter`)},[g(`option`,J,l(m(c)(`employees.bole.allWork`)),1),g(`option`,de,l(m(c)(`employees.bole.workingNow`)),1),g(`option`,Y,l(m(c)(`employees.bole.withoutTask`)),1)],8,ue)),[[h,k.value]]):u(``,!0)]),g(`div`,{class:`bole-role-filters`,role:`group`,"aria-label":m(c)(`employees.bole.distribution`)},[g(`button`,{type:`button`,"aria-pressed":!O.value,onClick:a[5]||=e=>O.value=``},l(m(c)(`employees.bole.allRoles`)),9,pe),(r(!0),v(f,null,t(Re.value,t=>(r(),v(`button`,{key:t.type,type:`button`,"aria-pressed":O.value===t.type,onClick:e=>O.value=O.value===t.type?``:t.type},[e(l(t.label)+` `,1),g(`span`,null,l(t.count),1)],8,me))),128)),Ge.value?(r(),v(`button`,{key:0,class:`bole-clear`,type:`button`,onClick:Je},l(m(c)(`employees.bole.clearFilters`)),1)):u(``,!0),Ge.value&&!C.value?(r(),v(`span`,X,l(m(c)(`employees.bole.resultCount`,{count:T.value===`people`?Ue.value.length:We.value.length})),1)):u(``,!0)],8,fe)]),g(`div`,{ref_key:`scrollRegion`,ref:M,class:`bole-content`,tabindex:`0`,role:`region`,"aria-label":m(c)(T.value===`people`?`employees.bole.currentWork`:`employees.bole.recruitmentHistory`)},[C.value?(r(),y(ee,{key:0,variant:`compact`,label:m(c)(`employees.bole.loading`)},null,8,[`label`])):T.value===`people`?(r(),v(`section`,ge,[N.value?(r(),v(`p`,Z,l(m(c)(`employees.bole.taskLimit`)),1)):u(``,!0),Ue.value.length?(r(),v(`div`,_e,[g(`div`,ve,[a[6]||=g(`span`,null,`Agent`,-1),g(`span`,null,l(m(c)(`employees.bole.taskColumn`)),1),g(`span`,null,l(m(c)(`employees.bole.projectsColumn`)),1)]),(r(!0),v(f,null,t(Ue.value,n=>(r(),v(`article`,{key:n.id,class:`bole-agent-row`},[g(`div`,ye,[g(`span`,be,[Ye(n.id)?(r(),v(`img`,{key:0,src:Ye(n.id),alt:``},null,8,xe)):(r(),v(f,{key:1},[e(l(n.emoji),1)],64))]),g(`div`,null,[g(`strong`,null,l(n.name),1),_(F,{"agent-id":n.id},null,8,[`agent-id`]),g(`small`,null,l(n.responsibility||it(n.type)),1)])]),g(`div`,Se,[n.task?(r(),v(f,{key:0},[g(`span`,{class:`bole-status`,"data-status":n.task.status},l(at(n.task.status)),9,Ce),g(`p`,null,l(n.task.title),1)],64)):(r(),v(`p`,we,l(m(c)(`employees.bole.idle`)),1))]),g(`div`,Te,[n.projectIds.length?(r(),v(f,{key:0},[(r(!0),v(f,null,t(n.projectIds.slice(0,2),e=>(r(),v(`span`,{key:e},l(st(e)),1))),128)),n.projectIds.length>2?(r(),v(`details`,Ee,[g(`summary`,null,l(m(c)(`employees.bole.moreProjects`,{count:n.projectIds.length-2})),1),(r(!0),v(f,null,t(n.projectIds.slice(2),e=>(r(),v(`span`,{key:e},l(st(e)),1))),128))])):u(``,!0)],64)):(r(),v(`span`,De,l(n.task?.projectId?st(n.task.projectId):m(c)(`employees.bole.noProject`)),1))])]))),128))])):(r(),v(`p`,Oe,l(m(c)(Ge.value?`employees.bole.noMatch`:`employees.bole.noAgents`)),1))])):(r(),v(`section`,ke,[We.value.length?(r(),v(`ol`,Ae,[(r(!0),v(f,null,t(We.value,e=>(r(),v(`li`,{key:e.id},[g(`div`,je,[g(`strong`,null,l(ot(e.agentId)),1),g(`small`,null,l(it(e.positionKind))+` · `+l(st(e.projectId)),1)]),g(`div`,Me,[g(`p`,null,l(e.reason),1),g(`small`,null,l(e.workKind||e.status),1)]),g(`time`,{datetime:e.createdAt},l(ct(e.createdAt)),9,Ne)]))),128))])):(r(),v(`p`,Pe,l(m(c)(Ge.value?`employees.bole.noMatch`:`employees.bole.noRecruitments`)),1))]))],8,he)],8,B))}}),[[`__scopeId`,`data-v-b9fe7dc9`]]),Re={id:`employee-task-title`},ze=[`disabled`,`aria-label`],Be={class:`employee-dialog-body`},Ve={key:1,class:`employee-dialog-error`,role:`alert`},He=[`disabled`],Ue=[`disabled`],We={disabled:``,value:``},Ge=[`value`],Ke=[`readonly`,`disabled`],qe={key:0,class:`employee-task-status`},Je=[`readonly`,`disabled`],Ye=[`disabled`],Xe=[`value`],Q=[`readonly`,`disabled`],Ze=[`readonly`,`disabled`],$=[`disabled`],Qe=[`disabled`],$e=i({__name:`EmployeeTaskDialog`,props:{open:{type:Boolean},item:{},projects:{},defaultProjectId:{},personalSpaceId:{},canWrite:{type:Boolean}},emits:[`close`,`saved`],setup(i,{emit:a}){let _=i,x=a,S=o(!1),C=o(!1),w=o(``),T=o(null),D=o(``),O=o(``),k=o(``),A=o(`medium`),j=o(``),M=o(``),N=0,F={signature:``,id:``},L=s(()=>_.canWrite&&!C.value&&!w.value&&!!D.value&&O.value.trim().length>=2),{dialogRef:te,initialFocusRef:R,onCancel:z,onKeydown:ne}=I(()=>_.open,H);b([()=>_.open,()=>_.item,()=>_.personalSpaceId],()=>{V()},{immediate:!0});async function B(e,t){return E(`/api/employee-templates/jefa/call`,{personalSpaceId:_.personalSpaceId,personalProjectId:D.value,tool:e,arguments:t})}async function V(){let e=++N;if(_.open&&(w.value=``,T.value=null,F={signature:``,id:``},D.value=_.item?.projectId??_.defaultProjectId??``,O.value=``,k.value=``,A.value=`medium`,j.value=``,M.value=``,C.value=!!_.item,_.item))try{let t=await B(`get_task`,{workItemId:_.item.id});if(e!==N)return;if(t.item.id!==_.item.id||t.item.projectId!==D.value||!t.item.updatedAt)throw Error(c(`employees.loadError`));T.value=t.item,O.value=t.item.title,k.value=t.item.summary??``,A.value=t.item.priority??`medium`,j.value=t.item.acceptanceCriteria?.join(`
2
- `)??``,M.value=t.item.tags?.join(`, `)??``}catch(t){e===N&&(w.value=P(t))}finally{e===N&&(C.value=!1)}}async function re(){if(!L.value||S.value)return;S.value=!0;let e={title:O.value.trim(),summary:k.value.trim()||O.value.trim(),priority:A.value,acceptanceCriteria:j.value.split(`
3
- `).map(e=>e.trim()).filter(Boolean),tags:M.value.split(/[,,]/).map(e=>e.trim()).filter(Boolean)},t=JSON.stringify([D.value,T.value?.updatedAt,e]);F.signature!==t&&(F={signature:t,id:`board-edit-${crypto.randomUUID()}`});try{T.value?await B(`update_tasks`,{requestId:F.id,updates:[{id:T.value.id,expectedUpdatedAt:T.value.updatedAt,...e}]}):await B(`create_tasks`,{messageId:F.id,tasks:[e]}),x(`saved`),x(`close`)}catch(e){w.value=P(e)}finally{S.value=!1}}function H(){S.value||x(`close`)}return(a,o)=>(r(),v(`dialog`,{ref_key:`dialogRef`,ref:te,class:`employee-dialog`,"aria-labelledby":`employee-task-title`,onCancel:o[6]||=(...e)=>m(z)&&m(z)(...e),onKeydown:o[7]||=(...e)=>m(ne)&&m(ne)(...e)},[g(`form`,{class:`employee-dialog-shell`,onSubmit:p(re,[`prevent`])},[g(`header`,null,[g(`h2`,Re,l(m(c)(i.item?`employees.task.detail`:`employees.task.create`)),1),g(`button`,{type:`button`,disabled:S.value,"aria-label":m(c)(`employees.close`),onClick:H},`×`,8,ze)]),g(`div`,Be,[C.value?(r(),y(ee,{key:0,variant:`compact`,label:m(c)(`employees.loadingTask`)},null,8,[`label`])):u(``,!0),w.value?(r(),v(`div`,Ve,[g(`p`,null,l(w.value),1),g(`button`,{type:`button`,disabled:S.value,onClick:V},l(m(c)(`employees.task.reload`)),9,He)])):u(``,!0),C.value?u(``,!0):(r(),v(f,{key:2},[g(`label`,null,[e(l(m(c)(`employees.task.project`)),1),n(g(`select`,{"onUpdate:modelValue":o[0]||=e=>D.value=e,disabled:!!i.item||S.value||!i.canWrite,required:``},[g(`option`,We,l(m(c)(`employees.task.chooseProject`)),1),(r(!0),v(f,null,t(i.projects,e=>(r(),v(`option`,{key:e.id,value:e.id},l(e.name),9,Ge))),128))],8,Ue),[[h,D.value]])]),g(`label`,null,[e(l(m(c)(`employees.task.title`)),1),n(g(`input`,{ref_key:`initialFocusRef`,ref:R,"onUpdate:modelValue":o[1]||=e=>O.value=e,minlength:`2`,maxlength:`180`,required:``,readonly:!i.canWrite,disabled:S.value},null,8,Ke),[[d,O.value]])]),T.value?(r(),v(`p`,qe,l(m(c)(`employees.allProjects.status.${T.value.status}`)),1)):u(``,!0),g(`label`,null,[e(l(m(c)(`employees.task.summary`)),1),n(g(`textarea`,{"onUpdate:modelValue":o[2]||=e=>k.value=e,rows:`4`,maxlength:`2000`,readonly:!i.canWrite,disabled:S.value},null,8,Je),[[d,k.value]])]),g(`label`,null,[e(l(m(c)(`employees.task.priority`)),1),n(g(`select`,{"onUpdate:modelValue":o[3]||=e=>A.value=e,disabled:!i.canWrite||S.value},[(r(),v(f,null,t([`critical`,`high`,`medium`,`low`],e=>g(`option`,{key:e,value:e},l(m(c)(`employees.task.priorities.${e}`)),9,Xe)),64))],8,Ye),[[h,A.value]])]),g(`label`,null,[e(l(m(c)(`employees.task.criteria`)),1),n(g(`textarea`,{"onUpdate:modelValue":o[4]||=e=>j.value=e,rows:`3`,readonly:!i.canWrite,disabled:S.value},null,8,Q),[[d,j.value]])]),g(`label`,null,[e(l(m(c)(`employees.task.tags`)),1),n(g(`input`,{"onUpdate:modelValue":o[5]||=e=>M.value=e,readonly:!i.canWrite,disabled:S.value},null,8,Ze),[[d,M.value]])])],64))]),g(`footer`,null,[g(`button`,{type:`button`,disabled:S.value,onClick:H},l(m(c)(`employees.close`)),9,$),i.canWrite?(r(),v(`button`,{key:0,class:`primary`,type:`submit`,disabled:!L.value||S.value},[S.value?(r(),y(ee,{key:0,variant:`inline`,label:m(c)(`employees.task.saving`)},null,8,[`label`])):(r(),v(f,{key:1},[e(l(m(c)(`employees.task.save`)),1)],64))],8,Qe)):u(``,!0)])],32)],544))}}),et={class:`employee-dialog-shell`},tt={id:`employee-share-title`},nt=[`disabled`,`aria-label`],rt={class:`employee-dialog-body`},it=[`disabled`],at={key:1,class:`employee-share-preview`,role:`status`},ot={key:2,class:`employee-share-empty`},st=[`disabled`],ct={key:3,class:`employee-dialog-error`,role:`alert`},lt={key:4,class:`employee-share-result`},ut=[`value`,`aria-label`],dt=[`href`],ft={key:5,class:`employee-share-local`},pt={key:6,class:`employee-share-active`},mt=[`disabled`,`onClick`],ht=[`disabled`],gt=S(i({__name:`EmployeeShareDialog`,props:{open:{type:Boolean},projects:{}},emits:[`close`],setup(n,{emit:i}){let a=n,d=i,p=o([]),h=o({}),x=o({}),S=o(!1),C=o(!1),w=o(null),T=o(``),E=o(``),k=o(``),A=o(!1),j=0,{dialogRef:M,initialFocusRef:N,onCancel:F,onKeydown:te}=I(()=>a.open,U),ne=s(()=>a.projects.filter(e=>h.value[e.id]?.publicShareEnabled)),B=s(()=>p.value.every(e=>x.value[e]!==void 0)?p.value.reduce((e,t)=>e+x.value[t],0):null),V=[`localhost`,`127.0.0.1`,`[::1]`].includes(window.location.hostname);b([()=>a.open,()=>JSON.stringify(a.projects.map(e=>e.id))],()=>{a.open?H():++j},{immediate:!0}),b(p,()=>{k.value=``,A.value=!1});function re(e){return`/employee-workspaces/jefa/${encodeURIComponent(e)}/api`}async function H(e=!1){let t=++j;e||(p.value=[]),h.value={},x.value={},E.value=``,k.value=``,S.value=!0;let n=await Promise.allSettled(a.projects.map(async e=>{let t=(await D(`${re(e.id)}/snapshot`)).snapshot.projects.find(t=>t.id===e.id);if(!t)throw Error(c(`employees.loadError`));let n=null,r=!1;if(t.publicShareEnabled&&t.publicShareSlug)try{n=(await z({id:e.id,slug:t.publicShareSlug})).items.length}catch{r=!0}return{state:t,count:n,previewFailed:r}}));if(t===j){for(let e of n)e.status===`fulfilled`&&(h.value[e.value.state.id]=e.value.state,e.value.count!==null&&(x.value[e.value.state.id]=e.value.count));n.some(e=>e.status===`rejected`||e.value.previewFailed)&&(E.value=c(`employees.share.loadFailed`)),S.value=!1}}async function ie(){if(!p.value.length||C.value||S.value||B.value===0)return;C.value=!0,w.value=`generate`,T.value=``,E.value=``,k.value=``,A.value=!1;let e=j,t=p.value.filter(e=>a.projects.some(t=>t.id===e));try{let n=await Promise.allSettled(t.map(async t=>{if(!h.value[t])throw Error(c(`employees.share.loadFailed`));let n=h.value[t];if(!n.publicShareEnabled||!n.publicShareSlug){if(n=(await O(`/employee-workspaces/jefa/${encodeURIComponent(t)}/api/projects/${encodeURIComponent(t)}/sharing`,{publicShareEnabled:!0,acceptsPublicRequests:!1})).project,n.id!==t||!n.publicShareEnabled||!n.publicShareSlug)throw Error(c(`employees.loadError`));if(e!==j)throw Error(c(`employees.share.loadFailed`));h.value[t]=n}let r=(await z({id:t,slug:n.publicShareSlug})).items.length;if(e!==j)throw Error(c(`employees.share.loadFailed`));return x.value[t]=r,{id:t,slug:n.publicShareSlug}}));if(e!==j)return;if(n.some(e=>e.status===`rejected`))throw Error(c(`employees.share.partial`));if(t.every(e=>x.value[e]===0))throw Error(c(`employees.shareContent.emptySelection`));k.value=R(n.flatMap(e=>e.status===`fulfilled`?[e.value]:[]),window.location.origin)}catch(t){e===j&&(E.value=P(t))}finally{C.value=!1,w.value=null,T.value=``}}async function ae(e){if(!C.value){C.value=!0,w.value=`revoke`,T.value=e,E.value=``,k.value=``,A.value=!1;try{let t=await O(`/employee-workspaces/jefa/${encodeURIComponent(e)}/api/projects/${encodeURIComponent(e)}/sharing`,{publicShareEnabled:!1,acceptsPublicRequests:!1});if(t.project.id!==e||t.project.publicShareEnabled)throw Error(c(`employees.loadError`));h.value[e]=t.project,delete x.value[e]}catch(e){E.value=P(e)}finally{C.value=!1,w.value=null,T.value=``}}}async function oe(){try{await navigator.clipboard.writeText(k.value),A.value=!0}catch{E.value=c(`employees.share.copyFailed`)}}function U(){C.value||d(`close`)}return(i,a)=>(r(),v(`dialog`,{ref_key:`dialogRef`,ref:M,class:`employee-dialog employee-share-dialog`,"aria-labelledby":`employee-share-title`,onCancel:a[4]||=(...e)=>m(F)&&m(F)(...e),onKeydown:a[5]||=(...e)=>m(te)&&m(te)(...e)},[g(`div`,et,[g(`header`,null,[g(`h2`,tt,l(m(c)(`employees.share.title`)),1),g(`button`,{ref_key:`initialFocusRef`,ref:N,type:`button`,disabled:C.value,"aria-label":m(c)(`employees.close`),onClick:U},`×`,8,nt)]),g(`div`,rt,[g(`p`,null,l(m(c)(`employees.share.scopeHint`)),1),g(`p`,null,l(m(c)(`employees.share.disclosure`)),1),S.value?(r(),y(ee,{key:0,variant:`compact`,label:m(c)(`employees.loadingShare`)},null,8,[`label`])):u(``,!0),g(`fieldset`,{disabled:C.value||S.value},[_(L,{modelValue:p.value,"onUpdate:modelValue":a[0]||=e=>p.value=e,projects:n.projects,disabled:C.value||S.value,inline:``,label:m(c)(`employees.share.projects`),hint:m(c)(`employees.share.selectionHint`)},null,8,[`modelValue`,`projects`,`disabled`,`label`,`hint`])],8,it),p.value.length&&!S.value?(r(),v(`p`,at,l(B.value===null?m(c)(`employees.shareContent.verifyContent`):m(c)(`employees.shareContent.publicCount`,{count:B.value})),1)):u(``,!0),p.value.length&&!S.value&&B.value===0?(r(),v(`p`,ot,l(m(c)(`employees.shareContent.emptySelection`)),1)):u(``,!0),g(`button`,{type:`button`,disabled:C.value||S.value,onClick:a[1]||=e=>H(!0)},l(m(c)(`common.actions.refresh`)),9,st),E.value?(r(),v(`div`,ct,[g(`p`,null,l(E.value),1),C.value?u(``,!0):(r(),v(`button`,{key:0,type:`button`,onClick:a[2]||=e=>H(!0)},l(m(c)(`employees.retry`)),1))])):u(``,!0),k.value?(r(),v(`div`,lt,[g(`label`,null,[e(l(m(c)(`employees.share.link`)),1),g(`input`,{value:k.value,readonly:``,"aria-label":m(c)(`employees.share.link`),onFocus:a[3]||=e=>e.target.select()},null,40,ut)]),g(`div`,null,[g(`button`,{type:`button`,onClick:oe},l(m(c)(A.value?`employees.share.copied`:`employees.share.copy`)),1),g(`a`,{href:k.value,target:`_blank`,rel:`noreferrer`},l(m(c)(`employees.share.preview`)),9,dt)])])):u(``,!0),m(V)?(r(),v(`p`,ft,l(m(c)(`employees.share.local`)),1)):u(``,!0),ne.value.length?(r(),v(`section`,pt,[g(`h3`,null,l(m(c)(`employees.share.active`)),1),(r(!0),v(f,null,t(ne.value,t=>(r(),v(`div`,{key:t.id},[g(`span`,null,l(t.name),1),g(`button`,{type:`button`,disabled:C.value,onClick:e=>ae(t.id)},[w.value===`revoke`&&T.value===t.id?(r(),y(ee,{key:0,variant:`inline`,label:m(c)(`employees.share.revoking`)},null,8,[`label`])):(r(),v(f,{key:1},[e(l(m(c)(`employees.share.revoke`)),1)],64))],8,mt)]))),128))])):u(``,!0)]),g(`footer`,null,[g(`span`,null,l(m(c)(`employees.scope.count`,{selected:p.value.length,total:n.projects.length})),1),g(`button`,{class:`primary`,type:`button`,disabled:!p.value.length||C.value||S.value||B.value===0,onClick:ie},[w.value===`generate`?(r(),y(ee,{key:0,variant:`inline`,label:m(c)(`employees.share.generating`)},null,8,[`label`])):(r(),v(f,{key:1},[e(l(m(c)(`employees.share.generate`)),1)],64))],8,ht)])])],544))}}),[[`__scopeId`,`data-v-2da40afc`]]);function _t(e){return`fuli:jefa:project-filter:v1:${encodeURIComponent(e)}`}function vt(e){let t=w(),n=C(),r=o(null),i=o(!1),a=o(!1),c=!1,l=``,u=!0;b([e.enabled,e.spaceId],([e,t])=>{let n=e?t:``;if(n!==l&&(u=!l||!n,l=n,r.value=null,c=!1,i.value=!1,a.value=!1,l))try{let e=localStorage.getItem(_t(l));if(!e)return;let t=JSON.parse(e);t&&typeof t==`object`&&`version`in t&&t.version===1&&`projectIds`in t&&Array.isArray(t.projectIds)&&t.projectIds.every(e=>typeof e==`string`&&e.length>0&&e===e.trim())&&(r.value=[...new Set(t.projectIds)],c=!0)}catch(e){a.value=!(e instanceof SyntaxError)}},{immediate:!0,flush:`sync`});function d(){if(l)try{let e=_t(l);r.value===null?localStorage.removeItem(e):localStorage.setItem(e,JSON.stringify({version:1,projectIds:r.value})),a.value=!1}catch{a.value=!0}}function f(){let e=t.query.project;return[...new Set((Array.isArray(e)?e:[e]).filter(e=>typeof e==`string`&&!!e))]}function p(){return[t.query.empty].flat().includes(`1`)}function m(e){return!e.length&&!p()||e.length===1&&[`all`,`__all__`].includes(e[0])}let h=s(()=>e.projectIds.value.filter(e=>r.value===null||r.value.includes(e)));function g(){if(!e.enabled.value||!l||!e.ready.value||!c)return;let i=h.value,a=f(),o=r.value===null||i.length>0&&i.length===e.projectIds.value.length;o&&t.query.project===`all`&&t.query.empty===void 0||r.value!==null&&!m(a)&&a.length===i.length&&a.every(e=>i.includes(e))&&(i.length>0||t.query.empty===`1`)||n.replace({query:{...t.query,project:o?`all`:i.length?i:``,empty:o||i.length?void 0:`1`}})}b([e.enabled,e.spaceId,e.ready,e.projectIds,()=>t.query.project,()=>t.query.empty],()=>{if(!(!e.enabled.value||!l||!e.ready.value)){if(!c){let t=f(),n=!u||m(t);if(i.value=!n&&t.some(t=>!e.projectIds.value.includes(t)),i.value)return;r.value=n?null:[...new Set(t)],c=!0,n||d()}g()}},{immediate:!0});let _=s({get:()=>h.value,set:t=>{if(!e.enabled.value||!l||!e.ready.value)return;let n=r.value?.filter(t=>!e.projectIds.value.includes(t))??[];r.value=[...new Set([...n,...t.filter(t=>e.projectIds.value.includes(t))])],c=!0,i.value=!1,d(),g()}});function v(){r.value=null,c=!0,i.value=!1,d(),g()}return{selection:_,reset:v,invalidScope:i,storageUnavailable:a}}var yt=[`aria-label`],bt={class:`employee-workbench-toolbar`},xt={class:`employee-workbench-identity`},St={class:`employee-workbench-mark`,"aria-hidden":`true`},Ct=[`src`],wt=[`aria-label`,`title`],Tt={class:`employee-workbench-actions`},Et=[`disabled`],Dt={key:4,class:`employee-workbench-state`,role:`alert`},Ot={key:5,class:`employee-workbench-state`},kt={key:7,class:`employee-workbench-state`},At={key:8,class:`employee-workbench-state`},jt={key:10,class:`employee-workbench-state`},Mt=[`src`,`title`],Nt=`all`,Pt=S(i({__name:`EmployeeWorkbenchPage`,setup(t){let n=w(),i=C(),d=x(),p=o(``),h=o(null),S=o([]),F=o([]),I=o([]),L=o([]),R=o(``),z=o(``),B=o(!1),V=o(!1),re=o(!1),H=o(!1),ie=o(!1),ae=o(!1),oe=o(null),U=s(()=>d.activePersonalSpace?.id??``),W=s(()=>String(n.params.templateId??``)),G=s(()=>M.value.find(e=>e.id===W.value)),K=s(()=>G.value?.workbench?.kind===`native`&&G.value.workbench.view===`people`),q=s(()=>W.value===`jefa`),se=s(()=>!d.state&&(d.runtimeStatus===`idle`||d.runtimeStatus===`loading`)||!V.value||B.value),ce=s(()=>d.state?N.value||!V.value?c(`employees.loading`):c(`employees.loadingBoard`):c(`common.status.loadingConsole`)),le=s(()=>!d.state&&d.runtimeStatus===`error`?d.feedback?.message||c(`employees.loadError`):``),ue=s(()=>le.value||k.value||(q.value&&Y.invalidScope.value?c(`employees.invalidScope`):z.value)),J=s(()=>G.value?.managedProjects===void 0?(G.value?.assignments??[]).filter(e=>e.status===`active`).map(e=>({value:e.personalProjectId,label:d.state?.personalProjects?.find(t=>t.project_id===e.personalProjectId)?.profile.name??e.personalProjectId})):G.value.managedProjects.map(e=>({value:e.id,label:e.name}))),de=s(()=>JSON.stringify([...new Set(J.value.map(e=>e.value))].sort()));b(U,e=>{V.value=!1,A(e)},{immediate:!0});let Y=vt({enabled:q,spaceId:U,projectIds:s(()=>J.value.map(e=>e.value)),ready:s(()=>!N.value&&!k.value&&!!G.value)}),fe=s({get:()=>{if(q.value)return Y.selection.value;let e=new Set(I.value);return J.value.filter(t=>!e.has(t.value)).map(e=>e.value)},set:e=>{if(q.value){Y.selection.value=e;return}let t=new Set(J.value.map(e=>e.value)),n=new Set(e);I.value=[...I.value.filter(e=>!t.has(e)),...J.value.filter(e=>!n.has(e.value)).map(e=>e.value)]}}),pe=s(()=>{let e=new Set(fe.value);return S.value.filter(t=>e.has(t.project.id))}),me=s(()=>{let e=new Set(fe.value);return F.value.filter(t=>e.has(t)).length}),X=s(()=>G.value?.runtimeStatus===`ready`&&G.value.permissions.includes(`board.read`)&&J.value.length>0),he=s(()=>X.value?[{value:Nt,label:c(`employees.allProjects.option`),meta:c(`employees.allProjects.optionMeta`,{count:J.value.length})},...J.value]:J.value),ge=0;b([W,U],()=>{I.value=[],ae.value=!1,ie.value=!1,oe.value=null}),b([he,()=>n.query.project,()=>n.query.empty,W,K],()=>{if(K.value){if(++ge,p.value=``,B.value=!1,z.value=``,n.query.project!==void 0){let{project:e,...t}=n.query;i.replace({query:t})}return}if(q.value){p.value=J.value.length?Nt:``;return}let e=typeof n.query.project==`string`?n.query.project:``,t=he.value;p.value=e||(t.some(e=>e.value===p.value)?p.value:t[0]?.value??``),!e&&p.value&&i.replace({query:{...n.query,project:p.value}})},{immediate:!0}),b([W,p,U,X,V],()=>{!K.value&&V.value&&Z()},{immediate:!0}),b(N,e=>{if(!e){if(!V.value){V.value=!0;return}re.value&&(re.value=!1,Z())}},{immediate:!0}),b(Y.invalidScope,e=>{!e&&q.value&&V.value&&Z()}),b(de,(e,t)=>{e===t||!V.value||K.value||Z()});async function Z(){let e=++ge;if(h.value=null,S.value=[],F.value=[],R.value=``,z.value=``,K.value||!G.value||!p.value||!U.value){B.value=!1;return}if(q.value&&!X.value){B.value=!1;return}if(q.value&&Y.invalidScope.value){B.value=!1;return}if(N.value){re.value=!0,B.value=!0;return}re.value=!1;let t=W.value,n=p.value;B.value=!0;try{if(n===Nt&&X.value){let n=await Promise.all(J.value.map(async e=>{try{let n=await E(`/api/employee-templates/${encodeURIComponent(t)}/call`,{personalSpaceId:U.value,personalProjectId:e.value,tool:`read_board`,arguments:{limit:100}}),r=Array.isArray(n.items)?n.items.filter(Se).filter(t=>t.projectId===e.value):[],i=n.truncated;if(t===`jefa`&&i)try{let t=await D(`/employee-workspaces/jefa/${encodeURIComponent(e.value)}/api/snapshot`);if(!Array.isArray(t.snapshot.workItems))throw Error(`Invalid board snapshot`);r=t.snapshot.workItems.filter(Se).filter(t=>t.projectId===e.value),i=!1}catch{}return{ok:!0,board:{...n,truncated:i,project:{id:e.value,name:e.label},items:r}}}catch(t){return{ok:!1,cause:t,projectId:e.value}}}));if(e!==ge)return;S.value=n.filter(e=>e.ok).map(e=>e.board),F.value=n.flatMap(e=>e.ok?[]:[e.projectId]),!S.value.length&&F.value.length&&(z.value=P(n.find(e=>!e.ok)?.cause));return}let r=await D(`/api/employee-templates/${encodeURIComponent(t)}/workspace?${new URLSearchParams({personalSpaceId:U.value,personalProjectId:n})}`),i=`/employee-workspaces/${encodeURIComponent(t)}/${encodeURIComponent(n)}/`;if(r.workbenchUrl!==i)throw Error(c(`employees.loadError`));e===ge&&(h.value=r)}catch(t){e===ge&&(z.value=P(t))}finally{e===ge&&(B.value=!1)}}function _e(e=null){oe.value=e,ae.value=!0}function ve(e){return`${e.projectId}:${e.id}`}function ye(e,t,n){S.value=S.value.map(r=>r.project.id===e?{...r,items:r.items.map(e=>e.id===t?n:e)}:r)}function be(){return`aggregate-board-move-${globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`}`}async function xe(e,t){if(e.status===t)return;let n=ve(e);if(L.value.includes(n))return;let r=`${W.value}:${U.value}`,i={...e,status:t};R.value=``,L.value=[...L.value,n],ye(e.projectId,e.id,i);try{let n;if(W.value===`jefa`&&t===`done`)n=(await O(`/employee-workspaces/${encodeURIComponent(W.value)}/${encodeURIComponent(e.projectId)}/api/work-items/${encodeURIComponent(e.id)}/status`,{status:t})).workItem;else{if(!e.updatedAt)throw Error(c(`employees.allProjects.refreshRequired`));n=(await E(`/api/employee-templates/${encodeURIComponent(W.value)}/call`,{personalSpaceId:U.value,personalProjectId:e.projectId,tool:`update_tasks`,arguments:{requestId:be(),updates:[{id:e.id,expectedUpdatedAt:e.updatedAt,status:t}]}})).updatedWorkItems?.find(t=>t.id===e.id)}if(`${W.value}:${U.value}`!==r)return;if(!n||!Se(n)||n.projectId!==e.projectId||n.id!==e.id||!n.updatedAt)throw Error(c(`employees.allProjects.refreshRequired`));ye(e.projectId,e.id,n)}catch(t){if(`${W.value}:${U.value}`!==r)return;ye(e.projectId,e.id,e),R.value=c(`employees.allProjects.moveFailed`,{error:P(t)})}finally{L.value=L.value.filter(e=>e!==n)}}function Se(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`string`&&typeof t.projectId==`string`&&typeof t.title==`string`&&[`planned`,`active`,`blocked`,`review`,`done`].includes(t.status??``)}async function Ce(){if(!d.state){await d.refresh();return}await A(U.value),k.value||await Z()}async function we(){if(q.value){await i.replace({query:{...n.query,project:Nt,empty:void 0}}),await Z();return}let e=p.value===Nt&&X.value?Nt:J.value.find(e=>e.value===p.value)?.value??he.value[0]?.value;await i.replace({query:e?{project:e}:{}}),await Z()}return(t,n)=>(r(),v(`section`,{class:`employee-workbench-view`,"aria-label":G.value?.name??m(c)(`employees.workbench`)},[g(`header`,bt,[g(`div`,xt,[g(`span`,St,[m(j)(W.value)?(r(),v(`img`,{key:0,src:m(j)(W.value),alt:``},null,8,Ct)):(r(),v(f,{key:1},[e(l(G.value?.name.slice(0,1)??`A`),1)],64))]),g(`h1`,null,[e(l(G.value?.name??m(c)(`employees.workbench`))+` `,1),g(`span`,null,l(G.value?.role),1)]),q.value&&X.value?(r(),v(`button`,{key:0,class:`employee-share-button`,type:`button`,"aria-label":m(c)(`employees.share.title`),title:m(c)(`employees.share.title`),onClick:n[0]||=e=>ie.value=!0},[...n[8]||=[g(`svg`,{width:`19`,height:`19`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.7`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[g(`path`,{d:`M14 3h7v7m0-7-9 9M10 5H5a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5`}),g(`path`,{d:`M7 16v-3m4 3v-1`})],-1)]],8,wt)):u(``,!0)]),g(`div`,Tt,[G.value&&!K.value?(r(),v(`button`,{key:0,class:`employee-manage-projects`,type:`button`,disabled:!U.value,onClick:n[1]||=e=>H.value=!0},[n[9]||=g(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.6`,"stroke-linecap":`round`,"aria-hidden":`true`},[g(`path`,{d:`M4 7h9m4 0h3M4 17h3m4 0h9`}),g(`circle`,{cx:`15`,cy:`7`,r:`2`}),g(`circle`,{cx:`9`,cy:`17`,r:`2`})],-1),e(` `+l(m(c)(`employees.manageProjects`)),1)],8,Et)):u(``,!0)])]),K.value?u(``,!0):(r(),y(ne,{key:0,open:H.value,"personal-space-id":U.value,projects:m(d).state?.personalProjects??[],"template-id":W.value,onClose:n[2]||=e=>H.value=!1,onRecruited:we},null,8,[`open`,`personal-space-id`,`projects`,`template-id`])),q.value?(r(),y($e,{key:1,open:ae.value,item:oe.value,projects:J.value.map(e=>({id:e.value,name:e.label})),"default-project-id":fe.value.length===1?fe.value[0]:void 0,"personal-space-id":U.value,"can-write":G.value?.permissions.includes(`board.write`)??!1,onClose:n[3]||=e=>ae.value=!1,onSaved:Z},null,8,[`open`,`item`,`projects`,`default-project-id`,`personal-space-id`,`can-write`])):u(``,!0),q.value?(r(),y(gt,{key:2,open:ie.value,projects:J.value.map(e=>({id:e.value,name:e.label})),onClose:n[4]||=e=>ie.value=!1},null,8,[`open`,`projects`])):u(``,!0),se.value?(r(),y(ee,{key:3,label:ce.value},null,8,[`label`])):ue.value?(r(),v(`div`,Dt,[g(`p`,null,l(ue.value),1),g(`button`,{class:`quiet-button`,type:`button`,onClick:Ce},l(m(c)(`employees.retry`)),1)])):G.value?K.value?(r(),y(Le,{key:6,"personal-space-id":U.value,projects:m(d).state?.personalProjects??[]},null,8,[`personal-space-id`,`projects`])):q.value&&G.value.runtimeStatus!==`ready`?(r(),v(`div`,kt,[g(`p`,null,l(m(c)(`employees.installRequired`)),1),g(`small`,null,l(m(c)(`employees.installHelp`)),1)])):p.value?p.value===Nt&&X.value?(r(),y(te,{key:9,"visible-project-ids":fe.value,"onUpdate:visibleProjectIds":n[6]||=e=>fe.value=e,boards:pe.value,projects:J.value.map(e=>({id:e.value,name:e.label})),"failed-projects":me.value,"can-move-tasks":G.value.permissions.includes(`board.write`),"moving-item-keys":L.value,"action-error":R.value,"resettable-filter":q.value,"filter-storage-unavailable":m(Y).storageUnavailable.value,onResetProjectFilter:m(Y).reset,onMoveTask:xe,onSelectTask:_e,onCreateTask:n[7]||=e=>_e(),onRetry:Z},null,8,[`visible-project-ids`,`boards`,`projects`,`failed-projects`,`can-move-tasks`,`moving-item-keys`,`action-error`,`resettable-filter`,`filter-storage-unavailable`,`onResetProjectFilter`])):h.value&&h.value.runtimeStatus!==`ready`?(r(),v(`div`,jt,[g(`p`,null,l(m(c)(`employees.installRequired`)),1),g(`small`,null,l(m(c)(`employees.installHelp`)),1)])):h.value?(r(),v(`iframe`,{key:h.value.workbenchUrl,src:h.value.workbenchUrl,title:`${h.value.name} · ${h.value.project.name}`,class:`employee-workbench-frame`},null,8,Mt)):u(``,!0):(r(),v(`div`,At,[g(`h2`,null,l(m(c)(`employees.emptyWorkbench`)),1),g(`p`,null,l(m(c)(`employees.manageHint`)),1),g(`button`,{class:`quiet-button`,type:`button`,onClick:n[5]||=e=>H.value=!0},l(m(c)(`employees.manageProjects`)),1)])):(r(),v(`div`,Ot,[g(`p`,null,l(m(c)(`employees.unavailable`)),1),_(m(T),{to:`/project-agents`},{default:a(()=>[e(l(m(c)(`employees.backToAgents`)),1)]),_:1})]))],8,yt))}}),[[`__scopeId`,`data-v-fba11ab5`]]);export{Pt as default};
@@ -1 +0,0 @@
1
- import{N as e,T as t,y as n}from"./i18n-CVFADb_M.js";import{t as r}from"./KnowledgeWorkspace-DKij2_B4.js";var i=t({__name:`KnowledgePage`,setup(t){return(t,i)=>(e(),n(r))}});export{i as default};
@@ -1 +0,0 @@
1
- import{N as e,T as t,y as n}from"./i18n-CVFADb_M.js";import{t as r}from"./KnowledgeWorkspace-DKij2_B4.js";var i=t({__name:`PersonalProjectsPage`,setup(t){return(t,i)=>(e(),n(r,{"personal-projects-only":``}))}});export{i as default};
@@ -1 +0,0 @@
1
- .project-agent-assignment-dialog[data-v-ee37776b]{background:0 0;border:0;border-radius:12px;width:min(620px,100vw - 32px);max-height:calc(100vh - 32px);padding:0}.project-agent-assignment-dialog-shell[data-v-ee37776b]{background:#fbfcfb;border:1px solid #d5dcd7;border-radius:12px;flex-direction:column;max-height:calc(100vh - 32px);display:flex;overflow:hidden;box-shadow:0 18px 48px #212d262e}.project-agent-assignment-dialog-header[data-v-ee37776b],.project-agent-assignment-dialog-actions[data-v-ee37776b]{justify-content:space-between;align-items:center;gap:16px;padding:16px 18px;display:flex}.project-agent-assignment-dialog-header[data-v-ee37776b]{border-bottom:1px solid #e1e6e2}.project-agent-assignment-dialog-header h3[data-v-ee37776b]{color:#283a31;font-size:16px}.project-agent-assignment-dialog-fields[data-v-ee37776b]{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;min-height:0;padding:18px;display:grid;overflow:auto}.project-agent-assignment-dialog-fields label[data-v-ee37776b]{color:#626d66;gap:6px;font-size:11px;font-weight:650;display:grid}.project-agent-assignment-dialog-fields input[data-v-ee37776b],.project-agent-assignment-dialog-fields textarea[data-v-ee37776b]{color:#28342d;background:#fff;border:1px solid #ccd5ce;border-radius:8px;width:100%;padding:8px 9px;font-size:12px;line-height:1.5}.project-agent-assignment-dialog-fields textarea[data-v-ee37776b]{resize:vertical}.project-agent-assignment-dialog-fields input[data-v-ee37776b]:focus-visible,.project-agent-assignment-dialog-fields textarea[data-v-ee37776b]:focus-visible{outline-offset:1px;outline:2px solid #91a398}.project-agent-assignment-wide-field[data-v-ee37776b]{grid-column:1/-1}.project-agent-assignment-dialog-error[data-v-ee37776b]{color:#8b3f38;margin:0 18px;font-size:11px}.project-agent-assignment-dialog-actions[data-v-ee37776b]{border-top:1px solid #e1e6e2;justify-content:flex-end}.project-agent-primary-action[data-v-ee37776b]{color:#fff;background:#344c3d;border:0;border-radius:8px;padding:8px 13px;font-size:11px;font-weight:700}.project-agent-primary-action[data-v-ee37776b]:focus-visible{outline-offset:2px;outline:2px solid #91a398}@media (width<=620px){.project-agent-assignment-dialog-fields[data-v-ee37776b]{grid-template-columns:1fr}.project-agent-assignment-wide-field[data-v-ee37776b]{grid-column:auto}}.project-agent-dialog[data-v-4d36bcaf]{background:0 0;border:0;border-radius:12px;width:min(760px,100vw - 64px);max-height:calc(100vh - 64px);padding:0;overflow:hidden}.project-agent-dialog-shell[data-v-4d36bcaf]{background:#fbfcfb;border:1px solid #d5dcd7;border-radius:12px;flex-direction:column;min-height:0;max-height:calc(100vh - 64px);display:flex;overflow:hidden;box-shadow:0 18px 48px #212d262e}.project-agent-dialog-header[data-v-4d36bcaf],.project-agent-dialog-actions[data-v-4d36bcaf]{justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;display:flex}.project-agent-dialog-header[data-v-4d36bcaf]{border-bottom:1px solid #e1e6e2}.project-agent-dialog-header h3[data-v-4d36bcaf]{color:#283a31;font-size:17px}.project-agent-dialog-fields[data-v-4d36bcaf]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;min-height:0;padding:20px;display:grid;overflow:auto}.project-agent-dialog-fields label[data-v-4d36bcaf]{color:#626d66;align-content:start;gap:6px;min-width:0;font-size:11px;font-weight:650;display:grid}.project-agent-dialog-fields input[data-v-4d36bcaf],.project-agent-dialog-fields select[data-v-4d36bcaf],.project-agent-dialog-fields textarea[data-v-4d36bcaf]{color:#28342d;background:#fff;border:1px solid #ccd5ce;border-radius:8px;width:100%;padding:9px 10px;font-size:12px;line-height:1.5}.project-agent-dialog-fields textarea[data-v-4d36bcaf]{resize:vertical}.project-agent-dialog-fields input[data-v-4d36bcaf]:focus-visible,.project-agent-dialog-fields select[data-v-4d36bcaf]:focus-visible,.project-agent-dialog-fields textarea[data-v-4d36bcaf]:focus-visible{outline-offset:1px;outline:2px solid #91a398}.project-agent-wide-field[data-v-4d36bcaf],.project-agent-id-note[data-v-4d36bcaf]{grid-column:1/-1}.project-agent-dialog-error[data-v-4d36bcaf]{color:#8b3f38;margin:0 20px;font-size:11px}.project-agent-dialog-actions[data-v-4d36bcaf]{border-top:1px solid #e1e6e2;justify-content:flex-end}.project-agent-primary-action[data-v-4d36bcaf]{color:#fff;background:#344c3d;border:0;border-radius:8px;padding:8px 14px;font-size:12px;font-weight:700}.project-agent-primary-action[data-v-4d36bcaf]:hover{background:#2b4234}.project-agent-primary-action[data-v-4d36bcaf]:focus-visible{outline-offset:2px;outline:2px solid #91a398}.project-agent-primary-action[data-v-4d36bcaf]:disabled,.project-agent-dialog-fields[data-v-4d36bcaf] :disabled{cursor:not-allowed;opacity:.6}.project-agent-dialog-check[data-v-4d36bcaf]{align-items:center;gap:7px!important;display:flex!important}.project-agent-dialog-check input[data-v-4d36bcaf]{width:auto!important}.project-agent-dialog-note[data-v-4d36bcaf]{color:#7b857e;font-size:10px;line-height:1.55}.project-team[data-v-077ab7fe]{border-top:1px solid #dfe5e0;grid-column:1/-1;min-width:0;padding-block:12px}.project-team-peers[data-v-077ab7fe]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.project-team-peers[data-v-077ab7fe]>*{color:#31453a;background:#edf3ee;border:1px solid #cad9cd;border-radius:6px;padding:7px 10px;font-size:12px}.project-team-summary[data-v-077ab7fe]{color:#53665a;margin:9px 0;font-size:12px}.project-team-members[data-v-077ab7fe]{gap:9px;margin:10px 0 16px 18px;padding:0;list-style:none;display:grid}.project-team-members button[data-v-077ab7fe]{text-align:start;color:#31453a;background:0 0;border:0;gap:3px;max-width:100%;display:grid}.project-team-members span[data-v-077ab7fe]{color:#596b60;overflow-wrap:anywhere;font-size:12px;line-height:1.5}.project-team summary[data-v-077ab7fe]{cursor:pointer;font-size:12px}.team-lead-field[data-v-077ab7fe]{flex-wrap:wrap;align-items:center;gap:12px;margin-block:14px;display:flex}.team-lead-field select[data-v-077ab7fe]{max-width:100%;padding:7px}.project-team fieldset[data-v-077ab7fe]{border:0;flex-wrap:wrap;gap:12px;margin-bottom:14px;padding:0;display:flex}.project-team fieldset label[data-v-077ab7fe]{align-items:center;gap:5px;font-size:12px;display:flex}.project-team legend[data-v-077ab7fe]{margin-bottom:8px;font-size:12px}.project-agent-automation-policy[data-v-077ab7fe]{border-block:1px solid #dfe5e0;grid-template-columns:minmax(110px,150px) minmax(0,1fr);align-items:center;gap:14px;padding:11px 0;display:grid}.project-agent-automation-policy>header[data-v-077ab7fe]{min-width:0}.project-agent-automation-policy h3[data-v-077ab7fe]{color:#31453a;font-size:12px;line-height:1.35}.project-agent-automation-policy header span[data-v-077ab7fe]{color:#68756d;text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:9px;display:block;overflow:hidden}.project-agent-policy-options[data-v-077ab7fe]{grid-template-columns:repeat(2,minmax(0,1fr));min-width:0;display:grid}.project-agent-policy-options label[data-v-077ab7fe]{cursor:pointer;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-width:0;padding:2px 16px;display:grid}.project-agent-policy-options label+label[data-v-077ab7fe]{border-inline-start:1px solid #e2e7e3}.project-agent-policy-options label>span[data-v-077ab7fe]{gap:3px;min-width:0;display:grid}.project-agent-policy-options strong[data-v-077ab7fe]{color:#3d5045;font-size:10px;line-height:1.4}.project-agent-policy-options small[data-v-077ab7fe]{color:#6d7971;overflow-wrap:anywhere;max-width:54ch;font-size:9px;line-height:1.45}.project-agent-policy-options input[data-v-077ab7fe]{appearance:none;cursor:pointer;background:#e8ece9;border:1px solid #aeb8b1;border-radius:999px;width:34px;height:19px;margin:0;transition:background-color .14s ease-out,border-color .14s ease-out;position:relative}.project-agent-policy-options input[data-v-077ab7fe]:after{content:"";background:#fff;border-radius:50%;width:13px;height:13px;transition:transform .14s ease-out;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #24372c38}.project-agent-policy-options input[data-v-077ab7fe]:checked{background:#4d8164;border-color:#3f7658}.project-agent-policy-options input[data-v-077ab7fe]:checked:after{transform:translate(15px)}.project-agent-policy-options input[data-v-077ab7fe]:focus-visible{outline-offset:3px;outline:2px solid #355f49}.project-agent-policy-options input[data-v-077ab7fe]:disabled{cursor:wait;opacity:.62}.project-agent-policy-feedback[data-v-077ab7fe]{grid-column:2;min-height:14px;padding-inline:16px}.project-agent-policy-state[data-v-077ab7fe],.project-agent-policy-feedback p[data-v-077ab7fe]{color:#66736b;font-size:9px;line-height:1.45}.project-agent-policy-feedback p[role=alert][data-v-077ab7fe]{color:#874b43}.project-agent-policy-feedback button[data-v-077ab7fe]{color:#355f49;font:inherit;cursor:pointer;background:0 0;border:0;margin-inline-start:6px;padding:0;font-weight:700}@media (width<=760px){.project-agent-automation-policy[data-v-077ab7fe],.project-agent-policy-options[data-v-077ab7fe]{grid-template-columns:minmax(0,1fr)}.project-agent-policy-options label[data-v-077ab7fe]{padding:8px 0}.project-agent-policy-options label+label[data-v-077ab7fe]{border-block-start:1px solid #e2e7e3;border-inline-start:0}.project-agent-policy-feedback[data-v-077ab7fe]{grid-column:1;padding-inline:0}}.project-agent-source-state[data-v-ca9a5880]{color:#727d75;background:#f7f9f7;border:1px solid #e1e6e2;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;margin-top:22px;padding:10px 12px;font-size:10px;display:flex}.project-agent-source-state.is-error[data-v-ca9a5880]{color:#8c4f49;background:#fbf3f1;border-color:#ebd5d0}.employee-work-history[data-v-bf7d05b1]{margin-block:24px;font-size:14px}summary[data-v-bf7d05b1]{cursor:pointer;padding-block:12px;font-weight:650}label[data-v-bf7d05b1]{flex-wrap:wrap;align-items:center;gap:12px;display:flex}select[data-v-bf7d05b1]{max-width:100%;font:inherit;padding:8px}ol[data-v-bf7d05b1]{margin:12px 0;padding:0;list-style:none}li[data-v-bf7d05b1]{border-top:1px solid #dce3de;padding-block:14px}.work-record-meta[data-v-bf7d05b1]{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}p[data-v-bf7d05b1]{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65}@media (width<=640px){.employee-work-history[data-v-bf7d05b1]{font-size:16px}}.project-agent-dialog[data-v-95db0a3d]{background:0 0;border:0;border-radius:12px;width:min(760px,100vw - 64px);max-height:calc(100vh - 64px);padding:0;overflow:hidden}.project-agent-dialog-shell[data-v-95db0a3d]{background:#fbfcfb;border:1px solid #d5dcd7;border-radius:12px;flex-direction:column;min-height:0;max-height:calc(100vh - 64px);display:flex;overflow:hidden;box-shadow:0 18px 48px #212d262e}.project-agent-dialog-header[data-v-95db0a3d],.project-agent-dialog-actions[data-v-95db0a3d]{justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;display:flex}.project-agent-dialog-header[data-v-95db0a3d]{border-bottom:1px solid #e1e6e2}.project-agent-dialog-header h3[data-v-95db0a3d]{color:#283a31;font-size:17px}.project-agent-dialog-fields[data-v-95db0a3d]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;min-height:0;padding:20px;display:grid;overflow:auto}.project-agent-dialog-fields label[data-v-95db0a3d]{color:#626d66;align-content:start;gap:6px;min-width:0;font-size:11px;font-weight:650;display:grid}.project-agent-dialog-fields input[data-v-95db0a3d],.project-agent-dialog-fields select[data-v-95db0a3d],.project-agent-dialog-fields textarea[data-v-95db0a3d]{color:#28342d;background:#fff;border:1px solid #ccd5ce;border-radius:8px;width:100%;padding:9px 10px;font-size:12px;line-height:1.5}.project-agent-dialog-fields textarea[data-v-95db0a3d]{resize:vertical}.project-agent-dialog-fields input[data-v-95db0a3d]:focus-visible,.project-agent-dialog-fields select[data-v-95db0a3d]:focus-visible,.project-agent-dialog-fields textarea[data-v-95db0a3d]:focus-visible{outline-offset:1px;outline:2px solid #91a398}.project-agent-wide-field[data-v-95db0a3d],.project-agent-id-note[data-v-95db0a3d]{grid-column:1/-1}.project-agent-strategy-fields[data-v-95db0a3d]{border:1px solid #dfe5e0;border-radius:9px;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0;margin:0;padding:12px;display:grid}.project-agent-strategy-fields legend[data-v-95db0a3d]{color:#59665d;padding:0 5px;font-size:10px;font-weight:700}.project-agent-strategy-fields>small[data-v-95db0a3d]{color:#818a84;grid-column:1/-1;font-size:9px;line-height:1.5}.project-agent-id-note[data-v-95db0a3d]{color:#7b847e;margin-top:-8px;font-size:10px}.project-agent-dialog-error[data-v-95db0a3d]{color:#8b3f38;margin:0 20px;font-size:11px}.project-agent-dialog-actions[data-v-95db0a3d]{border-top:1px solid #e1e6e2;justify-content:flex-end}.project-agent-primary-action[data-v-95db0a3d]{color:#fff;background:#344c3d;border:0;border-radius:8px;padding:8px 14px;font-size:12px;font-weight:700}.project-agent-primary-action[data-v-95db0a3d]:hover{background:#2b4234}.project-agent-primary-action[data-v-95db0a3d]:focus-visible{outline-offset:2px;outline:2px solid #91a398}.project-agent-primary-action[data-v-95db0a3d]:disabled,.project-agent-dialog-fields[data-v-95db0a3d] :disabled{cursor:not-allowed;opacity:.6}@media (width<=720px){.project-agent-dialog-fields[data-v-95db0a3d]{grid-template-columns:1fr}.project-agent-wide-field[data-v-95db0a3d],.project-agent-id-note[data-v-95db0a3d]{grid-column:1}}.project-agent-row-shell[data-v-9416bcaa]{align-items:flex-start;gap:6px;min-width:0;display:flex}.project-agent-row-shell>.project-agent-row[data-v-9416bcaa]{flex:1;min-width:0}.project-agent-row-shell>.agent-hand[data-v-9416bcaa]{margin-top:14px}.project-agent-header-actions[data-v-9416bcaa]{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.project-agents-view[data-v-9416bcaa]{flex-direction:column;gap:12px;min-height:0;padding:18px 32px 20px;display:flex;overflow:hidden}.project-agents-header[data-v-9416bcaa],.project-agent-section-heading[data-v-9416bcaa],.project-agent-section-tools[data-v-9416bcaa],.project-agent-detail-actions[data-v-9416bcaa],.project-agent-assignment-card header[data-v-9416bcaa],.project-agent-task-card header[data-v-9416bcaa],.project-agent-learning-card header[data-v-9416bcaa],.project-agent-day-detail header[data-v-9416bcaa]{justify-content:space-between;align-items:center;gap:12px;display:flex}.project-agents-header h2[data-v-9416bcaa]{color:#283a31;font-size:18px}.project-agents-header-meta[data-v-9416bcaa]{color:#7a847d;font-size:10px}.project-agents-summary[data-v-9416bcaa]{color:#58675d;gap:18px;padding:2px 0 4px;font-size:12px;line-height:1.5;display:flex}.project-agents-summary span[data-v-9416bcaa]:first-child{color:#2f493b;font-weight:700}.project-agent-add[data-v-9416bcaa]{color:#fff;cursor:pointer;background:#344c3d;border:0;border-radius:8px;min-height:40px;padding:9px 14px;font-size:12px;font-weight:600}.project-agent-add[data-v-9416bcaa]:hover{background:#2b4234}.project-agent-add[data-v-9416bcaa]:focus-visible,.quiet-button[data-v-9416bcaa]:focus-visible{outline-offset:2px;outline:2px solid #91a398}.project-agent-add[data-v-9416bcaa]:disabled{cursor:not-allowed;opacity:.55}.project-agents-toolbar[data-v-9416bcaa]{grid-template-columns:minmax(240px,320px) minmax(200px,1fr) auto;align-items:center;gap:12px;display:grid}.project-agents-search input[data-v-9416bcaa]{color:#2e3932;background:#fff;border:1px solid #cfd7d1;border-radius:8px;width:100%;min-height:44px;padding:10px 12px;font-size:13px}.project-agents-search input[data-v-9416bcaa]:focus-visible{outline-offset:1px;outline:2px solid #91a398}.project-agents-status-filter[data-v-9416bcaa]{background:#f5f7f5;border:1px solid #d8ded9;border-radius:8px;gap:3px;padding:3px;display:flex}.project-agents-status-filter button[data-v-9416bcaa],.quiet-button[data-v-9416bcaa]{color:#58675d;cursor:pointer;background:0 0;border:0;border-radius:6px;min-height:34px;padding:7px 10px;font-size:12px}.project-agents-status-filter button[aria-pressed=true][data-v-9416bcaa]{color:#315440;background:#fff;font-weight:700;box-shadow:0 1px 3px #27392f1f}.project-agents-directory[data-v-9416bcaa]{background:#fff;border:1px solid #cfd7d1;border-radius:10px;flex:1;grid-template-columns:minmax(360px,.94fr) minmax(390px,1.06fr);min-height:0;display:grid;overflow:hidden}.project-agent-list[data-v-9416bcaa]{border-right:1px solid #dfe4e0;min-width:0;min-height:0;overflow:auto}.project-agent-row[data-v-9416bcaa]{width:100%;color:inherit;text-align:left;background:#fff;border:0;border-bottom:1px solid #e6eae7;grid-template-columns:minmax(0,1fr) auto;gap:5px 14px;padding:14px 16px;display:grid}.project-agent-row[data-v-9416bcaa]:hover{background:#f7f9f7}.project-agent-row.selected[data-v-9416bcaa]{background:#edf3ef}.project-agent-row[data-v-9416bcaa]:focus-visible{z-index:1;outline-offset:-3px;outline:2px solid #91a398;position:relative}.project-agent-row-heading[data-v-9416bcaa]{align-items:center;gap:7px;min-width:0;display:flex}.project-agent-occupation-emoji[data-v-9416bcaa]{flex:none;justify-content:center;align-items:center;min-width:1.2em;font-size:15px;line-height:1;display:inline-flex}.project-agent-row-heading strong[data-v-9416bcaa]{color:#293b31;text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.project-agent-row-heading i[data-v-9416bcaa],.project-agent-assignment-card header i[data-v-9416bcaa],.project-agent-task-card header i[data-v-9416bcaa],.project-agent-learning-card header i[data-v-9416bcaa]{color:#66716a;background:#e6eae7;border-radius:999px;flex:none;padding:2px 7px;font-size:9px;font-style:normal;font-weight:700}.project-agent-row-heading i.is-active[data-v-9416bcaa]{color:#2f6947;background:#e1eee6}.project-agent-row-heading i.is-archived[data-v-9416bcaa]{color:#75695d;background:#eeeae5}.project-agent-kind[data-v-9416bcaa]{color:#53647b!important;background:#eef2f7!important}.project-agent-row-id[data-v-9416bcaa]{color:#8a938d;overflow-wrap:anywhere;text-align:right;font-size:9px}.project-agent-row-projects[data-v-9416bcaa]{flex-wrap:wrap;grid-column:1/-1;gap:4px;display:flex}.project-agent-row-projects b[data-v-9416bcaa],.project-agent-tags span[data-v-9416bcaa],.project-agent-inline-list span[data-v-9416bcaa]{color:#5f6b64;background:#eef1ef;border-radius:999px;padding:3px 7px;font-size:9px;font-weight:650}.project-agent-row-projects em[data-v-9416bcaa]{color:#8a938d;font-size:9px;font-style:normal}.project-agent-row-responsibility[data-v-9416bcaa]{color:#59645d;text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;font-size:11px;line-height:1.5;overflow:hidden}.project-agent-row-work[data-v-9416bcaa]{color:#59645d;grid-column:1/-1;font-size:10px;line-height:1.5}.project-agent-work-dot[data-v-9416bcaa]{background:#4b8d63;border-radius:50%;width:6px;height:6px;margin-right:4px;display:inline-block}.project-agent-row-capabilities[data-v-9416bcaa]{flex-wrap:wrap;grid-column:1/-1;gap:5px;min-height:20px;display:flex}.project-agent-row-capabilities b[data-v-9416bcaa]{color:#68736c;background:#f1f3f1;border-radius:999px;padding:3px 7px;font-size:9px;font-weight:650}.project-agent-detail[data-v-9416bcaa]{min-width:0;min-height:0;padding:20px;overflow:auto;container-type:inline-size}.employee-project-overview[data-v-9416bcaa]{border-bottom:1px solid #e1e6e2;margin:22px 0;padding-bottom:18px}.employee-project-overview-heading[data-v-9416bcaa]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.employee-project-overview-heading h4[data-v-9416bcaa]{color:#33483c;margin:0;font-size:14px}.employee-project-overview-heading p[data-v-9416bcaa],.employee-project-overview-hint[data-v-9416bcaa]{color:#58675d;margin:5px 0 0;font-size:12px;line-height:1.6}.employee-project-overview-hint[data-v-9416bcaa]{margin-top:12px}.employee-assigned-projects[data-v-9416bcaa]{grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 20px;margin-top:12px;display:grid}.employee-assigned-projects a[data-v-9416bcaa]{color:#315c43;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;font-size:13px;line-height:1.5;text-decoration:none;display:flex}.employee-assigned-projects a[data-v-9416bcaa]:hover{text-underline-offset:3px;text-decoration:underline}.employee-assigned-projects a[data-v-9416bcaa]:focus-visible{outline-offset:3px;outline:2px solid #91a398}.employee-assigned-projects a span[data-v-9416bcaa]{overflow-wrap:anywhere}.employee-assigned-projects svg[data-v-9416bcaa]{flex-shrink:0}@container (width<=480px){.employee-assigned-projects[data-v-9416bcaa]{grid-template-columns:minmax(0,1fr)}}.project-agent-detail>header[data-v-9416bcaa]{border-bottom:1px solid #e1e6e2;grid-template-columns:minmax(0,1fr) max-content;align-items:flex-start;gap:16px;padding-bottom:16px;display:grid}.project-agent-detail-heading[data-v-9416bcaa]{min-width:0}.project-agent-detail h3[data-v-9416bcaa]{color:#263b30;text-wrap:balance;font-size:17px;line-height:1.32}.project-agent-detail header p[data-v-9416bcaa]{color:#7a847d;overflow-wrap:anywhere;max-width:72ch;margin-top:5px;font-size:10px;line-height:1.5}.project-agent-detail-actions[data-v-9416bcaa]{grid-auto-columns:78px;grid-auto-flow:column;justify-content:end;gap:8px;display:grid}.project-agent-detail-actions .quiet-button[data-v-9416bcaa]{white-space:nowrap;width:78px}.project-agent-detail-meta[data-v-9416bcaa],.project-agent-compact-meta[data-v-9416bcaa]{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0 0;display:grid}.project-agent-detail-meta div[data-v-9416bcaa],.project-agent-compact-meta div[data-v-9416bcaa]{min-width:0}.project-agent-detail-meta dt[data-v-9416bcaa],.project-agent-compact-meta dt[data-v-9416bcaa],.project-agent-detail-section h4[data-v-9416bcaa]{color:#7a847d;letter-spacing:.06em;text-transform:uppercase;font-size:9px;font-weight:700}.project-agent-detail-meta dd[data-v-9416bcaa],.project-agent-compact-meta dd[data-v-9416bcaa]{overflow-wrap:anywhere;color:#39483f;margin:4px 0 0;font-size:11px}.project-agent-detail-meta dd small[data-v-9416bcaa]{color:#818a84;margin-top:3px;font-size:9px;line-height:1.4;display:block}.project-agent-detail-section[data-v-9416bcaa]{margin-top:22px}.project-agent-detail-section.is-responsibility[data-v-9416bcaa]{background:#f2f5f2;border-radius:10px;padding:14px}.project-agent-detail-section p[data-v-9416bcaa],.project-agent-detail-section li[data-v-9416bcaa]{color:#4f5c54;font-size:11px;line-height:1.65}.project-agent-tags[data-v-9416bcaa],.project-agent-inline-list[data-v-9416bcaa]{flex-wrap:wrap;gap:6px;margin-top:9px;display:flex}.project-agent-muted[data-v-9416bcaa]{color:#8a928d!important}.project-agent-detail-notice[data-v-9416bcaa]{background:#f5f5f1;border-radius:7px;margin:12px 0 0;padding:8px 10px;color:#6f705f!important}.project-agent-detail-placeholder[data-v-9416bcaa],.project-agents-state[data-v-9416bcaa]{color:#737d76;text-align:center;place-content:center;justify-items:center;gap:8px;min-height:240px;font-size:11px;display:grid}.project-agents-state[data-v-9416bcaa]{background:#fafbfa;border:1px solid #d9dfda;border-radius:10px;flex:1}.project-agents-state strong[data-v-9416bcaa]{color:#36473e;font-size:14px}.project-agents-state p[data-v-9416bcaa]{max-width:52ch;line-height:1.6}.project-agents-state.is-error[data-v-9416bcaa]{color:#8b3f38}.project-agent-assignment-list[data-v-9416bcaa],.project-agent-task-list[data-v-9416bcaa],.project-agent-learning-list[data-v-9416bcaa],.project-agent-recruitment-list[data-v-9416bcaa]{gap:8px;margin-top:9px;display:grid}.project-agent-task-list[data-v-9416bcaa]{grid-template-columns:minmax(0,1fr);min-width:0}.project-agent-execution-summary[data-v-9416bcaa]{border-top:1px solid #dfe5e0;min-width:0;margin-top:13px;padding-top:12px}.project-agent-worker-event-evidence[data-v-9416bcaa]{background:#f8faf8;border:1px dashed #d8dfd9;border-radius:8px;margin-top:13px;padding:10px 10px 0}.project-agent-execution-summary .project-agent-section-heading[data-v-9416bcaa]{gap:8px}.project-agent-execution-summary h5[data-v-9416bcaa]{color:#65736a;letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:11px;font-weight:700}.project-agent-execution-summary-table-wrap[data-v-9416bcaa]{box-sizing:border-box;overscroll-behavior-inline:contain;background:#fff;border:1px solid #dce3de;border-radius:8px;width:100%;max-width:100%;margin-top:7px;overflow-x:auto}.project-agent-execution-summary-table-wrap[data-v-9416bcaa]:focus-visible{outline-offset:2px;outline:2px solid #91a398}.project-agent-execution-summary-table[data-v-9416bcaa]{border-collapse:collapse;table-layout:fixed;color:#4f5e54;width:100%;min-width:1040px;font-size:12px;line-height:1.5}.project-agent-execution-summary-table th[data-v-9416bcaa],.project-agent-execution-summary-table td[data-v-9416bcaa]{overflow-wrap:anywhere;text-align:left;vertical-align:top;border-bottom:1px solid #e6ebe7;border-right:1px solid #e6ebe7;min-width:0;padding:8px 9px}.project-agent-execution-summary-table tr[data-v-9416bcaa]>:last-child{border-right:0}.project-agent-execution-summary-table tbody tr[data-v-9416bcaa]:last-child>*{border-bottom:0}.project-agent-execution-summary-table thead th[data-v-9416bcaa]{color:#65736a;letter-spacing:.04em;text-transform:uppercase;background:#f3f6f4;font-size:11px;font-weight:750}.project-agent-execution-summary-table thead th[data-v-9416bcaa]:first-child{width:14%}.project-agent-execution-summary-table thead th[data-v-9416bcaa]:nth-child(2){width:20%}.project-agent-execution-summary-table thead th[data-v-9416bcaa]:nth-child(3){width:13%}.project-agent-execution-summary-table thead th[data-v-9416bcaa]:nth-child(4),.project-agent-execution-summary-table thead th[data-v-9416bcaa]:nth-child(5){width:15%}.project-agent-execution-summary-table thead th[data-v-9416bcaa]:nth-child(6){width:12%}.project-agent-execution-summary-table tbody tr[data-v-9416bcaa]:hover{background:#fafcfb}.project-agent-execution-summary-table tbody th[data-v-9416bcaa]{color:#3f5647;font-weight:700}.project-agent-execution-summary-table tbody strong[data-v-9416bcaa],.project-agent-execution-summary-table tbody span[data-v-9416bcaa],.project-agent-execution-summary-table tbody small[data-v-9416bcaa],.project-agent-execution-summary-table tbody a[data-v-9416bcaa]{display:block}.project-agent-execution-summary-table tbody small[data-v-9416bcaa]{color:#647168;margin-top:3px;font-size:11px;font-weight:500}.project-agent-execution-summary-table tbody .project-agent-reporter-label[data-v-9416bcaa]{margin-top:8px}.project-agent-execution-summary-table tbody a[data-v-9416bcaa]{color:#386c50;text-underline-offset:2px;margin-top:3px;text-decoration-thickness:1px}.project-agent-execution-summary-table tbody a[data-v-9416bcaa]:focus-visible{outline-offset:2px;border-radius:2px;outline:2px solid #91a398}.project-agent-execution-worker[data-v-9416bcaa]{align-items:center;gap:4px;display:flex!important}.project-agent-execution-summary-row i[data-v-9416bcaa]{color:#66716a;background:#e6eae7;border-radius:999px;padding:2px 6px;font-size:11px;font-style:normal;font-weight:700;display:inline-flex}.project-agent-execution-summary-row i.is-completed[data-v-9416bcaa]{color:#2f6947;background:#e1eee6}.project-agent-execution-summary-row i.is-failed[data-v-9416bcaa]{color:#8c4f49;background:#f7e9e6}.project-agent-execution-summary-row i.is-cancelled[data-v-9416bcaa]{color:#75695d;background:#eeeae5}.project-agent-execution-summary-list[data-v-9416bcaa]{margin:7px 0 0;padding:0;list-style:none;display:grid}.project-agent-worker-event-row[data-v-9416bcaa]{border-top:1px solid #e6ebe7;min-width:0;padding:10px 0}.project-agent-worker-event-row[data-v-9416bcaa]:first-child{border-top:0}.project-agent-worker-event-row header[data-v-9416bcaa]{align-items:flex-start}.project-agent-worker-event-row header strong[data-v-9416bcaa]{overflow-wrap:anywhere;color:#3f5647;align-items:center;gap:5px;min-width:0;font-size:10px;display:flex}.project-agent-worker-event-row header strong small[data-v-9416bcaa]{color:#89948c;margin:0;font-size:8px;font-weight:500;display:inline}.project-agent-worker-event-row header i[data-v-9416bcaa]{color:#66716a;background:#e6eae7;border-radius:999px;flex:none;padding:2px 6px;font-size:8px;font-style:normal;font-weight:700}.project-agent-worker-event-row header i.is-completed[data-v-9416bcaa]{color:#2f6947;background:#e1eee6}.project-agent-worker-event-row header i.is-failed[data-v-9416bcaa]{color:#8c4f49;background:#f7e9e6}.project-agent-worker-event-row header i.is-cancelled[data-v-9416bcaa]{color:#75695d;background:#eeeae5}.project-agent-execution-summary-meta[data-v-9416bcaa]{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 10px;margin:8px 0 0;display:grid}.project-agent-execution-summary-meta div[data-v-9416bcaa]{min-width:0}.project-agent-execution-summary-meta dt[data-v-9416bcaa]{color:#89948c;letter-spacing:.04em;text-transform:uppercase;font-size:8px;font-weight:700}.project-agent-execution-summary-meta dd[data-v-9416bcaa]{overflow-wrap:anywhere;color:#4f5e54;margin:2px 0 0;font-size:9px;line-height:1.45}.project-agent-execution-summary-meta dd small[data-v-9416bcaa]{color:#89948c;margin-top:2px;font-size:8px;display:block}.project-agent-assignment-card[data-v-9416bcaa],.project-agent-task-card[data-v-9416bcaa],.project-agent-learning-card[data-v-9416bcaa]{background:#fbfcfb;border:1px solid #e0e6e1;border-radius:9px;min-width:0;padding:11px 12px}.project-agent-recruitment-card[data-v-9416bcaa]{background:#fbfcfb;border:1px solid #e0e6e1;border-radius:9px;padding:11px 12px}.project-agent-assignment-card header strong[data-v-9416bcaa],.project-agent-task-card header strong[data-v-9416bcaa],.project-agent-learning-card header strong[data-v-9416bcaa]{color:#33483a;font-size:11px}.project-agent-card-actions[data-v-9416bcaa]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:4px;display:flex}.project-agent-assignment-card p[data-v-9416bcaa],.project-agent-task-card p[data-v-9416bcaa],.project-agent-learning-card p[data-v-9416bcaa]{margin:7px 0 0}.project-agent-assignment-card small[data-v-9416bcaa],.project-agent-task-card small[data-v-9416bcaa],.project-agent-learning-card small[data-v-9416bcaa]{color:#818a84;margin-top:6px;font-size:9px;line-height:1.5;display:block}.project-agent-assignment-card header i.is-ended[data-v-9416bcaa],.project-agent-assignment-card header i.is-replaced[data-v-9416bcaa]{color:#75695d;background:#eeeae5}.project-agent-strategy-note[data-v-9416bcaa],.project-agent-execution-line[data-v-9416bcaa]{color:#7a847d;flex-wrap:wrap;align-items:baseline;gap:6px;margin-top:8px;font-size:9px;display:flex}.project-agent-strategy-note strong[data-v-9416bcaa],.project-agent-execution-line strong[data-v-9416bcaa]{color:#53685a;font-size:10px}.project-agent-strategy-note small[data-v-9416bcaa]{color:#8c5d54;flex-basis:100%}.project-agent-routing-decision[data-v-9416bcaa]{color:#65736a;background:#f3f7f3;border:1px solid #dce5de;border-radius:7px;gap:5px;margin-top:10px;padding:9px 10px;font-size:9px;display:grid}.project-agent-routing-decision .project-agent-section-heading[data-v-9416bcaa]{align-items:baseline;gap:8px}.project-agent-routing-decision .project-agent-section-heading strong[data-v-9416bcaa]{color:#3f604b;font-size:10px}.project-agent-routing-decision small[data-v-9416bcaa]{color:#65736a;line-height:1.45}.project-agent-blocked[data-v-9416bcaa]{color:#8c5d54!important}.project-agent-task-card header[data-v-9416bcaa]{align-items:flex-start}.project-agent-task-card header small[data-v-9416bcaa]{margin-top:3px}.project-agent-task-card header i[data-v-9416bcaa]{color:#53647b;background:#eef2f7}.project-agent-task-card header i.is-completed[data-v-9416bcaa]{color:#2f6947;background:#e1eee6}.project-agent-task-card header i.is-failed[data-v-9416bcaa]{color:#8c4f49;background:#f7e9e6}.project-agent-task-card header i.is-cancelled[data-v-9416bcaa]{color:#75695d;background:#eeeae5}.project-agent-heatmap-viewport[data-v-9416bcaa]{contain:layout inline-size paint;min-width:0;max-width:100%;overflow-x:clip}.project-agent-heatmap[data-v-9416bcaa]{grid-template-rows:repeat(7,minmax(10px,1fr));grid-auto-columns:minmax(10px,1fr);grid-auto-flow:column;gap:3px;width:100%;max-width:100%;margin-top:9px;padding:0;display:grid;overflow-x:auto}.project-agent-heat-cell[data-v-9416bcaa]{appearance:none;box-sizing:border-box;aspect-ratio:1;background:#f2f4f2;border:1px solid #dfe6e0;border-radius:3px;min-width:9px;margin:0;padding:0}.project-agent-heat-cell.intensity-1[data-v-9416bcaa]{background:#dce9df}.project-agent-heat-cell.intensity-2[data-v-9416bcaa]{background:#b9d3bf}.project-agent-heat-cell.intensity-3[data-v-9416bcaa]{background:#87b493}.project-agent-heat-cell.intensity-4[data-v-9416bcaa]{background:#548466}.project-agent-heat-cell[data-v-9416bcaa]:focus-visible,.project-agent-heat-cell.selected[data-v-9416bcaa]{box-shadow:none;border:2px solid #2f5740;outline:none}.project-agent-day-detail[data-v-9416bcaa]{background:#f6f8f6;border-radius:8px;margin-top:10px;padding:10px}.project-agent-day-detail ul[data-v-9416bcaa]{margin:8px 0 0;padding-left:17px}.project-agent-day-detail li[data-v-9416bcaa]{margin-top:6px}.project-agent-day-detail li strong[data-v-9416bcaa],.project-agent-day-detail li span[data-v-9416bcaa],.project-agent-day-detail li small[data-v-9416bcaa]{display:block}.project-agent-day-detail li span[data-v-9416bcaa]{color:#66736b;font-size:9px}.project-agent-day-detail li small[data-v-9416bcaa]{color:#7e8981;font-size:9px}.project-agent-client-list[data-v-9416bcaa],.project-agent-rule-list[data-v-9416bcaa]{gap:5px;margin-top:9px;display:grid}.project-agent-client-row[data-v-9416bcaa],.project-agent-rule-row[data-v-9416bcaa]{color:#68736c;background:#f7f9f7;border-radius:7px;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:7px;padding:8px 10px;font-size:9px;display:grid}.project-agent-client-row strong[data-v-9416bcaa],.project-agent-rule-row strong[data-v-9416bcaa]{color:#43584a;font-size:10px}.project-agent-client-row small[data-v-9416bcaa]{color:#8a938d;grid-column:1/-1}.project-agent-executor-list[data-v-9416bcaa]{gap:5px;margin-top:9px;display:grid}.project-agent-executor-row[data-v-9416bcaa]{color:#68736c;background:#f7f9f7;border-radius:7px;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:7px;padding:8px 10px;font-size:9px;display:grid}.project-agent-executor-row strong[data-v-9416bcaa]{color:#43584a;font-size:10px}.project-agent-executor-row small[data-v-9416bcaa]{color:#8a938d;grid-column:1/-1}.project-agent-learning-card header i[data-v-9416bcaa]{color:#6c776f;background:#f1f3f1}.project-agent-evidence-list[data-v-9416bcaa]{margin:8px 0 0;padding-left:17px}.project-agent-evidence-list li[data-v-9416bcaa]{color:#768179;font-size:9px}.project-agent-learning-actions[data-v-9416bcaa]{gap:6px;margin-top:8px;display:flex}.project-agent-note[data-v-9416bcaa]{color:#818a84;margin-top:9px;font-size:9px;line-height:1.5;display:block}.sr-only[data-v-9416bcaa]{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=1180px){.project-agents-toolbar[data-v-9416bcaa]{grid-template-columns:minmax(220px,280px) 1fr}.project-agents-status-filter[data-v-9416bcaa]{grid-column:1/-1;justify-self:start}.project-agents-directory[data-v-9416bcaa]{grid-template-columns:minmax(320px,.9fr) minmax(330px,1fr)}.project-agent-detail-meta[data-v-9416bcaa],.project-agent-compact-meta[data-v-9416bcaa]{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (width<=420px){.project-agent-detail>header[data-v-9416bcaa]{grid-template-columns:minmax(0,1fr)}.project-agent-detail-actions[data-v-9416bcaa]{justify-content:start}}@media (width<=760px){.project-agents-view[data-v-9416bcaa]{padding:14px 16px 18px;overflow:auto}.project-agents-header[data-v-9416bcaa],.project-agents-summary[data-v-9416bcaa],.project-agent-section-heading[data-v-9416bcaa],.project-agent-assignment-card header[data-v-9416bcaa]{flex-wrap:wrap;align-items:flex-start}.project-agents-toolbar[data-v-9416bcaa]{grid-template-columns:minmax(0,1fr)}.project-agents-project-filter[data-v-9416bcaa],.project-agents-search[data-v-9416bcaa],.project-agents-status-filter[data-v-9416bcaa]{grid-column:1}.project-agents-status-filter[data-v-9416bcaa]{flex-wrap:wrap;justify-self:stretch;width:100%}.project-agents-directory[data-v-9416bcaa]{flex:none;grid-template-columns:minmax(0,1fr);overflow:visible}.project-agent-list[data-v-9416bcaa]{border-bottom:1px solid #dfe4e0;border-right:0;max-height:340px}.project-agent-detail[data-v-9416bcaa]{min-height:520px;padding:16px}.project-agent-client-row[data-v-9416bcaa],.project-agent-rule-row[data-v-9416bcaa],.project-agent-executor-row[data-v-9416bcaa]{grid-template-columns:minmax(0,1fr);align-items:start}.project-agent-client-row small[data-v-9416bcaa],.project-agent-executor-row small[data-v-9416bcaa]{grid-column:1}.project-agent-execution-summary-meta[data-v-9416bcaa]{grid-template-columns:minmax(0,1fr)}.project-agent-worker-event-row header[data-v-9416bcaa]{gap:8px}}