fuli-context 0.7.4-beta.3 → 0.7.6
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 +77 -6
- package/README.zh-CN.md +69 -6
- package/compose.graphiti.yml +6 -6
- package/dist/web/assets/AboutPage-sLV9WChi.js +1 -0
- package/dist/web/assets/ConnectionsPage-BWn4ywGJ.js +1 -0
- package/dist/web/assets/KnowledgeEditDialog-CZ5ziPrD.js +1 -0
- package/dist/web/assets/KnowledgeInspector-CRQWOaos.js +1 -0
- package/dist/web/assets/KnowledgeOrganizerPage-Dfj3vIpU.js +1 -0
- package/dist/web/assets/KnowledgePage-BRYC9S5Y.js +1 -0
- package/dist/web/assets/KnowledgeWorkspace-ChEB5Bwk.js +4 -0
- package/dist/web/assets/OverviewPage-Cd66M0RT.js +1 -0
- package/dist/web/assets/PersonalProfilePage-RCFHL0Wz.js +1 -0
- package/dist/web/assets/PersonalProjectsPage-DEh8XWby.js +1 -0
- package/dist/web/assets/ProjectAgentsPage-Crh7PrXa.css +1 -0
- package/dist/web/assets/ProjectAgentsPage-DPnaH-TR.js +11 -0
- package/dist/web/assets/PublicProjectsPage-mstPEjHe.js +1 -0
- package/dist/web/assets/ReviewPage-6Y1SmfZy.js +1 -0
- package/dist/web/assets/SearchableSelect-D3HM8YF8.js +1 -0
- package/dist/web/assets/SettingsPage--LdTMUm7.js +1 -0
- package/dist/web/assets/SettingsPage-CwZp2ka4.css +1 -0
- package/dist/web/assets/WritingTastePage-CIpKswvs.js +1 -0
- package/dist/web/assets/{console-D_2zC4lm.js → console-BT1P2Db4.js} +1 -1
- package/dist/web/assets/{conversation-launcher-settings-DQmMH2j7.js → conversation-launcher-settings-DrJEotdf.js} +1 -1
- package/dist/web/assets/i18n-js6gfc7j.js +9 -0
- package/dist/web/assets/{identity-DmGcY3Y6.js → identity-CfDfanpa.js} +1 -1
- package/dist/web/assets/index-BnH5mcZx.css +1 -0
- package/dist/web/assets/index-GqJf1xqg.js +2 -0
- package/dist/web/assets/{model-CVoOdRsL.js → model-DJkLAJsg.js} +1 -1
- package/dist/web/assets/{useApi-CROJJdhE-CBNg4CdH.js → useApi-CROJJdhE-BdSti7Y2.js} +1 -1
- package/dist/web/assets/vue-router-Kk67EaCP.js +1 -0
- package/dist/web/index.html +6 -6
- package/graph-provider/fuli_graph/app.py +8 -0
- package/graph-provider/fuli_graph/collaboration_context.py +69 -6
- package/graph-provider/fuli_graph/knowledge_search.py +84 -5
- package/graph-provider/fuli_graph/model_validation.py +130 -0
- package/graph-provider/fuli_graph/models.py +24 -5
- package/graph-provider/fuli_graph/project_agent_access.py +54 -0
- package/graph-provider/fuli_graph/project_agent_coordination_models.py +22 -0
- package/graph-provider/fuli_graph/project_agent_executor_models.py +635 -0
- package/graph-provider/fuli_graph/project_agent_models.py +278 -0
- package/graph-provider/fuli_graph/project_agent_routes.py +626 -0
- package/graph-provider/fuli_graph/project_agent_task_models.py +545 -0
- package/graph-provider/fuli_graph/runtime.py +259 -0
- package/graph-provider/fuli_graph/search_projection.py +3 -0
- package/graph-provider/fuli_graph/store.py +6 -0
- package/graph-provider/fuli_graph/store_knowledge.py +62 -9
- package/graph-provider/fuli_graph/store_project_agent_coordination_policy.py +122 -0
- package/graph-provider/fuli_graph/store_project_agent_executor_learning.py +756 -0
- package/graph-provider/fuli_graph/store_project_agent_executor_routing.py +601 -0
- package/graph-provider/fuli_graph/store_project_agent_executors.py +1087 -0
- package/graph-provider/fuli_graph/store_project_agent_task_reads.py +458 -0
- package/graph-provider/fuli_graph/store_project_agent_task_recruitment.py +705 -0
- package/graph-provider/fuli_graph/store_project_agent_task_staffing.py +586 -0
- package/graph-provider/fuli_graph/store_project_agent_tasks.py +1151 -0
- package/graph-provider/fuli_graph/store_project_agents.py +965 -0
- package/graph-provider/pyproject.toml +2 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/skills/capturing-session-knowledge/SKILL.md +39 -0
- package/src/adaptive-runtime/executor-pool.js +127 -0
- package/src/adaptive-runtime/graph-services.js +166 -0
- package/src/adaptive-runtime/lease-client.js +335 -0
- package/src/adaptive-runtime/runtime-broker.js +318 -0
- package/src/adaptive-runtime/settings.js +111 -0
- package/src/adaptive-runtime/state.js +74 -0
- package/src/agent-tools/graph-definitions.js +419 -0
- package/src/agent-tools/graph-handlers.js +65 -0
- package/src/agent-tools/project-agent-definitions.js +307 -0
- package/src/backup/graph-backup.js +289 -0
- package/src/backup/identity-reconciliation.js +208 -0
- package/src/backup/runtime-adapters.js +269 -0
- package/src/cli/command-registry.js +6 -2
- package/src/cli/graph-data-command.js +112 -0
- package/src/cli/local-runtime-command.js +16 -2
- package/src/cli/setup-command.js +19 -3
- package/src/cli/update-command.js +4 -0
- package/src/cli.js +6 -0
- package/src/graphiti/collaboration-preference-projection.js +29 -1
- package/src/graphiti/collaboration-preference-workflow.js +121 -0
- package/src/graphiti/federated-application.js +53 -90
- package/src/graphiti/project-agent-control-plane.js +275 -0
- package/src/graphiti/project-agent-mapping.js +1024 -0
- package/src/graphiti/project-agent-workflows.js +576 -0
- package/src/graphiti/provider-client.js +282 -1
- package/src/http/api-router.js +63 -9
- package/src/http/graph-api-router.js +290 -0
- package/src/local-runtime/lifecycle.js +46 -10
- package/src/mcp/context-resources.js +15 -6
- package/src/mcp/create-mcp-server.js +51 -16
- package/src/mcp/instructions.js +7 -5
- package/src/mcp/runtime.js +17 -5
- package/src/mcp/session-id.js +38 -1
- package/src/mcp/tool-annotations.js +71 -0
- package/src/mcp-server.js +23 -6
- package/src/native-runtime/runtime.js +717 -0
- package/src/server.js +6 -2
- package/src/setup/agent-installation-status.js +7 -1
- package/src/setup/agents.js +3 -1
- package/src/setup/claude-code-config.js +3 -1
- package/src/setup/codex-bootstrap.js +11 -10
- package/src/setup/codex-config.js +7 -1
- package/src/setup/cursor-config.js +3 -1
- package/src/setup/graph-runtime.js +158 -13
- package/src/setup/neo4j-memory-profile.js +43 -0
- package/src/setup/options.js +38 -2
- package/src/setup/paths.js +14 -0
- package/src/setup/setup.js +37 -1
- package/src/system/resource-monitor.js +181 -16
- package/src/system/runtime-settings.js +10 -1
- package/src/system/system-service.js +27 -2
- package/dist/web/assets/AboutPage-Dpf5fRWv.js +0 -1
- package/dist/web/assets/ConnectionsPage-D21aUDCP.js +0 -1
- package/dist/web/assets/KnowledgeEditDialog-u7lpfN3j.js +0 -1
- package/dist/web/assets/KnowledgeInspector-k4xnHtXd.js +0 -1
- package/dist/web/assets/KnowledgeOrganizerPage-Bdj7Rn84.js +0 -1
- package/dist/web/assets/KnowledgePage-UHVAbC1W.js +0 -1
- package/dist/web/assets/KnowledgeWorkspace-Lq3d-MeC.js +0 -4
- package/dist/web/assets/OverviewPage-CycAgA1V.js +0 -1
- package/dist/web/assets/PersonalProfilePage-U9oIV5FT.js +0 -1
- package/dist/web/assets/PersonalProjectsPage-C5RpXKcA.js +0 -1
- package/dist/web/assets/PublicProjectsPage-DiWxm35E.js +0 -1
- package/dist/web/assets/ReviewPage-jxRfGSJK.js +0 -1
- package/dist/web/assets/SearchableSelect-B3-5IPup.js +0 -1
- package/dist/web/assets/SettingsPage-BqfGDOho.js +0 -1
- package/dist/web/assets/SettingsPage-CAfz4qiV.css +0 -1
- package/dist/web/assets/WritingTastePage-BJxhMqJR.js +0 -1
- package/dist/web/assets/i18n-CwqXDI1C.js +0 -5
- package/dist/web/assets/index-IUGLt4lG.js +0 -2
- package/dist/web/assets/index-X2j29j8i.css +0 -1
- package/dist/web/assets/vue-router-CWSsUUio.js +0 -1
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { execFile } from 'node:child_process';
|
|
2
|
-
import { readdir, lstat, statfs } from 'node:fs/promises';
|
|
2
|
+
import { readFile, readdir, lstat, statfs } from 'node:fs/promises';
|
|
3
3
|
import { freemem, totalmem } from 'node:os';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
5
|
|
|
6
6
|
import { inspectContainerRuntime } from '../setup/container-runtime.js';
|
|
7
|
+
import { readJsonFile } from '../storage/json-file.js';
|
|
7
8
|
|
|
8
9
|
const COMPOSE_PROJECT = 'fuli-graphiti';
|
|
9
10
|
const DISK_CACHE_MS = 60_000;
|
|
@@ -20,7 +21,14 @@ export function createResourceMonitor({
|
|
|
20
21
|
packageRoot,
|
|
21
22
|
now = () => new Date(),
|
|
22
23
|
processMemory = () => process.memoryUsage(),
|
|
23
|
-
hostMemory =
|
|
24
|
+
hostMemory = null,
|
|
25
|
+
platform = process.platform,
|
|
26
|
+
runtimeMode = 'container',
|
|
27
|
+
nativeProcessStatePath = null,
|
|
28
|
+
nativePersonalDir = null,
|
|
29
|
+
nativeWorkspaceDir = null,
|
|
30
|
+
readJson = (path) => readJsonFile(path, null),
|
|
31
|
+
readText = readOptionalText,
|
|
24
32
|
containerRuntime = null,
|
|
25
33
|
inspectRuntime = inspectContainerRuntime,
|
|
26
34
|
run = runCommand,
|
|
@@ -29,13 +37,28 @@ export function createResourceMonitor({
|
|
|
29
37
|
}) {
|
|
30
38
|
let resolvedRuntime = containerRuntime;
|
|
31
39
|
let diskCache = null;
|
|
40
|
+
let hostMemoryCache = null;
|
|
32
41
|
|
|
33
42
|
async function sample() {
|
|
34
43
|
const sampledAt = now().toISOString();
|
|
35
|
-
const runtime =
|
|
36
|
-
|
|
44
|
+
const runtime = runtimeMode === 'container'
|
|
45
|
+
? (resolvedRuntime ??= inspectRuntime())
|
|
46
|
+
: null;
|
|
47
|
+
const managedMemory = runtimeMode === 'native'
|
|
48
|
+
? await nativeMemory({
|
|
49
|
+
nativeProcessStatePath,
|
|
50
|
+
nativePersonalDir,
|
|
51
|
+
nativeWorkspaceDir,
|
|
52
|
+
readJson,
|
|
53
|
+
readText,
|
|
54
|
+
run
|
|
55
|
+
})
|
|
56
|
+
: await containerMemory(runtime, run);
|
|
37
57
|
const localMemory = processMemory();
|
|
38
|
-
const host = hostMemory
|
|
58
|
+
const host = hostMemory
|
|
59
|
+
? await hostMemory()
|
|
60
|
+
: await cachedHostMemory({ platform, run, now, cache: hostMemoryCache });
|
|
61
|
+
if (!hostMemory) hostMemoryCache = host.cache;
|
|
39
62
|
const disk = await diskSample({
|
|
40
63
|
runtime,
|
|
41
64
|
run,
|
|
@@ -43,6 +66,7 @@ export function createResourceMonitor({
|
|
|
43
66
|
packageRoot,
|
|
44
67
|
directorySize,
|
|
45
68
|
filesystemStats,
|
|
69
|
+
runtimeMode,
|
|
46
70
|
now,
|
|
47
71
|
cache: diskCache
|
|
48
72
|
});
|
|
@@ -54,25 +78,55 @@ export function createResourceMonitor({
|
|
|
54
78
|
kind: 'process',
|
|
55
79
|
status: 'ready',
|
|
56
80
|
bytes: localMemory.rss
|
|
57
|
-
}, ...
|
|
81
|
+
}, ...managedMemory.components];
|
|
58
82
|
return {
|
|
59
83
|
sampledAt,
|
|
60
|
-
status:
|
|
84
|
+
status: managedMemory.complete && disk.value.complete ? 'ready' : 'partial',
|
|
61
85
|
memory: {
|
|
62
86
|
usedBytes: sumBytes(memoryComponents),
|
|
63
|
-
hostTotalBytes: host.totalBytes,
|
|
64
|
-
hostFreeBytes: host.freeBytes,
|
|
65
|
-
complete:
|
|
87
|
+
hostTotalBytes: host.value?.totalBytes ?? host.totalBytes,
|
|
88
|
+
hostFreeBytes: host.value?.freeBytes ?? host.freeBytes,
|
|
89
|
+
complete: managedMemory.complete,
|
|
66
90
|
components: memoryComponents
|
|
67
91
|
},
|
|
68
92
|
disk: disk.value,
|
|
69
|
-
exclusions:
|
|
93
|
+
exclusions: runtimeMode === 'native'
|
|
94
|
+
? ['browser-tab-memory']
|
|
95
|
+
: ['browser-tab-memory', 'shared-container-vm-overhead']
|
|
70
96
|
};
|
|
71
97
|
}
|
|
72
98
|
|
|
73
99
|
return { sample };
|
|
74
100
|
}
|
|
75
101
|
|
|
102
|
+
async function cachedHostMemory({ platform, run, now, cache }) {
|
|
103
|
+
const timestamp = now().getTime();
|
|
104
|
+
if (cache && timestamp - cache.timestamp < 4_000) {
|
|
105
|
+
return { value: cache.value, cache };
|
|
106
|
+
}
|
|
107
|
+
const totalBytes = totalmem();
|
|
108
|
+
let freeBytes = freemem();
|
|
109
|
+
if (platform === 'darwin') {
|
|
110
|
+
try {
|
|
111
|
+
freeBytes = parseDarwinAvailableMemory(
|
|
112
|
+
await run('memory_pressure', ['-Q']),
|
|
113
|
+
totalBytes
|
|
114
|
+
) ?? freeBytes;
|
|
115
|
+
} catch {
|
|
116
|
+
// Fall back to strictly free pages when memory_pressure is unavailable.
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
const value = { totalBytes, freeBytes };
|
|
120
|
+
return { value, cache: { timestamp, value } };
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export function parseDarwinAvailableMemory(output, totalBytes) {
|
|
124
|
+
const match = String(output).match(/memory free percentage:\s*(\d+(?:\.\d+)?)%/i);
|
|
125
|
+
const percentage = Number(match?.[1]);
|
|
126
|
+
if (!Number.isFinite(percentage) || percentage < 0 || percentage > 100) return null;
|
|
127
|
+
return Math.round(totalBytes * percentage / 100);
|
|
128
|
+
}
|
|
129
|
+
|
|
76
130
|
async function containerMemory(runtime, run) {
|
|
77
131
|
if (runtime?.status !== 'ready') return { complete: false, components: [] };
|
|
78
132
|
try {
|
|
@@ -101,30 +155,133 @@ async function containerMemory(runtime, run) {
|
|
|
101
155
|
}
|
|
102
156
|
}
|
|
103
157
|
|
|
158
|
+
async function nativeMemory(input) {
|
|
159
|
+
if (!input.nativeProcessStatePath) return { complete: false, components: [] };
|
|
160
|
+
const state = input.readJson(input.nativeProcessStatePath);
|
|
161
|
+
if (!state || state.mode !== 'native') return { complete: false, components: [] };
|
|
162
|
+
const candidates = [];
|
|
163
|
+
for (const [id, entry] of Object.entries(state.providers ?? {})) {
|
|
164
|
+
if (Number.isInteger(entry?.pid)) {
|
|
165
|
+
candidates.push({
|
|
166
|
+
id: `${id}-provider`,
|
|
167
|
+
label: id === 'personal' ? 'Personal Provider' : 'Workspace Provider',
|
|
168
|
+
kind: 'process',
|
|
169
|
+
pid: entry.pid
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
const recordedDatabases = new Set();
|
|
174
|
+
for (const [id, entry] of Object.entries(state.databases ?? {})) {
|
|
175
|
+
if (Number.isInteger(entry?.pid)) {
|
|
176
|
+
recordedDatabases.add(id);
|
|
177
|
+
candidates.push({
|
|
178
|
+
id: `${id}-neo4j`,
|
|
179
|
+
label: id === 'personal' ? 'Personal Neo4j' : 'Workspace Neo4j',
|
|
180
|
+
kind: 'process',
|
|
181
|
+
pid: entry.pid
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
for (const [id, root] of [
|
|
186
|
+
['personal', input.nativePersonalDir],
|
|
187
|
+
['workspace', input.nativeWorkspaceDir]
|
|
188
|
+
]) {
|
|
189
|
+
if (!root || recordedDatabases.has(id)) continue;
|
|
190
|
+
const value = await input.readText(join(root, 'run', 'neo4j.pid'));
|
|
191
|
+
const pid = Number(String(value ?? '').trim());
|
|
192
|
+
if (Number.isInteger(pid) && pid > 0) {
|
|
193
|
+
candidates.push({
|
|
194
|
+
id: `${id}-neo4j`,
|
|
195
|
+
label: id === 'personal' ? 'Personal Neo4j' : 'Workspace Neo4j',
|
|
196
|
+
kind: 'process',
|
|
197
|
+
pid
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
const components = [];
|
|
202
|
+
let processRows;
|
|
203
|
+
try {
|
|
204
|
+
processRows = parseProcessTable(await input.run('ps', ['-axo', 'pid=,ppid=,rss=']));
|
|
205
|
+
} catch {
|
|
206
|
+
return { complete: false, components };
|
|
207
|
+
}
|
|
208
|
+
const claimed = new Set();
|
|
209
|
+
for (const candidate of candidates) {
|
|
210
|
+
if (!processRows.has(candidate.pid)) return { complete: false, components };
|
|
211
|
+
const pids = processTreePids(candidate.pid, processRows);
|
|
212
|
+
const kib = [...pids].reduce((total, pid) => {
|
|
213
|
+
if (claimed.has(pid)) return total;
|
|
214
|
+
claimed.add(pid);
|
|
215
|
+
return total + processRows.get(pid).rssKib;
|
|
216
|
+
}, 0);
|
|
217
|
+
components.push({
|
|
218
|
+
id: candidate.id,
|
|
219
|
+
label: candidate.label,
|
|
220
|
+
kind: candidate.kind,
|
|
221
|
+
status: 'ready',
|
|
222
|
+
bytes: kib * 1024
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
return { complete: true, components };
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
function parseProcessTable(output) {
|
|
229
|
+
const rows = new Map();
|
|
230
|
+
for (const line of parseLines(output)) {
|
|
231
|
+
const [pidText, parentText, rssText] = line.trim().split(/\s+/, 3);
|
|
232
|
+
const pid = Number(pidText);
|
|
233
|
+
const parentPid = Number(parentText);
|
|
234
|
+
const rssKib = Number(rssText);
|
|
235
|
+
if (
|
|
236
|
+
Number.isInteger(pid) && pid > 0 &&
|
|
237
|
+
Number.isInteger(parentPid) && parentPid >= 0 &&
|
|
238
|
+
Number.isFinite(rssKib) && rssKib >= 0
|
|
239
|
+
) rows.set(pid, { parentPid, rssKib });
|
|
240
|
+
}
|
|
241
|
+
return rows;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
function processTreePids(rootPid, rows) {
|
|
245
|
+
const selected = new Set([rootPid]);
|
|
246
|
+
let changed = true;
|
|
247
|
+
while (changed) {
|
|
248
|
+
changed = false;
|
|
249
|
+
for (const [pid, row] of rows) {
|
|
250
|
+
if (!selected.has(pid) && selected.has(row.parentPid)) {
|
|
251
|
+
selected.add(pid);
|
|
252
|
+
changed = true;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return selected;
|
|
257
|
+
}
|
|
258
|
+
|
|
104
259
|
async function diskSample(input) {
|
|
105
260
|
const timestamp = input.now().getTime();
|
|
106
261
|
if (input.cache && timestamp - input.cache.timestamp < DISK_CACHE_MS) {
|
|
107
262
|
return { value: input.cache.value, cache: input.cache };
|
|
108
263
|
}
|
|
109
|
-
const [applicationBytes, localDataBytes, filesystem,
|
|
264
|
+
const [applicationBytes, localDataBytes, filesystem, runtimeDisk] = await Promise.all([
|
|
110
265
|
input.directorySize(input.packageRoot),
|
|
111
266
|
input.directorySize(input.dataDir),
|
|
112
267
|
input.filesystemStats(input.dataDir),
|
|
113
|
-
|
|
268
|
+
input.runtimeMode === 'native'
|
|
269
|
+
? Promise.resolve({ complete: true, components: [], temporaryBytes: null })
|
|
270
|
+
: dockerDisk(input.runtime, input.run)
|
|
114
271
|
]);
|
|
115
272
|
const components = [
|
|
116
273
|
diskComponent('application', 'Application files', applicationBytes),
|
|
117
274
|
diskComponent('localData', 'Local runtime data', localDataBytes),
|
|
118
|
-
...
|
|
275
|
+
...runtimeDisk.components
|
|
119
276
|
].filter(Boolean);
|
|
120
277
|
const value = {
|
|
121
278
|
usedBytes: sumBytes(components),
|
|
122
279
|
hostTotalBytes: filesystem.totalBytes,
|
|
123
280
|
hostFreeBytes: filesystem.freeBytes,
|
|
124
|
-
complete:
|
|
281
|
+
complete: runtimeDisk.complete && Number.isFinite(filesystem.totalBytes) &&
|
|
125
282
|
Number.isFinite(filesystem.freeBytes),
|
|
126
283
|
measuredAt: input.now().toISOString(),
|
|
127
|
-
temporaryBytes:
|
|
284
|
+
temporaryBytes: runtimeDisk.temporaryBytes,
|
|
128
285
|
components
|
|
129
286
|
};
|
|
130
287
|
return { value, cache: { timestamp, value } };
|
|
@@ -315,3 +472,11 @@ function nonNegativeNumber(value) {
|
|
|
315
472
|
function parseLines(value) {
|
|
316
473
|
return String(value).split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
|
|
317
474
|
}
|
|
475
|
+
|
|
476
|
+
async function readOptionalText(path) {
|
|
477
|
+
try {
|
|
478
|
+
return await readFile(path, 'utf8');
|
|
479
|
+
} catch {
|
|
480
|
+
return null;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
@@ -5,6 +5,7 @@ import { readJsonFile, writeJsonFileAtomic } from '../storage/json-file.js';
|
|
|
5
5
|
|
|
6
6
|
export const RUNTIME_SETTINGS_VERSION = 1;
|
|
7
7
|
export const RESOURCE_REFRESH_OPTIONS = Object.freeze([5, 10, 30, 60]);
|
|
8
|
+
export const GRAPH_RUNTIME_MODES = Object.freeze(['container', 'native']);
|
|
8
9
|
export const CONVERSATION_LAUNCHER_APPLICATIONS = Object.freeze([
|
|
9
10
|
'codex',
|
|
10
11
|
'claude_code',
|
|
@@ -65,6 +66,7 @@ export const DEFAULT_CONVERSATION_LAUNCHERS = deepFreeze({
|
|
|
65
66
|
|
|
66
67
|
export const DEFAULT_RUNTIME_SETTINGS = deepFreeze({
|
|
67
68
|
version: RUNTIME_SETTINGS_VERSION,
|
|
69
|
+
graphRuntimeMode: 'container',
|
|
68
70
|
ports: {
|
|
69
71
|
console: 2727,
|
|
70
72
|
personalProvider: 8787,
|
|
@@ -126,6 +128,10 @@ export function normalizeRuntimeSettings(input, {
|
|
|
126
128
|
|
|
127
129
|
const lanAccess = input.lanAccess ?? base.lanAccess;
|
|
128
130
|
if (typeof lanAccess !== 'boolean') throw new TypeError('lanAccess must be a boolean');
|
|
131
|
+
const graphRuntimeMode = input.graphRuntimeMode ?? base.graphRuntimeMode ?? 'container';
|
|
132
|
+
if (!GRAPH_RUNTIME_MODES.includes(graphRuntimeMode)) {
|
|
133
|
+
throw new TypeError('graphRuntimeMode must be container or native');
|
|
134
|
+
}
|
|
129
135
|
const resourceRefreshSeconds = input.resourceRefreshSeconds ?? base.resourceRefreshSeconds;
|
|
130
136
|
if (!RESOURCE_REFRESH_OPTIONS.includes(resourceRefreshSeconds)) {
|
|
131
137
|
throw new TypeError('resourceRefreshSeconds must be 5, 10, 30, or 60');
|
|
@@ -136,6 +142,7 @@ export function normalizeRuntimeSettings(input, {
|
|
|
136
142
|
);
|
|
137
143
|
return {
|
|
138
144
|
version: RUNTIME_SETTINGS_VERSION,
|
|
145
|
+
graphRuntimeMode,
|
|
139
146
|
ports,
|
|
140
147
|
lanAccess,
|
|
141
148
|
resourceRefreshSeconds,
|
|
@@ -195,10 +202,12 @@ export function normalizeConversationLaunchers(input, {
|
|
|
195
202
|
|
|
196
203
|
export function runtimeSettingsWithOverrides(settings, {
|
|
197
204
|
consolePort = null,
|
|
198
|
-
lanAccess = null
|
|
205
|
+
lanAccess = null,
|
|
206
|
+
graphRuntimeMode = null
|
|
199
207
|
} = {}) {
|
|
200
208
|
return normalizeRuntimeSettings({
|
|
201
209
|
...settings,
|
|
210
|
+
...(graphRuntimeMode === null ? {} : { graphRuntimeMode }),
|
|
202
211
|
ports: {
|
|
203
212
|
...settings.ports,
|
|
204
213
|
...(consolePort === null ? {} : { console: consolePort })
|
|
@@ -7,6 +7,8 @@ import {
|
|
|
7
7
|
writeRuntimeSettings
|
|
8
8
|
} from './runtime-settings.js';
|
|
9
9
|
import { createResourceMonitor } from './resource-monitor.js';
|
|
10
|
+
import { createAdaptiveRuntimeBroker } from '../adaptive-runtime/runtime-broker.js';
|
|
11
|
+
import { readAdaptiveRuntimeSettings } from '../adaptive-runtime/settings.js';
|
|
10
12
|
|
|
11
13
|
export function createSystemService({
|
|
12
14
|
paths,
|
|
@@ -16,9 +18,19 @@ export function createSystemService({
|
|
|
16
18
|
readJson = readJsonFile,
|
|
17
19
|
readSettings = readRuntimeSettings,
|
|
18
20
|
writeSettings = writeRuntimeSettings,
|
|
21
|
+
executorAdapters = new Map(),
|
|
22
|
+
runtimeBroker = createAdaptiveRuntimeBroker({
|
|
23
|
+
paths,
|
|
24
|
+
settings: readAdaptiveRuntimeSettings(paths.adaptiveRuntimeSettingsPath),
|
|
25
|
+
executorAdapters
|
|
26
|
+
}),
|
|
19
27
|
resourceMonitor = createResourceMonitor({
|
|
20
28
|
dataDir: paths.dataDir,
|
|
21
|
-
packageRoot
|
|
29
|
+
packageRoot,
|
|
30
|
+
runtimeMode: readSettings(paths.runtimeSettingsPath).graphRuntimeMode,
|
|
31
|
+
nativeProcessStatePath: paths.nativeProcessStatePath,
|
|
32
|
+
nativePersonalDir: paths.nativePersonalDir,
|
|
33
|
+
nativeWorkspaceDir: paths.nativeWorkspaceDir
|
|
22
34
|
})
|
|
23
35
|
}) {
|
|
24
36
|
function activeSettings() {
|
|
@@ -46,7 +58,20 @@ export function createSystemService({
|
|
|
46
58
|
return {
|
|
47
59
|
getSettings,
|
|
48
60
|
updateSettings,
|
|
49
|
-
resources: () => resourceMonitor.sample()
|
|
61
|
+
resources: () => resourceMonitor.sample(),
|
|
62
|
+
runtimeStatus: () => runtimeBroker.status(),
|
|
63
|
+
acquireRuntimeLease: (input) => runtimeBroker.acquire(input),
|
|
64
|
+
refreshRuntimeLease: (leaseId) => runtimeBroker.refresh(leaseId),
|
|
65
|
+
releaseRuntimeLease: (leaseId) => runtimeBroker.release(leaseId),
|
|
66
|
+
withGraphRuntimeLease: (owner, operation) => runtimeBroker.withLease(
|
|
67
|
+
{ kind: 'graph', owner },
|
|
68
|
+
operation
|
|
69
|
+
),
|
|
70
|
+
withExecutorRuntimeLease: (executorId, owner, operation) => runtimeBroker.withLease(
|
|
71
|
+
{ kind: 'executor', executorId, owner },
|
|
72
|
+
operation
|
|
73
|
+
),
|
|
74
|
+
close: () => runtimeBroker.close()
|
|
50
75
|
};
|
|
51
76
|
}
|
|
52
77
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Q as e,_ as t,a as n,b as r,f as i,j as a,k as o,m as s,p as c,tt as l,x as u}from"./i18n-CwqXDI1C.js";import{t as d}from"./fuli-logo-Bu9WBuQe.js";import{t as f}from"./_plugin-vue_export-helper-BDNMzG2s.js";var p=[`aria-label`],m={class:`label-dimension-strip`},h=[`data-dimension`],g={class:`label-guide-sheet`},_={class:`label-guide-section profile-guide`},v={class:`label-definition-list`},y=[`data-kind`],b={class:`label-guide-section quadrant-guide`},x={class:`quadrant-explainer`},S={class:`quadrant-y-axis`,"aria-hidden":`true`},C={class:`quadrant-grid`},w=[`data-quadrant`],T={class:`quadrant-x-axis`,"aria-hidden":`true`},E={class:`quadrant-notes`},D={class:`label-guide-section confirmation-guide`},O={class:`status-definition-list`},k=[`data-status`],A={class:`status-boundaries`},j={class:`label-example`},M={class:`label-example-tags`,"aria-hidden":`true`},N={class:`label-token profile-token`,"data-kind":`taste`},P={class:`label-token origin-token`},ee={class:`label-token status-token`,"data-status":`confirmed`},F={class:`label-all-note`},I=f(u({__name:`LabelGuide`,setup(r){let u=c(()=>[{key:`profile`,title:n(`about.dimensions.profile.title`),question:n(`about.dimensions.profile.question`),timing:n(`about.dimensions.profile.timing`)},{key:`origin`,title:n(`about.dimensions.origin.title`),question:n(`about.dimensions.origin.question`),timing:n(`about.dimensions.origin.timing`)},{key:`confirmation`,title:n(`about.dimensions.confirmation.title`),question:n(`about.dimensions.confirmation.question`),timing:n(`about.dimensions.confirmation.timing`)}]),d=c(()=>[{key:`taste`,label:n(`about.profiles.taste.label`),short:n(`about.profiles.taste.short`),description:n(`about.profiles.taste.description`)},{key:`personality`,label:n(`about.profiles.personality.label`),short:n(`about.profiles.personality.short`),description:n(`about.profiles.personality.description`)},{key:`judgment`,label:n(`about.profiles.judgment.label`),short:n(`about.profiles.judgment.short`),description:n(`about.profiles.judgment.description`)}]),f=c(()=>[{key:`known-unknown`,label:n(`about.quadrants.knownUnknown.label`),coordinate:n(`about.quadrants.knownUnknown.coordinate`),description:n(`about.quadrants.knownUnknown.description`)},{key:`known-known`,label:n(`about.quadrants.knownKnown.label`),coordinate:n(`about.quadrants.knownKnown.coordinate`),description:n(`about.quadrants.knownKnown.description`)},{key:`unknown-unknown`,label:n(`about.quadrants.unknownUnknown.label`),coordinate:n(`about.quadrants.unknownUnknown.coordinate`),description:n(`about.quadrants.unknownUnknown.description`)},{key:`unknown-known`,label:n(`about.quadrants.unknownKnown.label`),coordinate:n(`about.quadrants.unknownKnown.coordinate`),description:n(`about.quadrants.unknownKnown.description`)}]),I=c(()=>[{key:`pending`,label:n(`about.statuses.pending.label`),description:n(`about.statuses.pending.description`),rule:n(`about.statuses.pending.rule`)},{key:`agent-confirmed`,label:n(`about.statuses.agentConfirmed.label`),description:n(`about.statuses.agentConfirmed.description`),rule:n(`about.statuses.agentConfirmed.rule`)},{key:`confirmed`,label:n(`about.statuses.confirmed.label`),description:n(`about.statuses.confirmed.description`),rule:n(`about.statuses.confirmed.rule`)}]);return(r,c)=>(o(),t(`section`,{class:`label-guide`,"aria-label":e(n)(`about.labelsAria`)},[s(`div`,m,[(o(!0),t(i,null,a(u.value,e=>(o(),t(`article`,{key:e.key,"data-dimension":e.key},[c[0]||=s(`i`,{"aria-hidden":`true`},null,-1),s(`div`,null,[s(`strong`,null,l(e.title),1),s(`p`,null,l(e.question),1),s(`small`,null,l(e.timing),1)])],8,h))),128))]),s(`div`,g,[s(`section`,_,[s(`header`,null,[s(`span`,null,l(e(n)(`about.sections.profile.index`)),1),s(`div`,null,[s(`h3`,null,l(e(n)(`about.sections.profile.title`)),1),s(`p`,null,l(e(n)(`about.sections.profile.meta`)),1)])]),s(`div`,v,[(o(!0),t(i,null,a(d.value,e=>(o(),t(`article`,{key:e.key,class:`label-definition-row`},[s(`span`,{class:`label-token profile-token`,"data-kind":e.key},l(e.label),9,y),s(`div`,null,[s(`strong`,null,l(e.short),1),s(`p`,null,l(e.description),1)])]))),128))])]),s(`section`,b,[s(`header`,null,[s(`span`,null,l(e(n)(`about.sections.origin.index`)),1),s(`div`,null,[s(`h3`,null,l(e(n)(`about.sections.origin.title`)),1),s(`p`,null,l(e(n)(`about.sections.origin.meta`)),1)])]),s(`div`,x,[s(`div`,S,[s(`span`,null,l(e(n)(`about.quadrants.aware`)),1),s(`strong`,null,l(e(n)(`about.quadrants.awareness`)),1),s(`span`,null,l(e(n)(`about.quadrants.unaware`)),1)]),s(`div`,C,[(o(!0),t(i,null,a(f.value,e=>(o(),t(`article`,{key:e.key,"data-quadrant":e.key},[s(`span`,null,l(e.coordinate),1),s(`strong`,null,l(e.label),1),s(`p`,null,l(e.description),1)],8,w))),128))]),s(`div`,T,[s(`span`,null,l(e(n)(`about.quadrants.unmastered`)),1),s(`strong`,null,l(e(n)(`about.quadrants.mastery`)),1),s(`span`,null,l(e(n)(`about.quadrants.mastered`)),1)]),s(`div`,E,[s(`p`,null,l(e(n)(`about.quadrants.immutable`)),1),s(`p`,null,l(e(n)(`about.quadrants.unclassified`)),1)])])]),s(`section`,D,[s(`header`,null,[s(`span`,null,l(e(n)(`about.sections.confirmation.index`)),1),s(`div`,null,[s(`h3`,null,l(e(n)(`about.sections.confirmation.title`)),1),s(`p`,null,l(e(n)(`about.sections.confirmation.meta`)),1)])]),s(`div`,null,[s(`div`,O,[(o(!0),t(i,null,a(I.value,r=>(o(),t(`article`,{key:r.key,class:`status-definition-row`},[s(`span`,{class:`label-token status-token`,"data-status":r.key},l(r.label),9,k),s(`p`,null,l(r.description),1),s(`div`,null,[s(`span`,null,l(e(n)(`about.statuses.entryCondition`)),1),s(`strong`,null,l(r.rule),1)])]))),128))]),s(`div`,A,[s(`p`,null,l(e(n)(`about.statuses.usageBoundary`)),1),s(`p`,null,l(e(n)(`about.statuses.resetBoundary`)),1)])])]),s(`section`,j,[s(`div`,null,[s(`span`,null,l(e(n)(`about.example.title`)),1),s(`strong`,null,l(e(n)(`about.example.item`)),1)]),s(`div`,M,[s(`span`,N,l(e(n)(`about.example.profile`)),1),s(`span`,P,l(e(n)(`about.example.origin`)),1),s(`span`,ee,l(e(n)(`about.example.status`)),1)]),s(`p`,null,l(e(n)(`about.example.description`)),1)]),s(`p`,F,l(e(n)(`about.allFilter`)),1)])],8,p))}}),[[`__scopeId`,`data-v-b79b7e68`]]),L={class:`open-source-credits`},R={class:`credits-roll`},z={class:`credit-grid`},B=[`href`],V={class:`credit-mark`},H=[`src`,`alt`],U={class:`credit-copy`},W={class:`credit-source-note`},G={class:`fuli-finale`},K={class:`finale-brand`},q=[`src`],J=f(u({__name:`OpenSourceCredits`,setup(r){let u=c(()=>[{name:`Vue.js`,role:n(`about.credits.roles.vue`),logo:`https://raw.githubusercontent.com/vuejs/docs/main/src/public/logo.svg`,url:`https://vuejs.org/`},{name:`Vite`,role:n(`about.credits.roles.vite`),logo:`https://raw.githubusercontent.com/vitejs/vite/main/docs/public/logo-without-border.svg`,url:`https://vite.dev/`},{name:`Pinia`,role:n(`about.credits.roles.pinia`),logo:`https://raw.githubusercontent.com/vuejs/pinia/v4/packages/docs/public/logo.svg`,url:`https://pinia.vuejs.org/`},{name:`D3.js`,role:n(`about.credits.roles.d3`),logo:`https://raw.githubusercontent.com/d3/d3-logo/master/d3.svg`,url:`https://d3js.org/`},{name:`Vitest`,role:n(`about.credits.roles.vitest`),logo:`https://raw.githubusercontent.com/vitest-dev/vitest/main/docs/public/logo-without-border.svg`,url:`https://vitest.dev/`},{name:`Hono`,role:n(`about.credits.roles.hono`),logo:`https://raw.githubusercontent.com/honojs/website/main/public/images/logo.svg`,url:`https://hono.dev/`},{name:`Neo4j`,role:n(`about.credits.roles.neo4j`),logo:`https://avatars.githubusercontent.com/u/201120?v=4`,url:`https://neo4j.com/`},{name:`Zod`,role:n(`about.credits.roles.zod`),logo:`https://raw.githubusercontent.com/colinhacks/zod/main/packages/docs/public/logo/logo_square.png`,url:`https://zod.dev/`},{name:`FastAPI`,role:n(`about.credits.roles.fastapi`),logo:`https://raw.githubusercontent.com/fastapi/fastapi/master/docs/en/docs/img/favicon.png`,url:`https://fastapi.tiangolo.com/`},{name:`Graphiti`,role:n(`about.credits.roles.graphiti`),logo:`https://avatars.githubusercontent.com/u/132832125?s=128&v=4`,url:`https://github.com/getzep/graphiti`},{name:`Model Context Protocol`,role:n(`about.credits.roles.mcp`),logo:`https://raw.githubusercontent.com/modelcontextprotocol/docs/main/favicon.svg`,url:`https://modelcontextprotocol.io/`}]);return(r,c)=>(o(),t(`section`,L,[s(`div`,R,[s(`header`,null,[s(`h3`,null,l(e(n)(`about.credits.title`)),1),s(`p`,null,l(e(n)(`about.credits.description`)),1)]),s(`div`,z,[(o(!0),t(i,null,a(u.value,e=>(o(),t(`a`,{key:e.name,href:e.url,target:`_blank`,rel:`noreferrer`},[s(`span`,V,[s(`img`,{src:e.logo,alt:e.name},null,8,H)]),s(`span`,U,[s(`strong`,null,l(e.name),1),s(`small`,null,l(e.role),1)])],8,B))),128))]),s(`p`,W,l(e(n)(`about.credits.sourceNote`)),1)]),s(`footer`,G,[s(`div`,K,[s(`img`,{src:e(d),alt:``,"aria-hidden":`true`},null,8,q),s(`div`,null,[s(`strong`,null,l(e(n)(`common.brand`)),1),c[0]||=s(`span`,null,`Context Graph`,-1)])]),s(`p`,null,l(e(n)(`about.credits.finale`)),1)])]))}}),[[`__scopeId`,`data-v-8676884b`]]),Y={class:`product-principles`},X={class:`principles-lede`},Z={class:`principle-sequence`},Q={class:`principle-boundaries`},$=[`data-boundary`],te=f(u({__name:`ProductPrinciples`,setup(r){let u=c(()=>[{key:`capture`,index:n(`about.philosophy.capture.index`),title:n(`about.philosophy.capture.title`),description:n(`about.philosophy.capture.description`)},{key:`project`,index:n(`about.philosophy.project.index`),title:n(`about.philosophy.project.title`),description:n(`about.philosophy.project.description`)},{key:`review`,index:n(`about.philosophy.review.index`),title:n(`about.philosophy.review.title`),description:n(`about.philosophy.review.description`)},{key:`reuse`,index:n(`about.philosophy.reuse.index`),title:n(`about.philosophy.reuse.title`),description:n(`about.philosophy.reuse.description`)}]),d=c(()=>[{key:`local`,title:n(`about.philosophy.local.title`),description:n(`about.philosophy.local.description`)},{key:`authority`,title:n(`about.philosophy.authority.title`),description:n(`about.philosophy.authority.description`)},{key:`scope`,title:n(`about.philosophy.scope.title`),description:n(`about.philosophy.scope.description`)}]);return(r,c)=>(o(),t(`section`,Y,[s(`header`,X,[s(`h3`,null,l(e(n)(`about.philosophy.title`)),1),s(`p`,null,l(e(n)(`about.philosophy.intro`)),1),s(`p`,null,l(e(n)(`about.philosophy.support`)),1)]),s(`div`,Z,[(o(!0),t(i,null,a(u.value,e=>(o(),t(`article`,{key:e.key},[s(`span`,null,l(e.index),1),s(`div`,null,[s(`h4`,null,l(e.title),1),s(`p`,null,l(e.description),1)])]))),128))]),s(`div`,Q,[s(`strong`,null,l(e(n)(`about.philosophy.boundariesTitle`)),1),s(`div`,null,[(o(!0),t(i,null,a(d.value,e=>(o(),t(`article`,{key:e.key},[s(`i`,{"data-boundary":e.key,"aria-hidden":`true`},null,8,$),s(`h4`,null,l(e.title),1),s(`p`,null,l(e.description),1)]))),128))])])]))}}),[[`__scopeId`,`data-v-d823b02d`]]),ne=[`aria-label`],re={class:`about-content`},ie={class:`about-labels-section`},ae=f(u({__name:`AboutPage`,setup(i){return(i,a)=>(o(),t(`section`,{class:`view about-view`,"aria-label":e(n)(`about.aria`)},[s(`div`,re,[r(te),s(`section`,ie,[s(`header`,null,[s(`h3`,null,l(e(n)(`about.labelsIntro.title`)),1),s(`p`,null,l(e(n)(`about.labelsIntro.description`)),1)]),r(I)]),r(J)])],8,ne))}}),[[`__scopeId`,`data-v-6bd30c79`]]);export{ae as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,D as t,E as n,F as r,G as i,O as ee,P as a,Q as o,R as s,T as c,_ as l,a as u,b as d,d as f,f as p,g as m,h,j as g,k as _,m as v,n as te,p as y,q as b,tt as x,u as S,x as C,y as w}from"./i18n-CwqXDI1C.js";import{a as T,i as E,n as D,r as O,t as k}from"./console-D_2zC4lm.js";import{t as A}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as j}from"./SearchableSelect-B3-5IPup.js";import{r as M,t as N}from"./identity-DmGcY3Y6.js";var P=[`data-select-id`],F=[`aria-expanded`,`aria-controls`,`aria-label`,`aria-required`,`disabled`],I={class:`searchable-select-current`},L={class:`searchable-select-current-label`},ne={key:0,class:`searchable-select-current-meta`},re=[`hidden`],ie={key:0,class:`searchable-select-search`},ae=[`placeholder`,`aria-label`],R=[`id`],z=[`aria-selected`,`disabled`,`onClick`],oe={class:`searchable-select-option-copy`},se={key:0},ce={key:1,class:`searchable-select-empty`},le=C({__name:`SearchableMultiSelect`,props:{modelValue:{},options:{},label:{},controlId:{default:void 0},placeholder:{default:void 0},searchPlaceholder:{default:void 0},searchable:{type:Boolean,default:void 0},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1}},emits:[`update:modelValue`,`change`],setup(i,{emit:c}){let d=i,h=c,C=b(null),w=b(null),T=b(null),E=b(null),D=b(!1),O=b(!1),k=b(``),A=a().replace(/[^A-Za-z0-9_-]/g,``),j=y(()=>`${d.controlId||`searchable-multi-select-${A}`}-options`),M=y(()=>new Set(d.modelValue)),N=y(()=>d.options.filter(({value:e})=>M.value.has(e))),le=y(()=>N.value.length===0?d.placeholder??u(`common.searchableSelect.placeholder`):N.value.length===1?N.value[0].label:u(`common.searchableSelect.selectedCount`,{count:N.value.length})),B=y(()=>d.searchPlaceholder??u(`common.searchableSelect.searchPlaceholder`)),V=y(()=>d.searchable??d.options.length>5),H=y(()=>{let e=te(),t=k.value.trim().toLocaleLowerCase(e);return t?d.options.filter(n=>[n.label,n.value,n.meta,n.search].filter(Boolean).join(` `).toLocaleLowerCase(e).includes(t)):d.options});r(()=>d.disabled,e=>{e&&W()}),ee(()=>document.addEventListener(`pointerdown`,he)),t(()=>document.removeEventListener(`pointerdown`,he));async function U(){D.value?W():await ue()}async function ue(){d.disabled||(k.value=``,ve(),D.value=!0,await n(),V.value?T.value?.focus():_e()?.focus())}function W({restoreFocus:e=!1}={}){D.value=!1,O.value=!1,k.value=``,e&&n(()=>w.value?.focus())}function de(e){if(d.disabled||e.disabled)return;let t=M.value.has(e.value)?d.modelValue.filter(t=>t!==e.value):[...d.modelValue,e.value];h(`update:modelValue`,t),h(`change`,t)}function fe(e){[`ArrowDown`,`Enter`,` `].includes(e.key)&&(e.preventDefault(),D.value&&[`Enter`,` `].includes(e.key)?W():ue())}function pe(e){if(e.key===`Escape`){e.preventDefault(),W({restoreFocus:!0});return}if(e.key===`ArrowDown`){e.preventDefault(),K()?.focus();return}e.key===`Enter`&&(e.preventDefault(),K()?.click())}function me(e){if(e.key===`Escape`){e.preventDefault(),W({restoreFocus:!0});return}if(![`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key))return;e.preventDefault();let t=G(),n=t.indexOf(e.currentTarget);t[e.key===`Home`?0:e.key===`End`?t.length-1:e.key===`ArrowDown`?Math.min(t.length-1,n+1):Math.max(0,n-1)]?.focus()}function he(e){D.value&&!C.value?.contains(e.target)&&W()}function ge(e){let t=e.relatedTarget;t&&C.value?.contains(t)||queueMicrotask(()=>{D.value&&!C.value?.contains(document.activeElement)&&W()})}function G(){return[...E.value?.querySelectorAll(`.searchable-select-option:not(:disabled)`)??[]]}function K(){return G()[0]??null}function _e(){return G().find(e=>e.getAttribute(`aria-selected`)===`true`)??K()}function ve(){let e=w.value?.getBoundingClientRect();O.value=!!(e&&window.innerHeight-e.bottom<270&&e.top>270)}return(t,n)=>(_(),l(`div`,{ref_key:`root`,ref:C,class:e([`searchable-select searchable-multi-select`,{open:D.value,"open-up":O.value,disabled:i.disabled}]),"data-select-id":i.controlId,onFocusout:ge},[v(`button`,{ref_key:`trigger`,ref:w,type:`button`,class:`searchable-select-trigger`,role:`combobox`,"aria-haspopup":`listbox`,"aria-expanded":D.value,"aria-controls":j.value,"aria-label":i.label,"aria-required":i.required,disabled:i.disabled,onPointerdown:n[0]||=f(()=>{},[`stop`]),onClick:f(U,[`stop`]),onKeydown:fe},[v(`span`,I,[v(`span`,L,x(le.value),1),N.value.length>1?(_(),l(`small`,ne,x(N.value.map(({label:e})=>e).join(` · `)),1)):m(``,!0)]),n[3]||=v(`i`,{class:`searchable-select-arrow`,"aria-hidden":`true`},null,-1)],40,F),v(`div`,{class:`searchable-select-panel`,hidden:!D.value},[V.value?(_(),l(`div`,ie,[s(v(`input`,{ref_key:`searchInput`,ref:T,"onUpdate:modelValue":n[1]||=e=>k.value=e,type:`search`,autocomplete:`off`,placeholder:B.value,"aria-label":o(u)(`common.searchableSelect.searchAria`,{label:i.label}),onKeydown:pe},null,40,ae),[[S,k.value]])])):m(``,!0),v(`div`,{id:j.value,ref_key:`optionsList`,ref:E,class:`searchable-select-options`,role:`listbox`,"aria-multiselectable":`true`},[(_(!0),l(p,null,g(H.value,e=>(_(),l(`button`,{key:e.value,type:`button`,class:`searchable-select-option`,role:`option`,"aria-selected":M.value.has(e.value),disabled:e.disabled,onMousedown:n[2]||=f(()=>{},[`prevent`]),onClick:t=>de(e),onKeydown:me},[v(`span`,oe,[v(`strong`,null,x(e.label),1),e.meta?(_(),l(`small`,se,x(e.meta),1)):m(``,!0)]),n[4]||=v(`i`,{class:`searchable-select-check`,"aria-hidden":`true`},null,-1)],40,z))),128))],8,R),H.value.length===0?(_(),l(`p`,ce,x(o(u)(`common.searchableSelect.noMatches`)),1)):m(``,!0)],8,re)],42,P))}}),B={class:`text-field`},V=[`id`,`value`,`name`,`placeholder`,`disabled`,`required`,`rows`],H=[`id`,`value`,`name`,`type`,`placeholder`,`disabled`,`required`],U=A(C({inheritAttrs:!1,__name:`TextField`,props:{modelValue:{},label:{},controlId:{default:void 0},type:{default:`text`},placeholder:{default:void 0},disabled:{type:Boolean,default:!1},required:{type:Boolean,default:!1},multiline:{type:Boolean,default:!1},rows:{default:3},name:{default:void 0}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=t;function r(e){n(`update:modelValue`,e.target.value)}return(t,n)=>(_(),l(`label`,B,[v(`span`,null,x(e.label),1),e.multiline?(_(),l(`textarea`,c({key:0},t.$attrs,{id:e.controlId,value:e.modelValue,name:e.name,placeholder:e.placeholder,disabled:e.disabled,required:e.required,rows:e.rows,onInput:r}),null,16,V)):(_(),l(`input`,c({key:1},t.$attrs,{id:e.controlId,value:e.modelValue,name:e.name,type:e.type,placeholder:e.placeholder,disabled:e.disabled,required:e.required,onInput:r}),null,16,H))]))}}),[[`__scopeId`,`data-v-6c32205a`]]),ue={class:`view connections-view`},W={class:`connection-intro`},de=[`aria-label`],fe=[`data-status`],pe={class:`service-state`},me=[`data-status`],he={class:`connection-title-row`},ge={class:`service-state`},G={class:`external-knowledge-section`},K={class:`section-title section-title-with-help`},_e=[`href`,`aria-label`,`title`],ve={class:`external-binding-count`},ye={class:`external-binding-list`},be=[`data-status`],xe={class:`external-binding-copy`},Se={class:`external-binding-targets`},Ce=[`data-status`],we={key:0},Te={key:1},Ee={class:`external-binding-actions`},De=[`disabled`,`onClick`],Oe=[`disabled`,`onClick`],ke=[`disabled`,`onClick`],Ae=[`disabled`,`onClick`],je={key:0,class:`external-binding-editor`},Me={class:`external-target-mode-list`},Ne={class:`external-binding-editor-actions`},Pe=[`disabled`],Fe=[`disabled`,`onClick`],Ie={key:0,class:`compact-empty`},Le={class:`wide-field`},Re={class:`trusted-code-badge`},ze=[`disabled`],Be={key:0,class:`conflict-policy-section`},Ve={class:`section-title section-title-with-help`},He=[`href`,`aria-label`,`title`],Ue={class:`conflict-policy-controls`},We={key:1,class:`connection-subscriptions`},Ge={class:`section-title`},Ke={class:`subscription-list`},qe=[`onClick`],Je={key:0,class:`empty-state`},Ye={type:`submit`},q=C({__name:`ConnectionsPage`,setup(e){let t=k(),n=b(``),a=b([]),s=b([]),c=b(!1),S=b(null),C=b([]),A=b({}),P=b(``),F=b(`ask_human`),I=b(!1),L=i({name:``,connectorType:`mcp`,mode:`hybrid`,personalProjectIds:[],mcpTransport:`http`,mcpUrl:``,mcpCommand:``,mcpArgs:``,mcpTokenEnv:``,mcpResourcePrefix:``,notionTokenEnv:``,notionPageIds:``,notionDataSourceIds:``,feishuTokenEnv:``,feishuRegion:`cn`,feishuSpaceId:``,feishuRootNodeToken:``,feishuNodeTokens:``,feishuWebBaseUrl:``,retrievalUrl:``,retrievalTokenEnv:``,retrievalKnowledgeIds:``,retrievalScoreThreshold:`0.5`,customModule:``,customEnvironmentNames:``,customSourceJson:`{}`}),ne=y(()=>t.state?.providers?.personal?.status===`ready`),re=y(()=>t.state?.providers?.workspaces??[]),ie=y(()=>re.value.filter(({status:e})=>e===`ready`).length),ae=y(()=>{let e=t.state?.capabilities,n=[e?.browsePublicProjects?u(`pages.connections.publicCapability.discovery`):null,e?.subscribeProject?u(`pages.connections.publicCapability.subscription`):null,e?.publishProject?u(`pages.connections.publicCapability.publishing`):null,e?.submitKnowledge?u(`pages.connections.publicCapability.contribution`):null,e?.reviewProposals?u(`pages.connections.publicCapability.review`):null].filter(e=>!!e);return n.length?new Intl.ListFormat(te(),{style:`long`,type:`conjunction`}).format(n):u(`pages.connections.notAvailable`)}),R=y(()=>t.state?.subscriptions??[]),z=y(()=>t.state?.personalProjects??[]),oe=y(()=>wt(`connect-external-knowledge`)),se=y(()=>wt(`external-knowledge-conflict-policy`)),ce=y(()=>new Set(R.value.map(({provider_url:e,project_id:t})=>`${e}::${t}`))),B=y(()=>(t.state?.projects??[]).filter(e=>!ce.value.has(et(e)))),V=y(()=>B.value.map(e=>({value:et(e),label:e.name,meta:`#${N(e.id,26)}`,search:M(e.id)}))),H=y(()=>a.value.map(e=>({value:e.type,label:e.name,meta:e.description}))),q=y(()=>z.value.map(e=>({value:e.project_id,label:e.profile.name,meta:`#${N(e.project_id,26)}`,search:M(e.project_id)}))),Xe=y(()=>[{value:`hybrid`,label:u(`pages.connections.mode.hybrid`),disabled:!Y(L.connectorType,`hybrid`)},{value:`mirror`,label:u(`pages.connections.mode.mirror`),disabled:!Y(L.connectorType,`mirror`)},{value:`live`,label:u(`pages.connections.mode.live`),disabled:!Y(L.connectorType,`live`)}]),Ze=y(()=>[{value:`http`,label:`Streamable HTTP`},{value:`stdio`,label:`stdio`}]),Qe=y(()=>[{value:`cn`,label:`Feishu`},{value:`global`,label:`Lark`}]),$e=y(()=>[{value:`ask_human`,label:u(`pages.connections.askHuman`)},{value:`agent_decide`,label:u(`pages.connections.agentDecide`)}]);r(z,e=>{let t=new Set(e.map(({project_id:e})=>e)),n=e[0]?.project_id??``;L.personalProjectIds=L.personalProjectIds.filter(e=>t.has(e)),!L.personalProjectIds.length&&n&&(L.personalProjectIds=[n]),C.value=C.value.filter(e=>t.has(e)),t.has(P.value)||(P.value=n,n&&mt())},{immediate:!0}),r(()=>L.connectorType,e=>{Y(e,L.mode)||(L.mode=_t(e))}),ee(async()=>{await J(),P.value&&await mt()});function et(e){return`${e.providerUrl}::${e.id}`}async function tt(){let e=B.value.find(e=>et(e)===n.value);if(e)try{await T(`/api/subscriptions`,{personalSpaceId:t.activePersonalSpace?.id,projectId:e.id,providerUrl:e.providerUrl,projectName:e.name}),n.value=``,t.notify(u(`pages.connections.subscribed`,{name:e.name})),await t.refresh()}catch(e){t.reportError(e)}}async function nt(e){try{let n=new URLSearchParams({personalSpaceId:t.activePersonalSpace?.id??``,providerUrl:e.provider_url});await D(`/api/subscriptions/${encodeURIComponent(e.project_id)}?${n}`),t.notify(u(`pages.connections.unsubscribed`,{name:e.project_name??e.project_id})),await t.refresh()}catch(e){t.reportError(e)}}async function J(){try{let[e,t]=await Promise.all([O(`/api/external-knowledge/connectors`),O(`/api/external-knowledge/bindings`)]);a.value=e,s.value=t}catch(e){t.reportError(e)}}async function rt(){let e=t.activePersonalSpace?.id;if(!(!e||!L.personalProjectIds.length)){c.value=!0;try{let{connectorConfig:n,source:r}=it();await T(`/api/external-knowledge/bindings`,{name:L.name.trim(),connectorType:L.connectorType,connectorConfig:n,source:r,targets:L.personalProjectIds.map(t=>({personalSpaceId:e,personalProjectId:t,mode:L.mode}))}),t.notify(u(`pages.connections.externalCreated`,{name:L.name.trim()})),L.name=``,await J()}catch(e){t.reportError(e)}finally{c.value=!1}}}function it(){if(L.connectorType===`notion`)return{connectorConfig:{tokenEnv:$(L.notionTokenEnv,`Notion token env`)},source:{pageIds:Z(L.notionPageIds),dataSourceIds:Z(L.notionDataSourceIds)}};if(L.connectorType===`feishu`)return{connectorConfig:{accessTokenEnv:$(L.feishuTokenEnv,`Feishu token env`),region:L.feishuRegion},source:Q({spaceId:L.feishuSpaceId.trim(),rootNodeToken:L.feishuRootNodeToken.trim(),nodeTokens:Z(L.feishuNodeTokens),webBaseUrl:L.feishuWebBaseUrl.trim()})};if(L.connectorType===`retrieval_api`){let e=Number(L.retrievalScoreThreshold);if(!Number.isFinite(e)||e<0||e>1)throw TypeError(u(`pages.connections.scoreThresholdInvalid`));return{connectorConfig:Q({url:$(L.retrievalUrl,`Retrieval API URL`),tokenEnv:L.retrievalTokenEnv.trim(),scoreThreshold:e}),source:{knowledgeIds:Ct(L.retrievalKnowledgeIds,`Knowledge IDs`)}}}if(L.connectorType===`custom`){let e=JSON.parse(L.customSourceJson);if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(u(`pages.connections.customSourceObject`));return{connectorConfig:{module:$(L.customModule,`Custom connector module`),environmentNames:Z(L.customEnvironmentNames)},source:e}}return{connectorConfig:L.mcpTransport===`stdio`?Q({transport:`stdio`,command:L.mcpCommand.trim(),args:Z(L.mcpArgs)}):Q({transport:`http`,url:$(L.mcpUrl,`MCP URL`),tokenEnv:L.mcpTokenEnv.trim()}),source:Q({resourceUriPrefix:L.mcpResourcePrefix.trim()})}}async function at(e){await st(e,`check`)}async function ot(e){await st(e,`sync`)}async function st(e,n){c.value=!0;try{let r=await T(`/api/external-knowledge/bindings/${encodeURIComponent(e.id)}/${n}`,{});t.notify(u(n===`sync`&&r.skippedCredentials?`pages.connections.externalSyncedWithSkipped`:n===`sync`?`pages.connections.externalSynced`:`pages.connections.externalChecked`,{name:e.name,count:r.skippedCredentials??0})),await J()}catch(e){t.reportError(e)}finally{c.value=!1}}async function ct(e){c.value=!0;try{await D(`/api/external-knowledge/bindings/${encodeURIComponent(e.id)}`),t.notify(u(`pages.connections.externalDeleted`,{name:e.name})),await J()}catch(e){t.reportError(e)}finally{c.value=!1}}function lt(e){let t=X(e);S.value=e.id,C.value=t.map(({personalProjectId:e})=>e),A.value=Object.fromEntries(t.map(({personalProjectId:e,mode:t})=>[e,t]))}function ut(){S.value=null,C.value=[],A.value={}}function dt(e){let t=s.value.find(({id:e})=>e===S.value);if(!t)return;let n=A.value,r=_t(t.connectorType);A.value=Object.fromEntries(e.map(e=>[e,n[e]??t.mode??r]))}function ft(e,t){A.value={...A.value,[e]:t}}async function pt(e){let n=t.activePersonalSpace?.id;if(!(!n||!C.value.length)){c.value=!0;try{await E(`/api/external-knowledge/bindings/${encodeURIComponent(e.id)}/targets`,{targets:C.value.map(t=>({personalSpaceId:n,personalProjectId:t,mode:A.value[t]??e.mode}))}),t.notify(u(`pages.connections.projectsUpdated`,{name:e.name})),ut(),await J()}catch(e){t.reportError(e)}finally{c.value=!1}}}async function mt(){if(P.value)try{let e=await O(`/api/external-knowledge/conflict-policy?${new URLSearchParams({personalProjectId:P.value})}`);F.value=e.mode}catch(e){t.reportError(e)}}async function ht(){let e=t.activePersonalSpace?.id;if(!(!e||!P.value)){I.value=!0;try{let n=await E(`/api/external-knowledge/conflict-policy?${new URLSearchParams({personalProjectId:P.value})}`,{personalSpaceId:e,personalProjectId:P.value,mode:F.value});F.value=n.mode,t.notify(u(`pages.connections.conflictSaved`))}catch(e){t.reportError(e)}finally{I.value=!1}}}function gt(e){return a.value.find(t=>t.type===e)?.name??e}function Y(e,t){let n=a.value.find(t=>t.type===e)?.capabilities;return!n?.length||(t===`live`||t===`hybrid`?n.includes(`retrieve`):!0)&&(t===`mirror`||t===`hybrid`?n.includes(`sync`):!0)}function _t(e){return[`hybrid`,`mirror`,`live`].find(t=>Y(e,t))??`live`}function vt(e){return[`hybrid`,`mirror`,`live`].map(t=>({value:t,label:u(`pages.connections.mode.${t}`),disabled:!Y(e,t)}))}function X(e){return e.targets?.length?e.targets:[{id:e.id,...e.target,mode:e.mode,status:e.status,sync:e.sync}]}function yt(e){return X(e).some(({mode:e})=>e!==`live`)}function bt(e){return z.value.find(({project_id:t})=>t===e)?.profile.name??e}function xt(e){return X(e).find(({sync:e})=>e?.error)?.sync?.error??e.sync?.error}function St(e){return X(e).reduce((e,t)=>e+(t.sync?.skippedCredentials??0),0)}function Z(e){return[...new Set(e.split(`,`).map(e=>e.trim()).filter(Boolean))]}function Ct(e,t){let n=Z(e);if(!n.length)throw TypeError(`${t} is required`);return n}function Q(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==``&&(!Array.isArray(e)||e.length>0)))}function $(e,t){if(!e.trim())throw TypeError(`${t} is required`);return e.trim()}function wt(e){return`https://github.com/JevonsCode/fuli/blob/main/${te()===`zh-CN`?`README.zh-CN.md`:`README.md`}#${e}`}return(e,r)=>(_(),l(`section`,ue,[v(`div`,W,[v(`h3`,null,x(o(u)(`pages.connections.title`)),1)]),v(`div`,{class:`service-connection-grid`,"aria-label":o(u)(`pages.connections.statusAria`)},[v(`article`,{class:`service-connection-card`,"data-status":ne.value?`ready`:`error`},[v(`header`,null,[r[30]||=v(`span`,{class:`service-connection-icon local`,"aria-hidden":`true`},[v(`span`,{class:`nav-icon nav-icon-personal-project`})],-1),v(`div`,null,[v(`h3`,null,x(o(u)(`pages.connections.localGraphiti`)),1)]),v(`span`,pe,x(ne.value?o(u)(`common.status.connected`):o(u)(`common.status.connectionError`)),1)]),v(`dl`,null,[v(`div`,null,[v(`dt`,null,x(o(u)(`pages.connections.storage`)),1),r[31]||=v(`dd`,null,`Neo4j`,-1)]),v(`div`,null,[v(`dt`,null,x(o(u)(`pages.connections.purpose`)),1),v(`dd`,null,x(o(u)(`pages.connections.localPurpose`)),1)])])],8,fe),v(`article`,{class:`service-connection-card`,"data-status":o(t).publicRuntimeStatus},[v(`header`,null,[r[33]||=v(`span`,{class:`service-connection-icon public`,"aria-hidden":`true`},[v(`span`,{class:`nav-icon nav-icon-public-project`})],-1),v(`div`,he,[v(`h3`,null,x(o(u)(`pages.connections.publicService`)),1),r[32]||=v(`span`,{class:`feature-badge beta`},`BETA`,-1)]),v(`span`,ge,x(o(t).publicRuntimeStatus===`ready`?o(u)(`common.status.connected`):o(t).publicRuntimeStatus===`error`?o(u)(`common.status.connectionError`):o(u)(`common.status.notConnected`)),1)]),v(`dl`,null,[v(`div`,null,[v(`dt`,null,x(o(u)(`pages.connections.currentStatus`)),1),v(`dd`,null,x(o(t).publicRuntimeStatus===`ready`?o(u)(`pages.connections.sharedServicesReady`,{count:ie.value||re.value.length}):o(u)(`pages.connections.notAvailable`)),1)]),v(`div`,null,[v(`dt`,null,x(o(u)(`pages.connections.purpose`)),1),v(`dd`,null,x(ae.value),1)])])],8,me)],8,de),v(`section`,G,[v(`div`,K,[v(`h3`,null,x(o(u)(`pages.connections.externalTitle`)),1),v(`a`,{class:`section-help-link`,"data-testid":`external-knowledge-help`,href:oe.value,"aria-label":o(u)(`pages.connections.externalHelp`),title:o(u)(`pages.connections.externalHelp`),target:`_blank`,rel:`noreferrer`},`?`,8,_e),v(`span`,ve,x(o(u)(`pages.connections.bindingCount`,{count:s.value.length})),1)]),v(`div`,ye,[(_(!0),l(p,null,g(s.value,e=>(_(),l(`article`,{key:e.id,class:`external-binding-row`,"data-status":e.status},[r[34]||=v(`i`,{"aria-hidden":`true`},null,-1),v(`div`,xe,[v(`strong`,null,x(e.name),1),v(`span`,null,x(gt(e.connectorType)),1),v(`div`,Se,[v(`b`,null,x(o(u)(`pages.connections.boundTo`)),1),(_(!0),l(p,null,g(X(e),e=>(_(),l(`span`,{key:e.id,class:`external-binding-target-chip`,"data-status":e.status},x(bt(e.personalProjectId))+` · `+x(o(u)(`pages.connections.mode.${e.mode}`)),9,Ce))),128))]),xt(e)?(_(),l(`small`,we,x(xt(e)),1)):St(e)?(_(),l(`small`,Te,x(o(u)(`pages.connections.credentialsSkipped`,{count:St(e)})),1)):m(``,!0)]),v(`div`,Ee,[v(`button`,{class:`quiet-button`,type:`button`,disabled:c.value,onClick:t=>at(e)},x(o(u)(`pages.connections.check`)),9,De),v(`button`,{class:`quiet-button external-sync-action`,type:`button`,disabled:c.value||!yt(e),onClick:t=>ot(e)},x(o(u)(`pages.connections.sync`)),9,Oe),v(`button`,{class:`quiet-button`,type:`button`,disabled:c.value,onClick:t=>lt(e)},x(o(u)(`pages.connections.manageProjects`)),9,ke),v(`button`,{class:`quiet-button danger`,type:`button`,disabled:c.value,onClick:t=>ct(e)},x(o(u)(`pages.connections.disconnect`)),9,Ae)]),S.value===e.id?(_(),l(`div`,je,[v(`label`,null,[v(`span`,null,x(o(u)(`pages.connections.targetProjects`)),1),d(le,{modelValue:C.value,"onUpdate:modelValue":r[0]||=e=>C.value=e,"control-id":`external-projects-${e.id}`,label:o(u)(`pages.connections.targetProjects`),options:q.value,disabled:c.value,required:``,searchable:``,onChange:dt},null,8,[`modelValue`,`control-id`,`label`,`options`,`disabled`])]),v(`div`,Me,[(_(!0),l(p,null,g(C.value,t=>(_(),l(`div`,{key:t,class:`external-target-mode-row`},[v(`span`,null,x(bt(t)),1),d(j,{"model-value":A.value[t]??e.mode,"control-id":`external-target-mode-${e.id}-${t}`,label:o(u)(`pages.connections.bindingMode`),options:vt(e.connectorType),disabled:c.value,"onUpdate:modelValue":e=>ft(t,e)},null,8,[`model-value`,`control-id`,`label`,`options`,`disabled`,`onUpdate:modelValue`])]))),128))]),v(`div`,Ne,[v(`button`,{class:`quiet-button`,type:`button`,disabled:c.value,onClick:ut},x(o(u)(`common.actions.cancel`)),9,Pe),v(`button`,{class:`primary-action`,type:`button`,disabled:c.value||!C.value.length,onClick:t=>pt(e)},x(o(u)(`pages.connections.saveProjects`)),9,Fe)])])):m(``,!0)],8,be))),128)),s.value.length?m(``,!0):(_(),l(`div`,Ie,x(o(u)(`pages.connections.noExternalBindings`)),1))]),v(`form`,{class:`external-binding-form`,onSubmit:f(rt,[`prevent`])},[d(U,{modelValue:L.name,"onUpdate:modelValue":r[1]||=e=>L.name=e,label:o(u)(`pages.connections.bindingName`),"data-testid":`external-name`,required:``},null,8,[`modelValue`,`label`]),v(`label`,null,[v(`span`,null,x(o(u)(`pages.connections.connector`)),1),d(j,{modelValue:L.connectorType,"onUpdate:modelValue":r[2]||=e=>L.connectorType=e,"control-id":`external-connector`,label:o(u)(`pages.connections.connector`),options:H.value,disabled:c.value,required:``},null,8,[`modelValue`,`label`,`options`,`disabled`])]),v(`label`,null,[v(`span`,null,x(o(u)(`pages.connections.targetProjects`)),1),d(le,{modelValue:L.personalProjectIds,"onUpdate:modelValue":r[3]||=e=>L.personalProjectIds=e,"control-id":`external-projects`,label:o(u)(`pages.connections.targetProjects`),options:q.value,disabled:c.value,required:``,searchable:``},null,8,[`modelValue`,`label`,`options`,`disabled`])]),v(`label`,null,[v(`span`,null,x(o(u)(`pages.connections.bindingMode`)),1),d(j,{modelValue:L.mode,"onUpdate:modelValue":r[4]||=e=>L.mode=e,"control-id":`external-binding-mode`,label:o(u)(`pages.connections.bindingMode`),options:Xe.value,disabled:c.value,required:``},null,8,[`modelValue`,`label`,`options`,`disabled`])]),L.connectorType===`mcp`?(_(),l(p,{key:0},[v(`label`,null,[v(`span`,null,x(o(u)(`pages.connections.transport`)),1),d(j,{modelValue:L.mcpTransport,"onUpdate:modelValue":r[5]||=e=>L.mcpTransport=e,"control-id":`external-mcp-transport`,label:o(u)(`pages.connections.transport`),options:Ze.value,disabled:c.value,required:``},null,8,[`modelValue`,`label`,`options`,`disabled`])]),L.mcpTransport===`http`?(_(),h(U,{key:0,modelValue:L.mcpUrl,"onUpdate:modelValue":r[6]||=e=>L.mcpUrl=e,label:`MCP URL`,"data-testid":`mcp-url`,type:`url`,required:``},null,8,[`modelValue`])):(_(),h(U,{key:1,modelValue:L.mcpCommand,"onUpdate:modelValue":r[7]||=e=>L.mcpCommand=e,label:o(u)(`pages.connections.command`),required:``},null,8,[`modelValue`,`label`])),L.mcpTransport===`stdio`?(_(),h(U,{key:2,modelValue:L.mcpArgs,"onUpdate:modelValue":r[8]||=e=>L.mcpArgs=e,label:o(u)(`pages.connections.arguments`)},null,8,[`modelValue`,`label`])):(_(),h(U,{key:3,modelValue:L.mcpTokenEnv,"onUpdate:modelValue":r[9]||=e=>L.mcpTokenEnv=e,label:o(u)(`pages.connections.tokenEnv`),"data-testid":`mcp-token-env`},null,8,[`modelValue`,`label`])),d(U,{modelValue:L.mcpResourcePrefix,"onUpdate:modelValue":r[10]||=e=>L.mcpResourcePrefix=e,label:o(u)(`pages.connections.resourcePrefix`),"data-testid":`mcp-resource-prefix`},null,8,[`modelValue`,`label`])],64)):L.connectorType===`notion`?(_(),l(p,{key:1},[d(U,{modelValue:L.notionTokenEnv,"onUpdate:modelValue":r[11]||=e=>L.notionTokenEnv=e,label:o(u)(`pages.connections.tokenEnv`),required:``},null,8,[`modelValue`,`label`]),d(U,{modelValue:L.notionPageIds,"onUpdate:modelValue":r[12]||=e=>L.notionPageIds=e,label:`Page IDs`},null,8,[`modelValue`]),d(U,{modelValue:L.notionDataSourceIds,"onUpdate:modelValue":r[13]||=e=>L.notionDataSourceIds=e,label:`Data Source IDs`},null,8,[`modelValue`])],64)):L.connectorType===`feishu`?(_(),l(p,{key:2},[d(U,{modelValue:L.feishuTokenEnv,"onUpdate:modelValue":r[14]||=e=>L.feishuTokenEnv=e,label:o(u)(`pages.connections.tokenEnv`),required:``},null,8,[`modelValue`,`label`]),v(`label`,null,[v(`span`,null,x(o(u)(`pages.connections.region`)),1),d(j,{modelValue:L.feishuRegion,"onUpdate:modelValue":r[15]||=e=>L.feishuRegion=e,"control-id":`external-feishu-region`,label:o(u)(`pages.connections.region`),options:Qe.value,disabled:c.value,required:``},null,8,[`modelValue`,`label`,`options`,`disabled`])]),d(U,{modelValue:L.feishuSpaceId,"onUpdate:modelValue":r[16]||=e=>L.feishuSpaceId=e,label:`Space ID`},null,8,[`modelValue`]),d(U,{modelValue:L.feishuRootNodeToken,"onUpdate:modelValue":r[17]||=e=>L.feishuRootNodeToken=e,label:`Root Node Token`},null,8,[`modelValue`]),d(U,{modelValue:L.feishuNodeTokens,"onUpdate:modelValue":r[18]||=e=>L.feishuNodeTokens=e,label:`Node Tokens`},null,8,[`modelValue`]),d(U,{modelValue:L.feishuWebBaseUrl,"onUpdate:modelValue":r[19]||=e=>L.feishuWebBaseUrl=e,label:`Web URL`,type:`url`},null,8,[`modelValue`])],64)):L.connectorType===`retrieval_api`?(_(),l(p,{key:3},[d(U,{modelValue:L.retrievalUrl,"onUpdate:modelValue":r[20]||=e=>L.retrievalUrl=e,label:o(u)(`pages.connections.retrievalUrl`),type:`url`,required:``},null,8,[`modelValue`,`label`]),d(U,{modelValue:L.retrievalTokenEnv,"onUpdate:modelValue":r[21]||=e=>L.retrievalTokenEnv=e,label:o(u)(`pages.connections.tokenEnv`)},null,8,[`modelValue`,`label`]),d(U,{modelValue:L.retrievalKnowledgeIds,"onUpdate:modelValue":r[22]||=e=>L.retrievalKnowledgeIds=e,label:o(u)(`pages.connections.knowledgeIds`),required:``},null,8,[`modelValue`,`label`]),d(U,{modelValue:L.retrievalScoreThreshold,"onUpdate:modelValue":r[23]||=e=>L.retrievalScoreThreshold=e,label:o(u)(`pages.connections.scoreThreshold`),inputmode:`decimal`,required:``},null,8,[`modelValue`,`label`])],64)):(_(),l(p,{key:4},[d(U,{modelValue:L.customModule,"onUpdate:modelValue":r[24]||=e=>L.customModule=e,label:o(u)(`pages.connections.module`),required:``},null,8,[`modelValue`,`label`]),d(U,{modelValue:L.customEnvironmentNames,"onUpdate:modelValue":r[25]||=e=>L.customEnvironmentNames=e,label:o(u)(`pages.connections.environmentNames`)},null,8,[`modelValue`,`label`]),v(`div`,Le,[d(U,{modelValue:L.customSourceJson,"onUpdate:modelValue":r[26]||=e=>L.customSourceJson=e,label:o(u)(`pages.connections.sourceJson`),multiline:``,required:``},null,8,[`modelValue`,`label`])]),v(`span`,Re,x(o(u)(`pages.connections.trustedCode`)),1)],64)),v(`button`,{class:`primary-action external-create-action`,type:`submit`,disabled:c.value||!z.value.length||!L.personalProjectIds.length},[r[35]||=v(`span`,{class:`external-create-action-icon`,"aria-hidden":`true`},null,-1),v(`span`,null,x(o(u)(`pages.connections.connect`)),1)],8,ze)],32)]),z.value.length?(_(),l(`section`,Be,[v(`div`,Ve,[v(`h3`,null,x(o(u)(`pages.connections.conflictTitle`)),1),v(`a`,{class:`section-help-link`,"data-testid":`conflict-policy-help`,href:se.value,"aria-label":o(u)(`pages.connections.conflictHelp`),title:o(u)(`pages.connections.conflictHelp`),target:`_blank`,rel:`noreferrer`},`?`,8,He)]),v(`div`,Ue,[v(`label`,null,[v(`span`,null,x(o(u)(`pages.connections.targetProject`)),1),d(j,{modelValue:P.value,"onUpdate:modelValue":r[27]||=e=>P.value=e,"control-id":`external-conflict-project`,label:o(u)(`pages.connections.targetProject`),options:q.value,disabled:I.value,required:``,onChange:mt},null,8,[`modelValue`,`label`,`options`,`disabled`])]),v(`label`,null,[v(`span`,null,x(o(u)(`pages.connections.conflictAction`)),1),d(j,{modelValue:F.value,"onUpdate:modelValue":r[28]||=e=>F.value=e,"control-id":`external-conflict-mode`,label:o(u)(`pages.connections.conflictAction`),options:$e.value,disabled:I.value,required:``,onChange:ht},null,8,[`modelValue`,`label`,`options`,`disabled`])])])])):m(``,!0),o(t).state?.capabilities?.subscribeProject?(_(),l(`section`,We,[v(`div`,Ge,[v(`h3`,null,[w(x(o(u)(`pages.connections.subscriptionsTitle`))+` `,1),r[36]||=v(`span`,{class:`feature-badge beta`},`BETA`,-1)])]),v(`div`,Ke,[(_(!0),l(p,null,g(R.value,e=>(_(),l(`div`,{key:`${e.provider_url}:${e.project_id}`,class:`subscription-row`},[r[37]||=v(`span`,null,`↗`,-1),v(`div`,null,[v(`strong`,null,x(e.project_name??e.project_id),1),v(`span`,null,x(o(u)(`pages.connections.sharedProject`)),1)]),v(`button`,{class:`secondary-action subscription-action`,type:`button`,onClick:t=>nt(e)},x(o(u)(`pages.connections.unsubscribe`)),9,qe)]))),128)),R.value.length?m(``,!0):(_(),l(`div`,Je,x(o(u)(`pages.connections.noSubscriptions`)),1))]),v(`form`,{class:`subscription-form`,onSubmit:f(tt,[`prevent`])},[d(j,{modelValue:n.value,"onUpdate:modelValue":r[29]||=e=>n.value=e,options:V.value,label:o(u)(`pages.connections.sharedProjectLabel`),placeholder:o(u)(`pages.connections.choosePublicProject`),searchable:``,required:``},null,8,[`modelValue`,`options`,`label`,`placeholder`]),v(`button`,Ye,x(o(u)(`pages.connections.subscribe`)),1)],32)])):m(``,!0)]))}});export{q as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{D as e,F as t,G as n,K as r,Q as i,R as a,_ as o,a as s,b as c,d as l,f as u,g as d,k as f,m as p,p as m,q as h,s as g,tt as _,u as v,v as y,x as b,y as x}from"./i18n-CwqXDI1C.js";import{a as S,i as C,t as w}from"./console-D_2zC4lm.js";import{t as T}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as E}from"./SearchableSelect-B3-5IPup.js";import{r as D,t as O}from"./identity-DmGcY3Y6.js";import{E as k,T as A}from"./model-CVoOdRsL.js";var j={class:`view-loading growth-loading`,role:`status`,"aria-live":`polite`,"aria-atomic":`true`},M={class:`growth-loading__content`},N={class:`growth-loading__label`},P=T(b({__name:`GrowthLoading`,props:{label:{}},setup(e){return(t,n)=>(f(),o(`div`,j,[p(`div`,M,[n[0]||=y(`<div class="growth-loading__chart" aria-hidden="true" data-v-f65da374><span class="growth-loading__bar growth-loading__bar--1" data-v-f65da374><i data-v-f65da374></i></span><span class="growth-loading__bar growth-loading__bar--2" data-v-f65da374><i data-v-f65da374></i></span><span class="growth-loading__bar growth-loading__bar--3" data-v-f65da374><i data-v-f65da374></i></span><span class="growth-loading__bar growth-loading__bar--4" data-v-f65da374><i data-v-f65da374></i></span><span class="growth-loading__bar growth-loading__bar--5" data-v-f65da374><i data-v-f65da374></i></span><span class="growth-loading__baseline" data-v-f65da374></span></div>`,1),p(`span`,N,_(e.label),1)])]))}}),[[`__scopeId`,`data-v-f65da374`]]),F=`testLoading`;function I(e=typeof window>`u`?``:window.location.search){return new URLSearchParams(e).get(F)===`1`}function L(n,i=500){let a=h(!1),o=0,s=null;function c(){s!==null&&(clearTimeout(s),s=null)}return t(n,e=>{if(c(),e){a.value||(o=Date.now()),a.value=!0;return}if(!a.value)return;let t=Math.max(0,i-(Date.now()-o));if(t===0){a.value=!1;return}s=setTimeout(()=>{s=null,a.value=!1},t)},{immediate:!0,flush:`sync`}),e(c),r(a)}var R={key:0,open:``,class:`knowledge-confirm-dialog vue-dialog`},z={class:`project-dialog-header`},B=[`disabled`],V={class:`knowledge-confirm-summary`},H={class:`knowledge-confirm-fields`},U={class:`knowledge-confirm-acknowledgement`},W={key:0,class:`publish-dialog-error`,role:`alert`},ee={class:`project-profile-dialog-actions`},te=[`disabled`],ne=[`disabled`],G=T(b({__name:`KnowledgeConfirmDialog`,props:{item:{},personalSpaceId:{},personalProjectId:{}},emits:[`close`,`saved`],setup(e,{emit:n}){let r=e,c=n,u=w(),y=h(``),b=h(``),x=h(``),S=h(!1),T=h(!1),E=h(``),D=h({kind:`import`,label:s(`knowledge.domain.actors.historicalRecord`)}),O=m(()=>r.item?.profileAspect?s(`knowledge.dialogs.confirm.preferenceSubject`):s(`knowledge.dialogs.confirm.knowledgeSubject`));t(()=>r.item,e=>{if(!e)return;let t=e.evidence.at(0),n=e.confirmationBasis;y.value=n?.existence_reason||t?.source_description||t?.summary||s(`knowledge.dialogs.confirm.sourceSupport`),b.value=n?.quadrant_reason||e.reasoningSummary||s(`knowledge.dialogs.confirm.quadrantReason`,{quadrant:k(e.originQuadrant),description:A(e.originQuadrant)}),D.value=n?.proposed_by??M(t),x.value=s(`knowledge.dialogs.confirm.confirmationReason`),S.value=!1,E.value=``},{immediate:!0});async function j(){let e=r.item;if(!(!e||T.value)){if(!e.classificationExplicit)return N(s(`knowledge.dialogs.confirm.errors.quadrantRequired`));if(!y.value.trim())return N(s(`knowledge.dialogs.confirm.errors.existenceRequired`));if(!b.value.trim())return N(s(`knowledge.dialogs.confirm.errors.quadrantReasonRequired`));if(!x.value.trim())return N(s(`knowledge.dialogs.confirm.errors.confirmationReasonRequired`));if(!S.value)return N(s(`knowledge.dialogs.confirm.errors.acknowledgmentRequired`));T.value=!0,E.value=``;try{await C(`/api/knowledge/${e.itemKind}/${encodeURIComponent(e.id)}`,{personalSpaceId:r.personalSpaceId,personalProjectId:r.personalProjectId,action:`confirm`,reason:x.value.trim(),confirmationStatus:`confirmed`,confirmationBasis:{existenceReason:y.value.trim(),quadrantReason:b.value.trim(),proposedBy:D.value,confirmedBy:{kind:`user`,label:s(`knowledge.domain.actors.currentUser`)},confirmedAt:new Date().toISOString()}}),u.notify(s(`knowledge.dialogs.confirm.confirmed`,{subject:O.value})),c(`saved`),c(`close`)}catch(e){E.value=e instanceof Error?e.message:s(`knowledge.dialogs.confirm.errors.failed`),u.reportError(e)}finally{T.value=!1}}}function M(e){let t={codex:`Codex`,claude_code:`Claude Code`,cursor:`Cursor`,kiro:`Kiro`,other:s(`knowledge.domain.actors.otherAgent`)}[e?.source_application??``];return t?{kind:`agent`,label:t}:{kind:`import`,label:s(`knowledge.domain.actors.historicalRecord`)}}function N(e){E.value=e}return(t,n)=>e.item?(f(),o(`dialog`,R,[p(`form`,{class:`knowledge-confirm-dialog-shell`,onSubmit:l(j,[`prevent`])},[p(`header`,z,[p(`div`,null,[n[6]||=p(`p`,{class:`eyebrow`},`KNOWLEDGE CONFIRMATION`,-1),p(`h3`,null,_(i(s)(`knowledge.dialogs.confirm.title`,{subject:O.value})),1),p(`p`,null,_(i(s)(`knowledge.dialogs.confirm.intro`)),1)]),p(`button`,{class:`secondary-action`,type:`button`,disabled:T.value,onClick:n[0]||=e=>c(`close`)},_(i(s)(`common.actions.close`)),9,B)]),p(`section`,V,[p(`span`,null,_(e.item.profileAspect?i(s)(`knowledge.dialogs.confirm.preference`):i(s)(`knowledge.dialogs.confirm.knowledge`)),1),p(`strong`,null,_(e.item.title),1),p(`p`,null,_(e.item.body),1),p(`small`,null,_(i(s)(`knowledge.dialogs.confirm.quadrant`,{quadrant:i(k)(e.item.originQuadrant)})),1)]),p(`div`,H,[p(`label`,null,[p(`span`,null,_(i(s)(`knowledge.dialogs.confirm.whyExists`)),1),a(p(`textarea`,{"onUpdate:modelValue":n[1]||=e=>y.value=e,name:`confirmation-existence-reason`,maxlength:`4096`,rows:`3`,required:``},null,512),[[v,y.value]])]),p(`label`,null,[p(`span`,null,_(i(s)(`knowledge.dialogs.confirm.whyQuadrant`)),1),a(p(`textarea`,{"onUpdate:modelValue":n[2]||=e=>b.value=e,name:`confirmation-quadrant-reason`,maxlength:`4096`,rows:`3`,required:``},null,512),[[v,b.value]])]),p(`label`,null,[p(`span`,null,_(i(s)(`knowledge.dialogs.confirm.confirmationCopy`)),1),a(p(`textarea`,{"onUpdate:modelValue":n[3]||=e=>x.value=e,name:`confirmation-reason`,maxlength:`2000`,rows:`2`,required:``},null,512),[[v,x.value]])])]),p(`label`,U,[a(p(`input`,{"onUpdate:modelValue":n[4]||=e=>S.value=e,name:`confirmation-acknowledged`,type:`checkbox`},null,512),[[g,S.value]]),p(`span`,null,_(i(s)(`knowledge.dialogs.confirm.acknowledgment`)),1)]),E.value?(f(),o(`p`,W,_(E.value),1)):d(``,!0),p(`footer`,ee,[p(`button`,{class:`secondary-action`,type:`button`,disabled:T.value,onClick:n[5]||=e=>c(`close`)},_(i(s)(`common.actions.cancel`)),9,te),p(`button`,{class:`primary-action`,type:`submit`,disabled:T.value||!S.value},_(T.value?i(s)(`knowledge.dialogs.confirm.confirming`):i(s)(`knowledge.dialogs.confirm.confirmSubject`,{subject:O.value})),9,ne)])],32)])):d(``,!0)}}),[[`__scopeId`,`data-v-26170b1a`]]),re={key:0,open:``,class:`project-dialog knowledge-edit-dialog vue-dialog`},ie={class:`project-dialog-shell`},ae={class:`project-dialog-header`},oe={class:`knowledge-edit-columns`},se={key:0},ce={key:1},le={key:2},ue={class:`knowledge-taxonomy-fields`},de={class:`knowledge-classification-warning`},fe={key:3,class:`knowledge-classification-warning`},pe={class:`knowledge-confirmation-fields`},me={class:`knowledge-taxonomy-fields`},he=[`placeholder`],ge=[`placeholder`],_e={key:4,class:`knowledge-replacement-fields`},ve={key:0},ye={class:`knowledge-replacement-fields`},be={key:5,class:`publish-dialog-error`,role:`alert`},xe={class:`knowledge-editor-actions`},Se=[`disabled`],Ce=[`disabled`],we=[`disabled`],Te=[`disabled`],Ee={key:0},De=[`disabled`],Oe={key:1},ke={key:0},Ae=[`disabled`],K=b({__name:`KnowledgeEditDialog`,props:{item:{},personalSpaceId:{},personalProjectId:{},projects:{},replacementItems:{default:()=>[]}},emits:[`close`,`saved`],setup(e,{emit:r}){let g=e,y=r,b=w(),T=h(!1),A=h(``),j=h(``),M=h(``),N=h(`global`),P=h(``),F=h(``),I=h(``),L=h(``),R=n({name:``,summary:``,fact:``,currentQuadrant:``,confirmationStatus:`pending`,existenceReason:``,quadrantReason:``,proposedByKind:`agent`,proposedByLabel:``,confirmedByKind:`user`,confirmedByLabel:``,profileAspect:`none`,inheritanceMode:`local_only`,reason:``}),z=m(()=>g.item?.itemKind===`relationship`),B=m(()=>!!g.item?.invalidAt),V=m(()=>!!g.item?.raw.profile_aspect),H=m(()=>g.projects.map(e=>({value:e.project_id,label:e.profile.name,meta:`#${O(e.project_id,26)}`,search:D(e.project_id)}))),U=m(()=>[`known_known`,`known_unknown`,`unknown_known`,`unknown_unknown`].map(e=>({value:e,label:s(`knowledge.dialogs.edit.quadrants.${e}`)}))),W=m(()=>[{value:`pending`,label:s(`knowledge.dialogs.edit.confirmationStates.pending`)},{value:`confirmed`,label:s(`knowledge.dialogs.edit.confirmationStates.confirmed`)}]),ee=m(()=>[{value:`local_only`,label:s(`knowledge.dialogs.edit.inheritance.local`)},{value:`descendants`,label:s(`knowledge.dialogs.edit.inheritance.descendants`)},{value:`selected_projects`,label:s(`knowledge.dialogs.edit.inheritance.selected`)}]),te=m(()=>[`user`,`agent`,`authoritative_source`,`import`].map(e=>({value:e,label:s(`knowledge.domain.actors.${e}`)}))),ne=m(()=>[`user`,`authoritative_source`].map(e=>({value:e,label:s(`knowledge.domain.actors.${e}`)}))),G=m(()=>[{value:`none`,label:s(`knowledge.dialogs.edit.profiles.none`)},...[`taste`,`personality`,`judgment_preference`].map(e=>({value:e,label:s(`knowledge.domain.profiles.${e}`)}))]),K=m(()=>[{value:`global`,label:s(`knowledge.dialogs.edit.scopes.global`)},{value:`project`,label:s(`knowledge.dialogs.edit.scopes.project`),disabled:g.projects.length===0}]),je=m(()=>[{value:``,label:s(`knowledge.dialogs.edit.replacementNone`)},...g.replacementItems.filter(e=>!e.invalidAt&&(e.itemKind!==g.item?.itemKind||e.id!==g.item?.id)).map(e=>({value:Z(e.itemKind,e.id),label:e.title,meta:e.type,search:`${e.body} ${e.id}`}))]),q=m(()=>{if(!L.value)return null;try{let[e,t]=JSON.parse(L.value);return e!==`entity`&&e!==`relationship`||typeof t!=`string`?null:{itemKind:e,id:t}}catch{return null}}),J=m(()=>g.item?.assignments.at(0)?.project_id??g.item?.evidence.find(({personal_project_id:e})=>e)?.personal_project_id??g.personalProjectId??null);t(()=>g.item,e=>{if(!e)return;let t=e.raw;R.name=e.itemKind===`entity`?t.name:``,R.summary=e.itemKind===`entity`?t.summary??``:``,R.fact=e.itemKind===`relationship`?t.fact??``:``;let n=e.confirmationBasis,r=e.evidence.at(0);R.currentQuadrant=e.classificationExplicit?t.current_quadrant??t.origin_quadrant??`known_known`:``,R.confirmationStatus=e.confirmationStatus===`confirmed`?`confirmed`:`pending`,R.existenceReason=n?.existence_reason??r?.source_description??r?.summary??``,R.quadrantReason=n?.quadrant_reason??t.reasoning_summary??``,R.proposedByKind=n?.proposed_by.kind??`agent`,R.proposedByLabel=n?.proposed_by.label??``,R.confirmedByKind=n?.confirmed_by?.kind??`user`,R.confirmedByLabel=n?.confirmed_by?.label??``,R.profileAspect=t.profile_aspect??`none`,R.inheritanceMode=t.profile_aspect?`local_only`:t.inheritance_mode??`local_only`,I.value=t.inherited_project_ids?.at(0)??g.projects[0]?.project_id??``,R.reason=``,j.value=``,M.value=J.value??g.projects[0]?.project_id??``,N.value=t.preference_scope??`global`,P.value=t.preference_project_id??g.projects[0]?.project_id??``,F.value=``,L.value=e.replacedByItemId&&e.replacedByItemKind?Z(e.replacedByItemKind,e.replacedByItemId):``,A.value=``},{immediate:!0});async function Me(){let e=g.item;if(!e)return;if(!R.reason.trim())return $(s(`knowledge.dialogs.edit.errors.reasonRequired`));if(!z.value&&!R.name.trim())return $(s(`knowledge.dialogs.edit.errors.nameRequired`));if(z.value&&!R.fact.trim())return $(s(`knowledge.dialogs.edit.errors.factRequired`));if(!R.currentQuadrant||!R.confirmationStatus)return $(s(`knowledge.dialogs.edit.errors.classificationRequired`));if(!R.existenceReason.trim())return $(s(`knowledge.dialogs.edit.errors.existenceRequired`));if(!R.quadrantReason.trim())return $(s(`knowledge.dialogs.edit.errors.quadrantRequired`));if(!R.proposedByKind)return $(s(`knowledge.dialogs.edit.errors.proposerRequired`));if(R.confirmationStatus===`confirmed`&&!R.confirmedByKind)return $(s(`knowledge.dialogs.edit.errors.confirmerRequired`));if(R.inheritanceMode===`selected_projects`&&!I.value)return $(s(`knowledge.dialogs.edit.errors.inheritedProjectsRequired`));let t={...X(`update`),confirmationStatus:R.confirmationStatus,confirmationBasis:{existenceReason:R.existenceReason.trim(),quadrantReason:R.quadrantReason.trim(),proposedBy:{kind:R.proposedByKind,label:R.proposedByLabel.trim()||null},confirmedBy:R.confirmationStatus===`confirmed`?{kind:R.confirmedByKind,label:R.confirmedByLabel.trim()||null}:null,confirmedAt:R.confirmationStatus===`confirmed`?new Date().toISOString():null},profileAspect:R.profileAspect,inheritanceMode:R.profileAspect===`none`?R.inheritanceMode:`local_only`,inheritedProjectIds:R.profileAspect===`none`&&R.inheritanceMode===`selected_projects`?[I.value]:[],reasoningSummary:R.quadrantReason.trim()};g.item.classificationExplicit?t.currentQuadrant=R.currentQuadrant:t.originQuadrant=R.currentQuadrant,z.value?t.fact=R.fact.trim():(t.name=R.name.trim(),t.summary=R.summary.trim()),await Q(async()=>{await C(`/api/knowledge/${e.itemKind}/${encodeURIComponent(e.id)}`,t),b.notify(s(`knowledge.dialogs.edit.notices.corrected`))})}async function Y(e){let t=g.item;if(t){if(!R.reason.trim())return $(s(e===`invalidate`?`knowledge.dialogs.edit.errors.statusReasonRequired`:`knowledge.dialogs.edit.errors.restoreReasonRequired`));await Q(async()=>{let n=X(e);e===`invalidate`&&q.value&&(n.replacementItemId=q.value.id,n.replacementItemKind=q.value.itemKind),await C(`/api/knowledge/${t.itemKind}/${encodeURIComponent(t.id)}`,n),b.notify(e===`invalidate`?q.value?s(`knowledge.dialogs.edit.notices.invalidatedWithReplacement`):s(`knowledge.dialogs.edit.notices.invalidated`):s(`knowledge.dialogs.edit.notices.restored`))})}}async function Ne(){let e=g.item,t=q.value;if(!(!e||!B.value)){if(!t)return $(s(`knowledge.dialogs.edit.errors.replacementRequired`));if(!R.reason.trim())return $(s(`knowledge.dialogs.edit.errors.replacementReasonRequired`));await Q(async()=>{await C(`/api/knowledge/${e.itemKind}/${encodeURIComponent(e.id)}`,{...X(`link_replacement`),replacementItemId:t.id,replacementItemKind:t.itemKind}),b.notify(s(`knowledge.dialogs.edit.notices.replacementSaved`))})}}async function Pe(){let e=g.item;if(e){if(!M.value)return $(s(`knowledge.dialogs.edit.errors.projectRequired`));if(!j.value.trim())return $(s(`knowledge.dialogs.edit.errors.assignmentReasonRequired`));if(M.value===J.value)return $(s(`knowledge.dialogs.edit.errors.alreadyAssigned`));await Q(async()=>{await S(`/api/knowledge/${e.itemKind}/${encodeURIComponent(e.id)}/assignment`,{personalSpaceId:g.personalSpaceId,targetProjectId:M.value,reason:j.value.trim()}),b.notify(s(`knowledge.dialogs.edit.notices.assignmentChanged`))})}}async function Fe(){let e=g.item;if(!e)return;let t=N.value===`project`?P.value:null;if(N.value===`project`&&!t)return $(s(`knowledge.dialogs.edit.errors.preferenceProjectRequired`));if(!F.value.trim())return $(s(`knowledge.dialogs.edit.errors.preferenceReasonRequired`));await Q(async()=>{await S(`/api/knowledge/${e.itemKind}/${encodeURIComponent(e.id)}/preference-scope`,{personalSpaceId:g.personalSpaceId,scope:N.value,projectId:t,reason:F.value.trim()}),b.notify(N.value===`global`?s(`knowledge.dialogs.edit.notices.preferenceGlobal`):s(`knowledge.dialogs.edit.notices.preferenceProject`))})}function X(e){return{personalSpaceId:g.personalSpaceId,personalProjectId:g.personalProjectId,action:e,reason:R.reason.trim()}}function Z(e,t){return JSON.stringify([e,t])}async function Q(e){T.value=!0,A.value=``;try{await e(),y(`close`),y(`saved`)}catch(e){A.value=e instanceof Error?e.message:s(`knowledge.dialogs.edit.errors.saveFailed`),b.reportError(e)}finally{T.value=!1}}function $(e){A.value=e}return(t,n)=>e.item?(f(),o(`dialog`,re,[p(`div`,ie,[p(`header`,ae,[p(`div`,null,[n[24]||=p(`p`,{class:`eyebrow`},`PERSONAL KNOWLEDGE`,-1),p(`h3`,null,_(B.value?i(s)(`knowledge.dialogs.edit.titleRestore`):i(s)(`knowledge.dialogs.edit.titleCorrect`)),1),p(`p`,null,_(i(s)(`knowledge.dialogs.edit.intro`)),1)]),p(`button`,{class:`secondary-action`,type:`button`,onClick:n[0]||=e=>y(`close`)},_(i(s)(`common.actions.close`)),1)]),p(`div`,oe,[p(`section`,null,[p(`h4`,null,_(i(s)(`knowledge.dialogs.edit.currentContent`)),1),p(`form`,{class:`knowledge-editor-form`,onSubmit:l(Me,[`prevent`])},[z.value?d(``,!0):(f(),o(`label`,se,[x(_(i(s)(`knowledge.dialogs.edit.name`)),1),a(p(`input`,{"onUpdate:modelValue":n[1]||=e=>R.name=e,maxlength:`512`},null,512),[[v,R.name]])])),z.value?(f(),o(`label`,le,[x(_(i(s)(`knowledge.dialogs.edit.fact`)),1),a(p(`textarea`,{"onUpdate:modelValue":n[3]||=e=>R.fact=e,maxlength:`8192`,rows:`5`},null,512),[[v,R.fact]])])):(f(),o(`label`,ce,[x(_(i(s)(`knowledge.dialogs.edit.description`)),1),a(p(`textarea`,{"onUpdate:modelValue":n[2]||=e=>R.summary=e,maxlength:`4096`,rows:`5`},null,512),[[v,R.summary]])])),p(`div`,ue,[p(`label`,null,[x(_(i(s)(`knowledge.dialogs.edit.classification`))+` `,1),c(E,{modelValue:R.currentQuadrant,"onUpdate:modelValue":n[4]||=e=>R.currentQuadrant=e,options:U.value,label:i(s)(`knowledge.dialogs.edit.classification`)},null,8,[`modelValue`,`options`,`label`])]),p(`label`,null,[x(_(i(s)(`knowledge.dialogs.edit.confirmationStatus`))+` `,1),c(E,{modelValue:R.confirmationStatus,"onUpdate:modelValue":n[5]||=e=>R.confirmationStatus=e,options:W.value,label:i(s)(`knowledge.dialogs.edit.confirmationStatus`)},null,8,[`modelValue`,`options`,`label`])]),p(`label`,null,[x(_(i(s)(`knowledge.dialogs.edit.preferenceDimension`))+` `,1),c(E,{modelValue:R.profileAspect,"onUpdate:modelValue":n[6]||=e=>R.profileAspect=e,options:G.value,label:i(s)(`knowledge.dialogs.edit.preferenceDimension`)},null,8,[`modelValue`,`options`,`label`])])]),p(`p`,de,_(i(s)(`knowledge.dialogs.edit.originQuadrant`,{quadrant:i(k)(e.item.originQuadrant)})),1),e.item.classificationExplicit?d(``,!0):(f(),o(`p`,fe,_(i(s)(`knowledge.dialogs.edit.missingQuadrant`)),1)),p(`fieldset`,pe,[p(`legend`,null,_(i(s)(`knowledge.dialogs.edit.basis`)),1),p(`label`,null,[x(_(i(s)(`knowledge.dialogs.edit.whyExists`))+` `,1),a(p(`textarea`,{"onUpdate:modelValue":n[7]||=e=>R.existenceReason=e,maxlength:`4096`,rows:`3`,required:``},null,512),[[v,R.existenceReason]])]),p(`label`,null,[x(_(i(s)(`knowledge.dialogs.edit.whyQuadrant`))+` `,1),a(p(`textarea`,{"onUpdate:modelValue":n[8]||=e=>R.quadrantReason=e,maxlength:`4096`,rows:`3`,required:``},null,512),[[v,R.quadrantReason]])]),p(`div`,me,[p(`label`,null,[x(_(i(s)(`knowledge.dialogs.edit.proposer`))+` `,1),c(E,{modelValue:R.proposedByKind,"onUpdate:modelValue":n[9]||=e=>R.proposedByKind=e,options:te.value,label:i(s)(`knowledge.dialogs.edit.proposer`)},null,8,[`modelValue`,`options`,`label`])]),p(`label`,null,[x(_(i(s)(`knowledge.dialogs.edit.proposerDescription`))+` `,1),a(p(`input`,{"onUpdate:modelValue":n[10]||=e=>R.proposedByLabel=e,maxlength:`160`,placeholder:i(s)(`knowledge.dialogs.edit.proposerPlaceholder`)},null,8,he),[[v,R.proposedByLabel]])]),R.confirmationStatus===`confirmed`?(f(),o(u,{key:0},[p(`label`,null,[x(_(i(s)(`knowledge.dialogs.edit.confirmer`))+` `,1),c(E,{modelValue:R.confirmedByKind,"onUpdate:modelValue":n[11]||=e=>R.confirmedByKind=e,options:ne.value,label:i(s)(`knowledge.dialogs.edit.confirmer`)},null,8,[`modelValue`,`options`,`label`])]),p(`label`,null,[x(_(i(s)(`knowledge.dialogs.edit.confirmerDescription`))+` `,1),a(p(`input`,{"onUpdate:modelValue":n[12]||=e=>R.confirmedByLabel=e,maxlength:`160`,placeholder:i(s)(`knowledge.dialogs.edit.confirmerPlaceholder`)},null,8,ge),[[v,R.confirmedByLabel]])])],64)):d(``,!0)]),p(`p`,null,_(i(s)(`knowledge.dialogs.edit.agentConfirmedBoundary`)),1)]),V.value?d(``,!0):(f(),o(`fieldset`,_e,[p(`legend`,null,_(i(s)(`knowledge.dialogs.edit.crossProjectInheritance`)),1),p(`label`,null,[x(_(i(s)(`knowledge.dialogs.edit.inheritanceScope`))+` `,1),c(E,{modelValue:R.inheritanceMode,"onUpdate:modelValue":n[13]||=e=>R.inheritanceMode=e,options:ee.value,label:i(s)(`knowledge.dialogs.edit.inheritanceScope`)},null,8,[`modelValue`,`options`,`label`])]),R.inheritanceMode===`selected_projects`?(f(),o(`label`,ve,[x(_(i(s)(`knowledge.dialogs.edit.inheritedProjects`))+` `,1),c(E,{modelValue:I.value,"onUpdate:modelValue":n[14]||=e=>I.value=e,options:H.value,label:i(s)(`knowledge.dialogs.edit.inheritedProjects`),searchable:``},null,8,[`modelValue`,`options`,`label`])])):d(``,!0),p(`p`,null,_(i(s)(`knowledge.dialogs.edit.inheritanceBoundary`)),1)])),p(`fieldset`,ye,[p(`legend`,null,_(B.value?i(s)(`knowledge.dialogs.edit.replacement`):i(s)(`knowledge.dialogs.edit.optionalReplacement`)),1),p(`label`,null,[x(_(B.value?i(s)(`knowledge.dialogs.edit.historicalReplacement`):i(s)(`knowledge.dialogs.edit.activeReplacement`))+` `,1),c(E,{modelValue:L.value,"onUpdate:modelValue":n[15]||=e=>L.value=e,options:je.value,label:i(s)(`knowledge.dialogs.edit.replacement`),searchable:``},null,8,[`modelValue`,`options`,`label`])]),p(`p`,null,_(i(s)(`knowledge.dialogs.edit.replacementBoundary`)),1)]),p(`label`,null,[x(_(i(s)(`knowledge.dialogs.edit.correctionReason`)),1),a(p(`textarea`,{"onUpdate:modelValue":n[16]||=e=>R.reason=e,maxlength:`2000`,rows:`3`,required:``},null,512),[[v,R.reason]])]),A.value?(f(),o(`p`,be,_(A.value),1)):d(``,!0),p(`div`,xe,[B.value?(f(),o(u,{key:1},[p(`button`,{class:`secondary-action`,type:`button`,disabled:T.value,onClick:n[18]||=e=>Y(`restore`)},_(i(s)(`knowledge.dialogs.edit.restore`)),9,Ce),p(`button`,{class:`secondary-action`,type:`button`,disabled:T.value,onClick:Ne},_(i(s)(`knowledge.dialogs.edit.saveReplacement`)),9,we)],64)):(f(),o(`button`,{key:0,class:`secondary-action`,type:`button`,disabled:T.value,onClick:n[17]||=e=>Y(`invalidate`)},_(i(s)(`knowledge.dialogs.edit.invalidate`)),9,Se)),p(`button`,{class:`primary-action`,type:`submit`,disabled:T.value},_(T.value?i(s)(`knowledge.dialogs.edit.saving`):R.confirmationStatus===`confirmed`?i(s)(`knowledge.dialogs.edit.saveConfirmed`):i(s)(`knowledge.dialogs.edit.savePending`)),9,Te)])],32)]),V.value?(f(),o(`section`,Oe,[p(`h4`,null,_(i(s)(`knowledge.dialogs.edit.preferenceScope`)),1),p(`p`,null,_(i(s)(`knowledge.dialogs.edit.preferenceScopeCopy`)),1),p(`form`,{class:`knowledge-editor-form`,onSubmit:l(Fe,[`prevent`])},[p(`label`,null,[x(_(i(s)(`knowledge.dialogs.edit.effectiveScope`))+` `,1),c(E,{modelValue:N.value,"onUpdate:modelValue":n[21]||=e=>N.value=e,options:K.value,label:i(s)(`knowledge.dialogs.edit.preferenceScope`)},null,8,[`modelValue`,`options`,`label`])]),N.value===`project`?(f(),o(`label`,ke,[x(_(i(s)(`knowledge.dialogs.edit.personalProject`))+` `,1),c(E,{modelValue:P.value,"onUpdate:modelValue":n[22]||=e=>P.value=e,options:H.value,label:i(s)(`knowledge.dialogs.edit.personalProject`),searchable:``},null,8,[`modelValue`,`options`,`label`])])):d(``,!0),p(`label`,null,[x(_(i(s)(`knowledge.dialogs.edit.assignmentReason`)),1),a(p(`textarea`,{"onUpdate:modelValue":n[23]||=e=>F.value=e,maxlength:`2000`,rows:`3`,required:``},null,512),[[v,F.value]])]),p(`button`,{class:`primary-action`,type:`submit`,disabled:T.value},_(i(s)(`knowledge.dialogs.edit.saveScope`)),9,Ae)],32)])):(f(),o(`section`,Ee,[p(`h4`,null,_(i(s)(`knowledge.dialogs.edit.projectOwnership`)),1),p(`p`,null,_(i(s)(`knowledge.dialogs.edit.ownershipCopy`)),1),p(`form`,{class:`knowledge-editor-form`,onSubmit:l(Pe,[`prevent`])},[p(`label`,null,[x(_(i(s)(`knowledge.dialogs.edit.targetProject`))+` `,1),c(E,{modelValue:M.value,"onUpdate:modelValue":n[19]||=e=>M.value=e,options:H.value,label:i(s)(`knowledge.dialogs.edit.targetProject`),searchable:``,required:``},null,8,[`modelValue`,`options`,`label`])]),p(`label`,null,[x(_(i(s)(`knowledge.dialogs.edit.assignmentReason`)),1),a(p(`textarea`,{"onUpdate:modelValue":n[20]||=e=>j.value=e,maxlength:`2000`,rows:`3`,required:``},null,512),[[v,j.value]])]),p(`button`,{class:`primary-action`,type:`submit`,disabled:T.value||e.projects.length===0},_(i(s)(`knowledge.dialogs.edit.adjustOwnership`)),9,De)],32)]))])])])):d(``,!0)}});export{P as a,L as i,G as n,I as r,K as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,D as t,E as n,F as r,M as i,Q as a,_ as o,a as s,et as c,f as l,g as u,j as d,k as f,m as p,p as m,q as h,tt as g,x as _}from"./i18n-CwqXDI1C.js";import{t as v}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{C as y,D as b,E as x,O as S,S as C,T as w,_ as T,a as E,c as D,d as O,f as k,g as A,i as j,p as M,u as N,w as P}from"./model-CVoOdRsL.js";import{a as F,c as I,i as L,n as ee,s as te}from"./conversation-launcher-settings-DQmMH2j7.js";var R=[`aria-label`],z=[`data-virtual-index`],B={class:`virtual-directory-list__content`},V={class:`virtual-directory-list__watermark`,"aria-hidden":`true`},H=[`aria-label`],U=v(_({__name:`VirtualDirectoryList`,props:{items:{},rowHeight:{},label:{},minWidth:{default:`100%`},overscan:{default:8},resetKey:{default:void 0},activeIndex:{default:-1},watermarkPrefix:{default:`#`},itemKey:{type:Function,default:void 0}},setup(_,{expose:v}){let y=_,b=h(null),x=h(null),S=h(0),C=h(640),w=h(0),T=null,E=m(()=>y.items.length),D=m(()=>Math.max(3,String(E.value).length)),O=m(()=>E.value?Math.min(E.value,Math.floor(S.value/y.rowHeight)+1):0),k=m(()=>{let e=Math.max(0,Math.floor(S.value/y.rowHeight)-y.overscan),t=Math.ceil(C.value/y.rowHeight)+y.overscan*2;return{start:e,end:Math.min(E.value,e+t)}}),A=m(()=>Array.from({length:k.value.end-k.value.start},(e,t)=>k.value.start+t)),j=m(()=>({height:`${E.value*y.rowHeight}px`,minWidth:y.minWidth})),M=m(()=>({minWidth:y.minWidth}));r([b,x],([e,t])=>{T?.disconnect(),T=null,e&&(P(),typeof ResizeObserver==`function`&&(T=new ResizeObserver(P),T.observe(e),t&&T.observe(t)))},{flush:`post`}),r(()=>y.resetKey,async()=>{await n(),I()},{flush:`post`}),r(E,async()=>{await n();let e=b.value;if(!e)return;let t=Math.max(0,e.scrollHeight-e.clientHeight);e.scrollTop>t&&(e.scrollTop=t),P()}),r([b,()=>y.activeIndex],async([e,t])=>{!e||t<0||t>=E.value||(await n(),L(t))},{flush:`post`}),t(()=>T?.disconnect());function N(e){return String(e).padStart(D.value,`0`)}function P(){let e=b.value;e&&(S.value=e.scrollTop,C.value=e.clientHeight||C.value,w.value=x.value?.offsetHeight??0)}function F(e){let t=e.currentTarget;S.value=t.scrollTop}function I(){let e=b.value;e&&(e.scrollTop=0,S.value=0)}function L(e){let t=b.value;if(!t||e<0||e>=E.value)return;let n=e*y.rowHeight,r=n+y.rowHeight,i=t.scrollTop,a=i+t.clientHeight-w.value;n<i?t.scrollTop=n:t.clientHeight&&r>a&&(t.scrollTop=r-t.clientHeight+w.value),S.value=t.scrollTop}return v({scrollToStart:I,scrollIndexIntoView:L}),(t,n)=>(f(),o(`section`,{class:`virtual-directory-list`,"aria-label":_.label},[p(`div`,{ref_key:`scroller`,ref:b,class:`virtual-directory-list__scroller`,onScrollPassive:F},[t.$slots.header?(f(),o(`div`,{key:0,ref_key:`header`,ref:x,class:`virtual-directory-list__header`,style:c(M.value)},[i(t.$slots,`header`,{},void 0,!0)],4)):u(``,!0),p(`div`,{class:`virtual-directory-list__canvas`,style:c(j.value)},[(f(!0),o(l,null,d(A.value,n=>(f(),o(`div`,{key:_.itemKey?.(_.items[n],n)??n,class:e([`virtual-directory-list__row`,{"is-active":n===_.activeIndex}]),"data-virtual-index":n,style:c({height:`${_.rowHeight}px`,transform:`translateY(${n*_.rowHeight}px)`})},[p(`div`,B,[i(t.$slots,`default`,{item:_.items[n],index:n,formattedIndex:N(n+1)},void 0,!0)]),p(`span`,V,g(_.watermarkPrefix)+g(N(n+1)),1)],14,z))),128))],4),!E.value&&t.$slots.empty?(f(),o(`div`,{key:1,class:`virtual-directory-list__empty`,style:c(M.value)},[i(t.$slots,`empty`,{},void 0,!0)],4)):u(``,!0),t.$slots.footer?(f(),o(`div`,{key:2,class:`virtual-directory-list__footer`,style:c(M.value)},[i(t.$slots,`footer`,{},void 0,!0)],4)):u(``,!0)],544),E.value?(f(),o(`output`,{key:0,class:`virtual-directory-list__position`,"aria-label":a(s)(`common.counts.listPosition`,{current:O.value,total:E.value})},[p(`strong`,null,g(N(O.value)),1),p(`span`,null,`/ `+g(N(E.value)),1)],8,H)):u(``,!0)],8,R))}}),[[`__scopeId`,`data-v-dd2afd66`]]),ne={class:`graph-inspector`},re={class:`eyebrow`},ie={class:`inspector-identity`},ae={class:`muted`},oe={key:0,class:`inspector-project-material`},se={key:3,class:`inspector-replacement`},ce={class:`inspector-replacement-heading`},le={key:1},ue={key:2},de={class:`inspector-meta`},fe={key:0},pe={key:1},me={key:2},he={key:3},ge={key:4},_e={key:5},ve={key:6},ye={key:7},be={key:8},xe={key:9},Se={key:10},Ce={key:12},we={class:`inspector-subtitle`},Te={key:0,class:`inspector-meta inspector-confirmation-basis`},Ee={key:0},De={key:1,class:`inspector-reasoning`},Oe={class:`inspector-subtitle`},ke={class:`inspector-meta inspector-attributes`},Ae={class:`inspector-subtitle`},je={class:`inspector-reasoning`},Me={key:7,class:`inspector-actions`},Ne={class:`inspector-subtitle`},Pe={class:`inspector-relations`},Fe={class:`relation-type`},Ie={class:`relation-target`},Le={class:`inspector-subtitle`},Re={class:`inspector-evidence`},ze={key:0,class:`evidence-excerpt`},Be={key:1,class:`evidence-source-actions`},Ve=[`onClick`],He=[`href`,`title`],Ue={class:`inspector-subtitle`},We={class:`inspector-history`},Ge={class:`inspector-subtitle`},Ke={class:`inspector-history inspector-audit-history`},qe={key:0},Je={class:`eyebrow`},Ye={class:`inspector-placeholder`},W=_({__name:`KnowledgeInspector`,props:{item:{},graph:{},editable:{type:Boolean},currentProjectId:{},canPublishProject:{type:Boolean},canManageProject:{type:Boolean},mode:{},conversationLaunchers:{}},emits:[`confirm`,`edit`,`createProject`,`openProject`,`publishProject`,`openDirectory`,`openGraph`,`openReplacement`,`manageProject`],setup(t,{emit:n}){let r=t,i=n,c=m(()=>r.item?.itemKind===`entity`?r.item.raw:null),_=m(()=>r.item?.itemKind===`relationship`?r.item.raw:null),v=m(()=>new Map(r.graph?.nodes.map(e=>[e.id,e.name])??[])),R=m(()=>!c.value||!r.graph?[]:r.graph.edges.filter(e=>D(e.source)===c.value?.id||D(e.target)===c.value?.id).slice(0,12)),z=m(()=>Object.entries(r.item?.raw.attributes??{}).filter(([,e])=>e!=null&&e!==``)),B=m(()=>k(r.item)),V=m(()=>C(r.item)),H=m(()=>r.item?.itemKind===`entity`&&[`PersonalProject`,`RelatedPersonalProject`].includes(r.item.type)),U=m(()=>r.editable&&r.item?.itemKind===`entity`&&!r.item.invalidAt&&!r.item.profileAspect&&!B.value),W=m(()=>r.editable&&!B.value),G=m(()=>r.editable&&!B.value&&!r.item?.invalidAt&&!!r.item?.classificationExplicit&&q.value===`pending`),K=m(()=>B.value&&r.canManageProject&&r.item?.type!==`ExternalKnowledgeSource`),Xe=m(()=>U.value||W.value||G.value||K.value||!!r.mode||H.value&&!!V.value&&V.value!==r.currentProjectId||H.value&&!!V.value&&r.canPublishProject),q=m(()=>r.item?T(r.item):`unclassified`),Ze=m(()=>r.item?j(r.item):``),J=m(()=>r.item?.confirmationBasis??null),Y=h(``),Qe=ee(),X=m(()=>r.conversationLaunchers??Qe.value),Z=m(()=>{let e=r.item?.replacedByItemId,t=r.item?.replacedByItemKind;return!e||!t?null:A(r.graph).find(n=>n.id===e&&n.itemKind===t)??null}),$e=m(()=>{let e=r.item;return e?.humanEdited?e.humanChangeStatus===`unseen`?s(`knowledge.workspace.inspector.humanReview.unseen`):e.humanChangeStatus===`viewed`?s(`knowledge.workspace.inspector.humanReview.viewed`):s(`knowledge.workspace.inspector.humanReview.reviewed`):``});function et(e){return typeof e==`string`?e:JSON.stringify(e)}function Q(e){return`${Math.round(e*100)}%`}function tt(e){return e.inheritanceMode===`descendants`?s(`knowledge.workspace.inspector.inheritance.descendants`):e.inheritanceMode===`selected_projects`?s(`knowledge.workspace.inspector.inheritance.selected`,{count:e.inheritedProjectIds.length}):s(`knowledge.workspace.inspector.inheritance.local`)}function nt(e){if(e.preferenceScope!==`project`||!e.preferenceProjectId)return s(`knowledge.workspace.inspector.personalGlobal`);let t=e.preferenceProjectId,n=r.graph?.nodes.find(e=>e.attributes?.projectId===t)?.name;return s(`knowledge.workspace.inspector.selectedProject`,{project:n&&n.toLocaleLowerCase()!==t.toLocaleLowerCase()?`${n} (${t})`:t})}function rt(e){return I(e,X.value)}function it(e){return te(e,X.value)}function $(e,t){return String(e.id??e.session_id??t)}async function at(e,t){await L(e)&&(Y.value=$(e,t))}return(n,r)=>(f(),o(`aside`,ne,[t.item?(f(),o(l,{key:0},[p(`p`,re,g(B.value?`PROJECT MATERIAL`:t.item.itemKind===`entity`?`ENTITY`:`RELATIONSHIP`),1),p(`h3`,null,g(t.item.itemKind===`entity`?t.item.title:_.value?.type),1),p(`div`,ie,[p(`span`,null,g(B.value?a(s)(`knowledge.workspace.inspector.ids.projection`):t.item.itemKind===`entity`?a(s)(`knowledge.workspace.inspector.ids.node`):a(s)(`knowledge.workspace.inspector.ids.relationship`)),1),p(`code`,null,g(t.item.id),1)]),p(`p`,ae,g(t.item.body),1),B.value?(f(),o(`section`,oe,[p(`div`,null,[p(`span`,null,g(a(s)(`knowledge.workspace.inspector.ownership`)),1),p(`strong`,null,g(a(P)(t.item)),1)]),p(`p`,null,g(a(s)(`knowledge.workspace.inspector.projectionCopy`)),1)])):(f(),o(`section`,{key:1,class:e([`inspector-classification`,`state-${q.value}`])},[p(`div`,null,[p(`span`,null,g(a(s)(`knowledge.workspace.inspector.currentJudgment`)),1),p(`strong`,null,g(a(b)(t.item)),1)]),p(`p`,null,g(Ze.value),1)],2)),!B.value&&t.item.humanEdited?(f(),o(`section`,{key:2,class:e([`inspector-human-change`,`state-${t.item.humanChangeStatus}`])},[p(`div`,null,[p(`span`,null,g(a(s)(`knowledge.workspace.inspector.humanReviewTitle`)),1),p(`strong`,null,g(a(O)(t.item.humanChangeStatus)),1)]),p(`p`,null,g($e.value),1),p(`small`,null,g(a(s)(`knowledge.workspace.inspector.humanVersion`,{version:t.item.humanChangeVersion})),1)],2)):u(``,!0),!B.value&&t.item.invalidAt?(f(),o(`section`,se,[p(`div`,ce,[p(`span`,null,g(a(s)(`knowledge.workspace.inspector.replacement`)),1),p(`strong`,null,g(Z.value?a(s)(`knowledge.workspace.inspector.replacedBy`):a(s)(`knowledge.workspace.inspector.noReplacement`)),1)]),Z.value?(f(),o(`button`,{key:0,class:`inspector-replacement-link`,type:`button`,onClick:r[0]||=e=>i(`openReplacement`,Z.value)},[p(`span`,null,[p(`strong`,null,g(Z.value.title),1),p(`small`,null,g(Z.value.body),1)]),p(`b`,null,g(a(s)(`knowledge.workspace.inspector.viewReplacement`)),1)])):t.item.replacedByItemId?(f(),o(`p`,le,g(a(s)(`knowledge.workspace.inspector.replacementOutOfScope`)),1)):(f(),o(`p`,ue,g(a(s)(`knowledge.workspace.inspector.missingReplacement`)),1))])):u(``,!0),p(`dl`,de,[p(`div`,null,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.fields.type`)),1),p(`dd`,null,g(t.item.type),1)]),B.value?u(``,!0):(f(),o(`div`,fe,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.fields.originQuadrant`)),1),p(`dd`,null,g(a(x)(t.item.originQuadrant)),1)])),B.value?u(``,!0):(f(),o(`div`,pe,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.fields.currentQuadrant`)),1),p(`dd`,null,g(a(x)(t.item.currentQuadrant)),1)])),B.value?u(``,!0):(f(),o(`div`,me,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.fields.quadrantExplanation`)),1),p(`dd`,null,g(a(w)(t.item.originQuadrant)),1)])),B.value?u(``,!0):(f(),o(`div`,he,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.fields.confirmationStatus`)),1),p(`dd`,null,g(a(b)(t.item)),1)])),B.value?u(``,!0):(f(),o(`div`,ge,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.fields.confidence`)),1),p(`dd`,null,g(Q(t.item.confidenceScore)),1)])),B.value?u(``,!0):(f(),o(`div`,_e,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.fields.utility`)),1),p(`dd`,null,g(Q(t.item.utilityScore)),1)])),B.value?u(``,!0):(f(),o(`div`,ve,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.fields.materialUse`)),1),p(`dd`,null,g(a(s)(`knowledge.workspace.inspector.useCount`,{uses:t.item.qualifiedUseCount,tasks:t.item.distinctTaskCount})),1)])),B.value?u(``,!0):(f(),o(`div`,ye,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.fields.recentUse`)),1),p(`dd`,null,g(a(N)(t.item.lastUsedAt)),1)])),!B.value&&!t.item.profileAspect?(f(),o(`div`,be,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.fields.inheritance`)),1),p(`dd`,null,g(tt(t.item)),1)])):u(``,!0),!B.value&&t.item.profileAspect?(f(),o(`div`,xe,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.fields.preference`)),1),p(`dd`,null,g(a(y)(t.item.profileAspect)),1)])):u(``,!0),!B.value&&t.item.profileAspect?(f(),o(`div`,Se,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.fields.effectiveScope`)),1),p(`dd`,null,g(nt(t.item)),1)])):u(``,!0),_.value?(f(),o(l,{key:11},[p(`div`,null,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.fields.source`)),1),p(`dd`,null,g(v.value.get(a(D)(_.value.source))??_.value.source_name??a(D)(_.value.source)),1)]),p(`div`,null,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.fields.target`)),1),p(`dd`,null,g(v.value.get(a(D)(_.value.target))??_.value.target_name??a(D)(_.value.target)),1)])],64)):u(``,!0),B.value?u(``,!0):(f(),o(`div`,Ce,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.fields.status`)),1),p(`dd`,null,g(t.item.invalidAt?a(s)(`knowledge.workspace.inspector.historical`):a(s)(`common.status.current`)),1)]))]),B.value?u(``,!0):(f(),o(l,{key:4},[p(`h4`,we,g(a(s)(`knowledge.workspace.inspector.basisTitle`)),1),J.value?(f(),o(`dl`,Te,[p(`div`,null,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.basis.existence`)),1),p(`dd`,null,g(J.value.existence_reason),1)]),p(`div`,null,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.basis.quadrant`)),1),p(`dd`,null,g(J.value.quadrant_reason),1)]),p(`div`,null,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.basis.proposer`)),1),p(`dd`,null,g(a(E)(J.value.proposed_by)),1)]),p(`div`,null,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.basis.confirmer`)),1),p(`dd`,null,g(a(E)(J.value.confirmed_by)),1)]),p(`div`,null,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.basis.time`)),1),p(`dd`,null,g(a(N)(J.value.confirmed_at)),1)]),J.value.agent_policy_version?(f(),o(`div`,Ee,[p(`dt`,null,g(a(s)(`knowledge.workspace.inspector.basis.agentPolicy`)),1),p(`dd`,null,g(J.value.agent_policy_version),1)])):u(``,!0)])):(f(),o(`p`,De,g(a(s)(`knowledge.workspace.inspector.legacyBasis`)),1))],64)),z.value.length?(f(),o(l,{key:5},[p(`h4`,Oe,g(a(s)(`knowledge.workspace.inspector.contentDetails`)),1),p(`dl`,ke,[(f(!0),o(l,null,d(z.value,([e,t])=>(f(),o(`div`,{key:e},[p(`dt`,null,g(e),1),p(`dd`,null,g(et(t)),1)]))),128))])],64)):u(``,!0),t.item.reasoningSummary?(f(),o(l,{key:6},[p(`h4`,Ae,g(a(s)(`knowledge.workspace.inspector.formation`)),1),p(`p`,je,g(t.item.reasoningSummary),1)],64)):u(``,!0),Xe.value?(f(),o(`div`,Me,[G.value?(f(),o(`button`,{key:0,class:`primary-action inspector-confirm-action`,type:`button`,onClick:r[1]||=e=>i(`confirm`,t.item)},g(t.item.profileAspect?a(s)(`knowledge.workspace.inspector.confirmPreference`):a(s)(`knowledge.workspace.inspector.confirmKnowledge`)),1)):u(``,!0),K.value?(f(),o(`button`,{key:1,class:`primary-action`,type:`button`,onClick:r[2]||=e=>i(`manageProject`,t.item)},g(a(s)(`knowledge.workspace.inspector.editMaterials`)),1)):u(``,!0),t.mode===`graph`?(f(),o(`button`,{key:2,class:`secondary-action`,type:`button`,onClick:r[3]||=e=>i(`openDirectory`,t.item)},g(a(s)(`knowledge.workspace.inspector.locateDirectory`)),1)):u(``,!0),t.mode===`directory`?(f(),o(`button`,{key:3,class:`secondary-action`,type:`button`,onClick:r[4]||=e=>i(`openGraph`,t.item)},g(a(s)(`knowledge.workspace.inspector.locateGraph`)),1)):u(``,!0),H.value&&V.value&&V.value!==t.currentProjectId?(f(),o(`button`,{key:4,class:`primary-action`,type:`button`,onClick:r[5]||=e=>i(`openProject`,V.value)},g(a(s)(`knowledge.workspace.inspector.enterProject`)),1)):u(``,!0),H.value&&V.value&&t.canPublishProject?(f(),o(`button`,{key:5,class:`secondary-action`,type:`button`,onClick:r[6]||=e=>i(`publishProject`,V.value)},g(a(s)(`knowledge.workspace.inspector.publish`)),1)):u(``,!0),U.value?(f(),o(`button`,{key:6,class:`primary-action`,type:`button`,onClick:r[7]||=e=>i(`createProject`,t.item)},g(a(s)(`knowledge.workspace.inspector.createProject`)),1)):u(``,!0),W.value?(f(),o(`button`,{key:7,class:`secondary-action inspector-edit-action`,type:`button`,onClick:r[8]||=e=>i(`edit`,t.item)},g(t.item.profileAspect?a(s)(`knowledge.workspace.inspector.correctPreference`):a(s)(`knowledge.workspace.inspector.correctOrAssign`)),1)):u(``,!0)])):u(``,!0),R.value.length?(f(),o(l,{key:8},[p(`h4`,Ne,g(a(s)(`knowledge.workspace.inspector.relations`)),1),p(`div`,Pe,[(f(!0),o(l,null,d(R.value,e=>(f(),o(`div`,{key:e.id,class:`inspector-relation`},[p(`strong`,Fe,g(e.type),1),p(`p`,Ie,g(e.fact||a(s)(`knowledge.workspace.inspector.relationshipFallback`)),1)]))),128))])],64)):u(``,!0),t.item.evidence.length?(f(),o(l,{key:9},[p(`h4`,Le,g(a(s)(`knowledge.workspace.inspector.evidence`)),1),p(`div`,Re,[(f(!0),o(l,null,d(t.item.evidence,(e,t)=>(f(),o(`article`,{key:$(e,t),class:`evidence-card`},[p(`strong`,null,g(e.name||e.source_description||a(s)(`knowledge.workspace.inspector.sourceRecord`)),1),p(`p`,null,g(e.summary||e.source_description),1),p(`span`,null,g(a(F)(e))+` · `+g(e.source_kind||a(s)(`knowledge.workspace.inspector.source`))+` · `+g(a(N)(e.reference_time||e.created_at)),1),e.source_excerpt?(f(),o(`p`,ze,g(e.source_excerpt),1)):u(``,!0),e.session_id?(f(),o(`div`,Be,[p(`button`,{class:`evidence-source-action`,type:`button`,onClick:n=>at(e,t)},g(Y.value===$(e,t)?a(s)(`knowledge.workspace.inspector.copiedSessionId`):a(s)(`knowledge.workspace.inspector.copySessionId`)),9,Ve),rt(e)?(f(),o(`a`,{key:0,class:`evidence-source-action`,href:rt(e)??void 0,title:a(s)(`knowledge.workspace.inspector.openConversationWith`,{app:it(e)??a(F)(e)})},g(a(s)(`knowledge.workspace.inspector.openConversation`)),9,He)):u(``,!0)])):u(``,!0)]))),128))])],64)):u(``,!0),t.item.revisions.length?(f(),o(l,{key:10},[p(`h4`,Ue,g(a(s)(`knowledge.workspace.inspector.revisions`)),1),p(`div`,We,[(f(!0),o(l,null,d(t.item.revisions,(e,t)=>(f(),o(`article`,{key:String(e.id??t),class:`history-row`},[p(`strong`,null,g(a(S)(e.action)),1),p(`p`,null,g(e.reason??e.summary??a(s)(`knowledge.workspace.inspector.noRevisionCopy`)),1),p(`span`,null,g(a(N)(e.created_at)),1)]))),128))])],64)):u(``,!0),t.item.auditEvents.length?(f(),o(l,{key:11},[p(`h4`,Ge,g(a(s)(`knowledge.workspace.inspector.audit`)),1),p(`div`,Ke,[(f(!0),o(l,null,d(t.item.auditEvents,e=>(f(),o(`article`,{key:e.id,class:`history-row`},[p(`strong`,null,g(a(M)(e.action)),1),p(`p`,null,g(e.reason),1),p(`span`,null,g(a(s)(`knowledge.workspace.inspector.version`,{version:e.human_change_version}))+` · `+g(a(N)(e.created_at)),1),e.action===`agent_review`?(f(),o(`small`,qe,g(a(s)(`knowledge.workspace.inspector.conflictClassification`,{conflict:e.conflict_check===`no_conflict`?a(s)(`knowledge.workspace.inspector.conflictNone`):a(s)(`knowledge.workspace.inspector.conflictFound`),classification:e.classification_check===`reasonable`?a(s)(`knowledge.workspace.inspector.classificationReasonable`):a(s)(`knowledge.workspace.inspector.classificationAdjust`)})),1)):u(``,!0)]))),128))])],64)):u(``,!0)],64)):(f(),o(l,{key:1},[p(`p`,Je,g(a(s)(`knowledge.workspace.inspector.contentDetails`)),1),p(`h3`,null,g(a(s)(`knowledge.workspace.inspector.placeholderTitle`)),1),p(`p`,Ye,g(a(s)(`knowledge.workspace.inspector.placeholderCopy`)),1)],64))]))}});export{U as n,W as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{$ as e,D as t,E as n,F as r,L as i,Q as a,R as o,_ as s,a as c,b as l,d as ee,f as u,g as d,h as f,j as p,k as m,m as h,p as g,q as _,s as v,tt as y,u as b,x,y as S}from"./i18n-CwqXDI1C.js";import{a as C,r as w,t as te}from"./console-D_2zC4lm.js";import{t as T}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as E}from"./SearchableSelect-B3-5IPup.js";import{r as D,t as O}from"./identity-DmGcY3Y6.js";import{a as k,i as A,n as j,r as M,t as N}from"./KnowledgeEditDialog-u7lpfN3j.js";import{n as ne,t as P}from"./KnowledgeInspector-k4xnHtXd.js";import{D as F,E as I,_ as L,g as R,n as z,o as re,r as ie,t as B,u as ae,v as V}from"./model-CVoOdRsL.js";var H={open:``,class:`project-dialog batch-confirm-dialog vue-dialog`},U={class:`project-dialog-shell`},W={class:`project-dialog-header`},oe={class:`batch-confirm-controls`},se={key:0,class:`batch-group-summary`},G={class:`batch-confirmer-fields`},K=[`required`,`placeholder`],q=[`placeholder`],J={class:`batch-confirm-rule`},Y={class:`batch-confirm-review`},ce={class:`batch-review-heading`},le={key:0,class:`batch-limit-note`},X={class:`batch-review-list`},ue=[`value`],Z={class:`batch-confirm-acknowledgement`},de={key:0,class:`publish-dialog-error`,role:`alert`},fe={class:`publish-dialog-actions`},Q=[`disabled`],pe=[`disabled`],me=T(x({__name:`KnowledgeBatchConfirmDialog`,props:{groups:{},personalSpaceId:{}},emits:[`close`,`saved`],setup(e,{emit:t}){let n=e,i=t,f=te(),x=_(``),w=_([]),T=_(`user`),k=_(``),A=_(``),j=_(!1),M=_(!1),N=_(``),ne=g(()=>n.groups.map(e=>({value:e.key,label:e.label,meta:c(`knowledge.dialogs.batch.groupMeta`,{kind:e.kind===`source`?c(`knowledge.dialogs.batch.sameSource`):c(`knowledge.dialogs.batch.sameSession`),count:e.items.length}),search:`${D(e.value)} ${e.description}`}))),P=g(()=>n.groups.find(({key:e})=>e===x.value)??null),F=g(()=>P.value?.items.slice(0,200)??[]),L=g(()=>{let e=new Set(w.value);return F.value.filter(t=>e.has(B(t)))}),R=g(()=>F.value.length>0&&L.value.length===F.value.length),re=g(()=>!M.value&&L.value.length>=2&&!!A.value.trim()&&j.value&&(T.value!==`authoritative_source`||!!k.value.trim())),ie=g(()=>[{value:`user`,label:c(`knowledge.domain.actors.user`)},{value:`authoritative_source`,label:c(`knowledge.domain.actors.authoritative_source`)}]);r(()=>n.groups,e=>{e.some(({key:e})=>e===x.value)||(x.value=e[0]?.key??``)},{immediate:!0}),r(x,()=>{w.value=F.value.map(B),j.value=!1,N.value=``},{immediate:!0});function B(e){return`${e.itemKind}:${e.id}`}function ae(){w.value=R.value?[]:F.value.map(B),j.value=!1}function V(e){let t=P.value;return t?z(e,t):null}async function me(){let e=P.value;if(!e)return $(c(`knowledge.dialogs.batch.errors.groupRequired`));if(L.value.length<2)return $(c(`knowledge.dialogs.batch.errors.itemsRequired`));if(!A.value.trim())return $(c(`knowledge.dialogs.batch.errors.reasonRequired`));if(T.value===`authoritative_source`&&!k.value.trim())return $(c(`knowledge.dialogs.batch.errors.sourceNameRequired`));if(!j.value)return $(c(`knowledge.dialogs.batch.errors.acknowledgmentRequired`));M.value=!0,N.value=``;try{let t=await C(`/api/knowledge/batch-confirmation`,{personalSpaceId:n.personalSpaceId,groupKind:e.kind,groupValue:e.value,reason:A.value.trim(),confirmer:{kind:T.value,label:k.value.trim()||null},items:L.value.map(e=>{let t=V(e);return{itemId:e.id,itemKind:e.itemKind,existenceReason:t.existenceReason,quadrantReason:t.quadrantReason,proposedBy:t.proposedBy}})});f.notify(c(`knowledge.dialogs.batch.confirmed`,{count:t.confirmed_count})),i(`saved`),i(`close`)}catch(e){N.value=e instanceof Error?e.message:c(`knowledge.dialogs.batch.errors.failed`),f.reportError(e)}finally{M.value=!1}}function $(e){N.value=e}return(e,t)=>(m(),s(`dialog`,H,[h(`div`,U,[h(`header`,W,[h(`div`,null,[t[8]||=h(`p`,{class:`eyebrow`},`BATCH CONFIRMATION`,-1),h(`h3`,null,y(a(c)(`knowledge.dialogs.batch.title`)),1),h(`p`,null,y(a(c)(`knowledge.dialogs.batch.intro`)),1)]),h(`button`,{class:`secondary-action`,type:`button`,onClick:t[0]||=e=>i(`close`)},y(a(c)(`common.actions.close`)),1)]),h(`form`,{class:`batch-confirm-form`,onSubmit:ee(me,[`prevent`])},[h(`section`,oe,[h(`label`,null,[S(y(a(c)(`knowledge.dialogs.batch.range`))+` `,1),l(E,{modelValue:x.value,"onUpdate:modelValue":t[1]||=e=>x.value=e,options:ne.value,label:a(c)(`knowledge.dialogs.batch.rangeLabel`),searchable:``},null,8,[`modelValue`,`options`,`label`])]),P.value?(m(),s(`div`,se,[h(`span`,null,y(P.value.kind===`source`?a(c)(`knowledge.dialogs.batch.sameSource`):a(c)(`knowledge.dialogs.batch.sameSession`)),1),h(`strong`,null,y(P.value.label),1),h(`p`,null,y(P.value.description),1),h(`small`,null,`#`+y(a(O)(P.value.value,28)),1)])):d(``,!0),h(`div`,G,[h(`label`,null,[S(y(a(c)(`knowledge.dialogs.batch.confirmer`))+` `,1),l(E,{modelValue:T.value,"onUpdate:modelValue":t[2]||=e=>T.value=e,options:ie.value,label:a(c)(`knowledge.dialogs.batch.confirmerLabel`)},null,8,[`modelValue`,`options`,`label`])]),h(`label`,null,[S(y(a(c)(`knowledge.dialogs.batch.confirmerDescription`))+` `,1),o(h(`input`,{"onUpdate:modelValue":t[3]||=e=>k.value=e,maxlength:`160`,required:T.value===`authoritative_source`,placeholder:T.value===`user`?a(c)(`knowledge.dialogs.batch.userPlaceholder`):a(c)(`knowledge.dialogs.batch.sourcePlaceholder`)},null,8,K),[[b,k.value]])])]),h(`label`,null,[S(y(a(c)(`knowledge.dialogs.batch.basis`))+` `,1),o(h(`textarea`,{"onUpdate:modelValue":t[4]||=e=>A.value=e,maxlength:`2000`,rows:`3`,required:``,placeholder:a(c)(`knowledge.dialogs.batch.basisPlaceholder`)},null,8,q),[[b,A.value]])]),h(`p`,J,y(a(c)(`knowledge.dialogs.batch.agentBoundary`)),1)]),h(`section`,Y,[h(`div`,ce,[h(`div`,null,[h(`h4`,null,y(a(c)(`knowledge.dialogs.batch.itemReview`)),1),h(`p`,null,y(a(c)(`knowledge.dialogs.batch.selected`,{selected:L.value.length,total:F.value.length})),1)]),h(`button`,{class:`secondary-action`,type:`button`,onClick:ae},y(R.value?a(c)(`knowledge.dialogs.batch.clearAll`):a(c)(`knowledge.dialogs.batch.selectAll`)),1)]),(P.value?.items.length??0)>200?(m(),s(`p`,le,y(a(c)(`knowledge.dialogs.batch.limit`)),1)):d(``,!0),h(`div`,X,[(m(!0),s(u,null,p(F.value,e=>(m(),s(`label`,{key:B(e),class:`batch-review-item`},[o(h(`input`,{"onUpdate:modelValue":t[5]||=e=>w.value=e,type:`checkbox`,value:B(e)},null,8,ue),[[v,w.value]]),h(`span`,null,[h(`strong`,null,y(e.title),1),h(`small`,null,y(a(I)(e.originQuadrant))+` · `+y(e.type),1),h(`em`,null,y(V(e)?.existenceReason),1),h(`em`,null,y(V(e)?.quadrantReason),1)])]))),128))]),h(`label`,Z,[o(h(`input`,{"onUpdate:modelValue":t[6]||=e=>j.value=e,type:`checkbox`},null,512),[[v,j.value]]),h(`span`,null,y(a(c)(`knowledge.dialogs.batch.acknowledgment`)),1)])]),N.value?(m(),s(`p`,de,y(N.value),1)):d(``,!0),h(`div`,fe,[h(`button`,{class:`secondary-action`,type:`button`,disabled:M.value,onClick:t[7]||=e=>i(`close`)},y(a(c)(`common.actions.cancel`)),9,Q),h(`button`,{class:`primary-action`,type:`submit`,disabled:!re.value},y(M.value?a(c)(`knowledge.dialogs.batch.confirming`):a(c)(`knowledge.dialogs.batch.confirmItems`,{count:L.value.length})),9,pe)])],32)])]))}}),[[`__scopeId`,`data-v-5b6ea24b`]]),$={class:`view knowledge-organizer`},he={class:`organizer-toolbar`},ge={class:`organizer-search`},_e=[`placeholder`],ve=[`aria-label`],ye=[`aria-pressed`],be=[`data-quadrant`,`aria-pressed`,`title`,`onClick`],xe=[`aria-label`],Se=[`aria-pressed`],Ce=[`data-review-state`,`aria-pressed`,`title`,`onClick`],we={class:`organizer-toolbar-actions`},Te={class:`organizer-result-summary`},Ee={key:0},De={class:`organizer-table-head`,"aria-hidden":`true`},Oe=[`onClick`],ke={class:`organizer-item-copy`},Ae={class:`organizer-basis`},je={key:0,class:`organizer-loading-inline`},Me={class:`empty-state`},Ne=100,Pe=68,Fe=T(x({__name:`KnowledgeOrganizerPage`,setup(ee){let v=te(),x=_(null),C=_(!1),T=_(!1),E=_(``),D=_(`all`),O=_(`all`),z=_(null),H=_(null),U=_(null),W=_(!1),oe=M(),se=A(g(()=>oe||C.value&&!x.value)),G=0,K=g(()=>[{value:`known_unknown`,short:c(`knowledge.workspace.organizer.quadrants.known_unknown.short`),coordinate:c(`knowledge.workspace.organizer.quadrants.known_unknown.coordinate`)},{value:`known_known`,short:c(`knowledge.workspace.organizer.quadrants.known_known.short`),coordinate:c(`knowledge.workspace.organizer.quadrants.known_known.coordinate`)},{value:`unknown_unknown`,short:c(`knowledge.workspace.organizer.quadrants.unknown_unknown.short`),coordinate:c(`knowledge.workspace.organizer.quadrants.unknown_unknown.coordinate`)},{value:`unknown_known`,short:c(`knowledge.workspace.organizer.quadrants.unknown_known.short`),coordinate:c(`knowledge.workspace.organizer.quadrants.unknown_known.coordinate`)}]),q=g(()=>[{value:`pending`,label:c(`knowledge.domain.reviewStates.pending`),hint:c(`knowledge.workspace.organizer.review.pendingHint`)},{value:`agent_confirmed`,label:c(`knowledge.domain.reviewStates.agent_confirmed`),hint:c(`knowledge.workspace.organizer.review.agentConfirmedHint`)},{value:`confirmed`,label:c(`knowledge.domain.reviewStates.confirmed`),hint:c(`knowledge.workspace.organizer.review.confirmedHint`)}]),J=g(()=>R(x.value)),Y=g(()=>ie(J.value)),ce=g(()=>Object.fromEntries([...K.value.map(({value:e})=>e),`unclassified`].map(e=>[e,J.value.filter(t=>t.originQuadrant===e).length]))),le=g(()=>D.value!==`all`),X=g(()=>le.value?J.value.filter(e=>e.originQuadrant===D.value):J.value),ue=g(()=>Object.fromEntries(q.value.map(({value:e})=>[e,X.value.filter(t=>L(t)===e).length]))),Z=g(()=>{let e=E.value.trim().toLocaleLowerCase();return J.value.filter(t=>D.value!==`all`&&t.originQuadrant!==D.value||O.value!==`all`&&L(t)!==O.value?!1:!e||[t.title,t.body,t.type,I(t.originQuadrant),F(t),...t.evidence.flatMap(e=>[e.name,e.summary,e.source_description])].filter(Boolean).join(` `).toLocaleLowerCase().includes(e))}),de=g(()=>`${E.value}\u0000${D.value}\u0000${O.value}`),fe=g(()=>z.value?Z.value.findIndex(({id:e,itemKind:t})=>e===z.value?.id&&t===z.value?.itemKind):-1);r(()=>v.activePersonalSpace?.id,e=>{e&&Q(e)},{immediate:!0}),r(Z,e=>{z.value&&!e.some(({id:e,itemKind:t})=>e===z.value?.id&&t===z.value?.itemKind)&&(z.value=null)}),t(()=>{G+=1});async function Q(e=v.activePersonalSpace?.id){if(!e)return;let t=++G;C.value=!0,T.value=!1;let r=!1;try{let i=0;for(;t===G;){let a=await w(`/api/graph?${new URLSearchParams({spaceId:e,limit:String(Ne),offset:String(i)})}`);if(t!==G)return;if(x.value=r?B(x.value,a):a,r=!0,z.value&&=J.value.find(({id:e,itemKind:t})=>e===z.value?.id&&t===z.value?.itemKind)??null,C.value=!1,!a.truncated)break;let o=a.next_offset;if(!Number.isInteger(o)||o<=i)throw Error(c(`knowledge.workspace.organizer.paginationError`));i=o,T.value=!0,await n()}}catch(e){r||(x.value=null),v.reportError(e)}finally{t===G&&(C.value=!1,T.value=!1)}}function pe(e){return`${e.itemKind}:${e.id}`}function Fe(e){D.value=D.value===e?`all`:e}function Ie(e){O.value=e}function Le(e){E.value=``,D.value=e.originQuadrant,O.value=`all`,z.value=e}return(t,n)=>(m(),s(`section`,$,[h(`div`,he,[h(`label`,ge,[h(`span`,null,y(a(c)(`knowledge.workspace.organizer.filterKnowledge`)),1),o(h(`input`,{"onUpdate:modelValue":n[0]||=e=>E.value=e,type:`search`,placeholder:a(c)(`knowledge.workspace.organizer.searchPlaceholder`)},null,8,_e),[[b,E.value]])]),h(`div`,{class:`quadrant-filter`,"aria-label":a(c)(`knowledge.workspace.organizer.quadrantFilterAria`)},[h(`span`,null,y(a(c)(`knowledge.workspace.organizer.discoverySource`)),1),h(`button`,{type:`button`,"data-quadrant":`all`,class:e({active:D.value===`all`}),"aria-pressed":D.value===`all`,onClick:n[1]||=e=>D.value=`all`},[S(y(a(c)(`common.status.all`))+` `,1),h(`strong`,null,y(J.value.length),1)],10,ye),(m(!0),s(u,null,p(K.value,t=>(m(),s(`button`,{key:t.value,type:`button`,"data-quadrant":t.value,class:e({active:D.value===t.value}),"aria-pressed":D.value===t.value,title:t.coordinate,onClick:e=>Fe(t.value)},[S(y(t.short)+` `,1),h(`strong`,null,y(ce.value[t.value]),1)],10,be))),128))],8,ve),h(`div`,{class:`review-state-filter`,"aria-label":a(c)(`knowledge.workspace.organizer.reviewFilterAria`)},[h(`span`,null,y(a(c)(`knowledge.workspace.organizer.reviewStatus`)),1),h(`button`,{type:`button`,"data-review-state":`all`,class:e({active:O.value===`all`}),"aria-pressed":O.value===`all`,onClick:n[2]||=e=>Ie(`all`)},[S(y(a(c)(`common.status.all`))+` `,1),h(`strong`,null,y(X.value.length),1)],10,Se),(m(!0),s(u,null,p(q.value,t=>(m(),s(`button`,{key:t.value,type:`button`,"data-review-state":t.value,class:e([`state-${t.value}`,{active:O.value===t.value}]),"aria-pressed":O.value===t.value,title:t.hint,onClick:e=>Ie(t.value)},[S(y(t.label)+` `,1),h(`strong`,null,y(ue.value[t.value]),1)],10,Ce))),128))],8,xe),h(`div`,we,[h(`p`,Te,[S(y(a(c)(`knowledge.workspace.organizer.showing`,{visible:Z.value.length,total:X.value.length}))+` `,1),O.value===`all`?d(``,!0):(m(),s(`span`,Ee,` · `+y(q.value.find(({value:e})=>e===O.value)?.label),1))]),Y.value.length?(m(),s(`button`,{key:0,class:`toolbar-action batch-confirm-action`,type:`button`,onClick:n[3]||=e=>W.value=!0},y(a(c)(`knowledge.workspace.organizer.batchConfirm`,{count:Y.value.length})),1)):d(``,!0),h(`button`,{class:`toolbar-action`,type:`button`,onClick:n[4]||=e=>Q()},y(a(c)(`common.actions.refresh`)),1)])]),a(se)?(m(),f(k,{key:0,label:a(c)(`common.status.loadingKnowledge`)},null,8,[`label`])):(m(),s(`div`,{key:1,class:e([`organizer-layout`,{"has-selection":z.value}])},[l(ne,{class:`organizer-directory`,items:Z.value,"row-height":Pe,"active-index":fe.value,"reset-key":de.value,"item-key":pe,"min-width":`var(--organizer-list-min-width)`,label:a(c)(`knowledge.workspace.organizer.directoryAria`)},{header:i(()=>[h(`div`,De,[h(`span`,null,y(a(c)(`knowledge.workspace.workspace.view.knowledgeContent`)),1),h(`span`,null,y(a(c)(`knowledge.workspace.workspace.view.columns.quadrant`)),1),h(`span`,null,y(a(c)(`knowledge.workspace.workspace.view.columns.review`)),1),h(`span`,null,y(a(c)(`knowledge.workspace.organizer.confirmationBasis`)),1),h(`span`,null,y(a(c)(`knowledge.workspace.organizer.updated`)),1)])]),default:i(({item:t})=>[h(`button`,{type:`button`,class:e([`organizer-row`,{selected:z.value?.id===t.id}]),onClick:e=>z.value=t},[h(`span`,ke,[h(`strong`,null,y(t.title),1),h(`small`,null,y(t.body),1)]),h(`span`,{class:e([`quadrant-chip`,t.originQuadrant])},y(a(I)(t.originQuadrant)),3),h(`span`,{class:e([`review-chip`,`state-${a(L)(t)}`])},y(a(F)(t)),3),h(`span`,Ae,y(a(re)(t)),1),h(`time`,null,y(a(ae)(a(V)(t))),1)],10,Oe)]),footer:i(()=>[T.value?(m(),s(`div`,je,y(a(c)(`knowledge.workspace.organizer.loadingMore`)),1)):d(``,!0)]),empty:i(()=>[h(`div`,Me,y(J.value.length?a(c)(`knowledge.workspace.organizer.noFilteredContent`):a(c)(`knowledge.workspace.organizer.noContent`)),1)]),_:1},8,[`items`,`active-index`,`reset-key`,`label`]),l(P,{item:z.value,graph:x.value,editable:``,onConfirm:n[5]||=e=>H.value=e,onEdit:n[6]||=e=>U.value=e,onOpenReplacement:Le},null,8,[`item`,`graph`])],2)),l(N,{item:U.value,"personal-space-id":a(v).activePersonalSpace?.id??``,"personal-project-id":null,projects:a(v).state?.personalProjects??[],"replacement-items":J.value,onClose:n[7]||=e=>U.value=null,onSaved:n[8]||=e=>Q()},null,8,[`item`,`personal-space-id`,`projects`,`replacement-items`]),l(j,{item:H.value,"personal-space-id":a(v).activePersonalSpace?.id??``,"personal-project-id":null,onClose:n[9]||=e=>H.value=null,onSaved:n[10]||=e=>Q()},null,8,[`item`,`personal-space-id`]),W.value?(m(),f(me,{key:2,groups:Y.value,"personal-space-id":a(v).activePersonalSpace?.id??``,onClose:n[11]||=e=>W.value=!1,onSaved:n[12]||=e=>Q()},null,8,[`groups`,`personal-space-id`])):d(``,!0)]))}}),[[`__scopeId`,`data-v-0646b6aa`]]);export{Fe as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{h as e,k as t,x as n}from"./i18n-CwqXDI1C.js";import{t as r}from"./KnowledgeWorkspace-Lq3d-MeC.js";var i=n({__name:`KnowledgePage`,setup(n){return(n,i)=>(t(),e(r))}});export{i as default};
|