@theihtisham/agent-shadow-brain 7.1.0 → 7.2.0
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/CHANGELOG.md +9 -0
- package/README.md +36 -418
- package/dist/brain/auto-update.js +1 -1
- package/dist/brain/brain-portability.js +1 -1
- package/dist/brain/context-assembly.d.ts +58 -0
- package/dist/brain/context-assembly.d.ts.map +1 -0
- package/dist/brain/context-assembly.js +207 -0
- package/dist/brain/context-assembly.js.map +1 -0
- package/dist/brain/feature-settings.d.ts +53 -0
- package/dist/brain/feature-settings.d.ts.map +1 -0
- package/dist/brain/feature-settings.js +232 -0
- package/dist/brain/feature-settings.js.map +1 -0
- package/dist/brain/global-brain.d.ts +1 -0
- package/dist/brain/global-brain.d.ts.map +1 -1
- package/dist/brain/global-brain.js +3 -3
- package/dist/brain/global-brain.js.map +1 -1
- package/dist/brain/mcp-server.d.ts +2 -0
- package/dist/brain/mcp-server.d.ts.map +1 -1
- package/dist/brain/mcp-server.js +47 -5
- package/dist/brain/mcp-server.js.map +1 -1
- package/dist/brain/orchestrator.js +1 -1
- package/dist/brain/subconscious.d.ts +19 -24
- package/dist/brain/subconscious.d.ts.map +1 -1
- package/dist/brain/subconscious.js +77 -218
- package/dist/brain/subconscious.js.map +1 -1
- package/dist/cli.js +4 -2
- package/dist/cli.js.map +1 -1
- package/dist/context-cli.d.ts +3 -0
- package/dist/context-cli.d.ts.map +1 -0
- package/dist/context-cli.js +54 -0
- package/dist/context-cli.js.map +1 -0
- package/dist/dashboard/server.d.ts +1 -0
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +32 -4
- package/dist/dashboard/server.js.map +1 -1
- package/dist/dashboard/v6-dashboard-html.d.ts +1 -1
- package/dist/dashboard/v6-dashboard-html.d.ts.map +1 -1
- package/dist/dashboard/v6-dashboard-html.js +5 -27
- package/dist/dashboard/v6-dashboard-html.js.map +1 -1
- package/dist/dashboard/workspace-api.d.ts +10 -0
- package/dist/dashboard/workspace-api.d.ts.map +1 -0
- package/dist/dashboard/workspace-api.js +193 -0
- package/dist/dashboard/workspace-api.js.map +1 -0
- package/dist/dashboard/workspace-html.d.ts +2 -0
- package/dist/dashboard/workspace-html.d.ts.map +1 -0
- package/dist/dashboard/workspace-html.js +1555 -0
- package/dist/dashboard/workspace-html.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +4 -2
- package/dist/types.d.ts.map +1 -1
- package/docs/WORKSPACE.md +70 -0
- package/docs/assets/context-flow-v7.2.png +0 -0
- package/docs/assets/workspace-graph-v7.2.png +0 -0
- package/docs/assets/workspace-overview-v7.2.png +0 -0
- package/docs/launch/RELEASE_NOTES_v7.2.0.md +24 -0
- package/package.json +19 -121
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v6-dashboard-html.d.ts","sourceRoot":"","sources":["../../src/dashboard/v6-dashboard-html.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"v6-dashboard-html.d.ts","sourceRoot":"","sources":["../../src/dashboard/v6-dashboard-html.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB,gzqTAqtItB,CAAC"}
|
|
@@ -7,7 +7,7 @@ export const V6_DASHBOARD_HTML = `<!DOCTYPE html>
|
|
|
7
7
|
<meta charset="UTF-8">
|
|
8
8
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0">
|
|
9
9
|
<meta name="color-scheme" content="dark light">
|
|
10
|
-
<title>Shadow Brain v7.
|
|
10
|
+
<title>Shadow Brain v7.2 — Hive Mind Control</title>
|
|
11
11
|
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><rect width='100' height='100' rx='22' fill='%230a0e1a'/><path d='M50 50 L24 30 M50 50 L76 30 M50 50 L24 70 M50 50 L76 70' stroke='%23ffffff' stroke-opacity='0.28' stroke-width='3'/><circle cx='50' cy='50' r='12' fill='%2318ffff'/><circle cx='24' cy='30' r='7' fill='%2310e68c'/><circle cx='76' cy='30' r='7' fill='%23ffb53f'/><circle cx='24' cy='70' r='7' fill='%23a855f7'/><circle cx='76' cy='70' r='7' fill='%23ec4899'/></svg>">
|
|
12
12
|
<link rel="preconnect" href="https://cdn.jsdelivr.net">
|
|
13
13
|
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
|
|
@@ -1071,7 +1071,7 @@ export const V6_DASHBOARD_HTML = `<!DOCTYPE html>
|
|
|
1071
1071
|
</div>
|
|
1072
1072
|
|
|
1073
1073
|
<div class="brand">
|
|
1074
|
-
<div class="name">Shadow Brain <span style="color:var(--text-3);font-size:10px;font-weight:600">v7.
|
|
1074
|
+
<div class="name">Shadow Brain <span style="color:var(--text-3);font-size:10px;font-weight:600">v7.2 Hive Mind</span></div>
|
|
1075
1075
|
<div class="state" id="brain-state">learning · reflecting · charging</div>
|
|
1076
1076
|
</div>
|
|
1077
1077
|
|
|
@@ -2092,7 +2092,7 @@ export const V6_DASHBOARD_HTML = `<!DOCTYPE html>
|
|
|
2092
2092
|
<!-- ════ FEATURE TOGGLES ═════════════════════════════════════════ -->
|
|
2093
2093
|
<section class="section" id="tab-features">
|
|
2094
2094
|
<div class="accent-bar"></div>
|
|
2095
|
-
<div class="section-header"><div><h1 class="section-title">Feature
|
|
2095
|
+
<div class="section-header"><div><h1 class="section-title">Feature controls</h1><div class="section-subtitle">Manage context, briefings, and the activity feed in the workspace.</div></div></div>
|
|
2096
2096
|
<div class="card"><div class="feature-grid" id="feature-grid"></div></div>
|
|
2097
2097
|
</section>
|
|
2098
2098
|
|
|
@@ -2519,7 +2519,7 @@ function renderMemoryItems(items, emptyMessage) {
|
|
|
2519
2519
|
if (!items || !items.length) return '<div class="empty-tight">' + htmlEscape(emptyMessage) + '</div>';
|
|
2520
2520
|
return items.map(item => {
|
|
2521
2521
|
const importancePct = item.importance !== undefined ? Math.round((item.importance || 0) * 100) + '%' : '';
|
|
2522
|
-
// v7.
|
|
2522
|
+
// v7.2.0: real blended recall confidence (recency + importance + corroboration + usage + relevance).
|
|
2523
2523
|
const conf = item.confidence && typeof item.confidence.score === 'number' ? item.confidence : null;
|
|
2524
2524
|
const confCls = conf ? (conf.level === 'high' ? 'green' : conf.level === 'medium' ? 'yellow' : 'red') : '';
|
|
2525
2525
|
const confBadge = conf ? '<span class="pill ' + confCls + '" title="Heuristic recall score (not probability of truth) ' + Math.round(conf.score * 100) + '% (' + htmlEscape(conf.level) + ') | relevance ' + conf.signals.relevance + ', creation-age recency ' + conf.signals.recency + ', importance ' + conf.signals.importance + ', matching-content agent reports ' + conf.signals.corroboration + ', usage ' + conf.signals.usage + '">\u2737 ' + Math.round(conf.score * 100) + '%</span>' : '';
|
|
@@ -3124,29 +3124,7 @@ async function exportPackage() {
|
|
|
3124
3124
|
|
|
3125
3125
|
// ──── Features ─────────────────────────────────────────────────────────
|
|
3126
3126
|
async function refreshFeatures() {
|
|
3127
|
-
|
|
3128
|
-
document.getElementById('feature-grid').innerHTML = FEATURES.map(([id, name, desc]) => {
|
|
3129
|
-
const on = cfg[id] !== false; // default enabled
|
|
3130
|
-
return \`<div class="feature-toggle" id="ft-\${id}">
|
|
3131
|
-
<div class="icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/></svg></div>
|
|
3132
|
-
<div class="meta"><div class="name">\${name}</div><div class="desc">\${desc}</div></div>
|
|
3133
|
-
<label class="switch"><input type="checkbox" \${on ? 'checked' : ''} data-feature="\${id}"><span class="slider"></span></label>
|
|
3134
|
-
</div>\`;
|
|
3135
|
-
}).join('');
|
|
3136
|
-
// Bind listeners cleanly so the toggle always fires
|
|
3137
|
-
document.querySelectorAll('#feature-grid input[data-feature]').forEach(el => {
|
|
3138
|
-
el.addEventListener('change', async e => {
|
|
3139
|
-
const id = e.target.getAttribute('data-feature');
|
|
3140
|
-
const on = e.target.checked;
|
|
3141
|
-
const res = await api('/api/v6/features-config', { [id]: on });
|
|
3142
|
-
toast(on ? 'Enabled' : 'Disabled', id, on ? 'success' : 'warn');
|
|
3143
|
-
if (!res) { e.target.checked = !on; /* revert on error */ }
|
|
3144
|
-
});
|
|
3145
|
-
});
|
|
3146
|
-
}
|
|
3147
|
-
async function toggleFeature(id, on) {
|
|
3148
|
-
const res = await api('/api/v6/features-config', { [id]: on });
|
|
3149
|
-
if (res) toast(on ? 'Enabled' : 'Disabled', id, on ? 'success' : 'warn');
|
|
3127
|
+
document.getElementById('feature-grid').innerHTML = '<div><p>Runtime controls have moved to the workspace. Each switch describes the behavior it changes.</p><p style="margin-top:16px"><a class="btn primary" href="/#features">Open feature controls</a></p></div>';
|
|
3150
3128
|
}
|
|
3151
3129
|
|
|
3152
3130
|
// ──── Models & Intelligence ────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v6-dashboard-html.js","sourceRoot":"","sources":["../../src/dashboard/v6-dashboard-html.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,sFAAsF;AACtF,wFAAwF;AAExF,MAAM,CAAC,MAAM,iBAAiB,GAAG
|
|
1
|
+
{"version":3,"file":"v6-dashboard-html.js","sourceRoot":"","sources":["../../src/dashboard/v6-dashboard-html.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,sFAAsF;AACtF,wFAAwF;AAExF,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAqtIzB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
import { type GlobalBrain } from '../brain/global-brain.js';
|
|
3
|
+
import { type FeatureSettingsStore } from '../brain/feature-settings.js';
|
|
4
|
+
export interface WorkspaceDependencies {
|
|
5
|
+
brain?: GlobalBrain;
|
|
6
|
+
settings?: FeatureSettingsStore;
|
|
7
|
+
}
|
|
8
|
+
/** The workspace API reads only the memory store and dedicated feature settings. */
|
|
9
|
+
export declare function handleWorkspaceRequest(req: IncomingMessage, res: ServerResponse, dependencies?: WorkspaceDependencies): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=workspace-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-api.d.ts","sourceRoot":"","sources":["../../src/dashboard/workspace-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5E,OAAO,EAA2C,KAAK,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAMlH,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACjC;AAuED,oFAAoF;AACpF,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,YAAY,GAAE,qBAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAqG/I"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { getGlobalBrain } from '../brain/global-brain.js';
|
|
2
|
+
import { getBrainBus } from '../brain/brain-bus.js';
|
|
3
|
+
import { assembleContext } from '../brain/context-assembly.js';
|
|
4
|
+
import { FEATURE_DEFINITIONS, getFeatureSettings } from '../brain/feature-settings.js';
|
|
5
|
+
const INVENTORY_LIMIT = 2500;
|
|
6
|
+
function sources(entry) {
|
|
7
|
+
const metadata = entry.metadata ?? {};
|
|
8
|
+
const candidates = [metadata.source, metadata.sourceFile, metadata.filePath, ...(Array.isArray(metadata.sources) ? metadata.sources : [])];
|
|
9
|
+
return [...new Set(candidates.filter((item) => typeof item === 'string' && !!item.trim()))].slice(0, 8);
|
|
10
|
+
}
|
|
11
|
+
function date(value) {
|
|
12
|
+
const time = value instanceof Date ? value.getTime() : typeof value === 'string' || typeof value === 'number' ? new Date(value).getTime() : NaN;
|
|
13
|
+
return Number.isFinite(time) ? new Date(time).toISOString() : null;
|
|
14
|
+
}
|
|
15
|
+
function summary(entry) {
|
|
16
|
+
const confidence = 'confidence' in entry ? entry.confidence : undefined;
|
|
17
|
+
const matched = confidence?.explanation?.matchedKeywords ?? [];
|
|
18
|
+
const refs = sources(entry);
|
|
19
|
+
return {
|
|
20
|
+
id: entry.id, title: entry.content.split(/\r?\n/, 1)[0].slice(0, 130), snippet: entry.content.slice(0, 1600),
|
|
21
|
+
category: entry.category, agent: entry.agentTool, project: entry.projectId, projectName: entry.projectName,
|
|
22
|
+
source: refs[0] ?? '', sources: refs, updatedAt: date(entry.createdAt), score: confidence?.score,
|
|
23
|
+
reasons: confidence ? [matched.length ? 'Matches: ' + matched.join(', ') : 'Ranked by importance, age, and recorded use.'] : [],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function bounded(value, fallback, max, min = 1) {
|
|
27
|
+
if (value === null)
|
|
28
|
+
return fallback;
|
|
29
|
+
if (!/^\d+$/.test(value) || Number(value) < min || Number(value) > max)
|
|
30
|
+
throw new TypeError('Invalid pagination or graph limit.');
|
|
31
|
+
return Number(value);
|
|
32
|
+
}
|
|
33
|
+
function query(qs, name) {
|
|
34
|
+
const value = qs.get(name)?.trim();
|
|
35
|
+
if (value && value.length > 1000)
|
|
36
|
+
throw new TypeError('Filter is too long.');
|
|
37
|
+
return value || undefined;
|
|
38
|
+
}
|
|
39
|
+
function activity(enabled, limit = 30) {
|
|
40
|
+
return {
|
|
41
|
+
enabled,
|
|
42
|
+
activity: enabled ? getBrainBus().recent(500).sort((a, b) => b.ts - a.ts).slice(0, limit).map(event => ({
|
|
43
|
+
id: event.id, type: event.type, label: event.detail, agent: event.source,
|
|
44
|
+
project: String(event.meta?.projectName ?? event.meta?.projectId ?? ''), timestamp: date(event.ts),
|
|
45
|
+
})) : [],
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
async function body(req) {
|
|
49
|
+
if (!req.headers['content-type']?.startsWith('application/json'))
|
|
50
|
+
throw new TypeError('Send application/json.');
|
|
51
|
+
if (req.headers.origin && req.headers.origin !== 'http://' + req.headers.host && req.headers.origin !== 'https://' + req.headers.host) {
|
|
52
|
+
throw new TypeError('Cross-origin changes are not accepted.');
|
|
53
|
+
}
|
|
54
|
+
const chunks = [];
|
|
55
|
+
let bytes = 0;
|
|
56
|
+
for await (const chunk of req) {
|
|
57
|
+
const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
|
|
58
|
+
bytes += buffer.length;
|
|
59
|
+
if (bytes > 64 * 1024)
|
|
60
|
+
throw new TypeError('Request body exceeds 64 KiB.');
|
|
61
|
+
chunks.push(buffer);
|
|
62
|
+
}
|
|
63
|
+
const text = Buffer.concat(chunks).toString('utf8');
|
|
64
|
+
let value;
|
|
65
|
+
try {
|
|
66
|
+
value = JSON.parse(text);
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
throw new TypeError('Send valid JSON.');
|
|
70
|
+
}
|
|
71
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
72
|
+
throw new TypeError('Send a JSON object.');
|
|
73
|
+
return value;
|
|
74
|
+
}
|
|
75
|
+
function settingsResponse(store) {
|
|
76
|
+
return { ...store.get(), definitions: FEATURE_DEFINITIONS };
|
|
77
|
+
}
|
|
78
|
+
/** The workspace API reads only the memory store and dedicated feature settings. */
|
|
79
|
+
export async function handleWorkspaceRequest(req, res, dependencies = {}) {
|
|
80
|
+
const send = (data, status = 200) => {
|
|
81
|
+
res.writeHead(status, { 'Content-Type': 'application/json; charset=utf-8', 'Cache-Control': 'no-store', 'X-Content-Type-Options': 'nosniff' });
|
|
82
|
+
res.end(JSON.stringify(data));
|
|
83
|
+
};
|
|
84
|
+
try {
|
|
85
|
+
const url = new URL(req.url ?? '/', 'http://localhost');
|
|
86
|
+
const route = url.pathname.slice('/api/workspace/'.length);
|
|
87
|
+
const method = req.method ?? 'GET';
|
|
88
|
+
if (!['GET', 'POST'].includes(method) || (method === 'POST' && !['context', 'features'].includes(route)))
|
|
89
|
+
return send({ error: 'Method not allowed.' }, 405);
|
|
90
|
+
const settings = dependencies.settings ?? getFeatureSettings();
|
|
91
|
+
if (route === 'features') {
|
|
92
|
+
if (method === 'POST') {
|
|
93
|
+
const input = await body(req);
|
|
94
|
+
if (Object.keys(input).some(key => !['patch', 'expectedRevision'].includes(key)))
|
|
95
|
+
throw new TypeError('Unknown settings request field.');
|
|
96
|
+
if (input.expectedRevision !== undefined && (!Number.isSafeInteger(input.expectedRevision) || Number(input.expectedRevision) < 0))
|
|
97
|
+
throw new TypeError('Invalid settings revision.');
|
|
98
|
+
await settings.update(input.patch, input.expectedRevision);
|
|
99
|
+
}
|
|
100
|
+
return send(settingsResponse(settings));
|
|
101
|
+
}
|
|
102
|
+
if (route === 'activity')
|
|
103
|
+
return send(activity(settings.get().features.liveActivity));
|
|
104
|
+
if (!['overview', 'memories', 'graph', 'context'].includes(route))
|
|
105
|
+
return send({ error: 'Not found.' }, 404);
|
|
106
|
+
if (route === 'context' && method !== 'POST')
|
|
107
|
+
return send({ error: 'Use POST for context assembly.' }, 405);
|
|
108
|
+
const brain = dependencies.brain ?? getGlobalBrain();
|
|
109
|
+
const refresh = async () => {
|
|
110
|
+
await brain.init();
|
|
111
|
+
await brain.sync();
|
|
112
|
+
if (brain.getStorageHealth().lastError)
|
|
113
|
+
throw new Error('The memory store could not be read. Check storage health.');
|
|
114
|
+
};
|
|
115
|
+
if (route === 'context') {
|
|
116
|
+
const input = await body(req);
|
|
117
|
+
if (Object.keys(input).some(key => !['projectId', 'query', 'tokenBudget', 'includeCrossProject'].includes(key)))
|
|
118
|
+
throw new TypeError('Unknown context request field.');
|
|
119
|
+
if (typeof input.projectId !== 'string' || !input.projectId.trim())
|
|
120
|
+
throw new TypeError('Choose a project.');
|
|
121
|
+
if (input.query !== undefined && typeof input.query !== 'string')
|
|
122
|
+
throw new TypeError('Task must be text.');
|
|
123
|
+
if (input.includeCrossProject !== undefined && typeof input.includeCrossProject !== 'boolean')
|
|
124
|
+
throw new TypeError('Cross-project choice must be boolean.');
|
|
125
|
+
if (input.tokenBudget !== undefined && (!Number.isSafeInteger(input.tokenBudget) || Number(input.tokenBudget) < 0 || Number(input.tokenBudget) > 12000))
|
|
126
|
+
throw new TypeError('Token budget must be an integer from 0 to 12000.');
|
|
127
|
+
const flags = settings.get().features;
|
|
128
|
+
if (flags.contextAssembly)
|
|
129
|
+
await refresh();
|
|
130
|
+
const pack = assembleContext(brain, { projectId: input.projectId, query: input.query,
|
|
131
|
+
tokenBudget: input.tokenBudget, includeCrossProject: input.includeCrossProject,
|
|
132
|
+
features: flags });
|
|
133
|
+
return send(pack);
|
|
134
|
+
}
|
|
135
|
+
await refresh();
|
|
136
|
+
const inventory = brain.timeline({ limit: INVENTORY_LIMIT });
|
|
137
|
+
const projectMap = new Map();
|
|
138
|
+
for (const entry of inventory) {
|
|
139
|
+
const project = projectMap.get(entry.projectId) ?? { id: entry.projectId, name: entry.projectName || entry.projectId, memories: 0, updatedAt: date(entry.createdAt) };
|
|
140
|
+
project.memories++;
|
|
141
|
+
projectMap.set(entry.projectId, project);
|
|
142
|
+
}
|
|
143
|
+
const projects = [...projectMap.values()].sort((a, b) => a.name.localeCompare(b.name));
|
|
144
|
+
const facets = { projects, categories: [...new Set(inventory.map(entry => entry.category))].sort(), agents: [...new Set(inventory.map(entry => entry.agentTool))].sort() };
|
|
145
|
+
const inventoryTruncated = brain.getStats().totalEntries > inventory.length;
|
|
146
|
+
if (route === 'overview') {
|
|
147
|
+
return send({ version: '7.2.0', totals: { projects: projects.length, memories: brain.getStats().totalEntries, agents: facets.agents.length },
|
|
148
|
+
projects, ...activity(settings.get().features.liveActivity), storageHealth: brain.getStorageHealth(),
|
|
149
|
+
features: settings.get().features, recentMemories: inventory.slice(0, 5).map(summary), truncated: inventoryTruncated,
|
|
150
|
+
inventoryLimit: INVENTORY_LIMIT });
|
|
151
|
+
}
|
|
152
|
+
const qs = url.searchParams;
|
|
153
|
+
const projectId = query(qs, 'project');
|
|
154
|
+
const category = query(qs, 'category');
|
|
155
|
+
const agentTool = query(qs, 'agent');
|
|
156
|
+
const search = query(qs, 'q');
|
|
157
|
+
const entries = search ? brain.recallScored({ projectId, category, agentTool, keywords: search.split(/\s+/), limit: INVENTORY_LIMIT })
|
|
158
|
+
: inventory.filter(entry => (!projectId || entry.projectId === projectId) && (!category || entry.category === category) && (!agentTool || entry.agentTool === agentTool));
|
|
159
|
+
if (route === 'memories') {
|
|
160
|
+
const limit = bounded(qs.get('limit'), 30, 100);
|
|
161
|
+
const offset = bounded(qs.get('offset'), 0, INVENTORY_LIMIT, 0);
|
|
162
|
+
return send({ items: entries.slice(offset, offset + limit).map(summary), total: entries.length, facets, truncated: inventoryTruncated, inventoryLimit: INVENTORY_LIMIT });
|
|
163
|
+
}
|
|
164
|
+
const limit = bounded(qs.get('limit'), 100, 180);
|
|
165
|
+
const nodes = [];
|
|
166
|
+
const edges = [];
|
|
167
|
+
const usedProjects = new Set();
|
|
168
|
+
const usedAgents = new Set();
|
|
169
|
+
for (const entry of entries.slice(0, limit)) {
|
|
170
|
+
const projectNode = 'project:' + entry.projectId;
|
|
171
|
+
const agentNode = 'agent:' + entry.agentTool;
|
|
172
|
+
const memoryNode = 'memory:' + entry.id;
|
|
173
|
+
if (!usedProjects.has(projectNode)) {
|
|
174
|
+
usedProjects.add(projectNode);
|
|
175
|
+
nodes.push({ id: projectNode, kind: 'project', label: entry.projectName || entry.projectId, project: entry.projectId });
|
|
176
|
+
}
|
|
177
|
+
if (!usedAgents.has(agentNode)) {
|
|
178
|
+
usedAgents.add(agentNode);
|
|
179
|
+
nodes.push({ id: agentNode, kind: 'agent', label: entry.agentTool });
|
|
180
|
+
}
|
|
181
|
+
const detail = summary(entry);
|
|
182
|
+
nodes.push({ id: memoryNode, kind: 'memory', label: detail.title, project: entry.projectId, category: entry.category,
|
|
183
|
+
snippet: detail.snippet, source: detail.source, agent: entry.agentTool, updatedAt: detail.updatedAt });
|
|
184
|
+
edges.push({ source: projectNode, target: memoryNode, kind: 'belongs-to' }, { source: agentNode, target: memoryNode, kind: 'recorded-by' });
|
|
185
|
+
}
|
|
186
|
+
return send({ nodes, edges, truncated: entries.length > limit || inventoryTruncated, shownMemories: Math.min(entries.length, limit), totalMemories: entries.length, facets });
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
const code = error.code;
|
|
190
|
+
send({ error: error instanceof Error ? error.message : String(error), ...(code ? { code } : {}) }, code === 'FEATURE_SETTINGS_CONFLICT' ? 409 : code === 'FEATURE_SETTINGS_INVALID_PATCH' || error instanceof TypeError || error instanceof RangeError ? 400 : 500);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=workspace-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-api.js","sourceRoot":"","sources":["../../src/dashboard/workspace-api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAoB,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAA6B,MAAM,8BAA8B,CAAC;AAGlH,MAAM,eAAe,GAAG,IAAI,CAAC;AAQ7B,SAAS,OAAO,CAAC,KAAa;IAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IACtC,MAAM,UAAU,GAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtJ,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1H,CAAC;AAED,SAAS,IAAI,CAAC,KAAc;IAC1B,MAAM,IAAI,GAAG,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAChJ,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACrE,CAAC;AAED,SAAS,OAAO,CAAC,KAAa;IAC5B,MAAM,UAAU,GAAG,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,MAAM,OAAO,GAAG,UAAU,EAAE,WAAW,EAAE,eAAe,IAAI,EAAE,CAAC;IAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5B,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;QAC5G,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW;QAC1G,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK;QAChG,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,CAAC,EAAE;KAChI,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,KAAoB,EAAE,QAAgB,EAAE,GAAW,EAAE,GAAG,GAAG,CAAC;IAC3E,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG;QAAE,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;IAClI,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,KAAK,CAAC,EAAmB,EAAE,IAAY;IAC9C,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;IACnC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI;QAAE,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC7E,OAAO,KAAK,IAAI,SAAS,CAAC;AAC5B,CAAC;AAED,SAAS,QAAQ,CAAC,OAAgB,EAAE,KAAK,GAAG,EAAE;IAC5C,OAAO;QACL,OAAO;QACP,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtG,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM;YACxE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,IAAI,KAAK,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;SACnG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;KACT,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,GAAoB;IACtC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,kBAAkB,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,wBAAwB,CAAC,CAAC;IAChH,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACtI,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnE,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;QACvB,IAAI,KAAK,GAAG,EAAE,GAAG,IAAI;YAAE,MAAM,IAAI,SAAS,CAAC,8BAA8B,CAAC,CAAC;QAC3E,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAAC,CAAC;IACpF,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC5G,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA2B;IACnD,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC;AAC9D,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,GAAoB,EAAE,GAAmB,EAAE,eAAsC,EAAE;IAC9H,MAAM,IAAI,GAAG,CAAC,IAAa,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE;QAC3C,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,iCAAiC,EAAE,eAAe,EAAE,UAAU,EAAE,wBAAwB,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/I,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC;IACF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;QACnC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,GAAG,CAAC,CAAC;QAC7J,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,IAAI,kBAAkB,EAAE,CAAC;QAC/D,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACzB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;gBACzI,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBAAE,MAAM,IAAI,SAAS,CAAC,4BAA4B,CAAC,CAAC;gBACrL,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,gBAAsC,CAAC,CAAC;YACnF,CAAC;YACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,KAAK,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,GAAG,CAAC,CAAC;QAC7G,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM;YAAE,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,gCAAgC,EAAE,EAAE,GAAG,CAAC,CAAC;QAE5G,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,IAAI,cAAc,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;YACzB,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QACvH,CAAC,CAAC;QACF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,qBAAqB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;YACvK,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE;gBAAE,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;YAC7G,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;gBAAE,MAAM,IAAI,SAAS,CAAC,oBAAoB,CAAC,CAAC;YAC5G,IAAI,KAAK,CAAC,mBAAmB,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,mBAAmB,KAAK,SAAS;gBAAE,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;YAC5J,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAC;YACjO,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC;YACtC,IAAI,KAAK,CAAC,eAAe;gBAAE,MAAM,OAAO,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAA2B;gBACxG,WAAW,EAAE,KAAK,CAAC,WAAiC,EAAE,mBAAmB,EAAE,KAAK,CAAC,mBAA0C;gBAC3H,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,OAAO,EAAE,CAAC;QAChB,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAoF,CAAC;QAC/G,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACtK,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnB,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACvF,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3K,MAAM,kBAAkB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC;QAC5E,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC1I,QAAQ,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,gBAAgB,EAAE;gBACpG,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,kBAAkB;gBACpH,cAAc,EAAE,eAAe,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC;QAC5B,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,EAAE,OAAO,CAA0B,CAAC;QAC9D,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAa,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;YAC9I,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC;QAC5K,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC,CAAC;QAC5K,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACjD,MAAM,KAAK,GAAmC,EAAE,CAAC;QACjD,MAAM,KAAK,GAA4D,EAAE,CAAC;QAC1E,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QACvC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;YAC5C,MAAM,WAAW,GAAG,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;YACjD,MAAM,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;YAC7C,MAAM,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBACnC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;YAC1H,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC/B,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;YACvE,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBAClH,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;YACzG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAC9I,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,GAAG,KAAK,IAAI,kBAAkB,EAAE,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAI,KAA2B,CAAC,IAAI,CAAC;QAC/C,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,KAAK,2BAA2B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,gCAAgC,IAAI,KAAK,YAAY,SAAS,IAAI,KAAK,YAAY,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtQ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-html.d.ts","sourceRoot":"","sources":["../../src/dashboard/workspace-html.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc,QAghDnB,CAAC"}
|