Skip to content

pi Phase 1: entity runner — pi-entity binary + pi-entity-runner.ts #40

@koad

Description

@koad

Part of #39 (pi harness integration)

Deliverable: Vulcan can run PROMPT="what is your role?" pi-entity sibyl on fourty4 and get a clean text response.

Files to create

/Users/koad/.koad-io/bin/pi-entity              # executable shell wrapper
/Users/koad/.koad-io/extensions/pi-entity-runner.ts  # TypeScript runner

pi-entity (shell wrapper)

#!/usr/bin/env bash
JITI="/Users/koad/.nvm/versions/node/v24.14.0/lib/node_modules/openclaw/node_modules/jiti/bin/jiti.js"
exec node "$JITI" /Users/koad/.koad-io/extensions/pi-entity-runner.ts "$@"

pi-entity-runner.ts responsibilities

  • Read entity name from argv[2]
  • Read prompt from PROMPT env var, stdin, or --interactive flag
  • PID lock at /tmp/entity-.lock
  • Generate ephemeral extension file at /tmp/entity--ext-${PID}.ts (deleted on exit)
  • Call createAgentSession({ workspace: /Users/koad/., model, extensions })
  • Non-interactive: session.prompt(prompt) → print result to stdout → exit
  • Interactive: session.chat()
  • Read default model from /Users/koad/.koad-io/etc/entity-models.json

Import path (verify this works first before writing anything else)

import { createAgentSession } from
  "/Users/koad/.nvm/versions/node/v24.14.0/lib/node_modules/openclaw/node_modules/@mariozechner/pi-coding-agent/src/index.ts";

If jiti version conflict → install independently: npm install -g @mariozechner/pi-coding-agent

Acceptance

PROMPT="what is your role?" pi-entity sibyl returns Sibyl's identity text. Session log written to ~/.sibyl/logs/. Exit 0.

Full spec: ~/.juno/PROJECTS/PI-INTEGRATION-PLAN.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions