feat(aside): first-class Aside agentic-browser support - #98
Draft
intertwine wants to merge 1 commit into
Draft
Conversation
Add Aside as a first-class observe source alongside Claude/Codex/Grok/Cowork/Hermes. - transcripts/aside.py: native messages.jsonl parser (role-keyed, ms->ISO timestamps, toolCall summaries, thinking dropped, toolResult/system skipped); count-based cursor (no per-message UUID, matching Codex/Grok); discovery via u/*/agents/*/sessions/*/messages.jsonl with ASIDE_HOME override. - observe.py: observe_aside_transcript + observe_all_aside (count cursor, rotation-safe). No backfill wiring, matching the Grok precedent. - config.py: Config.aside_home + aside_sessions_root. - cli.py: --source aside in observe enum + transcript dispatch + source detection + scan loop; Aside section in om status; --for help text. - aside/skills/om/SKILL.md: Aside-side warm-start + write-back skill, shipped in the wheel (uses the native --source aside flow; no hand-built transcript). - docs/integrations.md + README Agent Support row; plans/ first-class plan. - tests: TestAsideParser, TestAsideObserver. Aside has no native hook surface (daemon + skills), so it is an observe-first peer like manual Hermes: write-back via om observe --source aside; warm start via the shipped Aside om skill calling om context --for aside. No om install --aside.
Merged
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.
Summary
Promotes Aside (agentic browser) from an ad-hoc
--source coworkimpersonation to a first-class observe source, alongside Claude Code / Codex / Grok / Cowork / Hermes.Key realization: Aside persists a native per-session transcript at
~/.aside/u/<idx>/agents/<agent>/sessions/<date>_<id>/messages.jsonl, but with its own schema (keyed byrolenottype, epoch-ms timestamps, assistantcontent= list oftext/thinking/toolCallblocks, no per-message UUID). That is why the Cowork/Claude parser ignored it. This PR gives Aside its own parser + count-based cursor (the Codex/Grok strategy).What is in here
transcripts/aside.py— native parser: dropsthinking, summarizestoolCallagainst Aside's real lowercase tool names, skipstoolResult/system-message, ms to ISO-8601, discovery viau/*/agents/*/sessions/*/messages.jsonl(plusASIDE_HOMEoverride).observe.py—observe_aside_transcript+observe_all_aside(count cursor, rotation-safe). Noom backfillwiring, matching the Grok precedent.config.py—Config.aside_home+aside_sessions_root.cli.py—--source aside(observe enum +--transcriptdispatch + source detection + scan loop), an Aside section inom status,--forhelp text.aside/skills/om/SKILL.md— Aside-side warm-start + write-back skill, shipped in the wheel (verified hatchling ships asset trees; uses the native--source asideflow, no hand-built transcript).docs/integrations.mdsection, README Agent Support row,plans/aside-first-class-integration.md.TestAsideParser,TestAsideObserver(8 new).Design decisions needing scrutiny
om install --aside; warm start is skill-driven viaom context --for aside. Modeled on the manual Hermes path. Right shape, or do we want a thin installer that drops the skill into the Aside agent dir?Adversarial review requested — please try to break:
usercontent, unknown block types, missing/string/negative/hugetimestamp, an assistant turn that is only thinking (should drop) vs only a toolCall (should summarize), gigantic transcripts.thinkingblocks and rawtoolResultbodies never reach observations. DotoolCall.argumentssummaries risk leaking secrets (e.g. tokens in abashcommand)? Should we redact?u/1,u/2) and multi-agent layouts; symlinks; non-mainagents; does thefind_recent24h window match expectations?toolResult/system-messagerecords vs the count cursor; re-runningobserve; concurrent writes while a session is live.~/.asidecorrect on Windows/Linux, or do we need an app-support equivalent like Cowork?_detect_transcript_sourceordering vs other roots.Validation
ruff check .pass;ruff format --checkpasspytest tests/test_transcripts.py tests/test_observe.py tests/test_cli_observe.py tests/test_cli_install.py tests/test_cli_doctor.py tests/test_config.py-> 159 passedom observe --source aside --dry-runworks;om statusshows the Aside section (discovers real sessions).HOLD — do not merge
Opened as draft for peer adversarial review. Do not merge yet, and do not bump the version here (0.9.0 will batch the interim work).