Add native Pi coding agent support#262
Merged
sbertix merged 2 commits intosupabitapp:mainfrom Apr 20, 2026
Merged
Conversation
- Add PiSettingsInstaller that manages a bundled TypeScript extension at ~/.pi/agent/extensions/supacode/index.ts (uses ownership marker to identify Supacode-managed installs) - Add PiSettingsClient dependency for check/install/uninstall - Add PiExtensionContent with the bundled extension source that reports agent_start/agent_end/session_shutdown hooks via the Supacode socket - Add .piHooks slot to AgentHookSlot and wire into SettingsFeature - Add .pi case to SkillAgent with configDirectoryName '.pi/agent' - Add piSkillMd to CLISkillContent for Pi CLI skill installation - Add Pi section to DeveloperSettingsView with Hooks + CLI Skill rows - Add pi-mark SVG asset for the section header icon - Add PiSettingsInstallerTests and Pi-specific SettingsFeature tests - Add identifier_name exclusions for 'id' and 'pi' in .swiftlint.yml
- Collapse Pi Developer Settings section by default to match Kiro. - Harden PiSettingsInstaller: log read failures instead of conflating them with "not installed"; throw `.extensionNotManaged` from both install and uninstall instead of silently flipping the UI; log stale empty-dir cleanup. - Drop redundant TypeScript banner comments and the narrate-what event mapping (the top-of-file docstring is the single source of truth). - Replace the project-wide `pi` identifier_name exclusion with a scoped `swiftlint:disable:next` on the enum case. - Update pi-mark.svg to the official Pi logo with an `original` template intent so it renders like the Kiro and Claude marks. - Expand test coverage: 7-slot + 4-skill startup checks, typed error paths, partial/non-UTF8 marker cases, install overwrite against stale bodies, and ownership-guard dir preservation.
Collaborator
|
Thanks 💪 |
Contributor
Author
|
@sbertix That was fast! Thank you of building Supacode. I've a lot of fun using it. |
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
Adds native support for the Pi coding agent in Supacode's Developer Settings, matching the existing Claude Code, Codex, and Kiro integrations.
What it does
~/.pi/agent/extensions/supacode/index.tsthat reports agent lifecycle events (busy indicator, completion notifications) to Supacode via its Unix domain socket~/.pi/agent/skills/supacode-cli/SKILL.mdthat teaches Pi how to use the Supacode CLIHow it differs from Claude/Codex/Kiro
Pi uses TypeScript extensions rather than JSON hook-command injection. Instead of writing shell one-liners into a settings file, Supacode writes a full TypeScript extension that communicates over the socket natively from Node.js.
Pi also combines progress + notifications in one extension (vs separate hook slots), so it gets a single "Hooks" install row.
Files added
PiExtensionContent.swift— Bundled TypeScript extension sourcePiSettingsInstaller.swift— Install/uninstall/check logic using an ownership markerPiSettingsClient.swift— TCA dependency clientpi-mark.imageset— π icon for the Developer Settings sectionPiSettingsInstallerTests.swift— Unit tests for the installerSettingsFeatureAgentHookTests.swift