@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
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,205 +1,25 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @pugi/cli
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
hand jobs off to the cabinet or a remote runner, and keep every artifact local
|
|
5
|
-
by default.
|
|
6
|
-
|
|
7
|
-
- **Local-first.** Every plan, diff, and artifact lives under `.pugi/` in your
|
|
8
|
-
repo. Nothing leaves the machine unless you explicitly run `pugi handoff` or
|
|
9
|
-
`pugi sync`.
|
|
10
|
-
- **Web continuation.** When a job needs collaboration, an approval, or a clean
|
|
11
|
-
Linux runner, hand it off to the cabinet at `app.pugi.io`.
|
|
12
|
-
- **One CLI, three install paths.** npm, Homebrew tap, and a one-liner shell
|
|
13
|
-
script.
|
|
3
|
+
Pugi CLI - terminal-native software execution system.
|
|
14
4
|
|
|
15
5
|
## Install
|
|
16
6
|
|
|
17
|
-
### npm (works everywhere with Node 20+)
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
npm install -g pugi
|
|
21
|
-
pugi --version
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
### Homebrew (macOS + Linux)
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
brew install pugi-io/tap/pugi
|
|
28
|
-
pugi --version
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
The formula declares a Node 20+ runtime dependency and downloads the published
|
|
32
|
-
npm tarball, so the result is identical to `npm install -g pugi`.
|
|
33
|
-
|
|
34
|
-
### One-liner (curl)
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
curl -fsSL https://pugi.dev/install | sh
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
The script detects your OS (Darwin / Linux), bootstraps Node 20+ via Homebrew
|
|
41
|
-
or `apt` if it is missing, and then runs `npm install -g pugi`. It prints the
|
|
42
|
-
installed version on success and exits non-zero on any failure. The script
|
|
43
|
-
itself is served from `pugi.dev`; review it at `https://pugi.dev/install` or
|
|
44
|
-
in `apps/admin-api/public/install.sh` before piping into a shell.
|
|
45
|
-
|
|
46
|
-
### Requirements
|
|
47
|
-
|
|
48
|
-
- Node.js **20 or newer** (`node --version`)
|
|
49
|
-
- A POSIX shell for the curl installer (macOS, Linux, WSL)
|
|
50
|
-
- Git, for any command that touches a repo
|
|
51
|
-
|
|
52
|
-
## Quickstart
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
mkdir my-project && cd my-project
|
|
56
|
-
git init
|
|
57
|
-
pugi init
|
|
58
|
-
pugi idea "build a tiny TODO app"
|
|
59
|
-
pugi plan
|
|
60
|
-
pugi build
|
|
61
|
-
pugi review
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
Every command writes to `.pugi/` (events log, artifacts, index). Re-run
|
|
65
|
-
`pugi sessions --rebuild` if you ever delete the index — the append-only
|
|
66
|
-
`.pugi/events.jsonl` is the source of truth.
|
|
67
|
-
|
|
68
|
-
## Login
|
|
69
|
-
|
|
70
|
-
Most commands run fully offline. The ones that talk to the Pugi runtime
|
|
71
|
-
(`pugi review --triple --remote`, future `pugi handoff`) need an API key.
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
export PUGI_API_KEY=pugi_live_... # from app.pugi.io > Settings > API
|
|
75
|
-
export PUGI_API_URL=https://api.pugi.io # optional, this is the default
|
|
76
|
-
pugi review --triple --remote
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
The key is read from the environment, never persisted to disk, and never
|
|
80
|
-
logged. To revoke it, rotate the key in the cabinet — the CLI will see a
|
|
81
|
-
`401` on the next call and exit `5`.
|
|
82
|
-
|
|
83
|
-
## Common commands
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
pugi init # bootstrap .pugi/ in the current repo
|
|
87
|
-
pugi idea "..." # capture an idea, opens a plan stub
|
|
88
|
-
pugi plan # ask the persona team to expand the idea
|
|
89
|
-
pugi build # execute the plan locally
|
|
90
|
-
pugi review # local diff review
|
|
91
|
-
pugi review --triple # local triple-review evidence bundle
|
|
92
|
-
pugi review --triple --remote
|
|
93
|
-
# call Anvil for 3-model consensus
|
|
94
|
-
pugi handoff --web # hand the session off to the cabinet
|
|
95
|
-
pugi sessions # list sessions from .pugi/index.json
|
|
96
|
-
pugi sessions --rebuild # rebuild the index from events.jsonl
|
|
97
|
-
pugi deploy --target vercel my-vercel-project --project proj_42
|
|
98
|
-
# trigger a Vercel deploy from the bound Git source
|
|
99
|
-
pugi deploy --status dep_42 # vendor-agnostic status snapshot
|
|
100
|
-
pugi deploy --logs dep_42 --tail
|
|
101
|
-
# build-log tail; --tail polls until terminal
|
|
102
|
-
pugi doctor --json # environment diagnostic
|
|
103
|
-
pugi version # CLI version
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
Run `pugi --help` for the full list.
|
|
107
|
-
|
|
108
|
-
### Deploy
|
|
109
|
-
|
|
110
|
-
`pugi deploy` triggers a deployment for the project bound to your Vercel or
|
|
111
|
-
Render integration. Source is resolved from the existing `ProjectGitBinding`
|
|
112
|
-
row on the admin-api side — the CLI never reads local files.
|
|
113
|
-
|
|
114
|
-
```bash
|
|
115
|
-
# Vercel — production (default)
|
|
116
|
-
pugi deploy --target vercel my-vercel-project --project proj_42
|
|
117
|
-
|
|
118
|
-
# Vercel — preview from a feature branch
|
|
119
|
-
pugi deploy --target vercel my-vercel-project --project proj_42 \
|
|
120
|
-
--target-env preview --ref feat/landing-tweaks
|
|
121
|
-
|
|
122
|
-
# Render (Sprint 2 — endpoint returns 501 today)
|
|
123
|
-
pugi deploy --target render my-render-svc --project proj_42
|
|
124
|
-
|
|
125
|
-
# Query existing deploys
|
|
126
|
-
pugi deploy --status dep_42
|
|
127
|
-
pugi deploy --logs dep_42 --tail
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
Exit codes:
|
|
131
|
-
|
|
132
|
-
- `0` success (queued, ready, building)
|
|
133
|
-
- `1` failed (status=error, refused, not authenticated)
|
|
134
|
-
- `2` transient (rate-limited, runtime down, retry-safe)
|
|
135
|
-
|
|
136
|
-
## Privacy
|
|
137
|
-
|
|
138
|
-
Pugi defaults to `local-only` — no upload happens without an explicit flag.
|
|
139
|
-
`pugi sync --dry-run --privacy <mode>` lets you preview exactly what would
|
|
140
|
-
leave the machine before you ever enable real upload (still gated; the alpha
|
|
141
|
-
returns `status: blocked, reason: sync_upload_not_implemented`).
|
|
142
|
-
|
|
143
|
-
## Updating
|
|
144
|
-
|
|
145
7
|
```bash
|
|
146
|
-
npm install -g pugi
|
|
147
|
-
brew upgrade pugi # if you installed via Homebrew
|
|
148
|
-
curl -fsSL https://pugi.dev/install | sh # one-liner re-run is idempotent
|
|
8
|
+
npm install -g @pugi/cli
|
|
149
9
|
```
|
|
150
10
|
|
|
151
|
-
##
|
|
11
|
+
## Usage
|
|
152
12
|
|
|
153
13
|
```bash
|
|
154
|
-
|
|
155
|
-
#
|
|
156
|
-
|
|
14
|
+
pugi --help
|
|
15
|
+
pugi # interactive TUI
|
|
16
|
+
pugi run "..." # one-shot prompt
|
|
157
17
|
```
|
|
158
18
|
|
|
159
|
-
|
|
160
|
-
Homebrew cellar. `.pugi/` directories in your repos are left untouched on
|
|
161
|
-
uninstall; remove them manually if you want a clean slate.
|
|
162
|
-
|
|
163
|
-
## Hooks
|
|
164
|
-
|
|
165
|
-
Pugi runs user-defined shell commands at lifecycle events (`SessionStart`,
|
|
166
|
-
`PreToolUse`, `PermissionRequest`, `PostToolUse`, `PostToolUseFailure`,
|
|
167
|
-
`Stop`, `SessionEnd`, `UserPromptSubmit`). Drop a `hooks.json` at one of:
|
|
168
|
-
|
|
169
|
-
- `~/.pugi/hooks.json` — user hooks, always loaded.
|
|
170
|
-
- `<workspace>/.pugi/hooks.json` — project hooks, loaded only when the
|
|
171
|
-
workspace is trusted (see Sprint α5.6 for the `pugi config trust .` UX).
|
|
172
|
-
|
|
173
|
-
See [`docs/hooks-example.json`](./docs/hooks-example.json) for a working
|
|
174
|
-
config. Example: log every bash invocation through `logger`:
|
|
175
|
-
|
|
176
|
-
```json
|
|
177
|
-
{ "event": "PreToolUse", "match": { "tool": "bash" }, "run": "logger -t pugi \"$PUGI_HOOK_PAYLOAD\"" }
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
Hooks cannot bypass permissions — a hook that re-invokes `pugi` re-enters
|
|
181
|
-
the permission engine in its own process.
|
|
182
|
-
|
|
183
|
-
## Distribution
|
|
184
|
-
|
|
185
|
-
The three install paths are documented in detail at
|
|
186
|
-
[`docs/features/pugi-cli-distribution.md`](../../docs/features/pugi-cli-distribution.md)
|
|
187
|
-
and rationalised in [`docs/adr/0049-pugi-cli-distribution-strategy.md`](../../docs/adr/0049-pugi-cli-distribution-strategy.md).
|
|
188
|
-
Release operators: see the "Release process" section in the feature doc for
|
|
189
|
-
the tag → publish → tap-formula bump → smoke-test loop.
|
|
190
|
-
|
|
191
|
-
## Testing the published tarball locally
|
|
192
|
-
|
|
193
|
-
Before tagging a release, run the local smoke test:
|
|
194
|
-
|
|
195
|
-
```bash
|
|
196
|
-
pnpm --filter pugi pack:smoke
|
|
197
|
-
```
|
|
19
|
+
## License
|
|
198
20
|
|
|
199
|
-
|
|
200
|
-
`bin/run.js`, `dist/`, `README.md`, and `LICENSE`, and rejects the build if
|
|
201
|
-
anything is missing.
|
|
21
|
+
MIT - see LICENSE for upstream attribution.
|
|
202
22
|
|
|
203
|
-
##
|
|
23
|
+
## Homepage
|
|
204
24
|
|
|
205
|
-
|
|
25
|
+
https://pugi.io
|
package/bin/pugi
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
echo "Error: @pugi/cli postinstall did not run — binary is missing." >&2
|
|
2
|
+
echo "" >&2
|
|
3
|
+
echo "This happens when --ignore-scripts was passed during install, or" >&2
|
|
4
|
+
echo "when using a package manager that skips postinstall by default." >&2
|
|
5
|
+
echo "" >&2
|
|
6
|
+
echo "Fix: cd node_modules/@pugi/cli && node postinstall.mjs" >&2
|
|
7
|
+
echo "Or reinstall without --ignore-scripts." >&2
|
|
8
|
+
exit 1
|
package/package.json
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pugi/cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.0-alpha.10",
|
|
4
4
|
"description": "Pugi CLI - terminal-native software execution system",
|
|
5
|
+
"license": "MIT",
|
|
5
6
|
"homepage": "https://pugi.io",
|
|
6
7
|
"repository": {
|
|
7
8
|
"type": "git",
|
|
8
|
-
"url": "https://github.com/pugi-io/pugi.git"
|
|
9
|
-
"directory": "apps/pugi-cli"
|
|
10
|
-
},
|
|
11
|
-
"bugs": {
|
|
12
|
-
"url": "https://github.com/pugi-io/pugi/issues"
|
|
9
|
+
"url": "git+https://github.com/pugi-io/pugi.git"
|
|
13
10
|
},
|
|
14
11
|
"keywords": [
|
|
15
12
|
"pugi",
|
|
@@ -19,75 +16,22 @@
|
|
|
19
16
|
"engineering",
|
|
20
17
|
"orchestrator"
|
|
21
18
|
],
|
|
22
|
-
"author": "Pugi <hello@pugi.io>",
|
|
23
|
-
"license": "MIT",
|
|
24
|
-
"type": "module",
|
|
25
19
|
"bin": {
|
|
26
|
-
"pugi": "./bin/
|
|
20
|
+
"pugi": "./bin/pugi"
|
|
27
21
|
},
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"docs/examples/**/*.json",
|
|
33
|
-
"test/scenarios/**/*.scenario.txt",
|
|
34
|
-
"README.md",
|
|
35
|
-
"CHANGELOG.md",
|
|
36
|
-
"LICENSE",
|
|
37
|
-
"THIRD_PARTY_NOTICES.md"
|
|
22
|
+
"os": [
|
|
23
|
+
"darwin",
|
|
24
|
+
"linux",
|
|
25
|
+
"win32"
|
|
38
26
|
],
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
},
|
|
46
|
-
"dependencies": {
|
|
47
|
-
"@mozilla/readability": "^0.6.0",
|
|
48
|
-
"chokidar": "^3.6.0",
|
|
49
|
-
"graphology": "^0.26.0",
|
|
50
|
-
"graphology-metrics": "^2.4.0",
|
|
51
|
-
"ignore": "^5.3.2",
|
|
52
|
-
"ink": "^5.0.1",
|
|
53
|
-
"linkedom": "^0.18.12",
|
|
54
|
-
"lru-cache": "^11.5.1",
|
|
55
|
-
"node-cron": "^4.2.1",
|
|
56
|
-
"react": "^18.3.1",
|
|
57
|
-
"semver": "^7.8.1",
|
|
58
|
-
"tar": "^7.5.11",
|
|
59
|
-
"terminal-image": "^4.3.0",
|
|
60
|
-
"tinyglobby": "^0.2.16",
|
|
61
|
-
"turndown": "^7.2.4",
|
|
62
|
-
"undici": "^8.3.0",
|
|
63
|
-
"which": "^6.0.0",
|
|
64
|
-
"zod": "^3.23.0",
|
|
65
|
-
"@pugi/sdk": "0.1.0-beta.99",
|
|
66
|
-
"@pugi/personas": "0.1.2"
|
|
67
|
-
},
|
|
68
|
-
"devDependencies": {
|
|
69
|
-
"@types/node": "^22.0.0",
|
|
70
|
-
"@types/node-cron": "^3.0.11",
|
|
71
|
-
"@types/react": "^18.3.3",
|
|
72
|
-
"@types/semver": "^7.7.1",
|
|
73
|
-
"@types/tar": "^6.1.13",
|
|
74
|
-
"@types/turndown": "^5.0.6",
|
|
75
|
-
"@types/which": "^3.0.4",
|
|
76
|
-
"ink-testing-library": "^4.0.0",
|
|
77
|
-
"tsx": "^4.19.0",
|
|
78
|
-
"typescript": "~5.6.0"
|
|
27
|
+
"cpu": [
|
|
28
|
+
"arm64",
|
|
29
|
+
"x64"
|
|
30
|
+
],
|
|
31
|
+
"optionalDependencies": {
|
|
32
|
+
"@pugi/cli-darwin-arm64": "1.0.0-alpha.10"
|
|
79
33
|
},
|
|
80
34
|
"scripts": {
|
|
81
|
-
"
|
|
82
|
-
"dev": "tsx src/index.ts",
|
|
83
|
-
"typecheck": "pnpm --filter @pugi/personas --filter @pugi/sdk build && tsc -p tsconfig.json --noEmit",
|
|
84
|
-
"test": "pnpm run check:version-lockstep && pnpm run build && node --test --import tsx 'test/**/*.spec.ts' 'test/**/*.spec.tsx' 'src/**/*.spec.ts' 'src/**/*.spec.tsx'",
|
|
85
|
-
"test:integration": "INTEGRATION=1 pnpm run build && node --test --import tsx 'test/**/*.spec.ts' 'test/**/*.spec.tsx' 'src/**/*.spec.ts' 'src/**/*.spec.tsx'",
|
|
86
|
-
"version:cli": "tsx src/index.ts version",
|
|
87
|
-
"doctor": "tsx src/index.ts doctor --json",
|
|
88
|
-
"check:version-lockstep": "bash ../../scripts/check-version-lockstep.sh",
|
|
89
|
-
"pack:smoke": "pnpm run check:version-lockstep && node scripts/pack-smoke.mjs",
|
|
90
|
-
"release-gate": "node scripts/secret-scanner.mjs",
|
|
91
|
-
"scan:tarball": "STAGE=$(mktemp -d) && npm pack --pack-destination \"$STAGE\" >/dev/null && bash ../../tools/scrub/scan-tarball.sh \"$STAGE\"/*.tgz; RC=$?; rm -rf \"$STAGE\"; exit $RC"
|
|
35
|
+
"postinstall": "node ./postinstall.mjs"
|
|
92
36
|
}
|
|
93
37
|
}
|
package/postinstall.mjs
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import fs from "fs"
|
|
3
|
+
import os from "os"
|
|
4
|
+
import path from "path"
|
|
5
|
+
import { createRequire } from "module"
|
|
6
|
+
import { fileURLToPath } from "url"
|
|
7
|
+
|
|
8
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
|
9
|
+
const require = createRequire(import.meta.url)
|
|
10
|
+
|
|
11
|
+
const platformMap = { darwin: "darwin", linux: "linux", win32: "windows" }
|
|
12
|
+
const archMap = { x64: "x64", arm64: "arm64", arm: "arm" }
|
|
13
|
+
const platform = platformMap[os.platform()] ?? os.platform()
|
|
14
|
+
const arch = archMap[os.arch()] ?? os.arch()
|
|
15
|
+
const sourceBinary = platform === "windows" ? "pugi.exe" : "pugi"
|
|
16
|
+
const targetBinary = path.join(__dirname, "bin", "pugi")
|
|
17
|
+
|
|
18
|
+
const pkgName = `@pugi/cli-${platform}-${arch}`
|
|
19
|
+
|
|
20
|
+
try {
|
|
21
|
+
const pkgJsonPath = require.resolve(`${pkgName}/package.json`)
|
|
22
|
+
const binary = path.join(path.dirname(pkgJsonPath), "bin", sourceBinary)
|
|
23
|
+
if (!fs.existsSync(binary)) throw new Error(`Binary not found: ${binary}`)
|
|
24
|
+
if (fs.existsSync(targetBinary)) fs.unlinkSync(targetBinary)
|
|
25
|
+
try { fs.linkSync(binary, targetBinary) } catch { fs.copyFileSync(binary, targetBinary) }
|
|
26
|
+
fs.chmodSync(targetBinary, 0o755)
|
|
27
|
+
} catch (err) {
|
|
28
|
+
console.error(`@pugi/cli: unable to install native binary for ${platform}-${arch}: ${err.message}`)
|
|
29
|
+
console.error(`Try installing manually: npm install -g ${pkgName}@${require("./package.json").version}`)
|
|
30
|
+
process.exit(1)
|
|
31
|
+
}
|
package/CHANGELOG.md
DELETED
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to `@pugi/cli` are documented here. The file follows the
|
|
4
|
-
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) convention with newer
|
|
5
|
-
releases listed first. Section format: `## [<version>] - <YYYY-MM-DD>`.
|
|
6
|
-
|
|
7
|
-
The bundled `pugi release-notes` command parses this file and renders sections
|
|
8
|
-
strictly newer than `~/.pugi/.last-seen-version` after every upgrade.
|
|
9
|
-
|
|
10
|
-
## [0.1.0-beta.88] - 2026-06-02
|
|
11
|
-
|
|
12
|
-
### Fixed
|
|
13
|
-
- **Pugi identity intro no longer chants on later turns**. The output gate now
|
|
14
|
-
strips the canonical long-form intro ("I'm Pugi - your engineering copilot.
|
|
15
|
-
Tell me what you need...") and its Russian variant on mid-thread replies.
|
|
16
|
-
Operators were seeing the intro re-emit on turn 2+ after a session-resume
|
|
17
|
-
or autonomous tick.
|
|
18
|
-
- **Ctrl+C double-press exit guard**. A single Ctrl+C in the REPL no longer
|
|
19
|
-
kills the CLI. First press prompts "Press Ctrl+C again to exit (within 2s)
|
|
20
|
-
or any key to continue". Second press within 2s exits cleanly; any other
|
|
21
|
-
key cancels. Headless mode emits a `session-end` envelope and exits 0.
|
|
22
|
-
- **Persona no longer over-clarifies trivial creative tasks**. Asking for a
|
|
23
|
-
well-known game / demo / todo app now picks reasonable defaults and starts
|
|
24
|
-
building in one turn. Ambiguous tasks (auth, deploy targets) still ask
|
|
25
|
-
≤ 3 short choices via the `ask_user_question` tool.
|
|
26
|
-
|
|
27
|
-
### Added
|
|
28
|
-
- **Short-format AskUserQuestion chip renderer**. Up to 3 questions render
|
|
29
|
-
side-by-side as Ink chips with ▸ default highlight, ↑↓ in-question nav,
|
|
30
|
-
←→/Tab between questions, 1-9 jump, [s] skip-with-default, [Esc] cancel,
|
|
31
|
-
[Enter] commit. Labels truncate at 5 words / 22 chars. Caller can opt
|
|
32
|
-
into a non-TTY numbered fallback via `forceFallback`.
|
|
33
|
-
|
|
34
|
-
### Security
|
|
35
|
-
- **npm publish leak-gate hardening**. `prepublishOnly` now runs a
|
|
36
|
-
banned-string scan against the staged tarball (`tools/scrub/scan-tarball.sh`)
|
|
37
|
-
covering personal names, competitor refs, internal codenames, engineering
|
|
38
|
-
provenance, absolute paths, brand legacy, and secret-token shapes.
|
|
39
|
-
Per-line `[pugi-leak-ok]` allowlist marker for legitimate references;
|
|
40
|
-
path allowlist for LICENSE / THIRD_PARTY_NOTICES files where MIT requires
|
|
41
|
-
copyright-holder name. Synthetic injection regression test runs in CI.
|
|
42
|
-
|
|
43
|
-
### Chore
|
|
44
|
-
- MIT LICENSE copyright holder set to `Pugi.io` (was personal name).
|
|
45
|
-
|
|
46
|
-
## [0.1.0-beta.26] - 2026-05-27
|
|
47
|
-
|
|
48
|
-
### Added
|
|
49
|
-
- RAG consumer middleware on admin-api () — XML `<rag-context>`
|
|
50
|
-
block, persona allowlist (Pugi / Hiroshi / Vera), 2000-token cap,
|
|
51
|
-
and the Pugi observability stack () shipped earlier today.
|
|
52
|
-
|
|
53
|
-
### Notes
|
|
54
|
-
- CLI surface unchanged in this bump — the version bump tracks lockstep with
|
|
55
|
-
the admin-api redeploy so `--version` reflects the live server's
|
|
56
|
-
feature set during the alpha-7 sprint.
|
|
57
|
-
|
|
58
|
-
## [0.1.0-beta.23] - 2026-05-27
|
|
59
|
-
|
|
60
|
-
### Added
|
|
61
|
-
- L30 `pugi theme` + `/theme` — TUI color presets (default / dark / light / colorblind) ().
|
|
62
|
-
- L24 `pugi release-notes` + `/release-notes` — changelog diff after upgrade
|
|
63
|
-
with `~/.pugi/.last-seen-version` tracking and `--reset` flag ().
|
|
64
|
-
|
|
65
|
-
### Fixed
|
|
66
|
-
- vim-input — useRef for shadow cursor + pending, lift `onSubmit` out of `setState` ().
|
|
67
|
-
|
|
68
|
-
## [0.1.0-beta.22] - 2026-05-27
|
|
69
|
-
|
|
70
|
-
### Added
|
|
71
|
-
- L24 `pugi release-notes` + `/release-notes` — changelog diff after upgrade
|
|
72
|
-
with `~/.pugi/.last-seen-version` tracking and `--reset` flag.
|
|
73
|
-
- L25 `/onboarding` first-run interactive setup wizard ().
|
|
74
|
-
- L18 output-style presets — voice register dial ().
|
|
75
|
-
- L33 `/stickers` brand-personality gimmick ().
|
|
76
|
-
- L16 `TodoWriteTool` single-in-progress invariant ().
|
|
77
|
-
- L22 `--bare` flag — skip project auto-discovery ().
|
|
78
|
-
- L21 `/feedback` in-CLI collector.
|
|
79
|
-
- L20 `/share` session transcript export.
|
|
80
|
-
|
|
81
|
-
### Fixed
|
|
82
|
-
- P1 stickers await + style buffered output + todo-write zod parse ().
|
|
83
|
-
|
|
84
|
-
## [0.1.0-beta.21] - 2026-05-27
|
|
85
|
-
|
|
86
|
-
### Added
|
|
87
|
-
- L7 `/plan` quick mode-switch + one-shot dispatch ().
|
|
88
|
-
- L31 tool retry budget per command ().
|
|
89
|
-
- L19 `/cost` + `/usage` token + dollar accounting ().
|
|
90
|
-
- L34 `pugi status` — session snapshot ().
|
|
91
|
-
- L11 `DenialTrackingState` model-facing denial aggregate ().
|
|
92
|
-
- L6 permission modes — canonical 4-mode gate ().
|
|
93
|
-
- L8 `/compact` command + auto-trigger + boundary marker ().
|
|
94
|
-
- L17 `pugi doctor` — environment health report ().
|
|
95
|
-
- L13 `/mcp remove` + `doctor` + `logs` + `restart` subcommands ().
|
|
96
|
-
- L3 internal underscore-prefix tool-arg convention ().
|
|
97
|
-
- L2 `z.strictObject` all tool schemas + revert beta.17 aliases ().
|
|
98
|
-
- L5 `AskUserQuestionTool` structured multi-choice — kills fake-dispatch ().
|
|
99
|
-
- L1 stale-read gate — reject `FileEdit` if file changed since last read ().
|
|
100
|
-
|
|
101
|
-
### Fixed
|
|
102
|
-
- Pugi-review per-file chunking — unblock multi-file diffs (Anvil HTTP 400) ().
|
|
103
|
-
- Privacy `PiiScrubberService` regex fallback + `@Inject` DI fix ().
|
|
104
|
-
|
|
105
|
-
## [0.1.0-beta.20] - 2026-05-26
|
|
106
|
-
|
|
107
|
-
### Added
|
|
108
|
-
- Pugi codegen real dispatch — Pugi actually writes files instead of describing
|
|
109
|
-
them ().
|
|
110
|
-
- Live agent progress display — `pugi jobs --watch` (CC compact style) ().
|
|
111
|
-
- PAVF-7 `pugi report --from-error` — field bug capture ().
|
|
112
|
-
- Opensource template fetch + bundled starters — не reinventing ().
|
|
113
|
-
|
|
114
|
-
### Fixed
|
|
115
|
-
- Dialog quality — RU mirror + brevity + memory + force dispatch + render ().
|
|
116
|
-
- Pugi anti-greenfield + anti-emoji discipline rules ().
|
|
117
|
-
- Persona output gate — Pugi strip + fake-dispatch detector (P0) ().
|
|
118
|
-
|
|
119
|
-
## [0.1.0-beta.19] - 2026-05-26
|
|
120
|
-
|
|
121
|
-
### Added
|
|
122
|
-
- Pugi-review batch review followups — silent PASS + safeGit split + quota
|
|
123
|
-
migration + cleanup dead code ().
|
|
124
|
-
|
|
125
|
-
### Fixed
|
|
126
|
-
- Replace CJS `require()` в ESM bundle — bare REPL crash on beta.16 ().
|
|
127
|
-
|
|
128
|
-
## [0.1.0-beta.18] - 2026-05-26
|
|
129
|
-
|
|
130
|
-
### Added
|
|
131
|
-
- Initial public beta of `@pugi/cli` with REPL, dispatch, sync, review, and
|
|
132
|
-
doctor surfaces. Establishes the baseline for the leak-parity sprint.
|
package/THIRD_PARTY_NOTICES.md
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# Third-Party Notices
|
|
2
|
-
|
|
3
|
-
`@pugi/cli` bundles default skill content from third parties on `pugi init`.
|
|
4
|
-
Each entry below carries the full upstream MIT license text required for
|
|
5
|
-
redistribution.
|
|
6
|
-
|
|
7
|
-
## mattpocock/skills
|
|
8
|
-
|
|
9
|
-
Pugi bundles the following skill bodies (ported, attribution preserved in
|
|
10
|
-
each `SKILL.md` header) from https://github.com/mattpocock/skills:
|
|
11
|
-
|
|
12
|
-
- `zoom-out` — `skills/engineering/zoom-out/SKILL.md`
|
|
13
|
-
- `diagnose` — `skills/engineering/diagnose/SKILL.md`
|
|
14
|
-
- `grill-me` — `skills/productivity/grill-me/SKILL.md`
|
|
15
|
-
|
|
16
|
-
Upstream license follows verbatim.
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
MIT License
|
|
21
|
-
|
|
22
|
-
Copyright (c) 2026 Matt Pocock
|
|
23
|
-
|
|
24
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
25
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
26
|
-
in the Software without restriction, including without limitation the rights
|
|
27
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
28
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
29
|
-
furnished to do so, subject to the following conditions:
|
|
30
|
-
|
|
31
|
-
The above copyright notice and this permission notice shall be included in all
|
|
32
|
-
copies or substantial portions of the Software.
|
|
33
|
-
|
|
34
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
35
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
36
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
37
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
38
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
39
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
40
|
-
SOFTWARE.
|
package/assets/pugi-mascot.ansi
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
[?25l[0m [0m
|
|
2
|
-
[0m
|
|
3
|
-
[0m
|
|
4
|
-
[38;2;40;45;51m▄[38;2;62;69;79m▄[38;2;59;66;77m▄[38;2;8;16;28;48;2;43;46;51m▄[0m[38;2;61;68;77m▄[38;2;86;93;103m▄[38;2;92;99;109m▄[38;2;66;73;83m▄[38;2;3;48;79m▄[38;2;36;44;54m▄[38;2;8;16;28;48;2;43;46;51m▄[0m[38;2;62;69;79m▄▄[38;2;40;45;51m▄[0m [0m
|
|
5
|
-
[38;2;57;64;74;48;2;52;59;68m▄[38;2;67;74;85;48;2;61;69;80m▄[38;2;33;40;51;48;2;70;77;88m▄[38;2;34;42;53;48;2;12;20;32m▄[38;2;92;99;110;48;2;42;49;61m▄[48;2;91;98;108m▄[38;2;86;92;102;48;2;86;92;103m▄[38;2;60;67;78;48;2;77;84;95m▄[38;2;63;69;80;48;2;60;67;77m▄[38;2;73;80;91;48;2;3;60;96m▄[38;2;10;68;104;48;2;3;22;37m▄[38;2;3;52;82;48;2;3;58;90m▄[38;2;3;23;39;48;2;12;21;32m▄[38;2;33;41;51;48;2;69;77;87m▄[38;2;65;74;84;48;2;61;69;80m▄[38;2;56;64;74;48;2;52;59;67m▄[0m [0m
|
|
6
|
-
[7m[38;2;35;40;47m▄[0m[38;2;30;37;47;48;2;62;70;80m▄[38;2;42;49;60;48;2;6;14;26m▄[38;2;92;99;110;48;2;81;88;98m▄[38;2;78;86;96;48;2;92;99;110m▄[38;2;58;65;76;48;2;84;91;101m▄[38;2;85;92;102;48;2;59;67;77m▄[38;2;28;36;47;48;2;65;73;83m▄[48;2;68;74;85m▄[38;2;82;89;100;48;2;58;65;76m▄[38;2;24;45;62;48;2;34;58;78m▄[38;2;3;67;104;48;2;3;42;67m▄[38;2;3;61;93;48;2;3;45;72m▄[38;2;3;33;55;48;2;4;12;24m▄[38;2;32;39;49;48;2;63;71;81m▄[0m[7m[38;2;35;40;47m▄[0m [0m
|
|
7
|
-
[38;2;58;65;76;48;2;58;66;76m▄[38;2;53;60;71;48;2;30;38;49m▄[38;2;3;57;93;48;2;2;74;118m▄[38;2;42;71;93;48;2;3;21;37m▄[38;2;56;64;74;48;2;43;50;61m▄[38;2;61;68;79;48;2;74;80;90m▄[38;2;63;69;80;48;2;73;80;90m▄[38;2;59;66;76;48;2;41;48;59m▄[38;2;39;70;92;48;2;3;21;37m▄[38;2;2;59;95;48;2;2;64;104m▄[38;2;3;57;89;48;2;3;56;85m▄[38;2;2;45;74;48;2;3;45;73m▄[0m [0m
|
|
8
|
-
[38;2;32;37;44;48;2;59;66;77m▄[38;2;62;68;79;48;2;78;85;95m▄[38;2;30;38;49;48;2;29;37;48m▄[38;2;59;66;77;48;2;59;67;77m▄[38;2;59;67;78;48;2;48;55;66m▄[38;2;53;61;72;48;2;47;54;65m▄[38;2;53;60;72;48;2;49;55;66m▄[38;2;53;79;102;48;2;46;54;65m▄[38;2;38;86;124;48;2;54;61;72m▄[38;2;3;74;118;48;2;6;60;94m▄[38;2;0;148;246;48;2;4;83;120m▄[38;2;3;90;148;48;2;3;83;129m▄[0m [0m
|
|
9
|
-
[7m[38;2;45;51;60m▄[0m[38;2;11;18;28;48;2;33;40;52m▄[38;2;54;62;73;48;2;59;67;78m▄[38;2;36;43;55;48;2;54;62;73m▄[38;2;53;73;93;48;2;34;42;53m▄[38;2;49;87;122;48;2;33;40;52m▄[38;2;16;57;86;48;2;49;57;69m▄[38;2;3;66;102;48;2;28;42;55m▄[38;2;3;35;56;48;2;3;76;118m▄[38;2;2;62;98;48;2;4;91;135m▄[0m[7m[38;2;3;80;123m▄[0m [0m
|
|
10
|
-
[7m[38;2;9;13;19m▄[38;2;34;40;49m▄[38;2;40;50;63m▄[38;2;35;45;59m▄[38;2;4;11;21m▄[38;2;2;10;19m▄[0m [0m
|
|
11
|
-
[38;2;2;7;13m▄[7m[38;2;2;6;13m▄▄[0m[38;2;2;6;12m▄[0m [38;2;3;8;17m▄[38;2;3;7;14m▄[0m [0m
|
|
12
|
-
[7m[38;2;3;8;16m▄[0m [7m[38;2;2;6;12m▄[0m [38;2;2;6;12m▄[48;2;2;6;12m▄[0m[7m[38;2;2;6;12m▄[0m [0m
|
|
13
|
-
[7m[38;2;2;7;13m▄[0m [0m
|
|
14
|
-
[0m
|
|
15
|
-
[0m
|
|
16
|
-
[?25h
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
[?25l[0m [0m
|
|
2
|
-
[0m
|
|
3
|
-
[38;2;54;62;72;48;2;59;67;77m▄[38;2;54;61;72;48;2;38;46;57m▄[38;2;89;96;107;48;2;69;76;87m▄[38;2;69;75;86;48;2;83;89;100m▄[38;2;69;76;86;48;2;40;68;89m▄[38;2;23;62;86;48;2;3;44;71m▄[38;2;3;42;67;48;2;34;44;56m▄[38;2;54;62;72;48;2;59;66;76m▄[0m [0m
|
|
4
|
-
[38;2;73;80;90;48;2;64;78;92m▄[38;2;39;62;81;48;2;28;60;82m▄[38;2;57;63;74;48;2;61;68;78m▄[38;2;58;64;75;48;2;60;67;77m▄[38;2;34;66;90;48;2;9;53;81m▄[38;2;3;75;116;48;2;2;66;101m▄[0m [0m
|
|
5
|
-
[7m[38;2;44;49;57m▄[0m[38;2;27;33;41;48;2;51;59;70m▄[38;2;48;60;76m▄[38;2;33;65;94;48;2;49;59;73m▄[38;2;3;49;77;48;2;24;80;118m▄[38;2;1;48;78;48;2;3;107;171m▄[0m [0m
|
|
6
|
-
[38;2;2;7;14m▄[38;2;2;7;13m▄[0m [0m
|
|
7
|
-
[7m[38;2;2;6;13m▄[0m [0m
|
|
8
|
-
[0m
|
|
9
|
-
[?25h
|
package/bin/run.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// 2026-05-27 — silence the noisy `node:sqlite` ExperimentalWarning.
|
|
3
|
-
// Node 22.x prints a multi-line warning the first time any consumer
|
|
4
|
-
// imports `node:sqlite` (see core/repl/store/session-store.ts). CEO has
|
|
5
|
-
// pinged this surface twice now ("(node:XXXXX) ExperimentalWarning:
|
|
6
|
-
// SQLite is an experimental feature and might change at any time" +
|
|
7
|
-
// trace-warnings hint). Hiding it cleanly requires a tap on
|
|
8
|
-
// process.emitWarning BEFORE any module loads the sqlite binding —
|
|
9
|
-
// hence wiring it here in the binary entry, not deep inside the CLI.
|
|
10
|
-
//
|
|
11
|
-
// We allowlist only the exact sqlite warning + leave every other
|
|
12
|
-
// runtime warning (deprecation, security, custom code paths) intact.
|
|
13
|
-
// Operator can still re-enable the noise by exporting
|
|
14
|
-
// PUGI_SHOW_EXPERIMENTAL_WARNINGS=1 — useful when debugging a node
|
|
15
|
-
// version bump that might surface a new experimental flag we should
|
|
16
|
-
// notice.
|
|
17
|
-
if (!process.env.PUGI_SHOW_EXPERIMENTAL_WARNINGS) {
|
|
18
|
-
const originalEmit = process.emit;
|
|
19
|
-
process.emit = function patchedEmit(name, ...args) {
|
|
20
|
-
if (name === 'warning') {
|
|
21
|
-
const w = args[0];
|
|
22
|
-
const isSqliteExperimental =
|
|
23
|
-
w &&
|
|
24
|
-
typeof w === 'object' &&
|
|
25
|
-
w.name === 'ExperimentalWarning' &&
|
|
26
|
-
typeof w.message === 'string' &&
|
|
27
|
-
/SQLite is an experimental feature/i.test(w.message);
|
|
28
|
-
if (isSqliteExperimental) return false;
|
|
29
|
-
}
|
|
30
|
-
return originalEmit.call(this, name, ...args);
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
import('../dist/index.js');
|