chore: version packages#285
Open
github-actions[bot] wants to merge 1 commit into
Open
Conversation
a7b97ff to
b675ab1
Compare
b675ab1 to
29c2dcb
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@gemstack/framework@0.9.0
Minor Changes
27f522a: feat(framework): opt-in browser notifications on the dashboard for run-end and choice gates ([The Framework] Dashboard: browser notifications on run-end + choice gates #317)
The localhost dashboard can now notify you when a run finishes (or fails/stops) and when a run reaches a
<Choices>gate that needs your input (e.g. a PLAN.md approval). Opt in via the header bell; it only nudges when the dashboard tab is backgrounded, so a run you are watching stays quiet.63b2a73: feat(framework): document sidebar on the dashboard, rendering the run's PLAN.md / TODO.md ([The Framework] Dashboard: document sidebar (render PLAN.md / TODO.md) #319)
The localhost dashboard now surfaces the
PLAN.mdandTODO.mdthe agent writes at the workspace root (via the anti-lazy-pill) in a right sidebar, rendered as markdown with a sticky tab nav to jump between them. A newGET /api/docsendpoint reads the surfaced docs (fixed filenames, gated on the workspacecwdlike/api/runs); the sidebar polls it so a plan written mid-run appears, and stays hidden when there are no docs.388f3ad: feat(framework): browse a project's run history in the dashboard ([The Framework] Run history in the dashboard (single project) #303)
The dashboard now has a left sidebar listing a project's past runs (intent, status, session link); clicking one replays that run's projection in the main view, and "Back to live" returns to the current run. Each finished run is archived under
.framework/runs/<id>.jsonl+.framework/runs/<id>.json(a crash that skips the final flush is archived on the next run), and served overGET /api/runsandGET /api/runs/<id>. Single project only. Closes [The Framework] Run history in the dashboard (single project) #303.5882932: feat(framework): inject a system prompt into every prompt (anti-lazy-pill + SYSTEM.md)
Every run is now framed with a built-in system prompt: the validated anti-lazy-pill ([The Framework] Bootstrap mode #297), which turns unclear scope into a ranked list, a large scope into a
PLAN.md, and a very large one into aTODO.mdbacklog, so the agent builds a real backend and declares what it descopes instead of silently faking it. Drop aSYSTEM.mdat the workspace root to add project-specific instructions on top, or setantiLazyPill: falseinthe-framework.ymlto remove the built-in default. Closes [The Framework] User system prompt injected into every prompt #301.1f6a0d3: feat(framework): interactive plan-approval choice + autopilot in the dashboard ([The Framework] Interactive <Choices> panel + autopilot auto-accept #304)
The run now pauses at a plan-approval gate right after the architect decides the stack (the AWAIT point of the plan-then-AWAIT flow): the dashboard shows a "Your call" panel with "Proceed" plus each architect alternative as "Use X instead". Accept with the button or Ctrl+Enter, or leave the
[x] autopilotcountdown auto-accept the recommended plan after 10s (moving the mouse cancels it). Picking an alternative re-architects the run around it. NewrequestChoiceoption onrunFramework,choice/choice-resolvedevents, and aPOST /choicedashboard route; a headless run with no handler auto-accepts the recommended plan, so nothing else changes. Closes [The Framework] Interactive <Choices> panel + autopilot auto-accept #304.f496a54: Add a multi-select gate (
showMultiSelect()): a dashboard checklist with pre-checked defaults that pauses the run and resolves to the selected subset. Built on the existing single-select choice gate (same panel and POST-back resolver), exposed asrequestMultiSelect(); a headless run auto-accepts the default set. This is the primitive the [Research] preset uses to let the user pick which problems to deep-dive.e370b41: feat(framework): turn an agent's showMultiSelect()+AWAIT into a live checklist gate (Turn-boundary gate: agent showMultiSelect()+AWAIT becomes a live checklist gate #339)
The multi twin of the single-select turn-boundary gate (Turn-boundary gate: an agent's showChoices()+AWAIT becomes a live gate #337). When a build turn ends on an
await-multiselectblock, the framework shows a checklist on the dashboard (viarequestMultiSelect, with the agent-marked defaults pre-checked), waits for the selection, and re-prompts the agent to continue from it. This is what the research preset needs to let the user pick which problems to deep-dive. Same safety as Turn-boundary gate: an agent's showChoices()+AWAIT becomes a live gate #337: a no-op when headless and when the agent just finishes.21fe373: feat(framework): persistent background dashboard daemon ([The Framework] Persistent background dashboard process #302)
Bare
frameworknow ensures a long-lived dashboard process for the workspace and prints its URL plus the convenience commands;framework stopshuts it down. The dashboard is a projection of.framework/events.jsonl: the detached daemon tails the log and pushes each new event to connected browsers, so it outlives any single run. The tailer also detects an in-place truncation when a fresh run rewrites the log to the same byte length (size unchanged but mtime advanced), and the daemon spawn refuses to re-exec a test entry so anode --testrun can never fork-bomb itself.721f539: Add preset-prompt param substitution (
<PARAM:name>), the foundation for prompt-preset buttons. A preset prompt template can carry<PARAM:name>placeholders substituted from supplied values or declared defaults; unfilled params are surfaced so a caller can ask the user to fill the blanks.34d3ec2: feat(framework): extract a shared single-select gate primitive (
requestChoices) (Extract a shared single-select gate primitive (requestChoices) #335)The single-select choice gate ([The Framework] Interactive <Choices> panel + autopilot auto-accept #304) is now a reusable
requestChoices({ id, title, options, recommended })export, the twin ofrequestMultiSelect(Multi-select view (showMultiSelect()) #332): it emits thechoiceevent, parks for the pick, and falls back to the recommended option if the run is headless or aborts. The plan-approval gate builds on it, and it is the primitive the system prompt'sshowChoices()and the research preset need. No behavior change for existing runs.e4b518a: feat(framework): turn an agent's showChoices()+AWAIT into a live gate at the turn boundary (Turn-boundary gate: an agent's showChoices()+AWAIT becomes a live gate #337)
The system prompt tells the agent to
showChoices()andAWAITat unclear-scope / alternatives points, but until now only framework-emitted gates (the plan-approval gate, multi-select) could pause a run. Now when a build turn ends by asking the user, anawait-choicesblock, the framework shows the choice on the dashboard, waits for the pick, and re-prompts the agent to continue from that decision. It is the agent-authored counterpart to the plan-approval gate: a no-op when headless and when the agent just finishes instead of asking, so existing runs are unchanged.7db5a9c: feat(framework): track agent spend and add a budget cap (Retrieve usage limits #322)
The framework now accumulates the token + cost usage the wrapped agent reports each turn, streams a running total as a
usageevent, and shows a live spend readout on the dashboard header. Pass--max-cost <usd>to stop a run once it has spent that much: the current turn finishes, then the run stops cleanly (not a failure). Useful for long autopilot runs where you only review the result at the end.Patch Changes
8cbff44: fix(framework): narrate the auto-preset routing turn so the dashboard is not blank at the start of a run ([The Framework] Dashboard is blank during auto-preset routing #310)
A preset-less live run first does a real Claude routing turn to auto-select a domain preset. The dashboard was started only after that turn, so its first few seconds looked dead. The dashboard now starts before the routing turn and the turn narrates a log line into it.
131f349: fix(framework): surface session-scoped PLAN/TODO docs in the dashboard sidebar (Looping #323)
The document sidebar now also surfaces the session-scoped
PLAN_<SESSION>.agent.md/TODO_<SESSION>.agent.mdfiles The Framework writes per run (Looping #323/System prompt #326), not just flatPLAN.md/TODO.md. Flat files stay supported as a fallback for hand-written docs. Names are matched against the workspace root with a fixed slug pattern, so there is still no path traversal.07f1756: fix(framework): re-fire the plan-approval gate after picking an alternative (Plan-approval gate does not re-fire after picking an alternative #324)
Picking an alternative at the plan-approval gate re-architects the plan, and that fresh plan can differ a lot from the one you rejected. The gate now re-fires on the re-architected plan so you approve the plan you will actually build, not just the first one. Bounded to a few re-architect rounds so a run of alternative-picks can't loop forever.
734da1a: fix(framework): harden the run relay and workspace sandbox against resource exhaustion
/r/<id>/…could previously create per-run state that was never freed; run creation is now bounded (maxRuns, default 200).snapshotWorkspacechecks a file's size before reading it, so a large asset in the workspace is skipped without ever being loaded into memory during a--sandbox dockersync.relayPublisher's POST has a timeout, so a relay that accepts a connection but never responds can no longer hang the CLI on exit (flush()).Updated dependencies [734da1a]
@gemstack/ai-autopilot@0.9.1
Patch Changes
734da1a: fix(ai-autopilot): EventStream iterators are now cancellable
A consumer's async iterator gained a
return()that drops its waiter from the stream and settles any pendingnext(). Previously a consumer that stopped iterating (e.g. a disconnected SSE client) left its waiter registered until the nextpush/close, so many short-lived consumers on an idle stream leaked. Live iteration and history replay are unchanged.@gemstack/example-framework-demo@0.0.7
Patch Changes
@gemstack/example-framework-discovery@0.0.7
Patch Changes