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: 18 additions & 20 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,23 @@
All notable changes to the VS Code extension are documented here.

## [Unreleased]
### Fixed
- **Cold-start SIGTERM under slow Ollama loads.** `bridge.ts` previously
killed the child after a hard-coded 20 s `ready`-event window, which
made cold loads of 14B+ Ollama models routinely surface as
`specsmith not responding (tried: …)` followed by a SIGTERM-on-retry.
The window is now user-configurable via the new
`specsmith.startupTimeoutMs` setting (default 60 000 ms; clamped to
[5 000, 600 000]) and the bridge grants a one-time extension when
stderr proves the child is alive but slow. The retry/error messages
now quote the configured timeout and point users at the setting.
### Removed
- **Cloud Runs sidebar tree retired.** The `specsmith.cloud` view (`Cloud Runs`) and the `CloudTree` provider have been removed. The CLI-side `specsmith cloud spawn` / `specsmith cloud-serve` commands they fronted are no longer shipped.
## [0.8.0] — 2026-05-01
### Added — Bring-Your-Own-Endpoint (REQ-142)
- **`EndpointsClient` module** shells out to `specsmith endpoints list / test --json` and surfaces results to the host. JSON parsers (`parseEndpointsList`, `parseEndpointHealth`) and the `applyEndpointArg` bridge helper are exported pure-TS so they have direct mocha coverage.
- **`specsmith.endpoints` command.** Quick Pick over the registered endpoints with copy-id / set-default / test actions; `\u2605` marks the current default.
- **`specsmith.testEndpoint` command.** Probes `/v1/models` via `specsmith endpoints test --json` and shows a notification with latency + model count.
- **`SessionConfig.endpointId`** plumbed through `bridge.ts`. When set, the bridge appends `--endpoint <id>` to `specsmith run`, routing the LLM turn to the OpenAI-v1-compatible backend registered with `specsmith endpoints add` (vLLM, llama.cpp `server`, LM Studio, TGI, ...).
- **11 new mocha tests** in `src/test/endpoints-client.test.ts`. Total now 117 passing (was 104).

### Added
- **`specsmith.startupTimeoutMs` setting** in `package.json`. Read by
`SessionPanel.create()` and threaded through `SpecsmithBridge` via
a new optional constructor argument; clamped inside
`_clampStartupTimeoutMs(value)` (also exported for tests).
- **8 new mocha tests** in `src/test/bridge-recovery.test.ts` covering
the clamp helper (defaults, NaN/Infinity, low/high clamps, fractional
flooring) and the `SpecsmithBridge` constructor signature.
### Changed
- `package.json` version bumped from 0.7.0 to 0.8.0; description mentions BYOE OpenAI-v1 endpoints.

### Validation
- `npm run lint` (tsc --noEmit): clean.
- `npm run build` (esbuild): 279.8kb bundle.
- `npm test`: **117 passing** (+13 since 0.7.0).
## [0.7.0] — 2026-04-30
### Added — warp parity follow-up
- **Drive sidebar tree (REQ-133).** New `src/DriveTree.ts` exposes the contents of ~/.specsmith/drive as a sidebar tree. Title-bar actions trigger `specsmith drive push` / `pull`.
Expand Down Expand Up @@ -228,10 +226,10 @@ Four iterations of the chat panel — block-rendered webview, voice + interactiv
## [0.5.0] — 2026-04-28

### Added
- **Five additive sidebar tree views** under the specsmith activity bar:
- **Four additive sidebar tree views** under the specsmith activity bar:
Workflows (`.specsmith/workflows/*.yml`), Notebooks (`docs/notebooks/*.md`),
Rules (`docs/governance/*_RULES.md`), MCP Servers (entries from
`.specsmith/mcp.yml`), Cloud Runs (`.specsmith/cloud/*/manifest.json`).
`.specsmith/mcp.yml`).
Each view watches its glob and refreshes automatically; clicking an item
opens or runs it.
- **Execution-profile status bar item** (`ProfileBar`) showing the active
Expand Down
167 changes: 161 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"name": "specsmith-vscode",
"displayName": "specsmith - AEE Workbench",
"description": "Applied Epistemic Engineering workbench. 6-tab Settings panel, AI agent sessions, execution profiles, FPGA/HDL tool support, Ollama local LLMs, and tool installer.",
"version": "0.7.0",
"description": "Applied Epistemic Engineering workbench. Multi-agent activity routing, BYOE endpoints, AEE phase tree, epistemic notebooks, hierarchical rules, MCP server registry, FPGA/HDL tool support, Ollama local LLMs.",
"version": "0.10.0",
"publisher": "BitConcepts",
"license": "MIT",
"engines": {
Expand Down Expand Up @@ -76,13 +76,18 @@
"type": "tree"
},
{
"id": "specsmith.cloud",
"name": "Cloud Runs",
"id": "specsmith.drive",
"name": "Drive",
"type": "tree"
},
{
"id": "specsmith.drive",
"name": "Drive",
"id": "specsmith.endpoints",
"name": "BYOE Endpoints",
"type": "tree"
},
{
"id": "specsmith.agents",
"name": "Agent Profiles",
"type": "tree"
},
{
Expand Down Expand Up @@ -407,6 +412,101 @@
"title": "Suggest Command",
"category": "specsmith",
"icon": "$(lightbulb)"
},
{
"command": "specsmith.endpoints",
"title": "BYOE Endpoints\u2026",
"category": "specsmith",
"icon": "$(plug)"
},
{
"command": "specsmith.testEndpoint",
"title": "Test BYOE Endpoint",
"category": "specsmith",
"icon": "$(beaker)"
},
{
"command": "specsmith.refreshEndpoints",
"title": "Refresh BYOE Endpoints",
"category": "specsmith",
"icon": "$(refresh)"
},
{
"command": "specsmith.agents",
"title": "Agent Profiles\u2026",
"category": "specsmith",
"icon": "$(person)"
},
{
"command": "specsmith.testAgent",
"title": "Test Agent Profile",
"category": "specsmith",
"icon": "$(beaker)"
},
{
"command": "specsmith.refreshAgents",
"title": "Refresh Agent Profiles",
"category": "specsmith",
"icon": "$(refresh)"
},
{
"command": "specsmith.applyAgentPreset",
"title": "Apply Agent Preset (default / local-only / frontier-only / cost-conscious)",
"category": "specsmith",
"icon": "$(library)"
},
{
"command": "specsmith.routeActivity",
"title": "Route Activity to Agent Profile",
"category": "specsmith",
"icon": "$(arrow-right)"
},
{
"command": "specsmith.pickSessionProfile",
"title": "Pick Session Profile",
"category": "specsmith",
"icon": "$(person-add)"
},
{
"command": "specsmith.refreshWorkflows",
"title": "Refresh Workflows",
"category": "specsmith",
"icon": "$(refresh)"
},
{
"command": "specsmith.advancePhase",
"title": "Advance AEE Phase",
"category": "specsmith",
"icon": "$(arrow-right)"
},
{
"command": "specsmith.openRun",
"title": "Open Run Folder",
"category": "specsmith"
},
{
"command": "specsmith.refreshNotebooks",
"title": "Refresh Epistemic Notebooks",
"category": "specsmith",
"icon": "$(refresh)"
},
{
"command": "specsmith.newNotebook",
"title": "New Epistemic Notebook",
"category": "specsmith",
"icon": "$(add)"
},
{
"command": "specsmith.refreshRules",
"title": "Refresh Rules",
"category": "specsmith",
"icon": "$(refresh)"
},
{
"command": "specsmith.refreshMcp",
"title": "Refresh MCP Servers",
"category": "specsmith",
"icon": "$(refresh)"
}
],
"menus": {
Expand Down Expand Up @@ -475,6 +575,61 @@
"command": "specsmith.refreshBookmarks",
"when": "view == specsmith.bookmarks",
"group": "navigation"
},
{
"command": "specsmith.refreshEndpoints",
"when": "view == specsmith.endpoints",
"group": "navigation"
},
{
"command": "specsmith.endpoints",
"when": "view == specsmith.endpoints",
"group": "navigation"
},
{
"command": "specsmith.refreshAgents",
"when": "view == specsmith.agents",
"group": "navigation"
},
{
"command": "specsmith.agents",
"when": "view == specsmith.agents",
"group": "navigation"
},
{
"command": "specsmith.applyAgentPreset",
"when": "view == specsmith.agents",
"group": "navigation"
},
{
"command": "specsmith.refreshWorkflows",
"when": "view == specsmith.workflows",
"group": "navigation"
},
{
"command": "specsmith.advancePhase",
"when": "view == specsmith.workflows",
"group": "navigation"
},
{
"command": "specsmith.refreshNotebooks",
"when": "view == specsmith.notebooks",
"group": "navigation"
},
{
"command": "specsmith.newNotebook",
"when": "view == specsmith.notebooks",
"group": "navigation"
},
{
"command": "specsmith.refreshRules",
"when": "view == specsmith.rules",
"group": "navigation"
},
{
"command": "specsmith.refreshMcp",
"when": "view == specsmith.mcp",
"group": "navigation"
}
],
"view/item/context": [
Expand Down
Loading