@selesai/code 0.5.27 → 0.5.29
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/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +9 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/config-selector.js +1 -1
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/credential-print.d.ts +23 -0
- package/dist/cli/credential-print.d.ts.map +1 -0
- package/dist/cli/credential-print.js +117 -0
- package/dist/cli/credential-print.js.map +1 -0
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +1 -1
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +3 -0
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session.d.ts +12 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +20 -14
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +11 -3
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +1 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +11 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +14 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts +10 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +1 -1
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/llama/provider.d.ts.map +1 -1
- package/dist/core/llama/provider.js +8 -3
- package/dist/core/llama/provider.js.map +1 -1
- package/dist/core/model-config.d.ts +30 -0
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +6 -0
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +2 -2
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +1 -0
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +20 -3
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-runtime.d.ts +2 -0
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +5 -4
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +13 -6
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +24 -11
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resource-loader.d.ts +15 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +66 -9
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/settings-manager.d.ts +1 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +1 -1
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/bash.d.ts +2 -0
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +34 -5
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +3 -1
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/extensions/pi-intercom/CHANGELOG.md +249 -0
- package/dist/extensions/pi-intercom/README.md +102 -39
- package/dist/extensions/pi-intercom/broker/broker.ts +1233 -36
- package/dist/extensions/pi-intercom/broker/client.test.ts +83 -0
- package/dist/extensions/pi-intercom/broker/client.ts +315 -12
- package/dist/extensions/pi-intercom/broker/extension-state.ts +186 -0
- package/dist/extensions/pi-intercom/broker/extension.test.ts +387 -0
- package/dist/extensions/pi-intercom/broker/framing.test.ts +114 -0
- package/dist/extensions/pi-intercom/broker/framing.ts +82 -24
- package/dist/extensions/pi-intercom/broker/paths.test.ts +153 -0
- package/dist/extensions/pi-intercom/broker/paths.ts +117 -8
- package/dist/extensions/pi-intercom/broker/runtime-claim.test.ts +34 -0
- package/dist/extensions/pi-intercom/broker/runtime-claim.ts +21 -0
- package/dist/extensions/pi-intercom/broker/spawn.test.ts +160 -23
- package/dist/extensions/pi-intercom/broker/spawn.ts +113 -27
- package/dist/extensions/pi-intercom/config.test.ts +93 -0
- package/dist/extensions/pi-intercom/config.ts +55 -6
- package/dist/extensions/pi-intercom/cwd.test.ts +40 -0
- package/dist/extensions/pi-intercom/cwd.ts +31 -0
- package/dist/extensions/pi-intercom/extension-api.ts +44 -0
- package/dist/extensions/pi-intercom/format-context.test.ts +31 -0
- package/dist/extensions/pi-intercom/format-context.ts +32 -0
- package/dist/extensions/pi-intercom/index.ts +742 -145
- package/dist/extensions/pi-intercom/intercom.integration.test.ts +2646 -0
- package/dist/extensions/pi-intercom/package.json +15 -5
- package/dist/extensions/pi-intercom/reply-tracker.test.ts +134 -0
- package/dist/extensions/pi-intercom/reply-tracker.ts +31 -13
- package/dist/extensions/pi-intercom/skills/pi-intercom/SKILL.md +13 -11
- package/dist/extensions/pi-intercom/test/inline-message.test.ts +184 -0
- package/dist/extensions/pi-intercom/test/overlay-width.test.ts +66 -0
- package/dist/extensions/pi-intercom/types.ts +94 -4
- package/dist/extensions/pi-intercom/ui/compose.ts +8 -4
- package/dist/extensions/pi-intercom/ui/inline-message.ts +61 -25
- package/dist/extensions/pi-intercom/ui/session-list.ts +7 -3
- package/dist/extensions/pi-subagents/CHANGELOG.md +85 -0
- package/dist/extensions/pi-subagents/LICENSE +21 -0
- package/dist/extensions/pi-subagents/README.md +146 -52
- package/dist/extensions/pi-subagents/agents/architect.md +1 -0
- package/dist/extensions/pi-subagents/agents/builder.md +1 -0
- package/dist/extensions/pi-subagents/package-lock.json +2 -2
- package/dist/extensions/pi-subagents/package.json +3 -3
- package/dist/extensions/pi-subagents/prompts/review-loop.md +1 -1
- package/dist/extensions/pi-subagents/skills/pi-subagents/SKILL.md +21 -989
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/constraints-and-recipes.md +256 -0
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/execution-controls.md +430 -0
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/management-authoring-rpc.md +144 -0
- package/dist/extensions/pi-subagents/skills/pi-subagents/references/prompting-and-roles.md +282 -0
- package/dist/extensions/pi-subagents/src/agents/agent-management.ts +71 -30
- package/dist/extensions/pi-subagents/src/agents/agent-serializer.ts +4 -0
- package/dist/extensions/pi-subagents/src/agents/agents.ts +118 -9
- package/dist/extensions/pi-subagents/src/agents/skills.ts +14 -12
- package/dist/extensions/pi-subagents/src/api/delegation.ts +3 -0
- package/dist/extensions/pi-subagents/src/api/preflight.ts +16 -12
- package/dist/extensions/pi-subagents/src/extension/chain-validation.ts +17 -1
- package/dist/extensions/pi-subagents/src/extension/index.ts +17 -7
- package/dist/extensions/pi-subagents/src/extension/rpc.ts +248 -6
- package/dist/extensions/pi-subagents/src/extension/schemas.ts +31 -6
- package/dist/extensions/pi-subagents/src/extension/tool-description.ts +8 -7
- package/dist/extensions/pi-subagents/src/intercom/intercom-bridge.ts +9 -4
- package/dist/extensions/pi-subagents/src/intercom/result-intercom.ts +33 -4
- package/dist/extensions/pi-subagents/src/runs/background/async-execution.ts +63 -16
- package/dist/extensions/pi-subagents/src/runs/background/async-job-tracker.ts +24 -13
- package/dist/extensions/pi-subagents/src/runs/background/async-resume.ts +7 -5
- package/dist/extensions/pi-subagents/src/runs/background/async-status.ts +18 -2
- package/dist/extensions/pi-subagents/src/runs/background/chain-append.ts +48 -5
- package/dist/extensions/pi-subagents/src/runs/background/control-channel.ts +68 -1
- package/dist/extensions/pi-subagents/src/runs/background/notify.ts +29 -4
- package/dist/extensions/pi-subagents/src/runs/background/result-watcher.ts +29 -6
- package/dist/extensions/pi-subagents/src/runs/background/run-status.ts +29 -3
- package/dist/extensions/pi-subagents/src/runs/background/subagent-runner.ts +372 -28
- package/dist/extensions/pi-subagents/src/runs/foreground/async-stop-action.ts +65 -0
- package/dist/extensions/pi-subagents/src/runs/foreground/chain-clarify.ts +3 -3
- package/dist/extensions/pi-subagents/src/runs/foreground/chain-execution.ts +143 -43
- package/dist/extensions/pi-subagents/src/runs/foreground/execution.ts +527 -247
- package/dist/extensions/pi-subagents/src/runs/foreground/foreground-control.ts +42 -0
- package/dist/extensions/pi-subagents/src/runs/foreground/subagent-executor.ts +426 -123
- package/dist/extensions/pi-subagents/src/runs/shared/acceptance.ts +15 -7
- package/dist/extensions/pi-subagents/src/runs/shared/capability-ceiling.ts +51 -19
- package/dist/extensions/pi-subagents/src/runs/shared/chain-outputs.ts +3 -1
- package/dist/extensions/pi-subagents/src/runs/shared/dynamic-fanout.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +44 -11
- package/dist/extensions/pi-subagents/src/runs/shared/model-fallback.ts +8 -0
- package/dist/extensions/pi-subagents/src/runs/shared/nested-events.ts +97 -20
- package/dist/extensions/pi-subagents/src/runs/shared/parallel-utils.ts +43 -12
- package/dist/extensions/pi-subagents/src/runs/shared/pi-args.ts +52 -4
- package/dist/extensions/pi-subagents/src/runs/shared/process-signal.ts +19 -0
- package/dist/extensions/pi-subagents/src/runs/shared/run-history.ts +45 -9
- package/dist/extensions/pi-subagents/src/runs/shared/runtime-acknowledged-extensions.ts +71 -0
- package/dist/extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.ts +31 -1
- package/dist/extensions/pi-subagents/src/runs/shared/subagent-startup-retry.ts +101 -0
- package/dist/extensions/pi-subagents/src/runs/shared/task-intent.ts +1 -1
- package/dist/extensions/pi-subagents/src/runs/shared/usage-budget.ts +65 -0
- package/dist/extensions/pi-subagents/src/runs/shared/workflow-graph.ts +26 -1
- package/dist/extensions/pi-subagents/src/shared/settings.ts +17 -1
- package/dist/extensions/pi-subagents/src/shared/types.ts +155 -10
- package/dist/extensions/pi-subagents/src/shared/utils.ts +73 -4
- package/dist/extensions/pi-subagents/src/slash/delegation-adapters.ts +5 -0
- package/dist/extensions/pi-subagents/src/slash/slash-commands.ts +46 -4
- package/dist/extensions/pi-subagents/src/slash/slash-live-state.ts +5 -3
- package/dist/extensions/pi-subagents/src/tui/fleet-status.ts +87 -24
- package/dist/extensions/pi-subagents/src/tui/fleet.ts +182 -9
- package/dist/extensions/pi-subagents/src/tui/render.ts +27 -28
- package/dist/extensions/pi-subagents/src/watchdog/register-main.ts +14 -7
- package/dist/extensions/pi-subagents/src/watchdog/review.ts +5 -4
- package/dist/extensions/pi-subagents/src/watchdog/runtime.ts +170 -17
- package/dist/extensions/pi-subagents/src/watchdog/scope.ts +62 -0
- package/dist/extensions/pi-subagents/src/watchdog/settings.ts +41 -1
- package/dist/extensions/pi-subagents/src/watchdog/types.ts +10 -0
- package/dist/extensions/pi-subagents/test/e2e/real-session-subagent.test.ts +2 -2
- package/dist/extensions/pi-subagents/test/integration/async-execution.test.ts +348 -7
- package/dist/extensions/pi-subagents/test/integration/async-job-tracker.test.ts +84 -0
- package/dist/extensions/pi-subagents/test/integration/async-status.test.ts +4 -2
- package/dist/extensions/pi-subagents/test/integration/chain-clarify.test.ts +51 -2
- package/dist/extensions/pi-subagents/test/integration/chain-execution.test.ts +26 -1
- package/dist/extensions/pi-subagents/test/integration/detect-error.test.ts +48 -0
- package/dist/extensions/pi-subagents/test/integration/fork-context-execution.test.ts +3 -3
- package/dist/extensions/pi-subagents/test/integration/intercom-result-delivery.test.ts +213 -13
- package/dist/extensions/pi-subagents/test/integration/parallel-execution.test.ts +34 -0
- package/dist/extensions/pi-subagents/test/integration/render-fork-badge.test.ts +44 -0
- package/dist/extensions/pi-subagents/test/integration/result-watcher.test.ts +118 -12
- package/dist/extensions/pi-subagents/test/integration/single-execution.test.ts +850 -7
- package/dist/extensions/pi-subagents/test/integration/slash-commands.test.ts +112 -23
- package/dist/extensions/pi-subagents/test/support/mock-pi-script.mjs +17 -5
- package/dist/extensions/pi-subagents/test/support/mock-pi.ts +2 -0
- package/dist/extensions/pi-subagents/test/support/register-loader.mjs +3 -3
- package/dist/extensions/pi-subagents/test/unit/acceptance.test.ts +3 -1
- package/dist/extensions/pi-subagents/test/unit/agent-frontmatter.test.ts +128 -0
- package/dist/extensions/pi-subagents/test/unit/agent-overrides.test.ts +47 -2
- package/dist/extensions/pi-subagents/test/unit/async-recovery-descriptor.test.ts +60 -0
- package/dist/extensions/pi-subagents/test/unit/async-resume.test.ts +8 -0
- package/dist/extensions/pi-subagents/test/unit/capability-ceiling-agent-allowlist.test.ts +102 -0
- package/dist/extensions/pi-subagents/test/unit/capability-ceiling.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/chain-append.test.ts +6 -0
- package/dist/extensions/pi-subagents/test/unit/chain-validation.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/completion-guard.test.ts +48 -48
- package/dist/extensions/pi-subagents/test/unit/config-dir-runtime.test.ts +23 -0
- package/dist/extensions/pi-subagents/test/unit/control-channel.test.ts +27 -0
- package/dist/extensions/pi-subagents/test/unit/delegation-api.test.ts +4 -2
- package/dist/extensions/pi-subagents/test/unit/dynamic-fanout.test.ts +1 -0
- package/dist/extensions/pi-subagents/test/unit/fleet-status.test.ts +176 -8
- package/dist/extensions/pi-subagents/test/unit/fleet.test.ts +164 -5
- package/dist/extensions/pi-subagents/test/unit/foreground-control.test.ts +41 -1
- package/dist/extensions/pi-subagents/test/unit/index-child-registration.test.ts +11 -11
- package/dist/extensions/pi-subagents/test/unit/intercom-bridge.test.ts +18 -2
- package/dist/extensions/pi-subagents/test/unit/nested-control.test.ts +20 -1
- package/dist/extensions/pi-subagents/test/unit/nested-events.test.ts +30 -2
- package/dist/extensions/pi-subagents/test/unit/notify.test.ts +10 -2
- package/dist/extensions/pi-subagents/test/unit/parallel-utils.test.ts +22 -0
- package/dist/extensions/pi-subagents/test/unit/pi-args.test.ts +103 -0
- package/dist/extensions/pi-subagents/test/unit/pi-coding-agent-dir.test.ts +18 -0
- package/dist/extensions/pi-subagents/test/unit/preflight.test.ts +46 -0
- package/dist/extensions/pi-subagents/test/unit/render-helpers.test.ts +13 -1
- package/dist/extensions/pi-subagents/test/unit/result-intercom.test.ts +29 -4
- package/dist/extensions/pi-subagents/test/unit/rpc.test.ts +223 -4
- package/dist/extensions/pi-subagents/test/unit/run-status.test.ts +30 -0
- package/dist/extensions/pi-subagents/test/unit/runtime-acknowledged-extensions.test.ts +52 -0
- package/dist/extensions/pi-subagents/test/unit/schemas.test.ts +34 -2
- package/dist/extensions/pi-subagents/test/unit/skills-fallback.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/steering-action.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/streamed-progress-bounds.test.ts +78 -0
- package/dist/extensions/pi-subagents/test/unit/subagent-prompt-runtime.test.ts +41 -0
- package/dist/extensions/pi-subagents/test/unit/subagent-startup-retry.test.ts +77 -0
- package/dist/extensions/pi-subagents/test/unit/task-intent.test.ts +3 -0
- package/dist/extensions/pi-subagents/test/unit/tool-description.test.ts +1 -1
- package/dist/extensions/pi-subagents/test/unit/total-cost.test.ts +1 -0
- package/dist/extensions/pi-subagents/test/unit/watchdog-runtime.test.ts +210 -1
- package/dist/extensions/pi-subagents/test/unit/watchdog-scope.test.ts +33 -0
- package/dist/extensions/pi-subagents/test/unit/watchdog-settings.test.ts +32 -0
- package/dist/extensions/pi-subagents/test/unit/writer-budget-guidance.test.ts +1 -1
- package/dist/extensions/question/index.ts +14 -1
- package/dist/extensions/question/tests/wizard.test.ts +11 -8
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +43 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts +3 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +10 -2
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts +1 -2
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +16 -46
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +4 -1
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +22 -13
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts +12 -0
- package/dist/modes/interactive/external-editor.d.ts.map +1 -0
- package/dist/modes/interactive/external-editor.js +37 -0
- package/dist/modes/interactive/external-editor.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +72 -64
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +14 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/skills/batch-grill-me/SKILL.md +3 -1
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +19 -8
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +1 -1
- package/dist/utils/version-check.js.map +1 -1
- package/docs/compaction.md +1 -1
- package/docs/custom-provider.md +14 -5
- package/docs/environment-variables.md +86 -0
- package/docs/extensions.md +15 -5
- package/docs/index.md +1 -0
- package/docs/models.md +9 -2
- package/docs/providers.md +21 -2
- package/docs/rpc.md +23 -6
- package/docs/session-format.md +2 -0
- package/docs/settings.md +1 -1
- package/docs/usage.md +0 -13
- package/examples/extensions/custom-compaction.ts +5 -2
- package/examples/extensions/custom-provider-anthropic/index.ts +9 -3
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/handoff.ts +11 -3
- package/examples/extensions/message-renderer.ts +3 -3
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/summarize.ts +5 -2
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/sdk/12-full-control.ts +3 -1
- package/package.json +15 -6
- package/dist/extensions/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +0 -1
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export const EXTENSION_BUS_FEATURE = "extension-bus-v1";
|
|
2
|
+
|
|
1
3
|
export interface SessionInfo {
|
|
2
4
|
id: string;
|
|
3
5
|
name?: string;
|
|
@@ -7,11 +9,28 @@ export interface SessionInfo {
|
|
|
7
9
|
startedAt: number;
|
|
8
10
|
lastActivity: number;
|
|
9
11
|
status?: string;
|
|
12
|
+
peerUid?: number;
|
|
13
|
+
trustedLocal?: boolean;
|
|
14
|
+
/** Live context-window usage, pushed via presence from the source session's
|
|
15
|
+
* getContextUsage(). contextPct is 0..100 (rounded); contextTokens /
|
|
16
|
+
* contextWindow are raw token counts. All optional: unknown right after a
|
|
17
|
+
* compaction (before the next assistant response), when no model is selected,
|
|
18
|
+
* or on older clients that never report it. */
|
|
19
|
+
contextPct?: number;
|
|
20
|
+
contextTokens?: number;
|
|
21
|
+
contextWindow?: number;
|
|
10
22
|
}
|
|
11
23
|
|
|
12
24
|
export interface Message {
|
|
13
25
|
id: string;
|
|
14
26
|
timestamp: number;
|
|
27
|
+
senderSequence?: number;
|
|
28
|
+
brokerReceivedAt?: number;
|
|
29
|
+
brokerDeliveredAt?: number;
|
|
30
|
+
receiverReceivedAt?: number;
|
|
31
|
+
injectedAt?: number;
|
|
32
|
+
supersedes?: string;
|
|
33
|
+
retryOf?: string;
|
|
15
34
|
replyTo?: string;
|
|
16
35
|
expectsReply?: boolean;
|
|
17
36
|
content: {
|
|
@@ -27,15 +46,62 @@ export interface Attachment {
|
|
|
27
46
|
language?: string;
|
|
28
47
|
}
|
|
29
48
|
|
|
49
|
+
export type MessageReceiptStatus = "receiver_received" | "queued" | "injected" | "acknowledged" | "expired" | "cancelled" | "superseded" | "cancellation_requested";
|
|
50
|
+
|
|
51
|
+
export interface MessageReceipt {
|
|
52
|
+
messageId: string;
|
|
53
|
+
status: MessageReceiptStatus;
|
|
54
|
+
timestamp: number;
|
|
55
|
+
detail?: string;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export type MessageControlAction = "cancel" | "supersede";
|
|
59
|
+
|
|
60
|
+
export interface MessageControl {
|
|
61
|
+
messageId: string;
|
|
62
|
+
action: MessageControlAction;
|
|
63
|
+
timestamp: number;
|
|
64
|
+
supersededBy?: string;
|
|
65
|
+
detail?: string;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface ExtensionCapability {
|
|
69
|
+
namespace: string;
|
|
70
|
+
ownerEligible: boolean;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export type SessionRegistration = Omit<SessionInfo, "id" | "peerUid" | "trustedLocal"> & {
|
|
74
|
+
extensions?: ExtensionCapability[];
|
|
75
|
+
};
|
|
76
|
+
|
|
30
77
|
export type ClientMessage =
|
|
31
|
-
| { type: "register"; session:
|
|
78
|
+
| { type: "register"; session: SessionRegistration; sessionId?: string; stateId?: string }
|
|
32
79
|
| { type: "unregister" }
|
|
80
|
+
| { type: "extension_capabilities_update"; extensions: ExtensionCapability[] }
|
|
33
81
|
| { type: "list"; requestId: string }
|
|
34
82
|
| { type: "send"; to: string; message: Message }
|
|
35
|
-
| { type: "
|
|
83
|
+
| { type: "message_receipt"; receipt: MessageReceipt }
|
|
84
|
+
| { type: "cancel_message"; messageId: string }
|
|
85
|
+
| { type: "cancel_ask"; messageId: string }
|
|
86
|
+
| { type: "presence"; name?: string; status?: string; model?: string; contextPct?: number | null; contextTokens?: number | null; contextWindow?: number | null }
|
|
87
|
+
| {
|
|
88
|
+
type: "extension_publish";
|
|
89
|
+
namespace: string;
|
|
90
|
+
audience: "owner" | "capable";
|
|
91
|
+
ownerEpoch?: string;
|
|
92
|
+
ownerOnly?: boolean;
|
|
93
|
+
payload: unknown;
|
|
94
|
+
}
|
|
95
|
+
| {
|
|
96
|
+
type: "extension_state_commit";
|
|
97
|
+
namespace: string;
|
|
98
|
+
ownerEpoch: string;
|
|
99
|
+
expectedRevision: number;
|
|
100
|
+
payload: unknown;
|
|
101
|
+
};
|
|
36
102
|
|
|
37
103
|
export type BrokerMessage =
|
|
38
|
-
| { type: "registered"; sessionId: string }
|
|
104
|
+
| { type: "registered"; sessionId: string; features?: string[] }
|
|
39
105
|
| { type: "sessions"; requestId: string; sessions: SessionInfo[] }
|
|
40
106
|
| { type: "message"; from: SessionInfo; message: Message }
|
|
41
107
|
| { type: "presence_update"; session: SessionInfo }
|
|
@@ -43,4 +109,28 @@ export type BrokerMessage =
|
|
|
43
109
|
| { type: "session_left"; sessionId: string }
|
|
44
110
|
| { type: "error"; error: string }
|
|
45
111
|
| { type: "delivered"; messageId: string }
|
|
46
|
-
| { type: "delivery_failed"; messageId: string; reason: string }
|
|
112
|
+
| { type: "delivery_failed"; messageId: string; reason: string }
|
|
113
|
+
| { type: "message_receipt"; from: SessionInfo; receipt: MessageReceipt }
|
|
114
|
+
| { type: "message_control"; from: SessionInfo; control: MessageControl }
|
|
115
|
+
| { type: "extension_owner"; namespace: string; ownerId?: string; ownerEpoch?: string }
|
|
116
|
+
| {
|
|
117
|
+
type: "extension_message";
|
|
118
|
+
namespace: string;
|
|
119
|
+
fromSessionId: string;
|
|
120
|
+
ownerId?: string;
|
|
121
|
+
ownerEpoch?: string;
|
|
122
|
+
payload: unknown;
|
|
123
|
+
}
|
|
124
|
+
| {
|
|
125
|
+
type: "extension_state";
|
|
126
|
+
namespace: string;
|
|
127
|
+
revision: number;
|
|
128
|
+
payload: unknown;
|
|
129
|
+
}
|
|
130
|
+
| {
|
|
131
|
+
type: "extension_state_result";
|
|
132
|
+
namespace: string;
|
|
133
|
+
committed: boolean;
|
|
134
|
+
revision: number;
|
|
135
|
+
reason?: string;
|
|
136
|
+
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Component, TUI } from "@earendil-works/pi-tui";
|
|
2
2
|
import { truncateToWidth, visibleWidth } from "@earendil-works/pi-tui";
|
|
3
3
|
import type { KeybindingsManager, Theme } from "@selesai/code";
|
|
4
|
-
import type { IntercomClient } from "../broker/client.
|
|
5
|
-
import type { SessionInfo } from "../types.
|
|
4
|
+
import type { IntercomClient } from "../broker/client.ts";
|
|
5
|
+
import type { SessionInfo } from "../types.ts";
|
|
6
6
|
|
|
7
7
|
export interface ComposeResult {
|
|
8
8
|
sent: boolean;
|
|
@@ -103,8 +103,12 @@ export class ComposeOverlay implements Component {
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
render(width: number): string[] {
|
|
106
|
-
const innerWidth = Math.max(
|
|
107
|
-
|
|
106
|
+
const innerWidth = Math.max(1, Math.min(width, 72));
|
|
107
|
+
if (innerWidth === 1) {
|
|
108
|
+
return [this.theme.fg("accent", "│")];
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const contentWidth = Math.max(0, innerWidth - 2);
|
|
108
112
|
const footer = `${this.keybindings.getKeys("tui.select.confirm").join("/")}: Send • ${this.keybindings.getKeys("tui.select.cancel").join("/")}: Close`;
|
|
109
113
|
const border = (text: string) => this.theme.fg("accent", text);
|
|
110
114
|
const row = (text = "") => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Component } from "@earendil-works/pi-tui";
|
|
2
2
|
import { truncateToWidth, visibleWidth, wrapTextWithAnsi } from "@earendil-works/pi-tui";
|
|
3
3
|
import type { Theme } from "@selesai/code";
|
|
4
|
-
import type { SessionInfo, Message } from "../types.
|
|
4
|
+
import type { SessionInfo, Message } from "../types.ts";
|
|
5
5
|
|
|
6
6
|
export class InlineMessageComponent implements Component {
|
|
7
7
|
private from: SessionInfo;
|
|
@@ -9,13 +9,26 @@ export class InlineMessageComponent implements Component {
|
|
|
9
9
|
private theme: Theme;
|
|
10
10
|
private replyCommand?: string;
|
|
11
11
|
private bodyText?: string;
|
|
12
|
+
private collapsed: boolean;
|
|
13
|
+
// Caches assume message/bodyText never mutate after construction; theme
|
|
14
|
+
// styling stays outside the caches so live theme changes apply per render.
|
|
15
|
+
private collapsedPreview?: string;
|
|
16
|
+
private wrappedBody?: { width: number; lines: string[] };
|
|
12
17
|
|
|
13
|
-
constructor(
|
|
18
|
+
constructor(
|
|
19
|
+
from: SessionInfo,
|
|
20
|
+
message: Message,
|
|
21
|
+
theme: Theme,
|
|
22
|
+
replyCommand?: string,
|
|
23
|
+
bodyText?: string,
|
|
24
|
+
collapsed = false,
|
|
25
|
+
) {
|
|
14
26
|
this.from = from;
|
|
15
27
|
this.message = message;
|
|
16
28
|
this.theme = theme;
|
|
17
29
|
this.replyCommand = replyCommand;
|
|
18
30
|
this.bodyText = bodyText;
|
|
31
|
+
this.collapsed = collapsed;
|
|
19
32
|
}
|
|
20
33
|
|
|
21
34
|
invalidate(): void {}
|
|
@@ -23,53 +36,76 @@ export class InlineMessageComponent implements Component {
|
|
|
23
36
|
render(width: number): string[] {
|
|
24
37
|
const lines: string[] = [];
|
|
25
38
|
const borderChar = "─";
|
|
39
|
+
const senderName = this.from.name || this.from.id.slice(0, 8);
|
|
26
40
|
if (width < 3) {
|
|
27
|
-
return [truncateToWidth(`From ${
|
|
41
|
+
return [truncateToWidth(`From ${senderName}`, width)];
|
|
28
42
|
}
|
|
29
43
|
const bodyWidth = Math.max(1, width - 2);
|
|
30
44
|
|
|
31
|
-
const senderName = this.from.name || this.from.id.slice(0, 8);
|
|
32
45
|
const header = ` 📨 From: ${senderName} (${this.from.cwd}) `;
|
|
33
|
-
const headerText = truncateToWidth(header, bodyWidth, "");
|
|
46
|
+
const headerText = truncateToWidth(this.collapsed ? `${header} Ctrl+O expands ` : header, bodyWidth, "");
|
|
34
47
|
const headerPadding = Math.max(0, bodyWidth - visibleWidth(headerText));
|
|
35
|
-
lines.push(
|
|
48
|
+
lines.push(
|
|
49
|
+
this.theme.fg("muted", "╭") +
|
|
50
|
+
this.theme.fg("toolTitle", headerText) +
|
|
51
|
+
this.theme.fg("muted", `${borderChar.repeat(headerPadding)}╮`),
|
|
52
|
+
);
|
|
36
53
|
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
const text = truncateToWidth(line, bodyWidth, "");
|
|
54
|
+
const frameLine = (content: string): string => {
|
|
55
|
+
const text = truncateToWidth(content, bodyWidth, "");
|
|
40
56
|
const padding = Math.max(0, bodyWidth - visibleWidth(text));
|
|
41
|
-
|
|
57
|
+
return this.theme.fg("muted", "│") + text + this.theme.fg("muted", `${" ".repeat(padding)}│`);
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
if (this.collapsed) {
|
|
61
|
+
this.collapsedPreview ??= (this.bodyText || this.message.content.text).replace(/\s+/g, " ").trim();
|
|
62
|
+
lines.push(frameLine(this.theme.fg("text", this.collapsedPreview)));
|
|
63
|
+
|
|
64
|
+
const meta: string[] = [];
|
|
65
|
+
if (this.replyCommand) meta.push(`↩ To reply: ${this.replyCommand}`);
|
|
66
|
+
if (this.message.content.attachments?.length) {
|
|
67
|
+
const count = this.message.content.attachments.length;
|
|
68
|
+
meta.push(`📎 ${count} attachment${count === 1 ? "" : "s"}`);
|
|
69
|
+
}
|
|
70
|
+
if (this.message.replyTo && !this.message.expectsReply) meta.push(`↳ Reply to ${this.message.replyTo.slice(0, 8)}`);
|
|
71
|
+
meta.push("Ctrl+O to expand");
|
|
72
|
+
|
|
73
|
+
lines.push(frameLine(this.theme.fg("dim", ` ${meta.join(" · ")}`)));
|
|
74
|
+
lines.push(this.theme.fg("muted", `╰${borderChar.repeat(bodyWidth)}╯`));
|
|
75
|
+
return lines;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (this.wrappedBody?.width !== bodyWidth) {
|
|
79
|
+
this.wrappedBody = {
|
|
80
|
+
width: bodyWidth,
|
|
81
|
+
lines: wrapTextWithAnsi(this.bodyText || this.message.content.text, bodyWidth),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
for (const line of this.wrappedBody.lines) {
|
|
85
|
+
lines.push(frameLine(this.theme.fg("text", line)));
|
|
42
86
|
}
|
|
43
87
|
|
|
44
88
|
if (this.replyCommand) {
|
|
45
|
-
lines.push(
|
|
89
|
+
lines.push(frameLine(""));
|
|
46
90
|
const replyLines = wrapTextWithAnsi(this.theme.fg("dim", ` ↩ To reply: ${this.replyCommand}`), bodyWidth);
|
|
47
91
|
for (const line of replyLines) {
|
|
48
|
-
|
|
49
|
-
const padding = Math.max(0, bodyWidth - visibleWidth(text));
|
|
50
|
-
lines.push(this.theme.fg("accent", `│${text}${" ".repeat(padding)}│`));
|
|
92
|
+
lines.push(frameLine(line));
|
|
51
93
|
}
|
|
52
94
|
}
|
|
53
95
|
|
|
54
96
|
if (this.message.content.attachments?.length) {
|
|
55
|
-
lines.push(
|
|
97
|
+
lines.push(frameLine(""));
|
|
56
98
|
for (const att of this.message.content.attachments) {
|
|
57
|
-
|
|
58
|
-
const text = truncateToWidth(label, bodyWidth, "");
|
|
59
|
-
const padding = Math.max(0, bodyWidth - visibleWidth(text));
|
|
60
|
-
lines.push(this.theme.fg("accent", `│${text}${" ".repeat(padding)}│`));
|
|
99
|
+
lines.push(frameLine(this.theme.fg("dim", ` 📎 ${att.name}`)));
|
|
61
100
|
}
|
|
62
101
|
}
|
|
63
102
|
|
|
64
103
|
if (this.message.replyTo && !this.message.expectsReply) {
|
|
65
|
-
lines.push(
|
|
66
|
-
|
|
67
|
-
const text = truncateToWidth(reply, bodyWidth, "");
|
|
68
|
-
const padding = Math.max(0, bodyWidth - visibleWidth(text));
|
|
69
|
-
lines.push(this.theme.fg("accent", `│${text}${" ".repeat(padding)}│`));
|
|
104
|
+
lines.push(frameLine(""));
|
|
105
|
+
lines.push(frameLine(this.theme.fg("dim", ` ↳ Reply to ${this.message.replyTo.slice(0, 8)}`)));
|
|
70
106
|
}
|
|
71
107
|
|
|
72
|
-
lines.push(this.theme.fg("
|
|
108
|
+
lines.push(this.theme.fg("muted", `╰${borderChar.repeat(bodyWidth)}╯`));
|
|
73
109
|
|
|
74
110
|
return lines;
|
|
75
111
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Component } from "@earendil-works/pi-tui";
|
|
2
2
|
import { truncateToWidth, visibleWidth } from "@earendil-works/pi-tui";
|
|
3
3
|
import type { KeybindingsManager, Theme } from "@selesai/code";
|
|
4
|
-
import type { SessionInfo } from "../types.
|
|
4
|
+
import type { SessionInfo } from "../types.ts";
|
|
5
5
|
|
|
6
6
|
function middleTruncate(text: string, maxWidth: number): string {
|
|
7
7
|
if (visibleWidth(text) <= maxWidth) {
|
|
@@ -101,8 +101,12 @@ export class SessionListOverlay implements Component {
|
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
render(width: number): string[] {
|
|
104
|
-
const innerWidth = Math.max(
|
|
105
|
-
|
|
104
|
+
const innerWidth = Math.max(1, Math.min(width, 88));
|
|
105
|
+
if (innerWidth === 1) {
|
|
106
|
+
return [this.theme.fg("accent", "│")];
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const contentWidth = Math.max(0, innerWidth - 2);
|
|
106
110
|
const footer = `${this.keybindings.getKeys("tui.select.confirm").join("/")}: Message • ${this.keybindings.getKeys("tui.select.cancel").join("/")}: Close`;
|
|
107
111
|
const border = (text: string) => this.theme.fg("accent", text);
|
|
108
112
|
const row = (text = "") => {
|
|
@@ -2,6 +2,91 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.40.0] - 2026-08-01
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- Documented an optional recommended model-tiering setup in the README: fast workhorse, standard well-scoped, deep-but-bounded, and taste/intent tiers, with cross-provider `fallbackModels` guidance for usage-limit resilience.
|
|
9
|
+
- Added `description` to `subagents.agentOverrides` so deployments can replace the discovered description for builtin and custom agents in list output. Thanks to @chronoAP for #724.
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
- Refreshed the bundled `pi-subagents` skill for the 0.39 surface: Fleet inspector live controls (`s` steer, `D` stop), the recommended model-tiering recipe, `agentOverrides.description`, `projectRootResolution: "git-root"`, running-card live-detail/model badges, and the newer extension RPC capability projections (`fleetStatus`, `launchResolvedExtensions`, `runtimeAcknowledgedExtensions`, `(runId, index)` correlation). Corrected the stale README "inspection-only" fleet inspector wording.
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
- Grouped intercom results now report child process status separately from provenance-aware output availability, including salvage guidance when a failed process produced output. Thanks to @youlikemodernart for #727.
|
|
16
|
+
- Collapsed running foreground subagent rows now show the model and thinking level: single-result cards include the effective thinking suffix and parallel/chain rows show the per-child model badge, matching the async widget.
|
|
17
|
+
|
|
18
|
+
## [0.39.0] - 2026-08-01
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
- Added session-scoped `allowedAgents` capability ceilings for restricting launchable agent roles without global agent disabling. Thanks to @aoguai for #719.
|
|
22
|
+
- Added stable foreground result row indexes for correlating child progress and final results. Thanks to @rochecompaan (Patchmill) for #720.
|
|
23
|
+
- Added watchdog current-scope context, optional every-N-tools scope-monitor cadence, and visible main-session blocker auto-follow, inspired by Scopey (github.com/ArchAstro/scopey) by Calvin Grunewald (@CalvinGrunewald).
|
|
24
|
+
- Added optional `runtimeAcknowledgedExtensions` status/result/RPC metadata for cooperating child-runtime extensions that emit `subagent:acknowledge-extension`. Thanks to @saleemlala for #705.
|
|
25
|
+
- Added `/subagents-detach` for detaching the active foreground single-subagent run without terminating the child. Thanks to @magoz for #708/#711.
|
|
26
|
+
- Added agent frontmatter aliases and built-in worker aliases for `developer`, `coder`, `implementer`, and `develop`, while keeping canonical names in execution state. Thanks to @selimerunkut for #695.
|
|
27
|
+
- Added explicit chain approval checkpoints with `{ checkpoint, message? }`, `approve-checkpoint`/`reject-checkpoint` controls, persisted checkpoint status, and terminal `rejected` outcomes. Thanks to @saleemlala for #694.
|
|
28
|
+
- Added optional root `usageBudget` limits for reported token and cost totals, with soft status reporting and hard gating for later child launches without stopping already-running children. Thanks to @saleemlala for #693.
|
|
29
|
+
- Added optional `launchResolvedExtensions` status/result/RPC metadata with opaque launch-resolved child extension identifiers and ambient-extension state. Thanks to @saleemlala for #691.
|
|
30
|
+
- Added Fleet inspector controls to steer the selected live async child and stop its top-level async run with confirmation. Thanks to @saleemlala for #692.
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
- Reduced repeated runtime filesystem work by caching stable Pi config-directory resolution, incrementally sanitizing run history, and limiting nested control-result polling to files created for the active request.
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
- Show per-child async task descriptions in the persistent running-subagents status widget instead of repeating the run-level description for every parallel child.
|
|
37
|
+
- Restored model and thinking-effort badges in the persistent running-subagents status widget.
|
|
38
|
+
- Retained foreground controls until scheduling owners and active children settle, keeping queued foreground work steerable after early result handling. Thanks to @magoz for #708/#709/#710.
|
|
39
|
+
- Render resolved model and thinking effort for active and recent foreground children in Fleet inspector summaries and details. Thanks to @saleemlala for #706.
|
|
40
|
+
- Resynchronized async job control-event scans that resume inside an oversized JSONL record, avoiding malformed-tail parse noise while preserving later control events. Thanks to @vicary for #700.
|
|
41
|
+
- Report signal-terminated child processes with a canonical signal error instead of stderr-tail noise and classify those results separately from ordinary task failures. Thanks to @cking000bigdemon for #688.
|
|
42
|
+
|
|
43
|
+
## [0.38.0] - 2026-07-30
|
|
44
|
+
|
|
45
|
+
### Added
|
|
46
|
+
- Added `j`/`k` navigation aliases to the non-filterable `/subagents-stop` selector and clarify step list while preserving text input in editor and search modes. Thanks to @magoz for #686.
|
|
47
|
+
- Added the optional versioned `fleetStatus` RPC capability with bounded, current-session child roles, goals, model/effort, split token usage, elapsed timestamps, stable opaque reconciliation keys, and explicit overflow counts. Thanks to @neumie for #682.
|
|
48
|
+
|
|
49
|
+
### Fixed
|
|
50
|
+
- Enabled the advertised `j`/`k` navigation aliases after activating the persistent FleetView while leaving printable editor input untouched before activation. Thanks to @magoz for #685.
|
|
51
|
+
- Added opt-in `subagents.projectRootResolution: "git-root"` so monorepos and git worktrees can keep the default nearest-root behavior unless they choose to resolve project packages and `agentOverrides` from the git root. Thanks to @klajdo-f for #677.
|
|
52
|
+
- Recognized structurally compatible custom editors in FleetView focus detection, restoring FleetView arrow-key activation and navigation when a custom editor has focus. Thanks to @magoz for #679.
|
|
53
|
+
- Scoped foreground fleet records to their originating parent session and propagated resolved model, thinking effort, and split input/output usage through live foreground controls.
|
|
54
|
+
- Matched fleet RPC filtering to the canonical session-file identity used by live async and foreground state.
|
|
55
|
+
- Kept pi-intercom stable IDs from leaking into child sessions and used the current intercom runtime ID for unnamed supervisor targets.
|
|
56
|
+
- Improved acceptance policy validation errors and tool-schema guidance for invalid evidence kinds. Thanks to @atimofeev for #672.
|
|
57
|
+
- Tolerated temporary steering inbox scan failures so pending steer requests can be retried on the next poll. Thanks to @hughcars for #670.
|
|
58
|
+
- Retried short, zero-activity child startup exits on the same model with bounded backoff, reducing concurrent subagent launch races without replaying model or tool work. Thanks to @felipeteodorocw for #671.
|
|
59
|
+
- Bounded streamed subagent progress snapshots so a long or deeply nested fan-out no longer emits a `tool_execution_update` line above the child-stdout protocol cap and gets the child killed with `protocol_output_limit`. Streamed `onUpdate` snapshots now carry compact tool-call summaries instead of the full message transcript, cap `recentTools`, and truncate `recentOutput` line length; the returned result and detached-exit recovery keep the full transcript. Thanks to @shaharmor for #680/#681.
|
|
60
|
+
|
|
61
|
+
## [0.37.2] - 2026-07-28
|
|
62
|
+
|
|
63
|
+
### Changed
|
|
64
|
+
- Reduced repeated scanning and file reads in live TUI rendering and skill loading.
|
|
65
|
+
|
|
66
|
+
### Fixed
|
|
67
|
+
- Passed `--no-context-files` to child Pi runs when an agent disables inherited project context, avoiding stale prompt-header parsing as Pi's context block format changes. Thanks to @KorenKrita for #667.
|
|
68
|
+
|
|
69
|
+
## [0.37.1] - 2026-07-27
|
|
70
|
+
|
|
71
|
+
### Added
|
|
72
|
+
- Added package-owned resume control to the extension RPC surface, including preserved revival metadata and native result-delivery controls. Thanks to @shaneconner for #656.
|
|
73
|
+
|
|
74
|
+
### Changed
|
|
75
|
+
- Added a generous 30-minute foreground wall-clock timeout when neither the call nor selected agent provides `timeoutMs`/`maxRuntimeMs`. Explicit call values and agent timeout defaults remain authoritative.
|
|
76
|
+
- Split the bundled `pi-subagents` skill into a short router plus focused reference files to avoid truncation and unnecessary context loading. Thanks to @peedrr for #659.
|
|
77
|
+
- Added `fleetViewPlacement` so the persistent FleetView can be placed above or below the editor. Thanks to @rtbe for #660.
|
|
78
|
+
- Refreshed the bundled `pi-subagents` skill for 0.35–0.37 control and config surface: `/subagents`, `/subagents-stop`, `/subagents-watchdog`, `stop`/`append-step`, parallel `count`, watchdog overview, frontmatter `async`/`timeoutMs`/`turnBudget` defaults, `artifactDir`/`asyncWidget`, fresh/fork badges, and builtin worker/delegate ambient-tool boundaries.
|
|
79
|
+
|
|
80
|
+
### Fixed
|
|
81
|
+
- Suppressed redundant local completion notifications after acknowledged grouped intercom delivery, while preserving fallback notifications when relay delivery is unavailable. Thanks to @Wiandono for #662.
|
|
82
|
+
- Stopped the persistent FleetView from refreshing through a stale extension context after session replacement or reload. Thanks to @kylegl for #657.
|
|
83
|
+
- Invalidated the live Fleet inspector before timer-driven refreshes so cached transcript frames do not repeat stale headers. Thanks to @shaneconner for #661.
|
|
84
|
+
- Removed repository write tools from the bundled planner and marked it read-only so planning-only runs cannot modify project files while producing `plan.md`. Thanks to @DrunkenDonkey80 for #664.
|
|
85
|
+
- Kept async child model inheritance stable after parent continuation so background launches keep using the authenticated parent provider/model. Thanks to @DrunkenDonkey80 for #663.
|
|
86
|
+
- Accepted persisted async recovery descriptors that include the launch contract digest written by async execution. Thanks to @boadij for #654 and #652.
|
|
87
|
+
- Classified verification-only tasks that prohibit product/source/config files as read-only. Thanks to @git-geeky for #648.
|
|
88
|
+
- Matched pi-mcp-adapter metadata cache identity so valid direct MCP tools are not rejected as stale when tool filters, socket transport, URL interpolation, or command-backed secrets are configured. Thanks to @mattrobenolt for #649.
|
|
89
|
+
|
|
5
90
|
## [0.37.0] - 2026-07-25
|
|
6
91
|
|
|
7
92
|
### Added
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Nico Bailon
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|