fuli-context 0.7.8 → 0.7.9

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 (58) hide show
  1. package/dist/web/assets/AboutPage-Bp-Xz6yo.js +1 -0
  2. package/dist/web/assets/ConnectionsPage-BMpkYeSE.js +1 -0
  3. package/dist/web/assets/{EmployeeRecruitDialog-CfFlyKSh.css → EmployeeRecruitDialog-CnA7rOnB.css} +1 -1
  4. package/dist/web/assets/EmployeeRecruitDialog-DbMVuLAI.js +1 -0
  5. package/dist/web/assets/EmployeeWorkbenchPage-BpkqpEs7.css +1 -0
  6. package/dist/web/assets/EmployeeWorkbenchPage-DtXSJOpq.js +1 -0
  7. package/dist/web/assets/KnowledgeEditDialog-DADXj_BT.js +1 -0
  8. package/dist/web/assets/KnowledgeInspector-Xs4VCUg8.js +1 -0
  9. package/dist/web/assets/KnowledgeOrganizerPage-B_Ct4bB2.js +1 -0
  10. package/dist/web/assets/KnowledgePage-RG9Ttnrp.js +1 -0
  11. package/dist/web/assets/KnowledgeWorkspace-DI8YqTVI.js +4 -0
  12. package/dist/web/assets/OverviewPage-HwoSW-5z.js +1 -0
  13. package/dist/web/assets/PersonalProfilePage-DCoG52SW.js +1 -0
  14. package/dist/web/assets/PersonalProjectsPage-CNb9mlbp.js +1 -0
  15. package/dist/web/assets/ProjectAgentsPage-zQ9BZW9v.js +11 -0
  16. package/dist/web/assets/PublicProjectsPage-BuLqkZ8g.js +1 -0
  17. package/dist/web/assets/ReviewPage-8A7N5pJs.js +1 -0
  18. package/dist/web/assets/SearchableSelect-CFZNdtlY.js +1 -0
  19. package/dist/web/assets/SettingsPage-4ah1u906.js +1 -0
  20. package/dist/web/assets/WritingTastePage-DztRj6MK.js +1 -0
  21. package/dist/web/assets/{catalog-WGLn7ERJ.js → avatars-LvVKbDF7.js} +1 -1
  22. package/dist/web/assets/console-B7dWYAoU.js +1 -0
  23. package/dist/web/assets/{conversation-launcher-settings-0KtlG_LV.js → conversation-launcher-settings-D1xhW1S5.js} +1 -1
  24. package/dist/web/assets/{i18n-ByRiA3pJ.js → i18n-DQH9D35M.js} +1 -1
  25. package/dist/web/assets/{identity-CxdPRMwH.js → identity-JjZG6aS5.js} +1 -1
  26. package/dist/web/assets/index-Ch1jmkyO.css +1 -0
  27. package/dist/web/assets/index-DRd-2Tii.js +2 -0
  28. package/dist/web/assets/jefa-avatar-Dew42td5.webp +0 -0
  29. package/dist/web/assets/{model-Db4-KefQ.js → model-zL97NJ-U.js} +1 -1
  30. package/dist/web/assets/{useApi-CROJJdhE-CePMjc08.js → useApi-CROJJdhE-CElDxEZI.js} +1 -1
  31. package/dist/web/assets/{vue-router-CzX-hn3P.js → vue-router-F7MnkVlW.js} +1 -1
  32. package/dist/web/index.html +7 -7
  33. package/graph-provider/pyproject.toml +1 -1
  34. package/npm-shrinkwrap.json +2 -2
  35. package/package.json +1 -1
  36. package/src/employees/task-entry.js +1 -1
  37. package/dist/web/assets/AboutPage-9CVX91tr.js +0 -1
  38. package/dist/web/assets/ConnectionsPage-CWbCVFdv.js +0 -1
  39. package/dist/web/assets/EmployeeRecruitDialog-CQgNpGJ_.js +0 -1
  40. package/dist/web/assets/EmployeeWorkbenchPage-CWg4WJhr.css +0 -1
  41. package/dist/web/assets/EmployeeWorkbenchPage-CwU4qBgD.js +0 -1
  42. package/dist/web/assets/KnowledgeEditDialog-B6TGAcFH.js +0 -1
  43. package/dist/web/assets/KnowledgeInspector-M2pLY0bR.js +0 -1
  44. package/dist/web/assets/KnowledgeOrganizerPage-DzeAlk9b.js +0 -1
  45. package/dist/web/assets/KnowledgePage-BJu9w0fF.js +0 -1
  46. package/dist/web/assets/KnowledgeWorkspace-CCt8rnBb.js +0 -4
  47. package/dist/web/assets/OverviewPage-CZswVqui.js +0 -1
  48. package/dist/web/assets/PersonalProfilePage-f1nSF6kx.js +0 -1
  49. package/dist/web/assets/PersonalProjectsPage-D__eJf0t.js +0 -1
  50. package/dist/web/assets/ProjectAgentsPage-LrwagMGj.js +0 -11
  51. package/dist/web/assets/PublicProjectsPage-BdC2Qk4n.js +0 -1
  52. package/dist/web/assets/ReviewPage-Cbgl8_Si.js +0 -1
  53. package/dist/web/assets/SearchableSelect-ERm-k4KI.js +0 -1
  54. package/dist/web/assets/SettingsPage-DWso4x29.js +0 -1
  55. package/dist/web/assets/WritingTastePage-CFpCjmIY.js +0 -1
  56. package/dist/web/assets/console-DQgu0JIA.js +0 -1
  57. package/dist/web/assets/index-JAZe6lfX.js +0 -2
  58. package/dist/web/assets/index-wcXzzggp.css +0 -1
@@ -0,0 +1,11 @@
1
+ import{C as e,F as t,H as n,I as r,M as i,N as a,T as o,V as s,Z as c,_ as l,a as u,at as d,b as f,c as p,d as m,f as h,h as g,k as _,m as v,n as y,nt as b,rt as x,u as S,v as C,w,x as T,y as E,z as ee}from"./i18n-DQH9D35M.js";import{a as D,i as O,n as k,o as A,r as j,t as M}from"./console-B7dWYAoU.js";import{t as N}from"./vue-router-F7MnkVlW.js";import{t as P}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{a as F,o as I,s as te}from"./avatars-LvVKbDF7.js";import{t as L}from"./SearchableSelect-CFZNdtlY.js";import{n as ne,r as R,t as re}from"./EmployeeRecruitDialog-DbMVuLAI.js";function z(e){return e&&typeof e==`object`?e:{}}function B(e,t,n){return e[t]??e[n]}function V(e,t,n){let r=B(e,t,n);return typeof r==`string`?r:null}function H(e,t,n){let r=B(e,t,n);return Array.isArray(r)&&r.every(e=>typeof e==`string`)?r:null}function U(e,t,n){let r=B(e,t,n);return typeof r==`number`&&Number.isInteger(r)&&r>=0?r:null}function ie(e){if(!e||typeof e!=`object`)return null;let t=z(e),n=V(t,`source`,`source`),r=U(t,`totalTokens`,`total_tokens`);return![`executor`,`host`,`dingdong`].includes(n??``)||r===null?null:{source:n,totalTokens:r,inputTokens:U(t,`inputTokens`,`input_tokens`),outputTokens:U(t,`outputTokens`,`output_tokens`),cachedInputTokens:U(t,`cachedInputTokens`,`cached_input_tokens`),cacheWriteInputTokens:U(t,`cacheWriteInputTokens`,`cache_write_input_tokens`),reasoningOutputTokens:U(t,`reasoningOutputTokens`,`reasoning_output_tokens`)}}function ae(e){if(!e||typeof e!=`object`)return null;let t=z(e),n=V(t,`application`,`application`);return[`codex`,`claude`,`claude_code`,`cursor`,`kiro`,`other`].includes(n??``)?{application:n,sessionId:V(t,`sessionId`,`session_id`),sessionUrl:V(t,`sessionUrl`,`session_url`)}:null}function W(e){return Array.isArray(e)?e:[]}function oe(e){let t=z(e);return Array.isArray(e)?e:W(t.agents??t.items)}function se(e){if(!e||typeof e!=`object`)return null;let t=z(e);return{mode:V(t,`mode`,`mode`)??null,reasoningEffort:V(t,`reasoningEffort`,`reasoning_effort`)??null,capabilityHints:W(B(t,`capabilityHints`,`capability_hints`)).filter(e=>typeof e==`string`)}}function G(e){if(!e||typeof e!=`object`)return null;let t=z(e);return{enabled:typeof t.enabled==`boolean`?t.enabled:null,independentVerification:typeof B(t,`independentVerification`,`independent_verification`)==`boolean`?B(t,`independentVerification`,`independent_verification`):null,conflictFreeScopes:typeof B(t,`conflictFreeScopes`,`conflict_free_scopes`)==`boolean`?B(t,`conflictFreeScopes`,`conflict_free_scopes`):null,reason:V(t,`reason`,`reason`),workstreamBoundaries:W(B(t,`workstreamBoundaries`,`workstream_boundaries`)).filter(e=>typeof e==`string`)}}function ce(e){if(!e||typeof e!=`object`)return null;let t=z(e),n=W(B(t,`allowList`,`allow_list`)).map(e=>{if(typeof e==`string`)return{executorId:e};let t=z(e);return{executorId:V(t,`executorId`,`executor_id`)??``,label:V(t,`label`,`label`),provider:V(t,`provider`,`provider`),model:V(t,`model`,`model`),client:V(t,`client`,`client`)}}).filter(({executorId:e})=>e),r=W(B(t,`lockedExecutorIds`,`locked_executor_ids`)).filter(e=>typeof e==`string`),i=W(B(t,`preferredExecutorIds`,`preferred_executor_ids`)).filter(e=>typeof e==`string`);return{mode:V(t,`mode`,`mode`)??`flexible`,allowList:n,lockedExecutorIds:r,preferredExecutorIds:i}}function K(e){if(!e||typeof e!=`object`)return null;let t=z(e),n={executor:V(t,`executor`,`executor`),provider:V(t,`provider`,`provider`)??V(t,`actualModelProvider`,`actual_model_provider`),model:V(t,`model`,`model`)??V(t,`actualModel`,`actual_model`),client:V(t,`client`,`client`)??V(t,`sourceApplication`,`source_application`),rule:V(t,`rule`,`rule`),fallback:V(t,`fallback`,`fallback`),reportedAt:V(t,`reportedAt`,`reported_at`)};return[n.executor,n.provider,n.model,n.rule,n.fallback].some(Boolean)?n:null}function le(e,t){let n=z(e),r=V(n,`personalProjectId`,`personal_project_id`),i=V(n,`assignmentId`,`assignment_id`);return!r||!i?null:{assignmentId:i,personalSpaceId:V(n,`personalSpaceId`,`personal_space_id`)??t.personalSpaceId,personalProjectId:r,agentId:V(n,`agentId`,`agent_id`)??t.agentId,responsibility:V(n,`responsibility`,`responsibility`)??t.profile.responsibility,scope:V(n,`scope`,`scope`),workKinds:W(B(n,`workKinds`,`work_kinds`)).filter(e=>typeof e==`string`),capabilities:W(n.capabilities).filter(e=>typeof e==`string`),modelStrategyOverride:se(B(n,`modelStrategyOverride`,`model_strategy_override`)),executorPolicyOverride:ce(B(n,`executorPolicyOverride`,`executor_policy_override`)),reason:V(n,`reason`,`reason`),status:V(n,`status`,`status`)??`active`,revision:typeof n.revision==`number`?n.revision:void 0,sourceApplication:V(n,`sourceApplication`,`source_application`),sourceSessionId:V(n,`sourceSessionId`,`source_session_id`),assignedAt:V(n,`assignedAt`,`assigned_at`)??t.createdAt,updatedAt:V(n,`updatedAt`,`updated_at`)??t.updatedAt,endedAt:V(n,`endedAt`,`ended_at`),endReason:V(n,`endReason`,`end_reason`),replacedByAssignmentId:V(n,`replacedByAssignmentId`,`replaced_by_assignment_id`)}}function ue(e){let t=z(e);return{agentId:V(t,`agentId`,`agent_id`)??``,assignmentId:V(t,`assignmentId`,`assignment_id`),role:V(t,`role`,`role`)??`collaborator`,status:V(t,`status`,`status`),assignmentSummary:V(t,`assignmentSummary`,`assignment_summary`),joinedAt:V(t,`joinedAt`,`joined_at`),updatedAt:V(t,`updatedAt`,`updated_at`),endedAt:V(t,`endedAt`,`ended_at`)}}function de(e){if(Array.isArray(e))return e.map(e=>{let t=z(e);return{agentId:V(t,`agentId`,`agent_id`),agentName:V(t,`agentName`,`agent_name`),occupationEmoji:V(t,`occupationEmoji`,`occupation_emoji`),workerId:V(t,`workerId`,`worker_id`),workerLabel:V(t,`workerLabel`,`worker_label`),workerOccupationEmoji:V(t,`workerOccupationEmoji`,`worker_occupation_emoji`),participantRole:V(t,`participantRole`,`participant_role`),executor:V(t,`executor`,`executor`),executorId:V(t,`executorId`,`executor_id`),sourceApplication:V(t,`sourceApplication`,`source_application`),sourceSessionId:V(t,`sourceSessionId`,`source_session_id`),sourceSessionUrl:V(t,`sourceSessionUrl`,`source_session_url`),workerRuntime:ae(B(t,`workerRuntime`,`worker_runtime`)),toolsUsed:H(t,`toolsUsed`,`tools_used`),actualModelProvider:V(t,`actualModelProvider`,`actual_model_provider`),actualModel:V(t,`actualModel`,`actual_model`),tokenUsage:ie(B(t,`tokenUsage`,`token_usage`)),workSummary:V(t,`workSummary`,`work_summary`),status:V(t,`status`,`status`)}})}function fe(e){let t=z(e),n=V(t,`eventId`,`event_id`),r=V(t,`taskId`,`task_id`);if(!n||!r)return null;let i=K(B(t,`actualExecution`,`actual_execution`))??K({executor:V(t,`actualExecutor`,`actual_executor`),provider:V(t,`actualModelProvider`,`actual_model_provider`),model:V(t,`actualModel`,`actual_model`),client:V(t,`sourceApplication`,`source_application`),rule:V(t,`routingRuleId`,`routing_rule_id`)??V(t,`matchedExecutorRuleId`,`matched_executor_rule_id`),fallback:V(t,`fallbackReason`,`fallback_reason`)??V(t,`executorFallbackReason`,`executor_fallback_reason`),reportedAt:V(t,`createdAt`,`created_at`)});return{eventId:n,taskId:r,agentId:V(t,`agentId`,`agent_id`),status:V(t,`status`,`status`),actorKind:V(t,`actorKind`,`actor_kind`)??void 0,summary:V(t,`summary`,`summary`)??``,sourceApplication:V(t,`sourceApplication`,`source_application`),sourceSessionId:V(t,`sourceSessionId`,`source_session_id`),sourceSessionUrl:V(t,`sourceSessionUrl`,`source_session_url`),workerRuntime:ae(B(t,`workerRuntime`,`worker_runtime`)),toolsUsed:H(t,`toolsUsed`,`tools_used`),tokenUsage:ie(B(t,`tokenUsage`,`token_usage`)),actualExecution:i,actualModelProvider:V(t,`actualModelProvider`,`actual_model_provider`),actualModel:V(t,`actualModel`,`actual_model`),workerId:V(t,`workerId`,`worker_id`),workerLabel:V(t,`workerLabel`,`worker_label`),workerOccupationEmoji:V(t,`workerOccupationEmoji`,`worker_occupation_emoji`),workerStatus:V(t,`workerStatus`,`worker_status`),createdAt:V(t,`createdAt`,`created_at`)??``}}function q(e){if(!e||typeof e!=`object`)return null;let t=z(e);return{decisionId:V(t,`decisionId`,`decision_id`)??void 0,taskId:V(t,`taskId`,`task_id`)??void 0,coordinatorAgentId:V(t,`coordinatorAgentId`,`coordinator_agent_id`),complexity:(()=>{let e=B(t,`complexity`,`complexity`);return typeof e==`string`||typeof e==`number`?e:null})(),complexityBasis:W(B(t,`complexityBasis`,`complexity_basis`)).filter(e=>typeof e==`string`),outcome:V(t,`outcome`,`outcome`)??V(t,`routingOutcome`,`routing_outcome`),reason:V(t,`reason`,`reason`)??V(t,`routingReason`,`routing_reason`),matchBasis:W(B(t,`matchBasis`,`match_basis`)).filter(e=>typeof e==`string`),candidateAgentIds:W(B(t,`candidateAgentIds`,`candidate_agent_ids`)).filter(e=>typeof e==`string`),optimizationPriority:W(B(t,`optimizationPriority`,`optimization_priority`)).filter(e=>typeof e==`string`),parallelPlan:G(B(t,`parallelPlan`,`parallel_plan`)),selectedModelStrategy:se(B(t,`selectedModelStrategy`,`selected_model_strategy`)),modelStrategySource:V(t,`modelStrategySource`,`model_strategy_source`)??void 0,ruleId:V(t,`ruleId`,`rule_id`)??V(t,`matchedExecutorRuleId`,`matched_executor_rule_id`)??V(t,`executorRuleId`,`executor_rule_id`),fallback:V(t,`fallback`,`fallback`)??V(t,`fallbackReason`,`fallback_reason`)??V(t,`executorFallbackReason`,`executor_fallback_reason`)}}function J(e){return e!=null&&(typeof e!=`string`||e.length>0)&&(!Array.isArray(e)||e.length>0)}function pe(e){return[`staffingIntent`,`staffing_intent`,`routingOutcome`,`routing_outcome`,`routingReason`,`routing_reason`,`routingExplanation`,`routing_explanation`,`coordinatorAgentId`,`coordinator_agent_id`,`complexity`,`complexityBasis`,`complexity_basis`,`matchBasis`,`match_basis`,`candidateAgentIds`,`candidate_agent_ids`].some(t=>J(e[t]))?q({outcome:B(e,`routingOutcome`,`routing_outcome`),reason:B(e,`routingReason`,`routing_reason`),matchBasis:B(e,`matchBasis`,`match_basis`),coordinatorAgentId:B(e,`coordinatorAgentId`,`coordinator_agent_id`),complexity:B(e,`complexity`,`complexity`),complexityBasis:B(e,`complexityBasis`,`complexity_basis`),candidateAgentIds:B(e,`candidateAgentIds`,`candidate_agent_ids`)}):null}function me(e){let t=z(e),n=V(t,`taskId`,`task_id`);if(!n)return null;let r=K(B(t,`actualExecution`,`actual_execution`))??K({executor:V(t,`actualExecutor`,`actual_executor`),provider:V(t,`actualModelProvider`,`actual_model_provider`),model:V(t,`actualModel`,`actual_model`),client:V(t,`sourceApplication`,`source_application`),rule:V(t,`routingRuleId`,`routing_rule_id`)??V(t,`matchedExecutorRuleId`,`matched_executor_rule_id`),fallback:V(t,`fallbackReason`,`fallback_reason`)??V(t,`executorFallbackReason`,`executor_fallback_reason`)}),i=q(B(t,`routingDecision`,`routing_decision`))??pe(t);return{taskId:n,personalSpaceId:V(t,`personalSpaceId`,`personal_space_id`)??void 0,personalProjectId:V(t,`personalProjectId`,`personal_project_id`),title:V(t,`title`,`title`)??n,objective:V(t,`objective`,`objective`),workKind:V(t,`workKind`,`work_kind`),status:V(t,`status`,`status`),runId:V(t,`runId`,`run_id`),executionId:V(t,`executionId`,`execution_id`),ownerAgentId:V(t,`ownerAgentId`,`owner_agent_id`),leadAgentId:V(t,`leadAgentId`,`lead_agent_id`),coordinatorAgentId:V(t,`coordinatorAgentId`,`coordinator_agent_id`),hrAgentId:V(t,`hrAgentId`,`hr_agent_id`),recruitmentId:V(t,`recruitmentId`,`recruitment_id`),participants:W(t.participants).map(ue),sourceApplication:V(t,`sourceApplication`,`source_application`),sourceSessionId:V(t,`sourceSessionId`,`source_session_id`),resultSummary:V(t,`resultSummary`,`result_summary`),failureReason:V(t,`failureReason`,`failure_reason`),createdAt:V(t,`createdAt`,`created_at`),updatedAt:V(t,`updatedAt`,`updated_at`),completedAt:V(t,`completedAt`,`completed_at`),effectiveModelStrategy:se(B(t,`effectiveModelStrategy`,`effective_model_strategy`)),effectiveExecutorPolicy:ce(B(t,`effectiveExecutorPolicy`,`effective_executor_policy`)??B(t,`executorPolicy`,`executor_policy`)),staffingIntent:V(t,`staffingIntent`,`staffing_intent`),requiredCapabilities:W(B(t,`requiredCapabilities`,`required_capabilities`)).filter(e=>typeof e==`string`),executorCapabilityHints:W(B(t,`executorCapabilityHints`,`executor_capability_hints`)).filter(e=>typeof e==`string`),routingOutcome:V(t,`routingOutcome`,`routing_outcome`),routingReason:V(t,`routingReason`,`routing_reason`),routingExplanation:V(t,`routingExplanation`,`routing_explanation`),matchBasis:W(B(t,`matchBasis`,`match_basis`)).filter(e=>typeof e==`string`),complexity:(()=>{let e=B(t,`complexity`,`complexity`);return typeof e==`string`||typeof e==`number`?e:null})(),complexityBasis:W(B(t,`complexityBasis`,`complexity_basis`)).filter(e=>typeof e==`string`),modelStrategySource:V(t,`modelStrategySource`,`model_strategy_source`)??void 0,actualExecution:r,executionSummary:de(B(t,`executionSummary`,`execution_summary`)),routingDecision:i,events:W(t.events).map(fe).filter(Boolean)}}function he(e){return e.executionSummary===void 0?(e.events??[]).filter(e=>!!(e.workerId||e.workerLabel||e.workerOccupationEmoji||e.workerStatus)):[]}function ge(e){return!!(e&&(e.enabled||e.independentVerification||e.conflictFreeScopes||e.reason||e.workstreamBoundaries?.length))}function _e(e){return e.actualExecution??{provider:e.actualModelProvider??null,model:e.actualModel??null,client:e.sourceApplication??null,reportedAt:e.createdAt}}function ve(){let e=new Date,t=new Date(e);return t.setUTCFullYear(t.getUTCFullYear()-1),{fromDate:ye(t),toDate:ye(e)}}function ye(e){return e.toISOString().slice(0,10)}function be(e,t){let n=z(e),r=W(n.days);if(!r.length&&!(`days`in n))return null;let i=r.map(e=>{let t=z(e);return{date:V(t,`date`,`date`)??``,completed:typeof t.completed==`number`?t.completed:0,failed:typeof t.failed==`number`?t.failed:0,cancelled:typeof t.cancelled==`number`?t.cancelled:0,total:typeof t.total==`number`?t.total:0,tasks:W(t.tasks).map(xe).filter(e=>!!e)}}).filter(({date:e})=>e),a=V(n,`fromDate`,`from_date`),o=V(n,`toDate`,`to_date`),s=i.some(({total:e,tasks:t})=>e>0||!!t?.length),c=a??(i.length?i.map(({date:e})=>e).sort()[0]:void 0),l=o??(i.length?i.map(({date:e})=>e).sort().at(-1):void 0),u=s&&c&&l?Y(i,c,l):[];return{agentId:V(n,`agentId`,`agent_id`)??t.agentId,personalSpaceId:V(n,`personalSpaceId`,`personal_space_id`)??t.personalSpaceId,fromDate:c,toDate:l,days:u}}function Y(e,t,n){let r=new Map(e.map(e=>[e.date,e])),i=new Date(`${t}T00:00:00Z`),a=new Date(`${n}T00:00:00Z`);if(Number.isNaN(i.valueOf())||Number.isNaN(a.valueOf())||i>a)return e;let o=[];for(let e=new Date(i);e<=a;e.setUTCDate(e.getUTCDate()+1)){let t=ye(e);o.push(r.get(t)??{date:t,completed:0,failed:0,cancelled:0,total:0,tasks:[]})}return o.reverse()}function xe(e){let t=z(e),n=V(t,`taskId`,`task_id`);if(!n)return null;let r=K(B(t,`actualExecution`,`actual_execution`))??K({executor:V(t,`actualExecutor`,`actual_executor`),provider:V(t,`actualModelProvider`,`actual_model_provider`),model:V(t,`actualModel`,`actual_model`),client:V(t,`sourceApplication`,`source_application`)});return{taskId:n,title:V(t,`title`,`title`)??n,status:V(t,`status`,`status`),summary:V(t,`summary`,`summary`)??``,occurredAt:V(t,`occurredAt`,`occurred_at`)??``,personalProjectId:V(t,`personalProjectId`,`personal_project_id`),assignmentId:V(t,`assignmentId`,`assignment_id`),collaborators:W(t.collaborators).map(ue),sourceApplication:V(t,`sourceApplication`,`source_application`),sourceSessionId:V(t,`sourceSessionId`,`source_session_id`),sourceSessionUrl:V(t,`sourceSessionUrl`,`source_session_url`),workerRuntime:ae(B(t,`workerRuntime`,`worker_runtime`)),toolsUsed:H(t,`toolsUsed`,`tools_used`),tokenUsage:ie(B(t,`tokenUsage`,`token_usage`)),actualExecution:r,actualModelProvider:V(t,`actualModelProvider`,`actual_model_provider`),actualModel:V(t,`actualModel`,`actual_model`)}}var Se={class:`project-agent-assignment-dialog-header`},Ce={id:`project-agent-assignment-dialog-title`},we=[`disabled`],Te={class:`project-agent-assignment-dialog-fields`},Ee={key:0},De={key:1},Oe=[`value`],ke={key:2},Ae={key:3,class:`project-agent-assignment-wide-field`},je=[`disabled`],X={key:4},Me=[`disabled`],Ne={key:5},Pe=[`disabled`,`placeholder`],Fe={class:`project-agent-assignment-wide-field`},Ie=[`disabled`,`placeholder`],Le={key:0,class:`project-agent-assignment-dialog-error`,role:`alert`},Z={class:`project-agent-assignment-dialog-actions`},Re=[`disabled`],ze=[`disabled`],Be=P(o({__name:`AgentAssignmentDialog`,props:{open:{type:Boolean},agent:{},assignment:{default:null},action:{default:`assign`},projects:{},availableAgents:{default:()=>[]},defaultProjectId:{default:null}},emits:[`close`,`saved`,`changed`],setup(e,{emit:t}){let r=e,i=t,o=c(``),s=c(``),p=c(``),h=c(``),g=c(``),_=c(``),y=c(!1),x=c(``),{dialogRef:S,initialFocusRef:E,onCancel:O,onKeydown:k}=ne(()=>r.open,()=>i(`close`)),A=l(()=>r.action!==`assign`),j=l(()=>r.projects.map(e=>({value:e.project_id,label:e.profile.name,meta:e.project_id}))),M=l(()=>r.availableAgents.filter(e=>e.agentId!==r.agent?.agentId&&e.profile.status===`active`).map(e=>({value:e.agentId,label:e.profile.name,meta:e.agentId})));ee(()=>[r.open,r.agent,r.assignment,r.action,r.defaultProjectId],()=>{r.open&&(o.value=r.assignment?.personalProjectId??r.defaultProjectId??r.projects[0]?.project_id??``,s.value=``,p.value=r.assignment?.responsibility??r.agent?.profile.responsibility??``,h.value=r.assignment?.scope??``,g.value=r.assignment?.workKinds?.join(`
2
+ `)??``,_.value=``,x.value=``)},{immediate:!0});async function N(){if(!r.agent)return;x.value=``;let e=_.value.trim(),t=p.value.trim();if(!e||r.action===`assign`&&!t){x.value=u(`projectAgents.assignmentDialog.required`);return}if(r.action===`replace`&&!s.value){x.value=u(`projectAgents.assignmentDialog.replacementRequired`);return}y.value=!0;try{if(r.action===`assign`){let n=await D(`/api/project-agent-assignments`,{personalSpaceId:r.agent.personalSpaceId,personalProjectId:o.value,agentId:r.agent.agentId,idempotencyKey:F(),responsibility:t,workKinds:P(g.value),capabilities:[],reason:e});i(`saved`,n)}else{if(!r.assignment)return;await D(`/api/project-agent-assignments/${encodeURIComponent(r.assignment.assignmentId)}/${r.action}`,r.action===`replace`?{personalSpaceId:r.agent.personalSpaceId,personalProjectId:r.assignment.personalProjectId,assignmentId:r.assignment.assignmentId,expectedRevision:r.assignment.revision??0,replacementAgentId:s.value,idempotencyKey:F(),responsibility:t||r.assignment.responsibility,workKinds:P(g.value),capabilities:r.assignment.capabilities??[],reason:e}:{personalSpaceId:r.agent.personalSpaceId,personalProjectId:r.assignment.personalProjectId,assignmentId:r.assignment.assignmentId,expectedRevision:r.assignment.revision??0,reason:e}),i(`changed`)}i(`close`)}catch(e){x.value=e instanceof Error?e.message:u(`projectAgents.assignmentDialog.saveFailed`)}finally{y.value=!1}}function P(e){return[...new Set(e.split(`
3
+ `).map(e=>e.trim()).filter(Boolean))]}function F(){return`project-agent-assignment-${typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}`}return(t,c)=>e.open?(a(),T(`dialog`,{key:0,ref_key:`dialogRef`,ref:S,class:`project-agent-assignment-dialog vue-dialog`,"aria-modal":`true`,"aria-labelledby":`project-agent-assignment-dialog-title`,onCancel:c[8]||=(...e)=>b(O)&&b(O)(...e),onKeydown:c[9]||=(...e)=>b(k)&&b(k)(...e)},[C(`form`,{class:`project-agent-assignment-dialog-shell`,onSubmit:v(N,[`prevent`])},[C(`header`,Se,[C(`h3`,Ce,d(b(u)(`projectAgents.assignmentDialog.${A.value?e.action:`assign`}Title`)),1),C(`button`,{ref_key:`initialFocusRef`,ref:E,"data-dialog-initial-focus":``,class:`quiet-button`,type:`button`,disabled:y.value,onClick:c[0]||=e=>i(`close`)},d(b(u)(`common.actions.close`)),9,we)]),C(`div`,Te,[A.value?(a(),T(`label`,De,[C(`span`,null,d(b(u)(`projectAgents.fields.project`)),1),C(`input`,{value:r.assignment?r.assignment.personalProjectId:``,disabled:``},null,8,Oe)])):(a(),T(`label`,Ee,[C(`span`,null,d(b(u)(`projectAgents.fields.project`)),1),w(L,{modelValue:o.value,"onUpdate:modelValue":c[1]||=e=>o.value=e,"control-id":`project-agent-assignment-project`,options:j.value,label:b(u)(`projectAgents.fields.project`),placeholder:b(u)(`projectAgents.dialog.projectPlaceholder`),disabled:y.value,required:``},null,8,[`modelValue`,`options`,`label`,`placeholder`,`disabled`])])),A.value&&e.action===`replace`?(a(),T(`label`,ke,[C(`span`,null,d(b(u)(`projectAgents.assignmentDialog.replacement`)),1),w(L,{modelValue:s.value,"onUpdate:modelValue":c[2]||=e=>s.value=e,"control-id":`project-agent-assignment-replacement`,options:M.value,label:b(u)(`projectAgents.assignmentDialog.replacement`),placeholder:b(u)(`projectAgents.assignmentDialog.replacementPlaceholder`),disabled:y.value,required:``},null,8,[`modelValue`,`options`,`label`,`placeholder`,`disabled`])])):f(``,!0),A.value?f(``,!0):(a(),T(`label`,Ae,[C(`span`,null,d(b(u)(`projectAgents.fields.responsibility`)),1),n(C(`textarea`,{"onUpdate:modelValue":c[3]||=e=>p.value=e,rows:`3`,maxlength:`4096`,disabled:y.value,required:``},null,8,je),[[m,p.value]])])),A.value?f(``,!0):(a(),T(`label`,X,[C(`span`,null,d(b(u)(`projectAgents.fields.scope`)),1),n(C(`input`,{"onUpdate:modelValue":c[4]||=e=>h.value=e,maxlength:`4096`,disabled:y.value},null,8,Me),[[m,h.value]])])),A.value?f(``,!0):(a(),T(`label`,Ne,[C(`span`,null,d(b(u)(`projectAgents.assignmentDialog.workKinds`)),1),n(C(`textarea`,{"onUpdate:modelValue":c[5]||=e=>g.value=e,rows:`3`,disabled:y.value,placeholder:b(u)(`projectAgents.assignmentDialog.workKindsPlaceholder`)},null,8,Pe),[[m,g.value]])])),C(`label`,Fe,[C(`span`,null,d(b(u)(`projectAgents.fields.reason`)),1),n(C(`textarea`,{"onUpdate:modelValue":c[6]||=e=>_.value=e,rows:`3`,maxlength:`2048`,disabled:y.value,placeholder:b(u)(`projectAgents.assignmentDialog.reasonPlaceholder`),required:``},null,8,Ie),[[m,_.value]])])]),x.value?(a(),T(`p`,Le,d(x.value),1)):f(``,!0),C(`footer`,Z,[C(`button`,{class:`quiet-button`,type:`button`,disabled:y.value,onClick:c[7]||=e=>i(`close`)},d(b(u)(`common.actions.cancel`)),9,Re),C(`button`,{class:`project-agent-primary-action`,type:`submit`,disabled:y.value},d(b(u)(`projectAgents.assignmentDialog.${A.value?`saveChange`:`saveAssign`}`)),9,ze)])],32)],544)):f(``,!0)}}),[[`__scopeId`,`data-v-27954ba8`]]),Ve={class:`project-agent-dialog-header`},He={id:`executor-routing-dialog-title`},Ue=[`disabled`],We={class:`project-agent-dialog-fields`},Ge=[`disabled`],Ke=[`disabled`],qe=[`disabled`],Je=[`disabled`],Ye={class:`project-agent-wide-field`},Xe=[`disabled`],Q={class:`project-agent-dialog-check`},Ze=[`disabled`],Qe={class:`project-agent-dialog-note project-agent-wide-field`},$e=[`disabled`],et=[`disabled`],tt={key:0},nt={key:1},rt=[`disabled`],it=[`disabled`],at={class:`project-agent-wide-field`},ot=[`placeholder`,`disabled`],st={class:`project-agent-wide-field`},ct=[`disabled`],lt={class:`project-agent-wide-field`},ut=[`disabled`],dt={class:`project-agent-dialog-note project-agent-wide-field`},ft={key:0,class:`project-agent-dialog-error`,role:`alert`},pt={class:`project-agent-dialog-actions`},mt=[`disabled`],ht=[`disabled`],gt=P(o({__name:`ExecutorRoutingDialog`,props:{open:{type:Boolean},mode:{},personalSpaceId:{},executor:{default:null},rule:{default:null},projects:{default:()=>[]},availableExecutors:{default:()=>[]}},emits:[`close`,`saved`],setup(t,{emit:r}){let i=t,o=r,s=c(``),h=c(``),_=c(`external`),y=c(``),x=c(100),E=c(!1),D=c(`space`),O=c(``),k=c(``),j=c(``),M=c(``),N=c(``),P=c(``),F=c(!1),I=c(``),{dialogRef:te,initialFocusRef:R,onCancel:re,onKeydown:z}=ne(()=>i.open,()=>o(`close`)),B=l(()=>!!i.executor),V=l(()=>i.mode===`executor`?B.value?`executorEditTitle`:`executorCreateTitle`:`ruleCreateTitle`),H=l(()=>i.projects.map(e=>({value:e.project_id,label:e.profile.name,meta:e.project_id})));l(()=>i.availableExecutors.map(e=>({value:e.executorId,label:e.displayName||e.label||e.executorId,meta:e.executorId}))),ee(()=>[i.open,i.mode,i.executor,i.rule],([e])=>{if(!e)return;let t=i.executor,n=i.rule;s.value=t?.executorId??``,h.value=t?.displayName??t?.label??``,_.value=t?.executorKind??`external`,y.value=t?.capabilities?.join(`
4
+ `)??``,x.value=t?.globalPriority??n?.priority??100,E.value=t?.healthRequired===!0,D.value=n?.scope??`space`,O.value=n?.personalProjectId??``,k.value=n?.taskId??``,j.value=n?.workKind??``,M.value=n?.requiredCapabilities?.join(`
5
+ `)??``,N.value=n?.executorIds?.join(`
6
+ `)??``,P.value=``,I.value=``},{immediate:!0});function U(e){return[...new Set(e.split(`
7
+ `).map(e=>e.trim()).filter(Boolean))]}function ie(e){return`${e}-${typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}`}async function ae(){if(F.value)return;let e=U(y.value),t=P.value.trim();if(i.mode===`executor`){if(!s.value.trim()||!h.value.trim()||x.value<1){I.value=u(`projectAgents.routing.editor.executorRequired`);return}}else if(!j.value.trim()||!U(N.value).length||!t){I.value=u(`projectAgents.routing.editor.ruleRequired`);return}F.value=!0,I.value=``;try{if(i.mode===`executor`){let t=await A(`/api/executors`,{personalSpaceId:i.personalSpaceId,executorId:s.value.trim(),displayName:h.value.trim(),executorKind:_.value.trim()||`external`,capabilities:e,advertisedModels:i.executor?.advertisedModels??i.executor?.availableModels??[],globalPriority:x.value,healthRequired:E.value,expectedRevision:i.executor?.revision,idempotencyKey:ie(`executor-directory`)});o(`saved`,t)}else{let e=await A(`/api/executor-routing-rules`,{personalSpaceId:D.value===`global`?void 0:i.personalSpaceId,scope:D.value,personalProjectId:(D.value===`project`||D.value===`task`)&&O.value||void 0,taskId:D.value===`task`&&k.value||void 0,workKind:j.value.trim(),requiredCapabilities:U(M.value),executorIds:U(N.value),priority:x.value,reason:t,idempotencyKey:ie(`executor-rule`)});o(`saved`,e)}o(`close`)}catch(e){I.value=e instanceof Error?e.message:u(`projectAgents.routing.editor.saveFailed`)}finally{F.value=!1}}return(r,i)=>t.open?(a(),T(`dialog`,{key:0,ref_key:`dialogRef`,ref:te,class:`project-agent-dialog vue-dialog`,"aria-modal":`true`,"aria-labelledby":`executor-routing-dialog-title`,onCancel:i[16]||=(...e)=>b(re)&&b(re)(...e),onKeydown:i[17]||=(...e)=>b(z)&&b(z)(...e)},[C(`form`,{class:`project-agent-dialog-shell`,onSubmit:v(ae,[`prevent`])},[C(`header`,Ve,[C(`h3`,He,d(b(u)(`projectAgents.routing.editor.${V.value}`)),1),C(`button`,{ref_key:`initialFocusRef`,ref:R,"data-dialog-initial-focus":``,class:`quiet-button`,type:`button`,disabled:F.value,onClick:i[0]||=e=>o(`close`)},d(b(u)(`common.actions.close`)),9,Ue)]),C(`div`,We,[t.mode===`executor`?(a(),T(g,{key:0},[C(`label`,null,[C(`span`,null,d(b(u)(`projectAgents.routing.editor.executorId`)),1),n(C(`input`,{"onUpdate:modelValue":i[1]||=e=>s.value=e,maxlength:`128`,disabled:B.value||F.value,required:``},null,8,Ge),[[m,s.value]])]),C(`label`,null,[C(`span`,null,d(b(u)(`projectAgents.routing.editor.displayName`)),1),n(C(`input`,{"onUpdate:modelValue":i[2]||=e=>h.value=e,maxlength:`160`,disabled:F.value,required:``},null,8,Ke),[[m,h.value]])]),C(`label`,null,[C(`span`,null,d(b(u)(`projectAgents.routing.editor.executorKind`)),1),n(C(`input`,{"onUpdate:modelValue":i[3]||=e=>_.value=e,maxlength:`128`,disabled:F.value},null,8,qe),[[m,_.value]])]),C(`label`,null,[C(`span`,null,d(b(u)(`projectAgents.routing.editor.priority`)),1),n(C(`input`,{"onUpdate:modelValue":i[4]||=e=>x.value=e,type:`number`,min:`1`,max:`1000000`,disabled:F.value,required:``},null,8,Je),[[m,x.value,void 0,{number:!0}]])]),C(`label`,Ye,[C(`span`,null,d(b(u)(`projectAgents.routing.editor.capabilities`)),1),n(C(`textarea`,{"onUpdate:modelValue":i[5]||=e=>y.value=e,rows:`3`,disabled:F.value},null,8,Xe),[[m,y.value]])]),C(`label`,Q,[n(C(`input`,{"onUpdate:modelValue":i[6]||=e=>E.value=e,type:`checkbox`,disabled:F.value},null,8,Ze),[[p,E.value]]),i[18]||=e(),C(`span`,null,d(b(u)(`projectAgents.routing.editor.healthRequired`)),1)]),C(`p`,Qe,d(b(u)(`projectAgents.routing.editor.evidenceNote`)),1)],64)):(a(),T(g,{key:1},[C(`label`,null,[C(`span`,null,d(b(u)(`projectAgents.routing.editor.scope`)),1),n(C(`select`,{"onUpdate:modelValue":i[7]||=e=>D.value=e,disabled:F.value},[...i[19]||=[C(`option`,{value:`space`},`space`,-1),C(`option`,{value:`project`},`project`,-1),C(`option`,{value:`task`},`task`,-1)]],8,$e),[[S,D.value]])]),C(`label`,null,[C(`span`,null,d(b(u)(`projectAgents.routing.editor.priority`)),1),n(C(`input`,{"onUpdate:modelValue":i[8]||=e=>x.value=e,type:`number`,min:`1`,max:`1000000`,disabled:F.value,required:``},null,8,et),[[m,x.value,void 0,{number:!0}]])]),D.value===`project`||D.value===`task`?(a(),T(`label`,tt,[C(`span`,null,d(b(u)(`projectAgents.fields.project`)),1),w(L,{modelValue:O.value,"onUpdate:modelValue":i[9]||=e=>O.value=e,"control-id":`executor-rule-project`,options:H.value,label:b(u)(`projectAgents.fields.project`),disabled:F.value},null,8,[`modelValue`,`options`,`label`,`disabled`])])):f(``,!0),D.value===`task`?(a(),T(`label`,nt,[C(`span`,null,d(b(u)(`projectAgents.routing.editor.taskId`)),1),n(C(`input`,{"onUpdate:modelValue":i[10]||=e=>k.value=e,maxlength:`128`,disabled:F.value},null,8,rt),[[m,k.value]])])):f(``,!0),C(`label`,null,[C(`span`,null,d(b(u)(`projectAgents.routing.editor.workKind`)),1),n(C(`input`,{"onUpdate:modelValue":i[11]||=e=>j.value=e,maxlength:`128`,disabled:F.value,required:``},null,8,it),[[m,j.value]])]),C(`label`,at,[C(`span`,null,d(b(u)(`projectAgents.routing.editor.executorIds`)),1),n(C(`textarea`,{"onUpdate:modelValue":i[12]||=e=>N.value=e,rows:`3`,placeholder:b(u)(`projectAgents.routing.editor.executorIdsPlaceholder`),disabled:F.value,required:``},null,8,ot),[[m,N.value]])]),C(`label`,st,[C(`span`,null,d(b(u)(`projectAgents.routing.editor.requiredCapabilities`)),1),n(C(`textarea`,{"onUpdate:modelValue":i[13]||=e=>M.value=e,rows:`3`,disabled:F.value},null,8,ct),[[m,M.value]])]),C(`label`,lt,[C(`span`,null,d(b(u)(`projectAgents.fields.reason`)),1),n(C(`textarea`,{"onUpdate:modelValue":i[14]||=e=>P.value=e,rows:`3`,disabled:F.value,required:``},null,8,ut),[[m,P.value]])]),C(`p`,dt,d(b(u)(`projectAgents.routing.editor.ruleNote`)),1)],64))]),I.value?(a(),T(`p`,ft,d(I.value),1)):f(``,!0),C(`footer`,pt,[C(`button`,{class:`quiet-button`,type:`button`,disabled:F.value,onClick:i[15]||=e=>o(`close`)},d(b(u)(`common.actions.cancel`)),9,mt),C(`button`,{class:`project-agent-primary-action`,type:`submit`,disabled:F.value},d(b(u)(`projectAgents.routing.editor.save`)),9,ht)])],32)],544)):f(``,!0)}}),[[`__scopeId`,`data-v-6b96c90d`]]),_t=[`aria-label`,`aria-busy`],vt={key:0,class:`project-agent-policy-state`,role:`status`},yt={key:1,class:`project-agent-policy-options`},bt=[`checked`,`disabled`],xt=[`checked`,`disabled`],St={class:`project-agent-policy-feedback`,"aria-live":`polite`},Ct={key:0,role:`alert`},wt=[`disabled`],Tt={key:1,role:`status`},Et={key:2,role:`status`},Dt=P(o({__name:`ProjectAgentAutomationPolicyPanel`,props:{personalSpaceId:{},personalProjectId:{},projectName:{}},setup(t){let n=t,r=c(y()),i=c(!1),o=c(!1),s=c(``),p=c(``),m=c(!1),h=0,g=l(()=>i.value||o.value);ee(()=>[n.personalSpaceId,n.personalProjectId],()=>void _(),{immediate:!0});async function _(){let e=++h;if(r.value=y(),m.value=!1,p.value=``,!(!n.personalSpaceId||!n.personalProjectId)){i.value=!0,s.value=``;try{let t=await j(`/api/project-agent-coordination-policy?${new URLSearchParams({personalSpaceId:n.personalSpaceId,personalProjectId:n.personalProjectId})}`);e===h&&(r.value=x(t))}catch(t){e===h&&(s.value=t instanceof Error?t.message:u(`projectAgents.coordination.loadFailed`))}finally{e===h&&(i.value=!1)}}}async function v(e,t){if(g.value)return;let i={...r.value},a=t.currentTarget.checked;r.value={...r.value,[e]:a},o.value=!0,m.value=!1,p.value=``;try{let e=await O(`/api/project-agent-coordination-policy`,{personalSpaceId:n.personalSpaceId,personalProjectId:n.personalProjectId,askBeforeRecruitment:r.value.askBeforeRecruitment,autoReusePreviousAgent:r.value.autoReusePreviousAgent});r.value=x(e),m.value=!0}catch(e){r.value=i,p.value=e instanceof Error?e.message:u(`projectAgents.coordination.saveFailed`)}finally{o.value=!1}}function y(){return{personalSpaceId:n.personalSpaceId,personalProjectId:n.personalProjectId,askBeforeRecruitment:!0,autoReusePreviousAgent:!0,updatedAt:null}}function x(e){let t=e&&typeof e==`object`?e:{};return{personalSpaceId:w(t.personalSpaceId??t.personal_space_id)||n.personalSpaceId,personalProjectId:w(t.personalProjectId??t.personal_project_id)||n.personalProjectId,askBeforeRecruitment:S(t.askBeforeRecruitment??t.ask_before_recruitment,!0),autoReusePreviousAgent:S(t.autoReusePreviousAgent??t.auto_reuse_previous_agent,!0),updatedAt:w(t.updatedAt??t.updated_at)}}function S(e,t){return typeof e==`boolean`?e:t}function w(e){return typeof e==`string`&&e?e:null}return(n,c)=>(a(),T(`section`,{class:`project-agent-automation-policy`,"aria-label":b(u)(`projectAgents.coordination.aria`,{project:t.projectName}),"aria-busy":g.value},[C(`header`,null,[C(`h3`,null,d(b(u)(`projectAgents.coordination.title`)),1),C(`span`,null,d(t.projectName),1)]),i.value?(a(),T(`p`,vt,d(b(u)(`projectAgents.coordination.loading`)),1)):(a(),T(`div`,yt,[C(`label`,null,[C(`span`,null,[C(`strong`,null,d(b(u)(`projectAgents.coordination.autoReuse`)),1),C(`small`,null,d(b(u)(`projectAgents.coordination.autoReuseMeta`)),1)]),C(`input`,{checked:r.value.autoReusePreviousAgent,disabled:g.value,type:`checkbox`,role:`switch`,onChange:c[0]||=e=>v(`autoReusePreviousAgent`,e)},null,40,bt)]),C(`label`,null,[C(`span`,null,[C(`strong`,null,d(b(u)(`projectAgents.coordination.askBeforeRecruitment`)),1),C(`small`,null,d(b(u)(`projectAgents.coordination.askBeforeRecruitmentMeta`)),1)]),C(`input`,{checked:r.value.askBeforeRecruitment,disabled:g.value,type:`checkbox`,role:`switch`,onChange:c[1]||=e=>v(`askBeforeRecruitment`,e)},null,40,xt)])])),C(`div`,St,[s.value||p.value?(a(),T(`p`,Ct,[e(d(s.value||p.value)+` `,1),s.value?(a(),T(`button`,{key:0,type:`button`,disabled:g.value,onClick:_},d(b(u)(`projectAgents.retry`)),9,wt)):f(``,!0)])):o.value?(a(),T(`p`,Tt,d(b(u)(`projectAgents.coordination.saving`)),1)):m.value?(a(),T(`p`,Et,d(b(u)(`projectAgents.coordination.saved`)),1)):f(``,!0)])],8,_t))}}),[[`__scopeId`,`data-v-4160a96e`]]),Ot={key:0,class:`project-agent-source-state`,role:`status`},kt={key:1,class:`project-agent-source-state`,role:`status`},At={key:2,class:`project-agent-source-state is-error`,role:`alert`},jt=P(o({__name:`ProjectAgentDetailState`,props:{status:{},error:{}},emits:[`retry`],setup(e){return(t,n)=>e.status===`idle`?(a(),T(`div`,Ot,d(b(u)(`projectAgents.detail.notLoaded`)),1)):e.status===`loading`?(a(),T(`div`,kt,d(b(u)(`projectAgents.detail.loadingSection`)),1)):e.status===`error`?(a(),T(`div`,At,[C(`span`,null,d(e.error||b(u)(`projectAgents.detail.sectionUnavailable`)),1),C(`button`,{class:`quiet-button`,type:`button`,onClick:n[0]||=e=>t.$emit(`retry`)},d(b(u)(`projectAgents.retry`)),1)])):r(t.$slots,`default`,{},void 0,!0,3)}}),[[`__scopeId`,`data-v-f174e20d`]]),Mt={class:`project-agent-dialog-header`},Nt={id:`project-agent-dialog-title`},Pt=[`disabled`],Ft={class:`project-agent-dialog-fields`},It=[`disabled`],Lt={value:`active`},Rt={value:`inactive`},zt={value:`archived`},Bt=[`disabled`],$={value:`durable`},Vt={value:`hr`},Ht={key:0,value:`temporary`,disabled:``},Ut={key:1,value:`coordinator`,disabled:``},Wt=[`disabled`,`placeholder`],Gt=[`disabled`,`placeholder`],Kt=[`disabled`,`placeholder`],qt={key:0,class:`project-agent-id-note`},Jt={class:`project-agent-wide-field`},Yt=[`disabled`,`placeholder`],Xt={class:`project-agent-wide-field`},Zt=[`disabled`,`placeholder`],Qt={class:`project-agent-wide-field`},$t=[`disabled`,`placeholder`],en={class:`project-agent-wide-field project-agent-strategy-fields`},tn=[`disabled`],nn={value:`flexible`},rn={value:`locked`},an=[`disabled`],on={class:`project-agent-wide-field`},sn=[`disabled`,`placeholder`],cn={key:0,class:`project-agent-dialog-error`,role:`alert`},ln={class:`project-agent-dialog-actions`},un=[`disabled`],dn=[`disabled`],fn=P(o({__name:`ProjectAgentDialog`,props:{open:{type:Boolean},agent:{},projects:{},defaultProjectId:{},personalSpaceId:{}},emits:[`close`,`saved`],setup(e,{emit:t}){let r=e,i=t,o=c(``),s=c(``),p=c(``),h=c(``),g=c(``),_=c(``),y=c(``),x=c(`active`),E=c(`durable`),O=c(`adaptive`),k=c(`flexible`),j=c(``),M=c(!1),N=c(``),{dialogRef:P,initialFocusRef:F,onCancel:I,onKeydown:te}=ne(()=>r.open,()=>i(`close`)),R=l(()=>!!r.agent),re=l(()=>r.projects.map(e=>({value:e.project_id,label:e.profile.name,meta:e.project_id})));ee(()=>[r.open,r.agent,r.defaultProjectId],([e,t,n])=>{if(!e)return;o.value=t?.personalProjectId??n??r.projects[0]?.project_id??``,s.value=t?.agentId??``,p.value=t?.profile.name??``,h.value=t?.profile.occupationEmoji??``,g.value=t?.profile.responsibility??``,_.value=(t?.profile.capabilities??[]).join(`
8
+ `),y.value=(t?.profile.initialPreferences??[]).join(`
9
+ `),x.value=t?.profile.status??`active`,E.value=t?.profile.agentType??`durable`,O.value=t?.profile.defaultModelStrategy?.mode??`adaptive`,k.value=t?.profile.executorPolicy?.mode??`flexible`;let i=t?.profile.executorPolicy,a=i?.mode===`locked`?i.lockedExecutorIds:i?.preferredExecutorIds;j.value=(a?.length?a:i?.allowList?.map(({executorId:e})=>e)??[]).join(`
10
+ `),N.value=``},{immediate:!0});function z(e){let t=e.split(`
11
+ `).map(e=>e.trim()).filter(Boolean),n=t.map(e=>e.toLocaleLowerCase());return new Set(n).size===n.length?t:null}async function B(){if(M.value)return;let e=o.value.trim(),t=s.value.trim(),n=p.value.trim(),a=h.value.trim(),c=g.value.trim();if(!t||!n||!c){N.value=u(`projectAgents.dialog.required`);return}let l=r.projects.find(({project_id:t})=>t===e);if(e&&!l){N.value=u(`projectAgents.dialog.projectUnavailable`);return}if(a&&!V(a)){N.value=u(`projectAgents.dialog.occupationEmojiInvalid`);return}let d=l?.personal_space_id??r.personalSpaceId??r.agent?.personalSpaceId;if(!d){N.value=u(`projectAgents.dialog.spaceUnavailable`);return}let f=z(_.value),m=z(y.value);if(!f||!m){N.value=u(`projectAgents.dialog.duplicate`);return}let v=z(j.value);if(!v||k.value===`locked`&&!v.length){N.value=u(`projectAgents.dialog.duplicate`);return}M.value=!0,N.value=``;try{let r={name:n,responsibility:c,capabilities:f,initialPreferences:m,status:x.value};a&&(r.occupationEmoji=a),E.value!==`durable`&&(r.agentType=E.value),O.value!==`adaptive`&&(r.defaultModelStrategy={mode:O.value}),(k.value!==`flexible`||v.length)&&(r.executorPolicy={mode:k.value,lockedExecutorIds:k.value===`locked`?v:[],preferredExecutorIds:k.value===`flexible`?v:[]});let o=await A(`/api/project-agents`,{personalSpaceId:d,personalProjectId:null,agentId:t,profile:r}),s=o;if(e){let n=await D(`/api/project-agent-assignments`,{personalSpaceId:d,personalProjectId:e,agentId:t,idempotencyKey:`directory:${t}:${Date.now()}`,responsibility:c,capabilities:f,reason:u(`projectAgents.dialog.initialAssignmentReason`)});s={...o,personalProjectId:e,assignments:[n]}}i(`saved`,s),i(`close`)}catch(e){N.value=e instanceof Error?e.message:u(`projectAgents.dialog.saveFailed`)}finally{M.value=!1}}function V(e){return Array.from(e).length>32||/\s/u.test(e)||Array.from(new Intl.Segmenter(void 0,{granularity:`grapheme`}).segment(e)).length!==1?!1:/\p{Extended_Pictographic}|\p{Regional_Indicator}{2}|[#*0-9]\uFE0F?\u20E3/u.test(e)&&/^[\p{Extended_Pictographic}\p{Emoji_Component}\uFE0E\uFE0F\u200D\u{E0020}-\u{E007F}#*0-9]+$/u.test(e)}return(t,r)=>e.open?(a(),T(`dialog`,{key:0,ref_key:`dialogRef`,ref:P,class:`project-agent-dialog vue-dialog`,"aria-modal":`true`,"aria-labelledby":`project-agent-dialog-title`,onCancel:r[14]||=(...e)=>b(I)&&b(I)(...e),onKeydown:r[15]||=(...e)=>b(te)&&b(te)(...e)},[C(`form`,{class:`project-agent-dialog-shell`,onSubmit:v(B,[`prevent`])},[C(`header`,Mt,[C(`h3`,Nt,d(R.value?b(u)(`projectAgents.dialog.editTitle`):b(u)(`projectAgents.dialog.createTitle`)),1),C(`button`,{ref_key:`initialFocusRef`,ref:F,"data-dialog-initial-focus":``,class:`quiet-button`,type:`button`,disabled:M.value,onClick:r[0]||=e=>i(`close`)},d(b(u)(`common.actions.close`)),9,Pt)]),C(`div`,Ft,[C(`label`,null,[C(`span`,null,d(b(u)(`projectAgents.fields.project`)),1),w(L,{modelValue:o.value,"onUpdate:modelValue":r[1]||=e=>o.value=e,"control-id":`project-agent-project`,options:re.value,label:b(u)(`projectAgents.fields.project`),placeholder:b(u)(`projectAgents.dialog.projectPlaceholder`),disabled:R.value||M.value},null,8,[`modelValue`,`options`,`label`,`placeholder`,`disabled`])]),C(`label`,null,[C(`span`,null,d(b(u)(`projectAgents.fields.status`)),1),n(C(`select`,{"onUpdate:modelValue":r[2]||=e=>x.value=e,name:`project-agent-status`,disabled:M.value},[C(`option`,Lt,d(b(u)(`projectAgents.status.active`)),1),C(`option`,Rt,d(b(u)(`projectAgents.status.inactive`)),1),C(`option`,zt,d(b(u)(`projectAgents.status.archived`)),1)],8,It),[[S,x.value]])]),C(`label`,null,[C(`span`,null,d(b(u)(`projectAgents.fields.agentType`)),1),n(C(`select`,{"onUpdate:modelValue":r[3]||=e=>E.value=e,name:`project-agent-type`,disabled:M.value},[C(`option`,$,d(b(u)(`projectAgents.agentType.durable`)),1),C(`option`,Vt,d(b(u)(`projectAgents.agentType.hr`)),1),R.value&&E.value===`temporary`?(a(),T(`option`,Ht,d(b(u)(`projectAgents.agentType.temporary`)),1)):f(``,!0),R.value&&E.value===`coordinator`?(a(),T(`option`,Ut,d(b(u)(`projectAgents.agentType.coordinator`)),1)):f(``,!0)],8,Bt),[[S,E.value]])]),C(`label`,null,[C(`span`,null,d(b(u)(`projectAgents.fields.agentId`)),1),n(C(`input`,{"onUpdate:modelValue":r[4]||=e=>s.value=e,name:`project-agent-id`,maxlength:`128`,required:``,disabled:R.value||M.value,placeholder:b(u)(`projectAgents.dialog.agentIdPlaceholder`)},null,8,Wt),[[m,s.value]])]),C(`label`,null,[C(`span`,null,d(b(u)(`projectAgents.fields.name`)),1),n(C(`input`,{"onUpdate:modelValue":r[5]||=e=>p.value=e,name:`project-agent-name`,maxlength:`160`,required:``,disabled:M.value,placeholder:b(u)(`projectAgents.dialog.namePlaceholder`)},null,8,Gt),[[m,p.value]])]),C(`label`,null,[C(`span`,null,d(b(u)(`projectAgents.fields.occupationEmoji`)),1),n(C(`input`,{"onUpdate:modelValue":r[6]||=e=>h.value=e,name:`project-agent-occupation-emoji`,maxlength:`64`,autocomplete:`off`,disabled:M.value,placeholder:b(u)(`projectAgents.dialog.occupationEmojiPlaceholder`)},null,8,Kt),[[m,h.value]])]),R.value?(a(),T(`small`,qt,d(b(u)(`projectAgents.dialog.idLocked`)),1)):f(``,!0),C(`label`,Jt,[C(`span`,null,d(b(u)(`projectAgents.fields.responsibility`)),1),n(C(`textarea`,{"onUpdate:modelValue":r[7]||=e=>g.value=e,name:`project-agent-responsibility`,maxlength:`4096`,rows:`4`,required:``,disabled:M.value,placeholder:b(u)(`projectAgents.dialog.responsibilityPlaceholder`)},null,8,Yt),[[m,g.value]])]),C(`label`,Xt,[C(`span`,null,d(b(u)(`projectAgents.fields.capabilities`)),1),n(C(`textarea`,{"onUpdate:modelValue":r[8]||=e=>_.value=e,name:`project-agent-capabilities`,maxlength:`8192`,rows:`4`,disabled:M.value,placeholder:b(u)(`projectAgents.dialog.capabilitiesPlaceholder`)},null,8,Zt),[[m,_.value]])]),C(`label`,Qt,[C(`span`,null,d(b(u)(`projectAgents.fields.initialPreferences`)),1),n(C(`textarea`,{"onUpdate:modelValue":r[9]||=e=>y.value=e,name:`project-agent-preferences`,maxlength:`8192`,rows:`4`,disabled:M.value,placeholder:b(u)(`projectAgents.dialog.preferencesPlaceholder`)},null,8,$t),[[m,y.value]])]),C(`fieldset`,en,[C(`legend`,null,d(b(u)(`projectAgents.fields.defaultModelStrategy`)),1),C(`label`,null,[C(`span`,null,d(b(u)(`projectAgents.fields.executorPolicy`)),1),n(C(`select`,{"onUpdate:modelValue":r[10]||=e=>k.value=e,name:`project-agent-selection-mode`,disabled:M.value},[C(`option`,nn,d(b(u)(`projectAgents.strategy.flexible`)),1),C(`option`,rn,d(b(u)(`projectAgents.strategy.locked`)),1)],8,tn),[[S,k.value]])]),C(`label`,null,[C(`span`,null,d(b(u)(`projectAgents.fields.modelIntent`)),1),n(C(`select`,{"onUpdate:modelValue":r[11]||=e=>O.value=e,name:`project-agent-model-mode`,disabled:M.value},[...r[16]||=[C(`option`,{value:`adaptive`},`adaptive`,-1),C(`option`,{value:`fast`},`fast`,-1),C(`option`,{value:`balanced`},`balanced`,-1),C(`option`,{value:`deep`},`deep`,-1)]],8,an),[[S,O.value]])]),C(`label`,on,[C(`span`,null,d(b(u)(`projectAgents.fields.allowList`)),1),n(C(`textarea`,{"onUpdate:modelValue":r[12]||=e=>j.value=e,name:`project-agent-allow-list`,rows:`3`,disabled:M.value,placeholder:b(u)(`projectAgents.dialog.allowListPlaceholder`)},null,8,sn),[[m,j.value]])]),C(`small`,null,d(k.value===`locked`?b(u)(`projectAgents.strategy.lockedUnavailable`):b(u)(`projectAgents.strategy.providerNeutral`)),1)])]),N.value?(a(),T(`p`,cn,d(N.value),1)):f(``,!0),C(`footer`,ln,[C(`button`,{class:`quiet-button`,type:`button`,disabled:M.value,onClick:r[13]||=e=>i(`close`)},d(b(u)(`common.actions.cancel`)),9,un),C(`button`,{class:`project-agent-primary-action`,type:`submit`,disabled:M.value},d(R.value?b(u)(`projectAgents.dialog.saveEdit`):b(u)(`projectAgents.dialog.saveCreate`)),9,dn)])],32)],544)):f(``,!0)}}),[[`__scopeId`,`data-v-83825f22`]]),pn=[`aria-label`],mn={class:`project-agents-header`},hn={class:`project-agents-header-meta`},gn={class:`project-agent-header-actions`},_n=[`disabled`],vn=[`disabled`],yn={class:`project-agents-summary`,"aria-live":`polite`},bn={class:`project-agents-toolbar`},xn={class:`project-agents-search`},Sn={class:`sr-only`},Cn=[`placeholder`],wn=[`aria-label`],Tn=[`aria-pressed`,`onClick`],En={key:1,class:`project-agents-state`},Dn={key:2,class:`project-agents-state is-error`,role:`alert`},On={key:3,class:`project-agents-state`},kn=[`disabled`],An={key:4,class:`project-agents-state`},jn={key:5,class:`project-agents-directory`},Mn=[`aria-label`],Nn=[`aria-current`,`onClick`],Pn={class:`project-agent-row-heading`},Fn=[`aria-label`],In={class:`project-agent-kind`},Ln={class:`project-agent-row-projects`},Rn={key:0},zn={key:1},Bn={class:`project-agent-row-responsibility`},Vn={class:`project-agent-row-work`},Hn={class:`project-agent-row-capabilities`},Un=[`aria-label`],Wn={class:`project-agent-detail-heading`},Gn=[`aria-label`],Kn={key:0},qn={key:0},Jn={class:`project-agent-detail-actions`},Yn=[`disabled`],Xn=[`disabled`],Zn={key:0,class:`project-agent-detail-notice`,role:`status`},Qn={key:1,class:`employee-project-overview`,"aria-labelledby":`employee-project-overview-title`},$n={class:`employee-project-overview-heading`},er={id:`employee-project-overview-title`},tr={key:0,class:`employee-assigned-projects`},nr={key:1,class:`employee-project-overview-hint`},rr={class:`project-agent-detail-meta`},ir={key:0},ar={class:`project-agent-detail-source`,"data-detail-section":`recruitment`},or={class:`project-agent-detail-section`,"aria-labelledby":`project-agent-recruitment-heading`},sr={class:`project-agent-section-heading`},cr={id:`project-agent-recruitment-heading`},lr={key:0,class:`project-agent-recruitment-list`},ur={class:`project-agent-card-actions`},dr=[`disabled`,`onClick`],fr=[`disabled`,`onClick`],pr={class:`project-agent-compact-meta`},mr={key:1,class:`project-agent-muted`},hr={class:`project-agent-detail-section is-responsibility`},gr={key:0,class:`project-agent-tags`},_r={class:`project-agent-detail-source`,"data-detail-section":`assignments`},vr={class:`project-agent-detail-section`},yr={class:`project-agent-section-heading`},br={class:`project-agent-section-tools`},xr={key:0,class:`project-agent-assignment-list`},Sr={class:`project-agent-card-actions`},Cr=[`onClick`],wr=[`onClick`],Tr={key:0},Er={key:1,class:`project-agent-inline-list`},Dr={class:`project-agent-strategy-note`},Or={key:0},kr={key:2,class:`project-agent-tags`},Ar={key:3},jr={key:1,class:`project-agent-muted`},Mr={class:`project-agent-detail-source`,"data-detail-section":`executors`},Nr={class:`project-agent-detail-section`},Pr={class:`project-agent-section-heading`},Fr={class:`project-agent-muted`},Ir={key:0,class:`project-agent-tags`},Lr={key:1,class:`project-agent-blocked`},Rr={key:2,class:`project-agent-muted`},zr={class:`project-agent-section-tools`},Br={key:3,class:`project-agent-executor-list`},Vr=[`onClick`],Hr=[`disabled`,`onClick`],Ur=[`disabled`,`onClick`],Wr={class:`project-agent-detail-source`,"data-detail-section":`tasks`},Gr={class:`project-agent-detail-section`},Kr={class:`project-agent-section-heading`},qr={key:0,class:`project-agent-task-list`},Jr={key:0},Yr={key:1,class:`project-agent-inline-list`},Xr=[`aria-label`],Zr={class:`project-agent-section-heading`},Qr=[`aria-label`],$r={class:`project-agent-execution-summary-table`},ei={class:`sr-only`},ti={scope:`col`},ni={scope:`col`},ri={scope:`col`},ii={scope:`col`},ai={scope:`col`},oi={scope:`col`},si={scope:`col`},ci={scope:`row`},li={class:`project-agent-execution-worker`},ui=[`aria-label`],di={key:0},fi=[`data-label`],pi=[`data-label`],mi=[`data-label`],hi={key:0},gi={key:1},_i=[`data-label`],vi=[`href`],yi={key:1},bi={class:`project-agent-reporter-label`},xi=[`href`],Si={key:1},Ci=[`data-label`],wi=[`data-label`],Ti={key:1},Ei={key:1,class:`project-agent-muted`},Di=[`aria-label`],Oi={class:`project-agent-section-heading`},ki={class:`project-agent-execution-summary-list`},Ai=[`aria-label`],ji={key:1},Mi={class:`project-agent-execution-summary-meta`},Ni={key:0},Pi={key:0},Fi={key:1},Ii={key:2},Li={key:4},Ri={key:5,class:`project-agent-routing-decision`},zi={class:`project-agent-section-heading`},Bi={key:0},Vi={key:1},Hi={key:2},Ui={key:0},Wi={key:3},Gi={key:0},Ki={key:4},qi={class:`project-agent-execution-line`},Ji={key:0},Yi={key:1},Xi={key:2},Zi={key:6},Qi={key:7},$i={key:1,class:`project-agent-muted`},ea={class:`project-agent-detail-source`,"data-detail-section":`activity`},ta={class:`project-agent-detail-section`},na={class:`project-agent-section-heading`},ra={key:0},ia={key:0,class:`project-agent-heatmap-wrap project-agent-heatmap-viewport`},aa=[`aria-label`],oa=[`aria-label`,`aria-pressed`,`onClick`],sa={class:`sr-only`},ca={key:0,class:`project-agent-day-detail`},la={key:0,class:`project-agent-muted`},ua={key:1},da={key:1,class:`project-agent-muted`},fa={class:`project-agent-detail-source`,"data-detail-section":`clients`},pa={class:`project-agent-detail-section`},ma={class:`project-agent-section-heading`},ha={key:0,class:`project-agent-client-list`},ga={key:0},_a={key:1},va={key:2},ya={key:1,class:`project-agent-muted`},ba={class:`project-agent-detail-source`,"data-detail-section":`routing`},xa={class:`project-agent-detail-section`},Sa={class:`project-agent-section-heading`},Ca={class:`project-agent-section-tools`},wa={key:0,class:`project-agent-rule-list`},Ta=[`disabled`,`onClick`],Ea={key:1,class:`project-agent-muted`},Da={class:`project-agent-note`},Oa={class:`project-agent-detail-source`,"data-detail-section":`learning`},ka={class:`project-agent-detail-section`},Aa={class:`project-agent-section-heading`},ja={key:0,class:`project-agent-learning-list`},Ma={key:0},Na={key:1,class:`project-agent-inline-list`},Pa={key:0},Fa={key:2,class:`project-agent-evidence-list`},Ia=[`disabled`,`onClick`],La={key:3,class:`project-agent-learning-actions`},Ra=[`disabled`,`onClick`],za={key:1,class:`project-agent-muted`},Ba={class:`project-agent-note`},Va={class:`project-agent-detail-section`},Ha={key:1,class:`project-agent-detail-placeholder`},Ua=P(o({__name:`ProjectAgentsPage`,setup(r){let o=[`assignments`,`tasks`,`activity`,`recruitments`,`executors`,`routingRules`,`learning`],p=M(),v=c([]),S=c(!1),A=c(``),P=c(null),L=c(`all`),ne=c(``),H=c(``),U=c(!1),ie=c(!1),ae=c(``),G=c(null),K=c(!1),ue=c(`assign`),de=c(null),fe=c(!1),q=c({}),J=c(``),pe=c(``),ye=c(``),Y=c(``),xe=c(``),Se=c(!1),Ce=c(`executor`),we=c(null),Te=c(null),Ee=0,De=0,Oe=new Set([`awaiting_recruitment`,`queued`,`running`,`paused`,`awaiting_review`,`blocked`]);function ke(e){return`${e}:${typeof crypto<`u`&&`randomUUID`in crypto?crypto.randomUUID():`${Date.now()}-${Math.random().toString(16).slice(2)}`}`}let Ae=l(()=>p.state?.personalProjects??[]);async function je(e){await Xe(),Le.value.some(t=>t.agentId===e.agent.agentId)||(P.value=null,L.value=`all`,ne.value=``);let t=H.value===e.agent.agentId;H.value=e.agent.agentId,t&&Q()}let X=l(()=>p.activePersonalSpace?.id??``),Me=l(()=>new Map(Ae.value.map(e=>[e.project_id,e]))),Ne=l(()=>Ae.value.map(e=>({id:e.project_id,name:e.profile.name}))),Pe=l({get:()=>P.value??Ne.value.map(e=>e.id),set:e=>{let t=Ne.value.filter(t=>e.includes(t.id)).map(e=>e.id);P.value=t.length===Ne.value.length?null:t}}),Fe=l(()=>P.value?.length===1?P.value[0]:``),Ie=l(()=>[{value:`all`,label:u(`projectAgents.status.all`)},{value:`active`,label:u(`projectAgents.status.active`)},{value:`inactive`,label:u(`projectAgents.status.inactive`)},{value:`archived`,label:u(`projectAgents.status.archived`)}]),Le=l(()=>{let e=ne.value.trim().toLocaleLowerCase(y());return v.value.filter(e=>P.value===null||xt(e).some(({id:e})=>P.value.includes(e))).filter(e=>L.value===`all`||e.profile.status===L.value).filter(t=>!e||Ct(t).toLocaleLowerCase(y()).includes(e)).sort(_t)}),Z=l(()=>Le.value.find(e=>e.agentId===H.value)??null),Re=l(()=>Z.value?F(Z.value):null),ze=l(()=>I.value.find(e=>e.id===Re.value)),Ve=l(()=>Z.value?xt(Z.value).filter(e=>Me.value.get(e.id)?.profile.lifecycle!==`archived`):[]),He=l(()=>v.value.filter(({profile:e})=>e.status===`active`).length),Ue=l(()=>v.value.reduce((e,t)=>e+bt(t).length,0)),We=l(()=>new Set(v.value.flatMap(e=>bt(e).map(({personalProjectId:e})=>e))).size),Ge=l(()=>Fe.value?Fe.value:Z.value?.assignments?.find(({status:e})=>e===`active`)?.personalProjectId??Z.value?.personalProjectId??Ae.value[0]?.project_id??null),Ke=l(()=>Z.value?.activity??null),qe=l(()=>Ke.value?.days.find(({date:e})=>e===pe.value)??null),Je=l(()=>Object.entries(Z.value?.learningEvidence??{})),Ye=l(()=>Z.value?.recruitments??[]);i(()=>{p.runtimeStatus===`idle`&&p.refresh()}),ee(X,e=>{++De,q.value={},H.value=``,v.value=[],P.value=null,e?Xe(e):p.runtimeStatus!==`loading`&&(S.value=!1)},{immediate:!0}),ee(Le,e=>{e.some(e=>e.agentId===H.value)||(H.value=e[0]?.agentId??``),e.some(e=>e.activity?.days.some(({date:e})=>e===pe.value))||(pe.value=``)},{immediate:!0}),ee([H,X],([e,t])=>{pe.value=``,e&&t&&Q(e,t)},{immediate:!0});async function Xe(e=X.value){if(!e)return;let t=++Ee;S.value=!0,A.value=``;try{let n=new URLSearchParams({personalSpaceId:e}),[r,i]=await Promise.allSettled([j(`/api/project-agents?${n}`),j(`/api/project-agent-tasks?${n}`)]);if(te(e),r.status===`rejected`)throw r.reason;if(t===Ee){let e=oo(oe(r.value)),t=i.status===`fulfilled`?$a(i.value).filter(e=>Oe.has(e.status)):[];v.value=Ga(e,t)}}catch(e){t===Ee&&(A.value=e instanceof Error?e.message:u(`projectAgents.loadError`))}finally{t===Ee&&(S.value=!1)}}async function Q(e=H.value,t=X.value){let n=v.value.find(t=>t.agentId===e);if(!n||!t)return;let r=++De;fe.value=!0,J.value=``,Qe(e,`loading`);let i=new URLSearchParams({personalSpaceId:t,agentId:e}),a=ve(),s=new URLSearchParams({personalSpaceId:t,agentId:e,fromDate:a.fromDate,toDate:a.toDate}),c={assignments:j(`/api/project-agent-assignments?${i}`),tasks:j(`/api/project-agent-tasks?${i}`),activity:j(`/api/project-agent-activity?${s}`),recruitments:j(`/api/project-agent-recruitments?personalSpaceId=${encodeURIComponent(t)}`),executors:j(`/api/executors?personalSpaceId=${encodeURIComponent(t)}`),routingRules:j(`/api/executor-routing-rules?personalSpaceId=${encodeURIComponent(t)}`),learning:j(`/api/project-agent-routing-learning?${i}`)};await Promise.all(o.map(async i=>{try{let a=await c[i];if(!tt(r,e,t))return;nt(n,i,a),$e(e,i,{status:`ready`,error:``})}catch(n){if(!tt(r,e,t))return;$e(e,i,{status:`error`,error:n instanceof Error?n.message:u(`projectAgents.detail.sectionUnavailable`)})}})),tt(r,e,t)&&(fe.value=!1)}function Ze(e=`idle`){return Object.fromEntries(o.map(t=>[t,{status:e,error:``}]))}function Qe(e,t){q.value={...q.value,[e]:Ze(t)}}function $e(e,t,n){q.value={...q.value,[e]:{...q.value[e]??Ze(),[t]:n}}}function et(e){let t=(Array.isArray(e)?e:[e]).map(e=>q.value[H.value]?.[e]??{status:`idle`,error:``});return t.find(({status:e})=>e===`error`)??t.find(({status:e})=>e===`loading`)??t.find(({status:e})=>e===`idle`)??{status:`ready`,error:``}}function tt(e,t,n){return e===De&&t===H.value&&n===X.value}function nt(e,t,n){let r;switch(t){case`assignments`:rt(n,[`assignments`,`items`]),r={assignments:Ja(n,e)};break;case`tasks`:rt(n,[`tasks`,`items`]),r={tasks:$a(n)};break;case`activity`:{let e=be(n,{agentId:H.value,personalSpaceId:X.value});if(!e)throw Error(u(`projectAgents.detail.sectionUnavailable`));r={activity:e};break}case`recruitments`:rt(n,[`recruitments`,`items`]),r={recruitments:to(n).filter(t=>no(t,e))};break;case`executors`:rt(n,[`executors`,`items`]),r={executorDirectory:Xa(n),clientEvidence:ro(n)};break;case`routingRules`:rt(n,[`rules`,`items`]),r={routingRules:io(n)};break;case`learning`:rt(n,[`learningEvidence`,`learning_evidence`,`items`],!0),r={learningEvidence:ao(n)};break}v.value=v.value.map(t=>t.agentId===e.agentId?{...t,...r}:t)}function rt(e,t,n=!1){if(Array.isArray(e))return;let r=z(e);if(!t.some(e=>Array.isArray(r[e])||n&&it(r[e])))throw Error(u(`projectAgents.detail.sectionUnavailable`))}function it(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function at(e,t,n){let r=t===`ignore`?n:e.learningKey??e.modelStrategyKey,i=Z.value;if(!(!r||!i||!X.value||ye.value)){if(t===`reset`&&(!e.personalProjectId||!e.workKind||!e.executor)){J.value=u(`projectAgents.learning.resetUnavailable`);return}ye.value=r;try{await O(`/api/project-agent-learning/${encodeURIComponent(r)}`,{action:t,personalSpaceId:X.value,personalProjectId:e.personalProjectId,agentId:i.agentId,workKind:e.workKind,executorId:e.executor,modelStrategy:e.modelStrategy,modelStrategyKey:e.modelStrategyKey,resetAt:t===`reset`?new Date().toISOString():void 0,idempotencyKey:t===`ignore`?`console-learning:${r}:ignore`:ke(`console-learning:${r}:reset`),reason:`Console requested ${t} for explicit evidence`}),await Q()}catch(e){J.value=e instanceof Error?e.message:u(`projectAgents.learning.updateFailed`)}finally{ye.value=``}}}async function ot(e,t){if(!(!X.value||Y.value)){Y.value=e.recruitmentId;try{await D(`/api/project-agent-recruitments/decision`,{personalSpaceId:X.value,personalProjectId:e.personalProjectId,recruitmentId:e.recruitmentId,expectedRevision:e.revision??0,decision:t,reason:u(`projectAgents.recruitment.${t}Reason`)}),await Q()}catch(e){J.value=e instanceof Error?e.message:u(`projectAgents.recruitment.decisionFailed`)}finally{Y.value=``}}}async function st(e,t){if(!(!X.value||xe.value)){xe.value=e.executorId;try{await D(`/api/executors/authorization`,{personalSpaceId:X.value,executorId:e.executorId,status:t,expectedRevision:e.permissionRevision??0,idempotencyKey:ke(`console-executor:${e.executorId}:${t}`),reason:u(`projectAgents.routing.${t===`authorized`?`authorizeReason`:`revokeReason`}`)}),await Q()}catch(e){J.value=e instanceof Error?e.message:u(`projectAgents.routing.authorizationFailed`)}finally{xe.value=``}}}function ct(e=null){Ce.value=`executor`,we.value=e,Te.value=null,Se.value=!0}function lt(e=null){Ce.value=`rule`,Te.value=e,we.value=null,Se.value=!0}function ut(){Se.value=!1,we.value=null,Te.value=null}function dt(e){Z.value&&(v.value=v.value.map(t=>t.agentId===Z.value?.agentId?{...t,executorDirectory:so([...t.executorDirectory??[],e],({executorId:e})=>e)}:t),ut())}function ft(e){Z.value&&(v.value=v.value.map(t=>t.agentId===Z.value?.agentId?{...t,routingRules:so([...t.routingRules??[],e],({ruleId:e})=>e)}:t),ut())}function pt(e){Ce.value===`executor`?dt(e):ft(e)}async function mt(e){if(!(!X.value||!e.ruleId||Y.value)){Y.value=`rule:${e.ruleId}`;try{await O(`/api/executor-routing-rules/${encodeURIComponent(e.ruleId)}`,{personalSpaceId:X.value,ruleId:e.ruleId,expectedRevision:e.revision??0,status:`disabled`,idempotencyKey:`console-rule:${e.ruleId}:disable`,reason:`Console disabled explicit routing rule`}),await Q()}catch(e){J.value=e instanceof Error?e.message:u(`projectAgents.routing.updateFailed`)}finally{Y.value=``}}}async function ht(e){if(e.profile.cleanupEligible){fe.value=!0;try{await k(`/api/project-agents/${encodeURIComponent(e.agentId)}?personalSpaceId=${encodeURIComponent(e.personalSpaceId)}&reason=archived%20test%20role`),await Xe()}catch(e){J.value=e instanceof Error?e.message:u(`projectAgents.source.cleanupFailed`)}finally{fe.value=!1}}}function _t(e,t){let n={active:0,inactive:1,archived:2};return n[e.profile.status]-n[t.profile.status]||e.profile.name.localeCompare(t.profile.name,y())||e.agentId.localeCompare(t.agentId,y())}function vt(e){return e?Me.value.get(e)?.profile.name??e:u(`projectAgents.notReported`)}function yt(e){return e.assignments??(e.personalProjectId?[St(e)]:[])}function bt(e){return[...new Map(yt(e).filter(e=>e.status===`active`).map(e=>[e.personalProjectId,e])).values()]}function xt(e){let t=F(e);return(t?I.value.find(e=>e.id===t):void 0)?.managedProjects??bt(e).map(e=>({id:e.personalProjectId,name:vt(e.personalProjectId)}))}function St(e){return{assignmentId:`legacy:${e.agentId}:${e.personalProjectId}`,personalSpaceId:e.personalSpaceId,personalProjectId:e.personalProjectId??``,agentId:e.agentId,responsibility:e.profile.responsibility,capabilities:e.profile.capabilities,status:e.profile.status===`active`?`active`:`ended`,assignedAt:e.createdAt,updatedAt:e.updatedAt,reason:null}}function Ct(e){return[e.agentId,e.profile.name,e.profile.occupationEmoji??``,e.profile.responsibility,...e.profile.capabilities??[],...e.profile.workKinds??[],...yt(e).flatMap(e=>[e.personalProjectId,e.responsibility,e.scope??``,...e.workKinds??[]]),...(e.tasks??[]).flatMap(e=>[e.taskId,e.title,e.workKind??``])].join(` `)}function wt(){G.value=null,U.value=!0}function Tt(e=``){ae.value=e,ie.value=!0}function Et(e){G.value=e,U.value=!0}function Ot(){U.value=!1,G.value=null}function kt(e,t=null,n=`assign`){let r=F(e);if(n===`assign`&&r){Tt(r);return}G.value=e,de.value=t,ue.value=n,K.value=!0}function At(){K.value=!1,de.value=null,ue.value=`assign`}function Mt(e){G.value&&(v.value=v.value.map(t=>t.agentId===G.value?.agentId?{...t,assignments:so([...t.assignments??[],e],({assignmentId:e})=>e)}:t),H.value=G.value.agentId,At())}function Nt(){At(),Q()}function Pt(e){let t=Ka(e),n=v.value.filter(e=>!(e.agentId===t.agentId&&t.personalProjectId&&e.personalProjectId===t.personalProjectId));v.value=oo([...n,t]),t.personalProjectId&&(P.value=[t.personalProjectId]),L.value=`all`,ne.value=``,H.value=t.agentId,p.notify(u(`projectAgents.saved`))}function Ft(e){if(!e)return u(`projectAgents.notReported`);let t=new Date(e);return Number.isNaN(t.valueOf())?u(`projectAgents.notReported`):new Intl.DateTimeFormat(y(),{year:`numeric`,month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`}).format(t)}function It(e){if(!e)return u(`projectAgents.notReported`);let t=new Date(`${e}T00:00:00Z`);return Number.isNaN(t.valueOf())?e:new Intl.DateTimeFormat(y(),{month:`short`,day:`numeric`}).format(t)}function Lt(e){return e?.mode??`adaptive`}function Rt(e){return e?.mode??`flexible`}function zt(e){return e?.mode===`locked`}function Bt(e){return e?e.allowList?.length?e.allowList:((e.mode===`locked`?e.lockedExecutorIds:e.preferredExecutorIds)??[]).map(e=>({executorId:e})):[]}function $(e){if(e.actualExecution)return e.actualExecution;let t=[...e.events??[]].reverse().find(e=>e.actualExecution);return t?_e(t):null}function Vt(e){return e.workerLabel&&e.workerId&&e.workerLabel!==e.workerId?`${e.workerLabel} · ${e.workerId}`:e.workerLabel||e.workerId||u(`projectAgents.notReported`)}function Ht(e){return e.workerOccupationEmoji||``}function Ut(e){return Kt(e.workerStatus||e.status)}function Wt(e){return e.workerLabel||e.agentName||e.workerId||e.agentId||u(`projectAgents.notReported`)}function Gt(e){return e.workerOccupationEmoji||e.occupationEmoji||``}function Kt(e){return e?en(e):u(`projectAgents.notReported`)}function qt(e){if(!e)return u(`projectAgents.notReported`);let t=`projectAgents.participantRoles.${e}`,n=u(t);return n===t?e:n}function Jt(e){return u(`projectAgents.tokenSources.${e}`)}function Yt(e){return e?`${new Intl.NumberFormat(y()).format(e.totalTokens)} Token · ${Jt(e.source)}`:u(`projectAgents.notReported`)}function Xt(e){return Zt(e.workerRuntime?e.workerRuntime.sessionUrl:e.sourceSessionUrl)}function Zt(e){let t=e?.trim();if(!t)return null;try{let e=new URL(t);if(e.username||e.password||e.search||e.hash)return null;if(e.protocol===`https:`||e.protocol===`http:`&&[`127.0.0.1`,`localhost`,`[::1]`].includes(e.hostname)||e.protocol===`codex:`&&e.hostname===`threads`&&e.pathname!==`/`)return t}catch{return null}return null}function Qt(e){return e.workerRuntime?e.workerRuntime.sessionId:e.sourceSessionId}function $t(e){return(e.tasks??[]).find(e=>Oe.has(e.status))??null}function en(e){let t=`projectAgents.taskStatus.${e}`,n=u(t);return n===t?e:n}function tn(e){return u(`projectAgents.agentType.${e??`durable`}`)}function nn(e){return u(e?`projectAgents.clients.${e}`:`projectAgents.notReported`)}function rn(e){return co([...e.profile.allowedClients??[],...e.observedClients??[],...(e.clientEvidence??[]).map(({client:e})=>e)])}function an(e,t){return e.clientEvidence?.find(e=>e.client===t)}function on(e,t){return an(e,t)?.actualUse?.count??0}function sn(e){return e.neutral!==!1||e.sampleCount<=0}function cn(e){return sn(e)?u(`projectAgents.learning.neutral`):u(`projectAgents.learning.recorded`)}function ln(e){return e.recentWeightedSamples??u(`projectAgents.notReported`)}function un(e){return e.score??``}function dn(e,t){let n=Math.max(...t.days.map(({total:e})=>e),0);return!n||!e.total?0:Math.min(4,Math.ceil(e.total/n*4))}function Ua(e){pe.value=e.date}function Wa(e,t){return t.ownerAgentId===e.agentId||t.leadAgentId===e.agentId||t.coordinatorAgentId===e.agentId||t.participants.some(t=>t.agentId===e.agentId)}function Ga(e,t){return e.map(e=>{let n=t.filter(t=>Wa(e,t));return n.length?{...e,tasks:so([...e.tasks??[],...n],({taskId:e})=>e)}:e})}function Ka(e){let t=z(e),n=z(t.profile),r=V(t,`agentId`,`agent_id`)??``,i=V(t,`createdAt`,`created_at`)??``,a=V(t,`updatedAt`,`updated_at`)??i,o={name:V(n,`name`,`name`)??r,responsibility:V(n,`responsibility`,`responsibility`)??``,capabilities:W(n.capabilities).filter(e=>typeof e==`string`),initialPreferences:W(B(n,`initialPreferences`,`initial_preferences`)).filter(e=>typeof e==`string`),status:V(n,`status`,`status`)??`active`,occupationEmoji:V(n,`occupationEmoji`,`occupation_emoji`),agentType:V(n,`agentType`,`agent_type`),workKinds:W(B(n,`workKinds`,`work_kinds`)).filter(e=>typeof e==`string`),defaultModelStrategy:se(B(n,`defaultModelStrategy`,`default_model_strategy`)),executorPolicy:ce(B(n,`executorPolicy`,`executor_policy`)),allowedClients:W(B(n,`allowedClients`,`allowed_clients`)).filter(e=>typeof e==`string`),testSource:V(n,`testSource`,`test_source`),cleanupEligible:B(n,`cleanupEligible`,`cleanup_eligible`)===!0},s={agentId:r,personalSpaceId:V(t,`personalSpaceId`,`personal_space_id`)??X.value,personalProjectId:V(t,`personalProjectId`,`personal_project_id`),profile:o,createdAt:i,updatedAt:a};return{...s,memoryScope:V(t,`memoryScope`,`memory_scope`)??void 0,assignments:Array.isArray(t.assignments)?t.assignments.map(e=>le(e,s)).filter(Boolean):void 0,recruitments:to(t.recruitments??t.recruitmentHistory).filter(e=>no(e,s)),recruitmentId:V(t,`recruitmentId`,`recruitment_id`),temporaryTaskId:V(t,`temporaryTaskId`,`temporary_task_id`),workStatus:V(t,`workStatus`,`work_status`),openTaskCount:typeof t.openTaskCount==`number`?t.openTaskCount:typeof t.open_task_count==`number`?t.open_task_count:void 0,currentTaskId:V(t,`currentTaskId`,`current_task_id`),observedClients:W(t.observedClients??t.observed_clients).filter(e=>typeof e==`string`),recruitedAt:V(t,`recruitedAt`,`recruited_at`),recruitmentReason:V(t,`recruitmentReason`,`recruitment_reason`),recruitmentSourceApplication:V(t,`recruitmentSourceApplication`,`recruitment_source_application`),isTestRole:!!o.testSource||o.cleanupEligible||t.isTestRole===!0||t.is_test_role===!0,tasks:W(t.tasks??t.taskHistory).map(me).filter(Boolean),activity:be(t.activity,{agentId:H.value,personalSpaceId:X.value}),clientEvidence:ro(t.clientEvidence??t.client_evidence),routingRules:io(t.routingRules??t.routing_rules),learningEvidence:Qa(t.learningEvidence??t.learning_evidence)}}function qa(e){let t=z(e),n=V(t,`client`,`client`);if(!n)return null;let r=z(B(t,`actualUse`,`actual_use`));return{client:n,allowed:t.allowed===!0,integrationStatus:V(t,`integrationStatus`,`integration_status`)??void 0,actualUse:Object.keys(r).length?{count:typeof r.count==`number`?r.count:0,lastUsedAt:V(r,`lastUsedAt`,`last_used_at`)}:null}}function Ja(e,t){let n=z(e);return W(Array.isArray(e)?e:n.assignments??n.items).map(e=>le(e,t)).filter(e=>!!e)}function Ya(e){let t=z(e),n=V(t,`provider`,`provider`),r=V(t,`model`,`model`);return!n||!r?null:{provider:n,model:r,capabilities:W(t.capabilities).filter(e=>typeof e==`string`),available:typeof t.available==`boolean`?t.available:void 0,strategyModes:W(B(t,`strategyModes`,`strategy_modes`)).filter(e=>typeof e==`string`),reasoningEfforts:W(B(t,`reasoningEfforts`,`reasoning_efforts`)).filter(e=>typeof e==`string`),observedAt:V(t,`observedAt`,`observed_at`),unavailableReason:V(t,`unavailableReason`,`unavailable_reason`)}}function Xa(e){let t=z(e);return W(Array.isArray(e)?e:t.executors??t.items).map(e=>{let t=z(e),n=V(t,`executorId`,`executor_id`);if(!n)return null;let r=z(B(t,`actualUse`,`actual_use`));return{executorId:n,label:V(t,`label`,`label`),provider:V(t,`provider`,`provider`),model:V(t,`model`,`model`),client:V(t,`client`,`client`),availabilityStatus:V(t,`availabilityStatus`,`availability_status`),personalSpaceId:V(t,`personalSpaceId`,`personal_space_id`),displayName:V(t,`displayName`,`display_name`),executorKind:V(t,`executorKind`,`executor_kind`),capabilities:W(B(t,`capabilities`,`capabilities`)).filter(e=>typeof e==`string`),globalPriority:typeof B(t,`globalPriority`,`global_priority`)==`number`?B(t,`globalPriority`,`global_priority`):null,healthRequired:B(t,`healthRequired`,`health_required`)===!0,registrationStatus:V(t,`registrationStatus`,`registration_status`),permissionStatus:V(t,`permissionStatus`,`permission_status`),preflightStatus:V(t,`preflightStatus`,`preflight_status`),healthStatus:V(t,`healthStatus`,`health_status`),workspacePermission:typeof B(t,`workspacePermission`,`workspace_permission`)==`boolean`?B(t,`workspacePermission`,`workspace_permission`):null,revision:typeof t.revision==`number`?t.revision:void 0,permissionRevision:typeof B(t,`permissionRevision`,`permission_revision`)==`number`?B(t,`permissionRevision`,`permission_revision`):void 0,registeredAt:V(t,`registeredAt`,`registered_at`),updatedAt:V(t,`updatedAt`,`updated_at`),testSource:V(t,`testSource`,`test_source`),cleanupEligible:B(t,`cleanupEligible`,`cleanup_eligible`)===!0,advertisedModels:W(B(t,`advertisedModels`,`advertised_models`)).map(Ya).filter(e=>e!==null),availableModels:W(B(t,`availableModels`,`available_models`)).map(Ya).filter(e=>e!==null),actualUse:Object.keys(r).length?{count:typeof r.count==`number`?r.count:0,lastUsedAt:V(r,`lastUsedAt`,`last_used_at`)}:null}}).filter(e=>e!==null)}function Za(e){let t=z(e),n=V(t,`ruleId`,`rule_id`);if(!n)return null;let r=V(t,`status`,`status`);return{ruleId:n,scope:V(t,`scope`,`scope`)??`global`,priority:typeof t.priority==`number`?t.priority:0,personalProjectId:V(t,`personalProjectId`,`personal_project_id`),taskId:V(t,`taskId`,`task_id`),workKind:V(t,`workKind`,`work_kind`),agentId:V(t,`agentId`,`agent_id`),enabled:t.enabled!==!1&&(!r||r===`active`),executorIds:W(B(t,`executorIds`,`executor_ids`)).filter(e=>typeof e==`string`),requiredCapabilities:W(B(t,`requiredCapabilities`,`required_capabilities`)).filter(e=>typeof e==`string`),modelStrategy:se(B(t,`modelStrategy`,`model_strategy`)),reason:V(t,`reason`,`reason`),revision:typeof t.revision==`number`?t.revision:void 0,status:r??void 0,createdAt:V(t,`createdAt`,`created_at`),updatedAt:V(t,`updatedAt`,`updated_at`)}}function Qa(e){let t=z(e),n=Array.isArray(e)?e:t.learningEvidence??t.learning_evidence??t.items,r=(Array.isArray(n)?n:Object.values(z(n))).map((e,t)=>{let n=z(e),r=V(n,`personalProjectId`,`personal_project_id`),i=V(n,`workKind`,`work_kind`),a=V(n,`executorId`,`executor_id`)??V(n,`executor`,`executor`),o=se(B(n,`modelStrategy`,`model_strategy`)),s=V(n,`modelStrategyKey`,`model_strategy_key`),c=s??[r,i,a,String(t)].filter(Boolean).join(`:`),l=W(B(n,`evidenceContributions`,`evidence_contributions`)).map(e=>{let t=z(e),n=V(t,`signal`,`signal`),r=V(t,`evidenceKind`,`evidence_kind`)??`evidence`,i=typeof B(t,`decayWeight`,`decay_weight`)==`number`?B(t,`decayWeight`,`decay_weight`):null;return{evidenceId:V(t,`evidenceId`,`evidence_id`)??void 0,kind:r,count:typeof t.value==`number`?t.value:void 0,summary:n?`${n}${i===null?``:` · ${i.toFixed(3)}`}`:null,occurredAt:V(t,`occurredAt`,`occurred_at`)}}),u=typeof B(n,`weightedSuccess`,`weighted_success`)==`number`?B(n,`weightedSuccess`,`weighted_success`):0,d=typeof B(n,`weightedFailure`,`weighted_failure`)==`number`?B(n,`weightedFailure`,`weighted_failure`):0,f=B(n,`halfLife`,`decay_half_life_days`);return[c,{learningKey:c,personalProjectId:r,workKind:i,executor:a,modelStrategy:o,modelStrategyKey:s,sampleCount:typeof B(n,`sampleCount`,`sample_count`)==`number`?B(n,`sampleCount`,`sample_count`):0,recentWeightedSamples:typeof B(n,`recentCount`,`recent_count`)==`number`?B(n,`recentCount`,`recent_count`):null,decayBasis:typeof f==`number`?`half-life ${f}d`:null,updatedAt:V(n,`asOf`,`as_of`)??V(n,`updatedAt`,`updated_at`),outcomes:{success:typeof B(n,`successCount`,`success_count`)==`number`?B(n,`successCount`,`success_count`):void 0,rework:typeof B(n,`reworkCount`,`rework_count`)==`number`?B(n,`reworkCount`,`rework_count`):void 0,failure:typeof B(n,`failureCount`,`failure_count`)==`number`?B(n,`failureCount`,`failure_count`):void 0,scoreCount:typeof B(n,`ratingCount`,`rating_count`)==`number`?B(n,`ratingCount`,`rating_count`):void 0},evidence:l,score:u-d,neutral:B(n,`neutralDueToInsufficientEvidence`,`neutral_due_to_insufficient_evidence`)===!0}]});return Object.fromEntries(r)}function $a(e){let t=z(e);return W(Array.isArray(e)?e:t.tasks??t.items).map(me).filter(Boolean)}function eo(e){let t=z(e),n=V(t,`recruitmentId`,`recruitment_id`);return n?{recruitmentId:n,personalSpaceId:V(t,`personalSpaceId`,`personal_space_id`)??X.value,personalProjectId:V(t,`personalProjectId`,`personal_project_id`)??``,taskId:V(t,`taskId`,`task_id`)??``,coordinatorAgentId:V(t,`coordinatorAgentId`,`coordinator_agent_id`)??``,hrAgentId:V(t,`hrAgentId`,`hr_agent_id`),positionKind:V(t,`positionKind`,`position_kind`)??`durable`,workKind:V(t,`workKind`,`work_kind`)??``,requiredCapabilities:W(B(t,`requiredCapabilities`,`required_capabilities`)).filter(e=>typeof e==`string`),reasonCode:V(t,`reasonCode`,`reason_code`)??``,reason:V(t,`reason`,`reason`)??``,status:V(t,`status`,`status`)??`unknown`,confirmationMode:V(t,`confirmationMode`,`confirmation_mode`),proposedAgentId:V(t,`proposedAgentId`,`proposed_agent_id`)??``,revision:typeof t.revision==`number`?t.revision:void 0,recruitedAgentId:V(t,`recruitedAgentId`,`recruited_agent_id`),triggerSourceApplication:V(t,`triggerSourceApplication`,`trigger_source_application`),triggerSourceSessionId:V(t,`triggerSourceSessionId`,`trigger_source_session_id`),testSource:V(t,`testSource`,`test_source`),cleanupEligible:B(t,`cleanupEligible`,`cleanup_eligible`)===!0,createdAt:V(t,`createdAt`,`created_at`)??``,updatedAt:V(t,`updatedAt`,`updated_at`)??``,fulfilledAt:V(t,`fulfilledAt`,`fulfilled_at`)}:null}function to(e){let t=z(e);return W(Array.isArray(e)?e:t.recruitments??t.items).map(eo).filter(e=>!!e)}function no(e,t){return e.recruitedAgentId===t.agentId||e.proposedAgentId===t.agentId||e.recruitmentId===t.recruitmentId}function ro(e){let t=z(e);return W(Array.isArray(e)?e:t.clients??t.executors??t.items).map(qa).filter(Boolean)}function io(e){let t=z(e);return W(Array.isArray(e)?e:t.rules??t.items).map(Za).filter(Boolean)}function ao(e){let t=z(e);return Qa(t.learningEvidence??t.learning_evidence??e)}function oo(e){let t=new Map;return e.map(Ka).forEach(e=>{let n=t.get(e.agentId);if(!n){t.set(e.agentId,e);return}let r=[...yt(n),...yt(e)],i=[...n.tasks??[],...e.tasks??[]];t.set(e.agentId,{...n,personalProjectId:n.personalProjectId??e.personalProjectId,profile:{...n.profile,occupationEmoji:n.profile.occupationEmoji??e.profile.occupationEmoji,capabilities:co([...n.profile.capabilities,...e.profile.capabilities]),workKinds:co([...n.profile.workKinds??[],...e.profile.workKinds??[]]),defaultModelStrategy:n.profile.defaultModelStrategy??e.profile.defaultModelStrategy,executorPolicy:n.profile.executorPolicy??e.profile.executorPolicy,allowedClients:co([...n.profile.allowedClients??[],...e.profile.allowedClients??[]])},assignments:so(r,({assignmentId:e})=>e),recruitments:so([...n.recruitments??[],...e.recruitments??[]],({recruitmentId:e})=>e),tasks:so(i,({taskId:e})=>e),activity:n.activity??e.activity,clientEvidence:n.clientEvidence?.length?n.clientEvidence:e.clientEvidence,routingRules:n.routingRules?.length?n.routingRules:e.routingRules,learningEvidence:{...e.learningEvidence??{},...n.learningEvidence??{}},observedClients:co([...n.observedClients??[],...e.observedClients??[]]),openTaskCount:Math.max(n.openTaskCount??0,e.openTaskCount??0)||void 0,currentTaskId:n.currentTaskId??e.currentTaskId,workStatus:n.workStatus??e.workStatus})}),[...t.values()]}function so(e,t){return[...new Map(e.map(e=>[t(e),e])).values()]}function co(e){return[...new Set(e)]}return(r,i)=>(a(),T(`section`,{class:`view project-agents-view`,"aria-label":b(u)(`projectAgents.aria`)},[C(`header`,mn,[C(`div`,null,[C(`h2`,null,d(b(u)(`projectAgents.title`)),1),C(`p`,hn,d(b(u)(`projectAgents.stats.total`,{count:v.value.length}))+` · `+d(b(u)(`projectAgents.stats.assignments`,{count:Ue.value}))+` · `+d(b(u)(`projectAgents.stats.projects`,{count:We.value})),1)]),C(`div`,gn,[C(`button`,{class:`quiet-button`,type:`button`,disabled:!X.value,onClick:wt},d(b(u)(`projectAgents.add`)),9,_n),C(`button`,{class:`project-agent-add`,type:`button`,disabled:!X.value,onClick:i[0]||=e=>Tt()},d(b(u)(`employees.recruit`)),9,vn)])]),w(re,{open:ie.value,"personal-space-id":X.value,projects:Ae.value,"template-id":ae.value,"default-project-ids":P.value??[],onClose:i[1]||=e=>ie.value=!1,onRecruited:je},null,8,[`open`,`personal-space-id`,`projects`,`template-id`,`default-project-ids`]),C(`div`,yn,[C(`span`,null,d(b(u)(`projectAgents.stats.active`,{count:He.value})),1),C(`span`,null,d(b(u)(`projectAgents.stats.noOnlineClaim`)),1)]),C(`div`,bn,[w(R,{modelValue:Pe.value,"onUpdate:modelValue":i[2]||=e=>Pe.value=e,class:`project-agents-project-filter`,compact:``,projects:Ne.value,label:b(u)(`employees.filterLabel`),hint:b(u)(`employees.filterHint`),"empty-label":b(u)(`employees.filterEmpty`)},null,8,[`modelValue`,`projects`,`label`,`hint`,`empty-label`]),C(`label`,xn,[C(`span`,Sn,d(b(u)(`projectAgents.searchLabel`)),1),n(C(`input`,{"onUpdate:modelValue":i[3]||=e=>ne.value=e,type:`search`,placeholder:b(u)(`projectAgents.searchPlaceholder`)},null,8,Cn),[[m,ne.value]])]),C(`div`,{class:`project-agents-status-filter`,"aria-label":b(u)(`projectAgents.fields.status`)},[(a(!0),T(g,null,t(Ie.value,e=>(a(),T(`button`,{key:e.value,type:`button`,"aria-pressed":L.value===e.value,onClick:t=>L.value=e.value},d(e.label),9,Tn))),128))],8,wn)]),Fe.value?(a(),E(Dt,{key:Fe.value,"personal-space-id":X.value,"personal-project-id":Fe.value,"project-name":vt(Fe.value)},null,8,[`personal-space-id`,`personal-project-id`,`project-name`])):f(``,!0),S.value?(a(),T(`div`,En,d(b(u)(`projectAgents.loading`)),1)):A.value?(a(),T(`div`,Dn,[C(`p`,null,d(A.value),1),C(`button`,{class:`quiet-button`,type:`button`,onClick:i[4]||=e=>Xe()},d(b(u)(`projectAgents.retry`)),1)])):v.value.length?Le.value.length?(a(),T(`div`,jn,[C(`div`,{class:`project-agent-list`,role:`list`,"aria-label":b(u)(`projectAgents.listLabel`)},[(a(!0),T(g,null,t(Le.value,n=>(a(),T(`button`,{key:n.agentId,type:`button`,class:x([`project-agent-row`,{selected:H.value===n.agentId}]),"aria-current":H.value===n.agentId?`true`:void 0,onClick:e=>H.value=n.agentId},[C(`span`,Pn,[n.profile.occupationEmoji?(a(),T(`span`,{key:0,class:`project-agent-occupation-emoji`,role:`img`,"aria-label":`${b(u)(`projectAgents.fields.occupationEmoji`)}: ${n.profile.occupationEmoji}`},d(n.profile.occupationEmoji),9,Fn)):f(``,!0),C(`strong`,null,d(n.profile.name),1),C(`i`,In,d(tn(n.profile.agentType)),1),C(`i`,{class:x(`is-${n.profile.status}`)},d(b(u)(`projectAgents.status.${n.profile.status}`)),3)]),C(`span`,Ln,[(a(!0),T(g,null,t(xt(n).slice(0,3),e=>(a(),T(`b`,{key:e.id},d(e.name),1))),128)),xt(n).length>3?(a(),T(`b`,Rn,`+`+d(xt(n).length-3),1)):f(``,!0),xt(n).length?f(``,!0):(a(),T(`em`,zn,d(b(u)(`employees.noAssignedProjects`)),1))]),C(`span`,Bn,d(n.profile.responsibility||b(u)(`projectAgents.notReported`)),1),C(`span`,Vn,[$t(n)?(a(),T(g,{key:0},[C(`i`,{class:x([`project-agent-work-dot`,{"is-live":$t(n).status===`running`}]),"aria-hidden":`true`},null,2),e(d(en($t(n).status))+` · `+d($t(n).title),1)],64)):n.workStatus===`blocked`||n.workStatus===`queued`?(a(),T(g,{key:1},[e(d(en(n.workStatus))+` · `+d(b(u)(`projectAgents.detail.stateReported`)),1)],64)):(a(),T(g,{key:2},[e(d(b(u)(`projectAgents.detail.noRun`)),1)],64))]),C(`span`,Hn,[(a(!0),T(g,null,t(n.profile.capabilities.slice(0,3),e=>(a(),T(`b`,{key:e},d(e),1))),128))])],10,Nn))),128))],8,Mn),Z.value?(a(),T(`aside`,{key:0,class:`project-agent-detail`,"aria-label":Z.value.profile.name},[C(`header`,null,[C(`div`,Wn,[C(`h3`,null,[Z.value.profile.occupationEmoji?(a(),T(`span`,{key:0,class:`project-agent-occupation-emoji`,role:`img`,"aria-label":`${b(u)(`projectAgents.fields.occupationEmoji`)}: ${Z.value.profile.occupationEmoji}`},d(Z.value.profile.occupationEmoji),9,Gn)):f(``,!0),e(d(Z.value.profile.name),1)]),C(`p`,null,[e(d(Z.value.agentId)+` · `+d(tn(Z.value.profile.agentType)),1),Z.value.isTestRole?(a(),T(`span`,Kn,[e(` · `+d(b(u)(`projectAgents.source.testRole`)),1),Z.value.profile.testSource?(a(),T(`span`,qn,` · `+d(Z.value.profile.testSource),1)):f(``,!0)])):f(``,!0)])]),C(`div`,Jn,[C(`button`,{class:`quiet-button`,type:`button`,disabled:fe.value,onClick:i[5]||=e=>Q()},d(fe.value?b(u)(`projectAgents.detail.refreshing`):b(u)(`projectAgents.detail.refresh`)),9,Yn),C(`button`,{class:`quiet-button`,type:`button`,onClick:i[6]||=e=>Et(Z.value)},d(b(u)(`projectAgents.edit`)),1),Z.value.profile.cleanupEligible?(a(),T(`button`,{key:0,class:`quiet-button`,type:`button`,disabled:fe.value,onClick:i[7]||=e=>ht(Z.value)},d(b(u)(`projectAgents.source.cleanup`)),9,Xn)):f(``,!0)])]),J.value?(a(),T(`p`,Zn,d(J.value),1)):f(``,!0),Re.value?(a(),T(`section`,Qn,[C(`div`,$n,[C(`div`,null,[C(`h4`,er,d(ze.value?.management?.mode===`all`?b(u)(`employees.scope.continuousAll`):b(u)(`employees.scope.label`)),1),C(`p`,null,d(b(u)(`employees.assignedCount`,{count:Ve.value.length})),1)]),C(`button`,{class:`project-agent-add`,type:`button`,onClick:i[8]||=e=>Tt(Re.value)},d(b(u)(`employees.manageProjects`)),1)]),Ve.value.length?(a(),T(`div`,tr,[(a(!0),T(g,null,t(Ve.value,e=>(a(),E(b(N),{key:e.id,to:`/employees/${encodeURIComponent(Re.value)}?project=${encodeURIComponent(e.id)}`},{default:s(()=>[C(`span`,null,d(e.name),1),i[12]||=C(`svg`,{viewBox:`0 0 20 20`,width:`16`,height:`16`,"aria-hidden":`true`},[C(`path`,{d:`M4 10h12m-5-5 5 5-5 5`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`})],-1)]),_:2},1032,[`to`]))),128))])):(a(),T(`p`,nr,d(b(u)(`employees.manageHint`)),1))])):f(``,!0),C(`dl`,rr,[C(`div`,null,[C(`dt`,null,d(b(u)(`projectAgents.fields.assignments`)),1),C(`dd`,null,d(bt(Z.value).length),1)]),C(`div`,null,[C(`dt`,null,d(b(u)(`projectAgents.fields.memoryScope`)),1),C(`dd`,null,d(Z.value.memoryScope??b(u)(`projectAgents.notReported`)),1)]),C(`div`,null,[C(`dt`,null,d(b(u)(`projectAgents.fields.status`)),1),C(`dd`,null,d(b(u)(`projectAgents.status.${Z.value.profile.status}`)),1)]),C(`div`,null,[C(`dt`,null,d(b(u)(`projectAgents.fields.recruitment`)),1),C(`dd`,null,[e(d(nn(Z.value.recruitmentSourceApplication)),1),Z.value.recruitmentReason?(a(),T(`small`,ir,d(Z.value.recruitmentReason),1)):f(``,!0)])]),C(`div`,null,[C(`dt`,null,d(b(u)(`projectAgents.fields.updatedAt`)),1),C(`dd`,null,d(Ft(Z.value.updatedAt)),1)])]),C(`div`,ar,[w(jt,_(et(`recruitments`),{onRetry:Q}),{default:s(()=>[C(`section`,or,[C(`div`,sr,[C(`h4`,cr,d(b(u)(`projectAgents.sections.recruitment`)),1),C(`span`,null,d(Ye.value.length),1)]),Ye.value.length?(a(),T(`div`,lr,[(a(!0),T(g,null,t(Ye.value,e=>(a(),T(`article`,{key:e.recruitmentId,class:`project-agent-recruitment-card`},[C(`header`,null,[C(`strong`,null,d(e.positionKind)+` · `+d(e.workKind||b(u)(`projectAgents.notReported`)),1),C(`div`,ur,[C(`i`,null,d(e.status),1),e.status===`awaiting_confirmation`?(a(),T(`button`,{key:0,class:`quiet-button`,type:`button`,disabled:!!Y.value,onClick:t=>ot(e,`approve`)},d(b(u)(`projectAgents.recruitment.approve`)),9,dr)):f(``,!0),e.status===`awaiting_confirmation`?(a(),T(`button`,{key:1,class:`quiet-button`,type:`button`,disabled:!!Y.value,onClick:t=>ot(e,`cancel`)},d(b(u)(`projectAgents.recruitment.cancel`)),9,fr)):f(``,!0)])]),C(`dl`,pr,[C(`div`,null,[C(`dt`,null,d(b(u)(`projectAgents.recruitment.hr`)),1),C(`dd`,null,d(e.hrAgentId||b(u)(`projectAgents.notReported`)),1)]),C(`div`,null,[C(`dt`,null,d(b(u)(`projectAgents.recruitment.trigger`)),1),C(`dd`,null,d(nn(e.triggerSourceApplication)),1)]),C(`div`,null,[C(`dt`,null,d(b(u)(`projectAgents.recruitment.reason`)),1),C(`dd`,null,d(e.reason||e.reasonCode||b(u)(`projectAgents.notReported`)),1)]),C(`div`,null,[C(`dt`,null,d(b(u)(`projectAgents.recruitment.time`)),1),C(`dd`,null,d(Ft(e.fulfilledAt||e.createdAt)),1)])]),C(`small`,null,d(b(u)(`projectAgents.recruitment.testSource`))+` · `+d(e.testSource||b(u)(`projectAgents.notReported`)),1)]))),128))])):(a(),T(`p`,mr,d(b(u)(`projectAgents.recruitment.empty`)),1))])]),_:1},16)]),C(`section`,hr,[C(`h4`,null,d(b(u)(`projectAgents.fields.responsibility`)),1),C(`p`,null,d(Z.value.profile.responsibility||b(u)(`projectAgents.notReported`)),1),Z.value.profile.capabilities.length?(a(),T(`div`,gr,[(a(!0),T(g,null,t(Z.value.profile.capabilities,e=>(a(),T(`span`,{key:e},d(e),1))),128))])):f(``,!0)]),C(`div`,_r,[w(jt,_(et(`assignments`),{onRetry:Q}),{default:s(()=>[C(`section`,vr,[C(`div`,yr,[C(`h4`,null,d(b(u)(`projectAgents.sections.assignments`)),1),C(`div`,br,[C(`span`,null,d(yt(Z.value).length),1),C(`button`,{class:`quiet-button`,type:`button`,onClick:i[9]||=e=>kt(Z.value)},d(b(u)(`projectAgents.assignmentDialog.assign`)),1)])]),yt(Z.value).length?(a(),T(`div`,xr,[(a(!0),T(g,null,t(yt(Z.value),e=>(a(),T(`article`,{key:e.assignmentId,class:`project-agent-assignment-card`},[C(`header`,null,[C(`strong`,null,d(vt(e.personalProjectId)),1),C(`div`,Sr,[C(`i`,{class:x(`is-${e.status}`)},d(b(u)(`projectAgents.assignmentStatus.${e.status}`)),3),e.status===`active`?(a(),T(`button`,{key:0,class:`quiet-button`,type:`button`,onClick:t=>kt(Z.value,e,`end`)},d(b(u)(`projectAgents.assignmentDialog.end`)),9,Cr)):f(``,!0),e.status===`active`?(a(),T(`button`,{key:1,class:`quiet-button`,type:`button`,onClick:t=>kt(Z.value,e,`replace`)},d(b(u)(`projectAgents.assignmentDialog.replace`)),9,wr)):f(``,!0)])]),C(`p`,null,d(e.responsibility||b(u)(`projectAgents.notReported`)),1),e.scope?(a(),T(`small`,Tr,d(b(u)(`projectAgents.fields.scope`))+` · `+d(e.scope),1)):f(``,!0),C(`small`,null,d(Ft(e.assignedAt))+` → `+d(e.endedAt?Ft(e.endedAt):b(u)(`projectAgents.assignmentStatus.${e.status}`)),1),e.workKinds?.length?(a(),T(`div`,Er,[(a(!0),T(g,null,t(e.workKinds,e=>(a(),T(`span`,{key:e},d(e),1))),128))])):f(``,!0),C(`div`,Dr,[C(`span`,null,d(b(u)(`projectAgents.fields.assignmentModel`)),1),C(`strong`,null,d(Lt(e.modelStrategyOverride))+` · `+d(Rt(e.executorPolicyOverride)),1),zt(e.executorPolicyOverride)&&!Bt(e.executorPolicyOverride).length?(a(),T(`small`,Or,d(b(u)(`projectAgents.strategy.lockedUnavailable`)),1)):f(``,!0)]),Bt(e.executorPolicyOverride).length?(a(),T(`div`,kr,[(a(!0),T(g,null,t(Bt(e.executorPolicyOverride),e=>(a(),T(`span`,{key:e.executorId},d(e.label||e.executorId),1))),128))])):f(``,!0),e.reason?(a(),T(`small`,Ar,d(b(u)(`projectAgents.fields.reason`))+` · `+d(e.reason),1)):f(``,!0)]))),128))])):(a(),T(`p`,jr,d(b(u)(`projectAgents.detail.noAssignments`)),1))])]),_:1},16)]),C(`div`,Mr,[w(jt,_(et(`executors`),{onRetry:Q}),{default:s(()=>[C(`section`,Nr,[C(`div`,Pr,[C(`h4`,null,d(b(u)(`projectAgents.sections.strategy`)),1),C(`span`,null,d(Lt(Z.value.profile.defaultModelStrategy))+` · `+d(Rt(Z.value.profile.executorPolicy)),1)]),C(`p`,Fr,d(b(u)(`projectAgents.strategy.providerNeutral`)),1),Bt(Z.value.profile.executorPolicy).length?(a(),T(`div`,Ir,[(a(!0),T(g,null,t(Bt(Z.value.profile.executorPolicy),e=>(a(),T(`span`,{key:e.executorId},d(e.label||e.executorId),1))),128))])):zt(Z.value.profile.executorPolicy)?(a(),T(`p`,Lr,d(b(u)(`projectAgents.strategy.lockedUnavailable`)),1)):(a(),T(`p`,Rr,d(b(u)(`projectAgents.strategy.noAllowList`)),1)),C(`div`,zr,[C(`button`,{class:`quiet-button`,type:`button`,onClick:i[10]||=e=>ct()},d(b(u)(`projectAgents.routing.addExecutor`)),1)]),Z.value.executorDirectory?.length?(a(),T(`div`,Br,[(a(!0),T(g,null,t(Z.value.executorDirectory,e=>(a(),T(`div`,{key:e.executorId,class:`project-agent-executor-row`},[C(`strong`,null,d(e.displayName||e.label||e.executorId),1),C(`span`,null,d(e.provider||b(u)(`projectAgents.notReported`))+` / `+d(e.model||b(u)(`projectAgents.notReported`)),1),C(`span`,null,d(e.globalPriority??b(u)(`projectAgents.notReported`)),1),C(`small`,null,d(e.registrationStatus||b(u)(`projectAgents.notReported`))+` · `+d(e.permissionStatus||b(u)(`projectAgents.notReported`))+` · `+d(e.preflightStatus||b(u)(`projectAgents.strategy.availabilityUnreported`))+` · `+d(e.healthStatus||b(u)(`projectAgents.notReported`)),1),C(`button`,{class:`quiet-button`,type:`button`,onClick:t=>ct(e)},d(b(u)(`projectAgents.routing.editExecutor`)),9,Vr),e.permissionStatus===`authorized`?(a(),T(`button`,{key:1,class:`quiet-button`,type:`button`,disabled:!!xe.value,onClick:t=>st(e,`revoked`)},d(b(u)(`projectAgents.routing.revoke`)),9,Ur)):(a(),T(`button`,{key:0,class:`quiet-button`,type:`button`,disabled:!!xe.value,onClick:t=>st(e,`authorized`)},d(b(u)(`projectAgents.routing.authorize`)),9,Hr))]))),128))])):f(``,!0)])]),_:1},16)]),C(`div`,Wr,[w(jt,_(et(`tasks`),{onRetry:Q}),{default:s(()=>[C(`section`,Gr,[C(`div`,Kr,[C(`h4`,null,d(b(u)(`projectAgents.sections.tasks`)),1),C(`span`,null,d(Z.value.tasks?.length??0),1)]),Z.value.tasks?.length?(a(),T(`div`,qr,[(a(!0),T(g,null,t(Z.value.tasks,n=>(a(),T(`article`,{key:n.taskId,class:`project-agent-task-card`},[C(`header`,null,[C(`div`,null,[C(`strong`,null,d(n.title),1),C(`small`,null,d(n.taskId)+` · `+d(vt(n.personalProjectId)),1)]),C(`i`,{class:x(`is-${n.status}`)},d(en(n.status)),3)]),n.resultSummary||n.failureReason?(a(),T(`p`,Jr,d(n.resultSummary||n.failureReason),1)):f(``,!0),C(`small`,null,d(b(u)(`projectAgents.fields.collaborators`))+` · `+d(n.participants.length),1),n.participants.length?(a(),T(`div`,Yr,[(a(!0),T(g,null,t(n.participants,e=>(a(),T(`span`,{key:`${n.taskId}:${e.agentId}`},d(e.agentId)+` · `+d(e.role),1))),128))])):f(``,!0),n.executionSummary===void 0?f(``,!0):(a(),T(`section`,{key:2,class:`project-agent-execution-summary`,"aria-label":b(u)(`projectAgents.fields.executionSummary`)},[C(`div`,Zr,[C(`h5`,null,d(b(u)(`projectAgents.fields.executionSummary`)),1),C(`span`,null,d(n.executionSummary.length),1)]),n.executionSummary.length?(a(),T(`div`,{key:0,class:`project-agent-execution-summary-table-wrap`,role:`region`,tabindex:`0`,"aria-label":b(u)(`projectAgents.fields.executionSummary`)},[C(`table`,$r,[C(`caption`,ei,d(b(u)(`projectAgents.fields.executionSummary`)),1),C(`thead`,null,[C(`tr`,null,[C(`th`,ti,d(b(u)(`projectAgents.fields.worker`)),1),C(`th`,ni,d(b(u)(`projectAgents.fields.workSummary`)),1),C(`th`,ri,d(b(u)(`projectAgents.fields.toolsUsed`)),1),C(`th`,ii,d(b(u)(`projectAgents.fields.executionEnvironment`)),1),C(`th`,ai,d(b(u)(`projectAgents.fields.sourceSession`)),1),C(`th`,oi,d(b(u)(`projectAgents.fields.tokenUsage`)),1),C(`th`,si,d(b(u)(`projectAgents.fields.terminalStatus`)),1)])]),C(`tbody`,null,[(a(!0),T(g,null,t(n.executionSummary,(t,r)=>(a(),T(`tr`,{key:n.taskId+`:execution:`+(t.workerId||t.agentId||r),class:`project-agent-execution-summary-row`},[C(`th`,ci,[C(`span`,li,[Gt(t)?(a(),T(`span`,{key:0,class:`project-agent-occupation-emoji`,role:`img`,"aria-label":b(u)(`projectAgents.fields.occupationEmoji`)+`: `+Gt(t)},d(Gt(t)),9,ui)):f(``,!0),e(` `+d(Wt(t)),1)]),t.agentId||t.workerId?(a(),T(`small`,di,d(t.workerId||t.agentId),1)):f(``,!0),C(`small`,null,d(qt(t.participantRole)),1)]),C(`td`,{"data-label":b(u)(`projectAgents.fields.workSummary`)},d(t.workSummary||b(u)(`projectAgents.notReported`)),9,fi),C(`td`,{"data-label":b(u)(`projectAgents.fields.toolsUsed`)},d(t.toolsUsed?t.toolsUsed.join(` · `)||b(u)(`projectAgents.noToolsUsed`):b(u)(`projectAgents.notReported`)),9,pi),C(`td`,{"data-label":b(u)(`projectAgents.fields.executionEnvironment`)},[C(`strong`,null,d(t.executor||b(u)(`projectAgents.notReported`)),1),t.executorId&&t.executorId!==t.executor?(a(),T(`small`,hi,d(t.executorId),1)):f(``,!0),t.actualModelProvider||t.actualModel?(a(),T(`small`,gi,d([t.actualModelProvider,t.actualModel].filter(Boolean).join(` · `)),1)):f(``,!0)],8,mi),C(`td`,{"data-label":b(u)(`projectAgents.fields.sourceSession`)},[C(`span`,null,[t.workerRuntime?(a(),T(g,{key:0},[e(d(b(u)(`projectAgents.fields.workerSession`))+` · `,1)],64)):f(``,!0),e(d(nn(t.workerRuntime?.application||t.sourceApplication)),1)]),Xt(t)?(a(),T(`a`,{key:0,href:Xt(t)||void 0,target:`_blank`,rel:`noreferrer`},d(Qt(t)||Xt(t)),9,vi)):(a(),T(`small`,yi,d(Qt(t)||b(u)(`projectAgents.notReported`)),1)),t.workerRuntime?(a(),T(g,{key:2},[C(`small`,bi,d(b(u)(`projectAgents.fields.reporterSession`))+` · `+d(nn(t.sourceApplication)),1),Zt(t.sourceSessionUrl)?(a(),T(`a`,{key:0,href:Zt(t.sourceSessionUrl)||void 0,target:`_blank`,rel:`noreferrer`},d(t.sourceSessionId||t.sourceSessionUrl),9,xi)):(a(),T(`small`,Si,d(t.sourceSessionId||b(u)(`projectAgents.notReported`)),1))],64)):f(``,!0)],8,_i),C(`td`,{"data-label":b(u)(`projectAgents.fields.tokenUsage`)},d(Yt(t.tokenUsage)),9,Ci),C(`td`,{"data-label":b(u)(`projectAgents.fields.terminalStatus`)},[t.status?(a(),T(`i`,{key:0,class:x(`is-`+t.status)},d(Kt(t.status)),3)):(a(),T(`span`,Ti,d(b(u)(`projectAgents.notReported`)),1))],8,wi)]))),128))])])],8,Qr)):(a(),T(`p`,Ei,d(b(u)(`projectAgents.detail.noExecutionSummary`)),1))],8,Xr)),b(he)(n).length?(a(),T(`section`,{key:3,class:`project-agent-worker-event-evidence`,"aria-label":b(u)(`projectAgents.fields.workerEventEvidence`)},[C(`div`,Oi,[C(`h5`,null,d(b(u)(`projectAgents.fields.workerEventEvidence`)),1),C(`span`,null,d(b(he)(n).length),1)]),C(`ul`,ki,[(a(!0),T(g,null,t(b(he)(n),t=>(a(),T(`li`,{key:`${n.taskId}:worker-event:${t.eventId}`,class:`project-agent-worker-event-row`},[C(`header`,null,[C(`strong`,null,[Ht(t)?(a(),T(`span`,{key:0,class:`project-agent-occupation-emoji`,role:`img`,"aria-label":`${b(u)(`projectAgents.fields.occupationEmoji`)}: ${Ht(t)}`},d(Ht(t)),9,Ai)):f(``,!0),e(d(Vt(t)),1),t.agentId?(a(),T(`small`,ji,d(b(u)(`projectAgents.fields.agentId`))+` · `+d(t.agentId),1)):f(``,!0)]),C(`i`,{class:x(`is-${t.workerStatus||t.status}`)},d(Ut(t)),3)]),C(`dl`,Mi,[C(`div`,null,[C(`dt`,null,d(b(u)(`projectAgents.fields.workSummary`)),1),C(`dd`,null,d(t.summary||b(u)(`projectAgents.notReported`)),1)]),C(`div`,null,[C(`dt`,null,d(b(u)(`projectAgents.fields.sourceApplication`)),1),C(`dd`,null,d(nn(t.sourceApplication)),1)]),C(`div`,null,[C(`dt`,null,d(b(u)(`projectAgents.fields.sourceSession`)),1),C(`dd`,null,d(t.sourceSessionId||b(u)(`projectAgents.notReported`)),1)]),C(`div`,null,[C(`dt`,null,d(b(u)(`projectAgents.fields.tokenUsage`)),1),C(`dd`,null,d(Yt(t.tokenUsage)),1)]),t.actualModelProvider||t.actualModel?(a(),T(`div`,Ni,[C(`dt`,null,d(b(u)(`projectAgents.fields.actualModel`)),1),C(`dd`,null,[t.actualModelProvider?(a(),T(`span`,Pi,d(t.actualModelProvider),1)):f(``,!0),t.actualModelProvider&&t.actualModel?(a(),T(`span`,Fi,` · `)):f(``,!0),t.actualModel?(a(),T(`span`,Ii,d(t.actualModel),1)):f(``,!0)])])):f(``,!0),C(`div`,null,[C(`dt`,null,d(b(u)(`projectAgents.fields.reportedAt`)),1),C(`dd`,null,d(Ft(t.createdAt)),1)])])]))),128))])],8,Di)):f(``,!0),n.effectiveModelStrategy?(a(),T(`small`,Li,d(b(u)(`projectAgents.fields.strategySource`))+` · `+d(n.modelStrategySource||b(u)(`projectAgents.notReported`))+` · `+d(Lt(n.effectiveModelStrategy))+` · `+d(Rt(n.effectiveExecutorPolicy)),1)):f(``,!0),n.routingDecision?(a(),T(`div`,Ri,[C(`div`,zi,[C(`span`,null,d(b(u)(`projectAgents.fields.reportedStaffingDecision`)),1),C(`strong`,null,d(n.routingDecision.outcome||b(u)(`projectAgents.notReported`)),1)]),n.routingDecision.coordinatorAgentId||n.coordinatorAgentId?(a(),T(`small`,Bi,d(b(u)(`projectAgents.fields.coordinator`))+` · `+d(n.routingDecision.coordinatorAgentId||n.coordinatorAgentId),1)):f(``,!0),C(`small`,null,d(b(u)(`projectAgents.fields.matchBasis`))+` · `+d(n.routingDecision.matchBasis?.join(` · `)||b(u)(`projectAgents.notReported`))+` · `+d(n.routingDecision.reason||b(u)(`projectAgents.notReported`)),1),n.routingDecision.candidateAgentIds?.length?(a(),T(`small`,Vi,d(b(u)(`projectAgents.fields.candidateAgents`))+` · `+d(n.routingDecision.candidateAgentIds.join(` · `)),1)):f(``,!0),n.routingDecision.complexity!==null&&n.routingDecision.complexity!==void 0?(a(),T(`small`,Hi,[e(d(b(u)(`projectAgents.fields.complexity`))+` · `+d(n.routingDecision.complexity),1),n.routingDecision.complexityBasis?.length?(a(),T(`span`,Ui,` · `+d(n.routingDecision.complexityBasis.join(` · `)),1)):f(``,!0)])):f(``,!0),b(ge)(n.routingDecision.parallelPlan)?(a(),T(`small`,Wi,[e(d(b(u)(`projectAgents.fields.parallelPlan`))+` · `+d(n.routingDecision.parallelPlan?.reason||b(u)(`projectAgents.notReported`)),1),n.routingDecision.parallelPlan?.workstreamBoundaries?.length?(a(),T(`span`,Gi,` · `+d(n.routingDecision.parallelPlan.workstreamBoundaries.join(` · `)),1)):f(``,!0)])):f(``,!0),n.routingDecision.ruleId||n.routingDecision.fallback?(a(),T(`small`,Ki,d(n.routingDecision.ruleId||b(u)(`projectAgents.notReported`))+` · `+d(n.routingDecision.fallback||b(u)(`projectAgents.notReported`)),1)):f(``,!0)])):f(``,!0),C(`div`,qi,[C(`span`,null,d(b(u)(`projectAgents.fields.actualExecution`)),1),$(n)?(a(),T(`strong`,Ji,d($(n)?.executor||$(n)?.provider||b(u)(`projectAgents.notReported`))+` / `+d($(n)?.model||b(u)(`projectAgents.notReported`))+` / `+d(nn($(n)?.client)),1)):(a(),T(`span`,Yi,d(b(u)(`projectAgents.detail.notReportedActualExecution`)),1)),$(n)?.rule||$(n)?.fallback?(a(),T(`small`,Xi,d($(n)?.rule||b(u)(`projectAgents.notReported`))+` · `+d($(n)?.fallback||b(u)(`projectAgents.notReported`)),1)):f(``,!0)]),n.runId?(a(),T(`small`,Zi,d(b(u)(`projectAgents.fields.run`))+` · `+d(n.runId),1)):(a(),T(`small`,Qi,d(b(u)(`projectAgents.detail.noRun`)),1))]))),128))])):(a(),T(`p`,$i,d(b(u)(`projectAgents.detail.noTasks`)),1))])]),_:1},16)]),C(`div`,ea,[w(jt,_(et(`activity`),{onRetry:Q}),{default:s(()=>[C(`section`,ta,[C(`div`,na,[C(`h4`,null,d(b(u)(`projectAgents.sections.activity`)),1),Ke.value?(a(),T(`span`,ra,d(Ke.value.days.length),1)):f(``,!0)]),Ke.value?.days.length?(a(),T(`div`,ia,[C(`div`,{class:`project-agent-heatmap`,role:`list`,"aria-label":b(u)(`projectAgents.activity.aria`)},[(a(!0),T(g,null,t(Ke.value.days,e=>(a(),T(`button`,{key:e.date,type:`button`,role:`listitem`,class:x([`project-agent-heat-cell`,`intensity-${dn(e,Ke.value)}`,{selected:pe.value===e.date}]),"aria-label":`${It(e.date)} · ${e.total}`,"aria-pressed":pe.value===e.date,onClick:t=>Ua(e)},[C(`span`,sa,d(It(e.date))+` · `+d(e.total),1)],10,oa))),128))],8,aa),qe.value?(a(),T(`article`,ca,[C(`header`,null,[C(`strong`,null,d(It(qe.value.date)),1),C(`span`,null,d(qe.value.total),1)]),qe.value.tasks?.length?(a(),T(`ul`,ua,[(a(!0),T(g,null,t(qe.value.tasks,e=>(a(),T(`li`,{key:e.taskId},[C(`strong`,null,d(e.title),1),C(`span`,null,d(en(e.status))+` · `+d(vt(e.personalProjectId)),1),C(`small`,null,d(e.summary||b(u)(`projectAgents.notReported`)),1)]))),128))])):(a(),T(`p`,la,d(b(u)(`projectAgents.activity.noTasks`)),1))])):f(``,!0)])):(a(),T(`p`,da,d(b(u)(`projectAgents.activity.empty`)),1))])]),_:1},16)]),C(`div`,fa,[w(jt,_(et(`executors`),{onRetry:Q}),{default:s(()=>[C(`section`,pa,[C(`div`,ma,[C(`h4`,null,d(b(u)(`projectAgents.sections.clients`)),1),C(`span`,null,d(rn(Z.value).length),1)]),rn(Z.value).length?(a(),T(`div`,ha,[(a(!0),T(g,null,t(rn(Z.value),e=>(a(),T(`div`,{key:e,class:`project-agent-client-row`},[C(`strong`,null,d(nn(e)),1),C(`span`,null,d(an(Z.value,e)?.allowed||Z.value.profile.allowedClients?.includes(e)?b(u)(`projectAgents.clients.allowed`):b(u)(`projectAgents.clients.notAllowed`)),1),on(Z.value,e)?(a(),T(`span`,ga,d(b(u)(`projectAgents.clients.observed`,{count:on(Z.value,e)})),1)):Z.value.observedClients?.includes(e)?(a(),T(`span`,_a,d(b(u)(`projectAgents.clients.observedAny`)),1)):(a(),T(`span`,va,d(b(u)(`projectAgents.clients.unreported`)),1)),C(`small`,null,d(an(Z.value,e)?.integrationStatus||b(u)(`projectAgents.clients.integrationUnreported`)),1)]))),128))])):(a(),T(`p`,ya,d(b(u)(`projectAgents.clients.empty`)),1))])]),_:1},16)]),C(`div`,ba,[w(jt,_(et(`routingRules`),{onRetry:Q}),{default:s(()=>[C(`section`,xa,[C(`div`,Sa,[C(`h4`,null,d(b(u)(`projectAgents.sections.routing`)),1),C(`div`,Ca,[C(`span`,null,d(Z.value.routingRules?.length??0),1),C(`button`,{class:`quiet-button`,type:`button`,onClick:i[11]||=e=>lt()},d(b(u)(`projectAgents.routing.addRule`)),1)])]),Z.value.routingRules?.length?(a(),T(`div`,wa,[(a(!0),T(g,null,t(Z.value.routingRules,e=>(a(),T(`div`,{key:e.ruleId,class:`project-agent-rule-row`},[C(`strong`,null,d(e.scope)+` · `+d(e.priority),1),C(`span`,null,d(e.workKind||e.reason||b(u)(`projectAgents.notReported`))+` · `+d(e.executorIds?.join(`, `)||b(u)(`projectAgents.notReported`)),1),e.enabled?(a(),T(`button`,{key:0,class:`quiet-button`,type:`button`,disabled:!!Y.value,onClick:t=>mt(e)},d(b(u)(`projectAgents.routing.disable`)),9,Ta)):f(``,!0)]))),128))])):(a(),T(`p`,Ea,d(b(u)(`projectAgents.routing.empty`)),1)),C(`small`,Da,d(b(u)(`projectAgents.routing.priorityNote`)),1)])]),_:1},16)]),C(`div`,Oa,[w(jt,_(et(`learning`),{onRetry:Q}),{default:s(()=>[C(`section`,ka,[C(`div`,Aa,[C(`h4`,null,d(b(u)(`projectAgents.sections.learning`)),1),C(`span`,null,d(Je.value.length),1)]),Je.value.length?(a(),T(`div`,ja,[(a(!0),T(g,null,t(Je.value,([e,r])=>(a(),T(`article`,{key:e,class:`project-agent-learning-card`},[C(`header`,null,[C(`strong`,null,d(e),1),C(`i`,null,d(cn(r)),1)]),r.personalProjectId||r.workKind||r.executor||r.modelStrategy?(a(),T(`small`,Ma,d(vt(r.personalProjectId))+` · `+d(r.workKind||b(u)(`projectAgents.notReported`))+` · `+d(r.executor||b(u)(`projectAgents.notReported`))+` / `+d(r.modelStrategy?Lt(r.modelStrategy):b(u)(`projectAgents.notReported`)),1)):f(``,!0),C(`p`,null,d(b(u)(`projectAgents.learning.samples`,{count:r.sampleCount}))+` · `+d(b(u)(`projectAgents.learning.recent`,{count:ln(r)})),1),C(`small`,null,d(r.decayBasis||b(u)(`projectAgents.learning.decayUnreported`))+` · `+d(Ft(r.updatedAt)),1),r.outcomes?(a(),T(`div`,Na,[(a(!0),T(g,null,t(r.outcomes,(e,t)=>n((a(),T(`span`,{key:t},d(t)+` · `+d(e??b(u)(`projectAgents.notReported`)),1)),[[h,e!==void 0]])),128)),r.score!==null&&r.score!==void 0?(a(),T(`span`,Pa,d(b(u)(`projectAgents.learning.score`,{score:un(r)})),1)):f(``,!0)])):f(``,!0),r.evidence?.length?(a(),T(`ul`,Fa,[(a(!0),T(g,null,t(r.evidence,e=>(a(),T(`li`,{key:`${e.evidenceId}:${e.kind}:${e.occurredAt}`},[C(`span`,null,d(e.kind)+` · `+d(e.count??0)+` · `+d(e.summary||b(u)(`projectAgents.notReported`)),1),e.evidenceId?(a(),T(`button`,{key:0,class:`quiet-button`,type:`button`,disabled:ye.value===e.evidenceId,onClick:t=>at(r,`ignore`,e.evidenceId)},d(b(u)(`projectAgents.learning.ignore`)),9,Ia)):f(``,!0)]))),128))])):f(``,!0),r.learningKey?(a(),T(`div`,La,[C(`button`,{class:`quiet-button`,type:`button`,disabled:ye.value===r.learningKey||!r.personalProjectId||!r.workKind||!r.executor,onClick:e=>at(r,`reset`)},d(b(u)(`projectAgents.learning.reset`)),9,Ra)])):f(``,!0)]))),128))])):(a(),T(`p`,za,d(b(u)(`projectAgents.learning.empty`)),1)),C(`small`,Ba,d(b(u)(`projectAgents.learning.note`)),1)])]),_:1},16)]),C(`section`,Va,[C(`h4`,null,d(b(u)(`projectAgents.sections.memory`)),1),C(`p`,null,d(Z.value.memoryScope??b(u)(`projectAgents.notReported`)),1),C(`small`,null,d(b(u)(`projectAgents.detail.memoryNote`)),1)])],8,Un)):(a(),T(`div`,Ha,d(b(u)(`projectAgents.detail.choose`)),1))])):(a(),T(`div`,An,[C(`strong`,null,d(b(u)(`projectAgents.noMatchTitle`)),1),C(`p`,null,d(b(u)(`projectAgents.noMatchCopy`)),1)])):(a(),T(`div`,On,[C(`strong`,null,d(b(u)(`projectAgents.emptyTitle`)),1),C(`p`,null,d(b(u)(`projectAgents.emptyCopy`)),1),C(`button`,{class:`project-agent-add`,type:`button`,disabled:!X.value,onClick:wt},d(b(u)(`projectAgents.add`)),9,kn)])),w(fn,{open:U.value,agent:G.value,projects:Ae.value,"default-project-id":Ge.value,"personal-space-id":X.value,onClose:Ot,onSaved:Pt},null,8,[`open`,`agent`,`projects`,`default-project-id`,`personal-space-id`]),w(Be,{open:K.value,agent:G.value,assignment:de.value,action:ue.value,projects:Ae.value,"available-agents":v.value,"default-project-id":Ge.value,onClose:At,onSaved:Mt,onChanged:Nt},null,8,[`open`,`agent`,`assignment`,`action`,`projects`,`available-agents`,`default-project-id`]),w(gt,{open:Se.value,mode:Ce.value,"personal-space-id":X.value,executor:we.value,rule:Te.value,projects:Ae.value,"available-executors":Z.value?.executorDirectory??[],onClose:ut,onSaved:pt},null,8,[`open`,`mode`,`personal-space-id`,`executor`,`rule`,`projects`,`available-executors`])],8,pn))}}),[[`__scopeId`,`data-v-d3470bdb`]]);export{Ua as default};
@@ -0,0 +1 @@
1
+ import{C as e,F as t,H as n,N as r,T as ee,Z as i,_ as a,a as o,at as s,b as c,d as te,h as l,m as ne,n as re,nt as u,rt as ie,v as d,w as f,x as p}from"./i18n-DQH9D35M.js";import{a as m,n as h,r as g,t as ae}from"./console-B7dWYAoU.js";import{h as oe}from"./useApi-CROJJdhE-CElDxEZI.js";import{t as se}from"./paths-CDREouhi.js";import{t as _}from"./SearchableSelect-CFZNdtlY.js";import{r as v,t as y}from"./identity-JjZG6aS5.js";var ce={class:`view`},le={class:`space-heading public-space-heading`},ue=[`aria-label`],de={class:`project-grid`},fe={class:`project-card-heading`},pe={class:`project-card-heading-actions`},me=[`onClick`],he={class:`completion-badge`},ge={class:`project-purpose`},_e={class:`evidence-row`},ve={key:0,class:`muted`},ye={class:`project-access`},be={class:`muted`},xe={key:0,class:`project-release-meta`},Se={class:`project-card-footer`},b=[`onClick`],x=[`onClick`],S={key:0,class:`empty-state project-empty`},C={class:`project-section`},w={class:`section-toolbar compact-toolbar relation-section-toolbar`},T=[`disabled`],E={class:`compact-relation-preview`,"aria-live":`polite`},D={key:0},O={key:1},k={class:`primary-action`,type:`submit`},A=[`open`],j={key:0,class:`project-dialog-shell`},Ce={class:`project-dialog-header`},we={class:`project-latest-release`},Te={key:0},Ee={key:1,class:`muted`},De={class:`project-detail-columns`},Oe={key:0,class:`muted`},ke={key:1,class:`muted`},Ae={key:0,class:`muted`},je={class:`project-dialog-actions`},Me=[`open`],Ne={key:0,class:`project-dialog-shell`},Pe={class:`project-dialog-header`},Fe=[`disabled`],Ie={class:`project-delete-confirmation`},Le=[`disabled`],Re={key:0,class:`publish-dialog-error`,role:`alert`},ze={class:`project-dialog-actions`},Be=[`disabled`],M=ee({__name:`PublicProjectsPage`,setup(ee){let M=ae(),Ve=oe(),N=i(null),P=i([]),F=i([]),I=i(!1),L=i(!1),R=i(``),z=i(``),B=i(`RELATED_TO`),V=i(null),H=i(``),U=i(!1),W=i(``),G=a(()=>M.state?.projects??[]),K=a(()=>new Set((M.state?.subscriptions??[]).map(({provider_url:e,project_id:t})=>`${e}::${t}`))),q=a(()=>G.value.filter(({role:e,isOwner:t})=>e===`maintainer`||t)),He=a(()=>q.value.map(e=>({value:e.id,label:e.name,meta:`#${y(e.id,26)}`,search:v(e.id)}))),Ue=a(()=>{let e=G.value.find(({id:e})=>e===R.value);return G.value.filter(({id:t,providerUrl:n})=>t!==e?.id&&n===e?.providerUrl)}),We=a(()=>Ue.value.map(e=>({value:e.id,label:e.name,meta:`#${y(e.id,26)}`,search:v(e.id)}))),Ge=a(()=>G.value.find(({id:e})=>e===R.value)??null),Ke=a(()=>G.value.find(({id:e})=>e===z.value)??null),J=a(()=>X.value.find(({value:e})=>e===B.value)?.label??o(`pages.publicProjects.relationLabels.relatedTo`)),Y=a(()=>!!(V.value&&H.value===V.value.name)),X=a(()=>[{value:`PART_OF`,label:o(`pages.publicProjects.relationLabels.partOf`)},{value:`USES_KNOWLEDGE_FROM`,label:o(`pages.publicProjects.relationLabels.usesKnowledgeFrom`)},{value:`DEPENDS_ON`,label:o(`pages.publicProjects.relationLabels.dependsOn`)},{value:`PROVIDES_TO`,label:o(`pages.publicProjects.relationLabels.providesTo`)},{value:`SHARES_CAPABILITY_WITH`,label:o(`pages.publicProjects.relationLabels.sharesCapabilityWith`)},{value:`SUCCESSOR_OF`,label:o(`pages.publicProjects.relationLabels.successorOf`)},{value:`RELATED_TO`,label:o(`pages.publicProjects.relationLabels.relatedTo`)}]);function Z(e){return`${e.providerUrl}::${e.id}`}function Q(e){return e.profile?.purpose||e.profile?.scope||e.profile?.technical_summary||e.description||o(`pages.publicProjects.fallbackDescription`)}async function qe(e){try{if(K.value.has(Z(e))){let t=new URLSearchParams({personalSpaceId:M.activePersonalSpace?.id??``,providerUrl:e.providerUrl});await h(`/api/subscriptions/${encodeURIComponent(e.id)}?${t}`),M.notify(o(`pages.publicProjects.unsubscribed`,{name:e.name}))}else await m(`/api/subscriptions`,{personalSpaceId:M.activePersonalSpace?.id,projectId:e.id,providerUrl:e.providerUrl,projectName:e.name}),M.notify(o(`pages.publicProjects.subscribed`,{name:e.name}));await M.refresh()}catch(e){M.reportError(e)}}async function Je(e){N.value=e,P.value=[],F.value=[],I.value=!0;try{let t=new URLSearchParams({providerUrl:e.providerUrl}),[n,r]=await Promise.all([g(`/api/projects/${encodeURIComponent(e.id)}/releases?${t}`),g(`/api/project-relations?${new URLSearchParams({projectId:e.id,providerUrl:e.providerUrl})}`)]);P.value=n.releases??[],F.value=r.relations??[]}catch(e){M.reportError(e)}finally{I.value=!1}}async function Ye(e){N.value=null,await Ve.push(se(`public`,e.id,`graph`))}function Xe(e){V.value=e,H.value=``,W.value=``}function Ze(){U.value||(V.value=null,H.value=``,W.value=``)}async function Qe(){let e=V.value;if(!e||!Y.value){W.value=o(`pages.publicProjects.deleteNameRequired`);return}U.value=!0,W.value=``;try{let t=new URLSearchParams({providerUrl:e.providerUrl});await h(`/api/projects/${encodeURIComponent(e.id)}?${t}`),N.value=null,V.value=null,M.notify(o(`pages.publicProjects.deleted`,{name:e.name})),await M.refresh()}catch(e){W.value=e instanceof Error?e.message:o(`pages.publicProjects.deleteFailed`),M.reportError(e)}finally{U.value=!1}}async function $e(){let e=G.value.find(({id:e})=>e===R.value),t=G.value.find(({id:e})=>e===z.value);if(!e||!t){M.reportError(Error(o(`pages.publicProjects.chooseRelationProjects`)));return}try{await m(`/api/project-relations`,{sourceProjectId:e.id,targetProjectId:t.id,providerUrl:e.providerUrl,relationType:B.value,note:null}),L.value=!1,R.value=``,z.value=``,M.notify(B.value===`PART_OF`?o(`pages.publicProjects.parentRelationSubmitted`):o(`pages.publicProjects.relationCreated`))}catch(e){M.reportError(e)}}function $(e){return e?new Date(e).toLocaleString(re()):o(`pages.publicProjects.timeNotRecorded`)}return(ee,i)=>(r(),p(`section`,ce,[d(`div`,le,[i[8]||=d(`span`,{class:`space-heading-icon`,"aria-hidden":`true`},[d(`span`,{class:`nav-icon nav-icon-public-project`})],-1),d(`div`,null,[d(`p`,null,s(u(o)(`pages.publicProjects.intro`)),1)]),d(`div`,{class:`public-space-stats`,"aria-label":u(o)(`pages.publicProjects.overviewAria`)},[d(`span`,null,[d(`strong`,null,s(G.value.length),1),e(s(u(o)(`pages.publicProjects.discoverable`)),1)]),d(`span`,null,[d(`strong`,null,s(u(M).state?.subscriptions.length??0),1),e(s(u(o)(`pages.publicProjects.subscribedCount`)),1)])],8,ue)]),d(`div`,de,[(r(!0),p(l,null,t(G.value,e=>(r(),p(`article`,{key:Z(e),class:`project-card`},[d(`div`,fe,[d(`div`,null,[i[9]||=d(`p`,{class:`eyebrow`},`PUBLIC PROJECT`,-1),d(`h4`,null,s(e.name),1)]),d(`div`,pe,[e.can_manage?(r(),p(`button`,{key:0,class:`management-action`,type:`button`,onClick:t=>Xe(e)},s(u(o)(`pages.publicProjects.manage`)),9,me)):c(``,!0),d(`div`,he,[d(`strong`,null,s(e.profile?.assessment?.score??`—`),1),d(`span`,null,s(e.profile?.assessment?u(o)(`pages.publicProjects.coverage`):u(o)(`pages.publicProjects.noSummary`)),1)])])]),d(`p`,ge,s(Q(e)),1),d(`div`,_e,[(r(!0),p(l,null,t(e.profile?.sources??[],(e,t)=>(r(),p(`span`,{key:t,class:`status-chip`},s(e.kind??u(o)(`pages.publicProjects.material`)),1))),128)),e.profile?.sources?.length?c(``,!0):(r(),p(`span`,ve,s(u(o)(`pages.publicProjects.noSources`)),1))]),d(`div`,ye,[d(`span`,{class:ie([`status-chip`,{owner:e.isOwner}])},s(e.isOwner?`Owner`:e.role??`Reader`),3),d(`span`,be,s(e.isOwner?u(o)(`pages.publicProjects.publishedByYou`):u(o)(`pages.publicProjects.publiclyDiscoverable`)),1),e.current_release?(r(),p(`span`,xe,[d(`strong`,null,s(e.current_release.version),1),d(`span`,null,s($(e.current_release.published_at)),1)])):c(``,!0)]),d(`footer`,Se,[d(`button`,{class:`secondary-action`,type:`button`,onClick:t=>qe(e)},s(K.value.has(Z(e))?u(o)(`pages.publicProjects.unsubscribe`):u(o)(`pages.publicProjects.subscribe`)),9,b),d(`button`,{class:`primary-action`,type:`button`,onClick:t=>Je(e)},s(u(o)(`common.actions.viewDetails`)),9,x)])]))),128)),G.value.length?c(``,!0):(r(),p(`div`,S,s(u(o)(`pages.publicProjects.noProjects`)),1))]),d(`section`,C,[d(`div`,w,[d(`div`,null,[i[10]||=d(`p`,{class:`eyebrow`},`PROJECT RELATIONS`,-1),d(`h3`,null,s(u(o)(`pages.publicProjects.relationsTitle`)),1),d(`p`,null,s(u(o)(`pages.publicProjects.relationsCopy`)),1)]),d(`button`,{class:`primary-action`,type:`button`,disabled:!q.value.length,onClick:i[0]||=e=>L.value=!L.value},s(u(o)(`pages.publicProjects.addRelation`)),9,T)]),L.value?(r(),p(`form`,{key:0,class:`relation-composer relation-composer-form compact-relation-form`,onSubmit:ne($e,[`prevent`])},[d(`label`,null,[e(s(u(o)(`pages.publicProjects.sourceProject`))+` `,1),f(_,{modelValue:R.value,"onUpdate:modelValue":i[1]||=e=>R.value=e,options:He.value,label:u(o)(`pages.publicProjects.sourceProjectLabel`),placeholder:u(o)(`pages.publicProjects.chooseProject`),searchable:``,required:``,onChange:i[2]||=e=>z.value=``},null,8,[`modelValue`,`options`,`label`,`placeholder`])]),d(`label`,null,[e(s(u(o)(`pages.publicProjects.relation`))+` `,1),f(_,{modelValue:B.value,"onUpdate:modelValue":i[3]||=e=>B.value=e,options:X.value,label:u(o)(`pages.publicProjects.relationTypeLabel`)},null,8,[`modelValue`,`options`,`label`])]),d(`label`,null,[e(s(u(o)(`pages.publicProjects.targetProject`))+` `,1),f(_,{modelValue:z.value,"onUpdate:modelValue":i[4]||=e=>z.value=e,options:We.value,label:u(o)(`pages.publicProjects.targetProjectLabel`),placeholder:u(o)(`pages.publicProjects.chooseProject`),searchable:``,required:``},null,8,[`modelValue`,`options`,`label`,`placeholder`])]),d(`div`,E,[d(`span`,null,s(u(o)(`pages.publicProjects.preview`)),1),d(`strong`,null,s(Ge.value?.name||u(o)(`pages.publicProjects.sourceProject`))+` `+s(J.value)+` `+s(Ke.value?.name||u(o)(`pages.publicProjects.targetProject`)),1),B.value===`PART_OF`?(r(),p(`p`,D,s(u(o)(`pages.publicProjects.parentConfirmation`)),1)):(r(),p(`p`,O,s(u(o)(`pages.publicProjects.relationBoundary`)),1))]),d(`button`,k,s(u(o)(`pages.publicProjects.addRelation`)),1)],32)):c(``,!0)]),d(`dialog`,{open:!!N.value,class:`project-dialog vue-dialog`},[N.value?(r(),p(`div`,j,[d(`header`,Ce,[d(`div`,null,[i[11]||=d(`p`,{class:`eyebrow`},`PUBLIC PROJECT`,-1),d(`h3`,null,s(N.value.name),1),d(`p`,null,s(Q(N.value)),1)]),d(`button`,{class:`secondary-action`,type:`button`,onClick:i[5]||=e=>N.value=null},s(u(o)(`common.actions.close`)),1)]),d(`section`,we,[i[12]||=d(`p`,{class:`eyebrow`},`LATEST RELEASE`,-1),d(`h4`,null,s(u(o)(`pages.publicProjects.latestRelease`)),1),N.value.current_release?(r(),p(`p`,Te,[d(`strong`,null,s(N.value.current_release.version),1),e(` · `+s($(N.value.current_release.published_at)),1)])):(r(),p(`p`,Ee,s(u(o)(`pages.publicProjects.noRelease`)),1))]),d(`div`,De,[d(`section`,null,[d(`h4`,null,s(u(o)(`pages.publicProjects.releaseHistory`)),1),I.value?(r(),p(`p`,Oe,s(u(o)(`pages.publicProjects.loading`)),1)):c(``,!0),(r(!0),p(l,null,t(P.value,e=>(r(),p(`article`,{key:e.version,class:`project-release-item`},[d(`strong`,null,s(e.version),1),d(`p`,null,s(e.update_summary),1),d(`small`,null,s($(e.published_at)),1)]))),128)),!I.value&&!P.value.length?(r(),p(`p`,ke,s(u(o)(`pages.publicProjects.noReleaseHistory`)),1)):c(``,!0)]),d(`section`,null,[d(`h4`,null,s(u(o)(`pages.publicProjects.relationsTitle`)),1),(r(!0),p(l,null,t(F.value,e=>(r(),p(`article`,{key:e.id,class:`project-detail-relation`},[d(`strong`,null,s(e.relation_type),1),d(`small`,null,s(e.status??`active`),1)]))),128)),!I.value&&!F.value.length?(r(),p(`p`,Ae,s(u(o)(`pages.publicProjects.noRelations`)),1)):c(``,!0)])]),d(`footer`,je,[d(`span`,null,s(u(o)(`pages.publicProjects.contentManagementSeparated`)),1),d(`button`,{class:`primary-action`,type:`button`,onClick:i[6]||=e=>Ye(N.value)},s(u(o)(`pages.publicProjects.viewGraph`)),1)])])):c(``,!0)],8,A),d(`dialog`,{open:!!V.value,class:`project-dialog vue-dialog`},[V.value?(r(),p(`div`,Ne,[d(`header`,Pe,[d(`div`,null,[i[13]||=d(`p`,{class:`eyebrow`},`DESTRUCTIVE ACTION`,-1),d(`h3`,null,s(u(o)(`pages.publicProjects.deleteTitle`)),1),d(`p`,null,s(u(o)(`pages.publicProjects.deleteCopy`)),1)]),d(`button`,{class:`secondary-action`,type:`button`,disabled:U.value,onClick:Ze},s(u(o)(`common.actions.close`)),9,Fe)]),d(`label`,Ie,[e(s(u(o)(`pages.publicProjects.enterFullName`))+` `,1),d(`strong`,null,s(V.value.name),1),n(d(`input`,{"onUpdate:modelValue":i[7]||=e=>H.value=e,autocomplete:`off`,disabled:U.value},null,8,Le),[[te,H.value]])]),W.value?(r(),p(`p`,Re,s(W.value),1)):c(``,!0),d(`footer`,ze,[d(`span`,null,s(u(o)(`pages.publicProjects.deleteWarning`)),1),d(`button`,{class:`reject`,type:`button`,disabled:!Y.value||U.value,onClick:Qe},s(U.value?u(o)(`pages.publicProjects.deleting`):u(o)(`pages.publicProjects.deletePermanently`)),9,Be)])])):c(``,!0)],8,Me)]))}});export{M as default};
@@ -0,0 +1 @@
1
+ import{F as e,N as t,T as n,Z as r,_ as i,a,at as o,b as s,h as c,nt as l,v as u,w as d,x as f,z as p}from"./i18n-DQH9D35M.js";import{a as m,r as h,t as g}from"./console-B7dWYAoU.js";import{t as _}from"./SearchableSelect-CFZNdtlY.js";import{r as v,t as y}from"./identity-JjZG6aS5.js";import{u as b}from"./model-zL97NJ-U.js";var x={class:`view`},S={class:`section-title`},C={class:`review-list`},w={class:`review-stage`},T={class:`review-meta`},E={class:`review-actions stacked-actions`},D=[`onClick`],O=[`onClick`],k=[`onClick`],A={key:0,class:`empty-state`},j={key:0,class:`project-section`},M={class:`section-toolbar`},N={class:`review-list`},P={class:`review-stage`},F={class:`review-meta`},I={class:`review-actions`},L=[`onClick`],R=[`onClick`],z={key:0,class:`empty-state`},B=n({__name:`ReviewPage`,setup(n){let B=g(),V=r([]),H=r([]),U=r(``),W=r(!1),G=i(()=>(B.state?.projects??[]).filter(({role:e})=>e===`maintainer`)),K=i(()=>G.value.map(e=>({value:e.id,label:e.name,meta:`#${y(e.id,26)}`,search:v(e.id)}))),q=i(()=>G.value.find(({id:e})=>e===U.value)??null);p(()=>B.state,e=>{e&&(U.value||=G.value[0]?.id??``,J())},{immediate:!0}),p(U,()=>void X());async function J(){W.value=!0,await Promise.all([Y(),X()]),W.value=!1}async function Y(){let e=B.activePersonalSpace?.id;if(e)try{let t=await h(`/api/personal-review?${new URLSearchParams({personalSpaceId:e,status:`pending`})}`);V.value=t.drafts??[]}catch(e){B.reportError(e)}}async function X(){let e=q.value;if(!e){H.value=[];return}try{let t=await h(`/api/review?${new URLSearchParams({projectId:e.id,providerUrl:e.providerUrl,status:`pending`})}`);H.value=t.proposals??[]}catch(e){H.value=[],B.reportError(e)}}async function Z(e,t){try{await m(`/api/personal-review/${encodeURIComponent(e.id)}/decision`,{decision:t}),await Promise.all([Y(),B.refresh()])}catch(e){B.reportError(e)}}async function Q(e,t){let n=q.value;if(n)try{await m(`/api/review/${encodeURIComponent(e.id)}/decision`,{projectId:n.id,providerUrl:n.providerUrl,decision:t,note:null}),await X()}catch(e){B.reportError(e)}}return(n,r)=>(t(),f(`section`,x,[u(`div`,S,[u(`h3`,null,o(l(a)(`pages.review.personalTitle`)),1),u(`p`,null,o(l(a)(`pages.review.personalCopy`)),1)]),u(`div`,C,[(t(!0),f(c,null,e(V.value,e=>(t(),f(`article`,{key:e.id,class:`review-item review-item-detailed`},[u(`div`,null,[u(`div`,w,o(l(a)(`pages.review.beforePublic`)),1),u(`h4`,null,o(e.episode.name),1),u(`p`,null,o(e.episode.summary||e.episode.source_description),1),u(`div`,T,[u(`span`,null,o(l(a)(`common.counts.entities`,{count:e.episode.entities?.length??0})),1),u(`span`,null,o(l(a)(`common.counts.relationships`,{count:e.episode.relationships?.length??0})),1),u(`span`,null,o(l(b)(e.created_at)),1)])]),u(`div`,E,[u(`button`,{class:`secondary-action`,type:`button`,onClick:t=>Z(e,`keep_personal`)},o(l(a)(`pages.review.keepPersonal`)),9,D),u(`button`,{class:`reject`,type:`button`,onClick:t=>Z(e,`ignore`)},o(l(a)(`pages.review.ignore`)),9,O),l(B).state?.capabilities?.submitKnowledge?(t(),f(`button`,{key:0,class:`approve`,type:`button`,onClick:t=>Z(e,`submit_public`)},o(l(a)(`pages.review.submitPublic`)),9,k)):s(``,!0)])]))),128)),!W.value&&!V.value.length?(t(),f(`div`,A,o(l(a)(`pages.review.noPersonalDrafts`)),1)):s(``,!0)]),l(B).state?.capabilities?.reviewProposals?(t(),f(`section`,j,[u(`div`,M,[u(`div`,null,[u(`h3`,null,o(l(a)(`pages.review.publicTitle`)),1),u(`p`,null,o(l(a)(`pages.review.publicCopy`)),1)]),d(_,{modelValue:U.value,"onUpdate:modelValue":r[0]||=e=>U.value=e,options:K.value,label:l(a)(`pages.review.projectLabel`),"control-id":`review-project`,searchable:``},null,8,[`modelValue`,`options`,`label`])]),u(`div`,N,[(t(!0),f(c,null,e(H.value,e=>(t(),f(`article`,{key:e.id,class:`review-item`},[u(`div`,null,[u(`div`,P,o(l(a)(`pages.review.maintainerReview`)),1),u(`h4`,null,o(e.episode.name),1),u(`p`,null,o(e.episode.summary||e.episode.source_description),1),u(`div`,F,[u(`span`,null,o(l(b)(e.created_at)),1)])]),u(`div`,I,[u(`button`,{class:`reject`,type:`button`,onClick:t=>Q(e,`reject`)},o(l(a)(`pages.review.reject`)),9,L),u(`button`,{class:`approve`,type:`button`,onClick:t=>Q(e,`approve`)},o(l(a)(`pages.review.approve`)),9,R)])]))),128)),!W.value&&!H.value.length?(t(),f(`div`,z,o(l(a)(`pages.review.noProposals`)),1)):s(``,!0)])])):s(``,!0)]))}});export{B as default};
@@ -0,0 +1 @@
1
+ import{A as e,F as t,H as n,M as r,N as i,R as a,T as o,Z as s,_ as c,a as l,at as u,b as d,d as f,h as p,j as m,m as h,n as ee,nt as g,rt as _,v,x as y,z as b}from"./i18n-DQH9D35M.js";var x=[`data-select-id`],S=[`value`,`name`,`required`,`disabled`],C=[`value`,`disabled`],w=[`aria-expanded`,`aria-controls`,`aria-label`,`disabled`],T={class:`searchable-select-current`},E={class:`searchable-select-current-label`},D={key:0,class:`searchable-select-current-meta`},O=[`hidden`],te={key:0,class:`searchable-select-search`},ne=[`placeholder`,`aria-label`],re=[`id`],ie=[`aria-selected`,`disabled`,`onClick`,`onKeydown`],ae={class:`searchable-select-option-copy`},oe={key:0},se={key:1,class:`searchable-select-empty`},k=o({__name:`SearchableSelect`,props:{modelValue:{},options:{},label:{},controlId:{default:void 0},placeholder:{default:void 0},searchPlaceholder:{default:void 0},searchable:{type:Boolean,default:void 0},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1},name:{default:void 0}},emits:[`update:modelValue`,`change`],setup(o,{emit:k}){let A=o,j=k,M=s(null),N=s(null),P=s(null),F=s(null),I=s(!1),L=s(!1),R=s(``),z=a().replace(/[^A-Za-z0-9_-]/g,``),B=c(()=>A.label),V=c(()=>A.placeholder??l(`common.searchableSelect.placeholder`)),H=c(()=>A.searchPlaceholder??l(`common.searchableSelect.searchPlaceholder`)),U=c(()=>`${A.controlId||`searchable-select-${z}`}-options`),W=c(()=>A.options.find(({value:e})=>e===A.modelValue)??null),G=c(()=>A.searchable??A.options.length>5),K=c(()=>{let e=ee(),t=R.value.trim().toLocaleLowerCase(e);return t?A.options.filter(n=>[n.label,n.value,n.meta,n.search].filter(Boolean).join(` `).toLocaleLowerCase(e).includes(t)):A.options});b(()=>A.disabled,e=>{e&&J()}),r(()=>{document.addEventListener(`pointerdown`,X)}),m(()=>{document.removeEventListener(`pointerdown`,X)});async function ce(){I.value?J():await q()}async function q(){A.disabled||(R.value=``,pe(),I.value=!0,await e(),G.value?P.value?.focus():fe()?.focus())}function J({restoreFocus:t=!1}={}){I.value=!1,L.value=!1,R.value=``,t&&e(()=>N.value?.focus())}function Y(e){A.disabled||e.disabled||(j(`update:modelValue`,e.value),j(`change`,e.value),J({restoreFocus:!0}))}function le(e){[`ArrowDown`,`Enter`,` `].includes(e.key)&&(e.preventDefault(),q())}function ue(e){if(e.key===`Escape`){e.preventDefault(),J({restoreFocus:!0});return}if(e.key===`ArrowDown`){e.preventDefault(),$()?.focus();return}e.key===`Enter`&&(e.preventDefault(),$()?.click())}function de(e,t){if(e.key===`Enter`||e.key===` `){e.preventDefault(),Y(t);return}if(e.key===`Escape`){e.preventDefault(),J({restoreFocus:!0});return}if(![`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key))return;e.preventDefault();let n=Q(),r=n.indexOf(e.currentTarget);n[e.key===`Home`?0:e.key===`End`?n.length-1:e.key===`ArrowDown`?Math.min(n.length-1,r+1):Math.max(0,r-1)]?.focus()}function X(e){I.value&&!M.value?.contains(e.target)&&J()}function Z(e){let t=e.relatedTarget;t&&M.value?.contains(t)||queueMicrotask(()=>{I.value&&!M.value?.contains(document.activeElement)&&J()})}function Q(){return[...F.value?.querySelectorAll(`.searchable-select-option:not(:disabled)`)??[]]}function $(){return Q()[0]??null}function fe(){return Q().find(e=>e.getAttribute(`aria-selected`)===`true`)??$()}function pe(){let e=N.value?.getBoundingClientRect();L.value=!!(e&&window.innerHeight-e.bottom<270&&e.top>270)}return(e,r)=>(i(),y(`div`,{ref_key:`root`,ref:M,class:_([`searchable-select`,{open:I.value,"open-up":L.value,disabled:o.disabled}]),"data-select-id":o.controlId,onFocusout:Z},[v(`select`,{class:`searchable-select-native`,value:o.modelValue,name:o.name,required:o.required,disabled:o.disabled,tabindex:`-1`,"aria-hidden":`true`},[(i(!0),y(p,null,t(o.options,e=>(i(),y(`option`,{key:e.value,value:e.value,disabled:e.disabled},u(e.label),9,C))),128))],8,S),v(`button`,{ref_key:`trigger`,ref:N,type:`button`,class:`searchable-select-trigger`,role:`combobox`,"aria-haspopup":`listbox`,"aria-expanded":I.value,"aria-controls":U.value,"aria-label":B.value,disabled:o.disabled,onPointerdown:r[0]||=h(()=>{},[`stop`]),onClick:h(ce,[`stop`]),onKeydown:le},[v(`span`,T,[v(`span`,E,u(W.value?.label||V.value),1),W.value?.meta?(i(),y(`small`,D,u(W.value.meta),1)):d(``,!0)]),r[3]||=v(`i`,{class:`searchable-select-arrow`,"aria-hidden":`true`},null,-1)],40,w),v(`div`,{class:`searchable-select-panel`,hidden:!I.value},[G.value?(i(),y(`div`,te,[n(v(`input`,{ref_key:`searchInput`,ref:P,"onUpdate:modelValue":r[1]||=e=>R.value=e,type:`search`,autocomplete:`off`,placeholder:H.value,"aria-label":g(l)(`common.searchableSelect.searchAria`,{label:B.value}),onKeydown:ue},null,40,ne),[[f,R.value]])])):d(``,!0),v(`div`,{id:U.value,ref_key:`optionsList`,ref:F,class:`searchable-select-options`,role:`listbox`},[(i(!0),y(p,null,t(K.value,e=>(i(),y(`button`,{key:e.value,type:`button`,class:`searchable-select-option`,role:`option`,"aria-selected":e.value===o.modelValue,disabled:e.disabled,onMousedown:r[2]||=h(()=>{},[`prevent`]),onClick:t=>Y(e),onKeydown:t=>de(t,e)},[v(`span`,ae,[v(`strong`,null,u(e.label),1),e.meta?(i(),y(`small`,oe,u(e.meta),1)):d(``,!0)]),r[4]||=v(`i`,{class:`searchable-select-check`,"aria-hidden":`true`},null,-1)],40,ie))),128))],8,re),K.value.length===0?(i(),y(`p`,se,u(g(l)(`common.searchableSelect.noMatches`)),1)):d(``,!0)],8,O)],42,x))}});export{k as t};
@@ -0,0 +1 @@
1
+ import{C as e,F as t,H as n,M as r,N as i,T as a,Z as o,_ as s,a as c,at as l,b as u,c as d,d as f,h as p,i as m,it as h,j as ee,m as te,n as ne,nt as g,v as _,w as v,x as y,z as re}from"./i18n-DQH9D35M.js";import{o as ie,r as b,t as ae}from"./console-B7dWYAoU.js";import{t as x}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as S}from"./SearchableSelect-CFZNdtlY.js";import{o as oe,r as se,t as C}from"./conversation-launcher-settings-D1xhW1S5.js";var ce=[`aria-label`],le={class:`settings-content`},ue={key:0,class:`settings-top-status`,role:`status`},de={key:0},fe={key:1},pe={class:`settings-card resource-card`},me={class:`section-heading`},he={key:0},ge=[`disabled`],_e={key:0,class:`settings-error`,role:`alert`},ve={class:`resource-totals`},ye={class:`resource-breakdowns`},w={class:`resource-group`},T={class:`resource-group`},E={class:`resource-notes`},D={key:0},O={key:1},k={key:2,class:`settings-skeleton`,"aria-hidden":`true`},A={class:`settings-card ports-card`},j={class:`section-heading`},M={key:0,class:`restart-chip`},N={class:`port-section`},P={class:`port-grid`},be=[`onUpdate:modelValue`],xe={class:`port-section development-section`},Se={id:`conversation-launchers`,class:`settings-card conversation-launcher-card`},Ce={class:`conversation-launcher-list`},we={class:`conversation-launcher-heading`},Te={class:`conversation-launcher-switch`},Ee=[`onUpdate:modelValue`],De={key:0,class:`conversation-launcher-note`},Oe={key:1,class:`conversation-launcher-fields`},ke=[`onUpdate:modelValue`],Ae={class:`conversation-launcher-template`},je=[`onUpdate:modelValue`],Me={class:`settings-card behavior-card`},Ne={class:`setting-list`},Pe={class:`setting-row`},Fe=[`checked`],Ie={class:`setting-row`},Le=[`checked`],Re={class:`setting-row`},ze={class:`setting-row select-row`},Be={class:`setting-row select-row`},Ve={class:`setting-row select-row`},He={key:0,class:`settings-error`,role:`alert`},Ue={key:2,class:`settings-error`,role:`alert`},F=x(a({__name:`SettingsPage`,setup(a){let x=ae(),F=o(null),I=o(null),L=o(null),R=o(!0),z=o(!1),B=o(!1),V=o(``),H=o(``),U=o(!1),W=null,We=[`console`,`personalProvider`,`personalNeo4jHttp`,`personalNeo4jBolt`],G=s({get:()=>ne(),set:e=>m(e)}),K=[5,10,30,60],Ge=se,Ke=s(()=>[{value:`zh-CN`,label:c(`settings.behavior.zh`)},{value:`en-US`,label:c(`settings.behavior.en`)}]),qe=s(()=>K.map(e=>({value:String(e),label:c(`settings.resources.refreshUnit`,{seconds:e})}))),Je=s(()=>[{value:`native`,label:c(`settings.behavior.runtimeModes.native`)},{value:`container`,label:c(`settings.behavior.runtimeModes.container`)}]),Ye=s(()=>[{value:`any`,label:c(`settings.conversationLaunchers.idFormats.any`)},{value:`uuid`,label:c(`settings.conversationLaunchers.idFormats.uuid`)}]),Xe=s(()=>x.state?.capturePolicy?.enabled!==!1),Ze=s(()=>x.state?.agentAccessPolicy?.enabled!==!1),Qe=s(()=>Math.max(1,...L.value?.memory.components.map(({bytes:e})=>e)??[1])),$e=s(()=>Math.max(1,...L.value?.disk.components.map(({bytes:e})=>e)??[1])),et=s(()=>I.value?.graphRuntimeMode===`container`&&Number.isFinite(L.value?.memory.hostTotalBytes)&&Number(L.value?.memory.hostTotalBytes)<=16*1024**3);r(async()=>{x.runtimeStatus===`idle`&&x.refresh(),await Promise.all([q(),J()]),R.value=!1}),ee(Y),re(()=>I.value?.resourceRefreshSeconds,()=>nt());async function q(){try{let e=await b(`/api/system/settings`);F.value=e,I.value=structuredClone(e.configured),C(e.configured.conversationLaunchers),V.value=``}catch(e){V.value=e instanceof Error?e.message:c(`settings.loadError`)}}async function J(){if(!(B.value||document.visibilityState===`hidden`)){B.value=!0;try{L.value=await b(`/api/system/resources`),H.value=``}catch(e){H.value=e instanceof Error?e.message:c(`settings.resources.unavailable`)}finally{B.value=!1}}}async function tt(){if(!(!I.value||z.value)){z.value=!0,U.value=!1;try{let e=await ie(`/api/system/settings`,I.value);F.value=e,I.value=structuredClone(e.configured),C(e.configured.conversationLaunchers),U.value=!0,V.value=``,window.setTimeout(()=>{U.value=!1},2400)}catch(e){V.value=e instanceof Error?e.message:c(`settings.saveError`)}finally{z.value=!1}}}function nt(){Y();let e=I.value?.resourceRefreshSeconds;e&&(W=setInterval(()=>void J(),e*1e3))}function Y(){W&&clearInterval(W),W=null}function rt(e){x.updateCapturePolicy(e.currentTarget.checked)}function it(e){x.updateAgentAccessPolicy(e.currentTarget.checked)}function at(e){(e===`zh-CN`||e===`en-US`)&&m(e)}function ot(e){let t=K.find(t=>String(t)===e);t===void 0||!I.value||(I.value.resourceRefreshSeconds=t)}function st(e){!I.value||e!==`native`&&e!==`container`||(I.value.graphRuntimeMode=e)}function ct(e){let t=c(`settings.conversationLaunchers.applications.${e}`);return t===`settings.conversationLaunchers.applications.${e}`?oe(e):t}function lt(e){return F.value?.active.ports[e]??`—`}function X(e){let t=`settings.resources.components.${e.id}`,n=c(t);return n===t?e.label:n}function Z(e){if(!Number.isFinite(e))return`—`;let t=Number(e),n=[`B`,`KiB`,`MiB`,`GiB`,`TiB`],r=t,i=0;for(;r>=1024&&i<n.length-1;)r/=1024,i+=1;let a=i===0||r>=100?0:r>=10?1:2;return`${r.toFixed(a)} ${n[i]}`}function Q(e,t){return`${Math.max(3,Math.round(e/t*100))}%`}function $(e){return e?new Intl.DateTimeFormat(G.value,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}).format(new Date(e)):`—`}return(r,a)=>(i(),y(`section`,{class:`view settings-view`,"aria-label":g(c)(`settings.aria`)},[_(`div`,le,[U.value||F.value?.restartRequired?(i(),y(`div`,ue,[U.value?(i(),y(`strong`,de,l(g(c)(`settings.saved`)),1)):u(``,!0),F.value?.restartRequired?(i(),y(`span`,fe,l(g(c)(`settings.restartCopy`)),1)):u(``,!0)])):u(``,!0),_(`section`,pe,[_(`header`,me,[_(`div`,null,[_(`h3`,null,l(g(c)(`settings.resources.title`)),1),L.value?(i(),y(`p`,he,l(g(c)(`settings.resources.measuredAt`,{time:$(L.value.sampledAt)})),1)):u(``,!0)]),_(`button`,{class:`quiet-button`,type:`button`,disabled:B.value,onClick:J},l(g(c)(`common.actions.refresh`)),9,ge)]),H.value?(i(),y(`p`,_e,l(H.value),1)):L.value?(i(),y(p,{key:1},[_(`div`,ve,[_(`article`,null,[_(`span`,null,l(g(c)(`settings.resources.memory`)),1),_(`strong`,null,l(Z(L.value.memory.usedBytes)),1),_(`small`,null,l(g(c)(`settings.resources.available`,{value:Z(L.value.memory.hostFreeBytes)})),1)]),_(`article`,null,[_(`span`,null,l(g(c)(`settings.resources.disk`)),1),_(`strong`,null,l(Z(L.value.disk.usedBytes)),1),_(`small`,null,l(g(c)(`settings.resources.available`,{value:Z(L.value.disk.hostFreeBytes)})),1)])]),_(`div`,ye,[_(`div`,w,[_(`h4`,null,l(g(c)(`settings.resources.memory`)),1),(i(!0),y(p,null,t(L.value.memory.components,e=>(i(),y(`div`,{key:e.id,class:`resource-row`},[_(`div`,null,[_(`span`,null,l(X(e)),1),_(`strong`,null,l(Z(e.bytes)),1)]),_(`i`,null,[_(`b`,{style:h({width:Q(e.bytes,Qe.value)})},null,4)])]))),128))]),_(`div`,T,[_(`h4`,null,l(g(c)(`settings.resources.disk`)),1),(i(!0),y(p,null,t(L.value.disk.components,e=>(i(),y(`div`,{key:e.id,class:`resource-row`},[_(`div`,null,[_(`span`,null,l(X(e)),1),_(`strong`,null,l(Z(e.bytes)),1)]),_(`i`,null,[_(`b`,{style:h({width:Q(e.bytes,$e.value)})},null,4)])]))),128))])]),_(`div`,E,[_(`span`,null,l(g(c)(`settings.resources.diskMeasuredAt`,{time:$(L.value.disk.measuredAt)})),1),L.value.status===`partial`?(i(),y(`span`,D,l(g(c)(`settings.resources.partial`)),1)):u(``,!0),L.value.disk.temporaryBytes?(i(),y(`span`,O,l(g(c)(`settings.resources.temporary`,{value:Z(L.value.disk.temporaryBytes)})),1)):u(``,!0),_(`span`,null,l(g(c)(L.value.exclusions.includes(`shared-container-vm-overhead`)?`settings.resources.exclusionsContainer`:`settings.resources.exclusionsNative`)),1)])],64)):(i(),y(`div`,k))]),I.value?(i(),y(`form`,{key:1,id:`settings-form`,class:`settings-form`,onSubmit:te(tt,[`prevent`])},[_(`section`,A,[_(`header`,j,[_(`h3`,null,l(g(c)(`settings.ports.title`)),1),F.value?.restartRequired?(i(),y(`span`,M,l(g(c)(`settings.restartRequired`)),1)):u(``,!0)]),_(`div`,N,[_(`h4`,null,l(g(c)(`settings.ports.personal`)),1),_(`div`,P,[(i(),y(p,null,t(We,e=>_(`label`,{key:e},[_(`span`,null,l(g(c)(`settings.ports.${e}`)),1),n(_(`input`,{"onUpdate:modelValue":t=>I.value.ports[e]=t,type:`number`,min:`1`,max:`65535`,required:``},null,8,be),[[f,I.value.ports[e],void 0,{number:!0}]]),_(`small`,null,l(g(c)(`settings.ports.active`,{port:lt(e)})),1)])),64))])]),_(`div`,xe,[_(`div`,null,[_(`h4`,null,l(g(c)(`settings.ports.development`)),1),_(`span`,null,l(g(c)(`settings.ports.developing`)),1)]),_(`p`,null,l(g(c)(`settings.ports.developmentMeta`)),1)])]),_(`section`,Se,[_(`h3`,null,l(g(c)(`settings.conversationLaunchers.title`)),1),_(`div`,Ce,[(i(!0),y(p,null,t(g(Ge),t=>(i(),y(`article`,{key:t,class:`conversation-launcher-row`},[_(`div`,we,[_(`span`,null,[_(`strong`,null,l(ct(t)),1),_(`small`,null,l(g(c)(`settings.conversationLaunchers.sourceId`,{id:t})),1)]),_(`label`,Te,[_(`span`,null,l(g(c)(`settings.conversationLaunchers.enabled`)),1),n(_(`input`,{"onUpdate:modelValue":e=>I.value.conversationLaunchers[t].enabled=e,type:`checkbox`,role:`switch`},null,8,Ee),[[d,I.value.conversationLaunchers[t].enabled]])])]),I.value.conversationLaunchers[t].enabled&&t===`codex`?(i(),y(`small`,De,l(g(c)(`settings.conversationLaunchers.idFormatMeta`)),1)):u(``,!0),I.value.conversationLaunchers[t].enabled?(i(),y(`div`,Oe,[_(`label`,null,[_(`span`,null,l(g(c)(`settings.conversationLaunchers.idFormat`)),1),v(S,{modelValue:I.value.conversationLaunchers[t].idFormat,"onUpdate:modelValue":e=>I.value.conversationLaunchers[t].idFormat=e,class:`launcher-select`,"control-id":`settings-conversation-${t}-id-format`,options:Ye.value,label:g(c)(`settings.conversationLaunchers.idFormat`)},null,8,[`modelValue`,`onUpdate:modelValue`,`control-id`,`options`,`label`])]),_(`label`,null,[_(`span`,null,l(g(c)(`settings.conversationLaunchers.appName`)),1),n(_(`input`,{"onUpdate:modelValue":e=>I.value.conversationLaunchers[t].appName=e,type:`text`,maxlength:`64`,required:``},null,8,ke),[[f,I.value.conversationLaunchers[t].appName,void 0,{trim:!0}]])]),_(`label`,Ae,[_(`span`,null,[e(l(g(c)(`settings.conversationLaunchers.urlTemplate`))+` `,1),a[1]||=_(`small`,null,[_(`code`,null,`{id}`)],-1)]),n(_(`input`,{"onUpdate:modelValue":e=>I.value.conversationLaunchers[t].urlTemplate=e,type:`text`,maxlength:`1024`,spellcheck:`false`,required:``},null,8,je),[[f,I.value.conversationLaunchers[t].urlTemplate,void 0,{trim:!0}]])])])):u(``,!0)]))),128))])]),_(`section`,Me,[_(`h3`,null,l(g(c)(`settings.behavior.title`)),1),_(`div`,Ne,[_(`label`,Pe,[_(`span`,null,[_(`strong`,null,l(g(c)(`settings.behavior.capture`)),1),_(`small`,null,l(g(c)(`settings.behavior.captureMeta`)),1)]),_(`input`,{type:`checkbox`,role:`switch`,checked:Xe.value,onChange:rt},null,40,Fe)]),_(`label`,Ie,[_(`span`,null,[_(`strong`,null,l(g(c)(`settings.behavior.agentAccess`)),1),_(`small`,null,l(g(c)(`settings.behavior.agentAccessMeta`)),1)]),_(`input`,{type:`checkbox`,role:`switch`,checked:Ze.value,onChange:it},null,40,Le)]),_(`label`,Re,[_(`span`,null,[_(`strong`,null,l(g(c)(`settings.behavior.lanAccess`)),1),_(`small`,null,l(g(c)(`settings.behavior.lanAccessMeta`)),1)]),n(_(`input`,{"onUpdate:modelValue":a[0]||=e=>I.value.lanAccess=e,type:`checkbox`,role:`switch`},null,512),[[d,I.value.lanAccess]])]),_(`div`,ze,[_(`span`,null,[_(`strong`,null,l(g(c)(`settings.behavior.runtimeMode`)),1),_(`small`,null,l(et.value?g(c)(`settings.behavior.runtimeRecommendation`):g(c)(`settings.behavior.runtimeModeMeta`,{mode:g(c)(`settings.behavior.runtimeModes.${F.value?.active.graphRuntimeMode??I.value.graphRuntimeMode}`)})),1)]),v(S,{class:`settings-select`,"control-id":`settings-runtime-mode`,"model-value":I.value.graphRuntimeMode,options:Je.value,label:g(c)(`settings.behavior.runtimeMode`),"onUpdate:modelValue":st},null,8,[`model-value`,`options`,`label`])]),_(`div`,Be,[_(`span`,null,[_(`strong`,null,l(g(c)(`settings.behavior.language`)),1)]),v(S,{class:`settings-select`,"control-id":`settings-language`,"model-value":G.value,options:Ke.value,label:g(c)(`settings.behavior.language`),"onUpdate:modelValue":at},null,8,[`model-value`,`options`,`label`])]),_(`div`,Ve,[_(`span`,null,[_(`strong`,null,l(g(c)(`settings.resources.refresh`)),1)]),v(S,{class:`settings-select`,"control-id":`settings-refresh-interval`,"model-value":String(I.value.resourceRefreshSeconds),options:qe.value,label:g(c)(`settings.resources.refresh`),"onUpdate:modelValue":ot},null,8,[`model-value`,`options`,`label`])])])]),V.value?(i(),y(`p`,He,l(V.value),1)):u(``,!0)],32)):R.value?u(``,!0):(i(),y(`p`,Ue,l(V.value||g(c)(`settings.loadError`)),1))])],8,ce))}}),[[`__scopeId`,`data-v-63730e70`]]);export{F as default};
@@ -0,0 +1 @@
1
+ import{C as e,F as t,N as n,T as r,V as i,Z as a,_ as o,a as s,at as c,b as l,h as u,nt as d,rt as f,v as p,w as m,x as h,y as g,z as _}from"./i18n-DQH9D35M.js";import{r as v,t as ee}from"./console-B7dWYAoU.js";import{t as y}from"./vue-router-F7MnkVlW.js";import{t as b}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{a as x,i as S,n as te,t as ne}from"./KnowledgeEditDialog-DADXj_BT.js";import{u as re,x as ie}from"./model-zL97NJ-U.js";var ae={class:`view writing-taste-view`},oe={key:1,class:`writing-taste-unavailable`},C={class:`writing-taste-hero__copy`},w={class:`writing-taste-status`},T={class:`writing-taste-hero__score`,"aria-hidden":`true`},E=[`aria-label`],D={"aria-hidden":`true`},O={class:`writing-taste-rules`},k={key:0,class:`writing-taste-rule-list`},A={class:`writing-taste-rule__status`},j={key:0,class:`conflict`},M={class:`writing-taste-rule__body`},N={key:0},P={key:1},F={key:0},I={key:0,class:`writing-taste-rule__actions`},L=[`onClick`],R=[`onClick`],z={key:1,class:`writing-taste-empty`},B={key:0,class:`writing-taste-agent-preview`},V={key:0},H=b(r({__name:`WritingTastePage`,setup(r){let b=ee(),H=a(null),U=a(null),W=a(!1),G=a(null),K=a(null),q=a(!1),J=0,se=S(o(()=>W.value&&!H.value)),Y=o(()=>ie(U.value)),X=o(()=>new Map(Y.value.map(e=>[`${e.itemKind}:${e.id}`,e]))),ce=o(()=>H.value?.status===`active`?s(`writingTaste.page.activeTitle`):H.value?.status===`preview_ready`?s(`writingTaste.page.previewTitle`):s(`writingTaste.page.collectingTitle`)),Z=o(()=>H.value?.status===`active`?s(`writingTaste.page.activeCopy`):H.value?.status===`preview_ready`?s(`writingTaste.page.previewCopy`):s(`writingTaste.page.collectingCopy`));_(()=>b.activePersonalSpace?.id,e=>{e&&Q(e)},{immediate:!0});async function Q(e=b.activePersonalSpace?.id){if(!e)return;let t=++J;W.value=!0;try{let n=new URLSearchParams({personalSpaceId:e,limit:`500`}),r=new URLSearchParams({spaceId:e,limit:`500`}),[i,a]=await Promise.all([v(`/api/writing-taste-profile?${n}`),v(`/api/graph?${r}`)]);if(t!==J)return;H.value=me(i)?i:null,U.value=he(a)?a:null,pe()}catch(e){if(t!==J)return;H.value=null,U.value=null,b.reportError(e)}finally{t===J&&(W.value=!1)}}function $(e){return X.value.get(`${e.item_kind}:${e.item_id}`)??null}function le(e){G.value=$(e)}function ue(e){K.value=$(e)}function de(e){if(e.preference_scope!==`project`||!e.preference_project_id)return s(`writingTaste.page.globalScope`);let t=b.state?.personalProjects?.find(({project_id:t})=>t===e.preference_project_id);return s(`writingTaste.page.projectScope`,{project:t?.profile.name??e.preference_project_id})}function fe(e){return e.key===`conflicts`?s(`writingTaste.criteria.conflictsProgress`,{current:e.current}):s(`writingTaste.criteria.progress`,{current:e.current,target:e.target})}function pe(){G.value&&=X.value.get(`${G.value.itemKind}:${G.value.id}`)??null,K.value&&=X.value.get(`${K.value.itemKind}:${K.value.id}`)??null}function me(e){if(!e||typeof e!=`object`)return!1;let t=e;return[`collecting`,`preview_ready`,`active`].includes(t.status??``)&&!!t.readiness&&Array.isArray(t.rules)}function he(e){if(!e||typeof e!=`object`)return!1;let t=e;return Array.isArray(t.nodes)&&Array.isArray(t.edges)}return(r,a)=>(n(),h(`section`,ae,[m(d(y),{class:`writing-taste-back`,to:`/preferences`},{default:i(()=>[a[5]||=p(`span`,{"aria-hidden":`true`},`←`,-1),e(` `+c(d(s)(`writingTaste.page.back`)),1)]),_:1}),d(se)?(n(),g(x,{key:0,label:d(s)(`writingTaste.page.loading`)},null,8,[`label`])):H.value?(n(),h(u,{key:2},[p(`header`,{class:f([`writing-taste-hero`,`status-${H.value.status}`])},[p(`div`,C,[p(`span`,w,[a[6]||=p(`i`,{"aria-hidden":`true`},null,-1),e(` `+c(d(s)(`writingTaste.status.${H.value.status}`)),1)]),p(`h2`,null,c(ce.value),1),p(`p`,null,c(Z.value),1)]),p(`div`,T,[p(`strong`,null,c(H.value.readiness.rule_count),1),p(`span`,null,`/ `+c(H.value.readiness.thresholds.rule_count),1),p(`small`,null,c(d(s)(`writingTaste.criteria.rules`)),1)])],2),p(`section`,{class:`writing-taste-readiness`,"aria-label":d(s)(`writingTaste.page.readinessAria`)},[(n(!0),h(u,null,t(H.value.readiness.criteria,e=>(n(),h(`article`,{key:e.key,class:f({met:e.met})},[p(`span`,D,c(e.met?`✓`:`·`),1),p(`div`,null,[p(`strong`,null,c(d(s)(`writingTaste.criteria.${e.key}`)),1),p(`small`,null,c(fe(e)),1)])],2))),128))],8,E),p(`section`,O,[p(`header`,null,[p(`h2`,null,c(d(s)(`writingTaste.page.rulesTitle`)),1),p(`span`,null,c(H.value.rules.length),1)]),H.value.rules.length?(n(),h(`div`,k,[(n(!0),h(u,null,t(H.value.rules,e=>(n(),h(`article`,{key:`${e.item_kind}:${e.item_id}`,class:f([`writing-taste-rule`,{"has-conflict":e.has_conflict,"is-hypothesis":e.evidence_status===`Working hypothesis`}])},[p(`div`,A,[p(`span`,{class:f(e.evidence_status.replaceAll(` `,`-`).toLowerCase())},c(d(s)(`writingTaste.evidenceStatus.${e.evidence_status}`)),3),p(`span`,null,c(de(e)),1),e.has_conflict?(n(),h(`span`,j,c(d(s)(`writingTaste.page.conflict`)),1)):l(``,!0)]),p(`div`,M,[p(`h3`,null,c(e.title),1),p(`p`,null,c(e.instruction),1),e.reason?(n(),h(`small`,N,c(e.reason),1)):l(``,!0),e.contexts.length?(n(),h(`small`,P,c(d(s)(`writingTaste.page.contexts`,{contexts:e.contexts.join(`、`)})),1)):l(``,!0)]),p(`footer`,null,[p(`div`,null,[p(`span`,null,c(d(s)(`writingTaste.page.evidence`,{evidence:e.evidence_count})),1),p(`span`,null,c(d(s)(`writingTaste.page.sessions`,{sessions:e.session_count})),1),e.updated_at?(n(),h(`span`,F,c(d(s)(`writingTaste.page.updated`,{time:d(re)(e.updated_at)})),1)):l(``,!0)]),$(e)?(n(),h(`div`,I,[p(`button`,{class:`secondary-action`,type:`button`,onClick:t=>ue(e)},c(d(s)(`writingTaste.page.edit`)),9,L),e.evidence_status===`Confirmed`?l(``,!0):(n(),h(`button`,{key:0,class:`primary-action`,type:`button`,onClick:t=>le(e)},c(d(s)(`writingTaste.page.confirm`)),9,R))])):l(``,!0)])],2))),128))])):(n(),h(`div`,z,c(d(s)(`writingTaste.page.rulesEmpty`)),1))]),H.value.ready&&H.value.agent_markdown?(n(),h(`section`,B,[p(`div`,null,[p(`h2`,null,c(d(s)(`writingTaste.page.agentPreviewTitle`)),1),p(`p`,null,c(d(s)(`writingTaste.page.agentPreviewCopy`)),1)]),p(`button`,{class:`secondary-action`,type:`button`,onClick:a[0]||=e=>q.value=!q.value},c(q.value?d(s)(`writingTaste.page.hideAgentPreview`):d(s)(`writingTaste.page.showAgentPreview`)),1),q.value?(n(),h(`pre`,V,c(H.value.agent_markdown),1)):l(``,!0)])):l(``,!0)],64)):(n(),h(`div`,oe,c(d(s)(`writingTaste.page.profileUnavailable`)),1)),m(ne,{item:K.value,"personal-space-id":d(b).activePersonalSpace?.id??``,"personal-project-id":null,projects:d(b).state?.personalProjects??[],"replacement-items":Y.value,onClose:a[1]||=e=>K.value=null,onSaved:a[2]||=e=>Q()},null,8,[`item`,`personal-space-id`,`projects`,`replacement-items`]),m(te,{item:G.value,"personal-space-id":d(b).activePersonalSpace?.id??``,"personal-project-id":null,onClose:a[3]||=e=>G.value=null,onSaved:a[4]||=e=>Q()},null,8,[`item`,`personal-space-id`])]))}}),[[`__scopeId`,`data-v-c14a3671`]]);export{H as default};
@@ -1 +1 @@
1
- import{Y as e,a as t}from"./i18n-ByRiA3pJ.js";import{r as n}from"./console-DQgu0JIA.js";function r(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=e([]),a=e(!1),o=e(``),s=``,c=null,l=0;function u(e){if(e===s&&c)return c;let t=++l;return e!==s&&(i.value=[]),s=e,o.value=``,e?(a.value=!0,c=n(`/api/employee-templates?${new URLSearchParams({personalSpaceId:e})}`).then(e=>{t===l&&(i.value=Array.isArray(e.templates)?e.templates:[])}).catch(e=>{t===l&&(i.value=[],o.value=d(e))}).finally(()=>{t===l&&(a.value=!1,c=null)}),c):(i.value=[],a.value=!1,Promise.resolve())}function d(e){let n=e instanceof Error?e.message:``;try{let e=JSON.parse(n);return e.code&&[`runtime_unavailable`,`assignment_required`,`project_not_found`,`identity_conflict`,`reactivation_required`,`assignment_scope_conflict`,`assignment_update_incomplete`].includes(e.code)?t(`employees.errors.${e.code}`):e.error||t(`employees.loadError`)}catch{return n||t(`employees.loadError`)}}export{i as a,r as i,a as n,u as o,d as r,o as t};
1
+ import{Z as e,a as t}from"./i18n-DQH9D35M.js";import{r as n}from"./console-B7dWYAoU.js";function r(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=e([]),a=e(!1),o=e(``),s=``,c=null,l=0;function u(e){if(e===s&&c)return c;let t=++l;return e!==s&&(i.value=[]),s=e,o.value=``,e?(a.value=!0,c=n(`/api/employee-templates?${new URLSearchParams({personalSpaceId:e})}`).then(e=>{t===l&&(i.value=Array.isArray(e.templates)?e.templates:[])}).catch(e=>{t===l&&(i.value=[],o.value=d(e))}).finally(()=>{t===l&&(a.value=!1,c=null)}),c):(i.value=[],a.value=!1,Promise.resolve())}function d(e){let n=e instanceof Error?e.message:``;try{let e=JSON.parse(n);return e.code&&[`runtime_unavailable`,`assignment_required`,`project_not_found`,`identity_conflict`,`reactivation_required`,`assignment_scope_conflict`,`assignment_update_incomplete`].includes(e.code)?t(`employees.errors.${e.code}`):e.error||t(`employees.loadError`)}catch{return n||t(`employees.loadError`)}}var f={jefa:`/assets/jefa-avatar-Dew42td5.webp`};function p(e){return f[e]}export{r as a,d as i,o as n,i as o,a as r,u as s,p as t};
@@ -0,0 +1 @@
1
+ import{$ as e,A as t,D as n,G as r,J as i,K as a,O as o,U as s,W as c,Y as l,Z as u,_ as d,a as f,et as p,q as m,tt as h,z as g}from"./i18n-DQH9D35M.js";var _=typeof window<`u`,v,y=e=>v=e,b=Symbol();function x(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var S=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null};function C(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function w(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){k(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function T(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function E(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var D=typeof navigator==`object`?navigator:{userAgent:``},O=/Macintosh/.test(D.userAgent)&&/AppleWebKit/.test(D.userAgent)&&!/Safari/.test(D.userAgent),k=_?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!O?A:`msSaveOrOpenBlob`in D?j:M:()=>{};function A(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?E(r):T(r.href)?w(e,t,n):(r.target=`_blank`,E(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){E(r)},0))}function j(e,t=`download`,n){if(typeof e==`string`)if(T(e))w(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){E(t)})}else navigator.msSaveOrOpenBlob(C(e,n),t)}function M(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return w(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(S.HTMLElement))||`safari`in S,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||O)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:ee}=Object;function N(){let e=s(!0),t=e.run(()=>u({})),n=[],r=[],i=m({install(e){y(i),i._a=e,e.provide(b,i),e.config.globalProperties.$pinia=i,r.forEach(e=>n.push(e)),r=[]},use(e){return this._a?n.push(e):r.push(e),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return i}var P=()=>{};function F(e,t,n,r=P){e.add(t);let a=()=>{e.delete(t)&&r()};return!n&&c()&&i(a),a}function I(e,...t){e.forEach(e=>{e(...t)})}var L=e=>e(),R=Symbol(),z=Symbol();function B(e,t){e instanceof Map&&t instanceof Map?t.forEach((t,n)=>e.set(n,t)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(let n in t){if(!Object.hasOwn(t,n))continue;let i=t[n],o=e[n];x(o)&&x(i)&&Object.hasOwn(e,n)&&!a(i)&&!r(i)?e[n]=B(o,i):e[n]=i}return e}var V=Symbol();function H(e){return!e||typeof e!=`object`||!Object.hasOwn(e,V)}var{assign:U}=Object;function W(e){return!!(a(e)&&e.effect)}function G(e,t,n,r){let{state:i,actions:a,getters:o}=t,s=n.state.value[e],c;function l(){return s||(n.state.value[e]=i?i():{}),U(h(n.state.value[e]),a,Object.keys(o||{}).reduce((t,r)=>(t[r]=m(d(()=>{y(n);let t=n._s.get(e);return o[r].call(t,t)})),t),{}))}return c=K(e,l,t,n,r,!0),c}function K(e,n,i={},o,c,u){let d,f=U({actions:{}},i),m={deep:!0},h,_,v=new Set,b=new Set,x=o.state.value[e];!u&&!x&&(o.state.value[e]={});let S;function C(n){let r;h=_=!1,typeof n==`function`?(n(o.state.value[e]),r={type:`patch function`,storeId:e,events:void 0}):(B(o.state.value[e],n),r={type:`patch object`,payload:n,storeId:e,events:void 0});let i=S=Symbol();t().then(()=>{S===i&&(h=!0)}),_=!0,I(v,r,o.state.value[e])}let w=u?function(){let{state:e}=i,t=e?e():{};this.$patch(e=>{U(e,t)})}:P;function T(){d.stop(),v.clear(),b.clear(),o._s.delete(e)}let E=(t,n=``)=>{if(R in t)return t[z]=n,t;let r=function(){y(o);let n=Array.from(arguments),i=new Set,a=new Set;function s(e){i.add(e)}function c(e){a.add(e)}I(b,{args:n,name:r[z],store:D,after:s,onError:c});let l;try{l=t.apply(this&&this.$id===e?this:D,n)}catch(e){throw I(a,e),e}return l instanceof Promise?l.then(e=>(I(i,e),e)).catch(e=>(I(a,e),Promise.reject(e))):(I(i,l),l)};return r[R]=!0,r[z]=n,r},D=l({_p:o,$id:e,$onAction:F.bind(null,b),$patch:C,$reset:w,$subscribe(t,n={}){if(v.has(t))return P;let r=F(v,t,n.detached,()=>i()),i=d.run(()=>g(()=>o.state.value[e],r=>{(n.flush===`sync`?_:h)&&t({storeId:e,type:`direct`,events:void 0},r)},U({},m,n)));return r},$dispose:T});o._s.set(e,D);let O=(o._a&&o._a.runWithContext||L)(()=>o._e.run(()=>(d=s()).run(()=>n({action:E}))));for(let t in O){let n=O[t];a(n)&&!W(n)||r(n)?u||(x&&H(n)&&(a(n)?n.value=x[t]:B(n,x[t])),o.state.value[e][t]=n):typeof n==`function`&&(O[t]=E(n,t),f.actions[t]=n)}return U(D,O),U(p(D),O),Object.defineProperty(D,"$state",{get:()=>o.state.value[e],set:e=>{C(t=>{U(t,e)})}}),o._p.forEach(e=>{let t=d.run(()=>e({store:D,app:o._a,pinia:o,options:f}));U(D,t)}),x&&u&&i.hydrate&&i.hydrate(D.$state,x),h=!0,_=!0,D}function q(e,t,r){let i,a=typeof t==`function`;i=a?r:t;function s(r,s){let c=n();return r||=c?o(b,null):null,r&&y(r),r=v,r._s.has(e)||(a?K(e,t,i,r):G(e,i,r)),r._s.get(e)}return s.$id=e,s}var J=class extends Error{status;constructor(e,t){super(e),this.name=`ApiError`,this.status=t}};async function Y(e,t){let n=await fetch(e,t);if(!n.ok)throw new J((await n.text()).trim()||f(`common.errors.requestFailed`,{status:n.status}),n.status);return n.json()}function X(e,t){return Y(e,t)}function Z(e,t){return Y(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function Q(e,t){return Y(e,{method:`PUT`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function $(e,t){return Y(e,{method:`PATCH`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}function te(e){return Y(e,{method:`DELETE`})}var ne=q(`console`,()=>{let t=e(null),n=u(`idle`),r=u(null),i=d(()=>{let e=t.value;return e?e.personalSpaces.find(({id:t})=>t===e.activePersonalSpaceId)??e.personalSpaces[0]??null:null}),a=d(()=>t.value?.mode===`connected`?`ready`:t.value?.mode===`degraded`?`error`:`disconnected`);async function o(){n.value=`loading`;try{t.value=await X(`/api/state`),n.value=`ready`}catch(e){n.value=`error`,m(e)}}async function s(e){try{let n=await $(`/api/capture-policy`,{enabled:e});t.value&&={...t.value,capturePolicy:n},p(f(e?`console.captureNotices.enabled`:`console.captureNotices.disabled`))}catch(e){m(e)}}async function c(e){try{let n=await $(`/api/agent-access-policy`,{enabled:e});t.value&&={...t.value,agentAccessPolicy:n},p(f(e?`console.agentAccess.enabledNotice`:`console.agentAccess.disabledNotice`))}catch(e){m(e)}}function l(e){return t.value?.capabilities?.[e]===!0}function p(e){r.value={message:e,tone:`success`}}function m(e){r.value={message:e instanceof Error?e.message:f(`common.errors.operationFailed`),tone:`error`}}function h(){r.value=null}return{state:t,runtimeStatus:n,feedback:r,activePersonalSpace:i,publicRuntimeStatus:a,refresh:o,updateCapturePolicy:s,updateAgentAccessPolicy:c,hasCapability:l,notify:p,reportError:m,clearFeedback:h}});export{Z as a,$ as i,te as n,Q as o,X as r,N as s,ne as t};
@@ -1 +1 @@
1
- import{J as e,Z as t,a as n}from"./i18n-ByRiA3pJ.js";import{r}from"./console-DQgu0JIA.js";var i=[`codex`,`claude`,`claude_code`,`cursor`,`gemini_cli`,`kiro`,`other`],a={codex:`Codex`,claude:`Claude`,claude_code:`Claude Code`,cursor:`Cursor`,gemini_cli:`Gemini CLI`,kiro:`Kiro`,other:`Other Agent`},o=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,s=/^[^\u0000-\u001f\u007f]{1,512}$/,c=new Set([`about`,`blob`,`data`,`file`,`javascript`]),l={codex:{enabled:!0,idFormat:`uuid`,appName:`Codex`,urlTemplate:`codex://threads/{id}`},claude:{enabled:!1,idFormat:`any`,appName:`Claude`,urlTemplate:``},claude_code:{enabled:!1,idFormat:`any`,appName:`Claude Code`,urlTemplate:``},cursor:{enabled:!1,idFormat:`any`,appName:`Cursor`,urlTemplate:``},gemini_cli:{enabled:!1,idFormat:`any`,appName:`Gemini CLI`,urlTemplate:``},kiro:{enabled:!1,idFormat:`any`,appName:`Kiro`,urlTemplate:``},other:{enabled:!1,idFormat:`any`,appName:`Other Agent`,urlTemplate:``}};function u(e={}){let t=e.source_application?.trim().toLocaleLowerCase().replaceAll(`-`,`_`).replaceAll(` `,`_`);if(t&&a[t])return t;let n=`${e.source_kind??``} ${e.source_description??``}`.toLocaleLowerCase();return n.includes(`claude`)?`claude_code`:n.includes(`cursor`)?`cursor`:n.includes(`gemini`)?`gemini_cli`:n.includes(`kiro`)?`kiro`:n.includes(`codex`)?`codex`:`other`}function d(e){let t=u(e);return t===`other`?n(`knowledge.domain.actors.otherAgent`):a[t]}function f(e){return a[e]}function p(e={},t=l){if(m(e,t)!==`available`)return null;let n=t[u(e)],r=e.session_id.trim();return n.urlTemplate.replace(`{id}`,encodeURIComponent(r))}function m(e={},t=l){let n=t[u(e)];return n?.enabled?_(e.session_id?.trim()??``,n.idFormat)?v(n.urlTemplate)?`available`:`invalid_template`:`invalid_id`:`disabled`}function h(e={},t=l){let n=t[u(e)];return n?.enabled&&n.appName.trim()?n.appName.trim():null}async function g(e={},t=globalThis.navigator?.clipboard){return!e.session_id||!t?.writeText?!1:(await t.writeText(e.session_id),!0)}function _(e,t){return s.test(e)?t===`any`||o.test(e):!1}function v(e){if(e.split(`{id}`).length!==2||/\s/.test(e))return!1;let t=/^([a-z][a-z0-9+.-]*):/i.exec(e)?.[1]?.toLocaleLowerCase();return!!t&&!c.has(t)}var y=t(w(l)),b=null;function x(){return C(),e(y)}function S(e){y.value=w(e)}function C({force:e=!1}={}){return!e&&b||(b=r(`/api/system/settings`).then(e=>{S(e.configured.conversationLaunchers)}).catch(()=>void 0)),b}function w(e){return Object.fromEntries(i.map(t=>[t,{...l[t],...e?.[t]??{}}]))}export{d as a,p as c,g as i,x as n,f as o,i as r,h as s,S as t};
1
+ import{$ as e,X as t,a as n}from"./i18n-DQH9D35M.js";import{r}from"./console-B7dWYAoU.js";var i=[`codex`,`claude`,`claude_code`,`cursor`,`gemini_cli`,`kiro`,`other`],a={codex:`Codex`,claude:`Claude`,claude_code:`Claude Code`,cursor:`Cursor`,gemini_cli:`Gemini CLI`,kiro:`Kiro`,other:`Other Agent`},o=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,s=/^[^\u0000-\u001f\u007f]{1,512}$/,c=new Set([`about`,`blob`,`data`,`file`,`javascript`]),l={codex:{enabled:!0,idFormat:`uuid`,appName:`Codex`,urlTemplate:`codex://threads/{id}`},claude:{enabled:!1,idFormat:`any`,appName:`Claude`,urlTemplate:``},claude_code:{enabled:!1,idFormat:`any`,appName:`Claude Code`,urlTemplate:``},cursor:{enabled:!1,idFormat:`any`,appName:`Cursor`,urlTemplate:``},gemini_cli:{enabled:!1,idFormat:`any`,appName:`Gemini CLI`,urlTemplate:``},kiro:{enabled:!1,idFormat:`any`,appName:`Kiro`,urlTemplate:``},other:{enabled:!1,idFormat:`any`,appName:`Other Agent`,urlTemplate:``}};function u(e={}){let t=e.source_application?.trim().toLocaleLowerCase().replaceAll(`-`,`_`).replaceAll(` `,`_`);if(t&&a[t])return t;let n=`${e.source_kind??``} ${e.source_description??``}`.toLocaleLowerCase();return n.includes(`claude`)?`claude_code`:n.includes(`cursor`)?`cursor`:n.includes(`gemini`)?`gemini_cli`:n.includes(`kiro`)?`kiro`:n.includes(`codex`)?`codex`:`other`}function d(e){let t=u(e);return t===`other`?n(`knowledge.domain.actors.otherAgent`):a[t]}function f(e){return a[e]}function p(e={},t=l){if(m(e,t)!==`available`)return null;let n=t[u(e)],r=e.session_id.trim();return n.urlTemplate.replace(`{id}`,encodeURIComponent(r))}function m(e={},t=l){let n=t[u(e)];return n?.enabled?_(e.session_id?.trim()??``,n.idFormat)?v(n.urlTemplate)?`available`:`invalid_template`:`invalid_id`:`disabled`}function h(e={},t=l){let n=t[u(e)];return n?.enabled&&n.appName.trim()?n.appName.trim():null}async function g(e={},t=globalThis.navigator?.clipboard){return!e.session_id||!t?.writeText?!1:(await t.writeText(e.session_id),!0)}function _(e,t){return s.test(e)?t===`any`||o.test(e):!1}function v(e){if(e.split(`{id}`).length!==2||/\s/.test(e))return!1;let t=/^([a-z][a-z0-9+.-]*):/i.exec(e)?.[1]?.toLocaleLowerCase();return!!t&&!c.has(t)}var y=e(w(l)),b=null;function x(){return C(),t(y)}function S(e){y.value=w(e)}function C({force:e=!1}={}){return!e&&b||(b=r(`/api/system/settings`).then(e=>{S(e.configured.conversationLaunchers)}).catch(()=>void 0)),b}function w(e){return Object.fromEntries(i.map(t=>[t,{...l[t],...e?.[t]??{}}]))}export{d as a,p as c,g as i,x as n,f as o,i as r,h as s,S as t};
@@ -6,4 +6,4 @@ var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],en
6
6
  交互设计
7
7
  可用性审查`,preferencesPlaceholder:`每行一项,仅用于初始协作方式。`,idLocked:`创建后 Agent ID 不可修改;项目通过独立分配管理。`,allowListPlaceholder:`每行一个真实 executor ID;不填写不会猜测可用项。`,required:`请填写 Agent ID、名称和负责范围。`,occupationEmojiInvalid:`职业 emoji 只能填写一个 emoji。`,spaceUnavailable:`当前空间不可用,无法保存 Agent。`,initialAssignmentReason:`从 Agent 名录创建首条项目分配`,projectUnavailable:`所选项目已不可用,请重新选择。`,duplicate:`能力与启动约定不能包含重复项。`,saveFailed:`项目 Agent 保存失败。`},assignmentDialog:{assign:`分配项目`,end:`解除`,replace:`替换`,assignTitle:`分配项目职责`,endTitle:`解除项目分配`,replaceTitle:`替换项目 Agent`,replacement:`替换为`,replacementPlaceholder:`选择已有 Agent`,workKinds:`工作类型`,workKindsPlaceholder:`每行一项`,reasonPlaceholder:`记录分配、解除或替换原因。`,required:`请填写职责和原因。`,replacementRequired:`请选择替换 Agent。`,saveAssign:`保存分配`,saveChange:`保存变更`,saveFailed:`项目分配保存失败。`}},"en-US":{aria:`Project Agent directory`,title:`Agents`,listLabel:`Space Agent list`,notReported:`Not reported`,noToolsUsed:`No tools used`,allProjects:`All projects`,projectFilter:`Project scope`,searchLabel:`Search Agents`,searchPlaceholder:`Search name, ID, responsibility, or capability`,add:`Add Agent`,edit:`Edit`,saved:`Project Agent saved.`,retry:`Reload`,loading:`Loading project Agents…`,loadError:`Project Agents are temporarily unavailable.`,emptyTitle:`No project Agents yet`,emptyCopy:`Add an Agent to record its responsibilities and capabilities.`,noMatchTitle:`No matching Agents`,noMatchCopy:`Change the project, status, or search filters.`,stats:{total:`{count} Agents`,active:`{count} available`,assignments:`{count} assignments`,projects:`Across {count} projects`,noOnlineClaim:`Configured status is not online or execution evidence; both require a real report`},coordination:{aria:`Agent collaboration policy for {project}`,title:`Project collaboration`,loading:`Loading project policy…`,autoReuse:`Reuse the previous Agent`,autoReuseMeta:`Prefer the last effective lead Agent for new tasks; turn off to require a manual {'@'}Agent.`,askBeforeRecruitment:`Ask before adding an Agent`,askBeforeRecruitmentMeta:`When no Agent can be reused, wait for confirmation before creating one.`,saving:`Saving…`,saved:`Project policy saved.`,loadFailed:`Project policy is temporarily unavailable.`,saveFailed:`Project policy could not be saved.`},agentType:{coordinator:`Coordinator`,durable:`Durable`,hr:`HR`,temporary:`Temporary`},status:{all:`All statuses`,active:`Available`,inactive:`Inactive`,archived:`Archived`},assignmentStatus:{active:`Assigned`,ended:`Ended`,unassigned:`Unassigned`,replaced:`Replaced`},taskStatus:{awaiting_recruitment:`Awaiting recruitment`,queued:`Queued`,running:`Running`,paused:`Paused`,failed:`Failed`,awaiting_review:`Awaiting review`,completed:`Completed`,cancelled:`Cancelled`,blocked:`Blocked`,idle:`Idle`},fields:{project:`Project`,agentId:`Agent ID`,name:`Name`,occupationEmoji:`Occupation emoji`,responsibility:`Responsibility`,capabilities:`Capabilities`,initialPreferences:`Startup conventions`,status:`Status`,updatedAt:`Last updated`,agentType:`Identity type`,defaultModelStrategy:`Default model strategy`,executorPolicy:`Executor policy`,selectionMode:`Selection mode`,modelIntent:`Provider-neutral intent`,allowList:`Locked allow-list`,assignments:`Assignments`,memoryScope:`Memory boundary`,scope:`Scope`,assignmentModel:`Assignment strategy`,reasoning:`Reasoning effort`,hints:`Capability hints`,collaborators:`Collaborators`,actualExecution:`Actual execution`,executionSummary:`Execution summary`,workerEventEvidence:`Worker event evidence`,reportedStaffingDecision:`Reported staffing decision`,executionEnvironment:`Execution environment`,toolsUsed:`Tools used`,executorId:`Executor ID`,sourceApplication:`Source application`,sourceSession:`Source session`,workerSession:`Worker session`,reporterSession:`Reporting session`,tokenUsage:`Token usage`,reportedAt:`Reported at`,participantRole:`Role`,workSummary:`Work summary`,terminalStatus:`Terminal status`,actualModel:`Actual model`,worker:`Worker`,coordinator:`Coordinator Agent`,candidateAgents:`Candidate Agents`,complexity:`Complexity`,complexityBasis:`Complexity basis`,parallelPlan:`Parallel plan`,run:`Run`,recruitment:`Recruitment source`,strategySource:`Strategy source`,reason:`Reason`,routingDecision:`Routing decision`,matchBasis:`Match basis`},participantRoles:{lead:`Lead`,collaborator:`Collaborator`},sections:{assignments:`Project assignments & history`,strategy:`Model strategy & executors`,tasks:`Tasks & collaboration`,activity:`Contribution activity`,clients:`Clients`,routing:`Routing rules`,learning:`Candidate evidence`,memory:`Memory & review boundary`,recruitment:`Recruitment events`},detail:{choose:`Select an Agent to inspect its responsibilities`,capabilitiesEmpty:`No capabilities recorded`,preferencesEmpty:`No startup conventions recorded`,preferencesNote:`Startup conventions are profile configuration, not confirmed long-term memory.`,noRun:`No run recorded`,stateReported:`State reported; run evidence is not reported`,refresh:`Refresh verified data`,refreshing:`Reading…`,unreported:`Task, activity, or client state was not reported.`,notLoaded:`Verified data for this section has not been loaded.`,loadingSection:`Reading verified data for this section…`,sectionUnavailable:`Verified data for this section is temporarily unavailable.`,noAssignments:`No project assignments reported.`,noTasks:`No task history.`,noExecutionSummary:`No real participating executor was reported.`,notReportedActualExecution:`Actual execution evidence was not reported.`,memoryNote:`This links to FULI boundaries; it does not create a second Agent memory system.`},strategy:{flexible:`flexible`,locked:`locked`,providerNeutral:`The default strategy is provider-neutral; executor, model, and connection state are never inferred.`,noAllowList:`No locked allow-list; executor availability is not reported.`,lockedUnavailable:`The locked allow-list has no reported usable item: show blocked/queued only, never a fabricated run.`,availabilityUnreported:`Availability not reported`,actualUnreported:`Actual use not reported`},activity:{aria:`Daily contribution activity`,empty:`No verified completed, failed, or cancelled history.`,noTasks:`No task summary for this day.`},clients:{codex:`Codex`,claude:`Claude`,claude_code:`Claude Code`,cursor:`Cursor`,gemini_cli:`Gemini CLI`,kiro:`Kiro`,other:`Other client`,allowed:`Allowed`,notAllowed:`Not allowed`,observed:`{count} observed calls`,observedAny:`Observed use reported`,unreported:`Actual use not reported`,integrationUnreported:`Integration status not reported`,empty:`Allowed clients, observed use, and integration status are not reported.`},tokenSources:{executor:`Executor`,host:`Host`,dingdong:`DingDong`},routing:{empty:`No routing rules configured.`,priorityNote:`Only reported rules are shown; no global, space, project, or task mapping is created by default.`,addExecutor:`Register executor`,editExecutor:`Edit executor`,addRule:`Add rule`,disable:`Disable`,updateFailed:`Could not update the routing rule.`,authorize:`Authorize`,revoke:`Revoke authorization`,authorizeReason:`Console authorized executor`,revokeReason:`Console revoked executor authorization`,authorizationFailed:`Could not update executor authorization.`,editor:{executorCreateTitle:`Register executor`,executorEditTitle:`Edit executor`,ruleCreateTitle:`Add routing rule`,executorId:`Executor ID`,displayName:`Display name`,executorKind:`Kind`,priority:`Global priority`,capabilities:`Capabilities`,healthRequired:`Require health check`,scope:`Rule scope`,taskId:`Task ID`,workKind:`Work kind`,executorIds:`Allowed executor IDs`,executorIdsPlaceholder:`One real executor ID per line`,requiredCapabilities:`Required capabilities`,evidenceNote:`Authorization, preflight, and health are backend evidence; this form never infers a connection.`,ruleNote:`Rules only affect candidate matching; they do not change an Agent locked policy.`,executorRequired:`Enter an executor ID, name, and valid priority.`,ruleRequired:`Enter a work kind, executor ID, and reason.`,save:`Save`,saveFailed:`Could not save the directory entry or rule.`}},learning:{neutral:`Neutral`,recorded:`Evidence recorded`,samples:`{count} samples`,recent:`{count} recent weighted`,score:`Reported score {score}`,decayUnreported:`Decay basis not reported`,ignore:`Ignore`,reset:`Reset`,resetUnavailable:`Project, work-kind, or executor evidence is missing; reset is unavailable.`,updateFailed:`Could not update learning evidence.`,empty:`No real learning evidence; no score or candidate preference is shown.`,note:`Only assists peer candidate comparison; it never overrides locked strategy or explicit preferences. Low evidence remains neutral.`},source:{testRole:`Test role`,cleanup:`Clean up test role`,cleanupFailed:`Could not clean up the test role.`},recruitment:{hr:`HR Agent`,trigger:`Trigger client`,reason:`Recruitment reason`,time:`Time`,testSource:`Test source`,empty:`No matching real recruitment record.`,policy:`Recruitment confirmation`,automatic:`Automatic recruitment`,requireConfirmation:`Require confirmation`,policyUpdateFailed:`Could not update recruitment confirmation policy.`,approve:`Approve`,cancel:`Cancel`,approveReason:`User approved recruitment event`,cancelReason:`User cancelled recruitment event`,decisionFailed:`Could not process the recruitment event.`},dialog:{createTitle:`Add project Agent`,editTitle:`Edit project Agent`,saveCreate:`Create Agent`,saveEdit:`Save changes`,projectPlaceholder:`Select a project`,agentIdPlaceholder:`For example, design-agent`,namePlaceholder:`For example, Design Agent`,occupationEmojiPlaceholder:`For example, 🎛️`,responsibilityPlaceholder:`Describe the work assigned to this Agent.`,capabilitiesPlaceholder:`One per line, for example:
8
8
  Interaction design
9
- Usability review`,preferencesPlaceholder:`One per line, used only to initialize collaboration.`,idLocked:`The Agent ID is stable after creation; projects are managed as separate assignments.`,allowListPlaceholder:`One real executor ID per line; availability is never inferred.`,required:`Agent ID, name, and responsibility are required.`,occupationEmojiInvalid:`Occupation emoji must contain only emoji characters.`,spaceUnavailable:`The current space is unavailable; the Agent cannot be saved.`,initialAssignmentReason:`Initial project assignment from the Agent directory`,projectUnavailable:`The selected project is no longer available. Choose another project.`,duplicate:`Capabilities and startup conventions cannot contain duplicates.`,saveFailed:`Could not save the project Agent.`},assignmentDialog:{assign:`Assign project`,end:`Unassign`,replace:`Replace`,assignTitle:`Assign project responsibility`,endTitle:`Unassign project`,replaceTitle:`Replace project Agent`,replacement:`Replace with`,replacementPlaceholder:`Select an existing Agent`,workKinds:`Work kinds`,workKindsPlaceholder:`One per line`,reasonPlaceholder:`Record why this assignment changed.`,required:`Responsibility and reason are required.`,replacementRequired:`Choose a replacement Agent.`,saveAssign:`Save assignment`,saveChange:`Save change`,saveFailed:`Could not save the project assignment.`}}},Jm={"zh-CN":{overview:{title:`概览`},preferences:{title:`协作偏好`,description:`个人全局与项目级的品味、个性和判断偏好,只保存在本机。`},writingTaste:{title:`写作偏好`},personalProjects:{title:`个人项目`,description:`本机私有项目、项目知识与按任务生效的协作偏好。`},projectAgents:{title:`项目 Agent`},employeeWorkbench:{title:`专属 Agent`},loadFailure:{title:`暂时无法打开页面`,resources:`页面文件加载失败,可能是界面已更新或服务暂时断开。当前内容仍然保留。`,message:`页面未能加载,当前内容仍然保留。可以重新载入,或继续使用当前页面。`,reload:`重新载入并打开`,dismiss:`留在当前页`},organizer:{title:`知识整理`},publicProjects:{title:`公共项目`,description:`发现、订阅和维护公共 Provider 上的项目。`},knowledge:{title:`知识库`},about:{title:`说明`},settings:{title:`设置`},review:{title:`发布审核`,description:`个人发布确认与公共项目 Maintainer 审核。`},connections:{title:`服务连接`,description:`本地知识库状态、公共 Provider 与项目订阅。`}},"en-US":{overview:{title:`Overview`},preferences:{title:`Collaboration preferences`,description:`Global and project-specific taste, personality, and judgment preferences stored only on this device.`},writingTaste:{title:`Writing taste`},personalProjects:{title:`Personal projects`,description:`Private local projects, project knowledge, and task-scoped collaboration preferences.`},projectAgents:{title:`Project Agents`},employeeWorkbench:{title:`Specialist Agents`},loadFailure:{title:`This page could not open`,resources:`Page files could not load. The app may have updated or disconnected. Your current page is unchanged.`,message:`The page could not load. Your current page is unchanged. Reload to try again or stay here.`,reload:`Reload and open`,dismiss:`Stay here`},organizer:{title:`Knowledge organizer`},publicProjects:{title:`Public projects`,description:`Discover, subscribe to, and maintain projects on a public Provider.`},knowledge:{title:`Knowledge base`},about:{title:`About`},settings:{title:`Settings`},review:{title:`Publishing review`,description:`Personal publishing confirmation and public project Maintainer review.`},connections:{title:`Service connections`,description:`Local knowledge status, public Providers, and project subscriptions.`}}},Ym={"zh-CN":{aria:`设置`,resources:{title:`资源占用`,memory:`内存`,disk:`硬盘`,available:`电脑可用 {value}`,partial:`部分组件暂时无法读取`,measuredAt:`内存更新于 {time}`,diskMeasuredAt:`硬盘更新于 {time}`,refresh:`刷新频率`,refreshUnit:`{seconds} 秒`,temporary:`其中 Neo4j 临时文件 {value}`,exclusionsContainer:`不含浏览器标签页及 Docker 共享虚拟机开销。`,exclusionsNative:`不含浏览器标签页内存。原生进程已计入。`,unavailable:`暂时无法获取资源数据`,components:{console:`管理服务`,personalProvider:`个人 Provider`,personalNeo4j:`个人 Neo4j`,workspaceProvider:`开发公共 Provider`,workspaceNeo4j:`开发公共 Neo4j`,application:`程序文件`,localData:`本地运行数据`,containerImages:`容器镜像`,containerWritable:`容器运行数据`,neo4jData:`Neo4j 数据`,neo4jLogs:`Neo4j 日志`}},ports:{title:`服务端口`,personal:`个人服务`,development:`公共服务`,developing:`开发中`,developmentMeta:`fuli-server 发布后,可配置已部署服务的域名。`,console:`管理界面`,personalProvider:`个人 Provider`,personalNeo4jHttp:`个人 Neo4j Browser`,personalNeo4jBolt:`个人 Neo4j Bolt`,workspaceProvider:`公共 Provider`,workspaceNeo4jHttp:`公共 Neo4j Browser`,workspaceNeo4jBolt:`公共 Neo4j Bolt`,active:`当前 {port}`},behavior:{title:`运行设置`,capture:`自动沉淀`,captureMeta:`把新的稳定会话知识写入本机`,agentAccess:`Agent 使用`,agentAccessMeta:`允许已连接的 Agent 调用 FULI`,lanAccess:`局域网访问`,lanAccessMeta:`允许同一可信网络中的设备访问管理界面`,runtimeMode:`图数据库运行方式`,runtimeModeMeta:`当前运行:{mode};保存后重启生效`,runtimeRecommendation:`本机内存较小,推荐原生模式,避免虚拟机常驻内存`,runtimeModes:{native:`原生(低内存)`,container:`容器(兼容)`},language:`界面语言`,zh:`简体中文`,en:`English`},conversationLaunchers:{title:`会话打开方式`,enabled:`启用`,sourceId:`来源 ID · {id}`,idFormat:`可打开的 ID`,appName:`打开 App`,urlTemplate:`链接模板`,idFormats:{any:`任意非空 ID`,uuid:`仅 UUID`},idFormatMeta:`Codex 深链要求原生会话 UUID;其他来源可按其支持的 ID 格式配置。`,applications:{codex:`Codex`,claude:`Claude`,claude_code:`Claude Code`,cursor:`Cursor`,gemini_cli:`Gemini CLI`,kiro:`Kiro`,other:`其他 Agent`}},save:`保存设置`,saving:`正在保存`,saved:`设置已保存`,restartRequired:`需要重启`,restartCopy:`端口或局域网设置将在运行 fuli restart 后生效。`,loadError:`无法读取设置`,saveError:`无法保存设置`},"en-US":{aria:`Settings`,resources:{title:`Resource usage`,memory:`Memory`,disk:`Disk`,available:`{value} available on this device`,partial:`Some components are temporarily unavailable`,measuredAt:`Memory updated {time}`,diskMeasuredAt:`Disk updated {time}`,refresh:`Refresh interval`,refreshUnit:`{seconds} seconds`,temporary:`{value} is Neo4j temporary data`,exclusionsContainer:`Browser tabs and shared Docker VM overhead are excluded.`,exclusionsNative:`Browser-tab memory is excluded. Native processes are included.`,unavailable:`Resource data is temporarily unavailable`,components:{console:`Management service`,personalProvider:`Personal Provider`,personalNeo4j:`Personal Neo4j`,workspaceProvider:`Development public Provider`,workspaceNeo4j:`Development public Neo4j`,application:`Application files`,localData:`Local runtime data`,containerImages:`Container images`,containerWritable:`Container runtime data`,neo4jData:`Neo4j data`,neo4jLogs:`Neo4j logs`}},ports:{title:`Service ports`,personal:`Personal services`,development:`Public service`,developing:`In development`,developmentMeta:`Configure the deployed server domain after fuli-server is published.`,console:`Management UI`,personalProvider:`Personal Provider`,personalNeo4jHttp:`Personal Neo4j Browser`,personalNeo4jBolt:`Personal Neo4j Bolt`,workspaceProvider:`Public Provider`,workspaceNeo4jHttp:`Public Neo4j Browser`,workspaceNeo4jBolt:`Public Neo4j Bolt`,active:`Active: {port}`},behavior:{title:`Runtime settings`,capture:`Automatic capture`,captureMeta:`Write new, stable conversation knowledge to this device`,agentAccess:`Agent access`,agentAccessMeta:`Allow connected Agents to use FULI`,lanAccess:`LAN access`,lanAccessMeta:`Allow devices on the same trusted network to open the console`,runtimeMode:`Graph database runtime`,runtimeModeMeta:`Active: {mode}; restart after saving to apply`,runtimeRecommendation:`Native mode is recommended on this low-memory device to avoid VM overhead`,runtimeModes:{native:`Native (low memory)`,container:`Container (compatible)`},language:`Interface language`,zh:`简体中文`,en:`English`},conversationLaunchers:{title:`Conversation openers`,enabled:`Enabled`,sourceId:`Source ID · {id}`,idFormat:`Allowed IDs`,appName:`Open with app`,urlTemplate:`URL template`,idFormats:{any:`Any non-empty ID`,uuid:`UUID only`},idFormatMeta:`Codex deep links require the native conversation UUID; configure other sources to match their supported IDs.`,applications:{codex:`Codex`,claude:`Claude`,claude_code:`Claude Code`,cursor:`Cursor`,gemini_cli:`Gemini CLI`,kiro:`Kiro`,other:`Other Agent`}},save:`Save settings`,saving:`Saving`,saved:`Settings saved`,restartRequired:`Restart required`,restartCopy:`Port and LAN changes apply after running fuli restart.`,loadError:`Could not load settings`,saveError:`Could not save settings`}},Xm={"zh-CN":{status:{collecting:`收集中`,preview_ready:`初稿已形成`,active:`已启用`},milestone:{aria:`写作偏好成熟度`,collectingTitle:`写作偏好正在形成`,collectingCopy:`积累到足够稳定后,这里会出现你的写作偏好初稿。`,previewTitle:`你的写作偏好初稿已形成`,activeTitle:`你的写作偏好已形成`,readyCopy:`查看 Agent 目前如何理解你的写作方式,并确认或修改每条规则。`,rules:`{current}/{target} 条规则`,sessions:`{current}/{target} 次会话`,open:`查看写作偏好`},page:{loading:`正在整理写作偏好`,back:`返回协作偏好`,collectingTitle:`还在收集写作偏好`,collectingCopy:`画像会在证据跨越多个会话和日期,或你明确确认足够多规则后生成。`,previewTitle:`写作偏好初稿`,previewCopy:`这些规律已有重复证据,但仍需要你的确认。`,activeTitle:`你的写作偏好`,activeCopy:`Agent 会使用已确认和已观察的规则;当前请求始终优先。`,readinessAria:`写作偏好生成条件`,rulesTitle:`当前规则`,rulesEmpty:`还没有识别到写作相关偏好。`,profileUnavailable:`暂时无法读取写作偏好。`,edit:`修改`,confirm:`确认`,conflict:`存在冲突`,evidence:`{evidence} 条证据`,sessions:`{sessions} 次会话`,globalScope:`个人全局`,projectScope:`仅 {project}`,updated:`更新于 {time}`,contexts:`适用:{contexts}`,agentPreviewTitle:`Agent 使用的规则`,agentPreviewCopy:`只包含没有冲突的 Confirmed 与 Observed;Working hypothesis 不会进入这里。`,showAgentPreview:`查看 Agent 规则`,hideAgentPreview:`收起 Agent 规则`},evidenceStatus:{Confirmed:`已确认`,Observed:`已观察`,"Working hypothesis":`工作假设`},criteria:{rules:`稳定规则`,evidence:`支持证据`,sessions:`独立会话`,days:`观察日期`,confirmed:`用户确认`,conflicts:`未解决冲突`,progress:`{current} / {target}`,conflictsProgress:`{current} 个`}},"en-US":{status:{collecting:`Collecting`,preview_ready:`Draft ready`,active:`Active`},milestone:{aria:`Writing taste readiness`,collectingTitle:`Your writing taste is taking shape`,collectingCopy:`A writing-taste draft will appear after the evidence becomes stable enough.`,previewTitle:`Your writing-taste draft is ready`,activeTitle:`Your writing taste is ready`,readyCopy:`Review how Agents currently understand your writing and confirm or revise each rule.`,rules:`{current}/{target} rules`,sessions:`{current}/{target} sessions`,open:`View writing taste`},page:{loading:`Organizing writing preferences`,back:`Back to collaboration preferences`,collectingTitle:`Still collecting writing preferences`,collectingCopy:`The profile appears after evidence spans multiple sessions and days, or after you directly confirm enough rules.`,previewTitle:`Writing-taste draft`,previewCopy:`These patterns have repeated evidence but still need your confirmation.`,activeTitle:`Your writing taste`,activeCopy:`Agents use confirmed and observed rules; the current request always wins.`,readinessAria:`Writing taste generation criteria`,rulesTitle:`Current rules`,rulesEmpty:`No writing-related preference has been identified yet.`,profileUnavailable:`Writing taste is temporarily unavailable.`,edit:`Edit`,confirm:`Confirm`,conflict:`Conflict`,evidence:`{evidence} evidence records`,sessions:`{sessions} sessions`,globalScope:`Personal global`,projectScope:`{project} only`,updated:`Updated {time}`,contexts:`Applies to: {contexts}`,agentPreviewTitle:`Rules used by Agents`,agentPreviewCopy:`Includes only conflict-free Confirmed and Observed rules. Working hypotheses stay out.`,showAgentPreview:`View Agent rules`,hideAgentPreview:`Hide Agent rules`},evidenceStatus:{Confirmed:`Confirmed`,Observed:`Observed`,"Working hypothesis":`Working hypothesis`},criteria:{rules:`Stable rules`,evidence:`Supporting evidence`,sessions:`Independent sessions`,days:`Observation days`,confirmed:`User-confirmed`,conflicts:`Unresolved conflicts`,progress:`{current} / {target}`,conflictsProgress:`{current}`}}},Zm={"zh-CN":{recruit:`聘请 Agent`,workbench:`Agent 工作台`,directory:`专属 Agent`,project:`分配到项目`,unassigned:`暂不分配`,choose:`选择专属 Agent`,capabilities:`擅长`,permissions:`项目权限`,boardRead:`读取所选项目的看板`,boardWrite:`创建、修改任务与状态`,noExecutor:`聘请不会启动模型或外部执行器。`,hostReady:`工作台已就绪 · 随 FULI 运行`,installRequired:`工作台尚未安装;聘请只创建 Agent 身份。`,installHelp:`构建 Agent 包后运行 fl employee install <目录>。`,recruitName:`聘请 {name}`,rehire:`恢复 {name}`,assign:`保存负责范围`,recruited:`已聘请`,recruiting:`正在保存…`,open:`打开工作台`,close:`关闭`,cancel:`取消`,retry:`重试`,loading:`正在读取专属 Agent…`,manageProjects:`管理负责项目`,manageProjectsTitle:`管理 {name} 的项目`,loadingScope:`正在读取负责范围…`,viewingProject:`当前查看的项目`,viewingHint:`切换看板视图,不改变负责范围。`,allProjects:{option:`全部项目`,optionMeta:`{count} 个项目`,title:`全部项目看板`,hint:`汇总 {count} 个项目的任务;选择任务可进入所属项目继续处理。`,search:`搜索全部任务`,searchPlaceholder:`搜索任务、项目或标签`,boardLabel:`全部项目任务看板`,partial:`已显示 {loaded}/{total} 个项目,{failed} 个项目读取失败。`,truncated:`有 {count} 个项目仅显示部分任务;进入项目可查看完整看板。`,empty:`所有项目都很清爽`,emptyHint:`当前负责的项目还没有任务。`,noMatch:`没有匹配的任务`,noMatchHint:`换个关键词,或清空搜索后查看全部任务。`,columnEmpty:`暂无任务`,taskCount:`{count} 个任务`,openTask:`在 {project} 中查看任务:{task}`,status:{planned:`待办`,active:`进行中`,blocked:`阻塞`,review:`待确认`,done:`已完成`}},assignedCount:`负责 {count} 个项目`,noAssignedProjects:`尚未分配项目`,manageHint:`可同时负责多个项目。全选后,取消勾选不需要的项目。`,filterLabel:`筛选项目`,filterHint:`仅筛选 Agent 列表,不改变任何负责范围。`,filterEmpty:`未选择项目`,success:`{name} 已加入`,successAssigned:`已分配到 {project}`,successUnassigned:`可以稍后为 Agent 分配项目。`,successMultiple:`现在负责 {count} 个项目。`,scopeSaved:`负责范围已保存`,scopeRemoved:`将移出 {count} 个项目,项目和任务数据会保留。`,reloadScope:`重新读取负责范围`,scope:{rule:`管理范围规则`,continuousAll:`全部项目 · 自动纳入`,onlySelected:`只管理所选项目`,allHint:`当前和以后新建的项目都由 {name} 管理;取消勾选即可明确排除。`,selectedHint:`只管理下方勾选的项目,不自动纳入新项目。`,excludeHint:`勾选表示允许管理;排除后,任务和标题都不会再经过这位 Agent。`,excludedCount:`已排除 {count} 个项目,归档或暂不可用的排除记录也会保留。`,successAll:`当前负责 {count} 个项目,以后新建的项目也会自动纳入。`,label:`负责项目`,all:`全部项目`,allSummary:`全部项目 · {count} 个`,selected:`已选 {count} 个项目`,search:`搜索项目`,invert:`反选`,multiple:`多选`,count:`已选 {selected} / {total} 个项目`,done:`完成选择`,noMatch:`没有匹配的项目`,empty:`暂无可选项目`,snapshotHint:`支持多选、全选后排除;新建项目需另行选择。`},titles:{heading:`会话标题`,mode:`整理方式`,style:`标题风格`,auto:`自动整理(客户端支持时)`,suggest:`只生成建议`,off:`不整理标题`,emoji:`Emoji + 类型`,text:`纯文字`,example:`格式示例`,exampleTask:`修复登录异常`,boundary:`结合关联任务的优先级与类型。手动改名后暂停覆盖;机密内容隐藏,客户端不支持时只保留建议。`},createProject:`创建项目`,noProjects:`还没有项目,先聘请 Agent 或创建一个项目。`,noTemplates:`暂无可聘请的 Agent`,emptyWorkbench:`先选择要负责的项目`,unavailable:`这位专属 Agent 暂不可用。`,backToAgents:`返回项目 Agent`,loadingWorkbench:`正在打开工作台…`,loadError:`Agent 服务暂时不可用,请重试。`,errors:{runtime_unavailable:`工作台未安装或无法加载,请检查 Agent 包后重试。`,assignment_required:`这位 Agent 尚未获准管理此项目,请检查负责范围。`,project_not_found:`项目不可用,请选择有效项目。`,identity_conflict:`标识已被其他 Agent 使用,原有 Agent 未修改。`,reactivation_required:`这位 Agent 已停用,请明确恢复后再分配。`,assignment_scope_conflict:`负责范围已在别处改变。请重新读取,确认后再保存。`,assignment_update_incomplete:`负责范围未能全部保存,部分修改可能已生效。请重新读取并核对后重试。`}},"en-US":{recruit:`Hire an Agent`,workbench:`Agent workspace`,directory:`Specialist Agents`,project:`Assign to project`,unassigned:`Assign later`,choose:`Choose a specialist Agent`,capabilities:`Specialties`,permissions:`Project permissions`,boardRead:`Read the selected project board`,boardWrite:`Create and update tasks and status`,noExecutor:`Hiring does not start a model or external executor.`,hostReady:`Workbench ready · hosted by FULI`,installRequired:`Workspace not installed; hiring creates the Agent identity only.`,installHelp:`Build the Agent package, then run fl employee install <directory>.`,recruitName:`Hire {name}`,rehire:`Reactivate {name}`,assign:`Save project selection`,recruited:`Hired`,recruiting:`Saving…`,open:`Open workspace`,close:`Close`,cancel:`Cancel`,retry:`Retry`,loading:`Loading specialist Agents…`,manageProjects:`Manage assigned projects`,manageProjectsTitle:`Manage {name}’s projects`,loadingScope:`Loading project selection…`,viewingProject:`Currently viewing`,viewingHint:`Switch boards without changing assignments.`,allProjects:{option:`All projects`,optionMeta:`{count} projects`,title:`All-project board`,hint:`Tasks from {count} projects. Select a task to continue in its project.`,search:`Search all tasks`,searchPlaceholder:`Search tasks, projects, or tags`,boardLabel:`All-project task board`,partial:`Showing {loaded}/{total} projects. {failed} failed to load.`,truncated:`{count} projects show only some tasks. Open a project for its complete board.`,empty:`All projects are clear`,emptyHint:`The assigned projects have no tasks yet.`,noMatch:`No matching tasks`,noMatchHint:`Try another term, or clear search to see every task.`,columnEmpty:`No tasks`,taskCount:`{count} tasks`,openTask:`View task in {project}: {task}`,status:{planned:`Planned`,active:`In progress`,blocked:`Blocked`,review:`Review`,done:`Done`}},assignedCount:`Assigned to {count} projects`,noAssignedProjects:`No projects assigned`,manageHint:`Assign multiple projects. Select all, then uncheck any to exclude.`,filterLabel:`Filter projects`,filterHint:`Filters the Agent list only. Assignments stay unchanged.`,filterEmpty:`No projects selected`,success:`{name} has joined`,successAssigned:`Assigned to {project}`,successUnassigned:`You can assign this Agent to a project later.`,successMultiple:`Now assigned to {count} projects.`,scopeSaved:`Project selection saved`,scopeRemoved:`Will leave {count} projects. Their projects and tasks will be kept.`,reloadScope:`Reload project selection`,scope:{rule:`Management rule`,continuousAll:`All projects · automatic`,onlySelected:`Selected projects only`,allHint:`Manage current and future projects. Uncheck a project to explicitly exclude it.`,selectedHint:`Manage only checked projects. New projects are not included automatically.`,excludeHint:`Checked means allowed. Excluded projects send neither tasks nor titles to this Agent.`,excludedCount:`{count} excluded projects. Archived or unavailable exclusions are preserved.`,successAll:`Managing {count} current projects; future projects will be included automatically.`,label:`Assigned projects`,all:`All projects`,allSummary:`All projects · {count}`,selected:`{count} projects selected`,search:`Search projects`,invert:`Invert selection`,multiple:`Multiple`,count:`{selected} / {total} projects selected`,done:`Done`,noMatch:`No matching projects`,empty:`No projects available`,snapshotHint:`Select multiple, or select all and exclude. New projects must be selected separately.`},titles:{heading:`Session titles`,mode:`Behavior`,style:`Title style`,auto:`Automatic when supported`,suggest:`Suggestions only`,off:`Leave titles unchanged`,emoji:`Emoji + type`,text:`Text only`,example:`Format example`,exampleTask:`Fix sign-in failure`,boundary:`Uses linked task priorities and types. Manual edits pause automation; confidential details stay hidden. Unsupported clients receive suggestions only.`},createProject:`Create project`,noProjects:`No projects yet. Hire an Agent first or create a project.`,noTemplates:`No specialist Agents available`,emptyWorkbench:`Choose projects to manage`,unavailable:`This specialist Agent is unavailable.`,backToAgents:`Back to project Agents`,loadingWorkbench:`Opening workspace…`,loadError:`Agent service is unavailable. Please retry.`,errors:{runtime_unavailable:`Workbench is not installed or could not load. Check its package and retry.`,assignment_required:`This Agent cannot manage this project yet. Check its assigned projects.`,project_not_found:`Project unavailable. Select an active project.`,identity_conflict:`Another Agent uses this identifier. The existing Agent was not modified.`,reactivation_required:`This Agent is inactive. Explicitly reactivate it before assigning.`,assignment_scope_conflict:`Project assignments changed elsewhere. Reload, review, and save again.`,assignment_update_incomplete:`The selection was not fully saved. Some changes may have applied. Reload and review before retrying.`}}},Qm=[`zh-CN`,`en-US`],$m=`fuli.locale`;function eh(e){return typeof e==`string`&&Qm.includes(e)}function th(e,t=[]){if(eh(e))return e;for(let e of t){let t=ih(e);if(t)return t}return`en-US`}function nh(){if(typeof window>`u`)return null;try{return window.localStorage.getItem($m)}catch{return null}}function rh(){return typeof navigator>`u`?[]:navigator.languages.length>0?navigator.languages:navigator.language?[navigator.language]:[]}function ih(e){let t=e.trim().toLowerCase().split(/[-_]/,1)[0];return t===`zh`?`zh-CN`:t===`en`?`en-US`:null}var ah={"zh-CN":{employees:Zm[`zh-CN`],about:Um[`zh-CN`],common:Rm[`zh-CN`],console:zm[`zh-CN`],knowledge:{dialogs:Vm[`zh-CN`],domain:Bm[`zh-CN`],workspace:Hm[`zh-CN`]},pages:Wm[`zh-CN`],preferences:Gm[`zh-CN`],projects:Km[`zh-CN`],projectAgents:qm[`zh-CN`],routes:Jm[`zh-CN`],settings:Ym[`zh-CN`],writingTaste:Xm[`zh-CN`]},"en-US":{employees:Zm[`en-US`],about:Um[`en-US`],common:Rm[`en-US`],console:zm[`en-US`],knowledge:{dialogs:Vm[`en-US`],domain:Bm[`en-US`],workspace:Hm[`en-US`]},pages:Wm[`en-US`],preferences:Gm[`en-US`],projects:Km[`en-US`],projectAgents:qm[`en-US`],routes:Jm[`en-US`],settings:Ym[`en-US`],writingTaste:Xm[`en-US`]}},oh=Tm({legacy:!1,globalInjection:!0,locale:th(nh(),rh()),fallbackLocale:`zh-CN`,messages:ah});function sh(){return th(oh.global.locale.value)}function ch(e,t={}){if(oh.global.locale.value=e,typeof document<`u`&&(document.documentElement.lang=e),!(t.persist===!1||typeof window>`u`))try{window.localStorage.setItem($m,e)}catch{}}function lh(e,t){return t?oh.global.t(e,t):oh.global.t(e)}ch(sh(),{persist:!1});export{mn as $,Ki as A,fr as B,ti as C,Os as D,hr as E,aa as F,$t as G,ke as H,ni as I,Kt as J,Ae as K,Sr as L,mr as M,la as N,qn as O,da as P,L as Q,yr as R,H as S,gr as T,Yt as U,Oe as V,R as W,Gt as X,nn as Y,rn as Z,fs as _,lh as a,Cs as b,ql as c,Hc as d,cn as et,ou as f,vs as g,ec as h,ch as i,os as j,Yi as k,Jl as l,B as m,sh as n,N as nt,mu as o,iu as p,Wt as q,oh as r,Ce as rt,Gl as s,Qm as t,he as tt,Wl as u,ws as v,tc as w,Ss as x,ds as y,dr as z};
9
+ Usability review`,preferencesPlaceholder:`One per line, used only to initialize collaboration.`,idLocked:`The Agent ID is stable after creation; projects are managed as separate assignments.`,allowListPlaceholder:`One real executor ID per line; availability is never inferred.`,required:`Agent ID, name, and responsibility are required.`,occupationEmojiInvalid:`Occupation emoji must contain only emoji characters.`,spaceUnavailable:`The current space is unavailable; the Agent cannot be saved.`,initialAssignmentReason:`Initial project assignment from the Agent directory`,projectUnavailable:`The selected project is no longer available. Choose another project.`,duplicate:`Capabilities and startup conventions cannot contain duplicates.`,saveFailed:`Could not save the project Agent.`},assignmentDialog:{assign:`Assign project`,end:`Unassign`,replace:`Replace`,assignTitle:`Assign project responsibility`,endTitle:`Unassign project`,replaceTitle:`Replace project Agent`,replacement:`Replace with`,replacementPlaceholder:`Select an existing Agent`,workKinds:`Work kinds`,workKindsPlaceholder:`One per line`,reasonPlaceholder:`Record why this assignment changed.`,required:`Responsibility and reason are required.`,replacementRequired:`Choose a replacement Agent.`,saveAssign:`Save assignment`,saveChange:`Save change`,saveFailed:`Could not save the project assignment.`}}},Jm={"zh-CN":{overview:{title:`概览`},preferences:{title:`协作偏好`,description:`个人全局与项目级的品味、个性和判断偏好,只保存在本机。`},writingTaste:{title:`写作偏好`},personalProjects:{title:`个人项目`,description:`本机私有项目、项目知识与按任务生效的协作偏好。`},projectAgents:{title:`项目 Agent`},employeeWorkbench:{title:`专属 Agent`},loadFailure:{title:`暂时无法打开页面`,resources:`页面文件加载失败,可能是界面已更新或服务暂时断开。当前内容仍然保留。`,message:`页面未能加载,当前内容仍然保留。可以重新载入,或继续使用当前页面。`,reload:`重新载入并打开`,dismiss:`留在当前页`},organizer:{title:`知识整理`},publicProjects:{title:`公共项目`,description:`发现、订阅和维护公共 Provider 上的项目。`},knowledge:{title:`知识库`},about:{title:`说明`},settings:{title:`设置`},review:{title:`发布审核`,description:`个人发布确认与公共项目 Maintainer 审核。`},connections:{title:`服务连接`,description:`本地知识库状态、公共 Provider 与项目订阅。`}},"en-US":{overview:{title:`Overview`},preferences:{title:`Collaboration preferences`,description:`Global and project-specific taste, personality, and judgment preferences stored only on this device.`},writingTaste:{title:`Writing taste`},personalProjects:{title:`Personal projects`,description:`Private local projects, project knowledge, and task-scoped collaboration preferences.`},projectAgents:{title:`Project Agents`},employeeWorkbench:{title:`Specialist Agents`},loadFailure:{title:`This page could not open`,resources:`Page files could not load. The app may have updated or disconnected. Your current page is unchanged.`,message:`The page could not load. Your current page is unchanged. Reload to try again or stay here.`,reload:`Reload and open`,dismiss:`Stay here`},organizer:{title:`Knowledge organizer`},publicProjects:{title:`Public projects`,description:`Discover, subscribe to, and maintain projects on a public Provider.`},knowledge:{title:`Knowledge base`},about:{title:`About`},settings:{title:`Settings`},review:{title:`Publishing review`,description:`Personal publishing confirmation and public project Maintainer review.`},connections:{title:`Service connections`,description:`Local knowledge status, public Providers, and project subscriptions.`}}},Ym={"zh-CN":{aria:`设置`,resources:{title:`资源占用`,memory:`内存`,disk:`硬盘`,available:`电脑可用 {value}`,partial:`部分组件暂时无法读取`,measuredAt:`内存更新于 {time}`,diskMeasuredAt:`硬盘更新于 {time}`,refresh:`刷新频率`,refreshUnit:`{seconds} 秒`,temporary:`其中 Neo4j 临时文件 {value}`,exclusionsContainer:`不含浏览器标签页及 Docker 共享虚拟机开销。`,exclusionsNative:`不含浏览器标签页内存。原生进程已计入。`,unavailable:`暂时无法获取资源数据`,components:{console:`管理服务`,personalProvider:`个人 Provider`,personalNeo4j:`个人 Neo4j`,workspaceProvider:`开发公共 Provider`,workspaceNeo4j:`开发公共 Neo4j`,application:`程序文件`,localData:`本地运行数据`,containerImages:`容器镜像`,containerWritable:`容器运行数据`,neo4jData:`Neo4j 数据`,neo4jLogs:`Neo4j 日志`}},ports:{title:`服务端口`,personal:`个人服务`,development:`公共服务`,developing:`开发中`,developmentMeta:`fuli-server 发布后,可配置已部署服务的域名。`,console:`管理界面`,personalProvider:`个人 Provider`,personalNeo4jHttp:`个人 Neo4j Browser`,personalNeo4jBolt:`个人 Neo4j Bolt`,workspaceProvider:`公共 Provider`,workspaceNeo4jHttp:`公共 Neo4j Browser`,workspaceNeo4jBolt:`公共 Neo4j Bolt`,active:`当前 {port}`},behavior:{title:`运行设置`,capture:`自动沉淀`,captureMeta:`把新的稳定会话知识写入本机`,agentAccess:`Agent 使用`,agentAccessMeta:`允许已连接的 Agent 调用 FULI`,lanAccess:`局域网访问`,lanAccessMeta:`允许同一可信网络中的设备访问管理界面`,runtimeMode:`图数据库运行方式`,runtimeModeMeta:`当前运行:{mode};保存后重启生效`,runtimeRecommendation:`本机内存较小,推荐原生模式,避免虚拟机常驻内存`,runtimeModes:{native:`原生(低内存)`,container:`容器(兼容)`},language:`界面语言`,zh:`简体中文`,en:`English`},conversationLaunchers:{title:`会话打开方式`,enabled:`启用`,sourceId:`来源 ID · {id}`,idFormat:`可打开的 ID`,appName:`打开 App`,urlTemplate:`链接模板`,idFormats:{any:`任意非空 ID`,uuid:`仅 UUID`},idFormatMeta:`Codex 深链要求原生会话 UUID;其他来源可按其支持的 ID 格式配置。`,applications:{codex:`Codex`,claude:`Claude`,claude_code:`Claude Code`,cursor:`Cursor`,gemini_cli:`Gemini CLI`,kiro:`Kiro`,other:`其他 Agent`}},save:`保存设置`,saving:`正在保存`,saved:`设置已保存`,restartRequired:`需要重启`,restartCopy:`端口或局域网设置将在运行 fuli restart 后生效。`,loadError:`无法读取设置`,saveError:`无法保存设置`},"en-US":{aria:`Settings`,resources:{title:`Resource usage`,memory:`Memory`,disk:`Disk`,available:`{value} available on this device`,partial:`Some components are temporarily unavailable`,measuredAt:`Memory updated {time}`,diskMeasuredAt:`Disk updated {time}`,refresh:`Refresh interval`,refreshUnit:`{seconds} seconds`,temporary:`{value} is Neo4j temporary data`,exclusionsContainer:`Browser tabs and shared Docker VM overhead are excluded.`,exclusionsNative:`Browser-tab memory is excluded. Native processes are included.`,unavailable:`Resource data is temporarily unavailable`,components:{console:`Management service`,personalProvider:`Personal Provider`,personalNeo4j:`Personal Neo4j`,workspaceProvider:`Development public Provider`,workspaceNeo4j:`Development public Neo4j`,application:`Application files`,localData:`Local runtime data`,containerImages:`Container images`,containerWritable:`Container runtime data`,neo4jData:`Neo4j data`,neo4jLogs:`Neo4j logs`}},ports:{title:`Service ports`,personal:`Personal services`,development:`Public service`,developing:`In development`,developmentMeta:`Configure the deployed server domain after fuli-server is published.`,console:`Management UI`,personalProvider:`Personal Provider`,personalNeo4jHttp:`Personal Neo4j Browser`,personalNeo4jBolt:`Personal Neo4j Bolt`,workspaceProvider:`Public Provider`,workspaceNeo4jHttp:`Public Neo4j Browser`,workspaceNeo4jBolt:`Public Neo4j Bolt`,active:`Active: {port}`},behavior:{title:`Runtime settings`,capture:`Automatic capture`,captureMeta:`Write new, stable conversation knowledge to this device`,agentAccess:`Agent access`,agentAccessMeta:`Allow connected Agents to use FULI`,lanAccess:`LAN access`,lanAccessMeta:`Allow devices on the same trusted network to open the console`,runtimeMode:`Graph database runtime`,runtimeModeMeta:`Active: {mode}; restart after saving to apply`,runtimeRecommendation:`Native mode is recommended on this low-memory device to avoid VM overhead`,runtimeModes:{native:`Native (low memory)`,container:`Container (compatible)`},language:`Interface language`,zh:`简体中文`,en:`English`},conversationLaunchers:{title:`Conversation openers`,enabled:`Enabled`,sourceId:`Source ID · {id}`,idFormat:`Allowed IDs`,appName:`Open with app`,urlTemplate:`URL template`,idFormats:{any:`Any non-empty ID`,uuid:`UUID only`},idFormatMeta:`Codex deep links require the native conversation UUID; configure other sources to match their supported IDs.`,applications:{codex:`Codex`,claude:`Claude`,claude_code:`Claude Code`,cursor:`Cursor`,gemini_cli:`Gemini CLI`,kiro:`Kiro`,other:`Other Agent`}},save:`Save settings`,saving:`Saving`,saved:`Settings saved`,restartRequired:`Restart required`,restartCopy:`Port and LAN changes apply after running fuli restart.`,loadError:`Could not load settings`,saveError:`Could not save settings`}},Xm={"zh-CN":{status:{collecting:`收集中`,preview_ready:`初稿已形成`,active:`已启用`},milestone:{aria:`写作偏好成熟度`,collectingTitle:`写作偏好正在形成`,collectingCopy:`积累到足够稳定后,这里会出现你的写作偏好初稿。`,previewTitle:`你的写作偏好初稿已形成`,activeTitle:`你的写作偏好已形成`,readyCopy:`查看 Agent 目前如何理解你的写作方式,并确认或修改每条规则。`,rules:`{current}/{target} 条规则`,sessions:`{current}/{target} 次会话`,open:`查看写作偏好`},page:{loading:`正在整理写作偏好`,back:`返回协作偏好`,collectingTitle:`还在收集写作偏好`,collectingCopy:`画像会在证据跨越多个会话和日期,或你明确确认足够多规则后生成。`,previewTitle:`写作偏好初稿`,previewCopy:`这些规律已有重复证据,但仍需要你的确认。`,activeTitle:`你的写作偏好`,activeCopy:`Agent 会使用已确认和已观察的规则;当前请求始终优先。`,readinessAria:`写作偏好生成条件`,rulesTitle:`当前规则`,rulesEmpty:`还没有识别到写作相关偏好。`,profileUnavailable:`暂时无法读取写作偏好。`,edit:`修改`,confirm:`确认`,conflict:`存在冲突`,evidence:`{evidence} 条证据`,sessions:`{sessions} 次会话`,globalScope:`个人全局`,projectScope:`仅 {project}`,updated:`更新于 {time}`,contexts:`适用:{contexts}`,agentPreviewTitle:`Agent 使用的规则`,agentPreviewCopy:`只包含没有冲突的 Confirmed 与 Observed;Working hypothesis 不会进入这里。`,showAgentPreview:`查看 Agent 规则`,hideAgentPreview:`收起 Agent 规则`},evidenceStatus:{Confirmed:`已确认`,Observed:`已观察`,"Working hypothesis":`工作假设`},criteria:{rules:`稳定规则`,evidence:`支持证据`,sessions:`独立会话`,days:`观察日期`,confirmed:`用户确认`,conflicts:`未解决冲突`,progress:`{current} / {target}`,conflictsProgress:`{current} 个`}},"en-US":{status:{collecting:`Collecting`,preview_ready:`Draft ready`,active:`Active`},milestone:{aria:`Writing taste readiness`,collectingTitle:`Your writing taste is taking shape`,collectingCopy:`A writing-taste draft will appear after the evidence becomes stable enough.`,previewTitle:`Your writing-taste draft is ready`,activeTitle:`Your writing taste is ready`,readyCopy:`Review how Agents currently understand your writing and confirm or revise each rule.`,rules:`{current}/{target} rules`,sessions:`{current}/{target} sessions`,open:`View writing taste`},page:{loading:`Organizing writing preferences`,back:`Back to collaboration preferences`,collectingTitle:`Still collecting writing preferences`,collectingCopy:`The profile appears after evidence spans multiple sessions and days, or after you directly confirm enough rules.`,previewTitle:`Writing-taste draft`,previewCopy:`These patterns have repeated evidence but still need your confirmation.`,activeTitle:`Your writing taste`,activeCopy:`Agents use confirmed and observed rules; the current request always wins.`,readinessAria:`Writing taste generation criteria`,rulesTitle:`Current rules`,rulesEmpty:`No writing-related preference has been identified yet.`,profileUnavailable:`Writing taste is temporarily unavailable.`,edit:`Edit`,confirm:`Confirm`,conflict:`Conflict`,evidence:`{evidence} evidence records`,sessions:`{sessions} sessions`,globalScope:`Personal global`,projectScope:`{project} only`,updated:`Updated {time}`,contexts:`Applies to: {contexts}`,agentPreviewTitle:`Rules used by Agents`,agentPreviewCopy:`Includes only conflict-free Confirmed and Observed rules. Working hypotheses stay out.`,showAgentPreview:`View Agent rules`,hideAgentPreview:`Hide Agent rules`},evidenceStatus:{Confirmed:`Confirmed`,Observed:`Observed`,"Working hypothesis":`Working hypothesis`},criteria:{rules:`Stable rules`,evidence:`Supporting evidence`,sessions:`Independent sessions`,days:`Observation days`,confirmed:`User-confirmed`,conflicts:`Unresolved conflicts`,progress:`{current} / {target}`,conflictsProgress:`{current}`}}},Zm={"zh-CN":{recruit:`聘请 Agent`,workbench:`Agent 工作台`,directory:`专属 Agent`,project:`分配到项目`,unassigned:`暂不分配`,choose:`选择专属 Agent`,capabilities:`擅长`,permissions:`项目权限`,boardRead:`读取所选项目的看板`,boardWrite:`创建、修改任务与状态`,noExecutor:`聘请不会启动模型或外部执行器。`,hostReady:`工作台已就绪 · 随 FULI 运行`,installRequired:`工作台尚未安装;聘请只创建 Agent 身份。`,installHelp:`构建 Agent 包后运行 fl employee install <目录>。`,recruitName:`聘请 {name}`,rehire:`恢复 {name}`,assign:`保存负责范围`,recruited:`已聘请`,recruiting:`正在保存…`,open:`打开工作台`,close:`关闭`,cancel:`取消`,retry:`重试`,loading:`正在读取专属 Agent…`,manageProjects:`管理负责项目`,manageProjectsTitle:`管理 {name} 的项目`,loadingScope:`正在读取负责范围…`,viewingProject:`当前查看的项目`,viewingHint:`切换看板视图,不改变负责范围。`,allProjects:{option:`全部项目`,optionMeta:`{count} 个项目`,title:`全部项目看板`,hint:`汇总 {count} 个项目的任务;选择任务可进入所属项目继续处理。`,projectFilter:`项目范围`,projectFilterHint:`只影响当前看板,不改变负责范围。取消勾选可隐藏项目,也支持反选。`,search:`搜索全部任务`,searchPlaceholder:`搜索任务、项目或标签`,boardLabel:`全部项目任务看板`,partial:`已显示 {loaded}/{total} 个项目,{failed} 个项目读取失败。`,truncated:`有 {count} 个项目仅显示部分任务;进入项目可查看完整看板。`,empty:`所有项目都很清爽`,emptyHint:`当前负责的项目还没有任务。`,noProjectsVisible:`没有显示任何项目`,noProjectsVisibleHint:`重新勾选项目后,就能继续查看对应任务。`,showAllProjects:`显示全部项目`,noMatch:`没有匹配的任务`,noMatchHint:`换个关键词,或清空搜索后查看全部任务。`,columnEmpty:`暂无任务`,taskCount:`{count} 个任务`,openTask:`在 {project} 中查看任务:{task}`,back:`返回全部项目`,dragHint:`拖动卡片可更新状态;键盘聚焦拖动按钮后,按空格拿起、方向键移动、再按空格放下。`,dragTask:`移动任务:{task}`,saving:`保存中`,dragLifted:`已拿起“{task}”,当前位置:{status}。`,dragMoved:`已移动到:{status}。`,dragDropped:`已将“{task}”移动到:{status}。`,dragCancelled:`已取消移动。`,moveFailed:`任务移动失败,已恢复原状态:{error}`,status:{planned:`待办`,active:`进行中`,blocked:`阻塞`,review:`待确认`,done:`已完成`}},assignedCount:`负责 {count} 个项目`,noAssignedProjects:`尚未分配项目`,manageHint:`可同时负责多个项目。全选后,取消勾选不需要的项目。`,filterLabel:`筛选项目`,filterHint:`仅筛选 Agent 列表,不改变任何负责范围。`,filterEmpty:`未选择项目`,success:`{name} 已加入`,successAssigned:`已分配到 {project}`,successUnassigned:`可以稍后为 Agent 分配项目。`,successMultiple:`现在负责 {count} 个项目。`,scopeSaved:`负责范围已保存`,scopeRemoved:`将移出 {count} 个项目,项目和任务数据会保留。`,reloadScope:`重新读取负责范围`,scope:{rule:`管理范围规则`,continuousAll:`全部项目 · 自动纳入`,onlySelected:`只管理所选项目`,allHint:`当前和以后新建的项目都由 {name} 管理;取消勾选即可明确排除。`,selectedHint:`只管理下方勾选的项目,不自动纳入新项目。`,excludeHint:`勾选表示允许管理;排除后,任务和标题都不会再经过这位 Agent。`,excludedCount:`已排除 {count} 个项目,归档或暂不可用的排除记录也会保留。`,successAll:`当前负责 {count} 个项目,以后新建的项目也会自动纳入。`,label:`负责项目`,all:`全部项目`,allSummary:`全部项目 · {count} 个`,selected:`已选 {count} 个项目`,search:`搜索项目`,invert:`反选`,multiple:`多选`,count:`已选 {selected} / {total} 个项目`,done:`完成选择`,noMatch:`没有匹配的项目`,empty:`暂无可选项目`,snapshotHint:`支持多选、全选后排除;新建项目需另行选择。`},titles:{heading:`会话标题`,mode:`整理方式`,style:`标题风格`,auto:`自动整理(客户端支持时)`,suggest:`只生成建议`,off:`不整理标题`,emoji:`Emoji + 类型`,text:`纯文字`,example:`格式示例`,exampleTask:`修复登录异常`,boundary:`结合关联任务的优先级与类型。手动改名后暂停覆盖;机密内容隐藏,客户端不支持时只保留建议。`},createProject:`创建项目`,noProjects:`还没有项目,先聘请 Agent 或创建一个项目。`,noTemplates:`暂无可聘请的 Agent`,emptyWorkbench:`先选择要负责的项目`,unavailable:`这位专属 Agent 暂不可用。`,backToAgents:`返回项目 Agent`,loadingWorkbench:`正在打开工作台…`,loadError:`Agent 服务暂时不可用,请重试。`,errors:{runtime_unavailable:`工作台未安装或无法加载,请检查 Agent 包后重试。`,assignment_required:`这位 Agent 尚未获准管理此项目,请检查负责范围。`,project_not_found:`项目不可用,请选择有效项目。`,identity_conflict:`标识已被其他 Agent 使用,原有 Agent 未修改。`,reactivation_required:`这位 Agent 已停用,请明确恢复后再分配。`,assignment_scope_conflict:`负责范围已在别处改变。请重新读取,确认后再保存。`,assignment_update_incomplete:`负责范围未能全部保存,部分修改可能已生效。请重新读取并核对后重试。`}},"en-US":{recruit:`Hire an Agent`,workbench:`Agent workspace`,directory:`Specialist Agents`,project:`Assign to project`,unassigned:`Assign later`,choose:`Choose a specialist Agent`,capabilities:`Specialties`,permissions:`Project permissions`,boardRead:`Read the selected project board`,boardWrite:`Create and update tasks and status`,noExecutor:`Hiring does not start a model or external executor.`,hostReady:`Workbench ready · hosted by FULI`,installRequired:`Workspace not installed; hiring creates the Agent identity only.`,installHelp:`Build the Agent package, then run fl employee install <directory>.`,recruitName:`Hire {name}`,rehire:`Reactivate {name}`,assign:`Save project selection`,recruited:`Hired`,recruiting:`Saving…`,open:`Open workspace`,close:`Close`,cancel:`Cancel`,retry:`Retry`,loading:`Loading specialist Agents…`,manageProjects:`Manage assigned projects`,manageProjectsTitle:`Manage {name}’s projects`,loadingScope:`Loading project selection…`,viewingProject:`Currently viewing`,viewingHint:`Switch boards without changing assignments.`,allProjects:{option:`All projects`,optionMeta:`{count} projects`,title:`All-project board`,hint:`Tasks from {count} projects. Select a task to continue in its project.`,projectFilter:`Project scope`,projectFilterHint:`Filters this board only. Uncheck projects to hide them, or invert the selection.`,search:`Search all tasks`,searchPlaceholder:`Search tasks, projects, or tags`,boardLabel:`All-project task board`,partial:`Showing {loaded}/{total} projects. {failed} failed to load.`,truncated:`{count} projects show only some tasks. Open a project for its complete board.`,empty:`All projects are clear`,emptyHint:`The assigned projects have no tasks yet.`,noProjectsVisible:`No projects shown`,noProjectsVisibleHint:`Select projects again to see their tasks.`,showAllProjects:`Show all projects`,noMatch:`No matching tasks`,noMatchHint:`Try another term, or clear search to see every task.`,columnEmpty:`No tasks`,taskCount:`{count} tasks`,openTask:`View task in {project}: {task}`,back:`Back to all projects`,dragHint:`Drag cards to update status. With a drag button focused, press Space to lift, use arrow keys to move, then Space to drop.`,dragTask:`Move task: {task}`,saving:`Saving`,dragLifted:`Lifted “{task}” from {status}.`,dragMoved:`Moved to {status}.`,dragDropped:`Moved “{task}” to {status}.`,dragCancelled:`Move cancelled.`,moveFailed:`The task could not be moved and was restored: {error}`,status:{planned:`Planned`,active:`In progress`,blocked:`Blocked`,review:`Review`,done:`Done`}},assignedCount:`Assigned to {count} projects`,noAssignedProjects:`No projects assigned`,manageHint:`Assign multiple projects. Select all, then uncheck any to exclude.`,filterLabel:`Filter projects`,filterHint:`Filters the Agent list only. Assignments stay unchanged.`,filterEmpty:`No projects selected`,success:`{name} has joined`,successAssigned:`Assigned to {project}`,successUnassigned:`You can assign this Agent to a project later.`,successMultiple:`Now assigned to {count} projects.`,scopeSaved:`Project selection saved`,scopeRemoved:`Will leave {count} projects. Their projects and tasks will be kept.`,reloadScope:`Reload project selection`,scope:{rule:`Management rule`,continuousAll:`All projects · automatic`,onlySelected:`Selected projects only`,allHint:`Manage current and future projects. Uncheck a project to explicitly exclude it.`,selectedHint:`Manage only checked projects. New projects are not included automatically.`,excludeHint:`Checked means allowed. Excluded projects send neither tasks nor titles to this Agent.`,excludedCount:`{count} excluded projects. Archived or unavailable exclusions are preserved.`,successAll:`Managing {count} current projects; future projects will be included automatically.`,label:`Assigned projects`,all:`All projects`,allSummary:`All projects · {count}`,selected:`{count} projects selected`,search:`Search projects`,invert:`Invert selection`,multiple:`Multiple`,count:`{selected} / {total} projects selected`,done:`Done`,noMatch:`No matching projects`,empty:`No projects available`,snapshotHint:`Select multiple, or select all and exclude. New projects must be selected separately.`},titles:{heading:`Session titles`,mode:`Behavior`,style:`Title style`,auto:`Automatic when supported`,suggest:`Suggestions only`,off:`Leave titles unchanged`,emoji:`Emoji + type`,text:`Text only`,example:`Format example`,exampleTask:`Fix sign-in failure`,boundary:`Uses linked task priorities and types. Manual edits pause automation; confidential details stay hidden. Unsupported clients receive suggestions only.`},createProject:`Create project`,noProjects:`No projects yet. Hire an Agent first or create a project.`,noTemplates:`No specialist Agents available`,emptyWorkbench:`Choose projects to manage`,unavailable:`This specialist Agent is unavailable.`,backToAgents:`Back to project Agents`,loadingWorkbench:`Opening workspace…`,loadError:`Agent service is unavailable. Please retry.`,errors:{runtime_unavailable:`Workbench is not installed or could not load. Check its package and retry.`,assignment_required:`This Agent cannot manage this project yet. Check its assigned projects.`,project_not_found:`Project unavailable. Select an active project.`,identity_conflict:`Another Agent uses this identifier. The existing Agent was not modified.`,reactivation_required:`This Agent is inactive. Explicitly reactivate it before assigning.`,assignment_scope_conflict:`Project assignments changed elsewhere. Reload, review, and save again.`,assignment_update_incomplete:`The selection was not fully saved. Some changes may have applied. Reload and review before retrying.`}}},Qm=[`zh-CN`,`en-US`],$m=`fuli.locale`;function eh(e){return typeof e==`string`&&Qm.includes(e)}function th(e,t=[]){if(eh(e))return e;for(let e of t){let t=ih(e);if(t)return t}return`en-US`}function nh(){if(typeof window>`u`)return null;try{return window.localStorage.getItem($m)}catch{return null}}function rh(){return typeof navigator>`u`?[]:navigator.languages.length>0?navigator.languages:navigator.language?[navigator.language]:[]}function ih(e){let t=e.trim().toLowerCase().split(/[-_]/,1)[0];return t===`zh`?`zh-CN`:t===`en`?`en-US`:null}var ah={"zh-CN":{employees:Zm[`zh-CN`],about:Um[`zh-CN`],common:Rm[`zh-CN`],console:zm[`zh-CN`],knowledge:{dialogs:Vm[`zh-CN`],domain:Bm[`zh-CN`],workspace:Hm[`zh-CN`]},pages:Wm[`zh-CN`],preferences:Gm[`zh-CN`],projects:Km[`zh-CN`],projectAgents:qm[`zh-CN`],routes:Jm[`zh-CN`],settings:Ym[`zh-CN`],writingTaste:Xm[`zh-CN`]},"en-US":{employees:Zm[`en-US`],about:Um[`en-US`],common:Rm[`en-US`],console:zm[`en-US`],knowledge:{dialogs:Vm[`en-US`],domain:Bm[`en-US`],workspace:Hm[`en-US`]},pages:Wm[`en-US`],preferences:Gm[`en-US`],projects:Km[`en-US`],projectAgents:qm[`en-US`],routes:Jm[`en-US`],settings:Ym[`en-US`],writingTaste:Xm[`en-US`]}},oh=Tm({legacy:!1,globalInjection:!0,locale:th(nh(),rh()),fallbackLocale:`zh-CN`,messages:ah});function sh(){return th(oh.global.locale.value)}function ch(e,t={}){if(oh.global.locale.value=e,typeof document<`u`&&(document.documentElement.lang=e),!(t.persist===!1||typeof window>`u`))try{window.localStorage.setItem($m,e)}catch{}}function lh(e,t){return t?oh.global.t(e,t):oh.global.t(e)}ch(sh(),{persist:!1});export{rn as $,qn as A,yr as B,Ss as C,gr as D,tc as E,la as F,Yt as G,fr as H,da as I,Ae as J,R as K,aa as L,Ki as M,os as N,hr as O,mr as P,Gt as Q,ni as R,Cs as S,ti as T,Oe as U,dr as V,ke as W,Kt as X,Wt as Y,nn as Z,ec as _,lh as a,Ce as at,ws as b,Gl as c,Wl as d,L as et,Hc as f,Lr as g,B as h,ch as i,N as it,Yi as j,Os as k,ql as l,iu as m,sh as n,cn as nt,Nl as o,ou as p,$t as q,oh as r,he as rt,mu as s,Qm as t,mn as tt,Jl as u,vs as v,H as w,ds as x,fs as y,Sr as z};
@@ -1 +1 @@
1
- import{a as e}from"./i18n-ByRiA3pJ.js";var t=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function n(n,r=18){let i=String(n??``).trim();if(!i)return e(`common.status.notRecorded`);if(i.length<=r)return i;if(t.test(i))return i.slice(0,8);let a=Math.max(7,Math.ceil((r-1)*.58)),o=Math.max(4,r-a-1);return`${i.slice(0,a)}…${i.slice(-o)}`}function r(e){let t=String(e??``).trim();return`${t} ${n(t)}`}function i(e){let t=e?.attributes?.projectId;return n(t||e?.id,t?26:18)}export{i as n,r,n as t};
1
+ import{a as e}from"./i18n-DQH9D35M.js";var t=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function n(n,r=18){let i=String(n??``).trim();if(!i)return e(`common.status.notRecorded`);if(i.length<=r)return i;if(t.test(i))return i.slice(0,8);let a=Math.max(7,Math.ceil((r-1)*.58)),o=Math.max(4,r-a-1);return`${i.slice(0,a)}…${i.slice(-o)}`}function r(e){let t=String(e??``).trim();return`${t} ${n(t)}`}function i(e){let t=e?.attributes?.projectId;return n(t||e?.id,t?26:18)}export{i as n,r,n as t};