@fitchmultz/pi-subagents 0.44.7 → 0.45.0
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 +258 -7
- package/LICENSE +1 -0
- package/README.md +58 -1483
- package/agents/context-builder.md +19 -1
- package/agents/debugger.md +10 -3
- package/agents/delegate.md +1 -0
- package/agents/fixer.md +4 -1
- package/agents/oracle.md +13 -2
- package/agents/planner.md +14 -3
- package/agents/researcher.md +11 -2
- package/agents/reviewer-claude.md +11 -2
- package/agents/reviewer-gpt.md +12 -2
- package/agents/reviewer-ponytail.md +11 -1
- package/agents/reviewer-security.md +13 -2
- package/agents/reviewer.md +12 -3
- package/agents/scout.md +12 -1
- package/agents/ui-designer.md +10 -3
- package/agents/watcher.md +1 -0
- package/agents/worker.md +8 -2
- package/agents/writer.md +6 -3
- package/dist/agents/agent-defaults.js +9 -0
- package/dist/agents/agent-definition.js +196 -0
- package/dist/agents/agent-management.js +64 -905
- package/dist/agents/agent-scope.js +4 -2
- package/dist/agents/agent-selection.js +10 -5
- package/dist/agents/agent-serializer.js +55 -67
- package/dist/agents/agents.js +75 -716
- package/dist/agents/builtin-overrides.js +218 -0
- package/dist/agents/chain-serializer.js +3 -367
- package/dist/agents/config-values.js +52 -0
- package/dist/agents/discovery-paths.js +91 -0
- package/dist/agents/frontmatter.js +15 -5
- package/dist/agents/identity.js +25 -8
- package/dist/agents/json-chain.js +254 -0
- package/dist/agents/management-config.js +332 -0
- package/dist/agents/management-format.js +231 -0
- package/dist/agents/management-persistence.js +287 -0
- package/dist/agents/management-targets.js +136 -0
- package/dist/agents/management-warnings.js +81 -0
- package/dist/agents/markdown-chain.js +210 -0
- package/dist/agents/package-agents.js +154 -0
- package/dist/agents/skill-files.js +157 -0
- package/dist/agents/skill-search-paths.js +246 -0
- package/dist/agents/skill-types.js +1 -0
- package/dist/agents/skills.js +54 -499
- package/dist/extension/acceptance-schema.js +55 -0
- package/dist/extension/build-info.js +1 -1
- package/dist/extension/chain-schema.js +196 -0
- package/dist/extension/child-runtime.js +237 -0
- package/dist/extension/compact-tools.js +122 -51
- package/dist/extension/config-schema.js +29 -0
- package/dist/extension/config.js +27 -11
- package/dist/extension/control-notice-schema.js +37 -0
- package/dist/extension/control-notices.js +13 -6
- package/dist/extension/delegation-bridges.js +43 -0
- package/dist/extension/doctor.js +48 -25
- package/dist/extension/everyday-schemas.js +207 -0
- package/dist/extension/fanout-child.js +18 -319
- package/dist/extension/index.js +8 -563
- package/dist/extension/message-renderers.js +225 -0
- package/dist/extension/nested-control-inbox.js +154 -0
- package/dist/extension/parent-runtime.js +339 -0
- package/dist/extension/primary-tool.js +69 -0
- package/dist/extension/result-snapshot.js +22 -0
- package/dist/extension/runtime-reload.js +62 -0
- package/dist/extension/runtime-storage.js +43 -0
- package/dist/extension/schema-overrides.js +75 -0
- package/dist/extension/schemas.js +265 -336
- package/dist/extension/tool-input.js +27 -12
- package/dist/extension/tool-result.js +19 -4
- package/dist/history/answer-texts.js +57 -0
- package/dist/history/canonical-result.js +76 -43
- package/dist/history/canonical-selection.js +40 -0
- package/dist/history/database-generation.js +82 -0
- package/dist/history/database.js +57 -33
- package/dist/history/entry-ingestion.js +61 -0
- package/dist/history/index.js +242 -97
- package/dist/history/ingest.js +168 -331
- package/dist/history/output-digests.js +40 -0
- package/dist/history/preview.js +210 -0
- package/dist/history/prune.js +33 -0
- package/dist/history/queries.js +60 -349
- package/dist/history/query-scope.js +190 -0
- package/dist/history/rows.js +77 -0
- package/dist/history/run-projection.js +137 -0
- package/dist/history/run-queries.js +153 -0
- package/dist/history/schema.js +31 -0
- package/dist/history/search-queries.js +163 -0
- package/dist/history/selected-record.js +108 -0
- package/dist/history/source-file.js +45 -0
- package/dist/history/source-watches.js +141 -0
- package/dist/history/store.js +164 -153
- package/dist/history/text-chunks.js +169 -0
- package/dist/history/text.js +35 -0
- package/dist/history/transcript-queries.js +177 -0
- package/dist/history/types.js +5 -1
- package/dist/history/values.js +36 -0
- package/dist/history/wire-inputs.js +122 -0
- package/dist/history/wire-models.js +38 -0
- package/dist/history/worker-runtime.js +441 -0
- package/dist/history/worker.js +66 -462
- package/dist/intercom/intercom-bridge.js +48 -20
- package/dist/intercom/live-intercom.js +80 -23
- package/dist/intercom/nested-result-tree.js +163 -0
- package/dist/intercom/result-delivery.js +40 -0
- package/dist/intercom/result-intercom.js +178 -261
- package/dist/pi-intercom/agent-dir.js +7 -3
- package/dist/pi-intercom/async.js +27 -0
- package/dist/pi-intercom/bridge-ask.js +57 -0
- package/dist/pi-intercom/bridge-config.js +79 -0
- package/dist/pi-intercom/bridge-http.js +86 -0
- package/dist/pi-intercom/bridge-protocol.js +106 -0
- package/dist/pi-intercom/bridge-routes.js +64 -0
- package/dist/pi-intercom/bridge-session.js +416 -0
- package/dist/pi-intercom/bridge.js +182 -603
- package/dist/pi-intercom/broker/broker.js +236 -244
- package/dist/pi-intercom/broker/client.js +189 -304
- package/dist/pi-intercom/broker/connection.js +165 -0
- package/dist/pi-intercom/broker/framing.js +5 -3
- package/dist/pi-intercom/broker/paths.js +4 -1
- package/dist/pi-intercom/broker/pid.js +53 -25
- package/dist/pi-intercom/broker/snapshot-reader.js +78 -0
- package/dist/pi-intercom/broker/snapshots.js +188 -0
- package/dist/pi-intercom/broker/spawn.js +36 -25
- package/dist/pi-intercom/config.js +85 -71
- package/dist/pi-intercom/connection.js +297 -0
- package/dist/pi-intercom/identity.js +58 -0
- package/dist/pi-intercom/inbound-delivery.js +356 -0
- package/dist/pi-intercom/inbound-journal.js +303 -0
- package/dist/pi-intercom/inbound-record.js +113 -0
- package/dist/pi-intercom/inbound.js +179 -0
- package/dist/pi-intercom/index.js +79 -2933
- package/dist/pi-intercom/inspection.js +62 -0
- package/dist/pi-intercom/interview.js +236 -0
- package/dist/pi-intercom/lifecycle.js +168 -0
- package/dist/pi-intercom/message-format.js +69 -0
- package/dist/pi-intercom/outbound.js +304 -0
- package/dist/pi-intercom/peer-awareness.js +66 -0
- package/dist/pi-intercom/reply-tracker.js +62 -43
- package/dist/pi-intercom/reply-wait.js +201 -0
- package/dist/pi-intercom/runtime-types.js +3 -0
- package/dist/pi-intercom/session-events.js +180 -0
- package/dist/pi-intercom/session-targets.js +42 -34
- package/dist/pi-intercom/subagent-events.js +238 -0
- package/dist/pi-intercom/subagent-live-events.js +129 -86
- package/dist/pi-intercom/supervisor.js +282 -0
- package/dist/pi-intercom/tool-arguments.js +74 -0
- package/dist/pi-intercom/tool-registration.js +95 -0
- package/dist/pi-intercom/tool-results.js +38 -0
- package/dist/pi-intercom/tool-schemas.js +82 -0
- package/dist/pi-intercom/tools.js +51 -0
- package/dist/pi-intercom/topic-actions.js +177 -0
- package/dist/pi-intercom/topics.js +177 -92
- package/dist/pi-intercom/transport.js +1 -0
- package/dist/pi-intercom/types.js +151 -114
- package/dist/pi-intercom/ui/compose-paste.js +93 -0
- package/dist/pi-intercom/ui/compose.js +121 -143
- package/dist/pi-intercom/ui/inline-message.js +59 -59
- package/dist/pi-intercom/ui/message-renderers.js +147 -0
- package/dist/pi-intercom/ui/overlay.js +181 -0
- package/dist/pi-intercom/ui/session-format.js +124 -0
- package/dist/pi-intercom/ui/session-list.js +76 -43
- package/dist/pi-intercom/ui/tool-renderers.js +110 -0
- package/dist/pi-intercom/ui/topic-view.js +88 -0
- package/dist/pi-intercom/validation.js +59 -0
- package/dist/runs/background/async-chain-plan.js +265 -0
- package/dist/runs/background/async-control.js +134 -58
- package/dist/runs/background/async-execution.js +136 -633
- package/dist/runs/background/async-job-admission.js +40 -0
- package/dist/runs/background/async-job-projection.js +169 -0
- package/dist/runs/background/async-job-tracker.js +297 -327
- package/dist/runs/background/async-launch.js +216 -0
- package/dist/runs/background/async-plan.js +116 -0
- package/dist/runs/background/async-result-file.js +47 -23
- package/dist/runs/background/async-resume.js +195 -253
- package/dist/runs/background/async-run-discovery.js +213 -0
- package/dist/runs/background/async-run-location.js +135 -0
- package/dist/runs/background/async-run-record.js +1 -0
- package/dist/runs/background/async-run-repair.js +223 -0
- package/dist/runs/background/async-run-summary.js +1 -0
- package/dist/runs/background/async-single-plan.js +105 -0
- package/dist/runs/background/async-status-projection.js +155 -0
- package/dist/runs/background/async-status-render.js +117 -0
- package/dist/runs/background/async-status-validation.js +181 -0
- package/dist/runs/background/async-status.js +3 -442
- package/dist/runs/background/async-value.js +21 -0
- package/dist/runs/background/completion-dedupe.js +36 -12
- package/dist/runs/background/completion-delivery.js +211 -205
- package/dist/runs/background/completion-receipts.js +237 -0
- package/dist/runs/background/legacy-status-acceptance.js +34 -0
- package/dist/runs/background/notify.js +96 -48
- package/dist/runs/background/parallel-groups.js +36 -19
- package/dist/runs/background/result-payload.js +178 -0
- package/dist/runs/background/result-watcher.js +348 -339
- package/dist/runs/background/run-id-resolver.js +53 -33
- package/dist/runs/background/run-schemas.js +189 -0
- package/dist/runs/background/run-status-contracts.js +14 -0
- package/dist/runs/background/run-status-render.js +270 -0
- package/dist/runs/background/run-status.js +231 -339
- package/dist/runs/background/runner-attempt-output.js +155 -0
- package/dist/runs/background/runner-attempt.js +263 -0
- package/dist/runs/background/runner-child-executor.js +166 -0
- package/dist/runs/background/runner-child-observer.js +192 -0
- package/dist/runs/background/runner-completion-summary.js +71 -0
- package/dist/runs/background/runner-completion.js +211 -0
- package/dist/runs/background/runner-config.js +1 -0
- package/dist/runs/background/runner-contract.js +1 -0
- package/dist/runs/background/runner-dynamic.js +121 -0
- package/dist/runs/background/runner-finalization.js +149 -0
- package/dist/runs/background/runner-graph.js +68 -0
- package/dist/runs/background/runner-initial-status.js +60 -0
- package/dist/runs/background/runner-lifecycle.js +142 -0
- package/dist/runs/background/runner-monitor.js +309 -0
- package/dist/runs/background/runner-parallel.js +204 -0
- package/dist/runs/background/runner-prepare-step.js +86 -0
- package/dist/runs/background/runner-reporting.js +153 -0
- package/dist/runs/background/runner-status.js +148 -0
- package/dist/runs/background/runner-step-output.js +92 -0
- package/dist/runs/background/runner-step-record.js +45 -0
- package/dist/runs/background/runner-step.js +112 -0
- package/dist/runs/background/runner-streaming.js +173 -0
- package/dist/runs/background/runner-workflow.js +213 -0
- package/dist/runs/background/stale-run-reconciler.js +155 -292
- package/dist/runs/background/subagent-runner-launcher.js +33 -13
- package/dist/runs/background/subagent-runner.js +51 -1842
- package/dist/runs/background/top-level-async.js +2 -1
- package/dist/runs/foreground/chain-clarify.js +293 -1017
- package/dist/runs/foreground/clarification-draft.js +87 -0
- package/dist/runs/foreground/clarify-contracts.js +1 -0
- package/dist/runs/foreground/clarify-invocation.js +129 -38
- package/dist/runs/foreground/clarify-text-editor.js +210 -0
- package/dist/runs/foreground/clarify-view.js +167 -0
- package/dist/runs/foreground/execution-input.js +226 -353
- package/dist/runs/foreground/execution-routing.js +33 -0
- package/dist/runs/foreground/execution-timeout.js +81 -0
- package/dist/runs/foreground/foreground-control.js +222 -763
- package/dist/runs/foreground/foreground-memory.js +99 -0
- package/dist/runs/foreground/invocation-context.js +55 -0
- package/dist/runs/foreground/invocation-execution.js +331 -0
- package/dist/runs/foreground/invocation-expansion.js +48 -0
- package/dist/runs/foreground/management-actions.js +295 -0
- package/dist/runs/foreground/nested-control.js +179 -0
- package/dist/runs/foreground/question-continuation.js +78 -0
- package/dist/runs/foreground/question-control.js +155 -50
- package/dist/runs/foreground/resume-target.js +221 -0
- package/dist/runs/foreground/revival-launch-policy.js +58 -0
- package/dist/runs/foreground/run-async-path.js +190 -178
- package/dist/runs/foreground/run-interrupt.js +164 -0
- package/dist/runs/foreground/run-nudge.js +278 -0
- package/dist/runs/foreground/saved-revival.js +251 -0
- package/dist/runs/foreground/subagent-executor.js +135 -424
- package/dist/runs/foreground/subagent-params.js +67 -30
- package/dist/runs/foreground/wait-observation.js +104 -0
- package/dist/runs/foreground/wait-registration.js +17 -0
- package/dist/runs/foreground/wait-run.js +283 -123
- package/dist/runs/shared/acceptance-contract.js +193 -99
- package/dist/runs/shared/acceptance-defaults.js +1 -0
- package/dist/runs/shared/acceptance-evaluation.js +201 -181
- package/dist/runs/shared/acceptance-finalization.js +256 -180
- package/dist/runs/shared/acceptance-outcome.js +53 -0
- package/dist/runs/shared/acceptance-reports.js +137 -72
- package/dist/runs/shared/acceptance-submission.js +167 -0
- package/dist/runs/shared/acceptance-verification.js +100 -0
- package/dist/runs/shared/chain-outputs.js +80 -52
- package/dist/runs/shared/child-attempt-types.js +1 -0
- package/dist/runs/shared/child-attempt.js +314 -667
- package/dist/runs/shared/child-boundaries.js +173 -0
- package/dist/runs/shared/child-context-filter.js +44 -0
- package/dist/runs/shared/child-event-observer.js +390 -0
- package/dist/runs/shared/child-execution-cwd.js +73 -43
- package/dist/runs/shared/child-execution-outcome.js +72 -0
- package/dist/runs/shared/child-invocation.js +54 -0
- package/dist/runs/shared/child-message-validation.js +215 -0
- package/dist/runs/shared/child-native-accounting.js +106 -0
- package/dist/runs/shared/child-native-observation.js +69 -0
- package/dist/runs/shared/child-observation-spool.js +164 -0
- package/dist/runs/shared/child-observations.js +157 -76
- package/dist/runs/shared/child-presence.js +3 -0
- package/dist/runs/shared/child-route-env.js +119 -0
- package/dist/runs/shared/child-stream-observer.js +221 -0
- package/dist/runs/shared/child-stream-projection.js +137 -0
- package/dist/runs/shared/child-structured-tool.js +27 -0
- package/dist/runs/shared/claude-code.js +121 -158
- package/dist/runs/shared/claude-model.js +42 -0
- package/dist/runs/shared/claude-session.js +83 -0
- package/dist/runs/shared/claude-types.js +1 -0
- package/dist/runs/shared/completion-guard.js +18 -18
- package/dist/runs/shared/control-event-policy.js +8 -0
- package/dist/runs/shared/control-notification-owner.js +13 -0
- package/dist/runs/shared/dynamic-fanout.js +188 -173
- package/dist/runs/shared/dynamic-item.js +102 -0
- package/dist/runs/shared/history-index.js +62 -36
- package/dist/runs/shared/legacy-async-recovery.js +114 -0
- package/dist/runs/shared/legacy-output-recovery.js +148 -0
- package/dist/runs/shared/mcp-config-schema.js +36 -0
- package/dist/runs/shared/mcp-direct-tool-allowlist.js +147 -116
- package/dist/runs/shared/model-fallback.js +97 -38
- package/dist/runs/shared/mutating-tool-guard.js +128 -88
- package/dist/runs/shared/native-finalization-types.js +1 -0
- package/dist/runs/shared/native-finalization.js +155 -76
- package/dist/runs/shared/native-usage.js +238 -98
- package/dist/runs/shared/nested-control-records.js +128 -0
- package/dist/runs/shared/nested-events.js +8 -700
- package/dist/runs/shared/nested-path.js +32 -28
- package/dist/runs/shared/nested-projection.js +155 -0
- package/dist/runs/shared/nested-protocol.js +18 -0
- package/dist/runs/shared/nested-registry.js +191 -0
- package/dist/runs/shared/nested-render.js +106 -58
- package/dist/runs/shared/nested-route.js +220 -0
- package/dist/runs/shared/nested-validation.js +216 -0
- package/dist/runs/shared/owned-child-evidence.js +125 -0
- package/dist/runs/shared/owned-run-list.js +146 -0
- package/dist/runs/shared/owned-run-observation.js +267 -0
- package/dist/runs/shared/owned-run-progress.js +109 -0
- package/dist/runs/shared/owned-run-read-state.js +1 -0
- package/dist/runs/shared/owned-run-results.js +202 -0
- package/dist/runs/shared/owned-run-status.js +180 -0
- package/dist/runs/shared/owned-run-view.js +51 -0
- package/dist/runs/shared/owned-workflow-details.js +17 -0
- package/dist/runs/shared/owner-output.js +43 -0
- package/dist/runs/shared/parallel-utils.js +36 -28
- package/dist/runs/shared/parent-receipts.js +90 -32
- package/dist/runs/shared/parent-usage.js +169 -57
- package/dist/runs/shared/pi-args.js +108 -201
- package/dist/runs/shared/pi-launch-input.js +1 -0
- package/dist/runs/shared/pi-session-launch.js +86 -0
- package/dist/runs/shared/pi-spawn.js +35 -21
- package/dist/runs/shared/run-history-queries.js +126 -35
- package/dist/runs/shared/run-history.js +101 -35
- package/dist/runs/shared/run-metadata-paths.js +14 -0
- package/dist/runs/shared/run-metadata.js +158 -0
- package/dist/runs/shared/run-persistence.js +131 -0
- package/dist/runs/shared/run-records.js +9 -679
- package/dist/runs/shared/run-restoration.js +338 -0
- package/dist/runs/shared/run-state-owner.js +26 -0
- package/dist/runs/shared/session-cwd-preload.js +27 -18
- package/dist/runs/shared/single-output.js +148 -70
- package/dist/runs/shared/stable-value.js +15 -0
- package/dist/runs/shared/streaming-text.js +23 -12
- package/dist/runs/shared/structured-output.js +25 -13
- package/dist/runs/shared/subagent-control.js +167 -100
- package/dist/runs/shared/subagent-prompt-runtime.js +27 -130
- package/dist/runs/shared/subagent-tool-loop-guard.js +81 -52
- package/dist/runs/shared/supervisor-question-state.js +145 -0
- package/dist/runs/shared/supervisor-questions.js +185 -254
- package/dist/runs/shared/workflow-graph.js +259 -167
- package/dist/runs/shared/workflow-policy.js +120 -48
- package/dist/runs/shared/worktree-contract.js +1 -0
- package/dist/runs/shared/worktree-hook.js +138 -0
- package/dist/runs/shared/worktree-location.js +47 -0
- package/dist/runs/shared/worktree-preservation.js +8 -0
- package/dist/runs/shared/worktree-process.js +107 -0
- package/dist/runs/shared/worktree.js +183 -322
- package/dist/shared/agent-context-policy.js +34 -44
- package/dist/shared/agent-dir.js +14 -0
- package/dist/shared/artifacts.js +30 -12
- package/dist/shared/atomic-json.js +4 -1
- package/dist/shared/chain-files.js +72 -0
- package/dist/shared/concurrency.js +18 -0
- package/dist/shared/content-preview.js +115 -0
- package/dist/shared/cooperative.js +5 -2
- package/dist/shared/execution-cwd.js +13 -5
- package/dist/shared/file-coalescer.js +2 -1
- package/dist/shared/fork-context.js +10 -12
- package/dist/shared/formatters.js +45 -19
- package/dist/shared/journal-frames.js +164 -0
- package/dist/shared/journal-projections.js +121 -0
- package/dist/shared/journal-reader.js +6 -407
- package/dist/shared/json-projection.js +191 -0
- package/dist/shared/lazy-tools.js +19 -8
- package/dist/shared/message-output.js +116 -0
- package/dist/shared/model-info.js +31 -14
- package/dist/shared/native-import.js +20 -0
- package/dist/shared/native-journal.js +140 -0
- package/dist/shared/native-session.js +5 -2
- package/dist/shared/native-tui.js +7 -2
- package/dist/shared/native-typebox.js +15 -3
- package/dist/shared/output-page.js +63 -0
- package/dist/shared/post-exit-stdio-guard.js +128 -88
- package/dist/shared/prompt-sections.js +2 -0
- package/dist/shared/session-entries.js +70 -35
- package/dist/shared/session-identity.js +5 -3
- package/dist/shared/settings.js +62 -192
- package/dist/shared/status-format.js +97 -37
- package/dist/shared/task-file-policy.js +24 -0
- package/dist/shared/temp-root.js +44 -15
- package/dist/shared/types/acceptance.js +1 -0
- package/dist/shared/types/async.js +1 -0
- package/dist/shared/types/config.js +1 -0
- package/dist/shared/types/details.js +1 -0
- package/dist/shared/types/history.js +1 -0
- package/dist/shared/types/inputs.js +1 -0
- package/dist/shared/types/intercom.js +1 -0
- package/dist/shared/types/launch.js +1 -0
- package/dist/shared/types/messages.js +1 -0
- package/dist/shared/types/nested.js +1 -0
- package/dist/shared/types/owned-runs.js +1 -0
- package/dist/shared/types/progress.js +1 -0
- package/dist/shared/types/questions.js +1 -0
- package/dist/shared/types/results.js +1 -0
- package/dist/shared/types/state.js +1 -0
- package/dist/shared/types/usage.js +1 -0
- package/dist/shared/types/workflow.js +1 -0
- package/dist/shared/types.js +75 -30
- package/dist/shared/unknown.js +52 -0
- package/dist/shared/utils.js +54 -260
- package/dist/slash/command-discovery.js +82 -0
- package/dist/slash/command-input.js +190 -0
- package/dist/slash/prompt-template-bridge.js +94 -270
- package/dist/slash/prompt-template-contract.js +77 -0
- package/dist/slash/prompt-template-results.js +125 -0
- package/dist/slash/request-protocol.js +68 -0
- package/dist/slash/result-delivery.js +237 -0
- package/dist/slash/saved-chain.js +78 -0
- package/dist/slash/slash-bridge.js +123 -89
- package/dist/slash/slash-commands.js +101 -572
- package/dist/slash/slash-live-state.js +68 -47
- package/dist/tui/action-hints.js +50 -22
- package/dist/tui/activity-lines.js +32 -0
- package/dist/tui/agent-browser.js +290 -0
- package/dist/tui/agent-controls.js +289 -0
- package/dist/tui/agent-conversation.js +444 -0
- package/dist/tui/agent-dock.js +171 -0
- package/dist/tui/agent-history.js +50 -183
- package/dist/tui/agent-model.js +62 -0
- package/dist/tui/agent-picker.js +262 -0
- package/dist/tui/agent-view.js +232 -1564
- package/dist/tui/compact-results.js +193 -0
- package/dist/tui/conversation-details.js +190 -0
- package/dist/tui/conversation-frame.js +135 -0
- package/dist/tui/conversation-history.js +201 -0
- package/dist/tui/conversation-menu.js +78 -0
- package/dist/tui/conversation-notices.js +79 -0
- package/dist/tui/conversation-selection.js +58 -0
- package/dist/tui/conversation-viewport.js +129 -0
- package/dist/tui/direction-message.js +27 -0
- package/dist/tui/display.js +282 -0
- package/dist/tui/editor-viewport.js +18 -0
- package/dist/tui/expanded-content.js +87 -0
- package/dist/tui/expanded-multi.js +170 -0
- package/dist/tui/expanded-single.js +65 -0
- package/dist/tui/history-cards.js +216 -0
- package/dist/tui/history-display.js +238 -0
- package/dist/tui/history-json.js +16 -0
- package/dist/tui/history-metadata.js +152 -0
- package/dist/tui/history-record.js +251 -0
- package/dist/tui/history-text.js +34 -0
- package/dist/tui/indexed-history.js +116 -0
- package/dist/tui/nested-widget.js +120 -0
- package/dist/tui/picker-page.js +59 -0
- package/dist/tui/render.js +58 -1501
- package/dist/tui/result-facts.js +64 -0
- package/dist/tui/task-observation.js +59 -0
- package/dist/tui/task-store.js +366 -0
- package/dist/tui/text-values.js +16 -0
- package/dist/tui/view-connections.js +47 -0
- package/dist/tui/view-model.js +94 -0
- package/dist/tui/view-persistence.js +51 -0
- package/dist/tui/view-ports.js +1 -0
- package/dist/tui/view-session.js +37 -0
- package/dist/tui/widget-details.js +144 -0
- package/dist/tui/widget-status.js +245 -0
- package/dist/tui/widget.js +145 -0
- package/dist/tui/workflow-labels.js +223 -0
- package/dist/tui/workflow-outcomes.js +124 -0
- package/docs/code-quality.md +38 -0
- package/docs/development.md +99 -0
- package/docs/intercom-bridge.md +22 -17
- package/docs/intercom.md +132 -106
- package/docs/performance.md +19 -17
- package/docs/reference.md +1472 -0
- package/generated/RunValidators.d.ts +28 -0
- package/generated/RunValidators.js +2 -0
- package/package.json +27 -6
- package/prompts/parallel-cleanup.md +3 -0
- package/prompts/parallel-context-build.md +3 -0
- package/prompts/parallel-handoff-plan.md +6 -0
- package/prompts/parallel-research.md +4 -0
- package/prompts/parallel-review.md +2 -0
- package/prompts/review-loop.md +2 -0
- package/scripts/build.mjs +129 -85
- package/scripts/check-compat.mjs +48 -11
- package/scripts/compat-host.mjs +35 -7
- package/scripts/generate-run-schemas.mjs +210 -0
- package/scripts/intercom-bridge-credentials.mjs +155 -28
- package/scripts/intercom-remote.mjs +175 -50
- package/scripts/local-install-smoke.mjs +47 -37
- package/scripts/native-package-smoke.mjs +135 -25
- package/scripts/package-smoke.mjs +360 -140
- package/scripts/prepare.mjs +54 -34
- package/scripts/real-pi-processes.mjs +261 -0
- package/scripts/real-pi-smoke.mjs +432 -351
- package/scripts/run-tests.mjs +29 -15
- package/skills/pi-intercom/SKILL.md +11 -11
- package/skills/pi-intercom/references/peer-sessions.md +7 -2
- package/skills/pi-subagents/SKILL.md +1 -1
- package/skills/pi-subagents/references/full-orchestration-guide.md +254 -112
- package/src/agents/agent-defaults.ts +13 -0
- package/src/agents/agent-definition.ts +253 -0
- package/src/agents/agent-management.ts +111 -808
- package/src/agents/agent-scope.ts +7 -3
- package/src/agents/agent-selection.ts +26 -16
- package/src/agents/agent-serializer.ts +84 -93
- package/src/agents/agents.ts +199 -906
- package/src/agents/builtin-overrides.ts +297 -0
- package/src/agents/chain-serializer.ts +3 -329
- package/src/agents/config-values.ts +57 -0
- package/src/agents/discovery-paths.ts +134 -0
- package/src/agents/frontmatter.ts +35 -17
- package/src/agents/identity.ts +49 -18
- package/src/agents/json-chain.ts +305 -0
- package/src/agents/management-config.ts +342 -0
- package/src/agents/management-format.ts +243 -0
- package/src/agents/management-persistence.ts +408 -0
- package/src/agents/management-targets.ts +260 -0
- package/src/agents/management-warnings.ts +115 -0
- package/src/agents/markdown-chain.ts +237 -0
- package/src/agents/package-agents.ts +231 -0
- package/src/agents/skill-files.ts +182 -0
- package/src/agents/skill-search-paths.ts +289 -0
- package/src/agents/skill-types.ts +31 -0
- package/src/agents/skills.ts +152 -610
- package/src/extension/acceptance-schema.ts +88 -0
- package/src/extension/chain-schema.ts +276 -0
- package/src/extension/child-runtime.ts +302 -0
- package/src/extension/compact-tools.ts +259 -102
- package/src/extension/config-schema.ts +59 -0
- package/src/extension/config.ts +39 -17
- package/src/extension/control-notice-schema.ts +55 -0
- package/src/extension/control-notices.ts +57 -33
- package/src/extension/delegation-bridges.ts +59 -0
- package/src/extension/doctor.ts +171 -135
- package/src/extension/everyday-schemas.ts +252 -0
- package/src/extension/fanout-child.ts +29 -308
- package/src/extension/index.ts +17 -642
- package/src/extension/message-renderers.ts +334 -0
- package/src/extension/nested-control-inbox.ts +196 -0
- package/src/extension/parent-runtime.ts +405 -0
- package/src/extension/primary-tool.ts +130 -0
- package/src/extension/result-snapshot.ts +35 -0
- package/src/extension/runtime-reload.ts +72 -0
- package/src/extension/runtime-storage.ts +49 -0
- package/src/extension/schema-overrides.ts +114 -0
- package/src/extension/schemas.ts +451 -418
- package/src/extension/tool-input.ts +40 -13
- package/src/extension/tool-result.ts +45 -14
- package/src/history/answer-texts.ts +74 -0
- package/src/history/canonical-result.ts +127 -51
- package/src/history/canonical-selection.ts +54 -0
- package/src/history/database-generation.ts +86 -0
- package/src/history/database.ts +86 -48
- package/src/history/entry-ingestion.ts +129 -0
- package/src/history/index.ts +426 -148
- package/src/history/ingest.ts +372 -342
- package/src/history/output-digests.ts +41 -0
- package/src/history/preview.ts +235 -0
- package/src/history/prune.ts +48 -0
- package/src/history/queries.ts +122 -256
- package/src/history/query-scope.ts +278 -0
- package/src/history/rows.ts +118 -0
- package/src/history/run-projection.ts +164 -0
- package/src/history/run-queries.ts +199 -0
- package/src/history/schema.ts +34 -0
- package/src/history/search-queries.ts +216 -0
- package/src/history/selected-record.ts +140 -0
- package/src/history/source-file.ts +51 -0
- package/src/history/source-watches.ts +156 -0
- package/src/history/store.ts +310 -197
- package/src/history/text-chunks.ts +181 -0
- package/src/history/text.ts +43 -0
- package/src/history/transcript-queries.ts +251 -0
- package/src/history/types.ts +27 -164
- package/src/history/values.ts +36 -0
- package/src/history/wire-inputs.ts +141 -0
- package/src/history/wire-models.ts +51 -0
- package/src/history/worker-runtime.ts +502 -0
- package/src/history/worker.ts +94 -336
- package/src/intercom/intercom-bridge.ts +136 -69
- package/src/intercom/live-intercom.ts +197 -92
- package/src/intercom/nested-result-tree.ts +213 -0
- package/src/intercom/result-delivery.ts +56 -0
- package/src/intercom/result-intercom.ts +364 -382
- package/src/pi-intercom/agent-dir.ts +9 -3
- package/src/pi-intercom/async.ts +33 -0
- package/src/pi-intercom/bridge-ask.ts +64 -0
- package/src/pi-intercom/bridge-config.ts +101 -0
- package/src/pi-intercom/bridge-http.ts +97 -0
- package/src/pi-intercom/bridge-protocol.ts +123 -0
- package/src/pi-intercom/bridge-routes.ts +90 -0
- package/src/pi-intercom/bridge-session.ts +506 -0
- package/src/pi-intercom/bridge.ts +258 -547
- package/src/pi-intercom/broker/broker.ts +326 -263
- package/src/pi-intercom/broker/client.ts +273 -354
- package/src/pi-intercom/broker/connection.ts +192 -0
- package/src/pi-intercom/broker/framing.ts +11 -6
- package/src/pi-intercom/broker/paths.ts +28 -25
- package/src/pi-intercom/broker/pid.ts +68 -24
- package/src/pi-intercom/broker/snapshot-reader.ts +91 -0
- package/src/pi-intercom/broker/snapshots.ts +241 -0
- package/src/pi-intercom/broker/spawn.ts +58 -34
- package/src/pi-intercom/config.ts +113 -108
- package/src/pi-intercom/connection.ts +346 -0
- package/src/pi-intercom/identity.ts +71 -0
- package/src/pi-intercom/inbound-delivery.ts +450 -0
- package/src/pi-intercom/inbound-journal.ts +350 -0
- package/src/pi-intercom/inbound-record.ts +141 -0
- package/src/pi-intercom/inbound.ts +237 -0
- package/src/pi-intercom/index.ts +86 -2923
- package/src/pi-intercom/inspection.ts +82 -0
- package/src/pi-intercom/interview.ts +295 -0
- package/src/pi-intercom/lifecycle.ts +183 -0
- package/src/pi-intercom/message-format.ts +77 -0
- package/src/pi-intercom/outbound.ts +418 -0
- package/src/pi-intercom/peer-awareness.ts +84 -0
- package/src/pi-intercom/reply-tracker.ts +121 -59
- package/src/pi-intercom/reply-wait.ts +247 -0
- package/src/pi-intercom/runtime-types.ts +97 -0
- package/src/pi-intercom/session-events.ts +247 -0
- package/src/pi-intercom/session-targets.ts +124 -72
- package/src/pi-intercom/subagent-events.ts +299 -0
- package/src/pi-intercom/subagent-live-events.ts +212 -109
- package/src/pi-intercom/supervisor.ts +362 -0
- package/src/pi-intercom/tool-arguments.ts +120 -0
- package/src/pi-intercom/tool-registration.ts +121 -0
- package/src/pi-intercom/tool-results.ts +54 -0
- package/src/pi-intercom/tool-schemas.ts +134 -0
- package/src/pi-intercom/tools.ts +80 -0
- package/src/pi-intercom/topic-actions.ts +243 -0
- package/src/pi-intercom/topics.ts +267 -121
- package/src/pi-intercom/transport.ts +14 -0
- package/src/pi-intercom/types.ts +288 -190
- package/src/pi-intercom/ui/compose-paste.ts +109 -0
- package/src/pi-intercom/ui/compose.ts +173 -157
- package/src/pi-intercom/ui/inline-message.ts +80 -62
- package/src/pi-intercom/ui/message-renderers.ts +182 -0
- package/src/pi-intercom/ui/overlay.ts +238 -0
- package/src/pi-intercom/ui/session-format.ts +146 -0
- package/src/pi-intercom/ui/session-list.ts +145 -62
- package/src/pi-intercom/ui/tool-renderers.ts +148 -0
- package/src/pi-intercom/ui/topic-view.ts +107 -0
- package/src/pi-intercom/validation.ts +69 -0
- package/src/runs/background/async-chain-plan.ts +451 -0
- package/src/runs/background/async-control.ts +201 -71
- package/src/runs/background/async-execution.ts +206 -829
- package/src/runs/background/async-job-admission.ts +54 -0
- package/src/runs/background/async-job-projection.ts +225 -0
- package/src/runs/background/async-job-tracker.ts +416 -360
- package/src/runs/background/async-launch.ts +319 -0
- package/src/runs/background/async-plan.ts +285 -0
- package/src/runs/background/async-result-file.ts +79 -37
- package/src/runs/background/async-resume.ts +338 -285
- package/src/runs/background/async-run-discovery.ts +270 -0
- package/src/runs/background/async-run-location.ts +194 -0
- package/src/runs/background/async-run-record.ts +14 -0
- package/src/runs/background/async-run-repair.ts +307 -0
- package/src/runs/background/async-run-summary.ts +71 -0
- package/src/runs/background/async-single-plan.ts +168 -0
- package/src/runs/background/async-status-projection.ts +188 -0
- package/src/runs/background/async-status-render.ts +164 -0
- package/src/runs/background/async-status-validation.ts +238 -0
- package/src/runs/background/async-status.ts +9 -481
- package/src/runs/background/async-value.ts +29 -0
- package/src/runs/background/completion-dedupe.ts +103 -54
- package/src/runs/background/completion-delivery.ts +313 -187
- package/src/runs/background/completion-receipts.ts +309 -0
- package/src/runs/background/legacy-status-acceptance.ts +38 -0
- package/src/runs/background/notify.ts +167 -106
- package/src/runs/background/parallel-groups.ts +95 -46
- package/src/runs/background/result-payload.ts +268 -0
- package/src/runs/background/result-watcher.ts +484 -387
- package/src/runs/background/run-id-resolver.ts +126 -57
- package/src/runs/background/run-schemas.ts +240 -0
- package/src/runs/background/run-status-contracts.ts +46 -0
- package/src/runs/background/run-status-render.ts +364 -0
- package/src/runs/background/run-status.ts +338 -356
- package/src/runs/background/runner-attempt-output.ts +281 -0
- package/src/runs/background/runner-attempt.ts +354 -0
- package/src/runs/background/runner-child-executor.ts +232 -0
- package/src/runs/background/runner-child-observer.ts +270 -0
- package/src/runs/background/runner-completion-summary.ts +106 -0
- package/src/runs/background/runner-completion.ts +274 -0
- package/src/runs/background/runner-config.ts +52 -0
- package/src/runs/background/runner-contract.ts +51 -0
- package/src/runs/background/runner-dynamic.ts +185 -0
- package/src/runs/background/runner-finalization.ts +203 -0
- package/src/runs/background/runner-graph.ts +91 -0
- package/src/runs/background/runner-initial-status.ts +72 -0
- package/src/runs/background/runner-lifecycle.ts +159 -0
- package/src/runs/background/runner-monitor.ts +399 -0
- package/src/runs/background/runner-parallel.ts +280 -0
- package/src/runs/background/runner-prepare-step.ts +128 -0
- package/src/runs/background/runner-reporting.ts +192 -0
- package/src/runs/background/runner-status.ts +220 -0
- package/src/runs/background/runner-step-output.ts +158 -0
- package/src/runs/background/runner-step-record.ts +76 -0
- package/src/runs/background/runner-step.ts +150 -0
- package/src/runs/background/runner-streaming.ts +220 -0
- package/src/runs/background/runner-workflow.ts +284 -0
- package/src/runs/background/stale-run-reconciler.ts +279 -336
- package/src/runs/background/subagent-runner-launcher.ts +67 -35
- package/src/runs/background/subagent-runner.ts +80 -2048
- package/src/runs/background/top-level-async.ts +9 -7
- package/src/runs/foreground/chain-clarify.ts +499 -1334
- package/src/runs/foreground/clarification-draft.ts +92 -0
- package/src/runs/foreground/clarify-contracts.ts +33 -0
- package/src/runs/foreground/clarify-invocation.ts +192 -65
- package/src/runs/foreground/clarify-text-editor.ts +229 -0
- package/src/runs/foreground/clarify-view.ts +222 -0
- package/src/runs/foreground/execution-input.ts +358 -424
- package/src/runs/foreground/execution-routing.ts +41 -0
- package/src/runs/foreground/execution-timeout.ts +92 -0
- package/src/runs/foreground/foreground-control.ts +333 -812
- package/src/runs/foreground/foreground-memory.ts +132 -0
- package/src/runs/foreground/invocation-context.ts +88 -0
- package/src/runs/foreground/invocation-execution.ts +465 -0
- package/src/runs/foreground/invocation-expansion.ts +58 -0
- package/src/runs/foreground/management-actions.ts +360 -0
- package/src/runs/foreground/nested-control.ts +248 -0
- package/src/runs/foreground/question-continuation.ts +112 -0
- package/src/runs/foreground/question-control.ts +297 -70
- package/src/runs/foreground/resume-target.ts +330 -0
- package/src/runs/foreground/revival-launch-policy.ts +112 -0
- package/src/runs/foreground/run-async-path.ts +307 -223
- package/src/runs/foreground/run-interrupt.ts +202 -0
- package/src/runs/foreground/run-nudge.ts +355 -0
- package/src/runs/foreground/saved-revival.ts +356 -0
- package/src/runs/foreground/subagent-executor.ts +195 -493
- package/src/runs/foreground/subagent-params.ts +314 -242
- package/src/runs/foreground/wait-observation.ts +160 -0
- package/src/runs/foreground/wait-registration.ts +18 -0
- package/src/runs/foreground/wait-run.ts +361 -119
- package/src/runs/shared/acceptance-contract.ts +410 -209
- package/src/runs/shared/acceptance-defaults.ts +1 -0
- package/src/runs/shared/acceptance-evaluation.ts +314 -240
- package/src/runs/shared/acceptance-finalization.ts +447 -305
- package/src/runs/shared/acceptance-outcome.ts +69 -0
- package/src/runs/shared/acceptance-reports.ts +220 -126
- package/src/runs/shared/acceptance-submission.ts +251 -0
- package/src/runs/shared/acceptance-verification.ts +118 -0
- package/src/runs/shared/acceptance.ts +25 -25
- package/src/runs/shared/chain-outputs.ts +190 -98
- package/src/runs/shared/child-attempt-types.ts +118 -0
- package/src/runs/shared/child-attempt.ts +372 -608
- package/src/runs/shared/child-boundaries.ts +217 -0
- package/src/runs/shared/child-context-filter.ts +53 -0
- package/src/runs/shared/child-event-observer.ts +496 -0
- package/src/runs/shared/child-execution-cwd.ts +139 -68
- package/src/runs/shared/child-execution-outcome.ts +103 -0
- package/src/runs/shared/child-invocation.ts +74 -0
- package/src/runs/shared/child-message-validation.ts +233 -0
- package/src/runs/shared/child-native-accounting.ts +154 -0
- package/src/runs/shared/child-native-observation.ts +79 -0
- package/src/runs/shared/child-observation-spool.ts +188 -0
- package/src/runs/shared/child-observations.ts +219 -89
- package/src/runs/shared/child-presence.ts +6 -0
- package/src/runs/shared/child-route-env.ts +142 -0
- package/src/runs/shared/child-stream-observer.ts +302 -0
- package/src/runs/shared/child-stream-projection.ts +160 -0
- package/src/runs/shared/child-structured-tool.ts +38 -0
- package/src/runs/shared/claude-code.ts +201 -228
- package/src/runs/shared/claude-model.ts +67 -0
- package/src/runs/shared/claude-session.ts +124 -0
- package/src/runs/shared/claude-types.ts +31 -0
- package/src/runs/shared/completion-guard.ts +35 -26
- package/src/runs/shared/control-event-policy.ts +15 -0
- package/src/runs/shared/control-notification-owner.ts +20 -0
- package/src/runs/shared/dynamic-fanout.ts +402 -238
- package/src/runs/shared/dynamic-item.ts +114 -0
- package/src/runs/shared/history-index.ts +112 -51
- package/src/runs/shared/legacy-async-recovery.ts +153 -0
- package/src/runs/shared/legacy-output-recovery.ts +214 -0
- package/src/runs/shared/mcp-config-schema.ts +46 -0
- package/src/runs/shared/mcp-direct-tool-allowlist.ts +396 -307
- package/src/runs/shared/model-fallback.ts +302 -180
- package/src/runs/shared/mutating-tool-guard.ts +259 -158
- package/src/runs/shared/native-finalization-types.ts +29 -0
- package/src/runs/shared/native-finalization.ts +233 -109
- package/src/runs/shared/native-usage.ts +379 -96
- package/src/runs/shared/nested-control-records.ts +178 -0
- package/src/runs/shared/nested-events.ts +45 -752
- package/src/runs/shared/nested-path.ts +47 -34
- package/src/runs/shared/nested-projection.ts +230 -0
- package/src/runs/shared/nested-protocol.ts +67 -0
- package/src/runs/shared/nested-registry.ts +273 -0
- package/src/runs/shared/nested-render.ts +198 -100
- package/src/runs/shared/nested-route.ts +292 -0
- package/src/runs/shared/nested-validation.ts +291 -0
- package/src/runs/shared/owned-child-evidence.ts +184 -0
- package/src/runs/shared/owned-run-list.ts +187 -0
- package/src/runs/shared/owned-run-observation.ts +368 -0
- package/src/runs/shared/owned-run-progress.ts +172 -0
- package/src/runs/shared/owned-run-read-state.ts +7 -0
- package/src/runs/shared/owned-run-results.ts +289 -0
- package/src/runs/shared/owned-run-status.ts +239 -0
- package/src/runs/shared/owned-run-view.ts +65 -0
- package/src/runs/shared/owned-workflow-details.ts +24 -0
- package/src/runs/shared/owner-output.ts +73 -0
- package/src/runs/shared/parallel-utils.ts +93 -129
- package/src/runs/shared/parent-receipts.ts +177 -50
- package/src/runs/shared/parent-usage.ts +314 -91
- package/src/runs/shared/pi-args.ts +241 -311
- package/src/runs/shared/pi-launch-input.ts +48 -0
- package/src/runs/shared/pi-session-launch.ts +94 -0
- package/src/runs/shared/pi-spawn.ts +57 -33
- package/src/runs/shared/run-history-queries.ts +189 -38
- package/src/runs/shared/run-history.ts +197 -76
- package/src/runs/shared/run-id-ambiguity.ts +7 -3
- package/src/runs/shared/run-metadata-paths.ts +17 -0
- package/src/runs/shared/run-metadata.ts +240 -0
- package/src/runs/shared/run-persistence.ts +181 -0
- package/src/runs/shared/run-records.ts +19 -607
- package/src/runs/shared/run-restoration.ts +455 -0
- package/src/runs/shared/run-state-owner.ts +31 -0
- package/src/runs/shared/session-cwd-preload.ts +39 -19
- package/src/runs/shared/single-output.ts +358 -205
- package/src/runs/shared/stable-value.ts +15 -0
- package/src/runs/shared/streaming-text.ts +39 -12
- package/src/runs/shared/structured-output.ts +76 -46
- package/src/runs/shared/subagent-control.ts +330 -197
- package/src/runs/shared/subagent-prompt-runtime.ts +92 -174
- package/src/runs/shared/subagent-tool-loop-guard.ts +118 -68
- package/src/runs/shared/supervisor-question-state.ts +221 -0
- package/src/runs/shared/supervisor-questions.ts +396 -401
- package/src/runs/shared/workflow-graph.ts +400 -198
- package/src/runs/shared/workflow-policy.ts +245 -110
- package/src/runs/shared/worktree-contract.ts +29 -0
- package/src/runs/shared/worktree-hook.ts +181 -0
- package/src/runs/shared/worktree-location.ts +61 -0
- package/src/runs/shared/worktree-preservation.ts +10 -0
- package/src/runs/shared/worktree-process.ts +132 -0
- package/src/runs/shared/worktree.ts +459 -587
- package/src/shared/agent-context-policy.ts +176 -145
- package/src/shared/agent-dir.ts +15 -0
- package/src/shared/artifacts.ts +99 -68
- package/src/shared/atomic-json.ts +14 -11
- package/src/shared/chain-files.ts +72 -0
- package/src/shared/concurrency.ts +27 -0
- package/src/shared/content-preview.ts +117 -0
- package/src/shared/cooperative.ts +17 -13
- package/src/shared/execution-cwd.ts +34 -9
- package/src/shared/file-coalescer.ts +24 -22
- package/src/shared/fork-context.ts +52 -48
- package/src/shared/formatters.ts +88 -47
- package/src/shared/journal-frames.ts +197 -0
- package/src/shared/journal-projections.ts +133 -0
- package/src/shared/journal-reader.ts +18 -333
- package/src/shared/json-projection.ts +224 -0
- package/src/shared/lazy-tools.ts +76 -27
- package/src/shared/message-output.ts +146 -0
- package/src/shared/model-info.ts +94 -58
- package/src/shared/native-import.ts +25 -0
- package/src/shared/native-journal.ts +172 -0
- package/src/shared/native-session.ts +8 -3
- package/src/shared/native-tui.ts +13 -3
- package/src/shared/native-typebox.ts +18 -3
- package/src/shared/output-page.ts +76 -0
- package/src/shared/post-exit-stdio-guard.ts +232 -172
- package/src/shared/prompt-sections.ts +13 -7
- package/src/shared/session-entries.ts +103 -44
- package/src/shared/session-identity.ts +17 -10
- package/src/shared/settings.ts +182 -367
- package/src/shared/status-format.ts +207 -98
- package/src/shared/stream-json.d.ts +10 -0
- package/src/shared/task-file-policy.ts +35 -0
- package/src/shared/temp-root.ts +122 -71
- package/src/shared/types/acceptance.ts +149 -0
- package/src/shared/types/async.ts +247 -0
- package/src/shared/types/config.ts +139 -0
- package/src/shared/types/details.ts +104 -0
- package/src/shared/types/history.ts +217 -0
- package/src/shared/types/inputs.ts +4 -0
- package/src/shared/types/intercom.ts +57 -0
- package/src/shared/types/launch.ts +39 -0
- package/src/shared/types/messages.ts +104 -0
- package/src/shared/types/nested.ts +153 -0
- package/src/shared/types/owned-runs.ts +148 -0
- package/src/shared/types/progress.ts +106 -0
- package/src/shared/types/questions.ts +103 -0
- package/src/shared/types/results.ts +119 -0
- package/src/shared/types/state.ts +56 -0
- package/src/shared/types/usage.ts +36 -0
- package/src/shared/types/workflow.ts +187 -0
- package/src/shared/types.ts +222 -1161
- package/src/shared/ui-mode.ts +1 -1
- package/src/shared/unknown.ts +59 -0
- package/src/shared/utils.ts +111 -305
- package/src/slash/command-discovery.ts +109 -0
- package/src/slash/command-input.ts +232 -0
- package/src/slash/prompt-template-bridge.ts +153 -400
- package/src/slash/prompt-template-contract.ts +152 -0
- package/src/slash/prompt-template-results.ts +189 -0
- package/src/slash/request-protocol.ts +87 -0
- package/src/slash/result-delivery.ts +312 -0
- package/src/slash/saved-chain.ts +115 -0
- package/src/slash/slash-bridge.ts +202 -156
- package/src/slash/slash-commands.ts +176 -598
- package/src/slash/slash-live-state.ts +287 -229
- package/src/tui/action-hints.ts +147 -61
- package/src/tui/activity-lines.ts +40 -0
- package/src/tui/agent-browser.ts +354 -0
- package/src/tui/agent-controls.ts +355 -0
- package/src/tui/agent-conversation.ts +514 -0
- package/src/tui/agent-dock.ts +250 -0
- package/src/tui/agent-history.ts +78 -203
- package/src/tui/agent-model.ts +78 -0
- package/src/tui/agent-picker.ts +325 -0
- package/src/tui/agent-view.ts +391 -1333
- package/src/tui/compact-results.ts +342 -0
- package/src/tui/conversation-details.ts +206 -0
- package/src/tui/conversation-frame.ts +184 -0
- package/src/tui/conversation-history.ts +246 -0
- package/src/tui/conversation-menu.ts +119 -0
- package/src/tui/conversation-notices.ts +116 -0
- package/src/tui/conversation-selection.ts +66 -0
- package/src/tui/conversation-viewport.ts +169 -0
- package/src/tui/direction-message.ts +35 -0
- package/src/tui/display.ts +409 -0
- package/src/tui/editor-viewport.ts +19 -0
- package/src/tui/expanded-content.ts +134 -0
- package/src/tui/expanded-multi.ts +264 -0
- package/src/tui/expanded-single.ts +92 -0
- package/src/tui/history-cards.ts +316 -0
- package/src/tui/history-display.ts +334 -0
- package/src/tui/history-json.ts +17 -0
- package/src/tui/history-metadata.ts +177 -0
- package/src/tui/history-record.ts +321 -0
- package/src/tui/history-text.ts +34 -0
- package/src/tui/indexed-history.ts +149 -0
- package/src/tui/nested-widget.ts +192 -0
- package/src/tui/picker-page.ts +80 -0
- package/src/tui/render.ts +100 -1546
- package/src/tui/result-facts.ts +99 -0
- package/src/tui/task-observation.ts +96 -0
- package/src/tui/task-store.ts +432 -0
- package/src/tui/text-values.ts +20 -0
- package/src/tui/view-connections.ts +64 -0
- package/src/tui/view-model.ts +181 -0
- package/src/tui/view-persistence.ts +57 -0
- package/src/tui/view-ports.ts +55 -0
- package/src/tui/view-session.ts +42 -0
- package/src/tui/widget-details.ts +220 -0
- package/src/tui/widget-status.ts +331 -0
- package/src/tui/widget.ts +208 -0
- package/src/tui/workflow-labels.ts +340 -0
- package/src/tui/workflow-outcomes.ts +150 -0
- package/tsconfig.build.json +11 -10
- package/tsconfig.json +30 -17
package/agents/reviewer.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: reviewer
|
|
3
3
|
description: Code review specialist that validates implementation and reports issues
|
|
4
|
-
model: openai-codex/gpt-6-
|
|
5
|
-
fallbackModels: anthropic/claude-opus-5
|
|
6
|
-
thinking:
|
|
4
|
+
model: openai-codex/gpt-6.1-sol
|
|
5
|
+
fallbackModels: anthropic/claude-opus-5-5
|
|
6
|
+
thinking: xhigh
|
|
7
7
|
systemPromptMode: append
|
|
8
8
|
inheritProjectContext: true
|
|
9
9
|
inheritSkills: true
|
|
@@ -16,6 +16,7 @@ maxSubagentDepth: 0
|
|
|
16
16
|
You are a senior code reviewer. Review the implementation against the exact owner instructions and settled decisions supplied in the handoff or its readable source references and the observed changes; plans and implementer explanations are derived claims, not authority. Report every legitimate issue you can support with a reachable failure, concrete contract violation, unauthorized behavior change, owner-intent mismatch, or missing required proof. Do not manufacture hypothetical concerns, hunt unrelated debt, or demand extra machinery because it looks safer.
|
|
17
17
|
|
|
18
18
|
Critical rules:
|
|
19
|
+
|
|
19
20
|
- You are a reviewer: report problems without editing the change under review, and do not commit, push, or publish.
|
|
20
21
|
- Reuse trustworthy inspected checks for the exact same revision and relevant inputs; independently investigate concrete concerns and missing evidence with targeted checks or source research. Preserve requested reviews, Ponytail policy, required final-revision checks, and user-authorized waivers.
|
|
21
22
|
- Put bulky evidence, command captures, logs, snapshots, or raw JSON in `/tmp` or another gitignored scratch path; summarize only decision-relevant lines in review output.
|
|
@@ -26,12 +27,14 @@ Critical rules:
|
|
|
26
27
|
- If the brief records a previously declined finding or an accepted tradeoff, do not re-report it as new. Raise it once under Risks with the reason it deserves revisiting, and treat it as blocking only on new evidence.
|
|
27
28
|
|
|
28
29
|
Execution order:
|
|
30
|
+
|
|
29
31
|
1. Read original owner requirements, authority, and settled decisions first, then task-relevant evidence. Summaries never substitute for original requirements; honor explicit full-reading requests.
|
|
30
32
|
2. Inspect the relevant diffs, files, and implementation details.
|
|
31
33
|
3. Identify critical bugs, regressions, missing edge cases, or plan mismatches when a plan exists.
|
|
32
34
|
4. Return the final review, or write it to the explicit output path in the task.
|
|
33
35
|
|
|
34
36
|
Review checklist:
|
|
37
|
+
|
|
35
38
|
1. The change fulfills the recorded owner outcome and covers the recorded scope, rather than solving a nearby engineering concern instead of the requested one.
|
|
36
39
|
2. Nothing preserves or recreates a MUST NOT behavior under another name, and no mechanism was added that the recorded outcome does not require.
|
|
37
40
|
3. Code quality and correctness are sound.
|
|
@@ -46,24 +49,30 @@ Output format:
|
|
|
46
49
|
# Review
|
|
47
50
|
|
|
48
51
|
## Verdict
|
|
52
|
+
|
|
49
53
|
One short paragraph stating whether any legitimate findings remain and whether the implementation is otherwise acceptable as-is.
|
|
50
54
|
|
|
51
55
|
## Findings
|
|
56
|
+
|
|
52
57
|
1. **Severity: critical|high|medium|low** - issue, evidence, consequence, and file reference
|
|
53
58
|
2. **Severity: critical|high|medium|low** - issue, evidence, consequence, and file reference
|
|
54
59
|
|
|
55
60
|
Do not force findings into a fixed disposition taxonomy. If there are no legitimate findings, say exactly: `No legitimate findings.`
|
|
56
61
|
|
|
57
62
|
## Verified
|
|
63
|
+
|
|
58
64
|
- What you checked and found to be correct
|
|
59
65
|
|
|
60
66
|
## Risks
|
|
67
|
+
|
|
61
68
|
- Remaining uncertainty, missing tests, or areas not fully verified
|
|
62
69
|
|
|
63
70
|
## Recommended Next Step
|
|
71
|
+
|
|
64
72
|
- What the next agent should do
|
|
65
73
|
|
|
66
74
|
Output-size contract:
|
|
75
|
+
|
|
67
76
|
- Keep the review concise and evidence-backed.
|
|
68
77
|
- Do not inline large diffs, logs, browser snapshots, JSON payloads, or full command output.
|
|
69
78
|
- Save bulky supporting evidence under `/tmp` or a repo-local gitignored scratch path and link to it only when needed.
|
package/agents/scout.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: scout
|
|
3
3
|
description: Fast codebase recon that returns compressed context for handoff
|
|
4
4
|
model: openai-codex/gpt-6.1-sol
|
|
5
|
-
fallbackModels:
|
|
5
|
+
fallbackModels: anthropic/claude-opus-5-5
|
|
6
6
|
thinking: high
|
|
7
7
|
systemPromptMode: append
|
|
8
8
|
inheritProjectContext: true
|
|
@@ -16,6 +16,7 @@ output: context.md
|
|
|
16
16
|
You are a read-only repo scout. Quickly investigate a codebase and return structured findings for handoff.
|
|
17
17
|
|
|
18
18
|
Critical rules:
|
|
19
|
+
|
|
19
20
|
- Establish original owner requirements, authority, and settled decisions before relying on derived summaries.
|
|
20
21
|
- Do NOT run CI gates, full test suites, builds, or other heavyweight verification commands as part of scouting.
|
|
21
22
|
- Prefer static inspection, targeted reads, and lightweight read-only commands.
|
|
@@ -26,6 +27,7 @@ Critical rules:
|
|
|
26
27
|
- Do not ask follow-up questions unless the ambiguity materially changes where you need to look and cannot be resolved from the codebase.
|
|
27
28
|
|
|
28
29
|
Execution order:
|
|
30
|
+
|
|
29
31
|
1. Locate the relevant files, entry points, and boundaries.
|
|
30
32
|
2. Read task-relevant sections, including version-matched Pi docs where applicable; read complete files and needed links when correctness or an explicit owner request requires it.
|
|
31
33
|
3. Follow imports, types, callers, and dependencies as needed.
|
|
@@ -33,6 +35,7 @@ Execution order:
|
|
|
33
35
|
5. Write the structured context to the requested output path.
|
|
34
36
|
|
|
35
37
|
Thoroughness (infer from task, default medium):
|
|
38
|
+
|
|
36
39
|
- Quick: targeted lookups, key files only
|
|
37
40
|
- Medium: follow imports and read critical sections
|
|
38
41
|
- Thorough: trace dependencies, nearby tests, and important type boundaries
|
|
@@ -42,25 +45,33 @@ Output format (`context.md`):
|
|
|
42
45
|
# Code Context
|
|
43
46
|
|
|
44
47
|
## Task Summary
|
|
48
|
+
|
|
45
49
|
One short paragraph describing what you investigated.
|
|
46
50
|
|
|
47
51
|
## Relevant Files
|
|
52
|
+
|
|
48
53
|
Exact paths the next agent should read first.
|
|
49
54
|
|
|
50
55
|
## Relevant Symbols
|
|
56
|
+
|
|
51
57
|
Functions, types, classes, or commands tied to the task.
|
|
52
58
|
|
|
53
59
|
## Likely Entry Points
|
|
60
|
+
|
|
54
61
|
Where implementation or debugging should start.
|
|
55
62
|
|
|
56
63
|
## Tests And Commands
|
|
64
|
+
|
|
57
65
|
Targeted tests or commands worth running next (read-only scouting does not run them).
|
|
58
66
|
|
|
59
67
|
## Gaps
|
|
68
|
+
|
|
60
69
|
Anything still uncertain after scouting.
|
|
61
70
|
|
|
62
71
|
## Confidence
|
|
72
|
+
|
|
63
73
|
High, medium, or low, plus one sentence on what would raise confidence.
|
|
64
74
|
|
|
65
75
|
## Start Here
|
|
76
|
+
|
|
66
77
|
Which file or subsystem the next agent should inspect first and why.
|
package/agents/ui-designer.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ui-designer
|
|
3
3
|
description: Visual/UI design specialist for rendered UX, layout, accessibility, and polish
|
|
4
|
-
model:
|
|
5
|
-
fallbackModels:
|
|
6
|
-
thinking:
|
|
4
|
+
model: anthropic/claude-opus-5-5
|
|
5
|
+
fallbackModels: openai-codex/gpt-6.1-sol
|
|
6
|
+
thinking: xhigh
|
|
7
7
|
systemPromptMode: append
|
|
8
8
|
inheritProjectContext: true
|
|
9
9
|
inheritSkills: true
|
|
@@ -16,6 +16,7 @@ maxSubagentDepth: 0
|
|
|
16
16
|
You are a visual UI/UX specialist. Judge rendered behavior from the user's perspective and turn concrete evidence into the smallest effective design improvement.
|
|
17
17
|
|
|
18
18
|
Critical rules:
|
|
19
|
+
|
|
19
20
|
- Prefer rendered evidence over code-only guesses. Use browser screenshots, snapshots, and manual flow checks when available.
|
|
20
21
|
- Be read-only unless the task explicitly asks you to implement UI changes.
|
|
21
22
|
- If asked to implement, make the smallest visual changes that satisfy the design goal and verify the rendered result.
|
|
@@ -24,6 +25,7 @@ Critical rules:
|
|
|
24
25
|
- Do not paste large logs, diffs, browser snapshots, JSON, or command output into the final response. Save bulky evidence under `/tmp` or a repo-local gitignored scratch path and summarize only decision-relevant lines.
|
|
25
26
|
|
|
26
27
|
Execution order:
|
|
28
|
+
|
|
27
29
|
1. Identify the user goal, target screens, current constraints, and success criteria.
|
|
28
30
|
2. Inspect the rendered UI when possible; inspect code only as needed to explain or fix the visual issue.
|
|
29
31
|
3. Report the highest-impact UI issues first, tied to evidence.
|
|
@@ -34,18 +36,23 @@ Output format:
|
|
|
34
36
|
# UI Review
|
|
35
37
|
|
|
36
38
|
## Verdict
|
|
39
|
+
|
|
37
40
|
One short paragraph on whether the UI meets the goal.
|
|
38
41
|
|
|
39
42
|
## Findings
|
|
43
|
+
|
|
40
44
|
1. **Severity: high|medium|low** - issue, evidence, and recommended fix.
|
|
41
45
|
|
|
42
46
|
If no material findings remain, say exactly: `No findings. Everything I checked is acceptable.`
|
|
43
47
|
|
|
44
48
|
## Verified
|
|
49
|
+
|
|
45
50
|
- Screens, flows, screenshots, or code paths checked.
|
|
46
51
|
|
|
47
52
|
## Risks
|
|
53
|
+
|
|
48
54
|
- Remaining visual uncertainty or screens not checked.
|
|
49
55
|
|
|
50
56
|
## Recommended Next Step
|
|
57
|
+
|
|
51
58
|
- The next concrete action for the implementer.
|
package/agents/watcher.md
CHANGED
|
@@ -16,6 +16,7 @@ completionGuard: false
|
|
|
16
16
|
You are a read-only watcher for a changing process or external state. Establish the current state, keep observing until the requested terminal condition, and send a supervisor update only when a change affects their ongoing work.
|
|
17
17
|
|
|
18
18
|
Rules:
|
|
19
|
+
|
|
19
20
|
- Do not modify the watched target or edit project files.
|
|
20
21
|
- Treat the task's material-change and terminal-condition definitions as authoritative. If they are omitted, material changes are state transitions, new failures, recoveries, or actionable blockers; terminal means requested completion, cancellation, the stated deadline, or an overall or irrecoverable failure. A recoverable or per-check failure remains material but non-terminal.
|
|
21
22
|
- Prefer a native command or API that waits for the next change or returns incremental state. If it would hide intermediate changes, poll at a target-appropriate interval instead; never use a tight loop.
|
package/agents/worker.md
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: worker
|
|
3
3
|
description: End-to-end implementation specialist for bounded tasks
|
|
4
|
-
model: openai-codex/gpt-6-
|
|
5
|
-
|
|
4
|
+
model: openai-codex/gpt-6.1-sol
|
|
5
|
+
fallbackModels: anthropic/claude-opus-5-5
|
|
6
|
+
thinking: xhigh
|
|
6
7
|
systemPromptMode: append
|
|
7
8
|
inheritProjectContext: true
|
|
8
9
|
inheritSkills: true
|
|
@@ -14,6 +15,7 @@ maxSubagentDepth: 0
|
|
|
14
15
|
You are an implementation specialist. Execute bounded tasks end to end, including focused tests and documentation needed to make the result complete.
|
|
15
16
|
|
|
16
17
|
Critical rules:
|
|
18
|
+
|
|
17
19
|
- Read the exact owner instructions, settled decisions, authority, and acceptance supplied in the handoff or its readable source references first, then task-relevant evidence. Read artifacts in full when explicitly requested or needed for correctness. Summaries never substitute for original requirements; exact owner prompts and question-tool answers outrank restatements or plans. Flag conflicts instead of following a paraphrase.
|
|
18
20
|
- Complete the full requested task, not just the first obvious step.
|
|
19
21
|
- If context is missing, retrieve discoverable facts with tools first.
|
|
@@ -21,6 +23,7 @@ Critical rules:
|
|
|
21
23
|
- Before finalizing, run the most appropriate verification you can for the scope of the change.
|
|
22
24
|
|
|
23
25
|
Preflight (before editing):
|
|
26
|
+
|
|
24
27
|
1. Confirm git status is understandable for the task scope.
|
|
25
28
|
2. Identify exact files to change.
|
|
26
29
|
3. Identify the test or typecheck command for the change.
|
|
@@ -29,6 +32,7 @@ Preflight (before editing):
|
|
|
29
32
|
6. Resolve routine unknowns through inspection and make the call. Escalate only a concrete blocker or decision outside the assigned authority; continue independent authorized work first.
|
|
30
33
|
|
|
31
34
|
Execution order:
|
|
35
|
+
|
|
32
36
|
1. Establish original requirements, authority, and acceptance, then inspect task-relevant context and plan artifacts.
|
|
33
37
|
2. Inspect the relevant files and confirm what must change.
|
|
34
38
|
3. Implement the task using existing patterns unless there is a strong reason not to.
|
|
@@ -36,11 +40,13 @@ Execution order:
|
|
|
36
40
|
5. Verify the result and report any remaining risk.
|
|
37
41
|
|
|
38
42
|
Output-size contract:
|
|
43
|
+
|
|
39
44
|
- Do not paste large logs, diffs, browser snapshots, JSON, or command output into the final response.
|
|
40
45
|
- Save bulky evidence under `/tmp` or a repo-local gitignored scratch path and summarize only decision-relevant lines.
|
|
41
46
|
- Prefer commands with explicit output limits.
|
|
42
47
|
|
|
43
48
|
Final response contract:
|
|
49
|
+
|
|
44
50
|
- State what was completed.
|
|
45
51
|
- State verification performed.
|
|
46
52
|
- State any remaining blockers, assumptions, or follow-up work.
|
package/agents/writer.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: writer
|
|
3
3
|
description: Human-facing writing specialist for documentation, announcements, guides, and polished copy
|
|
4
|
-
model:
|
|
5
|
-
fallbackModels:
|
|
6
|
-
thinking:
|
|
4
|
+
model: anthropic/claude-opus-5-5
|
|
5
|
+
fallbackModels: openai-codex/gpt-6.1-sol
|
|
6
|
+
thinking: xhigh
|
|
7
7
|
systemPromptMode: append
|
|
8
8
|
inheritProjectContext: true
|
|
9
9
|
inheritSkills: true
|
|
@@ -17,6 +17,7 @@ defaultProgress: false
|
|
|
17
17
|
You are a human-facing writing specialist. Produce clear, accurate prose that matches the requested audience, format, and voice.
|
|
18
18
|
|
|
19
19
|
Critical rules:
|
|
20
|
+
|
|
20
21
|
- Do not invent facts. Separate verified facts from interpretation when the distinction matters.
|
|
21
22
|
- Preserve the author's established voice by reading supplied examples before drafting.
|
|
22
23
|
- Lead with the plain-language conclusion. Remove repetition, filler, jargon, and unsupported claims.
|
|
@@ -25,6 +26,7 @@ Critical rules:
|
|
|
25
26
|
- Draft-only assignments remain draft-only. Publish, post, send, or make other external writes only when the task or standing instructions authorize that outcome; do not ask again for its routine prerequisites.
|
|
26
27
|
|
|
27
28
|
Execution order:
|
|
29
|
+
|
|
28
30
|
1. Identify the audience, purpose, required facts, voice, and output constraints.
|
|
29
31
|
2. Read the supplied sources and examples.
|
|
30
32
|
3. Draft the shortest complete version that serves the audience.
|
|
@@ -32,5 +34,6 @@ Execution order:
|
|
|
32
34
|
5. Edit once for structure, clarity, tone, and unnecessary words.
|
|
33
35
|
|
|
34
36
|
Final response contract:
|
|
37
|
+
|
|
35
38
|
- Return or write the finished draft in the requested format.
|
|
36
39
|
- Briefly identify any unresolved factual gaps or assumptions. Say `None` when there are none.
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import { KNOWN_FIELDS } from "./agent-serializer.js";
|
|
4
|
+
import { parseFrontmatter } from "./frontmatter.js";
|
|
5
|
+
import { buildRuntimeName, parsePackageName } from "./identity.js";
|
|
6
|
+
import { listFilesRecursive, pathIsInside, } from "./discovery-paths.js";
|
|
7
|
+
import { csvItems, splitToolList, errorMessage } from "./config-values.js";
|
|
8
|
+
import { defaultSystemPromptMode, defaultInheritProjectContext, defaultInheritSkills, } from "./agent-defaults.js";
|
|
9
|
+
const reportedDiagnostics = new Map();
|
|
10
|
+
const loggedDiagnostics = new Set();
|
|
11
|
+
const MAX_DIAGNOSTICS = 1_000;
|
|
12
|
+
function reportDiagnostic(filePath, message) {
|
|
13
|
+
const key = `${filePath}\0${message}`;
|
|
14
|
+
if (!reportedDiagnostics.has(key) && reportedDiagnostics.size >= MAX_DIAGNOSTICS) {
|
|
15
|
+
const oldest = reportedDiagnostics.keys().next().value;
|
|
16
|
+
if (oldest !== undefined) {
|
|
17
|
+
reportedDiagnostics.delete(oldest);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
reportedDiagnostics.set(key, { filePath, error: message });
|
|
21
|
+
if (loggedDiagnostics.has(key)) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (loggedDiagnostics.size >= MAX_DIAGNOSTICS) {
|
|
25
|
+
const oldest = loggedDiagnostics.values().next().value;
|
|
26
|
+
if (oldest !== undefined) {
|
|
27
|
+
loggedDiagnostics.delete(oldest);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
loggedDiagnostics.add(key);
|
|
31
|
+
console.error(`Invalid agent definition '${filePath}: ${message}'`);
|
|
32
|
+
}
|
|
33
|
+
export function clearAgentDiagnosticsForDirs(dirs) {
|
|
34
|
+
for (const [key, entry] of reportedDiagnostics) {
|
|
35
|
+
if (dirs.some((dir) => pathIsInside(dir, entry.filePath))) {
|
|
36
|
+
reportedDiagnostics.delete(key);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export function agentDiagnosticsForDir(dir, source) {
|
|
41
|
+
return [...reportedDiagnostics.values()]
|
|
42
|
+
.filter((entry) => pathIsInside(dir, entry.filePath))
|
|
43
|
+
.map((entry) => ({ filePath: entry.filePath, error: entry.error, source }));
|
|
44
|
+
}
|
|
45
|
+
function validateDefinition(frontmatter) {
|
|
46
|
+
const booleans = [
|
|
47
|
+
"allowSubagents",
|
|
48
|
+
"inheritProjectContext",
|
|
49
|
+
"inheritSkills",
|
|
50
|
+
"defaultProgress",
|
|
51
|
+
"interactive",
|
|
52
|
+
"completionGuard",
|
|
53
|
+
];
|
|
54
|
+
const invalid = booleans.find((field) => frontmatter[field] !== undefined &&
|
|
55
|
+
frontmatter[field] !== "true" &&
|
|
56
|
+
frontmatter[field] !== "false");
|
|
57
|
+
if (invalid !== undefined) {
|
|
58
|
+
return `${invalid} must be true or false`;
|
|
59
|
+
}
|
|
60
|
+
if (frontmatter.systemPromptMode !== undefined &&
|
|
61
|
+
frontmatter.systemPromptMode !== "append" &&
|
|
62
|
+
frontmatter.systemPromptMode !== "replace") {
|
|
63
|
+
return "systemPromptMode must be append or replace";
|
|
64
|
+
}
|
|
65
|
+
if (frontmatter.defaultContext !== undefined &&
|
|
66
|
+
frontmatter.defaultContext !== "fresh" &&
|
|
67
|
+
frontmatter.defaultContext !== "fork") {
|
|
68
|
+
return "defaultContext must be fresh or fork";
|
|
69
|
+
}
|
|
70
|
+
return validateLimits(frontmatter);
|
|
71
|
+
}
|
|
72
|
+
function validateLimits(frontmatter) {
|
|
73
|
+
for (const [field, minimum] of [
|
|
74
|
+
["maxSubagentDepth", 0],
|
|
75
|
+
["maxExecutionTimeMs", 1],
|
|
76
|
+
["maxTokens", 1],
|
|
77
|
+
]) {
|
|
78
|
+
if (frontmatter[field] !== undefined &&
|
|
79
|
+
(!Number.isInteger(Number(frontmatter[field])) || Number(frontmatter[field]) < minimum)) {
|
|
80
|
+
return `${field} must be an integer >= ${minimum}`;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
function optionalList(value) {
|
|
86
|
+
const items = value === undefined ? [] : csvItems(value);
|
|
87
|
+
return items.length > 0 ? items : undefined;
|
|
88
|
+
}
|
|
89
|
+
function optionalBoolean(value) {
|
|
90
|
+
if (value === undefined) {
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
return value === "true";
|
|
94
|
+
}
|
|
95
|
+
function contextFields(frontmatter, name) {
|
|
96
|
+
const defaultContext = frontmatter.defaultContext;
|
|
97
|
+
const systemPromptMode = frontmatter.systemPromptMode;
|
|
98
|
+
return {
|
|
99
|
+
systemPromptMode: systemPromptMode === "append" || systemPromptMode === "replace"
|
|
100
|
+
? systemPromptMode
|
|
101
|
+
: defaultSystemPromptMode(name),
|
|
102
|
+
inheritProjectContext: optionalBoolean(frontmatter.inheritProjectContext) ?? defaultInheritProjectContext(name),
|
|
103
|
+
inheritSkills: optionalBoolean(frontmatter.inheritSkills) ?? defaultInheritSkills(),
|
|
104
|
+
defaultContext: defaultContext === "fresh" || defaultContext === "fork" ? defaultContext : undefined,
|
|
105
|
+
completionGuard: optionalBoolean(frontmatter.completionGuard),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
function extraFields(frontmatter) {
|
|
109
|
+
const fields = {};
|
|
110
|
+
for (const [key, value] of Object.entries(frontmatter)) {
|
|
111
|
+
if (!KNOWN_FIELDS.has(key) && value !== undefined) {
|
|
112
|
+
fields[key] = value;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return Object.keys(fields).length > 0 ? fields : undefined;
|
|
116
|
+
}
|
|
117
|
+
function definitionFields(frontmatter) {
|
|
118
|
+
return {
|
|
119
|
+
...splitToolList(optionalList(frontmatter.tools)),
|
|
120
|
+
allowSubagents: frontmatter.allowSubagents === "true",
|
|
121
|
+
model: frontmatter.model,
|
|
122
|
+
fallbackModels: optionalList(frontmatter.fallbackModels),
|
|
123
|
+
thinking: frontmatter.thinking,
|
|
124
|
+
skills: optionalList(frontmatter.skill === undefined || frontmatter.skill.length === 0
|
|
125
|
+
? frontmatter.skills
|
|
126
|
+
: frontmatter.skill),
|
|
127
|
+
extensions: frontmatter.extensions === undefined ? undefined : csvItems(frontmatter.extensions),
|
|
128
|
+
output: frontmatter.output,
|
|
129
|
+
defaultReads: optionalList(frontmatter.defaultReads),
|
|
130
|
+
defaultProgress: frontmatter.defaultProgress === "true",
|
|
131
|
+
interactive: frontmatter.interactive === "true",
|
|
132
|
+
maxSubagentDepth: frontmatter.maxSubagentDepth === undefined ? 0 : Number(frontmatter.maxSubagentDepth),
|
|
133
|
+
maxExecutionTimeMs: frontmatter.maxExecutionTimeMs === undefined
|
|
134
|
+
? undefined
|
|
135
|
+
: Number(frontmatter.maxExecutionTimeMs),
|
|
136
|
+
maxTokens: frontmatter.maxTokens === undefined ? undefined : Number(frontmatter.maxTokens),
|
|
137
|
+
extraFields: extraFields(frontmatter),
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function loadDefinition(filePath, source) {
|
|
141
|
+
let content;
|
|
142
|
+
try {
|
|
143
|
+
content = fs.readFileSync(filePath, "utf-8");
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
reportDiagnostic(filePath, `cannot read file: ${errorMessage(error)}`);
|
|
147
|
+
return undefined;
|
|
148
|
+
}
|
|
149
|
+
const { frontmatter, body } = parseFrontmatter(content);
|
|
150
|
+
if (frontmatter.name === undefined ||
|
|
151
|
+
frontmatter.name.length === 0 ||
|
|
152
|
+
frontmatter.description === undefined ||
|
|
153
|
+
frontmatter.description.length === 0) {
|
|
154
|
+
reportDiagnostic(filePath, "frontmatter must include name and description");
|
|
155
|
+
return undefined;
|
|
156
|
+
}
|
|
157
|
+
const localName = frontmatter.name;
|
|
158
|
+
const parsedPackage = parsePackageName(frontmatter.package, `Agent '${localName}' package`);
|
|
159
|
+
if (parsedPackage.error !== undefined) {
|
|
160
|
+
reportDiagnostic(filePath, parsedPackage.error);
|
|
161
|
+
return undefined;
|
|
162
|
+
}
|
|
163
|
+
const error = validateDefinition(frontmatter);
|
|
164
|
+
if (error !== undefined) {
|
|
165
|
+
reportDiagnostic(filePath, error);
|
|
166
|
+
return undefined;
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
...definitionFields(frontmatter),
|
|
170
|
+
...contextFields(frontmatter, localName),
|
|
171
|
+
name: buildRuntimeName(localName, parsedPackage.packageName),
|
|
172
|
+
localName,
|
|
173
|
+
packageName: parsedPackage.packageName,
|
|
174
|
+
description: frontmatter.description,
|
|
175
|
+
systemPrompt: body,
|
|
176
|
+
source,
|
|
177
|
+
filePath,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
export function loadAgentsFromDir(dir, source) {
|
|
181
|
+
const files = listFilesRecursive(dir, (name) => name.endsWith(".md") &&
|
|
182
|
+
!name.endsWith(".chain.md") &&
|
|
183
|
+
name !== "SKILL.template.md" &&
|
|
184
|
+
name !== "AGENTS.md");
|
|
185
|
+
const agents = [];
|
|
186
|
+
for (const filePath of files) {
|
|
187
|
+
if (path.relative(dir, filePath).split(path.sep)[0] === "skills") {
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
const agent = loadDefinition(filePath, source);
|
|
191
|
+
if (agent !== undefined) {
|
|
192
|
+
agents.push(agent);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return agents;
|
|
196
|
+
}
|