Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 0 additions & 38 deletions rust/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

372 changes: 17 additions & 355 deletions rust/contracts/application-boundary.md

Large diffs are not rendered by default.

44 changes: 14 additions & 30 deletions rust/contracts/ide-api/v1.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,47 +101,34 @@ configuration values, never portable workspace identifiers.
| Tool | Arguments | Permission | Result |
| --- | --- | --- | --- |
| `lithe_project_inspect` | none | read | workspace identity, name, permissions and available readiness state |
| `lithe_environment_inspect` | none | read | project-local `settings`, `discovered`, and `effective` toolchains |
| `lithe_environment_configure` | optional `javaHomePath`, `mavenExecutablePath`, `mavenJavaHomePath`, `settingsPath`, `localRepositoryPath` | configure | persisted/effective settings or explicit failure; omitted settings are preserved |
| `lithe_maven_inspect` | none | read | project/modules, profiles, skip-tests and reload/error state |
| `lithe_maven_configure` | optional `profiles`, `skipTests` | configure | saved profiles and reload state |
| `lithe_maven_reload` | none | execute | outcome of existing project/Java synchronization |
| `lithe_build_inspect` | none | read | detected plugin instances, declarations and current model identities |
| `lithe_build_reload` | `instanceID` | execute | model reload requested; inspect until model state is ready |
| `lithe_build_configure` | `instanceID`, `optionID`, `value` (string, boolean, string list or null) | configure | checked persisted option and reload state; null resets the declared option |
| `lithe_build_execute` | `instanceID`, `taskID`, optional `projectID`, `targetID`, `modelTaskID`, `userArguments` | execute | `operationID` for the same Build execution shown by the IDE |
| `lithe_maven_execute` | `goals`, optional `modulePath` | execute | Windows current Maven execution; unavailable on macOS |
| `lithe_run_list` | none | read | project configurations with IDs, names, providers and readiness |
| `lithe_run_start` | `configurationID` | execute | `operationID` after launch; failure if launch was refused |
| `lithe_run_restart` | `operationID` | execute | replacement execution's `operationID` |
| `lithe_operations_list` | none | read | retained Build/Run operations and status, without log bodies |
| `lithe_operation_output` | `operationID`, optional opaque `cursor` | read | state, nullable exitCode, bounded output and cursor |
| `lithe_operation_stop` | `operationID` | execute | stop request for that exact execution |

Empty configuration paths restore automatic selection. macOS does not serve
`lithe_environment_inspect`, `lithe_environment_configure` or any `lithe_maven_*`
tool: toolchains and build tools belong to plugins there, so an agent reads and
sets their options through `lithe_build_inspect` / `lithe_build_configure` on the
plugin's Build instance, and native XML uses its explicit configuration
workflow. Windows still serves the environment tools, including `settingsPath`
and `localRepositoryPath`, which require a loaded Maven project. An open unsaved
settings draft or an in-progress save returns `BUSY`; the Agent cannot reset
that draft or save unrelated edits. Source read failures remain failures and
never become automatic tool selection.
The catalog has no language- or tool-specific capability. Toolchains and build
tools belong to plugins, so an agent reads and sets their options through
`lithe_build_inspect` / `lithe_build_configure` on the plugin's Build instance,
and a tool-native configuration file uses its explicit configuration workflow.
Configuration writes use the existing platform stores;
they are not a transaction across multiple settings documents. An error can follow
a partial save, so inspect settings before retrying. Credentials, full launch
environment values and command arguments are not included in run configuration
listing. Toolchain discovery uses existing installed tools; it does not install
or download a JDK or Maven. Maven execution may download dependencies or execute
plugins, and is therefore an execute capability.
listing. Build execution may download dependencies or execute project code, and
is therefore an execute capability.

On macOS, build execution uses the enabled plugin's detected instance and task
identities. Read them with `lithe_build_inspect`; model project, target and task
selectors require a loaded, current model and are resolved again for each call.
A model task also requires its declaring template and project. Arguments remain
an array of tokens all the way to the Provider; the host does not reinterpret
Maven goals, construct a command string or use the old Maven execution service.
them or construct a command string.
`lithe_build_inspect` also returns each option's ID, kind, effective value, source,
choices and allowCustom, plus native-configuration availability. `lithe_build_configure`
validates one value with the same current instance/model used by the native option
Expand All @@ -155,15 +142,12 @@ stale Provider work and invalidate native drafts, models and language import.
The same effective Build options, configured tool resolver and workspace Provider
serve UI and Agent calls. An active Build execution returns `BUSY`.

macOS exposes the four plugin Build tools and removes all four Maven-specific
tools from discovery and admission. Windows connects Build inspect, reload, configure and
execute to its existing workspace-owned Provider controller, alongside the four
Maven tools whose current consumers are still being migrated. Detection reads
Both products expose the four plugin Build tools. Windows connects Build inspect,
reload, configure and execute to its existing workspace-owned Provider controller. Detection reads
only admitted declarations and saved options. Product Build capability admission
remains closed; exposing an implemented API does not admit a plugin requiring
unimplemented capabilities. Windows configure shares the explicit native UI save path, persists machine-local workspace overrides, checks team/local source revisions and re-detects after publication. Null restores team/declaration inheritance; it does not edit a tool-native configuration file.
An unexposed call returns `NOT_SUPPORTED` before native execution. The complete
Maven project, settings and Run migration remains pending outside these Agent paths.
An unexposed call returns `NOT_SUPPORTED` before native execution.

Windows requires a complete, current model before executing a task. Reload uses
the existing model preparation and returns immediately; inspect reports its state.
Expand All @@ -178,7 +162,7 @@ prevents new starts; already accepted work remains owned by the product workspac
whose close/plugin lifecycle cancels it and waits for cleanup.

Run operates on saved project configurations, not the currently focused editor
file. Existing Java build decisions are still shown in the IDE; the API never
file. Pending build decisions are still shown in the IDE; the API never
silently answers them. Output is retained only as long as its existing IDE output
slot: replacing a run, removing its tab, or closing the workspace may expire an
operation. Callers receive `OPERATION_EXPIRED`, never another run's output.
Expand Down Expand Up @@ -224,9 +208,9 @@ surface; it does not introduce a new plugin marketplace, sandbox or UI extension
- `cargo test --manifest-path rust/Cargo.toml -p lithe-ide-host`
- `cargo build --manifest-path rust/Cargo.toml -p lithe-ide-host --features mcp --bin lithe-mcp`
- `node --test scripts/ide-mcp/test-ide-mcp.mjs`
- Windows: the host-api, Maven, run and project-environment frontend tests, plus a
native packaged run using the generated client configuration.
- Windows: the host-api and run frontend tests, plus a native packaged run using
the generated client configuration.
- macOS: `IdeCapabilitiesTests`, followed by a packaged native run.
- Both platforms: configure JDK/Maven, reload, execute Maven, start a configuration,
- Both platforms: configure a plugin Build option, reload, execute a Build task, start a configuration,
read incremental output, restart, reject the old ID, stop, revoke, and close the
project. Confirm installed resource manifests/hashes remain unchanged.
21 changes: 0 additions & 21 deletions rust/contracts/maven-launch-context-v1.schema.json

This file was deleted.

22 changes: 0 additions & 22 deletions rust/contracts/maven-portable-configuration-v1.schema.json

This file was deleted.

48 changes: 0 additions & 48 deletions rust/contracts/run-configuration-v1.schema.json

This file was deleted.

43 changes: 3 additions & 40 deletions rust/contracts/run-configuration-v2.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,41 +24,11 @@
},
"toolchain": {
"type": "object",
"description": "Machine-local project toolchain defaults. Stored only in the local layer; non-empty per-configuration paths override matching defaults.",
"description": "Machine-local project toolchain state. Stored only in the local layer. Core reads and replaces only `preferences`; other fields belong to whichever host or plugin wrote them and are preserved unchanged.",
"properties": {
"preferences": { "$ref": "toolchain-consumer-preferences-v1.schema.json" },
"java": {
"type": "object",
"properties": {
"homePath": { "type": "string" }
},
"additionalProperties": false
},
"maven": {
"type": "object",
"properties": {
"executablePath": { "type": "string" },
"javaHomePath": { "type": "string" }
},
"additionalProperties": false
},
"pathOverrides": {
"type": "object",
"description": "Machine-local subproject selections, keyed by normalized workspace-relative root. Empty fields inherit project defaults. Hosts preserve the map when saving individual run configurations.",
"maxProperties": 256,
"propertyNames": { "type": "string", "minLength": 1, "maxLength": 1024, "pattern": "^(?!/)(?!.*//)(?!.*/$)(?!.*(?:^|/)(?:\\.|\\.\\.)(?:/|$))[^\\\\:\\x00-\\x1f\\x7f]+$" },
"additionalProperties": {
"type": "object",
"additionalProperties": false,
"properties": {
"javaHomePath": { "type": "string", "maxLength": 4096 },
"mavenExecutablePath": { "type": "string", "maxLength": 4096 },
"mavenJavaHomePath": { "type": "string", "maxLength": 4096 }
}
}
}
"preferences": { "$ref": "toolchain-consumer-preferences-v1.schema.json" }
},
"additionalProperties": false
"additionalProperties": true
},
"configurations": {
"type": "array",
Expand Down Expand Up @@ -235,13 +205,6 @@
"extensions": {
"type": "object",
"propertyNames": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
"properties": {
"java": { "type": "object", "properties": {
"build": { "$ref": "#/$defs/buildProjectReference" },
"module": { "type": "string" },
"mainClass": { "type": ["string", "null"] }
} }
},
"additionalProperties": { "type": "object" }
},
"disabled": { "type": "boolean" },
Expand Down
Loading
Loading