Skip to content

Add native Pi coding agent support#262

Merged
sbertix merged 2 commits intosupabitapp:mainfrom
technocidal:feat/support-pi-coding-agent
Apr 20, 2026
Merged

Add native Pi coding agent support#262
sbertix merged 2 commits intosupabitapp:mainfrom
technocidal:feat/support-pi-coding-agent

Conversation

@technocidal
Copy link
Copy Markdown
Contributor

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

  • Hooks: Installs a bundled TypeScript extension to ~/.pi/agent/extensions/supacode/index.ts that reports agent lifecycle events (busy indicator, completion notifications) to Supacode via its Unix domain socket
  • CLI Skill: Installs a skill to ~/.pi/agent/skills/supacode-cli/SKILL.md that teaches Pi how to use the Supacode CLI

How 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 source
  • PiSettingsInstaller.swift — Install/uninstall/check logic using an ownership marker
  • PiSettingsClient.swift — TCA dependency client
  • pi-mark.imageset — π icon for the Developer Settings section
  • PiSettingsInstallerTests.swift — Unit tests for the installer
  • Pi-specific tests in SettingsFeatureAgentHookTests.swift

technocidal and others added 2 commits April 21, 2026 00:50
- 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.
@sbertix
Copy link
Copy Markdown
Collaborator

sbertix commented Apr 20, 2026

Thanks 💪

@sbertix sbertix enabled auto-merge (squash) April 20, 2026 23:24
@sbertix sbertix merged commit 6fff021 into supabitapp:main Apr 20, 2026
2 checks passed
@technocidal
Copy link
Copy Markdown
Contributor Author

@sbertix That was fast! Thank you of building Supacode. I've a lot of fun using it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants