@pugi/cli 0.1.0-beta.98 → 1.0.0-alpha.1
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/LICENSE +1 -1
- package/README.md +11 -191
- package/bin/pugi +8 -0
- package/package.json +15 -71
- package/postinstall.mjs +31 -0
- package/CHANGELOG.md +0 -132
- package/THIRD_PARTY_NOTICES.md +0 -40
- package/assets/pugi-mascot.ansi +0 -16
- package/assets/pugi-prozr2-mascot.ansi +0 -9
- package/bin/run.js +0 -34
- package/dist/commands/deploy.js +0 -439
- package/dist/commands/flatten.js +0 -191
- package/dist/commands/jobs-watch.js +0 -201
- package/dist/commands/jobs.js +0 -260
- package/dist/commands/retro.js +0 -210
- package/dist/commands/smoke.js +0 -133
- package/dist/core/agent-progress/cleanup.js +0 -134
- package/dist/core/agent-progress/schema.js +0 -144
- package/dist/core/agent-progress/writer.js +0 -101
- package/dist/core/agents/adaptive-router.js +0 -330
- package/dist/core/agents/loader.js +0 -104
- package/dist/core/agents/query-decomposer.js +0 -297
- package/dist/core/agents/registry.js +0 -69
- package/dist/core/approvals/shortcut-resolver.js +0 -98
- package/dist/core/artifact-chain/dispatcher.js +0 -148
- package/dist/core/artifact-chain/exporter.js +0 -164
- package/dist/core/artifact-chain/state.js +0 -243
- package/dist/core/artifact-chain/steps.js +0 -169
- package/dist/core/ask-user/question.js +0 -92
- package/dist/core/audit/audit-trail.js +0 -275
- package/dist/core/auth/ensure-authenticated.js +0 -129
- package/dist/core/auth/env-provider.js +0 -238
- package/dist/core/auto-open-browser.js +0 -128
- package/dist/core/auto-update/channels.js +0 -122
- package/dist/core/auto-update/checker.js +0 -241
- package/dist/core/auto-update/state.js +0 -235
- package/dist/core/bare-mode/index.js +0 -107
- package/dist/core/bash/redirect.js +0 -281
- package/dist/core/bash-classifier.js +0 -1397
- package/dist/core/checkpoint/resumer.js +0 -149
- package/dist/core/checkpoint/rewinder.js +0 -291
- package/dist/core/checkpoints/shadow-git.js +0 -670
- package/dist/core/citations/parser.js +0 -109
- package/dist/core/classifier/yolo-classifier.js +0 -88
- package/dist/core/clipboard.js +0 -70
- package/dist/core/codegraph/decision-store.js +0 -248
- package/dist/core/codegraph/detect-repo.js +0 -459
- package/dist/core/codegraph/install.js +0 -134
- package/dist/core/codegraph/offer-hook.js +0 -220
- package/dist/core/compact/auto-trigger.js +0 -96
- package/dist/core/compact/buffer-rewriter.js +0 -115
- package/dist/core/compact/summarizer.js +0 -208
- package/dist/core/compact/token-counter.js +0 -108
- package/dist/core/consensus/anvil-fanout.js +0 -276
- package/dist/core/consensus/diff-capture.js +0 -491
- package/dist/core/consensus/rubric.js +0 -233
- package/dist/core/context/builder.js +0 -114
- package/dist/core/context/compaction-events.js +0 -99
- package/dist/core/context/compaction.js +0 -602
- package/dist/core/context/index.js +0 -28
- package/dist/core/context/invariants.js +0 -250
- package/dist/core/context/markdown-loader.js +0 -288
- package/dist/core/context/markdown-traverse.js +0 -255
- package/dist/core/context/pugiignore.js +0 -316
- package/dist/core/context/repo-skeleton.js +0 -533
- package/dist/core/context/tool-eviction.js +0 -55
- package/dist/core/context/watcher.js +0 -342
- package/dist/core/context/working-set.js +0 -165
- package/dist/core/coordinator/agent-tools.js +0 -77
- package/dist/core/coordinator/agent-toolset.js +0 -65
- package/dist/core/coordinator/fsm.js +0 -73
- package/dist/core/coordinator/mode-fsm.js +0 -70
- package/dist/core/cost/rate-card.js +0 -129
- package/dist/core/cost/tracker.js +0 -221
- package/dist/core/credentials.js +0 -355
- package/dist/core/cron/scheduler.js +0 -138
- package/dist/core/denial-tracking/index.js +0 -8
- package/dist/core/denial-tracking/state.js +0 -264
- package/dist/core/diagnostics/probe-runner.js +0 -93
- package/dist/core/diagnostics/probes/api.js +0 -46
- package/dist/core/diagnostics/probes/auth.js +0 -93
- package/dist/core/diagnostics/probes/bare-mode.js +0 -42
- package/dist/core/diagnostics/probes/cli-version.js +0 -127
- package/dist/core/diagnostics/probes/config.js +0 -72
- package/dist/core/diagnostics/probes/denial-tracking.js +0 -57
- package/dist/core/diagnostics/probes/disk.js +0 -81
- package/dist/core/diagnostics/probes/engine-live.js +0 -46
- package/dist/core/diagnostics/probes/git.js +0 -65
- package/dist/core/diagnostics/probes/hooks.js +0 -118
- package/dist/core/diagnostics/probes/mcp.js +0 -75
- package/dist/core/diagnostics/probes/node.js +0 -59
- package/dist/core/diagnostics/probes/pnpm.js +0 -36
- package/dist/core/diagnostics/probes/pugi-md.js +0 -89
- package/dist/core/diagnostics/probes/sandbox.js +0 -72
- package/dist/core/diagnostics/probes/session.js +0 -74
- package/dist/core/diagnostics/probes/status-snapshot.js +0 -488
- package/dist/core/diagnostics/probes/workspace.js +0 -63
- package/dist/core/diagnostics/types.js +0 -70
- package/dist/core/dispatch/cache-cleanup.js +0 -197
- package/dist/core/dispatch/cache-handoff.js +0 -295
- package/dist/core/edits/apply-patch-layer-e.js +0 -189
- package/dist/core/edits/dispatch.js +0 -511
- package/dist/core/edits/format-detector.js +0 -260
- package/dist/core/edits/format-matrix.js +0 -26
- package/dist/core/edits/fuzzy-ladder.js +0 -650
- package/dist/core/edits/index.js +0 -19
- package/dist/core/edits/journal.js +0 -199
- package/dist/core/edits/layer-a-apply.js +0 -217
- package/dist/core/edits/layer-a-fuzzy-apply.js +0 -198
- package/dist/core/edits/layer-b-apply.js +0 -211
- package/dist/core/edits/layer-c-apply.js +0 -160
- package/dist/core/edits/layer-d-ast.js +0 -572
- package/dist/core/edits/marker-parser.js +0 -401
- package/dist/core/edits/security-gate.js +0 -223
- package/dist/core/edits/verify-hook.js +0 -273
- package/dist/core/edits/worktree.js +0 -322
- package/dist/core/engine/adapter-runner.js +0 -8
- package/dist/core/engine/anvil-client.js +0 -344
- package/dist/core/engine/auto-compact.js +0 -179
- package/dist/core/engine/budgets.js +0 -192
- package/dist/core/engine/context-prefix.js +0 -155
- package/dist/core/engine/index.js +0 -12
- package/dist/core/engine/intensity.js +0 -163
- package/dist/core/engine/intent.js +0 -260
- package/dist/core/engine/native-pugi.js +0 -1616
- package/dist/core/engine/noop.js +0 -27
- package/dist/core/engine/prompts.js +0 -236
- package/dist/core/engine/strip-internal-fields.js +0 -124
- package/dist/core/engine/tool-bridge.js +0 -2173
- package/dist/core/engine/verification-patterns.js +0 -195
- package/dist/core/evaluation/golden-dataset.js +0 -293
- package/dist/core/feedback/queue.js +0 -177
- package/dist/core/feedback/submitter.js +0 -145
- package/dist/core/file-cache.js +0 -141
- package/dist/core/flatten/flatten-repo.js +0 -439
- package/dist/core/format/osc8-link.js +0 -28
- package/dist/core/hook-chains.js +0 -392
- package/dist/core/hooks/citation-verify-hook.js +0 -138
- package/dist/core/hooks/citation-verify.js +0 -112
- package/dist/core/hooks/events.js +0 -46
- package/dist/core/hooks/index.js +0 -15
- package/dist/core/hooks/registry.js +0 -216
- package/dist/core/hooks/runner.js +0 -236
- package/dist/core/hooks/v2/event-emitter.js +0 -115
- package/dist/core/hooks/v2/executor.js +0 -282
- package/dist/core/hooks/v2/index.js +0 -25
- package/dist/core/hooks/v2/lifecycle.js +0 -104
- package/dist/core/hooks/v2/loader.js +0 -216
- package/dist/core/hooks/v2/matcher.js +0 -125
- package/dist/core/hooks/v2/trust.js +0 -143
- package/dist/core/hooks/v2/types.js +0 -86
- package/dist/core/hooks/worktree-events.js +0 -158
- package/dist/core/hooks.js +0 -415
- package/dist/core/image/renderer.js +0 -71
- package/dist/core/index-store.js +0 -260
- package/dist/core/init/detector.js +0 -582
- package/dist/core/init/template-renderer.js +0 -242
- package/dist/core/jobs/registry.js +0 -462
- package/dist/core/ledger/results-tsv.js +0 -142
- package/dist/core/log-discipline/stdout-redirect.js +0 -51
- package/dist/core/lsp/cache.js +0 -105
- package/dist/core/lsp/client.js +0 -1229
- package/dist/core/lsp/language-detect.js +0 -66
- package/dist/core/lsp/post-edit-diagnostics.js +0 -171
- package/dist/core/lsp/server-detect.js +0 -173
- package/dist/core/lsp/symbol-cache.js +0 -162
- package/dist/core/lsp/symbol-tools.js +0 -664
- package/dist/core/mcp/client.js +0 -385
- package/dist/core/mcp/http-server.js +0 -553
- package/dist/core/mcp/orchestrator-config.js +0 -192
- package/dist/core/mcp/orchestrator-tools.js +0 -806
- package/dist/core/mcp/permission.js +0 -190
- package/dist/core/mcp/registry.js +0 -193
- package/dist/core/mcp/server-tools.js +0 -219
- package/dist/core/mcp/server.js +0 -397
- package/dist/core/mcp/trust.js +0 -91
- package/dist/core/memory/dual-write.js +0 -416
- package/dist/core/memory/passive-extract.js +0 -130
- package/dist/core/memory/phase1-kinds.js +0 -20
- package/dist/core/memory/secret-scanner.js +0 -304
- package/dist/core/memory-sync/queue.js +0 -170
- package/dist/core/metrics/extract.js +0 -113
- package/dist/core/modes/roo-modes.js +0 -68
- package/dist/core/onboarding/ensure-initialized.js +0 -133
- package/dist/core/onboarding/marker.js +0 -111
- package/dist/core/onboarding/telemetry-state.js +0 -108
- package/dist/core/output-style/presets.js +0 -176
- package/dist/core/output-style/state.js +0 -185
- package/dist/core/path-security.js +0 -345
- package/dist/core/permission.js +0 -369
- package/dist/core/permissions/auto-classifier.js +0 -124
- package/dist/core/permissions/bash-parser.js +0 -371
- package/dist/core/permissions/circuit-breaker.js +0 -83
- package/dist/core/permissions/constrained-edit.js +0 -91
- package/dist/core/permissions/gate.js +0 -278
- package/dist/core/permissions/index.js +0 -20
- package/dist/core/permissions/mode.js +0 -174
- package/dist/core/permissions/network-egress.js +0 -137
- package/dist/core/permissions/state.js +0 -241
- package/dist/core/permissions/tool-class.js +0 -107
- package/dist/core/plan-mode/ui-state.js +0 -51
- package/dist/core/plans/plan-artifact.js +0 -721
- package/dist/core/policy-limits/etag-store.js +0 -122
- package/dist/core/prd-check/parser.js +0 -215
- package/dist/core/prd-check/reporter.js +0 -127
- package/dist/core/prd-check/session-review.js +0 -557
- package/dist/core/prd-check/verifiers.js +0 -223
- package/dist/core/prompt-cache/client-cache.js +0 -99
- package/dist/core/prompts/assembly.js +0 -29
- package/dist/core/prompts/registry.js +0 -364
- package/dist/core/pugi-gitignore.js +0 -52
- package/dist/core/pugi-md/cc-compat-rules.js +0 -735
- package/dist/core/pugi-md/context-injector.js +0 -76
- package/dist/core/pugi-md/walk-up.js +0 -207
- package/dist/core/python/uv-installer.js +0 -270
- package/dist/core/python/uv-resolver.js +0 -83
- package/dist/core/rate-limit/narrator.js +0 -146
- package/dist/core/recipes/cli-types.js +0 -20
- package/dist/core/recipes/loader.js +0 -103
- package/dist/core/recipes/runner.js +0 -345
- package/dist/core/recipes/schema.js +0 -587
- package/dist/core/release-notes/parser.js +0 -241
- package/dist/core/release-notes/state.js +0 -116
- package/dist/core/repl/ask.js +0 -512
- package/dist/core/repl/cancellation.js +0 -98
- package/dist/core/repl/cap-warning.js +0 -91
- package/dist/core/repl/clipboard-read.js +0 -174
- package/dist/core/repl/dispatch-fsm.js +0 -220
- package/dist/core/repl/engine-bridge.js +0 -303
- package/dist/core/repl/history-search.js +0 -175
- package/dist/core/repl/history.js +0 -182
- package/dist/core/repl/kill-ring.js +0 -138
- package/dist/core/repl/model-pricing.js +0 -135
- package/dist/core/repl/privacy-banner.js +0 -71
- package/dist/core/repl/session.js +0 -4962
- package/dist/core/repl/slash-commands.js +0 -747
- package/dist/core/repl/store/index.js +0 -12
- package/dist/core/repl/store/jsonl-log.js +0 -321
- package/dist/core/repl/store/lockfile.js +0 -155
- package/dist/core/repl/store/session-store.js +0 -821
- package/dist/core/repl/store/types.js +0 -44
- package/dist/core/repl/store/uuid-v7.js +0 -68
- package/dist/core/repl/tool-route.js +0 -382
- package/dist/core/repl/workspace-context.js +0 -206
- package/dist/core/repo-map/build.js +0 -125
- package/dist/core/repo-map/cache.js +0 -185
- package/dist/core/repo-map/extractor.js +0 -254
- package/dist/core/repo-map/formatter.js +0 -145
- package/dist/core/repo-map/page-rank.js +0 -105
- package/dist/core/repo-map/scanner.js +0 -211
- package/dist/core/retro/git-collector.js +0 -251
- package/dist/core/retro/health-card.js +0 -25
- package/dist/core/retro/metrics.js +0 -342
- package/dist/core/retro/narrative.js +0 -249
- package/dist/core/retro/plane-collector.js +0 -274
- package/dist/core/retro/pr-issue-link.js +0 -65
- package/dist/core/retro/types.js +0 -16
- package/dist/core/retry-budget/budget.js +0 -284
- package/dist/core/retry-budget/index.js +0 -5
- package/dist/core/retry-budget/retry-cap.js +0 -74
- package/dist/core/routing/lead-worker.js +0 -43
- package/dist/core/routing/pre-flight-estimator.js +0 -108
- package/dist/core/runs/run-tree.js +0 -103
- package/dist/core/sandboxing/adapter.js +0 -29
- package/dist/core/sandboxing/index.js +0 -49
- package/dist/core/sandboxing/none.js +0 -19
- package/dist/core/sandboxing/seatbelt.js +0 -183
- package/dist/core/security/injection-scanner.js +0 -367
- package/dist/core/security/output-filter.js +0 -418
- package/dist/core/session/env-file.js +0 -105
- package/dist/core/session/section-budgets.js +0 -140
- package/dist/core/session.js +0 -377
- package/dist/core/settings.js +0 -400
- package/dist/core/share/formatter.js +0 -271
- package/dist/core/share/redactor.js +0 -221
- package/dist/core/share/uploader.js +0 -267
- package/dist/core/skills/defaults.js +0 -457
- package/dist/core/skills/loader.js +0 -454
- package/dist/core/skills/sources.js +0 -480
- package/dist/core/skills/trust.js +0 -172
- package/dist/core/smoke/headless-driver.js +0 -174
- package/dist/core/smoke/orchestrator.js +0 -194
- package/dist/core/smoke/runner.js +0 -238
- package/dist/core/smoke/scenario-parser.js +0 -316
- package/dist/core/statusline.js +0 -99
- package/dist/core/subagents/dispatcher-real.js +0 -600
- package/dist/core/subagents/dispatcher.js +0 -352
- package/dist/core/subagents/index.js +0 -39
- package/dist/core/subagents/isolation-matrix.js +0 -213
- package/dist/core/subagents/spawn.js +0 -101
- package/dist/core/telemetry/emitter.js +0 -229
- package/dist/core/telemetry/queue.js +0 -251
- package/dist/core/theme/context.js +0 -91
- package/dist/core/theme/presets.js +0 -228
- package/dist/core/theme/state.js +0 -181
- package/dist/core/todos/invariant.js +0 -10
- package/dist/core/todos/state.js +0 -177
- package/dist/core/tool-schema/compressor.js +0 -89
- package/dist/core/transport/version-interceptor.js +0 -166
- package/dist/core/trust.js +0 -109
- package/dist/core/tui/thinking-block.js +0 -64
- package/dist/core/vim/keymap.js +0 -288
- package/dist/core/vim/state.js +0 -92
- package/dist/core/watch-markers/marker-watcher.js +0 -133
- package/dist/core/worktree/include-parser.js +0 -249
- package/dist/core/worktree-manager/cleanup.js +0 -123
- package/dist/core/worktree-manager/manager.js +0 -303
- package/dist/index.js +0 -44
- package/dist/runtime/bootstrap.js +0 -190
- package/dist/runtime/cli.js +0 -8121
- package/dist/runtime/commands/agents.js +0 -385
- package/dist/runtime/commands/budget.js +0 -192
- package/dist/runtime/commands/cancel.js +0 -231
- package/dist/runtime/commands/chain.js +0 -489
- package/dist/runtime/commands/codegraph-status.js +0 -227
- package/dist/runtime/commands/compact.js +0 -297
- package/dist/runtime/commands/config.js +0 -595
- package/dist/runtime/commands/cost.js +0 -199
- package/dist/runtime/commands/delegate.js +0 -312
- package/dist/runtime/commands/dispatch.js +0 -126
- package/dist/runtime/commands/doctor.js +0 -579
- package/dist/runtime/commands/feedback.js +0 -184
- package/dist/runtime/commands/hooks.js +0 -187
- package/dist/runtime/commands/init.js +0 -254
- package/dist/runtime/commands/lsp.js +0 -368
- package/dist/runtime/commands/mcp.js +0 -935
- package/dist/runtime/commands/memory.js +0 -582
- package/dist/runtime/commands/model.js +0 -237
- package/dist/runtime/commands/onboarding.js +0 -275
- package/dist/runtime/commands/patch.js +0 -128
- package/dist/runtime/commands/permissions.js +0 -112
- package/dist/runtime/commands/plan.js +0 -143
- package/dist/runtime/commands/prd-check.js +0 -285
- package/dist/runtime/commands/privacy.js +0 -107
- package/dist/runtime/commands/recipe.js +0 -325
- package/dist/runtime/commands/redo-blob-store.js +0 -92
- package/dist/runtime/commands/redo.js +0 -361
- package/dist/runtime/commands/release-notes.js +0 -229
- package/dist/runtime/commands/repo-map.js +0 -95
- package/dist/runtime/commands/report.js +0 -299
- package/dist/runtime/commands/resume.js +0 -118
- package/dist/runtime/commands/review-consensus.js +0 -414
- package/dist/runtime/commands/rewind.js +0 -333
- package/dist/runtime/commands/roster.js +0 -117
- package/dist/runtime/commands/sessions.js +0 -163
- package/dist/runtime/commands/share.js +0 -316
- package/dist/runtime/commands/skills.js +0 -401
- package/dist/runtime/commands/status.js +0 -186
- package/dist/runtime/commands/stickers.js +0 -82
- package/dist/runtime/commands/style.js +0 -194
- package/dist/runtime/commands/theme.js +0 -196
- package/dist/runtime/commands/undo.js +0 -361
- package/dist/runtime/commands/update.js +0 -289
- package/dist/runtime/commands/vim.js +0 -140
- package/dist/runtime/commands/worktree.js +0 -177
- package/dist/runtime/commands/worktrees.js +0 -155
- package/dist/runtime/deprecation-warning.js +0 -69
- package/dist/runtime/engine-exit-code.js +0 -50
- package/dist/runtime/headless-repl.js +0 -195
- package/dist/runtime/headless.js +0 -548
- package/dist/runtime/load-hooks-or-exit.js +0 -71
- package/dist/runtime/plan-decompose.js +0 -531
- package/dist/runtime/sigint-guard.js +0 -272
- package/dist/runtime/stream-renderer.js +0 -195
- package/dist/runtime/update-check.js +0 -294
- package/dist/runtime/version.js +0 -65
- package/dist/runtime/worktree-bootstrap.js +0 -579
- package/dist/skills/bundled/batch.js +0 -617
- package/dist/skills/bundled/index.js +0 -45
- package/dist/skills/bundled/loop.js +0 -358
- package/dist/skills/bundled/remember.js +0 -383
- package/dist/skills/bundled/simplify.js +0 -289
- package/dist/skills/bundled/skillify.js +0 -373
- package/dist/skills/bundled/stuck.js +0 -558
- package/dist/skills/bundled/verify.js +0 -439
- package/dist/testing/vcr.js +0 -486
- package/dist/tools/agent-tool.js +0 -229
- package/dist/tools/apply-patch.js +0 -556
- package/dist/tools/ask-user-question.js +0 -337
- package/dist/tools/ask-user.js +0 -115
- package/dist/tools/bash.js +0 -1238
- package/dist/tools/brief.js +0 -224
- package/dist/tools/cron.js +0 -433
- package/dist/tools/enter-worktree.js +0 -250
- package/dist/tools/exit-worktree.js +0 -147
- package/dist/tools/file-tools.js +0 -553
- package/dist/tools/http-request.js +0 -336
- package/dist/tools/lsp-tools.js +0 -565
- package/dist/tools/mcp-tool.js +0 -260
- package/dist/tools/multi-edit.js +0 -361
- package/dist/tools/powershell.js +0 -268
- package/dist/tools/registry.js +0 -166
- package/dist/tools/server-tools.js +0 -892
- package/dist/tools/skill-tool.js +0 -96
- package/dist/tools/sleep.js +0 -99
- package/dist/tools/synthetic-output.js +0 -133
- package/dist/tools/tasks.js +0 -208
- package/dist/tools/todo-write.js +0 -184
- package/dist/tools/verify-plan-execution.js +0 -295
- package/dist/tools/web-fetch-injection-scanner.js +0 -207
- package/dist/tools/web-fetch.js +0 -720
- package/dist/tools/web-search.js +0 -458
- package/dist/tui/agent-progress-card.js +0 -111
- package/dist/tui/agent-tree-pane.js +0 -9
- package/dist/tui/agent-tree.js +0 -87
- package/dist/tui/ask-cli.js +0 -52
- package/dist/tui/ask-modal.js +0 -211
- package/dist/tui/ask-user-question-chips.js +0 -315
- package/dist/tui/ask-user-question-prompt.js +0 -203
- package/dist/tui/compact-banner.js +0 -81
- package/dist/tui/conversation-pane.js +0 -164
- package/dist/tui/cost-table.js +0 -111
- package/dist/tui/device-flow.js +0 -142
- package/dist/tui/doctor-table.js +0 -46
- package/dist/tui/feedback-prompt.js +0 -156
- package/dist/tui/input-box.js +0 -732
- package/dist/tui/login-picker.js +0 -69
- package/dist/tui/markdown-render.js +0 -266
- package/dist/tui/multi-file-diff-approval.js +0 -375
- package/dist/tui/onboarding-wizard.js +0 -240
- package/dist/tui/permissions-picker.js +0 -86
- package/dist/tui/render.js +0 -160
- package/dist/tui/repl-render.js +0 -770
- package/dist/tui/repl-splash-art.js +0 -64
- package/dist/tui/repl-splash-mascot.js +0 -154
- package/dist/tui/repl-splash.js +0 -117
- package/dist/tui/repl.js +0 -378
- package/dist/tui/slash-palette.js +0 -106
- package/dist/tui/splash-data.js +0 -61
- package/dist/tui/splash.js +0 -31
- package/dist/tui/status-bar.js +0 -209
- package/dist/tui/status-table.js +0 -7
- package/dist/tui/stickers-art.js +0 -136
- package/dist/tui/style-table.js +0 -28
- package/dist/tui/theme-table.js +0 -29
- package/dist/tui/thinking-spinner.js +0 -123
- package/dist/tui/tool-stream-pane.js +0 -140
- package/dist/tui/update-banner.js +0 -33
- package/dist/tui/vim-input.js +0 -267
- package/dist/tui/welcome-banner.js +0 -107
- package/dist/tui/welcome-data.js +0 -293
- package/dist/tui/workspace-context.js +0 -105
- package/docs/examples/codegraph.mcp.json +0 -10
- package/test/scenarios/codegen-create-file.scenario.txt +0 -13
- package/test/scenarios/compact-force.scenario.txt +0 -12
- package/test/scenarios/identity.scenario.txt +0 -11
- package/test/scenarios/persona-handoff.scenario.txt +0 -12
- package/test/scenarios/walkback.scenario.txt +0 -12
package/dist/tools/agent-tool.js
DELETED
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `agent` tool — β2 S3 .
|
|
3
|
-
*
|
|
4
|
-
* Exposes the subagent spawn primitive as a first-class tool call so
|
|
5
|
-
* the root Pugi persona (or any orchestrator-capable parent loop) can
|
|
6
|
-
* delegate a brief to a specialist child via the standard tool-use
|
|
7
|
-
* grammar instead of via the legacy `<pugi-delegate>` XML sidechannel.
|
|
8
|
-
*
|
|
9
|
-
* Grammar:
|
|
10
|
-
*
|
|
11
|
-
* {
|
|
12
|
-
* "role": "coder" | "verifier" | "reviewer" | "researcher" | ...,
|
|
13
|
-
* "brief": "one-paragraph task description",
|
|
14
|
-
* "isolation": "worktree" | "shared_fs" | "auto" // optional, default "auto"
|
|
15
|
-
* }
|
|
16
|
-
*
|
|
17
|
-
* Returns a JSON envelope:
|
|
18
|
-
*
|
|
19
|
-
* {
|
|
20
|
-
* "ok": true,
|
|
21
|
-
* "taskId": "subagent-<uuid>",
|
|
22
|
-
* "role": "coder",
|
|
23
|
-
* "personaSlug": "dev",
|
|
24
|
-
* "status": "shipped" | "blocked" | "failed",
|
|
25
|
-
* "summary": "...",
|
|
26
|
-
* "filesChanged": ["src/...", "src/..."],
|
|
27
|
-
* "toolCallCount": N,
|
|
28
|
-
* "tokensIn": N,
|
|
29
|
-
* "tokensOut": N,
|
|
30
|
-
* "durationMs": N,
|
|
31
|
-
* "worktreePath": "/path/.pugi/worktrees/<uuid>" // only when worktree isolation used
|
|
32
|
-
* }
|
|
33
|
-
*
|
|
34
|
-
* Why expose this as a tool rather than baking it into the engine
|
|
35
|
-
* loop directly:
|
|
36
|
-
*
|
|
37
|
-
* - The model's existing tool-use grammar is what every modern Anvil
|
|
38
|
-
* provider speaks natively. Wrapping delegation as a tool means the
|
|
39
|
-
* model can decide WHEN to spawn a child the same way it decides
|
|
40
|
-
* when to read/edit/bash — no special-case prompt engineering.
|
|
41
|
-
* - The `agent` tool is gated by the isolation-matrix capability map
|
|
42
|
-
* (only `orchestrator`-class roles see it in their tools schema).
|
|
43
|
-
* A coder/reviewer/verifier cannot recursively spawn grandchildren
|
|
44
|
-
* because they never see the `agent` tool in the first place.
|
|
45
|
-
* - The audit log threads cleanly: parent's `tool_call: agent(...)`
|
|
46
|
-
* pairs with the child's `subagent.spawned/tool_call/completed`
|
|
47
|
-
* events, and a single SSE replay yields the full tree.
|
|
48
|
-
*/
|
|
49
|
-
import { z } from 'zod';
|
|
50
|
-
import { randomUUID } from 'node:crypto';
|
|
51
|
-
import { relative as relativePath } from 'node:path';
|
|
52
|
-
import { spawnSubagentWithOutcome } from '../core/subagents/spawn.js';
|
|
53
|
-
import { inheritCacheContext } from '../core/dispatch/cache-handoff.js';
|
|
54
|
-
/**
|
|
55
|
-
* Argument schema. `isolation: 'auto'` defers to the role-default
|
|
56
|
-
* isolation tier (set by `isolationForRole` in dispatcher.ts). The
|
|
57
|
-
* explicit `worktree` opt-in forces worktree isolation even for roles
|
|
58
|
-
* whose default is `shared_fs_serialized`; `shared_fs` does the
|
|
59
|
-
* inverse (forces shared-fs even for roles whose default is `worktree`).
|
|
60
|
-
*
|
|
61
|
-
* The role enum mirrors the SDK's SubagentRole — keep both in lockstep.
|
|
62
|
-
*
|
|
63
|
-
* Leak P0 L2 : `z.strictObject` rejects ANY additional or
|
|
64
|
-
* aliased fields at parse time. Matches the the standard file-edit grammar /
|
|
65
|
-
* FileWriteTool posture (). The model-facing JSON
|
|
66
|
-
* schema already declares `additionalProperties: false`; the strict
|
|
67
|
-
* Zod variant is defense-in-depth — if the bridge ever bypasses the
|
|
68
|
-
* model-side gate (raw test fixture, internal dispatch), the runtime
|
|
69
|
-
* still refuses unknown keys instead of silently dropping them.
|
|
70
|
-
*/
|
|
71
|
-
export const agentToolArgsSchema = z.strictObject({
|
|
72
|
-
role: z.enum([
|
|
73
|
-
'orchestrator',
|
|
74
|
-
'architect',
|
|
75
|
-
'coder',
|
|
76
|
-
'verifier',
|
|
77
|
-
'reviewer',
|
|
78
|
-
'researcher',
|
|
79
|
-
'release',
|
|
80
|
-
'devops',
|
|
81
|
-
'design_qa',
|
|
82
|
-
]).describe('SubagentRole — selects persona + isolation tier.'),
|
|
83
|
-
brief: z
|
|
84
|
-
.string()
|
|
85
|
-
.min(1, 'brief must not be empty')
|
|
86
|
-
.max(8000, 'brief must be ≤ 8000 chars')
|
|
87
|
-
.describe('One-paragraph task description forwarded to the child as the user prompt. '
|
|
88
|
-
+ 'Be concrete: include filenames, expected behavior, and acceptance criteria.'),
|
|
89
|
-
isolation: z
|
|
90
|
-
.enum(['worktree', 'shared_fs', 'auto'])
|
|
91
|
-
.optional()
|
|
92
|
-
.describe('Optional override. `worktree` forces a scratch git worktree for write isolation; '
|
|
93
|
-
+ '`shared_fs` forces same-tree execution; `auto` (default) defers to the role tier.'),
|
|
94
|
-
});
|
|
95
|
-
/**
|
|
96
|
-
* Dispatch a subagent via the `agent` tool. Returns the JSON envelope
|
|
97
|
-
* the executor wraps into the tool result frame. Throws when the
|
|
98
|
-
* arguments fail schema validation — the executor catches and feeds
|
|
99
|
-
* the message back to the model so it can correct itself.
|
|
100
|
-
*/
|
|
101
|
-
export async function agentTool(args, ctx) {
|
|
102
|
-
const validated = agentToolArgsSchema.parse(args);
|
|
103
|
-
if (!ctx.engineClient) {
|
|
104
|
-
// Hard refusal: the `agent` tool is real-backend-only. Surfacing a
|
|
105
|
-
// structured envelope (instead of throwing) lets the model decide
|
|
106
|
-
// whether to abandon the delegation or to fall back to in-process
|
|
107
|
-
// work. Throwing here would terminate the parent loop on a tool
|
|
108
|
-
// error frame, which is the wrong UX when the issue is config.
|
|
109
|
-
return {
|
|
110
|
-
ok: false,
|
|
111
|
-
taskId: `subagent-rejected-${randomUUID()}`,
|
|
112
|
-
role: validated.role,
|
|
113
|
-
personaSlug: '',
|
|
114
|
-
status: 'failed',
|
|
115
|
-
summary: 'agent tool unavailable: no engine client wired through the parent dispatch. '
|
|
116
|
-
+ 'Run pugi via the standard CLI entrypoints; the in-memory test harness does '
|
|
117
|
-
+ 'not currently support real subagent spawn.',
|
|
118
|
-
filesChanged: [],
|
|
119
|
-
toolCallCount: 0,
|
|
120
|
-
tokensIn: 0,
|
|
121
|
-
tokensOut: 0,
|
|
122
|
-
durationMs: 0,
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
// β2 S10 pre-flight (best-effort): refuse the spawn if the child's
|
|
126
|
-
// role-default token budget exceeds the parent's remaining budget.
|
|
127
|
-
// The check is conservative — it uses the child's DEFAULT envelope
|
|
128
|
-
// because we do not know the actual run cost ahead of time. Roles
|
|
129
|
-
// can downscale via SubagentTask.budget overrides; this gate just
|
|
130
|
-
// catches the gross case (parent has 5k left, child default 80k).
|
|
131
|
-
if (ctx.parentBudgetRemaining?.tokens !== undefined) {
|
|
132
|
-
const { budgetForRole } = await import('../core/subagents/dispatcher.js');
|
|
133
|
-
const childDefault = budgetForRole(validated.role, undefined);
|
|
134
|
-
if (childDefault.tokens > ctx.parentBudgetRemaining.tokens) {
|
|
135
|
-
return {
|
|
136
|
-
ok: false,
|
|
137
|
-
taskId: `subagent-budget-refused-${randomUUID()}`,
|
|
138
|
-
role: validated.role,
|
|
139
|
-
personaSlug: '',
|
|
140
|
-
status: 'blocked',
|
|
141
|
-
summary: `agent spawn refused: child '${validated.role}' default budget is ${childDefault.tokens} tokens `
|
|
142
|
-
+ `but parent has only ${ctx.parentBudgetRemaining.tokens} tokens remaining. `
|
|
143
|
-
+ 'Tighten the child task budget or finish the parent first.',
|
|
144
|
-
filesChanged: [],
|
|
145
|
-
toolCallCount: 0,
|
|
146
|
-
tokensIn: 0,
|
|
147
|
-
tokensOut: 0,
|
|
148
|
-
durationMs: 0,
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
const task = {
|
|
153
|
-
id: `subagent-${randomUUID()}`,
|
|
154
|
-
role: validated.role,
|
|
155
|
-
prompt: validated.brief,
|
|
156
|
-
// `auto` permission mode matches the parent loop's default; the
|
|
157
|
-
// isolation-matrix capability gate provides the load-bearing
|
|
158
|
-
// restriction layer regardless of permissionMode.
|
|
159
|
-
permissionMode: 'auto',
|
|
160
|
-
};
|
|
161
|
-
// L10 : synthesize a prompt-cache inheritance handle for
|
|
162
|
-
// the child before we dispatch. The handle is persisted under
|
|
163
|
-
// `.pugi/cache-refs/<childAgentId>.json` so:
|
|
164
|
-
// - The child engine loop's first turn (dispatcher-real.ts) can
|
|
165
|
-
// forward parent_cache_id onto Anvil — provider-dependent honour
|
|
166
|
-
// (Anthropic cache_control breakpoints today; OpenAI/Gemini
|
|
167
|
-
// silently ignore until Anvil grows per-provider adapters).
|
|
168
|
-
// - Operators can introspect via `pugi dispatch list-cache-refs`.
|
|
169
|
-
// - `pugi dispatch clear-cache-refs --older-than 1h` can GC after
|
|
170
|
-
// a long session.
|
|
171
|
-
// Failure to persist must NOT block the dispatch — the handle is a
|
|
172
|
-
// best-effort optimisation; if disk is full or the workspace root is
|
|
173
|
-
// read-only, we degrade silently to a cache-miss dispatch.
|
|
174
|
-
try {
|
|
175
|
-
inheritCacheContext(ctx.session.id, task.id, {
|
|
176
|
-
workspaceRoot: ctx.session.root,
|
|
177
|
-
...(ctx.now ? { now: ctx.now } : {}),
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
catch {
|
|
181
|
-
// Silent degrade: cache inheritance is forward-compat, not load-bearing.
|
|
182
|
-
}
|
|
183
|
-
const useWorktree = validated.isolation === 'worktree'
|
|
184
|
-
? true
|
|
185
|
-
: validated.isolation === 'shared_fs'
|
|
186
|
-
? false
|
|
187
|
-
: undefined; // 'auto' → defer to role default
|
|
188
|
-
const outcome = await spawnSubagentWithOutcome(task, ctx.session, {
|
|
189
|
-
engineClient: ctx.engineClient,
|
|
190
|
-
...(useWorktree !== undefined ? { useWorktreeIsolation: useWorktree } : {}),
|
|
191
|
-
});
|
|
192
|
-
const envelope = {
|
|
193
|
-
// `ok` = subagent did not crash. Both `shipped` (real work) and
|
|
194
|
-
// `replied` (text-only completion, added) count as
|
|
195
|
-
// non-crash outcomes; the caller can branch on the explicit
|
|
196
|
-
// `status` field below if it needs to distinguish them.
|
|
197
|
-
ok: outcome.result.status === 'shipped' || outcome.result.status === 'replied',
|
|
198
|
-
taskId: outcome.result.taskId,
|
|
199
|
-
role: outcome.result.role,
|
|
200
|
-
personaSlug: outcome.result.personaSlug,
|
|
201
|
-
status: outcome.result.status,
|
|
202
|
-
summary: outcome.result.summary,
|
|
203
|
-
filesChanged: outcome.result.filesChanged,
|
|
204
|
-
toolCallCount: outcome.result.toolCallCount,
|
|
205
|
-
tokensIn: outcome.result.tokensIn,
|
|
206
|
-
tokensOut: outcome.result.tokensOut,
|
|
207
|
-
durationMs: outcome.result.durationMs,
|
|
208
|
-
};
|
|
209
|
-
if (outcome.worktreeHandle) {
|
|
210
|
-
// β2a r2 (Codex P1): emit the worktree path RELATIVE to
|
|
211
|
-
// the parent session's workspace root. The envelope is JSON-stringified
|
|
212
|
-
// into the parent loop's tool_result frame and from there flows to the
|
|
213
|
-
// provider on every subsequent assistant turn — shipping the absolute
|
|
214
|
-
// path (`/Users/<operator>/Web/.../.pugi/worktrees/<uuid>`) leaks the
|
|
215
|
-
// operator's home directory to the upstream provider on every spawn.
|
|
216
|
-
//
|
|
217
|
-
// The composeSummary path (dispatcher-real.ts §β2a r1) already scrubs
|
|
218
|
-
// the summary text via the same `relative()` wrapping; this is the
|
|
219
|
-
// matching fix for the structured envelope field that r1 missed.
|
|
220
|
-
// The relative form (`.pugi/worktrees/<uuid>`) is enough for the
|
|
221
|
-
// operator's local `pugi worktree promote/drop` commands which run
|
|
222
|
-
// resolved against ctx.session.root anyway.
|
|
223
|
-
const relPath = relativePath(ctx.session.root, outcome.worktreeHandle.path)
|
|
224
|
-
|| outcome.worktreeHandle.path;
|
|
225
|
-
envelope.worktreePath = relPath;
|
|
226
|
-
}
|
|
227
|
-
return envelope;
|
|
228
|
-
}
|
|
229
|
-
//# sourceMappingURL=agent-tool.js.map
|