111 lines
3.4 KiB
Markdown
111 lines
3.4 KiB
Markdown
---
|
|
id: PLN-0023
|
|
ticket: studio-editor-write-wave-supported-non-frontend-files
|
|
title: Scaffold flat-packed prometeu-lsp API and Studio session seams
|
|
status: done
|
|
created: 2026-03-31
|
|
completed: 2026-03-31
|
|
tags: [studio, lsp, api, packaging, session]
|
|
---
|
|
|
|
## Objective
|
|
|
|
Create the flat-packed `prometeu-lsp` module surfaces and the Studio/VFS session seams required by DEC-0011 before semantic capabilities are implemented.
|
|
|
|
## Background
|
|
|
|
`prometeu-lsp` currently exists only as empty Gradle modules.
|
|
DEC-0011 requires:
|
|
|
|
- flat packaging in the style of `prometeu-packer-api`,
|
|
- a Studio-integrated semantic consumer above VFS,
|
|
- and a clean session-level seam for opened-document snapshots and closed-document filesystem fallback.
|
|
|
|
## Scope
|
|
|
|
### Included
|
|
- scaffold public LSP API packages and contract types
|
|
- scaffold runtime/v1 module shape
|
|
- add Studio-side integration seam for a project-session-owned LSP consumer
|
|
|
|
### Excluded
|
|
- actual diagnostics/symbol/definition/highlight logic
|
|
- frontend editing
|
|
- completion
|
|
|
|
## Execution Steps
|
|
|
|
### Step 1 - Create Flat API Surfaces
|
|
|
|
**What:**
|
|
Set up `prometeu-lsp-api` with explicit public package surfaces.
|
|
|
|
**How:**
|
|
Create shallow public packages such as:
|
|
|
|
- `dtos`
|
|
- `messages`
|
|
- `events`
|
|
|
|
along with the top-level service/factory/context contracts needed by Studio.
|
|
|
|
**File(s):**
|
|
- `prometeu-lsp/prometeu-lsp-api/src/main/java/**`
|
|
|
|
### Step 2 - Create Runtime/V1 Wiring
|
|
|
|
**What:**
|
|
Set up the first concrete implementation module.
|
|
|
|
**How:**
|
|
Add the initial runtime package layout in `prometeu-lsp-v1`, including factory and internal service skeletons that consume `prometeu-vfs` state rather than raw filesystem reads.
|
|
|
|
**File(s):**
|
|
- `prometeu-lsp/prometeu-lsp-v1/src/main/java/**`
|
|
- `prometeu-lsp/prometeu-lsp-v1/build.gradle.kts`
|
|
|
|
### Step 3 - Add Studio Session Integration Seams
|
|
|
|
**What:**
|
|
Make room for a project-session-owned LSP consumer in Studio.
|
|
|
|
**How:**
|
|
Introduce or extend Studio project-session types so an integrated LSP consumer can later be constructed from project context and VFS access without changing the architectural owner.
|
|
|
|
**File(s):**
|
|
- `prometeu-studio/src/main/java/p/studio/projectsessions/**`
|
|
- `prometeu-studio/src/main/java/p/studio/window/MainView.java`
|
|
- `prometeu-studio/src/main/java/p/studio/window/StudioWindowCoordinator.java`
|
|
|
|
## Test Requirements
|
|
|
|
### Unit Tests
|
|
- API contract smoke tests where useful
|
|
- session-seam construction tests
|
|
|
|
### Integration Tests
|
|
- project-session integration test proving Studio can construct LSP scaffold without semantic behavior yet
|
|
|
|
### Manual Verification
|
|
- confirm package layout is shallow and public surfaces are legible
|
|
- confirm no direct filesystem ownership leaks into Studio UI code
|
|
|
|
## Acceptance Criteria
|
|
|
|
- [ ] `prometeu-lsp-api` exposes flat public package surfaces
|
|
- [ ] `prometeu-lsp-v1` contains concrete scaffold wiring above VFS
|
|
- [ ] Studio has a session seam ready for an integrated LSP consumer
|
|
- [ ] no semantic feature implementation is required yet for the scaffold to compile
|
|
|
|
## Dependencies
|
|
|
|
- DEC-0011 accepted
|
|
- PLN-0022 review completed or otherwise stable enough for contract shape
|
|
- DEC-0010 major VFS contract direction already stable
|
|
|
|
## Risks
|
|
|
|
- public API may accidentally mirror internal implementation packages too closely
|
|
- Studio session ownership could drift if LSP is wired too low in the editor UI
|
|
- premature semantic helpers may leak into the scaffold plan if scope is not kept tight
|