fuli-context 0.8.1 → 0.8.3
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.
- package/README.md +11 -7
- package/README.zh-CN.md +8 -7
- package/dist/web/assets/{AboutPage-fBq5VFoQ.js → AboutPage-HLhChD_Q.js} +1 -1
- package/dist/web/assets/{AgentHand-CMZk5GjY.js → AgentHand-BaLSbn08.js} +1 -1
- package/dist/web/assets/{AgentName-DRZHAIB2.js → AgentName-0PIU7MOX.js} +1 -1
- package/dist/web/assets/{AgentProfilePage-BPQEfMhB.js → AgentProfilePage-9cSsZHnk.js} +1 -1
- package/dist/web/assets/{AgentsDirectoryPage-CKZfrcuD.js → AgentsDirectoryPage-7G02Xm6C.js} +1 -1
- package/dist/web/assets/{ConnectionsPage-COb56qnk.js → ConnectionsPage-D0wPYbwd.js} +1 -1
- package/dist/web/assets/{EmployeeRecruitDialog-BLTpjCcK.js → EmployeeRecruitDialog-BrPH3e50.js} +1 -1
- package/dist/web/assets/{EmployeeWorkbenchPage-HUd-gne2.js → EmployeeWorkbenchPage-u-jw38PW.js} +1 -1
- package/dist/web/assets/{GrowthLoading-Bu_kH-I8.js → GrowthLoading-DFOy-mEl.js} +1 -1
- package/dist/web/assets/{KnowledgeEditDialog-BTwXXRCD.js → KnowledgeEditDialog-DBsjlkDr.js} +1 -1
- package/dist/web/assets/{KnowledgeInspector-Ct5hl2--.js → KnowledgeInspector-C79hbuOo.js} +1 -1
- package/dist/web/assets/{KnowledgeOrganizerPage-DMC8Hh43.js → KnowledgeOrganizerPage-Cz1BnAtz.js} +1 -1
- package/dist/web/assets/KnowledgePage-JyfFFUrg.js +1 -0
- package/dist/web/assets/{KnowledgeWorkspace-DmHIc0jb.js → KnowledgeWorkspace-B2vj12QG.js} +1 -1
- package/dist/web/assets/{NotFoundPage-C0yOR9T9.js → NotFoundPage-D340EQJP.js} +1 -1
- package/dist/web/assets/{OverviewPage-BreX_kb4.js → OverviewPage-BKiYudrC.js} +1 -1
- package/dist/web/assets/{PersonalProfilePage-CX1a6_E3.js → PersonalProfilePage-BIGTcem2.js} +1 -1
- package/dist/web/assets/PersonalProjectsPage-CzjDCIi0.js +1 -0
- package/dist/web/assets/{ProjectAgentsPage-CA04h1Uf.js → ProjectAgentsPage-C5F2WgwJ.js} +4 -4
- package/dist/web/assets/ProjectAgentsPage-C89ZEDgi.css +1 -0
- package/dist/web/assets/{ProjectScopePicker-DVHfXX1f.js → ProjectScopePicker-8hrgvmg-.js} +1 -1
- package/dist/web/assets/{PublicProjectsPage-CtctKml1.js → PublicProjectsPage-b5zx0dFS.js} +1 -1
- package/dist/web/assets/{ReviewPage-DUqaK-do.js → ReviewPage-BLdWYDmj.js} +1 -1
- package/dist/web/assets/{SearchableSelect-BZtyYmZN.js → SearchableSelect-vaoSDq1g.js} +1 -1
- package/dist/web/assets/{SettingsPage-CB4ymLr8.js → SettingsPage-Dxjrkq1g.js} +1 -1
- package/dist/web/assets/{SharedJefaReportPage-CbFtrDCY.js → SharedJefaReportPage-YG2xwQQy.js} +1 -1
- package/dist/web/assets/{WritingTastePage-B7lSzs2z.js → WritingTastePage-CPPduPb1.js} +1 -1
- package/dist/web/assets/{agent-profile.css_vue_type_style_index_0_src_true_lang-C22UdfU0.js → agent-profile.css_vue_type_style_index_0_src_true_lang-LTJ1ptv9.js} +1 -1
- package/dist/web/assets/{catalog-DU4Kfd-N.js → catalog-B9tlJAp9.js} +1 -1
- package/dist/web/assets/{client-CEHkJJ-5.js → client-InXscj8J.js} +1 -1
- package/dist/web/assets/{console--CZxc3PW.js → console-hUns2aD-.js} +1 -1
- package/dist/web/assets/{conversation-launcher-settings-Co1RlTFH.js → conversation-launcher-settings-DEtJ6pZg.js} +1 -1
- package/dist/web/assets/{i18n-BtOOoyJd.js → i18n-75woNt31.js} +2 -2
- package/dist/web/assets/{identity-CsowvtIm.js → identity-Wt2Xio_B.js} +1 -1
- package/dist/web/assets/index-pleRuLpw.js +2 -0
- package/dist/web/assets/{model-CGpllrds.js → model-C1GwBvd9.js} +1 -1
- package/dist/web/assets/{personal-profile-graph-BNTG4PSY.js → personal-profile-graph-BdV_3I1u.js} +1 -1
- package/dist/web/assets/{shared-report-BFUJqqQe.js → shared-report-tRQV1iJl.js} +1 -1
- package/dist/web/assets/{useApi-CROJJdhE-raNlHRDl.js → useApi-CROJJdhE-QfNm4ADP.js} +1 -1
- package/dist/web/assets/{useModalDialog-CroGk2Cs.js → useModalDialog-BopF-KHN.js} +1 -1
- package/dist/web/assets/{vue-router-JFYBLXB1.js → vue-router-COCNAJJn.js} +1 -1
- package/dist/web/index.html +10 -10
- package/docs/agent-conversations-and-collaboration.md +18 -1
- package/docs/agent-interface-architecture.md +17 -0
- package/docs/employee-agents.md +14 -1
- package/docs/project-agent-memory.md +6 -1
- package/graph-provider/fuli_graph/knowledge_search.py +8 -16
- package/graph-provider/fuli_graph/project_agent_routes.py +5 -1
- package/graph-provider/fuli_graph/store_project_agent_context.py +18 -1
- package/graph-provider/fuli_graph/store_project_agent_task_staffing.py +86 -11
- package/graph-provider/pyproject.toml +1 -1
- package/npm-shrinkwrap.json +15 -15
- package/package.json +4 -4
- package/skills/capturing-session-knowledge/SKILL.md +20 -2
- package/skills/operating-fuli/SKILL.md +8 -0
- package/src/agent-tools/employee-definitions.js +6 -5
- package/src/agent-tools/graph-definitions.js +2 -2
- package/src/agents/identity-receipt.js +29 -0
- package/src/conversations/task-context-view.js +3 -1
- package/src/employees/service.js +17 -3
- package/src/employees/task-entry.js +5 -1
- package/src/graphiti/agent-conversations.js +15 -1
- package/src/graphiti/agent-knowledge-workflows.js +1 -1
- package/src/graphiti/federated-application.js +6 -40
- package/src/graphiti/project-agent-mention.js +35 -0
- package/src/graphiti/project-agent-task-entry.js +22 -3
- package/src/graphiti/project-agent-workflows.js +13 -2
- package/src/graphiti/project-path-context.js +17 -10
- package/src/graphiti/task-entry-preferences.js +50 -0
- package/src/mcp/create-mcp-server.js +6 -1
- package/src/mcp/employee-tool-catalog.js +22 -0
- package/src/mcp/tool-result.js +3 -1
- package/dist/web/assets/KnowledgePage-uXW1Eovz.js +0 -1
- package/dist/web/assets/PersonalProjectsPage-Br1S8ETM.js +0 -1
- package/dist/web/assets/ProjectAgentsPage-CZWWV4Kw.css +0 -1
- package/dist/web/assets/index-MKmHNBtc.js +0 -2
- package/src/mcp/task-context-registry.js +0 -165
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// Only an explicit leading mention selects a role. Matching uses this project's
|
|
2
|
+
// directory, never fuzzy search or another Agent's memory. Provider authorization
|
|
3
|
+
// still runs after matching, including for inactive or client-restricted names.
|
|
4
|
+
export async function resolveTaskAgentMention(application, projectId, input) {
|
|
5
|
+
const prompt = String(input.taskPrompt ?? '').trimStart();
|
|
6
|
+
if (!prompt.startsWith('@')) return null;
|
|
7
|
+
const directory = await application.personal.listProjectAgents(
|
|
8
|
+
application.config.personal.spaceId, projectId);
|
|
9
|
+
const agents = Array.isArray(directory) ? directory : directory.agents ?? directory.items ?? [];
|
|
10
|
+
const raw = prompt.slice(1, 2049);
|
|
11
|
+
const text = normalize(raw);
|
|
12
|
+
const stable = /^\{([^{}\s]+)\}(?=$|[\s,,::])/u.exec(raw);
|
|
13
|
+
let stableId;
|
|
14
|
+
try { stableId = stable ? decodeURIComponent(stable[1]) : null; }
|
|
15
|
+
catch { stableId = null; }
|
|
16
|
+
const matches = agents.flatMap(agent => {
|
|
17
|
+
const aliases = stable ? [agent.agent_id] : [agent.profile?.display_name, agent.profile?.name, agent.agent_id];
|
|
18
|
+
const lengths = aliases.filter(Boolean).map(name => stable ? name : normalize(name)).filter(name => stable
|
|
19
|
+
? name === stableId : text.startsWith(name) && /^(?:$|[\s,,::!?!?])/u.test(text.slice(name.length))).map(name => name.length);
|
|
20
|
+
return lengths.length ? [{ agent, length: Math.max(...lengths) }] : [];
|
|
21
|
+
});
|
|
22
|
+
const longest = Math.max(0, ...matches.map(match => match.length));
|
|
23
|
+
const exact = matches.filter(match => match.length === longest);
|
|
24
|
+
const failure = status => ({ status, worker_started: false,
|
|
25
|
+
required_action: 'Select an exact current-project Agent with @{agentId}; use list_project_agents to resolve names. Do not load a different Agent as fallback.' });
|
|
26
|
+
if (!exact.length) return failure('agent_not_found');
|
|
27
|
+
if (exact.length > 1) return { ...failure('ambiguous_agent'),
|
|
28
|
+
candidates: exact.slice(0, 8).map(({ agent }) => ({ agent_id: agent.agent_id,
|
|
29
|
+
name: agent.profile?.display_name || agent.profile?.name })) };
|
|
30
|
+
const agentId = exact[0].agent.agent_id;
|
|
31
|
+
if (input.projectAgentId && input.projectAgentId !== agentId) return failure('agent_selection_conflict');
|
|
32
|
+
return { agentId };
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function normalize(value) { return String(value).normalize('NFKC').toLowerCase(); }
|
|
@@ -2,6 +2,7 @@ import { projectAgentRecord } from './project-agent-mapping.js';
|
|
|
2
2
|
import { agentMemoryView } from './project-agent-memory.js';
|
|
3
3
|
import { planTaskKnowledgeRecall } from './task-knowledge-recall.js';
|
|
4
4
|
import { loadProjectTeamContext } from './project-agent-team-context.js';
|
|
5
|
+
import { resolveTaskAgentMention } from './project-agent-mention.js';
|
|
5
6
|
|
|
6
7
|
const ENTRY_TOOLS = new Set(['begin_task_context', 'get_collaboration_preferences']);
|
|
7
8
|
|
|
@@ -9,18 +10,25 @@ export async function resolveTaskEntryAgent(application, resolution, input) {
|
|
|
9
10
|
if (!input.agentInvocation || !ENTRY_TOOLS.has(input.agentToolName)) return null;
|
|
10
11
|
if (!resolution.personalProjectId) return { status: 'project_unresolved', worker_started: false };
|
|
11
12
|
try {
|
|
13
|
+
const mention = await resolveTaskAgentMention(application, resolution.personalProjectId, input);
|
|
14
|
+
if (mention?.status) return mention;
|
|
15
|
+
const workKind = input.workKind ?? taskWorkKind(input.taskPrompt);
|
|
12
16
|
const value = await application.personal.resolveProjectAgentContext({
|
|
13
17
|
personal_space_id: application.config.personal.spaceId,
|
|
14
18
|
personal_project_id: resolution.personalProjectId,
|
|
15
|
-
agent_id: input.projectAgentId ?? null,
|
|
19
|
+
agent_id: mention?.agentId ?? input.projectAgentId ?? null,
|
|
16
20
|
session_id: input.sessionId ?? null,
|
|
17
21
|
turn_id: input.turnId ?? null,
|
|
18
|
-
work_kind:
|
|
22
|
+
work_kind: workKind,
|
|
19
23
|
required_capabilities: input.requiredCapabilities ?? [],
|
|
20
24
|
source_application: input.sourceApplication ?? 'other'
|
|
21
25
|
});
|
|
22
26
|
if (!value?.status) throw new Error('Role resolution is unavailable');
|
|
23
27
|
const agent = value.agent ? projectAgentRecord(value.agent) : null;
|
|
28
|
+
if (agent && !mention?.agentId && !input.projectAgentId && unrelatedPeer(agent, workKind, input.requiredCapabilities)) {
|
|
29
|
+
return { status: 'unassigned', reason: 'specialist_required', worker_started: false,
|
|
30
|
+
required_action: 'Use coordinate_project_agent_task to select or recruit a qualified durable owner before implementation. HR and project managers collaborate in their own roles; do not attribute development to them by fallback.' };
|
|
31
|
+
}
|
|
24
32
|
const employeeId = /^employee\.([a-z][a-z0-9-]{0,63})$/.exec(agent?.agentId ?? '')?.[1];
|
|
25
33
|
if (employeeId && application.employees) {
|
|
26
34
|
try { await application.employees.authorize({ templateId: employeeId, personalProjectId: resolution.personalProjectId }); }
|
|
@@ -118,6 +126,15 @@ function boundedRoleText(value, limit) {
|
|
|
118
126
|
return typeof value === 'string' ? value.slice(0, limit) : '';
|
|
119
127
|
}
|
|
120
128
|
|
|
129
|
+
function unrelatedPeer(agent, workKind, required = []) {
|
|
130
|
+
const profile = agent.profile;
|
|
131
|
+
const capabilities = (profile.capabilities ?? []).map(value => value.toLowerCase());
|
|
132
|
+
const peer = ['employee.jefa', 'employee.bole', 'fuli-project-hr'].includes(agent.agentId)
|
|
133
|
+
|| profile.agentType === 'hr' || capabilities.some(value => ['fuli.employee:jefa', 'fuli.employee:bole'].includes(value));
|
|
134
|
+
return peer && !(profile.workKinds ?? []).some(kind => kind.toLowerCase() === workKind.toLowerCase())
|
|
135
|
+
&& !(required.length && required.every(value => capabilities.includes(value.toLowerCase())));
|
|
136
|
+
}
|
|
137
|
+
|
|
121
138
|
function scopedItems(items, agentId) {
|
|
122
139
|
return (items ?? []).filter(item => !item.project_agent_id || item.project_agent_id === agentId)
|
|
123
140
|
.slice(0, 4).map(item => ({
|
|
@@ -133,7 +150,9 @@ function scopedItems(items, agentId) {
|
|
|
133
150
|
function taskWorkKind(prompt) {
|
|
134
151
|
const text = typeof prompt === 'string' ? prompt.slice(0, 8192) : '';
|
|
135
152
|
if (/代码审查|代码评审|code review|review code/iu.test(text)) return 'code_review';
|
|
136
|
-
if (
|
|
153
|
+
if (/架构|\barchitecture\b/iu.test(text)) return 'architecture';
|
|
154
|
+
if (/修复|实现|开发|编写代码|优化|改为|接入|\b(?:implement|fix|bug|coding)\b/iu.test(text)) return 'implementation';
|
|
137
155
|
if (/测试|验证|\b(?:test|verify|validation)\b/iu.test(text)) return 'test_validation';
|
|
156
|
+
if (/看板|排期|规划|\bplanning\b/iu.test(text)) return 'project_management';
|
|
138
157
|
return 'project_context';
|
|
139
158
|
}
|
|
@@ -214,7 +214,14 @@ export async function coordinateProjectAgentTask(
|
|
|
214
214
|
assignment_summary: participant.assignmentSummary ?? null,
|
|
215
215
|
workstream_boundary: boundaries[index] ?? null,
|
|
216
216
|
context_status: contexts[index]?.status ?? 'unavailable',
|
|
217
|
-
context:
|
|
217
|
+
context: {
|
|
218
|
+
...contexts[index],
|
|
219
|
+
lifecycle: {
|
|
220
|
+
task_checkpoint_owner: 'coordinator',
|
|
221
|
+
completion_tool: 'record_project_agent_task_activity',
|
|
222
|
+
instruction: 'Return the bounded result and evidence to the coordinator. Report only worker activity. Do not begin or checkpoint an inherited parent task context, or write its Agent memory. An independently created host task/session owns its own lifecycle.'
|
|
223
|
+
}
|
|
224
|
+
}
|
|
218
225
|
}));
|
|
219
226
|
const contextsReady = workerPlan.every(({ context_status: status }) => status === 'ready');
|
|
220
227
|
const hostExecutionRequired = route.task.status === 'queued' &&
|
|
@@ -249,6 +256,8 @@ export async function coordinateProjectAgentTask(
|
|
|
249
256
|
start_only_returned_workers: true,
|
|
250
257
|
report_worker_start_and_terminal_events: true,
|
|
251
258
|
report_actual_executor_only_after_real_use: true,
|
|
259
|
+
task_checkpoint_owner: 'coordinator',
|
|
260
|
+
forward_parent_task_context_token: false,
|
|
252
261
|
release_runtime_lease_in_finally: true
|
|
253
262
|
},
|
|
254
263
|
worker_plan: workerPlan,
|
|
@@ -572,7 +581,9 @@ export async function getProjectAgentContext(
|
|
|
572
581
|
executionSummary: agent.executionSummary ?? [],
|
|
573
582
|
role_instructions: {
|
|
574
583
|
responsibility: agent.profile.responsibility,
|
|
575
|
-
initial_preferences: agent.profile.initialPreferences
|
|
584
|
+
initial_preferences: agent.profile.initialPreferences,
|
|
585
|
+
character: continuity.role.character,
|
|
586
|
+
expectations: continuity.role.expectations
|
|
576
587
|
},
|
|
577
588
|
effective_preferences: preferences.effective_preferences,
|
|
578
589
|
deferred_conflicts: preferences.deferred_conflicts,
|
|
@@ -47,23 +47,22 @@ export function resolvePersonalProjectPath(projectPath, projects, {
|
|
|
47
47
|
pathApi
|
|
48
48
|
});
|
|
49
49
|
if (repositoryRoot) {
|
|
50
|
-
const repositoryId = pathApi.basename(repositoryRoot);
|
|
51
|
-
if (projectIds.has(repositoryId)) {
|
|
52
|
-
return matched(repositoryId, 'repository_root');
|
|
53
|
-
}
|
|
54
50
|
const worktreeId = worktreeOriginProjectId(
|
|
55
51
|
pathApi.join(repositoryRoot, '.git'),
|
|
56
52
|
{ readText, pathApi }
|
|
57
53
|
);
|
|
58
|
-
if (worktreeId
|
|
59
|
-
|
|
54
|
+
if (worktreeId) {
|
|
55
|
+
// A worktree's folder name is arbitrary; only its original repository
|
|
56
|
+
// identifies the project, even when the folder names another project.
|
|
57
|
+
return resolveProjectId(worktreeId, projectIds, 'git_worktree_origin')
|
|
58
|
+
?? unresolved('unmatched');
|
|
60
59
|
}
|
|
60
|
+
const repository = resolveProjectId(pathApi.basename(repositoryRoot), projectIds, 'repository_root');
|
|
61
|
+
if (repository) return repository;
|
|
61
62
|
}
|
|
62
63
|
|
|
63
|
-
const
|
|
64
|
-
if (
|
|
65
|
-
return matched(directoryId, 'directory_name');
|
|
66
|
-
}
|
|
64
|
+
const directory = resolveProjectId(pathApi.basename(currentPath), projectIds, 'directory_name');
|
|
65
|
+
if (directory) return directory;
|
|
67
66
|
|
|
68
67
|
const childMatches = [...projectIds].filter((projectId) => (
|
|
69
68
|
CHILD_PROJECT_MARKERS.some((marker) =>
|
|
@@ -79,6 +78,14 @@ export function resolvePersonalProjectPath(projectPath, projects, {
|
|
|
79
78
|
return unresolved('unmatched');
|
|
80
79
|
}
|
|
81
80
|
|
|
81
|
+
function resolveProjectId(candidate, projectIds, basis) {
|
|
82
|
+
if (projectIds.has(candidate)) return matched(candidate, basis);
|
|
83
|
+
const matches = [...projectIds].filter((id) => id.toLowerCase() === candidate.toLowerCase());
|
|
84
|
+
if (matches.length === 1) return matched(matches[0], `${basis}_case_insensitive`);
|
|
85
|
+
if (matches.length > 1) return unresolved('ambiguous', { candidateCount: matches.length });
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
|
|
82
89
|
export function findRepositoryRoot(projectPath, {
|
|
83
90
|
fileExists = existsSync,
|
|
84
91
|
pathApi = path
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { taskAgentReceipt } from '../agents/identity-receipt.js';
|
|
2
|
+
import { getCollaborationPreferences as getCollaborationPreferencesWorkflow } from './collaboration-preference-workflow.js';
|
|
3
|
+
import { resolveTaskEntryAgent, loadProjectAgentContinuity } from './project-agent-task-entry.js';
|
|
4
|
+
|
|
5
|
+
export async function taskEntryPreferences(application, projectResolution, {
|
|
6
|
+
personalProjectId, projectAgentId, projectPath, taskPrompt, sourceApplication,
|
|
7
|
+
sourceSessionId, sessionId, turnId, workKind, requiredCapabilities,
|
|
8
|
+
limit, agentInvocation, agentToolName
|
|
9
|
+
}, recordAgentViews) {
|
|
10
|
+
const selection = projectPath === null && !personalProjectId && !projectAgentId
|
|
11
|
+
? null
|
|
12
|
+
: await resolveTaskEntryAgent(
|
|
13
|
+
application, projectResolution, { projectAgentId, taskPrompt, sourceApplication,
|
|
14
|
+
sessionId: agentToolName === 'get_collaboration_preferences'
|
|
15
|
+
? sessionId ?? sourceSessionId : turnId ? sessionId : null,
|
|
16
|
+
turnId: agentToolName === 'begin_task_context' ? turnId : null,
|
|
17
|
+
workKind, requiredCapabilities, agentInvocation, agentToolName }
|
|
18
|
+
);
|
|
19
|
+
// A rejected explicit role must not leak its private preferences via fallback.
|
|
20
|
+
const selectedAgentId = selection ? selection.agent?.agentId ?? null : projectAgentId;
|
|
21
|
+
const preferences = await getCollaborationPreferencesWorkflow(
|
|
22
|
+
application,
|
|
23
|
+
projectResolution,
|
|
24
|
+
{
|
|
25
|
+
projectAgentId: selectedAgentId,
|
|
26
|
+
taskPrompt,
|
|
27
|
+
limit,
|
|
28
|
+
agentInvocation,
|
|
29
|
+
agentToolName
|
|
30
|
+
},
|
|
31
|
+
(items, toolName) => recordAgentViews(items, toolName)
|
|
32
|
+
);
|
|
33
|
+
const management = application.employees && agentInvocation &&
|
|
34
|
+
['begin_task_context', 'get_collaboration_preferences'].includes(agentToolName)
|
|
35
|
+
? await application.employees.taskEntry({ personalProjectId: projectResolution.personalProjectId,
|
|
36
|
+
sourceApplication, sourceSessionId, sessionId })
|
|
37
|
+
: null;
|
|
38
|
+
const managedPreferences = management ? { ...preferences, project_management_context: management } : preferences;
|
|
39
|
+
if (!selection) return managedPreferences;
|
|
40
|
+
const context = selection.agent ? await loadProjectAgentContinuity(application, {
|
|
41
|
+
projectId: projectResolution.personalProjectId, agent: selection.agent,
|
|
42
|
+
sourceApplication, taskPrompt, selectionReason: selection.reason,
|
|
43
|
+
matchBasis: selection.match_basis
|
|
44
|
+
}) : selection;
|
|
45
|
+
return { ...managedPreferences, project_agent_context: context,
|
|
46
|
+
...(selection.agent ? { agent_receipt: taskAgentReceipt(application, {
|
|
47
|
+
projectId: projectResolution.personalProjectId, agentId: selection.agent.agentId,
|
|
48
|
+
name: context.role?.name, sourceApplication
|
|
49
|
+
}) } : {}) };
|
|
50
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { compactTaskContext } from '../conversations/task-context-view.js';
|
|
2
|
+
import { employeeToolCatalogResult } from './employee-tool-catalog.js';
|
|
2
3
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
4
|
import {
|
|
4
5
|
CallToolRequestSchema,
|
|
@@ -225,6 +226,9 @@ async function invokeTool(tool, input, requestContext = null) {
|
|
|
225
226
|
const value = await tool.invoke(input, requestContext);
|
|
226
227
|
auditLifecycleTool(tool.definition.name);
|
|
227
228
|
const limitBytes = TOOL_RESULT_LIMIT_BYTES[tool.definition.name];
|
|
229
|
+
if (tool.definition.name === 'list_employee_tools') {
|
|
230
|
+
return employeeToolCatalogResult(value, { limitBytes });
|
|
231
|
+
}
|
|
228
232
|
if (tool.definition.name === 'begin_task_context') {
|
|
229
233
|
return hookAdditionalContextToolResult(compactTaskContext(value), {
|
|
230
234
|
hookEventName: 'UserPromptSubmit',
|
|
@@ -236,7 +240,8 @@ async function invokeTool(tool, input, requestContext = null) {
|
|
|
236
240
|
const itemLimit = ({ list_agent_interfaces: 200, list_project_agent_tasks: 200,
|
|
237
241
|
list_preference_conflicts: 1000, list_external_knowledge_bindings: 200,
|
|
238
242
|
get_collaboration_preferences: 1000 })[tool.definition.name];
|
|
239
|
-
return successToolResult(
|
|
243
|
+
return successToolResult(tool.definition.name === 'get_collaboration_preferences'
|
|
244
|
+
? compactTaskContext(value) : value, { limitBytes, itemLimit });
|
|
240
245
|
} catch (error) {
|
|
241
246
|
return errorToolResult(error);
|
|
242
247
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ApplicationError } from '../app/application-error.js';
|
|
2
|
+
|
|
3
|
+
// Schemas are executable contracts. Summary truncation can change their types,
|
|
4
|
+
// required fields or enum values, so return a complete bounded catalog or fail.
|
|
5
|
+
export function employeeToolCatalogResult(value, { limitBytes = 64 * 1024 } = {}) {
|
|
6
|
+
const catalog = pick(value, ['personalSpaceId', 'agentId', 'templateId', 'name',
|
|
7
|
+
'role', 'runtimeStatus', 'basePath', 'workbenchUrl', 'agentCardUrl']);
|
|
8
|
+
if (value.project) catalog.project = pick(value.project, ['id', 'name', 'description']);
|
|
9
|
+
catalog.tools = (value.tools ?? []).map(tool => pick(tool,
|
|
10
|
+
['name', 'title', 'description', 'permission', 'inputSchema']));
|
|
11
|
+
const json = JSON.stringify(catalog);
|
|
12
|
+
if (Buffer.byteLength(json, 'utf8') > limitBytes) {
|
|
13
|
+
throw new ApplicationError('tool_catalog_too_large',
|
|
14
|
+
'Employee tool catalog is too large. Use includeSchemas=false to list names, then toolName to read one complete schema.');
|
|
15
|
+
}
|
|
16
|
+
return { content: [{ type: 'text', text: json }], structuredContent: JSON.parse(json) };
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function pick(value, keys) {
|
|
20
|
+
return Object.fromEntries(keys.filter(key => value[key] !== undefined)
|
|
21
|
+
.map(key => [key, value[key]]));
|
|
22
|
+
}
|
package/src/mcp/tool-result.js
CHANGED
|
@@ -178,7 +178,9 @@ function projectString(value, budget) {
|
|
|
178
178
|
function projectArray(value, budget, depth) {
|
|
179
179
|
const projected = [];
|
|
180
180
|
let used = 2;
|
|
181
|
-
|
|
181
|
+
// sanitize already applied the caller's item limit. A second default limit
|
|
182
|
+
// here silently drops catalog entries and preferences when bytes are capped.
|
|
183
|
+
for (const item of value) {
|
|
182
184
|
const separatorBytes = projected.length ? 1 : 0;
|
|
183
185
|
const child = projectValue(item, budget - used - separatorBytes, depth + 1);
|
|
184
186
|
if (child === undefined) continue;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{N as e,T as t,y as n}from"./i18n-BtOOoyJd.js";import{t as r}from"./KnowledgeWorkspace-DmHIc0jb.js";var i=t({__name:`KnowledgePage`,setup(t){return(t,i)=>(e(),n(r))}});export{i as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{N as e,T as t,y as n}from"./i18n-BtOOoyJd.js";import{t as r}from"./KnowledgeWorkspace-DmHIc0jb.js";var i=t({__name:`PersonalProjectsPage`,setup(t){return(t,i)=>(e(),n(r,{"personal-projects-only":``}))}});export{i as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.project-agent-assignment-dialog[data-v-ee37776b]{background:0 0;border:0;border-radius:12px;width:min(620px,100vw - 32px);max-height:calc(100vh - 32px);padding:0}.project-agent-assignment-dialog-shell[data-v-ee37776b]{background:#fbfcfb;border:1px solid #d5dcd7;border-radius:12px;flex-direction:column;max-height:calc(100vh - 32px);display:flex;overflow:hidden;box-shadow:0 18px 48px #212d262e}.project-agent-assignment-dialog-header[data-v-ee37776b],.project-agent-assignment-dialog-actions[data-v-ee37776b]{justify-content:space-between;align-items:center;gap:16px;padding:16px 18px;display:flex}.project-agent-assignment-dialog-header[data-v-ee37776b]{border-bottom:1px solid #e1e6e2}.project-agent-assignment-dialog-header h3[data-v-ee37776b]{color:#283a31;font-size:16px}.project-agent-assignment-dialog-fields[data-v-ee37776b]{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;min-height:0;padding:18px;display:grid;overflow:auto}.project-agent-assignment-dialog-fields label[data-v-ee37776b]{color:#626d66;gap:6px;font-size:11px;font-weight:650;display:grid}.project-agent-assignment-dialog-fields input[data-v-ee37776b],.project-agent-assignment-dialog-fields textarea[data-v-ee37776b]{color:#28342d;background:#fff;border:1px solid #ccd5ce;border-radius:8px;width:100%;padding:8px 9px;font-size:12px;line-height:1.5}.project-agent-assignment-dialog-fields textarea[data-v-ee37776b]{resize:vertical}.project-agent-assignment-dialog-fields input[data-v-ee37776b]:focus-visible,.project-agent-assignment-dialog-fields textarea[data-v-ee37776b]:focus-visible{outline-offset:1px;outline:2px solid #91a398}.project-agent-assignment-wide-field[data-v-ee37776b]{grid-column:1/-1}.project-agent-assignment-dialog-error[data-v-ee37776b]{color:#8b3f38;margin:0 18px;font-size:11px}.project-agent-assignment-dialog-actions[data-v-ee37776b]{border-top:1px solid #e1e6e2;justify-content:flex-end}.project-agent-primary-action[data-v-ee37776b]{color:#fff;background:#344c3d;border:0;border-radius:8px;padding:8px 13px;font-size:11px;font-weight:700}.project-agent-primary-action[data-v-ee37776b]:focus-visible{outline-offset:2px;outline:2px solid #91a398}@media (width<=620px){.project-agent-assignment-dialog-fields[data-v-ee37776b]{grid-template-columns:1fr}.project-agent-assignment-wide-field[data-v-ee37776b]{grid-column:auto}}.project-agent-dialog[data-v-4d36bcaf]{background:0 0;border:0;border-radius:12px;width:min(760px,100vw - 64px);max-height:calc(100vh - 64px);padding:0;overflow:hidden}.project-agent-dialog-shell[data-v-4d36bcaf]{background:#fbfcfb;border:1px solid #d5dcd7;border-radius:12px;flex-direction:column;min-height:0;max-height:calc(100vh - 64px);display:flex;overflow:hidden;box-shadow:0 18px 48px #212d262e}.project-agent-dialog-header[data-v-4d36bcaf],.project-agent-dialog-actions[data-v-4d36bcaf]{justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;display:flex}.project-agent-dialog-header[data-v-4d36bcaf]{border-bottom:1px solid #e1e6e2}.project-agent-dialog-header h3[data-v-4d36bcaf]{color:#283a31;font-size:17px}.project-agent-dialog-fields[data-v-4d36bcaf]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;min-height:0;padding:20px;display:grid;overflow:auto}.project-agent-dialog-fields label[data-v-4d36bcaf]{color:#626d66;align-content:start;gap:6px;min-width:0;font-size:11px;font-weight:650;display:grid}.project-agent-dialog-fields input[data-v-4d36bcaf],.project-agent-dialog-fields select[data-v-4d36bcaf],.project-agent-dialog-fields textarea[data-v-4d36bcaf]{color:#28342d;background:#fff;border:1px solid #ccd5ce;border-radius:8px;width:100%;padding:9px 10px;font-size:12px;line-height:1.5}.project-agent-dialog-fields textarea[data-v-4d36bcaf]{resize:vertical}.project-agent-dialog-fields input[data-v-4d36bcaf]:focus-visible,.project-agent-dialog-fields select[data-v-4d36bcaf]:focus-visible,.project-agent-dialog-fields textarea[data-v-4d36bcaf]:focus-visible{outline-offset:1px;outline:2px solid #91a398}.project-agent-wide-field[data-v-4d36bcaf],.project-agent-id-note[data-v-4d36bcaf]{grid-column:1/-1}.project-agent-dialog-error[data-v-4d36bcaf]{color:#8b3f38;margin:0 20px;font-size:11px}.project-agent-dialog-actions[data-v-4d36bcaf]{border-top:1px solid #e1e6e2;justify-content:flex-end}.project-agent-primary-action[data-v-4d36bcaf]{color:#fff;background:#344c3d;border:0;border-radius:8px;padding:8px 14px;font-size:12px;font-weight:700}.project-agent-primary-action[data-v-4d36bcaf]:hover{background:#2b4234}.project-agent-primary-action[data-v-4d36bcaf]:focus-visible{outline-offset:2px;outline:2px solid #91a398}.project-agent-primary-action[data-v-4d36bcaf]:disabled,.project-agent-dialog-fields[data-v-4d36bcaf] :disabled{cursor:not-allowed;opacity:.6}.project-agent-dialog-check[data-v-4d36bcaf]{align-items:center;gap:7px!important;display:flex!important}.project-agent-dialog-check input[data-v-4d36bcaf]{width:auto!important}.project-agent-dialog-note[data-v-4d36bcaf]{color:#7b857e;font-size:10px;line-height:1.55}.project-team[data-v-077ab7fe]{border-top:1px solid #dfe5e0;grid-column:1/-1;min-width:0;padding-block:12px}.project-team-peers[data-v-077ab7fe]{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.project-team-peers[data-v-077ab7fe]>*{color:#31453a;background:#edf3ee;border:1px solid #cad9cd;border-radius:6px;padding:7px 10px;font-size:12px}.project-team-summary[data-v-077ab7fe]{color:#53665a;margin:9px 0;font-size:12px}.project-team-members[data-v-077ab7fe]{gap:9px;margin:10px 0 16px 18px;padding:0;list-style:none;display:grid}.project-team-members button[data-v-077ab7fe]{text-align:start;color:#31453a;background:0 0;border:0;gap:3px;max-width:100%;display:grid}.project-team-members span[data-v-077ab7fe]{color:#596b60;overflow-wrap:anywhere;font-size:12px;line-height:1.5}.project-team summary[data-v-077ab7fe]{cursor:pointer;font-size:12px}.team-lead-field[data-v-077ab7fe]{flex-wrap:wrap;align-items:center;gap:12px;margin-block:14px;display:flex}.team-lead-field select[data-v-077ab7fe]{max-width:100%;padding:7px}.project-team fieldset[data-v-077ab7fe]{border:0;flex-wrap:wrap;gap:12px;margin-bottom:14px;padding:0;display:flex}.project-team fieldset label[data-v-077ab7fe]{align-items:center;gap:5px;font-size:12px;display:flex}.project-team legend[data-v-077ab7fe]{margin-bottom:8px;font-size:12px}.project-agent-automation-policy[data-v-077ab7fe]{border-block:1px solid #dfe5e0;grid-template-columns:minmax(110px,150px) minmax(0,1fr);align-items:center;gap:14px;padding:11px 0;display:grid}.project-agent-automation-policy>header[data-v-077ab7fe]{min-width:0}.project-agent-automation-policy h3[data-v-077ab7fe]{color:#31453a;font-size:12px;line-height:1.35}.project-agent-automation-policy header span[data-v-077ab7fe]{color:#68756d;text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:9px;display:block;overflow:hidden}.project-agent-policy-options[data-v-077ab7fe]{grid-template-columns:repeat(2,minmax(0,1fr));min-width:0;display:grid}.project-agent-policy-options label[data-v-077ab7fe]{cursor:pointer;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-width:0;padding:2px 16px;display:grid}.project-agent-policy-options label+label[data-v-077ab7fe]{border-inline-start:1px solid #e2e7e3}.project-agent-policy-options label>span[data-v-077ab7fe]{gap:3px;min-width:0;display:grid}.project-agent-policy-options strong[data-v-077ab7fe]{color:#3d5045;font-size:10px;line-height:1.4}.project-agent-policy-options small[data-v-077ab7fe]{color:#6d7971;overflow-wrap:anywhere;max-width:54ch;font-size:9px;line-height:1.45}.project-agent-policy-options input[data-v-077ab7fe]{appearance:none;cursor:pointer;background:#e8ece9;border:1px solid #aeb8b1;border-radius:999px;width:34px;height:19px;margin:0;transition:background-color .14s ease-out,border-color .14s ease-out;position:relative}.project-agent-policy-options input[data-v-077ab7fe]:after{content:"";background:#fff;border-radius:50%;width:13px;height:13px;transition:transform .14s ease-out;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #24372c38}.project-agent-policy-options input[data-v-077ab7fe]:checked{background:#4d8164;border-color:#3f7658}.project-agent-policy-options input[data-v-077ab7fe]:checked:after{transform:translate(15px)}.project-agent-policy-options input[data-v-077ab7fe]:focus-visible{outline-offset:3px;outline:2px solid #355f49}.project-agent-policy-options input[data-v-077ab7fe]:disabled{cursor:wait;opacity:.62}.project-agent-policy-feedback[data-v-077ab7fe]{grid-column:2;min-height:14px;padding-inline:16px}.project-agent-policy-state[data-v-077ab7fe],.project-agent-policy-feedback p[data-v-077ab7fe]{color:#66736b;font-size:9px;line-height:1.45}.project-agent-policy-feedback p[role=alert][data-v-077ab7fe]{color:#874b43}.project-agent-policy-feedback button[data-v-077ab7fe]{color:#355f49;font:inherit;cursor:pointer;background:0 0;border:0;margin-inline-start:6px;padding:0;font-weight:700}@media (width<=760px){.project-agent-automation-policy[data-v-077ab7fe],.project-agent-policy-options[data-v-077ab7fe]{grid-template-columns:minmax(0,1fr)}.project-agent-policy-options label[data-v-077ab7fe]{padding:8px 0}.project-agent-policy-options label+label[data-v-077ab7fe]{border-block-start:1px solid #e2e7e3;border-inline-start:0}.project-agent-policy-feedback[data-v-077ab7fe]{grid-column:1;padding-inline:0}}.project-agent-source-state[data-v-ca9a5880]{color:#727d75;background:#f7f9f7;border:1px solid #e1e6e2;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;margin-top:22px;padding:10px 12px;font-size:10px;display:flex}.project-agent-source-state.is-error[data-v-ca9a5880]{color:#8c4f49;background:#fbf3f1;border-color:#ebd5d0}.employee-work-history[data-v-bf7d05b1]{margin-block:24px;font-size:14px}summary[data-v-bf7d05b1]{cursor:pointer;padding-block:12px;font-weight:650}label[data-v-bf7d05b1]{flex-wrap:wrap;align-items:center;gap:12px;display:flex}select[data-v-bf7d05b1]{max-width:100%;font:inherit;padding:8px}ol[data-v-bf7d05b1]{margin:12px 0;padding:0;list-style:none}li[data-v-bf7d05b1]{border-top:1px solid #dce3de;padding-block:14px}.work-record-meta[data-v-bf7d05b1]{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}p[data-v-bf7d05b1]{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65}@media (width<=640px){.employee-work-history[data-v-bf7d05b1]{font-size:16px}}.agent-conversations[data-v-14d7c328]{color:#39483f;margin-block:20px;font-size:14px}summary[data-v-14d7c328]{cursor:pointer;padding-block:12px;font-weight:650}summary[data-v-14d7c328]:focus-visible,button[data-v-14d7c328]:focus-visible,input[data-v-14d7c328]:focus-visible,select[data-v-14d7c328]:focus-visible{outline-offset:3px;outline:2px solid #315c43}label[data-v-14d7c328]{flex-wrap:wrap;align-items:center;gap:12px;display:flex}select[data-v-14d7c328],input[type=number][data-v-14d7c328]{max-width:100%;font:inherit;color:inherit;background:#fff;border:1px solid #a8b7ad;border-radius:6px;padding:8px}input[type=number][data-v-14d7c328]{width:100px}input[type=checkbox][data-v-14d7c328]{width:18px;height:18px}fieldset[data-v-14d7c328]{border:0;gap:16px;min-width:0;margin:0;padding:8px 0;display:grid}fieldset button[data-v-14d7c328]{justify-self:start}.conversation-hint[data-v-14d7c328]{color:#58675d;margin-block:12px;line-height:1.65}ol[data-v-14d7c328]{margin:0;padding:0;list-style:none}.conversation-list>li[data-v-14d7c328]{border-bottom:1px solid #dce3de}.conversation-link[data-v-14d7c328]{text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;gap:6px;padding:14px 0;display:grid}.conversation-link:hover strong[data-v-14d7c328]{text-underline-offset:3px;text-decoration:underline}.conversation-link[aria-pressed=true] strong[data-v-14d7c328]{color:#315c43}.conversation-link span[data-v-14d7c328]{color:#58675d;font-size:12px}.conversation-link strong[data-v-14d7c328]{overflow-wrap:anywhere}.conversation-messages[data-v-14d7c328]{padding-bottom:16px}.conversation-messages li[data-v-14d7c328]{padding-block:12px}pre[data-v-14d7c328]{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;max-height:320px;margin-block:8px;line-height:1.65;overflow:auto}button[data-v-14d7c328]:disabled{cursor:wait;opacity:.65}@media (width<=640px){.agent-conversations[data-v-14d7c328]{font-size:16px}}.project-agent-dialog[data-v-95db0a3d]{background:0 0;border:0;border-radius:12px;width:min(760px,100vw - 64px);max-height:calc(100vh - 64px);padding:0;overflow:hidden}.project-agent-dialog-shell[data-v-95db0a3d]{background:#fbfcfb;border:1px solid #d5dcd7;border-radius:12px;flex-direction:column;min-height:0;max-height:calc(100vh - 64px);display:flex;overflow:hidden;box-shadow:0 18px 48px #212d262e}.project-agent-dialog-header[data-v-95db0a3d],.project-agent-dialog-actions[data-v-95db0a3d]{justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;display:flex}.project-agent-dialog-header[data-v-95db0a3d]{border-bottom:1px solid #e1e6e2}.project-agent-dialog-header h3[data-v-95db0a3d]{color:#283a31;font-size:17px}.project-agent-dialog-fields[data-v-95db0a3d]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;min-height:0;padding:20px;display:grid;overflow:auto}.project-agent-dialog-fields label[data-v-95db0a3d]{color:#626d66;align-content:start;gap:6px;min-width:0;font-size:11px;font-weight:650;display:grid}.project-agent-dialog-fields input[data-v-95db0a3d],.project-agent-dialog-fields select[data-v-95db0a3d],.project-agent-dialog-fields textarea[data-v-95db0a3d]{color:#28342d;background:#fff;border:1px solid #ccd5ce;border-radius:8px;width:100%;padding:9px 10px;font-size:12px;line-height:1.5}.project-agent-dialog-fields textarea[data-v-95db0a3d]{resize:vertical}.project-agent-dialog-fields input[data-v-95db0a3d]:focus-visible,.project-agent-dialog-fields select[data-v-95db0a3d]:focus-visible,.project-agent-dialog-fields textarea[data-v-95db0a3d]:focus-visible{outline-offset:1px;outline:2px solid #91a398}.project-agent-wide-field[data-v-95db0a3d],.project-agent-id-note[data-v-95db0a3d]{grid-column:1/-1}.project-agent-strategy-fields[data-v-95db0a3d]{border:1px solid #dfe5e0;border-radius:9px;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0;margin:0;padding:12px;display:grid}.project-agent-strategy-fields legend[data-v-95db0a3d]{color:#59665d;padding:0 5px;font-size:10px;font-weight:700}.project-agent-strategy-fields>small[data-v-95db0a3d]{color:#818a84;grid-column:1/-1;font-size:9px;line-height:1.5}.project-agent-id-note[data-v-95db0a3d]{color:#7b847e;margin-top:-8px;font-size:10px}.project-agent-dialog-error[data-v-95db0a3d]{color:#8b3f38;margin:0 20px;font-size:11px}.project-agent-dialog-actions[data-v-95db0a3d]{border-top:1px solid #e1e6e2;justify-content:flex-end}.project-agent-primary-action[data-v-95db0a3d]{color:#fff;background:#344c3d;border:0;border-radius:8px;padding:8px 14px;font-size:12px;font-weight:700}.project-agent-primary-action[data-v-95db0a3d]:hover{background:#2b4234}.project-agent-primary-action[data-v-95db0a3d]:focus-visible{outline-offset:2px;outline:2px solid #91a398}.project-agent-primary-action[data-v-95db0a3d]:disabled,.project-agent-dialog-fields[data-v-95db0a3d] :disabled{cursor:not-allowed;opacity:.6}@media (width<=720px){.project-agent-dialog-fields[data-v-95db0a3d]{grid-template-columns:1fr}.project-agent-wide-field[data-v-95db0a3d],.project-agent-id-note[data-v-95db0a3d]{grid-column:1}}.project-agent-row-shell[data-v-fcdd93e0]{align-items:flex-start;gap:6px;min-width:0;display:flex}.project-agent-row-shell>.project-agent-row[data-v-fcdd93e0]{flex:1;min-width:0}.project-agent-row-shell>.agent-hand[data-v-fcdd93e0]{margin-top:14px}.project-agent-header-actions[data-v-fcdd93e0]{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.project-agents-view[data-v-fcdd93e0]{flex-direction:column;gap:12px;min-height:0;padding:18px 32px 20px;display:flex;overflow:hidden}.project-agents-header[data-v-fcdd93e0],.project-agent-section-heading[data-v-fcdd93e0],.project-agent-section-tools[data-v-fcdd93e0],.project-agent-detail-actions[data-v-fcdd93e0],.project-agent-assignment-card header[data-v-fcdd93e0],.project-agent-task-card header[data-v-fcdd93e0],.project-agent-learning-card header[data-v-fcdd93e0],.project-agent-day-detail header[data-v-fcdd93e0]{justify-content:space-between;align-items:center;gap:12px;display:flex}.project-agents-header h2[data-v-fcdd93e0]{color:#283a31;font-size:18px}.project-agents-header-meta[data-v-fcdd93e0]{color:#7a847d;font-size:10px}.project-agents-summary[data-v-fcdd93e0]{color:#58675d;gap:18px;padding:2px 0 4px;font-size:12px;line-height:1.5;display:flex}.project-agents-summary span[data-v-fcdd93e0]:first-child{color:#2f493b;font-weight:700}.project-agent-add[data-v-fcdd93e0]{color:#fff;cursor:pointer;background:#344c3d;border:0;border-radius:8px;min-height:40px;padding:9px 14px;font-size:12px;font-weight:600}.project-agent-add[data-v-fcdd93e0]:hover{background:#2b4234}.project-agent-add[data-v-fcdd93e0]:focus-visible,.quiet-button[data-v-fcdd93e0]:focus-visible{outline-offset:2px;outline:2px solid #91a398}.project-agent-add[data-v-fcdd93e0]:disabled{cursor:not-allowed;opacity:.55}.project-agents-toolbar[data-v-fcdd93e0]{grid-template-columns:minmax(240px,320px) minmax(200px,1fr) auto;align-items:center;gap:12px;display:grid}.project-agents-search input[data-v-fcdd93e0]{color:#2e3932;background:#fff;border:1px solid #cfd7d1;border-radius:8px;width:100%;min-height:44px;padding:10px 12px;font-size:13px}.project-agents-search input[data-v-fcdd93e0]:focus-visible{outline-offset:1px;outline:2px solid #91a398}.project-agents-status-filter[data-v-fcdd93e0]{background:#f5f7f5;border:1px solid #d8ded9;border-radius:8px;gap:3px;padding:3px;display:flex}.project-agents-status-filter button[data-v-fcdd93e0],.quiet-button[data-v-fcdd93e0]{color:#58675d;cursor:pointer;background:0 0;border:0;border-radius:6px;min-height:34px;padding:7px 10px;font-size:12px}.project-agents-status-filter button[aria-pressed=true][data-v-fcdd93e0]{color:#315440;background:#fff;font-weight:700;box-shadow:0 1px 3px #27392f1f}.project-agents-directory[data-v-fcdd93e0]{background:#fff;border:1px solid #cfd7d1;border-radius:10px;flex:1;grid-template-columns:minmax(360px,.94fr) minmax(390px,1.06fr);min-height:0;display:grid;overflow:hidden}.project-agent-list[data-v-fcdd93e0]{border-right:1px solid #dfe4e0;min-width:0;min-height:0;overflow:auto}.project-agent-row[data-v-fcdd93e0]{width:100%;color:inherit;text-align:left;background:#fff;border:0;border-bottom:1px solid #e6eae7;grid-template-columns:minmax(0,1fr) auto;gap:5px 14px;padding:14px 16px;display:grid}.project-agent-row[data-v-fcdd93e0]:hover{background:#f7f9f7}.project-agent-row.selected[data-v-fcdd93e0]{background:#edf3ef}.project-agent-row[data-v-fcdd93e0]:focus-visible{z-index:1;outline-offset:-3px;outline:2px solid #91a398;position:relative}.project-agent-row-heading[data-v-fcdd93e0]{align-items:center;gap:7px;min-width:0;display:flex}.project-agent-occupation-emoji[data-v-fcdd93e0]{flex:none;justify-content:center;align-items:center;min-width:1.2em;font-size:15px;line-height:1;display:inline-flex}.project-agent-row-heading strong[data-v-fcdd93e0]{color:#293b31;text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.project-agent-row-heading i[data-v-fcdd93e0],.project-agent-assignment-card header i[data-v-fcdd93e0],.project-agent-task-card header i[data-v-fcdd93e0],.project-agent-learning-card header i[data-v-fcdd93e0]{color:#66716a;background:#e6eae7;border-radius:999px;flex:none;padding:2px 7px;font-size:9px;font-style:normal;font-weight:700}.project-agent-row-heading i.is-active[data-v-fcdd93e0]{color:#2f6947;background:#e1eee6}.project-agent-row-heading i.is-archived[data-v-fcdd93e0]{color:#75695d;background:#eeeae5}.project-agent-kind[data-v-fcdd93e0]{color:#53647b!important;background:#eef2f7!important}.project-agent-row-id[data-v-fcdd93e0]{color:#8a938d;overflow-wrap:anywhere;text-align:right;font-size:9px}.project-agent-row-projects[data-v-fcdd93e0]{flex-wrap:wrap;grid-column:1/-1;gap:4px;display:flex}.project-agent-row-projects b[data-v-fcdd93e0],.project-agent-tags span[data-v-fcdd93e0],.project-agent-inline-list span[data-v-fcdd93e0]{color:#5f6b64;background:#eef1ef;border-radius:999px;padding:3px 7px;font-size:9px;font-weight:650}.project-agent-row-projects em[data-v-fcdd93e0]{color:#8a938d;font-size:9px;font-style:normal}.project-agent-row-responsibility[data-v-fcdd93e0]{color:#59645d;text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;font-size:11px;line-height:1.5;overflow:hidden}.project-agent-row-work[data-v-fcdd93e0]{color:#59645d;grid-column:1/-1;font-size:10px;line-height:1.5}.project-agent-work-dot[data-v-fcdd93e0]{background:#4b8d63;border-radius:50%;width:6px;height:6px;margin-right:4px;display:inline-block}.project-agent-detail[data-v-fcdd93e0]{min-width:0;min-height:0;padding:20px;overflow:auto;container-type:inline-size}.employee-project-overview[data-v-fcdd93e0]{border-bottom:1px solid #e1e6e2;margin:22px 0;padding-bottom:18px}.employee-project-overview-heading[data-v-fcdd93e0]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.employee-project-overview-heading h4[data-v-fcdd93e0]{color:#33483c;margin:0;font-size:14px}.employee-project-overview-heading p[data-v-fcdd93e0],.employee-project-overview-hint[data-v-fcdd93e0]{color:#58675d;margin:5px 0 0;font-size:12px;line-height:1.6}.employee-project-overview-hint[data-v-fcdd93e0]{margin-top:12px}.employee-assigned-projects[data-v-fcdd93e0]{grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 20px;margin-top:12px;display:grid}.employee-assigned-projects a[data-v-fcdd93e0]{color:#315c43;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;font-size:13px;line-height:1.5;text-decoration:none;display:flex}.employee-assigned-projects a[data-v-fcdd93e0]:hover{text-underline-offset:3px;text-decoration:underline}.employee-assigned-projects a[data-v-fcdd93e0]:focus-visible{outline-offset:3px;outline:2px solid #91a398}.employee-assigned-projects a span[data-v-fcdd93e0]{overflow-wrap:anywhere}.employee-assigned-projects svg[data-v-fcdd93e0]{flex-shrink:0}@container (width<=480px){.employee-assigned-projects[data-v-fcdd93e0]{grid-template-columns:minmax(0,1fr)}}.project-agent-detail>header[data-v-fcdd93e0]{border-bottom:1px solid #e1e6e2;grid-template-columns:minmax(0,1fr) max-content;align-items:flex-start;gap:16px;padding-bottom:16px;display:grid}.project-agent-detail-heading[data-v-fcdd93e0]{min-width:0}.project-agent-detail h3[data-v-fcdd93e0]{color:#263b30;text-wrap:balance;font-size:17px;line-height:1.32}.project-agent-detail header p[data-v-fcdd93e0]{color:#7a847d;overflow-wrap:anywhere;max-width:72ch;margin-top:5px;font-size:10px;line-height:1.5}.project-agent-detail-actions[data-v-fcdd93e0]{grid-auto-columns:78px;grid-auto-flow:column;justify-content:end;gap:8px;display:grid}.project-agent-detail-actions .quiet-button[data-v-fcdd93e0]{white-space:nowrap;width:78px}.project-agent-detail-meta[data-v-fcdd93e0],.project-agent-compact-meta[data-v-fcdd93e0]{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:16px 0 0;display:grid}.project-agent-detail-meta div[data-v-fcdd93e0],.project-agent-compact-meta div[data-v-fcdd93e0]{min-width:0}.project-agent-detail-meta dt[data-v-fcdd93e0],.project-agent-compact-meta dt[data-v-fcdd93e0],.project-agent-detail-section h4[data-v-fcdd93e0]{color:#7a847d;letter-spacing:.06em;text-transform:uppercase;font-size:9px;font-weight:700}.project-agent-detail-meta dd[data-v-fcdd93e0],.project-agent-compact-meta dd[data-v-fcdd93e0]{overflow-wrap:anywhere;color:#39483f;margin:4px 0 0;font-size:11px}.project-agent-detail-meta dd small[data-v-fcdd93e0]{color:#818a84;margin-top:3px;font-size:9px;line-height:1.4;display:block}.project-agent-detail-section[data-v-fcdd93e0]{margin-top:22px}.project-agent-detail-section.is-responsibility[data-v-fcdd93e0]{background:#f2f5f2;border-radius:10px;padding:14px}.project-agent-detail-section p[data-v-fcdd93e0],.project-agent-detail-section li[data-v-fcdd93e0]{color:#4f5c54;font-size:11px;line-height:1.65}.project-agent-tags[data-v-fcdd93e0],.project-agent-inline-list[data-v-fcdd93e0]{flex-wrap:wrap;gap:6px;margin-top:9px;display:flex}.project-agent-muted[data-v-fcdd93e0]{color:#8a928d!important}.project-agent-detail-notice[data-v-fcdd93e0]{background:#f5f5f1;border-radius:7px;margin:12px 0 0;padding:8px 10px;color:#6f705f!important}.project-agent-detail-placeholder[data-v-fcdd93e0],.project-agents-state[data-v-fcdd93e0]{color:#737d76;text-align:center;place-content:center;justify-items:center;gap:8px;min-height:240px;font-size:11px;display:grid}.project-agents-state[data-v-fcdd93e0]{background:#fafbfa;border:1px solid #d9dfda;border-radius:10px;flex:1}.project-agents-state strong[data-v-fcdd93e0]{color:#36473e;font-size:14px}.project-agents-state p[data-v-fcdd93e0]{max-width:52ch;line-height:1.6}.project-agents-state.is-error[data-v-fcdd93e0]{color:#8b3f38}.project-agent-assignment-list[data-v-fcdd93e0],.project-agent-task-list[data-v-fcdd93e0],.project-agent-learning-list[data-v-fcdd93e0],.project-agent-recruitment-list[data-v-fcdd93e0]{gap:8px;margin-top:9px;display:grid}.project-agent-task-list[data-v-fcdd93e0]{grid-template-columns:minmax(0,1fr);min-width:0}.project-agent-execution-summary[data-v-fcdd93e0]{border-top:1px solid #dfe5e0;min-width:0;margin-top:13px;padding-top:12px}.project-agent-worker-event-evidence[data-v-fcdd93e0]{background:#f8faf8;border:1px dashed #d8dfd9;border-radius:8px;margin-top:13px;padding:10px 10px 0}.project-agent-execution-summary .project-agent-section-heading[data-v-fcdd93e0]{gap:8px}.project-agent-execution-summary h5[data-v-fcdd93e0]{color:#65736a;letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:11px;font-weight:700}.project-agent-execution-summary-table-wrap[data-v-fcdd93e0]{box-sizing:border-box;overscroll-behavior-inline:contain;background:#fff;border:1px solid #dce3de;border-radius:8px;width:100%;max-width:100%;margin-top:7px;overflow-x:auto}.project-agent-execution-summary-table-wrap[data-v-fcdd93e0]:focus-visible{outline-offset:2px;outline:2px solid #91a398}.project-agent-execution-summary-table[data-v-fcdd93e0]{border-collapse:collapse;table-layout:fixed;color:#4f5e54;width:100%;min-width:1040px;font-size:12px;line-height:1.5}.project-agent-execution-summary-table th[data-v-fcdd93e0],.project-agent-execution-summary-table td[data-v-fcdd93e0]{overflow-wrap:anywhere;text-align:left;vertical-align:top;border-bottom:1px solid #e6ebe7;border-right:1px solid #e6ebe7;min-width:0;padding:8px 9px}.project-agent-execution-summary-table tr[data-v-fcdd93e0]>:last-child{border-right:0}.project-agent-execution-summary-table tbody tr[data-v-fcdd93e0]:last-child>*{border-bottom:0}.project-agent-execution-summary-table thead th[data-v-fcdd93e0]{color:#65736a;letter-spacing:.04em;text-transform:uppercase;background:#f3f6f4;font-size:11px;font-weight:750}.project-agent-execution-summary-table thead th[data-v-fcdd93e0]:first-child{width:14%}.project-agent-execution-summary-table thead th[data-v-fcdd93e0]:nth-child(2){width:20%}.project-agent-execution-summary-table thead th[data-v-fcdd93e0]:nth-child(3){width:13%}.project-agent-execution-summary-table thead th[data-v-fcdd93e0]:nth-child(4),.project-agent-execution-summary-table thead th[data-v-fcdd93e0]:nth-child(5){width:15%}.project-agent-execution-summary-table thead th[data-v-fcdd93e0]:nth-child(6){width:12%}.project-agent-execution-summary-table tbody tr[data-v-fcdd93e0]:hover{background:#fafcfb}.project-agent-execution-summary-table tbody th[data-v-fcdd93e0]{color:#3f5647;font-weight:700}.project-agent-execution-summary-table tbody strong[data-v-fcdd93e0],.project-agent-execution-summary-table tbody span[data-v-fcdd93e0],.project-agent-execution-summary-table tbody small[data-v-fcdd93e0],.project-agent-execution-summary-table tbody a[data-v-fcdd93e0]{display:block}.project-agent-execution-summary-table tbody small[data-v-fcdd93e0]{color:#647168;margin-top:3px;font-size:11px;font-weight:500}.project-agent-execution-summary-table tbody .project-agent-reporter-label[data-v-fcdd93e0]{margin-top:8px}.project-agent-execution-summary-table tbody a[data-v-fcdd93e0]{color:#386c50;text-underline-offset:2px;margin-top:3px;text-decoration-thickness:1px}.project-agent-execution-summary-table tbody a[data-v-fcdd93e0]:focus-visible{outline-offset:2px;border-radius:2px;outline:2px solid #91a398}.project-agent-execution-worker[data-v-fcdd93e0]{align-items:center;gap:4px;display:flex!important}.project-agent-execution-summary-row i[data-v-fcdd93e0]{color:#66716a;background:#e6eae7;border-radius:999px;padding:2px 6px;font-size:11px;font-style:normal;font-weight:700;display:inline-flex}.project-agent-execution-summary-row i.is-completed[data-v-fcdd93e0]{color:#2f6947;background:#e1eee6}.project-agent-execution-summary-row i.is-failed[data-v-fcdd93e0]{color:#8c4f49;background:#f7e9e6}.project-agent-execution-summary-row i.is-cancelled[data-v-fcdd93e0]{color:#75695d;background:#eeeae5}.project-agent-execution-summary-list[data-v-fcdd93e0]{margin:7px 0 0;padding:0;list-style:none;display:grid}.project-agent-worker-event-row[data-v-fcdd93e0]{border-top:1px solid #e6ebe7;min-width:0;padding:10px 0}.project-agent-worker-event-row[data-v-fcdd93e0]:first-child{border-top:0}.project-agent-worker-event-row header[data-v-fcdd93e0]{align-items:flex-start}.project-agent-worker-event-row header strong[data-v-fcdd93e0]{overflow-wrap:anywhere;color:#3f5647;align-items:center;gap:5px;min-width:0;font-size:10px;display:flex}.project-agent-worker-event-row header strong small[data-v-fcdd93e0]{color:#89948c;margin:0;font-size:8px;font-weight:500;display:inline}.project-agent-worker-event-row header i[data-v-fcdd93e0]{color:#66716a;background:#e6eae7;border-radius:999px;flex:none;padding:2px 6px;font-size:8px;font-style:normal;font-weight:700}.project-agent-worker-event-row header i.is-completed[data-v-fcdd93e0]{color:#2f6947;background:#e1eee6}.project-agent-worker-event-row header i.is-failed[data-v-fcdd93e0]{color:#8c4f49;background:#f7e9e6}.project-agent-worker-event-row header i.is-cancelled[data-v-fcdd93e0]{color:#75695d;background:#eeeae5}.project-agent-execution-summary-meta[data-v-fcdd93e0]{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 10px;margin:8px 0 0;display:grid}.project-agent-execution-summary-meta div[data-v-fcdd93e0]{min-width:0}.project-agent-execution-summary-meta dt[data-v-fcdd93e0]{color:#89948c;letter-spacing:.04em;text-transform:uppercase;font-size:8px;font-weight:700}.project-agent-execution-summary-meta dd[data-v-fcdd93e0]{overflow-wrap:anywhere;color:#4f5e54;margin:2px 0 0;font-size:9px;line-height:1.45}.project-agent-execution-summary-meta dd small[data-v-fcdd93e0]{color:#89948c;margin-top:2px;font-size:8px;display:block}.project-agent-assignment-card[data-v-fcdd93e0],.project-agent-task-card[data-v-fcdd93e0],.project-agent-learning-card[data-v-fcdd93e0]{background:#fbfcfb;border:1px solid #e0e6e1;border-radius:9px;min-width:0;padding:11px 12px}.project-agent-recruitment-card[data-v-fcdd93e0]{background:#fbfcfb;border:1px solid #e0e6e1;border-radius:9px;padding:11px 12px}.project-agent-assignment-card header strong[data-v-fcdd93e0],.project-agent-task-card header strong[data-v-fcdd93e0],.project-agent-learning-card header strong[data-v-fcdd93e0]{color:#33483a;font-size:11px}.project-agent-card-actions[data-v-fcdd93e0]{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:4px;display:flex}.project-agent-assignment-card p[data-v-fcdd93e0],.project-agent-task-card p[data-v-fcdd93e0],.project-agent-learning-card p[data-v-fcdd93e0]{margin:7px 0 0}.project-agent-assignment-card small[data-v-fcdd93e0],.project-agent-task-card small[data-v-fcdd93e0],.project-agent-learning-card small[data-v-fcdd93e0]{color:#818a84;margin-top:6px;font-size:9px;line-height:1.5;display:block}.project-agent-assignment-card header i.is-ended[data-v-fcdd93e0],.project-agent-assignment-card header i.is-replaced[data-v-fcdd93e0]{color:#75695d;background:#eeeae5}.project-agent-strategy-note[data-v-fcdd93e0],.project-agent-execution-line[data-v-fcdd93e0]{color:#7a847d;flex-wrap:wrap;align-items:baseline;gap:6px;margin-top:8px;font-size:9px;display:flex}.project-agent-strategy-note strong[data-v-fcdd93e0],.project-agent-execution-line strong[data-v-fcdd93e0]{color:#53685a;font-size:10px}.project-agent-strategy-note small[data-v-fcdd93e0]{color:#8c5d54;flex-basis:100%}.project-agent-routing-decision[data-v-fcdd93e0]{color:#65736a;background:#f3f7f3;border:1px solid #dce5de;border-radius:7px;gap:5px;margin-top:10px;padding:9px 10px;font-size:9px;display:grid}.project-agent-routing-decision .project-agent-section-heading[data-v-fcdd93e0]{align-items:baseline;gap:8px}.project-agent-routing-decision .project-agent-section-heading strong[data-v-fcdd93e0]{color:#3f604b;font-size:10px}.project-agent-routing-decision small[data-v-fcdd93e0]{color:#65736a;line-height:1.45}.project-agent-blocked[data-v-fcdd93e0]{color:#8c5d54!important}.project-agent-task-card header[data-v-fcdd93e0]{align-items:flex-start}.project-agent-task-card header small[data-v-fcdd93e0]{margin-top:3px}.project-agent-task-card header i[data-v-fcdd93e0]{color:#53647b;background:#eef2f7}.project-agent-task-card header i.is-completed[data-v-fcdd93e0]{color:#2f6947;background:#e1eee6}.project-agent-task-card header i.is-failed[data-v-fcdd93e0]{color:#8c4f49;background:#f7e9e6}.project-agent-task-card header i.is-cancelled[data-v-fcdd93e0]{color:#75695d;background:#eeeae5}.project-agent-heatmap-viewport[data-v-fcdd93e0]{contain:layout inline-size paint;min-width:0;max-width:100%;overflow-x:clip}.project-agent-heatmap[data-v-fcdd93e0]{grid-template-rows:repeat(7,minmax(10px,1fr));grid-auto-columns:minmax(10px,1fr);grid-auto-flow:column;gap:3px;width:100%;max-width:100%;margin-top:9px;padding:0;display:grid;overflow-x:auto}.project-agent-heat-cell[data-v-fcdd93e0]{appearance:none;box-sizing:border-box;aspect-ratio:1;background:#f2f4f2;border:1px solid #dfe6e0;border-radius:3px;min-width:9px;margin:0;padding:0}.project-agent-heat-cell.intensity-1[data-v-fcdd93e0]{background:#dce9df}.project-agent-heat-cell.intensity-2[data-v-fcdd93e0]{background:#b9d3bf}.project-agent-heat-cell.intensity-3[data-v-fcdd93e0]{background:#87b493}.project-agent-heat-cell.intensity-4[data-v-fcdd93e0]{background:#548466}.project-agent-heat-cell[data-v-fcdd93e0]:focus-visible,.project-agent-heat-cell.selected[data-v-fcdd93e0]{box-shadow:none;border:2px solid #2f5740;outline:none}.project-agent-day-detail[data-v-fcdd93e0]{background:#f6f8f6;border-radius:8px;margin-top:10px;padding:10px}.project-agent-day-detail ul[data-v-fcdd93e0]{margin:8px 0 0;padding-left:17px}.project-agent-day-detail li[data-v-fcdd93e0]{margin-top:6px}.project-agent-day-detail li strong[data-v-fcdd93e0],.project-agent-day-detail li span[data-v-fcdd93e0],.project-agent-day-detail li small[data-v-fcdd93e0]{display:block}.project-agent-day-detail li span[data-v-fcdd93e0]{color:#66736b;font-size:9px}.project-agent-day-detail li small[data-v-fcdd93e0]{color:#7e8981;font-size:9px}.project-agent-client-list[data-v-fcdd93e0],.project-agent-rule-list[data-v-fcdd93e0]{gap:5px;margin-top:9px;display:grid}.project-agent-client-row[data-v-fcdd93e0],.project-agent-rule-row[data-v-fcdd93e0]{color:#68736c;background:#f7f9f7;border-radius:7px;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:7px;padding:8px 10px;font-size:9px;display:grid}.project-agent-client-row strong[data-v-fcdd93e0],.project-agent-rule-row strong[data-v-fcdd93e0]{color:#43584a;font-size:10px}.project-agent-client-row small[data-v-fcdd93e0]{color:#8a938d;grid-column:1/-1}.project-agent-executor-list[data-v-fcdd93e0]{gap:5px;margin-top:9px;display:grid}.project-agent-executor-row[data-v-fcdd93e0]{color:#68736c;background:#f7f9f7;border-radius:7px;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:7px;padding:8px 10px;font-size:9px;display:grid}.project-agent-executor-row strong[data-v-fcdd93e0]{color:#43584a;font-size:10px}.project-agent-executor-row small[data-v-fcdd93e0]{color:#8a938d;grid-column:1/-1}.project-agent-learning-card header i[data-v-fcdd93e0]{color:#6c776f;background:#f1f3f1}.project-agent-evidence-list[data-v-fcdd93e0]{margin:8px 0 0;padding-left:17px}.project-agent-evidence-list li[data-v-fcdd93e0]{color:#768179;font-size:9px}.project-agent-learning-actions[data-v-fcdd93e0]{gap:6px;margin-top:8px;display:flex}.project-agent-note[data-v-fcdd93e0]{color:#818a84;margin-top:9px;font-size:9px;line-height:1.5;display:block}.sr-only[data-v-fcdd93e0]{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=1180px){.project-agents-toolbar[data-v-fcdd93e0]{grid-template-columns:minmax(220px,280px) 1fr}.project-agents-status-filter[data-v-fcdd93e0]{grid-column:1/-1;justify-self:start}.project-agents-directory[data-v-fcdd93e0]{grid-template-columns:minmax(320px,.9fr) minmax(330px,1fr)}.project-agent-detail-meta[data-v-fcdd93e0],.project-agent-compact-meta[data-v-fcdd93e0]{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (width<=420px){.project-agent-detail>header[data-v-fcdd93e0]{grid-template-columns:minmax(0,1fr)}.project-agent-detail-actions[data-v-fcdd93e0]{justify-content:start}}@media (width<=760px){.project-agents-view[data-v-fcdd93e0]{padding:14px 16px 18px;overflow:auto}.project-agents-header[data-v-fcdd93e0],.project-agents-summary[data-v-fcdd93e0],.project-agent-section-heading[data-v-fcdd93e0],.project-agent-assignment-card header[data-v-fcdd93e0]{flex-wrap:wrap;align-items:flex-start}.project-agents-toolbar[data-v-fcdd93e0]{grid-template-columns:minmax(0,1fr)}.project-agents-project-filter[data-v-fcdd93e0],.project-agents-search[data-v-fcdd93e0],.project-agents-status-filter[data-v-fcdd93e0]{grid-column:1}.project-agents-status-filter[data-v-fcdd93e0]{flex-wrap:wrap;justify-self:stretch;width:100%}.project-agents-directory[data-v-fcdd93e0]{flex:none;grid-template-columns:minmax(0,1fr);overflow:visible}.project-agent-list[data-v-fcdd93e0]{border-bottom:1px solid #dfe4e0;border-right:0;max-height:340px}.project-agent-detail[data-v-fcdd93e0]{min-height:520px;padding:16px}.project-agent-client-row[data-v-fcdd93e0],.project-agent-rule-row[data-v-fcdd93e0],.project-agent-executor-row[data-v-fcdd93e0]{grid-template-columns:minmax(0,1fr);align-items:start}.project-agent-client-row small[data-v-fcdd93e0],.project-agent-executor-row small[data-v-fcdd93e0]{grid-column:1}.project-agent-execution-summary-meta[data-v-fcdd93e0]{grid-template-columns:minmax(0,1fr)}.project-agent-worker-event-row header[data-v-fcdd93e0]{gap:8px}}.project-agent-disclosure[data-v-fcdd93e0]{margin-top:18px}.project-agent-disclosure>summary[data-v-fcdd93e0]{cursor:pointer;color:#39483f;padding-block:10px;font-size:13px;font-weight:650}.project-agent-disclosure>summary[data-v-fcdd93e0]:focus-visible{outline-offset:3px;outline:2px solid #315c43}.project-agent-disclosure .project-agent-detail-section[data-v-fcdd93e0]:first-child{margin-top:12px}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/SharedJefaReportPage-CbFtrDCY.js","assets/i18n-BtOOoyJd.js","assets/GrowthLoading-Bu_kH-I8.js","assets/_plugin-vue_export-helper-BDNMzG2s.js","assets/GrowthLoading-B_Hh0CRS.css","assets/useApi-CROJJdhE-raNlHRDl.js","assets/shared-report-BFUJqqQe.js","assets/client-CEHkJJ-5.js","assets/ProjectScopePicker-DVHfXX1f.js","assets/ProjectScopePicker-BvaGTMFx.css","assets/shared-report-ezeb8dW4.css","assets/SharedJefaReportPage-DXbj_JhO.css","assets/OverviewPage-BreX_kb4.js","assets/console--CZxc3PW.js","assets/vue-router-JFYBLXB1.js","assets/paths-CDREouhi.js","assets/PersonalProfilePage-CX1a6_E3.js","assets/useModalDialog-CroGk2Cs.js","assets/SearchableSelect-BZtyYmZN.js","assets/KnowledgeInspector-Ct5hl2--.js","assets/model-CGpllrds.js","assets/conversation-launcher-settings-Co1RlTFH.js","assets/KnowledgeInspector--1NujtXW.css","assets/KnowledgeEditDialog-BTwXXRCD.js","assets/identity-CsowvtIm.js","assets/KnowledgeEditDialog-D9NuRHvp.css","assets/personal-profile-graph-BNTG4PSY.js","assets/PersonalProfilePage-L8T5xMEC.css","assets/WritingTastePage-B7lSzs2z.js","assets/WritingTastePage-Bzg6AvnB.css","assets/PersonalProjectsPage-Br1S8ETM.js","assets/KnowledgeWorkspace-DmHIc0jb.js","assets/KnowledgeWorkspace-sb8OJ97I.css","assets/KnowledgeOrganizerPage-DMC8Hh43.js","assets/KnowledgeOrganizerPage-h2iKvQpO.css","assets/AgentsDirectoryPage-CKZfrcuD.js","assets/AgentHand-CMZk5GjY.js","assets/AgentHand-D9sQu2vc.css","assets/profile-model-BQO4zNs9.js","assets/AgentName-DRZHAIB2.js","assets/AgentName-Cydd0UI4.css","assets/agent-profile.css_vue_type_style_index_0_src_true_lang-C22UdfU0.js","assets/task-evidence-BUu7yYIn.js","assets/agent-profile-CdKOh5xw.css","assets/EmployeeRecruitDialog-BLTpjCcK.js","assets/catalog-DU4Kfd-N.js","assets/EmployeeRecruitDialog-B59X3rOi.css","assets/AgentProfilePage-BPQEfMhB.js","assets/ProjectAgentsPage-CA04h1Uf.js","assets/ProjectAgentsPage-CZWWV4Kw.css","assets/EmployeeWorkbenchPage-HUd-gne2.js","assets/EmployeeWorkbenchPage-CQwZnTA0.css","assets/employee-dialog-Bh5ccIbK.css","assets/PublicProjectsPage-CtctKml1.js","assets/KnowledgePage-uXW1Eovz.js","assets/ReviewPage-DUqaK-do.js","assets/ConnectionsPage-COb56qnk.js","assets/ConnectionsPage-CBHAdZXT.css","assets/SettingsPage-CB4ymLr8.js","assets/SettingsPage-Brl-SL33.css","assets/AboutPage-fBq5VFoQ.js","assets/fuli-logo-Bu9WBuQe.js","assets/AboutPage-vYIBifKw.css","assets/NotFoundPage-C0yOR9T9.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{$ as e,A as t,B as n,C as r,F as i,H as a,L as o,M as s,N as c,T as l,V as u,Z as d,_ as f,a as p,at as m,b as h,d as g,g as _,h as v,i as y,j as b,m as x,n as S,nt as C,p as w,r as T,rt as E,s as D,t as O,v as k,w as A,x as j,y as M,z as N}from"./i18n-BtOOoyJd.js";import{n as P,t as F}from"./console--CZxc3PW.js";import{t as I}from"./GrowthLoading-Bu_kH-I8.js";import{t as L}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{m as R}from"./useApi-CROJJdhE-raNlHRDl.js";import{i as z,n as B,r as V,t as H}from"./vue-router-JFYBLXB1.js";import{t as U}from"./fuli-logo-Bu9WBuQe.js";import{n as W}from"./client-CEHkJJ-5.js";import{a as G,s as K}from"./catalog-DU4Kfd-N.js";import{i as q,n as ee,r as te,t as J}from"./AgentHand-CMZk5GjY.js";import{n as ne}from"./profile-model-BQO4zNs9.js";import{t as re}from"./useModalDialog-CroGk2Cs.js";/* empty css */import{n as ie,t as ae}from"./paths-CDREouhi.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var Y={name:`fuli-context`,version:`0.8.1`,description:`Local-first collaboration relationship graph for AI agents.`,type:`module`,files:[`README.zh-CN.md`,`npm-shrinkwrap.json`,`src/`,`dist/web/`,`docs/external-knowledge-architecture.md`,`docs/public-personal-architecture.md`,`docs/project-agent-memory.md`,`docs/agent-conversations-and-collaboration.md`,`docs/employee-agents.md`,`docs/agent-interface-architecture.md`,`examples/external-knowledge/markdown-folder.mjs`,`graph-provider/Dockerfile`,`graph-provider/pyproject.toml`,`graph-provider/fuli_graph/*.py`,`graph-provider/fuli_graph/**/*.py`,`skills/`,`compose.graphiti.yml`],bin:{fl:`src/cli.js`,fuli:`src/cli.js`},keywords:[`ai-agent`,`mcp`,`context`,`knowledge-graph`,`local-first`,`codex`,`claude-code`],scripts:{mcp:`node src/mcp-server.js`,dev:`run-p dev:server dev:web`,"dev:server":`node src/server.js`,"dev:web":`vite`,build:`run-s typecheck:web build:web`,"build:web":`vite build`,"typecheck:web":`vue-tsc --noEmit -p tsconfig.app.json`,"test:node":`node --test`,"test:web":`vitest run --config vitest.config.ts`,"test:package":`node scripts/package-smoke.js`,"test:knowledge:live":`node acceptance/knowledge-live.js`,"test:external-knowledge:live":`node scripts/validate-external-knowledge-live.js`,start:`node src/server.js`,"graph:setup":`node src/graphiti/setup.js`,"graph:up":`docker compose -f compose.graphiti.yml up -d --build`,"graph:down":`docker compose -f compose.graphiti.yml down`,"test:structure":`node --test test/source-structure.test.js`,pretest:`npm run build:web`,test:`run-s typecheck:web test:node test:web`,prepack:`npm run build`,prepublishOnly:`npm test`},engines:{node:`>=24.12`},repository:{type:`git`,url:`git+https://github.com/JevonsCode/fuli.git`},homepage:`https://github.com/JevonsCode/fuli#readme`,bugs:{url:`https://github.com/JevonsCode/fuli/issues`},publishConfig:{access:`public`},license:`Apache-2.0`,dependencies:{"@hono/node-server":`2.0.12`,"@modelcontextprotocol/sdk":`^1.29.0`,zod:`^4.4.3`},devDependencies:{"@types/d3":`^7.4.3`,"@types/node":`^24.13.3`,"@vitejs/plugin-vue":`^6.0.8`,"@vue/test-utils":`^2.4.11`,"brace-expansion":`5.0.9`,d3:`^7.9.0`,jsdom:`^29.1.1`,linkedom:`^0.18.12`,"npm-run-all2":`^9.0.2`,pinia:`^4.0.2`,typescript:`~6.0.0`,vite:`^8.1.5`,vitest:`^4.1.10`,vue:`^3.5.40`,"vue-i18n":`^11.4.8`,"vue-router":`^5.2.0`,"vue-tsc":`^3.3.8`},overrides:{"@modelcontextprotocol/sdk":{"@hono/node-server":`2.0.12`},"brace-expansion":`$brace-expansion`,"fast-uri":`3.1.7`,qs:`6.16.0`}}.version,oe=[`aria-label`],se={class:`brand-mark-wrap`},ce=[`src`],le={class:`brand-copy`},ue={class:`brand-title-row`},de={class:`brand-name`},fe=[`aria-label`,`aria-expanded`],pe={class:`brand-version`},me={key:1,class:`brand-version`},he={class:`brand-title-row`},ge={class:`brand-name`},_e={class:`brand-version`},ve=[`aria-label`],ye=[`href`],be=L(l({__name:`BrandEasterEgg`,setup(e){let n=d(null),r=d(null),i=d(0),a=d(!1),o=d(!1),l=d(!1),u=d(null),g=f(()=>u.value?.status===`ready`&&u.value.updateAvailable&&!!u.value.latestVersion),_=f(()=>u.value?.latestVersion??``),v=f(()=>u.value?.packageUrl??`https://www.npmjs.com/package/fuli-context`),y=new AbortController,S=!1;function w(){i.value+=1,a.value=!0}function T(){a.value=!1}function D(){g.value&&(l.value=!l.value)}function O(e){S=!1,o.value=!1,l.value&&!n.value?.contains(e.target)&&(l.value=!1)}function A(e){e.key===`Tab`&&(S=!0),e.key===`Escape`&&l.value&&(e.preventDefault(),l.value=!1,t(()=>r.value?.focus()))}function M(){o.value=S}function N(){o.value=!1}return s(()=>{window.addEventListener(`pointerdown`,O,!0),window.addEventListener(`keydown`,A,!0),W(`/api/system/version`,{signal:y.signal}).then(e=>{u.value=e}).catch(()=>{})}),b(()=>{y.abort(),window.removeEventListener(`pointerdown`,O,!0),window.removeEventListener(`keydown`,A,!0)}),(e,t)=>(c(),j(`div`,{ref_key:`root`,ref:n,class:E([`brand-block`,{"is-sparkling":a.value,"is-keyboard-focused":o.value}])},[k(`button`,{class:`brand-effect-button`,type:`button`,"aria-label":C(p)(`console.brandEffect.aria`),onClick:w,onFocus:M,onBlur:N},[k(`span`,se,[k(`img`,{class:`brand-mark`,src:C(U),alt:``,"aria-hidden":`true`},null,8,ce),a.value?(c(),j(`span`,{key:`orbit-${i.value}`,class:`brand-orbit`,"aria-hidden":`true`})):h(``,!0)])],40,oe),k(`span`,le,[k(`span`,ue,[k(`span`,de,m(C(p)(`common.brand`)),1),g.value?(c(),j(`button`,{key:0,ref_key:`versionButton`,ref:r,class:`brand-version-button`,type:`button`,"aria-label":C(p)(`console.update.aria`,{version:_.value}),"aria-expanded":l.value,"aria-controls":`brand-update-details`,onClick:D},[k(`span`,pe,`v`+m(C(Y)),1),t[0]||=k(`span`,{class:`brand-update-dot`,"aria-hidden":`true`},null,-1)],8,fe)):(c(),j(`span`,me,`v`+m(C(Y)),1))]),t[1]||=k(`span`,{class:`brand-subtitle`},`Context Graph`,-1),a.value?(c(),j(`span`,{key:`copy-reflection-${i.value}`,class:`brand-copy-reflection`,"aria-hidden":`true`,onAnimationend:x(T,[`self`])},[k(`span`,he,[k(`span`,ge,m(C(p)(`common.brand`)),1),k(`span`,_e,`v`+m(C(Y)),1)])],32)):h(``,!0)]),l.value?(c(),j(`div`,{key:0,id:`brand-update-details`,class:`brand-update-popover`,role:`dialog`,"aria-label":C(p)(`console.update.title`,{version:_.value})},[k(`strong`,null,m(C(p)(`console.update.title`,{version:_.value})),1),k(`p`,null,m(C(p)(`console.update.copy`)),1),t[2]||=k(`code`,null,`fuli update --yes`,-1),k(`a`,{href:v.value,target:`_blank`,rel:`noopener noreferrer`},m(C(p)(`console.update.npmLink`)),9,ye)],8,ve)):h(``,!0)],2))}}),[[`__scopeId`,`data-v-3ccab825`]]),xe=[`aria-label`],Se=[`lang`,`aria-label`,`aria-pressed`,`onClick`],Ce=l({__name:`LocaleSwitcher`,setup(e){let t=f(()=>S()),n={"zh-CN":`中`,"en-US":`EN`};function r(e){e!==t.value&&y(e)}return(e,a)=>(c(),j(`div`,{class:`locale-switcher`,role:`group`,"aria-label":C(p)(`common.language.label`)},[(c(!0),j(v,null,i(C(O),e=>(c(),j(`button`,{key:e,type:`button`,lang:e,"aria-label":C(p)(e===`zh-CN`?`common.language.chinese`:`common.language.english`),"aria-pressed":t.value===e,onClick:t=>r(e)},m(n[e]),9,Se))),128))],8,xe))}}),X=e(null);function we(e){let t=e.onError((t,n)=>{let r=e.resolve(n).href;!r.startsWith(`/`)||r.startsWith(`//`)||(X.value={href:r,resourceFailure:/dynamically imported module|module script|loading chunk|preload css|importing a module/i.test(String(t))})}),n=e.afterEach((e,t,n)=>{n||(X.value=null)});return()=>{t(),n()}}var Te={key:0,class:`navigation-recovery`,role:`alert`},Ee=[`href`],De=L(l({__name:`NavigationRecovery`,setup(e){return(e,t)=>C(X)?(c(),j(`div`,Te,[k(`div`,null,[k(`strong`,null,m(C(p)(`routes.loadFailure.title`)),1),k(`p`,null,m(C(p)(C(X).resourceFailure?`routes.loadFailure.resources`:`routes.loadFailure.message`)),1)]),k(`a`,{href:C(X).href,class:`quiet-button`},m(C(p)(`routes.loadFailure.reload`)),9,Ee),k(`button`,{type:`button`,class:`navigation-recovery-dismiss`,onClick:t[0]||=e=>X.value=null},m(C(p)(`routes.loadFailure.dismiss`)),1)])):h(``,!0)}}),[[`__scopeId`,`data-v-83dee1c5`]]),Oe={class:`nav-section-label`},ke={class:`employee-nav-mark`,"aria-hidden":`true`},Ae=[`src`],je={class:`nav-copy`},Me=L(l({__name:`EmployeeNavigation`,props:{personalSpaceId:{}},setup(e){let t=e;N(()=>t.personalSpaceId,e=>{K(e===`current`?``:e)},{immediate:!0});let n=f(()=>G.value.filter(e=>e.agentId&&e.agentStatus===`active`&&(e.runtime||e.workbench?.kind===`native`)));return(t,a)=>n.value.length?(c(),j(v,{key:0},[k(`p`,Oe,m(C(p)(`employees.directory`)),1),(c(!0),j(v,null,i(n.value,t=>(c(),j(`div`,{key:t.id,class:`employee-nav-row`},[A(C(H),{to:C(ne)(e.personalSpaceId,t.agentId),class:`space-nav-button employee-nav`,"active-class":`is-active`},{default:u(()=>[k(`span`,ke,[C(q)(t.id)?(c(),j(`img`,{key:0,src:C(q)(t.id),alt:``},null,8,Ae)):(c(),j(v,{key:1},[r(m(t.name.slice(0,1)),1)],64))]),k(`span`,je,[k(`strong`,null,m(t.name),1),k(`small`,null,m(t.role),1)])]),_:2},1032,[`to`]),A(C(H),{class:`employee-workbench-link`,to:`/employees/${encodeURIComponent(t.id)}`,"aria-label":`${t.name} · ${C(p)(`agentProfiles.workbench`)}`,title:C(p)(`agentProfiles.workbench`)},{default:u(()=>[...a[0]||=[k(`svg`,{viewBox:`0 0 20 20`,width:`16`,height:`16`,"aria-hidden":`true`},[k(`path`,{d:`M3 4h14v12H3zM3 8h14M8 8v8`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`})],-1)]]),_:1},8,[`to`,`aria-label`,`title`]),A(J,{"agent-id":t.agentId},null,8,[`agent-id`])]))),128))],64)):h(``,!0)}}),[[`__scopeId`,`data-v-8788995d`]]),Ne=[`title`],Pe={class:`employee-dialog-shell`},Fe={id:`attention-title`},Ie=[`disabled`,`aria-label`],Le={class:`employee-dialog-body`},Re={class:`attention-toolbar`},ze=[`disabled`],Be={key:0,role:`alert`,class:`employee-dialog-error`},Ve={key:1,role:`alert`,class:`employee-dialog-error`},He={key:4},Ue={class:`attention-meta`},We={class:`attention-action`},Ge=[`href`],Ke=[`onSubmit`],qe=[`for`],Je=[`id`,`onUpdate:modelValue`,`disabled`],Ye=[`disabled`],Xe={key:1},Ze=[`disabled`],Qe=L(l({__name:`AgentAttentionCenter`,props:{personalSpaceId:{},projects:{}},setup(e){let t=e,n=te(),r=d({}),o=d(!1),l=d({}),u=d(``),y=d(``),S=f(()=>new Map(t.projects.map(e=>[e.project_id,e.profile.name]))),{dialogRef:w,initialFocusRef:T,onCancel:E,onKeydown:D}=re(()=>n.open,()=>{u.value||(n.open=!1)});N(()=>t.personalSpaceId,e=>{r.value={},o.value=!1,l.value={},n.setSpace(e===`current`?``:e)},{immediate:!0}),N(()=>n.open,async e=>{if(!e)return;y.value=``;let t=n.spaceId;o.value=!0;try{let e=await W(`/api/project-agents?${new URLSearchParams({personalSpaceId:t})}`);t===n.spaceId&&(r.value=Object.fromEntries(e.map(e=>[e.agentId,e.profile.displayName||e.profile.name])))}catch{}finally{t===n.spaceId&&(o.value=!1)}});let O;function P(){document.visibilityState===`visible`&&!n.loading&&!n.open&&n.refresh()}s(()=>{O=setInterval(P,3e4),document.addEventListener(`visibilitychange`,P)}),b(()=>{clearInterval(O),document.removeEventListener(`visibilitychange`,P),n.setSpace(``)});async function F(e){if(!(u.value||!l.value[e.requestId]?.trim())){u.value=e.requestId,y.value=``;try{await n.respond(e,l.value[e.requestId].trim()),delete l.value[e.requestId]}catch(e){y.value=e instanceof Error?e.message:String(e),await n.refresh()}finally{u.value=``}}}return(e,t)=>(c(),j(v,null,[k(`button`,{class:`space-nav-button attention-nav`,type:`button`,onClick:t[0]||=e=>C(n).show()},[k(`span`,null,m(C(p)(`attention.title`)),1),A(J,{passive:``}),C(n).error?(c(),j(`span`,{key:0,title:C(p)(`attention.loadError`)},`!`,8,Ne)):h(``,!0)]),(c(),M(_,{to:`body`},[C(n).open?(c(),j(`dialog`,{key:0,ref_key:`dialogRef`,ref:w,class:`employee-dialog attention-dialog`,"aria-labelledby":`attention-title`,onCancel:t[6]||=(...e)=>C(E)&&C(E)(...e),onKeydown:t[7]||=(...e)=>C(D)&&C(D)(...e)},[k(`div`,Pe,[k(`header`,null,[k(`h2`,Fe,m(C(n).agentId&&r.value[C(n).agentId]||C(p)(`attention.title`)),1),k(`button`,{ref_key:`initialFocusRef`,ref:T,type:`button`,disabled:!!u.value,"aria-label":C(p)(`attention.close`),onClick:t[1]||=e=>C(n).open=!1},`×`,8,Ie)]),k(`div`,Le,[k(`div`,Re,[C(n).agentId?(c(),j(`button`,{key:0,type:`button`,onClick:t[2]||=e=>C(n).show()},m(C(p)(`attention.all`)),1)):h(``,!0),k(`button`,{type:`button`,disabled:C(n).loading||!!u.value,onClick:t[3]||=e=>C(n).refresh()},m(C(p)(`attention.refresh`)),9,ze)]),C(n).error?(c(),j(`p`,Be,m(C(p)(`attention.loadError`))+` · `+m(C(n).error),1)):h(``,!0),y.value?(c(),j(`p`,Ve,m(y.value),1)):h(``,!0),o.value?(c(),M(I,{key:2,variant:`inline`,label:C(p)(`attention.loadingAgents`)},null,8,[`label`])):h(``,!0),C(n).loading?(c(),M(I,{key:3,variant:`compact`,label:C(p)(`attention.loading`)},null,8,[`label`])):!C(n).items.length&&!C(n).error?(c(),j(`p`,He,m(C(p)(`attention.empty`)),1)):h(``,!0),(c(!0),j(v,null,i(C(n).items,e=>(c(),j(`article`,{key:e.requestId,class:`attention-item`},[k(`p`,Ue,m(r.value[e.agentId]||e.agentId)+` · `+m(S.value.get(e.personalProjectId)||e.personalProjectId)+` · `+m(C(p)(`attention.kinds.${e.kind}`)),1),k(`h3`,null,m(e.title),1),k(`p`,null,m(e.detail),1),k(`p`,We,m(e.requestedAction),1),e.taskId?(c(),j(`a`,{key:0,href:C(ee)(e),onClick:t[4]||=e=>C(n).open=!1},m(C(p)(`attention.task`)),9,Ge)):h(``,!0),k(`form`,{onSubmit:x(t=>F(e),[`prevent`])},[k(`label`,{for:`attention-${e.requestId}`},m(C(p)(`attention.response`)),9,qe),a(k(`textarea`,{id:`attention-${e.requestId}`,"onUpdate:modelValue":t=>l.value[e.requestId]=t,rows:`2`,maxlength:`4096`,required:``,disabled:!!u.value},null,8,Je),[[g,l.value[e.requestId]]]),k(`button`,{type:`submit`,class:`primary`,disabled:!!u.value||!l.value[e.requestId]?.trim()},[u.value===e.requestId?(c(),M(I,{key:0,variant:`inline`,label:C(p)(`attention.sending`)},null,8,[`label`])):(c(),j(`span`,Xe,m(C(p)(`attention.send`)),1))],8,Ye)],40,Ke)]))),128)),C(n).items.length<C(n).filteredTotal?(c(),j(`button`,{key:5,type:`button`,disabled:C(n).loading,onClick:t[5]||=e=>C(n).more()},m(C(p)(`attention.more`)),9,Ze)):h(``,!0)])])],544)):h(``,!0)]))],64))}}),[[`__scopeId`,`data-v-521df451`]]),$e=[`routes.`,`common.`,`employees.`,`agentProfiles.`];function et(e,t=``){let n=typeof e==`string`&&e?e:t;return $e.some(e=>n.startsWith(e))?p(n):n}function tt(e){if(typeof document>`u`)return;let t=et(e,`routes.overview.title`);document.title=`${t} · ${p(`common.brand`)}`}var nt={class:`app-shell`},rt=[`onKeydown`],it=[`aria-label`],at={class:`nav-section-label`},ot={class:`nav-label`},st={class:`nav-section-label nav-space-label`},ct={class:`nav-copy`},lt={class:`nav-copy`},ut={class:`nav-copy`},dt={class:`nav-copy`},ft={class:`nav-section-label nav-public-label`},pt={class:`nav-copy`},mt={class:`nav-section-label nav-tool-label`},ht={class:`nav-label`},gt={class:`nav-label`},_t={class:`nav-label`},vt={class:`nav-section-label nav-about-label`},yt={class:`nav-label`},bt={class:`nav-label`},xt={class:`sidebar-foot`},St=[`aria-label`],Ct={class:`runtime-status`},wt={class:`runtime-status`},Tt=[`aria-label`],Et=[`inert`],Dt=[`aria-expanded`],Ot={key:0,class:`workbench-host-label`},kt={key:1,class:`topbar-heading`},At={key:2,class:`topbar-actions`},jt={key:0,class:`mode-chip`},Mt=[`disabled`],Nt=[`disabled`],Pt={key:1},Ft=[`aria-label`],It=L(l({__name:`ConsoleLayout`,setup(e){let i=F(),a=R(),l=d(!1),g=d(null),_=d(null),y=f(()=>i.activePersonalSpace?.id??`current`),S=f(()=>ie(y.value,`graph`)),T=f(()=>ae(`personal`,y.value,`directory`)),D=f(()=>et(a.meta.title,`routes.overview.title`)),O=f(()=>a.meta.dedicatedWorkspace===!0),P=f(()=>i.publicRuntimeStatus===`ready`),L=f(()=>i.publicRuntimeStatus===`ready`?p(`console.services.publicReady`):i.publicRuntimeStatus===`error`?p(`console.services.publicError`):p(`console.services.publicOffline`)),z=f(()=>{if(i.publicRuntimeStatus===`ready`){let e=i.state?.capabilities;return e?.browsePublicProjects&&e?.subscribeProject&&!e?.publishProject&&!e?.submitKnowledge&&!e?.reviewProposals?p(`console.services.publicBrowseSubscribe`):p(`console.services.publicAvailable`)}return i.publicRuntimeStatus===`error`?p(`console.services.localUnaffected`):p(`console.services.localOnly`)}),V=f(()=>i.state?.capabilities?.browsePublicProjects!==!1),U=f(()=>{let e=i.state?.capabilities;return e?.submitKnowledge!==!1||e?.reviewProposals===!0});s(()=>{i.runtimeStatus===`idle`&&i.refresh(),window.addEventListener(`resize`,W)}),b(()=>window.removeEventListener(`resize`,W));function W(){window.innerWidth>920&&(l.value=!1)}function G(e){if(!l.value||e.key!==`Tab`)return;let t=[...e.currentTarget.querySelectorAll(`button:not(:disabled), a[href], input:not(:disabled), [tabindex="0"]`)].filter(e=>e.getClientRects().length>0),n=t[0],r=t.at(-1);e.shiftKey&&document.activeElement===n?(e.preventDefault(),r?.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n?.focus())}n(()=>{tt(a.meta.title)}),N(()=>a.fullPath,()=>{l.value=!1});async function K(){l.value=!0,await t(),_.value?.focus({preventScroll:!0})}async function q(){l.value=!1,await t(),g.value?.focus({preventScroll:!0})}return(e,t)=>(c(),j(`div`,nt,[k(`aside`,{id:`console-primary-sidebar`,class:E([`sidebar`,{"is-mobile-open":l.value}]),onKeydown:[w(x(q,[`stop`]),[`esc`]),G]},[k(`button`,{ref_key:`mobileNavCloseRef`,ref:_,class:`mobile-nav-close quiet-button`,type:`button`,onClick:q},m(C(p)(`console.navigation.closeMenu`)),513),A(be),k(`nav`,{class:`primary-nav`,"aria-label":C(p)(`console.navigation.aria`)},[k(`p`,at,m(C(p)(`console.navigation.workspace`)),1),A(C(H),{to:`/`,"exact-active-class":`is-active`},{default:u(()=>[t[2]||=k(`span`,{class:`nav-icon nav-icon-overview`,"aria-hidden":`true`},null,-1),k(`span`,ot,m(C(p)(`console.navigation.overview`)),1)]),_:1}),k(`p`,st,m(C(p)(`console.navigation.personalSpace`)),1),A(C(H),{class:`space-nav-button personal-profile-button`,to:`/preferences`,"active-class":`is-active`},{default:u(()=>[t[3]||=k(`span`,{class:`nav-icon nav-icon-personal-profile`,"aria-hidden":`true`},null,-1),k(`span`,ct,[k(`strong`,null,m(C(p)(`console.navigation.preferences`)),1),k(`small`,null,m(C(p)(`console.navigation.preferencesMeta`)),1)])]),_:1}),A(C(H),{class:`space-nav-button knowledge-organizer-button`,to:`/organize`,"active-class":`is-active`},{default:u(()=>[t[4]||=k(`span`,{class:`nav-icon nav-icon-knowledge-organizer`,"aria-hidden":`true`},null,-1),k(`span`,lt,[k(`strong`,null,m(C(p)(`console.navigation.organizer`)),1),k(`small`,null,m(C(p)(`console.navigation.organizerMeta`)),1)])]),_:1}),A(C(H),{class:`space-nav-button personal-space-button`,to:S.value,"active-class":`is-active`},{default:u(()=>[t[5]||=k(`span`,{class:`nav-icon nav-icon-personal-project`,"aria-hidden":`true`},null,-1),k(`span`,ut,[k(`strong`,null,m(C(p)(`console.navigation.personalProjects`)),1),k(`small`,null,m(C(p)(`console.navigation.personalProjectsMeta`)),1)])]),_:1},8,[`to`]),A(C(H),{class:`space-nav-button project-agents-button`,to:`/project-agents`,"active-class":`is-active`},{default:u(()=>[t[6]||=k(`span`,{class:`nav-icon nav-icon-project-agent`,"aria-hidden":`true`},null,-1),k(`span`,dt,[k(`strong`,null,m(C(p)(`console.navigation.projectAgents`)),1),k(`small`,null,m(C(p)(`console.navigation.projectAgentsMeta`)),1)])]),_:1}),V.value?(c(),j(v,{key:0},[k(`p`,ft,m(C(p)(`console.navigation.publicSpace`)),1),A(C(H),{class:`space-nav-button public-space-button`,to:`/public-projects`,"active-class":`is-active`},{default:u(()=>[t[7]||=k(`span`,{class:`nav-icon nav-icon-public-project`,"aria-hidden":`true`},null,-1),k(`span`,pt,[k(`strong`,null,m(C(p)(`console.navigation.publicProjects`)),1),k(`small`,null,m(C(p)(`console.navigation.publicProjectsMeta`)),1)])]),_:1})],64)):h(``,!0),A(Me,{"personal-space-id":y.value},null,8,[`personal-space-id`]),A(Qe,{"personal-space-id":y.value,projects:C(i).state?.personalProjects??[]},null,8,[`personal-space-id`,`projects`]),k(`p`,mt,m(C(p)(`console.navigation.governance`)),1),A(C(H),{to:T.value,"active-class":`is-active`},{default:u(()=>[t[8]||=k(`span`,{class:`nav-icon nav-icon-knowledge-graph`,"aria-hidden":`true`},null,-1),k(`span`,ht,m(C(p)(`console.navigation.knowledge`)),1)]),_:1},8,[`to`]),U.value?(c(),M(C(H),{key:1,to:`/review`,"active-class":`is-active`},{default:u(()=>[t[9]||=k(`span`,{class:`nav-icon nav-icon-review`,"aria-hidden":`true`},null,-1),k(`span`,gt,m(C(p)(`console.navigation.review`)),1)]),_:1})):h(``,!0),A(C(H),{to:`/connections`,"active-class":`is-active`},{default:u(()=>[t[10]||=k(`span`,{class:`nav-icon nav-icon-connections`,"aria-hidden":`true`},null,-1),k(`span`,_t,m(C(p)(`console.navigation.connections`)),1)]),_:1}),k(`p`,vt,m(C(p)(`console.navigation.aboutSection`)),1),A(C(H),{to:`/settings`,"active-class":`is-active`},{default:u(()=>[t[11]||=k(`span`,{class:`nav-icon nav-icon-settings`,"aria-hidden":`true`},null,-1),k(`span`,yt,m(C(p)(`console.navigation.settings`)),1)]),_:1}),A(C(H),{to:`/about`,"active-class":`is-active`},{default:u(()=>[t[12]||=k(`span`,{class:`nav-icon nav-icon-about`,"aria-hidden":`true`},null,-1),k(`span`,bt,m(C(p)(`console.navigation.about`)),1)]),_:1})],8,it),k(`div`,xt,[k(`div`,{class:`service-runtime-list`,"aria-label":C(p)(`console.services.aria`)},[k(`div`,Ct,[k(`span`,{class:E([`status-dot`,C(i).runtimeStatus])},null,2),k(`div`,null,[k(`strong`,null,m(C(i).runtimeStatus===`ready`?C(p)(`console.services.localReady`):C(i).runtimeStatus===`error`?C(p)(`console.services.localError`):C(p)(`console.services.localConnecting`)),1),t[13]||=k(`small`,null,`Graphiti / Neo4j`,-1)])]),k(`div`,wt,[k(`span`,{class:E([`status-dot`,C(i).publicRuntimeStatus])},null,2),k(`div`,null,[k(`strong`,null,m(L.value),1),k(`small`,null,m(z.value),1)])])],8,St)])],42,rt),l.value?(c(),j(`button`,{key:0,class:`mobile-nav-backdrop`,type:`button`,tabindex:`-1`,"aria-label":C(p)(`console.navigation.closeMenu`),onClick:q},null,8,Tt)):h(``,!0),k(`main`,{class:`workspace`,inert:l.value||void 0},[k(`header`,{class:E([`topbar`,{"topbar--workbench":O.value}])},[k(`button`,{ref_key:`mobileNavToggleRef`,ref:g,class:`mobile-nav-toggle quiet-button`,type:`button`,"aria-controls":`console-primary-sidebar`,"aria-expanded":l.value,onClick:K},[t[14]||=k(`span`,{class:`mobile-nav-icon`,"aria-hidden":`true`},null,-1),r(` `+m(C(p)(`console.navigation.openMenu`)),1)],8,Dt),O.value?(c(),j(`span`,Ot,`FULI`)):(c(),j(`div`,kt,[k(`h2`,null,m(D.value),1)])),O.value?h(``,!0):(c(),j(`div`,At,[P.value?(c(),j(`span`,jt,m(C(p)(`console.publicReady`)),1)):h(``,!0),C(a).name===`settings`?(c(),j(`button`,{key:1,class:`settings-save-button`,disabled:C(i).settingsSaving,form:`settings-form`,type:`submit`},m(C(p)(`settings.save`)),9,Mt)):h(``,!0),A(Ce),k(`button`,{class:`quiet-button`,type:`button`,disabled:C(i).runtimeStatus===`loading`,onClick:t[0]||=(...e)=>C(i).refresh&&C(i).refresh(...e)},[C(i).runtimeStatus===`loading`?(c(),M(I,{key:0,variant:`inline`,label:C(p)(`common.status.loadingConsole`)},null,8,[`label`])):(c(),j(`span`,Pt,m(C(p)(`common.actions.refresh`)),1))],8,Nt)]))],2),A(De),C(i).feedback?(c(),j(`div`,{key:0,class:E([`feedback feedback-message`,{success:C(i).feedback.tone===`success`}]),role:`status`,"aria-live":`polite`},[k(`span`,null,m(C(i).feedback.message),1),k(`button`,{class:`feedback-dismiss`,type:`button`,"aria-label":C(p)(`common.actions.close`),onClick:t[1]||=(...e)=>C(i).clearFeedback&&C(i).clearFeedback(...e)},`×`,8,Ft)],2)):h(``,!0),A(C(B),null,{default:u(({Component:e})=>[(c(),M(o(e)))]),_:1})],8,Et)]))}}),[[`__scopeId`,`data-v-9fe7a62f`]]),Lt=l({__name:`App`,setup(e){let t=R();return(e,n)=>C(t).meta.publicReport?(c(),M(C(B),{key:0})):(c(),M(It,{key:1}))}}),Rt=`modulepreload`,zt=function(e){return`/`+e},Bt={},Z=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=zt(t,n),t=s(t),t in Bt)return;Bt[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:Rt,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})};function Vt(e){let t=e.match(/^#\/knowledge\/([^/?#]+)\/([^/?#]+)\/(entity|relationship)\/([^/?#]+)(?:\?([^#]*))?$/);if(!t)return null;let[,n,r,i,a,o]=t;return`/knowledge/${n}/${r}/directory/${i}/${a}${o?`?${o}`:``}`}var Q=V({history:z(`/`),routes:[{path:`/reports/jefa`,name:`shared-jefa-report`,component:()=>Z(()=>import(`./SharedJefaReportPage-CbFtrDCY.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11])),meta:{publicReport:!0,title:`employees.share.title`}},{path:`/`,name:`overview`,component:()=>Z(()=>import(`./OverviewPage-BreX_kb4.js`),__vite__mapDeps([12,1,13,7,14,5,15])),meta:{eyebrow:``,title:`routes.overview.title`}},{path:`/preferences`,name:`personal-profile`,component:()=>Z(()=>import(`./PersonalProfilePage-CX1a6_E3.js`),__vite__mapDeps([16,1,13,7,2,3,4,14,5,17,18,19,20,21,22,23,24,25,26,27])),meta:{eyebrow:`PERSONAL LENS`,title:`routes.preferences.title`,description:`routes.preferences.description`}},{path:`/preferences/writing`,name:`writing-taste`,component:()=>Z(()=>import(`./WritingTastePage-B7lSzs2z.js`),__vite__mapDeps([28,1,13,7,2,3,4,14,5,23,17,18,24,20,25,26,29])),meta:{eyebrow:``,title:`routes.writingTaste.title`}},{path:`/personal/:spaceId/projects/:projectId/:mode/:itemKind/:itemId`,name:`personal-project-item`,component:()=>Z(()=>import(`./PersonalProjectsPage-Br1S8ETM.js`),__vite__mapDeps([30,1,31,13,7,2,3,4,5,14,17,15,18,24,19,20,21,22,23,25,32])),meta:{eyebrow:`PERSONAL PROJECT`,title:`routes.personalProjects.title`}},{path:`/personal/:spaceId/projects/:mode/:itemKind/:itemId`,name:`personal-projects-item`,component:()=>Z(()=>import(`./PersonalProjectsPage-Br1S8ETM.js`),__vite__mapDeps([30,1,31,13,7,2,3,4,5,14,17,15,18,24,19,20,21,22,23,25,32])),meta:{eyebrow:`PERSONAL PROJECTS`,title:`routes.personalProjects.title`,description:`routes.personalProjects.description`}},{path:`/personal/:spaceId/projects/:mode`,name:`personal-projects`,component:()=>Z(()=>import(`./PersonalProjectsPage-Br1S8ETM.js`),__vite__mapDeps([30,1,31,13,7,2,3,4,5,14,17,15,18,24,19,20,21,22,23,25,32])),meta:{eyebrow:`PERSONAL PROJECTS`,title:`routes.personalProjects.title`,description:`routes.personalProjects.description`}},{path:`/personal/:spaceId/projects/:projectId/:mode`,name:`personal-project`,component:()=>Z(()=>import(`./PersonalProjectsPage-Br1S8ETM.js`),__vite__mapDeps([30,1,31,13,7,2,3,4,5,14,17,15,18,24,19,20,21,22,23,25,32])),meta:{eyebrow:`PERSONAL PROJECT`,title:`routes.personalProjects.title`}},{path:`/organize`,name:`knowledge-organizer`,component:()=>Z(()=>import(`./KnowledgeOrganizerPage-DMC8Hh43.js`),__vite__mapDeps([33,1,13,7,2,3,4,17,18,24,19,20,21,22,23,25,34])),meta:{eyebrow:`KNOWLEDGE CLASSIFICATION`,title:`routes.organizer.title`}},{path:`/project-agents`,name:`project-agents`,component:()=>Z(()=>import(`./AgentsDirectoryPage-CKZfrcuD.js`),__vite__mapDeps([35,1,13,7,2,3,4,5,14,36,37,38,39,40,41,42,43,8,9,44,45,17,15,18,46])),meta:{eyebrow:``,title:`routes.projectAgents.title`}},{path:`/agents/:spaceId/:agentId`,name:`agent-profile`,component:()=>Z(()=>import(`./AgentProfilePage-BPQEfMhB.js`),__vite__mapDeps([47,1,13,7,2,3,4,5,14,45,38,39,40,42,41,43])),meta:{eyebrow:``,title:`agentProfiles.profile`}},{path:`/project-agents/manage`,name:`agent-management`,component:()=>Z(()=>import(`./ProjectAgentsPage-CA04h1Uf.js`),__vite__mapDeps([48,1,13,7,2,3,4,5,14,45,36,37,17,42,8,9,18,44,15,46,49])),meta:{eyebrow:``,title:`agentProfiles.advanced`}},{path:`/employees/:templateId`,name:`employee-workbench`,component:()=>Z(()=>import(`./EmployeeWorkbenchPage-HUd-gne2.js`),__vite__mapDeps([50,1,13,7,2,3,4,5,14,45,36,37,38,17,39,40,8,9,44,15,18,46,6,10,51,52])),meta:{eyebrow:``,title:`routes.employeeWorkbench.title`,dedicatedWorkspace:!0}},{path:`/public-projects`,name:`public-projects`,component:()=>Z(()=>import(`./PublicProjectsPage-CtctKml1.js`),__vite__mapDeps([53,1,13,7,2,3,4,5,17,15,18,24])),meta:{eyebrow:`PUBLIC PROJECTS`,title:`routes.publicProjects.title`,description:`routes.publicProjects.description`}},{path:`/knowledge`,name:`knowledge-default`,component:()=>Z(()=>import(`./KnowledgePage-uXW1Eovz.js`),__vite__mapDeps([54,1,31,13,7,2,3,4,5,14,17,15,18,24,19,20,21,22,23,25,32])),meta:{eyebrow:`KNOWLEDGE BASE`,title:`routes.knowledge.title`}},{path:`/knowledge/:scope/:spaceId/:projectId/:mode/:itemKind/:itemId`,name:`project-knowledge-item`,component:()=>Z(()=>import(`./KnowledgePage-uXW1Eovz.js`),__vite__mapDeps([54,1,31,13,7,2,3,4,5,14,17,15,18,24,19,20,21,22,23,25,32])),meta:{eyebrow:`KNOWLEDGE BASE`,title:`routes.knowledge.title`}},{path:`/knowledge/:scope/:spaceId/:mode/:itemKind/:itemId`,name:`knowledge-item`,component:()=>Z(()=>import(`./KnowledgePage-uXW1Eovz.js`),__vite__mapDeps([54,1,31,13,7,2,3,4,5,14,17,15,18,24,19,20,21,22,23,25,32])),meta:{eyebrow:`KNOWLEDGE BASE`,title:`routes.knowledge.title`}},{path:`/knowledge/:scope/:spaceId/:projectId/:mode`,name:`project-knowledge`,component:()=>Z(()=>import(`./KnowledgePage-uXW1Eovz.js`),__vite__mapDeps([54,1,31,13,7,2,3,4,5,14,17,15,18,24,19,20,21,22,23,25,32])),meta:{eyebrow:`KNOWLEDGE BASE`,title:`routes.knowledge.title`}},{path:`/knowledge/:scope/:spaceId/:mode`,name:`knowledge`,component:()=>Z(()=>import(`./KnowledgePage-uXW1Eovz.js`),__vite__mapDeps([54,1,31,13,7,2,3,4,5,14,17,15,18,24,19,20,21,22,23,25,32])),meta:{eyebrow:`KNOWLEDGE BASE`,title:`routes.knowledge.title`}},{path:`/review`,name:`review`,component:()=>Z(()=>import(`./ReviewPage-DUqaK-do.js`),__vite__mapDeps([55,1,13,7,2,3,4,18,24,20])),meta:{eyebrow:`REVIEW WORKSPACE`,title:`routes.review.title`,description:`routes.review.description`}},{path:`/connections`,name:`connections`,component:()=>Z(()=>import(`./ConnectionsPage-COb56qnk.js`),__vite__mapDeps([56,1,13,7,2,3,4,18,24,57])),meta:{eyebrow:`SERVICE CONNECTIONS`,title:`routes.connections.title`,description:`routes.connections.description`}},{path:`/settings`,name:`settings`,component:()=>Z(()=>import(`./SettingsPage-CB4ymLr8.js`),__vite__mapDeps([58,1,13,7,2,3,4,18,21,59])),meta:{eyebrow:``,title:`routes.settings.title`}},{path:`/about`,name:`about`,component:()=>Z(()=>import(`./AboutPage-fBq5VFoQ.js`),__vite__mapDeps([60,1,3,61,62])),meta:{eyebrow:`FULI`,title:`routes.about.title`}},{path:`/:pathMatch(.*)*`,name:`not-found`,component:()=>Z(()=>import(`./NotFoundPage-C0yOR9T9.js`),__vite__mapDeps([63,1,14,5])),meta:{title:`common.errors.pageNotFound`}}],scrollBehavior:(e,t,n)=>n??(e.path!==t.path&&{top:0})});we(Q),Q.beforeEach(e=>e.path!==`/`||typeof window>`u`?!0:Vt(window.location.hash)??!0),Q.afterEach(e=>{tt(e.meta.title)});var $=D(Lt);$.use(P()),$.use(T),$.use(Q),await Q.isReady().catch(()=>void 0),$.mount(`#app`);
|