Composable agent runtime monorepo built on the pi ecosystem
Find a file
Mario Zechner c2793d8017 Add runtime bridge architecture and fix HTML escaping
Major refactoring to unify runtime providers across sandbox and user script contexts:

1. Runtime Bridge & Router
   - Add RuntimeMessageBridge for unified messaging abstraction
   - Rename SandboxMessageRouter → RuntimeMessageRouter
   - Router now handles both iframe and user script messages
   - Guard for non-extension environments

2. Provider Refactoring
   - ArtifactsRuntimeProvider: Add offline mode with snapshot fallback
   - AttachmentsRuntimeProvider: Remove returnDownloadableFile (moved to dedicated provider)
   - ConsoleRuntimeProvider: Add message collection, remove lifecycle logic
   - FileDownloadRuntimeProvider: New provider for file downloads

3. HTML Escaping Fix
   - Escape </script> in JSON.stringify output to prevent premature tag closure
   - Applies when injecting provider data into <script> tags
   - JavaScript engine automatically unescapes, no runtime changes needed

4. Function Renaming
   - listFiles → listAttachments
   - readTextFile → readTextAttachment
   - readBinaryFile → readBinaryAttachment
   - returnFile → returnDownloadableFile

5. Updated Exports
   - Export new RuntimeMessageBridge and RuntimeMessageRouter
   - Export FileDownloadRuntimeProvider
   - Update all cross-references

This sets the foundation for reusing providers in browser-javascript tool.
2025-10-09 17:32:45 +02:00
.husky Add husky pre-commit hook for formatting and type checking 2025-08-11 21:15:37 +02:00
packages Add runtime bridge architecture and fix HTML escaping 2025-10-09 17:32:45 +02:00
scripts Proxy package 2025-10-05 19:02:15 +02:00
.gitignore feat: add cross-browser extension with AI reading assistant 2025-10-01 04:33:56 +02:00
.npmrc Initial monorepo setup with npm workspaces and dual TypeScript configuration 2025-08-09 17:18:38 +02:00
biome.json Fix lints. 2025-10-03 23:21:59 +02:00
CLAUDE.md Clean up browser-extension references from monorepo 2025-10-06 18:40:04 +02:00
LICENSE Initial monorepo setup with npm workspaces and dual TypeScript configuration 2025-08-09 17:18:38 +02:00
package-lock.json Add ollama dependency and dialog backdrop blur 2025-10-08 17:49:56 +02:00
package.json Remove browser-extension package (migrated to separate sitegeist repo) 2025-10-06 18:38:25 +02:00
pi-mono.code-workspace Rename ChromeStorageBackend to WebExtensionStorageBackend for cross-browser support 2025-10-06 23:48:43 +02:00
README.md Clean up browser-extension references from monorepo 2025-10-06 18:40:04 +02:00
tsconfig.base.json feat: add cross-browser extension with AI reading assistant 2025-10-01 04:33:56 +02:00
tsconfig.json Clean up browser-extension references from monorepo 2025-10-06 18:40:04 +02:00

Pi Monorepo

A collection of tools for managing LLM deployments and building AI agents.

Packages

Related:

  • sitegeist - Browser extension for AI-powered web navigation (uses pi-ai and pi-web-ui)

Development

This is a monorepo using npm workspaces for package management and a dual TypeScript configuration for development and building.

Common Commands

# Install all dependencies
npm install

# Build all packages (required for publishing to NPM)
npm run build

# Clean out dist/ folders in all packages
npm run clean

# Run linting, formatting, and tsc typechecking (no build needed)
npm run check

# Run directly with tsx during development (no build needed)
cd packages/pods && npx tsx src/cli.ts
cd packages/agent && npx tsx src/cli.ts

Package Dependencies

The packages have the following dependency structure:

pi-tui -> pi-agent -> pi

When new packages are added, the must be inserted in the correct order in the build script in package.json.

TypeScript Configuration

The monorepo uses a dual TypeScript configuration approach:

  • Root tsconfig.json: Contains path mappings for all packages, used for type checking and development with tsx
  • Package tsconfig.build.json: Clean build configuration with rootDir and outDir, used for production builds

This setup allows:

  • Type checking without building (npm run check works immediately)
  • Running source files directly with tsx during development
  • Clean, organized build outputs for publishing

Versioning

All packages use lockstep versioning - they share the same version number:

# Bump patch version (0.5.0 -> 0.5.1)
npm run version:patch

# Bump minor version (0.5.0 -> 0.6.0)
npm run version:minor

# Bump major version (0.5.0 -> 1.0.0)
npm run version:major

These commands automatically:

  1. Update all package versions
  2. Sync inter-package dependency versions
  3. Update package-lock.json

Publishing

# Dry run to see what would be published
npm run publish:dry

# Publish all packages to npm
npm run publish

License

MIT