-
Notifications
You must be signed in to change notification settings - Fork 108
π€ feat: AI-generated sidebar status via small-model loop #3238
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
33 commits
Select commit
Hold shift + click to select a range
532a1d8
feat: AI-generated sidebar status via small-model loop
ammar-agent d1c67fa
fix: include partial assistant message in status transcript
ammar-agent 8bc6b81
fix: round-robin AgentStatusService across workspaces
ammar-agent 6970077
fix: only update dedup hash after a successful persist
ammar-agent b967fa5
fix: propagate ExtensionMetadataService.save() failures
ammar-agent a749a0b
fix: keep startup safe and preserve transient status precedence
ammar-agent 9fde95e
fix: skip persist/emit when service stops mid-generation
ammar-agent 4177718
refactor: simplify AI status loop and drop cross-restart hash
ammar-agent 366cf0d
fix: setAiStatus preserves workspace recency
ammar-agent dbcb68d
fix: skip generator if stopped during transcript build / candidates fβ¦
ammar-agent 432459d
refactor: address PR feedback - hide bespoke tools, collapse aiStatusβ¦
ammar-agent 272e3dd
fix: prefer activity todoStatus over live aggregator derivation for aβ¦
ammar-agent 227cfb3
fix: stop sidebar status from defaulting to 'Awaiting next task'
ammar-agent 3628b9f
feat: streaming-aware cadence + past-tense status for completed activβ¦
ammar-agent ebfc080
fix: reject placeholder status messages post-generation
ammar-agent 6ce9581
fix: revert active-workspace todoStatus precedence to live-first
ammar-agent 343e586
fix: split sidebar status precedence into 4 tiers (live todo > statusβ¦
ammar-agent 8f4b0b2
fix: constrain status emojis to the rendered icon set
ammar-agent b08e639
fix: don't clobber AI status on stream-stop with no todos
ammar-agent 6539796
fix: clean up language model after each status generation candidate
ammar-agent d41716a
fix: stop AgentStatusService in dispose() too, not just shutdown()
ammar-agent 28037e3
fix: dedup failed status generations to stop indefinite retry loops
ammar-agent cfc1121
fix: don't cache pre-provider failures in status dedup
ammar-agent 2c3743c
fix: refresh sidebar status after user message pivots
ammar-agent 32a9072
fix: avoid consuming recency before transcript updates
ammar-agent fd88f3f
fix: defer first status refresh during recency races
ammar-agent 40d38dd
fix: consume recency for empty status transcripts
ammar-agent bb21f74
fix: consume recency priority on status config failures
ammar-agent 37a9dc9
fix: track seen transcripts for recency catchup
ammar-agent be1bf72
fix: consume stale recency on status dedup skips
ammar-agent 07e2ef0
fix: run initial sidebar status sweep on start
ammar-agent c8f8d35
fix: discard stale status when recency advances in flight
ammar-agent 5c13f05
fix: atomically skip stale sidebar status writes
ammar-agent File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
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
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
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,47 @@ | ||
| /** | ||
| * Constants controlling the AI-generated sidebar agent status. | ||
| * | ||
| * The status is produced by the same "small model" path used for workspace | ||
| * title generation. We feed only a trailing window of chat (capped by both | ||
| * message count and token budget) and skip regeneration whenever the input | ||
| * is byte-for-byte unchanged. | ||
| */ | ||
|
|
||
| /** | ||
| * Per-workspace regen intervals split four ways: streaming workspaces | ||
| * (active) refresh much faster so the user can follow the agent in real | ||
| * time; idle workspaces (no active stream) back off because the chat | ||
| * isn't moving anyway. Either case backs off further when the desktop | ||
| * window is blurred. | ||
| */ | ||
| export const AGENT_STATUS_ACTIVE_FOCUSED_INTERVAL_MS = 10 * 1000; | ||
| export const AGENT_STATUS_ACTIVE_UNFOCUSED_INTERVAL_MS = 30 * 1000; | ||
| export const AGENT_STATUS_IDLE_FOCUSED_INTERVAL_MS = 30 * 1000; | ||
| export const AGENT_STATUS_IDLE_UNFOCUSED_INTERVAL_MS = 2 * 60 * 1000; | ||
|
|
||
| /** | ||
| * How often the scheduler wakes up to scan workspaces. Per-workspace cadence | ||
| * is enforced separately, so this can be small enough to make focus | ||
| * transitions feel snappy without driving redundant work. With | ||
| * AGENT_STATUS_MAX_CONCURRENT=1 the per-tick dispatch naturally smooths load | ||
| * across many workspaces β no separate startup delay needed. | ||
| */ | ||
| export const AGENT_STATUS_TICK_INTERVAL_MS = 10 * 1000; | ||
|
|
||
| /** Token budget for the trailing chat-transcript window we feed the model. */ | ||
| export const AGENT_STATUS_MAX_TRANSCRIPT_TOKENS = 8000; | ||
|
|
||
| /** Cap on the number of trailing messages we pull off disk before token trimming. */ | ||
| export const AGENT_STATUS_MAX_TRAILING_MESSAGES = 80; | ||
|
|
||
| /** | ||
| * Cap on per-message text length before tokenization. Bounds pathological | ||
| * single messages (huge tool outputs) that would otherwise burn the budget. | ||
| */ | ||
| export const AGENT_STATUS_MAX_MESSAGE_CHARS = 4000; | ||
|
|
||
| /** | ||
| * Maximum concurrent model invocations across all workspaces. Keep small so | ||
| * a multi-workspace sweep doesn't spike provider bills or rate limits. | ||
| */ | ||
| export const AGENT_STATUS_MAX_CONCURRENT = 1; |
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.