@selesai/code 0.8.3 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -0
- package/dist/extensions/handoff-new.ts +1 -1
- package/dist/extensions/inline-skills.test.ts +1 -0
- package/dist/extensions/inline-skills.ts +1 -1
- package/dist/extensions/pi-intercom/CHANGELOG.md +25 -3
- package/dist/extensions/pi-intercom/README.md +34 -15
- package/dist/extensions/pi-intercom/broker/broker.ts +38 -141
- package/dist/extensions/pi-intercom/broker/client-liveness.test.ts +173 -0
- package/dist/extensions/pi-intercom/broker/client.ts +78 -150
- package/dist/extensions/pi-intercom/broker/extension-state.ts +18 -7
- package/dist/extensions/pi-intercom/broker/framing.ts +1 -1
- package/dist/extensions/pi-intercom/broker/protocol.ts +182 -0
- package/dist/extensions/pi-intercom/broker/spawn.test.ts +106 -7
- package/dist/extensions/pi-intercom/broker/spawn.ts +37 -11
- package/dist/extensions/pi-intercom/config.test.ts +8 -10
- package/dist/extensions/pi-intercom/config.ts +3 -3
- package/dist/extensions/pi-intercom/index.ts +218 -147
- package/dist/extensions/pi-intercom/intercom.integration.test.ts +891 -103
- package/dist/extensions/pi-intercom/package.json +3 -2
- package/dist/extensions/pi-intercom/project-agent.test.ts +145 -0
- package/dist/extensions/pi-intercom/project-agent.ts +324 -0
- package/dist/extensions/pi-intercom/reply-tracker.test.ts +86 -1
- package/dist/extensions/pi-intercom/reply-tracker.ts +41 -9
- package/dist/extensions/pi-intercom/skills/pi-intercom/SKILL.md +49 -9
- package/dist/extensions/pi-intercom/test/inline-message.test.ts +9 -9
- package/dist/extensions/pi-intercom/types.ts +3 -1
- package/dist/extensions/pi-intercom/ui/inline-message.ts +7 -7
- package/dist/extensions/pi-powerline-footer/.github/workflows/test.yml +2 -2
- package/dist/extensions/pi-powerline-footer/CHANGELOG.md +14 -1
- package/dist/extensions/pi-powerline-footer/README.md +20 -37
- package/dist/extensions/pi-powerline-footer/bash-mode/completion.ts +40 -25
- package/dist/extensions/pi-powerline-footer/bash-mode/editor.ts +149 -18
- package/dist/extensions/pi-powerline-footer/bash-mode/types.ts +1 -0
- package/dist/extensions/pi-powerline-footer/editor-performance.ts +99 -0
- package/dist/extensions/pi-powerline-footer/git-status.ts +15 -0
- package/dist/extensions/pi-powerline-footer/index.ts +394 -317
- package/dist/extensions/pi-powerline-footer/package.json +1 -1
- package/dist/extensions/pi-powerline-footer/powerline-config.ts +0 -12
- package/dist/extensions/pi-powerline-footer/queue/store.ts +8 -56
- package/dist/extensions/pi-powerline-footer/queue/types.ts +1 -2
- package/dist/extensions/pi-powerline-footer/segments.ts +0 -3
- package/dist/extensions/pi-powerline-footer/tests/bash-mode.test.ts +231 -1
- package/dist/extensions/pi-powerline-footer/tests/custom-items.test.ts +5 -19
- package/dist/extensions/pi-powerline-footer/tests/editor-performance.test.ts +43 -0
- package/dist/extensions/pi-powerline-footer/tests/git-optional-locks.test.ts +64 -0
- package/dist/extensions/pi-powerline-footer/tests/jump-shortcuts.test.ts +116 -0
- package/dist/extensions/pi-powerline-footer/tests/queue-store.test.ts +19 -149
- package/dist/extensions/pi-powerline-footer/tests/remaining-regressions.test.ts +6 -0
- package/dist/extensions/pi-powerline-footer/tests/usage-display.test.ts +5 -5
- package/dist/extensions/pi-powerline-footer/types.ts +1 -2
- package/dist/extensions/pi-subagents/CHANGELOG.md +202 -14
- package/dist/extensions/pi-subagents/README.md +65 -1614
- package/dist/extensions/pi-subagents/agents/builder.md +0 -1
- package/dist/extensions/pi-subagents/agents/delegate.md +14 -0
- package/dist/extensions/pi-subagents/agents/oracle.md +74 -0
- package/dist/extensions/pi-subagents/agents/reviewer.md +78 -0
- package/dist/extensions/pi-subagents/agents/scout.md +50 -0
- package/dist/extensions/pi-subagents/agents/worker.md +58 -0
- package/dist/extensions/pi-subagents/docs/configuration.md +328 -0
- package/dist/extensions/pi-subagents/docs/extension-api.md +308 -0
- package/dist/extensions/pi-subagents/docs/missions.md +119 -0
- package/dist/extensions/pi-subagents/docs/models.md +192 -0
- package/dist/extensions/pi-subagents/docs/observability.md +174 -0
- package/dist/extensions/pi-subagents/docs/tool-reference.md +343 -0
- package/dist/extensions/pi-subagents/docs/watchdog.md +176 -0
- package/dist/extensions/pi-subagents/docs/workflows.md +163 -0
- package/dist/extensions/pi-subagents/inspector-runner.mjs +11 -0
- package/dist/extensions/pi-subagents/package-lock.json +152 -194
- package/dist/extensions/pi-subagents/package.json +9 -10
- package/dist/extensions/pi-subagents/prompts/gather-context-and-clarify.md +1 -1
- package/dist/extensions/pi-subagents/prompts/parallel-cleanup.md +9 -9
- package/dist/extensions/pi-subagents/prompts/parallel-research.md +6 -6
- package/dist/extensions/pi-subagents/prompts/parallel-review.md +8 -8
- package/dist/extensions/pi-subagents/prompts/review-loop.md +12 -12
- package/dist/extensions/pi-subagents/skills/pi-subagents/SKILL.md +22 -17
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/constraints-and-recipes.md +77 -72
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/execution-controls.md +177 -69
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/management-authoring-rpc.md +28 -8
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/prompting-and-roles.md +88 -66
- package/dist/extensions/pi-subagents/src/agents/agent-management.ts +3 -3
- package/dist/extensions/pi-subagents/src/agents/agent-refinements.ts +624 -0
- package/dist/extensions/pi-subagents/src/agents/agents.ts +29 -16
- package/dist/extensions/pi-subagents/src/agents/frontmatter.ts +7 -3
- package/dist/extensions/pi-subagents/src/agents/proactive-skills.ts +2 -2
- package/dist/extensions/pi-subagents/src/agents/skills.ts +2 -9
- package/dist/extensions/pi-subagents/src/api/delegation.ts +1 -2
- package/dist/extensions/pi-subagents/src/api/project-panes.ts +30 -0
- package/dist/extensions/pi-subagents/src/extension/config.ts +56 -8
- package/dist/extensions/pi-subagents/src/extension/control-notices.ts +2 -2
- package/dist/extensions/pi-subagents/src/extension/fanout-child.ts +51 -26
- package/dist/extensions/pi-subagents/src/extension/index.ts +119 -50
- package/dist/extensions/pi-subagents/src/extension/public-execution.ts +72 -0
- package/dist/extensions/pi-subagents/src/extension/rpc.ts +15 -15
- package/dist/extensions/pi-subagents/src/extension/schemas.ts +58 -21
- package/dist/extensions/pi-subagents/src/extension/subagent-guide.ts +39 -0
- package/dist/extensions/pi-subagents/src/extension/tool-description.ts +47 -25
- package/dist/extensions/pi-subagents/src/inspectors/herdr/actions.ts +3 -3
- package/dist/extensions/pi-subagents/src/inspectors/herdr/project-panes.ts +460 -64
- package/dist/extensions/pi-subagents/src/intercom/native-supervisor-channel.ts +102 -4
- package/dist/extensions/pi-subagents/src/missions/actions.ts +77 -16
- package/dist/extensions/pi-subagents/src/missions/goal-driver.ts +162 -0
- package/dist/extensions/pi-subagents/src/missions/lifecycle.ts +65 -14
- package/dist/extensions/pi-subagents/src/missions/store.ts +147 -5
- package/dist/extensions/pi-subagents/src/missions/types.ts +58 -3
- package/dist/extensions/pi-subagents/src/missions/workflow-state.ts +256 -0
- package/dist/extensions/pi-subagents/src/profiles/profiles.ts +8 -8
- package/dist/extensions/pi-subagents/src/runs/background/active-run-index.ts +42 -0
- package/dist/extensions/pi-subagents/src/runs/background/async-execution.ts +41 -7
- package/dist/extensions/pi-subagents/src/runs/background/async-job-tracker.ts +294 -134
- package/dist/extensions/pi-subagents/src/runs/background/async-resume.ts +19 -3
- package/dist/extensions/pi-subagents/src/runs/background/async-status.ts +39 -6
- package/dist/extensions/pi-subagents/src/runs/background/completion-replay.ts +267 -0
- package/dist/extensions/pi-subagents/src/runs/background/control-channel.ts +145 -60
- package/dist/extensions/pi-subagents/src/runs/background/result-watcher.ts +114 -6
- package/dist/extensions/pi-subagents/src/runs/background/resume-guidance.ts +33 -0
- package/dist/extensions/pi-subagents/src/runs/background/retained-children.ts +68 -0
- package/dist/extensions/pi-subagents/src/runs/background/run-id-resolver.ts +71 -0
- package/dist/extensions/pi-subagents/src/runs/background/run-status.ts +21 -2
- package/dist/extensions/pi-subagents/src/runs/background/scheduled-runs.ts +42 -14
- package/dist/extensions/pi-subagents/src/runs/background/stale-run-reconciler.ts +12 -24
- package/dist/extensions/pi-subagents/src/runs/background/steering.ts +7 -5
- package/dist/extensions/pi-subagents/src/runs/background/subagent-runner.ts +152 -68
- package/dist/extensions/pi-subagents/src/runs/background/subagent-wait.ts +17 -4
- package/dist/extensions/pi-subagents/src/runs/background/wait-completions.ts +146 -0
- package/dist/extensions/pi-subagents/src/runs/background/wait-subscriptions.ts +21 -5
- package/dist/extensions/pi-subagents/src/runs/foreground/async-dismiss-action.ts +85 -0
- package/dist/extensions/pi-subagents/src/runs/foreground/async-steering-action.ts +43 -18
- package/dist/extensions/pi-subagents/src/runs/foreground/chain-clarify.ts +20 -19
- package/dist/extensions/pi-subagents/src/runs/foreground/chain-execution.ts +3 -0
- package/dist/extensions/pi-subagents/src/runs/foreground/execution.ts +55 -26
- package/dist/extensions/pi-subagents/src/runs/foreground/foreground-history.ts +137 -0
- package/dist/extensions/pi-subagents/src/runs/foreground/subagent-executor.ts +798 -112
- package/dist/extensions/pi-subagents/src/runs/foreground/workflow-foreground-steering.ts +187 -0
- package/dist/extensions/pi-subagents/src/runs/shared/acceptance.ts +165 -22
- package/dist/extensions/pi-subagents/src/runs/shared/dynamic-fanout.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +2 -0
- package/dist/extensions/pi-subagents/src/runs/shared/model-fallback.ts +9 -5
- package/dist/extensions/pi-subagents/src/runs/shared/model-scope.ts +12 -2
- package/dist/extensions/pi-subagents/src/runs/shared/parallel-utils.ts +1 -0
- package/dist/extensions/pi-subagents/src/runs/shared/pi-args.ts +465 -116
- package/dist/extensions/pi-subagents/src/runs/shared/pi-spawn.ts +10 -10
- package/dist/extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.ts +189 -32
- package/dist/extensions/pi-subagents/src/runs/shared/task-intent.ts +2 -2
- package/dist/extensions/pi-subagents/src/runs/shared/worktree.ts +3 -3
- package/dist/extensions/pi-subagents/src/shared/artifacts.ts +128 -3
- package/dist/extensions/pi-subagents/src/shared/display-text.ts +100 -0
- package/dist/extensions/pi-subagents/src/shared/file-coalescer.ts +9 -0
- package/dist/extensions/pi-subagents/src/shared/fork-context.ts +13 -0
- package/dist/extensions/pi-subagents/src/shared/formatters.ts +4 -6
- package/dist/extensions/pi-subagents/src/shared/prompt-resources.ts +51 -0
- package/dist/extensions/pi-subagents/src/shared/settings.ts +41 -11
- package/dist/extensions/pi-subagents/src/shared/types.ts +100 -3
- package/dist/extensions/pi-subagents/src/shared/utf8.ts +11 -0
- package/dist/extensions/pi-subagents/src/shared/utils.ts +43 -33
- package/dist/extensions/pi-subagents/src/slash/delegation-adapters.ts +1 -14
- package/dist/extensions/pi-subagents/src/slash/inline-subagents.ts +1 -1
- package/dist/extensions/pi-subagents/src/slash/prompt-template-bridge.ts +14 -12
- package/dist/extensions/pi-subagents/src/slash/prompt-workflows.ts +176 -21
- package/dist/extensions/pi-subagents/src/slash/slash-bridge.ts +12 -6
- package/dist/extensions/pi-subagents/src/slash/slash-commands.ts +52 -18
- package/dist/extensions/pi-subagents/src/slash/slash-live-state.ts +36 -5
- package/dist/extensions/pi-subagents/src/tui/fleet-status.ts +30 -16
- package/dist/extensions/pi-subagents/src/tui/fleet.ts +151 -31
- package/dist/extensions/pi-subagents/src/tui/render.ts +201 -68
- package/dist/extensions/pi-subagents/src/types/pi-runtime-compat.d.ts +0 -6
- package/dist/extensions/pi-subagents/src/watchdog/change-signature.ts +5 -4
- package/dist/extensions/pi-subagents/src/watchdog/lsp-diagnostics.ts +0 -1
- package/dist/extensions/pi-subagents/src/workflows/scripted-workflow.ts +313 -25
- package/dist/extensions/pi-subagents/test/e2e/real-session-subagent.test.ts +15 -15
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/cli.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/register-bedrock.d.ts +2 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/restore-sandbox-env.d.ts +17 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/args.d.ts +57 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/config-selector.d.ts +16 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/file-processor.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/initial-message.d.ts +18 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/list-models.d.ts +9 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/project-trust.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/session-picker.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/startup-ui.d.ts +20 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/config.d.ts +96 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session-runtime.d.ts +119 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session-services.d.ts +85 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session.d.ts +620 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/auth-guidance.d.ts +5 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/auth-storage.d.ts +56 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/bash-executor.d.ts +32 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/cache-stats.d.ts +49 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/branch-summarization.d.ts +93 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/compaction.d.ts +128 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/index.d.ts +7 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/utils.d.ts +38 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/defaults.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/diagnostics.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/event-bus.d.ts +9 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/exec.d.ts +29 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/experimental.d.ts +2 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/ansi-to-html.d.ts +22 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/index.d.ts +37 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/tool-renderer.d.ts +34 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/index.d.ts +12 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/loader.d.ts +23 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/runner.d.ts +171 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/types.d.ts +1261 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/wrapper.d.ts +20 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/footer-data-provider.d.ts +54 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/http-dispatcher.d.ts +22 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/index.d.ts +13 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/keybindings.d.ts +358 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/messages.d.ts +77 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-config.d.ts +512 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-registry.d.ts +43 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-resolver.d.ts +121 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-runtime.d.ts +82 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/models-store.d.ts +17 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/output-guard.d.ts +7 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/package-manager.d.ts +210 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/project-trust.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/prompt-templates.d.ts +54 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/provider-attribution.d.ts +4 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/provider-composer.d.ts +55 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/radius.d.ts +2 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/remote-catalog-provider.d.ts +5 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/resolve-config-value.d.ts +30 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/resource-loader.d.ts +206 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/runtime-credentials.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/sdk.d.ts +106 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/session-cwd.d.ts +19 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/session-manager.d.ts +356 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/settings-manager.d.ts +297 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/skills.d.ts +60 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/slash-commands.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/source-info.d.ts +18 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/system-prompt.d.ts +28 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/telemetry.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/timings.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/bash.d.ts +68 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/edit-diff.d.ts +106 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/edit.d.ts +51 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/file-mutation-queue.d.ts +6 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/find.d.ts +35 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/grep.d.ts +37 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/index.d.ts +40 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/ls.d.ts +37 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/output-accumulator.d.ts +52 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/path-utils.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/read.d.ts +35 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/render-utils.d.ts +24 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/truncate.d.ts +70 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/write.d.ts +26 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/trust-manager.d.ts +36 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/usage-totals.d.ts +19 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/index.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/client.d.ts +61 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/huggingface.d.ts +23 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/index.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/provider.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/ui.d.ts +42 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/index.d.ts +35 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/main.d.ts +12 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/migrations.d.ts +33 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/index.d.ts +9 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/armin.d.ts +34 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/assistant-message.d.ts +22 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/bash-execution.d.ts +34 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/config-selector.d.ts +102 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-editor.d.ts +21 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-entry.d.ts +19 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-message.d.ts +20 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/daxnuts.d.ts +23 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/diff.d.ts +12 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-editor.d.ts +22 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-input.d.ts +23 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-selector.d.ts +26 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/footer.d.ts +32 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/index.d.ts +34 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/login-dialog.d.ts +52 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/model-selector.d.ts +54 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/oauth-selector.d.ts +33 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/scoped-models-selector.d.ts +42 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/session-selector.d.ts +95 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/settings-selector.d.ts +77 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/status-indicator.d.ts +28 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/theme-selector.d.ts +11 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/tool-execution.d.ts +63 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/tree-selector.d.ts +94 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/trust-selector.d.ts +23 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/user-message.d.ts +14 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/interactive-mode.d.ts +394 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/model-search.d.ts +12 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/theme/theme-controller.d.ts +29 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/theme/theme.d.ts +120 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/print-mode.d.ts +28 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/jsonl.d.ts +17 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-client.d.ts +246 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-mode.d.ts +20 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-types.d.ts +457 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/package-manager-cli.d.ts +8 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/rpc-entry.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/ansi.d.ts +2 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/changelog.d.ts +22 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/child-process.d.ts +18 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard-image.d.ts +11 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard-native.d.ts +11 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard.d.ts +4 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/deprecation.d.ts +4 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/exif-orientation.d.ts +5 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/frontmatter.d.ts +8 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/fs-watch.d.ts +5 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/git.d.ts +26 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/html.d.ts +7 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-convert.d.ts +10 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-process.d.ts +18 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize-core.d.ts +30 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize-worker.d.ts +2 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize.d.ts +16 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/json.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/mime.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/open-browser.d.ts +9 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/paths.d.ts +31 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/photon.d.ts +21 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/pi-user-agent.d.ts +2 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/shell.d.ts +31 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/sleep.d.ts +5 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/syntax-highlight.d.ts +12 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/tools-manager.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/version-check.d.ts +15 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/windows-self-update.d.ts +3 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/index.mjs +84 -0
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/package.json +14 -0
- package/dist/extensions/pi-subagents/test/integration/acceptance-file-report.test.ts +15 -15
- package/dist/extensions/pi-subagents/test/integration/async-execution.test.ts +411 -300
- package/dist/extensions/pi-subagents/test/integration/async-job-tracker.test.ts +309 -123
- package/dist/extensions/pi-subagents/test/integration/async-status.test.ts +99 -56
- package/dist/extensions/pi-subagents/test/integration/chain-clarify.test.ts +62 -16
- package/dist/extensions/pi-subagents/test/integration/chain-execution.test.ts +159 -108
- package/dist/extensions/pi-subagents/test/integration/detect-error.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/integration/external-cli-runner.test.ts +4 -2
- package/dist/extensions/pi-subagents/test/integration/fork-context-execution.test.ts +56 -56
- package/dist/extensions/pi-subagents/test/integration/intercom-result-delivery.test.ts +114 -45
- package/dist/extensions/pi-subagents/test/integration/parallel-execution.test.ts +57 -19
- package/dist/extensions/pi-subagents/test/integration/render-fork-badge.test.ts +106 -106
- package/dist/extensions/pi-subagents/test/integration/render-widget.test.ts +416 -106
- package/dist/extensions/pi-subagents/test/integration/result-watcher.test.ts +287 -17
- package/dist/extensions/pi-subagents/test/integration/single-execution.test.ts +809 -87
- package/dist/extensions/pi-subagents/test/integration/slash-commands.test.ts +107 -20
- package/dist/extensions/pi-subagents/test/integration/slash-live-state.test.ts +9 -9
- package/dist/extensions/pi-subagents/test/integration/template-resolution.test.ts +26 -6
- package/dist/extensions/pi-subagents/test/integration/top-level-async.test.ts +2 -2
- package/dist/extensions/pi-subagents/test/support/helpers.ts +2 -0
- package/dist/extensions/pi-subagents/test/support/mock-pi-script.mjs +1 -1
- package/dist/extensions/pi-subagents/test/support/ts-loader.mjs +0 -8
- package/dist/extensions/pi-subagents/test/unit/acceptance.test.ts +163 -58
- package/dist/extensions/pi-subagents/test/unit/agent-disabled.test.ts +15 -15
- package/dist/extensions/pi-subagents/test/unit/agent-eject-disable.test.ts +66 -66
- package/dist/extensions/pi-subagents/test/unit/agent-frontmatter.test.ts +334 -248
- package/dist/extensions/pi-subagents/test/unit/agent-management.test.ts +52 -52
- package/dist/extensions/pi-subagents/test/unit/agent-memory.test.ts +26 -26
- package/dist/extensions/pi-subagents/test/unit/agent-overrides.test.ts +99 -99
- package/dist/extensions/pi-subagents/test/unit/agent-refinements.test.ts +160 -0
- package/dist/extensions/pi-subagents/test/unit/agent-selection.test.ts +9 -9
- package/dist/extensions/pi-subagents/test/unit/artifacts.test.ts +43 -1
- package/dist/extensions/pi-subagents/test/unit/async-execution.test.ts +36 -10
- package/dist/extensions/pi-subagents/test/unit/async-interrupt-action.test.ts +387 -30
- package/dist/extensions/pi-subagents/test/unit/async-permission-session.test.ts +9 -9
- package/dist/extensions/pi-subagents/test/unit/async-recovery-descriptor.test.ts +2 -2
- package/dist/extensions/pi-subagents/test/unit/async-resume.test.ts +94 -40
- package/dist/extensions/pi-subagents/test/unit/background-work.test.ts +5 -3
- package/dist/extensions/pi-subagents/test/unit/builtin-agent-documentation.test.ts +7 -7
- package/dist/extensions/pi-subagents/test/unit/capability-ceiling-agent-allowlist.test.ts +19 -19
- package/dist/extensions/pi-subagents/test/unit/chain-append.test.ts +19 -19
- package/dist/extensions/pi-subagents/test/unit/chain-root-attachment.test.ts +9 -9
- package/dist/extensions/pi-subagents/test/unit/chain-serializer.test.ts +20 -20
- package/dist/extensions/pi-subagents/test/unit/child-transcript.test.ts +9 -9
- package/dist/extensions/pi-subagents/test/unit/compaction-resume.test.ts +35 -5
- package/dist/extensions/pi-subagents/test/unit/completion-dedupe.test.ts +2 -2
- package/dist/extensions/pi-subagents/test/unit/completion-guard.test.ts +52 -52
- package/dist/extensions/pi-subagents/test/unit/completion-replay.test.ts +187 -0
- package/dist/extensions/pi-subagents/test/unit/control-channel.test.ts +125 -71
- package/dist/extensions/pi-subagents/test/unit/control-notices.test.ts +18 -3
- package/dist/extensions/pi-subagents/test/unit/default-extensions.test.ts +12 -12
- package/dist/extensions/pi-subagents/test/unit/delegation-api.test.ts +17 -23
- package/dist/extensions/pi-subagents/test/unit/doctor.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/dynamic-fanout.test.ts +25 -25
- package/dist/extensions/pi-subagents/test/unit/extra-agent-dirs.test.ts +3 -3
- package/dist/extensions/pi-subagents/test/unit/file-coalescer.test.ts +15 -0
- package/dist/extensions/pi-subagents/test/unit/fleet-status.test.ts +62 -44
- package/dist/extensions/pi-subagents/test/unit/fleet.test.ts +329 -37
- package/dist/extensions/pi-subagents/test/unit/foreground-control.test.ts +4 -4
- package/dist/extensions/pi-subagents/test/unit/foreground-tool-call-compaction.test.ts +37 -0
- package/dist/extensions/pi-subagents/test/unit/herdr-inspector-bootstrap.test.ts +69 -0
- package/dist/extensions/pi-subagents/test/unit/herdr-inspector.test.ts +79 -2
- package/dist/extensions/pi-subagents/test/unit/herdr-status-bridge.test.ts +102 -49
- package/dist/extensions/pi-subagents/test/unit/index-child-registration.test.ts +98 -32
- package/dist/extensions/pi-subagents/test/unit/intercom-bridge.test.ts +5 -5
- package/dist/extensions/pi-subagents/test/unit/mission-goal-driver.test.ts +116 -0
- package/dist/extensions/pi-subagents/test/unit/mission-lifecycle.test.ts +55 -7
- package/dist/extensions/pi-subagents/test/unit/mission-store.test.ts +289 -13
- package/dist/extensions/pi-subagents/test/unit/model-fallback.test.ts +28 -1
- package/dist/extensions/pi-subagents/test/unit/model-scope-settings.test.ts +2 -2
- package/dist/extensions/pi-subagents/test/unit/model-scope.test.ts +11 -2
- package/dist/extensions/pi-subagents/test/unit/native-supervisor-channel.test.ts +84 -10
- package/dist/extensions/pi-subagents/test/unit/nested-control.test.ts +122 -8
- package/dist/extensions/pi-subagents/test/unit/nested-events.test.ts +8 -8
- package/dist/extensions/pi-subagents/test/unit/notify.test.ts +24 -24
- package/dist/extensions/pi-subagents/test/unit/package-manifest.test.ts +16 -2
- package/dist/extensions/pi-subagents/test/unit/parallel-handoff.test.ts +7 -7
- package/dist/extensions/pi-subagents/test/unit/parallel-utils.test.ts +10 -10
- package/dist/extensions/pi-subagents/test/unit/path-handling.test.ts +3 -3
- package/dist/extensions/pi-subagents/test/unit/path-resolution.test.ts +26 -17
- package/dist/extensions/pi-subagents/test/unit/pi-args-permission-system.test.ts +405 -0
- package/dist/extensions/pi-subagents/test/unit/pi-args.test.ts +357 -92
- package/dist/extensions/pi-subagents/test/unit/pi-coding-agent-dir.test.ts +22 -6
- package/dist/extensions/pi-subagents/test/unit/pi-spawn.test.ts +6 -6
- package/dist/extensions/pi-subagents/test/unit/preflight.test.ts +43 -43
- package/dist/extensions/pi-subagents/test/unit/proactive-skills.test.ts +13 -13
- package/dist/extensions/pi-subagents/test/unit/process-terminal.test.ts +4 -4
- package/dist/extensions/pi-subagents/test/unit/profiles.test.ts +19 -19
- package/dist/extensions/pi-subagents/test/unit/project-panes-public-api.test.ts +243 -0
- package/dist/extensions/pi-subagents/test/unit/prompt-template-bridge.test.ts +68 -168
- package/dist/extensions/pi-subagents/test/unit/prompt-workflows.test.ts +58 -15
- package/dist/extensions/pi-subagents/test/unit/public-execution.test.ts +40 -0
- package/dist/extensions/pi-subagents/test/unit/reads-resolution.test.ts +66 -0
- package/dist/extensions/pi-subagents/test/unit/render-helpers.test.ts +47 -28
- package/dist/extensions/pi-subagents/test/unit/result-intercom.test.ts +12 -12
- package/dist/extensions/pi-subagents/test/unit/retained-children.test.ts +57 -0
- package/dist/extensions/pi-subagents/test/unit/rpc.test.ts +107 -27
- package/dist/extensions/pi-subagents/test/unit/run-id-resolver.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/run-status.test.ts +56 -50
- package/dist/extensions/pi-subagents/test/unit/scheduled-runs.test.ts +69 -28
- package/dist/extensions/pi-subagents/test/unit/scheduled-store-root.test.ts +67 -0
- package/dist/extensions/pi-subagents/test/unit/schemas.test.ts +59 -44
- package/dist/extensions/pi-subagents/test/unit/scripted-workflow.test.ts +424 -49
- package/dist/extensions/pi-subagents/test/unit/skills-fallback.test.ts +23 -1
- package/dist/extensions/pi-subagents/test/unit/slash-bridge.test.ts +32 -5
- package/dist/extensions/pi-subagents/test/unit/stale-run-reconciler.test.ts +13 -13
- package/dist/extensions/pi-subagents/test/unit/steering-action.test.ts +120 -91
- package/dist/extensions/pi-subagents/test/unit/steering.test.ts +2 -2
- package/dist/extensions/pi-subagents/test/unit/subagent-action-recovery.test.ts +85 -0
- package/dist/extensions/pi-subagents/test/unit/subagent-control.test.ts +35 -35
- package/dist/extensions/pi-subagents/test/unit/subagent-guide.test.ts +24 -0
- package/dist/extensions/pi-subagents/test/unit/subagent-prompt-runtime.test.ts +312 -22
- package/dist/extensions/pi-subagents/test/unit/subagent-wait.test.ts +150 -15
- package/dist/extensions/pi-subagents/test/unit/task-intent.test.ts +26 -26
- package/dist/extensions/pi-subagents/test/unit/timeout-defaults.test.ts +73 -0
- package/dist/extensions/pi-subagents/test/unit/tool-description.test.ts +76 -25
- package/dist/extensions/pi-subagents/test/unit/turn-budget.test.ts +5 -5
- package/dist/extensions/pi-subagents/test/unit/wait-subscriptions.test.ts +55 -6
- package/dist/extensions/pi-subagents/test/unit/watchdog-child-status.test.ts +13 -13
- package/dist/extensions/pi-subagents/test/unit/watchdog-lsp-diagnostics.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/watchdog-runtime.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/watchdog-settings.test.ts +8 -8
- package/dist/extensions/pi-subagents/test/unit/widget-nested-render.test.ts +6 -6
- package/dist/extensions/pi-subagents/test/unit/workflow-chat-progress.test.ts +138 -11
- package/dist/extensions/pi-subagents/test/unit/workflow-graph.test.ts +8 -8
- package/dist/extensions/pi-subagents/test/unit/workflow-launch-params.test.ts +113 -0
- package/dist/extensions/pi-subagents/test/unit/worktree.test.ts +7 -7
- package/dist/extensions/pi-subagents/test/unit/writer-budget-guidance.test.ts +6 -6
- package/dist/extensions/workflow/extension.ts +21 -19
- package/dist/extensions/workflow/modes.ts +65 -0
- package/dist/skills/pi-subagents/SKILL.md +20 -15
- package/dist/skills/pi-subagents/references/constraints-and-recipes.md +77 -83
- package/dist/skills/pi-subagents/references/execution-controls.md +215 -106
- package/dist/skills/pi-subagents/references/management-authoring-rpc.md +29 -9
- package/dist/skills/pi-subagents/references/prompting-and-roles.md +58 -43
- package/docs/plans/workflow-autoloop-reference.md +192 -0
- package/docs/plans/workflow-subagent-consolidation-planb.md +374 -0
- package/docs/plans/workflow-subagent-scripted-merge.md +406 -0
- package/package.json +1 -1
- package/dist/extensions/workflow/adapter.ts +0 -949
- package/dist/extensions/workflow/modes/loop.ts +0 -74
- package/dist/extensions/workflow/modes/prototype.ts +0 -170
- package/dist/extensions/workflow/modes/quicktype.ts +0 -150
- package/dist/extensions/workflow/modes/task.ts +0 -105
- package/dist/extensions/workflow/run-state.ts +0 -124
- package/dist/extensions/workflow/state-machine.ts +0 -484
- package/dist/extensions/workflow/validators.ts +0 -42
|
@@ -23,6 +23,7 @@ This skill covers how to handle those orchestrator-side escalations.
|
|
|
23
23
|
- **Context handoffs**: Send findings from a research session to an execution session
|
|
24
24
|
- **Clarification loops**: Worker asks questions, planner answers, work continues
|
|
25
25
|
- **Multi-session workflows**: Coordinate between specialized sessions (frontend/backend, research/implementation)
|
|
26
|
+
- **Cross-codebase peer messages**: Message an explicit live peer in another project, or open a visible Herdr project pane when a long-lived conversation is needed
|
|
26
27
|
|
|
27
28
|
## Core Patterns
|
|
28
29
|
|
|
@@ -126,7 +127,39 @@ intercom({
|
|
|
126
127
|
})
|
|
127
128
|
```
|
|
128
129
|
|
|
129
|
-
### Pattern 6:
|
|
130
|
+
### Pattern 6: Cross-Codebase Peer Messages
|
|
131
|
+
|
|
132
|
+
Use `to` alone to message any explicit live peer on the machine, even when it is
|
|
133
|
+
in another codebase. Use `cwd` alone when there should be exactly one live peer
|
|
134
|
+
in that repo. Use `to` plus `cwd` when the directory is a safety guard.
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
intercom({
|
|
138
|
+
action: "ask",
|
|
139
|
+
cwd: "/path/to/other-repo",
|
|
140
|
+
to: "workbench-agent",
|
|
141
|
+
message: "Which module owns workbench source slices?"
|
|
142
|
+
})
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Only open a Herdr project pane when you need a durable visible peer session in
|
|
146
|
+
that repo. For bounded work, prefer `pi-subagents` with an explicit `cwd`; the
|
|
147
|
+
child can use `contact_supervisor` for owner decisions and regular `intercom`
|
|
148
|
+
for explicit peer coordination.
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
intercom({
|
|
152
|
+
action: "send",
|
|
153
|
+
cwd: "/path/to/other-repo",
|
|
154
|
+
openProjectPaneIfMissing: true,
|
|
155
|
+
message: "Let's discuss the workbench API ergonomics in this repo."
|
|
156
|
+
})
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
If a live session already exists in that `cwd`, intercom reuses it. If multiple
|
|
160
|
+
sessions are active there, pass `to` to select one by name or session ID.
|
|
161
|
+
|
|
162
|
+
### Pattern 7: Handle Subagent Escalations (Orchestrator Side)
|
|
130
163
|
|
|
131
164
|
When `pi-subagents` spawns a delegated child and supplies child bridge metadata,
|
|
132
165
|
that child can reach you through `contact_supervisor`. You receive a formatted
|
|
@@ -190,13 +223,15 @@ intercom({ action: "reply", to: "subagent-worker-78f659a3-1", message: "Use the
|
|
|
190
223
|
**Important:** Only sessions where `pi-subagents` supplied child bridge metadata
|
|
191
224
|
get the `contact_supervisor` tool. Normal sessions use the regular `intercom`
|
|
192
225
|
tool. If you see the formatted supervisor decision/progress update message, treat
|
|
193
|
-
it as a `contact_supervisor` escalation.
|
|
226
|
+
it as a `contact_supervisor` escalation. A subagent may use regular `intercom` for
|
|
227
|
+
peer coordination, including peers in other directories, but owner decisions and
|
|
228
|
+
new visible project panes should go through the supervisor.
|
|
194
229
|
|
|
195
230
|
## Key Differences
|
|
196
231
|
|
|
197
232
|
| Action | Behavior | Use When |
|
|
198
233
|
|--------|----------|----------|
|
|
199
|
-
| `send` | Fire-and-forget | You don't need a response |
|
|
234
|
+
| `send` | Fire-and-forget; infers the sole pending ask as its reply | You don't need a response |
|
|
200
235
|
| `ask` | Blocks until reply (10 min default, configurable with `PI_INTERCOM_ASK_TIMEOUT_MS`) | You need an answer to continue |
|
|
201
236
|
| `reply` | Responds to the active or pending inbound ask | You were asked something and need to answer naturally |
|
|
202
237
|
| `pending` | Lists unresolved inbound asks | You need to see who is waiting before replying |
|
|
@@ -301,9 +336,10 @@ If neither `cmux` nor `tmux` is available, skip this path and use normal `interc
|
|
|
301
336
|
|
|
302
337
|
### `ask` Limitations
|
|
303
338
|
|
|
339
|
+
- **Connected targets only**: `ask` fails immediately when the target is not in the live intercom roster. Use `list` before asking when liveness is uncertain; use `send` for non-blocking mailbox delivery.
|
|
304
340
|
- **Configurable timeout**: If no reply arrives before the shared ask timeout, the ask fails. The default is 10 minutes; set `PI_INTERCOM_ASK_TIMEOUT_MS` to a positive millisecond value to change it.
|
|
305
341
|
- **One at a time**: Cannot have multiple pending asks from the same session
|
|
306
|
-
- **Cannot self-target**: A session cannot ask itself
|
|
342
|
+
- **Cannot self-target**: A session cannot ask itself, including through disconnected-mailbox remapping
|
|
307
343
|
|
|
308
344
|
```typescript
|
|
309
345
|
// Check if already waiting before asking
|
|
@@ -316,8 +352,10 @@ if (result.isError && result.content[0].text.includes("Already waiting")) {
|
|
|
316
352
|
### `send` Behavior
|
|
317
353
|
|
|
318
354
|
- **No timeout**: Message is delivered or fails immediately
|
|
319
|
-
- **
|
|
320
|
-
- **
|
|
355
|
+
- **Sole pending ask inference**: If the destination has exactly one pending inbound ask, `send` attaches its `replyTo` and reports `Reply sent to <target> (inferred from pending ask)`
|
|
356
|
+
- **Ambiguity stays unthreaded**: Zero or multiple matching asks leave the send as an ordinary message
|
|
357
|
+
- **Confirmation dialogs**: If `confirmSend: true` in config, interactive sessions confirm ordinary and inferred sends
|
|
358
|
+
- **Explicit replies skip confirmation**: A caller-supplied `replyTo` skips the dialog
|
|
321
359
|
|
|
322
360
|
## Best Practices
|
|
323
361
|
|
|
@@ -351,7 +389,9 @@ intercom({
|
|
|
351
389
|
|
|
352
390
|
### Include reply hints in messages
|
|
353
391
|
|
|
354
|
-
Make it easy for recipients to respond
|
|
392
|
+
Make it easy for recipients to respond. Busy recipients receive your message
|
|
393
|
+
through Selesai's steering queue at the next safe model boundary without aborting
|
|
394
|
+
their active turn, so a reply hint keeps the conversation actionable:
|
|
355
395
|
|
|
356
396
|
```typescript
|
|
357
397
|
// GOOD: Recipient sees exact command to reply
|
|
@@ -402,7 +442,7 @@ if (!result.delivered) {
|
|
|
402
442
|
await intercom({ action: "list" });
|
|
403
443
|
}
|
|
404
444
|
```
|
|
405
|
-
Replies to recently disconnected named senders can be queued by the broker and delivered if that sender reconnects with the same name. New
|
|
445
|
+
Replies to recently disconnected explicitly named senders can be queued by the broker and delivered if that sender reconnects with the same name and directory. Runtime-only `subagent-chat-...` aliases are not reconnect identities. New `send` calls may target a known live or recently disconnected session; blocking `ask` calls require a live target.
|
|
406
446
|
|
|
407
447
|
**Ask timeout**
|
|
408
448
|
```typescript
|
|
@@ -432,7 +472,7 @@ if (!result.delivered) {
|
|
|
432
472
|
|
|
433
473
|
### Connection lost
|
|
434
474
|
|
|
435
|
-
Sessions automatically reconnect if the broker restarts. If persistently disconnected:
|
|
475
|
+
Sessions automatically reconnect if the broker restarts. A liveness heartbeat round-trips a lightweight request and tears down half-open sockets (for example after the broker is killed without a clean shutdown), so the `disconnected` → reconnect path fires within a bounded window. If persistently disconnected:
|
|
436
476
|
|
|
437
477
|
```typescript
|
|
438
478
|
intercom({ action: "status" })
|
|
@@ -115,11 +115,11 @@ test("inline message colors follow the tool-title, text, muted-border, and dim-m
|
|
|
115
115
|
const lines = component.render(72);
|
|
116
116
|
const rendered = lines.join("\n");
|
|
117
117
|
|
|
118
|
-
assert.match(lines[0], /^\u001b\[34m╭\u001b\[0m\u001b\[32m
|
|
118
|
+
assert.match(lines[0], /^\u001b\[34m╭\u001b\[0m\u001b\[32m From:/);
|
|
119
119
|
assert.match(rendered, /\u001b\[34m│\u001b\[0m\u001b\[33mBody copy\u001b\[0m/);
|
|
120
|
-
assert.match(rendered, /\u001b\[35m
|
|
121
|
-
assert.match(rendered, /\u001b\[35m
|
|
122
|
-
assert.match(rendered, /\u001b\[35m
|
|
120
|
+
assert.match(rendered, /\u001b\[35m To reply: intercom reply\u001b\[0m/);
|
|
121
|
+
assert.match(rendered, /\u001b\[35m Attachment: note\.txt\u001b\[0m/);
|
|
122
|
+
assert.match(rendered, /\u001b\[35m Reply to parent-m\u001b\[0m/);
|
|
123
123
|
assert.match(lines.at(-1)!, /^\u001b\[34m╰─+╯\u001b\[0m$/);
|
|
124
124
|
assert.ok(calls.includes("toolTitle"));
|
|
125
125
|
assert.ok(calls.includes("text"));
|
|
@@ -134,9 +134,9 @@ test("collapsed inline messages preserve the same hierarchy without accent", ()
|
|
|
134
134
|
|
|
135
135
|
const rendered = component.render(72).join("\n");
|
|
136
136
|
|
|
137
|
-
assert.match(rendered, /\u001b\[32m
|
|
137
|
+
assert.match(rendered, /\u001b\[32m From:/);
|
|
138
138
|
assert.match(rendered, /\u001b\[33mThis is a long message/);
|
|
139
|
-
assert.match(rendered, /\u001b\[35m
|
|
139
|
+
assert.match(rendered, /\u001b\[35m To reply:/);
|
|
140
140
|
assert.ok(!calls.includes("accent"));
|
|
141
141
|
});
|
|
142
142
|
|
|
@@ -146,7 +146,7 @@ test("semantic styling remains ANSI- and Unicode-width safe", () => {
|
|
|
146
146
|
...message,
|
|
147
147
|
content: { text: "\u001b[36m色付き本文\u001b[0m with emoji 🧪 and a long Unicode tail 計画計画計画" },
|
|
148
148
|
};
|
|
149
|
-
const component = new InlineMessageComponent(unicodeFrom, unicodeMessage, styledTheme() as any, "返信
|
|
149
|
+
const component = new InlineMessageComponent(unicodeFrom, unicodeMessage, styledTheme() as any, "返信");
|
|
150
150
|
|
|
151
151
|
for (const width of [18, 31, 52]) {
|
|
152
152
|
const lines = component.render(width);
|
|
@@ -176,8 +176,8 @@ test("inline messages pick up mutable theme proxy changes on rerender", () => {
|
|
|
176
176
|
palette.muted = 90;
|
|
177
177
|
const after = component.render(72).join("\n");
|
|
178
178
|
|
|
179
|
-
assert.match(before, /\u001b\[32m
|
|
180
|
-
assert.match(after, /\u001b\[96m
|
|
179
|
+
assert.match(before, /\u001b\[32m From:/);
|
|
180
|
+
assert.match(after, /\u001b\[96m From:/);
|
|
181
181
|
assert.match(after, /\u001b\[97mThis is a long message/);
|
|
182
182
|
assert.match(after, /\u001b\[90m╭/);
|
|
183
183
|
assert.notEqual(before, after);
|
|
@@ -3,6 +3,8 @@ export const EXTENSION_BUS_FEATURE = "extension-bus-v1";
|
|
|
3
3
|
export interface SessionInfo {
|
|
4
4
|
id: string;
|
|
5
5
|
name?: string;
|
|
6
|
+
/** True only when the extension synthesized name for an unnamed runtime. */
|
|
7
|
+
runtimeFallbackAlias?: boolean;
|
|
6
8
|
cwd: string;
|
|
7
9
|
model: string;
|
|
8
10
|
pid: number;
|
|
@@ -83,7 +85,7 @@ export type ClientMessage =
|
|
|
83
85
|
| { type: "message_receipt"; receipt: MessageReceipt }
|
|
84
86
|
| { type: "cancel_message"; messageId: string }
|
|
85
87
|
| { type: "cancel_ask"; messageId: string }
|
|
86
|
-
| { type: "presence"; name?: string; status?: string; model?: string; contextPct?: number | null; contextTokens?: number | null; contextWindow?: number | null }
|
|
88
|
+
| { type: "presence"; name?: string; runtimeFallbackAlias?: boolean; status?: string; model?: string; contextPct?: number | null; contextTokens?: number | null; contextWindow?: number | null }
|
|
87
89
|
| {
|
|
88
90
|
type: "extension_publish";
|
|
89
91
|
namespace: string;
|
|
@@ -42,7 +42,7 @@ export class InlineMessageComponent implements Component {
|
|
|
42
42
|
}
|
|
43
43
|
const bodyWidth = Math.max(1, width - 2);
|
|
44
44
|
|
|
45
|
-
const header = `
|
|
45
|
+
const header = ` From: ${senderName} (${this.from.cwd}) `;
|
|
46
46
|
const headerText = truncateToWidth(this.collapsed ? `${header} Ctrl+O expands ` : header, bodyWidth, "");
|
|
47
47
|
const headerPadding = Math.max(0, bodyWidth - visibleWidth(headerText));
|
|
48
48
|
lines.push(
|
|
@@ -62,12 +62,12 @@ export class InlineMessageComponent implements Component {
|
|
|
62
62
|
lines.push(frameLine(this.theme.fg("text", this.collapsedPreview)));
|
|
63
63
|
|
|
64
64
|
const meta: string[] = [];
|
|
65
|
-
if (this.replyCommand) meta.push(
|
|
65
|
+
if (this.replyCommand) meta.push(`To reply: ${this.replyCommand}`);
|
|
66
66
|
if (this.message.content.attachments?.length) {
|
|
67
67
|
const count = this.message.content.attachments.length;
|
|
68
|
-
meta.push(
|
|
68
|
+
meta.push(`${count} attachment${count === 1 ? "" : "s"}`);
|
|
69
69
|
}
|
|
70
|
-
if (this.message.replyTo && !this.message.expectsReply) meta.push(
|
|
70
|
+
if (this.message.replyTo && !this.message.expectsReply) meta.push(`Reply to ${this.message.replyTo.slice(0, 8)}`);
|
|
71
71
|
meta.push("Ctrl+O to expand");
|
|
72
72
|
|
|
73
73
|
lines.push(frameLine(this.theme.fg("dim", ` ${meta.join(" · ")}`)));
|
|
@@ -87,7 +87,7 @@ export class InlineMessageComponent implements Component {
|
|
|
87
87
|
|
|
88
88
|
if (this.replyCommand) {
|
|
89
89
|
lines.push(frameLine(""));
|
|
90
|
-
const replyLines = wrapTextWithAnsi(this.theme.fg("dim", `
|
|
90
|
+
const replyLines = wrapTextWithAnsi(this.theme.fg("dim", ` To reply: ${this.replyCommand}`), bodyWidth);
|
|
91
91
|
for (const line of replyLines) {
|
|
92
92
|
lines.push(frameLine(line));
|
|
93
93
|
}
|
|
@@ -96,13 +96,13 @@ export class InlineMessageComponent implements Component {
|
|
|
96
96
|
if (this.message.content.attachments?.length) {
|
|
97
97
|
lines.push(frameLine(""));
|
|
98
98
|
for (const att of this.message.content.attachments) {
|
|
99
|
-
lines.push(frameLine(this.theme.fg("dim", `
|
|
99
|
+
lines.push(frameLine(this.theme.fg("dim", ` Attachment: ${att.name}`)));
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
if (this.message.replyTo && !this.message.expectsReply) {
|
|
104
104
|
lines.push(frameLine(""));
|
|
105
|
-
lines.push(frameLine(this.theme.fg("dim", `
|
|
105
|
+
lines.push(frameLine(this.theme.fg("dim", ` Reply to ${this.message.replyTo.slice(0, 8)}`)));
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
lines.push(this.theme.fg("muted", `╰${borderChar.repeat(bodyWidth)}╯`));
|
|
@@ -7,9 +7,22 @@
|
|
|
7
7
|
- **Guide defaults to compact mode** — When `selesaiGuide.mode` is unset, the recurring guide opens in compact mode instead of the full tour. Explicit `full`, `compact`, or `off` settings are still honored.
|
|
8
8
|
|
|
9
9
|
### Changed
|
|
10
|
-
- **Upstream 0.
|
|
10
|
+
- **Upstream 0.13.0 merge (Selesai fork)** — Updated from upstream v0.12.3 to v0.13.0. Adopts editor typing/cursor responsiveness work (opt-in profiling, bounded fast render path, cached queue/prompt render, async git completion lookups, debounced bash ghost completion), opt-in bash completions, and read-only git polling that no longer takes `.git/index.lock`. Follows upstream's removal of the saved idea inbox (idea capture commands, sigil capture, and issue handoff). Selesai-specific features are preserved: the guide overlay, the TPS tracker, session-usage accounting, mode-aware autocomplete trigger forwarding, the fixed-editor prompt glyph and border color, and `@selesai/code` path resolvers.
|
|
11
11
|
- **Native fullscreen dock** — Removed the unsupported terminal-split compositor and its fixed-editor/mouse-scroll/chat-jump controls. Powerline status, editor, and widgets now use Pi 0.84.1's native fullscreen dock; Selesai defaults to fullscreen while `tuiMode: "regular"` opts out.
|
|
12
12
|
|
|
13
|
+
## [0.13.0] - 2026-08-12
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- **Editor typing responsiveness** — Avoid expanding paste markers or joining full drafts in editor hot paths, debounce bash ghost completion, run git completion lookups asynchronously, cache queue/prompt render work, use a bounded fast render path for large editor drafts, and avoid full grapheme scans when deleting plain ASCII from long lines. Opt-in profiling and render A/B flags now identify remaining editor costs without affecting normal sessions.
|
|
17
|
+
- **Editor hot-path cleanup** — Simplified type narrowing in the fast Backspace path without changing behavior.
|
|
18
|
+
- **Bash completions are opt-in** — Disable Powerline bash ghost suggestions and one-off `!command` predictions by default. Set `bashMode.completions` to `true` to re-enable them.
|
|
19
|
+
- **GitHub Actions runtime** — Updated checkout and Node setup actions to their Node 24 runtime versions.
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
- **Git polling no longer takes `.git/index.lock`** — Read-only git commands now run with `GIT_OPTIONAL_LOCKS=0`, so polling `git status` stops refreshing the index as a side effect, which raced interactive git in the same repo and could leave an orphaned lock behind. Thanks to Max Kaye (@XertroV) for #156.
|
|
23
|
+
|
|
24
|
+
### Removed
|
|
25
|
+
- **Saved idea inbox** — Removed unused idea capture commands, sigil capture, and issue handoff. The queue now manages queued prompts only.
|
|
13
26
|
|
|
14
27
|
## [0.12.3] - 2026-08-09
|
|
15
28
|
|
|
@@ -13,7 +13,7 @@ Customizes the default [pi](https://github.com/badlogic/pi-mono) editor with a p
|
|
|
13
13
|
|
|
14
14
|
**Editor stash** — Press `Alt+S` to save your editor content and clear the editor, type a quick prompt, and your stashed text auto-restores when the agent finishes. Toggles between stash, pop, and update-existing-stash. A `stash` indicator appears in the powerline bar while text is stashed.
|
|
15
15
|
|
|
16
|
-
**Powerline Queue
|
|
16
|
+
**Powerline Queue** — Messages typed during compaction are held by Powerline and delivered after successful compaction instead of disappearing into Pi's native queue. `/queue` provides a file-backed queue for aliases, retries, clears, and manual delivery. Active queued and blocked counts appear in the `queue` segment only when there is something to show.
|
|
17
17
|
|
|
18
18
|
**Working Vibes** — AI-generated themed loading messages. Set `/vibe star trek` and your "Working..." becomes "Running diagnostics..." or "Engaging warp drive...". Supports any theme: pirate, zen, noir, cowboy, etc.
|
|
19
19
|
|
|
@@ -37,7 +37,7 @@ Customizes the default [pi](https://github.com/badlogic/pi-mono) editor with a p
|
|
|
37
37
|
|
|
38
38
|
**Sticky bash mode** — Toggle bash mode with `ctrl+shift+b` or `/bash-mode`. It keeps a managed shell session alive for the current pi session, shows a dedicated `shell_mode` segment, streams command output into an embedded transcript below the editor, and lets `cd` or exported state persist across commands.
|
|
39
39
|
|
|
40
|
-
**Shell ghost suggestions** —
|
|
40
|
+
**Shell ghost suggestions** — Optional bash-mode completions can show inline ghost suggestions from successful project shell history, deterministic path and git continuations, guarded global history for high-confidence heads like `git`, and a tiny curated default set. Right now that curated set is `g` → `git status` and `c` → `cd ..`. Shell-native completion probes stay disabled. Set `bashMode.completions` to `true` to enable bash-mode ghosts and one-off `!command` / `!!command` predictions.
|
|
41
41
|
|
|
42
42
|
## Installation
|
|
43
43
|
|
|
@@ -53,40 +53,16 @@ Activates automatically. Toggle with `/powerline`, switch presets with `/powerli
|
|
|
53
53
|
|
|
54
54
|
Use `/cd <path>` to continue the current conversation from another working directory. It supports relative paths, absolute paths, `~`, `~/...`, and directory completions. With no argument, `/cd` prints the current Pi session directory. The command switches into a cwd-updated session file so Pi tools and the footer path segment agree after the change.
|
|
55
55
|
|
|
56
|
-
Powerline Queue
|
|
56
|
+
Powerline Queue commands:
|
|
57
57
|
|
|
58
|
-
- `# <text>` — capture an idea for the current project without sending it to the agent
|
|
59
|
-
- `# @global <text>` — capture a global idea
|
|
60
|
-
- `# @current <text>` — capture an idea targeted to the current session
|
|
61
|
-
- `/queue alias <name> [path]` — save a project alias, defaulting to the current cwd when `path` is omitted
|
|
62
|
-
- `# @name <text>` — capture an idea for a saved project alias
|
|
63
58
|
- `/compact <text>` — compact now and queue `<text>` as the next prompt after successful compaction
|
|
64
|
-
- `/idea [@target] <text>` — command form of idea capture, useful for scripts and users who disable the sigil
|
|
65
|
-
- `/idea issue [id]` — hand the oldest active idea, or a specific idea, to the current agent for safe GitHub issue triage
|
|
66
|
-
- `/ideas` — open the captured-ideas picker
|
|
67
|
-
- `/ideas next` — send the oldest active idea to the current session
|
|
68
|
-
- `/ideas issue [id]` — ask the current agent to dedupe and file a GitHub issue only when the target repo is clear and owned/controlled
|
|
69
|
-
- `/ideas send <id>` — send an idea to the current session
|
|
70
59
|
- `/queue` — open the queued-prompt picker
|
|
71
|
-
- `/queue
|
|
72
|
-
- `/queue
|
|
73
|
-
- `/queue
|
|
74
|
-
|
|
75
|
-
The default capture sigil is `#`. When the editor text starts with `# `, the prompt glyph changes to `#`; pressing Enter saves the idea, clears the editor, and leaves the original sigil text in editor history for quick recovery. Configure or disable this under `powerline.queue.captureSigil`:
|
|
76
|
-
|
|
77
|
-
```json
|
|
78
|
-
{
|
|
79
|
-
"powerline": {
|
|
80
|
-
"queue": {
|
|
81
|
-
"captureSigil": "#"
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
Set `captureSigil` to `false` if you often submit markdown headings and prefer `/idea` instead.
|
|
60
|
+
- `/queue alias <name> [path]` — save a project alias, defaulting to the current cwd when `path` is omitted
|
|
61
|
+
- `/queue send [id]` / `/queue retry [id]` — deliver a queued prompt now
|
|
62
|
+
- `/queue clear <id|all>` — clear queued prompts
|
|
63
|
+
- `/queue target <id> @name|global|current` — retarget a queued prompt
|
|
88
64
|
|
|
89
|
-
|
|
65
|
+
Queued data is stored under the Pi agent directory in `powerline-footer/inbox.jsonl` and `powerline-footer/projects.json`. `inbox.jsonl` is a stable read surface for orchestrators and helper agents; each line is a queue item with `id`, `text`, `createdAt`, `updatedAt`, `source`, `target`, `intent`, `status`, and optional `error`. Writes should still go through Powerline commands or the store so locking and atomic writes are preserved.
|
|
90
66
|
|
|
91
67
|
- `/powerline placement below` — move the primary powerline row below the editor
|
|
92
68
|
- `/powerline placement above` — restore the default placement
|
|
@@ -117,6 +93,14 @@ You can also set it in the agent settings file (`~/.selesai/agent/settings.json`
|
|
|
117
93
|
|
|
118
94
|
**Environment:** `POWERLINE_NERD_FONTS=1` to force Nerd Fonts, `=0` for ASCII.
|
|
119
95
|
|
|
96
|
+
For typing diagnostics, start Pi with `POWERLINE_DEBUG_PERF=1`, reproduce the slow editor case, then run `/powerline-perf`. Use `/powerline-perf reset` before a focused run. Profiling is off by default. While it is enabled, these A/B flags can disable one render seam before `/reload`:
|
|
97
|
+
|
|
98
|
+
- `POWERLINE_PERF_FAST_RENDER=0`
|
|
99
|
+
- `POWERLINE_PERF_EDITOR_CHROME=0`
|
|
100
|
+
- `POWERLINE_PERF_WIDGETS=0`
|
|
101
|
+
- `POWERLINE_PERF_BASH_WIDGETS=0`
|
|
102
|
+
- `POWERLINE_PERF_LAST_PROMPT=0`
|
|
103
|
+
|
|
120
104
|
Preset selection is saved under `powerline` in the agent settings file and restored on startup.
|
|
121
105
|
Run `/powerline default` to switch back to the default preset.
|
|
122
106
|
|
|
@@ -259,13 +243,12 @@ Reset the managed shell with `/bash-reset`.
|
|
|
259
243
|
While bash mode is active:
|
|
260
244
|
|
|
261
245
|
- Enter runs the current shell command
|
|
262
|
-
- Right Arrow accepts ghost text into the editor without running it
|
|
263
|
-
- Tab accepts the current ghost suggestion when one exists; otherwise it does nothing
|
|
264
246
|
- Up and Down browse matching shell history
|
|
265
247
|
- `escape` exits bash mode and returns to normal prompt mode
|
|
266
248
|
- `ctrl+c` interrupts the active shell job before falling back to normal pi behavior
|
|
249
|
+
- When `bashMode.completions` is `true`, Right Arrow or Tab accepts ghost text into the editor without running it
|
|
267
250
|
|
|
268
|
-
The managed shell is persistent for the current pi session. Command output appears in a transcript below the editor, and shell cwd changes are reflected in the footer path and `shell_mode` segment.
|
|
251
|
+
The managed shell is persistent for the current pi session. Command output appears in a transcript below the editor, and shell cwd changes are reflected in the footer path and `shell_mode` segment. Bash-mode ghost suggestions and one-off `!command` / `!!command` predictions are opt-in because they add editor work. When enabled, bash mode can show the newest successful project-history ghost on an empty prompt. Mode entry stays quiet: there is no automatic or manual dropdown completion surface, and ghost suggestions do not run shell-native completion probes.
|
|
269
252
|
|
|
270
253
|
### Bash mode configuration
|
|
271
254
|
|
|
@@ -275,6 +258,7 @@ In `~/.selesai/agent/settings.json` (or under `SELESAI_CODING_AGENT_DIR` when th
|
|
|
275
258
|
{
|
|
276
259
|
"bashMode": {
|
|
277
260
|
"toggleShortcut": "ctrl+shift+b",
|
|
261
|
+
"completions": false,
|
|
278
262
|
"transcriptMaxLines": 2000,
|
|
279
263
|
"transcriptMaxBytes": 524288
|
|
280
264
|
}
|
|
@@ -308,7 +292,7 @@ Prompt history now has two sources:
|
|
|
308
292
|
- stashed prompts — up to 12 recent stashed prompts (newest first)
|
|
309
293
|
- recent project prompts — up to 50 recent user-submitted prompts pulled from pi sessions in the current project folder
|
|
310
294
|
|
|
311
|
-
Selecting a stashed
|
|
295
|
+
Selecting a stashed or project prompt-history entry inserts it into the editor. If the editor already has text, you can choose `Replace`, `Append`, or `Cancel`.
|
|
312
296
|
|
|
313
297
|
### Editor clipboard and navigation shortcuts
|
|
314
298
|
|
|
@@ -330,7 +314,6 @@ You can override shortcut keys in the agent settings file:
|
|
|
330
314
|
"stashHistory": "ctrl+alt+h",
|
|
331
315
|
"copyEditor": "ctrl+alt+c",
|
|
332
316
|
"cutEditor": "ctrl+alt+x",
|
|
333
|
-
"ideaCapture": null,
|
|
334
317
|
"queueOpen": "ctrl+alt+q",
|
|
335
318
|
"editorStart": "cmd+shift+up",
|
|
336
319
|
"editorEnd": "cmd+shift+down"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { readdirSync } from "node:fs";
|
|
2
|
-
import {
|
|
2
|
+
import { execFile } from "node:child_process";
|
|
3
3
|
import { basename, dirname, isAbsolute, join, resolve } from "node:path";
|
|
4
4
|
import type { AutocompleteItem, AutocompleteProvider, AutocompleteSuggestions } from "@earendil-works/pi-tui";
|
|
5
5
|
import { matchHistoryEntries, readGlobalShellHistory, readProjectHistory } from "./history.ts";
|
|
@@ -208,22 +208,28 @@ function getPathSuggestions(token: string, cwd: string): ExtendedCompletionItem[
|
|
|
208
208
|
}
|
|
209
209
|
}
|
|
210
210
|
|
|
211
|
-
function runGit(args: string[], cwd: string): string[] {
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
cwd,
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
211
|
+
function runGit(args: string[], cwd: string, signal: AbortSignal): Promise<string[]> {
|
|
212
|
+
return new Promise((resolve) => {
|
|
213
|
+
try {
|
|
214
|
+
execFile("git", args, { cwd, encoding: "utf8", signal }, (error, stdout) => {
|
|
215
|
+
if (error || !stdout) {
|
|
216
|
+
resolve([]);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
resolve(stdout.split("\n").map((line) => line.trim()).filter(Boolean));
|
|
220
|
+
});
|
|
221
|
+
} catch {
|
|
222
|
+
// Git-aware completions are optional and should not break the main completion flow.
|
|
223
|
+
resolve([]);
|
|
224
|
+
}
|
|
225
|
+
});
|
|
224
226
|
}
|
|
225
227
|
|
|
226
|
-
function getGitSuggestions(
|
|
228
|
+
async function getGitSuggestions(
|
|
229
|
+
ctx: TokenContext,
|
|
230
|
+
cwd: string,
|
|
231
|
+
signal: AbortSignal,
|
|
232
|
+
): Promise<ExtendedCompletionItem[]> {
|
|
227
233
|
const tokens = ctx.previousTokens;
|
|
228
234
|
if (tokens[0] !== "git") return [];
|
|
229
235
|
|
|
@@ -246,12 +252,13 @@ function getGitSuggestions(ctx: TokenContext, cwd: string): ExtendedCompletionIt
|
|
|
246
252
|
return [];
|
|
247
253
|
}
|
|
248
254
|
|
|
249
|
-
const
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
];
|
|
255
|
+
const [branches, tags] = await Promise.all([
|
|
256
|
+
runGit(["branch", "--format=%(refname:short)"], cwd, signal),
|
|
257
|
+
runGit(["tag", "--list"], cwd, signal),
|
|
258
|
+
]);
|
|
259
|
+
if (signal.aborted) return [];
|
|
253
260
|
|
|
254
|
-
return [...new Set(
|
|
261
|
+
return [...new Set([...branches, ...tags])]
|
|
255
262
|
.filter((ref) => ref.startsWith(ctx.token))
|
|
256
263
|
.slice(0, 100)
|
|
257
264
|
.map((ref) => ({
|
|
@@ -365,7 +372,8 @@ export class BashCompletionEngine {
|
|
|
365
372
|
return this.getCommandPositionGhostSuggestion(line, readGlobalShellHistory(shellPath));
|
|
366
373
|
}
|
|
367
374
|
|
|
368
|
-
const deterministic = this.getDeterministicInlineSuggestions(ctx, cwd);
|
|
375
|
+
const deterministic = await this.getDeterministicInlineSuggestions(ctx, cwd, signal);
|
|
376
|
+
if (signal.aborted) return null;
|
|
369
377
|
const globalHistory = matchHistoryEntries(readGlobalShellHistory(shellPath), line, 5);
|
|
370
378
|
const ranked = boostValidatedItemsFromGlobalHistory(
|
|
371
379
|
line,
|
|
@@ -397,10 +405,17 @@ export class BashCompletionEngine {
|
|
|
397
405
|
return getCuratedCommandFallback(line);
|
|
398
406
|
}
|
|
399
407
|
|
|
400
|
-
private getDeterministicInlineSuggestions(
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
408
|
+
private async getDeterministicInlineSuggestions(
|
|
409
|
+
ctx: TokenContext,
|
|
410
|
+
cwd: string,
|
|
411
|
+
signal: AbortSignal,
|
|
412
|
+
): Promise<ExtendedCompletionItem[]> {
|
|
413
|
+
const gitSuggestions = getGitSuggestions(ctx, cwd, signal);
|
|
414
|
+
const pathSuggestions = getPathSuggestions(ctx.token, cwd);
|
|
415
|
+
const items = [
|
|
416
|
+
...withRange(await gitSuggestions, ctx.tokenStart, ctx.tokenEnd),
|
|
417
|
+
...withRange(pathSuggestions, ctx.tokenStart, ctx.tokenEnd),
|
|
418
|
+
];
|
|
404
419
|
|
|
405
420
|
return uniqueByReplacement(items);
|
|
406
421
|
}
|