Add Oh My Pi agent integration - #580
Merged
sbertix merged 5 commits intoJul 7, 2026
Merged
Conversation
louisgundelwein
force-pushed
the
feature/omp-agent-integration
branch
from
July 5, 2026 13:47
6047b02 to
4768343
Compare
louisgundelwein
force-pushed
the
feature/omp-agent-integration
branch
from
July 7, 2026 07:22
a9fb950 to
55bc6f3
Compare
- Add a dedicated omp-mark asset (full-color gradient, original rendering intent) and point SkillAgent.omp at it instead of the shared pi-mark. - Correct the installState() catch comment in the omp and pi installers to match behavior: an unreadable file resolves to not-installed and is logged, with the real error surfaced on the next install. - Bound the extension's terminal-write retry: retry EINTR immediately and cap EAGAIN with a short backoff so a wedged tty degrades instead of spinning. - Cover the .outdated install state and pin the emitted OSC lifecycle events end to end, so a HookEvent rename or an emitPresence typo can't silently break presence. - Import SupacodeSettingsShared in SidebarActiveClassificationTests so the omp badge test compiles, and drop em dashes to match house style.
sbertix
enabled auto-merge (squash)
July 7, 2026 08:42
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.
Closes #492
What
Adds
omp/ Oh My Pi as a first-class coding agent alongside the existing agent integrations:SkillAgent.ompdisplay/config metadata, using the existing Pi mark fallback.~/.omp/agent/extensions/supacode/index.ts.~/.omp/agent/skills/supacode-cli/SKILL.md.session_startagent_start→busyagent_end→idle+ notification fromlast_assistant_messagesession_shutdown→session_end+ defensiveidleHow
Oh My Pi is fork-compatible with Pi's extension API, but this PR keeps the OMP integration separate from Pi's installer/content instead of parameterizing Pi's existing implementation. That is intentional: OMP gets the fork-specific path/import/agent id, while existing Pi installs keep their current code path untouched.
.pi/agent.omp/agent.pi/agent/extensions/supacode/index.ts.omp/agent/extensions/supacode/index.tspiomp@mariozechner/pi-coding-agent@oh-my-pi/pi-coding-agentpi-markpi-markfallbackThe OMP installer mirrors the Pi ownership model:
supacodeextension directory,/* supacode-managed-extension */as the ownership marker,.outdated,The extension stays inert unless
SUPACODE_SURFACE_IDis present, so installing it outside a Supacode terminal has no effect. WhenSUPACODE_SOCKET_PATHis present, the OSC payload includes the local pid so Supacode's liveness sweep can reap crashed local agents; over SSH the pid is omitted because it is not meaningful to the local app.Compared with closed PR #515, this keeps the low-risk parts and avoids the risky ones:
.omp/agentpath,ompOSC id,@oh-my-pi/pi-coding-agenttype import, installer/test coverage.omp-markasset, because this PR intentionally uses the existing Pi mark fallback until an official/accepted asset is added.omp; users can install the integration before installing/running the binary.Tests
Added/updated coverage for:
OmpSettingsInstallerTests.notInstalled.omp/agent/extensions/supacodeAgentPresenceFeatureTestssession_startregisters the badge and pidsession_endremoves the local pid recordbusysets activityidleclears activity while keeping the badgeSidebarActiveClassificationTestsCodingAgentsSidebarCardModeTestscardRelevantSinceDatematches the OMP launch cutoff and re-engages previously dismissed usersVerification status
Ran locally:
xcrun swiftc -parse SupacodeSettingsShared/BusinessLogic/OmpExtensionContent.swift SupacodeSettingsShared/BusinessLogic/OmpSettingsInstaller.swift SupacodeSettingsShared/Models/SkillAgent.swift SupacodeSettingsShared/BusinessLogic/CLISkillContent.swift SupacodeSettingsShared/BusinessLogic/CLISkillInstaller.swift SupacodeSettingsShared/BusinessLogic/AgentIntegrationFactory.swift supacode/Features/Settings/Views/DeveloperSettingsView.swift supacode/Features/AgentPresence/Views/CodingAgentsSidebarCardView.swift supacodeTests/OmpSettingsInstallerTests.swift supacodeTests/CodingAgentsSidebarCardModeTests.swift supacodeTests/AgentPresenceFeatureTests.swift supacodeTests/SidebarActiveClassificationTests.swiftmake formatmake lintgit diff --checkReview follow-up already included:
\\x1b, not doubled raw-string backslashes).cardRelevantSinceDatematches the OMP launch cutoff.Needs CI / maintainer-side validation:
make build-appmake testxcodebuild testforOmpSettingsInstallerTestsBlocked locally:
make doctor/make build-appstill fail because this machine lacks Xcode 26.3 with the macOS 26.2 SDK required for Zig 0.15.2/GhosttyKit.xcodebuild test -project supacode.xcodeproj -scheme supacode -destination "platform=macOS" -only-testing:supacodeTests/OmpSettingsInstallerTests ...still stops before running tests: missing.build/ghostty/GhosttyKit.xcframeworkfrom the same Xcode/GhosttyKit prerequisite.Contribution policy status
Aligned with
CONTRIBUTING.md:Closes #492.ready.AI assistance disclosure
Prepared with AI assistance in the Supacode / Oh My Pi coding harness. Louis is the human author of record and accountable for the changes; no AI agent is listed as a git author or co-author.