Conversation
Deeds67
force-pushed
the
explore/pi-agent-brainstorm
branch
from
May 14, 2026 19:28
f9632a1 to
4318188
Compare
Deeds67
force-pushed
the
explore/pi-agent-brainstorm
branch
from
May 16, 2026 11:04
d382868 to
32a90a5
Compare
Deeds67
force-pushed
the
explore/pi-agent-brainstorm
branch
from
May 23, 2026 20:00
330aca4 to
e6055d6
Compare
…eal search-filter contract (phase 2 slice 2)
… of guessing (phase 2 slice 3)
…olution guards (phase 2 slice 4)
… workflows (phase 2 slice 5) Adds resolveAssetSearchFilters to requiredReadTools for archive/favorite/tag/ create_album; finishes the contract fixture (rating-range + visibility-enum); L1 entity recall/slot scenarios (full L1 100%, baseline re-seeded); L3 entity routing + plan scenarios (baseline.l3 re-seed pending the Phase-0 RC). create_album classifier text intentionally omits 'place' to keep the trip vs create-album boundary; entity-album requests route via regex + the resolver.
…ntract fixture (phase 2 slice 6)
…Metadata → gate (phase 2 slice 8)
…on + L1/L3 (phase 2 slice 9) Closes Phase 1. Also fixes a regex-path integration bug surfaced by L1: match() emits a NUMERIC rating but parseRatingValue used clean() (string-only), so parseSlots returned null for 'rate … N stars' — now handles numbers. e2e-runtime metadata-description test adapted (strict workflow now owns bounded metadata edits; unbounded sources still hand off to the legacy path). Full L1 100% (84/84, runs=5), baseline.json re-seeded.
… …) (phase 2 slice 10)
… never an empty removal (phase 2 slice 11)
…ation + L1/L3 (phase 2 slice 12) Closes Phase 2. Collision guards (favorites→favorite, space→manage_space_members, tag→none) verified. Also hardened the router: a 'delete the photos from my recent trip' (recent-trip in the album position) is no longer claimed. Full L1 100% (90/90, runs=5), baseline.json re-seeded.
…source gate) (phase 2 slice 13)
…tures + registration + L1/L3 (phase 2 slice 14) Closes Phase 3. Steals '… to the <space> space' from add_photos (ADD via proposeAddAssetsToSpaceFromSearch spaceId-only; REMOVE via space.removeAssets op). Removed the now-stale neg.space.add-photos L1 negative + flipped the L3 one. Stabilized create_recent_trip_album recall (vacation/getaway/holiday are trips) to stop borderline trip recalls flaking on each manifest addition. Full L1 100% (94/94, runs=5), baseline.json re-seeded.
…ip decline) (phase 2 slice 15)
…rch selectionHandle assetSource (phase 2 slice 16)
…ation + L1/L3 (phase 2 slice 17) Closes Phase 4. Full L1 100% (100/100), 0 regressions — createspace recall/slot/ negatives + album/member disambig all green. baseline.json re-seed deferred to the final slice (one runs=5 --accept) to avoid re-recording the flaky trip-copy test.
… + registration + L1/L3) (phase 2 slice 18)
…stration + L1/L3) (phase 2 slice 20) Closes Phase 5. All 6 new workflows + the named-entity resolver are now implemented + registered (20/23 slices). Full L1 100% (111/111), 0 regressions.
…aces activity block + busy indicator)
Wire `buildAgentTurnTimelines` into the chat panel: each assistant turn produces an `AgentTurnTimeline` that renders as a running one-liner ("Thinking…") while the session is active, or a settled summary button ("N steps") once completed. `coveredToolCallIds` is now derived from the timeline rows, removing the need for the old activity-block and busy-indicator. Adds 26 `assistant_timeline_*` i18n keys.
… (restores dropped guard) Adds a module-private redactTechnicalText() to agent-turn-timeline-ui.ts (exact patterns from agent-activity-ui.ts: Bearer/Basic headers, token/api_key assignments, runner token, provider key, sk-* keys) and applies it to summaryText, requestSummary, responseSummary, and error when building each row. Restores the redaction guard that was removed with AgentActivityBlock in Slice 3, with builder-level and panel-level tests.
…emoved Replace the ⋯ overflow menu in the session header with a plain Details icon-pill button (mdiInformationOutline, rounded-full). Remove the AgentActivityVisibilityMode type, its localStorage persistence (readAgentActivityVisibilityMode / writeAgentActivityVisibilityMode), the storage-event listener in the pane, and the mode props threaded through header → pane → chat panel. Delete agent-activity-visibility-ui.ts, agent-activity-visibility-menu.svelte, and their specs.
…odel code Delete agent-activity-block.svelte (replaced by agent-turn-timeline in Slice 3), agent-activity-ui.ts (buildAgentActivityModel / buildAgentActivityTechnicalRows / redactAgentActivityTechnicalText all dead with no live callers), and agent-session-activity-turns-ui.ts's buildAgentSessionActivityTurns path (also dead — no non-spec caller). Thin agent-session-activity-turns-ui.ts to keep only the anchor helpers that agent-turn-timeline-ui.ts still needs (buildStableTurnAnchors / toolCallBelongsToTurn / activityEventBelongsToTurn) plus the AgentActivityEvent type definition. Delete all specs whose only tested functions are now deleted.
Remove 38 keys from i18n/en.json that were only used by the deleted activity block and visibility menu (assistant_activity_count, assistant_activity_hide/show/show_newer/show_older, assistant_activity_status_*, assistant_activity_summary_title, assistant_activity_technical_*, assistant_activity_title, assistant_activity_visibility*, assistant_activity_window_summary, assistant_session_menu, assistant_busy_ascii). Purge the corresponding dead entries from spec mock maps. Fix a pre-existing TS2322 in agent-turn-timeline-ui.spec.ts (null → undefined for requestSummary).
…nes above its consumer)
…ultSize) Local check:svelte is a no-op (scans 0 files) so these only surfaced in CI: dynamic $t() calls need Translations-typed keys (timeline one-liner/verb map, onboarding preset labels and chips), and the timeline row's resultSize guard could not narrow undefined out of the SDK's optional field.
…ssages
Sessions rest at status Running between turns, so the timeline's
last-turn-plus-active-session rule kept the one-liner ("Thinking...")
alive forever once the assistant had answered. A turn is now only
running while its anchor has no terminal assistant message.
Also re-sync messages when a terminal activity event arrives: the
Slice-1 closer events fire at every settle, which covers the race where
assistant-message-created beat the panel's websocket subscription (the
response then only appeared after a manual refresh).
The previous fix only healed when SOME websocket event arrived, but delivery is best-effort: dev-server restarts kill sockets silently and fast turns can finish before the panel subscribes. The buggy session ran in a window with no live websocket connection at all, so nothing ever brought the assistant's reply in. While the latest turn is running (session active, no terminal assistant answer) the panel now polls messages + activity events every 2.5s — mirroring the action dock's poll-while-active design. The poll is self-limiting: the answer's arrival settles the turn, which stops it.
…rawer The action dock's poll returns a fresh session object every cycle; the workspace swapped it into localSessions unconditionally, changing the pane's session prop identity, which reset the drawer's derived open state. The workspace now keeps the existing object when status and updatedAt are unchanged, and the drawer closes only when the session ID actually changes.
Deletes could intermittently leave dangling rows until a refresh: the server row was gone (retries 400'd with not-found) but the local list update was lost to a race. Deletion now treats 400/404 as success (the row is gone either way, so remove it locally), surfaces genuine failures via toast instead of an unhandled rejection, and re-syncs the session list from the server afterwards (churn-guarded) so the sidebar always converges with reality.
…ware Sessions rest at status Running between turns, so the action dock's 3s tool-call/session poll ran forever on every open chat. The chat panel already knows precisely when a turn is in progress (latestTurnRunning); it now signals that up through the pane to the dock, which polls only while a turn is running or approvals/apply work is pending. When the assistant has answered, all polling stops.
Deeds67
added a commit
that referenced
this pull request
Jun 11, 2026
- fix(agent): linearize manage_album_access SHARE_WITH regex (CodeQL js/redos — splitMembers already parses the member list) - fix(web): add shareAlbums/lockAssets/deleteContainers to 15 agent spec writeScope fixtures (SDK type gained the 3 scopes → web check:typescript) - style: prettier server (agent-operation-plan.service[.spec], agent-operation.dto.spec) + the slice plan docs (Test & Lint Server + Docs Build prettier gates)
Deeds67
added a commit
that referenced
this pull request
Jun 11, 2026
- fix(agent): linearize manage_album_access SHARE_WITH regex (CodeQL js/redos — splitMembers already parses the member list) - fix(web): add shareAlbums/lockAssets/deleteContainers to 15 agent spec writeScope fixtures (SDK type gained the 3 scopes → web check:typescript) - style: prettier server (agent-operation-plan.service[.spec], agent-operation.dto.spec) + the slice plan docs (Test & Lint Server + Docs Build prettier gates)
Deeds67
added a commit
that referenced
this pull request
Jun 17, 2026
- fix(agent): linearize manage_album_access SHARE_WITH regex (CodeQL js/redos — splitMembers already parses the member list) - fix(web): add shareAlbums/lockAssets/deleteContainers to 15 agent spec writeScope fixtures (SDK type gained the 3 scopes → web check:typescript) - style: prettier server (agent-operation-plan.service[.spec], agent-operation.dto.spec) + the slice plan docs (Test & Lint Server + Docs Build prettier gates)
Deeds67
added a commit
that referenced
this pull request
Jun 18, 2026
- fix(agent): linearize manage_album_access SHARE_WITH regex (CodeQL js/redos — splitMembers already parses the member list) - fix(web): add shareAlbums/lockAssets/deleteContainers to 15 agent spec writeScope fixtures (SDK type gained the 3 scopes → web check:typescript) - style: prettier server (agent-operation-plan.service[.spec], agent-operation.dto.spec) + the slice plan docs (Test & Lint Server + Docs Build prettier gates)
Deeds67
added a commit
that referenced
this pull request
Jun 25, 2026
- fix(agent): linearize manage_album_access SHARE_WITH regex (CodeQL js/redos — splitMembers already parses the member list) - fix(web): add shareAlbums/lockAssets/deleteContainers to 15 agent spec writeScope fixtures (SDK type gained the 3 scopes → web check:typescript) - style: prettier server (agent-operation-plan.service[.spec], agent-operation.dto.spec) + the slice plan docs (Test & Lint Server + Docs Build prettier gates)
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.
Doing a little spike adding pi.dev into Noodle Gallery ;)