Conversation
|
You can just keep updating the same PR, you don't need to keep closing and opening PRs. Let me know when you think this is ready for review, and I will take it over |
roborev: Combined Review (
|
|
Hey @wesm I am going to polish review feedback in this one and then we can proceed with merging. Then I'll send my other proposed features as a separate PRs for clarity. Thank you! |
|
No problem, in the future you can just force push the PR and update the PR description. I have a strict squash merge policy so I don't care about the intermediate state of any PR |
Rewrote PR wesm#144 description to be concise and focused on the three key features: session parsing, subagent linking, and skill blocks. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
5308e04 to
44bce80
Compare
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
roborev: Combined Review (
|
|
I'll take a pass on this and work on getting it merged |
… blocks - Add Zencoder session parser with subagent linking and skill block extraction - Move LinkSubagentSessions to run once per sync - Extract per-message timestamps in Zencoder parser - Persist is_system flag and filter system messages from search/analytics - Resolve source file from stored path and fix subagent linking - Strip tagged blocks from tool-result ContentRaw to prevent double rendering
…ll blocks - Include is_system column in CopyOrphanedDataFrom message copy, probing the old DB schema so older sources still fall back safely. Without this, archived Zencoder system messages would lose their is_system flag and leak into search/analytics after a full resync. - Make SkillBlock rendering respect the parent role visibility toggle (showText) in MessageContent.svelte, and update hasVisibleSegments to check role visibility for skill segments instead of returning true unconditionally. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
283afd5 to
6b47d8e
Compare
…lity - TestCopyOrphanedDataFrom_IsSystem: verifies is_system=1 survives orphan migration from a modern source DB. - TestCopyOrphanedDataFrom_LegacyNoIsSystem: verifies copy succeeds from a legacy messages table without the is_system column, defaulting to false. - hasVisibleSegments skill tests: verifies skill segments are hidden when the parent role filter (user/assistant) is off, and visible when it is on. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
roborev: Combined Review (
|
Covers the case where the parent role filter is enabled but the tool filter is disabled — skill blocks should still be visible since they follow the role filter, not the tool filter. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…der task fields - Re-run LinkSubagentSessions after CopyOrphanedDataFrom in the resync path so copied orphaned subagent sessions are properly relinked via their tool_calls.subagent_session_id references. - Fix SubagentInline "Open session" to use pendingNavTarget + router navigation (matching PinnedPage pattern) so it works from non-session pages like Pinned or Trash. - Extend formatTask to fall back to Zencoder's prompt/agent fields when Claude-style description/subagent_type are absent, preventing empty [Task: ()] labels. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
roborev: Combined Review (
|
roborev: Combined Review (
|
…une count - Fix SubagentInline openAsSession to call navigateToSession directly when already on the sessions route, falling back to pendingNavTarget + router.navigate for cross-page navigation. The previous approach was a no-op on the sessions page since router.navigate returns false for the same hash. - Exclude is_system=1 messages from FindPruneCandidates MaxMessages count so Zencoder system/skill messages don't inflate the user message count and cause sessions to be incorrectly filtered. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
8a993ec to
30b9079
Compare
|
Fixed codex in the CI poller so the full review should run now |
Verify FindPruneCandidates MaxMessages ignores role='user' messages with is_system=1, so Zencoder system/skill messages don't inflate the user message count. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
roborev: Combined Review (
|
|
This is good. Merging |
|
Thanks, Wes! |
Summary
Add Zencoder as the 9th supported coding agent. Zencoder CLI stores sessions as JSONL files in
~/.zencoder/sessions/— this PR adds a parser, sync integration, and frontend rendering for those sessions.Key capabilities:
<session-id>XML tags in tool results, with inline preview and navigation[Skill: name]...[/Skill]blocks render as collapsible sections with teal accent, showing an 80-char preview when collapsedConfigurable via
ZENCODER_DIRenv var (defaults to~/.zencoder/sessions).Changes
Backend
internal/parser/zencoder.go— JSONL parser for Zencoder sessionsinternal/parser/types.go—AgentZencoderconstant and registry entryinternal/parser/taxonomy.go— tool name mappings for Zencoderinternal/sync/engine.go— discovery, processing, andLinkSubagentSessionscallinternal/db/sessions.go—LinkSubagentSessions()for parent-child linkingclaude.go,content.gofor subagent substring matchingFrontend
SkillBlock.svelte— collapsible skill block componentagents.ts— Zencoder agent entry (red accent)content-parser.ts— skill segment type and extractionSubagentInline.svelte— session metadata and "Open session" linksessions.svelte.ts—navigateToSession()methodTest plan
go test ./internal/parser/... ./internal/sync/... ./internal/db/...go vetclean