@ashx-j/lunr 0.2.11 → 0.2.13
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 +13 -0
- package/README.md +211 -236
- package/dist/builtin-extensions/ashxj-tui.d.ts +3 -0
- package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
- package/dist/builtin-extensions/ashxj-tui.js +28 -11
- package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
- package/dist/builtin-extensions/index.d.ts.map +1 -1
- package/dist/builtin-extensions/index.js +0 -2
- package/dist/builtin-extensions/index.js.map +1 -1
- package/dist/builtin-extensions/lunr-cron.d.ts +1 -1
- package/dist/builtin-extensions/lunr-cron.d.ts.map +1 -1
- package/dist/builtin-extensions/lunr-cron.js +1 -1
- package/dist/builtin-extensions/lunr-cron.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/chain-validation.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/chain-validation.js +3 -3
- package/dist/builtin-extensions/pi-subagents/src/extension/chain-validation.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/doctor.d.ts +0 -2
- package/dist/builtin-extensions/pi-subagents/src/extension/doctor.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/doctor.js +1 -23
- package/dist/builtin-extensions/pi-subagents/src/extension/doctor.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.js +6 -7
- package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js +7 -14
- package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts +12 -9
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +38 -34
- package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts +3 -3
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js +32 -47
- package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/intercom-bridge.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/intercom/intercom-bridge.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/intercom/intercom-bridge.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts +7 -10
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js +90 -109
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts +3 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js +37 -50
- package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.js +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/run-status.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.d.ts +4 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.js +5 -5
- package/dist/builtin-extensions/pi-subagents/src/runs/background/scheduled-runs.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js +31 -13
- package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-clarify.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts +4 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js +48 -20
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js +90 -64
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts +6 -8
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +262 -161
- package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.js +24 -33
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts +25 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js +51 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/dynamic-fanout.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/dynamic-fanout.js +20 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/dynamic-fanout.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts +4 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.d.ts +5 -0
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js +9 -3
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js +2 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.js +20 -17
- package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts +70 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js +153 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js.map +1 -0
- package/dist/builtin-extensions/pi-subagents/src/shared/settings.d.ts +13 -8
- package/dist/builtin-extensions/pi-subagents/src/shared/settings.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/settings.js +20 -51
- package/dist/builtin-extensions/pi-subagents/src/shared/settings.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +80 -20
- package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/shared/types.js +10 -2
- package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts +2 -2
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js +20 -32
- package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +23 -449
- package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js +13 -11
- package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.d.ts +2 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.d.ts.map +1 -1
- package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.js +18 -17
- package/dist/builtin-extensions/pi-subagents/src/watchdog/runtime.js.map +1 -1
- package/dist/builtin-extensions/simple-pi-memory.d.ts +2 -2
- package/dist/builtin-extensions/simple-pi-memory.d.ts.map +1 -1
- package/dist/builtin-extensions/simple-pi-memory.js +41 -17
- package/dist/builtin-extensions/simple-pi-memory.js.map +1 -1
- package/dist/catalog/models.json +1 -1
- package/dist/catalog/providers/amazon-bedrock.json +1 -1
- package/dist/catalog/providers/azure-openai-responses.json +1 -1
- package/dist/catalog/providers/cloudflare-ai-gateway.json +1 -1
- package/dist/catalog/providers/cloudflare-workers-ai.json +1 -1
- package/dist/catalog/providers/fireworks.json +1 -1
- package/dist/catalog/providers/github-copilot.json +1 -1
- package/dist/catalog/providers/huggingface.json +1 -1
- package/dist/catalog/providers/minimax-cn.json +1 -1
- package/dist/catalog/providers/minimax.json +1 -1
- package/dist/catalog/providers/mistral.json +1 -1
- package/dist/catalog/providers/nvidia.json +1 -1
- package/dist/catalog/providers/openai.json +1 -1
- package/dist/catalog/providers/opencode-go.json +1 -1
- package/dist/catalog/providers/opencode.json +1 -1
- package/dist/catalog/providers/openrouter.json +1 -1
- package/dist/catalog/providers/qwen-cloud-cn.json +1 -1
- package/dist/catalog/providers/qwen-cloud.json +1 -1
- package/dist/catalog/providers/qwen-token-plan-cn.json +1 -1
- package/dist/catalog/providers/qwen-token-plan.json +1 -1
- package/dist/catalog/providers/together.json +1 -1
- package/dist/catalog/providers/vercel-ai-gateway.json +1 -1
- package/dist/catalog/providers/zai-coding-cn.json +1 -1
- package/dist/catalog/providers/zai.json +1 -1
- package/dist/catalog/publication.json +3 -3
- package/dist/core/agent-session.d.ts +7 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +34 -4
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/context-breakdown.d.ts +3 -1
- package/dist/core/context-breakdown.d.ts.map +1 -1
- package/dist/core/context-breakdown.js +5 -2
- package/dist/core/context-breakdown.js.map +1 -1
- package/dist/core/customize.d.ts +2 -0
- package/dist/core/customize.d.ts.map +1 -1
- package/dist/core/customize.js +6 -0
- package/dist/core/customize.js.map +1 -1
- package/dist/core/memory-cap.d.ts +4 -8
- package/dist/core/memory-cap.d.ts.map +1 -1
- package/dist/core/memory-cap.js +8 -8
- package/dist/core/memory-cap.js.map +1 -1
- package/dist/core/permissions.d.ts +2 -0
- package/dist/core/permissions.d.ts.map +1 -1
- package/dist/core/permissions.js +30 -14
- package/dist/core/permissions.js.map +1 -1
- package/dist/core/plan-mode.d.ts.map +1 -1
- package/dist/core/plan-mode.js +1 -9
- package/dist/core/plan-mode.js.map +1 -1
- package/dist/core/rollback.d.ts.map +1 -1
- package/dist/core/rollback.js +1 -1
- package/dist/core/rollback.js.map +1 -1
- package/dist/core/settings-manager.d.ts +16 -5
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +37 -10
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -5
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/subagent-permission-inherit.d.ts +34 -22
- package/dist/core/subagent-permission-inherit.d.ts.map +1 -1
- package/dist/core/subagent-permission-inherit.js +37 -80
- package/dist/core/subagent-permission-inherit.js.map +1 -1
- package/dist/core/swarm.d.ts.map +1 -1
- package/dist/core/swarm.js +13 -7
- package/dist/core/swarm.js.map +1 -1
- package/dist/core/system-prompt.d.ts +6 -4
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +38 -48
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/usage-adapters/openai-codex.d.ts +1 -1
- package/dist/core/usage-adapters/openai-codex.d.ts.map +1 -1
- package/dist/core/usage-adapters/openai-codex.js +22 -17
- package/dist/core/usage-adapters/openai-codex.js.map +1 -1
- package/dist/core/usage-service.d.ts +10 -1
- package/dist/core/usage-service.d.ts.map +1 -1
- package/dist/core/usage-service.js +17 -6
- package/dist/core/usage-service.js.map +1 -1
- package/dist/gateway/agent-bridge.d.ts.map +1 -1
- package/dist/gateway/agent-bridge.js +1 -4
- package/dist/gateway/agent-bridge.js.map +1 -1
- package/dist/gateway/cron.d.ts.map +1 -1
- package/dist/gateway/cron.js +1 -4
- package/dist/gateway/cron.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +0 -5
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts +2 -0
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +21 -0
- package/dist/migrations.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +7 -4
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +122 -162
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/usage-view.d.ts +1 -1
- package/dist/modes/interactive/components/usage-view.d.ts.map +1 -1
- package/dist/modes/interactive/components/usage-view.js +7 -4
- package/dist/modes/interactive/components/usage-view.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +1 -2
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +55 -96
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/skill-tag-autocomplete.d.ts +13 -0
- package/dist/modes/interactive/skill-tag-autocomplete.d.ts.map +1 -0
- package/dist/modes/interactive/skill-tag-autocomplete.js +72 -0
- package/dist/modes/interactive/skill-tag-autocomplete.js.map +1 -0
- package/docs/compaction.md +23 -23
- package/docs/containerization.md +24 -24
- package/docs/custom-provider.md +18 -18
- package/docs/development.md +16 -15
- package/docs/docs.json +6 -2
- package/docs/extensions.md +82 -80
- package/docs/features.md +102 -0
- package/docs/index.md +25 -19
- package/docs/json.md +7 -7
- package/docs/keybindings.md +4 -4
- package/docs/models.md +2 -2
- package/docs/packages.md +38 -42
- package/docs/prompt-templates.md +4 -4
- package/docs/providers.md +22 -10
- package/docs/quickstart.md +81 -46
- package/docs/rpc.md +7 -13
- package/docs/sdk.md +43 -41
- package/docs/security.md +18 -18
- package/docs/session-format.md +9 -9
- package/docs/sessions.md +13 -12
- package/docs/settings.md +63 -24
- package/docs/shell-aliases.md +2 -2
- package/docs/skills.md +21 -11
- package/docs/terminal-setup.md +5 -5
- package/docs/termux.md +7 -7
- package/docs/themes.md +12 -14
- package/docs/tmux.md +4 -4
- package/docs/tui.md +23 -23
- package/docs/usage.md +112 -87
- package/docs/windows.md +10 -2
- package/examples/README.md +3 -1
- package/examples/extensions/README.md +6 -6
- 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/doom-overlay/README.md +2 -2
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/plan-mode/README.md +3 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/subagent/README.md +13 -11
- package/examples/extensions/todo.ts +2 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/sdk/README.md +9 -5
- package/package.json +6 -7
- package/dist/builtin-extensions/lunr-behavior.d.ts +0 -44
- package/dist/builtin-extensions/lunr-behavior.d.ts.map +0 -1
- package/dist/builtin-extensions/lunr-behavior.js +0 -213
- package/dist/builtin-extensions/lunr-behavior.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/agents/context-builder.md +0 -46
- package/dist/builtin-extensions/pi-subagents/agents/deep-researcher.md +0 -36
- package/dist/builtin-extensions/pi-subagents/agents/delegate.md +0 -12
- package/dist/builtin-extensions/pi-subagents/agents/oracle.md +0 -73
- package/dist/builtin-extensions/pi-subagents/agents/planner.md +0 -55
- package/dist/builtin-extensions/pi-subagents/agents/research-writer.md +0 -37
- package/dist/builtin-extensions/pi-subagents/agents/researcher.md +0 -52
- package/dist/builtin-extensions/pi-subagents/agents/reviewer.md +0 -79
- package/dist/builtin-extensions/pi-subagents/agents/scout.md +0 -50
- package/dist/builtin-extensions/pi-subagents/agents/worker.md +0 -55
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.d.ts +0 -20
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.js +0 -1273
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-management.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.d.ts +0 -49
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.js +0 -252
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-memory.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.d.ts +0 -3
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.js +0 -6
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-scope.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.d.ts +0 -3
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.js +0 -23
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-selection.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.d.ts +0 -8
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.js +0 -143
- package/dist/builtin-extensions/pi-subagents/src/agents/agent-serializer.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agents.d.ts +0 -176
- package/dist/builtin-extensions/pi-subagents/src/agents/agents.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/agents.js +0 -1326
- package/dist/builtin-extensions/pi-subagents/src/agents/agents.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.d.ts +0 -7
- package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.js +0 -307
- package/dist/builtin-extensions/pi-subagents/src/agents/chain-serializer.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/identity.d.ts +0 -8
- package/dist/builtin-extensions/pi-subagents/src/agents/identity.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/identity.js +0 -30
- package/dist/builtin-extensions/pi-subagents/src/agents/identity.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.d.ts +0 -35
- package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.js +0 -151
- package/dist/builtin-extensions/pi-subagents/src/agents/proactive-skills.js.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.d.ts +0 -131
- package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.d.ts.map +0 -1
- package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.js +0 -491
- package/dist/builtin-extensions/pi-subagents/src/profiles/profiles.js.map +0 -1
- package/dist/core/behavior-preset.d.ts +0 -60
- package/dist/core/behavior-preset.d.ts.map +0 -1
- package/dist/core/behavior-preset.js +0 -257
- package/dist/core/behavior-preset.js.map +0 -1
|
@@ -1,307 +0,0 @@
|
|
|
1
|
-
import { buildRuntimeName, frontmatterNameForConfig, parsePackageName } from "./identity.js";
|
|
2
|
-
import { parseFrontmatter } from "./frontmatter.js";
|
|
3
|
-
import { ChainOutputValidationError, validateChainOutputBindings } from "../runs/shared/chain-outputs.js";
|
|
4
|
-
import { validateAcceptanceInput } from "../runs/shared/acceptance.js";
|
|
5
|
-
import { validateToolBudgetConfig } from "../runs/shared/tool-budget.js";
|
|
6
|
-
function parseStepBody(agent, sectionBody) {
|
|
7
|
-
const lines = sectionBody.split("\n");
|
|
8
|
-
const blankIndex = lines.findIndex((line) => line.trim() === "");
|
|
9
|
-
const configLines = blankIndex === -1 ? lines : lines.slice(0, blankIndex);
|
|
10
|
-
const task = (blankIndex === -1 ? "" : lines.slice(blankIndex + 1).join("\n")).trim();
|
|
11
|
-
const step = { agent, task };
|
|
12
|
-
for (const line of configLines) {
|
|
13
|
-
const match = line.match(/^([\w-]+):\s*(.*)$/);
|
|
14
|
-
if (!match)
|
|
15
|
-
continue;
|
|
16
|
-
const key = match[1].trim().toLowerCase();
|
|
17
|
-
const rawValue = match[2].trim();
|
|
18
|
-
if (key === "output") {
|
|
19
|
-
if (rawValue === "false")
|
|
20
|
-
step.output = false;
|
|
21
|
-
else if (rawValue)
|
|
22
|
-
step.output = rawValue;
|
|
23
|
-
continue;
|
|
24
|
-
}
|
|
25
|
-
if (key === "phase") {
|
|
26
|
-
if (rawValue)
|
|
27
|
-
step.phase = rawValue;
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
if (key === "label") {
|
|
31
|
-
if (rawValue)
|
|
32
|
-
step.label = rawValue;
|
|
33
|
-
continue;
|
|
34
|
-
}
|
|
35
|
-
if (key === "as") {
|
|
36
|
-
if (rawValue)
|
|
37
|
-
step.as = rawValue;
|
|
38
|
-
continue;
|
|
39
|
-
}
|
|
40
|
-
if (key === "outputschema") {
|
|
41
|
-
if (rawValue.startsWith("{") || rawValue.startsWith("[")) {
|
|
42
|
-
throw new Error("Inline outputSchema values are not supported in .chain.md files; use a schema file path.");
|
|
43
|
-
}
|
|
44
|
-
if (rawValue)
|
|
45
|
-
step.outputSchema = rawValue;
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
if (key === "outputmode") {
|
|
49
|
-
if (rawValue === "inline" || rawValue === "file-only")
|
|
50
|
-
step.outputMode = rawValue;
|
|
51
|
-
continue;
|
|
52
|
-
}
|
|
53
|
-
if (key === "reads") {
|
|
54
|
-
if (rawValue === "false") {
|
|
55
|
-
step.reads = false;
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
const reads = rawValue
|
|
59
|
-
.split(",")
|
|
60
|
-
.map((v) => v.trim())
|
|
61
|
-
.filter(Boolean);
|
|
62
|
-
step.reads = reads.length > 0 ? reads : false;
|
|
63
|
-
}
|
|
64
|
-
continue;
|
|
65
|
-
}
|
|
66
|
-
if (key === "model") {
|
|
67
|
-
if (rawValue)
|
|
68
|
-
step.model = rawValue;
|
|
69
|
-
continue;
|
|
70
|
-
}
|
|
71
|
-
if (key === "skills") {
|
|
72
|
-
if (rawValue === "false") {
|
|
73
|
-
step.skills = false;
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
const skills = rawValue
|
|
77
|
-
.split(",")
|
|
78
|
-
.map((v) => v.trim())
|
|
79
|
-
.filter(Boolean);
|
|
80
|
-
step.skills = skills.length > 0 ? skills : false;
|
|
81
|
-
}
|
|
82
|
-
continue;
|
|
83
|
-
}
|
|
84
|
-
if (key === "progress") {
|
|
85
|
-
if (rawValue === "true")
|
|
86
|
-
step.progress = true;
|
|
87
|
-
else if (rawValue === "false")
|
|
88
|
-
step.progress = false;
|
|
89
|
-
continue;
|
|
90
|
-
}
|
|
91
|
-
if (key === "toolbudget") {
|
|
92
|
-
let parsed;
|
|
93
|
-
try {
|
|
94
|
-
parsed = JSON.parse(rawValue);
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
98
|
-
throw new Error(`Invalid toolBudget in .chain.md step '${agent}': ${message}`);
|
|
99
|
-
}
|
|
100
|
-
const validation = validateToolBudgetConfig(parsed, `toolBudget for step '${agent}'`);
|
|
101
|
-
if (validation.error)
|
|
102
|
-
throw new Error(validation.error);
|
|
103
|
-
step.toolBudget = parsed;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
return step;
|
|
107
|
-
}
|
|
108
|
-
export function parseChain(content, source, filePath) {
|
|
109
|
-
const { frontmatter, body } = parseFrontmatter(content);
|
|
110
|
-
if (!frontmatter.name || !frontmatter.description) {
|
|
111
|
-
throw new Error("Chain frontmatter must include name and description");
|
|
112
|
-
}
|
|
113
|
-
const matches = [...body.matchAll(/^##\s+(.+)[^\S\n]*$/gm)];
|
|
114
|
-
const steps = [];
|
|
115
|
-
for (let i = 0; i < matches.length; i++) {
|
|
116
|
-
const match = matches[i];
|
|
117
|
-
const agent = match[1].trim();
|
|
118
|
-
const lineEndOffset = body[match.index + match[0].length] === "\n" ? 1 : 0;
|
|
119
|
-
const sectionStart = match.index + match[0].length + lineEndOffset;
|
|
120
|
-
const sectionEnd = i + 1 < matches.length ? matches[i + 1].index : body.length;
|
|
121
|
-
const sectionBody = body.slice(sectionStart, sectionEnd).trimEnd();
|
|
122
|
-
steps.push(parseStepBody(agent, sectionBody));
|
|
123
|
-
}
|
|
124
|
-
const localName = frontmatter.name;
|
|
125
|
-
const parsedPackage = parsePackageName(frontmatter.package, `Chain '${localName}' package`);
|
|
126
|
-
if (parsedPackage.error)
|
|
127
|
-
throw new Error(parsedPackage.error);
|
|
128
|
-
const packageName = parsedPackage.packageName;
|
|
129
|
-
const extraFields = {};
|
|
130
|
-
for (const [key, value] of Object.entries(frontmatter)) {
|
|
131
|
-
if (key === "name" || key === "package" || key === "description")
|
|
132
|
-
continue;
|
|
133
|
-
extraFields[key] = value;
|
|
134
|
-
}
|
|
135
|
-
return {
|
|
136
|
-
name: buildRuntimeName(localName, packageName),
|
|
137
|
-
localName,
|
|
138
|
-
packageName,
|
|
139
|
-
description: frontmatter.description,
|
|
140
|
-
source,
|
|
141
|
-
filePath,
|
|
142
|
-
steps,
|
|
143
|
-
extraFields: Object.keys(extraFields).length > 0 ? extraFields : undefined,
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
function validateJsonChainToolBudget(value, label) {
|
|
147
|
-
const validation = validateToolBudgetConfig(value, label);
|
|
148
|
-
if (validation.error)
|
|
149
|
-
throw new Error(validation.error);
|
|
150
|
-
}
|
|
151
|
-
export function parseJsonChain(content, source, filePath) {
|
|
152
|
-
let parsed;
|
|
153
|
-
try {
|
|
154
|
-
parsed = JSON.parse(content);
|
|
155
|
-
}
|
|
156
|
-
catch (error) {
|
|
157
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
158
|
-
throw new Error(`Invalid JSON chain '${filePath}': ${message}`);
|
|
159
|
-
}
|
|
160
|
-
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
161
|
-
throw new Error(`JSON chain '${filePath}' must contain an object root.`);
|
|
162
|
-
}
|
|
163
|
-
const input = parsed;
|
|
164
|
-
if (typeof input.name !== "string" || !input.name.trim()) {
|
|
165
|
-
throw new Error(`JSON chain '${filePath}' must include string name.`);
|
|
166
|
-
}
|
|
167
|
-
if (typeof input.description !== "string" || !input.description.trim()) {
|
|
168
|
-
throw new Error(`JSON chain '${filePath}' must include string description.`);
|
|
169
|
-
}
|
|
170
|
-
if (!Array.isArray(input.chain)) {
|
|
171
|
-
throw new Error(`JSON chain '${filePath}' must include array chain.`);
|
|
172
|
-
}
|
|
173
|
-
for (let i = 0; i < input.chain.length; i++) {
|
|
174
|
-
const step = input.chain[i];
|
|
175
|
-
if (!step || typeof step !== "object" || Array.isArray(step)) {
|
|
176
|
-
throw new Error(`JSON chain '${filePath}' step ${i + 1} must be an object.`);
|
|
177
|
-
}
|
|
178
|
-
const stepRecord = step;
|
|
179
|
-
if (stepRecord.toolBudget !== undefined)
|
|
180
|
-
validateJsonChainToolBudget(stepRecord.toolBudget, `step ${i + 1} toolBudget`);
|
|
181
|
-
const acceptanceErrors = validateAcceptanceInput(stepRecord.acceptance, `step ${i + 1} acceptance`);
|
|
182
|
-
if (acceptanceErrors.length > 0) {
|
|
183
|
-
throw new Error(`Invalid JSON chain '${filePath}': ${acceptanceErrors.join(" ")}`);
|
|
184
|
-
}
|
|
185
|
-
const parallel = stepRecord.parallel;
|
|
186
|
-
if (Array.isArray(parallel)) {
|
|
187
|
-
for (let taskIndex = 0; taskIndex < parallel.length; taskIndex++) {
|
|
188
|
-
const task = parallel[taskIndex];
|
|
189
|
-
if (!task || typeof task !== "object" || Array.isArray(task))
|
|
190
|
-
continue;
|
|
191
|
-
const taskRecord = task;
|
|
192
|
-
if (taskRecord.toolBudget !== undefined)
|
|
193
|
-
validateJsonChainToolBudget(taskRecord.toolBudget, `step ${i + 1} parallel task ${taskIndex + 1} toolBudget`);
|
|
194
|
-
const taskErrors = validateAcceptanceInput(taskRecord.acceptance, `step ${i + 1} parallel task ${taskIndex + 1} acceptance`);
|
|
195
|
-
if (taskErrors.length > 0) {
|
|
196
|
-
throw new Error(`Invalid JSON chain '${filePath}': ${taskErrors.join(" ")}`);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
else if (parallel && typeof parallel === "object") {
|
|
201
|
-
const parallelRecord = parallel;
|
|
202
|
-
if (parallelRecord.toolBudget !== undefined)
|
|
203
|
-
validateJsonChainToolBudget(parallelRecord.toolBudget, `step ${i + 1} dynamic template toolBudget`);
|
|
204
|
-
const templateErrors = validateAcceptanceInput(parallelRecord.acceptance, `step ${i + 1} dynamic template acceptance`);
|
|
205
|
-
if (templateErrors.length > 0) {
|
|
206
|
-
throw new Error(`Invalid JSON chain '${filePath}': ${templateErrors.join(" ")}`);
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
try {
|
|
211
|
-
validateChainOutputBindings(input.chain, { maxItems: Number.MAX_SAFE_INTEGER });
|
|
212
|
-
}
|
|
213
|
-
catch (error) {
|
|
214
|
-
if (error instanceof ChainOutputValidationError)
|
|
215
|
-
throw new Error(`Invalid JSON chain '${filePath}': ${error.message}`);
|
|
216
|
-
throw error;
|
|
217
|
-
}
|
|
218
|
-
const parsedPackage = parsePackageName(typeof input.package === "string" ? input.package : undefined, `Chain '${input.name}' package`);
|
|
219
|
-
if (parsedPackage.error)
|
|
220
|
-
throw new Error(parsedPackage.error);
|
|
221
|
-
const extraFields = {};
|
|
222
|
-
for (const [key, value] of Object.entries(input)) {
|
|
223
|
-
if (key === "name" || key === "package" || key === "description" || key === "chain")
|
|
224
|
-
continue;
|
|
225
|
-
if (typeof value === "string")
|
|
226
|
-
extraFields[key] = value;
|
|
227
|
-
}
|
|
228
|
-
return {
|
|
229
|
-
name: buildRuntimeName(input.name.trim(), parsedPackage.packageName),
|
|
230
|
-
localName: input.name.trim(),
|
|
231
|
-
packageName: parsedPackage.packageName,
|
|
232
|
-
description: input.description.trim(),
|
|
233
|
-
source,
|
|
234
|
-
filePath,
|
|
235
|
-
steps: input.chain,
|
|
236
|
-
extraFields: Object.keys(extraFields).length > 0 ? extraFields : undefined,
|
|
237
|
-
};
|
|
238
|
-
}
|
|
239
|
-
export function serializeJsonChain(config) {
|
|
240
|
-
const root = {
|
|
241
|
-
name: frontmatterNameForConfig(config),
|
|
242
|
-
description: config.description,
|
|
243
|
-
chain: config.steps,
|
|
244
|
-
};
|
|
245
|
-
if (config.packageName)
|
|
246
|
-
root.package = config.packageName;
|
|
247
|
-
if (config.extraFields) {
|
|
248
|
-
for (const [key, value] of Object.entries(config.extraFields)) {
|
|
249
|
-
if (key !== "name" && key !== "description" && key !== "package" && key !== "chain")
|
|
250
|
-
root[key] = value;
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
return `${JSON.stringify(root, null, 2)}\n`;
|
|
254
|
-
}
|
|
255
|
-
export function serializeChain(config) {
|
|
256
|
-
const lines = [];
|
|
257
|
-
lines.push("---");
|
|
258
|
-
lines.push(`name: ${frontmatterNameForConfig(config)}`);
|
|
259
|
-
if (config.packageName)
|
|
260
|
-
lines.push(`package: ${config.packageName}`);
|
|
261
|
-
lines.push(`description: ${config.description}`);
|
|
262
|
-
if (config.extraFields) {
|
|
263
|
-
for (const [key, value] of Object.entries(config.extraFields)) {
|
|
264
|
-
lines.push(`${key}: ${value}`);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
lines.push("---");
|
|
268
|
-
lines.push("");
|
|
269
|
-
for (let i = 0; i < config.steps.length; i++) {
|
|
270
|
-
const step = config.steps[i];
|
|
271
|
-
lines.push(`## ${step.agent}`);
|
|
272
|
-
if (step.output === false)
|
|
273
|
-
lines.push("output: false");
|
|
274
|
-
else if (step.output)
|
|
275
|
-
lines.push(`output: ${step.output}`);
|
|
276
|
-
if (step.phase)
|
|
277
|
-
lines.push(`phase: ${step.phase}`);
|
|
278
|
-
if (step.label)
|
|
279
|
-
lines.push(`label: ${step.label}`);
|
|
280
|
-
if (step.as)
|
|
281
|
-
lines.push(`as: ${step.as}`);
|
|
282
|
-
if (step.outputSchema)
|
|
283
|
-
lines.push(`outputSchema: ${step.outputSchema}`);
|
|
284
|
-
if (step.outputMode)
|
|
285
|
-
lines.push(`outputMode: ${step.outputMode}`);
|
|
286
|
-
if (step.reads === false)
|
|
287
|
-
lines.push("reads: false");
|
|
288
|
-
else if (Array.isArray(step.reads) && step.reads.length > 0)
|
|
289
|
-
lines.push(`reads: ${step.reads.join(", ")}`);
|
|
290
|
-
if (step.model)
|
|
291
|
-
lines.push(`model: ${step.model}`);
|
|
292
|
-
if (step.skills === false)
|
|
293
|
-
lines.push("skills: false");
|
|
294
|
-
else if (Array.isArray(step.skills) && step.skills.length > 0)
|
|
295
|
-
lines.push(`skills: ${step.skills.join(", ")}`);
|
|
296
|
-
if (step.progress !== undefined)
|
|
297
|
-
lines.push(`progress: ${step.progress ? "true" : "false"}`);
|
|
298
|
-
if (step.toolBudget !== undefined)
|
|
299
|
-
lines.push(`toolBudget: ${JSON.stringify(step.toolBudget)}`);
|
|
300
|
-
lines.push("");
|
|
301
|
-
lines.push(step.task ?? "");
|
|
302
|
-
if (i < config.steps.length - 1)
|
|
303
|
-
lines.push("");
|
|
304
|
-
}
|
|
305
|
-
return `${lines.join("\n")}\n`;
|
|
306
|
-
}
|
|
307
|
-
//# sourceMappingURL=chain-serializer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chain-serializer.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/agents/chain-serializer.ts"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport type { ChainConfig, ChainStepConfig } from \"./agents.ts\";\nimport { buildRuntimeName, frontmatterNameForConfig, parsePackageName } from \"./identity.ts\";\nimport { parseFrontmatter } from \"./frontmatter.ts\";\nimport { ChainOutputValidationError, validateChainOutputBindings } from \"../runs/shared/chain-outputs.ts\";\nimport { validateAcceptanceInput } from \"../runs/shared/acceptance.ts\";\nimport { validateToolBudgetConfig } from \"../runs/shared/tool-budget.ts\";\nimport type { ChainStep } from \"../shared/settings.ts\";\nimport type { AgentSource } from \"./agents.ts\";\n\nfunction parseStepBody(agent: string, sectionBody: string): ChainStepConfig {\n\tconst lines = sectionBody.split(\"\\n\");\n\tconst blankIndex = lines.findIndex((line) => line.trim() === \"\");\n\tconst configLines = blankIndex === -1 ? lines : lines.slice(0, blankIndex);\n\tconst task = (blankIndex === -1 ? \"\" : lines.slice(blankIndex + 1).join(\"\\n\")).trim();\n\n\tconst step: ChainStepConfig = { agent, task };\n\tfor (const line of configLines) {\n\t\tconst match = line.match(/^([\\w-]+):\\s*(.*)$/);\n\t\tif (!match) continue;\n\t\tconst key = match[1].trim().toLowerCase();\n\t\tconst rawValue = match[2].trim();\n\n\t\tif (key === \"output\") {\n\t\t\tif (rawValue === \"false\") step.output = false;\n\t\t\telse if (rawValue) step.output = rawValue;\n\t\t\tcontinue;\n\t\t}\n\t\tif (key === \"phase\") {\n\t\t\tif (rawValue) step.phase = rawValue;\n\t\t\tcontinue;\n\t\t}\n\t\tif (key === \"label\") {\n\t\t\tif (rawValue) step.label = rawValue;\n\t\t\tcontinue;\n\t\t}\n\t\tif (key === \"as\") {\n\t\t\tif (rawValue) step.as = rawValue;\n\t\t\tcontinue;\n\t\t}\n\t\tif (key === \"outputschema\") {\n\t\t\tif (rawValue.startsWith(\"{\") || rawValue.startsWith(\"[\")) {\n\t\t\t\tthrow new Error(\"Inline outputSchema values are not supported in .chain.md files; use a schema file path.\");\n\t\t\t}\n\t\t\tif (rawValue) step.outputSchema = rawValue;\n\t\t\tcontinue;\n\t\t}\n\t\tif (key === \"outputmode\") {\n\t\t\tif (rawValue === \"inline\" || rawValue === \"file-only\") step.outputMode = rawValue;\n\t\t\tcontinue;\n\t\t}\n\t\tif (key === \"reads\") {\n\t\t\tif (rawValue === \"false\") {\n\t\t\t\tstep.reads = false;\n\t\t\t} else {\n\t\t\t\tconst reads = rawValue\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.map((v) => v.trim())\n\t\t\t\t\t.filter(Boolean);\n\t\t\t\tstep.reads = reads.length > 0 ? reads : false;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (key === \"model\") {\n\t\t\tif (rawValue) step.model = rawValue;\n\t\t\tcontinue;\n\t\t}\n\t\tif (key === \"skills\") {\n\t\t\tif (rawValue === \"false\") {\n\t\t\t\tstep.skills = false;\n\t\t\t} else {\n\t\t\t\tconst skills = rawValue\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.map((v) => v.trim())\n\t\t\t\t\t.filter(Boolean);\n\t\t\t\tstep.skills = skills.length > 0 ? skills : false;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (key === \"progress\") {\n\t\t\tif (rawValue === \"true\") step.progress = true;\n\t\t\telse if (rawValue === \"false\") step.progress = false;\n\t\t\tcontinue;\n\t\t}\n\t\tif (key === \"toolbudget\") {\n\t\t\tlet parsed: unknown;\n\t\t\ttry {\n\t\t\t\tparsed = JSON.parse(rawValue);\n\t\t\t} catch (error) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\tthrow new Error(`Invalid toolBudget in .chain.md step '${agent}': ${message}`);\n\t\t\t}\n\t\t\tconst validation = validateToolBudgetConfig(parsed, `toolBudget for step '${agent}'`);\n\t\t\tif (validation.error) throw new Error(validation.error);\n\t\t\tstep.toolBudget = parsed as ChainStepConfig[\"toolBudget\"];\n\t\t}\n\t}\n\n\treturn step;\n}\n\nexport function parseChain(content: string, source: AgentSource, filePath: string): ChainConfig {\n\tconst { frontmatter, body } = parseFrontmatter(content);\n\tif (!frontmatter.name || !frontmatter.description) {\n\t\tthrow new Error(\"Chain frontmatter must include name and description\");\n\t}\n\n\tconst matches = [...body.matchAll(/^##\\s+(.+)[^\\S\\n]*$/gm)];\n\tconst steps: ChainStepConfig[] = [];\n\n\tfor (let i = 0; i < matches.length; i++) {\n\t\tconst match = matches[i]!;\n\t\tconst agent = match[1]!.trim();\n\t\tconst lineEndOffset = body[match.index! + match[0].length] === \"\\n\" ? 1 : 0;\n\t\tconst sectionStart = match.index! + match[0].length + lineEndOffset;\n\t\tconst sectionEnd = i + 1 < matches.length ? matches[i + 1]!.index! : body.length;\n\t\tconst sectionBody = body.slice(sectionStart, sectionEnd).trimEnd();\n\t\tsteps.push(parseStepBody(agent, sectionBody));\n\t}\n\n\tconst localName = frontmatter.name;\n\tconst parsedPackage = parsePackageName(frontmatter.package, `Chain '${localName}' package`);\n\tif (parsedPackage.error) throw new Error(parsedPackage.error);\n\tconst packageName = parsedPackage.packageName;\n\tconst extraFields: Record<string, string> = {};\n\tfor (const [key, value] of Object.entries(frontmatter)) {\n\t\tif (key === \"name\" || key === \"package\" || key === \"description\") continue;\n\t\textraFields[key] = value;\n\t}\n\n\treturn {\n\t\tname: buildRuntimeName(localName, packageName),\n\t\tlocalName,\n\t\tpackageName,\n\t\tdescription: frontmatter.description,\n\t\tsource,\n\t\tfilePath,\n\t\tsteps,\n\t\textraFields: Object.keys(extraFields).length > 0 ? extraFields : undefined,\n\t};\n}\n\nfunction validateJsonChainToolBudget(value: unknown, label: string): void {\n\tconst validation = validateToolBudgetConfig(value, label);\n\tif (validation.error) throw new Error(validation.error);\n}\n\nexport function parseJsonChain(content: string, source: AgentSource, filePath: string): ChainConfig {\n\tlet parsed: unknown;\n\ttry {\n\t\tparsed = JSON.parse(content);\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tthrow new Error(`Invalid JSON chain '${filePath}': ${message}`);\n\t}\n\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n\t\tthrow new Error(`JSON chain '${filePath}' must contain an object root.`);\n\t}\n\tconst input = parsed as Record<string, unknown>;\n\tif (typeof input.name !== \"string\" || !input.name.trim()) {\n\t\tthrow new Error(`JSON chain '${filePath}' must include string name.`);\n\t}\n\tif (typeof input.description !== \"string\" || !input.description.trim()) {\n\t\tthrow new Error(`JSON chain '${filePath}' must include string description.`);\n\t}\n\tif (!Array.isArray(input.chain)) {\n\t\tthrow new Error(`JSON chain '${filePath}' must include array chain.`);\n\t}\n\tfor (let i = 0; i < input.chain.length; i++) {\n\t\tconst step = input.chain[i];\n\t\tif (!step || typeof step !== \"object\" || Array.isArray(step)) {\n\t\t\tthrow new Error(`JSON chain '${filePath}' step ${i + 1} must be an object.`);\n\t\t}\n\t\tconst stepRecord = step as Record<string, unknown>;\n\t\tif (stepRecord.toolBudget !== undefined) validateJsonChainToolBudget(stepRecord.toolBudget, `step ${i + 1} toolBudget`);\n\t\tconst acceptanceErrors = validateAcceptanceInput(stepRecord.acceptance, `step ${i + 1} acceptance`);\n\t\tif (acceptanceErrors.length > 0) {\n\t\t\tthrow new Error(`Invalid JSON chain '${filePath}': ${acceptanceErrors.join(\" \")}`);\n\t\t}\n\t\tconst parallel = stepRecord.parallel;\n\t\tif (Array.isArray(parallel)) {\n\t\t\tfor (let taskIndex = 0; taskIndex < parallel.length; taskIndex++) {\n\t\t\t\tconst task = parallel[taskIndex];\n\t\t\t\tif (!task || typeof task !== \"object\" || Array.isArray(task)) continue;\n\t\t\t\tconst taskRecord = task as Record<string, unknown>;\n\t\t\t\tif (taskRecord.toolBudget !== undefined) validateJsonChainToolBudget(taskRecord.toolBudget, `step ${i + 1} parallel task ${taskIndex + 1} toolBudget`);\n\t\t\t\tconst taskErrors = validateAcceptanceInput(taskRecord.acceptance, `step ${i + 1} parallel task ${taskIndex + 1} acceptance`);\n\t\t\t\tif (taskErrors.length > 0) {\n\t\t\t\t\tthrow new Error(`Invalid JSON chain '${filePath}': ${taskErrors.join(\" \")}`);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (parallel && typeof parallel === \"object\") {\n\t\t\tconst parallelRecord = parallel as Record<string, unknown>;\n\t\t\tif (parallelRecord.toolBudget !== undefined) validateJsonChainToolBudget(parallelRecord.toolBudget, `step ${i + 1} dynamic template toolBudget`);\n\t\t\tconst templateErrors = validateAcceptanceInput(parallelRecord.acceptance, `step ${i + 1} dynamic template acceptance`);\n\t\t\tif (templateErrors.length > 0) {\n\t\t\t\tthrow new Error(`Invalid JSON chain '${filePath}': ${templateErrors.join(\" \")}`);\n\t\t\t}\n\t\t}\n\t}\n\ttry {\n\t\tvalidateChainOutputBindings(input.chain as ChainStep[], { maxItems: Number.MAX_SAFE_INTEGER });\n\t} catch (error) {\n\t\tif (error instanceof ChainOutputValidationError) throw new Error(`Invalid JSON chain '${filePath}': ${error.message}`);\n\t\tthrow error;\n\t}\n\tconst parsedPackage = parsePackageName(typeof input.package === \"string\" ? input.package : undefined, `Chain '${input.name}' package`);\n\tif (parsedPackage.error) throw new Error(parsedPackage.error);\n\tconst extraFields: Record<string, string> = {};\n\tfor (const [key, value] of Object.entries(input)) {\n\t\tif (key === \"name\" || key === \"package\" || key === \"description\" || key === \"chain\") continue;\n\t\tif (typeof value === \"string\") extraFields[key] = value;\n\t}\n\treturn {\n\t\tname: buildRuntimeName(input.name.trim(), parsedPackage.packageName),\n\t\tlocalName: input.name.trim(),\n\t\tpackageName: parsedPackage.packageName,\n\t\tdescription: input.description.trim(),\n\t\tsource,\n\t\tfilePath,\n\t\tsteps: input.chain as ChainStepConfig[],\n\t\textraFields: Object.keys(extraFields).length > 0 ? extraFields : undefined,\n\t};\n}\n\nexport function serializeJsonChain(config: ChainConfig): string {\n\tconst root: Record<string, unknown> = {\n\t\tname: frontmatterNameForConfig(config),\n\t\tdescription: config.description,\n\t\tchain: config.steps,\n\t};\n\tif (config.packageName) root.package = config.packageName;\n\tif (config.extraFields) {\n\t\tfor (const [key, value] of Object.entries(config.extraFields)) {\n\t\t\tif (key !== \"name\" && key !== \"description\" && key !== \"package\" && key !== \"chain\") root[key] = value;\n\t\t}\n\t}\n\treturn `${JSON.stringify(root, null, 2)}\\n`;\n}\n\nexport function serializeChain(config: ChainConfig): string {\n\tconst lines: string[] = [];\n\tlines.push(\"---\");\n\tlines.push(`name: ${frontmatterNameForConfig(config)}`);\n\tif (config.packageName) lines.push(`package: ${config.packageName}`);\n\tlines.push(`description: ${config.description}`);\n\tif (config.extraFields) {\n\t\tfor (const [key, value] of Object.entries(config.extraFields)) {\n\t\t\tlines.push(`${key}: ${value}`);\n\t\t}\n\t}\n\tlines.push(\"---\");\n\tlines.push(\"\");\n\n\tfor (let i = 0; i < config.steps.length; i++) {\n\t\tconst step = config.steps[i]!;\n\t\tlines.push(`## ${step.agent}`);\n\t\tif (step.output === false) lines.push(\"output: false\");\n\t\telse if (step.output) lines.push(`output: ${step.output}`);\n\t\tif (step.phase) lines.push(`phase: ${step.phase}`);\n\t\tif (step.label) lines.push(`label: ${step.label}`);\n\t\tif (step.as) lines.push(`as: ${step.as}`);\n\t\tif (step.outputSchema) lines.push(`outputSchema: ${step.outputSchema}`);\n\t\tif (step.outputMode) lines.push(`outputMode: ${step.outputMode}`);\n\t\tif (step.reads === false) lines.push(\"reads: false\");\n\t\telse if (Array.isArray(step.reads) && step.reads.length > 0) lines.push(`reads: ${step.reads.join(\", \")}`);\n\t\tif (step.model) lines.push(`model: ${step.model}`);\n\t\tif (step.skills === false) lines.push(\"skills: false\");\n\t\telse if (Array.isArray(step.skills) && step.skills.length > 0) lines.push(`skills: ${step.skills.join(\", \")}`);\n\t\tif (step.progress !== undefined) lines.push(`progress: ${step.progress ? \"true\" : \"false\"}`);\n\t\tif (step.toolBudget !== undefined) lines.push(`toolBudget: ${JSON.stringify(step.toolBudget)}`);\n\t\tlines.push(\"\");\n\t\tlines.push(step.task ?? \"\");\n\t\tif (i < config.steps.length - 1) lines.push(\"\");\n\t}\n\n\treturn `${lines.join(\"\\n\")}\\n`;\n}\n"]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { AgentConfig, ChainConfig } from "./agents.ts";
|
|
2
|
-
export declare function parsePackageName(value: unknown, label?: string): {
|
|
3
|
-
packageName?: string;
|
|
4
|
-
error?: string;
|
|
5
|
-
};
|
|
6
|
-
export declare function buildRuntimeName(localName: string, packageName?: string): string;
|
|
7
|
-
export declare function frontmatterNameForConfig(config: Pick<AgentConfig | ChainConfig, "name" | "localName" | "packageName">): string;
|
|
8
|
-
//# sourceMappingURL=identity.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/agents/identity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAU5D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAY,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAM5G;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAGhF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,GAAG,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,aAAa,CAAC,GAAG,MAAM,CAM9H","sourcesContent":["// @ts-nocheck\nimport type { AgentConfig, ChainConfig } from \"./agents.ts\";\n\nconst IDENTIFIER_PATTERN = /^[a-z0-9][a-z0-9-]*(?:\\.[a-z0-9][a-z0-9-]*)*$/;\n\nfunction normalizePackageName(value: string | undefined): string | undefined {\n\tconst trimmed = value?.trim();\n\tif (!trimmed) return undefined;\n\treturn trimmed.toLowerCase().replace(/\\s+/g, \"-\").replace(/[^a-z0-9.-]/g, \"\").replace(/-+/g, \"-\").replace(/\\.+/g, \".\").replace(/(?:^[-.]+|[-.]+$)/g, \"\");\n}\n\nexport function parsePackageName(value: unknown, label = \"package\"): { packageName?: string; error?: string } {\n\tif (value === undefined || value === false || value === \"\") return { packageName: undefined };\n\tif (typeof value !== \"string\") return { error: `${label} must be a string or false when provided.` };\n\tconst packageName = normalizePackageName(value);\n\tif (!packageName || !IDENTIFIER_PATTERN.test(packageName)) return { error: `${label} is invalid after sanitization.` };\n\treturn { packageName };\n}\n\nexport function buildRuntimeName(localName: string, packageName?: string): string {\n\tconst trimmedPackage = packageName?.trim();\n\treturn trimmedPackage ? `${trimmedPackage}.${localName}` : localName;\n}\n\nexport function frontmatterNameForConfig(config: Pick<AgentConfig | ChainConfig, \"name\" | \"localName\" | \"packageName\">): string {\n\tif (config.localName) return config.localName;\n\tif (config.packageName && config.name.startsWith(`${config.packageName}.`)) {\n\t\treturn config.name.slice(config.packageName.length + 1);\n\t}\n\treturn config.name;\n}\n"]}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
const IDENTIFIER_PATTERN = /^[a-z0-9][a-z0-9-]*(?:\.[a-z0-9][a-z0-9-]*)*$/;
|
|
2
|
-
function normalizePackageName(value) {
|
|
3
|
-
const trimmed = value?.trim();
|
|
4
|
-
if (!trimmed)
|
|
5
|
-
return undefined;
|
|
6
|
-
return trimmed.toLowerCase().replace(/\s+/g, "-").replace(/[^a-z0-9.-]/g, "").replace(/-+/g, "-").replace(/\.+/g, ".").replace(/(?:^[-.]+|[-.]+$)/g, "");
|
|
7
|
-
}
|
|
8
|
-
export function parsePackageName(value, label = "package") {
|
|
9
|
-
if (value === undefined || value === false || value === "")
|
|
10
|
-
return { packageName: undefined };
|
|
11
|
-
if (typeof value !== "string")
|
|
12
|
-
return { error: `${label} must be a string or false when provided.` };
|
|
13
|
-
const packageName = normalizePackageName(value);
|
|
14
|
-
if (!packageName || !IDENTIFIER_PATTERN.test(packageName))
|
|
15
|
-
return { error: `${label} is invalid after sanitization.` };
|
|
16
|
-
return { packageName };
|
|
17
|
-
}
|
|
18
|
-
export function buildRuntimeName(localName, packageName) {
|
|
19
|
-
const trimmedPackage = packageName?.trim();
|
|
20
|
-
return trimmedPackage ? `${trimmedPackage}.${localName}` : localName;
|
|
21
|
-
}
|
|
22
|
-
export function frontmatterNameForConfig(config) {
|
|
23
|
-
if (config.localName)
|
|
24
|
-
return config.localName;
|
|
25
|
-
if (config.packageName && config.name.startsWith(`${config.packageName}.`)) {
|
|
26
|
-
return config.name.slice(config.packageName.length + 1);
|
|
27
|
-
}
|
|
28
|
-
return config.name;
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=identity.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/agents/identity.ts"],"names":[],"mappings":"AAGA,MAAM,kBAAkB,GAAG,+CAA+C,CAAC;AAE3E,SAAS,oBAAoB,CAAC,KAAyB,EAAsB;IAC5E,MAAM,OAAO,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;AAAA,CACzJ;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAc,EAAE,KAAK,GAAG,SAAS,EAA4C;IAC7G,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;IAC9F,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,2CAA2C,EAAE,CAAC;IACrG,MAAM,WAAW,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,WAAW,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,iCAAiC,EAAE,CAAC;IACvH,OAAO,EAAE,WAAW,EAAE,CAAC;AAAA,CACvB;AAED,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,WAAoB,EAAU;IACjF,MAAM,cAAc,GAAG,WAAW,EAAE,IAAI,EAAE,CAAC;IAC3C,OAAO,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAAA,CACrE;AAED,MAAM,UAAU,wBAAwB,CAAC,MAA6E,EAAU;IAC/H,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC;IAC9C,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;QAC5E,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AAAA,CACnB","sourcesContent":["// @ts-nocheck\nimport type { AgentConfig, ChainConfig } from \"./agents.ts\";\n\nconst IDENTIFIER_PATTERN = /^[a-z0-9][a-z0-9-]*(?:\\.[a-z0-9][a-z0-9-]*)*$/;\n\nfunction normalizePackageName(value: string | undefined): string | undefined {\n\tconst trimmed = value?.trim();\n\tif (!trimmed) return undefined;\n\treturn trimmed.toLowerCase().replace(/\\s+/g, \"-\").replace(/[^a-z0-9.-]/g, \"\").replace(/-+/g, \"-\").replace(/\\.+/g, \".\").replace(/(?:^[-.]+|[-.]+$)/g, \"\");\n}\n\nexport function parsePackageName(value: unknown, label = \"package\"): { packageName?: string; error?: string } {\n\tif (value === undefined || value === false || value === \"\") return { packageName: undefined };\n\tif (typeof value !== \"string\") return { error: `${label} must be a string or false when provided.` };\n\tconst packageName = normalizePackageName(value);\n\tif (!packageName || !IDENTIFIER_PATTERN.test(packageName)) return { error: `${label} is invalid after sanitization.` };\n\treturn { packageName };\n}\n\nexport function buildRuntimeName(localName: string, packageName?: string): string {\n\tconst trimmedPackage = packageName?.trim();\n\treturn trimmedPackage ? `${trimmedPackage}.${localName}` : localName;\n}\n\nexport function frontmatterNameForConfig(config: Pick<AgentConfig | ChainConfig, \"name\" | \"localName\" | \"packageName\">): string {\n\tif (config.localName) return config.localName;\n\tif (config.packageName && config.name.startsWith(`${config.packageName}.`)) {\n\t\treturn config.name.slice(config.packageName.length + 1);\n\t}\n\treturn config.name;\n}\n"]}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { AgentConfig, ChainConfig } from "./agents.ts";
|
|
2
|
-
import type { ProactiveSkillSubagentsConfig } from "../shared/types.ts";
|
|
3
|
-
export interface ResolvedProactiveSkillSubagentsConfig {
|
|
4
|
-
enabled: boolean;
|
|
5
|
-
minReferences: number;
|
|
6
|
-
maxRecommendations: number;
|
|
7
|
-
preferredAgent: string;
|
|
8
|
-
}
|
|
9
|
-
export interface ProactiveSkillSubagentRecommendation {
|
|
10
|
-
skill: string;
|
|
11
|
-
agent: string;
|
|
12
|
-
references: number;
|
|
13
|
-
sources: string[];
|
|
14
|
-
description?: string;
|
|
15
|
-
reason: string;
|
|
16
|
-
}
|
|
17
|
-
export interface AvailableSkill {
|
|
18
|
-
name: string;
|
|
19
|
-
description?: string;
|
|
20
|
-
}
|
|
21
|
-
export declare function resolveProactiveSkillSubagentsConfig(config?: ProactiveSkillSubagentsConfig | false): ResolvedProactiveSkillSubagentsConfig;
|
|
22
|
-
export declare function recommendProactiveSkillSubagents(input: {
|
|
23
|
-
agents: AgentConfig[];
|
|
24
|
-
chains?: ChainConfig[];
|
|
25
|
-
availableSkills?: AvailableSkill[];
|
|
26
|
-
config?: ProactiveSkillSubagentsConfig | false;
|
|
27
|
-
}): ProactiveSkillSubagentRecommendation[];
|
|
28
|
-
export declare function formatProactiveSkillSubagentRecommendations(recommendations: ProactiveSkillSubagentRecommendation[]): string[];
|
|
29
|
-
export declare function buildProactiveSkillSubagentRecommendationLines(input: {
|
|
30
|
-
agents: AgentConfig[];
|
|
31
|
-
chains?: ChainConfig[];
|
|
32
|
-
config?: ProactiveSkillSubagentsConfig | false;
|
|
33
|
-
discoverAvailableSkills: () => AvailableSkill[];
|
|
34
|
-
}): string[];
|
|
35
|
-
//# sourceMappingURL=proactive-skills.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"proactive-skills.d.ts","sourceRoot":"","sources":["../../../../../src/builtin-extensions/pi-subagents/src/agents/proactive-skills.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAmB,MAAM,aAAa,CAAC;AAC7E,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AASxE,MAAM,WAAW,qCAAqC;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oCAAoC;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAQD,wBAAgB,oCAAoC,CACnD,MAAM,CAAC,EAAE,6BAA6B,GAAG,KAAK,GAC5C,qCAAqC,CAmBvC;AAiDD,wBAAgB,gCAAgC,CAAC,KAAK,EAAE;IACvD,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,MAAM,CAAC,EAAE,6BAA6B,GAAG,KAAK,CAAC;CAC/C,GAAG,oCAAoC,EAAE,CAyCzC;AAED,wBAAgB,2CAA2C,CAC1D,eAAe,EAAE,oCAAoC,EAAE,GACrD,MAAM,EAAE,CAYV;AAED,wBAAgB,8CAA8C,CAAC,KAAK,EAAE;IACrE,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,6BAA6B,GAAG,KAAK,CAAC;IAC/C,uBAAuB,EAAE,MAAM,cAAc,EAAE,CAAC;CAChD,GAAG,MAAM,EAAE,CAcX","sourcesContent":["// @ts-nocheck\nimport type { AgentConfig, ChainConfig, ChainStepConfig } from \"./agents.ts\";\nimport type { ProactiveSkillSubagentsConfig } from \"../shared/types.ts\";\n\nconst SUBAGENT_ORCHESTRATION_SKILL = \"pi-subagents\";\nconst DEFAULT_MIN_REFERENCES = 2;\nconst DEFAULT_MAX_RECOMMENDATIONS = 3;\nconst DEFAULT_PREFERRED_AGENT = \"reviewer\";\nconst FALLBACK_AGENT_ORDER = [\"reviewer\", \"context-builder\", \"delegate\"];\nconst MAX_RECOMMENDATION_CAP = 5;\n\nexport interface ResolvedProactiveSkillSubagentsConfig {\n\tenabled: boolean;\n\tminReferences: number;\n\tmaxRecommendations: number;\n\tpreferredAgent: string;\n}\n\nexport interface ProactiveSkillSubagentRecommendation {\n\tskill: string;\n\tagent: string;\n\treferences: number;\n\tsources: string[];\n\tdescription?: string;\n\treason: string;\n}\n\nexport interface AvailableSkill {\n\tname: string;\n\tdescription?: string;\n}\n\nfunction positiveInteger(value: unknown): number | undefined {\n\tif (typeof value !== \"number\") return undefined;\n\tif (!Number.isInteger(value) || !Number.isFinite(value) || value < 1) return undefined;\n\treturn value;\n}\n\nexport function resolveProactiveSkillSubagentsConfig(\n\tconfig?: ProactiveSkillSubagentsConfig | false,\n): ResolvedProactiveSkillSubagentsConfig {\n\tif (config === false) {\n\t\treturn {\n\t\t\tenabled: false,\n\t\t\tminReferences: DEFAULT_MIN_REFERENCES,\n\t\t\tmaxRecommendations: DEFAULT_MAX_RECOMMENDATIONS,\n\t\t\tpreferredAgent: DEFAULT_PREFERRED_AGENT,\n\t\t};\n\t}\n\n\tconst maxRecommendations = positiveInteger(config?.maxRecommendations) ?? DEFAULT_MAX_RECOMMENDATIONS;\n\treturn {\n\t\tenabled: config?.enabled ?? true,\n\t\tminReferences: positiveInteger(config?.minReferences) ?? DEFAULT_MIN_REFERENCES,\n\t\tmaxRecommendations: Math.min(maxRecommendations, MAX_RECOMMENDATION_CAP),\n\t\tpreferredAgent: typeof config?.preferredAgent === \"string\" && config.preferredAgent.trim()\n\t\t\t? config.preferredAgent.trim()\n\t\t\t: DEFAULT_PREFERRED_AGENT,\n\t};\n}\n\nfunction normalizeSkillNames(value: unknown): string[] {\n\tif (value === false || value === true || value === undefined || value === null) return [];\n\tif (Array.isArray(value)) {\n\t\treturn [...new Set(value.filter((entry): entry is string => typeof entry === \"string\").map((entry) => entry.trim()).filter(Boolean))];\n\t}\n\tif (typeof value === \"string\") {\n\t\treturn [...new Set(value.split(\",\").map((entry) => entry.trim()).filter(Boolean))];\n\t}\n\treturn [];\n}\n\nfunction collectStepSkills(step: ChainStepConfig, out: Set<string>): void {\n\tfor (const skill of normalizeSkillNames(step.skills ?? (step as { skill?: unknown }).skill)) {\n\t\tout.add(skill);\n\t}\n\n\tconst parallel = step.parallel;\n\tif (!parallel) return;\n\tif (Array.isArray(parallel)) {\n\t\tfor (const child of parallel) {\n\t\t\tif (child && typeof child === \"object\" && !Array.isArray(child)) {\n\t\t\t\tcollectStepSkills(child as ChainStepConfig, out);\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\tif (typeof parallel === \"object\") {\n\t\tcollectStepSkills(parallel as ChainStepConfig, out);\n\t}\n}\n\nfunction chooseRecommendationAgent(agents: AgentConfig[], preferredAgent: string): string | undefined {\n\tconst enabled = agents.filter((agent) => !agent.disabled);\n\tif (enabled.some((agent) => agent.name === preferredAgent)) return preferredAgent;\n\tfor (const name of FALLBACK_AGENT_ORDER) {\n\t\tif (enabled.some((agent) => agent.name === name)) return name;\n\t}\n\treturn enabled[0]?.name;\n}\n\nfunction addSource(counts: Map<string, Set<string>>, skill: string, source: string): void {\n\tif (skill === SUBAGENT_ORCHESTRATION_SKILL) return;\n\tconst sources = counts.get(skill) ?? new Set<string>();\n\tsources.add(source);\n\tcounts.set(skill, sources);\n}\n\nexport function recommendProactiveSkillSubagents(input: {\n\tagents: AgentConfig[];\n\tchains?: ChainConfig[];\n\tavailableSkills?: AvailableSkill[];\n\tconfig?: ProactiveSkillSubagentsConfig | false;\n}): ProactiveSkillSubagentRecommendation[] {\n\tconst config = resolveProactiveSkillSubagentsConfig(input.config);\n\tif (!config.enabled) return [];\n\n\tconst agent = chooseRecommendationAgent(input.agents, config.preferredAgent);\n\tif (!agent) return [];\n\n\tconst availableByName = input.availableSkills\n\t\t? new Map(input.availableSkills.map((skill) => [skill.name, skill]))\n\t\t: undefined;\n\tconst counts = new Map<string, Set<string>>();\n\n\tfor (const candidate of input.agents) {\n\t\tif (candidate.disabled) continue;\n\t\tfor (const skill of candidate.skills ?? []) {\n\t\t\taddSource(counts, skill, `agent:${candidate.name}`);\n\t\t}\n\t}\n\n\tfor (const chain of input.chains ?? []) {\n\t\tconst chainSkills = new Set<string>();\n\t\tfor (const step of chain.steps) {\n\t\t\tcollectStepSkills(step, chainSkills);\n\t\t}\n\t\tfor (const skill of chainSkills) {\n\t\t\taddSource(counts, skill, `chain:${chain.name}`);\n\t\t}\n\t}\n\n\treturn [...counts.entries()]\n\t\t.filter(([skill, sources]) => sources.size >= config.minReferences && (!availableByName || availableByName.has(skill)))\n\t\t.map(([skill, sources]) => ({\n\t\t\tskill,\n\t\t\tagent,\n\t\t\treferences: sources.size,\n\t\t\tsources: [...sources].sort((a, b) => a.localeCompare(b)),\n\t\t\tdescription: availableByName?.get(skill)?.description,\n\t\t\treason: `referenced by ${sources.size} configured agents/chains`,\n\t\t}))\n\t\t.sort((a, b) => b.references - a.references || a.skill.localeCompare(b.skill))\n\t\t.slice(0, config.maxRecommendations);\n}\n\nexport function formatProactiveSkillSubagentRecommendations(\n\trecommendations: ProactiveSkillSubagentRecommendation[],\n): string[] {\n\tif (recommendations.length === 0) return [];\n\treturn [\n\t\t\"Proactive skill subagent suggestions:\",\n\t\t...recommendations.map((recommendation) => {\n\t\t\tconst sampleSources = recommendation.sources.slice(0, 3).join(\", \");\n\t\t\tconst extra = recommendation.sources.length > 3 ? `, +${recommendation.sources.length - 3} more` : \"\";\n\t\t\tconst description = recommendation.description ? ` - ${recommendation.description}` : \"\";\n\t\t\treturn `- ${recommendation.skill} via ${recommendation.agent} (${recommendation.reason}; ${sampleSources}${extra})${description}`;\n\t\t}),\n\t\t\"Guardrails: use these for broad tasks where a skill-specialist pass is useful; keep fanout small, use fresh context unless private/session context is explicitly needed, and skip when the user asks for a direct answer.\",\n\t];\n}\n\nexport function buildProactiveSkillSubagentRecommendationLines(input: {\n\tagents: AgentConfig[];\n\tchains?: ChainConfig[];\n\tconfig?: ProactiveSkillSubagentsConfig | false;\n\tdiscoverAvailableSkills: () => AvailableSkill[];\n}): string[] {\n\tif (!resolveProactiveSkillSubagentsConfig(input.config).enabled) return [];\n\tlet availableSkills: AvailableSkill[];\n\ttry {\n\t\tavailableSkills = input.discoverAvailableSkills();\n\t} catch {\n\t\tavailableSkills = [];\n\t}\n\treturn formatProactiveSkillSubagentRecommendations(recommendProactiveSkillSubagents({\n\t\tagents: input.agents,\n\t\tchains: input.chains,\n\t\tavailableSkills,\n\t\tconfig: input.config,\n\t}));\n}\n"]}
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
const SUBAGENT_ORCHESTRATION_SKILL = "pi-subagents";
|
|
2
|
-
const DEFAULT_MIN_REFERENCES = 2;
|
|
3
|
-
const DEFAULT_MAX_RECOMMENDATIONS = 3;
|
|
4
|
-
const DEFAULT_PREFERRED_AGENT = "reviewer";
|
|
5
|
-
const FALLBACK_AGENT_ORDER = ["reviewer", "context-builder", "delegate"];
|
|
6
|
-
const MAX_RECOMMENDATION_CAP = 5;
|
|
7
|
-
function positiveInteger(value) {
|
|
8
|
-
if (typeof value !== "number")
|
|
9
|
-
return undefined;
|
|
10
|
-
if (!Number.isInteger(value) || !Number.isFinite(value) || value < 1)
|
|
11
|
-
return undefined;
|
|
12
|
-
return value;
|
|
13
|
-
}
|
|
14
|
-
export function resolveProactiveSkillSubagentsConfig(config) {
|
|
15
|
-
if (config === false) {
|
|
16
|
-
return {
|
|
17
|
-
enabled: false,
|
|
18
|
-
minReferences: DEFAULT_MIN_REFERENCES,
|
|
19
|
-
maxRecommendations: DEFAULT_MAX_RECOMMENDATIONS,
|
|
20
|
-
preferredAgent: DEFAULT_PREFERRED_AGENT,
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
const maxRecommendations = positiveInteger(config?.maxRecommendations) ?? DEFAULT_MAX_RECOMMENDATIONS;
|
|
24
|
-
return {
|
|
25
|
-
enabled: config?.enabled ?? true,
|
|
26
|
-
minReferences: positiveInteger(config?.minReferences) ?? DEFAULT_MIN_REFERENCES,
|
|
27
|
-
maxRecommendations: Math.min(maxRecommendations, MAX_RECOMMENDATION_CAP),
|
|
28
|
-
preferredAgent: typeof config?.preferredAgent === "string" && config.preferredAgent.trim()
|
|
29
|
-
? config.preferredAgent.trim()
|
|
30
|
-
: DEFAULT_PREFERRED_AGENT,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
function normalizeSkillNames(value) {
|
|
34
|
-
if (value === false || value === true || value === undefined || value === null)
|
|
35
|
-
return [];
|
|
36
|
-
if (Array.isArray(value)) {
|
|
37
|
-
return [...new Set(value.filter((entry) => typeof entry === "string").map((entry) => entry.trim()).filter(Boolean))];
|
|
38
|
-
}
|
|
39
|
-
if (typeof value === "string") {
|
|
40
|
-
return [...new Set(value.split(",").map((entry) => entry.trim()).filter(Boolean))];
|
|
41
|
-
}
|
|
42
|
-
return [];
|
|
43
|
-
}
|
|
44
|
-
function collectStepSkills(step, out) {
|
|
45
|
-
for (const skill of normalizeSkillNames(step.skills ?? step.skill)) {
|
|
46
|
-
out.add(skill);
|
|
47
|
-
}
|
|
48
|
-
const parallel = step.parallel;
|
|
49
|
-
if (!parallel)
|
|
50
|
-
return;
|
|
51
|
-
if (Array.isArray(parallel)) {
|
|
52
|
-
for (const child of parallel) {
|
|
53
|
-
if (child && typeof child === "object" && !Array.isArray(child)) {
|
|
54
|
-
collectStepSkills(child, out);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
if (typeof parallel === "object") {
|
|
60
|
-
collectStepSkills(parallel, out);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
function chooseRecommendationAgent(agents, preferredAgent) {
|
|
64
|
-
const enabled = agents.filter((agent) => !agent.disabled);
|
|
65
|
-
if (enabled.some((agent) => agent.name === preferredAgent))
|
|
66
|
-
return preferredAgent;
|
|
67
|
-
for (const name of FALLBACK_AGENT_ORDER) {
|
|
68
|
-
if (enabled.some((agent) => agent.name === name))
|
|
69
|
-
return name;
|
|
70
|
-
}
|
|
71
|
-
return enabled[0]?.name;
|
|
72
|
-
}
|
|
73
|
-
function addSource(counts, skill, source) {
|
|
74
|
-
if (skill === SUBAGENT_ORCHESTRATION_SKILL)
|
|
75
|
-
return;
|
|
76
|
-
const sources = counts.get(skill) ?? new Set();
|
|
77
|
-
sources.add(source);
|
|
78
|
-
counts.set(skill, sources);
|
|
79
|
-
}
|
|
80
|
-
export function recommendProactiveSkillSubagents(input) {
|
|
81
|
-
const config = resolveProactiveSkillSubagentsConfig(input.config);
|
|
82
|
-
if (!config.enabled)
|
|
83
|
-
return [];
|
|
84
|
-
const agent = chooseRecommendationAgent(input.agents, config.preferredAgent);
|
|
85
|
-
if (!agent)
|
|
86
|
-
return [];
|
|
87
|
-
const availableByName = input.availableSkills
|
|
88
|
-
? new Map(input.availableSkills.map((skill) => [skill.name, skill]))
|
|
89
|
-
: undefined;
|
|
90
|
-
const counts = new Map();
|
|
91
|
-
for (const candidate of input.agents) {
|
|
92
|
-
if (candidate.disabled)
|
|
93
|
-
continue;
|
|
94
|
-
for (const skill of candidate.skills ?? []) {
|
|
95
|
-
addSource(counts, skill, `agent:${candidate.name}`);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
for (const chain of input.chains ?? []) {
|
|
99
|
-
const chainSkills = new Set();
|
|
100
|
-
for (const step of chain.steps) {
|
|
101
|
-
collectStepSkills(step, chainSkills);
|
|
102
|
-
}
|
|
103
|
-
for (const skill of chainSkills) {
|
|
104
|
-
addSource(counts, skill, `chain:${chain.name}`);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
return [...counts.entries()]
|
|
108
|
-
.filter(([skill, sources]) => sources.size >= config.minReferences && (!availableByName || availableByName.has(skill)))
|
|
109
|
-
.map(([skill, sources]) => ({
|
|
110
|
-
skill,
|
|
111
|
-
agent,
|
|
112
|
-
references: sources.size,
|
|
113
|
-
sources: [...sources].sort((a, b) => a.localeCompare(b)),
|
|
114
|
-
description: availableByName?.get(skill)?.description,
|
|
115
|
-
reason: `referenced by ${sources.size} configured agents/chains`,
|
|
116
|
-
}))
|
|
117
|
-
.sort((a, b) => b.references - a.references || a.skill.localeCompare(b.skill))
|
|
118
|
-
.slice(0, config.maxRecommendations);
|
|
119
|
-
}
|
|
120
|
-
export function formatProactiveSkillSubagentRecommendations(recommendations) {
|
|
121
|
-
if (recommendations.length === 0)
|
|
122
|
-
return [];
|
|
123
|
-
return [
|
|
124
|
-
"Proactive skill subagent suggestions:",
|
|
125
|
-
...recommendations.map((recommendation) => {
|
|
126
|
-
const sampleSources = recommendation.sources.slice(0, 3).join(", ");
|
|
127
|
-
const extra = recommendation.sources.length > 3 ? `, +${recommendation.sources.length - 3} more` : "";
|
|
128
|
-
const description = recommendation.description ? ` - ${recommendation.description}` : "";
|
|
129
|
-
return `- ${recommendation.skill} via ${recommendation.agent} (${recommendation.reason}; ${sampleSources}${extra})${description}`;
|
|
130
|
-
}),
|
|
131
|
-
"Guardrails: use these for broad tasks where a skill-specialist pass is useful; keep fanout small, use fresh context unless private/session context is explicitly needed, and skip when the user asks for a direct answer.",
|
|
132
|
-
];
|
|
133
|
-
}
|
|
134
|
-
export function buildProactiveSkillSubagentRecommendationLines(input) {
|
|
135
|
-
if (!resolveProactiveSkillSubagentsConfig(input.config).enabled)
|
|
136
|
-
return [];
|
|
137
|
-
let availableSkills;
|
|
138
|
-
try {
|
|
139
|
-
availableSkills = input.discoverAvailableSkills();
|
|
140
|
-
}
|
|
141
|
-
catch {
|
|
142
|
-
availableSkills = [];
|
|
143
|
-
}
|
|
144
|
-
return formatProactiveSkillSubagentRecommendations(recommendProactiveSkillSubagents({
|
|
145
|
-
agents: input.agents,
|
|
146
|
-
chains: input.chains,
|
|
147
|
-
availableSkills,
|
|
148
|
-
config: input.config,
|
|
149
|
-
}));
|
|
150
|
-
}
|
|
151
|
-
//# sourceMappingURL=proactive-skills.js.map
|