@selesai/code 0.13.5 → 0.13.7
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 +10 -0
- package/README.md +255 -102
- package/dist/cli/credential-print.js +4 -4
- package/dist/cli.js +0 -0
- package/dist/core/compaction/utils.js +2 -2
- package/dist/core/export-html/template.css +1066 -1066
- package/dist/core/export-html/template.html +55 -55
- package/dist/core/export-html/template.js +1864 -1864
- package/dist/core/export-html/vendor/highlight.min.js +1212 -1212
- package/dist/core/export-html/vendor/marked.min.js +78 -78
- package/dist/core/messages.js +7 -7
- package/dist/extensions/context-compaction-reminder.test.ts +82 -82
- package/dist/extensions/context-compaction-reminder.ts +28 -28
- package/dist/extensions/pi-hermes-memory/scripts/check-min-sdk.mjs +0 -0
- package/dist/extensions/pi-hermes-memory/tests/run-all.sh +0 -0
- package/dist/extensions/pi-intercom/LICENSE +21 -21
- package/dist/extensions/pi-intercom/broker/client.test.ts +83 -83
- package/dist/extensions/pi-intercom/broker/framing.test.ts +114 -114
- package/dist/extensions/pi-intercom/broker/paths.ts +134 -134
- package/dist/extensions/pi-intercom/broker/runtime-claim.test.ts +34 -34
- package/dist/extensions/pi-intercom/broker/runtime-claim.ts +21 -21
- package/dist/extensions/pi-intercom/cwd.test.ts +40 -40
- package/dist/extensions/pi-intercom/cwd.ts +31 -31
- package/dist/extensions/pi-intercom/format-context.test.ts +31 -31
- package/dist/extensions/pi-intercom/format-context.ts +32 -32
- package/dist/extensions/pi-intercom/index.ts +71 -2
- package/dist/extensions/pi-intercom/test/overlay-width.test.ts +66 -66
- package/dist/extensions/pi-intercom/ui/compose.ts +143 -143
- package/dist/extensions/pi-intercom/ui/session-list.ts +166 -166
- package/dist/extensions/pi-subagents/.github/assets/subagent-fleet-inspector.png +0 -0
- package/dist/extensions/pi-subagents/.github/workflows/release.yml +1 -1
- package/dist/extensions/pi-subagents/.github/workflows/test.yml +1 -1
- package/dist/extensions/pi-subagents/.greptile/config.json +1 -1
- package/dist/extensions/pi-subagents/.greptile/files.json +1 -1
- package/dist/extensions/pi-subagents/.greptile/rules.md +1 -1
- package/dist/extensions/pi-subagents/.oxlintrc.json +2 -2
- package/dist/extensions/pi-subagents/AGENTS.md +1 -1
- package/dist/extensions/pi-subagents/CHANGELOG.md +34 -2
- package/dist/extensions/pi-subagents/LICENSE +1 -1
- package/dist/extensions/pi-subagents/README.md +1 -1
- package/dist/extensions/pi-subagents/VISION.md +1 -1
- package/dist/extensions/pi-subagents/agents/architect.md +1 -1
- package/dist/extensions/pi-subagents/agents/builder.md +1 -1
- package/dist/extensions/pi-subagents/agents/claude-code-writer.md +1 -1
- package/dist/extensions/pi-subagents/agents/claude-code.md +1 -1
- package/dist/extensions/pi-subagents/agents/codex-exec-writer.md +1 -1
- package/dist/extensions/pi-subagents/agents/codex-exec.md +1 -1
- package/dist/extensions/pi-subagents/agents/commentator.md +1 -1
- package/dist/extensions/pi-subagents/agents/cursor-agent-writer.md +1 -1
- package/dist/extensions/pi-subagents/agents/cursor-agent.md +1 -1
- package/dist/extensions/pi-subagents/agents/delegate.md +1 -1
- package/dist/extensions/pi-subagents/agents/explorer.md +1 -1
- package/dist/extensions/pi-subagents/agents/oracle.md +1 -1
- package/dist/extensions/pi-subagents/agents/recapper.md +1 -1
- package/dist/extensions/pi-subagents/agents/researcher.md +1 -1
- package/dist/extensions/pi-subagents/agents/reviewer.md +1 -1
- package/dist/extensions/pi-subagents/agents/scout.md +1 -1
- package/dist/extensions/pi-subagents/agents/worker.md +1 -1
- package/dist/extensions/pi-subagents/async-retention-discovery-worker.mjs +1 -1
- package/dist/extensions/pi-subagents/docs/agents.md +20 -20
- package/dist/extensions/pi-subagents/docs/configuration.md +10 -6
- package/dist/extensions/pi-subagents/docs/extension-api.md +15 -8
- package/dist/extensions/pi-subagents/docs/missions.md +1 -1
- package/dist/extensions/pi-subagents/docs/models.md +2 -2
- package/dist/extensions/pi-subagents/docs/observability.md +2 -2
- package/dist/extensions/pi-subagents/docs/tool-reference.md +13 -4
- package/dist/extensions/pi-subagents/docs/watchdog.md +1 -1
- package/dist/extensions/pi-subagents/docs/workflows.md +15 -14
- package/dist/extensions/pi-subagents/index.ts +1 -1
- package/dist/extensions/pi-subagents/inspector-runner.mjs +1 -1
- package/dist/extensions/pi-subagents/install.mjs +3 -2
- package/dist/extensions/pi-subagents/package-lock.json +3 -3
- package/dist/extensions/pi-subagents/package.json +2 -2
- package/dist/extensions/pi-subagents/prompts/council.md +1 -1
- package/dist/extensions/pi-subagents/prompts/gather-context-and-clarify.md +1 -1
- package/dist/extensions/pi-subagents/prompts/parallel-cleanup.md +1 -1
- package/dist/extensions/pi-subagents/prompts/parallel-research.md +1 -1
- package/dist/extensions/pi-subagents/prompts/parallel-review.md +1 -1
- package/dist/extensions/pi-subagents/prompts/review-loop.md +1 -1
- package/dist/extensions/pi-subagents/skills/council-mode/SKILL.md +1 -1
- package/dist/extensions/pi-subagents/skills/council-mode/references/pass-contracts.md +1 -1
- package/dist/extensions/pi-subagents/skills/pi-subagents/SKILL.md +7 -5
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/constraints-and-recipes.md +2 -2
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/execution-controls.md +43 -12
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/management-authoring-rpc.md +1 -1
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/multi-lane-orchestration.md +2 -2
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/prompting-and-roles.md +5 -5
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/review-and-validation.md +2 -2
- package/dist/extensions/pi-subagents/src/agents/agent-management.ts +103 -64
- package/dist/extensions/pi-subagents/src/agents/agent-memory.ts +1 -1
- package/dist/extensions/pi-subagents/src/agents/agent-refinements.ts +1 -1
- package/dist/extensions/pi-subagents/src/agents/agent-scope.ts +1 -1
- package/dist/extensions/pi-subagents/src/agents/agent-selection.ts +1 -1
- package/dist/extensions/pi-subagents/src/agents/agent-serializer.ts +1 -1
- package/dist/extensions/pi-subagents/src/agents/agents.ts +527 -221
- package/dist/extensions/pi-subagents/src/agents/builtin-names.ts +1 -1
- package/dist/extensions/pi-subagents/src/agents/chain-serializer.ts +1 -1
- package/dist/extensions/pi-subagents/src/agents/frontmatter.ts +1 -1
- package/dist/extensions/pi-subagents/src/agents/identity.ts +1 -1
- package/dist/extensions/pi-subagents/src/agents/proactive-skills.ts +1 -1
- package/dist/extensions/pi-subagents/src/agents/runtime-agent-events.ts +1 -1
- package/dist/extensions/pi-subagents/src/agents/runtime-agent-registry.ts +1 -1
- package/dist/extensions/pi-subagents/src/agents/skills.ts +1 -1
- package/dist/extensions/pi-subagents/src/api/agents.ts +1 -1
- package/dist/extensions/pi-subagents/src/api/background-work.ts +8 -3
- package/dist/extensions/pi-subagents/src/api/capability-ceiling.ts +1 -1
- package/dist/extensions/pi-subagents/src/api/control-channel.ts +1 -1
- package/dist/extensions/pi-subagents/src/api/delegation.ts +1 -1
- package/dist/extensions/pi-subagents/src/api/external-job-provider.ts +1 -1
- package/dist/extensions/pi-subagents/src/api/external-runs.ts +68 -5
- package/dist/extensions/pi-subagents/src/api/intercom-bridge.ts +1 -1
- package/dist/extensions/pi-subagents/src/api/pi-args.ts +1 -1
- package/dist/extensions/pi-subagents/src/api/preflight.ts +14 -9
- package/dist/extensions/pi-subagents/src/api/project-panes.ts +1 -1
- package/dist/extensions/pi-subagents/src/api/shared-types.ts +2 -1
- package/dist/extensions/pi-subagents/src/extension/config.ts +1 -1
- package/dist/extensions/pi-subagents/src/extension/control-notices.ts +1 -1
- package/dist/extensions/pi-subagents/src/extension/doctor.ts +1 -1
- package/dist/extensions/pi-subagents/src/extension/fanout-child.ts +1 -1
- package/dist/extensions/pi-subagents/src/extension/index.ts +8 -5
- package/dist/extensions/pi-subagents/src/extension/public-execution.ts +48 -5
- package/dist/extensions/pi-subagents/src/extension/rpc.ts +63 -5
- package/dist/extensions/pi-subagents/src/extension/schemas.ts +12 -8
- package/dist/extensions/pi-subagents/src/extension/steering-notices.ts +1 -1
- package/dist/extensions/pi-subagents/src/extension/subagent-guide.ts +1 -1
- package/dist/extensions/pi-subagents/src/extension/tool-description.ts +8 -4
- package/dist/extensions/pi-subagents/src/extension/tool-result.ts +1 -1
- package/dist/extensions/pi-subagents/src/inspectors/herdr/actions.ts +1 -1
- package/dist/extensions/pi-subagents/src/inspectors/herdr/client.ts +1 -1
- package/dist/extensions/pi-subagents/src/inspectors/herdr/focus.ts +1 -1
- package/dist/extensions/pi-subagents/src/inspectors/herdr/inspector-runner.ts +1 -1
- package/dist/extensions/pi-subagents/src/inspectors/herdr/project-panes.ts +1 -1
- package/dist/extensions/pi-subagents/src/inspectors/herdr/session-roots-codec.ts +1 -1
- package/dist/extensions/pi-subagents/src/inspectors/herdr/shell-command.ts +1 -1
- package/dist/extensions/pi-subagents/src/integrations/herdr-status.ts +1 -1
- package/dist/extensions/pi-subagents/src/intercom/intercom-bridge.ts +1 -1
- package/dist/extensions/pi-subagents/src/intercom/native-supervisor-channel.ts +1 -1
- package/dist/extensions/pi-subagents/src/intercom/result-intercom.ts +1 -1
- package/dist/extensions/pi-subagents/src/missions/actions.ts +1 -1
- package/dist/extensions/pi-subagents/src/missions/goal-driver.ts +1 -1
- package/dist/extensions/pi-subagents/src/missions/lifecycle.ts +1 -1
- package/dist/extensions/pi-subagents/src/missions/store.ts +1 -1
- package/dist/extensions/pi-subagents/src/missions/types.ts +1 -1
- package/dist/extensions/pi-subagents/src/missions/workflow-state.ts +1 -1
- package/dist/extensions/pi-subagents/src/policy/authority.ts +1 -1
- package/dist/extensions/pi-subagents/src/profiles/profiles.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/active-async-capacity.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/active-run-index.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/async-execution.ts +52 -36
- package/dist/extensions/pi-subagents/src/runs/background/async-job-tracker.ts +63 -4
- package/dist/extensions/pi-subagents/src/runs/background/async-resume.ts +4 -2
- package/dist/extensions/pi-subagents/src/runs/background/async-retention.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/async-status-snapshot.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/async-status.ts +69 -10
- package/dist/extensions/pi-subagents/src/runs/background/auto-drain.ts +2 -2
- package/dist/extensions/pi-subagents/src/runs/background/chain-append.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/chain-root-attachment.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/completion-batcher.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/completion-dedupe.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/completion-replay.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/control-channel.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/fleet-view.ts +2 -2
- package/dist/extensions/pi-subagents/src/runs/background/index-segment.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/inspect-rpc.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/notify.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/owned-process-tree.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/parallel-groups.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/process-terminal.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/result-delivery-ownership.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/result-files.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/result-watcher.ts +2 -2
- package/dist/extensions/pi-subagents/src/runs/background/resume-guidance.ts +2 -2
- package/dist/extensions/pi-subagents/src/runs/background/retained-children.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/run-id-query.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/run-id-resolver.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/run-status.ts +3 -3
- package/dist/extensions/pi-subagents/src/runs/background/scheduled-runs.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/stale-run-reconciler.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/steering.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/subagent-runner.ts +2 -3
- package/dist/extensions/pi-subagents/src/runs/background/subagent-wait.ts +21 -22
- package/dist/extensions/pi-subagents/src/runs/background/terminal-run-index.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/top-level-async.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/wait-completions.ts +2 -2
- package/dist/extensions/pi-subagents/src/runs/background/wait-config.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/wait-subscriptions.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/background/wait-tool.ts +25 -19
- package/dist/extensions/pi-subagents/src/runs/foreground/async-dismiss-action.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/foreground/async-steering-action.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/foreground/async-stop-action.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/foreground/execution.ts +63 -4
- package/dist/extensions/pi-subagents/src/runs/foreground/foreground-control.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/foreground/foreground-history.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/foreground/prompt-audit.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/foreground/subagent-executor.ts +179 -59
- package/dist/extensions/pi-subagents/src/runs/foreground/workflow-detach-reconcile.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/foreground/workflow-foreground-steering.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/abort-recovery.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/acceptance.ts +44 -19
- package/dist/extensions/pi-subagents/src/runs/shared/agent-contract.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/async-status-projection.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/background-process-options.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/capability-ceiling.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/chain-outputs.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/child-identity.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/child-launch-plan.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/child-protocol.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/claude-code-adapter.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/codex-exec-adapter.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/completion-evidence.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/completion-guard.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/context-mode.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/cursor-agent-adapter.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/dynamic-fanout.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/extension-bindings.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/external-cli-contract.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/external-cli-preflight.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/external-cli-runner.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/external-job-bridge.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/external-job-runner.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/fast-mode-extension.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/host-step-status.ts +2 -1
- package/dist/extensions/pi-subagents/src/runs/shared/lane-metadata.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/launch-cwd.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/llm-intent-arbiter.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/long-running-guard.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/mcp-config-sources.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/mcp-direct-tool-grant.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/model-exclusions.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/model-fallback.ts +62 -18
- package/dist/extensions/pi-subagents/src/runs/shared/model-scope.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/mutation-evidence.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/nested-events.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/nested-path.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/nested-render.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/orca-progress-tabs.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/parallel-handoff.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/parallel-utils.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/permissions.ts +2 -2
- package/dist/extensions/pi-subagents/src/runs/shared/pi-args.ts +3 -3
- package/dist/extensions/pi-subagents/src/runs/shared/pi-spawn.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/process-signal.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/run-fanout-budget.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/run-history.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/runtime-acknowledged-extensions.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/session-lease.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/single-output.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/spawn-budget.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/structured-output.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/subagent-control.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.ts +2 -2
- package/dist/extensions/pi-subagents/src/runs/shared/subagent-startup-retry.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/task-intent.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/tool-availability.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/tool-budget.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/tool-timeout.ts +2 -2
- package/dist/extensions/pi-subagents/src/runs/shared/usage-budget.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/workflow-graph.ts +4 -3
- package/dist/extensions/pi-subagents/src/runs/shared/worktree-cleanup-plan.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/worktree.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/accessible-dir.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/agent-stream-options.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/artifacts.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/atomic-json.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/capacity-resilient-json.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/child-session-name.ts +2 -2
- package/dist/extensions/pi-subagents/src/shared/child-transcript.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/completion-owner.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/display-text.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/extension-context.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/file-coalescer.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/file-system-retry.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/fork-context.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/formatters.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/jsonl-writer.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/launch-contract.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/model-info.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/node-executable.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/post-exit-stdio-guard.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/prompt-resources.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/pruned-fork.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/session-file-trust.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/session-identity.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/session-tokens.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/settings.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/shortcuts.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/status-format.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/thinking-ceiling.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/types.ts +41 -4
- package/dist/extensions/pi-subagents/src/shared/utf8.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/utils.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/watch-strategy.ts +1 -1
- package/dist/extensions/pi-subagents/src/shared/workflow-child-permit.ts +91 -0
- package/dist/extensions/pi-subagents/src/slash/delegation-adapters.ts +1 -1
- package/dist/extensions/pi-subagents/src/slash/delegation-json.ts +1 -1
- package/dist/extensions/pi-subagents/src/slash/delegation-request.ts +1 -1
- package/dist/extensions/pi-subagents/src/slash/prompt-template-bridge.ts +38 -2
- package/dist/extensions/pi-subagents/src/slash/prompt-workflows.ts +1 -1
- package/dist/extensions/pi-subagents/src/slash/selector.ts +1 -1
- package/dist/extensions/pi-subagents/src/slash/slash-bridge.ts +1 -1
- package/dist/extensions/pi-subagents/src/slash/slash-commands.ts +19 -27
- package/dist/extensions/pi-subagents/src/slash/slash-live-state.ts +1 -1
- package/dist/extensions/pi-subagents/src/slash/subagents-admin.ts +1 -1
- package/dist/extensions/pi-subagents/src/tui/fleet-status.ts +1 -1
- package/dist/extensions/pi-subagents/src/tui/fleet-transcript.ts +1 -1
- package/dist/extensions/pi-subagents/src/tui/fleet.ts +1 -1
- package/dist/extensions/pi-subagents/src/tui/render-helpers.ts +1 -1
- package/dist/extensions/pi-subagents/src/tui/render.ts +96 -53
- package/dist/extensions/pi-subagents/src/types/pi-runtime-compat.d.ts +1 -1
- package/dist/extensions/pi-subagents/src/watchdog/change-signature.ts +1 -1
- package/dist/extensions/pi-subagents/src/watchdog/child-status.ts +1 -1
- package/dist/extensions/pi-subagents/src/watchdog/emission-guard.ts +1 -1
- package/dist/extensions/pi-subagents/src/watchdog/lsp-diagnostics.ts +1 -1
- package/dist/extensions/pi-subagents/src/watchdog/model-selection.ts +1 -1
- package/dist/extensions/pi-subagents/src/watchdog/permission-arbiter.ts +1 -1
- package/dist/extensions/pi-subagents/src/watchdog/register-child.ts +1 -1
- package/dist/extensions/pi-subagents/src/watchdog/register-main.ts +1 -1
- package/dist/extensions/pi-subagents/src/watchdog/render.ts +1 -1
- package/dist/extensions/pi-subagents/src/watchdog/review.ts +1 -1
- package/dist/extensions/pi-subagents/src/watchdog/runtime.ts +1 -1
- package/dist/extensions/pi-subagents/src/watchdog/scope.ts +1 -1
- package/dist/extensions/pi-subagents/src/watchdog/settings.ts +1 -1
- package/dist/extensions/pi-subagents/src/watchdog/tool-actions.ts +1 -1
- package/dist/extensions/pi-subagents/src/watchdog/turn-delta.ts +1 -1
- package/dist/extensions/pi-subagents/src/watchdog/types.ts +1 -1
- package/dist/extensions/pi-subagents/src/watchdog/warning-format.ts +1 -1
- package/dist/extensions/pi-subagents/src/workflows/chat-progress.ts +1 -1
- package/dist/extensions/pi-subagents/src/workflows/host-command.ts +1 -1
- package/dist/extensions/pi-subagents/src/workflows/scripted-workflow.ts +154 -5
- package/dist/extensions/pi-subagents/src/workflows/workflow-child-summary.ts +2 -2
- package/dist/extensions/pi-subagents/src/workflows/workflow-preflight.ts +1 -1
- package/dist/extensions/pi-subagents/src/workflows/workflow-receipt.ts +42 -5
- package/dist/extensions/pi-subagents/src/workflows/workflow-resources.ts +150 -0
- package/dist/extensions/pi-subagents/src/workflows/workflow-settlement.ts +1 -1
- package/dist/extensions/pi-subagents/test/e2e/real-session-subagent.test.ts +1 -1
- 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 +1 -1
- package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/package.json +1 -1
- package/dist/extensions/pi-subagents/test/integration/acceptance-file-report.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/integration/async-execution.test.ts +198 -6
- package/dist/extensions/pi-subagents/test/integration/async-job-tracker.test.ts +250 -18
- package/dist/extensions/pi-subagents/test/integration/async-status.test.ts +323 -4
- package/dist/extensions/pi-subagents/test/integration/claude-code-smoke.test.ts +5 -5
- package/dist/extensions/pi-subagents/test/integration/claude-code-writer-smoke.test.ts +5 -5
- package/dist/extensions/pi-subagents/test/integration/codex-exec-smoke.test.ts +5 -5
- package/dist/extensions/pi-subagents/test/integration/codex-exec-writer-smoke.test.ts +5 -5
- package/dist/extensions/pi-subagents/test/integration/cursor-agent-smoke.test.ts +5 -5
- package/dist/extensions/pi-subagents/test/integration/cursor-agent-writer-smoke.test.ts +5 -5
- package/dist/extensions/pi-subagents/test/integration/detect-error.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/integration/doctor-executor.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/integration/error-handling.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/integration/external-cli-runner.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/integration/foreground-result-size.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/integration/fork-context-execution.test.ts +52 -1
- package/dist/extensions/pi-subagents/test/integration/intercom-result-delivery.test.ts +4 -3
- package/dist/extensions/pi-subagents/test/integration/orca-progress-tabs.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/integration/render-fork-badge.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/integration/render-widget.test.ts +75 -7
- package/dist/extensions/pi-subagents/test/integration/result-watcher.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/integration/session-tokens.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/integration/single-execution.test.ts +274 -12
- package/dist/extensions/pi-subagents/test/integration/slash-commands.test.ts +46 -1
- package/dist/extensions/pi-subagents/test/integration/slash-live-state.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/integration/template-resolution.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/integration/top-level-async.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/support/cursor-smoke-inputs.ts +5 -5
- package/dist/extensions/pi-subagents/test/support/helpers.ts +1 -1
- package/dist/extensions/pi-subagents/test/support/isolated-temp-root.mjs +1 -1
- package/dist/extensions/pi-subagents/test/support/mock-pi-script.mjs +1 -1
- package/dist/extensions/pi-subagents/test/support/mock-pi.ts +1 -1
- package/dist/extensions/pi-subagents/test/support/node-command.ts +1 -1
- package/dist/extensions/pi-subagents/test/support/real-session-child-cli.mjs +1 -1
- package/dist/extensions/pi-subagents/test/support/real-session-runner.ts +1 -1
- package/dist/extensions/pi-subagents/test/support/register-loader.mjs +1 -1
- package/dist/extensions/pi-subagents/test/support/session-lease-child.mjs +1 -1
- package/dist/extensions/pi-subagents/test/support/ts-loader.mjs +1 -1
- package/dist/extensions/pi-subagents/test/unit/abort-recovery.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/acceptance.test.ts +66 -1
- package/dist/extensions/pi-subagents/test/unit/accessible-dir.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/active-async-capacity.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/agent-contract.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/agent-disabled.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/agent-discovery-cache.test.ts +232 -0
- package/dist/extensions/pi-subagents/test/unit/agent-eject-disable.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/agent-frontmatter.test.ts +3 -3
- package/dist/extensions/pi-subagents/test/unit/agent-management.test.ts +66 -6
- package/dist/extensions/pi-subagents/test/unit/agent-memory.test.ts +2 -2
- package/dist/extensions/pi-subagents/test/unit/agent-overrides.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/agent-refinements.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/agent-scope.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/agent-selection.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/agent-stream-options.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/anti-slop-oxlint.test.ts +16 -4
- package/dist/extensions/pi-subagents/test/unit/artifacts.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/async-execution.test.ts +9 -5
- package/dist/extensions/pi-subagents/test/unit/async-interrupt-action.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/async-permission-session.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/async-recovery-descriptor.test.ts +57 -1
- package/dist/extensions/pi-subagents/test/unit/async-resume.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/async-retention.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/async-status-projection.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/async-status-snapshot.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/atomic-json.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/authority-policy.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/auto-drain.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/background-process-options.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/background-work.test.ts +57 -2
- package/dist/extensions/pi-subagents/test/unit/capability-ceiling-agent-allowlist.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/capability-ceiling-pi-args.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/capability-ceiling.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/capacity-resilient-json.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/chain-append.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/chain-root-attachment.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/chain-serializer.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/child-launch-plan.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/child-protocol.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/child-session-name.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/child-transcript.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/claude-code-adapter.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/close-grace-timer.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/codex-exec-adapter.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/compaction-resume.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/completion-batcher.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/completion-dedupe.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/completion-evidence.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/completion-guard.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/completion-replay.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/config-dir-runtime.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/control-channel.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/control-notices.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/cursor-agent-adapter.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/cursor-smoke-inputs.test.ts +5 -5
- package/dist/extensions/pi-subagents/test/unit/default-extensions.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/delegation-api.test.ts +117 -1
- package/dist/extensions/pi-subagents/test/unit/doctor.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/dynamic-fanout.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/ensure-accessible-dir.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/extension-bindings.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/extension-context.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/external-cli-runner.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/external-job-runner.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/external-runs.test.ts +103 -1
- package/dist/extensions/pi-subagents/test/unit/extra-agent-dirs.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/fast-mode-extension.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/file-coalescer.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/file-system-retry.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/fleet-status.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/fleet-transcript.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/fleet.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/foreground-control.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/foreground-tool-call-compaction.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/fork-cache-key.test.ts +2 -2
- package/dist/extensions/pi-subagents/test/unit/fork-context.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/formatters.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/get-final-output.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/herdr-inspector-bootstrap.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/herdr-inspector.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/herdr-session-roots-codec.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/herdr-shell-command.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/herdr-status-bridge.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/host-command.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/host-peer-runtime-imports.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/host-step-status.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/index-child-registration.test.ts +8 -4
- package/dist/extensions/pi-subagents/test/unit/index-segment.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/inspect-rpc.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/intercom-bridge.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/jsonl-writer.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/llm-intent-arbiter.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/mcp-direct-tool-grant.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/mission-goal-driver.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/mission-lifecycle.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/mission-store.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/mock-pi.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/model-exclusions.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/model-fallback.test.ts +102 -6
- package/dist/extensions/pi-subagents/test/unit/model-info.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/model-scope-settings.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/model-scope.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/mutation-evidence.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/native-supervisor-channel.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/nested-control.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/nested-events.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/node-executable.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/notify.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/orca-progress-tabs.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/owned-process-tree.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/package-manifest.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/parallel-handoff.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/parallel-utils.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/path-handling.test.ts +0 -1
- package/dist/extensions/pi-subagents/test/unit/path-resolution.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/permissions.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/pi-args-permission-system.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/pi-args.test.ts +5 -5
- package/dist/extensions/pi-subagents/test/unit/pi-coding-agent-dir.test.ts +2 -2
- package/dist/extensions/pi-subagents/test/unit/pi-spawn.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/preflight.test.ts +106 -1
- package/dist/extensions/pi-subagents/test/unit/proactive-skills.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/process-terminal.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/profiles.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/project-panes-public-api.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/prompt-template-bridge.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/prompt-workflows.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/pruned-fork.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/public-execution.test.ts +40 -3
- package/dist/extensions/pi-subagents/test/unit/reads-resolution.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/recursion-guard.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/render-helpers.test.ts +60 -10
- package/dist/extensions/pi-subagents/test/unit/result-delivery-ownership.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/result-files.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/result-intercom.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/retained-children.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/rpc.test.ts +98 -1
- package/dist/extensions/pi-subagents/test/unit/run-fanout-budget.test.ts +1 -1
- 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 +3 -3
- package/dist/extensions/pi-subagents/test/unit/runtime-acknowledged-extensions.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/runtime-agent-registration.test.ts +44 -2
- package/dist/extensions/pi-subagents/test/unit/scheduled-runs.test.ts +3 -3
- package/dist/extensions/pi-subagents/test/unit/scheduled-store-root.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/schemas.test.ts +48 -5
- package/dist/extensions/pi-subagents/test/unit/scripted-workflow.test.ts +427 -3
- package/dist/extensions/pi-subagents/test/unit/selector.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/session-lease.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/single-output.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/skills-fallback.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/slash-bridge.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/spawn-budget.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/stale-run-reconciler.test.ts +41 -1
- package/dist/extensions/pi-subagents/test/unit/status-format.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/steering-action.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/steering-notices.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/steering.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/streamed-progress-bounds.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/subagent-action-recovery.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/subagent-control.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/subagent-guide.test.ts +9 -1
- package/dist/extensions/pi-subagents/test/unit/subagent-prompt-runtime.test.ts +11 -11
- package/dist/extensions/pi-subagents/test/unit/subagent-startup-retry.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/subagent-wait.test.ts +5 -5
- package/dist/extensions/pi-subagents/test/unit/task-intent.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/temp-paths.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/thinking-ceiling.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/timeout-defaults.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/tool-budget.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/tool-description.test.ts +8 -6
- package/dist/extensions/pi-subagents/test/unit/tool-timeout.test.ts +3 -3
- package/dist/extensions/pi-subagents/test/unit/total-cost.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/ts-loader.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/types-fork-preamble.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/wait-completions.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/wait-subscriptions.test.ts +7 -5
- package/dist/extensions/pi-subagents/test/unit/watch-strategy.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/watchdog-change-signature.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/watchdog-child-status.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/watchdog-emission-guard.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/watchdog-lsp-diagnostics.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/watchdog-model-selection.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/watchdog-permission-arbiter.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/watchdog-render.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/watchdog-review.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-scope.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/watchdog-settings.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/watchdog-tool-actions.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/watchdog-turn-delta.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/widget-nested-render.test.ts +8 -6
- package/dist/extensions/pi-subagents/test/unit/windows-hide-spawn.test.ts +13 -1
- package/dist/extensions/pi-subagents/test/unit/workflow-chat-progress.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/workflow-detach-reconcile.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/workflow-graph.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/workflow-launch-params.test.ts +12 -1
- package/dist/extensions/pi-subagents/test/unit/workflow-preflight.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/workflow-receipt.test.ts +31 -1
- package/dist/extensions/pi-subagents/test/unit/workflow-resources.test.ts +98 -0
- package/dist/extensions/pi-subagents/test/unit/workflow-resume-hint.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/worktree-cleanup-plan.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/worktree.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/writer-budget-guidance.test.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/effect/index.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/effect/rules/no-service-constructor-imports.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/index.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-chained-type-assertions.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-conditional-empty-object-spread.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-known-value-widening.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-module-mocking.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-object-parameters.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-reflect-apply.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-reflect-get.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-runtime-typeof.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-shape-in-symbol-names.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-unknown-parameters.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-unknown-returns.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-unknown-type-aliases.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-unsafe-dictionary-type.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/no-widen-then-assert.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/rules/require-safety-comment-for-type-assertion.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/shared/dictionary-types.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/shared/lexical-type-parameters.ts +1 -1
- package/dist/extensions/pi-subagents/tools/oxlint/anti-slop/shared/reflect-method.ts +1 -1
- package/dist/extensions/pi-subagents/tsconfig.json +1 -1
- package/dist/extensions/pi-web-agent/src/backends/settings-reader.ts +25 -25
- package/dist/extensions/pi-web-agent/src/cache/ttl-cache.ts +28 -28
- package/dist/extensions/pi-web-agent/src/changelog-notice.ts +136 -136
- package/dist/extensions/pi-web-agent/src/fetch/browser-resolution.ts +199 -199
- package/dist/extensions/pi-web-agent/src/fetch/firecrawl-fetch.ts +100 -100
- package/dist/extensions/pi-web-agent/src/fetch/headless-fetch.ts +117 -117
- package/dist/extensions/pi-web-agent/src/fetch/http-fetch.ts +67 -67
- package/dist/extensions/pi-web-agent/src/orchestration/answer-synthesizer.ts +60 -60
- package/dist/extensions/pi-web-agent/src/orchestration/index.ts +28 -28
- package/dist/extensions/pi-web-agent/src/orchestration/query-planner.ts +47 -47
- package/dist/extensions/pi-web-agent/src/orchestration/stop-decider.ts +81 -81
- package/dist/extensions/pi-web-agent/src/presentation/config-store.ts +210 -210
- package/dist/extensions/pi-web-agent/src/presentation/config.ts +75 -75
- package/dist/extensions/pi-web-agent/src/presentation/fetch-presentation.ts +54 -54
- package/dist/extensions/pi-web-agent/src/presentation/select-view.ts +20 -20
- package/dist/extensions/pi-web-agent/src/presentation/types.ts +63 -63
- package/dist/extensions/pi-web-agent/src/search/brave.ts +114 -114
- package/dist/extensions/pi-web-agent/src/search/searxng.ts +96 -96
- package/dist/extensions/pi-web-agent/src/tools/web-explore.ts +71 -71
- package/dist/extensions/pi-web-agent/src/tools/web-fetch-headless.ts +31 -31
- package/dist/extensions/pi-web-agent/src/tools/web-fetch.ts +31 -31
- package/dist/extensions/ponytail/package.json +8 -8
- package/dist/extensions/question/constants.ts +30 -30
- package/dist/extensions/question/helpers.ts +58 -58
- package/dist/extensions/question/navigation.ts +14 -14
- package/dist/extensions/question/package.json +19 -19
- package/dist/extensions/question/selection-mode.ts +46 -46
- package/dist/extensions/question/shortcuts.ts +44 -44
- package/dist/extensions/question/types.ts +132 -132
- package/dist/extensions/test-resolve-hook-impl.mjs +6 -6
- package/dist/extensions/test-resolve-hook.mjs +6 -6
- package/dist/extensions/web-agent-onboarding.ts +222 -222
- package/dist/package-manager-cli.js +71 -71
- package/dist/rpc-entry.js +0 -0
- package/dist/skills/improve-codebase/REFERENCE.md +78 -78
- package/docs/compaction.md +396 -396
- package/docs/containerization.md +111 -111
- package/docs/development.md +71 -71
- package/docs/docs.json +164 -164
- package/docs/environment-variables.md +86 -86
- package/docs/images/selesai-wordmark.png +0 -0
- package/docs/images/tokenin-preview.png +0 -0
- package/docs/index.md +83 -83
- package/docs/json.md +82 -82
- package/docs/models.md +502 -502
- package/docs/packages.md +227 -227
- package/docs/plans/subagent-delegation/phase-0-correctness.md +264 -264
- package/docs/plans/subagent-delegation/phase-1-behavioral-contract.md +485 -485
- package/docs/plans/subagent-delegation/phase-2-context-controls.md +281 -281
- package/docs/plans/subagent-delegation/phase-3-advisory-routing.md +361 -361
- package/docs/plans/subagent-delegation/phase-4-optional-enforcement.md +380 -380
- package/docs/prompt-templates.md +95 -95
- package/docs/providers.md +293 -293
- package/docs/security.md +59 -59
- package/docs/session-format.md +414 -414
- package/docs/sessions.md +145 -145
- package/docs/shared-host-extensions.md +109 -109
- package/docs/shell-aliases.md +13 -13
- package/docs/skills.md +231 -231
- package/docs/terminal-setup.md +142 -142
- package/docs/termux.md +127 -127
- package/docs/themes.md +295 -295
- package/docs/tmux.md +63 -63
- package/docs/tui.md +927 -927
- package/docs/windows.md +17 -17
- package/examples/README.md +25 -25
- package/examples/extensions/README.md +211 -211
- package/examples/extensions/auto-commit-on-exit.ts +49 -49
- package/examples/extensions/bash-spawn-hook.ts +30 -30
- package/examples/extensions/bookmark.ts +50 -50
- package/examples/extensions/border-status-editor.ts +150 -150
- package/examples/extensions/built-in-tool-renderer.ts +249 -249
- package/examples/extensions/claude-rules.ts +86 -86
- package/examples/extensions/commands.ts +72 -72
- package/examples/extensions/confirm-destructive.ts +59 -59
- package/examples/extensions/custom-compaction.ts +130 -130
- package/examples/extensions/custom-footer.ts +64 -64
- package/examples/extensions/custom-header.ts +73 -73
- package/examples/extensions/custom-provider-anthropic/index.ts +610 -610
- package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -24
- package/examples/extensions/custom-provider-anthropic/package.json +19 -19
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +404 -404
- package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -16
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -82
- package/examples/extensions/dirty-repo-guard.ts +56 -56
- package/examples/extensions/doom-overlay/README.md +46 -46
- package/examples/extensions/doom-overlay/doom/build/doom.js +21 -21
- package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
- package/examples/extensions/doom-overlay/doom/build.sh +152 -152
- package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -72
- package/examples/extensions/doom-overlay/doom-component.ts +132 -132
- package/examples/extensions/doom-overlay/doom-engine.ts +173 -173
- package/examples/extensions/doom-overlay/doom-keys.ts +104 -104
- package/examples/extensions/doom-overlay/index.ts +74 -74
- package/examples/extensions/doom-overlay/wad-finder.ts +51 -51
- package/examples/extensions/dynamic-resources/SKILL.md +8 -8
- package/examples/extensions/dynamic-resources/dynamic.json +79 -79
- package/examples/extensions/dynamic-resources/dynamic.md +5 -5
- package/examples/extensions/dynamic-resources/index.ts +15 -15
- package/examples/extensions/dynamic-tools.ts +74 -74
- package/examples/extensions/event-bus.ts +43 -43
- package/examples/extensions/file-trigger.ts +41 -41
- package/examples/extensions/git-checkpoint.ts +53 -53
- package/examples/extensions/git-merge-and-resolve.ts +115 -115
- package/examples/extensions/github-issue-autocomplete.ts +185 -185
- package/examples/extensions/gondolin/index.ts +531 -531
- package/examples/extensions/gondolin/package-lock.json +185 -185
- package/examples/extensions/gondolin/package.json +19 -19
- package/examples/extensions/handoff.ts +199 -199
- package/examples/extensions/hello.ts +26 -26
- package/examples/extensions/hidden-thinking-label.ts +53 -53
- package/examples/extensions/inline-bash.ts +94 -94
- package/examples/extensions/input-transform-streaming.ts +39 -39
- package/examples/extensions/input-transform.ts +43 -43
- package/examples/extensions/interactive-shell.ts +196 -196
- package/examples/extensions/mac-system-theme.ts +47 -47
- package/examples/extensions/message-renderer.ts +59 -59
- package/examples/extensions/minimal-mode.ts +426 -426
- package/examples/extensions/modal-editor.ts +85 -85
- package/examples/extensions/model-status.ts +31 -31
- package/examples/extensions/notify.ts +55 -55
- package/examples/extensions/overlay-qa-tests.ts +1450 -1450
- package/examples/extensions/overlay-test.ts +153 -153
- package/examples/extensions/permission-gate.ts +34 -34
- package/examples/extensions/pirate.ts +47 -47
- package/examples/extensions/plan-mode/README.md +66 -66
- package/examples/extensions/plan-mode/index.ts +390 -390
- package/examples/extensions/plan-mode/utils.ts +168 -168
- package/examples/extensions/preset.ts +436 -436
- package/examples/extensions/project-trust.ts +64 -64
- package/examples/extensions/prompt-customizer.ts +97 -97
- package/examples/extensions/protected-paths.ts +30 -30
- package/examples/extensions/provider-payload.ts +18 -18
- package/examples/extensions/qna.ts +122 -122
- package/examples/extensions/question.ts +285 -285
- package/examples/extensions/questionnaire.ts +448 -448
- package/examples/extensions/rainbow-editor.ts +88 -88
- package/examples/extensions/reload-runtime.ts +37 -37
- package/examples/extensions/rpc-demo.ts +118 -118
- package/examples/extensions/sandbox/index.ts +321 -321
- package/examples/extensions/sandbox/package-lock.json +92 -92
- package/examples/extensions/sandbox/package.json +19 -19
- package/examples/extensions/send-user-message.ts +97 -97
- package/examples/extensions/session-name.ts +27 -27
- package/examples/extensions/shutdown-command.ts +63 -63
- package/examples/extensions/snake.ts +343 -343
- package/examples/extensions/space-invaders.ts +560 -560
- package/examples/extensions/ssh.ts +220 -220
- package/examples/extensions/status-line.ts +32 -32
- package/examples/extensions/structured-output.ts +65 -65
- package/examples/extensions/subagent/README.md +175 -175
- package/examples/extensions/subagent/agents/planner.md +37 -37
- package/examples/extensions/subagent/agents/reviewer.md +35 -35
- package/examples/extensions/subagent/agents/scout.md +50 -50
- package/examples/extensions/subagent/agents/worker.md +24 -24
- package/examples/extensions/subagent/agents.ts +126 -126
- package/examples/extensions/subagent/index.ts +1015 -1015
- package/examples/extensions/subagent/prompts/implement-and-review.md +10 -10
- package/examples/extensions/subagent/prompts/implement.md +10 -10
- package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -9
- package/examples/extensions/summarize.ts +209 -209
- package/examples/extensions/system-prompt-header.ts +17 -17
- package/examples/extensions/tic-tac-toe.ts +1008 -1008
- package/examples/extensions/timed-confirm.ts +70 -70
- package/examples/extensions/titlebar-spinner.ts +58 -58
- package/examples/extensions/todo.ts +297 -297
- package/examples/extensions/tool-override.ts +144 -144
- package/examples/extensions/tools.ts +146 -146
- package/examples/extensions/trigger-compact.ts +50 -50
- package/examples/extensions/truncated-tool.ts +195 -195
- package/examples/extensions/widget-placement.ts +9 -9
- package/examples/extensions/with-deps/index.ts +32 -32
- package/examples/extensions/with-deps/package-lock.json +31 -31
- package/examples/extensions/with-deps/package.json +22 -22
- package/examples/extensions/working-indicator.ts +123 -123
- package/examples/extensions/working-message-test.ts +25 -25
- package/examples/rpc-extension-ui.ts +632 -632
- package/examples/sdk/01-minimal.ts +26 -26
- package/examples/sdk/02-custom-model.ts +53 -53
- package/examples/sdk/03-custom-prompt.ts +75 -75
- package/examples/sdk/04-skills.ts +55 -55
- package/examples/sdk/05-tools.ts +48 -48
- package/examples/sdk/06-extensions.ts +99 -99
- package/examples/sdk/07-context-files.ts +47 -47
- package/examples/sdk/08-prompt-templates.ts +51 -51
- package/examples/sdk/09-api-keys-and-oauth.ts +52 -52
- package/examples/sdk/10-settings.ts +53 -53
- package/examples/sdk/11-sessions.ts +52 -52
- package/examples/sdk/12-full-control.ts +79 -79
- package/examples/sdk/13-session-runtime.ts +67 -67
- package/examples/sdk/README.md +144 -144
- package/package.json +3 -2
- package/dist/extensions/pi-subagents/banner.png +0 -0
|
@@ -1103,6 +1103,38 @@ describe("subagent async widget rendering", () => {
|
|
|
1103
1103
|
resetWidgetLayout();
|
|
1104
1104
|
});
|
|
1105
1105
|
|
|
1106
|
+
it("updates component expansion state without reinstalling the widget", () => {
|
|
1107
|
+
resetWidgetLayout();
|
|
1108
|
+
withStdoutSize(20, 120, () => {
|
|
1109
|
+
const ui = createUiContext();
|
|
1110
|
+
let expanded = false;
|
|
1111
|
+
ui.ctx.ui.getToolsExpanded = () => expanded;
|
|
1112
|
+
renderWidget(ui.ctx as never, [{
|
|
1113
|
+
asyncId: "run-toggle-expanded",
|
|
1114
|
+
asyncDir: "/tmp/run-toggle-expanded",
|
|
1115
|
+
status: "running",
|
|
1116
|
+
mode: "parallel",
|
|
1117
|
+
agents: ["reviewer"],
|
|
1118
|
+
activeParallelGroup: true,
|
|
1119
|
+
runningSteps: 1,
|
|
1120
|
+
completedSteps: 0,
|
|
1121
|
+
stepsTotal: 1,
|
|
1122
|
+
steps: [{ index: 0, agent: "reviewer", status: "running", currentTool: "read" }],
|
|
1123
|
+
}]);
|
|
1124
|
+
const component = (ui.widgets.at(-1) as (_tui: unknown, widgetTheme: typeof theme) => { render(width: number): string[] })(undefined, theme);
|
|
1125
|
+
|
|
1126
|
+
const collapsed = component.render(180).join("\n");
|
|
1127
|
+
expanded = true;
|
|
1128
|
+
const expandedText = component.render(180).join("\n");
|
|
1129
|
+
|
|
1130
|
+
assert.match(collapsed, /subagents \(1\/1 running\)/);
|
|
1131
|
+
assert.doesNotMatch(collapsed, /parallel group · 1 agent running/);
|
|
1132
|
+
assert.match(expandedText, /parallel group · 1 agent running · 0\/1 done/);
|
|
1133
|
+
assert.match(expandedText, /reviewer · running/);
|
|
1134
|
+
});
|
|
1135
|
+
resetWidgetLayout();
|
|
1136
|
+
});
|
|
1137
|
+
|
|
1106
1138
|
it("shows per-agent detail for active async parallel widget rows", () => {
|
|
1107
1139
|
const now = Date.now();
|
|
1108
1140
|
const lines = buildWidgetLines([
|
|
@@ -1894,7 +1926,7 @@ describe("subagent async widget rendering", () => {
|
|
|
1894
1926
|
);
|
|
1895
1927
|
});
|
|
1896
1928
|
|
|
1897
|
-
it("
|
|
1929
|
+
it("keeps running widget glyphs stable across unrelated renders of the same frame", () => {
|
|
1898
1930
|
const originalNow = Date.now;
|
|
1899
1931
|
const job = {
|
|
1900
1932
|
asyncId: "run-stable",
|
|
@@ -1909,14 +1941,16 @@ describe("subagent async widget rendering", () => {
|
|
|
1909
1941
|
};
|
|
1910
1942
|
try {
|
|
1911
1943
|
Date.now = () => 1_000;
|
|
1912
|
-
const first = buildWidgetLines([job], theme, 120);
|
|
1944
|
+
const first = buildWidgetLines([job], theme, 120, false, 0);
|
|
1913
1945
|
Date.now = () => 1_125;
|
|
1914
|
-
const second = buildWidgetLines([job], theme, 120);
|
|
1946
|
+
const second = buildWidgetLines([job], theme, 120, false, 0);
|
|
1947
|
+
const third = buildWidgetLines([job], theme, 120, false, 1);
|
|
1915
1948
|
const withoutRunningGlyphs = (lines: string[]) => lines.map((line) => line.replace(/[⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏]/gu, ""));
|
|
1916
1949
|
|
|
1917
|
-
assert.
|
|
1918
|
-
assert.
|
|
1919
|
-
assert.
|
|
1950
|
+
assert.deepEqual(second, first, "unrelated renders of the same frame must not retick the glyph");
|
|
1951
|
+
assert.notDeepEqual(third, first);
|
|
1952
|
+
assert.deepEqual(withoutRunningGlyphs(third), withoutRunningGlyphs(first), "only the running glyph should change");
|
|
1953
|
+
assert.notEqual(firstGrapheme(first[1] ?? ""), firstGrapheme(third[1] ?? ""));
|
|
1920
1954
|
} finally {
|
|
1921
1955
|
Date.now = originalNow;
|
|
1922
1956
|
}
|
|
@@ -1974,6 +2008,40 @@ describe("subagent async widget rendering", () => {
|
|
|
1974
2008
|
}
|
|
1975
2009
|
});
|
|
1976
2010
|
|
|
2011
|
+
it("memoizes component render output by width and animation frame", () => {
|
|
2012
|
+
const originalNow = Date.now;
|
|
2013
|
+
let themeCalls = 0;
|
|
2014
|
+
const countingTheme = {
|
|
2015
|
+
fg: (_name: string, text: string) => {
|
|
2016
|
+
themeCalls += 1;
|
|
2017
|
+
return text;
|
|
2018
|
+
},
|
|
2019
|
+
bold: (text: string) => text,
|
|
2020
|
+
};
|
|
2021
|
+
try {
|
|
2022
|
+
Date.now = () => 1_000;
|
|
2023
|
+
const ui = createUiContext();
|
|
2024
|
+
renderWidget(ui.ctx as never, [{ asyncId: "run-stable", asyncDir: "/tmp/run", status: "running", agents: ["scout"], updatedAt: 1_000 }]);
|
|
2025
|
+
const component = (ui.widgets.at(-1) as (_tui: unknown, widgetTheme: typeof theme) => { render(width: number): string[] })(undefined, countingTheme);
|
|
2026
|
+
const first = component.render(180);
|
|
2027
|
+
const callsAfterFirst = themeCalls;
|
|
2028
|
+
|
|
2029
|
+
assert.equal(component.render(180), first);
|
|
2030
|
+
assert.equal(themeCalls, callsAfterFirst, "same width and frame should reuse the rendered lines");
|
|
2031
|
+
|
|
2032
|
+
component.render(120);
|
|
2033
|
+
assert.ok(themeCalls > callsAfterFirst, "a width change should rebuild lines");
|
|
2034
|
+
const callsAfterWidthChange = themeCalls;
|
|
2035
|
+
|
|
2036
|
+
Date.now = () => 2_000;
|
|
2037
|
+
component.render(120);
|
|
2038
|
+
assert.ok(themeCalls > callsAfterWidthChange, "an animation-frame change should rebuild lines");
|
|
2039
|
+
} finally {
|
|
2040
|
+
Date.now = originalNow;
|
|
2041
|
+
renderWidget(createUiContext().ctx as never, []);
|
|
2042
|
+
}
|
|
2043
|
+
});
|
|
2044
|
+
|
|
1977
2045
|
it("does not animate queued-only widgets", () => {
|
|
1978
2046
|
const originalNow = Date.now;
|
|
1979
2047
|
try {
|
|
@@ -2020,4 +2088,4 @@ describe("subagent async widget rendering", () => {
|
|
|
2020
2088
|
assert.equal(ui.widgets.length, afterClearCount, "cleared widget should stay quiet");
|
|
2021
2089
|
assert.equal(ui.widgets.at(-1), undefined);
|
|
2022
2090
|
});
|
|
2023
|
-
});
|
|
2091
|
+
});
|
|
@@ -65,7 +65,7 @@ import { discardPreservedWorktrees } from "../../src/runs/shared/parallel-handof
|
|
|
65
65
|
import { createWorktrees } from "../../src/runs/shared/worktree.ts";
|
|
66
66
|
import { resolveAsyncResumeTarget } from "../../src/runs/background/async-resume.ts";
|
|
67
67
|
import { createResultWatcher } from "../../src/runs/background/result-watcher.ts";
|
|
68
|
-
import { clearExclusions } from "../../src/runs/shared/model-exclusions.ts";
|
|
68
|
+
import { clearExclusions, recordModelFailure } from "../../src/runs/shared/model-exclusions.ts";
|
|
69
69
|
import { createWorkflowChildPermit, workflowChildPermitConsumed } from "../../src/shared/workflow-child-permit.ts";
|
|
70
70
|
import { toSubagentDelegationExecutionParams } from "../../src/slash/delegation-adapters.ts";
|
|
71
71
|
|
|
@@ -412,7 +412,7 @@ describe("single sync execution", { skip: !available ? "pi packages not availabl
|
|
|
412
412
|
});
|
|
413
413
|
|
|
414
414
|
it("derives a child session name and passes it to the child env", async () => {
|
|
415
|
-
mockPi.onCall({ echoEnv: ["
|
|
415
|
+
mockPi.onCall({ echoEnv: ["SELESAI_SUBAGENT_SESSION_NAME"] });
|
|
416
416
|
const agents = makeAgentConfigs(["echo"]);
|
|
417
417
|
|
|
418
418
|
const result = await runSync(tempDir, agents, "echo", "Say hello to the world", {});
|
|
@@ -421,7 +421,7 @@ describe("single sync execution", { skip: !available ? "pi packages not availabl
|
|
|
421
421
|
assert.equal(result.sessionName, "echo: Say hello to the world");
|
|
422
422
|
assert.equal(result.progressSummary?.sessionName, "echo: Say hello to the world");
|
|
423
423
|
const echoed = JSON.parse(getFinalOutput(result.messages));
|
|
424
|
-
assert.equal(echoed.
|
|
424
|
+
assert.equal(echoed.SELESAI_SUBAGENT_SESSION_NAME, "echo: Say hello to the world");
|
|
425
425
|
});
|
|
426
426
|
|
|
427
427
|
it("rejects invalid foreground cwd before spawning Pi", { skip: !createSubagentExecutor ? "executor not importable" : undefined }, async () => {
|
|
@@ -754,9 +754,9 @@ describe("single sync execution", { skip: !available ? "pi packages not availabl
|
|
|
754
754
|
const text = result.content.map((part) => part.type === "text" ? part.text : "").join("\n");
|
|
755
755
|
assert.equal(result.details.results[0]?.detachedReason, "user request");
|
|
756
756
|
assert.match(text, /Detached at user request/);
|
|
757
|
-
assert.match(text, /
|
|
758
|
-
assert.doesNotMatch(text, /intercom coordination|supervisor request|Wait with
|
|
759
|
-
assert.doesNotMatch(text, /
|
|
757
|
+
assert.match(text, /bg_wait\(\{ id: "[^"]+", nonBlocking: true \}\)/);
|
|
758
|
+
assert.doesNotMatch(text, /intercom coordination|supervisor request|Wait with bg_wait/);
|
|
759
|
+
assert.doesNotMatch(text, /bg_wait\(\{ id: "[^"]+" \}\)/);
|
|
760
760
|
|
|
761
761
|
let terminalChild = state.foregroundRuns?.get(control.runId)?.children[0];
|
|
762
762
|
for (let attempt = 0; attempt < 250 && terminalChild?.status !== "completed"; attempt++) {
|
|
@@ -882,7 +882,7 @@ describe("single sync execution", { skip: !available ? "pi packages not availabl
|
|
|
882
882
|
const scriptPath = path.join(tempDir, "host-command.cjs");
|
|
883
883
|
fs.writeFileSync(scriptPath, `process.stdout.write("host command passed\\n");`);
|
|
884
884
|
const executor = makeExecutor([makeAgent("echo")]);
|
|
885
|
-
const result = await executor.
|
|
885
|
+
const result = await executor.execute(
|
|
886
886
|
"host-command",
|
|
887
887
|
{
|
|
888
888
|
async: false,
|
|
@@ -903,7 +903,7 @@ describe("single sync execution", { skip: !available ? "pi packages not availabl
|
|
|
903
903
|
|
|
904
904
|
const failedScriptPath = path.join(tempDir, "host-command-failed.cjs");
|
|
905
905
|
fs.writeFileSync(failedScriptPath, `process.stderr.write("host command failed\\n"); process.exit(4);`);
|
|
906
|
-
const failed = await executor.
|
|
906
|
+
const failed = await executor.execute(
|
|
907
907
|
"host-command-failed",
|
|
908
908
|
{
|
|
909
909
|
async: false,
|
|
@@ -917,6 +917,74 @@ describe("single sync execution", { skip: !available ? "pi packages not availabl
|
|
|
917
917
|
assert.deepEqual(failed.details.workflow?.receipt?.hostSteps?.map(({ state, reasonCode, exitCode }) => ({ state, reasonCode, exitCode })), [{ state: "error", reasonCode: "command_failed", exitCode: 4 }]);
|
|
918
918
|
});
|
|
919
919
|
|
|
920
|
+
it("resolves a named workflow resource internally and exposes its provenance", { skip: !createSubagentExecutor ? "executor not importable" : undefined }, async () => {
|
|
921
|
+
mockPi.onCall({ output: "Named review completed" });
|
|
922
|
+
const result = await makeExecutor([makeAgent("reviewer")]).executePublic(
|
|
923
|
+
"named-review-resource",
|
|
924
|
+
{ workflow: "review", args: { task: "Review the change" }, async: false },
|
|
925
|
+
new AbortController().signal,
|
|
926
|
+
undefined,
|
|
927
|
+
makeMinimalCtx(tempDir),
|
|
928
|
+
);
|
|
929
|
+
assert.equal(result.isError, undefined, result.content[0]?.text ?? "named workflow failed");
|
|
930
|
+
assert.match(result.content[0]?.text ?? "", /Named review completed/);
|
|
931
|
+
assert.equal(result.details.workflow?.resource?.kind, "workflow");
|
|
932
|
+
assert.equal(result.details.workflow?.resource?.name, "review");
|
|
933
|
+
assert.equal(result.details.workflow?.resource?.invocation, "named");
|
|
934
|
+
assert.equal(result.details.workflow?.receipt?.resource?.id, result.details.workflow?.resource?.id);
|
|
935
|
+
assert.equal(mockPi.callCount(), 1);
|
|
936
|
+
});
|
|
937
|
+
|
|
938
|
+
it("denies host calls from raw public workflow scripts without resource authority", { skip: !createSubagentExecutor ? "executor not importable" : undefined }, async () => {
|
|
939
|
+
const result = await makeExecutor([makeAgent("echo")]).executePublic(
|
|
940
|
+
"raw-host-denied",
|
|
941
|
+
{ workflowScript: `return await runs.host("ci", { kind: "command", command: "npm test", timeoutMs: 1000 });`, async: false },
|
|
942
|
+
new AbortController().signal,
|
|
943
|
+
undefined,
|
|
944
|
+
makeMinimalCtx(tempDir),
|
|
945
|
+
);
|
|
946
|
+
assert.equal(result.isError, true);
|
|
947
|
+
assert.match(result.content[0]?.text ?? "", /runs\.host is unavailable/);
|
|
948
|
+
assert.equal(result.details.workflow?.resource, undefined);
|
|
949
|
+
assert.equal(result.details.workflow?.receipt?.resource, undefined);
|
|
950
|
+
assert.equal(mockPi.callCount(), 0);
|
|
951
|
+
});
|
|
952
|
+
|
|
953
|
+
it("denies host calls when scheduled raw workflows replay", { skip: !createSubagentExecutor ? "executor not importable" : undefined }, async () => {
|
|
954
|
+
const markerPath = path.join(tempDir, "scheduled-host-marker.txt");
|
|
955
|
+
const script = `require("node:fs").writeFileSync(${JSON.stringify(markerPath)}, "ran");`;
|
|
956
|
+
const result = await makeExecutor([makeAgent("echo")]).executeScheduled(
|
|
957
|
+
"scheduled-raw-host-denied",
|
|
958
|
+
{
|
|
959
|
+
workflowScript: `return await runs.host("ci", { kind: "command", command: ${JSON.stringify(`${JSON.stringify(process.execPath)} -e ${JSON.stringify(script)}`)}, timeoutMs: 1000 });`,
|
|
960
|
+
async: false,
|
|
961
|
+
scheduleOrigin: { id: "nightly" },
|
|
962
|
+
},
|
|
963
|
+
new AbortController().signal,
|
|
964
|
+
makeMinimalCtx(tempDir),
|
|
965
|
+
);
|
|
966
|
+
assert.equal(result.isError, true);
|
|
967
|
+
assert.match(result.content[0]?.text ?? "", /runs\.host is unavailable/);
|
|
968
|
+
assert.equal(fs.existsSync(markerPath), false);
|
|
969
|
+
assert.equal(result.details.workflow?.resource, undefined);
|
|
970
|
+
assert.equal(mockPi.callCount(), 0);
|
|
971
|
+
});
|
|
972
|
+
|
|
973
|
+
it("admits only the host command granted by a named workflow resource", { skip: !createSubagentExecutor ? "executor not importable" : undefined }, async () => {
|
|
974
|
+
const result = await makeExecutor([makeAgent("echo")]).executePublic(
|
|
975
|
+
"named-ci-resource",
|
|
976
|
+
{ workflow: "run-ci", args: { command: "npm run typecheck", timeoutMs: 120_000 }, async: false },
|
|
977
|
+
new AbortController().signal,
|
|
978
|
+
undefined,
|
|
979
|
+
makeMinimalCtx(path.resolve(".")),
|
|
980
|
+
);
|
|
981
|
+
assert.equal(result.isError, undefined, result.content[0]?.text ?? "named CI workflow failed");
|
|
982
|
+
assert.equal(result.details.workflow?.resource?.name, "run-ci");
|
|
983
|
+
assert.equal(result.details.workflow?.receipt?.resource?.name, "run-ci");
|
|
984
|
+
assert.deepEqual(result.details.workflow?.receipt?.hostSteps?.map(({ id, state, exitCode }) => ({ id, state, exitCode })), [{ id: "ci", state: "done", exitCode: 0 }]);
|
|
985
|
+
assert.equal(mockPi.callCount(), 0);
|
|
986
|
+
});
|
|
987
|
+
|
|
920
988
|
it("explains the cwd workaround instead of launching a host step", { skip: !createSubagentExecutor ? "executor not importable" : undefined }, async () => {
|
|
921
989
|
const executor = makeExecutor([makeAgent("echo")]);
|
|
922
990
|
const result = await executor.executePublic(
|
|
@@ -940,7 +1008,7 @@ describe("single sync execution", { skip: !available ? "pi packages not availabl
|
|
|
940
1008
|
fs.writeFileSync(scriptPath, `process.stdout.write("host owns output\\n");`);
|
|
941
1009
|
const sharedOutput = path.join(tempDir, "reports", "shared.log");
|
|
942
1010
|
const executor = makeExecutor([makeAgent("echo")]);
|
|
943
|
-
const result = await executor.
|
|
1011
|
+
const result = await executor.execute(
|
|
944
1012
|
"host-output-collision",
|
|
945
1013
|
{
|
|
946
1014
|
async: false,
|
|
@@ -962,7 +1030,7 @@ describe("single sync execution", { skip: !available ? "pi packages not availabl
|
|
|
962
1030
|
fs.symlinkSync(reportsDir, path.join(tempDir, "linked-reports"), "dir");
|
|
963
1031
|
fs.writeFileSync(scriptPath, `process.stdout.write("host owns output alias\\n");`);
|
|
964
1032
|
const executor = makeExecutor([makeAgent("echo")]);
|
|
965
|
-
const result = await executor.
|
|
1033
|
+
const result = await executor.execute(
|
|
966
1034
|
"host-output-alias-collision",
|
|
967
1035
|
{
|
|
968
1036
|
async: false,
|
|
@@ -984,7 +1052,7 @@ describe("single sync execution", { skip: !available ? "pi packages not availabl
|
|
|
984
1052
|
const aliasScriptPath = path.join(tempDir, "host-output-alias.cjs");
|
|
985
1053
|
fs.writeFileSync(firstScriptPath, `process.stdout.write("first evidence\\n");`);
|
|
986
1054
|
fs.writeFileSync(aliasScriptPath, `const fs = require("node:fs"); fs.rmSync(${JSON.stringify(path.join(tempDir, "late-link"))}, { recursive: true, force: true }); fs.symlinkSync(${JSON.stringify(reportsDir)}, ${JSON.stringify(path.join(tempDir, "late-link"))}, "dir"); process.stdout.write("second evidence\\n");`);
|
|
987
|
-
const result = await makeExecutor([makeAgent("echo")]).
|
|
1055
|
+
const result = await makeExecutor([makeAgent("echo")]).execute(
|
|
988
1056
|
"host-output-late-alias-collision",
|
|
989
1057
|
{
|
|
990
1058
|
async: false,
|
|
@@ -2983,6 +3051,61 @@ describe("single sync execution", { skip: !available ? "pi packages not availabl
|
|
|
2983
3051
|
assert.deepEqual(fs.readFileSync(sharedOutput), Buffer.from(usefulReport));
|
|
2984
3052
|
});
|
|
2985
3053
|
|
|
3054
|
+
it("continues to a read-only review after malformed file-only acceptance metadata", { skip: !createSubagentExecutor ? "executor not importable" : undefined }, async () => {
|
|
3055
|
+
const sharedOutput = path.join(tempDir, "implementation-report.md");
|
|
3056
|
+
const malformed = `ACCEPTANCE_REPORT: ${JSON.stringify({ criteriaSatisfied: true, commandsRun: ["npm test"] })}`;
|
|
3057
|
+
mockPi.onCall({
|
|
3058
|
+
output: "Implementation report persisted.",
|
|
3059
|
+
matchArgIncludes: "Write implementation report",
|
|
3060
|
+
jsonl: [...events.completedWrite(sharedOutput, malformed), events.assistantMessage("Implementation report persisted.")],
|
|
3061
|
+
writeFiles: [{ path: sharedOutput, content: malformed }],
|
|
3062
|
+
});
|
|
3063
|
+
mockPi.onCall({ output: "Read-only review completed.", matchArgIncludes: "Review the persisted implementation report without editing it" });
|
|
3064
|
+
const executor = makeExecutor([
|
|
3065
|
+
makeAgent("worker", { tools: ["read", "write"], completionGuard: false }),
|
|
3066
|
+
makeAgent("reviewer", { tools: ["read"], completionGuard: false }),
|
|
3067
|
+
]);
|
|
3068
|
+
|
|
3069
|
+
const result = await executor.execute(
|
|
3070
|
+
"scripted-workflow-malformed-acceptance-recovery",
|
|
3071
|
+
{
|
|
3072
|
+
async: false,
|
|
3073
|
+
workflowScript: `
|
|
3074
|
+
const writer = await runs.run("writer", {
|
|
3075
|
+
agent: "worker",
|
|
3076
|
+
task: "Write implementation report",
|
|
3077
|
+
output: ${JSON.stringify(sharedOutput)},
|
|
3078
|
+
outputMode: "file-only",
|
|
3079
|
+
acceptance: { level: "checked", criteria: ["Return the implementation report"] }
|
|
3080
|
+
});
|
|
3081
|
+
const review = await runs.run("review", {
|
|
3082
|
+
agent: "reviewer",
|
|
3083
|
+
task: "Review the persisted implementation report without editing it",
|
|
3084
|
+
acceptance: false
|
|
3085
|
+
});
|
|
3086
|
+
return { writerOk: writer.ok, writerRecovery: writer.recovery, reviewOk: review.ok };
|
|
3087
|
+
`,
|
|
3088
|
+
},
|
|
3089
|
+
new AbortController().signal,
|
|
3090
|
+
undefined,
|
|
3091
|
+
makeMinimalCtx(tempDir),
|
|
3092
|
+
);
|
|
3093
|
+
|
|
3094
|
+
assert.equal(result.isError, undefined, result.content[0]?.text ?? "workflow failed");
|
|
3095
|
+
const value = result.details.workflow?.value as { writerOk?: boolean; writerRecovery?: { status?: string; reason?: string; reportPath?: string; reportHash?: string }; reviewOk?: boolean };
|
|
3096
|
+
assert.equal(value.writerOk, false);
|
|
3097
|
+
assert.equal(value.writerRecovery?.status, "available-for-review");
|
|
3098
|
+
assert.equal(value.writerRecovery?.reason, "acceptance-metadata-rejected");
|
|
3099
|
+
assert.equal(value.writerRecovery?.reportPath, sharedOutput);
|
|
3100
|
+
assert.match(value.writerRecovery?.reportHash ?? "", /^[0-9a-f]{64}$/);
|
|
3101
|
+
assert.equal(value.reviewOk, true);
|
|
3102
|
+
assert.equal(result.details.results[0]?.acceptance?.status, "rejected");
|
|
3103
|
+
assert.equal(result.details.results[0]?.outputReference?.path, sharedOutput);
|
|
3104
|
+
assert.equal(result.details.results[0]?.savedOutputPath, sharedOutput);
|
|
3105
|
+
assert.equal(result.details.workflowChildren?.children.find((child) => child.childId === "writer")?.state, "rejected");
|
|
3106
|
+
assert.deepEqual(fs.readFileSync(sharedOutput, "utf-8"), malformed);
|
|
3107
|
+
});
|
|
3108
|
+
|
|
2986
3109
|
it("identifies validation failures before any workflow child launches", { skip: !createSubagentExecutor ? "executor not importable" : undefined }, async () => {
|
|
2987
3110
|
const executor = makeExecutor([makeAgent("worker")]);
|
|
2988
3111
|
const workflowId = "scripted-workflow-invalid-nested-async";
|
|
@@ -3256,6 +3379,28 @@ describe("single sync execution", { skip: !available ? "pi packages not availabl
|
|
|
3256
3379
|
for (const child of children) assert.match(child.error ?? "", /workflow\[second\].*0\/1 used; 2 requested, 1 remaining/);
|
|
3257
3380
|
});
|
|
3258
3381
|
|
|
3382
|
+
it("lets an explicit workflow spawn override exceed config", { skip: !createSubagentExecutor ? "executor not importable" : undefined }, async () => {
|
|
3383
|
+
mockPi.onCall({ output: "first child completed" });
|
|
3384
|
+
mockPi.onCall({ output: "second child completed" });
|
|
3385
|
+
const result = await makeExecutor([makeAgent("echo")], { maxSubagentSpawnsPerRun: 1 }).execute(
|
|
3386
|
+
"scripted-workflow-fanout-override",
|
|
3387
|
+
{
|
|
3388
|
+
async: false,
|
|
3389
|
+
maxSubagentSpawnsPerRun: 2,
|
|
3390
|
+
workflowScript: `return await runs.all([
|
|
3391
|
+
{ key: "first", agent: "echo", task: "First task" },
|
|
3392
|
+
{ key: "second", agent: "echo", task: "Second task" }
|
|
3393
|
+
]);`,
|
|
3394
|
+
},
|
|
3395
|
+
new AbortController().signal,
|
|
3396
|
+
undefined,
|
|
3397
|
+
makeMinimalCtx(tempDir),
|
|
3398
|
+
);
|
|
3399
|
+
|
|
3400
|
+
assert.equal(result.isError, undefined, result.content[0]?.text ?? "workflow failed");
|
|
3401
|
+
assert.equal(mockPi.callCount(), 2);
|
|
3402
|
+
});
|
|
3403
|
+
|
|
3259
3404
|
it("runs a direct child gate as host-verified acceptance", { skip: !createSubagentExecutor ? "executor not importable" : undefined }, async () => {
|
|
3260
3405
|
const markerFile = "direct-gate.txt";
|
|
3261
3406
|
const markerPath = path.join(tempDir, markerFile);
|
|
@@ -5588,6 +5733,34 @@ describe("single sync execution", { skip: !available ? "pi packages not availabl
|
|
|
5588
5733
|
assert.equal(mockPi.callCount(), 1);
|
|
5589
5734
|
});
|
|
5590
5735
|
|
|
5736
|
+
it("fails closed before spawn when cached exclusions leave zero launch candidates", async () => {
|
|
5737
|
+
recordModelFailure({ modelId: "gpt-5-mini", provider: "openai", reason: "sk-secret-token-xyz" });
|
|
5738
|
+
recordModelFailure({ modelId: "claude-sonnet-4", provider: "anthropic", reason: "sk-secret-token-xyz" });
|
|
5739
|
+
mockPi.onCall({ output: "should not spawn" });
|
|
5740
|
+
const agents = [makeAgent("worker", {
|
|
5741
|
+
model: "openai/gpt-5-mini",
|
|
5742
|
+
fallbackModels: ["anthropic/claude-sonnet-4"],
|
|
5743
|
+
})];
|
|
5744
|
+
|
|
5745
|
+
await assert.rejects(
|
|
5746
|
+
runSync(tempDir, agents, "worker", "Do work", {
|
|
5747
|
+
runId: "cached-exclusion-zero-candidates",
|
|
5748
|
+
acceptance: false,
|
|
5749
|
+
availableModels: [
|
|
5750
|
+
{ provider: "openai", id: "gpt-5-mini", fullId: "openai/gpt-5-mini" },
|
|
5751
|
+
{ provider: "anthropic", id: "claude-sonnet-4", fullId: "anthropic/claude-sonnet-4" },
|
|
5752
|
+
],
|
|
5753
|
+
}),
|
|
5754
|
+
(error: unknown) => {
|
|
5755
|
+
assert.ok(error instanceof Error);
|
|
5756
|
+
assert.match(error.message, /No usable subagent models remain after registry, scope, and cached-exclusion filtering/);
|
|
5757
|
+
assert.equal(error.message.includes("sk-secret-token-xyz"), false);
|
|
5758
|
+
return true;
|
|
5759
|
+
},
|
|
5760
|
+
);
|
|
5761
|
+
assert.equal(mockPi.callCount(), 0);
|
|
5762
|
+
});
|
|
5763
|
+
|
|
5591
5764
|
it("retries a zero-activity startup exit on the same model", async () => {
|
|
5592
5765
|
mockPi.onCall({ exitCode: 1 });
|
|
5593
5766
|
mockPi.onCall({ output: "Recovered after startup race" });
|
|
@@ -6486,6 +6659,95 @@ describe("single sync execution", { skip: !available ? "pi packages not availabl
|
|
|
6486
6659
|
assert.ok((runningUpdates.at(-1)?.durationMs ?? 0) > (runningUpdates[0]?.durationMs ?? 0), "expected heartbeat duration to advance");
|
|
6487
6660
|
});
|
|
6488
6661
|
|
|
6662
|
+
it("suppresses unchanged delegated heartbeats without changing ordinary foreground updates", async () => {
|
|
6663
|
+
const updates: Array<{ text: string; durationMs: number | undefined }> = [];
|
|
6664
|
+
const releasePath = path.join(tempDir, "release-delegated-progress");
|
|
6665
|
+
mockPi.onCall({ output: "Done", waitForPath: releasePath });
|
|
6666
|
+
|
|
6667
|
+
const runPromise = runSync!(tempDir, makeAgentConfigs(["echo"]), "echo", "Task", {
|
|
6668
|
+
suppressUnchangedDelegationUpdates: true,
|
|
6669
|
+
onUpdate: (update: { content: Array<{ type: string; text?: string }>; details?: { progress?: ProgressSummary[] } }) => {
|
|
6670
|
+
updates.push({
|
|
6671
|
+
text: update.content[0]?.text ?? "",
|
|
6672
|
+
durationMs: update.details?.progress?.[0]?.durationMs,
|
|
6673
|
+
});
|
|
6674
|
+
},
|
|
6675
|
+
});
|
|
6676
|
+
const initialDeadline = Date.now() + 5_000;
|
|
6677
|
+
while (updates.filter((update) => update.text === "(running...)").length < 1 && Date.now() < initialDeadline) {
|
|
6678
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
6679
|
+
}
|
|
6680
|
+
await new Promise((resolve) => setTimeout(resolve, 1_200));
|
|
6681
|
+
assert.equal(updates.filter((update) => update.text === "(running...)").length, 1, "duration-only delegated heartbeats should be coalesced");
|
|
6682
|
+
|
|
6683
|
+
fs.writeFileSync(releasePath, "release", "utf-8");
|
|
6684
|
+
const result = await runPromise;
|
|
6685
|
+
assert.equal(result.exitCode, 0);
|
|
6686
|
+
assert.ok(updates.some((update) => update.text === "Done"), "changed terminal output should still be delivered");
|
|
6687
|
+
});
|
|
6688
|
+
|
|
6689
|
+
it("delivers delegated activity-state transitions despite heartbeat suppression", async () => {
|
|
6690
|
+
const attentionUpdates: Array<{ details?: { progress?: ProgressSummary[] } }> = [];
|
|
6691
|
+
const attentionReleasePath = path.join(tempDir, "release-delegated-attention");
|
|
6692
|
+
mockPi.onCall({ output: "Done", waitForPath: attentionReleasePath });
|
|
6693
|
+
const attentionRun = runSync!(tempDir, makeAgentConfigs(["echo"]), "echo", "Task", {
|
|
6694
|
+
suppressUnchangedDelegationUpdates: true,
|
|
6695
|
+
controlConfig: {
|
|
6696
|
+
enabled: true,
|
|
6697
|
+
needsAttentionAfterMs: 200,
|
|
6698
|
+
activeNoticeAfterMs: 999_999,
|
|
6699
|
+
activeNoticeAfterTurns: 999_999,
|
|
6700
|
+
activeNoticeAfterTokens: 999_999,
|
|
6701
|
+
notifyOn: ["needs_attention"],
|
|
6702
|
+
notifyChannels: ["event"],
|
|
6703
|
+
},
|
|
6704
|
+
onUpdate: (update: { details?: { progress?: ProgressSummary[] } }) => attentionUpdates.push(update),
|
|
6705
|
+
});
|
|
6706
|
+
try {
|
|
6707
|
+
const deadline = Date.now() + 5_000;
|
|
6708
|
+
while (!attentionUpdates.some((update) => update.details?.progress?.[0]?.activityState === "needs_attention") && Date.now() < deadline) {
|
|
6709
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
6710
|
+
}
|
|
6711
|
+
assert.ok(attentionUpdates.some((update) => update.details?.progress?.[0]?.activityState === "needs_attention"), "needs_attention transition should not be coalesced");
|
|
6712
|
+
} finally {
|
|
6713
|
+
fs.writeFileSync(attentionReleasePath, "release", "utf-8");
|
|
6714
|
+
await attentionRun;
|
|
6715
|
+
}
|
|
6716
|
+
|
|
6717
|
+
const activeUpdates: Array<{ details?: { progress?: ProgressSummary[] } }> = [];
|
|
6718
|
+
const activeReleasePath = path.join(tempDir, "release-delegated-active");
|
|
6719
|
+
mockPi.onCall({
|
|
6720
|
+
steps: [
|
|
6721
|
+
{ jsonl: [events.toolStart("contact_supervisor", { message: "waiting" })] },
|
|
6722
|
+
{ waitForPath: activeReleasePath, jsonl: [events.toolEnd("contact_supervisor"), events.toolResult("contact_supervisor", "done")] },
|
|
6723
|
+
{ jsonl: [events.assistantMessage("Done")] },
|
|
6724
|
+
],
|
|
6725
|
+
});
|
|
6726
|
+
const activeRun = runSync!(tempDir, makeAgentConfigs(["echo"]), "echo", "Task", {
|
|
6727
|
+
suppressUnchangedDelegationUpdates: true,
|
|
6728
|
+
controlConfig: {
|
|
6729
|
+
enabled: true,
|
|
6730
|
+
needsAttentionAfterMs: 999_999,
|
|
6731
|
+
activeNoticeAfterMs: 200,
|
|
6732
|
+
activeNoticeAfterTurns: 999_999,
|
|
6733
|
+
activeNoticeAfterTokens: 999_999,
|
|
6734
|
+
notifyOn: ["active_long_running"],
|
|
6735
|
+
notifyChannels: ["event"],
|
|
6736
|
+
},
|
|
6737
|
+
onUpdate: (update: { details?: { progress?: ProgressSummary[] } }) => activeUpdates.push(update),
|
|
6738
|
+
});
|
|
6739
|
+
try {
|
|
6740
|
+
const deadline = Date.now() + 5_000;
|
|
6741
|
+
while (!activeUpdates.some((update) => update.details?.progress?.[0]?.activityState === "active_long_running") && Date.now() < deadline) {
|
|
6742
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
6743
|
+
}
|
|
6744
|
+
assert.ok(activeUpdates.some((update) => update.details?.progress?.[0]?.activityState === "active_long_running"), "active_long_running transition should not be coalesced");
|
|
6745
|
+
} finally {
|
|
6746
|
+
fs.writeFileSync(activeReleasePath, "release", "utf-8");
|
|
6747
|
+
await activeRun;
|
|
6748
|
+
}
|
|
6749
|
+
});
|
|
6750
|
+
|
|
6489
6751
|
it("reports foreground context window usage without changing cumulative spend", async () => {
|
|
6490
6752
|
mockPi.onCall({
|
|
6491
6753
|
jsonl: [{
|
|
@@ -8742,4 +9004,4 @@ describe("single sync execution", { skip: !available ? "pi packages not availabl
|
|
|
8742
9004
|
assert.equal(result.exitCode, 0);
|
|
8743
9005
|
});
|
|
8744
9006
|
|
|
8745
|
-
});
|
|
9007
|
+
});
|
|
@@ -1122,6 +1122,51 @@ describe("slash command custom message delivery", { skip: !available ? "slash-co
|
|
|
1122
1122
|
});
|
|
1123
1123
|
});
|
|
1124
1124
|
|
|
1125
|
+
it("/subagents-models accepts discovered and runtime agent names", async () => {
|
|
1126
|
+
await withTempProject("pi-slash-models-agent-", async (root) => {
|
|
1127
|
+
fs.writeFileSync(path.join(root, ".selesai", "agents", "project-helper.md"), "---\nname: project-helper\ndescription: Project helper\n---\nProject helper.\n", "utf-8");
|
|
1128
|
+
const runtimeRun = await captureSlashCommandParams("subagents-models", "runtime-helper", root, (pi) => {
|
|
1129
|
+
registerAgent({
|
|
1130
|
+
pi: pi as never,
|
|
1131
|
+
name: "runtime-helper",
|
|
1132
|
+
definition: { description: "Runtime helper", systemPrompt: "Help at runtime." },
|
|
1133
|
+
});
|
|
1134
|
+
});
|
|
1135
|
+
assert.deepEqual(runtimeRun.params, { action: "models", agent: "runtime-helper" });
|
|
1136
|
+
|
|
1137
|
+
const projectRun = await captureSlashCommandParams("subagents-models", "project-helper", root);
|
|
1138
|
+
assert.deepEqual(projectRun.params, { action: "models", agent: "project-helper" });
|
|
1139
|
+
|
|
1140
|
+
await withIsolatedHome(async () => {
|
|
1141
|
+
const commands = new Map<string, RegisteredSlashCommand>();
|
|
1142
|
+
const pi = {
|
|
1143
|
+
events: createEventBus(),
|
|
1144
|
+
on() { return () => {}; },
|
|
1145
|
+
registerTool() {},
|
|
1146
|
+
registerCommand(name: string, spec: RegisteredSlashCommand) { commands.set(name, spec); },
|
|
1147
|
+
registerShortcut() {},
|
|
1148
|
+
sendMessage() {},
|
|
1149
|
+
};
|
|
1150
|
+
const registration = registerAgent({
|
|
1151
|
+
pi: pi as never,
|
|
1152
|
+
name: "runtime-helper",
|
|
1153
|
+
definition: { description: "Runtime helper", systemPrompt: "Help at runtime." },
|
|
1154
|
+
});
|
|
1155
|
+
try {
|
|
1156
|
+
const disposer = registerSlashCommands!(pi, createState(root));
|
|
1157
|
+
try {
|
|
1158
|
+
const completions = commands.get("subagents-models")!.getArgumentCompletions!("runtime-") as Array<{ value: string }>;
|
|
1159
|
+
assert.deepEqual(completions.map(({ value }) => value), ["runtime-helper"]);
|
|
1160
|
+
} finally {
|
|
1161
|
+
disposer.dispose();
|
|
1162
|
+
}
|
|
1163
|
+
} finally {
|
|
1164
|
+
registration.dispose();
|
|
1165
|
+
}
|
|
1166
|
+
});
|
|
1167
|
+
});
|
|
1168
|
+
});
|
|
1169
|
+
|
|
1125
1170
|
it("/run preserves existing relative reads and omits missing reads", async () => {
|
|
1126
1171
|
await withTempProject("pi-slash-reads-", async (root) => {
|
|
1127
1172
|
fs.writeFileSync(path.join(root, ".selesai", "agents", "scout.md"), `---
|
|
@@ -1468,4 +1513,4 @@ describe("subagents-inspect-rpc command", { skip: !available ? "slash-commands.t
|
|
|
1468
1513
|
assert.equal(widgetCalls.length, 0);
|
|
1469
1514
|
assert.match(notifications[0] ?? "", /RPC surfaces/);
|
|
1470
1515
|
});
|
|
1471
|
-
});
|
|
1516
|
+
});
|
|
@@ -26,11 +26,11 @@ function pathWithin(parent: string, child: string): boolean {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
export function cursorSmokeInputs(env: NodeJS.ProcessEnv): CursorSmokeInputs {
|
|
29
|
-
if (env.
|
|
30
|
-
throw new Error("
|
|
29
|
+
if (env.SELESAI_SUBAGENTS_CURSOR_SMOKE_DISPOSABLE !== "1") {
|
|
30
|
+
throw new Error("SELESAI_SUBAGENTS_CURSOR_SMOKE_DISPOSABLE=1 is required to attest that the operator-managed workspace is disposable.");
|
|
31
31
|
}
|
|
32
|
-
const workspace = existingDirectory(env.
|
|
33
|
-
const stateRoot = existingDirectory(env.
|
|
32
|
+
const workspace = existingDirectory(env.SELESAI_SUBAGENTS_CURSOR_SMOKE_WORKSPACE, "SELESAI_SUBAGENTS_CURSOR_SMOKE_WORKSPACE");
|
|
33
|
+
const stateRoot = existingDirectory(env.SELESAI_SUBAGENTS_CURSOR_SMOKE_STATE_ROOT, "SELESAI_SUBAGENTS_CURSOR_SMOKE_STATE_ROOT");
|
|
34
34
|
if (pathWithin(workspace, stateRoot) || pathWithin(stateRoot, workspace)) {
|
|
35
35
|
throw new Error("Cursor smoke workspace and state root must be separate directories so the production --add-dir launch shape is exercised.");
|
|
36
36
|
}
|
|
@@ -48,4 +48,4 @@ export function cursorSmokeInputs(env: NodeJS.ProcessEnv): CursorSmokeInputs {
|
|
|
48
48
|
}
|
|
49
49
|
if (fs.readdirSync(promptDirectory).length > 0) throw new Error(`Cursor smoke prompt directory must be empty before launch: ${promptDirectory}`);
|
|
50
50
|
return { workspace, stateRoot, canaryPath, promptDirectory };
|
|
51
|
-
}
|
|
51
|
+
}
|
|
@@ -6,4 +6,4 @@ if (!process.env.SELESAI_SUBAGENTS_TEMP_ROOT) {
|
|
|
6
6
|
const tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), "pi-subagents-test-root-"));
|
|
7
7
|
process.env.SELESAI_SUBAGENTS_TEMP_ROOT = tempRoot;
|
|
8
8
|
process.on("exit", () => fs.rmSync(tempRoot, { recursive: true, force: true }));
|
|
9
|
-
}
|
|
9
|
+
}
|
|
@@ -12,4 +12,4 @@ export function writeNodeCommand(directory: string, name: string, source: string
|
|
|
12
12
|
const commandPath = path.join(directory, name);
|
|
13
13
|
fs.writeFileSync(commandPath, `#!/usr/bin/env node\n${source}\n`, { encoding: "utf-8", mode: 0o755 });
|
|
14
14
|
return commandPath;
|
|
15
|
-
}
|
|
15
|
+
}
|