fuli-context 0.12.2 → 0.12.4

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 (90) hide show
  1. package/README.md +10 -3
  2. package/README.zh-CN.md +9 -2
  3. package/dist/web/assets/{AboutPage-Dized8Uz.js → AboutPage-DKsgqteA.js} +1 -1
  4. package/dist/web/assets/{AgentConversations-Ccy41mEA.js → AgentConversations-BnFsfRj3.js} +1 -1
  5. package/dist/web/assets/{AgentHand-UzVhbKUC.js → AgentHand-B5lezlek.js} +1 -1
  6. package/dist/web/assets/{AgentName-DJpvkub2.js → AgentName-C-V41xs0.js} +1 -1
  7. package/dist/web/assets/AgentProfilePage-DjgqtOdz.js +1 -0
  8. package/dist/web/assets/AgentsDirectoryPage-IgN5QEdW.js +1 -0
  9. package/dist/web/assets/{AgentsDirectoryPage-Cv-vxw2C.css → AgentsDirectoryPage-kc3EgeGO.css} +1 -1
  10. package/dist/web/assets/{ConnectionsPage-uXcabab_.js → ConnectionsPage-CXtNiTEF.js} +1 -1
  11. package/dist/web/assets/EmployeeRecruitDialog-o6eyMw2g.js +1 -0
  12. package/dist/web/assets/EmployeeWorkbenchPage-4EnGLauW.js +3 -0
  13. package/dist/web/assets/{KnowledgeEditDialog-HmiqLC-Y.js → KnowledgeEditDialog-BlBd6Xql.js} +1 -1
  14. package/dist/web/assets/{KnowledgeInspector-Cj2yK4Qh.js → KnowledgeInspector-Dl7SAgaY.js} +1 -1
  15. package/dist/web/assets/{KnowledgeOrganizerPage-DT3BROZm.js → KnowledgeOrganizerPage-CpH4x6UA.js} +1 -1
  16. package/dist/web/assets/KnowledgePage-C-gFr7ln.js +1 -0
  17. package/dist/web/assets/{KnowledgeWorkspace-DA_dqVRG.js → KnowledgeWorkspace-4q_HfXas.js} +1 -1
  18. package/dist/web/assets/{NotFoundPage-x_Yd59mm.js → NotFoundPage-DtmfJSGx.js} +1 -1
  19. package/dist/web/assets/{OverviewPage-3eZjQ26v.js → OverviewPage-C1zw_8_6.js} +1 -1
  20. package/dist/web/assets/PersonalProfilePage-B0_zIINs.css +1 -0
  21. package/dist/web/assets/{PersonalProfilePage-CDQk096L.js → PersonalProfilePage-tQyS7qsa.js} +1 -1
  22. package/dist/web/assets/PersonalProjectsPage-Cgd_bjeK.js +1 -0
  23. package/dist/web/assets/{ProjectAgentFirstTask-BkRJ0zwO.js → ProjectAgentFirstTask-Caf7c6F_.js} +1 -1
  24. package/dist/web/assets/{ProjectAgentsPage-BuNNqSEy.js → ProjectAgentsPage-BOGkN5ZN.js} +1 -1
  25. package/dist/web/assets/{ProjectScopePicker-CiDxM2Yx.js → ProjectScopePicker-NyqcG6Iz.js} +1 -1
  26. package/dist/web/assets/{PublicProjectsPage-ByOT559r.js → PublicProjectsPage-CYwQLZmy.js} +1 -1
  27. package/dist/web/assets/{ReviewPage-C0Vdr9uq.js → ReviewPage-EyuAtIOq.js} +1 -1
  28. package/dist/web/assets/{RoundtablesPage-L3ShEWS3.js → RoundtablesPage-JVBXsJrs.js} +1 -1
  29. package/dist/web/assets/SettingsPage-BARo0Ds0.css +1 -0
  30. package/dist/web/assets/SettingsPage-Dfi7kl9c.js +1 -0
  31. package/dist/web/assets/{SharedJefaReportPage-Bg6lIk3E.js → SharedJefaReportPage-DFy5Ty7o.js} +1 -1
  32. package/dist/web/assets/{UiButton-x8hiHNRM.js → UiButton-neeym_gA.js} +1 -1
  33. package/dist/web/assets/{UiDialog-mjletK0y.js → UiDialog-BFVoqFnc.js} +1 -1
  34. package/dist/web/assets/{UiDisclosure-_IxeiexW.js → UiDisclosure-B-T7BmB5.js} +1 -1
  35. package/dist/web/assets/{UiSegmented-WFfz9Evl.js → UiSegmented-D_kyRKDw.js} +1 -1
  36. package/dist/web/assets/{UiSelect-K29jnV-1.js → UiSelect-DDyct4mf.js} +1 -1
  37. package/dist/web/assets/{WritingTastePage-DCULB-d2.js → WritingTastePage-BPRq6kJ6.js} +1 -1
  38. package/dist/web/assets/{agent-pins-DS4mNsNt.js → agent-pins-6LRHTMF6.js} +1 -1
  39. package/dist/web/assets/agent-profile-UgNiXgpU.css +1 -0
  40. package/dist/web/assets/{attention-store-CA5y8j1R.js → attention-store-BGHyzWfv.js} +1 -1
  41. package/dist/web/assets/avatars-z6ANYG_r.js +1 -0
  42. package/dist/web/assets/{catalog-D0VEfOAV.js → catalog-kb-cA8t6.js} +1 -1
  43. package/dist/web/assets/{client-DnwnUBQV.js → client-DodUFQDp.js} +1 -1
  44. package/dist/web/assets/{console-Cw7TzOSC.js → console-C2Lfifq-.js} +1 -1
  45. package/dist/web/assets/{conversation-launcher-settings-Yc13viwr.js → conversation-launcher-settings-CowfVz7l.js} +1 -1
  46. package/dist/web/assets/{i18n-oJFlt8hW.js → i18n-B4Fp9Oa5.js} +1 -1
  47. package/dist/web/assets/{identity-DSGS4CZc.js → identity-DG_za-J7.js} +1 -1
  48. package/dist/web/assets/index-DsExj49_.css +1 -0
  49. package/dist/web/assets/index-RxlM8aQV.js +5 -0
  50. package/dist/web/assets/{judgment-types-DR931cZ7.js → judgment-types-DRqrjStd.js} +1 -1
  51. package/dist/web/assets/{model-BJ-UF4cs.js → model-C0eHDNsF.js} +1 -1
  52. package/dist/web/assets/{personal-profile-graph-SOK0BR0w.js → personal-profile-graph-CHY3WYhi.js} +1 -1
  53. package/dist/web/assets/project-team-api-Dfm8C4B8.js +1 -0
  54. package/dist/web/assets/{shared-report-CiX64ZiD.js → shared-report-8JFvD9TZ.js} +1 -1
  55. package/dist/web/assets/tonborg-avatar-DyxAdTD6.webp +0 -0
  56. package/dist/web/assets/{useAgentRoster-B84mzZIg.js → useAgentRoster-QDbOwtLj.js} +1 -1
  57. package/dist/web/assets/{useApi-CROJJdhE-7gt0QyQ5.js → useApi-CROJJdhE-IuC5qwny.js} +1 -1
  58. package/dist/web/assets/{vue-router-CCvPGaLD.js → vue-router-nZMhR3dI.js} +1 -1
  59. package/dist/web/index.html +16 -15
  60. package/graph-provider/fuli_graph/project_agent_task_models.py +1 -0
  61. package/graph-provider/fuli_graph/system_agents.py +27 -3
  62. package/graph-provider/pyproject.toml +1 -1
  63. package/npm-shrinkwrap.json +2 -2
  64. package/package.json +1 -1
  65. package/src/cli/command-registry.js +2 -1
  66. package/src/cli/setup-command.js +16 -2
  67. package/src/cli/update-command.js +54 -39
  68. package/src/cli/update-installation.js +54 -0
  69. package/src/cli.js +1 -2
  70. package/src/employees/catalog/tonborg.json +1 -1
  71. package/src/http/api-router.js +28 -1
  72. package/src/local-runtime/lifecycle.js +1 -0
  73. package/src/setup/graph-runtime.js +1 -1
  74. package/src/setup/options.js +1 -0
  75. package/src/system/settings-apply-worker.js +6 -0
  76. package/src/system/settings-apply.js +116 -0
  77. package/src/system/system-service.js +25 -5
  78. package/dist/web/assets/AgentProfilePage-CFViQ8kj.js +0 -1
  79. package/dist/web/assets/AgentsDirectoryPage-CBFTg_IE.js +0 -1
  80. package/dist/web/assets/EmployeeRecruitDialog-D8Hvhc-M.js +0 -1
  81. package/dist/web/assets/EmployeeWorkbenchPage-TBl_HNj6.js +0 -3
  82. package/dist/web/assets/KnowledgePage-C4J4VueL.js +0 -1
  83. package/dist/web/assets/PersonalProfilePage-DrMDAAdy.css +0 -1
  84. package/dist/web/assets/PersonalProjectsPage-CJxp4Wyz.js +0 -1
  85. package/dist/web/assets/SettingsPage-BE8pWbI6.css +0 -1
  86. package/dist/web/assets/SettingsPage-McYuinGz.js +0 -1
  87. package/dist/web/assets/agent-profile-Bh3MJGvb.css +0 -1
  88. package/dist/web/assets/index-BfHCcUL2.css +0 -1
  89. package/dist/web/assets/index-CxNER7Oo.js +0 -5
  90. package/dist/web/assets/project-team-api-C_0qJk_B.js +0 -1
@@ -31,6 +31,7 @@ export async function handleApiRequest({
31
31
  }
32
32
 
33
33
  if (system && url.pathname === '/api/system/settings' && request.method === 'GET') {
34
+ response.setHeader('Cache-Control', 'no-store');
34
35
  sendJson(response, 200, system.getSettings());
35
36
  return true;
36
37
  }
@@ -42,7 +43,33 @@ export async function handleApiRequest({
42
43
  }
43
44
 
44
45
  if (system && url.pathname === '/api/system/settings' && request.method === 'PUT') {
45
- sendJson(response, 200, system.updateSettings(await readJson(request)));
46
+ const result = await system.updateSettings(await readJson(request));
47
+ if (result.apply?.status === 'applying') {
48
+ // Flush the acknowledgement before the detached worker stops this server.
49
+ let started = false;
50
+ const start = () => {
51
+ if (started) return;
52
+ started = true;
53
+ system.startSettingsApply(result.apply.id);
54
+ };
55
+ response.once('finish', start);
56
+ response.once('close', start);
57
+ }
58
+ sendJson(response, 200, result);
59
+ return true;
60
+ }
61
+
62
+ // An image load can confirm readiness across a console port change without
63
+ // granting another origin access to authenticated JSON or widening CORS.
64
+ if (system && url.pathname === '/api/system/settings/ready.svg' && request.method === 'GET') {
65
+ const apply = system.settingsApplyStatus?.();
66
+ response.setHeader('Cache-Control', 'no-store');
67
+ if (apply?.id !== url.searchParams.get('id') || apply.status !== 'applied') {
68
+ sendJson(response, 503, { error: 'Settings are not ready' });
69
+ return true;
70
+ }
71
+ response.writeHead(200, { 'content-type': 'image/svg+xml', 'x-content-type-options': 'nosniff' });
72
+ response.end('<svg xmlns="http://www.w3.org/2000/svg" width="1" height="1"/>');
46
73
  return true;
47
74
  }
48
75
 
@@ -30,6 +30,7 @@ export async function startLocalRuntime(input, dependencies = {}) {
30
30
  personalSpaceName: input.personalSpaceName,
31
31
  port: input.port,
32
32
  lan: input.lan === true,
33
+ lanAccessToken: input.lanAccessToken,
33
34
  runtimeSettings,
34
35
  previousRuntimeMode: input.previousRuntimeMode,
35
36
  personalOnly: !managesDevelopmentWorkspace,
@@ -196,7 +196,7 @@ export async function ensureGraphRuntime(input, dependencies = {}) {
196
196
  throw new Error('Fuli Graphiti console did not stop before restarting');
197
197
  }
198
198
  }
199
- const lanAccessToken = lan ? deps.createLanAccessToken() : null;
199
+ const lanAccessToken = lan ? input.lanAccessToken || deps.createLanAccessToken() : null;
200
200
  const child = deps.spawnWebRuntime({
201
201
  paths: input.paths,
202
202
  nodePath: process.execPath,
@@ -12,6 +12,7 @@ const BOOLEAN_OPTIONS = Object.freeze({
12
12
  '--yes': 'yes',
13
13
  '--codex-only': 'codexOnly',
14
14
  '--skip-agents': 'skipAgents',
15
+ '--connected-only': 'connectedOnly',
15
16
  '--no-start': 'noStart'
16
17
  });
17
18
 
@@ -0,0 +1,6 @@
1
+ import { resolveSetupPaths } from '../setup/paths.js';
2
+ import { runSettingsApply } from './settings-apply.js';
3
+
4
+ const [dataDir, id] = process.argv.slice(2);
5
+ if (!dataDir || !id) throw new TypeError('A settings operation is required.');
6
+ await runSettingsApply(resolveSetupPaths({ dataDir }), id);
@@ -0,0 +1,116 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { randomUUID } from 'node:crypto';
3
+ import { chmodSync } from 'node:fs';
4
+ import { createServer } from 'node:net';
5
+ import { join } from 'node:path';
6
+ import { fileURLToPath } from 'node:url';
7
+
8
+ import { readJsonFile, writeJsonFileAtomic } from '../storage/json-file.js';
9
+ import { restartLocalRuntime, startLocalRuntime } from '../local-runtime/lifecycle.js';
10
+ import { stopGraphProviders } from '../setup/graph-runtime.js';
11
+ import { writeRuntimeSettings } from './runtime-settings.js';
12
+
13
+ const operationPath = (paths) => join(paths.dataDir, 'settings-apply.json');
14
+ function saveOperation(paths, value) {
15
+ writeJsonFileAtomic(operationPath(paths), value);
16
+ chmodSync(operationPath(paths), 0o600);
17
+ }
18
+
19
+ export function createSettingsApplier({ paths, checkPorts = checkChangedPorts,
20
+ spawnWorker = spawn, writeSettings = writeRuntimeSettings } = {}) {
21
+ let preparing = false;
22
+ function status() {
23
+ const job = readJsonFile(operationPath(paths), null);
24
+ if (!job) return null;
25
+ const interrupted = job.status === 'applying' && Date.now() - job.startedAt > 10000
26
+ && !processAlive(job.workerPid);
27
+ return { id: job.id, status: interrupted ? 'failed' : job.status,
28
+ port: job.configured.ports.console,
29
+ error: interrupted ? 'Settings application was interrupted. Save again to retry.' : job.error,
30
+ rolledBack: job.rolledBack };
31
+ }
32
+ return {
33
+ status,
34
+ async prepare(configured, previous) {
35
+ if (preparing || status()?.status === 'applying') {
36
+ throw new TypeError('Settings are already being applied. Please wait.');
37
+ }
38
+ preparing = true;
39
+ try {
40
+ await checkPorts(configured, previous);
41
+ saveOperation(paths, { id: randomUUID(), status: 'applying', startedAt: Date.now(), configured, previous });
42
+ try { writeSettings(paths.runtimeSettingsPath, configured); }
43
+ catch (error) {
44
+ const job = readJsonFile(operationPath(paths));
45
+ saveOperation(paths, { ...job, status: 'failed', error: 'Could not save settings.' });
46
+ throw error;
47
+ }
48
+ return status();
49
+ } finally { preparing = false; }
50
+ },
51
+ start(id) {
52
+ const job = readJsonFile(operationPath(paths), null);
53
+ if (job?.id !== id || job.status !== 'applying' || job.workerPid) return;
54
+ const fail = () => {
55
+ writeSettings(paths.runtimeSettingsPath, job.previous);
56
+ saveOperation(paths, { ...job, status: 'failed', rolledBack: true,
57
+ error: 'Could not start settings application. Previous settings were restored.' });
58
+ };
59
+ try {
60
+ const child = spawnWorker(process.execPath, [
61
+ fileURLToPath(new URL('./settings-apply-worker.js', import.meta.url)), paths.dataDir, id,
62
+ ], { detached: true, windowsHide: true, stdio: 'ignore' });
63
+ child.once('error', fail);
64
+ if (!Number.isInteger(child.pid)) { fail(); return; }
65
+ saveOperation(paths, { ...job, workerPid: child.pid });
66
+ child.unref();
67
+ } catch { fail(); }
68
+ },
69
+ };
70
+ }
71
+
72
+ export async function runSettingsApply(paths, id, {
73
+ restart = restartLocalRuntime, start = startLocalRuntime, stop = stopGraphProviders,
74
+ } = {}) {
75
+ const job = readJsonFile(operationPath(paths), null);
76
+ if (job?.id !== id || job.status !== 'applying') return;
77
+ const previousConfig = readJsonFile(paths.graphRuntimeConfigPath, null);
78
+ const input = (runtimeSettings) => ({ paths, runtimeSettings,
79
+ port: runtimeSettings.ports.console, lan: runtimeSettings.lanAccess,
80
+ lanAccessToken: process.env.FULI_LAN_ACCESS_TOKEN, env: process.env });
81
+ try {
82
+ await restart(input(job.configured));
83
+ saveOperation(paths, { ...job, status: 'applied' });
84
+ } catch (error) {
85
+ let rolledBack = false;
86
+ try {
87
+ await stop(paths, paths.graphEnvPath, { runtimeMode: job.configured.graphRuntimeMode,
88
+ personalOnly: !(previousConfig?.workspaces ?? []).some(item => item.managedDevelopment) });
89
+ writeRuntimeSettings(paths.runtimeSettingsPath, job.previous);
90
+ if (previousConfig) {
91
+ writeJsonFileAtomic(paths.graphRuntimeConfigPath, previousConfig);
92
+ chmodSync(paths.graphRuntimeConfigPath, 0o600);
93
+ }
94
+ await start({ ...input(job.previous), previousRuntimeMode: job.previous.graphRuntimeMode });
95
+ rolledBack = true;
96
+ } catch { /* Keep the failed status; never report an unverified recovery. */ }
97
+ saveOperation(paths, { ...job, status: 'failed', rolledBack,
98
+ error: error instanceof Error ? error.message : 'Could not apply settings.' });
99
+ }
100
+ }
101
+
102
+ async function checkChangedPorts(configured, previous) {
103
+ for (const [key, port] of Object.entries(configured.ports)) {
104
+ if (port === previous.ports[key]) continue;
105
+ const server = createServer();
106
+ await new Promise((resolve, reject) => {
107
+ server.once('error', () => reject(new TypeError(`Port ${port} is unavailable or already in use.`)));
108
+ server.listen(port, configured.lanAccess ? '0.0.0.0' : '127.0.0.1', () => server.close(resolve));
109
+ });
110
+ }
111
+ }
112
+
113
+ function processAlive(pid) {
114
+ if (!Number.isInteger(pid)) return false;
115
+ try { process.kill(pid, 0); return true; } catch { return false; }
116
+ }
@@ -11,6 +11,7 @@ import { createAdaptiveRuntimeBroker } from '../adaptive-runtime/runtime-broker.
11
11
  import { readAdaptiveRuntimeSettings } from '../adaptive-runtime/settings.js';
12
12
  import { createPackageVersionChecker } from './package-version-checker.js';
13
13
  import { clientConnectionConfig } from '../setup/client-connection.js';
14
+ import { createSettingsApplier } from './settings-apply.js';
14
15
 
15
16
  export function createSystemService({
16
17
  paths,
@@ -21,6 +22,7 @@ export function createSystemService({
21
22
  readJson = readJsonFile,
22
23
  readSettings = readRuntimeSettings,
23
24
  writeSettings = writeRuntimeSettings,
25
+ settingsApplier = createSettingsApplier({ paths, writeSettings }),
24
26
  executorAdapters = new Map(),
25
27
  versionChecker = createPackageVersionChecker(),
26
28
  runtimeBroker = createAdaptiveRuntimeBroker({
@@ -51,17 +53,32 @@ export function createSystemService({
51
53
  function getSettings() {
52
54
  const active = activeSettings();
53
55
  const configured = readSettings(paths.runtimeSettingsPath, { fallback: active });
54
- return settingsResult(configured, active);
56
+ return { ...settingsResult(configured, active), apply: settingsApplier.status() };
55
57
  }
56
58
 
57
- function updateSettings(input) {
58
- const configured = writeSettings(paths.runtimeSettingsPath, input);
59
- return settingsResult(configured, activeSettings());
59
+ async function updateSettings(input) {
60
+ const configured = normalizeRuntimeSettings(input, { strict: true });
61
+ const active = activeSettings();
62
+ const result = settingsResult(configured, active);
63
+ if (settingsApplier.status()?.status === 'applying') {
64
+ throw new TypeError('Settings are already being applied. Please wait.');
65
+ }
66
+ if (result.restartRequired) {
67
+ const previous = readSettings(paths.runtimeSettingsPath, { fallback: active });
68
+ result.apply = await settingsApplier.prepare(configured, {
69
+ ...previous, ports: active.ports, lanAccess: active.lanAccess, graphRuntimeMode: active.graphRuntimeMode,
70
+ });
71
+ } else {
72
+ writeSettings(paths.runtimeSettingsPath, configured);
73
+ }
74
+ return result;
60
75
  }
61
76
 
62
77
  return {
63
78
  getSettings,
64
79
  updateSettings,
80
+ startSettingsApply: (id) => settingsApplier.start(id),
81
+ settingsApplyStatus: () => settingsApplier.status(),
65
82
  clientConnection: () => Object.fromEntries(['standard', 'vscode', 'server'].map((format) => [
66
83
  format, clientConnectionConfig({ mcpServerPath: paths.mcpServerPath, runtimeConfigPath }, format)
67
84
  ])),
@@ -103,7 +120,10 @@ export function settingsFromActiveRuntime({
103
120
  const personalProvider = urlPort(graphConfig?.personal?.providerUrl);
104
121
  if (personalProvider !== null) ports.personalProvider = personalProvider;
105
122
  const managedWorkspace = (graphConfig?.workspaces ?? []).find((workspace) =>
106
- workspace?.managedDevelopment === true || isLoopbackProvider(workspace?.providerUrl)
123
+ workspace?.managedDevelopment === true || (
124
+ isLoopbackProvider(workspace?.providerUrl)
125
+ && [8788, settings.ports.workspaceProvider].includes(urlPort(workspace?.providerUrl))
126
+ )
107
127
  );
108
128
  const workspaceProvider = urlPort(managedWorkspace?.providerUrl);
109
129
  if (workspaceProvider !== null) ports.workspaceProvider = workspaceProvider;
@@ -1 +0,0 @@
1
- import{B as e,E as t,H as n,I as r,N as i,P as a,Q as o,S as s,T as c,U as l,a as u,b as d,f,g as p,h as m,it as h,j as g,ot as _,p as v,rt as y,v as b,w as x,x as S,y as C}from"./i18n-oJFlt8hW.js";import{t as w}from"./console-Cw7TzOSC.js";import{o as T,r as ee,s as E}from"./client-DnwnUBQV.js";import{m as D}from"./useApi-CROJJdhE-7gt0QyQ5.js";import{t as O}from"./vue-router-CCvPGaLD.js";import{t as k}from"./UiSelect-K29jnV-1.js";import{t as A}from"./UiDisclosure-_IxeiexW.js";import{a as j,r as M,t as N}from"./profile-model-BQO4zNs9.js";import{a as P,h as te,l as ne,n as re}from"./task-evidence-DTiPCs7r.js";import{t as F}from"./useAgentRoster-B84mzZIg.js";import{n as I}from"./paths-CDREouhi.js";import{t as ie}from"./AgentName-DJpvkub2.js";import{t as ae}from"./AgentConversations-Ccy41mEA.js";import{i as oe,r as se,t as ce}from"./agent-work-summary-C-yW7x7A.js";import{a as le,s as ue}from"./catalog-D0VEfOAV.js";import{t as de}from"./project-team-api-C_0qJk_B.js";/* empty css */var L={key:1,class:`agent-locked-platforms`},R={key:2,class:`agent-platform-field`},fe=[`disabled`,`placeholder`],z=[`onUpdate:modelValue`,`disabled`],pe={key:3,role:`alert`},me={key:4,role:`status`},B=[`disabled`],he=t({__name:`AgentProfileSettings`,props:{agent:{}},emits:[`saved`],setup(t,{emit:n}){let i=t,h=n,g=o([]),v=o(!1),w=o(!1),D=o(``),O=o(!1),A=``,j=o(``),M=o(``),N=o({judgment:``,taste:``,personality:``}),P=b(()=>i.agent.profile.executorPolicy?.mode===`locked`),te=b(()=>{let e=i.agent.profile.executorPolicy;return(e?.lockedExecutorIds?.length?e.lockedExecutorIds:(e?.allowList??[]).map(e=>e.executorId)).map(e=>g.value.find(t=>t.executorId===e)?.displayName||e)}),ne=b(()=>g.value.filter(e=>e.registrationStatus===`registered`&&e.permissionStatus===`authorized`&&e.preflightStatus===`passed`&&e.workspacePermission&&e.healthStatus!==`unhealthy`&&(!e.healthRequired||e.healthStatus===`healthy`))),re=b(()=>[{value:``,label:u(`agentProfiles.automatic`)},...j.value&&!ne.value.some(e=>e.executorId===j.value)?[{value:j.value,label:u(`agentProfiles.platformUnavailable`),disabled:!0}]:[],...ne.value.map(e=>({value:e.executorId,label:e.displayName||e.executorId}))]),F=0;e(()=>`${i.agent.personalSpaceId}/${i.agent.agentId}`,async()=>{let e=i.agent,t=++F;M.value=e.profile.expectations??``,N.value={judgment:``,taste:``,personality:``,...e.profile.character},j.value=e.profile.executorPolicy?.preferredExecutorIds?.[0]??``,A=j.value,D.value=``,O.value=!1,w.value=!1,v.value=!0,g.value=[];try{let n=await ee(`/api/executors?${new URLSearchParams({personalSpaceId:e.personalSpaceId})}`);t===F&&(g.value=Array.isArray(n)?n:n.executors)}catch{t===F&&(D.value=u(`agentProfiles.platformUnavailable`))}finally{t===F&&(v.value=!1)}},{immediate:!0});async function I(){if(w.value)return;let e=F,t=i.agent;w.value=!0,D.value=``,O.value=!1;let n=t.profile.executorPolicy;try{let r=await T(`/api/project-agents`,{personalSpaceId:t.personalSpaceId,personalProjectId:t.personalProjectId??null,agentId:t.agentId,profile:{...t.profile,character:{...N.value},expectations:M.value,executorPolicy:P.value||j.value===A?n:{...n,mode:`flexible`,preferredExecutorIds:j.value?[j.value]:[]}}});e===F&&(A=j.value,h(`saved`,r),O.value=!0)}catch(t){e===F&&(D.value=t instanceof Error?t.message:u(`agentProfiles.saveError`))}finally{e===F&&(w.value=!1)}}return(e,t)=>(a(),s(`form`,{class:`agent-simple-settings`,onSubmit:m(I,[`prevent`])},[C(`h3`,null,_(y(u)(`agentProfiles.settings`)),1),v.value?(a(),d(E,{key:0,variant:`compact`,label:y(u)(`agentProfiles.settingsLoading`)},null,8,[`label`])):P.value?(a(),s(`div`,L,[C(`h4`,null,_(y(u)(`agentProfiles.platform`)),1),C(`p`,null,_(te.value.join(` · `)||y(u)(`agentProfiles.platformUnavailable`)),1),C(`small`,null,_(y(u)(`agentProfiles.locked`)),1)])):(a(),s(`div`,R,[c(k,{modelValue:j.value,"onUpdate:modelValue":t[0]||=e=>j.value=e,field:``,label:y(u)(`agentProfiles.platform`),options:re.value,disabled:P.value||w.value},null,8,[`modelValue`,`label`,`options`,`disabled`]),C(`small`,null,_(y(u)(P.value?`agentProfiles.locked`:`agentProfiles.platformHint`)),1)])),C(`label`,null,[x(_(y(u)(`agentProfiles.expectations`)),1),l(C(`textarea`,{"onUpdate:modelValue":t[1]||=e=>M.value=e,rows:`3`,maxlength:`4096`,disabled:w.value,placeholder:y(u)(`agentProfiles.expectationsPlaceholder`)},null,8,fe),[[f,M.value]])]),C(`details`,null,[C(`summary`,null,_(y(u)(`agentProfiles.editCharacter`)),1),(a(),s(p,null,r([`judgment`,`taste`,`personality`],e=>C(`label`,{key:e},[x(_(y(u)(`agentProfiles.${e}`)),1),l(C(`textarea`,{"onUpdate:modelValue":t=>N.value[e]=t,rows:`2`,maxlength:`2048`,disabled:w.value},null,8,z),[[f,N.value[e]]])])),64))]),D.value?(a(),s(`p`,pe,_(D.value),1)):S(``,!0),O.value?(a(),s(`p`,me,_(y(u)(`agentProfiles.saved`)),1)):S(``,!0),C(`button`,{class:`primary-button`,disabled:w.value||v.value,type:`submit`},[w.value?(a(),d(E,{key:0,variant:`inline`,label:y(u)(`agentProfiles.saving`)},null,8,[`label`])):(a(),s(p,{key:1},[x(_(y(u)(`agentProfiles.save`)),1)],64))],8,B)],32))}}),ge=[`aria-label`],_e={key:1,class:`ui-card ui-empty agent-profile-empty`,role:`alert`},ve={key:2,class:`ui-card ui-empty agent-profile-empty`},ye={class:`ui-card agent-resume-header`},be={class:`agent-portrait`,"aria-hidden":`true`},xe={class:`agent-resume-intro`},Se={class:`agent-resume-name-row`},Ce={key:0,class:`ui-badge fla-employee-number`},we={class:`agent-resume-meta`},Te={class:`agent-profile-actions`},Ee=[`aria-expanded`],De={key:1,class:`agent-profile-refresh-status`,role:`status`},Oe=[`aria-label`],ke=[`id`,`aria-selected`,`aria-controls`,`tabindex`,`onClick`,`onKeydown`],Ae={key:4,class:`agent-profile-partial`,role:`status`},je=[`aria-hidden`],Me={class:`agent-profile-primary-grid`},Ne={class:`ui-card agent-resume-section agent-current-work-section`},Pe={class:`agent-section-heading`},Fe={key:0},Ie={key:0,class:`agent-current-work-list`},Le={class:`ui-badge`},Re={key:1,class:`agent-muted`},ze={key:2,class:`agent-muted`},Be={class:`ui-card agent-resume-section agent-projects-section`},Ve={class:`agent-section-heading`},He={class:`agent-resume-list agent-current-project-list`},Ue={key:0,class:`agent-project-responsibility`},We={class:`agent-resume-list`},Ge={key:0,class:`agent-project-responsibility`},Ke={key:1,class:`agent-muted`},qe=[`aria-hidden`],Je={class:`ui-card agent-resume-section`},Ye={key:0,class:`ui-disclosure`,open:``},Xe={class:`agent-resume-list`},Ze={key:1,class:`agent-muted`},Qe={class:`ui-card agent-resume-section`},$e={class:`agent-muted`},et={class:`agent-work-timeline`},tt={class:`agent-section-heading`},nt={key:0},rt={key:0},it={key:0},at={key:0,class:`agent-muted`},ot=[`aria-hidden`],st={class:`ui-card agent-resume-section`},ct={class:`agent-character`},lt={key:0,class:`agent-expectation`},ut={class:`agent-strengths`},dt={class:`agent-inline-skills`},ft={key:0},pt=[`aria-hidden`],mt={class:`ui-card agent-resume-section`},ht={class:`agent-section-heading`},gt={key:0,role:`status`},_t={key:0,class:`agent-org-lead-unavailable`,role:`status`},vt={key:1,class:`agent-org-lead`},yt={key:2,class:`agent-org-reporting`},bt={key:3,class:`agent-org-members`},xt={key:2,class:`agent-muted`},St={key:0,class:`agent-muted`},Ct={class:`ui-card agent-resume-section`},wt={class:`agent-collaborators`},Tt={key:0,class:`agent-muted`},Et=[`aria-hidden`],Dt={class:`ui-card agent-resume-section`},Ot=[`aria-hidden`],kt={class:`ui-card agent-resume-section agent-management-card`},At={class:`agent-muted`},jt={class:`agent-profile-management-links`},Mt={class:`agent-profile-footer`},Nt=t({__name:`AgentProfilePage`,setup(t){let f=D(),m=w(),T=b(()=>m.activePersonalSpace?.id??``),{agents:k,loading:L,error:R,load:fe}=F(T),z=b(()=>f.params.spaceId===T.value?k.value.find(e=>e.personalSpaceId===T.value&&(e.agentId===f.params.agentId||e.legacyAgentIds?.includes(String(f.params.agentId)))):void 0),pe=b(()=>(m.state?.personalProjects??[]).filter(e=>e.personal_space_id===T.value)),me=b(()=>pe.value.map(e=>({id:e.project_id,name:e.profile.name}))),B=e=>pe.value.find(t=>t.project_id===e)?.profile.name||e,Nt=e=>{let t=k.value.find(t=>t.agentId===e);return t?N(t):e},V=o([]),H=o(void 0),U=o([]),W=o(!1),G=o(!1),K=o(!1),q=o(`overview`),J=b(()=>{let e=[{id:`overview`,label:u(`agentProfiles.working`)},{id:`history`,label:u(`agentProfiles.experience`)},{id:`style`,label:u(`agentProfiles.about`)},{id:`collaborators`,label:u(`agentProfiles.collaborators`)},{id:`management`,label:u(`agentProfiles.advanced`)}];return z.value?.memoryScope===`reviewed_agent`&&e.splice(4,0,{id:`conversations`,label:u(`projectAgents.conversations.title`)}),e}),Pt=b(()=>z.value?M(z.value.agentId,V.value):[]),Y=b(()=>z.value?j({...z.value,assignments:H.value??z.value.assignments}):[]),Ft=b(()=>Y.value.slice(0,4)),It=b(()=>Y.value.slice(4)),Lt=b(()=>(H.value??[]).filter(e=>e.status!==`active`)),X=b(()=>V.value.filter(e=>oe.has(e.status)).slice(0,6)),Z=b(()=>le.value.find(e=>e.agentId===z.value?.agentId)),Q=e=>e&&!Number.isNaN(Date.parse(e))?new Date(e).toLocaleDateString():u(`agentProfiles.timeUnknown`),$=e=>{let t=H.value?.find(t=>t.personalProjectId===e&&t.status===`active`)?.responsibility?.trim(),n=z.value?.profile.responsibility.trim();return t&&t!==n?t:``},Rt=b(()=>{let e=`agentRedesign.projects.more`,t=u(e,{count:Y.value.length});return t===e?`All projects (${Y.value.length})`:t}),zt=0;e(()=>z.value?`${z.value.personalSpaceId}/${z.value.agentId}`:``,async()=>{let e=z.value,t=++zt;if(V.value=[],H.value=void 0,U.value=[],G.value=!1,W.value=!1,K.value=!1,q.value=`overview`,!e)return;ue(e.personalSpaceId),W.value=!0,H.value=e.assignments;let n=new URLSearchParams({personalSpaceId:e.personalSpaceId}),r=new URLSearchParams({personalSpaceId:e.personalSpaceId,agentId:e.agentId}),i=await Promise.allSettled([ee(`/api/project-agent-tasks?${n}&limit=200`),ee(`/api/project-agent-assignments?${r}`)]);if(t!==zt)return;let[a,o]=i;if(a.status===`fulfilled`){let t=a.value,n=te(t);G.value=!ce(t),V.value=re(Array.isArray(t)?t:n.tasks??n.items).map(ne).filter(t=>!!(t&&(!t.personalSpaceId||t.personalSpaceId===e.personalSpaceId)&&se(t,e.agentId))).sort((e,t)=>(t.updatedAt??t.createdAt??``).localeCompare(e.updatedAt??e.createdAt??``))}else G.value=!0;if(o.status===`fulfilled`){let t=o.value,n=te(t);H.value=re(Array.isArray(t)?t:n.assignments??n.items).map(t=>P(t,e)).filter(t=>!!(t&&t.agentId===e.agentId&&t.personalSpaceId===e.personalSpaceId))}else G.value=!0;let s=j({...e,assignments:H.value??e.assignments}),c=await Promise.all(s.map(async t=>{try{return{projectId:t,view:await de(e.personalSpaceId,t),error:!1}}catch{return{projectId:t,view:null,error:!0}}}));t===zt&&(U.value=c,W.value=!1)},{immediate:!0});function Bt(e){let t=k.value.findIndex(t=>t.agentId===e.agentId);t>=0&&(k.value[t]={...k.value[t],...e})}function Vt(e){q.value=e}function Ht(e,t){let n=e.key;if(![`ArrowLeft`,`ArrowRight`,`Home`,`End`].includes(n))return;let r=e.currentTarget;e.preventDefault();let i=J.value.length,a=n===`Home`?0:n===`End`?i-1:(t+(n===`ArrowRight`?1:-1)+i)%i,o=J.value[a];o&&(Vt(o.id),g(()=>{let e=(r?.closest(`[role="tablist"]`))?.querySelectorAll(`[role="tab"]`)[a];e?.focus(),e?.scrollIntoView?.({block:`nearest`,inline:`nearest`})}))}return i(()=>{m.runtimeStatus===`idle`&&m.refresh()}),(e,t)=>(a(),s(`section`,{class:`view agent-profile-page`,"aria-label":y(u)(`agentProfiles.profile`)},[c(y(O),{class:`agent-profile-back`,to:`/project-agents`},{default:n(()=>[x(` ← `+_(y(u)(`agentProfiles.back`)),1)]),_:1}),(y(L)||y(m).runtimeStatus===`loading`)&&!z.value?(a(),d(E,{key:0,label:y(u)(`agentProfiles.loading`)},null,8,[`label`])):(y(R)||y(m).runtimeStatus===`error`)&&!z.value?(a(),s(`div`,_e,[C(`p`,null,_(y(R)||y(u)(`agentProfiles.loadError`)),1),C(`button`,{class:`quiet-button`,type:`button`,onClick:t[0]||=e=>y(m).state?y(fe)():y(m).refresh()},_(y(u)(`agentProfiles.retry`)),1)])):z.value?(a(),s(p,{key:3},[C(`header`,ye,[C(`span`,be,_(z.value.profile.occupationEmoji||y(N)(z.value).slice(0,1)),1),C(`div`,xe,[C(`div`,Se,[C(`h1`,null,_(y(N)(z.value)),1),z.value.employeeNumber?(a(),s(`span`,Ce,`FLA `+_(z.value.employeeNumber),1)):S(``,!0),C(`span`,{class:h([`ui-badge agent-profile-membership`,`is-${z.value.profile.status}`])},_(y(u)(`projectAgents.status.${z.value.profile.status}`)),3)]),C(`p`,null,_(z.value.profile.responsibility),1),C(`div`,we,[C(`span`,null,_(y(u)(z.value.recruitedAt?`agentProfiles.joined`:`agentProfiles.created`))+` · `+_(Q(z.value.recruitedAt||z.value.createdAt)),1)])]),C(`div`,Te,[Z.value?(a(),d(y(O),{key:0,class:`quiet-button`,to:`/employees/${encodeURIComponent(Z.value.id)}`},{default:n(()=>[x(_(y(u)(`agentProfiles.workbench`)),1)]),_:1},8,[`to`])):S(``,!0),C(`button`,{class:`quiet-button`,type:`button`,"aria-expanded":K.value,onClick:t[1]||=e=>K.value=!K.value},_(y(u)(`agentProfiles.settings`)),9,Ee),c(y(O),{class:`quiet-button`,to:{path:`/employees/bole`,query:{q:y(N)(z.value)}}},{default:n(()=>[x(_(y(u)(`agentProfiles.askHR`)),1)]),_:1},8,[`to`])])]),y(L)||y(m).runtimeStatus===`loading`?(a(),d(E,{key:0,variant:`compact`,label:y(u)(`agentProfiles.loading`)},null,8,[`label`])):S(``,!0),y(R)?(a(),s(`p`,De,_(y(R)),1)):S(``,!0),K.value?(a(),d(he,{key:z.value.agentId,agent:z.value,onSaved:Bt},null,8,[`agent`])):S(``,!0),W.value?(a(),d(E,{key:3,variant:`compact`,label:y(u)(`agentProfiles.detailLoading`)},null,8,[`label`])):S(``,!0),C(`nav`,{class:`agent-profile-tabs`,role:`tablist`,"aria-label":y(u)(`agentProfiles.profile`)},[(a(!0),s(p,null,r(J.value,e=>(a(),s(`button`,{id:`agent-tab-${e.id}`,key:e.id,class:`agent-profile-tab`,type:`button`,role:`tab`,"aria-selected":q.value===e.id,"aria-controls":`agent-panel-${e.id}`,tabindex:q.value===e.id?0:-1,onClick:t=>Vt(e.id),onKeydown:t=>Ht(t,J.value.findIndex(t=>t.id===e.id))},_(e.label),41,ke))),128))],8,Oe),G.value?(a(),s(`p`,Ae,_(y(u)(`agentProfiles.partial`)),1)):S(``,!0),l(C(`section`,{id:`agent-panel-overview`,class:`agent-profile-panel`,role:`tabpanel`,"aria-labelledby":`agent-tab-overview`,"aria-hidden":q.value!==`overview`,tabindex:`0`},[C(`div`,Me,[C(`section`,Ne,[C(`div`,Pe,[C(`h2`,null,_(y(u)(`agentProfiles.working`)),1),X.value.length?(a(),s(`span`,Fe,_(X.value.length),1)):S(``,!0)]),X.value.length?(a(),s(`ul`,Ie,[(a(!0),s(p,null,r(X.value,e=>(a(),s(`li`,{key:e.taskId},[c(y(O),{to:{path:`/project-agents/manage`,query:{agent:z.value.agentId,task:e.taskId}}},{default:n(()=>[x(_(e.title),1)]),_:2},1032,[`to`]),C(`span`,Le,_(y(u)(`projectAgents.taskStatus.${e.status}`)),1)]))),128))])):!W.value&&!G.value?(a(),s(`p`,Re,_(y(u)(`agentProfiles.idle`)),1)):W.value?S(``,!0):(a(),s(`p`,ze,_(y(u)(`agentProfiles.partial`)),1))]),C(`section`,Be,[C(`div`,Ve,[C(`h2`,null,_(y(u)(`agentProfiles.projects`)),1),C(`span`,null,_(Y.value.length),1)]),C(`ul`,He,[(a(!0),s(p,null,r(Ft.value,e=>(a(),s(`li`,{key:e,class:`agent-project-item`},[C(`h3`,null,[c(y(O),{class:`agent-project-link`,to:y(I)(T.value,`overview`,e)},{default:n(()=>[x(_(B(e)),1)]),_:2},1032,[`to`])]),$(e)?(a(),s(`p`,Ue,_($(e)),1)):S(``,!0)]))),128))]),It.value.length?(a(),d(A,{key:0,class:`agent-project-overflow`,title:Rt.value},{default:n(()=>[C(`ul`,We,[(a(!0),s(p,null,r(It.value,e=>(a(),s(`li`,{key:e,class:`agent-project-item`},[C(`h3`,null,[c(y(O),{class:`agent-project-link`,to:y(I)(T.value,`overview`,e)},{default:n(()=>[x(_(B(e)),1)]),_:2},1032,[`to`])]),$(e)?(a(),s(`p`,Ge,_($(e)),1)):S(``,!0)]))),128))])]),_:1},8,[`title`])):S(``,!0),!W.value&&!Y.value.length?(a(),s(`p`,Ke,_(y(u)(`agentProfiles.noProject`)),1)):S(``,!0)])])],8,je),[[v,q.value===`overview`]]),l(C(`section`,{id:`agent-panel-history`,class:`agent-profile-panel`,role:`tabpanel`,"aria-labelledby":`agent-tab-history`,"aria-hidden":q.value!==`history`,tabindex:`0`},[C(`section`,Je,[C(`h2`,null,_(y(u)(`agentProfiles.projects`)),1),Lt.value.length?(a(),s(`details`,Ye,[C(`summary`,null,_(y(u)(`agentProfiles.projectHistory`)),1),C(`ul`,Xe,[(a(!0),s(p,null,r(Lt.value,e=>(a(),s(`li`,{key:e.assignmentId},[C(`h3`,null,[c(y(O),{class:`agent-project-link`,to:y(I)(T.value,`overview`,e.personalProjectId)},{default:n(()=>[x(_(B(e.personalProjectId)),1)]),_:2},1032,[`to`])]),C(`p`,null,_(e.responsibility),1),C(`small`,null,_(Q(e.assignedAt))+` – `+_(Q(e.endedAt)),1)]))),128))])])):W.value?S(``,!0):(a(),s(`p`,Ze,_(y(u)(`agentProfiles.noProject`)),1))]),C(`section`,Qe,[C(`h2`,null,_(y(u)(`agentProfiles.experience`)),1),C(`p`,$e,_(y(u)(`agentProfiles.recent`)),1),C(`ol`,et,[(a(!0),s(p,null,r(V.value.slice(0,12),e=>(a(),s(`li`,{key:e.taskId},[C(`div`,tt,[c(y(O),{to:{path:`/project-agents/manage`,query:{agent:z.value.agentId,task:e.taskId}}},{default:n(()=>[x(_(e.title),1)]),_:2},1032,[`to`]),C(`span`,null,_(y(u)(`projectAgents.taskStatus.${e.status}`)),1)]),e.resultSummary?(a(),s(`p`,nt,_(e.resultSummary),1)):S(``,!0),C(`small`,null,_(Q(e.completedAt||e.updatedAt||e.createdAt)),1)]))),128)),z.value.recruitedAt||z.value.recruitmentReason?(a(),s(`li`,rt,[C(`h3`,null,_(y(u)(`agentProfiles.recruitment`)),1),z.value.recruitmentReason?(a(),s(`p`,it,_(z.value.recruitmentReason),1)):S(``,!0),C(`small`,null,_(Q(z.value.recruitedAt)),1)])):S(``,!0)]),!W.value&&!V.value.length&&!z.value.recruitmentReason&&!z.value.recruitedAt?(a(),s(`p`,at,_(y(u)(`agentProfiles.noExperience`)),1)):S(``,!0)])],8,qe),[[v,q.value===`history`]]),l(C(`section`,{id:`agent-panel-style`,class:`agent-profile-panel`,role:`tabpanel`,"aria-labelledby":`agent-tab-style`,"aria-hidden":q.value!==`style`,tabindex:`0`},[C(`section`,st,[C(`h2`,null,_(y(u)(`agentProfiles.about`)),1),C(`div`,ct,[(a(),s(p,null,r([`judgment`,`taste`,`personality`],e=>C(`div`,{key:e},[C(`h3`,null,_(y(u)(`agentProfiles.${e}`)),1),C(`p`,{class:h({"agent-muted":!z.value.profile.character?.[e]})},_(z.value.profile.character?.[e]||y(u)(`agentProfiles.characterEmpty`)),3)])),64))]),z.value.profile.expectations?(a(),s(`p`,lt,[C(`strong`,null,_(y(u)(`agentProfiles.expectations`)),1),x(` `+_(z.value.profile.expectations),1)])):S(``,!0),C(`div`,ut,[C(`h3`,null,_(y(u)(`agentProfiles.strengths`)),1),C(`div`,dt,[(a(!0),s(p,null,r(z.value.profile.capabilities,e=>(a(),s(`span`,{key:e},_(e),1))),128)),z.value.profile.capabilities.length?S(``,!0):(a(),s(`span`,ft,_(y(u)(`agentProfiles.noSkills`)),1))])])])],8,ot),[[v,q.value===`style`]]),l(C(`section`,{id:`agent-panel-collaborators`,class:`agent-profile-panel`,role:`tabpanel`,"aria-labelledby":`agent-tab-collaborators`,"aria-hidden":q.value!==`collaborators`,tabindex:`0`},[C(`section`,mt,[C(`div`,ht,[C(`h2`,null,_(y(u)(`agentProfiles.organization`)),1),c(y(O),{to:{path:`/employees/bole`,query:{q:y(N)(z.value)}}},{default:n(()=>[x(_(y(u)(`agentProfiles.hr`)),1)]),_:1},8,[`to`])]),(a(!0),s(p,null,r(U.value,e=>(a(),s(`div`,{key:e.projectId,class:`agent-organization`},[C(`h3`,null,_(B(e.projectId)),1),e.error?(a(),s(`p`,gt,_(y(u)(`agentProfiles.teamUnavailable`)),1)):e.view&&(e.view.lead||e.view.unavailableLead||e.view.members.length)?(a(),s(p,{key:1},[e.view.unavailableLead?(a(),s(`p`,_t,_(e.view.unavailableLead.name?y(u)(`agentProfiles.leadUnavailable`,{name:e.view.unavailableLead.name}):y(u)(`agentProfiles.leadUnavailableUnnamed`)),1)):S(``,!0),e.view.lead?(a(),s(`div`,vt,[C(`span`,null,_(y(u)(`agentProfiles.lead`)),1),c(ie,{"space-id":T.value,"agent-id":e.view.lead.agentId,name:e.view.lead.name},null,8,[`space-id`,`agent-id`,`name`])])):S(``,!0),e.view.lead?(a(),s(`p`,yt,_(y(u)(`agentProfiles.reporting`)),1)):S(``,!0),e.view.members.length?(a(),s(`div`,bt,[C(`span`,null,_(y(u)(`agentProfiles.teammates`)),1),C(`ul`,null,[(a(!0),s(p,null,r(e.view.members,e=>(a(),s(`li`,{key:e.agentId},[c(ie,{"space-id":T.value,"agent-id":e.agentId,name:e.name},null,8,[`space-id`,`agent-id`,`name`])]))),128))])])):S(``,!0)],64)):(a(),s(`p`,xt,_(y(u)(`agentProfiles.teamUnset`)),1))]))),128)),!W.value&&!U.value.length?(a(),s(`p`,St,_(y(u)(`agentProfiles.noProject`)),1)):S(``,!0)]),C(`section`,Ct,[C(`h2`,null,_(y(u)(`agentProfiles.collaborators`)),1),C(`ul`,wt,[(a(!0),s(p,null,r(Pt.value,e=>(a(),s(`li`,{key:e.agentId},[c(ie,{"space-id":T.value,"agent-id":e.agentId,name:Nt(e.agentId)},null,8,[`space-id`,`agent-id`,`name`]),C(`span`,null,_(y(u)(`agentProfiles.sharedTasks`,{count:e.count})),1)]))),128))]),!W.value&&!Pt.value.length?(a(),s(`p`,Tt,_(y(u)(`agentProfiles.noCollaborators`)),1)):S(``,!0)])],8,pt),[[v,q.value===`collaborators`]]),z.value.memoryScope===`reviewed_agent`?l((a(),s(`section`,{key:5,id:`agent-panel-conversations`,class:`agent-profile-panel`,role:`tabpanel`,"aria-labelledby":`agent-tab-conversations`,"aria-hidden":q.value!==`conversations`,tabindex:`0`},[C(`section`,Dt,[(a(),d(ae,{key:z.value.agentId,"personal-space-id":T.value,"agent-id":z.value.agentId,projects:me.value},null,8,[`personal-space-id`,`agent-id`,`projects`]))])],8,Et)),[[v,q.value===`conversations`]]):S(``,!0),l(C(`section`,{id:`agent-panel-management`,class:`agent-profile-panel`,role:`tabpanel`,"aria-labelledby":`agent-tab-management`,"aria-hidden":q.value!==`management`,tabindex:`0`},[C(`section`,kt,[C(`h2`,null,_(y(u)(`agentProfiles.advanced`)),1),C(`p`,At,_(y(u)(`agentProfiles.locked`)),1),C(`div`,jt,[Z.value?(a(),d(y(O),{key:0,class:`quiet-button`,to:`/employees/${encodeURIComponent(Z.value.id)}`},{default:n(()=>[x(_(y(u)(`agentProfiles.workbench`)),1)]),_:1},8,[`to`])):S(``,!0),c(y(O),{class:`quiet-button`,to:{path:`/project-agents/manage`,query:{agent:z.value.agentId}}},{default:n(()=>[x(_(y(u)(`agentProfiles.advanced`)),1)]),_:1},8,[`to`])])])],8,Ot),[[v,q.value===`management`]]),C(`footer`,Mt,[Z.value?(a(),d(y(O),{key:0,to:`/employees/${encodeURIComponent(Z.value.id)}`},{default:n(()=>[x(_(y(u)(`agentProfiles.workbench`)),1)]),_:1},8,[`to`])):S(``,!0),c(y(O),{to:{path:`/project-agents/manage`,query:{agent:z.value.agentId}}},{default:n(()=>[x(_(y(u)(`agentProfiles.advanced`)),1)]),_:1},8,[`to`])])],64)):(a(),s(`p`,ve,_(y(u)(`agentProfiles.unavailable`)),1))],8,ge))}});export{Nt as default};
@@ -1 +0,0 @@
1
- import{B as e,E as t,H as n,I as r,N as i,P as a,Q as o,S as s,T as c,U as l,a as u,b as d,f,g as p,h as m,it as h,ot as g,p as _,rt as v,v as y,w as b,x,y as S}from"./i18n-oJFlt8hW.js";import{t as C}from"./console-Cw7TzOSC.js";import{r as w,s as T}from"./client-DnwnUBQV.js";import{t as E}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{h as D,m as O}from"./useApi-CROJJdhE-7gt0QyQ5.js";import{t as k}from"./vue-router-CCvPGaLD.js";import{t as A}from"./UiSelect-K29jnV-1.js";import{t as j}from"./AgentHand-UzVhbKUC.js";import{a as M,i as N,n as P,t as F}from"./profile-model-BQO4zNs9.js";import{a as I,o as ee,r as L}from"./agent-pins-DS4mNsNt.js";import{n as R,t as z}from"./agent-work-summary-C-yW7x7A.js";import{a as B,s as te}from"./catalog-D0VEfOAV.js";/* empty css */import{t as ne}from"./ProjectAgentFirstTask-BkRJ0zwO.js";import{n as V,t as re}from"./EmployeeRecruitDialog-D8Hvhc-M.js";var ie={viewBox:`0 0 1024 1024`,width:`18`,height:`18`,fill:`currentColor`,"aria-hidden":`true`,focusable:`false`},H=[`d`],ae=`M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3a33.23 33.23 0 0 0-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 0 0-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8zM666.2 549.3l-24.5 24.5 3.8 34.4a259.92 259.92 0 0 1-30.4 153.9L262 408.8c12.9-7.1 26.3-13.1 40.3-17.9 27.2-9.4 55.7-14.1 84.7-14.1 9.6 0 19.3.5 28.9 1.6l34.4 3.8 24.5-24.5L608.5 224 800 415.5 666.2 549.3z`,oe=`M878.3 392.1L631.9 145.7c-6.5-6.5-15-9.7-23.5-9.7s-17 3.2-23.5 9.7L423.8 306.9c-12.2-1.4-24.5-2-36.8-2-73.2 0-146.4 24.1-206.5 72.3-15.4 12.3-16.6 35.4-2.7 49.4l181.7 181.7-215.4 215.2a15.8 15.8 0 0 0-4.6 9.8l-3.4 37.2c-.9 9.4 6.6 17.4 15.9 17.4.5 0 1 0 1.5-.1l37.2-3.4c3.7-.3 7.2-2 9.8-4.6l215.4-215.4 181.7 181.7c6.5 6.5 15 9.7 23.5 9.7 9.7 0 19.3-4.2 25.9-12.4 56.3-70.3 79.7-158.3 70.2-243.4l161.1-161.1c12.9-12.8 12.9-33.8 0-46.8z`,se=t({__name:`PinIcon`,props:{filled:{type:Boolean,default:!1}},setup(e){return(t,n)=>(a(),s(`svg`,ie,[S(`path`,{d:e.filled?oe:ae},null,8,H)]))}}),U={class:`ui-card agent-card`},W={class:`agent-card-topline`},G={class:`agent-portrait small`,"aria-hidden":`true`},K={class:`agent-directory-name`},q={key:0,class:`ui-badge fla-employee-number`},ce={key:1,class:`ui-badge ui-badge--accent agent-card-role`},le=[`data-membership-status`],J=[`data-work-status`,`aria-label`],Y=[`aria-label`,`aria-pressed`,`title`,`disabled`],X={class:`agent-card-responsibility`},ue={key:0,class:`agent-inline-skills`},Z={class:`agent-card-meta`},Q={class:`agent-card-projects`},de={key:0,class:`agent-card-project-list`},$=[`title`],fe={key:0,class:`ui-badge agent-card-project-count`},pe={key:1,class:`ui-badge`},me={key:2,class:`agent-card-no-project`},he=E(t({__name:`AgentCard`,props:{agent:{},spaceId:{},projectNames:{},managesAllProjects:{type:Boolean},workSummary:{},workState:{},pinned:{type:Boolean},pinPending:{type:Boolean}},emits:[`toggle-pin`],setup(e,{emit:t}){let i=e,o=t,l=y(()=>F(i.agent)),f=y(()=>M(i.agent)),_=y(()=>f.value.slice(0,2).map(e=>i.projectNames?.[e]||e)),C=y(()=>Math.max(f.value.length-2,0)),w=y(()=>i.agent.profile.capabilities.slice(0,3)),E=y(()=>`is-${i.agent.profile.status}`),D=y(()=>u(`projectAgents.status.${i.agent.profile.status}`)),O=y(()=>i.workSummary?i.workSummary.status:i.workState===`loading`?`loading`:i.workState===`error`?`unavailable`:i.workState===`incomplete`?`unreported`:`none`),A=y(()=>`is-${O.value}`),N=y(()=>({coordinator:u(`agentProfiles.roles.projectManager`),hr:u(`agentProfiles.roles.hr`)})[i.agent.profile.agentType]??``);function I(e,t,n){let r=u(e,n);return r===e?t:r}let ee=y(()=>I(`agentRedesign.membershipStatus`,`Member · ${D.value}`,{status:D.value})),R=y(()=>{let e={awaiting_recruitment:`Awaiting recruitment`,queued:`Queued`,running:`Running`,paused:`Paused`,awaiting_review:`Awaiting review`,blocked:`Blocked`,none:u(`agentProfiles.idle`),loading:`Loading work status`,unreported:`Partial status`,unavailable:`Unavailable`}[O.value];return I(`agentRedesign.workStatus.${O.value}`,e??`Work status unavailable`)}),z=y(()=>i.pinPending?L(`saving`,`Saving Agent pin…`):i.pinned?L(`unpin`,`Unpin Agent`):L(`pin`,`Pin Agent`));function B(){o(`toggle-pin`,!i.pinned)}return(t,i)=>(a(),s(`article`,U,[S(`div`,W,[S(`span`,G,g(e.agent.profile.occupationEmoji||l.value.slice(0,1)),1),S(`div`,K,[c(v(k),{to:v(P)(e.spaceId,e.agent.agentId),"aria-label":`${l.value} · ${v(u)(`agentProfiles.profile`)}`},{default:n(()=>[b(g(l.value),1)]),_:1},8,[`to`,`aria-label`]),e.agent.employeeNumber?(a(),s(`span`,q,`FLA `+g(e.agent.employeeNumber),1)):x(``,!0),N.value?(a(),s(`span`,ce,g(N.value),1)):x(``,!0),c(j,{"agent-id":e.agent.agentId},null,8,[`agent-id`])]),e.agent.profile.status===`active`?x(``,!0):(a(),s(`span`,{key:0,class:h([`ui-badge agent-card-status agent-card-membership-status`,E.value]),"data-membership-status":e.agent.profile.status},g(ee.value),11,le)),e.agent.profile.status===`active`||![`none`,`loading`].includes(O.value)?(a(),s(`span`,{key:1,class:h([`agent-card-work-status`,A.value]),"data-work-status":O.value,"aria-label":`${v(u)(`agentRedesign.workStatus.label`)} · ${R.value}`},g(R.value),11,J)):x(``,!0),S(`button`,{class:`agent-card-pin quiet-button`,"data-agent-pin-toggle":``,type:`button`,"aria-label":`${z.value} · ${l.value}`,"aria-pressed":!!e.pinned,title:z.value,disabled:e.pinPending,onClick:m(B,[`stop`])},[e.pinPending?(a(),d(T,{key:0,variant:`inline`,label:z.value},null,8,[`label`])):(a(),d(se,{key:1,filled:e.pinned},null,8,[`filled`]))],8,Y)]),S(`p`,X,g(e.agent.profile.responsibility),1),w.value.length?(a(),s(`div`,ue,[(a(!0),s(p,null,r(w.value,e=>(a(),s(`span`,{key:e},g(e),1))),128))])):x(``,!0),S(`div`,Z,[S(`div`,Q,[_.value.length?(a(),s(`div`,de,[(a(!0),s(p,null,r(_.value,e=>(a(),s(`span`,{key:e,class:`ui-badge agent-card-project-badge`,title:e},g(e),9,$))),128)),C.value?(a(),s(`span`,fe,` +`+g(C.value),1)):x(``,!0)])):e.managesAllProjects?(a(),s(`span`,pe,g(v(u)(`agentProfiles.allProjects`)),1)):(a(),s(`span`,me,g(v(u)(`agentProfiles.noProject`)),1))]),c(v(k),{class:`agent-directory-open`,to:v(P)(e.spaceId,e.agent.agentId),"aria-label":`${l.value} · ${v(u)(`agentProfiles.profile`)}`},{default:n(()=>[b(g(v(u)(`agentProfiles.profile`))+` → `,1)]),_:1},8,[`to`,`aria-label`])])]))}}),[[`__scopeId`,`data-v-3cd2dc47`]]);function ge(t){let n=o({}),r=o(!1),i=o(``),a=o(`idle`),s=new Map,c=0;async function l(){let e=++c,o=t.value;if(i.value=``,!o){n.value={},r.value=!1,a.value=`idle`;return}let l=s.get(o);l?n.value=l:Object.keys(n.value).length&&(n.value={}),r.value=!0,a.value=`loading`;try{let r=await w(`/api/project-agent-tasks?${new URLSearchParams({personalSpaceId:o,limit:`200`})}`);if(e!==c||t.value!==o)return;let i=R(r,o);s.set(o,i),n.value=i,a.value=z(r)?`ready`:`incomplete`}catch(n){if(e!==c||t.value!==o)return;i.value=n instanceof Error?n.message:u(`agentProfiles.loadError`),a.value=`error`}finally{e===c&&t.value===o&&(r.value=!1)}}return e(t,l,{immediate:!0}),{summaries:n,loading:r,error:i,state:a,load:l}}var _e=[`src`],ve=E(t({__name:`EmployeeWorkbenchLinks`,props:{personalSpaceId:{}},setup(t){let i=t;e(()=>i.personalSpaceId,e=>{te(e===`current`?``:e)},{immediate:!0});let o=y(()=>B.value.filter(e=>e.agentId&&e.agentStatus===`active`&&(e.runtime||e.workbench?.kind===`native`)));return(e,t)=>(a(!0),s(p,null,r(o.value,e=>(a(),d(v(k),{key:e.id,class:`ui-button employee-workbench-link`,to:`/employees/${encodeURIComponent(e.id)}`,title:v(u)(`agentProfiles.workbench`)},{default:n(()=>[v(V)(e.id)?(a(),s(`img`,{key:0,src:v(V)(e.id),alt:``,"aria-hidden":`true`},null,8,_e)):x(``,!0),b(` `+g(e.name)+` · `+g(e.role),1)]),_:2},1032,[`to`,`title`]))),128))}}),[[`__scopeId`,`data-v-4906fde1`]]),ye=[`aria-label`],be={class:`ui-toolbar agents-directory-heading`},xe={key:0,class:`agents-directory-count`},Se={key:1,class:`agents-directory-count`,"aria-hidden":`true`},Ce={class:`agent-profile-actions`},we=[`disabled`],Te={key:0,class:`agent-directory-pin-error`,role:`alert`},Ee={key:2,class:`agent-directory-work-error`,role:`status`},De={class:`ui-toolbar agents-directory-filters`},Oe={class:`agents-directory-search`},ke={class:`sr-only`},Ae=[`placeholder`],je={key:4,role:`alert`,class:`ui-card ui-empty agent-profile-empty`},Me={key:5,class:`ui-card ui-empty agent-profile-empty`},Ne={key:6,class:`agents-directory-grid`},Pe=E(t({__name:`AgentsDirectoryPage`,setup(t){let n=C(),m=O(),h=D(),b=y(()=>n.activePersonalSpace?.id??``),{agents:w,loading:E,error:k,load:j}=ee(b),R=I(b),z=R.agentIds,te=R.savingAgentId,V=R.error,ie=y(()=>L(`retry`,`Retry`)),{summaries:H,loading:ae,error:oe,state:se,load:U}=ge(b),W=o(typeof m.query.q==`string`?m.query.q:``),G=o(`all`),K=o(typeof m.query.project==`string`?[m.query.project]:[]),q=o(!1),ce=y(()=>B.value.some(e=>!e.fixed)),le=e=>B.value.some(t=>t.agentId===e&&t.management?.mode===`all`),J=y(()=>(n.state?.personalProjects??[]).filter(e=>e.personal_space_id===b.value)),Y=y(()=>J.value.map(e=>({value:e.project_id,label:e.profile.name}))),X=y(()=>Object.fromEntries(Y.value.map(e=>[e.value,e.label]))),ue=y(()=>[{value:`all`,label:u(`agentProfiles.allStatus`)},...[`active`,`inactive`,`archived`].map(e=>({value:e,label:u(`projectAgents.status.${e}`)}))]),Z=y(()=>w.value.filter(e=>(G.value===`all`||e.profile.status===G.value)&&(!K.value.length||M(e).some(e=>K.value.includes(e)))&&N([F(e),e.employeeNumber?`FLA ${e.employeeNumber}`:``,e.profile.responsibility,...e.profile.capabilities,...M(e).map(e=>X.value[e]||e)].join(` `),W.value)).sort((e,t)=>F(e).localeCompare(F(t)))),Q=y(()=>E.value||ae.value||n.runtimeStatus===`loading`),de=e=>H.value[e];async function $(e,t){await R.setPinned(e,t)}i(()=>{n.runtimeStatus===`idle`&&n.refresh()}),e([b,()=>m.query.agent],([e,t])=>{if(e&&typeof t==`string`){let{agent:n,...r}=m.query;h.replace({path:typeof m.query.task==`string`?`/project-agents/manage`:P(e,t),query:typeof m.query.task==`string`?m.query:r})}},{immediate:!0}),e(b,(e,t)=>{t&&(W.value=``,K.value=[],G.value=`all`)});async function fe(e){q.value=!1,await h.push(P(b.value,e.agent.agentId))}async function pe(){if(n.state){await Promise.allSettled([j(),U()]);return}await n.refresh(),await Promise.allSettled([j(),U()])}return(e,t)=>(a(),s(`section`,{class:`view agents-directory`,"aria-label":v(u)(`agentProfiles.title`)},[S(`header`,be,[!Q.value||v(w).length?(a(),s(`p`,xe,g(v(u)(`agentProfiles.members`,{count:v(w).length})),1)):(a(),s(`span`,Se,`\xA0`)),S(`div`,Ce,[Q.value&&v(w).length?(a(),d(T,{key:0,variant:`inline`,label:v(u)(`agentRedesign.refreshing`)},null,8,[`label`])):x(``,!0),c(ve,{"personal-space-id":b.value||`current`},null,8,[`personal-space-id`]),ce.value?(a(),s(`button`,{key:1,type:`button`,class:`primary-button`,disabled:!b.value,onClick:t[0]||=e=>q.value=!0},g(v(u)(`employees.recruit`)),9,we)):x(``,!0)])]),v(V)?(a(),s(`p`,Te,[S(`span`,null,g(v(V)),1),S(`button`,{class:`quiet-button`,type:`button`,onClick:t[1]||=e=>v(R).load({force:!0})},g(ie.value),1)])):x(``,!0),!Q.value&&!v(k)&&v(n).runtimeStatus===`ready`&&!J.value.length?(a(),d(ne,{key:1,"personal-space-id":b.value},null,8,[`personal-space-id`])):x(``,!0),v(oe)?(a(),s(`p`,Ee,[S(`span`,null,g(v(u)(`agentRedesign.workStatus.refreshError`)),1),S(`button`,{class:`quiet-button`,type:`button`,onClick:t[2]||=(...e)=>v(U)&&v(U)(...e)},g(v(u)(`agentProfiles.retry`)),1)])):x(``,!0),S(`div`,De,[S(`label`,Oe,[S(`span`,ke,g(v(u)(`agentProfiles.search`)),1),l(S(`input`,{"onUpdate:modelValue":t[3]||=e=>W.value=e,type:`search`,maxlength:`160`,placeholder:v(u)(`agentProfiles.search`)},null,8,Ae),[[f,W.value]])]),c(A,{modelValue:K.value,"onUpdate:modelValue":t[4]||=e=>K.value=e,class:`agents-directory-select`,multiple:``,options:Y.value,label:v(u)(`employees.filterLabel`),placeholder:v(u)(`employees.allProjectsFilter`)},null,8,[`modelValue`,`options`,`label`,`placeholder`]),c(A,{modelValue:G.value,"onUpdate:modelValue":t[5]||=e=>G.value=e,class:`agents-directory-select`,options:ue.value,label:v(u)(`projectAgents.fields.status`)},null,8,[`modelValue`,`options`,`label`])]),Q.value&&!v(w).length?(a(),d(T,{key:3,label:v(u)(`agentProfiles.loading`)},null,8,[`label`])):x(``,!0),v(k)||v(n).runtimeStatus===`error`?l((a(),s(`div`,je,[S(`p`,null,g(v(k)||v(u)(`agentProfiles.loadError`)),1),S(`button`,{class:`quiet-button`,type:`button`,onClick:pe},g(v(u)(`agentProfiles.retry`)),1)],512)),[[_,!Q.value||v(w).length===0]]):x(``,!0),!Q.value&&!Z.value.length&&!v(k)&&v(n).runtimeStatus!==`error`?(a(),s(`p`,Me,g(v(u)(v(w).length?`agentProfiles.noMatch`:`agentProfiles.noAgents`)),1)):x(``,!0),Z.value.length?(a(),s(`ul`,Ne,[(a(!0),s(p,null,r(Z.value,e=>(a(),s(`li`,{key:e.agentId},[c(he,{agent:e,"space-id":b.value,"project-names":X.value,"manages-all-projects":le(e.agentId),"work-summary":de(e.agentId),"work-state":v(se),pinned:v(z).includes(e.agentId),"pin-pending":v(te)===e.agentId,onTogglePin:t=>$(e.agentId,t)},null,8,[`agent`,`space-id`,`project-names`,`manages-all-projects`,`work-summary`,`work-state`,`pinned`,`pin-pending`,`onTogglePin`])]))),128))])):x(``,!0),c(re,{open:q.value,"personal-space-id":b.value,projects:J.value,"default-project-ids":K.value??[],onClose:t[6]||=e=>q.value=!1,onRecruited:fe},null,8,[`open`,`personal-space-id`,`projects`,`default-project-ids`])],8,ye))}}),[[`__scopeId`,`data-v-56bb6321`]]);export{Pe as default};
@@ -1 +0,0 @@
1
- import{B as e,C as t,E as n,H as r,I as i,P as a,Q as o,S as s,T as c,a as l,b as u,g as d,it as ee,ot as f,rt as p,v as m,w as h,x as g,y as _}from"./i18n-oJFlt8hW.js";import{a as te,s as ne}from"./client-DnwnUBQV.js";import{t as v}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as y}from"./UiButton-x8hiHNRM.js";import{t as b}from"./vue-router-CCvPGaLD.js";import{t as re}from"./UiDialog-mjletK0y.js";import{t as x}from"./UiSelect-K29jnV-1.js";import{n as ie}from"./paths-CDREouhi.js";import{a as ae,o as oe,r as se,s as ce}from"./catalog-D0VEfOAV.js";import{t as le}from"./ProjectScopePicker-CiDxM2Yx.js";var S={jefa:`/assets/jefa-avatar-Dew42td5.webp`,bole:`/assets/bole-avatar-CVIr-bU_.webp`};function C(e){return S[e]}var ue={key:1,role:`alert`,class:`ui-dialog__error employee-message`},de={key:2,class:`ui-muted`},fe={class:`employee-profile`},pe={class:`employee-avatar`,"aria-hidden":`true`},me=[`src`],he={class:`ui-meta`},ge={key:2,class:`employee-scope`},_e=[`aria-label`],ve=[`data-scope`,`aria-checked`,`tabindex`,`disabled`,`onClick`],ye={class:`ui-meta`,role:`status`},be={key:3,class:`ui-meta`},xe={key:4,class:`ui-meta`},Se={key:5,class:`ui-meta`},Ce=[`aria-label`],we={class:`employee-title-controls`},Te={class:`ui-meta`},Ee={class:`employee-title-example`},De={class:`ui-meta`},Oe=[`aria-label`],ke={class:`ui-meta`},Ae={key:8,class:`ui-dialog__error`,role:`alert`},je={key:10,class:`employee-success`,role:`status`},w=v(n({__name:`EmployeeRecruitDialog`,props:{open:{type:Boolean},personalSpaceId:{},projects:{},defaultProjectId:{},defaultProjectIds:{},templateId:{}},emits:[`close`,`recruited`],setup(n,{emit:v}){let S=n,w=v,T=o([]),E=o([]),D=o(`selected`),O=o([]),k=o(`auto`),A=o(`emoji`),Me=o(``),j=o(``),M=o(!1),N=o(!1),P=o(``),F=o(!1),I=o(``),L=o(null),R=o([]),z=o(``),B=m(()=>S.templateId?R.value:R.value.filter(e=>!e.fixed)),V=m(()=>S.templateId?B.value.find(e=>e.id===S.templateId):B.value.find(e=>e.id===P.value)??B.value[0]),Ne=m({get:()=>V.value?.id??``,set:e=>{P.value=e}}),Pe=m(()=>V.value?.agentId?l(`employees.manageProjectsTitle`,{name:V.value.name}):l(`employees.recruit`)),H=m(()=>S.projects.filter(e=>e.profile.lifecycle!==`archived`).map(e=>({id:e.project_id,name:e.profile.name}))),U=m(()=>V.value?.management!==void 0),W=m({get:()=>D.value===`all`?H.value.filter(e=>!O.value.includes(e.id)).map(e=>e.id):T.value,set:e=>{if(D.value===`all`){let t=new Set(H.value.map(e=>e.id));O.value=[...O.value.filter(e=>!t.has(e)),...H.value.filter(t=>!e.includes(t.id)).map(e=>e.id)]}else T.value=e}}),G=m(()=>({mode:D.value,projectIds:D.value===`selected`?[...T.value].sort():[],excludedProjectIds:D.value===`all`?[...O.value].sort():[],titleMode:k.value,titleStyle:A.value})),Fe=m(()=>[`auto`,`suggest`,`off`].map(e=>({value:e,label:l(`employees.titles.${e}`)}))),Ie=m(()=>[`emoji`,`text`].map(e=>({value:e,label:l(`employees.titles.${e}`)}))),K=m(()=>new Set(E.value)),Le=m(()=>[...K.value].filter(e=>!W.value.includes(e))),Re=m(()=>!!(V.value?.agentStatus&&V.value.agentStatus!==`active`)),q=m(()=>V.value?.agentStatus===`active`&&(U.value?JSON.stringify(G.value)===Me.value&&(D.value===`all`||T.value.length===K.value.size&&T.value.every(e=>K.value.has(e))):T.value.length===K.value.size&&T.value.every(e=>K.value.has(e)))),ze=m(()=>F.value?l(`employees.recruiting`):Re.value?l(`employees.rehire`,{name:V.value?.name??``}):q.value||V.value?.agentId?l(`employees.assign`):l(`employees.recruitName`,{name:V.value?.name??``})),J=m(()=>V.value&&W.value.length?`/employees/${encodeURIComponent(V.value.id)}?project=${encodeURIComponent(W.value[0])}`:``),Y=0;e([()=>S.open,()=>S.personalSpaceId,()=>S.templateId],([e])=>{Y+=1,e&&Z(!0)},{immediate:!0}),e(P,()=>{S.open&&!M.value&&X(!0)}),e(G,()=>{I.value=N.value?I.value:``,L.value=null},{flush:`sync`});function X(e=!1){let t=new Set(H.value.map(e=>e.id));E.value=[...new Set((V.value?.assignments??[]).filter(e=>e.status===`active`&&t.has(e.personalProjectId)).map(e=>e.personalProjectId))];let n=e&&!V.value?.agentId?S.defaultProjectIds??(S.defaultProjectId?[S.defaultProjectId]:[]):[];T.value=[...new Set([...E.value,...n.filter(e=>t.has(e))])];let r=V.value?.management;D.value=r?.mode??`selected`,O.value=[...r?.excludedProjectIds??[]],k.value=r?.titleMode??`auto`,A.value=r?.titleStyle??`emoji`,r?.mode===`selected`&&V.value?.agentId&&(T.value=r.projectIds.filter(e=>t.has(e))),r?.mode===`all`&&V.value?.agentId&&(E.value=[...W.value]),Me.value=JSON.stringify(G.value),j.value=V.value?.assignmentsVersion??``,N.value=!1,I.value=``,L.value=null}async function Z(e=!1){let t=++Y;M.value=!0,R.value=[],z.value=``;try{let n=await oe(S.personalSpaceId);if(t!==Y||!S.open)return;R.value=n,X(e)}catch(e){t===Y&&S.open&&(R.value=[],z.value=se(e))}finally{t===Y&&(M.value=!1)}}function Q(){F.value||w(`close`)}async function Be(){if(!V.value||V.value.identityConflict||!S.personalSpaceId||F.value||M.value||N.value||!j.value||q.value)return;F.value=!0,I.value=``;let e=V.value.id;try{let t=await te(`/api/employee-templates/${encodeURIComponent(e)}/recruit`,{personalSpaceId:S.personalSpaceId,...U.value?{management:G.value}:{personalProjectIds:[...T.value]},replaceAssignments:!0,expectedAssignmentsVersion:j.value,...Re.value?{reactivate:!0}:{}});await ce(S.personalSpaceId),R.value=[...ae.value],X(),L.value=t,w(`recruited`,t)}catch(e){I.value=se(e);try{let t=JSON.parse(e instanceof Error?e.message:``);N.value=t.code===`assignment_scope_conflict`||t.code===`assignment_update_incomplete`}catch{}}finally{F.value=!1}}function $(e){e===`selected`&&(T.value=[...W.value]),D.value=e}function Ve(e){if(!(F.value||M.value||N.value)&&[`ArrowLeft`,`ArrowRight`,`Home`,`End`].includes(e.key)){e.preventDefault();let t=e.key===`Home`?`all`:e.key===`End`||D.value===`all`?`selected`:`all`;$(t),e.currentTarget.querySelector(`[data-scope="${t}"]`)?.focus()}}return(e,o)=>(a(),u(re,{open:n.open,class:`employee-recruit-dialog`,title:Pe.value,busy:F.value,form:``,onClose:Q,onSubmit:Be},t({default:r(()=>[M.value&&!B.value.length?(a(),u(ne,{key:0,variant:`compact`,label:p(l)(`employees.loading`)},null,8,[`label`])):z.value?(a(),s(`div`,ue,[_(`p`,null,f(z.value),1),c(y,{size:`sm`,onClick:o[0]||=e=>Z(!0)},{default:r(()=>[h(f(p(l)(`employees.retry`)),1)]),_:1})])):V.value?(a(),s(d,{key:3},[B.value.length>1&&!S.templateId?(a(),u(x,{key:0,modelValue:Ne.value,"onUpdate:modelValue":o[1]||=e=>Ne.value=e,field:``,"control-id":`employee-template`,label:p(l)(`employees.choose`),options:B.value.map(e=>({value:e.id,label:e.name,meta:e.role})),disabled:F.value||M.value},null,8,[`modelValue`,`label`,`options`,`disabled`])):g(``,!0),_(`div`,fe,[_(`span`,pe,[p(C)(V.value.id)?(a(),s(`img`,{key:0,src:p(C)(V.value.id),alt:``},null,8,me)):(a(),s(d,{key:1},[h(f(V.value.name.slice(0,1)),1)],64))]),_(`div`,null,[_(`h3`,null,[h(f(V.value.name)+` `,1),_(`span`,null,f(V.value.role),1)]),_(`p`,null,f(V.value.description),1),_(`p`,he,f(V.value.capabilities.join(` · `)),1)])]),M.value?(a(),u(ne,{key:1,variant:`compact`,label:p(l)(`employees.loadingScope`)},null,8,[`label`])):g(``,!0),U.value?(a(),s(`div`,ge,[_(`div`,{class:`ui-segmented`,role:`radiogroup`,"aria-label":p(l)(`employees.scope.rule`),onKeydown:Ve},[(a(),s(d,null,i([`all`,`selected`],e=>_(`button`,{key:e,type:`button`,role:`radio`,"data-scope":e,"aria-checked":D.value===e,tabindex:D.value===e?0:-1,disabled:F.value||M.value||N.value,onClick:t=>$(e)},f(p(l)(`employees.scope.${e===`all`?`continuousAll`:`onlySelected`}`)),9,ve)),64))],40,_e),_(`p`,ye,f(D.value===`all`?p(l)(`employees.scope.allHint`,{name:V.value.name}):p(l)(`employees.scope.selectedHint`)),1)])):g(``,!0),c(le,{modelValue:W.value,"onUpdate:modelValue":o[2]||=e=>W.value=e,projects:H.value,inline:``,hint:D.value===`all`?p(l)(`employees.scope.excludeHint`):void 0,disabled:F.value||M.value||N.value},null,8,[`modelValue`,`projects`,`hint`,`disabled`]),D.value===`all`&&O.value.length?(a(),s(`p`,be,f(p(l)(`employees.scope.excludedCount`,{count:O.value.length})),1)):g(``,!0),H.value.length?g(``,!0):(a(),s(`p`,xe,[h(f(p(l)(`employees.noProjects`))+` `,1),c(p(b),{to:p(ie)(n.personalSpaceId,`directory`),onClick:Q},{default:r(()=>[h(f(p(l)(`employees.createProject`)),1)]),_:1},8,[`to`])])),Le.value.length&&!L.value?(a(),s(`p`,Se,f(p(l)(`employees.scopeRemoved`,{count:Le.value.length})),1)):g(``,!0),U.value&&V.value.permissions.includes(`session.title`)?(a(),s(`section`,{key:6,class:`employee-title-settings`,"aria-label":p(l)(`employees.titles.heading`)},[_(`h3`,null,f(p(l)(`employees.titles.heading`)),1),_(`div`,we,[c(x,{modelValue:k.value,"onUpdate:modelValue":o[3]||=e=>k.value=e,field:``,"control-id":`employee-title-mode`,label:p(l)(`employees.titles.mode`),options:Fe.value,disabled:F.value||M.value||N.value},null,8,[`modelValue`,`label`,`options`,`disabled`]),c(x,{modelValue:A.value,"onUpdate:modelValue":o[4]||=e=>A.value=e,field:``,"control-id":`employee-title-style`,label:p(l)(`employees.titles.style`),options:Ie.value,disabled:F.value||M.value||N.value||k.value===`off`},null,8,[`modelValue`,`label`,`options`,`disabled`])]),_(`p`,Te,[h(f(p(l)(`employees.titles.example`))+` `,1),_(`span`,Ee,`【P1|`+f(A.value===`emoji`?`🔧 `:``)+`FIX|`+f(p(l)(`employees.titles.exampleTask`))+`】`,1)]),_(`p`,De,f(p(l)(`employees.titles.boundary`)),1)],8,Ce)):g(``,!0),_(`section`,{class:`employee-permissions`,"aria-label":p(l)(`employees.permissions`)},[_(`strong`,null,f(p(l)(`employees.permissions`)),1),_(`ul`,null,[(a(!0),s(d,null,i(V.value.permissions,e=>(a(),s(`li`,{key:e},f(e===`board.read`?p(l)(`employees.boardRead`):e===`board.write`?p(l)(`employees.boardWrite`):e===`session.title`?p(l)(`employees.titles.heading`):e),1))),128))]),_(`p`,ke,f(p(l)(`employees.noExecutor`)),1)],8,Oe),V.value.runtime?(a(),s(`p`,{key:7,class:ee([`employee-runtime`,{"is-warning":V.value.runtimeStatus!==`ready`}])},f(V.value.runtimeStatus===`ready`?p(l)(`employees.hostReady`):p(l)(`employees.installRequired`)),3)):g(``,!0),I.value||V.value.identityConflict?(a(),s(`p`,Ae,f(I.value||p(l)(`employees.errors.identity_conflict`)),1)):g(``,!0),N.value?(a(),u(y,{key:9,size:`sm`,disabled:M.value,onClick:o[5]||=e=>Z()},{default:r(()=>[h(f(p(l)(`employees.reloadScope`)),1)]),_:1},8,[`disabled`])):g(``,!0),L.value?(a(),s(`div`,je,[_(`strong`,null,f(p(l)(`employees.scopeSaved`)),1),_(`p`,null,f(D.value===`all`?p(l)(`employees.scope.successAll`,{count:W.value.length}):W.value.length?p(l)(`employees.successMultiple`,{count:W.value.length}):p(l)(`employees.successUnassigned`)),1)])):g(``,!0)],64)):(a(),s(`p`,de,f(p(l)(`employees.noTemplates`)),1))]),_:2},[V.value&&!z.value?{name:`footer`,fn:r(()=>[c(y,{variant:`ghost`,disabled:F.value,onClick:Q},{default:r(()=>[h(f(p(l)(`employees.cancel`)),1)]),_:1},8,[`disabled`]),q.value&&J.value&&!F.value&&!M.value&&!N.value&&V.value.runtimeStatus===`ready`?(a(),u(p(b),{key:0,class:`ui-button ui-button--primary`,to:J.value,onClick:Q},{default:r(()=>[h(f(p(l)(`employees.open`)),1)]),_:1},8,[`to`])):(a(),u(y,{key:1,variant:`primary`,type:`submit`,busy:F.value,"busy-label":ze.value,disabled:M.value||N.value||!j.value||q.value||V.value.identityConflict||!n.personalSpaceId},{default:r(()=>[h(f(ze.value),1)]),_:1},8,[`busy`,`busy-label`,`disabled`]))]),key:`0`}:void 0]),1032,[`open`,`title`,`busy`]))}}),[[`__scopeId`,`data-v-4e6fb0a1`]]);export{C as n,w as t};
@@ -1,3 +0,0 @@
1
- import{B as e,E as t,H as n,I as r,P as i,Q as a,S as o,T as s,U as c,a as l,b as u,f as d,g as f,h as p,it as m,m as h,ot as g,rt as _,v,w as y,x as b,y as x}from"./i18n-oJFlt8hW.js";import{t as S}from"./console-Cw7TzOSC.js";import{a as C,i as w,r as T,s as E}from"./client-DnwnUBQV.js";import{t as D}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as O}from"./UiButton-x8hiHNRM.js";import{h as k,m as A}from"./useApi-CROJJdhE-7gt0QyQ5.js";import{t as j}from"./vue-router-CCvPGaLD.js";import{t as M}from"./UiDialog-mjletK0y.js";import{t as N}from"./UiSelect-K29jnV-1.js";import{t as P}from"./AgentHand-UzVhbKUC.js";import{i as F,n as I}from"./profile-model-BQO4zNs9.js";import{t as L}from"./AgentName-DJpvkub2.js";import{a as ee,n as R,r as z,s as B,t as V}from"./catalog-D0VEfOAV.js";import{t as H}from"./ProjectScopePicker-CiDxM2Yx.js";import{n as te,t as ne}from"./EmployeeRecruitDialog-D8Hvhc-M.js";import{i as re,r as ie,t as U}from"./shared-report-CiX64ZiD.js";import{t as ae}from"./UiSegmented-WFfz9Evl.js";import{l as oe,n as W,o as G,s as K,u as q}from"./judgment-types-DR931cZ7.js";var se=[`aria-busy`],ce={key:0,class:`bole-alert`,role:`alert`},J={class:`bole-header`},Y={class:`bole-heading`},X={id:`bole-overview-title`},le=[`aria-label`],ue=[`aria-pressed`],de={"data-testid":`people-total`},Z=[`aria-pressed`],fe=[`aria-label`],pe={"data-testid":`people-working`},me=[`disabled`],he={class:`bole-controls`},ge={class:`bole-filters`},_e=[`aria-label`,`placeholder`],ve=[`aria-label`],ye=[`aria-pressed`],Q=[`aria-pressed`,`onClick`],be={key:1,class:`bole-result-count`,role:`status`},xe=[`aria-label`],Se={key:1,"aria-labelledby":`bole-work-title`},Ce={key:0,class:`bole-empty`,role:`status`},we={key:1,class:`ui-card bole-agent-list`},Te={class:`bole-table-heading`,"aria-hidden":`true`},Ee={class:`bole-agent-identity`},De={class:`bole-agent-mark`,"aria-hidden":`true`},Oe=[`src`],ke={class:`bole-agent-work`},Ae=[`data-status`],je={key:1,class:`is-idle`},Me={class:`bole-agent-projects`},Ne={key:0},Pe={key:1},Fe={key:2,class:`ui-empty bole-empty`},Ie={key:2,"aria-labelledby":`bole-history-title`},Le={key:0,class:`ui-card bole-timeline`},Re={class:`bole-recruitment-identity`},ze={class:`bole-recruitment-reason`},Be=[`datetime`],Ve={key:1,class:`ui-empty bole-empty`},He=`__bole_unassigned__`,Ue=200,We=D(t({__name:`BolePeoplePanel`,props:{personalSpaceId:{},projects:{}},setup(t){let n=t,p=A(),m=a([]),h=a([]),S=a([]),C=a(!1),w=a(!1),D=a(`people`),O=a(``),k=a(``),j=a(`all`),M=v(()=>[{value:`all`,label:l(`employees.bole.allWork`)},{value:`working`,label:l(`employees.bole.workingNow`)},{value:`idle`,label:l(`employees.bole.withoutTask`)}]),N=a(null),I=a(null),ee=v(()=>h.value.length>=Ue),R=0,z=new Set([`awaiting_recruitment`,`queued`,`running`,`paused`,`awaiting_review`,`blocked`]),B=v(()=>new Map(n.projects.map(e=>[e.project_id,e.profile.name]))),V=v(()=>m.value.filter(e=>e.status===`active`)),ne=v(()=>h.value.filter(e=>z.has(e.status))),re=v(()=>new Set(oe.value.filter(e=>e.task).map(e=>e.id))),ie=v(()=>new Set(V.value.flatMap(e=>e.projectIds).filter(Boolean))),U=v(()=>{let e=[`coordinator`,`durable`,`hr`,`temporary`],t=new Map;for(let e of V.value)t.set(e.type,(t.get(e.type)??0)+1);return[...t.entries()].sort(([t],[n])=>at(e,t)-at(e,n)).map(([e,t])=>({type:e,count:t,label:ot(e)}))}),oe=v(()=>V.value.map(e=>({...e,task:e.workStatus?z.has(e.workStatus)&&e.currentTaskId?h.value.find(t=>t.id===e.currentTaskId)??{id:e.currentTaskId,title:e.currentTaskId,status:e.workStatus,projectId:``,agentIds:[e.id],updatedAt:``}:void 0:ne.value.filter(t=>t.agentIds.includes(e.id)).sort((e,t)=>t.updatedAt.localeCompare(e.updatedAt))[0]}))),W=v(()=>[...S.value].sort((e,t)=>t.createdAt.localeCompare(e.createdAt))),G=v(()=>[...new Set([...n.projects.map(e=>e.project_id),...m.value.flatMap(e=>e.projectIds),...h.value.map(e=>e.projectId),...S.value.map(e=>e.projectId)].filter(Boolean))].map(e=>({id:e,name:B.value.get(e)??e})).sort((e,t)=>e.name.localeCompare(t.name)).concat({id:He,name:l(`employees.bole.noProject`)})),K=v({get:()=>N.value??G.value.map(e=>e.id),set:e=>{N.value=e.length===G.value.length?null:e}}),q=v(()=>oe.value.filter(e=>{let t=[...e.projectIds,...e.task?.projectId?[e.task.projectId]:[]];return Ke(t)&&(!k.value||e.type===k.value)&&(j.value===`all`||(j.value===`working`?!!e.task:!e.task))&&qe([e.name,e.responsibility,...e.searchTerms,e.task?.title??``,...t.map(lt)])}).sort((e,t)=>Number(!!t.task)-Number(!!e.task)||e.name.localeCompare(t.name))),We=v(()=>W.value.filter(e=>Ke(e.projectId?[e.projectId]:[])&&(!k.value||e.positionKind===k.value)&&qe([...Je(e.agentId),e.reason,e.workKind,lt(e.projectId)]))),Ge=v(()=>O.value||k.value||N.value!==null||D.value===`people`&&j.value!==`all`);function Ke(e){return N.value===null||(e.length?e:[He]).some(e=>N.value?.includes(e))}function qe(e){return F(e.join(` `),O.value)}function Je(e){let t=m.value.find(t=>t.id===e);return t?[t.name,t.responsibility,...t.searchTerms]:[e]}function Ye(){O.value=``,k.value=``,j.value=`all`,N.value=null}function Xe(e){return te(e.replace(/^employee\./,``))}e([D,O,k,j,N],()=>{I.value&&(I.value.scrollTop=0)}),e([()=>n.personalSpaceId,()=>p.query.q],([e,t],[n])=>{e===n?O.value=typeof t==`string`?t:``:(Ye(),n===void 0&&(O.value=typeof t==`string`?t:``),Ze())},{immediate:!0});async function Ze(){let e=++R;if(m.value=[],h.value=[],S.value=[],w.value=!1,!n.personalSpaceId){C.value=!1;return}C.value=!0;let t=new URLSearchParams({personalSpaceId:n.personalSpaceId}),r=await Promise.allSettled([T(`/api/project-agents?${t}`),T(`/api/project-agent-tasks?${t}&limit=${Ue}`),T(`/api/project-agent-recruitments?${t}`)]);e===R&&(r[0].status===`fulfilled`&&(m.value=$e(r[0].value,`agents`).map(tt).filter(it)),r[1].status===`fulfilled`&&(h.value=$e(r[1].value,`tasks`).map(nt).filter(it)),r[2].status===`fulfilled`&&(S.value=$e(r[2].value,`recruitments`).map(rt).filter(it)),w.value=r.some(e=>e.status===`rejected`),C.value=!1)}function Qe(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function $e(e,t){if(Array.isArray(e))return e;let n=Qe(e),r=n[t]??n.items;return Array.isArray(r)?r:[]}function $(e,t,n=t){let r=e[t]??e[n];return typeof r==`string`?r:``}function et(e){return Array.isArray(e)?e:[]}function tt(e){let t=Qe(e),n=Qe(t.profile),r=$(t,`agentId`,`agent_id`);if(!r)return null;let i=et(t.assignments).flatMap(e=>{let t=Qe(e),n=$(t,`status`),r=$(t,`personalProjectId`,`personal_project_id`);return n===`active`&&r?[r]:[]}),a=$(t,`personalProjectId`,`personal_project_id`);return{id:r,name:$(n,`displayName`,`display_name`)||$(n,`name`)||r,emoji:$(n,`occupationEmoji`,`occupation_emoji`)||`✦`,responsibility:$(n,`responsibility`),searchTerms:[$(n,`name`),...et(n.capabilities),...et(n.workKinds??n.work_kinds)].filter(e=>typeof e==`string`),type:$(n,`agentType`,`agent_type`)||`other`,status:$(n,`status`)||`active`,projectIds:[...new Set([...i,...a?[a]:[]])],currentTaskId:$(t,`currentTaskId`,`current_task_id`),workStatus:$(t,`workStatus`,`work_status`)}}function nt(e){let t=Qe(e),n=$(t,`taskId`,`task_id`);if(!n)return null;let r=[$(t,`ownerAgentId`,`owner_agent_id`),$(t,`leadAgentId`,`lead_agent_id`)],i=et(t.participants).flatMap(e=>{let t=Qe(e),n=$(t,`status`);return n&&!z.has(n)?[]:[$(t,`agentId`,`agent_id`)]});return{id:n,title:$(t,`title`)||n,status:$(t,`status`)||`queued`,projectId:$(t,`personalProjectId`,`personal_project_id`),agentIds:[...new Set([...r,...i].filter(Boolean))],updatedAt:$(t,`updatedAt`,`updated_at`)||$(t,`createdAt`,`created_at`)}}function rt(e){let t=Qe(e),n=$(t,`recruitmentId`,`recruitment_id`);return n?{id:n,agentId:$(t,`recruitedAgentId`,`recruited_agent_id`)||$(t,`proposedAgentId`,`proposed_agent_id`),projectId:$(t,`personalProjectId`,`personal_project_id`),workKind:$(t,`workKind`,`work_kind`),positionKind:$(t,`positionKind`,`position_kind`),reason:$(t,`reason`)||$(t,`reasonCode`,`reason_code`),status:$(t,`status`),createdAt:$(t,`createdAt`,`created_at`)}:null}function it(e){return e!==null}function at(e,t){let n=e.indexOf(t);return n<0?e.length:n}function ot(e){return[`coordinator`,`durable`,`hr`,`temporary`].includes(e)?l(`employees.bole.types.${e}`):l(`employees.bole.types.other`)}function st(e){return[`awaiting_recruitment`,`queued`,`running`,`paused`,`failed`,`awaiting_review`,`blocked`].includes(e)?l(`employees.bole.status.${e}`):e}function ct(e){return m.value.find(t=>t.id===e)?.name??e}function lt(e){return B.value.get(e)??l(`employees.bole.noProject`)}function ut(e){if(!e)return l(`employees.bole.unknownTime`);let t=new Date(e);return Number.isNaN(t.getTime())?e:new Intl.DateTimeFormat(void 0,{dateStyle:`medium`,timeStyle:`short`}).format(t)}return(e,n)=>(i(),o(`div`,{class:`bole-panel`,"aria-busy":C.value},[w.value?(i(),o(`div`,ce,[x(`span`,null,g(_(l)(`employees.bole.partialError`)),1),x(`button`,{class:`quiet-button`,type:`button`,onClick:Ze},g(_(l)(`employees.retry`)),1)])):b(``,!0),x(`header`,J,[x(`div`,Y,[x(`h2`,X,g(_(l)(`employees.bole.title`)),1),x(`nav`,{class:`bole-views`,"aria-label":_(l)(`employees.bole.viewLabel`)},[x(`button`,{id:`bole-work-title`,type:`button`,"aria-pressed":D.value===`people`,onClick:n[0]||=e=>D.value=`people`},[y(g(_(l)(`employees.bole.currentWork`))+` `,1),x(`span`,de,g(C.value?`—`:V.value.length),1)],8,ue),x(`button`,{id:`bole-history-title`,type:`button`,"aria-pressed":D.value===`history`,onClick:n[1]||=e=>D.value=`history`},[y(g(_(l)(`employees.bole.recruitmentHistory`))+` `,1),x(`span`,null,g(C.value?`—`:S.value.length),1)],8,Z)],8,le)]),x(`dl`,{class:`bole-summary`,"aria-label":_(l)(`employees.bole.overview`)},[x(`div`,pe,[x(`dt`,null,g(_(l)(`employees.bole.workingNow`)),1),x(`dd`,null,g(C.value?`—`:re.value.size),1)]),x(`div`,null,[x(`dt`,null,g(_(l)(`employees.bole.coveredProjects`)),1),x(`dd`,null,g(C.value?`—`:ie.value.size),1)])],8,fe),x(`button`,{class:`quiet-button bole-refresh`,type:`button`,disabled:C.value,onClick:Ze},g(_(l)(`common.actions.refresh`)),9,me)]),x(`div`,he,[x(`div`,ge,[c(x(`input`,{"onUpdate:modelValue":n[2]||=e=>O.value=e,type:`search`,class:`bole-search`,"aria-label":_(l)(`employees.bole.search`),placeholder:_(l)(`employees.bole.search`)},null,8,_e),[[d,O.value]]),s(H,{modelValue:K.value,"onUpdate:modelValue":n[3]||=e=>K.value=e,projects:G.value,label:_(l)(`employees.allProjects.projectFilter`),"all-label":_(l)(`employees.bole.allProjects`),"empty-label":_(l)(`employees.filterEmpty`),compact:``,hint:``},null,8,[`modelValue`,`projects`,`label`,`all-label`,`empty-label`]),D.value===`people`?(i(),u(ae,{key:0,modelValue:j.value,"onUpdate:modelValue":n[4]||=e=>j.value=e,label:_(l)(`employees.bole.workFilter`),options:M.value},null,8,[`modelValue`,`label`,`options`])):b(``,!0)]),x(`div`,{class:`bole-role-filters`,role:`group`,"aria-label":_(l)(`employees.bole.distribution`)},[x(`button`,{type:`button`,"aria-pressed":!k.value,onClick:n[5]||=e=>k.value=``},g(_(l)(`employees.bole.allRoles`)),9,ye),(i(!0),o(f,null,r(U.value,e=>(i(),o(`button`,{key:e.type,type:`button`,"aria-pressed":k.value===e.type,onClick:t=>k.value=k.value===e.type?``:e.type},[y(g(e.label)+` `,1),x(`span`,null,g(e.count),1)],8,Q))),128)),Ge.value?(i(),o(`button`,{key:0,class:`quiet-button bole-clear`,type:`button`,onClick:Ye},g(_(l)(`employees.bole.clearFilters`)),1)):b(``,!0),Ge.value&&!C.value?(i(),o(`span`,be,g(_(l)(`employees.bole.resultCount`,{count:D.value===`people`?q.value.length:We.value.length})),1)):b(``,!0)],8,ve)]),x(`div`,{ref_key:`scrollRegion`,ref:I,class:`bole-content`,tabindex:`0`,role:`region`,"aria-label":_(l)(D.value===`people`?`employees.bole.currentWork`:`employees.bole.recruitmentHistory`)},[C.value?(i(),u(E,{key:0,variant:`compact`,label:_(l)(`employees.bole.loading`)},null,8,[`label`])):D.value===`people`?(i(),o(`section`,Se,[ee.value?(i(),o(`p`,Ce,g(_(l)(`employees.bole.taskLimit`)),1)):b(``,!0),q.value.length?(i(),o(`div`,we,[x(`div`,Te,[x(`span`,null,g(_(l)(`projectAgents.title`)),1),x(`span`,null,g(_(l)(`employees.bole.taskColumn`)),1),x(`span`,null,g(_(l)(`employees.bole.projectsColumn`)),1)]),(i(!0),o(f,null,r(q.value,e=>(i(),o(`article`,{key:e.id,class:`bole-agent-row`},[x(`div`,Ee,[x(`span`,De,[Xe(e.id)?(i(),o(`img`,{key:0,src:Xe(e.id),alt:``},null,8,Oe)):(i(),o(f,{key:1},[y(g(e.emoji),1)],64))]),x(`div`,null,[x(`strong`,null,[s(L,{"space-id":t.personalSpaceId,"agent-id":e.id,name:e.name},null,8,[`space-id`,`agent-id`,`name`])]),s(P,{"agent-id":e.id},null,8,[`agent-id`]),x(`small`,null,g(e.responsibility||ot(e.type)),1)])]),x(`div`,ke,[e.task?(i(),o(f,{key:0},[x(`span`,{class:`ui-badge bole-status`,"data-status":e.task.status},g(st(e.task.status)),9,Ae),x(`p`,null,g(e.task.title),1)],64)):(i(),o(`p`,je,g(_(l)(`employees.bole.idle`)),1))]),x(`div`,Me,[e.projectIds.length?(i(),o(f,{key:0},[(i(!0),o(f,null,r(e.projectIds.slice(0,2),e=>(i(),o(`span`,{key:e},g(lt(e)),1))),128)),e.projectIds.length>2?(i(),o(`details`,Ne,[x(`summary`,null,g(_(l)(`employees.bole.moreProjects`,{count:e.projectIds.length-2})),1),(i(!0),o(f,null,r(e.projectIds.slice(2),e=>(i(),o(`span`,{key:e},g(lt(e)),1))),128))])):b(``,!0)],64)):(i(),o(`span`,Pe,g(e.task?.projectId?lt(e.task.projectId):_(l)(`employees.bole.noProject`)),1))])]))),128))])):(i(),o(`p`,Fe,g(_(l)(Ge.value?`employees.bole.noMatch`:`employees.bole.noAgents`)),1))])):(i(),o(`section`,Ie,[We.value.length?(i(),o(`ol`,Le,[(i(!0),o(f,null,r(We.value,e=>(i(),o(`li`,{key:e.id},[x(`div`,Re,[x(`strong`,null,[s(L,{"space-id":t.personalSpaceId,"agent-id":e.agentId,name:ct(e.agentId)},null,8,[`space-id`,`agent-id`,`name`])]),x(`small`,null,g(ot(e.positionKind))+` · `+g(lt(e.projectId)),1)]),x(`div`,ze,[x(`p`,null,g(e.reason),1),x(`small`,null,g(e.workKind||e.status),1)]),x(`time`,{datetime:e.createdAt},g(ut(e.createdAt)),9,Be)]))),128))])):(i(),o(`p`,Ve,g(_(l)(Ge.value?`employees.bole.noMatch`:`employees.bole.noRecruitments`)),1))]))],8,xe)],8,se))}}),[[`__scopeId`,`data-v-5c62fca6`]]),Ge={key:1,class:`ui-dialog__error employee-dialog-error`,role:`alert`},Ke={class:`ui-field`},qe=[`readonly`,`disabled`],Je={key:0,class:`ui-meta`},Ye={class:`ui-field`},Xe=[`readonly`,`disabled`],Ze={class:`ui-field`},Qe=[`readonly`,`disabled`],$e={class:`ui-field`},$=[`readonly`,`disabled`],et=t({__name:`EmployeeTaskDialog`,props:{open:{type:Boolean},item:{},projects:{},defaultProjectId:{},personalSpaceId:{},canWrite:{type:Boolean}},emits:[`close`,`saved`],setup(t,{emit:r}){let p=t,m=r,h=a(!1),S=a(!1),w=a(``),T=a(null),D=a(``),k=a(``),A=a(``),j=a(`medium`),P=a(``),F=a(``),I=0,L={signature:``,id:``},ee=v(()=>p.canWrite&&!S.value&&!w.value&&!!D.value&&k.value.trim().length>=2),R=v(()=>p.projects.map(e=>({value:e.id,label:e.name}))),B=v(()=>[`critical`,`high`,`medium`,`low`].map(e=>({value:e,label:l(`employees.task.priorities.${e}`)})));e([()=>p.open,()=>p.item,()=>p.personalSpaceId],()=>{H()},{immediate:!0});async function V(e,t){return C(`/api/employee-templates/jefa/call`,{personalSpaceId:p.personalSpaceId,personalProjectId:D.value,tool:e,arguments:t})}async function H(){let e=++I;if(p.open&&(w.value=``,T.value=null,L={signature:``,id:``},D.value=p.item?.projectId??p.defaultProjectId??``,k.value=``,A.value=``,j.value=`medium`,P.value=``,F.value=``,S.value=!!p.item,p.item))try{let t=await V(`get_task`,{workItemId:p.item.id});if(e!==I)return;if(t.item.id!==p.item.id||t.item.projectId!==D.value||!t.item.updatedAt)throw Error(l(`employees.loadError`));T.value=t.item,k.value=t.item.title,A.value=t.item.summary??``,j.value=t.item.priority??`medium`,P.value=t.item.acceptanceCriteria?.join(`
2
- `)??``,F.value=t.item.tags?.join(`, `)??``}catch(t){e===I&&(w.value=z(t))}finally{e===I&&(S.value=!1)}}async function te(){if(!ee.value||h.value)return;h.value=!0;let e={title:k.value.trim(),summary:A.value.trim()||k.value.trim(),priority:j.value,acceptanceCriteria:P.value.split(`
3
- `).map(e=>e.trim()).filter(Boolean),tags:F.value.split(/[,,]/).map(e=>e.trim()).filter(Boolean)},t=JSON.stringify([D.value,T.value?.updatedAt,e]);L.signature!==t&&(L={signature:t,id:`board-edit-${crypto.randomUUID()}`});try{T.value?await V(`update_tasks`,{requestId:L.id,updates:[{id:T.value.id,expectedUpdatedAt:T.value.updatedAt,...e}]}):await V(`create_tasks`,{messageId:L.id,tasks:[e]}),m(`saved`),m(`close`)}catch(e){w.value=z(e)}finally{h.value=!1}}function ne(){h.value||m(`close`)}return(e,r)=>(i(),u(M,{open:t.open,class:`employee-dialog`,title:_(l)(t.item?`employees.task.detail`:`employees.task.create`),busy:h.value,form:``,onClose:ne,onSubmit:te},{footer:n(()=>[s(O,{disabled:h.value,onClick:ne},{default:n(()=>[y(g(_(l)(`employees.close`)),1)]),_:1},8,[`disabled`]),t.canWrite?(i(),u(O,{key:0,variant:`primary`,type:`submit`,disabled:!ee.value,busy:h.value,"busy-label":_(l)(`employees.task.saving`)},{default:n(()=>[y(g(_(l)(`employees.task.save`)),1)]),_:1},8,[`disabled`,`busy`,`busy-label`])):b(``,!0)]),default:n(()=>[S.value?(i(),u(E,{key:0,variant:`compact`,label:_(l)(`employees.loadingTask`)},null,8,[`label`])):b(``,!0),w.value?(i(),o(`div`,Ge,[x(`p`,null,g(w.value),1),s(O,{size:`sm`,disabled:h.value,onClick:H},{default:n(()=>[y(g(_(l)(`employees.task.reload`)),1)]),_:1},8,[`disabled`])])):b(``,!0),S.value?b(``,!0):(i(),o(f,{key:2},[s(N,{modelValue:D.value,"onUpdate:modelValue":r[0]||=e=>D.value=e,field:``,label:_(l)(`employees.task.project`),placeholder:_(l)(`employees.task.chooseProject`),options:R.value,disabled:!!t.item||h.value||!t.canWrite,required:``},null,8,[`modelValue`,`label`,`placeholder`,`options`,`disabled`]),x(`label`,Ke,[y(g(_(l)(`employees.task.title`)),1),c(x(`input`,{"onUpdate:modelValue":r[1]||=e=>k.value=e,autofocus:``,minlength:`2`,maxlength:`180`,required:``,readonly:!t.canWrite,disabled:h.value},null,8,qe),[[d,k.value]])]),T.value?(i(),o(`p`,Je,g(_(l)(`employees.allProjects.status.${T.value.status}`)),1)):b(``,!0),x(`label`,Ye,[y(g(_(l)(`employees.task.summary`)),1),c(x(`textarea`,{"onUpdate:modelValue":r[2]||=e=>A.value=e,rows:`4`,maxlength:`2000`,readonly:!t.canWrite,disabled:h.value},null,8,Xe),[[d,A.value]])]),s(N,{modelValue:j.value,"onUpdate:modelValue":r[3]||=e=>j.value=e,field:``,label:_(l)(`employees.task.priority`),options:B.value,disabled:!t.canWrite||h.value},null,8,[`modelValue`,`label`,`options`,`disabled`]),x(`label`,Ze,[y(g(_(l)(`employees.task.criteria`)),1),c(x(`textarea`,{"onUpdate:modelValue":r[4]||=e=>P.value=e,rows:`3`,readonly:!t.canWrite,disabled:h.value},null,8,Qe),[[d,P.value]])]),x(`label`,$e,[y(g(_(l)(`employees.task.tags`)),1),c(x(`input`,{"onUpdate:modelValue":r[5]||=e=>F.value=e,readonly:!t.canWrite,disabled:h.value},null,8,$),[[d,F.value]])])],64))]),_:1},8,[`open`,`title`,`busy`]))}}),tt=[`disabled`],nt={key:1,class:`employee-share-preview`,role:`status`},rt={key:2,class:`employee-share-empty`},it={key:3,class:`ui-dialog__error employee-dialog-error`,role:`alert`},at={key:4,class:`employee-share-result`},ot={class:`ui-field`},st=[`value`,`aria-label`],ct=[`href`],lt={key:5,class:`ui-meta`},ut={key:6,class:`employee-share-active`},dt={class:`employee-dialog-count`},ft=D(t({__name:`EmployeeShareDialog`,props:{open:{type:Boolean},projects:{}},emits:[`close`],setup(t,{emit:c}){let d=t,p=c,m=a([]),h=a({}),S=a({}),C=a(!1),D=a(!1),k=a(null),A=a(``),j=a(``),N=a(``),P=a(!1),F=0,I=v(()=>d.projects.filter(e=>h.value[e.id]?.publicShareEnabled)),L=v(()=>m.value.every(e=>S.value[e]!==void 0)?m.value.reduce((e,t)=>e+S.value[t],0):null),ee=[`localhost`,`127.0.0.1`,`[::1]`].includes(window.location.hostname);e([()=>d.open,()=>JSON.stringify(d.projects.map(e=>e.id))],()=>{d.open?B():++F},{immediate:!0}),e(m,()=>{N.value=``,P.value=!1});function R(e){return`/employee-workspaces/jefa/${encodeURIComponent(e)}/api`}async function B(e=!1){let t=++F;e||(m.value=[]),h.value={},S.value={},j.value=``,N.value=``,C.value=!0;let n=await Promise.allSettled(d.projects.map(async e=>{let t=(await T(`${R(e.id)}/snapshot`)).snapshot.projects.find(t=>t.id===e.id);if(!t)throw Error(l(`employees.loadError`));let n=null,r=!1;if(t.publicShareEnabled&&t.publicShareSlug)try{n=(await U({id:e.id,slug:t.publicShareSlug})).items.length}catch{r=!0}return{state:t,count:n,previewFailed:r}}));if(t===F){for(let e of n)e.status===`fulfilled`&&(h.value[e.value.state.id]=e.value.state,e.value.count!==null&&(S.value[e.value.state.id]=e.value.count));n.some(e=>e.status===`rejected`||e.value.previewFailed)&&(j.value=l(`employees.share.loadFailed`)),C.value=!1}}async function V(){if(!m.value.length||D.value||C.value||L.value===0)return;D.value=!0,k.value=`generate`,A.value=``,j.value=``,N.value=``,P.value=!1;let e=F,t=m.value.filter(e=>d.projects.some(t=>t.id===e));try{let n=await Promise.allSettled(t.map(async t=>{if(!h.value[t])throw Error(l(`employees.share.loadFailed`));let n=h.value[t];if(!n.publicShareEnabled||!n.publicShareSlug){if(n=(await w(`/employee-workspaces/jefa/${encodeURIComponent(t)}/api/projects/${encodeURIComponent(t)}/sharing`,{publicShareEnabled:!0,acceptsPublicRequests:!1})).project,n.id!==t||!n.publicShareEnabled||!n.publicShareSlug)throw Error(l(`employees.loadError`));if(e!==F)throw Error(l(`employees.share.loadFailed`));h.value[t]=n}let r=(await U({id:t,slug:n.publicShareSlug})).items.length;if(e!==F)throw Error(l(`employees.share.loadFailed`));return S.value[t]=r,{id:t,slug:n.publicShareSlug}}));if(e!==F)return;if(n.some(e=>e.status===`rejected`))throw Error(l(`employees.share.partial`));if(t.every(e=>S.value[e]===0))throw Error(l(`employees.shareContent.emptySelection`));N.value=ie(n.flatMap(e=>e.status===`fulfilled`?[e.value]:[]),window.location.origin)}catch(t){e===F&&(j.value=z(t))}finally{D.value=!1,k.value=null,A.value=``}}async function te(e){if(!D.value){D.value=!0,k.value=`revoke`,A.value=e,j.value=``,N.value=``,P.value=!1;try{let t=await w(`/employee-workspaces/jefa/${encodeURIComponent(e)}/api/projects/${encodeURIComponent(e)}/sharing`,{publicShareEnabled:!1,acceptsPublicRequests:!1});if(t.project.id!==e||t.project.publicShareEnabled)throw Error(l(`employees.loadError`));h.value[e]=t.project,delete S.value[e]}catch(e){j.value=z(e)}finally{D.value=!1,k.value=null,A.value=``}}}async function ne(){try{await navigator.clipboard.writeText(N.value),P.value=!0}catch{j.value=l(`employees.share.copyFailed`)}}function re(){D.value||p(`close`)}return(e,a)=>(i(),u(M,{open:t.open,class:`employee-dialog employee-share-dialog`,title:_(l)(`employees.share.title`),description:_(l)(`employees.share.disclosure`),busy:D.value,onClose:re},{footer:n(()=>[x(`span`,dt,g(_(l)(`employees.scope.count`,{selected:m.value.length,total:t.projects.length})),1),s(O,{variant:`primary`,disabled:!m.value.length||D.value||C.value||L.value===0,busy:k.value===`generate`,"busy-label":_(l)(`employees.share.generating`),onClick:V},{default:n(()=>[y(g(_(l)(`employees.share.generate`)),1)]),_:1},8,[`disabled`,`busy`,`busy-label`])]),default:n(()=>[C.value?(i(),u(E,{key:0,variant:`compact`,label:_(l)(`employees.loadingShare`)},null,8,[`label`])):b(``,!0),x(`fieldset`,{disabled:D.value||C.value},[s(H,{modelValue:m.value,"onUpdate:modelValue":a[0]||=e=>m.value=e,projects:t.projects,disabled:D.value||C.value,inline:``,label:_(l)(`employees.share.projects`),hint:_(l)(`employees.share.scopeHint`)},null,8,[`modelValue`,`projects`,`disabled`,`label`,`hint`])],8,tt),m.value.length&&!C.value?(i(),o(`p`,nt,[y(g(L.value===null?_(l)(`employees.shareContent.verifyContent`):_(l)(`employees.shareContent.publicCount`,{count:L.value}))+` `,1),s(O,{size:`sm`,variant:`ghost`,disabled:D.value||C.value,onClick:a[1]||=e=>B(!0)},{default:n(()=>[y(g(_(l)(`common.actions.refresh`)),1)]),_:1},8,[`disabled`])])):b(``,!0),m.value.length&&!C.value&&L.value===0?(i(),o(`p`,rt,g(_(l)(`employees.shareContent.emptySelection`)),1)):b(``,!0),j.value?(i(),o(`div`,it,[x(`p`,null,g(j.value),1),D.value?b(``,!0):(i(),u(O,{key:0,size:`sm`,onClick:a[2]||=e=>B(!0)},{default:n(()=>[y(g(_(l)(`employees.retry`)),1)]),_:1}))])):b(``,!0),N.value?(i(),o(`div`,at,[x(`label`,ot,[y(g(_(l)(`employees.share.link`)),1),x(`input`,{value:N.value,readonly:``,"aria-label":_(l)(`employees.share.link`),onFocus:a[3]||=e=>e.target.select()},null,40,st)]),x(`div`,null,[s(O,{size:`sm`,onClick:ne},{default:n(()=>[y(g(_(l)(P.value?`employees.share.copied`:`employees.share.copy`)),1)]),_:1}),x(`a`,{href:N.value,target:`_blank`,rel:`noreferrer`},g(_(l)(`employees.share.preview`)),9,ct)])])):b(``,!0),_(ee)?(i(),o(`p`,lt,g(_(l)(`employees.share.local`)),1)):b(``,!0),I.value.length?(i(),o(`section`,ut,[x(`h3`,null,g(_(l)(`employees.share.active`)),1),(i(!0),o(f,null,r(I.value,e=>(i(),o(`div`,{key:e.id},[x(`span`,null,g(e.name),1),s(O,{size:`sm`,variant:`ghost`,disabled:D.value,busy:k.value===`revoke`&&A.value===e.id,"busy-label":_(l)(`employees.share.revoking`),onClick:t=>te(e.id)},{default:n(()=>[y(g(_(l)(`employees.share.revoke`)),1)]),_:1},8,[`disabled`,`busy`,`busy-label`,`onClick`])]))),128))])):b(``,!0)]),_:1},8,[`open`,`title`,`description`,`busy`]))}}),[[`__scopeId`,`data-v-50bf5065`]]);function pt(e){return`fuli:jefa:project-filter:v1:${encodeURIComponent(e)}`}function mt(t){let n=A(),r=k(),i=a(null),o=a(!1),s=a(!1),c=!1,l=``,u=!0;e([t.enabled,t.spaceId],([e,t])=>{let n=e?t:``;if(n!==l&&(u=!l||!n,l=n,i.value=null,c=!1,o.value=!1,s.value=!1,l))try{let e=localStorage.getItem(pt(l));if(!e)return;let t=JSON.parse(e);t&&typeof t==`object`&&`version`in t&&t.version===1&&`projectIds`in t&&Array.isArray(t.projectIds)&&t.projectIds.every(e=>typeof e==`string`&&e.length>0&&e===e.trim())&&(i.value=[...new Set(t.projectIds)],c=!0)}catch(e){s.value=!(e instanceof SyntaxError)}},{immediate:!0,flush:`sync`});function d(){if(l)try{let e=pt(l);i.value===null?localStorage.removeItem(e):localStorage.setItem(e,JSON.stringify({version:1,projectIds:i.value})),s.value=!1}catch{s.value=!0}}function f(){let e=n.query.project;return[...new Set((Array.isArray(e)?e:[e]).filter(e=>typeof e==`string`&&!!e))]}function p(){return[n.query.empty].flat().includes(`1`)}function m(e){return!e.length&&!p()||e.length===1&&[`all`,`__all__`].includes(e[0])}let h=v(()=>t.projectIds.value.filter(e=>i.value===null||i.value.includes(e)));function g(){if(!t.enabled.value||!l||!t.ready.value||!c)return;let e=h.value,a=f(),o=i.value===null||e.length>0&&e.length===t.projectIds.value.length;o&&n.query.project===`all`&&n.query.empty===void 0||i.value!==null&&!m(a)&&a.length===e.length&&a.every(t=>e.includes(t))&&(e.length>0||n.query.empty===`1`)||r.replace({query:{...n.query,project:o?`all`:e.length?e:``,empty:o||e.length?void 0:`1`}})}e([t.enabled,t.spaceId,t.ready,t.projectIds,()=>n.query.project,()=>n.query.empty],()=>{if(!(!t.enabled.value||!l||!t.ready.value)){if(!c){let e=f(),n=!u||m(e);if(o.value=!n&&e.some(e=>!t.projectIds.value.includes(e)),o.value)return;i.value=n?null:[...new Set(e)],c=!0,n||d()}g()}},{immediate:!0});let _=v({get:()=>h.value,set:e=>{if(!t.enabled.value||!l||!t.ready.value)return;let n=i.value?.filter(e=>!t.projectIds.value.includes(e))??[];i.value=[...new Set([...n,...e.filter(e=>t.projectIds.value.includes(e))])],c=!0,o.value=!1,d(),g()}});function y(){i.value=null,c=!0,o.value=!1,d(),g()}return{selection:_,reset:y,invalidScope:o,storageUnavailable:s}}var ht=[`aria-label`],gt={class:`judgment-workbench-heading`},_t={class:`judgment-workbench-actions`},vt=[`disabled`],yt=[`disabled`],bt={key:2,class:`judgment-workbench-error`,role:`alert`},xt=[`disabled`],St={key:3,class:`judgment-workbench-error`,role:`alert`},Ct=[`aria-label`],wt=[`aria-pressed`],Tt=[`aria-pressed`],Et={key:4,class:`judgment-workbench-empty`},Dt={key:5,class:`judgment-record-list`},Ot={class:`judgment-record-heading`},kt={class:`judgment-record-kind`},At={class:`judgment-record-summary`},jt={class:`judgment-record-meta`},Mt={key:0},Nt={key:1},Pt={key:2},Ft={key:0,class:`judgment-record-evidence`},It={key:1,class:`judgment-record-details`,"data-judgment-details":``},Lt={class:`judgment-record-detail-list`},Rt={key:0},zt={key:1},Bt={key:0,class:`judgment-record-detail-block`},Vt={key:0},Ht={key:1,class:`judgment-record-detail-block`},Ut={key:2,class:`judgment-record-detail-block`},Wt=[`aria-label`],Gt={class:`judgment-feedback-editor`,"data-feedback-editor":``},Kt={"data-feedback-toggle":``},qt={class:`judgment-feedback-editor-row`},Jt=[`for`],Yt=[`id`,`onUpdate:modelValue`,`disabled`,`onInput`,`onKeydown`],Xt=[`aria-label`,`title`,`disabled`,`onClick`],Zt={class:`judgment-feedback-actions`},Qt=[`aria-label`,`aria-pressed`,`title`,`disabled`,`onClick`],$t={class:`visually-hidden`},en=[`aria-label`,`aria-pressed`,`title`,`disabled`,`onClick`],tn={class:`visually-hidden`},nn=D(t({__name:`JudgmentWorkbench`,props:{personalSpaceId:{}},setup(t){let n=t,s=a([]),l=a(!1),y=a(``),S=a(``),C=a(`human`),w=a(!1),T=a(null),D=a({}),O=a(new Set),k=0,A=0,j=0,M=0,N=v(()=>[...C.value===`human`?s.value.filter(W):s.value].sort((e,t)=>t.createdAt.localeCompare(e.createdAt))),P=v(()=>l.value||w.value);e(()=>n.personalSpaceId,e=>{k+=1,j+=1,M+=1,s.value=[],D.value={},O.value=new Set,y.value=``,S.value=``,w.value=!1,T.value=null,L(e)},{immediate:!0});function F(e,t){return n.personalSpaceId===e&&k===t}function I(e){let t={};for(let n of e)t[n.id]=O.value.has(n.id)?D.value[n.id]??``:n.feedback?.reason??``;s.value=e,D.value=t}async function L(e){let t=typeof e==`string`?e:n.personalSpaceId,r=k,i=++A;if(y.value=``,!t||!F(t,r)){l.value=!1;return}l.value=!0;try{let e=await G(t);F(t,r)&&i===A&&I(Array.isArray(e.records)?e.records:[])}catch(e){F(t,r)&&i===A&&(y.value=e instanceof Error?e.message:q(`workbench.loadError`))}finally{F(t,r)&&i===A&&(l.value=!1)}}async function ee(){if(!n.personalSpaceId||w.value)return;let e=n.personalSpaceId,t=k,r=++j;w.value=!0,S.value=``;try{let n=await K(e,void 0,10);if(!F(e,t)||r!==j)return;let i=new Map(s.value.map(e=>[e.id,e]));for(let e of n.records??[])i.set(e.id,e);I([...i.values()])}catch(n){F(e,t)&&r===j&&(S.value=n instanceof Error?n.message:q(`workbench.reviewError`))}finally{F(e,t)&&r===j&&(w.value=!1)}}function R(e){return e&&typeof e==`object`&&`status`in e&&typeof e.status==`number`?e.status:null}function z(e){return(D.value[e.id]??e.feedback?.reason??``).trim().slice(0,1e3)}function B(e){let t=new Set(O.value);t.add(e),O.value=t}function V(e){let t=s.value.findIndex(t=>t.id===e.id);t>=0&&s.value.splice(t,1,e);let n=new Set(O.value);n.delete(e.id),O.value=n,D.value={...D.value,[e.id]:e.feedback?.reason??``}}async function H(e,t){if(T.value)return;let r=n.personalSpaceId,i=k,a=++M;if(!(!r||!F(r,i))){T.value=e.id,y.value=``;try{let n=await oe(r,e.id,t,z(e),e.feedback.revision);F(r,i)&&a===M&&V(n)}catch(e){if(!F(r,i)||a!==M)return;R(e)===409?(await L(r),F(r,i)&&(y.value=q(`workbench.feedbackConflict`))):y.value=e instanceof Error?e.message:q(`workbench.reviewError`)}finally{F(r,i)&&a===M&&(T.value=null)}}}function te(e,t){H(e,e.feedback.vote===t?null:t)}function ne(e){H(e,e.feedback.vote)}function re(e){return!e||Number.isNaN(Date.parse(e))?q(`workbench.timeUnknown`):new Date(e).toLocaleString()}function ie(e){return q(`workbench.outcome.${e}`)}function U(e){return q(`workbench.executionStatus.${e}`)}function ae(e){return q(`workbench.kind.${e}`)}function se(e){return e.policy?[e.policy.mode?q(`mode.${e.policy.mode}`):``,e.policy.quality?q(`quality.${e.policy.quality}`):``,e.policy.client?q(`client.${e.policy.client}`):``].filter(Boolean).join(` · `):`—`}function ce(e){return e===`codex`||e===`claude_code`?q(`client.${e}`):e||``}function J(e){return[ce(e.client),e.model||``].filter(Boolean).join(` · `)}function Y(e){return e.selection?[e.selection.executorId,e.selection.model,ce(e.selection.client)].filter(Boolean).join(` · `):``}function X(e,t=4e3){if(typeof e==`string`)return e.slice(0,t);if(e==null)return``;try{let n=JSON.stringify(e,null,2);return typeof n==`string`?n.slice(0,t):``}catch{return q(`workbench.detailsUnavailable`)}}function le(e){let t=e.execution?.receipt;if(!t||typeof t!=`object`)return``;let n=t.reason;return typeof n==`string`?n:``}function ue(e){return!!(e.sessionId||e.error||e.execution?.receipt||e.feedbackHistory?.length||e.executionHistory?.length)}return(e,t)=>(i(),o(`section`,{class:`judgment-workbench`,"aria-label":_(q)(`workbench.aria`)},[x(`header`,gt,[x(`div`,null,[x(`h2`,null,g(_(q)(`workbench.title`)),1),x(`p`,null,g(_(q)(`workbench.subtitle`)),1)]),x(`div`,_t,[w.value?(i(),u(E,{key:0,variant:`inline`,label:_(q)(`workbench.reviewing`)},null,8,[`label`])):b(``,!0),x(`button`,{class:`quiet-button`,type:`button`,disabled:P.value,onClick:L},g(_(q)(`workbench.refresh`)),9,vt),x(`button`,{class:`ui-button ui-button--primary`,type:`button`,"data-action":`review`,disabled:P.value||!n.personalSpaceId,onClick:ee},g(_(q)(`workbench.review`)),9,yt)])]),l.value&&!s.value.length?(i(),u(E,{key:0,variant:`compact`,label:_(q)(`workbench.loading`)},null,8,[`label`])):l.value?(i(),u(E,{key:1,variant:`inline`,label:_(q)(`workbench.loading`)},null,8,[`label`])):b(``,!0),y.value?(i(),o(`div`,bt,[x(`span`,null,g(y.value),1),x(`button`,{class:`quiet-button`,type:`button`,disabled:P.value,onClick:L},g(_(q)(`workbench.retry`)),9,xt)])):b(``,!0),S.value?(i(),o(`div`,St,g(S.value),1)):b(``,!0),x(`div`,{class:`judgment-filter`,role:`group`,"aria-label":_(q)(`workbench.title`)},[x(`button`,{type:`button`,"data-filter":`human`,"aria-pressed":C.value===`human`,onClick:t[0]||=e=>C.value=`human`},g(_(q)(`workbench.human`)),9,wt),x(`button`,{type:`button`,"data-filter":`all`,"aria-pressed":C.value===`all`,onClick:t[1]||=e=>C.value=`all`},g(_(q)(`workbench.all`)),9,Tt)],8,Ct),!l.value&&!y.value&&!N.value.length?(i(),o(`div`,Et,g(_(q)(C.value===`human`?`workbench.emptyHuman`:`workbench.empty`)),1)):(i(),o(`div`,Dt,[(i(!0),o(f,null,r(N.value,e=>(i(),o(`article`,{key:e.id,"data-decision-card":``,class:m([`judgment-record-card`,{"is-human-needed":_(W)(e)}])},[x(`header`,Ot,[x(`div`,null,[x(`span`,kt,g(ae(e.kind)),1),x(`h3`,null,g(e.title||e.objective||ae(e.kind)),1)]),x(`span`,{class:m([`judgment-outcome`,`is-${e.outcome}`])},g(ie(e.outcome)),3)]),x(`p`,At,g(e.summary),1),x(`dl`,jt,[x(`div`,null,[x(`dt`,null,g(_(q)(`workbench.execution`)),1),x(`dd`,null,g(U(e.execution.status)),1)]),x(`div`,null,[x(`dt`,null,g(_(q)(`workbench.policy`)),1),x(`dd`,null,g(se(e)),1)]),e.client||e.model?(i(),o(`div`,Mt,[x(`dt`,null,g(_(q)(`workbench.source`)),1),x(`dd`,null,g(J(e)),1)])):b(``,!0),e.disposition?(i(),o(`div`,Nt,[x(`dt`,null,g(_(q)(`workbench.disposition`)),1),x(`dd`,null,g(_(q)(`workbench.actions.${e.disposition}`)),1)])):b(``,!0),e.selection?(i(),o(`div`,Pt,[x(`dt`,null,g(_(q)(`workbench.selection`)),1),x(`dd`,null,g(Y(e)),1)])):b(``,!0),x(`div`,null,[t[2]||=x(`dt`,null,null,-1),x(`dd`,null,g(re(e.createdAt)),1)])]),e.evidence.length?(i(),o(`section`,Ft,[x(`h4`,null,g(_(q)(`workbench.evidence`)),1),x(`ul`,null,[(i(!0),o(f,null,r(e.evidence,e=>(i(),o(`li`,{key:e},g(e),1))),128))])])):b(``,!0),ue(e)?(i(),o(`details`,It,[x(`summary`,null,g(_(q)(`workbench.details`)),1),x(`dl`,Lt,[e.sessionId?(i(),o(`div`,Rt,[x(`dt`,null,g(_(q)(`workbench.session`)),1),x(`dd`,null,[x(`code`,null,g(e.sessionId),1)])])):b(``,!0),e.error?(i(),o(`div`,zt,[x(`dt`,null,g(_(q)(`workbench.recordError`)),1),x(`dd`,null,g(X(e.error,1e3)),1)])):b(``,!0)]),e.execution.receipt?(i(),o(`section`,Bt,[x(`h4`,null,g(_(q)(`workbench.receipt`)),1),le(e)?(i(),o(`p`,Vt,g(le(e)),1)):b(``,!0),x(`pre`,null,g(X(e.execution.receipt,3e3)),1)])):b(``,!0),e.feedbackHistory?.length?(i(),o(`section`,Ht,[x(`h4`,null,g(_(q)(`workbench.feedbackHistory`)),1),(i(!0),o(f,null,r(e.feedbackHistory.slice(-5),(e,t)=>(i(),o(`pre`,{key:`${t}-${X(e,200)}`},g(X(e,1200)),1))),128))])):b(``,!0),e.executionHistory?.length?(i(),o(`section`,Ut,[x(`h4`,null,g(_(q)(`workbench.executionHistory`)),1),(i(!0),o(f,null,r(e.executionHistory.slice(-5),(e,t)=>(i(),o(`pre`,{key:`${t}-${X(e,200)}`},g(X(e,1200)),1))),128))])):b(``,!0)])):b(``,!0),x(`section`,{class:`judgment-record-feedback`,"aria-label":_(q)(`workbench.feedback`)},[x(`details`,Gt,[x(`summary`,Kt,g(D.value[e.id]?_(q)(`workbench.feedbackReasonSaved`):_(q)(`workbench.feedbackReasonAdd`)),1),x(`div`,qt,[x(`label`,{class:`visually-hidden`,for:`judgment-feedback-${e.id}`},g(_(q)(`workbench.feedbackReason`)),9,Jt),c(x(`textarea`,{id:`judgment-feedback-${e.id}`,"onUpdate:modelValue":t=>D.value[e.id]=t,"data-feedback-reason":``,rows:`2`,maxlength:`1000`,disabled:T.value===e.id,onInput:t=>B(e.id),onKeydown:h(p(t=>ne(e),[`exact`,`prevent`]),[`enter`])},null,40,Yt),[[d,D.value[e.id]]]),x(`button`,{class:`judgment-save-reason`,type:`button`,"data-save-reason":``,"aria-label":_(q)(`workbench.saveReason`),title:_(q)(`workbench.saveReason`),disabled:T.value===e.id,onClick:t=>ne(e)},[...t[3]||=[x(`span`,{"aria-hidden":`true`},`✓`,-1)]],8,Xt)])]),x(`div`,Zt,[x(`button`,{type:`button`,"data-feedback":`up`,"aria-label":_(q)(`workbench.feedbackUp`),"aria-pressed":e.feedback.vote===`up`,title:_(q)(`workbench.feedbackUp`),disabled:T.value===e.id,onClick:t=>te(e,`up`)},[t[4]||=x(`span`,{"aria-hidden":`true`},`👍`,-1),x(`span`,$t,g(_(q)(`workbench.feedbackUp`)),1)],8,Qt),x(`button`,{type:`button`,"data-feedback":`down`,"aria-label":_(q)(`workbench.feedbackDown`),"aria-pressed":e.feedback.vote===`down`,title:_(q)(`workbench.feedbackDown`),disabled:T.value===e.id,onClick:t=>te(e,`down`)},[t[5]||=x(`span`,{"aria-hidden":`true`},`👎`,-1),x(`span`,tn,g(_(q)(`workbench.feedbackDown`)),1)],8,en),T.value===e.id?(i(),u(E,{key:0,"data-feedback-saving":``,variant:`inline`,label:_(q)(`workbench.feedbackSaving`)},null,8,[`label`])):b(``,!0)])],8,Wt)],2))),128))]))],8,ht))}}),[[`__scopeId`,`data-v-2cae6841`]]),rn=[`aria-label`],an={class:`employee-workbench-toolbar`},on={class:`employee-workbench-identity`},sn={class:`employee-workbench-mark`,"aria-hidden":`true`},cn=[`src`],ln=[`aria-label`,`title`],un={class:`employee-workbench-actions`},dn=[`disabled`],fn={key:4,class:`employee-workbench-state`,role:`alert`},pn={key:5,class:`employee-workbench-state`},mn={key:8,class:`employee-workbench-state`},hn={key:9,class:`employee-workbench-state`},gn={key:11,class:`employee-workbench-state`},_n=[`src`,`title`],vn=`all`,yn=D(t({__name:`EmployeeWorkbenchPage`,setup(t){let r=A(),c=k(),d=S(),p=a(``),m=a(null),h=a([]),D=a([]),O=a([]),M=a([]),N=a(``),P=a(``),F=a(!1),L=a(!1),H=a(!1),ie=a(!1),U=a(!1),ae=a(!1),oe=a(null),W=v(()=>d.activePersonalSpace?.id??``),G=v(()=>String(r.params.templateId??``)),K=v(()=>ee.value.find(e=>e.id===G.value)),q=v(()=>{let e=K.value?.workbench;return e?.kind===`native`?e.view??null:null}),se=v(()=>q.value===`people`),ce=v(()=>q.value===`judgment`),J=v(()=>se.value||ce.value),Y=v(()=>G.value===`jefa`),X=v(()=>!d.state&&(d.runtimeStatus===`idle`||d.runtimeStatus===`loading`)||!L.value||F.value),le=v(()=>d.state?R.value||!L.value?l(`employees.loading`):l(`employees.loadingBoard`):l(`common.status.loadingConsole`)),ue=v(()=>!d.state&&d.runtimeStatus===`error`?d.feedback?.message||l(`employees.loadError`):``),de=v(()=>ue.value||V.value||(Y.value&&pe.invalidScope.value?l(`employees.invalidScope`):P.value)),Z=v(()=>K.value?.managedProjects===void 0?(K.value?.assignments??[]).filter(e=>e.status===`active`).map(e=>({value:e.personalProjectId,label:d.state?.personalProjects?.find(t=>t.project_id===e.personalProjectId)?.profile.name??e.personalProjectId})):K.value.managedProjects.map(e=>({value:e.id,label:e.name}))),fe=v(()=>JSON.stringify([...new Set(Z.value.map(e=>e.value))].sort()));e(W,e=>{L.value=!1,B(e)},{immediate:!0});let pe=mt({enabled:Y,spaceId:W,projectIds:v(()=>Z.value.map(e=>e.value)),ready:v(()=>!R.value&&!V.value&&!!K.value)}),me=v({get:()=>{if(Y.value)return pe.selection.value;let e=new Set(O.value);return Z.value.filter(t=>!e.has(t.value)).map(e=>e.value)},set:e=>{if(Y.value){pe.selection.value=e;return}let t=new Set(Z.value.map(e=>e.value)),n=new Set(e);O.value=[...O.value.filter(e=>!t.has(e)),...Z.value.filter(e=>!n.has(e.value)).map(e=>e.value)]}}),he=v(()=>{let e=new Set(me.value);return h.value.filter(t=>e.has(t.project.id))}),ge=v(()=>{let e=new Set(me.value);return D.value.filter(t=>e.has(t)).length}),_e=v(()=>K.value?.runtimeStatus===`ready`&&K.value.permissions.includes(`board.read`)&&Z.value.length>0),ve=v(()=>_e.value?[{value:vn,label:l(`employees.allProjects.option`),meta:l(`employees.allProjects.optionMeta`,{count:Z.value.length})},...Z.value]:Z.value),ye=0;e([G,W],()=>{O.value=[],ae.value=!1,U.value=!1,oe.value=null}),e([ve,()=>r.query.project,()=>r.query.empty,G,J],()=>{if(J.value){if(++ye,p.value=``,F.value=!1,P.value=``,r.query.project!==void 0){let{project:e,...t}=r.query;c.replace({query:t})}return}if(Y.value){p.value=Z.value.length?vn:``;return}let e=typeof r.query.project==`string`?r.query.project:``,t=ve.value;p.value=e||(t.some(e=>e.value===p.value)?p.value:t[0]?.value??``),!e&&p.value&&c.replace({query:{...r.query,project:p.value}})},{immediate:!0}),e([G,p,W,_e,L],()=>{!J.value&&L.value&&Q()},{immediate:!0}),e(R,e=>{if(!e){if(!L.value){L.value=!0;return}H.value&&(H.value=!1,Q())}},{immediate:!0}),e(pe.invalidScope,e=>{!e&&Y.value&&L.value&&Q()}),e(fe,(e,t)=>{e===t||!L.value||J.value||Q()});async function Q(){let e=++ye;if(m.value=null,h.value=[],D.value=[],N.value=``,P.value=``,J.value||!K.value||!p.value||!W.value){F.value=!1;return}if(Y.value&&!_e.value){F.value=!1;return}if(Y.value&&pe.invalidScope.value){F.value=!1;return}if(R.value){H.value=!0,F.value=!0;return}H.value=!1;let t=G.value,n=p.value;F.value=!0;try{if(n===vn&&_e.value){let n=await Promise.all(Z.value.map(async e=>{try{let n=await C(`/api/employee-templates/${encodeURIComponent(t)}/call`,{personalSpaceId:W.value,personalProjectId:e.value,tool:`read_board`,arguments:{limit:100}}),r=Array.isArray(n.items)?n.items.filter(Te).filter(t=>t.projectId===e.value):[],i=n.truncated;if(t===`jefa`&&i)try{let t=await T(`/employee-workspaces/jefa/${encodeURIComponent(e.value)}/api/snapshot`);if(!Array.isArray(t.snapshot.workItems))throw Error(`Invalid board snapshot`);r=t.snapshot.workItems.filter(Te).filter(t=>t.projectId===e.value),i=!1}catch{}return{ok:!0,board:{...n,truncated:i,project:{id:e.value,name:e.label},items:r}}}catch(t){return{ok:!1,cause:t,projectId:e.value}}}));if(e!==ye)return;h.value=n.filter(e=>e.ok).map(e=>e.board),D.value=n.flatMap(e=>e.ok?[]:[e.projectId]),!h.value.length&&D.value.length&&(P.value=z(n.find(e=>!e.ok)?.cause));return}let r=await T(`/api/employee-templates/${encodeURIComponent(t)}/workspace?${new URLSearchParams({personalSpaceId:W.value,personalProjectId:n})}`),i=`/employee-workspaces/${encodeURIComponent(t)}/${encodeURIComponent(n)}/`;if(r.workbenchUrl!==i)throw Error(l(`employees.loadError`));e===ye&&(m.value=r)}catch(t){e===ye&&(P.value=z(t))}finally{e===ye&&(F.value=!1)}}function be(e=null){oe.value=e,ae.value=!0}function xe(e){return`${e.projectId}:${e.id}`}function Se(e,t,n){h.value=h.value.map(r=>r.project.id===e?{...r,items:r.items.map(e=>e.id===t?n:e)}:r)}function Ce(){return`aggregate-board-move-${globalThis.crypto?.randomUUID?.()??`${Date.now()}-${Math.random().toString(36).slice(2)}`}`}async function we(e,t){if(e.status===t)return;let n=xe(e);if(M.value.includes(n))return;let r=`${G.value}:${W.value}`,i={...e,status:t};N.value=``,M.value=[...M.value,n],Se(e.projectId,e.id,i);try{let n;if(G.value===`jefa`&&t===`done`)n=(await w(`/employee-workspaces/${encodeURIComponent(G.value)}/${encodeURIComponent(e.projectId)}/api/work-items/${encodeURIComponent(e.id)}/status`,{status:t})).workItem;else{if(!e.updatedAt)throw Error(l(`employees.allProjects.refreshRequired`));n=(await C(`/api/employee-templates/${encodeURIComponent(G.value)}/call`,{personalSpaceId:W.value,personalProjectId:e.projectId,tool:`update_tasks`,arguments:{requestId:Ce(),updates:[{id:e.id,expectedUpdatedAt:e.updatedAt,status:t}]}})).updatedWorkItems?.find(t=>t.id===e.id)}if(`${G.value}:${W.value}`!==r)return;if(!n||!Te(n)||n.projectId!==e.projectId||n.id!==e.id||!n.updatedAt)throw Error(l(`employees.allProjects.refreshRequired`));Se(e.projectId,e.id,n)}catch(t){if(`${G.value}:${W.value}`!==r)return;Se(e.projectId,e.id,e),N.value=l(`employees.allProjects.moveFailed`,{error:z(t)})}finally{M.value=M.value.filter(e=>e!==n)}}function Te(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.id==`string`&&typeof t.projectId==`string`&&typeof t.title==`string`&&[`planned`,`active`,`blocked`,`review`,`done`].includes(t.status??``)}async function Ee(){if(!d.state){await d.refresh();return}await B(W.value),V.value||await Q()}async function De(){if(Y.value){await c.replace({query:{...r.query,project:vn,empty:void 0}}),await Q();return}let e=p.value===vn&&_e.value?vn:Z.value.find(e=>e.value===p.value)?.value??ve.value[0]?.value;await c.replace({query:e?{project:e}:{}}),await Q()}return(e,t)=>(i(),o(`section`,{class:`employee-workbench-view`,"aria-label":K.value?.name??_(l)(`employees.workbench`)},[x(`header`,an,[x(`div`,on,[x(`span`,sn,[_(te)(G.value)?(i(),o(`img`,{key:0,src:_(te)(G.value),alt:``},null,8,cn)):(i(),o(f,{key:1},[y(g(K.value?.name.slice(0,1)??`A`),1)],64))]),x(`h1`,null,[y(g(K.value?.name??_(l)(`employees.workbench`))+` `,1),x(`span`,null,g(K.value?.role),1)]),Y.value&&_e.value?(i(),o(`button`,{key:0,class:`employee-share-button`,type:`button`,"aria-label":_(l)(`employees.share.title`),title:_(l)(`employees.share.title`),onClick:t[0]||=e=>U.value=!0},[...t[8]||=[x(`svg`,{width:`19`,height:`19`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.7`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[x(`path`,{d:`M14 3h7v7m0-7-9 9M10 5H5a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5`}),x(`path`,{d:`M7 16v-3m4 3v-1`})],-1)]],8,ln)):b(``,!0)]),x(`div`,un,[J.value&&K.value?.agentId&&W.value?(i(),u(_(j),{key:0,class:`employee-native-link`,to:_(I)(W.value,K.value.agentId),title:_(l)(`agentProfiles.profile`)},{default:n(()=>[y(g(_(l)(`agentProfiles.profile`)),1)]),_:1},8,[`to`,`title`])):b(``,!0),K.value&&!J.value?(i(),o(`button`,{key:1,class:`employee-manage-projects`,type:`button`,disabled:!W.value,onClick:t[1]||=e=>ie.value=!0},[t[9]||=x(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.6`,"stroke-linecap":`round`,"aria-hidden":`true`},[x(`path`,{d:`M4 7h9m4 0h3M4 17h3m4 0h9`}),x(`circle`,{cx:`15`,cy:`7`,r:`2`}),x(`circle`,{cx:`9`,cy:`17`,r:`2`})],-1),y(` `+g(_(l)(`employees.manageProjects`)),1)],8,dn)):b(``,!0)])]),J.value?b(``,!0):(i(),u(ne,{key:0,open:ie.value,"personal-space-id":W.value,projects:_(d).state?.personalProjects??[],"template-id":G.value,onClose:t[2]||=e=>ie.value=!1,onRecruited:De},null,8,[`open`,`personal-space-id`,`projects`,`template-id`])),Y.value?(i(),u(et,{key:1,open:ae.value,item:oe.value,projects:Z.value.map(e=>({id:e.value,name:e.label})),"default-project-id":me.value.length===1?me.value[0]:void 0,"personal-space-id":W.value,"can-write":K.value?.permissions.includes(`board.write`)??!1,onClose:t[3]||=e=>ae.value=!1,onSaved:Q},null,8,[`open`,`item`,`projects`,`default-project-id`,`personal-space-id`,`can-write`])):b(``,!0),Y.value?(i(),u(ft,{key:2,open:U.value,projects:Z.value.map(e=>({id:e.value,name:e.label})),onClose:t[4]||=e=>U.value=!1},null,8,[`open`,`projects`])):b(``,!0),X.value?(i(),u(E,{key:3,label:le.value},null,8,[`label`])):de.value?(i(),o(`div`,fn,[x(`p`,null,g(de.value),1),x(`button`,{class:`quiet-button`,type:`button`,onClick:Ee},g(_(l)(`employees.retry`)),1)])):K.value?se.value?(i(),u(We,{key:6,"personal-space-id":W.value,projects:_(d).state?.personalProjects??[]},null,8,[`personal-space-id`,`projects`])):ce.value?(i(),u(nn,{key:7,"personal-space-id":W.value},null,8,[`personal-space-id`])):Y.value&&K.value.runtimeStatus!==`ready`?(i(),o(`div`,mn,[x(`p`,null,g(_(l)(`employees.installRequired`)),1),x(`small`,null,g(_(l)(`employees.installHelp`)),1)])):p.value?p.value===vn&&_e.value?(i(),u(re,{key:10,"visible-project-ids":me.value,"onUpdate:visibleProjectIds":t[6]||=e=>me.value=e,boards:he.value,projects:Z.value.map(e=>({id:e.value,name:e.label})),"failed-projects":ge.value,"can-move-tasks":K.value.permissions.includes(`board.write`),"moving-item-keys":M.value,"action-error":N.value,"resettable-filter":Y.value,"filter-storage-unavailable":_(pe).storageUnavailable.value,onResetProjectFilter:_(pe).reset,onMoveTask:we,onSelectTask:be,onCreateTask:t[7]||=e=>be(),onRetry:Q},null,8,[`visible-project-ids`,`boards`,`projects`,`failed-projects`,`can-move-tasks`,`moving-item-keys`,`action-error`,`resettable-filter`,`filter-storage-unavailable`,`onResetProjectFilter`])):m.value&&m.value.runtimeStatus!==`ready`?(i(),o(`div`,gn,[x(`p`,null,g(_(l)(`employees.installRequired`)),1),x(`small`,null,g(_(l)(`employees.installHelp`)),1)])):m.value?(i(),o(`iframe`,{key:m.value.workbenchUrl,src:m.value.workbenchUrl,title:`${m.value.name} · ${m.value.project.name}`,class:`employee-workbench-frame`},null,8,_n)):b(``,!0):(i(),o(`div`,hn,[x(`h2`,null,g(_(l)(`employees.emptyWorkbench`)),1),x(`p`,null,g(_(l)(`employees.manageHint`)),1),x(`button`,{class:`quiet-button`,type:`button`,onClick:t[5]||=e=>ie.value=!0},g(_(l)(`employees.manageProjects`)),1)])):(i(),o(`div`,pn,[x(`p`,null,g(_(l)(`employees.unavailable`)),1),s(_(j),{to:`/project-agents`},{default:n(()=>[y(g(_(l)(`employees.backToAgents`)),1)]),_:1})]))],8,rn))}}),[[`__scopeId`,`data-v-a8213486`]]);export{yn as default};
@@ -1 +0,0 @@
1
- import{E as e,P as t,b as n}from"./i18n-oJFlt8hW.js";import{t as r}from"./KnowledgeWorkspace-DA_dqVRG.js";var i=e({__name:`KnowledgePage`,setup(e){return(e,i)=>(t(),n(r))}});export{i as default};
@@ -1 +0,0 @@
1
- .conflict-inputs[data-v-57134f7d]{border:0;gap:12px;min-width:0;margin:0;padding:0;display:grid}.conflict-pair-context[data-v-57134f7d]{flex-wrap:wrap;gap:8px;display:flex}.conflict-pair-context span[data-v-57134f7d]{color:var(--color-muted);background:var(--color-surface-subtle);border-radius:999px;padding:4px 10px;font-size:12px}.conflict-pair-context strong[data-v-57134f7d]{color:var(--color-ink);margin-left:6px;font-weight:600}.conflict-comparison[data-v-57134f7d]{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.conflict-side[data-v-57134f7d]{border:1px solid var(--color-border);border-radius:var(--radius-card);align-content:start;gap:8px;min-width:0;padding:16px;display:grid}.conflict-side-left[data-v-57134f7d]{background:var(--color-surface-subtle)}.conflict-side-heading[data-v-57134f7d]{color:var(--color-muted);justify-content:space-between;gap:12px;font-size:12px;display:flex}.conflict-side h3[data-v-57134f7d],.conflict-side p[data-v-57134f7d]{margin:0}.conflict-side h3[data-v-57134f7d]{font-size:14px;font-weight:600}.conflict-side p[data-v-57134f7d]{white-space:pre-wrap;min-height:48px;font-size:13px;line-height:1.6}.conflict-side small[data-v-57134f7d]{color:var(--color-muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.conflict-side .ui-button[data-v-57134f7d]{justify-self:start}.conflict-difference[data-v-57134f7d]{border:1px solid var(--color-border);border-radius:var(--radius-control);grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:12px 14px;display:grid}.conflict-difference>div[data-v-57134f7d]{align-content:start;gap:6px;min-width:0;display:grid}.conflict-difference span[data-v-57134f7d]{color:var(--color-muted);font-size:12px;font-weight:600}.conflict-difference p[data-v-57134f7d]{flex-wrap:wrap;gap:5px;margin:0;font-size:12px;display:flex}.conflict-difference b[data-v-57134f7d]{background:var(--color-surface-subtle);border-radius:5px;padding:2px 7px;font-weight:500}.conflict-resolution-options[data-v-57134f7d]{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.conflict-resolution-options>button[data-v-57134f7d]{border:1px solid var(--color-border);border-radius:var(--radius-control);min-height:80px;color:var(--color-ink);background:var(--color-surface);text-align:left;cursor:pointer;transition:border-color var(--motion-fast), background-color var(--motion-fast);align-content:start;gap:4px;padding:12px;display:grid;position:relative}.conflict-resolution-options>button[data-v-57134f7d]:hover:not(:disabled){border-color:var(--color-border-strong)}.conflict-resolution-options>button[aria-pressed=true][data-v-57134f7d]{border-color:var(--color-accent);background:var(--color-accent-soft)}.conflict-resolution-options>button[data-v-57134f7d]:disabled{opacity:.5;cursor:not-allowed}.conflict-resolution-options strong[data-v-57134f7d]{font-size:13px}.conflict-resolution-options span[data-v-57134f7d]{color:var(--color-muted);font-size:12px;line-height:1.45}.conflict-resolution-options em[data-v-57134f7d]{color:var(--color-accent);background:var(--color-surface);border-radius:999px;padding:1px 6px;font-size:11px;font-style:normal;position:absolute;top:8px;right:8px}.conflict-resolution-detail[data-v-57134f7d],.conflict-impact-preview[data-v-57134f7d]{border:1px solid var(--color-border);border-radius:var(--radius-control);gap:10px;padding:12px 14px;display:grid}.conflict-inline-options[data-v-57134f7d]{color:var(--color-muted);align-items:center;gap:10px;font-size:12px;display:flex}.conflict-impact-preview span[data-v-57134f7d]{color:var(--color-warning);font-size:12px;font-weight:600}.conflict-impact-preview p[data-v-57134f7d]{margin:0;font-size:13px;line-height:1.55}.conflict-footer-note[data-v-57134f7d]{color:var(--color-muted);margin-right:auto;font-size:12px}@media (width<=900px){.conflict-comparison[data-v-57134f7d],.conflict-difference[data-v-57134f7d]{grid-template-columns:1fr}.conflict-resolution-options[data-v-57134f7d]{grid-template-columns:repeat(2,minmax(0,1fr))}}.writing-taste-milestone[data-v-9f3e6330]{border:1px solid var(--color-border);border-radius:var(--radius-card);color:var(--color-ink);background:var(--color-surface);transition:border-color var(--motion-fast);grid-template-columns:auto 120px auto 1fr;align-items:center;gap:14px;margin-bottom:18px;padding:10px 14px;font-size:13px;text-decoration:none;display:grid}.writing-taste-milestone[data-v-9f3e6330]:hover{border-color:var(--color-border-strong)}.writing-taste-milestone strong[data-v-9f3e6330]{font-weight:600}.writing-taste-milestone small[data-v-9f3e6330]{color:var(--color-muted);font-variant-numeric:tabular-nums;font-size:12px}.writing-taste-milestone__progress[data-v-9f3e6330]{background:var(--color-surface-subtle);border-radius:2px;height:4px;overflow:hidden}.writing-taste-milestone__progress i[data-v-9f3e6330]{background:var(--color-accent);transform-origin:0;height:100%;display:block}.writing-taste-milestone__action[data-v-9f3e6330]{color:var(--color-accent);justify-self:end;font-size:13px;font-weight:550}.status-preview_ready[data-v-9f3e6330],.status-active[data-v-9f3e6330]{border-color:var(--color-accent-line);background:var(--color-accent-soft)}@media (width<=720px){.writing-taste-milestone[data-v-9f3e6330]{grid-template-columns:1fr auto}.writing-taste-milestone__progress[data-v-9f3e6330],.writing-taste-milestone small[data-v-9f3e6330]{grid-column:1/-1}}.preference-conflict-alert[data-v-1a3c54ed]{border:1px solid var(--color-border);background:var(--color-surface);border-radius:11px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:13px;margin-top:12px;padding:12px 14px;display:grid;box-shadow:0 7px 20px #3142380d}.preference-conflict-alert-icon[data-v-1a3c54ed]{background:var(--color-muted);width:30px;height:30px;color:var(--color-surface);border-radius:50%;place-items:center;font-size:16px;font-weight:800;display:grid}.preference-conflict-alert>div[data-v-1a3c54ed]:nth-child(2){gap:2px;display:grid}.preference-conflict-alert span[data-v-1a3c54ed]{color:var(--color-muted);letter-spacing:.08em;text-transform:uppercase;font-size:12px;font-weight:800}.preference-conflict-alert h2[data-v-1a3c54ed],.preference-conflict-alert p[data-v-1a3c54ed]{margin:0}.preference-conflict-alert h2[data-v-1a3c54ed]{color:var(--color-ink);font-size:14px}.preference-conflict-alert p[data-v-1a3c54ed]{color:var(--color-muted);font-size:12px;line-height:1.5}.preference-conflict-workbench[data-v-1a3c54ed]{flex:1;min-height:0;padding:18px 0 4px;overflow:auto}.preference-conflict-workbench>header[data-v-1a3c54ed]{justify-content:space-between;align-items:flex-end;gap:24px;padding:0 2px 14px;display:flex}.preference-conflict-workbench h2[data-v-1a3c54ed],.preference-conflict-workbench p[data-v-1a3c54ed]{margin:0}.preference-conflict-workbench h2[data-v-1a3c54ed]{color:var(--color-ink);font-size:17px}.preference-conflict-workbench>header>p[data-v-1a3c54ed]{max-width:520px;color:var(--color-muted);text-align:right;font-size:12px;line-height:1.55}.preference-conflict-list[data-v-1a3c54ed]{gap:12px;display:grid}.preference-conflict-card[data-v-1a3c54ed]{border:1px solid var(--color-border);background:var(--color-surface);border-radius:11px;gap:12px;padding:15px;display:grid;box-shadow:0 7px 20px #2d3d340a}.preference-conflict-card-heading[data-v-1a3c54ed],.preference-conflict-card footer[data-v-1a3c54ed]{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.preference-conflict-card-heading>div[data-v-1a3c54ed]{gap:3px;display:grid}.preference-conflict-card-heading>div[data-v-1a3c54ed]:last-child{justify-items:end}.preference-conflict-card-heading span[data-v-1a3c54ed],.preference-conflict-card footer span[data-v-1a3c54ed]{color:var(--color-muted);text-transform:uppercase;font-size:12px;font-weight:700}.preference-conflict-card-heading h3[data-v-1a3c54ed]{color:var(--color-ink);margin:0;font-size:14px}.preference-conflict-card-heading strong[data-v-1a3c54ed]{color:var(--color-muted);font-size:12px}.preference-conflict-pair[data-v-1a3c54ed]{grid-template-columns:minmax(0,1fr) 26px minmax(0,1fr);align-items:stretch;gap:8px;display:grid}.preference-conflict-pair>section[data-v-1a3c54ed]{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);align-content:start;gap:6px;min-width:0;padding:12px;display:grid}.preference-conflict-pair>section[data-v-1a3c54ed]:first-child,.preference-conflict-pair>section[data-v-1a3c54ed]:last-child{border-color:var(--color-border);background:var(--color-surface)}.preference-conflict-pair span[data-v-1a3c54ed],.preference-conflict-pair small[data-v-1a3c54ed]{color:var(--color-muted);font-size:12px}.preference-conflict-pair strong[data-v-1a3c54ed]{color:var(--color-ink);font-size:12px}.preference-conflict-pair p[data-v-1a3c54ed]{color:var(--color-ink);font-size:12px;line-height:1.55}.preference-conflict-pair>i[data-v-1a3c54ed]{color:var(--color-muted);text-align:center;align-self:center;font-size:14px;font-style:normal}.preference-conflict-card footer[data-v-1a3c54ed]{border-top:1px solid var(--color-border);padding-top:11px}.preference-conflict-card footer>div[data-v-1a3c54ed]{gap:4px;display:grid}.preference-conflict-card footer p[data-v-1a3c54ed],.preference-conflict-card footer small[data-v-1a3c54ed]{color:var(--color-muted);font-size:12px}.preference-conflict-card footer button[data-v-1a3c54ed]{flex:none}.preference-conflict-card footer .preference-conflict-actions[data-v-1a3c54ed]{justify-content:flex-end;align-items:center;gap:8px;display:flex}.preference-conflict-card footer .preference-conflict-actions .secondary-action[data-v-1a3c54ed]{color:var(--color-muted);background:var(--color-surface-subtle)}.personal-profile-row.ai-resolved-conflict[data-v-1a3c54ed]{border-color:var(--color-border-strong);background:var(--color-surface)}.personal-profile-row.ai-resolved-conflict .personal-profile-origin strong[data-v-1a3c54ed]{color:var(--color-ink)}.personal-profile-inspector[data-v-1a3c54ed] .inspector-classification.state-pending,.personal-profile-inspector[data-v-1a3c54ed] .inspector-classification.state-needs_review{border-color:var(--color-warning-soft);background:var(--color-warning-soft)}.personal-profile-inspector[data-v-1a3c54ed] .inspector-classification.state-pending strong,.personal-profile-inspector[data-v-1a3c54ed] .inspector-classification.state-needs_review strong{color:var(--color-warning)}@media (width<=860px){.preference-conflict-alert[data-v-1a3c54ed]{grid-template-columns:auto minmax(0,1fr)}.preference-conflict-alert>button[data-v-1a3c54ed]{grid-column:1/-1}.preference-conflict-workbench>header[data-v-1a3c54ed],.preference-conflict-card-heading[data-v-1a3c54ed],.preference-conflict-card footer[data-v-1a3c54ed]{flex-direction:column;align-items:stretch}.preference-conflict-workbench>header>p[data-v-1a3c54ed]{text-align:left}.preference-conflict-card-heading>div[data-v-1a3c54ed]:last-child{justify-items:start}.preference-conflict-pair[data-v-1a3c54ed]{grid-template-columns:1fr}.preference-conflict-card footer .preference-conflict-actions[data-v-1a3c54ed]{flex-wrap:wrap;justify-content:flex-start}}
@@ -1 +0,0 @@
1
- import{E as e,P as t,b as n}from"./i18n-oJFlt8hW.js";import{t as r}from"./KnowledgeWorkspace-DA_dqVRG.js";var i=e({__name:`PersonalProjectsPage`,setup(e){return(e,i)=>(t(),n(r,{"personal-projects-only":``}))}});export{i as default};
@@ -1 +0,0 @@
1
- .judgment-policy-panel[data-v-98f9e2c8]{gap:18px;display:grid}.judgment-panel-heading[data-v-98f9e2c8]{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.judgment-panel-heading h3[data-v-98f9e2c8]{color:var(--color-ink);margin:0;font-size:16px}.judgment-panel-heading p[data-v-98f9e2c8]{color:var(--color-muted);margin:6px 0 0;font-size:13px;line-height:1.55}.judgment-project-field[data-v-98f9e2c8]{grid-template-columns:minmax(130px,.45fr) minmax(180px,1fr) auto;align-items:center;gap:10px;display:grid}.judgment-project-field label[data-v-98f9e2c8],.judgment-progressive-fields label>span[data-v-98f9e2c8]{color:var(--color-muted);font-size:12px}.judgment-project-field select[data-v-98f9e2c8],.judgment-progressive-fields select[data-v-98f9e2c8]{min-height:var(--control-height);border:1px solid var(--color-control-border);border-radius:var(--radius-control);color:var(--color-ink);background:var(--color-surface);font:inherit;padding:7px 10px}.judgment-project-field small[data-v-98f9e2c8]{color:var(--color-muted);white-space:nowrap;font-size:12px}.judgment-project-field small.is-inherited[data-v-98f9e2c8]{color:var(--color-accent)}.judgment-policy-fields[data-v-98f9e2c8]{border:0;gap:10px;min-width:0;padding:0;display:grid}.judgment-policy-fields legend[data-v-98f9e2c8]{color:var(--color-muted);margin-bottom:2px;font-size:12px}.judgment-mode-option[data-v-98f9e2c8]{border:1px solid var(--color-border);border-radius:var(--radius-control);cursor:pointer;align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.judgment-mode-option.is-selected[data-v-98f9e2c8]{border-color:var(--color-accent);background:var(--color-accent-soft)}.judgment-mode-option input[data-v-98f9e2c8]{accent-color:var(--color-accent);margin-top:3px}.judgment-mode-option span[data-v-98f9e2c8]{gap:3px;display:grid}.judgment-mode-option strong[data-v-98f9e2c8]{color:var(--color-ink);font-size:13px}.judgment-mode-option small[data-v-98f9e2c8]{color:var(--color-muted);font-size:12px;line-height:1.5}.judgment-progressive-fields[data-v-98f9e2c8]{border-left:2px solid var(--color-accent);background:var(--color-surface-subtle);grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:3px;padding:12px;display:grid}.judgment-progressive-fields label[data-v-98f9e2c8]{gap:6px;display:grid}.judgment-policy-actions[data-v-98f9e2c8]{flex-wrap:wrap;align-items:center;gap:10px;margin-top:4px;display:flex}.judgment-policy-saved[data-v-98f9e2c8]{color:var(--color-muted);font-size:12px}.judgment-policy-error[data-v-98f9e2c8]{border-radius:var(--radius-control);color:var(--color-danger);background:var(--color-danger-soft);justify-content:space-between;align-items:center;gap:14px;padding:10px 12px;font-size:13px;display:flex}.judgment-policy-empty[data-v-98f9e2c8]{color:var(--color-muted);font-size:13px}@media (width<=640px){.judgment-project-field[data-v-98f9e2c8]{grid-template-columns:1fr;align-items:stretch}.judgment-progressive-fields[data-v-98f9e2c8]{grid-template-columns:1fr}}.connection-settings p[data-v-a09270ee]{color:var(--color-muted);margin:12px 0;font-size:13px;line-height:1.6}.connection-toolbar[data-v-a09270ee]{align-items:center;gap:12px;margin:16px 0 10px;display:flex}.connection-toolbar[data-v-a09270ee] .ui-select{flex:1;min-width:0;max-width:300px}.connection-copy[data-v-a09270ee]{flex:0 0 40px;width:40px;height:40px;padding:9px}.connection-copy svg[data-v-a09270ee]{width:20px;height:20px}textarea[data-v-a09270ee]{box-sizing:border-box;resize:vertical;width:100%;min-width:0;font:12px/1.65 var(--font-mono,monospace);overflow-wrap:anywhere;display:block}.connection-settings a[data-v-a09270ee]{font-size:13px}.peer-settings p[data-v-c2b7fda7],.peer-settings small[data-v-c2b7fda7]{color:var(--color-muted);font-size:13px;line-height:1.6}.peer-settings p[data-v-c2b7fda7]{margin:12px 0}.peer-alert[data-v-c2b7fda7],.peer-actions[data-v-c2b7fda7],.peer-identity[data-v-c2b7fda7],.peer-fields[data-v-c2b7fda7],.peer-share-title[data-v-c2b7fda7],.peer-devices li[data-v-c2b7fda7]{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.peer-block[data-v-c2b7fda7]{gap:12px;min-width:0;margin:16px 0;display:grid}.peer-block h4[data-v-c2b7fda7]{font-size:13px;font-weight:650}.peer-fields[data-v-c2b7fda7]{align-items:end}.peer-fields[data-v-c2b7fda7] .ui-select{flex:180px;min-width:0}.peer-identity[data-v-c2b7fda7]{margin:12px 0}.peer-identity div[data-v-c2b7fda7]{flex:160px;min-width:0}.peer-identity dt[data-v-c2b7fda7]{color:var(--color-muted);font-size:12px}.peer-identity dd[data-v-c2b7fda7],.peer-identity code[data-v-c2b7fda7],.peer-identity strong[data-v-c2b7fda7],.peer-identity p[data-v-c2b7fda7]{overflow-wrap:anywhere}.peer-identity dd[data-v-c2b7fda7]{font-family:var(--font-mono);font-size:13px}.peer-settings label[data-v-c2b7fda7]{min-width:0;color:var(--color-muted);gap:6px;font-size:12px;display:grid}.peer-settings input[type=text][data-v-c2b7fda7],.peer-settings textarea[data-v-c2b7fda7]{box-sizing:border-box;overflow-wrap:anywhere;width:100%;min-width:0}.peer-settings textarea[data-v-c2b7fda7]{resize:vertical;font:12px/1.65 var(--font-mono)}.peer-shares[data-v-c2b7fda7],.peer-devices[data-v-c2b7fda7]{gap:16px;margin:0;padding:0;list-style:none;display:grid}.peer-shares li[data-v-c2b7fda7],.peer-devices li[data-v-c2b7fda7]{border-top:1px solid var(--color-border);min-width:0;padding:12px 0}.peer-share-title[data-v-c2b7fda7]{align-items:flex-start;gap:8px;display:flex}.peer-share-title strong[data-v-c2b7fda7]{overflow-wrap:anywhere;color:var(--color-ink);font-size:14px}.peer-shares fieldset[data-v-c2b7fda7]{border:0;flex-wrap:wrap;gap:12px 16px;padding:0;display:flex}.peer-shares fieldset label[data-v-c2b7fda7]{align-items:center;gap:6px;display:flex}.peer-devices li[data-v-c2b7fda7]{justify-content:space-between}.peer-devices strong[data-v-c2b7fda7],.peer-devices small[data-v-c2b7fda7]{overflow-wrap:anywhere;display:block}.peer-note[data-v-c2b7fda7]{color:var(--color-warning)}.settings-fields[data-v-36cbe773]{border:0;min-width:0;margin:0;padding:0;display:contents}.settings-view[data-v-36cbe773]{background:var(--color-bg);padding-top:24px}.settings-content[data-v-36cbe773]{width:min(var(--page-max), 100%);gap:18px;margin:0 auto;display:grid}.settings-form[data-v-36cbe773]{align-items:start;gap:18px;display:grid}@media (width>=1440px){.settings-form[data-v-36cbe773]{grid-template-columns:repeat(2,minmax(0,1fr))}.settings-form>.settings-error[data-v-36cbe773]{grid-column:1/-1}}.settings-card[data-v-36cbe773]{border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-surface);padding:26px}.section-heading[data-v-36cbe773]{justify-content:space-between;align-items:center;gap:18px;margin-bottom:22px;display:flex}.settings-card h3[data-v-36cbe773]{color:var(--color-ink);font-size:16px}.section-heading p[data-v-36cbe773]{color:var(--color-muted);margin-top:5px;font-size:12px}.resource-totals[data-v-36cbe773]{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.resource-totals article[data-v-36cbe773]{border:1px solid var(--color-border);background:var(--color-surface);border-radius:10px;align-content:center;gap:7px;min-height:126px;padding:20px 22px;display:grid}.resource-totals span[data-v-36cbe773]{color:var(--color-muted);font-size:12px}.resource-totals strong[data-v-36cbe773]{color:var(--color-ink);letter-spacing:-.04em;font-size:clamp(25px,3vw,34px)}.resource-totals small[data-v-36cbe773]{color:var(--color-muted);font-size:12px}.resource-breakdowns[data-v-36cbe773]{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;margin-top:26px;display:grid}.resource-group[data-v-36cbe773]{gap:13px;display:grid}.resource-group h4[data-v-36cbe773],.port-section h4[data-v-36cbe773]{color:var(--color-ink);font-size:12px}.resource-row[data-v-36cbe773]{gap:6px;display:grid}.resource-row>div[data-v-36cbe773]{color:var(--color-muted);justify-content:space-between;gap:12px;font-size:12px;display:flex}.resource-row strong[data-v-36cbe773]{color:var(--color-ink);font-weight:650}.resource-row i[data-v-36cbe773]{background:var(--color-surface-subtle);border-radius:999px;height:5px;overflow:hidden}.resource-row b[data-v-36cbe773]{border-radius:inherit;background:var(--color-muted);height:100%;display:block}.resource-group:last-child .resource-row b[data-v-36cbe773]{background:var(--color-muted)}.resource-notes[data-v-36cbe773]{color:var(--color-muted);flex-wrap:wrap;gap:8px 18px;margin-top:22px;font-size:12px;display:flex}.restart-chip[data-v-36cbe773]{border:1px solid var(--color-warning);color:var(--color-warning);background:var(--color-warning-soft);border-radius:999px;padding:5px 9px;font-size:12px;font-weight:700}.port-section[data-v-36cbe773]{gap:13px;display:grid}.port-section+.port-section[data-v-36cbe773]{border-top:1px solid var(--color-border);margin-top:25px;padding-top:22px}.development-section>div[data-v-36cbe773]{align-items:center;gap:9px;display:flex}.development-section>div>span[data-v-36cbe773]{color:var(--color-warning);background:var(--color-warning-soft);border-radius:999px;padding:4px 8px;font-size:12px;font-weight:700}.development-section>p[data-v-36cbe773]{color:var(--color-muted);font-size:12px}.port-grid[data-v-36cbe773]{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.port-grid label[data-v-36cbe773]{color:var(--color-muted);gap:7px;font-size:12px;display:grid}.port-grid input[data-v-36cbe773]{width:100%}.port-grid small[data-v-36cbe773]{color:var(--color-muted);font-size:12px}.behavior-card>h3[data-v-36cbe773],.conversation-launcher-card>h3[data-v-36cbe773]{margin-bottom:14px}.conversation-launcher-list[data-v-36cbe773]{display:grid}.conversation-launcher-row[data-v-36cbe773]{border-top:1px solid var(--color-border);padding:16px 0}.conversation-launcher-row[data-v-36cbe773]:first-child{border-top:0}.conversation-launcher-heading[data-v-36cbe773]{justify-content:space-between;align-items:center;gap:20px;min-height:34px;display:flex}.conversation-launcher-heading>span[data-v-36cbe773]{gap:4px;display:grid}.conversation-launcher-heading strong[data-v-36cbe773]{color:var(--color-ink);font-size:12px}.conversation-launcher-heading small[data-v-36cbe773]{color:var(--color-muted);font-size:12px}.conversation-launcher-switch[data-v-36cbe773]{color:var(--color-muted);align-items:center;gap:9px;font-size:12px;display:flex}.conversation-launcher-switch input[role=switch][data-v-36cbe773]{margin:0}.conversation-launcher-note[data-v-36cbe773]{max-width:760px;color:var(--color-muted);margin-top:9px;font-size:12px;line-height:1.45;display:block}.conversation-launcher-fields[data-v-36cbe773]{grid-template-columns:minmax(150px,.7fr) minmax(160px,.8fr) minmax(280px,1.5fr);align-items:start;gap:12px;margin-top:14px;display:grid}.conversation-launcher-fields>label[data-v-36cbe773]{min-width:0;color:var(--color-muted);grid-template-rows:18px 40px;align-content:start;gap:7px;font-size:12px;display:grid}.conversation-launcher-fields>label>span[data-v-36cbe773]{text-overflow:ellipsis;white-space:nowrap;min-width:0;line-height:18px;display:block;overflow:hidden}.conversation-launcher-fields code[data-v-36cbe773]{color:var(--color-muted);font-size:12px}.conversation-launcher-fields[data-v-36cbe773] .launcher-select{width:100%;min-width:0;height:40px}.conversation-launcher-fields input[data-v-36cbe773]{width:100%}.setting-list[data-v-36cbe773]{display:grid}.setting-row[data-v-36cbe773]{border-top:1px solid var(--color-border);cursor:pointer;justify-content:space-between;align-items:center;gap:24px;min-height:64px;display:flex}.setting-row[data-v-36cbe773]:first-child{border-top:0}.setting-row>span[data-v-36cbe773]{gap:4px;display:grid}.setting-row strong[data-v-36cbe773]{color:var(--color-ink);font-size:14px}.setting-row small[data-v-36cbe773]{color:var(--color-muted);font-size:12px}.setting-row input[role=switch][data-v-36cbe773],.conversation-launcher-switch input[role=switch][data-v-36cbe773]{appearance:none;background:var(--color-muted);cursor:pointer;border:0;border-radius:999px;flex:none;width:38px;height:21px;margin:0;padding:0;transition:background .18s;position:relative}.setting-row input[role=switch][data-v-36cbe773]:after,.conversation-launcher-switch input[role=switch][data-v-36cbe773]:after{content:"";box-sizing:border-box;background:var(--color-surface);border-radius:50%;width:17px;height:17px;transition:transform .18s;position:absolute;top:50%;left:2px;transform:translateY(-50%);box-shadow:0 0 4px #0000002e}.setting-row input[role=switch][data-v-36cbe773]:checked,.conversation-launcher-switch input[role=switch][data-v-36cbe773]:checked{background:var(--color-accent)}.setting-row input[role=switch][data-v-36cbe773]:checked:after,.conversation-launcher-switch input[role=switch][data-v-36cbe773]:checked:after{transform:translate(17px,-50%)}.select-row .settings-select[data-v-36cbe773]{width:180px;min-width:0}.settings-top-status[data-v-36cbe773]{color:var(--color-muted);flex-wrap:wrap;align-items:center;gap:6px 16px;padding:0 4px 2px;font-size:12px;display:flex}.settings-top-status strong[data-v-36cbe773]{color:var(--color-muted);font-weight:700}.settings-error[data-v-36cbe773]{border-radius:var(--radius-control);color:var(--color-danger);background:var(--color-surface);padding:11px 13px;font-size:12px}@media (width<=900px){.port-grid[data-v-36cbe773],.conversation-launcher-fields[data-v-36cbe773]{grid-template-columns:repeat(2,minmax(0,1fr))}.conversation-launcher-template[data-v-36cbe773]{grid-column:1/-1}}@media (width<=680px){.settings-card[data-v-36cbe773]{padding:20px}.resource-totals[data-v-36cbe773],.resource-breakdowns[data-v-36cbe773],.port-grid[data-v-36cbe773],.conversation-launcher-fields[data-v-36cbe773]{grid-template-columns:1fr}.conversation-launcher-template[data-v-36cbe773]{grid-column:auto}.select-row[data-v-36cbe773]{flex-direction:column;align-items:flex-start;padding:14px 0}.select-row .settings-select[data-v-36cbe773]{width:100%}}