@pugi/cli 0.1.0-beta.98 → 1.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +11 -191
- package/bin/pugi +8 -0
- package/package.json +15 -71
- package/postinstall.mjs +31 -0
- package/CHANGELOG.md +0 -132
- package/THIRD_PARTY_NOTICES.md +0 -40
- package/assets/pugi-mascot.ansi +0 -16
- package/assets/pugi-prozr2-mascot.ansi +0 -9
- package/bin/run.js +0 -34
- package/dist/commands/deploy.js +0 -439
- package/dist/commands/flatten.js +0 -191
- package/dist/commands/jobs-watch.js +0 -201
- package/dist/commands/jobs.js +0 -260
- package/dist/commands/retro.js +0 -210
- package/dist/commands/smoke.js +0 -133
- package/dist/core/agent-progress/cleanup.js +0 -134
- package/dist/core/agent-progress/schema.js +0 -144
- package/dist/core/agent-progress/writer.js +0 -101
- package/dist/core/agents/adaptive-router.js +0 -330
- package/dist/core/agents/loader.js +0 -104
- package/dist/core/agents/query-decomposer.js +0 -297
- package/dist/core/agents/registry.js +0 -69
- package/dist/core/approvals/shortcut-resolver.js +0 -98
- package/dist/core/artifact-chain/dispatcher.js +0 -148
- package/dist/core/artifact-chain/exporter.js +0 -164
- package/dist/core/artifact-chain/state.js +0 -243
- package/dist/core/artifact-chain/steps.js +0 -169
- package/dist/core/ask-user/question.js +0 -92
- package/dist/core/audit/audit-trail.js +0 -275
- package/dist/core/auth/ensure-authenticated.js +0 -129
- package/dist/core/auth/env-provider.js +0 -238
- package/dist/core/auto-open-browser.js +0 -128
- package/dist/core/auto-update/channels.js +0 -122
- package/dist/core/auto-update/checker.js +0 -241
- package/dist/core/auto-update/state.js +0 -235
- package/dist/core/bare-mode/index.js +0 -107
- package/dist/core/bash/redirect.js +0 -281
- package/dist/core/bash-classifier.js +0 -1397
- package/dist/core/checkpoint/resumer.js +0 -149
- package/dist/core/checkpoint/rewinder.js +0 -291
- package/dist/core/checkpoints/shadow-git.js +0 -670
- package/dist/core/citations/parser.js +0 -109
- package/dist/core/classifier/yolo-classifier.js +0 -88
- package/dist/core/clipboard.js +0 -70
- package/dist/core/codegraph/decision-store.js +0 -248
- package/dist/core/codegraph/detect-repo.js +0 -459
- package/dist/core/codegraph/install.js +0 -134
- package/dist/core/codegraph/offer-hook.js +0 -220
- package/dist/core/compact/auto-trigger.js +0 -96
- package/dist/core/compact/buffer-rewriter.js +0 -115
- package/dist/core/compact/summarizer.js +0 -208
- package/dist/core/compact/token-counter.js +0 -108
- package/dist/core/consensus/anvil-fanout.js +0 -276
- package/dist/core/consensus/diff-capture.js +0 -491
- package/dist/core/consensus/rubric.js +0 -233
- package/dist/core/context/builder.js +0 -114
- package/dist/core/context/compaction-events.js +0 -99
- package/dist/core/context/compaction.js +0 -602
- package/dist/core/context/index.js +0 -28
- package/dist/core/context/invariants.js +0 -250
- package/dist/core/context/markdown-loader.js +0 -288
- package/dist/core/context/markdown-traverse.js +0 -255
- package/dist/core/context/pugiignore.js +0 -316
- package/dist/core/context/repo-skeleton.js +0 -533
- package/dist/core/context/tool-eviction.js +0 -55
- package/dist/core/context/watcher.js +0 -342
- package/dist/core/context/working-set.js +0 -165
- package/dist/core/coordinator/agent-tools.js +0 -77
- package/dist/core/coordinator/agent-toolset.js +0 -65
- package/dist/core/coordinator/fsm.js +0 -73
- package/dist/core/coordinator/mode-fsm.js +0 -70
- package/dist/core/cost/rate-card.js +0 -129
- package/dist/core/cost/tracker.js +0 -221
- package/dist/core/credentials.js +0 -355
- package/dist/core/cron/scheduler.js +0 -138
- package/dist/core/denial-tracking/index.js +0 -8
- package/dist/core/denial-tracking/state.js +0 -264
- package/dist/core/diagnostics/probe-runner.js +0 -93
- package/dist/core/diagnostics/probes/api.js +0 -46
- package/dist/core/diagnostics/probes/auth.js +0 -93
- package/dist/core/diagnostics/probes/bare-mode.js +0 -42
- package/dist/core/diagnostics/probes/cli-version.js +0 -127
- package/dist/core/diagnostics/probes/config.js +0 -72
- package/dist/core/diagnostics/probes/denial-tracking.js +0 -57
- package/dist/core/diagnostics/probes/disk.js +0 -81
- package/dist/core/diagnostics/probes/engine-live.js +0 -46
- package/dist/core/diagnostics/probes/git.js +0 -65
- package/dist/core/diagnostics/probes/hooks.js +0 -118
- package/dist/core/diagnostics/probes/mcp.js +0 -75
- package/dist/core/diagnostics/probes/node.js +0 -59
- package/dist/core/diagnostics/probes/pnpm.js +0 -36
- package/dist/core/diagnostics/probes/pugi-md.js +0 -89
- package/dist/core/diagnostics/probes/sandbox.js +0 -72
- package/dist/core/diagnostics/probes/session.js +0 -74
- package/dist/core/diagnostics/probes/status-snapshot.js +0 -488
- package/dist/core/diagnostics/probes/workspace.js +0 -63
- package/dist/core/diagnostics/types.js +0 -70
- package/dist/core/dispatch/cache-cleanup.js +0 -197
- package/dist/core/dispatch/cache-handoff.js +0 -295
- package/dist/core/edits/apply-patch-layer-e.js +0 -189
- package/dist/core/edits/dispatch.js +0 -511
- package/dist/core/edits/format-detector.js +0 -260
- package/dist/core/edits/format-matrix.js +0 -26
- package/dist/core/edits/fuzzy-ladder.js +0 -650
- package/dist/core/edits/index.js +0 -19
- package/dist/core/edits/journal.js +0 -199
- package/dist/core/edits/layer-a-apply.js +0 -217
- package/dist/core/edits/layer-a-fuzzy-apply.js +0 -198
- package/dist/core/edits/layer-b-apply.js +0 -211
- package/dist/core/edits/layer-c-apply.js +0 -160
- package/dist/core/edits/layer-d-ast.js +0 -572
- package/dist/core/edits/marker-parser.js +0 -401
- package/dist/core/edits/security-gate.js +0 -223
- package/dist/core/edits/verify-hook.js +0 -273
- package/dist/core/edits/worktree.js +0 -322
- package/dist/core/engine/adapter-runner.js +0 -8
- package/dist/core/engine/anvil-client.js +0 -344
- package/dist/core/engine/auto-compact.js +0 -179
- package/dist/core/engine/budgets.js +0 -192
- package/dist/core/engine/context-prefix.js +0 -155
- package/dist/core/engine/index.js +0 -12
- package/dist/core/engine/intensity.js +0 -163
- package/dist/core/engine/intent.js +0 -260
- package/dist/core/engine/native-pugi.js +0 -1616
- package/dist/core/engine/noop.js +0 -27
- package/dist/core/engine/prompts.js +0 -236
- package/dist/core/engine/strip-internal-fields.js +0 -124
- package/dist/core/engine/tool-bridge.js +0 -2173
- package/dist/core/engine/verification-patterns.js +0 -195
- package/dist/core/evaluation/golden-dataset.js +0 -293
- package/dist/core/feedback/queue.js +0 -177
- package/dist/core/feedback/submitter.js +0 -145
- package/dist/core/file-cache.js +0 -141
- package/dist/core/flatten/flatten-repo.js +0 -439
- package/dist/core/format/osc8-link.js +0 -28
- package/dist/core/hook-chains.js +0 -392
- package/dist/core/hooks/citation-verify-hook.js +0 -138
- package/dist/core/hooks/citation-verify.js +0 -112
- package/dist/core/hooks/events.js +0 -46
- package/dist/core/hooks/index.js +0 -15
- package/dist/core/hooks/registry.js +0 -216
- package/dist/core/hooks/runner.js +0 -236
- package/dist/core/hooks/v2/event-emitter.js +0 -115
- package/dist/core/hooks/v2/executor.js +0 -282
- package/dist/core/hooks/v2/index.js +0 -25
- package/dist/core/hooks/v2/lifecycle.js +0 -104
- package/dist/core/hooks/v2/loader.js +0 -216
- package/dist/core/hooks/v2/matcher.js +0 -125
- package/dist/core/hooks/v2/trust.js +0 -143
- package/dist/core/hooks/v2/types.js +0 -86
- package/dist/core/hooks/worktree-events.js +0 -158
- package/dist/core/hooks.js +0 -415
- package/dist/core/image/renderer.js +0 -71
- package/dist/core/index-store.js +0 -260
- package/dist/core/init/detector.js +0 -582
- package/dist/core/init/template-renderer.js +0 -242
- package/dist/core/jobs/registry.js +0 -462
- package/dist/core/ledger/results-tsv.js +0 -142
- package/dist/core/log-discipline/stdout-redirect.js +0 -51
- package/dist/core/lsp/cache.js +0 -105
- package/dist/core/lsp/client.js +0 -1229
- package/dist/core/lsp/language-detect.js +0 -66
- package/dist/core/lsp/post-edit-diagnostics.js +0 -171
- package/dist/core/lsp/server-detect.js +0 -173
- package/dist/core/lsp/symbol-cache.js +0 -162
- package/dist/core/lsp/symbol-tools.js +0 -664
- package/dist/core/mcp/client.js +0 -385
- package/dist/core/mcp/http-server.js +0 -553
- package/dist/core/mcp/orchestrator-config.js +0 -192
- package/dist/core/mcp/orchestrator-tools.js +0 -806
- package/dist/core/mcp/permission.js +0 -190
- package/dist/core/mcp/registry.js +0 -193
- package/dist/core/mcp/server-tools.js +0 -219
- package/dist/core/mcp/server.js +0 -397
- package/dist/core/mcp/trust.js +0 -91
- package/dist/core/memory/dual-write.js +0 -416
- package/dist/core/memory/passive-extract.js +0 -130
- package/dist/core/memory/phase1-kinds.js +0 -20
- package/dist/core/memory/secret-scanner.js +0 -304
- package/dist/core/memory-sync/queue.js +0 -170
- package/dist/core/metrics/extract.js +0 -113
- package/dist/core/modes/roo-modes.js +0 -68
- package/dist/core/onboarding/ensure-initialized.js +0 -133
- package/dist/core/onboarding/marker.js +0 -111
- package/dist/core/onboarding/telemetry-state.js +0 -108
- package/dist/core/output-style/presets.js +0 -176
- package/dist/core/output-style/state.js +0 -185
- package/dist/core/path-security.js +0 -345
- package/dist/core/permission.js +0 -369
- package/dist/core/permissions/auto-classifier.js +0 -124
- package/dist/core/permissions/bash-parser.js +0 -371
- package/dist/core/permissions/circuit-breaker.js +0 -83
- package/dist/core/permissions/constrained-edit.js +0 -91
- package/dist/core/permissions/gate.js +0 -278
- package/dist/core/permissions/index.js +0 -20
- package/dist/core/permissions/mode.js +0 -174
- package/dist/core/permissions/network-egress.js +0 -137
- package/dist/core/permissions/state.js +0 -241
- package/dist/core/permissions/tool-class.js +0 -107
- package/dist/core/plan-mode/ui-state.js +0 -51
- package/dist/core/plans/plan-artifact.js +0 -721
- package/dist/core/policy-limits/etag-store.js +0 -122
- package/dist/core/prd-check/parser.js +0 -215
- package/dist/core/prd-check/reporter.js +0 -127
- package/dist/core/prd-check/session-review.js +0 -557
- package/dist/core/prd-check/verifiers.js +0 -223
- package/dist/core/prompt-cache/client-cache.js +0 -99
- package/dist/core/prompts/assembly.js +0 -29
- package/dist/core/prompts/registry.js +0 -364
- package/dist/core/pugi-gitignore.js +0 -52
- package/dist/core/pugi-md/cc-compat-rules.js +0 -735
- package/dist/core/pugi-md/context-injector.js +0 -76
- package/dist/core/pugi-md/walk-up.js +0 -207
- package/dist/core/python/uv-installer.js +0 -270
- package/dist/core/python/uv-resolver.js +0 -83
- package/dist/core/rate-limit/narrator.js +0 -146
- package/dist/core/recipes/cli-types.js +0 -20
- package/dist/core/recipes/loader.js +0 -103
- package/dist/core/recipes/runner.js +0 -345
- package/dist/core/recipes/schema.js +0 -587
- package/dist/core/release-notes/parser.js +0 -241
- package/dist/core/release-notes/state.js +0 -116
- package/dist/core/repl/ask.js +0 -512
- package/dist/core/repl/cancellation.js +0 -98
- package/dist/core/repl/cap-warning.js +0 -91
- package/dist/core/repl/clipboard-read.js +0 -174
- package/dist/core/repl/dispatch-fsm.js +0 -220
- package/dist/core/repl/engine-bridge.js +0 -303
- package/dist/core/repl/history-search.js +0 -175
- package/dist/core/repl/history.js +0 -182
- package/dist/core/repl/kill-ring.js +0 -138
- package/dist/core/repl/model-pricing.js +0 -135
- package/dist/core/repl/privacy-banner.js +0 -71
- package/dist/core/repl/session.js +0 -4962
- package/dist/core/repl/slash-commands.js +0 -747
- package/dist/core/repl/store/index.js +0 -12
- package/dist/core/repl/store/jsonl-log.js +0 -321
- package/dist/core/repl/store/lockfile.js +0 -155
- package/dist/core/repl/store/session-store.js +0 -821
- package/dist/core/repl/store/types.js +0 -44
- package/dist/core/repl/store/uuid-v7.js +0 -68
- package/dist/core/repl/tool-route.js +0 -382
- package/dist/core/repl/workspace-context.js +0 -206
- package/dist/core/repo-map/build.js +0 -125
- package/dist/core/repo-map/cache.js +0 -185
- package/dist/core/repo-map/extractor.js +0 -254
- package/dist/core/repo-map/formatter.js +0 -145
- package/dist/core/repo-map/page-rank.js +0 -105
- package/dist/core/repo-map/scanner.js +0 -211
- package/dist/core/retro/git-collector.js +0 -251
- package/dist/core/retro/health-card.js +0 -25
- package/dist/core/retro/metrics.js +0 -342
- package/dist/core/retro/narrative.js +0 -249
- package/dist/core/retro/plane-collector.js +0 -274
- package/dist/core/retro/pr-issue-link.js +0 -65
- package/dist/core/retro/types.js +0 -16
- package/dist/core/retry-budget/budget.js +0 -284
- package/dist/core/retry-budget/index.js +0 -5
- package/dist/core/retry-budget/retry-cap.js +0 -74
- package/dist/core/routing/lead-worker.js +0 -43
- package/dist/core/routing/pre-flight-estimator.js +0 -108
- package/dist/core/runs/run-tree.js +0 -103
- package/dist/core/sandboxing/adapter.js +0 -29
- package/dist/core/sandboxing/index.js +0 -49
- package/dist/core/sandboxing/none.js +0 -19
- package/dist/core/sandboxing/seatbelt.js +0 -183
- package/dist/core/security/injection-scanner.js +0 -367
- package/dist/core/security/output-filter.js +0 -418
- package/dist/core/session/env-file.js +0 -105
- package/dist/core/session/section-budgets.js +0 -140
- package/dist/core/session.js +0 -377
- package/dist/core/settings.js +0 -400
- package/dist/core/share/formatter.js +0 -271
- package/dist/core/share/redactor.js +0 -221
- package/dist/core/share/uploader.js +0 -267
- package/dist/core/skills/defaults.js +0 -457
- package/dist/core/skills/loader.js +0 -454
- package/dist/core/skills/sources.js +0 -480
- package/dist/core/skills/trust.js +0 -172
- package/dist/core/smoke/headless-driver.js +0 -174
- package/dist/core/smoke/orchestrator.js +0 -194
- package/dist/core/smoke/runner.js +0 -238
- package/dist/core/smoke/scenario-parser.js +0 -316
- package/dist/core/statusline.js +0 -99
- package/dist/core/subagents/dispatcher-real.js +0 -600
- package/dist/core/subagents/dispatcher.js +0 -352
- package/dist/core/subagents/index.js +0 -39
- package/dist/core/subagents/isolation-matrix.js +0 -213
- package/dist/core/subagents/spawn.js +0 -101
- package/dist/core/telemetry/emitter.js +0 -229
- package/dist/core/telemetry/queue.js +0 -251
- package/dist/core/theme/context.js +0 -91
- package/dist/core/theme/presets.js +0 -228
- package/dist/core/theme/state.js +0 -181
- package/dist/core/todos/invariant.js +0 -10
- package/dist/core/todos/state.js +0 -177
- package/dist/core/tool-schema/compressor.js +0 -89
- package/dist/core/transport/version-interceptor.js +0 -166
- package/dist/core/trust.js +0 -109
- package/dist/core/tui/thinking-block.js +0 -64
- package/dist/core/vim/keymap.js +0 -288
- package/dist/core/vim/state.js +0 -92
- package/dist/core/watch-markers/marker-watcher.js +0 -133
- package/dist/core/worktree/include-parser.js +0 -249
- package/dist/core/worktree-manager/cleanup.js +0 -123
- package/dist/core/worktree-manager/manager.js +0 -303
- package/dist/index.js +0 -44
- package/dist/runtime/bootstrap.js +0 -190
- package/dist/runtime/cli.js +0 -8121
- package/dist/runtime/commands/agents.js +0 -385
- package/dist/runtime/commands/budget.js +0 -192
- package/dist/runtime/commands/cancel.js +0 -231
- package/dist/runtime/commands/chain.js +0 -489
- package/dist/runtime/commands/codegraph-status.js +0 -227
- package/dist/runtime/commands/compact.js +0 -297
- package/dist/runtime/commands/config.js +0 -595
- package/dist/runtime/commands/cost.js +0 -199
- package/dist/runtime/commands/delegate.js +0 -312
- package/dist/runtime/commands/dispatch.js +0 -126
- package/dist/runtime/commands/doctor.js +0 -579
- package/dist/runtime/commands/feedback.js +0 -184
- package/dist/runtime/commands/hooks.js +0 -187
- package/dist/runtime/commands/init.js +0 -254
- package/dist/runtime/commands/lsp.js +0 -368
- package/dist/runtime/commands/mcp.js +0 -935
- package/dist/runtime/commands/memory.js +0 -582
- package/dist/runtime/commands/model.js +0 -237
- package/dist/runtime/commands/onboarding.js +0 -275
- package/dist/runtime/commands/patch.js +0 -128
- package/dist/runtime/commands/permissions.js +0 -112
- package/dist/runtime/commands/plan.js +0 -143
- package/dist/runtime/commands/prd-check.js +0 -285
- package/dist/runtime/commands/privacy.js +0 -107
- package/dist/runtime/commands/recipe.js +0 -325
- package/dist/runtime/commands/redo-blob-store.js +0 -92
- package/dist/runtime/commands/redo.js +0 -361
- package/dist/runtime/commands/release-notes.js +0 -229
- package/dist/runtime/commands/repo-map.js +0 -95
- package/dist/runtime/commands/report.js +0 -299
- package/dist/runtime/commands/resume.js +0 -118
- package/dist/runtime/commands/review-consensus.js +0 -414
- package/dist/runtime/commands/rewind.js +0 -333
- package/dist/runtime/commands/roster.js +0 -117
- package/dist/runtime/commands/sessions.js +0 -163
- package/dist/runtime/commands/share.js +0 -316
- package/dist/runtime/commands/skills.js +0 -401
- package/dist/runtime/commands/status.js +0 -186
- package/dist/runtime/commands/stickers.js +0 -82
- package/dist/runtime/commands/style.js +0 -194
- package/dist/runtime/commands/theme.js +0 -196
- package/dist/runtime/commands/undo.js +0 -361
- package/dist/runtime/commands/update.js +0 -289
- package/dist/runtime/commands/vim.js +0 -140
- package/dist/runtime/commands/worktree.js +0 -177
- package/dist/runtime/commands/worktrees.js +0 -155
- package/dist/runtime/deprecation-warning.js +0 -69
- package/dist/runtime/engine-exit-code.js +0 -50
- package/dist/runtime/headless-repl.js +0 -195
- package/dist/runtime/headless.js +0 -548
- package/dist/runtime/load-hooks-or-exit.js +0 -71
- package/dist/runtime/plan-decompose.js +0 -531
- package/dist/runtime/sigint-guard.js +0 -272
- package/dist/runtime/stream-renderer.js +0 -195
- package/dist/runtime/update-check.js +0 -294
- package/dist/runtime/version.js +0 -65
- package/dist/runtime/worktree-bootstrap.js +0 -579
- package/dist/skills/bundled/batch.js +0 -617
- package/dist/skills/bundled/index.js +0 -45
- package/dist/skills/bundled/loop.js +0 -358
- package/dist/skills/bundled/remember.js +0 -383
- package/dist/skills/bundled/simplify.js +0 -289
- package/dist/skills/bundled/skillify.js +0 -373
- package/dist/skills/bundled/stuck.js +0 -558
- package/dist/skills/bundled/verify.js +0 -439
- package/dist/testing/vcr.js +0 -486
- package/dist/tools/agent-tool.js +0 -229
- package/dist/tools/apply-patch.js +0 -556
- package/dist/tools/ask-user-question.js +0 -337
- package/dist/tools/ask-user.js +0 -115
- package/dist/tools/bash.js +0 -1238
- package/dist/tools/brief.js +0 -224
- package/dist/tools/cron.js +0 -433
- package/dist/tools/enter-worktree.js +0 -250
- package/dist/tools/exit-worktree.js +0 -147
- package/dist/tools/file-tools.js +0 -553
- package/dist/tools/http-request.js +0 -336
- package/dist/tools/lsp-tools.js +0 -565
- package/dist/tools/mcp-tool.js +0 -260
- package/dist/tools/multi-edit.js +0 -361
- package/dist/tools/powershell.js +0 -268
- package/dist/tools/registry.js +0 -166
- package/dist/tools/server-tools.js +0 -892
- package/dist/tools/skill-tool.js +0 -96
- package/dist/tools/sleep.js +0 -99
- package/dist/tools/synthetic-output.js +0 -133
- package/dist/tools/tasks.js +0 -208
- package/dist/tools/todo-write.js +0 -184
- package/dist/tools/verify-plan-execution.js +0 -295
- package/dist/tools/web-fetch-injection-scanner.js +0 -207
- package/dist/tools/web-fetch.js +0 -720
- package/dist/tools/web-search.js +0 -458
- package/dist/tui/agent-progress-card.js +0 -111
- package/dist/tui/agent-tree-pane.js +0 -9
- package/dist/tui/agent-tree.js +0 -87
- package/dist/tui/ask-cli.js +0 -52
- package/dist/tui/ask-modal.js +0 -211
- package/dist/tui/ask-user-question-chips.js +0 -315
- package/dist/tui/ask-user-question-prompt.js +0 -203
- package/dist/tui/compact-banner.js +0 -81
- package/dist/tui/conversation-pane.js +0 -164
- package/dist/tui/cost-table.js +0 -111
- package/dist/tui/device-flow.js +0 -142
- package/dist/tui/doctor-table.js +0 -46
- package/dist/tui/feedback-prompt.js +0 -156
- package/dist/tui/input-box.js +0 -732
- package/dist/tui/login-picker.js +0 -69
- package/dist/tui/markdown-render.js +0 -266
- package/dist/tui/multi-file-diff-approval.js +0 -375
- package/dist/tui/onboarding-wizard.js +0 -240
- package/dist/tui/permissions-picker.js +0 -86
- package/dist/tui/render.js +0 -160
- package/dist/tui/repl-render.js +0 -770
- package/dist/tui/repl-splash-art.js +0 -64
- package/dist/tui/repl-splash-mascot.js +0 -154
- package/dist/tui/repl-splash.js +0 -117
- package/dist/tui/repl.js +0 -378
- package/dist/tui/slash-palette.js +0 -106
- package/dist/tui/splash-data.js +0 -61
- package/dist/tui/splash.js +0 -31
- package/dist/tui/status-bar.js +0 -209
- package/dist/tui/status-table.js +0 -7
- package/dist/tui/stickers-art.js +0 -136
- package/dist/tui/style-table.js +0 -28
- package/dist/tui/theme-table.js +0 -29
- package/dist/tui/thinking-spinner.js +0 -123
- package/dist/tui/tool-stream-pane.js +0 -140
- package/dist/tui/update-banner.js +0 -33
- package/dist/tui/vim-input.js +0 -267
- package/dist/tui/welcome-banner.js +0 -107
- package/dist/tui/welcome-data.js +0 -293
- package/dist/tui/workspace-context.js +0 -105
- package/docs/examples/codegraph.mcp.json +0 -10
- package/test/scenarios/codegen-create-file.scenario.txt +0 -13
- package/test/scenarios/compact-force.scenario.txt +0 -12
- package/test/scenarios/identity.scenario.txt +0 -11
- package/test/scenarios/persona-handoff.scenario.txt +0 -12
- package/test/scenarios/walkback.scenario.txt +0 -12
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ASCII pug mascot for the REPL boot splash .
|
|
3
|
-
*
|
|
4
|
-
* Hand-crafted at 9 rows × 20 columns to read as a pug at a single
|
|
5
|
-
* glance — references the cyber-zoo hero glyph in
|
|
6
|
-
* `apps/console-web/public/brand/hero-pug.png`: blocky pug face with
|
|
7
|
-
* angular ear flaps on either side of the head, forehead crease,
|
|
8
|
-
* angular cyan eyes (`◉`), smushed snout, undershot jaw, and a small
|
|
9
|
-
* cyan circuit chip (`▐■▌`) on the lower-right cheek.
|
|
10
|
-
*
|
|
11
|
-
* Separation of art + cyan mask lets the unit test assert structure
|
|
12
|
-
* (row count, line widths, mask shape, at-least-one cyan pixel per
|
|
13
|
-
* eye row) without coupling to the Ink renderer. The renderer in
|
|
14
|
-
* `repl-splash.tsx` splits each row into runs and colors the masked
|
|
15
|
-
* columns cyan (#3DA9FC, brandbook §05).
|
|
16
|
-
*
|
|
17
|
-
* Convention:
|
|
18
|
-
* - PUG_MASCOT[i] = one row of the silhouette
|
|
19
|
-
* - PUG_MASCOT_CYAN_MASK[i] = parallel boolean array, true => that
|
|
20
|
-
* column renders cyan instead of gray
|
|
21
|
-
*
|
|
22
|
-
* Both arrays MUST stay the same length and each mask row MUST be the
|
|
23
|
-
* same length as the corresponding art row. A unit test enforces this.
|
|
24
|
-
*/
|
|
25
|
-
/* eslint-disable no-irregular-whitespace */
|
|
26
|
-
export const PUG_MASCOT = [
|
|
27
|
-
' ▄▀▀▀▄▄▄▀▀▀▄ ',
|
|
28
|
-
' █▄▄ ▄▄█ ',
|
|
29
|
-
' █ ▀▄▄▄▄▄▀ █ ',
|
|
30
|
-
' █ ◉ ◉ █ ',
|
|
31
|
-
' ▀▄ ▀█▀ ▄▀ ',
|
|
32
|
-
' █▀▀▀▀▀█ ',
|
|
33
|
-
' █▒▒▒▒▒█ ▐■▌ ',
|
|
34
|
-
' ▀▄▄▄▀ ',
|
|
35
|
-
' ▀ ',
|
|
36
|
-
];
|
|
37
|
-
/**
|
|
38
|
-
* Cyan accents are derived from the source characters so the art file
|
|
39
|
-
* stays the single source of truth. Two glyph classes get colored:
|
|
40
|
-
* - `◉` -> the two cyan eyes on row 3
|
|
41
|
-
* - `▐■▌` -> the cyan chip cluster on row 6 (right cheek)
|
|
42
|
-
*
|
|
43
|
-
* Everything else renders gray. The derivation runs at module load,
|
|
44
|
-
* which keeps the mask trivially auditable from the source array.
|
|
45
|
-
*/
|
|
46
|
-
export const PUG_MASCOT_CYAN_MASK = PUG_MASCOT.map((row) => {
|
|
47
|
-
const mask = new Array(row.length).fill(false);
|
|
48
|
-
for (let column = 0; column < row.length; column += 1) {
|
|
49
|
-
const ch = row.charAt(column);
|
|
50
|
-
if (ch === '◉' || ch === '▐' || ch === '■' || ch === '▌') {
|
|
51
|
-
mask[column] = true;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return mask;
|
|
55
|
-
});
|
|
56
|
-
/**
|
|
57
|
-
* Pre-computed silhouette dimensions for layout math in the splash
|
|
58
|
-
* component. The unit test asserts these stay inside the documented
|
|
59
|
-
* envelope (≤22 chars wide, 9 ≤ rows ≤ 14) so a future edit can not
|
|
60
|
-
* silently bloat the terminal real estate.
|
|
61
|
-
*/
|
|
62
|
-
export const PUG_MASCOT_MAX_WIDTH = PUG_MASCOT.reduce((max, row) => Math.max(max, row.length), 0);
|
|
63
|
-
export const PUG_MASCOT_HEIGHT = PUG_MASCOT.length;
|
|
64
|
-
//# sourceMappingURL=repl-splash-art.js.map
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Chafa-validated brand-pug ANSI loader .
|
|
3
|
-
*
|
|
4
|
-
* CEO dogfood (first pass, wave 5): the hand-crafted
|
|
5
|
-
* 9-row ASCII pug in `repl-splash-art.ts` reads as "точно не похожа" —
|
|
6
|
-
* too abstract to carry the brand at boot. This module loads a pre-baked
|
|
7
|
-
* truecolor ANSI render of the canonical hero-pug PNG (cyber-zoo pug
|
|
8
|
-
* face with cyan eyes + circuit + chip) so the splash matches the brand
|
|
9
|
-
* glyph the operator already sees on pugi.io.
|
|
10
|
-
*
|
|
11
|
-
* CEO dogfood : the first chafa bake at 32x16 still
|
|
12
|
-
* read as "monitor on stand", not pug — too few rows to resolve the
|
|
13
|
-
* snout / eyes / wrinkles. The vertical resolution was the bottleneck:
|
|
14
|
-
* 16 char rows ≈ 16 pixel rows with the block symbol set. The fresh
|
|
15
|
-
* bake uses `vhalf` (vertical half blocks ▀ / ▄ with independent fg+bg
|
|
16
|
-
* colours per cell) which doubles the vertical resolution per character
|
|
17
|
-
* cell, at an 80x40 frame which is 2.5× the prior dimensions. End
|
|
18
|
-
* result: ~80×80 effective pixel resolution — enough to read the
|
|
19
|
-
* snout, eye sockets, ear lines, and the circuit board accent the
|
|
20
|
-
* brand glyph carries. File grew from 8.8KB to ~40KB; ship budget
|
|
21
|
-
* gates at 100KB so we stay well under cap.
|
|
22
|
-
*
|
|
23
|
-
* Generation (operator-side, one-shot):
|
|
24
|
-
* chafa --size 80x40 --symbols=vhalf --colors=full \
|
|
25
|
-
* apps/console-web/public/brand/hero-pug.png \
|
|
26
|
-
* > apps/pugi-cli/assets/pugi-mascot.ansi
|
|
27
|
-
*
|
|
28
|
-
* The output is committed verbatim to the repo and shipped inside the
|
|
29
|
-
* `@pugi/cli` npm tarball under `assets/pugi-mascot.ansi` (the
|
|
30
|
-
* `package.json` `files` allowlist explicitly opts in). Runtime does
|
|
31
|
-
* NOT need `chafa` installed — we just read the file bytes and write
|
|
32
|
-
* them to stdout. If the file is missing (degraded install, tarball
|
|
33
|
-
* corruption, dev cwd drift), the splash falls back to the hand-crafted
|
|
34
|
-
* `PUG_MASCOT` art so the boot never crashes.
|
|
35
|
-
*
|
|
36
|
-
* The pre-Ink write convention mirrors the the upstream tool Chrome plugin
|
|
37
|
-
* splash pattern: raw bytes go to `process.stdout` BEFORE the Ink
|
|
38
|
-
* render mount, so the terminal interprets the truecolor escapes
|
|
39
|
-
* directly instead of Ink trying to layout-engine over them.
|
|
40
|
-
*/
|
|
41
|
-
import { existsSync, readFileSync } from 'node:fs';
|
|
42
|
-
import { dirname, resolve as resolvePath } from 'node:path';
|
|
43
|
-
import { fileURLToPath } from 'node:url';
|
|
44
|
-
/**
|
|
45
|
-
* Resolve the on-disk path to `pugi-mascot.ansi` relative to the
|
|
46
|
-
* compiled module. The CLI ships to `node_modules/@pugi/cli/dist/tui/`
|
|
47
|
-
* so the asset lives at `node_modules/@pugi/cli/assets/pugi-mascot.ansi`
|
|
48
|
-
* — two directory hops up from this file. In a local `pnpm dev`
|
|
49
|
-
* checkout the structure is the same (`src/tui/` ⇒ `../../assets/`)
|
|
50
|
-
* because tsx re-resolves the same relative tree.
|
|
51
|
-
*
|
|
52
|
-
* CEO P0 #2 — banner mascot bake. The prozr2 portrait is
|
|
53
|
-
* the canonical brand-pug glyph from `apps/console-web/public/brand/
|
|
54
|
-
* Pugi-prozr2.png`, baked к а 16x8 vhalf truecolor render. We prefer
|
|
55
|
-
* the prozr2 bake when it ships alongside the CLI (small — ~900 bytes,
|
|
56
|
-
* shaped for the compact welcome-banner left column) and fall back к
|
|
57
|
-
* the legacy 40KB `pugi-mascot.ansi` (hero-pug 80x40) when prozr2 is
|
|
58
|
-
* missing — preserves the splash-mascot install surface for any
|
|
59
|
-
* tarball that predates the bake.
|
|
60
|
-
*/
|
|
61
|
-
export function pugMascotAssetPath() {
|
|
62
|
-
const here = dirname(fileURLToPath(import.meta.url));
|
|
63
|
-
const prozr2 = resolvePath(here, '..', '..', 'assets', 'pugi-prozr2-mascot.ansi');
|
|
64
|
-
if (existsSync(prozr2))
|
|
65
|
-
return prozr2;
|
|
66
|
-
return resolvePath(here, '..', '..', 'assets', 'pugi-mascot.ansi');
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Read the chafa-baked ANSI render of the brand pug. Returns the raw
|
|
70
|
-
* bytes verbatim (UTF-8 string) — the terminal interprets the truecolor
|
|
71
|
-
* escapes directly. Returns null when the file is missing, unreadable,
|
|
72
|
-
* or trivially empty so the caller can fall back to `PUG_MASCOT`.
|
|
73
|
-
*
|
|
74
|
-
* `chafa --colors=full` wraps the render with cursor-hide (`\e[?25l`)
|
|
75
|
-
* on the head and cursor-show (`\e[?25h`) on the tail. We strip those
|
|
76
|
-
* so the splash does not accidentally hide the cursor across the rest
|
|
77
|
-
* of the REPL boot (Ink itself manages the cursor once it mounts).
|
|
78
|
-
*
|
|
79
|
-
* The asset is supply-chain controlled (committed in-repo, shipped in
|
|
80
|
-
* the npm tarball) so an arbitrary attacker cannot inject escapes
|
|
81
|
-
* today. The defence-in-depth strip below still drops categories of
|
|
82
|
-
* escapes that the splash has no legitimate need to emit — OSC window
|
|
83
|
-
* title sets, mouse-tracking enables, screen clears, cursor-position
|
|
84
|
-
* reports — so a future swap of the asset (or a corrupt tarball) cannot
|
|
85
|
-
* disrupt the terminal beyond the splash region. Truecolor (`CSI 38;2;
|
|
86
|
-
* R;G;B m`), reset (`CSI 0 m`), and explicit forms of cursor / line
|
|
87
|
-
* motion the render needs are left in.
|
|
88
|
-
*/
|
|
89
|
-
export function loadPugMascotAnsi() {
|
|
90
|
-
const path = pugMascotAssetPath();
|
|
91
|
-
try {
|
|
92
|
-
if (!existsSync(path))
|
|
93
|
-
return null;
|
|
94
|
-
const raw = readFileSync(path, 'utf8');
|
|
95
|
-
if (!raw || raw.length === 0)
|
|
96
|
-
return null;
|
|
97
|
-
// 1. Drop OSC sequences. Two terminator forms:
|
|
98
|
-
// ESC ] ... BEL (0x1b 0x5d ... 0x07)
|
|
99
|
-
// ESC ] ... ESC \ (0x1b 0x5d ... 0x1b 0x5c, the ST form)
|
|
100
|
-
// A truecolor splash never needs OSC (those are for window title,
|
|
101
|
-
// icon, clipboard, hyperlinks, color-palette change). Drop them
|
|
102
|
-
// so a corrupted asset cannot rename the operator's terminal tab
|
|
103
|
-
// or smuggle a hyperlink into the splash region.
|
|
104
|
-
// 2. Drop ALL CSI ? <numbers and semicolons> [lh] (DEC private-mode
|
|
105
|
-
// set / reset). The legitimate chafa output for a splash is
|
|
106
|
-
// truecolor SGR (`CSI 38;2;R;G;B m`) plus cursor-positioning —
|
|
107
|
-
// no private-mode toggle ever appears там legitimately. A
|
|
108
|
-
// permissive deny-all pattern covers every disruptive private
|
|
109
|
-
// mode in one regex:
|
|
110
|
-
// - cursor visibility (25)
|
|
111
|
-
// - alt-screen buffer (47, 1047, 1048, 1049)
|
|
112
|
-
// - mouse tracking (1000, 1001, 1002, 1003, 1004, 1005, 1006, 1015)
|
|
113
|
-
// - bracketed paste (2004)
|
|
114
|
-
// - focus reporting (1004)
|
|
115
|
-
// - multi-mode forms (e.g. `CSI ? 47 ; 1049 h` — legal per
|
|
116
|
-
// xterm ctlseqs but missed by the previous single-mode regex)
|
|
117
|
-
// - any future private mode a corrupt asset might emit
|
|
118
|
-
// Allowlisting the modes the splash needs is impossible because
|
|
119
|
-
// the splash needs ZERO of them — chafa renders glyph-by-glyph,
|
|
120
|
-
// not via private-mode toggles. A pure deny-all is strictly
|
|
121
|
-
// safer than enumerating known-bad modes one-by-one.
|
|
122
|
-
// 3. Drop CSI 6 n (cursor-position report). Would inject a fake
|
|
123
|
-
// CPR into the operator's stdin stream.
|
|
124
|
-
// 4. Drop CSI [23]J / CSI [23]K (full screen / line clear). A
|
|
125
|
-
// chafa render uses cursor-positioning per row, not bulk
|
|
126
|
-
// erases; bulk clears would wipe whatever the operator already
|
|
127
|
-
// had on screen above the splash.
|
|
128
|
-
const stripped = raw
|
|
129
|
-
.replace(/\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g, '')
|
|
130
|
-
.replace(/\x1b\[\?[0-9;]+[lh]/g, '')
|
|
131
|
-
.replace(/\x1b\[6n/g, '')
|
|
132
|
-
.replace(/\x1b\[[23]?[JK]/g, '');
|
|
133
|
-
if (stripped.trim().length === 0)
|
|
134
|
-
return null;
|
|
135
|
-
return stripped;
|
|
136
|
-
}
|
|
137
|
-
catch {
|
|
138
|
-
// Best-effort: any FS / decode error returns null so the splash
|
|
139
|
-
// falls back to the hand-crafted ASCII art. Never throws.
|
|
140
|
-
return null;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
export function printPugMascotPreInk(sink) {
|
|
144
|
-
const ansi = loadPugMascotAnsi();
|
|
145
|
-
if (ansi === null)
|
|
146
|
-
return false;
|
|
147
|
-
// Trailing newline so the Ink header lands on a fresh row rather
|
|
148
|
-
// than smashing into the last pug row.
|
|
149
|
-
sink.write(ansi);
|
|
150
|
-
if (!ansi.endsWith('\n'))
|
|
151
|
-
sink.write('\n');
|
|
152
|
-
return true;
|
|
153
|
-
}
|
|
154
|
-
//# sourceMappingURL=repl-splash-mascot.js.map
|
package/dist/tui/repl-splash.js
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* REPL boot splash .
|
|
4
|
-
*
|
|
5
|
-
* Rendered on REPL first paint — before the conversation pane, before
|
|
6
|
-
* any operator input lands. Mirrors the the upstream tool / Codex / Gemini
|
|
7
|
-
* CLI boot-screen aesthetic while staying Pugi-brand-pure:
|
|
8
|
-
*
|
|
9
|
-
* [PUG ASCII] Pugi.io v0.1.0-alphaN
|
|
10
|
-
* Plan: <plan>
|
|
11
|
-
* Model: <model>
|
|
12
|
-
* Tenant: <customerId>
|
|
13
|
-
* Workspace: <basename>
|
|
14
|
-
*
|
|
15
|
-
* ─────────────────────────────────────
|
|
16
|
-
* Tips for getting started:
|
|
17
|
-
* 1. Type a brief, the workforce dispatches
|
|
18
|
-
* 2. /help for slash commands, /web <url> to pull a page
|
|
19
|
-
* 3. /skills install <name> for Anthropic / OpenClaw skills
|
|
20
|
-
*
|
|
21
|
-
* The splash auto-dismisses on:
|
|
22
|
-
* - first operator keystroke (the REPL `<Repl />` host owns this and
|
|
23
|
-
* calls the `onInteract` callback we expose),
|
|
24
|
-
* - 10s idle timeout (built-in, configurable via `skipSplash`),
|
|
25
|
-
* - `--no-splash` CLI flag or PUGI_SKIP_SPLASH=1 env (host gates the
|
|
26
|
-
* mount entirely; we still respect the `skipSplash` prop as a belt
|
|
27
|
-
* so a stray render in a test environment produces nothing).
|
|
28
|
-
*
|
|
29
|
-
* Brand voice gate: every visible string here is reviewed against the
|
|
30
|
-
* forbidden list (`journey / explore / delight / magical / friendly /
|
|
31
|
-
* AI-powered / pug-tastic`). Power words used: `brief / dispatch /
|
|
32
|
-
* ship / workforce / sentinel / skills`. No em-dashes; box-drawing
|
|
33
|
-
* `─` is OK (matches existing REPL header conventions).
|
|
34
|
-
*/
|
|
35
|
-
import { useEffect } from 'react';
|
|
36
|
-
import { Box, Text } from 'ink';
|
|
37
|
-
import { PUG_MASCOT, PUG_MASCOT_CYAN_MASK, PUG_MASCOT_MAX_WIDTH, } from './repl-splash-art.js';
|
|
38
|
-
const DEFAULT_AUTO_DISMISS_MS = 10_000;
|
|
39
|
-
const PLACEHOLDER = '—';
|
|
40
|
-
export function ReplSplash(props) {
|
|
41
|
-
// Hooks MUST run unconditionally so the React reconciler can keep
|
|
42
|
-
// its hook order. We branch on `skipSplash` AFTER the effect
|
|
43
|
-
// declaration; the effect itself bails early when the splash is
|
|
44
|
-
// suppressed so no stray timer fires in the skip path.
|
|
45
|
-
useEffect(() => {
|
|
46
|
-
if (props.skipSplash)
|
|
47
|
-
return undefined;
|
|
48
|
-
const ms = props.autoDismissMs ?? DEFAULT_AUTO_DISMISS_MS;
|
|
49
|
-
const handle = setTimeout(() => {
|
|
50
|
-
props.onDismiss?.();
|
|
51
|
-
}, ms);
|
|
52
|
-
return () => clearTimeout(handle);
|
|
53
|
-
// Dependency on the onDismiss callback would re-arm the timer on
|
|
54
|
-
// every parent rerender; the host wraps it in useCallback so
|
|
55
|
-
// identity is stable for the splash's lifetime.
|
|
56
|
-
}, [props.autoDismissMs, props.onDismiss, props.skipSplash]);
|
|
57
|
-
// Belt for stray test renders: when the host already knows the
|
|
58
|
-
// operator opted out, we still want a render call to produce nothing
|
|
59
|
-
// visible. The host is the source of truth for mount-or-not; this is
|
|
60
|
-
// the no-op fallback.
|
|
61
|
-
if (props.skipSplash) {
|
|
62
|
-
return null;
|
|
63
|
-
}
|
|
64
|
-
// wave 5: when the host pre-printed the chafa-baked brand-pug
|
|
65
|
-
// ANSI render to stdout before Ink mounted, suppress the hand-crafted
|
|
66
|
-
// PUG_MASCOT column here so the operator does not see two stacked
|
|
67
|
-
// pugs. The header card still renders inline so wordmark + status
|
|
68
|
-
// rows stay attached to the splash flow.
|
|
69
|
-
const showHandCraftedMascot = props.mascotPrePrinted !== true;
|
|
70
|
-
return (_jsxs(Box, { flexDirection: "column", paddingX: 1, paddingY: 1, children: [_jsxs(Box, { flexDirection: "row", children: [showHandCraftedMascot ? _jsx(MascotColumn, {}) : null, _jsxs(Box, { flexDirection: "column", marginLeft: showHandCraftedMascot ? 2 : 0, marginTop: 1, children: [_jsxs(Box, { children: [_jsx(Text, { bold: true, children: "Pugi" }), _jsx(Text, { bold: true, color: "#3da9fc", children: ".io" }), _jsx(Text, { dimColor: true, children: ` v${props.cliVersion}` })] }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(HeaderRow, { label: "Plan", value: props.plan ?? PLACEHOLDER }), _jsx(HeaderRow, { label: "Model", value: props.model ?? PLACEHOLDER }), _jsx(HeaderRow, { label: "Tenant", value: props.tenant ?? PLACEHOLDER }), _jsx(HeaderRow, { label: "Workspace", value: props.workspaceLabel })] })] })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: '─'.repeat(40) }) }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: "Tips for getting started:" }), _jsx(TipRow, { index: 1, text: "Type a brief, the workforce dispatches" }), _jsx(TipRow, { index: 2, text: "/help for slash commands, /web <url> to pull a page" }), _jsx(TipRow, { index: 3, text: "/skills install <name> for Anthropic / OpenClaw skills" })] })] }));
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Renders the multi-line ASCII pug. Each row is split into colored
|
|
74
|
-
* runs based on `PUG_MASCOT_CYAN_MASK` so the eyes + chip come out
|
|
75
|
-
* cyan and the body stays gray. Pure render of the static art array;
|
|
76
|
-
* no IO, no state.
|
|
77
|
-
*/
|
|
78
|
-
function MascotColumn() {
|
|
79
|
-
return (_jsx(Box, { flexDirection: "column", minWidth: PUG_MASCOT_MAX_WIDTH, children: PUG_MASCOT.map((row, rowIndex) => (_jsx(MascotRow, { row: row, mask: PUG_MASCOT_CYAN_MASK[rowIndex] ?? [] }, rowIndex))) }));
|
|
80
|
-
}
|
|
81
|
-
function MascotRow({ row, mask, }) {
|
|
82
|
-
// Split the row into contiguous runs of same-color cells so we emit
|
|
83
|
-
// one <Text> per run instead of one per character. Keeps the Ink
|
|
84
|
-
// render tree shallow and the snapshot diff readable.
|
|
85
|
-
const runs = [];
|
|
86
|
-
let buffer = '';
|
|
87
|
-
let bufferCyan = false;
|
|
88
|
-
for (let column = 0; column < row.length; column += 1) {
|
|
89
|
-
const ch = row.charAt(column);
|
|
90
|
-
const cyan = mask[column] === true;
|
|
91
|
-
if (buffer.length === 0) {
|
|
92
|
-
buffer = ch;
|
|
93
|
-
bufferCyan = cyan;
|
|
94
|
-
continue;
|
|
95
|
-
}
|
|
96
|
-
if (cyan === bufferCyan) {
|
|
97
|
-
buffer += ch;
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
runs.push({ text: buffer, cyan: bufferCyan });
|
|
101
|
-
buffer = ch;
|
|
102
|
-
bufferCyan = cyan;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
if (buffer.length > 0) {
|
|
106
|
-
runs.push({ text: buffer, cyan: bufferCyan });
|
|
107
|
-
}
|
|
108
|
-
return (_jsx(Text, { children: runs.map((run, runIndex) => run.cyan ? (_jsx(Text, { color: "#3da9fc", children: run.text }, runIndex)) : (_jsx(Text, { color: "gray", children: run.text }, runIndex))) }));
|
|
109
|
-
}
|
|
110
|
-
function HeaderRow({ label, value }) {
|
|
111
|
-
const padded = `${label}:`.padEnd(11, ' ');
|
|
112
|
-
return (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: padded }), _jsx(Text, { children: value })] }));
|
|
113
|
-
}
|
|
114
|
-
function TipRow({ index, text }) {
|
|
115
|
-
return (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: ` ${index}. ` }), _jsx(Text, { children: text })] }));
|
|
116
|
-
}
|
|
117
|
-
//# sourceMappingURL=repl-splash.js.map
|