@pugi/cli 0.1.0-beta.99 → 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 -195
- 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
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import { promises as fs } from 'node:fs';
|
|
2
|
-
const HEADER = 'ts\trun_id\tscope\tkey\tvalue\tmodel\tprompt_hash\tnotes\n';
|
|
3
|
-
const appendLocks = new Map();
|
|
4
|
-
export class ResultsLedger {
|
|
5
|
-
path;
|
|
6
|
-
constructor(path) {
|
|
7
|
-
this.path = path;
|
|
8
|
-
}
|
|
9
|
-
async append(row) {
|
|
10
|
-
const previous = appendLocks.get(this.path) ?? Promise.resolve();
|
|
11
|
-
const next = previous
|
|
12
|
-
.catch(() => undefined)
|
|
13
|
-
.then(async () => {
|
|
14
|
-
if (await this.needsHeader()) {
|
|
15
|
-
await fs.appendFile(this.path, HEADER, 'utf8');
|
|
16
|
-
}
|
|
17
|
-
await fs.appendFile(this.path, `${this.formatRow(row)}\n`, 'utf8');
|
|
18
|
-
});
|
|
19
|
-
appendLocks.set(this.path, next);
|
|
20
|
-
try {
|
|
21
|
-
await next;
|
|
22
|
-
}
|
|
23
|
-
finally {
|
|
24
|
-
if (appendLocks.get(this.path) === next) {
|
|
25
|
-
appendLocks.delete(this.path);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
async query(filter) {
|
|
30
|
-
const rows = await this.readRows();
|
|
31
|
-
return rows.filter((row) => {
|
|
32
|
-
return Object.entries(filter).every(([field, expected]) => {
|
|
33
|
-
if (expected === undefined) {
|
|
34
|
-
return true;
|
|
35
|
-
}
|
|
36
|
-
const value = row[field];
|
|
37
|
-
return value !== undefined && String(value) === String(expected);
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
async aggregate(scope, key, op) {
|
|
42
|
-
const rows = await this.query({ scope, key });
|
|
43
|
-
if (op === 'count') {
|
|
44
|
-
return rows.length;
|
|
45
|
-
}
|
|
46
|
-
const values = rows
|
|
47
|
-
.map((row) => Number(row.value))
|
|
48
|
-
.filter((value) => Number.isFinite(value));
|
|
49
|
-
if (values.length === 0) {
|
|
50
|
-
return 0;
|
|
51
|
-
}
|
|
52
|
-
if (op === 'sum') {
|
|
53
|
-
return values.reduce((sum, value) => sum + value, 0);
|
|
54
|
-
}
|
|
55
|
-
if (op === 'avg') {
|
|
56
|
-
return values.reduce((sum, value) => sum + value, 0) / values.length;
|
|
57
|
-
}
|
|
58
|
-
if (op === 'min') {
|
|
59
|
-
return Math.min(...values);
|
|
60
|
-
}
|
|
61
|
-
return Math.max(...values);
|
|
62
|
-
}
|
|
63
|
-
async needsHeader() {
|
|
64
|
-
try {
|
|
65
|
-
const stat = await fs.stat(this.path);
|
|
66
|
-
return stat.size === 0;
|
|
67
|
-
}
|
|
68
|
-
catch (error) {
|
|
69
|
-
if (isNodeError(error) && error.code === 'ENOENT') {
|
|
70
|
-
return true;
|
|
71
|
-
}
|
|
72
|
-
throw error;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
async readRows() {
|
|
76
|
-
let data;
|
|
77
|
-
try {
|
|
78
|
-
data = await fs.readFile(this.path, 'utf8');
|
|
79
|
-
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
if (isNodeError(error) && error.code === 'ENOENT') {
|
|
82
|
-
return [];
|
|
83
|
-
}
|
|
84
|
-
throw error;
|
|
85
|
-
}
|
|
86
|
-
if (!data.endsWith('\n')) {
|
|
87
|
-
data = data.slice(0, data.lastIndexOf('\n') + 1);
|
|
88
|
-
}
|
|
89
|
-
const lines = data.split('\n').filter((line) => line.length > 0);
|
|
90
|
-
const dataLines = lines[0] === HEADER.trimEnd() ? lines.slice(1) : lines;
|
|
91
|
-
return dataLines.flatMap((line) => {
|
|
92
|
-
const cells = line.split('\t');
|
|
93
|
-
if (cells.length !== 8) {
|
|
94
|
-
return [];
|
|
95
|
-
}
|
|
96
|
-
const ts = cells[0];
|
|
97
|
-
const run_id = cells[1];
|
|
98
|
-
const scope = cells[2];
|
|
99
|
-
const key = cells[3];
|
|
100
|
-
const value = cells[4];
|
|
101
|
-
const model = cells[5];
|
|
102
|
-
const prompt_hash = cells[6];
|
|
103
|
-
const notes = cells[7];
|
|
104
|
-
if (!ts || !run_id || !scope || !key || value === undefined) {
|
|
105
|
-
return [];
|
|
106
|
-
}
|
|
107
|
-
return [
|
|
108
|
-
{
|
|
109
|
-
ts,
|
|
110
|
-
run_id,
|
|
111
|
-
scope,
|
|
112
|
-
key,
|
|
113
|
-
value,
|
|
114
|
-
...(model ? { model } : {}),
|
|
115
|
-
...(prompt_hash ? { prompt_hash } : {}),
|
|
116
|
-
...(notes ? { notes } : {}),
|
|
117
|
-
},
|
|
118
|
-
];
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
formatRow(row) {
|
|
122
|
-
return [
|
|
123
|
-
row.ts,
|
|
124
|
-
row.run_id,
|
|
125
|
-
row.scope,
|
|
126
|
-
row.key,
|
|
127
|
-
row.value,
|
|
128
|
-
row.model ?? '',
|
|
129
|
-
row.prompt_hash ?? '',
|
|
130
|
-
row.notes ?? '',
|
|
131
|
-
]
|
|
132
|
-
.map((value) => cleanCell(value))
|
|
133
|
-
.join('\t');
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
function cleanCell(value) {
|
|
137
|
-
return String(value).replace(/\r?\n/g, ' ').replace(/\t/g, ' ');
|
|
138
|
-
}
|
|
139
|
-
function isNodeError(error) {
|
|
140
|
-
return error instanceof Error && 'code' in error;
|
|
141
|
-
}
|
|
142
|
-
//# sourceMappingURL=results-tsv.js.map
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { randomBytes } from 'node:crypto';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
function stripQuotes(s) {
|
|
4
|
-
return s
|
|
5
|
-
.replace(/"(?:\\.|[^"\\])*"/g, '""')
|
|
6
|
-
.replace(/'(?:\\.|[^'\\])*'/g, "''");
|
|
7
|
-
}
|
|
8
|
-
function hasRedirect(stripped) {
|
|
9
|
-
const noLogical = stripped.replace(/\|\|/g, ' ').replace(/&&/g, ' ');
|
|
10
|
-
if (/>\s*\S/.test(noLogical))
|
|
11
|
-
return true;
|
|
12
|
-
if (/2>&1/.test(noLogical))
|
|
13
|
-
return true;
|
|
14
|
-
if (/\|\s*tee\b/.test(noLogical))
|
|
15
|
-
return true;
|
|
16
|
-
if (/\|/.test(noLogical))
|
|
17
|
-
return true;
|
|
18
|
-
return false;
|
|
19
|
-
}
|
|
20
|
-
function isCompound(stripped) {
|
|
21
|
-
return /&&|\|\||;|\|/.test(stripped);
|
|
22
|
-
}
|
|
23
|
-
function shellQuote(s) {
|
|
24
|
-
return `'${s.replace(/'/g, `'\\''`)}'`;
|
|
25
|
-
}
|
|
26
|
-
function genLogPath(logDir) {
|
|
27
|
-
const rand = randomBytes(6).toString('hex');
|
|
28
|
-
return join(logDir, `cmd-${rand}.log`);
|
|
29
|
-
}
|
|
30
|
-
export function redirectCommand(command, options) {
|
|
31
|
-
if (!options.workspaceRoot || typeof options.workspaceRoot !== 'string') {
|
|
32
|
-
throw new Error('redirectCommand: workspaceRoot is required');
|
|
33
|
-
}
|
|
34
|
-
const logDir = options.logDir ?? join(options.workspaceRoot, '.pugi', 'logs');
|
|
35
|
-
const logPath = genLogPath(logDir);
|
|
36
|
-
const trimmed = command.trim();
|
|
37
|
-
if (trimmed.length === 0) {
|
|
38
|
-
return { command: trimmed, logPath, alreadyRedirected: false };
|
|
39
|
-
}
|
|
40
|
-
const stripped = stripQuotes(trimmed);
|
|
41
|
-
const already = hasRedirect(stripped);
|
|
42
|
-
if (already && !options.forceRedirect) {
|
|
43
|
-
return { command, logPath, alreadyRedirected: true };
|
|
44
|
-
}
|
|
45
|
-
const compound = isCompound(stripped);
|
|
46
|
-
const transformed = compound
|
|
47
|
-
? `sh -c ${shellQuote(trimmed)} > ${logPath} 2>&1`
|
|
48
|
-
: `${trimmed} > ${logPath} 2>&1`;
|
|
49
|
-
return { command: transformed, logPath, alreadyRedirected: already };
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=stdout-redirect.js.map
|
package/dist/core/lsp/cache.js
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Per-process LSP client cache — .
|
|
3
|
-
*
|
|
4
|
-
* The `runtime/commands/lsp.ts` CLI surface spawns one LSP server
|
|
5
|
-
* per invocation and stops it at the end. That is correct for the
|
|
6
|
-
* one-shot `pugi lsp hover ...` shape but wrong for L15's
|
|
7
|
-
* post-edit auto-diagnostics: every successful `edit`/`write` would
|
|
8
|
-
* otherwise pay the ~2-3s cold-start of `typescript-language-server`,
|
|
9
|
-
* which is unusable inside an agent loop.
|
|
10
|
-
*
|
|
11
|
-
* This module owns a singleton map keyed by `LspLanguage` with lazy
|
|
12
|
-
* initialization (`getOrStart`). The first edit of a TS file in a
|
|
13
|
-
* session pays cold-start; every subsequent edit of any TS/TSX file
|
|
14
|
-
* in the same workspace reuses the warm client.
|
|
15
|
-
*
|
|
16
|
-
* Lifecycle:
|
|
17
|
-
* - `getOrStart(lang, cwd)` — spawn if missing, return cached otherwise.
|
|
18
|
-
* - `stopAll()` — graceful shutdown of every cached client. Called from
|
|
19
|
-
* `runCli` exit so a Ctrl-C never leaves zombie LSP processes behind.
|
|
20
|
-
* - `reset()` — test-only escape hatch, drops the cache without
|
|
21
|
-
* touching child processes (specs inject stubs that own their own
|
|
22
|
-
* lifecycle).
|
|
23
|
-
*
|
|
24
|
-
* Failure handling: a startup failure is NOT cached. The next call
|
|
25
|
-
* tries again. This keeps the cache from poisoning a session when the
|
|
26
|
-
* operator installs the missing LSP binary mid-session and re-edits.
|
|
27
|
-
*
|
|
28
|
-
* Brand voice: ASCII only, no emoji, no banned words.
|
|
29
|
-
*/
|
|
30
|
-
import { isLspLanguageDisabled, startLspClient, } from './client.js';
|
|
31
|
-
const cache = new Map();
|
|
32
|
-
/**
|
|
33
|
-
* Return a warm client for `lang`, starting one if needed. The
|
|
34
|
-
* workspace `cwd` is captured at cache-insert time; if a subsequent
|
|
35
|
-
* call asks for the same language with a different `cwd` we tear
|
|
36
|
-
* down the old client and start a fresh one. This handles the
|
|
37
|
-
* agent-worktree case where the same process hops between workspace
|
|
38
|
-
* roots inside one Node lifetime.
|
|
39
|
-
*/
|
|
40
|
-
export async function getOrStartLspClient(lang, opts) {
|
|
41
|
-
// β7 L9: respect the per-language disable toggle BEFORE we attempt to
|
|
42
|
-
// spawn. The check is cheap and keeps the disabled path from paying
|
|
43
|
-
// the `npx --yes` warmup cost on first use.
|
|
44
|
-
if (isLspLanguageDisabled(lang, opts.lspSettings)) {
|
|
45
|
-
return {
|
|
46
|
-
ok: false,
|
|
47
|
-
reason: 'lsp_disabled',
|
|
48
|
-
detail: `${lang} is disabled via .pugi/settings.json::lsp`,
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
const existing = cache.get(lang);
|
|
52
|
-
if (existing && existing.cwd === opts.cwd) {
|
|
53
|
-
return { ok: true, client: existing.client };
|
|
54
|
-
}
|
|
55
|
-
if (existing && existing.cwd !== opts.cwd) {
|
|
56
|
-
// Workspace switched — stop the old client and fall through to spawn.
|
|
57
|
-
try {
|
|
58
|
-
await existing.client.stop();
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
// best effort; stop() is idempotent + swallow-safe
|
|
62
|
-
}
|
|
63
|
-
cache.delete(lang);
|
|
64
|
-
}
|
|
65
|
-
const result = await startLspClient(lang, opts);
|
|
66
|
-
if (!result.ok) {
|
|
67
|
-
return { ok: false, reason: result.reason, detail: result.detail };
|
|
68
|
-
}
|
|
69
|
-
cache.set(lang, { client: result.value, cwd: opts.cwd });
|
|
70
|
-
return { ok: true, client: result.value };
|
|
71
|
-
}
|
|
72
|
-
/** Look up the cached client without starting one. Returns undefined when missing. */
|
|
73
|
-
export function peekLspClient(lang) {
|
|
74
|
-
return cache.get(lang)?.client;
|
|
75
|
-
}
|
|
76
|
-
/** Snapshot of currently-cached languages — used by `pugi lsp status` debug output. */
|
|
77
|
-
export function listCachedLanguages() {
|
|
78
|
-
return Array.from(cache.keys());
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Stop every cached client and clear the cache. Called from `runCli`
|
|
82
|
-
* exit and from specs that own the lifecycle of their stub servers.
|
|
83
|
-
*/
|
|
84
|
-
export async function stopAllLspClients() {
|
|
85
|
-
const snapshot = Array.from(cache.values());
|
|
86
|
-
cache.clear();
|
|
87
|
-
await Promise.all(snapshot.map(async (entry) => {
|
|
88
|
-
try {
|
|
89
|
-
await entry.client.stop();
|
|
90
|
-
}
|
|
91
|
-
catch {
|
|
92
|
-
// best effort — shutting down anyway
|
|
93
|
-
}
|
|
94
|
-
}));
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Test-only: drop the cache map WITHOUT calling stop on the children.
|
|
98
|
-
* Specs that inject stub servers manage the stub lifecycle themselves;
|
|
99
|
-
* this lets a spec swap a stub mid-test without the cache holding a
|
|
100
|
-
* stale reference to a torn-down process.
|
|
101
|
-
*/
|
|
102
|
-
export function __resetLspCacheForTests() {
|
|
103
|
-
cache.clear();
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=cache.js.map
|