ltcai 1.5.0 → 1.7.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/README.md +63 -33
- package/docs/CHANGELOG.md +89 -0
- package/docs/EDITION_STRATEGY.md +4 -0
- package/docs/ENTERPRISE.md +8 -2
- package/docs/images/enterprise.png +0 -0
- package/docs/images/graph.png +0 -0
- package/docs/images/hero.gif +0 -0
- package/docs/images/model-recommendation.png +0 -0
- package/docs/images/onboarding.png +0 -0
- package/docs/images/organization.png +0 -0
- package/docs/images/skills.png +0 -0
- package/docs/images/tmp_frames/hero_00.png +0 -0
- package/docs/images/tmp_frames/hero_01.png +0 -0
- package/docs/images/tmp_frames/hero_02.png +0 -0
- package/docs/images/tmp_frames/hero_03.png +0 -0
- package/docs/images/workspace.png +0 -0
- package/latticeai/__init__.py +1 -1
- package/latticeai/core/workspace_os.py +11 -1
- package/package.json +10 -1
- package/static/admin.html +62 -0
- package/static/graph.html +7 -1
- package/static/lattice-reference.css +184 -0
- package/static/scripts/admin.js +121 -1
- package/static/scripts/chat.js +28 -7
- package/static/scripts/graph.js +296 -14
- package/static/scripts/workspace.js +363 -24
- package/static/workspace.css +140 -0
- package/static/workspace.html +95 -2
package/README.md
CHANGED
|
@@ -155,42 +155,62 @@ See [docs/architecture.md](docs/architecture.md) for request and data-flow detai
|
|
|
155
155
|
</tr>
|
|
156
156
|
</table>
|
|
157
157
|
|
|
158
|
-
>
|
|
159
|
-
>
|
|
158
|
+
> Every image in this section is a **real screenshot** of the running app
|
|
159
|
+
> (Lattice AI v1.7.0), captured with a headless browser.
|
|
160
160
|
|
|
161
161
|
---
|
|
162
162
|
|
|
163
163
|
## Product Experience
|
|
164
164
|
|
|
165
|
-
###
|
|
165
|
+
### Onboard in minutes
|
|
166
166
|
|
|
167
|
-
|
|
168
|
-
**Recommended**, **Compatible**, or **Not
|
|
169
|
-
by family (Gemma, Qwen, Llama, Phi,
|
|
167
|
+
A first run detects your OS, CPU, GPU, RAM, and disk, then recommends a local
|
|
168
|
+
model and rates every option **Recommended**, **Compatible**, or **Not
|
|
169
|
+
Recommended** for your machine — grouped by family (Gemma, Qwen, Llama, Phi,
|
|
170
|
+
DeepSeek, and more), with estimated RAM and a clear next step.
|
|
170
171
|
|
|
171
172
|
<div align="center">
|
|
172
|
-
<img src="docs/images/
|
|
173
|
+
<img src="docs/images/onboarding.png" alt="Onboarding hardware scan: OS, CPU, GPU, RAM, disk, runtime" width="49%"/>
|
|
174
|
+
<img src="docs/images/model-recommendation.png" alt="Local model recommendation with best-pick callout and per-family status" width="49%"/>
|
|
173
175
|
</div>
|
|
174
176
|
|
|
175
177
|
### Workspaces & organization
|
|
176
178
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
viewer` roles map to a
|
|
179
|
+
A **Current Workspace** card shows exactly where you are; switch instantly
|
|
180
|
+
between a **Personal** workspace and shared **Organization** workspaces. Org data
|
|
181
|
+
is scoped by `workspace_id`, and `owner / admin / member / viewer` roles map to a
|
|
182
|
+
transparent permission matrix with member management. A Workspace Health panel
|
|
183
|
+
summarizes indexed files, graph size, installed skills, memories, agent runs,
|
|
184
|
+
current model, last sync time, and status at a glance.
|
|
180
185
|
|
|
181
186
|
<div align="center">
|
|
182
|
-
<img src="docs/images/workspace.png" alt="
|
|
183
|
-
<img src="docs/images/organization.png" alt="Organization
|
|
187
|
+
<img src="docs/images/workspace.png" alt="Current Workspace summary card with scoped counts" width="100%"/>
|
|
188
|
+
<img src="docs/images/organization.png" alt="Organization workspace with members and roles" width="100%"/>
|
|
184
189
|
</div>
|
|
185
190
|
|
|
186
|
-
### Knowledge graph
|
|
191
|
+
### Knowledge graph explorer
|
|
187
192
|
|
|
188
|
-
Your work becomes a typed knowledge graph
|
|
189
|
-
the
|
|
193
|
+
Your work becomes a typed knowledge graph automatically. The Entity Explorer
|
|
194
|
+
surfaces the most important entities and, on selection, their inbound/outbound
|
|
195
|
+
relationships, related entities, and a path back to you.
|
|
190
196
|
|
|
191
197
|
<div align="center">
|
|
192
|
-
<img src="docs/images/graph.png" alt="Knowledge graph
|
|
193
|
-
|
|
198
|
+
<img src="docs/images/graph.png" alt="Knowledge graph entity explorer with relationship detail" width="100%"/>
|
|
199
|
+
</div>
|
|
200
|
+
|
|
201
|
+
The Graph Canvas also supports node expand/collapse, focused subgraphs,
|
|
202
|
+
relationship highlighting, shortest-path visualization, and direct navigation
|
|
203
|
+
back into source conversations or files.
|
|
204
|
+
|
|
205
|
+
### Skills & editions
|
|
206
|
+
|
|
207
|
+
Browse and install skills from an in-product marketplace; an honest editions
|
|
208
|
+
panel shows that every Enterprise capability is an opt-in extension point,
|
|
209
|
+
disabled in the open-source Community build.
|
|
210
|
+
|
|
211
|
+
<div align="center">
|
|
212
|
+
<img src="docs/images/skills.png" alt="Skill marketplace tabs: recommended, popular, installed, updates" width="49%"/>
|
|
213
|
+
<img src="docs/images/enterprise.png" alt="Enterprise capability status panel — all disabled in Community" width="49%"/>
|
|
194
214
|
</div>
|
|
195
215
|
|
|
196
216
|
---
|
|
@@ -333,22 +353,32 @@ Supported routes include OpenAI-compatible APIs, OpenRouter, Groq, Together, xAI
|
|
|
333
353
|
|
|
334
354
|
## Current release
|
|
335
355
|
|
|
336
|
-
**1.
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
- **
|
|
345
|
-
|
|
346
|
-
- **
|
|
347
|
-
|
|
348
|
-
- **
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
356
|
+
**1.7.0 — Graph & Collaboration Release.** An additive UI and validation release
|
|
357
|
+
for graph exploration, workspace health, Enterprise admin visibility, skills,
|
|
358
|
+
screenshots, and visual smoke coverage.
|
|
359
|
+
|
|
360
|
+
- **Graph Canvas** — expand/collapse, subgraph focus, relationship/path
|
|
361
|
+
highlighting, shortest-path visualization, and click-through node navigation.
|
|
362
|
+
- **Workspace Health** — indexed files, graph nodes/relationships, installed
|
|
363
|
+
skills, memories, agent runs, current model, last sync, and workspace status.
|
|
364
|
+
- **Enterprise Admin UI** — admin policies, audit export, SIEM export preview,
|
|
365
|
+
organization settings, and capability status surfaced in `/admin`.
|
|
366
|
+
- **Skill Marketplace completion** — install progress, validation status,
|
|
367
|
+
recommended/popular skills, updates, version, and source metadata.
|
|
368
|
+
- **Screenshot automation + visual smoke tests** — `scripts/capture/*` and a
|
|
369
|
+
scheduled Playwright workflow cover Workspace, Graph, Skills, Organization,
|
|
370
|
+
and Enterprise screens.
|
|
371
|
+
- **Compatibility preserved** — API schemas, `server:app`,
|
|
372
|
+
`latticeai.server_app.app`, CLI, MCP, model, workspace, chat, KG, and VS Code
|
|
373
|
+
extension surfaces remain backward compatible.
|
|
374
|
+
|
|
375
|
+
| Version | Theme |
|
|
376
|
+
|---|---|
|
|
377
|
+
| **1.7.0** | Graph & Collaboration Release |
|
|
378
|
+
| 1.6.0 | Product Experience Deepening (UX + real screenshots) |
|
|
379
|
+
| 1.5.0 | Unified Product Release (CI/VSIX recovery, model recommendation, Enterprise PoC) |
|
|
380
|
+
| 1.4.0 | Server App final decomposition |
|
|
381
|
+
| 1.1.0–1.3.0 | Organization workspaces, modularization, route safety net |
|
|
352
382
|
|
|
353
383
|
See the full [changelog](docs/CHANGELOG.md) and [RELEASE.md](RELEASE.md).
|
|
354
384
|
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,94 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.7.0] - 2026-06-01
|
|
4
|
+
|
|
5
|
+
> Graph & Collaboration Release — Graph Canvas interactions, Enterprise Admin
|
|
6
|
+
> UI, Skill Marketplace completion, Workspace Health, screenshot automation, and
|
|
7
|
+
> Playwright visual smoke coverage. Backward compatible: API paths/schemas,
|
|
8
|
+
> `server:app`, `latticeai.server_app.app`, CLI, Workspace/Chat/Model/MCP/KG
|
|
9
|
+
> APIs, and VS Code extension commands remain stable.
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- **Graph Canvas** — node expand/collapse, focused subgraphs, relationship
|
|
14
|
+
highlighting, shortest-path visualization, URL/node click-through navigation,
|
|
15
|
+
and source/conversation actions. Uses existing graph/relationship APIs; no
|
|
16
|
+
schema change or destructive migration.
|
|
17
|
+
- **Enterprise Admin UI** — `/admin#enterprise` now surfaces Admin Policies,
|
|
18
|
+
Audit Export, SIEM Export preview, Organization Settings, and Enterprise
|
|
19
|
+
Capability Status. Community remains fully functional and ungated.
|
|
20
|
+
- **Skill Marketplace completion** — install progress (Download → Validate →
|
|
21
|
+
Ready), validation status, recommended/popular/update surfaces, version
|
|
22
|
+
metadata, and source metadata.
|
|
23
|
+
- **Workspace Health Dashboard** — indexed files, graph nodes, graph
|
|
24
|
+
relationships, installed skills, memory entries, agent runs, current model,
|
|
25
|
+
last sync time, and workspace status.
|
|
26
|
+
- **Screenshot automation** — `scripts/capture/` contains reproducible
|
|
27
|
+
Playwright capture scripts for workspace, graph, skills, enterprise, and
|
|
28
|
+
onboarding screenshots.
|
|
29
|
+
- **Visual smoke tests** — `tests/visual/*` plus `.github/workflows/visual.yml`
|
|
30
|
+
run Workspace, Graph, Skills, Organization, and Enterprise screen checks on
|
|
31
|
+
PR/push and nightly schedule with failure artifacts.
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
|
|
35
|
+
- Python package, npm package, VS Code extension, Workspace OS, FastAPI app, and
|
|
36
|
+
`/health` version metadata aligned at `1.7.0`.
|
|
37
|
+
- CI package validation is version-scoped instead of a broad `dist/*` check.
|
|
38
|
+
|
|
39
|
+
### Validation
|
|
40
|
+
|
|
41
|
+
- Unit, integration, startup/import, route compatibility, MCP, model endpoint,
|
|
42
|
+
visual smoke, VSIX build, and release artifact validation are the release
|
|
43
|
+
target checks. Package-store publish remains manual only.
|
|
44
|
+
|
|
45
|
+
## [1.6.0] - 2026-06-01
|
|
46
|
+
|
|
47
|
+
> Product Experience Deepening — user-facing UX (Knowledge Graph explorer,
|
|
48
|
+
> workspace summary, model recommendation 2.0, skill marketplace tabs, Enterprise
|
|
49
|
+
> capability panel) and a refresh of `docs/images/*` to **real captured UI**
|
|
50
|
+
> screenshots. Not a refactor: API paths, request/response schemas, `server:app`,
|
|
51
|
+
> CLI, MCP, and the Knowledge Graph contract are unchanged. The only code changes
|
|
52
|
+
> are additive frontend (`static/`) and version metadata.
|
|
53
|
+
|
|
54
|
+
### Added
|
|
55
|
+
|
|
56
|
+
- **Knowledge Graph Explorer (Workspace OS)** — an Entity Explorer (importance-
|
|
57
|
+
ranked entity cards + search) with a detail panel showing inbound/outbound
|
|
58
|
+
relationships, related entities, and the shortest path back to you; plus a
|
|
59
|
+
Recent Activity feed and a Workspace Memory feed. Built entirely on the existing
|
|
60
|
+
`/knowledge-graph/graph` and `/workspace/relationships/*` endpoints (additive
|
|
61
|
+
UI, no new API, no schema change).
|
|
62
|
+
- **Workspace summary & quick-switch** — a "Current Workspace" card (active
|
|
63
|
+
workspace, role, members, scoped counts) and one-click switch chips, preserving
|
|
64
|
+
`workspace_id` scoping and the owner/admin/member/viewer model.
|
|
65
|
+
- **Model Recommendation 2.0** — the onboarding recommendation panel now shows a
|
|
66
|
+
machine summary (OS/RAM/GPU/engine), a "best for this PC" callout with the
|
|
67
|
+
reason, estimated RAM, and next step, per-family status, and a cloud caution.
|
|
68
|
+
Estimates are labelled and conservative.
|
|
69
|
+
- **Skill Marketplace tabs** — Recommended / Popular / Installed / Updates tabs
|
|
70
|
+
with version, category, and source, plus install / enable / disable actions on
|
|
71
|
+
the existing skill lifecycle API.
|
|
72
|
+
- **Enterprise capability panel** — a 12-capability status matrix in Workspace OS
|
|
73
|
+
(Community reports all disabled; nothing gates a Community feature).
|
|
74
|
+
|
|
75
|
+
### Changed
|
|
76
|
+
|
|
77
|
+
- **Real UI visuals** — `docs/images/{hero.gif,onboarding,model-recommendation,
|
|
78
|
+
workspace,graph,organization,skills,enterprise}` are now **real screenshots**
|
|
79
|
+
captured from the running app with Playwright + headless Chrome (the v1.5.0
|
|
80
|
+
set was structural diagrams). `architecture.png` remains a structural diagram.
|
|
81
|
+
README references the new real screenshots with no broken links.
|
|
82
|
+
- Python package, npm package, VS Code extension, FastAPI app, and `/health`
|
|
83
|
+
version metadata aligned at `1.6.0`.
|
|
84
|
+
|
|
85
|
+
### Validation
|
|
86
|
+
|
|
87
|
+
- Unit tests pass; route-compatibility, startup/import, streaming, model-endpoint,
|
|
88
|
+
MCP/KG, and workspace/org permission tests preserved; `npm run check:python`
|
|
89
|
+
green; new UI verified rendering in a real browser via Playwright; VSIX build
|
|
90
|
+
verified. Test/build/packaging artifacts only — no package-store publish.
|
|
91
|
+
|
|
3
92
|
## [1.5.0] - 2026-06-01
|
|
4
93
|
|
|
5
94
|
> Unified Product Release — CI/VSIX recovery, hardware-aware local model
|
package/docs/EDITION_STRATEGY.md
CHANGED
|
@@ -50,6 +50,10 @@ the boundary stays predictable for contributors and users.
|
|
|
50
50
|
|
|
51
51
|
- `GET /workspace/editions` → edition + per-capability matrix.
|
|
52
52
|
- `GET /workspace/os` → `edition` block in the Workspace OS summary.
|
|
53
|
+
- `/admin#enterprise` → Admin policy, audit export, SIEM preview,
|
|
54
|
+
organization settings, and capability status UI.
|
|
55
|
+
- `GET /admin/enterprise` and `GET /admin/enterprise/siem-export` → descriptive
|
|
56
|
+
Community-safe Enterprise surfaces for integrations.
|
|
53
57
|
- `latticeai.core.enterprise.detect_edition()` for in-process checks.
|
|
54
58
|
|
|
55
59
|
In the Community build all of the above report `community` with every Enterprise
|
package/docs/ENTERPRISE.md
CHANGED
|
@@ -33,8 +33,14 @@ Community code consults the seam at extension points via
|
|
|
33
33
|
`is_capability_enabled(EnterpriseCapability.X)`. In the Community build this is
|
|
34
34
|
always `False`, so the Community code path is taken and nothing is gated off.
|
|
35
35
|
|
|
36
|
-
The live edition + capability matrix is exposed at `GET /workspace/editions
|
|
37
|
-
|
|
36
|
+
The live edition + capability matrix is exposed at `GET /workspace/editions`,
|
|
37
|
+
surfaced in the Workspace OS summary (`GET /workspace/os` → `edition`), and
|
|
38
|
+
shown in the Enterprise Admin UI at `/admin#enterprise`.
|
|
39
|
+
|
|
40
|
+
Community also exposes descriptive admin surfaces at `GET /admin/enterprise`
|
|
41
|
+
and `GET /admin/enterprise/siem-export`: they show policy/export/envelope
|
|
42
|
+
shapes while reporting Enterprise-only capabilities disabled and never
|
|
43
|
+
streaming external events.
|
|
38
44
|
|
|
39
45
|
## Enterprise capability roadmap
|
|
40
46
|
|
|
Binary file
|
package/docs/images/graph.png
CHANGED
|
Binary file
|
package/docs/images/hero.gif
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/docs/images/skills.png
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/latticeai/__init__.py
CHANGED
|
@@ -18,7 +18,7 @@ from pathlib import Path
|
|
|
18
18
|
from typing import Any, Callable, Dict, Iterable, List, Optional
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
WORKSPACE_OS_VERSION = "1.
|
|
21
|
+
WORKSPACE_OS_VERSION = "1.7.0"
|
|
22
22
|
|
|
23
23
|
# Workspace types separate single-user Personal workspaces from shared
|
|
24
24
|
# Organization workspaces. Both keep the same local-first JSON store; the type
|
|
@@ -353,6 +353,7 @@ class WorkspaceOSStore:
|
|
|
353
353
|
"workspaces": state.get("workspaces"),
|
|
354
354
|
"navigation": list(WORKSPACE_AREAS),
|
|
355
355
|
"feature_flags": state.get("feature_flags"),
|
|
356
|
+
"updated_at": state.get("updated_at"),
|
|
356
357
|
"counts": {
|
|
357
358
|
"snapshots": len(_listify(state.get("snapshots"))),
|
|
358
359
|
"traces": len(_listify(state.get("traces"))),
|
|
@@ -1424,6 +1425,9 @@ class WorkspaceOSStore:
|
|
|
1424
1425
|
"description": desc,
|
|
1425
1426
|
"version": version,
|
|
1426
1427
|
"installed": True,
|
|
1428
|
+
"install_status": entry.get("install_status") or "ready",
|
|
1429
|
+
"validation_status": "ready" if skill_md.exists() else "missing_manifest",
|
|
1430
|
+
"source": entry.get("source") or "local",
|
|
1427
1431
|
"path": str(skill_dir),
|
|
1428
1432
|
"updated_at": entry.get("updated_at") or _now(),
|
|
1429
1433
|
})
|
|
@@ -1438,6 +1442,9 @@ class WorkspaceOSStore:
|
|
|
1438
1442
|
**item,
|
|
1439
1443
|
"enabled": bool(state_entry.get("enabled", True)),
|
|
1440
1444
|
"installed": bool(state_entry.get("installed")),
|
|
1445
|
+
"install_status": state_entry.get("install_status") or ("ready" if state_entry.get("installed") else "available"),
|
|
1446
|
+
"validation_status": state_entry.get("validation_status") or item.get("validation_status") or ("ready" if state_entry.get("installed") else "not_installed"),
|
|
1447
|
+
"source": state_entry.get("source") or item.get("source") or item.get("plugin") or "marketplace",
|
|
1441
1448
|
"version": state_entry.get("version") or item.get("version") or "remote",
|
|
1442
1449
|
})
|
|
1443
1450
|
self.save_state(state)
|
|
@@ -1465,6 +1472,9 @@ class WorkspaceOSStore:
|
|
|
1465
1472
|
"installed": True,
|
|
1466
1473
|
"enabled": entry.get("enabled", True),
|
|
1467
1474
|
"version": version,
|
|
1475
|
+
"install_status": "ready",
|
|
1476
|
+
"validation_status": "ready",
|
|
1477
|
+
"source": (metadata or {}).get("source") or entry.get("source") or "marketplace",
|
|
1468
1478
|
"metadata": metadata or entry.get("metadata") or {},
|
|
1469
1479
|
"updated_at": _now(),
|
|
1470
1480
|
})
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ltcai",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Lattice AI Workspace OS for local-first graph, memory, agent, workflow, and skill operations",
|
|
5
5
|
"homepage": "https://github.com/TaeSooPark-PTS/LatticeAI#readme",
|
|
6
6
|
"repository": {
|
|
@@ -23,6 +23,12 @@
|
|
|
23
23
|
"test": "python3 -m pytest tests/ -v",
|
|
24
24
|
"test:unit": "python3 -m pytest tests/unit/ -v",
|
|
25
25
|
"test:integration": "python3 -m pytest tests/integration/ -v",
|
|
26
|
+
"test:visual": "playwright test",
|
|
27
|
+
"capture:workspace": "node scripts/capture/capture_workspace.js",
|
|
28
|
+
"capture:graph": "node scripts/capture/capture_graph.js",
|
|
29
|
+
"capture:skills": "node scripts/capture/capture_skills.js",
|
|
30
|
+
"capture:enterprise": "node scripts/capture/capture_enterprise.js",
|
|
31
|
+
"capture:onboarding": "node scripts/capture/capture_onboarding.js",
|
|
26
32
|
"publish:npm": "npm publish --access public",
|
|
27
33
|
"publish:pypi": "python3 -m twine upload --skip-existing dist/ltcai-$npm_package_version.tar.gz dist/ltcai-$npm_package_version-py3-none-any.whl"
|
|
28
34
|
},
|
|
@@ -75,5 +81,8 @@
|
|
|
75
81
|
],
|
|
76
82
|
"publishConfig": {
|
|
77
83
|
"access": "public"
|
|
84
|
+
},
|
|
85
|
+
"devDependencies": {
|
|
86
|
+
"@playwright/test": "^1.60.0"
|
|
78
87
|
}
|
|
79
88
|
}
|
package/static/admin.html
CHANGED
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
<a href="#users" data-admin-nav="users"><i class="ti ti-users"></i> <span data-i18n="nav_users">사용자 관리</span></a>
|
|
27
27
|
<a href="#permissions" data-admin-nav="permissions"><i class="ti ti-key"></i> <span data-i18n="nav_permissions">권한 관리</span></a>
|
|
28
28
|
<a href="#sso" data-admin-nav="sso"><i class="ti ti-lock-access"></i> <span data-i18n="nav_sso">SSO 관리</span></a>
|
|
29
|
+
<a href="#enterprise" data-admin-nav="enterprise"><i class="ti ti-building-skyscraper"></i> <span data-i18n="nav_enterprise">Enterprise</span></a>
|
|
29
30
|
<a href="#security" data-admin-nav="security"><i class="ti ti-shield-check"></i> <span data-i18n="nav_security">보안 모니터링</span></a>
|
|
30
31
|
<a href="#audit" data-admin-nav="audit"><i class="ti ti-report-search"></i> <span data-i18n="nav_audit">감사 로그</span></a>
|
|
31
32
|
<a href="/workspace"><i class="ti ti-layout-dashboard"></i> <span>Workspace OS</span></a>
|
|
@@ -256,6 +257,67 @@
|
|
|
256
257
|
</section>
|
|
257
258
|
</section>
|
|
258
259
|
|
|
260
|
+
<section class="admin-view" id="admin-view-enterprise" data-admin-view="enterprise">
|
|
261
|
+
<section class="panel">
|
|
262
|
+
<div class="panel-header">
|
|
263
|
+
<div>
|
|
264
|
+
<h3 data-i18n="enterprise_title">Enterprise Admin</h3>
|
|
265
|
+
<p data-i18n="enterprise_desc">Admin policies, audit export, SIEM export, organization settings, and capability status.</p>
|
|
266
|
+
</div>
|
|
267
|
+
<div class="tag-row" id="enterprise-status-tags"></div>
|
|
268
|
+
</div>
|
|
269
|
+
<div class="panel-body">
|
|
270
|
+
<div class="enterprise-grid" id="enterprise-capability-status"></div>
|
|
271
|
+
</div>
|
|
272
|
+
</section>
|
|
273
|
+
|
|
274
|
+
<section class="panel-grid">
|
|
275
|
+
<article class="panel">
|
|
276
|
+
<div class="panel-header">
|
|
277
|
+
<div>
|
|
278
|
+
<h3 data-i18n="enterprise_policies">Admin Policies</h3>
|
|
279
|
+
<p data-i18n="enterprise_policies_desc">Effective Community policy and Enterprise policy-pack status.</p>
|
|
280
|
+
</div>
|
|
281
|
+
</div>
|
|
282
|
+
<div class="panel-body" id="enterprise-admin-policies"></div>
|
|
283
|
+
</article>
|
|
284
|
+
<article class="panel">
|
|
285
|
+
<div class="panel-header">
|
|
286
|
+
<div>
|
|
287
|
+
<h3 data-i18n="enterprise_org">Organization Settings</h3>
|
|
288
|
+
<p data-i18n="enterprise_org_desc">Workspace governance and organization capability status.</p>
|
|
289
|
+
</div>
|
|
290
|
+
</div>
|
|
291
|
+
<div class="panel-body" id="enterprise-org-settings"></div>
|
|
292
|
+
</article>
|
|
293
|
+
</section>
|
|
294
|
+
|
|
295
|
+
<section class="panel-grid">
|
|
296
|
+
<article class="panel">
|
|
297
|
+
<div class="panel-header">
|
|
298
|
+
<div>
|
|
299
|
+
<h3 data-i18n="enterprise_audit_export">Audit Export</h3>
|
|
300
|
+
<p data-i18n="enterprise_audit_export_desc">Local export remains available in Community; retention is an Enterprise extension point.</p>
|
|
301
|
+
</div>
|
|
302
|
+
</div>
|
|
303
|
+
<div class="panel-body" id="enterprise-audit-export"></div>
|
|
304
|
+
</article>
|
|
305
|
+
<article class="panel">
|
|
306
|
+
<div class="panel-header">
|
|
307
|
+
<div>
|
|
308
|
+
<h3 data-i18n="enterprise_siem">SIEM Export</h3>
|
|
309
|
+
<p data-i18n="enterprise_siem_desc">Preview the SIEM envelope without streaming external events in Community.</p>
|
|
310
|
+
</div>
|
|
311
|
+
<button class="btn" id="refresh-siem-btn" type="button"><i class="ti ti-refresh"></i> <span>SIEM</span></button>
|
|
312
|
+
</div>
|
|
313
|
+
<div class="panel-body">
|
|
314
|
+
<div id="enterprise-siem-export"></div>
|
|
315
|
+
<pre class="enterprise-json" id="enterprise-siem-preview"></pre>
|
|
316
|
+
</div>
|
|
317
|
+
</article>
|
|
318
|
+
</section>
|
|
319
|
+
</section>
|
|
320
|
+
|
|
259
321
|
<section class="admin-view" id="admin-view-security" data-admin-view="security">
|
|
260
322
|
<!-- Security & Audit Command Center (피드백 #5) -->
|
|
261
323
|
<section class="panel" id="security-overview-panel">
|
package/static/graph.html
CHANGED
|
@@ -51,7 +51,12 @@
|
|
|
51
51
|
</section>
|
|
52
52
|
|
|
53
53
|
<div class="toolbar">
|
|
54
|
-
<button class="tb-btn" id="refresh-btn"
|
|
54
|
+
<button class="tb-btn" id="refresh-btn"><i class="ti ti-refresh"></i> Refresh</button>
|
|
55
|
+
<button class="tb-btn" id="fit-btn" title="Fit graph"><i class="ti ti-arrows-maximize"></i> Fit</button>
|
|
56
|
+
<button class="tb-btn" id="expand-btn" title="Expand selected node"><i class="ti ti-circle-plus"></i> Expand</button>
|
|
57
|
+
<button class="tb-btn" id="collapse-btn" title="Collapse selected neighbors"><i class="ti ti-circle-minus"></i> Collapse</button>
|
|
58
|
+
<button class="tb-btn" id="focus-btn" title="Focus selected subgraph"><i class="ti ti-focus-2"></i> Focus</button>
|
|
59
|
+
<button class="tb-btn" id="path-btn" title="Shortest path from saved start"><i class="ti ti-route"></i> Path</button>
|
|
55
60
|
<div class="lang-picker" id="graph-lang-picker">
|
|
56
61
|
<button class="tb-btn" id="graph-lang-btn" type="button" onclick="toggleLangMenu('graph-lang-picker')">Language</button>
|
|
57
62
|
<div class="lang-picker-menu" id="graph-lang-picker-menu">
|
|
@@ -60,6 +65,7 @@
|
|
|
60
65
|
</div>
|
|
61
66
|
</div>
|
|
62
67
|
</div>
|
|
68
|
+
<div id="graph-focus-chip" class="focus-chip" hidden></div>
|
|
63
69
|
</main>
|
|
64
70
|
|
|
65
71
|
<aside>
|