@pugi/cli 0.1.0-beta.99 → 1.0.0-alpha.10
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,260 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Edit-format auto-select (PUGI-79).
|
|
3
|
-
*
|
|
4
|
-
* The 4-layer diff dispatcher (Layer A single-block, B ordered batch,
|
|
5
|
-
* C sha256-gated rewrite, D AST-aware) is layer-agnostic at the wire
|
|
6
|
-
* — the model emits whichever marker family it was prompted with, and
|
|
7
|
-
* `dispatch.ts` routes per envelope. Empirically though, different
|
|
8
|
-
* model families have markedly different success rates per layer:
|
|
9
|
-
*
|
|
10
|
-
* - Anthropic Claude family — native function-calling shape;
|
|
11
|
-
* produces clean single-block Layer A edits with high recall
|
|
12
|
-
* against `+++ NEW / --- OLD / ===` markers.
|
|
13
|
-
* - Open-weight Qwen3 / Kimi / DeepSeek — historically stronger
|
|
14
|
-
* with whole-file Layer C rewrites OR sha256-gated patches; the
|
|
15
|
-
* conflict-marker (Gemini-style) Layer A surface has higher
|
|
16
|
-
* ambiguity rates on these models.
|
|
17
|
-
* - DeepSeek-coder family — anchors well on Layer C primary with
|
|
18
|
-
* Layer A as fallback (their RLHF set leaned hard on patch-style
|
|
19
|
-
* emit).
|
|
20
|
-
* - Reasoning models (o-series, gpt-5) — handle Layer D AST-aware
|
|
21
|
-
* operations when an LSP bridge is available; Layer C primary
|
|
22
|
-
* otherwise.
|
|
23
|
-
*
|
|
24
|
-
* The existing `format-matrix.ts` keyed exact slugs only — fine for
|
|
25
|
-
* the canonical set but blind to vendor-prefixed slugs that come back
|
|
26
|
-
* from the Anvil gateway (e.g. `anthropic/claude-sonnet-4-20250514`,
|
|
27
|
-
* `qwen/qwen3-coder`, `deepseek/deepseek-chat-v3.1`). This detector
|
|
28
|
-
* layers ON TOP of the matrix:
|
|
29
|
-
*
|
|
30
|
-
* 1. exact-key match against `EDIT_FORMAT_MATRIX` — wins outright.
|
|
31
|
-
* 2. vendor-prefix strip → second exact-key probe (so
|
|
32
|
-
* `anthropic/claude-sonnet-4-6` resolves the same as `claude-sonnet-4-6`).
|
|
33
|
-
* 3. family inference from the (possibly prefixed) slug — returns
|
|
34
|
-
* the family-default chain (see `FAMILY_DEFAULTS`).
|
|
35
|
-
* 4. unknown — wildcard `*` from the matrix.
|
|
36
|
-
*
|
|
37
|
-
* The output is the same `EditFormatChain` shape the matrix already
|
|
38
|
-
* exposes so callers (dispatcher hint, persona prompt hint) consume a
|
|
39
|
-
* single contract.
|
|
40
|
-
*
|
|
41
|
-
* NOT a routing decision: the dispatcher's per-layer routing is still
|
|
42
|
-
* driven by what the model actually emits. The detector's output is a
|
|
43
|
-
* HINT — surfaced to the persona prompt so the model has the right
|
|
44
|
-
* marker template loaded, and surfaced to the dispatcher's fuzzy ladder
|
|
45
|
-
* / fallback ordering so an ambiguous response gets retried in an order
|
|
46
|
-
* that matches the model's empirical strengths.
|
|
47
|
-
*
|
|
48
|
-
* Spec: this is the PUGI-79 implementation; the issue ships the
|
|
49
|
-
* detector + dispatcher hint + persona hint together.
|
|
50
|
-
*/
|
|
51
|
-
import { EDIT_FORMAT_MATRIX, } from './format-matrix.js';
|
|
52
|
-
/**
|
|
53
|
-
* Family-level default chains. These are deliberately CONSERVATIVE —
|
|
54
|
-
* each family's primary is the layer with the highest observed apply-
|
|
55
|
-
* rate across the 2026-05 dogfood corpus; fallbacks rank in observed
|
|
56
|
-
* success order. The exact-slug entries in `EDIT_FORMAT_MATRIX` can
|
|
57
|
-
* override per-model; family defaults are the floor.
|
|
58
|
-
*
|
|
59
|
-
* Anthropic:
|
|
60
|
-
* The Anvil corpus shows Claude family hitting ~95% Layer A apply on
|
|
61
|
-
* first try; Layer C is the rescue when the file is large enough
|
|
62
|
-
* that the operator's region selection ambiguates. Matrix entries
|
|
63
|
-
* for `claude-opus-4-7` + `claude-sonnet-4-6` override to Layer C
|
|
64
|
-
* primary because the larger context windows let those models hold
|
|
65
|
-
* the whole file comfortably.
|
|
66
|
-
*
|
|
67
|
-
* Open-weight (qwen / deepseek / kimi):
|
|
68
|
-
* These ship whole-file rewrites more reliably than partial diffs —
|
|
69
|
-
* the patch-style envelopes their fine-tune sets prefer match Layer
|
|
70
|
-
* C semantics. Layer A is the fallback because they can still emit
|
|
71
|
-
* sensible search/replace pairs when prompted explicitly.
|
|
72
|
-
*
|
|
73
|
-
* Reasoning (gpt-5 / o-series):
|
|
74
|
-
* Layer C primary because the longer reasoning trace burns through
|
|
75
|
-
* the partial-diff format's positional constraints. Layer D rides
|
|
76
|
-
* the wire when an LSP is bridged; the matrix entries override per-
|
|
77
|
-
* model when that's available (see `qwen3-coder-480b → D`).
|
|
78
|
-
*
|
|
79
|
-
* Unknown:
|
|
80
|
-
* Defers to the wildcard chain from the matrix (Layer A primary).
|
|
81
|
-
*/
|
|
82
|
-
const FAMILY_DEFAULTS = {
|
|
83
|
-
anthropic: { primary: 'A', fallback: ['C', 'B'] },
|
|
84
|
-
openai: { primary: 'C', fallback: ['A', 'B'] },
|
|
85
|
-
gemini: { primary: 'A', fallback: ['C', 'B'] },
|
|
86
|
-
qwen: { primary: 'A', fallback: ['C', 'B'] },
|
|
87
|
-
deepseek: { primary: 'C', fallback: ['A', 'B'] },
|
|
88
|
-
kimi: { primary: 'C', fallback: ['A', 'B'] },
|
|
89
|
-
unknown: { primary: 'A', fallback: ['B', 'C'] },
|
|
90
|
-
};
|
|
91
|
-
/**
|
|
92
|
-
* Detect the model family from a slug. Handles vendor-prefixed forms
|
|
93
|
-
* (`<vendor>/<model>` and `<provider>:<model>`) plus bare-name forms.
|
|
94
|
-
* Case-insensitive on the family name; case-preserving on the rest.
|
|
95
|
-
*
|
|
96
|
-
* Order matters: vendor prefix wins when present (the gateway is
|
|
97
|
-
* authoritative about which family routed). Otherwise the bare slug
|
|
98
|
-
* gets prefix-matched against well-known family stems. Unknown slugs
|
|
99
|
-
* surface as `unknown` — the caller falls back to the matrix wildcard.
|
|
100
|
-
*/
|
|
101
|
-
export function detectModelFamily(modelSlug) {
|
|
102
|
-
if (!modelSlug)
|
|
103
|
-
return 'unknown';
|
|
104
|
-
const raw = modelSlug.trim();
|
|
105
|
-
if (raw.length === 0)
|
|
106
|
-
return 'unknown';
|
|
107
|
-
const lower = raw.toLowerCase();
|
|
108
|
-
// Vendor-prefix form: `<vendor>/<model>`. The vendor wins outright
|
|
109
|
-
// because the gateway is authoritative — `anthropic/<anything>`
|
|
110
|
-
// routes Claude family regardless of the suffix.
|
|
111
|
-
const slashIdx = lower.indexOf('/');
|
|
112
|
-
if (slashIdx > 0) {
|
|
113
|
-
const vendor = lower.slice(0, slashIdx);
|
|
114
|
-
switch (vendor) {
|
|
115
|
-
case 'anthropic':
|
|
116
|
-
return 'anthropic';
|
|
117
|
-
case 'openai':
|
|
118
|
-
return 'openai';
|
|
119
|
-
case 'google':
|
|
120
|
-
case 'gemini':
|
|
121
|
-
case 'xai':
|
|
122
|
-
return 'gemini';
|
|
123
|
-
case 'qwen':
|
|
124
|
-
case 'alibaba':
|
|
125
|
-
return 'qwen';
|
|
126
|
-
case 'deepseek':
|
|
127
|
-
return 'deepseek';
|
|
128
|
-
case 'moonshot':
|
|
129
|
-
case 'kimi':
|
|
130
|
-
return 'kimi';
|
|
131
|
-
default:
|
|
132
|
-
// Unknown vendor — fall through to bare-name detection on the
|
|
133
|
-
// suffix. Some gateways (OpenRouter style) put the family
|
|
134
|
-
// name AFTER the vendor (e.g. `together/qwen-coder`), so the
|
|
135
|
-
// suffix still carries signal.
|
|
136
|
-
return detectFamilyFromBareName(lower.slice(slashIdx + 1));
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
// Provider-prefix form: `ollama:<model>` (engine-VM local runtime).
|
|
140
|
-
// The prefix is informational; strip and continue.
|
|
141
|
-
const colonIdx = lower.indexOf(':');
|
|
142
|
-
if (colonIdx > 0) {
|
|
143
|
-
const prefix = lower.slice(0, colonIdx);
|
|
144
|
-
if (prefix === 'ollama' || prefix === 'lmstudio' || prefix === 'llama-cpp') {
|
|
145
|
-
return detectFamilyFromBareName(lower.slice(colonIdx + 1));
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
return detectFamilyFromBareName(lower);
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Bare-name detector. Lower-case input. Prefix-match against family
|
|
152
|
-
* stems; longest match wins so `claude-opus-4-7` doesn't accidentally
|
|
153
|
-
* route through the generic `c*` lane.
|
|
154
|
-
*/
|
|
155
|
-
function detectFamilyFromBareName(name) {
|
|
156
|
-
if (name.startsWith('claude'))
|
|
157
|
-
return 'anthropic';
|
|
158
|
-
if (name.startsWith('gpt') || name.startsWith('o1') || name.startsWith('o3') || name.startsWith('o4')) {
|
|
159
|
-
return 'openai';
|
|
160
|
-
}
|
|
161
|
-
if (name.startsWith('gemini') || name.startsWith('grok'))
|
|
162
|
-
return 'gemini';
|
|
163
|
-
if (name.startsWith('qwen'))
|
|
164
|
-
return 'qwen';
|
|
165
|
-
if (name.startsWith('deepseek'))
|
|
166
|
-
return 'deepseek';
|
|
167
|
-
if (name.startsWith('kimi') || name.startsWith('moonshot'))
|
|
168
|
-
return 'kimi';
|
|
169
|
-
return 'unknown';
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Family-default chain. Exported for callers that want the family-
|
|
173
|
-
* level recommendation without running the full detector pipeline
|
|
174
|
-
* (e.g. observability surfaces that already resolved the family).
|
|
175
|
-
*/
|
|
176
|
-
export function familyDefaultChain(family) {
|
|
177
|
-
// Defensive clone: the FAMILY_DEFAULTS table is readonly conceptually
|
|
178
|
-
// but the EditFormatChain type allows fallback array mutation. Clone
|
|
179
|
-
// so callers cannot accidentally mutate the table.
|
|
180
|
-
const base = FAMILY_DEFAULTS[family];
|
|
181
|
-
return { primary: base.primary, fallback: [...base.fallback] };
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Resolve the preferred edit-format chain for a model slug.
|
|
185
|
-
*
|
|
186
|
-
* Resolution order:
|
|
187
|
-
* 1. Exact slug match in EDIT_FORMAT_MATRIX — overrides everything.
|
|
188
|
-
* This lets per-model tuning (e.g. `qwen3-coder-480b → D`) win
|
|
189
|
-
* over the family default.
|
|
190
|
-
* 2. Vendor-prefix strip + exact match — so `anthropic/claude-...`
|
|
191
|
-
* resolves to the bare `claude-...` entry when present.
|
|
192
|
-
* 3. Family inference — `FAMILY_DEFAULTS[detectModelFamily(slug)]`.
|
|
193
|
-
* 4. Wildcard fallback — `EDIT_FORMAT_MATRIX['*']`.
|
|
194
|
-
*
|
|
195
|
-
* The returned chain is always a fresh object so caller mutations
|
|
196
|
-
* cannot leak back into the matrix.
|
|
197
|
-
*/
|
|
198
|
-
export function detectEditFormat(modelSlug) {
|
|
199
|
-
const fallbackWildcard = EDIT_FORMAT_MATRIX['*'] ?? { primary: 'A', fallback: [] };
|
|
200
|
-
if (!modelSlug || modelSlug.trim().length === 0) {
|
|
201
|
-
return { primary: fallbackWildcard.primary, fallback: [...fallbackWildcard.fallback] };
|
|
202
|
-
}
|
|
203
|
-
const raw = modelSlug.trim();
|
|
204
|
-
// Step 1 — exact match wins.
|
|
205
|
-
const exact = EDIT_FORMAT_MATRIX[raw];
|
|
206
|
-
if (exact)
|
|
207
|
-
return { primary: exact.primary, fallback: [...exact.fallback] };
|
|
208
|
-
// Step 2 — vendor-prefix strip (e.g. `anthropic/claude-sonnet-4-6`).
|
|
209
|
-
const slashIdx = raw.indexOf('/');
|
|
210
|
-
if (slashIdx > 0) {
|
|
211
|
-
const suffix = raw.slice(slashIdx + 1);
|
|
212
|
-
const stripped = EDIT_FORMAT_MATRIX[suffix];
|
|
213
|
-
if (stripped)
|
|
214
|
-
return { primary: stripped.primary, fallback: [...stripped.fallback] };
|
|
215
|
-
}
|
|
216
|
-
// Step 3 — family inference.
|
|
217
|
-
const family = detectModelFamily(raw);
|
|
218
|
-
if (family !== 'unknown')
|
|
219
|
-
return familyDefaultChain(family);
|
|
220
|
-
// Step 4 — wildcard.
|
|
221
|
-
return { primary: fallbackWildcard.primary, fallback: [...fallbackWildcard.fallback] };
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Render a one-line marker-format hint for the persona prompt. The
|
|
225
|
-
* dispatcher already accepts every marker family (anthropic / gemini /
|
|
226
|
-
* openai), so the hint is preference, not gating — surface the
|
|
227
|
-
* preferred template + alternative so the model knows which envelope
|
|
228
|
-
* has the highest apply-rate for its family.
|
|
229
|
-
*
|
|
230
|
-
* Returns `null` when the slug is unknown / unset; the caller drops
|
|
231
|
-
* the hint module on null so the prompt is not polluted with empty
|
|
232
|
-
* sections.
|
|
233
|
-
*/
|
|
234
|
-
export function renderEditFormatHint(modelSlug) {
|
|
235
|
-
if (!modelSlug || modelSlug.trim().length === 0)
|
|
236
|
-
return null;
|
|
237
|
-
const family = detectModelFamily(modelSlug);
|
|
238
|
-
if (family === 'unknown')
|
|
239
|
-
return null;
|
|
240
|
-
const chain = detectEditFormat(modelSlug);
|
|
241
|
-
const markerStyle = FAMILY_MARKER_TEMPLATE[family];
|
|
242
|
-
return `# Edit-format hint (auto-selected for ${family})
|
|
243
|
-
Preferred layer: Layer ${chain.primary}${chain.fallback.length > 0 ? ` (fallback: ${chain.fallback.map((l) => `Layer ${l}`).join(' -> ')})` : ''}.
|
|
244
|
-
Marker template: ${markerStyle}
|
|
245
|
-
The dispatcher accepts any marker family; this hint optimises apply-rate for the resolved model.`;
|
|
246
|
-
}
|
|
247
|
-
/**
|
|
248
|
-
* Marker template literal per family. Mirrors the three envelopes the
|
|
249
|
-
* marker-parser accepts; used by `renderEditFormatHint` so the model
|
|
250
|
-
* sees a concrete shape next to the layer recommendation.
|
|
251
|
-
*/
|
|
252
|
-
const FAMILY_MARKER_TEMPLATE = {
|
|
253
|
-
anthropic: '+++ NEW <file> / <new contents> / --- OLD <file> / <old contents> / ===',
|
|
254
|
-
openai: '@@@ REWRITE <file> sha256=<hex> / <full new contents> / @@@ END',
|
|
255
|
-
gemini: '<<<<<<< SEARCH <file> / <old> / ======= / <new> / >>>>>>> REPLACE',
|
|
256
|
-
qwen: '<<<<<<< SEARCH <file> / <old> / ======= / <new> / >>>>>>> REPLACE',
|
|
257
|
-
deepseek: '@@@ REWRITE <file> sha256=<hex> / <full new contents> / @@@ END',
|
|
258
|
-
kimi: '@@@ REWRITE <file> sha256=<hex> / <full new contents> / @@@ END',
|
|
259
|
-
};
|
|
260
|
-
//# sourceMappingURL=format-detector.js.map
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export const EDIT_FORMAT_MATRIX = {
|
|
2
|
-
'claude-opus-4-7': { primary: 'C', fallback: ['A', 'B'] },
|
|
3
|
-
'claude-sonnet-4-6': { primary: 'C', fallback: ['A', 'B'] },
|
|
4
|
-
'claude-haiku-4-5': { primary: 'A', fallback: ['B'] },
|
|
5
|
-
'gpt-5': { primary: 'C', fallback: ['A'] },
|
|
6
|
-
'gpt-5-mini': { primary: 'A', fallback: ['B'] },
|
|
7
|
-
'deepseek-v4-pro': { primary: 'A', fallback: ['B', 'C'] },
|
|
8
|
-
'deepseek-coder-v2': { primary: 'A', fallback: ['B'] },
|
|
9
|
-
'qwen3-coder-480b': { primary: 'D', fallback: ['A', 'B'] },
|
|
10
|
-
'qwen3:0.6b': { primary: 'A', fallback: [] },
|
|
11
|
-
'gemini-2.5-pro': { primary: 'C', fallback: ['A'] },
|
|
12
|
-
'gemini-2.0-flash': { primary: 'A', fallback: ['B'] },
|
|
13
|
-
'ollama:qwen3-coder:30b': { primary: 'A', fallback: ['B'] },
|
|
14
|
-
'*': { primary: 'A', fallback: ['B', 'C'] },
|
|
15
|
-
};
|
|
16
|
-
export function pickEditFormat(model, fileSize, isLSPAvailable = () => false) {
|
|
17
|
-
const chain = EDIT_FORMAT_MATRIX[model] ?? EDIT_FORMAT_MATRIX['*'] ?? { primary: 'A', fallback: [] };
|
|
18
|
-
if (chain.primary === 'C' && fileSize > 4000) {
|
|
19
|
-
return { primary: 'A', fallback: ['B'] };
|
|
20
|
-
}
|
|
21
|
-
if (chain.primary === 'D' && !isLSPAvailable()) {
|
|
22
|
-
return { primary: chain.fallback[0] ?? 'A', fallback: chain.fallback.slice(1) };
|
|
23
|
-
}
|
|
24
|
-
return chain;
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=format-matrix.js.map
|