II.
PluginTarget JSON
Structured · liveplugin-target:pi
Pi json
Inspect the normalized record payload exactly as the atlas UI reads it.
{
"id": "plugin-target:pi",
"_kind": "PluginTarget",
"_file": "extensions/plugin-artifacts/plugin-target-pi.yaml",
"_cluster": "extensions",
"attributes": {
"displayName": "Pi",
"hostAgent": "agent:pi",
"adapterFamily": "programmatic",
"adapterName": "pi",
"manifestFormat": "state-only",
"commandFormat": "markdown-commands",
"skillHandling": "derived-from-commands",
"hookRegistrationFormat": null,
"hookRegistrationOutputPath": null,
"hookRegistrationAliasPaths": [],
"harnessManifestPath": null,
"marketplacePath": null,
"pluginRootEnvVar": null,
"pluginRootEnvVarForExtension": "PI_PLUGIN_ROOT",
"scriptVariants": [
"javascript"
],
"distribution": [
"npm-cli"
],
"distributionModel": "workspace-generated",
"npmPublishable": true,
"installLayout": null,
"packageMetadata": {
"moduleType": "module",
"binScriptExt": ".cjs",
"installLifecycle": "none",
"activationMessage": "restart",
"peerDependencyPackage": "@earendil-works/pi-coding-agent",
"emitCjsWrappers": false
},
"componentSupport": {
"agents": "native",
"context": "native"
},
"cliCommand": "pi",
"callerEnvVars": [
"PI_SESSION_ID"
],
"configPaths": [
".pi"
],
"processNames": [
"pi"
],
"capabilities": [
"Programmatic",
"SessionBinding",
"StopHook",
"HeadlessPrompt"
],
"adapterModule": "@a5c-ai/adapters-codecs/pi-adapter",
"externalRepo": "a5c-ai/babysitter-pi",
"externalPackageName": "@a5c-ai/babysitter-pi",
"generatedSourceDir": "pi",
"marketplaceSpecs": [],
"requiredSurfaceFile": "AGENTS.md",
"promptCapabilities": [
"skills",
"slash-commands",
"task-tool",
"harness-routing",
"programmatic-session",
"stop-hook"
],
"loopControlTerm": "stop-hook",
"hookDriven": true,
"interactiveToolName": "AskUserQuestion",
"sessionEnvVarsDescription": "PID-scoped session marker (authoritative); PI_SESSION_ID and AGENT_SESSION_ID are fallbacks",
"hasIntentFidelityChecks": false,
"hasNonNegotiables": false,
"cliSetupMode": "default",
"defaultStepCount": 8,
"skillSystemLabel": "Installed skill",
"defaultTransportId": "openai-chat",
"hooksMuxFamily": "in-process",
"sessionIdQuality": "native",
"supportsOrderedFanout": true,
"supportsNativeAdditionalContext": false,
"supportsBlock": true,
"supportsAsk": false,
"supportsToolInputMutation": true,
"supportsToolResultMutation": false,
"supportsPersistedEnv": true,
"envPersistenceMode": "runtime_hook",
"toolInterceptionScope": "all",
"launchBehavior": {
"promptDelivery": "cli-flag",
"promptFlag": "-p",
"promptExtraFlags": [
"--mode",
"json"
],
"execSubcommand": null,
"resumeDelivery": null,
"resumeFlag": null,
"sessionIdFlag": null,
"maxTurnsFlag": null,
"stdinBehavior": "close-after-prompt",
"selfExits": false,
"needsIdleKill": true
},
"description": "Pi as a programmatic plugin host. Pi drives the babysitter loop via the\n`pi.on(\"agent_end\")` lifecycle event, which invokes the proxied stop hook\n(`babysitter-proxied-stop.js` -> `hook:run --hook-type stop`) after each\nassistant turn — the StopHook-capability equivalent. Unlike Claude Code,\nPi does NOT register Claude-style hook files; the stop hook is driven by a\nPi extension event rather than `hooks/hooks.json`.\n"
},
"outgoingEdges": [
{
"from": "plugin-target:pi",
"to": "agent:pi",
"kind": "hosted_by",
"attributes": {}
},
{
"from": "plugin-target:pi",
"to": "agent-platform-impl:pi.platform@current",
"kind": "hosted_by",
"attributes": {}
}
],
"incomingEdges": [
{
"from": "plugin-artifact:babysitter-pi-package-json",
"to": "plugin-target:pi",
"kind": "emits_artifact",
"attributes": {}
},
{
"from": "plugin-artifact:babysitter-pi-extensions",
"to": "plugin-target:pi",
"kind": "emits_artifact",
"attributes": {}
},
{
"from": "plugin-artifact:pi-container-image",
"to": "plugin-target:pi",
"kind": "emits_artifact",
"attributes": {}
},
{
"from": "plugin-artifact:pi-manifest",
"to": "plugin-target:pi",
"kind": "emits_artifact",
"attributes": {}
}
]
}