Skip to content

Releases: dkedar7/langstage-vscode

Extension 0.6.5

Choose a tag to compare

@dkedar7 dkedar7 released this 14 Oct 14:10
be3d04c

Works with any sidecar; needs no new one.

Fixed

  • A tool card stops spinning when its turn ends (gh #166). A turn that ended without
    the call's tool_end (Stop during a slow tool: tool_start → cancelled → turn_end; a
    tool that raised: tool_start → error → turn_end) left the card on "Running…" for
    good, and a reload replayed it. When the turn ends, a call still open is now closed:
    after a failed turn it fails with the turn's error, otherwise it shows a new
    "did not finish" mark and "Stopped before it finished.". A restored transcript settles
    the same way. The call a turn paused in for an approval stays open, since the resumed
    turn completes it, unless the agent restarts before it's answered.
  • The editor honors [workspace] root and LANGSTAGE_WORKSPACE_ROOT (gh #165). The
    extension launched the sidecar with --workspace <folder> and overwrote
    LANGSTAGE_WORKSPACE_ROOT, so a root set in langstage.toml or the environment was
    dropped without notice, and the editor ran the agent somewhere other than the
    --selfcheck / --message preflight did. The sidecar now starts in the workspace
    folder with no flag and the environment as it is: the folder is the default root, and
    langstage.toml (found from the folder up) and LANGSTAGE_WORKSPACE_ROOT win over it,
    as documented. With neither set, nothing changes.

Extension 0.6.4

Choose a tag to compare

@dkedar7 dkedar7 released this 12 Oct 02:14
15f03db

Works with any sidecar; 0.5.37 is recommended (see below).

Fixed

  • An approved tool call doesn't spin forever. After you approve a paused tool call,
    the resumed turn announces that call again, with the same id, before its result.
    The panel added a second card for it, the result completed only that one, and the
    first card kept spinning. The panel now keeps the one card and completes it.

Extension 0.6.3

Choose a tag to compare

@dkedar7 dkedar7 released this 11 Oct 15:05
b1c2b2c

Needs no new sidecar. The Python package is unchanged at 0.5.36.

Fixed

  • The store page has a README (gh #160). The VSIX shipped no README.md or
    CHANGELOG.md (extension/ had neither, and vsce doesn't pick up the repo-root
    README), so the Details page on the VS Code Marketplace, Open VSX and the editor's
    Extensions view was blank, and a store-only user never learned the extension needs
    pip install langstage-vscode. There is now an extension/README.md written for
    extension users: the two-part install with langstage.pythonPath, Try the demo,
    langstage.agentSpec, the settings and commands, what the panel does, and links to the
    repo and the docs, all with absolute URLs. The VSIX now carries the
    Microsoft.VisualStudio.Services.Content.Details asset. extension/CHANGELOG.md holds
    the extension-only history (0.3.1 to 0.6.3) for the store's Changelog tab; each
    extension release now adds its entry there as well as here.
  • A missing sidecar names the fix (gh #160). When langstage.pythonPath's interpreter
    has no langstage-vscode, startup failed with
    sidecar exited before it was ready: ModuleNotFoundError: No module named langstage_vscode.
    SidecarClient now recognizes No module named langstage_vscode and fails with a
    SidecarNotInstalledError. Its message says the package isn't installed in that
    interpreter and ends with <python> -m pip install langstage-vscode (quoted, with
    PowerShell's & on Windows, like the outdated-sidecar warning's command). The status
    carries the command as installCommand, and the panel shows a Copy install command
    button next to Open settings. @langstage shows the same message. A different missing
    module, such as one of your agent's dependencies, still shows the last stderr line.

Docs

  • The README no longer says Marketplace and Open VSX publishing "come next": the extension
    is published on both. The release steps mention extension/CHANGELOG.md.

Tests

  • CI's extension-build job fails if the built VSIX lacks the Details or Changelog
    asset. src/test/storePage.test.ts checks that the store README documents every
    setting and palette command in package.json, uses only absolute links, and that
    extension/CHANGELOG.md has an entry for the package.json version.

Extension 0.6.2

Choose a tag to compare

@dkedar7 dkedar7 released this 30 Sep 14:34
d2f7894

Needs no new sidecar, but expects langstage-vscode 0.5.35 or newer and warns about an
older one.

Added

  • The extension checks which sidecar it spawned (gh #89). It reads the handshake in the
    sidecar's ready frame (sidecar 0.5.35) before it sends a command, in SidecarClient,
    so the panel and @langstage both get it:
    • A newer protocol is refused. A sidecar whose protocol is newer than the one this
      extension supports (1) could have removed or redefined a command it sends, so it
      doesn't start: the status is failed with, for example, "The langstage-vscode sidecar
      in python (0.7.0) speaks protocol 2, but this version of the LangStage extension
      supports protocol 1. Update the LangStage extension."
      , and the process is stopped.
    • An older sidecar gets a warning. A sidecar older than 0.5.35, or one that doesn't
      report its version (every release before 0.5.35), still runs, but a warning names the
      interpreter and its version and offers a Copy command button for
      <python> -m pip install -U langstage-vscode. It shows once per interpreter per
      activation, however many sidecars the panel and @langstage start.
    • cancel only where it is served. Stop sends cancel when the sidecar lists it in
      its capabilities, or lists none (a sidecar older than 0.5.35, which serves it: no
      change there). A sidecar that lists capabilities without cancel couldn't stop the
      turn, so Stop ends the turn in the extension and stops that sidecar process instead.
    • SidecarClient exposes the handshake as info and on its ready status, next to
      checkpointer, and takes an onReady callback.

Extension 0.6.1

Choose a tag to compare

@dkedar7 dkedar7 released this 30 Sep 13:33
a6a71b6

Changed

  • The "may not remember" note shows only when memory was lost (gh #152). The panel marks
    a restored conversation (and every sidecar restart) with "The agent may not remember the
    conversation above"
    . It now reads the checkpointer the sidecar reports in its ready
    frame (sidecar 0.5.34) and leaves the note out when it is durable (SqliteSaver,
    PostgresSaver, ...), since that agent still has the conversation. With an in-memory
    checkpointer, before the sidecar is ready, or with an older sidecar that doesn't report
    one, the note is shown as before. SidecarClient's ready status and the panel's
    status message carry the new checkpointer field.

LangStage for VS Code 0.6.0 — standalone panel (preview)

Choose a tag to compare

@dkedar7 dkedar7 released this 26 Sep 18:07
0ba6426

A standalone LangStage panel that works in any VS Code-based editor — VS Code (no Copilot sign-in needed), Cursor, VSCodium, Windsurf — alongside the existing @langstage Copilot chat participant.

  • Streaming replies, tool-call cards, reasoning, todos/plan
  • Approval cards: Approve / Reject (reason) / Respond / Edit
  • Multiple conversations, each with its own agent session, saved per workspace
  • Requires the Python sidecar: pip install langstage-vscode (0.5.33+)

Install: download langstage-vscode-0.6.0.vsix below → in your editor run Extensions: Install from VSIX… (or code --install-extension langstage-vscode-0.6.0.vsix). Marketplace / Open VSX listings are coming.

Design: ADR 0001 · Changes: CHANGELOG

panel demo

langstage-vscode 0.5.11

Choose a tag to compare

@dkedar7 dkedar7 released this 10 Jul 12:14
94e0470

Added

  • A one-shot --message / --prompt flag: drive a single turn and print the reply, without hand-crafting NDJSON (gh #48). --selfcheck validates the runtime with a fixed internal ping and prints only an OK:/FAIL: verdict; seeing your agent's actual answer to a prompt of your choosing previously meant driving the stdio protocol by hand. langstage-vscode-sidecar --agent ./my.py:graph --message "summarize the repo" now loads the agent, drives one turn, prints the assembled reply, and exits 0 (clean) / non-zero (on an error frame) — no shutdown handshake. Pair with --json to emit the raw event_to_dict frames for scripting. Honors the same config chain and --workspace as a normal run.

langstage-vscode 0.5.10

Choose a tag to compare

@dkedar7 dkedar7 released this 10 Jul 02:47
5877361

Fixed

  • A spec that loads a non-runnable object crashed the sidecar with no error frame (gh #46). When --agent <spec> loaded successfully but resolved to something that isn't a runnable CompiledGraph (a factory function, an uncompiled StateGraph, a bare value), the sidecar emitted {"type": "ready"} then died with an uncaught AttributeError from deep inside ag-ui — never emitting the documented {"type": "error", ...} frame. The runtime path now applies the same runnable-graph guard --selfcheck uses and surfaces the identical actionable message; the check is shared via one helper so the two paths can't drift, and the agent-build except was broadened so any build failure degrades to an error frame instead of a crash.

v0.5.9

Choose a tag to compare

@dkedar7 dkedar7 released this 08 Jul 12:56
0fc0596

Fixed

  • The interrupt card now names the real action instead of "an action" (gh #44). The extension rendered the HITL approval card from action_requests[0].tool, but the sidecar emits the standard HumanInterrupt action request as {"action": <tool>, "args": {...}} (key action, never tool) — so the card always fell back to "wants to run an action". It now reads .action (fallback .tool). The masking sidecar test that used a fictional {"tool": ...} shape now uses the real HumanInterrupt shape.

v0.5.8

Choose a tag to compare

@dkedar7 dkedar7 released this 08 Jul 01:42
00af826

Fixed

  • --show-config no longer crashes on a cp1252 stdout when a resolved value has a non-Latin-1 character (gh #42). The VS Code extension spawns the sidecar over a cp1252 (strict) pipe, so a resolved value with a CJK/Cyrillic char (agent spec, or a project path under a non-Latin-1 folder) made print(cfg.describe(...)) die with UnicodeEncodeError and emit nothing. It now degrades unrepresentable characters to escapes instead of crashing; a UTF-8 stdout keeps full fidelity.