@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/dist/core/engine/noop.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export class NoopEngineAdapter {
|
|
2
|
-
name = 'noop';
|
|
3
|
-
async capabilities() {
|
|
4
|
-
return {
|
|
5
|
-
supportsStreaming: false,
|
|
6
|
-
supportsFileEdits: false,
|
|
7
|
-
supportsShell: false,
|
|
8
|
-
supportsLsp: false,
|
|
9
|
-
supportsSubagents: false,
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
async *run(task, _ctx) {
|
|
13
|
-
yield {
|
|
14
|
-
type: 'result',
|
|
15
|
-
result: {
|
|
16
|
-
status: 'blocked',
|
|
17
|
-
summary: `No engine configured for ${task.kind}`,
|
|
18
|
-
filesChanged: [],
|
|
19
|
-
patchRefs: [],
|
|
20
|
-
testsRun: [],
|
|
21
|
-
risks: ['Engine adapter is not configured yet.'],
|
|
22
|
-
eventRefs: [],
|
|
23
|
-
},
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=noop.js.map
|
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
import { getJobRegistry, summarizeJobsForPrompt, } from '../jobs/registry.js';
|
|
2
|
-
import { compileStyleBlock } from '../output-style/presets.js';
|
|
3
|
-
import { resolveOutputStyle } from '../output-style/state.js';
|
|
4
|
-
/**
|
|
5
|
-
* System prompts for each engine command. Each prompt:
|
|
6
|
-
* - Anchors the model in Pugi's local-first contract .
|
|
7
|
-
* - Lists the tools the model may call (the registry is authoritative,
|
|
8
|
-
* but stating it inline prevents the model from inventing tool names
|
|
9
|
-
* when the tool schema is large).
|
|
10
|
-
* - Defines the deliverable shape so the model produces a useful final
|
|
11
|
-
* text answer instead of "here is what I did".
|
|
12
|
-
*
|
|
13
|
-
* The prompts are intentionally terse. Per gstack `engineering-standards`
|
|
14
|
-
* the persona system prompt comes from the runtime (Anvil bridge
|
|
15
|
-
* prepends `oes-dev` / Sigma prompt automatically when configured); these
|
|
16
|
-
* prompts ride on top and scope the model to the current command.
|
|
17
|
-
*
|
|
18
|
-
* Sprint : the system prompt picks up
|
|
19
|
-
* a `BACKGROUND JOBS:` snapshot appended at the tail so the agent loop
|
|
20
|
-
* knows what background bash work is currently on watch and can avoid
|
|
21
|
-
* spawning a duplicate. The snapshot is sourced from `JobRegistry` and
|
|
22
|
-
* formatted by `summarizeJobsForPrompt` so the surface is single-sourced.
|
|
23
|
-
*/
|
|
24
|
-
const COMMON_LOCAL_FIRST_PREAMBLE = [
|
|
25
|
-
'You are the Pugi CLI agent running locally inside the operator\'s repository.',
|
|
26
|
-
'The local filesystem is the source of truth. Every change you make is committed locally; nothing is uploaded by default .',
|
|
27
|
-
// R1 fix (2026-05-26, PR r1, Fix 5 Option B): only advertise the
|
|
28
|
-
// tools currently wired in `tool-bridge.ts::WIRED_TOOLS`. ships
|
|
29
|
-
// apply_patch / lsp_* / worktree_* as CLI-only surfaces (`pugi patch`,
|
|
30
|
-
// `pugi lsp`, `pugi worktree`); wiring them into the engine loop is
|
|
31
|
-
// deferred to β2 (apply_patch), β4 (LSP tools), β7 (worktree tools)
|
|
32
|
-
// per the consolidated sprint plan. Advertising them in the system
|
|
33
|
-
// prompt without a matching executor entry caused Pugi to attempt
|
|
34
|
-
// calls that returned `unknown_tool` — broken eval surface.
|
|
35
|
-
'You have a tool registry: read, write, edit, grep, glob, bash. Call tools to inspect and modify the workspace.',
|
|
36
|
-
'Cite file paths relative to the workspace root. Keep edits minimal and reversible.',
|
|
37
|
-
'When you are done, return a single final text answer that the operator can read on the CLI.',
|
|
38
|
-
].join(' ');
|
|
39
|
-
/**
|
|
40
|
-
* β5a P1+P6 : prompt v2 — intent marker contract +
|
|
41
|
-
* definitional examples + jargon ban. Fixes the dominant Pugi loss
|
|
42
|
-
* mode in the .X Phase 2 comparative eval: tool-use on pure
|
|
43
|
-
* knowledge questions ("What is grep?" → bash man grep).
|
|
44
|
-
*
|
|
45
|
-
* The CLI-side `classifyIntent` (apps/pugi-cli/src/core/engine/intent.ts)
|
|
46
|
-
* wraps definitional questions with `<intent kind="definitional">` on
|
|
47
|
-
* the user message before send. The rules below teach the model what
|
|
48
|
-
* to do with that marker.
|
|
49
|
-
*
|
|
50
|
-
* Voice constraint: same banned-jargon list as the cabinet Pugi
|
|
51
|
-
* persona (брифую / диспатчу / шипаю and the English jargon list
|
|
52
|
-
* from BANNED_WORDS in pugi.system-prompt.ts). Repeated here verbatim
|
|
53
|
-
* so the CLI surface has its own enforcement copy; the cabinet copy
|
|
54
|
-
* is the source of truth and ships through the runtime persona
|
|
55
|
-
* prompt for the cabinet UI. CLI runs DO NOT load the cabinet
|
|
56
|
-
* persona prompt — engine prompts are the only place to enforce
|
|
57
|
-
* voice for `pugi explain` / `pugi code` callers.
|
|
58
|
-
*/
|
|
59
|
-
const INTENT_MARKER_CONTRACT = [
|
|
60
|
-
'# Intent contract',
|
|
61
|
-
'When the operator\'s message starts with `<intent kind="definitional">`, treat it as a knowledge question:',
|
|
62
|
-
' - Answer in prose. Do NOT call any tools.',
|
|
63
|
-
' - Cite a file from the repo only when it directly supports the explanation.',
|
|
64
|
-
' - Keep the answer to one short paragraph unless the operator asked for depth.',
|
|
65
|
-
'When no intent marker is present OR the marker is operational, use tools as needed.',
|
|
66
|
-
'',
|
|
67
|
-
'# Definitional examples',
|
|
68
|
-
'Operator: `<intent kind="definitional">What is grep?</intent>`',
|
|
69
|
-
'You: `grep is a Unix command-line tool that searches plain text for lines matching a regular expression. It reads stdin or files and prints matching lines to stdout.`',
|
|
70
|
-
'(No tool calls. One paragraph. No file paths because grep is a generic Unix tool, not a repo artefact.)',
|
|
71
|
-
'',
|
|
72
|
-
'Operator: `<intent kind="definitional">что такое pgvector?</intent>`',
|
|
73
|
-
'You: `pgvector - это расширение PostgreSQL для хранения и поиска векторных эмбеддингов. Поддерживает ivfflat и hnsw индексы; используется для RAG и semantic search.`',
|
|
74
|
-
'(One short paragraph. No tools.)',
|
|
75
|
-
].join('\n');
|
|
76
|
-
const JARGON_BAN = [
|
|
77
|
-
'# Voice',
|
|
78
|
-
'Brand voice: terse, operator-grade, English in code paths / Russian-Ukrainian permitted in chat answers.',
|
|
79
|
-
'Banned words (CLI customer-facing output): "брифую", "диспатчу", "шипаю", "journey", "explore", "delight", "magical", "friendly", "let me help", "I\'d be happy to", "pug-tastic". Use neutral verbs instead: brief / dispatch / ship / build / read / write.',
|
|
80
|
-
'No em-dashes. No emoji. No "AI assistant" framing.',
|
|
81
|
-
].join('\n');
|
|
82
|
-
const PROMPT_V2_APPENDIX = [INTENT_MARKER_CONTRACT, JARGON_BAN].join('\n\n');
|
|
83
|
-
const PLAN_TOOLS_NOTE = 'PLAN MODE IS READ-ONLY. You may call read, grep, glob. Calls to write, edit, or bash will be refused and end the run. Produce a written plan, not changes.';
|
|
84
|
-
const EDIT_FLOW_RULES = [
|
|
85
|
-
'Before calling edit on a file you have not yet read this session, call read first — the edit tool fails otherwise.',
|
|
86
|
-
'Prefer edit over write when changing existing files; write only for newly created files.',
|
|
87
|
-
'After your last tool call, summarise what you changed and what the operator should review.',
|
|
88
|
-
// Backlog — Layer A.5 fuzzy ladder advisory. The operator may
|
|
89
|
-
// have run with `--fuzzy-edits`; the ladder is invisible to the
|
|
90
|
-
// model but the model should still anchor its SEARCH blocks on
|
|
91
|
-
// verbatim source when possible. Ellipsis is the only relaxation
|
|
92
|
-
// we want the model к reach for explicitly; whitespace + edit-
|
|
93
|
-
// distance fire automatically and silently when they're needed.
|
|
94
|
-
'If exact SEARCH match fails, the dispatcher may retry with a fuzzy ladder (whitespace-flex → ellipsis → 0.8 edit-distance). Prefer exact match; use `...` ellipsis only when you explicitly need to skip a long unchanged middle.',
|
|
95
|
-
].join(' ');
|
|
96
|
-
export function systemPromptFor(kind) {
|
|
97
|
-
const base = baseSystemPromptFor(kind);
|
|
98
|
-
// β5a P1+P6: append the prompt-v2 intent-marker contract +
|
|
99
|
-
// definitional examples + jargon ban to every command kind. The
|
|
100
|
-
// appendix is shared across kinds because the marker contract +
|
|
101
|
-
// voice gate are command-agnostic — a definitional question lands
|
|
102
|
-
// the same way under `pugi explain` and `pugi code`.
|
|
103
|
-
const withV2 = `${base}\n\n${PROMPT_V2_APPENDIX}`;
|
|
104
|
-
// output-style preset block. Compiled from
|
|
105
|
-
// workspace > user > default precedence. The `default` preset
|
|
106
|
-
// returns an empty block (no override over the base voice), so the
|
|
107
|
-
// injection is a no-op for the most-common case. Wrapped in
|
|
108
|
-
// try/catch — every IO failure inside `resolveOutputStyle` already
|
|
109
|
-
// degrades to the default slug, but defence in depth keeps the
|
|
110
|
-
// engine prompt assembly from ever crashing on a hand-edited
|
|
111
|
-
// config.json.
|
|
112
|
-
const styleBlock = formatOutputStyleBlock();
|
|
113
|
-
const withStyle = styleBlock ? `${withV2}\n\n${styleBlock}` : withV2;
|
|
114
|
-
const snapshot = formatBackgroundJobsSnapshot(getJobRegistrySafely());
|
|
115
|
-
if (!snapshot)
|
|
116
|
-
return withStyle;
|
|
117
|
-
return `${withStyle}\n\n${snapshot}`;
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Resolve the active output-style preset for the current process
|
|
121
|
-
* and compile it into a prompt block. Returns empty string for the
|
|
122
|
-
* default preset OR for any unexpected IO failure so the engine
|
|
123
|
-
* prompt assembly path is unaffected by a missing / malformed
|
|
124
|
-
* config.json.
|
|
125
|
-
*/
|
|
126
|
-
function formatOutputStyleBlock() {
|
|
127
|
-
try {
|
|
128
|
-
const resolved = resolveOutputStyle({ workspaceRoot: process.cwd() });
|
|
129
|
-
return compileStyleBlock(resolved.slug);
|
|
130
|
-
}
|
|
131
|
-
catch {
|
|
132
|
-
return '';
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
function baseSystemPromptFor(kind) {
|
|
136
|
-
switch (kind) {
|
|
137
|
-
case 'code':
|
|
138
|
-
return [
|
|
139
|
-
COMMON_LOCAL_FIRST_PREAMBLE,
|
|
140
|
-
'Command: `pugi code`. The operator gave you a feature request or refactor. Implement it end-to-end.',
|
|
141
|
-
EDIT_FLOW_RULES,
|
|
142
|
-
'If the request is ambiguous, ask one clarifying question by returning a text answer instead of editing.',
|
|
143
|
-
].join('\n\n');
|
|
144
|
-
case 'explain':
|
|
145
|
-
return [
|
|
146
|
-
COMMON_LOCAL_FIRST_PREAMBLE,
|
|
147
|
-
'Command: `pugi explain`. The operator pointed you at code or a concept. Read what you need, then produce a walkthrough.',
|
|
148
|
-
'You should not edit files. If you need to demonstrate a change, describe it in the final answer.',
|
|
149
|
-
'Keep the explanation to the operator\'s level — concise, with file:line references where useful.',
|
|
150
|
-
].join('\n\n');
|
|
151
|
-
case 'fix':
|
|
152
|
-
return [
|
|
153
|
-
COMMON_LOCAL_FIRST_PREAMBLE,
|
|
154
|
-
'Command: `pugi fix`. The operator gave you a bug report or failing test. Investigate the root cause first, then apply the smallest patch that fixes it.',
|
|
155
|
-
EDIT_FLOW_RULES,
|
|
156
|
-
'Surface the root cause in your final answer so the operator can verify the diagnosis is correct.',
|
|
157
|
-
].join('\n\n');
|
|
158
|
-
case 'plan':
|
|
159
|
-
return [
|
|
160
|
-
COMMON_LOCAL_FIRST_PREAMBLE,
|
|
161
|
-
'Command: `pugi plan`. The operator wants a plan, not an implementation.',
|
|
162
|
-
PLAN_TOOLS_NOTE,
|
|
163
|
-
'Produce a numbered list of steps with rough file targets and a brief risk note. Cite the files you consulted.',
|
|
164
|
-
].join('\n\n');
|
|
165
|
-
case 'build':
|
|
166
|
-
return [
|
|
167
|
-
COMMON_LOCAL_FIRST_PREAMBLE,
|
|
168
|
-
'Command: `pugi build`. The operator wants you to scaffold a feature across multiple files.',
|
|
169
|
-
EDIT_FLOW_RULES,
|
|
170
|
-
'Group related edits, run lint/test via bash where it adds confidence, and list every file you created or modified in the final answer.',
|
|
171
|
-
].join('\n\n');
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Builds the BACKGROUND JOBS snapshot block injected at the tail of
|
|
176
|
-
* the system prompt. Sync because the surrounding `systemPromptFor`
|
|
177
|
-
* builder is sync (the engine adapter does not await prompt
|
|
178
|
-
* assembly) and the JobRegistry's `listSync()` is essentially free
|
|
179
|
-
* (single JSON file read with sync fs primitives). Returns an empty
|
|
180
|
-
* string if the registry cannot be reached so the prompt assembly
|
|
181
|
-
* never crashes when the ledger is unavailable.
|
|
182
|
-
*/
|
|
183
|
-
export function formatBackgroundJobsSnapshot(registry) {
|
|
184
|
-
if (!registry)
|
|
185
|
-
return '';
|
|
186
|
-
try {
|
|
187
|
-
const entries = registry.listSync();
|
|
188
|
-
return summarizeJobsForPrompt(entries);
|
|
189
|
-
}
|
|
190
|
-
catch {
|
|
191
|
-
return '';
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
function getJobRegistrySafely() {
|
|
195
|
-
try {
|
|
196
|
-
return getJobRegistry();
|
|
197
|
-
}
|
|
198
|
-
catch {
|
|
199
|
-
return undefined;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Anvil persona slug to invoke per command. Routes each engine command
|
|
204
|
-
* to the appropriate Tier-1 persona from PERSONA_REGISTRY (admin-api/
|
|
205
|
-
* src/pugi-runtime/personas/persona-dispatch.ts):
|
|
206
|
-
*
|
|
207
|
-
* - code / fix / build → 'dev' (Hiroshi, coder, Sonnet codegen tag)
|
|
208
|
-
* - plan → 'architect' (Marcus, architect, Sonnet reason)
|
|
209
|
-
* - explain → 'main' (Pugi orchestrator, DeepSeek reason)
|
|
210
|
-
*
|
|
211
|
-
* Previously this returned 'oes-dev' unconditionally — that is an OES
|
|
212
|
-
* C++ reviewer persona, wrong tool set + wrong system prompt for
|
|
213
|
-
* customer dispatches. CEO live trace #53.
|
|
214
|
-
*
|
|
215
|
-
* Operator override: PUGI_ENGINE_PERSONA_<COMMAND> env (e.g.
|
|
216
|
-
* PUGI_ENGINE_PERSONA_CODE=frontend pins Mia for the next dispatch).
|
|
217
|
-
*/
|
|
218
|
-
export function personaSlugFor(kind) {
|
|
219
|
-
const envKey = `PUGI_ENGINE_PERSONA_${kind.toUpperCase()}`;
|
|
220
|
-
const override = process.env[envKey];
|
|
221
|
-
if (override && override.length > 0)
|
|
222
|
-
return override;
|
|
223
|
-
switch (kind) {
|
|
224
|
-
case 'code':
|
|
225
|
-
case 'fix':
|
|
226
|
-
case 'build':
|
|
227
|
-
return 'dev';
|
|
228
|
-
case 'plan':
|
|
229
|
-
return 'architect';
|
|
230
|
-
case 'explain':
|
|
231
|
-
return 'main';
|
|
232
|
-
default:
|
|
233
|
-
return 'main';
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
//# sourceMappingURL=prompts.js.map
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* L3 — leak-parity: underscore-prefix internal-fields filter.
|
|
3
|
-
*
|
|
4
|
-
* The convention (observed in the leaked the upstream tool BashTool surface and
|
|
5
|
-
* codified in `docs/research/2026-05-27-pugi-.md` §1)
|
|
6
|
-
* is that tool-argument fields whose names start with a leading underscore
|
|
7
|
-
* are INTERNAL — populated by the dispatcher at call time (sessionId,
|
|
8
|
-
* tenantId, correlation handles, hook context, ask-modal bridge handles)
|
|
9
|
-
* but never advertised to the model. The model schema MUST omit them so:
|
|
10
|
-
*
|
|
11
|
-
* 1. No token cost — internal context never burns model budget.
|
|
12
|
-
* 2. No fabrication risk — the model cannot hallucinate values for
|
|
13
|
-
* sessionId / tenantId / etc. because the field is invisible.
|
|
14
|
-
* 3. No leak surface — implementation detail stays implementation detail.
|
|
15
|
-
*
|
|
16
|
-
* The dispatcher (see `tool-bridge.ts::buildExecutor`) does NOT strip these
|
|
17
|
-
* fields at call time. It passes the full args record (including any
|
|
18
|
-
* `_internal*` keys an upstream layer injected) straight to the tool
|
|
19
|
-
* handler. Only the schema surface that the engine adapter ships to the
|
|
20
|
-
* model is filtered.
|
|
21
|
-
*
|
|
22
|
-
* This module is intentionally narrow: it accepts a JSON Schema fragment
|
|
23
|
-
* and returns a deep clone with `_`-prefixed keys removed from every
|
|
24
|
-
* `properties` map encountered while walking, and with `required` filtered
|
|
25
|
-
* to drop any references to those keys. It descends into nested object
|
|
26
|
-
* schemas and into the `items` schema of arrays. It is JSON-Schema-version
|
|
27
|
-
* agnostic (works on draft-07, 2019-09, 2020-12 alike) because it only
|
|
28
|
-
* inspects `properties`/`required`/`items` and leaves the rest of the
|
|
29
|
-
* fragment alone.
|
|
30
|
-
*
|
|
31
|
-
* Edge cases handled:
|
|
32
|
-
* - `_` alone (single underscore) is treated as internal and stripped.
|
|
33
|
-
* - Nested object schemas inside `properties` get the same treatment
|
|
34
|
-
* (a sub-property whose name starts with `_` is removed too).
|
|
35
|
-
* - Array `items` are walked. Tuple schemas (`items` as array) are
|
|
36
|
-
* walked element-by-element.
|
|
37
|
-
* - `oneOf`/`anyOf`/`allOf` branches are walked.
|
|
38
|
-
* - Non-object inputs (null, primitives, arrays passed as the root)
|
|
39
|
-
* are returned as-is — defensive no-op, never throws.
|
|
40
|
-
*
|
|
41
|
-
* Contract notes:
|
|
42
|
-
* - Pure function. Input is never mutated.
|
|
43
|
-
* - Output is a deep clone — every nested object/array is freshly
|
|
44
|
-
* allocated so callers can mutate safely.
|
|
45
|
-
* - JSON-only — does not preserve symbols, getters, or class instances
|
|
46
|
-
* because JSON Schema is plain-data by spec.
|
|
47
|
-
*/
|
|
48
|
-
const INTERNAL_PREFIX = '_';
|
|
49
|
-
/**
|
|
50
|
-
* Returns true when the field name should be stripped from the model-
|
|
51
|
-
* facing schema. Leading underscore is the contract — single `_` is also
|
|
52
|
-
* stripped (no escape hatch). Empty-string keys (which are technically
|
|
53
|
-
* valid JSON) are left alone so we do not silently drop them.
|
|
54
|
-
*/
|
|
55
|
-
export function isInternalFieldName(name) {
|
|
56
|
-
return name.length > 0 && name.startsWith(INTERNAL_PREFIX);
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Strip `_`-prefixed properties from a JSON Schema fragment. Recursively
|
|
60
|
-
* walks nested object schemas and array `items`. Returns a deep clone;
|
|
61
|
-
* the input is never mutated.
|
|
62
|
-
*
|
|
63
|
-
* Pass-through behaviour:
|
|
64
|
-
* - Non-object / null / array inputs round-trip unchanged (as deep
|
|
65
|
-
* clones where applicable).
|
|
66
|
-
* - Fragments with no `properties` key are returned as deep clones
|
|
67
|
-
* after walking `items`/`oneOf`/`anyOf`/`allOf`.
|
|
68
|
-
*/
|
|
69
|
-
export function stripInternalFields(schema) {
|
|
70
|
-
if (schema === null || typeof schema !== 'object')
|
|
71
|
-
return schema;
|
|
72
|
-
if (Array.isArray(schema)) {
|
|
73
|
-
return schema.map((item) => stripInternalFields(item));
|
|
74
|
-
}
|
|
75
|
-
return walkObject(schema);
|
|
76
|
-
}
|
|
77
|
-
function walkObject(node) {
|
|
78
|
-
const out = {};
|
|
79
|
-
for (const [key, value] of Object.entries(node)) {
|
|
80
|
-
if (key === 'properties' && value !== null && typeof value === 'object' && !Array.isArray(value)) {
|
|
81
|
-
out[key] = walkProperties(value);
|
|
82
|
-
continue;
|
|
83
|
-
}
|
|
84
|
-
if (key === 'required' && Array.isArray(value)) {
|
|
85
|
-
out[key] = value.filter((entry) => typeof entry === 'string' && !isInternalFieldName(entry));
|
|
86
|
-
continue;
|
|
87
|
-
}
|
|
88
|
-
if (key === 'items') {
|
|
89
|
-
out[key] = stripInternalFields(value);
|
|
90
|
-
continue;
|
|
91
|
-
}
|
|
92
|
-
if (key === 'oneOf' || key === 'anyOf' || key === 'allOf') {
|
|
93
|
-
if (Array.isArray(value)) {
|
|
94
|
-
out[key] = value.map((branch) => stripInternalFields(branch));
|
|
95
|
-
continue;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
// Default: deep-clone any nested objects/arrays so the caller can
|
|
99
|
-
// mutate freely without touching the input. Primitives pass through.
|
|
100
|
-
out[key] = cloneJson(value);
|
|
101
|
-
}
|
|
102
|
-
return out;
|
|
103
|
-
}
|
|
104
|
-
function walkProperties(props) {
|
|
105
|
-
const out = {};
|
|
106
|
-
for (const [propName, propSchema] of Object.entries(props)) {
|
|
107
|
-
if (isInternalFieldName(propName))
|
|
108
|
-
continue;
|
|
109
|
-
out[propName] = stripInternalFields(propSchema);
|
|
110
|
-
}
|
|
111
|
-
return out;
|
|
112
|
-
}
|
|
113
|
-
function cloneJson(value) {
|
|
114
|
-
if (value === null || typeof value !== 'object')
|
|
115
|
-
return value;
|
|
116
|
-
if (Array.isArray(value))
|
|
117
|
-
return value.map((item) => cloneJson(item));
|
|
118
|
-
const out = {};
|
|
119
|
-
for (const [key, val] of Object.entries(value)) {
|
|
120
|
-
out[key] = cloneJson(val);
|
|
121
|
-
}
|
|
122
|
-
return out;
|
|
123
|
-
}
|
|
124
|
-
//# sourceMappingURL=strip-internal-fields.js.map
|