ltcai 9.9.3 → 9.9.5
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 +39 -38
- package/docs/CHANGELOG.md +100 -0
- package/docs/COMMUNITY_AND_PLUGINS.md +1 -1
- package/docs/DEVELOPMENT.md +1 -1
- package/docs/ONBOARDING.md +1 -1
- package/docs/OPERATIONS.md +1 -1
- package/docs/SURFACE_PARITY.md +53 -0
- package/docs/TRUST_MODEL.md +1 -1
- package/docs/WHY_LATTICE.md +1 -1
- package/docs/kg-schema.md +1 -1
- package/lattice_brain/__init__.py +1 -1
- package/lattice_brain/graph/_kg_common.py +335 -0
- package/lattice_brain/graph/discovery_index.py +8 -1
- package/lattice_brain/graph/ingest.py +43 -9
- package/lattice_brain/graph/projection.py +221 -37
- package/lattice_brain/graph/rerank.py +160 -0
- package/lattice_brain/graph/retrieval.py +90 -455
- package/lattice_brain/graph/retrieval_policy.py +174 -0
- package/lattice_brain/graph/retrieval_reads.py +459 -0
- package/lattice_brain/graph/retrieval_vector.py +122 -2
- package/lattice_brain/graph/store.py +2 -0
- package/lattice_brain/portability.py +41 -12
- package/lattice_brain/quality.py +26 -6
- package/lattice_brain/runtime/multi_agent.py +1 -1
- package/latticeai/__init__.py +1 -1
- package/latticeai/api/chat.py +6 -0
- package/latticeai/api/chat_agent_http.py +262 -52
- package/latticeai/api/chat_contracts.py +1 -1
- package/latticeai/api/chat_intents.py +37 -18
- package/latticeai/api/chat_stream.py +76 -2
- package/latticeai/api/knowledge_graph.py +35 -1
- package/latticeai/core/agent.py +420 -27
- package/latticeai/core/enterprise.py +5 -0
- package/latticeai/core/file_generation.py +130 -5
- package/latticeai/core/legacy_compatibility.py +1 -1
- package/latticeai/core/marketplace.py +1 -1
- package/latticeai/core/run_store.py +245 -0
- package/latticeai/core/workspace_os.py +1 -1
- package/latticeai/integrations/telegram_bot.py +82 -23
- package/latticeai/models/router.py +25 -12
- package/latticeai/services/architecture_readiness.py +1 -1
- package/latticeai/services/command_center.py +90 -1
- package/latticeai/services/folder_watch.py +5 -0
- package/latticeai/services/funnel_metrics.py +9 -1
- package/latticeai/services/product_readiness.py +1 -1
- package/latticeai/services/search_service.py +43 -13
- package/latticeai/services/tool_dispatch.py +56 -0
- package/package.json +2 -1
- package/scripts/bench_agent_smoke.py +410 -0
- package/scripts/check_current_release_docs.mjs +1 -1
- package/scripts/funnel_soft_gate.py +192 -0
- package/scripts/run_sidecar_e2e.mjs +159 -0
- package/src-tauri/Cargo.lock +1 -1
- package/src-tauri/Cargo.toml +1 -1
- package/src-tauri/tauri.conf.json +1 -1
- package/static/app/asset-manifest.json +29 -28
- package/static/app/assets/Act-DmxfbqBp.js +1 -0
- package/static/app/assets/{Brain-DEY9jLVt.js → Brain-DK_zKCda.js} +2 -2
- package/static/app/assets/BrainHome-CCE_0hni.js +2 -0
- package/static/app/assets/BrainSignals-r_J68_zh.js +1 -0
- package/static/app/assets/{Capture-CVZ09QXi.js → Capture-CvxwzpJZ.js} +1 -1
- package/static/app/assets/{CommandPalette-DepwOQFv.js → CommandPalette-CVLiFIQC.js} +1 -1
- package/static/app/assets/{Library-Bp0n-HlW.js → Library-4As9VUvy.js} +1 -1
- package/static/app/assets/{LivingBrain-DxP4efJF.js → LivingBrain-BVWk58MW.js} +1 -1
- package/static/app/assets/{ProductFlow-DRbm7NEq.js → ProductFlow-B-Tz0Um4.js} +1 -1
- package/static/app/assets/{ReviewCard-C4HAO7A3.js → ReviewCard-Va3fPQuj.js} +1 -1
- package/static/app/assets/{System-ByQcmJW-.js → System-DSR2zKWd.js} +1 -1
- package/static/app/assets/{bot-BNDyZLR7.js → bot-VmP0kkeA.js} +1 -1
- package/static/app/assets/circle-pause-T9POo4qy.js +1 -0
- package/static/app/assets/{circle-play-BkhdcHgd.js → circle-play-Bz5iTD0p.js} +1 -1
- package/static/app/assets/{cpu-C6jjYm6i.js → cpu-CJhjRtNq.js} +1 -1
- package/static/app/assets/{folder-open-DjGIvDBQ.js → folder-open-B2K_22VI.js} +1 -1
- package/static/app/assets/{hard-drive-BlSbwSaT.js → hard-drive-CjJtYqHf.js} +1 -1
- package/static/app/assets/{index-Bge3DXW7.css → index-7FAfYm4v.css} +1 -1
- package/static/app/assets/{index-CHu7cgj3.js → index-CEu0Wqjl.js} +3 -3
- package/static/app/assets/{input-DVDI0YR3.js → input-CSi6OBJ9.js} +1 -1
- package/static/app/assets/{navigation-BddhEWA0.js → navigation-BPQqEQwr.js} +1 -1
- package/static/app/assets/{network-pYQt5oBu.js → network-Ck1nqc-v.js} +1 -1
- package/static/app/assets/{primitives-D7gCdEvS.js → primitives-B2f9N7Dh.js} +1 -1
- package/static/app/assets/{shield-alert-K9RKGQeg.js → shield-alert-yA_Y8lOB.js} +1 -1
- package/static/app/assets/{textarea-sqQmoBKL.js → textarea-C4wM0D-Z.js} +1 -1
- package/static/app/assets/{useFocusTrap-7EV9dFP2.js → useFocusTrap-CsnIhsDJ.js} +1 -1
- package/static/app/assets/utils-BqoznzGP.js +7 -0
- package/static/app/index.html +4 -4
- package/static/sw.js +1 -1
- package/static/app/assets/Act-DmdruVKV.js +0 -1
- package/static/app/assets/BrainHome-CeNaxjP1.js +0 -2
- package/static/app/assets/BrainSignals-CStjIqYi.js +0 -1
- package/static/app/assets/utils-uQYKXNeq.js +0 -7
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
[](https://github.com/TaeSooPark-PTS/LatticeAI/actions/workflows/ci.yml)
|
|
12
12
|
[](LICENSE)
|
|
13
13
|
|
|
14
|
-

|
|
15
15
|
|
|
16
16
|
Chat, files, folders, notes, and web pages all flow into one durable knowledge
|
|
17
17
|
graph on your computer. Any model — local MLX or cloud — can speak with that
|
|
@@ -24,9 +24,9 @@ memory. Nothing leaves your machine without explicit consent.
|
|
|
24
24
|
|
|
25
25
|
| | |
|
|
26
26
|
| --- | --- |
|
|
27
|
-
| **Chat with a Brain that remembers** — every conversation grows durable, source-linked memory  | **See how knowledge connects** — a real relationship graph, not a file list  |
|
|
28
|
+
| **Capture anything** — files, whole folders, notes, screenshots, web pages  | **Automate with review** — agent changes become proposals you approve first  |
|
|
29
|
+
| **Pick a model in one click** — recommended local models for your hardware  | **Stay in control** — audit, roles, retention in a separate admin surface  |
|
|
30
30
|
|
|
31
31
|
## Why Lattice AI
|
|
32
32
|
|
|
@@ -57,48 +57,47 @@ First-run flow — wake the Brain, pick the owner, load a recommended model:
|
|
|
57
57
|
|
|
58
58
|
| | | |
|
|
59
59
|
| --- | --- | --- |
|
|
60
|
-
|  |  |  |
|
|
61
61
|
|
|
62
62
|
Screenshot index and capture notes:
|
|
63
|
-
[output/release/v9.9.
|
|
63
|
+
[output/release/v9.9.5/SCREENSHOT_INDEX.md](output/release/v9.9.5/SCREENSHOT_INDEX.md)
|
|
64
64
|
|
|
65
65
|
## Current Release
|
|
66
66
|
|
|
67
|
-
The current release is **9.9.
|
|
68
|
-
|
|
69
|
-
- **
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
- **
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
- **
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
`.tsx/.vue/.svelte` support with `ast.parse` Python validation.
|
|
67
|
+
The current release is **9.9.5 — Closed Gaps**:
|
|
68
|
+
|
|
69
|
+
- **One approval path.** Legacy `human_in_loop` now rides the same durable
|
|
70
|
+
approval store as `awaiting_approval` (hashed tokens, restart-safe). The
|
|
71
|
+
old wire contract (`waiting_approval` + `context_id`) still works; the
|
|
72
|
+
separate in-memory `_pending` map is gone.
|
|
73
|
+
- **Rollback that is honest.** File recovery is `git` → pre-write `snapshot`
|
|
74
|
+
→ `none`, so non-git workspaces and newly created files can still be
|
|
75
|
+
restored. Each rollback entry reports its mode.
|
|
76
|
+
- **Critic sees artifact truth.** Before judging file work, the critic gets a
|
|
77
|
+
deterministic checklist of written paths with sanitize/repair flags — an
|
|
78
|
+
auto-repaired scaffold cannot pass as fulfillment unchecked.
|
|
79
|
+
- **Mid-run workspace awareness.** Later executor steps see files this run
|
|
80
|
+
already wrote, so multi-step "create then explain" work is not blind.
|
|
81
|
+
- **Optional cross-encoder rerank.** Off by default; set
|
|
82
|
+
`LATTICEAI_CROSS_ENCODER_RERANK=1` to reorder hybrid matches (identity
|
|
83
|
+
fallback when the model is missing). Hybrid responses carry a `rerank`
|
|
84
|
+
meta block.
|
|
85
|
+
- **Surface parity for approvals.** VS Code gains List/Approve/Reject
|
|
86
|
+
commands with token cache; Telegram handles both `waiting_approval` and
|
|
87
|
+
`awaiting_approval` with token-first resume.
|
|
88
|
+
- **Live sidecar E2E.** Nightly Playwright first-value tests hit a real
|
|
89
|
+
FastAPI sidecar (`npm run test:e2e:sidecar`), not only the visual mock
|
|
90
|
+
server.
|
|
92
91
|
|
|
93
92
|
Release notes: [RELEASE.md](RELEASE.md) · Full history: [docs/CHANGELOG.md](docs/CHANGELOG.md)
|
|
94
93
|
|
|
95
|
-
Expected artifacts for 9.9.
|
|
94
|
+
Expected artifacts for 9.9.5 release must use exact filenames:
|
|
96
95
|
|
|
97
|
-
- `dist/ltcai-9.9.
|
|
98
|
-
- `dist/ltcai-9.9.
|
|
99
|
-
- `ltcai-9.9.
|
|
100
|
-
- `dist/ltcai-9.9.
|
|
101
|
-
- `src-tauri/target/release/bundle/dmg/Lattice AI_9.9.
|
|
96
|
+
- `dist/ltcai-9.9.5-py3-none-any.whl`
|
|
97
|
+
- `dist/ltcai-9.9.5.tar.gz`
|
|
98
|
+
- `ltcai-9.9.5.tgz`
|
|
99
|
+
- `dist/ltcai-9.9.5.vsix`
|
|
100
|
+
- `src-tauri/target/release/bundle/dmg/Lattice AI_9.9.5_aarch64.dmg`
|
|
102
101
|
|
|
103
102
|
Do not use wildcard artifact uploads. Package registry publishing remains owner-run.
|
|
104
103
|
|
|
@@ -118,7 +117,7 @@ See [ARCHITECTURE.md](ARCHITECTURE.md) for details and
|
|
|
118
117
|
|
|
119
118
|
- External package registries are owner-published and can lag behind GitHub.
|
|
120
119
|
- PostgreSQL/pgvector is optional scale/migration tooling. SQLite remains the
|
|
121
|
-
live local Brain store in 9.9.
|
|
120
|
+
live local Brain store in 9.9.5.
|
|
122
121
|
- Docker, model downloads, cloud model calls, Telegram, Brain Network, and
|
|
123
122
|
update checks require explicit user action.
|
|
124
123
|
- Conversation does not fabricate answers when no model is loaded. Agent and
|
|
@@ -130,6 +129,8 @@ See [ARCHITECTURE.md](ARCHITECTURE.md) for details and
|
|
|
130
129
|
|
|
131
130
|
| Version | Theme |
|
|
132
131
|
| --- | --- |
|
|
132
|
+
| 9.9.5 | Closed Gaps |
|
|
133
|
+
| 9.9.4 | Durable Loops |
|
|
133
134
|
| 9.9.3 | Closed Loops |
|
|
134
135
|
| 9.9.2 | Artifact Trust |
|
|
135
136
|
| 9.9.1 | Clean Foundations |
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,106 @@ The top entry is either the current unreleased main-branch work or the current
|
|
|
4
4
|
release line. Older entries are historical and may describe behavior as it
|
|
5
5
|
existed at that release.
|
|
6
6
|
|
|
7
|
+
## [9.9.5] - 2026-07-26
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- Optional cross-encoder rerank (`lattice_brain/graph/rerank.py`): env
|
|
11
|
+
`LATTICEAI_CROSS_ENCODER_RERANK=1` (model via
|
|
12
|
+
`LATTICEAI_CROSS_ENCODER_MODEL`); hybrid_search returns additive `rerank`
|
|
13
|
+
meta; default path is identity with no model download.
|
|
14
|
+
- Sidecar-backed Playwright first-value E2E: `tests/e2e/`,
|
|
15
|
+
`scripts/run_sidecar_e2e.mjs`, `npm run test:e2e:sidecar`, nightly
|
|
16
|
+
`.github/workflows/e2e-sidecar.yml`.
|
|
17
|
+
- VS Code approval commands: `ltcai.listApprovals`, `ltcai.approveAgent`,
|
|
18
|
+
`ltcai.rejectAgent` with pause-token session cache.
|
|
19
|
+
- Telegram approval handles both `waiting_approval` and `awaiting_approval`
|
|
20
|
+
with run_id+token resume preferred.
|
|
21
|
+
- Agent loop L4/L5/L7 helpers: `artifact_checklist`, `files_written`,
|
|
22
|
+
snapshot rollback ports (`snapshot_file` / `restore_snapshot`) with
|
|
23
|
+
mode-tagged results (`git` | `snapshot` | `none`).
|
|
24
|
+
- Knowledge-graph read surface decomposition:
|
|
25
|
+
`lattice_brain/graph/retrieval_reads.py` (`KnowledgeGraphReadsMixin`).
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
- Legacy `human_in_loop` pauses now use the durable `AgentRunStore` path
|
|
29
|
+
(`legacy_context=True`); the separate in-memory `_pending` map is removed.
|
|
30
|
+
Wire contract (`status=waiting_approval`, `context_id`) is preserved.
|
|
31
|
+
- Rollback recovers file-create actions via pre-write snapshots when git is
|
|
32
|
+
unavailable or not governed.
|
|
33
|
+
- Critic verify prompts include a deterministic artifact checklist derived
|
|
34
|
+
from transcript sanitize/repair flags.
|
|
35
|
+
- Executor prompts list files already written in the current run.
|
|
36
|
+
- `docs/SURFACE_PARITY.md` marks VS Code/Telegram approval as provided.
|
|
37
|
+
|
|
38
|
+
### Tests
|
|
39
|
+
- `test_agent_loop_l4_l5_l7.py`, `test_cross_encoder_rerank.py`,
|
|
40
|
+
`test_snapshot_rollback_ports.py`, L1 approval flow extensions.
|
|
41
|
+
|
|
42
|
+
## [9.9.4] - 2026-07-26
|
|
43
|
+
|
|
44
|
+
### Added
|
|
45
|
+
- Durable approval/run store (`latticeai/core/run_store.py`): paused
|
|
46
|
+
`awaiting_approval` runs are mirrored to `data/agent_runs/` (one JSON file
|
|
47
|
+
per run, SHA-256 token hashes, wall-clock expiry) and resume across server
|
|
48
|
+
restarts; expired resumes answer 410 with a one-click replan hint;
|
|
49
|
+
`GET /agent/approvals` lists pending runs (memory ∪ disk).
|
|
50
|
+
- Single retrieval policy (`lattice_brain/graph/retrieval_policy.py`):
|
|
51
|
+
rule-based query rewrite (env kill-switch `LATTICEAI_QUERY_REWRITE=0`),
|
|
52
|
+
query-class fusion weights, and a 14-day recency half-life consumed by both
|
|
53
|
+
the 3-channel service fusion and the 2-channel graph fusion; responses
|
|
54
|
+
carry `policy {search_query, rewrite_rules}` and recency-class matches a
|
|
55
|
+
`scores.age_decay` multiplier in the [0.5, 1.0] band.
|
|
56
|
+
- Live agent step streaming: `AgentDeps.on_step` / per-run `ctx.on_step`
|
|
57
|
+
observers emit plan/approval/execute/verify/rollback/terminal events;
|
|
58
|
+
streamed agent chats send named `event: agent_step` SSE frames
|
|
59
|
+
(`agent_live_stream`) before the unchanged final payload frames; the UI
|
|
60
|
+
renders a live step timeline with a collapsed post-run summary.
|
|
61
|
+
- Type-aware chunking: markdown chunks at heading boundaries with
|
|
62
|
+
`heading_path` provenance, code chunks at function/blank-line boundaries,
|
|
63
|
+
plain text byte-identical to the legacy chunker (same chunk ids); every
|
|
64
|
+
chunk records `strategy` + `start_char`; PDF chunks carry a 1-based `page`
|
|
65
|
+
derived from per-page extraction offsets (omitted when implausible).
|
|
66
|
+
- Embedder fingerprint: the vector index records the embedder model id +
|
|
67
|
+
dimension; a swap surfaces `stale_embedder` in `index_status().embedder`,
|
|
68
|
+
vector freshness, and hybrid `vector_degraded` instead of silently empty
|
|
69
|
+
vector channels.
|
|
70
|
+
- Citation-instructed answers: one `_compose_system` helper (all four prompt
|
|
71
|
+
paths) appends `CITATION_INSTRUCTION` whenever retrieved context exists; a
|
|
72
|
+
deterministic synthetic grounding bench gates `assess_answer_grounding`
|
|
73
|
+
verdict accuracy in CI.
|
|
74
|
+
- Graph hygiene cadence: Command Center briefing gains a `hygiene` section +
|
|
75
|
+
one-click dry-run quick action suggesting `/knowledge-graph/curate/noise`
|
|
76
|
+
when the graph exceeds 200 nodes and no curation ran in 7 days
|
|
77
|
+
(`last_noise_curate_at` in graph_meta).
|
|
78
|
+
- Review-before-promote: `LATTICEAI_GRAPH_PROMOTION_REVIEW=1` (or the
|
|
79
|
+
`GRAPH_PROMOTION_REVIEW` enterprise capability) stages curator topic
|
|
80
|
+
promotions as `pending_promotions` instead of writing them;
|
|
81
|
+
`GET /knowledge-graph/promotions` + `apply`/`reject` endpoints.
|
|
82
|
+
- Project manifests beyond web: React/Vite starter (package.json, module-entry
|
|
83
|
+
index.html, src/main.jsx, src/App.jsx, src/App.css) and Python package
|
|
84
|
+
(`pkg/__init__.py`, `core.py`, `cli.py`, README.md); `normalize_plan`
|
|
85
|
+
rewrites empty/partial pure-file plans to the manifest
|
|
86
|
+
(`manifest_steps`/`manifest_rewrite` plan fixes).
|
|
87
|
+
- Harness: five deterministic workflow/multi-agent scenarios;
|
|
88
|
+
`scripts/funnel_soft_gate.py` (advisory code_only/needs_review thresholds,
|
|
89
|
+
`--strict` opt-in); `approval_pauses`/`approval_resumes` counters +
|
|
90
|
+
`approval_resume_rate`; `scripts/bench_agent_smoke.py` weekly fail-open
|
|
91
|
+
real-model agent smoke + `agent-smoke.yml` workflow (report artifact, never
|
|
92
|
+
a gate).
|
|
93
|
+
- Frontend: agent step timeline, source-card → stored-chunk modal, folder
|
|
94
|
+
watch health card, approval TTL countdown with expiry replan, generated-file
|
|
95
|
+
"remembered in Brain" chips, demo-corpus → "connect your own data" CTA,
|
|
96
|
+
parse-repair count note — all ko/en parity and bundle-budget clean.
|
|
97
|
+
- `docs/SURFACE_PARITY.md`: per-surface capability matrix with honest gaps.
|
|
98
|
+
|
|
99
|
+
### Changed
|
|
100
|
+
- Executor prompts use a sliding transcript window (recent 8 steps full,
|
|
101
|
+
older steps one-line summaries, per-string truncation caps, last 3
|
|
102
|
+
corrections); the critic sees every step with capped string bodies
|
|
103
|
+
(`TranscriptBudget`, `LATTICEAI_AGENT_TRANSCRIPT_*`).
|
|
104
|
+
- Agent memory learnings now record the actual terminal status (ok /
|
|
105
|
+
needs_review / failed) and prompt for what-went-wrong on non-DONE runs.
|
|
106
|
+
|
|
7
107
|
## [9.9.3] - 2026-07-22
|
|
8
108
|
|
|
9
109
|
### Added
|
package/docs/DEVELOPMENT.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> **Status: canonical** — current contributor guidance, kept in sync with the
|
|
4
4
|
> current release.
|
|
5
5
|
|
|
6
|
-
Current release: **9.9.
|
|
6
|
+
Current release: **9.9.5 — Closed Gaps**.
|
|
7
7
|
|
|
8
8
|
This document is for contributors working on the local-first Digital Brain
|
|
9
9
|
codebase. Product positioning and quick start stay in `README.md`; release
|
package/docs/ONBOARDING.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Lattice AI Onboarding
|
|
2
2
|
|
|
3
|
-
Current release: **9.9.
|
|
3
|
+
Current release: **9.9.5 — Closed Gaps**.
|
|
4
4
|
|
|
5
5
|
The first-run goal is a five-minute path from "I opened the app" to "my Brain
|
|
6
6
|
has a source, a question, and proof." This page is the product contract behind
|
package/docs/OPERATIONS.md
CHANGED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Lattice AI — Surface Parity Matrix
|
|
2
|
+
|
|
3
|
+
> **Status: reference**
|
|
4
|
+
> 도입: v9.9.4 (2026-07-25, 리뷰 Wave 1.4 "표면 패리티 체크리스트").
|
|
5
|
+
> 갱신: v9.9.5 — VS Code/Telegram 승인 흐름 갭 해소.
|
|
6
|
+
> 목적: 각 표면(서피스)이 Brain 계약의 어디까지를 제공하는지 **정직하게** 기록한다.
|
|
7
|
+
> "앱마다 다른 Lattice"를 방지하는 기준표이며, 기능을 과장하지 않는다.
|
|
8
|
+
|
|
9
|
+
## 표면 정의
|
|
10
|
+
|
|
11
|
+
| 표면 | 진입점 | 성격 |
|
|
12
|
+
| --- | --- | --- |
|
|
13
|
+
| Web `/app` | FastAPI sidecar가 서빙하는 SPA (`static/app`) | 1차 표면 — 모든 기능의 기준 |
|
|
14
|
+
| Desktop | Tauri 셸 (`src-tauri/`) | 동일 SPA를 감싸는 셸 — 웹과 구조적 동일 |
|
|
15
|
+
| VS Code | `vscode-extension/` (`ltcai.*` 커맨드) | 에디터 보조 표면 |
|
|
16
|
+
| Browser | `browser-extension/` (Send to Lattice) | 캡처 전용 표면 |
|
|
17
|
+
| Telegram | 봇 어댑터 | 대화 전용 표면 |
|
|
18
|
+
|
|
19
|
+
## 네 가지 루프 순간 × 표면
|
|
20
|
+
|
|
21
|
+
✅ 제공 · ◐ 부분 제공 · — 미제공(의도) · ✖ 갭(백로그)
|
|
22
|
+
|
|
23
|
+
| 루프 순간 | Web `/app` | Desktop | VS Code | Browser | Telegram |
|
|
24
|
+
| --- | --- | --- | --- | --- | --- |
|
|
25
|
+
| 첫 저장 (Capture) | ✅ DnD·폴더·웹 수집, 품질 경고 | ✅ (웹과 동일) | ◐ `sendToLattice` 선택 영역 전송 | ✅ 페이지 캡처 (단일 목적) | ◐ 메시지 수집 |
|
|
26
|
+
| 첫 회상 (Recall) | ✅ 하이브리드 검색 + grounding 배지 + 출처→청크 | ✅ (동일) | ◐ `askCurrentFile` — 배지 없음 ✖ | — | ◐ 답변만, 배지 없음 |
|
|
27
|
+
| 첫 산출물 (Artifact) | ✅ artifacts[] 카드·미리보기·Brain 기억 칩 | ✅ (동일) | ◐ `createFile` — 검증 파이프라인 경유, 카드 UI 없음 | — | ◐ 파일 전송만 |
|
|
28
|
+
| 첫 보호 (Approval) | ✅ 승인 카드 + TTL 카운트다운 + 재시작 생존 | ✅ (동일) | ✅ List/Approve/Reject 커맨드 + 토큰 캐시 | — | ✅ 인라인 Done/Cancel + run_id/token 재개 |
|
|
29
|
+
|
|
30
|
+
## 기능 상세 × 표면
|
|
31
|
+
|
|
32
|
+
| 기능 | Web `/app` | Desktop | VS Code | Browser | Telegram |
|
|
33
|
+
| --- | --- | --- | --- | --- | --- |
|
|
34
|
+
| 에이전트 스텝 타임라인 (v9.9.4) | ✅ 라이브 SSE | ✅ | — | — | — |
|
|
35
|
+
| 승인 재개 (`/agent/resume`) | ✅ | ✅ | ✅ `ltcai.approveAgent` / `rejectAgent` | — | ✅ callback → resume |
|
|
36
|
+
| 대기 중 승인 목록 (`GET /agent/approvals`, v9.9.4) | ✅ | ✅ | ✅ `ltcai.listApprovals` | — | — (봇 로컬 pending map) |
|
|
37
|
+
| Watch 상태 신호 (v9.9.4) | ✅ 홈 카드 | ✅ | — | — | — |
|
|
38
|
+
| Review Center (제안 승인/거절) | ✅ | ✅ | ✖ | — | — |
|
|
39
|
+
| 데모 코퍼스 First Value Loop | ✅ | ✅ | — | — | — |
|
|
40
|
+
| 모델 로드/추천 | ✅ | ✅ | ◐ `loadModel` | — | — |
|
|
41
|
+
| 코드 편집 보조 (edit/explain/refactor/tests) | — | — | ✅ | — | — |
|
|
42
|
+
|
|
43
|
+
## 규칙
|
|
44
|
+
|
|
45
|
+
1. **API 계약이 기준이다.** 모든 표면은 동일한 sidecar API를 소비한다. 표면별 전용 API를 만들지 않는다.
|
|
46
|
+
2. **◐/✖ 는 문서화된 상태로만 존재한다.** 새 기능을 Web에 추가할 때 이 표를 갱신하고, 다른 표면에 제공하지 않을 경우 "—(의도)" 인지 "✖(갭)" 인지 명시한다.
|
|
47
|
+
3. **✖ 갭은 릴리스 노트의 Honest Limitations 후보다.** 현재 갭: VS Code 회상 배지, VS Code Review Center.
|
|
48
|
+
4. 릴리스마다 이 표를 검토한다 (release checklist의 docs 단계).
|
|
49
|
+
|
|
50
|
+
## VS Code / Telegram 승인 메모 (v9.9.5)
|
|
51
|
+
|
|
52
|
+
- **토큰은 GET `/agent/approvals`에 다시 내려가지 않는다** (보안). Web은 일시 중지 응답의 토큰을 클라이언트에 보관하고, VS Code도 동일하게 pause 응답의 토큰을 확장 세션 캐시에 둔다. 캐시에 없으면 붙여넣기 또는 웹 UI로 유도한다.
|
|
53
|
+
- **Telegram**은 `waiting_approval`(레거시 `human_in_loop`)과 `awaiting_approval`(토큰) 둘 다 인라인 키보드로 처리하며, resume 시 run_id+token을 우선한다.
|
package/docs/TRUST_MODEL.md
CHANGED
package/docs/WHY_LATTICE.md
CHANGED
package/docs/kg-schema.md
CHANGED