@cjhyy/code-shell 0.3.0 → 0.5.0-rc.2
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/CHANGELOG.md +75 -0
- package/dist/cli.js +2 -0
- package/dist/index.d.ts +1 -68
- package/dist/index.js +1 -1
- package/package.json +25 -73
- package/dist/agent/coordinator.d.ts +0 -49
- package/dist/anthropic-DJXVKFMJ.js +0 -1
- package/dist/arena/arena.d.ts +0 -43
- package/dist/arena/context/context-tools.d.ts +0 -16
- package/dist/arena/detect-mode.d.ts +0 -20
- package/dist/arena/digest-builder.d.ts +0 -25
- package/dist/arena/index.d.ts +0 -29
- package/dist/arena/index.js +0 -1
- package/dist/arena/iterate/convergence.d.ts +0 -25
- package/dist/arena/iterate/formats/index.d.ts +0 -22
- package/dist/arena/iterate/index.d.ts +0 -11
- package/dist/arena/iterate/iterative-arena.d.ts +0 -23
- package/dist/arena/iterate/parse.d.ts +0 -42
- package/dist/arena/iterate/phases/argue.d.ts +0 -22
- package/dist/arena/iterate/phases/revise.d.ts +0 -16
- package/dist/arena/iterate/phases/tournament.d.ts +0 -34
- package/dist/arena/iterate/tools/web-tools.d.ts +0 -13
- package/dist/arena/iterate/types.d.ts +0 -152
- package/dist/arena/ledger.d.ts +0 -47
- package/dist/arena/lenses/architecture.d.ts +0 -5
- package/dist/arena/lenses/engineering.d.ts +0 -5
- package/dist/arena/lenses/general.d.ts +0 -5
- package/dist/arena/lenses/index.d.ts +0 -16
- package/dist/arena/lenses/product.d.ts +0 -5
- package/dist/arena/model-presets.d.ts +0 -23
- package/dist/arena/phases/adjudication.d.ts +0 -24
- package/dist/arena/phases/build-consensus.d.ts +0 -29
- package/dist/arena/phases/claim-registry.d.ts +0 -26
- package/dist/arena/phases/cross-review.d.ts +0 -45
- package/dist/arena/phases/debate-rounds.d.ts +0 -27
- package/dist/arena/phases/participant-research.d.ts +0 -38
- package/dist/arena/phases/planning-detail-expansion.d.ts +0 -38
- package/dist/arena/planner.d.ts +0 -27
- package/dist/arena/providers/docs.d.ts +0 -6
- package/dist/arena/providers/git.d.ts +0 -8
- package/dist/arena/providers/index.d.ts +0 -32
- package/dist/arena/providers/none.d.ts +0 -7
- package/dist/arena/providers/repo.d.ts +0 -6
- package/dist/arena/render/session.d.ts +0 -17
- package/dist/arena/render/terminal.d.ts +0 -33
- package/dist/arena/strategies/discussion.d.ts +0 -25
- package/dist/arena/strategies/index.d.ts +0 -15
- package/dist/arena/strategies/language-wrapper.d.ts +0 -17
- package/dist/arena/strategies/lens-wrapper.d.ts +0 -16
- package/dist/arena/strategies/planning.d.ts +0 -30
- package/dist/arena/strategies/review.d.ts +0 -26
- package/dist/arena/strategies/utils.d.ts +0 -39
- package/dist/arena/tools/selector.d.ts +0 -17
- package/dist/arena/transitions.d.ts +0 -48
- package/dist/arena/types.d.ts +0 -508
- package/dist/arena-MRBATZFD.js +0 -3
- package/dist/bootstrap/setup.d.ts +0 -14
- package/dist/bootstrap/state.d.ts +0 -160
- package/dist/bwrap-PVZMLHZR.js +0 -2
- package/dist/chunk-2OD6VR4N.js +0 -2
- package/dist/chunk-3QP5BQ3L.js +0 -1
- package/dist/chunk-5QIVXFCT.js +0 -1
- package/dist/chunk-AFMP73YP.js +0 -2
- package/dist/chunk-D3TVASD2.js +0 -4
- package/dist/chunk-DI26OUIU.js +0 -2
- package/dist/chunk-FU7AHZNN.js +0 -1
- package/dist/chunk-FZXY554D.js +0 -2
- package/dist/chunk-GGVAOPI7.js +0 -1
- package/dist/chunk-GKAQH2DG.js +0 -2
- package/dist/chunk-GYNO4R7R.js +0 -2
- package/dist/chunk-K4HILJ6G.js +0 -251
- package/dist/chunk-M7VU4YVY.js +0 -49
- package/dist/chunk-MLCTC53I.js +0 -1
- package/dist/chunk-O5HFCH2U.js +0 -1
- package/dist/chunk-OWBYLMDD.js +0 -1
- package/dist/chunk-P6JSTIFM.js +0 -1
- package/dist/chunk-QTWU7UNA.js +0 -5
- package/dist/chunk-SKIX2M5Z.js +0 -4
- package/dist/chunk-SNFAPSLA.js +0 -1
- package/dist/chunk-SV7H4FKT.js +0 -3
- package/dist/chunk-T222K6IV.js +0 -18
- package/dist/chunk-TKJA6W36.js +0 -3
- package/dist/chunk-WI6FSWGU.js +0 -1
- package/dist/chunk-WONQHE4P.js +0 -641
- package/dist/chunk-X2S7ASQ2.js +0 -1
- package/dist/chunk-Z5HKHAO7.js +0 -336
- package/dist/cli/commands/arena.d.ts +0 -29
- package/dist/cli/commands/builtin/advanced-commands.d.ts +0 -5
- package/dist/cli/commands/builtin/core-commands.d.ts +0 -5
- package/dist/cli/commands/builtin/export-md.d.ts +0 -19
- package/dist/cli/commands/builtin/extra-commands.d.ts +0 -6
- package/dist/cli/commands/builtin/git-commands.d.ts +0 -5
- package/dist/cli/commands/builtin/init/detect.d.ts +0 -25
- package/dist/cli/commands/builtin/init/index.d.ts +0 -19
- package/dist/cli/commands/builtin/more-commands.d.ts +0 -5
- package/dist/cli/commands/builtin/permissions-command.d.ts +0 -5
- package/dist/cli/commands/builtin/plugin-commands-registration.d.ts +0 -12
- package/dist/cli/commands/builtin/plugin-handler.d.ts +0 -6
- package/dist/cli/commands/builtin/utility-commands.d.ts +0 -5
- package/dist/cli/commands/registry.d.ts +0 -79
- package/dist/cli/commands/repl.d.ts +0 -21
- package/dist/cli/commands/run.d.ts +0 -21
- package/dist/cli/commands/runs.d.ts +0 -14
- package/dist/cli/cost-tracker.d.ts +0 -63
- package/dist/cli/exit.d.ts +0 -12
- package/dist/cli/input/ndjson-reader.d.ts +0 -31
- package/dist/cli/input-compiler.d.ts +0 -5
- package/dist/cli/main.d.ts +0 -5
- package/dist/cli/main.js +0 -415
- package/dist/cli/migrate-models.d.ts +0 -45
- package/dist/cli/onboarding.d.ts +0 -189
- package/dist/cli/output/renderer.d.ts +0 -28
- package/dist/cli/output/terminal-ui.d.ts +0 -50
- package/dist/cli/updater.d.ts +0 -65
- package/dist/client-base-GSFXPP2Y.js +0 -1
- package/dist/compaction-L3Y6NG4N.js +0 -1
- package/dist/context/compaction.d.ts +0 -116
- package/dist/context/manager.d.ts +0 -145
- package/dist/context/token-counter.d.ts +0 -27
- package/dist/context/tool-result-storage.d.ts +0 -96
- package/dist/cron/scheduler.d.ts +0 -34
- package/dist/data/openrouter-models.d.ts +0 -35
- package/dist/data/openrouter-sync.d.ts +0 -16
- package/dist/data/static-catalogs.d.ts +0 -25
- package/dist/devtools-FBX4HVVY.js +0 -1
- package/dist/engine/cost-store.d.ts +0 -22
- package/dist/engine/engine.d.ts +0 -236
- package/dist/engine/model-facade.d.ts +0 -24
- package/dist/engine/query.d.ts +0 -50
- package/dist/engine/streaming-tool-queue.d.ts +0 -34
- package/dist/engine/token-budget.d.ts +0 -22
- package/dist/engine/tool-summary.d.ts +0 -13
- package/dist/engine/turn-loop.d.ts +0 -122
- package/dist/engine/turn-state.d.ts +0 -20
- package/dist/exceptions.d.ts +0 -44
- package/dist/export-md-U72T7NW7.js +0 -22
- package/dist/file-history-7FQFEQOL.js +0 -1
- package/dist/git/utils.d.ts +0 -35
- package/dist/git/worktree.d.ts +0 -36
- package/dist/hooks/events.d.ts +0 -114
- package/dist/hooks/inject.d.ts +0 -19
- package/dist/hooks/registry.d.ts +0 -15
- package/dist/hooks/shell-runner.d.ts +0 -45
- package/dist/llm/api-key-sanitize.d.ts +0 -22
- package/dist/llm/capabilities/index.d.ts +0 -20
- package/dist/llm/capabilities/rules.d.ts +0 -26
- package/dist/llm/capabilities/types.d.ts +0 -108
- package/dist/llm/client-base.d.ts +0 -29
- package/dist/llm/client-factory.d.ts +0 -10
- package/dist/llm/model-cache.d.ts +0 -21
- package/dist/llm/model-fetcher.d.ts +0 -29
- package/dist/llm/model-pool.d.ts +0 -84
- package/dist/llm/provider-catalog.d.ts +0 -32
- package/dist/llm/provider-kinds.d.ts +0 -21
- package/dist/llm/providers/anthropic.d.ts +0 -19
- package/dist/llm/providers/openai.d.ts +0 -64
- package/dist/llm/retry.d.ts +0 -12
- package/dist/llm/stream-watchdog.d.ts +0 -42
- package/dist/llm/token-counter.d.ts +0 -17
- package/dist/llm/types.d.ts +0 -37
- package/dist/logging/logger.d.ts +0 -102
- package/dist/logging/session-recorder.d.ts +0 -90
- package/dist/lsp/client.d.ts +0 -41
- package/dist/lsp/manager.d.ts +0 -40
- package/dist/lsp/servers.d.ts +0 -16
- package/dist/manager-4XKLZHKE.js +0 -1
- package/dist/mcp-manager-3JGHEJO3.js +0 -1
- package/dist/memory-BNI4WEWL.js +0 -1
- package/dist/model-cache-HEDXI7UJ.js +0 -1
- package/dist/model-fetcher-X5W5EASG.js +0 -1
- package/dist/native-ts/yoga-layout/enums.d.ts +0 -117
- package/dist/native-ts/yoga-layout/index.d.ts +0 -270
- package/dist/off-7SDVMMXW.js +0 -1
- package/dist/openai-OQ6LLN5J.js +0 -1
- package/dist/openrouter-models-ZT4R2AE3.js +0 -1
- package/dist/openrouter-sync-ARMVWY7S.js +0 -1
- package/dist/plugin-handler-GJISMH5Q.js +0 -11
- package/dist/plugins/gitOps.d.ts +0 -23
- package/dist/plugins/installedPlugins.d.ts +0 -15
- package/dist/plugins/knownMarketplaces.d.ts +0 -10
- package/dist/plugins/loadPluginHooks.d.ts +0 -52
- package/dist/plugins/marketplaceManager.d.ts +0 -49
- package/dist/plugins/parseMarketplaceInput.d.ts +0 -16
- package/dist/plugins/pluginCommandHook.d.ts +0 -54
- package/dist/plugins/pluginCommandsLoader.d.ts +0 -25
- package/dist/plugins/pluginInstaller.d.ts +0 -36
- package/dist/plugins/schemas.d.ts +0 -9
- package/dist/plugins/types.d.ts +0 -75
- package/dist/plugins/varRewrite.d.ts +0 -42
- package/dist/preset/index.d.ts +0 -60
- package/dist/product/define.d.ts +0 -60
- package/dist/product/index.d.ts +0 -5
- package/dist/product/index.js +0 -1
- package/dist/product/types.d.ts +0 -111
- package/dist/prompt/composer.d.ts +0 -42
- package/dist/prompt/instruction-scanner.d.ts +0 -54
- package/dist/prompt/section-cache.d.ts +0 -15
- package/dist/prompt/section-loader.d.ts +0 -26
- package/dist/protocol/client.d.ts +0 -64
- package/dist/protocol/helpers.d.ts +0 -42
- package/dist/protocol/index.d.ts +0 -4
- package/dist/protocol/server.d.ts +0 -51
- package/dist/protocol/transport.d.ts +0 -36
- package/dist/protocol/types.d.ts +0 -192
- package/dist/react-compiler-runtime-shim.d.ts +0 -1
- package/dist/remote/bridge.d.ts +0 -37
- package/dist/render/Ansi.d.ts +0 -10
- package/dist/render/bidi.d.ts +0 -15
- package/dist/render/clearTerminal.d.ts +0 -19
- package/dist/render/colorize.d.ts +0 -16
- package/dist/render/components/AlternateScreen.d.ts +0 -21
- package/dist/render/components/App.d.ts +0 -71
- package/dist/render/components/AppContext.d.ts +0 -11
- package/dist/render/components/Box.d.ts +0 -49
- package/dist/render/components/Button.d.ts +0 -36
- package/dist/render/components/ClockContext.d.ts +0 -9
- package/dist/render/components/CursorDeclarationContext.d.ts +0 -22
- package/dist/render/components/ErrorOverview.d.ts +0 -5
- package/dist/render/components/Link.d.ts +0 -7
- package/dist/render/components/Newline.d.ts +0 -12
- package/dist/render/components/NoSelect.d.ts +0 -19
- package/dist/render/components/RawAnsi.d.ts +0 -16
- package/dist/render/components/ScrollBox.d.ts +0 -78
- package/dist/render/components/Spacer.d.ts +0 -5
- package/dist/render/components/Static.d.ts +0 -23
- package/dist/render/components/StdinContext.d.ts +0 -27
- package/dist/render/components/TerminalFocusContext.d.ts +0 -10
- package/dist/render/components/TerminalSizeContext.d.ts +0 -5
- package/dist/render/components/Text.d.ts +0 -55
- package/dist/render/constants.d.ts +0 -1
- package/dist/render/cursor.d.ts +0 -8
- package/dist/render/devtools.d.ts +0 -9
- package/dist/render/dom.d.ts +0 -77
- package/dist/render/events/click-event.d.ts +0 -31
- package/dist/render/events/dispatcher.d.ts +0 -40
- package/dist/render/events/emitter.d.ts +0 -5
- package/dist/render/events/event-handlers.d.ts +0 -46
- package/dist/render/events/event.d.ts +0 -5
- package/dist/render/events/focus-event.d.ts +0 -13
- package/dist/render/events/input-event.d.ts +0 -30
- package/dist/render/events/keyboard-event.d.ts +0 -19
- package/dist/render/events/paste-event.d.ts +0 -8
- package/dist/render/events/resize-event.d.ts +0 -9
- package/dist/render/events/terminal-event.d.ts +0 -54
- package/dist/render/events/terminal-focus-event.d.ts +0 -13
- package/dist/render/focus.d.ts +0 -43
- package/dist/render/frame.d.ts +0 -95
- package/dist/render/get-max-width.d.ts +0 -17
- package/dist/render/hit-test.d.ts +0 -33
- package/dist/render/hooks/use-animation-frame.d.ts +0 -26
- package/dist/render/hooks/use-app.d.ts +0 -5
- package/dist/render/hooks/use-declared-cursor.d.ts +0 -26
- package/dist/render/hooks/use-input.d.ts +0 -37
- package/dist/render/hooks/use-interval.d.ts +0 -18
- package/dist/render/hooks/use-search-highlight.d.ts +0 -30
- package/dist/render/hooks/use-selection.d.ts +0 -39
- package/dist/render/hooks/use-stdin.d.ts +0 -5
- package/dist/render/hooks/use-tab-status.d.ts +0 -13
- package/dist/render/hooks/use-terminal-focus.d.ts +0 -10
- package/dist/render/hooks/use-terminal-title.d.ts +0 -12
- package/dist/render/hooks/use-terminal-viewport.d.ts +0 -29
- package/dist/render/index.d.ts +0 -30
- package/dist/render/ink.d.ts +0 -391
- package/dist/render/instances.d.ts +0 -3
- package/dist/render/layout/engine.d.ts +0 -2
- package/dist/render/layout/geometry.d.ts +0 -30
- package/dist/render/layout/node.d.ts +0 -125
- package/dist/render/layout/yoga.d.ts +0 -56
- package/dist/render/line-width-cache.d.ts +0 -1
- package/dist/render/log-update.d.ts +0 -28
- package/dist/render/measure-element.d.ts +0 -16
- package/dist/render/measure-text.d.ts +0 -6
- package/dist/render/node-cache.d.ts +0 -20
- package/dist/render/optimizer.d.ts +0 -15
- package/dist/render/output.d.ts +0 -119
- package/dist/render/parse-keypress.d.ts +0 -111
- package/dist/render/reconciler.d.ts +0 -11
- package/dist/render/render-border.d.ts +0 -24
- package/dist/render/render-node-to-output.d.ts +0 -45
- package/dist/render/render-to-screen.d.ts +0 -46
- package/dist/render/renderer.d.ts +0 -14
- package/dist/render/root.d.ts +0 -74
- package/dist/render/screen.d.ts +0 -269
- package/dist/render/searchHighlight.d.ts +0 -20
- package/dist/render/selection.d.ts +0 -229
- package/dist/render/squash-text-nodes.d.ts +0 -22
- package/dist/render/stringWidth.d.ts +0 -1
- package/dist/render/styles.d.ts +0 -306
- package/dist/render/supports-hyperlinks.d.ts +0 -13
- package/dist/render/tabstops.d.ts +0 -1
- package/dist/render/terminal-focus-state.d.ts +0 -6
- package/dist/render/terminal-querier.d.ts +0 -129
- package/dist/render/terminal.d.ts +0 -46
- package/dist/render/termio/ansi.d.ts +0 -65
- package/dist/render/termio/csi.d.ts +0 -165
- package/dist/render/termio/dec.d.ts +0 -37
- package/dist/render/termio/esc.d.ts +0 -12
- package/dist/render/termio/osc.d.ts +0 -173
- package/dist/render/termio/parser.d.ts +0 -35
- package/dist/render/termio/sgr.d.ts +0 -8
- package/dist/render/termio/tokenize.d.ts +0 -45
- package/dist/render/termio/types.d.ts +0 -190
- package/dist/render/termio.d.ts +0 -24
- package/dist/render/useTerminalNotification.d.ts +0 -28
- package/dist/render/warn.d.ts +0 -1
- package/dist/render/widest-line.d.ts +0 -1
- package/dist/render/wrap-text.d.ts +0 -2
- package/dist/render/wrapAnsi.d.ts +0 -7
- package/dist/run/ArtifactTracker.d.ts +0 -38
- package/dist/run/CheckpointWriter.d.ts +0 -53
- package/dist/run/EngineRunner.d.ts +0 -72
- package/dist/run/Evaluator.d.ts +0 -56
- package/dist/run/FileRunStore.d.ts +0 -39
- package/dist/run/Heartbeat.d.ts +0 -54
- package/dist/run/RunApprovalBackend.d.ts +0 -53
- package/dist/run/RunLock.d.ts +0 -40
- package/dist/run/RunManager.d.ts +0 -82
- package/dist/run/RunQueue.d.ts +0 -27
- package/dist/run/RunStore.d.ts +0 -25
- package/dist/run/factory.d.ts +0 -63
- package/dist/run/index.d.ts +0 -17
- package/dist/run/index.js +0 -1
- package/dist/run/types.d.ts +0 -136
- package/dist/seatbelt-L54CNI2Y.js +0 -37
- package/dist/services/analytics.d.ts +0 -29
- package/dist/services/auto-dream.d.ts +0 -35
- package/dist/services/diagnostics.d.ts +0 -41
- package/dist/services/extract-memories.d.ts +0 -27
- package/dist/services/index.d.ts +0 -11
- package/dist/services/memory-orchestrator.d.ts +0 -39
- package/dist/services/notifier.d.ts +0 -25
- package/dist/services/oauth.d.ts +0 -27
- package/dist/services/session-memory.d.ts +0 -37
- package/dist/session/file-history.d.ts +0 -41
- package/dist/session/memory.d.ts +0 -65
- package/dist/session/session-manager.d.ts +0 -28
- package/dist/session/transcript.d.ts +0 -39
- package/dist/session-manager-AGWS5SMJ.js +0 -1
- package/dist/settings/manager.d.ts +0 -36
- package/dist/settings/schema.d.ts +0 -1123
- package/dist/skills/frontmatter.d.ts +0 -13
- package/dist/skills/index.d.ts +0 -7
- package/dist/skills/scanner.d.ts +0 -20
- package/dist/tool-summary-HJX6RHG4.js +0 -2
- package/dist/tool-system/builtin/agent-notifications.d.ts +0 -55
- package/dist/tool-system/builtin/agent-registry.d.ts +0 -67
- package/dist/tool-system/builtin/agent-transcript-translator.d.ts +0 -22
- package/dist/tool-system/builtin/agent.d.ts +0 -16
- package/dist/tool-system/builtin/apply-patch/applier.d.ts +0 -26
- package/dist/tool-system/builtin/apply-patch/index.d.ts +0 -19
- package/dist/tool-system/builtin/apply-patch/parser.d.ts +0 -17
- package/dist/tool-system/builtin/apply-patch/seek-sequence.d.ts +0 -18
- package/dist/tool-system/builtin/apply-patch/types.d.ts +0 -49
- package/dist/tool-system/builtin/arena.d.ts +0 -31
- package/dist/tool-system/builtin/ask-user.d.ts +0 -20
- package/dist/tool-system/builtin/bash.d.ts +0 -12
- package/dist/tool-system/builtin/brief.d.ts +0 -6
- package/dist/tool-system/builtin/config.d.ts +0 -6
- package/dist/tool-system/builtin/cron.d.ts +0 -10
- package/dist/tool-system/builtin/edit.d.ts +0 -6
- package/dist/tool-system/builtin/file-cache.d.ts +0 -11
- package/dist/tool-system/builtin/glob.d.ts +0 -6
- package/dist/tool-system/builtin/grep.d.ts +0 -6
- package/dist/tool-system/builtin/index.d.ts +0 -20
- package/dist/tool-system/builtin/lsp.d.ts +0 -6
- package/dist/tool-system/builtin/mcp-tools.d.ts +0 -10
- package/dist/tool-system/builtin/notebook-edit.d.ts +0 -6
- package/dist/tool-system/builtin/plan.d.ts +0 -18
- package/dist/tool-system/builtin/powershell.d.ts +0 -6
- package/dist/tool-system/builtin/read.d.ts +0 -6
- package/dist/tool-system/builtin/remote-trigger.d.ts +0 -6
- package/dist/tool-system/builtin/repl.d.ts +0 -6
- package/dist/tool-system/builtin/send-message.d.ts +0 -6
- package/dist/tool-system/builtin/skill-prompt.d.ts +0 -7
- package/dist/tool-system/builtin/skill.d.ts +0 -8
- package/dist/tool-system/builtin/sleep.d.ts +0 -6
- package/dist/tool-system/builtin/task.d.ts +0 -51
- package/dist/tool-system/builtin/tool-search.d.ts +0 -11
- package/dist/tool-system/builtin/web-fetch.d.ts +0 -6
- package/dist/tool-system/builtin/web-search.d.ts +0 -6
- package/dist/tool-system/builtin/worktree.d.ts +0 -10
- package/dist/tool-system/builtin/write.d.ts +0 -6
- package/dist/tool-system/context.d.ts +0 -133
- package/dist/tool-system/executor.d.ts +0 -49
- package/dist/tool-system/investigation-guard.d.ts +0 -46
- package/dist/tool-system/mcp-manager.d.ts +0 -50
- package/dist/tool-system/permission.d.ts +0 -104
- package/dist/tool-system/registry.d.ts +0 -32
- package/dist/tool-system/sandbox/bwrap.d.ts +0 -13
- package/dist/tool-system/sandbox/index.d.ts +0 -78
- package/dist/tool-system/sandbox/off.d.ts +0 -2
- package/dist/tool-system/sandbox/seatbelt.d.ts +0 -18
- package/dist/tool-system/task-guard.d.ts +0 -30
- package/dist/tool-system/validation.d.ts +0 -5
- package/dist/types.d.ts +0 -356
- package/dist/ui/App.d.ts +0 -14
- package/dist/ui/components/AgentBlock.d.ts +0 -35
- package/dist/ui/components/AgentDock.d.ts +0 -36
- package/dist/ui/components/AskUserPrompt.d.ts +0 -14
- package/dist/ui/components/BabyHand.d.ts +0 -1
- package/dist/ui/components/Banner.d.ts +0 -8
- package/dist/ui/components/CodeBlock.d.ts +0 -7
- package/dist/ui/components/CommandInput.d.ts +0 -24
- package/dist/ui/components/ContextUsageBar.d.ts +0 -7
- package/dist/ui/components/DiffLine.d.ts +0 -33
- package/dist/ui/components/DiffView.d.ts +0 -6
- package/dist/ui/components/DogLogo.d.ts +0 -1
- package/dist/ui/components/FullscreenLayout.d.ts +0 -51
- package/dist/ui/components/KunHead.d.ts +0 -1
- package/dist/ui/components/KunLogo.d.ts +0 -1
- package/dist/ui/components/MessageContent.d.ts +0 -26
- package/dist/ui/components/MessageRow.d.ts +0 -54
- package/dist/ui/components/ModelManager.d.ts +0 -68
- package/dist/ui/components/ModelSelector.d.ts +0 -10
- package/dist/ui/components/OnboardingPrompt.d.ts +0 -16
- package/dist/ui/components/PermissionDialog.d.ts +0 -8
- package/dist/ui/components/PermissionPrompt.d.ts +0 -11
- package/dist/ui/components/ProviderModelFlow.d.ts +0 -58
- package/dist/ui/components/ScrollView.d.ts +0 -34
- package/dist/ui/components/SessionPicker.d.ts +0 -16
- package/dist/ui/components/Spinner.d.ts +0 -8
- package/dist/ui/components/SpinnerWithVerb.d.ts +0 -19
- package/dist/ui/components/StatusLine.d.ts +0 -28
- package/dist/ui/components/StructuredDiff.d.ts +0 -8
- package/dist/ui/components/TaskList.d.ts +0 -6
- package/dist/ui/components/TextInput.d.ts +0 -17
- package/dist/ui/components/ThemedBox.d.ts +0 -19
- package/dist/ui/components/ThemedText.d.ts +0 -26
- package/dist/ui/components/ToolCall.d.ts +0 -28
- package/dist/ui/components/UpdateBanner.d.ts +0 -1
- package/dist/ui/components/VirtualMessageList.d.ts +0 -43
- package/dist/ui/components/WelcomeTips.d.ts +0 -5
- package/dist/ui/dev-seed.d.ts +0 -1
- package/dist/ui/fullscreen-mode.d.ts +0 -9
- package/dist/ui/hooks/useCostSummary.d.ts +0 -1
- package/dist/ui/hooks/useVirtualScroll.d.ts +0 -101
- package/dist/ui/index.d.ts +0 -12
- package/dist/ui/input-history.d.ts +0 -61
- package/dist/ui/onboarding-runner.d.ts +0 -2
- package/dist/ui/perf-probes.d.ts +0 -22
- package/dist/ui/query-guard.d.ts +0 -35
- package/dist/ui/slice-anchor.d.ts +0 -44
- package/dist/ui/store.d.ts +0 -108
- package/dist/ui/terminal-renderer.d.ts +0 -45
- package/dist/ui/theme.d.ts +0 -36
- package/dist/ui/vim-mode.d.ts +0 -25
- package/dist/updater-OCNU2K2Z.js +0 -1
- package/dist/utils/debug.d.ts +0 -41
- package/dist/utils/earlyInput.d.ts +0 -43
- package/dist/utils/env.d.ts +0 -24
- package/dist/utils/envUtils.d.ts +0 -51
- package/dist/utils/execFileNoThrow.d.ts +0 -39
- package/dist/utils/format.d.ts +0 -44
- package/dist/utils/fullscreen.d.ts +0 -47
- package/dist/utils/intl.d.ts +0 -22
- package/dist/utils/lockfile.d.ts +0 -15
- package/dist/utils/semver.d.ts +0 -6
- package/dist/utils/sliceAnsi.d.ts +0 -12
- package/dist/utils/systemTheme.d.ts +0 -40
- package/dist/utils/task-sanitizer.d.ts +0 -6
- package/dist/utils/theme.d.ts +0 -91
- package/dist/utils/toolDisplay.d.ts +0 -31
- package/dist/utils/truncate.d.ts +0 -40
- package/dist/voice/index.d.ts +0 -35
package/dist/chunk-WONQHE4P.js
DELETED
|
@@ -1,641 +0,0 @@
|
|
|
1
|
-
import {c}from'./chunk-GKAQH2DG.js';import {b}from'./chunk-FU7AHZNN.js';import {d}from'./chunk-DI26OUIU.js';import {h,a}from'./chunk-3QP5BQ3L.js';import {execFile,execFileSync}from'child_process';import {existsSync,statSync,readFileSync,readdirSync,mkdirSync,writeFileSync,renameSync}from'fs';import {readdir,stat}from'fs/promises';import {resolve,join,extname}from'path';import {promisify}from'util';import {createHash}from'crypto';import {homedir}from'os';import R from'chalk';h();var Se=new Map;function Xe(n,e){Se.set(n,e);}a(Xe,"registerProvider");async function F(n){let e=Se.get(n.provider);if(!e){if(n.provider==="anthropic"){let{AnthropicClient:t}=await import('./anthropic-DJXVKFMJ.js');Xe("anthropic",t),e=t;}else if(n.provider==="openai"){let{OpenAIClient:t}=await import('./openai-OQ6LLN5J.js');Xe("openai",t),e=t;}}if(!e)throw new b(`Unknown LLM provider: ${n.provider}. Available: ${[...Se.keys()].join(", ")}`);return new e(n)}a(F,"createLLMClient");h();var Qe={review:{maxDiscussionRounds:3,convergenceThreshold:200},discussion:{maxDiscussionRounds:4,convergenceThreshold:300},planning:{maxDiscussionRounds:5,convergenceThreshold:400}},Ze={maxClaimsForReview:12,maxContestedClaimsForDebate:5,maxRequestedChecksPerClaimPerRound:2,maxReviewersPerClaim:2,maxRoadmapPhases:6,maxExpandedPhasesPerRun:6};function te(n){return typeof n.detailExpansionUserPrompt=="function"}a(te,"isStrategyPlanning");function U(n){return typeof n.verificationReviewUserPrompt=="function"}a(U,"isStrategyV2");h();h();function M(n){return typeof n=="string"?n:n==null?"":typeof n=="number"||typeof n=="boolean"?String(n):""}a(M,"asString");function K(n){return n?n.replace(/<\/?(?:system|assistant|user|system-reminder)[^>]*>/gi,"").replace(/^(?:IGNORE|DISREGARD|FORGET|OVERRIDE|SYSTEM|INSTRUCTION)[:\s].*/gim,"").slice(0,3e3):""}a(K,"sanitizeForPrompt");function H(n){let e=n.match(/```(?:json)?\s*\n([\s\S]*)\n\s*```/);if(e)return e[1].trim();let t=n.indexOf("{");if(t!==-1){let r=0,i=false,o=false;for(let s=t;s<n.length;s++){let c=n[s];if(o){o=false;continue}if(c==="\\"){o=true;continue}if(c==='"'){i=!i;continue}if(!i){if(c==="{")r++;else if(c==="}"&&(r--,r===0))return n.slice(t,s+1)}}return n.slice(t)}return n}a(H,"extractJSON");function rn(n){let e=n.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/);if(e)return e[1].trim();let t=n.match(/\[[\s\S]*\]/);return t?t[0]:n}a(rn,"extractJSONArray");function se(n){let e=[];n.quickFacts.length>0&&e.push(`## Quick Facts
|
|
2
|
-
${n.quickFacts.map(t=>`- ${t.label}: ${t.value}`).join(`
|
|
3
|
-
`)}`);for(let t of n.artifacts){let r=t.ref?`${t.title} (${t.ref})`:t.title;e.push(`## ${t.kind.toUpperCase()}: ${r}
|
|
4
|
-
\`\`\`
|
|
5
|
-
${t.preview}
|
|
6
|
-
\`\`\``);}return e.join(`
|
|
7
|
-
|
|
8
|
-
`)}a(se,"formatBaseContext");function E(n){return n.map(e=>{let t=e.findings.map(r=>` - [${r.id}] (${r.kind}${r.severity?`, ${r.severity}`:""}) ${r.title}
|
|
9
|
-
${r.summary}
|
|
10
|
-
Evidence: ${r.evidence.map(i=>`${i.type}:${i.ref}`).join(", ")}
|
|
11
|
-
Confidence: ${r.confidence}`+(r.suggestedChange?`
|
|
12
|
-
Suggested: ${r.suggestedChange}`:"")).join(`
|
|
13
|
-
`);return `### ${e.participant}
|
|
14
|
-
${e.contextSummary}
|
|
15
|
-
|
|
16
|
-
Findings:
|
|
17
|
-
${t}`}).join(`
|
|
18
|
-
|
|
19
|
-
`)}a(E,"formatReports");function V(n){return n.length===0?"No peer reviews.":n.map(e=>`[${e.reviewer}] on ${e.findingId}: ${e.verdict}${e.reason?` \u2014 ${e.reason}`:""}`).join(`
|
|
20
|
-
`)}a(V,"formatFindingReviews");function oe(n,e){if(!e||e.trim().length===0)return d.warn("arena.parse_report_empty",{participant:n}),{participant:n,contextSummary:"(no response)",findings:[]};let t=ft(n,e);if(t&&t.findings.length>0)return t;try{let r=H(e),i=JSON.parse(r),o=i.findings;!Array.isArray(o)&&i.contextSummary===void 0&&i.kind&&i.title&&(o=[i]);let s={participant:n,contextSummary:i.contextSummary??i.context_summary??"",findings:Array.isArray(o)?o.map(ht):[]};if(s.findings.length>0)return s}catch(r){d.warn("arena.parse_report_json_fail",{participant:n,error:r.message,textLength:e.length,text:e.slice(0,500)});}return t?(d.warn("arena.parse_report_no_findings",{participant:n,textPreview:e.slice(0,200)}),t):yt(n,e)}a(oe,"parseReport");function ft(n,e){let t=e.match(/<report\b[^>]*>([\s\S]*?)<\/report>/i);if(!t)return;let r=t[1],i=ie(re(r,"contextSummary")??""),o=re(r,"findings")??"",s=[],c=0;for(let m of o.matchAll(/<finding\b([^>]*)>([\s\S]*?)<\/finding>/gi)){let d=en(m[1]),l=m[2],p=ie(re(l,"title")??""),g=ie(re(l,"summary")??""),u=[];for(let $ of l.matchAll(/<evidence\b([^>]*)>([\s\S]*?)<\/evidence>/gi)){let b=en($[1]);u.push({type:b.type??"doc",ref:b.ref??"",note:ie($[2].trim())});}let h=re(l,"affectedFiles")??"",y=[];for(let $ of h.matchAll(/<file>([\s\S]*?)<\/file>/gi))y.push(ie($[1].trim()));let w=ie(re(l,"suggestedChange")??"").trim(),A=Number(d.confidence);s.push({id:d.id||`f${c+1}`,kind:sn(d.kind),title:p||"Untitled",summary:g,severity:d.severity||void 0,confidence:Number.isFinite(A)?A:.5,evidence:u,affectedFiles:y,suggestedChange:w||void 0}),c++;}return {participant:n,contextSummary:i,findings:s}}a(ft,"tryParseReportXml");function re(n,e){let t=new RegExp(`<${e}\\b[^>]*>([\\s\\S]*?)<\\/${e}>`,"i");return n.match(t)?.[1]}a(re,"extractTag");function en(n){let e={};for(let t of n.matchAll(/(\w+)\s*=\s*"([^"]*)"/g))e[t[1]]=t[2];return e}a(en,"parseAttrs");function ie(n){return n.replace(/<!\[CDATA\[([\s\S]*?)\]\]>/g,"$1").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'").replace(/&/g,"&").trim()}a(ie,"decodeXmlText");function ht(n,e){return {id:M(n.id)||`f${e+1}`,kind:sn(n.kind),title:M(n.title)||"Untitled",summary:M(n.summary),severity:n.severity||void 0,confidence:typeof n.confidence=="number"?n.confidence:.5,evidence:Array.isArray(n.evidence)?n.evidence.map(t=>({type:t.type??"doc",ref:t.ref??"",note:t.note??""})):[],affectedFiles:Array.isArray(n.affectedFiles)?n.affectedFiles:[],suggestedChange:n.suggestedChange||void 0}}a(ht,"parseFinding");function sn(n){return n==="strength"||n==="improvement"||n==="risk"||n==="question"?n:"improvement"}a(sn,"validateFindingKind");function yt(n,e){let t=e.split(/(?:^|\n)(?:#{1,3}\s+|\d+\.\s+|\*\*[^*]+\*\*\s*\n|---+\s*\n)/m).map(i=>i.trim()).filter(i=>i.length>20);if(t.length===0)return {participant:n,contextSummary:e.slice(0,200),findings:[{id:`${n}-f1`,kind:"improvement",title:"Analysis",summary:e.slice(0,3e3),confidence:.5,evidence:[],affectedFiles:[]}]};let r=t.slice(0,10).map((i,o)=>{let s=i.split(`
|
|
21
|
-
`)[0].slice(0,100),c=i.length>s.length?i.slice(s.length).trim():i;return {id:`${n}-f${o+1}`,kind:vt(i),title:s.replace(/^[-*•]\s*/,"").replace(/\*\*/g,""),summary:c.slice(0,1e3),confidence:.5,evidence:[],affectedFiles:Rt(i)}});return {participant:n,contextSummary:e.slice(0,200),findings:r}}a(yt,"extractFindingsFromFreeText");function vt(n){let e=n.toLowerCase();return /\b(risk|danger|vulnerab|security|breaking|regression|critical)\b/.test(e)?"risk":/\b(good|well|strength|clean|solid|nice|excellent|properly)\b/.test(e)?"strength":/\b(question|unclear|confirm|clarif|why|how come|wonder)\b/.test(e)?"question":"improvement"}a(vt,"classifyFindingKind");function Rt(n){let e=n.match(/(?:^|\s)((?:src|lib|packages|app)\/[\w\-/.]+\.\w+)/gm);return e?[...new Set(e.map(t=>t.trim()))]:[]}a(Rt,"extractFilePaths");function ae(n,e){try{let t=rn(e),r=JSON.parse(t);if(!Array.isArray(r)){let i=H(e),o=JSON.parse(i);return Array.isArray(o.reviews)?o.reviews.map(s=>nn(n,s)):[]}return r.map(i=>nn(n,i))}catch{return []}}a(ae,"parseReviews");function nn(n,e){return {reviewer:n,findingId:e.findingId??e.finding_id??"",verdict:on(e.verdict),reason:e.reason??"",extraEvidence:Array.isArray(e.extraEvidence)?e.extraEvidence:void 0}}a(nn,"parseReview");function on(n){return n==="agree"||n==="refine"||n==="disagree"||n==="needs_evidence"?n:"agree"}a(on,"validateVerdict");function ce(n){try{let e=H(n),t=JSON.parse(e);if(typeof t!="object"||t===null)throw new Error("parsed JSON is not an object");return {summary:M(t.summary),subjectSummary:M(t.subjectSummary||t.changeSummary)||void 0,strengths:Re(t.strengths),improvements:Re(t.improvements),risks:Re(t.risks),openQuestions:Re(t.openQuestions),roadmap:wt(t.roadmap),nextActions:Array.isArray(t.nextActions)?t.nextActions.map(r=>({title:r.title??"",priority:an(r.priority),rationale:r.rationale??"",relatedFindings:Array.isArray(r.relatedFindings)?r.relatedFindings:[]})):[]}}catch{return {summary:n,strengths:[],improvements:[],risks:[],openQuestions:[],roadmap:[],nextActions:[]}}}a(ce,"parseConsensus");function Re(n){return Array.isArray(n)?n.map(e=>({title:M(e.title),summary:e.summary??"",support:Array.isArray(e.support)?e.support:[],challenge:Array.isArray(e.challenge)?e.challenge:[],confidence:typeof e.confidence=="number"?e.confidence:.5,evidenceRefs:Array.isArray(e.evidenceRefs)?e.evidenceRefs:[]})):[]}a(Re,"parseConsensusItems");function wt(n){return Array.isArray(n)?n.map(e=>({title:e.title??"",priority:an(e.priority),goal:e.goal??e.description??"",scope:N(e.scope),deliverables:N(e.deliverables),dependencies:N(e.dependencies),risks:N(e.risks),successCriteria:N(e.successCriteria),relatedFindings:N(e.relatedFindings)})):[]}a(wt,"parseRoadmapPhases");function an(n){return n==="high"||n==="medium"||n==="low"?n:"medium"}a(an,"validatePriority");function N(n){return Array.isArray(n)?n.filter(e=>typeof e=="string"):[]}a(N,"toStringArray");function X(n){return n.length===0?"No claims to review.":n.map(e=>{let t=e.finding,r=e.evidenceRefs.length>0?`
|
|
22
|
-
Evidence: ${e.evidenceRefs.join(", ")}`:"",i=e.evidencePacketIds.length>0?`
|
|
23
|
-
Evidence packets: ${e.evidencePacketIds.join(", ")}`:"";return `- [${e.claimId}] (${t.kind}${t.severity?`, ${t.severity}`:""}, status: ${e.status})
|
|
24
|
-
${K(t.title)}
|
|
25
|
-
${K(t.summary)}`+r+i+`
|
|
26
|
-
Confidence: ${t.confidence}`}).join(`
|
|
27
|
-
|
|
28
|
-
`)}a(X,"formatClaimsForReview");function B(n){return n.length===0?"No prior debate turns.":n.map(e=>`[${e.participant}] stance: ${e.stance}
|
|
29
|
-
${e.summary}`+(e.newEvidenceRefs?.length?`
|
|
30
|
-
New evidence: ${e.newEvidenceRefs.join(", ")}`:"")).join(`
|
|
31
|
-
`)}a(B,"formatDebateHistory");function de(n){let e=[];return n.verified.length>0&&e.push(`### Verified Claims (${n.verified.length})
|
|
32
|
-
`+n.verified.map(t=>`- [${t.claimId}] ${K(t.finding.title)} (${t.finding.kind}, confidence: ${t.finding.confidence})`).join(`
|
|
33
|
-
`)),n.unresolved.length>0&&e.push(`### Unresolved Claims (${n.unresolved.length})
|
|
34
|
-
`+n.unresolved.map(t=>`- [${t.claimId}] ${K(t.finding.title)} \u2014 ${t.challenges.length} challenge(s), no consensus reached`).join(`
|
|
35
|
-
`)),n.contested.length>0&&e.push(`### Still Contested (${n.contested.length})
|
|
36
|
-
`+n.contested.map(t=>`- [${t.claimId}] ${K(t.finding.title)} \u2014 ${t.challenges.length} challenge(s)`).join(`
|
|
37
|
-
`)),n.rejected.length>0&&e.push(`### Rejected Claims (${n.rejected.length})
|
|
38
|
-
`+n.rejected.map(t=>`- [${t.claimId}] ${K(t.finding.title)} \u2014 rejected: ${K(t.adjudication?.rationale??"no rationale")}`).join(`
|
|
39
|
-
`)),e.length>0?e.join(`
|
|
40
|
-
|
|
41
|
-
`):"No claims processed."}a(de,"formatClaimSummaryForConsensus");function I(n){let e=[];if(e.push(`Claims under review: ${n.relevantClaimIds.join(", ")}`),n.evidencePackets.length>0){e.push(`
|
|
42
|
-
Evidence:`);for(let t of n.evidencePackets){e.push(` [${t.packetId}] ${K(t.title)} (${t.source}): ${K(t.summary)}`);for(let r of t.excerpts.slice(0,2))e.push(` > ${r.ref}: ${K(r.snippet)}`);}}if(n.recentChallenges.length>0){e.push(`
|
|
43
|
-
Prior challenges:`);for(let t of n.recentChallenges)e.push(` [${t.reviewer}] on ${t.claimId}: ${t.verdict} \u2014 ${K(t.reason)}`);}return e.join(`
|
|
44
|
-
`)}a(I,"formatDigestForPrompt");function Q(n,e){try{let t=rn(e),r=JSON.parse(t);if(!Array.isArray(r)){let i=H(e),o=JSON.parse(i);return Array.isArray(o.challenges)?o.challenges.map(s=>tn(n,s)):[]}return r.map(i=>tn(n,i))}catch{return []}}a(Q,"parseChallenges");function tn(n,e){return {reviewer:n,claimId:M(e.claimId??e.claim_id),verdict:on(e.verdict),reason:M(e.reason),supportingEvidenceRefs:Array.isArray(e.supportingEvidenceRefs)?e.supportingEvidenceRefs:void 0,requestedChecks:Array.isArray(e.requestedChecks)?e.requestedChecks.map(t=>({requestId:t.requestId??`req-${Date.now()}-${Math.random().toString(36).slice(2,6)}`,claimId:e.claimId??e.claim_id??"",requester:n,description:t.description??"",refs:Array.isArray(t.refs)?t.refs:void 0,priority:At(t.priority)})):void 0}}a(tn,"parseChallenge");function At(n){if(n==="high"||n==="medium"||n==="low")return n}a(At,"validateCheckPriority");function J(n,e){try{let t=H(e),r=JSON.parse(t);return {participant:n,stance:bt(r.stance),summary:r.summary??r.argument??"",newEvidenceRefs:Array.isArray(r.newEvidenceRefs)?r.newEvidenceRefs:void 0}}catch{return {participant:n,stance:"uncertain",summary:e.slice(0,1e3)}}}a(J,"parseDebateTurn");function bt(n){return n==="support"||n==="oppose"||n==="narrow"||n==="uncertain"?n:"uncertain"}a(bt,"validateStance");function W(n,e){try{let t=H(e),r=JSON.parse(t);return {claimId:n,outcome:Ct(r.outcome),rationale:M(r.rationale),finalSummary:M(r.finalSummary??r.summary),supportingEvidenceRefs:Array.isArray(r.supportingEvidenceRefs)?r.supportingEvidenceRefs:[]}}catch{return {claimId:n,outcome:"unresolved",rationale:"Failed to parse adjudication response",finalSummary:e.slice(0,500),supportingEvidenceRefs:[]}}}a(W,"parseAdjudication");function Ct(n){return n==="accepted"||n==="accepted_with_revision"||n==="rejected"||n==="unresolved"?n:"unresolved"}a(Ct,"validateAdjudicationOutcome");function cn(n){try{let e=H(n),t=JSON.parse(e);if(typeof t!="object"||t===null)throw new Error("parsed JSON is not an object");return {phaseTitle:M(t.phaseTitle),objective:M(t.objective),targetFiles:N(t.targetFiles),codeChanges:N(t.codeChanges),interfaces:N(t.interfaces),migrationSteps:N(t.migrationSteps),validation:N(t.validation),effort:Pt(t.effort),blockers:N(t.blockers),evidenceRefs:N(t.evidenceRefs)}}catch{return {phaseTitle:"",objective:n.slice(0,500),targetFiles:[],codeChanges:[],interfaces:[],migrationSteps:[],validation:[],effort:"medium",blockers:[],evidenceRefs:[]}}}a(cn,"parseDetailExpansion");function Pt(n){return n==="small"||n==="medium"||n==="large"?n:"medium"}a(Pt,"validateEffort");var me=class{static{a(this,"ReviewStrategy");}researchSystemPrompt(e){return `You are ${e}, a reviewer in a multi-model review arena.
|
|
45
|
-
|
|
46
|
-
You may have access to read-only tools to fetch additional context. The base context is intentionally lean \u2014 use tools to inspect details as needed.
|
|
47
|
-
|
|
48
|
-
IMPORTANT RULES:
|
|
49
|
-
- Limit yourself to AT MOST 3 tool rounds. Do NOT exhaustively read every file.
|
|
50
|
-
- Focus on the HIGHEST-IMPACT findings. Quality over quantity.
|
|
51
|
-
- Output as many findings as the topic warrants \u2014 typically 5-15 for a non-trivial subject. Each <summary> should be 80+ words with concrete evidence and rationale, not a one-liner. Rank by confidence.
|
|
52
|
-
- Prioritize: risks > improvements > questions. Strengths are optional.
|
|
53
|
-
|
|
54
|
-
When ready, respond ONLY with the following XML structure (no markdown fences, no commentary outside the root element):
|
|
55
|
-
|
|
56
|
-
<report>
|
|
57
|
-
<contextSummary>brief summary of what you investigated</contextSummary>
|
|
58
|
-
<findings>
|
|
59
|
-
<finding id="unique-id" kind="risk|improvement|question|strength" severity="high|medium|low" confidence="0.0-1.0">
|
|
60
|
-
<title>short title</title>
|
|
61
|
-
<summary>detailed explanation, 80+ words, citing specific files/lines</summary>
|
|
62
|
-
<evidence type="file|diff|grep|git|doc" ref="path">what it shows</evidence>
|
|
63
|
-
<evidence type="file" ref="another/path">\u2026</evidence>
|
|
64
|
-
<affectedFiles>
|
|
65
|
-
<file>src/foo.ts</file>
|
|
66
|
-
<file>src/bar.ts</file>
|
|
67
|
-
</affectedFiles>
|
|
68
|
-
<suggestedChange>optional concrete fix</suggestedChange>
|
|
69
|
-
</finding>
|
|
70
|
-
<!-- repeat <finding> blocks as needed -->
|
|
71
|
-
</findings>
|
|
72
|
-
</report>
|
|
73
|
-
|
|
74
|
-
XML is preferred over JSON because thinking-mode models produce more reliable output here. Do not wrap the XML in code fences. Do not include text outside <report>\u2026</report>.`}researchUserPrompt(e,t){return `## Review Topic
|
|
75
|
-
${e}
|
|
76
|
-
|
|
77
|
-
${se(t)}
|
|
78
|
-
|
|
79
|
-
Use tools to read specific files from the diff. Then output 3-6 highest-confidence findings as a single <report> XML element.`}parseResearchResponse(e,t){return oe(e,t)}crossReviewSystemPrompt(e){return `You are ${e}, reviewing other participants' review findings.
|
|
80
|
-
|
|
81
|
-
For each finding, provide a verdict:
|
|
82
|
-
- "agree": you confirm this finding
|
|
83
|
-
- "refine": mostly agree but with refinements
|
|
84
|
-
- "disagree": you believe this finding is incorrect
|
|
85
|
-
- "needs_evidence": the finding lacks sufficient evidence
|
|
86
|
-
|
|
87
|
-
Focus on HIGH VALUE findings: high severity, high risk, or conflicting conclusions.
|
|
88
|
-
You don't need to review every single finding \u2014 prioritize the important ones.
|
|
89
|
-
|
|
90
|
-
Respond ONLY with a JSON array (no markdown fences):
|
|
91
|
-
[{"findingId": "...", "verdict": "agree|refine|disagree|needs_evidence", "reason": "...", "extraEvidence": ["optional"]}]`}crossReviewUserPrompt(e,t,r){return `## Topic: ${e}
|
|
92
|
-
|
|
93
|
-
## Your Findings
|
|
94
|
-
${E([t])}
|
|
95
|
-
|
|
96
|
-
## Other Reviewers' Findings
|
|
97
|
-
${E(r)}
|
|
98
|
-
|
|
99
|
-
Review the other participants' findings. Focus on high-priority items.`}parseCrossReviewResponse(e,t){return ae(e,t)}consensusSystemPrompt(){return `You are a neutral moderator synthesizing a multi-model review into a structured consensus.
|
|
100
|
-
|
|
101
|
-
You MUST faithfully reflect the aggregated findings and peer reviews. Do NOT add new conclusions that have no source in the findings.
|
|
102
|
-
|
|
103
|
-
IMPORTANT: Start with a "subjectSummary" \u2014 a factual overview of WHAT is being reviewed (scope, key areas, high-level description). This comes BEFORE any judgment.
|
|
104
|
-
|
|
105
|
-
Respond ONLY with JSON (no markdown fences):
|
|
106
|
-
{
|
|
107
|
-
"summary": "one-paragraph overall assessment",
|
|
108
|
-
"subjectSummary": "factual overview of what is being reviewed \u2014 scope, key areas, subject description",
|
|
109
|
-
"strengths": [{"title": "...", "summary": "...", "support": ["participant names"], "challenge": [], "confidence": 0.0-1.0, "evidenceRefs": ["finding IDs"]}],
|
|
110
|
-
"improvements": [same structure],
|
|
111
|
-
"risks": [same structure],
|
|
112
|
-
"openQuestions": [same structure],
|
|
113
|
-
"nextActions": [{"title": "...", "priority": "high|medium|low", "rationale": "...", "relatedFindings": ["finding IDs"]}]
|
|
114
|
-
}`}consensusUserPrompt(e,t,r){return `## Topic
|
|
115
|
-
${e}
|
|
116
|
-
|
|
117
|
-
## Participant Reports
|
|
118
|
-
${E(t)}
|
|
119
|
-
|
|
120
|
-
## Peer Reviews
|
|
121
|
-
${V(r)}
|
|
122
|
-
|
|
123
|
-
Synthesize a structured consensus. Group findings by category, note agreement/disagreement, and propose next actions.`}parseConsensusResponse(e){return ce(e)}preferredFindingKinds(){return ["strength","improvement","risk","question"]}verificationReviewUserPrompt(e,t,r,i){return `## Topic: ${e}
|
|
124
|
-
|
|
125
|
-
## Your Findings
|
|
126
|
-
${E([t])}
|
|
127
|
-
|
|
128
|
-
## Claims to Verify
|
|
129
|
-
${X(r)}
|
|
130
|
-
|
|
131
|
-
## Evidence Digest
|
|
132
|
-
${I(i)}
|
|
133
|
-
|
|
134
|
-
Verify each claim against the evidence. For claims lacking evidence, you may request specific checks.
|
|
135
|
-
Respond ONLY with a JSON array:
|
|
136
|
-
[{"claimId": "...", "verdict": "agree|refine|disagree|needs_evidence", "reason": "...", "supportingEvidenceRefs": ["optional"], "requestedChecks": [{"description": "what to check", "priority": "high|medium|low"}]}]`}parseVerificationReviewResponse(e,t){return Q(e,t)}debateTurnUserPrompt(e,t,r,i){return `## Topic: ${e}
|
|
137
|
-
|
|
138
|
-
## Contested Claim
|
|
139
|
-
[${t.claimId}] ${t.finding.title}
|
|
140
|
-
${t.finding.summary}
|
|
141
|
-
Evidence: ${t.evidenceRefs.join(", ")||"none"}
|
|
142
|
-
|
|
143
|
-
## Prior Debate
|
|
144
|
-
${B(r)}
|
|
145
|
-
|
|
146
|
-
## Evidence Digest
|
|
147
|
-
${I(i)}
|
|
148
|
-
|
|
149
|
-
State your position on this claim. Build on prior turns: cite specific evidence, acknowledge counter-arguments, and explain your reasoning in 150-300 words. Brevity here means missed nuance \u2014 depth wins.
|
|
150
|
-
Respond ONLY with JSON:
|
|
151
|
-
{"stance": "support|oppose|narrow|uncertain", "summary": "your argument", "newEvidenceRefs": ["optional"]}`}parseDebateTurnResponse(e,t){return J(e,t)}adjudicationUserPrompt(e,t,r,i){let o=r.length>0?r.map(s=>`Round ${s.round}:
|
|
152
|
-
${B(s.participants)}
|
|
153
|
-
${s.resolved?"\u2192 Resolved":"\u2192 Unresolved"}`).join(`
|
|
154
|
-
|
|
155
|
-
`):"No debate rounds occurred.";return `## Topic: ${e}
|
|
156
|
-
|
|
157
|
-
## Claim Under Adjudication
|
|
158
|
-
[${t.claimId}] ${t.finding.title}
|
|
159
|
-
${t.finding.summary}
|
|
160
|
-
Owner: ${t.owner} | Status: ${t.status}
|
|
161
|
-
Evidence: ${t.evidenceRefs.join(", ")||"none"}
|
|
162
|
-
|
|
163
|
-
## Challenges
|
|
164
|
-
`+t.challenges.map(s=>`[${s.reviewer}] ${s.verdict}: ${s.reason}`).join(`
|
|
165
|
-
`)+`
|
|
166
|
-
|
|
167
|
-
## Debate
|
|
168
|
-
${o}
|
|
169
|
-
|
|
170
|
-
## Evidence Digest
|
|
171
|
-
${I(i)}
|
|
172
|
-
|
|
173
|
-
As moderator, you MUST issue a verdict \u2014 "unresolved" is reserved ONLY for the rare case where the debate produced genuinely irreconcilable interpretations of the same evidence. Default to deciding.
|
|
174
|
-
|
|
175
|
-
Decision rule:
|
|
176
|
-
- "accepted": claim is correct as stated AND has direct evidence (file/line refs).
|
|
177
|
-
- "accepted_with_revision": core insight is correct but the challenge surfaced a real refinement (scope/severity/wording). Issue a corrected finalSummary.
|
|
178
|
-
- "rejected": the challenger demonstrated the claim is factually wrong or already addressed in the code under review.
|
|
179
|
-
- "unresolved": ONLY when no amount of further evidence could break the tie \u2014 e.g., taste-level disagreement on design philosophy. Using this on a verifiable code claim is a failure of adjudication.
|
|
180
|
-
|
|
181
|
-
Respond ONLY with JSON:
|
|
182
|
-
{"outcome": "accepted|accepted_with_revision|rejected|unresolved", "rationale": "...", "finalSummary": "revised claim summary if needed", "supportingEvidenceRefs": ["..."]}`}parseAdjudicationResponse(e){return W("",e)}claimAwareConsensusUserPrompt(e,t,r,i){return `## Topic
|
|
183
|
-
${e}
|
|
184
|
-
|
|
185
|
-
## Claim Verification Status
|
|
186
|
-
${de(i)}
|
|
187
|
-
|
|
188
|
-
## Participant Reports
|
|
189
|
-
${E(t)}
|
|
190
|
-
|
|
191
|
-
## Peer Reviews
|
|
192
|
-
${V(r)}
|
|
193
|
-
|
|
194
|
-
Synthesize a structured consensus. Verified claims should appear as high-confidence items. Unresolved claims should appear as open questions. Rejected claims should be excluded or noted as dismissed.`}};h();var ge=class{static{a(this,"DiscussionStrategy");}researchSystemPrompt(e){return `You are ${e}, participating in a multi-model discussion arena.
|
|
195
|
-
|
|
196
|
-
You may have access to read-only tools to gather evidence. The base context is intentionally lean \u2014 use tools as needed.
|
|
197
|
-
|
|
198
|
-
IMPORTANT RULES:
|
|
199
|
-
- Limit yourself to 3-5 tool rounds. Do NOT exhaustively read every file.
|
|
200
|
-
- Output as many findings as the topic warrants \u2014 typically 5-15 for a non-trivial subject. Each finding's "summary" should be 80+ words with concrete evidence and rationale, not a one-liner. Rank by confidence.
|
|
201
|
-
- Focus on trade-offs, risks, and open questions. Strengths are optional.
|
|
202
|
-
|
|
203
|
-
Respond ONLY with JSON (no markdown fences):
|
|
204
|
-
{"contextSummary": "what you investigated and your overall take", "findings": [{"id": "unique-id", "kind": "risk|improvement|question|strength", "title": "short title", "summary": "detailed analysis with evidence", "severity": "high|medium|low", "confidence": 0.0-1.0, "evidence": [{"type": "file|diff|grep|git|doc", "ref": "path", "note": "what it shows"}], "affectedFiles": ["paths"], "suggestedChange": "optional"}]}`}researchUserPrompt(e,t){return `## Discussion Topic
|
|
205
|
-
${e}
|
|
206
|
-
|
|
207
|
-
${se(t)}
|
|
208
|
-
|
|
209
|
-
Use tools to investigate, then output 3-6 highest-confidence findings as JSON.`}parseResearchResponse(e,t){return oe(e,t)}crossReviewSystemPrompt(e){return `You are ${e}, reviewing other participants' discussion findings.
|
|
210
|
-
|
|
211
|
-
Engage thoughtfully: challenge weak arguments, acknowledge strong ones.
|
|
212
|
-
Focus on finding the best answer, not winning.
|
|
213
|
-
|
|
214
|
-
For each finding you want to address, provide a verdict:
|
|
215
|
-
- "agree": you confirm this perspective
|
|
216
|
-
- "refine": mostly agree but with nuances
|
|
217
|
-
- "disagree": you have a different view with evidence
|
|
218
|
-
- "needs_evidence": the claim lacks supporting evidence
|
|
219
|
-
|
|
220
|
-
Respond ONLY with a JSON array:
|
|
221
|
-
[{"findingId": "...", "verdict": "...", "reason": "...", "extraEvidence": ["optional"]}]`}crossReviewUserPrompt(e,t,r){return `## Topic: ${e}
|
|
222
|
-
|
|
223
|
-
## Your Analysis
|
|
224
|
-
${E([t])}
|
|
225
|
-
|
|
226
|
-
## Other Participants' Analysis
|
|
227
|
-
${E(r)}
|
|
228
|
-
|
|
229
|
-
Review the others' findings. Where do you agree or disagree? What nuances are missing?`}parseCrossReviewResponse(e,t){return ae(e,t)}consensusSystemPrompt(){return `You are a neutral moderator synthesizing a multi-model discussion into a balanced conclusion.
|
|
230
|
-
|
|
231
|
-
Capture key insights, agreements, and remaining disagreements. Do NOT suppress minority viewpoints \u2014 preserve them as open questions.
|
|
232
|
-
|
|
233
|
-
IMPORTANT: Start with a "subjectSummary" \u2014 a factual framing of the topic, current scope, or assumptions under discussion before moving into conclusions.
|
|
234
|
-
|
|
235
|
-
Respond ONLY with JSON (no markdown fences):
|
|
236
|
-
{
|
|
237
|
-
"summary": "balanced synthesis",
|
|
238
|
-
"subjectSummary": "factual problem framing or current scope of the discussion",
|
|
239
|
-
"strengths": [{"title": "...", "summary": "...", "support": [], "challenge": [], "confidence": 0.0-1.0, "evidenceRefs": []}],
|
|
240
|
-
"improvements": [same structure],
|
|
241
|
-
"risks": [same structure],
|
|
242
|
-
"openQuestions": [same structure \u2014 include still-debated points],
|
|
243
|
-
"nextActions": [{"title": "...", "priority": "high|medium|low", "rationale": "...", "relatedFindings": []}]
|
|
244
|
-
}`}consensusUserPrompt(e,t,r){return `## Topic
|
|
245
|
-
${e}
|
|
246
|
-
|
|
247
|
-
## Participant Analyses
|
|
248
|
-
${E(t)}
|
|
249
|
-
|
|
250
|
-
## Peer Reviews
|
|
251
|
-
${V(r)}
|
|
252
|
-
|
|
253
|
-
Synthesize a balanced conclusion. Start with a factual subjectSummary, then preserve disagreements as open questions.`}parseConsensusResponse(e){return ce(e)}preferredFindingKinds(){return ["strength","risk","question"]}verificationReviewUserPrompt(e,t,r,i){return `## Topic: ${e}
|
|
254
|
-
|
|
255
|
-
## Your Analysis
|
|
256
|
-
${E([t])}
|
|
257
|
-
|
|
258
|
-
## Claims to Verify
|
|
259
|
-
${X(r)}
|
|
260
|
-
|
|
261
|
-
## Evidence Digest
|
|
262
|
-
${I(i)}
|
|
263
|
-
|
|
264
|
-
Engage critically with each claim. Challenge weak arguments, acknowledge strong ones. Focus on finding the best answer, not winning.
|
|
265
|
-
Respond ONLY with a JSON array:
|
|
266
|
-
[{"claimId": "...", "verdict": "agree|refine|disagree|needs_evidence", "reason": "...", "supportingEvidenceRefs": ["optional"], "requestedChecks": [{"description": "what to check", "priority": "high|medium|low"}]}]`}parseVerificationReviewResponse(e,t){return Q(e,t)}debateTurnUserPrompt(e,t,r,i){return `## Topic: ${e}
|
|
267
|
-
|
|
268
|
-
## Contested Claim
|
|
269
|
-
[${t.claimId}] ${t.finding.title}
|
|
270
|
-
${t.finding.summary}
|
|
271
|
-
|
|
272
|
-
## Prior Debate
|
|
273
|
-
${B(r)}
|
|
274
|
-
|
|
275
|
-
## Evidence Digest
|
|
276
|
-
${I(i)}
|
|
277
|
-
|
|
278
|
-
Engage thoughtfully. If the evidence supports the claim, narrow toward agreement. If not, explain why with evidence.
|
|
279
|
-
Respond ONLY with JSON:
|
|
280
|
-
{"stance": "support|oppose|narrow|uncertain", "summary": "your argument", "newEvidenceRefs": ["optional"]}`}parseDebateTurnResponse(e,t){return J(e,t)}adjudicationUserPrompt(e,t,r,i){let o=r.length>0?r.map(s=>`Round ${s.round}:
|
|
281
|
-
${B(s.participants)}
|
|
282
|
-
${s.resolved?"\u2192 Resolved":"\u2192 Unresolved"}`).join(`
|
|
283
|
-
|
|
284
|
-
`):"No debate rounds occurred.";return `## Topic: ${e}
|
|
285
|
-
|
|
286
|
-
## Contested Claim
|
|
287
|
-
[${t.claimId}] ${t.finding.title}
|
|
288
|
-
${t.finding.summary}
|
|
289
|
-
Owner: ${t.owner}
|
|
290
|
-
|
|
291
|
-
## Challenges
|
|
292
|
-
`+t.challenges.map(s=>`[${s.reviewer}] ${s.verdict}: ${s.reason}`).join(`
|
|
293
|
-
`)+`
|
|
294
|
-
|
|
295
|
-
## Debate
|
|
296
|
-
${o}
|
|
297
|
-
|
|
298
|
-
## Evidence Digest
|
|
299
|
-
${I(i)}
|
|
300
|
-
|
|
301
|
-
As moderator, synthesize the debate. Preserve minority viewpoints where the evidence is genuinely ambiguous.
|
|
302
|
-
Respond ONLY with JSON:
|
|
303
|
-
{"outcome": "accepted|accepted_with_revision|rejected|unresolved", "rationale": "...", "finalSummary": "revised claim summary", "supportingEvidenceRefs": ["..."]}`}parseAdjudicationResponse(e){return W("",e)}claimAwareConsensusUserPrompt(e,t,r,i){return `## Topic
|
|
304
|
-
${e}
|
|
305
|
-
|
|
306
|
-
## Claim Verification Status
|
|
307
|
-
${de(i)}
|
|
308
|
-
|
|
309
|
-
## Participant Analyses
|
|
310
|
-
${E(t)}
|
|
311
|
-
|
|
312
|
-
## Peer Reviews
|
|
313
|
-
${V(r)}
|
|
314
|
-
|
|
315
|
-
Synthesize a balanced conclusion. Verified claims are high-confidence. Unresolved claims should be preserved as open questions \u2014 do NOT suppress minority viewpoints.`}};h();var fe=class{static{a(this,"PlanningStrategy");}researchSystemPrompt(e){return `You are ${e}, a planner in a multi-model planning session.
|
|
316
|
-
|
|
317
|
-
You may have access to read-only tools to investigate the subject. The base context is intentionally lean \u2014 use tools as needed.
|
|
318
|
-
|
|
319
|
-
IMPORTANT RULES:
|
|
320
|
-
- Limit yourself to 3-5 tool rounds. Do NOT exhaustively read every file.
|
|
321
|
-
- Output as many findings as the topic warrants \u2014 typically 5-15 for a non-trivial subject. Each finding's "summary" should be 80+ words with concrete evidence and rationale, not a one-liner. Rank by confidence.
|
|
322
|
-
- Focus on: implementation phases (improvement), risks/blockers, decisions needed (question).
|
|
323
|
-
- Strengths are optional.
|
|
324
|
-
|
|
325
|
-
Respond ONLY with JSON (no markdown fences):
|
|
326
|
-
{"contextSummary": "what you investigated and your overall approach", "findings": [{"id": "unique-id", "kind": "improvement|risk|question|strength", "title": "short title", "summary": "detailed analysis", "severity": "high|medium|low", "confidence": 0.0-1.0, "evidence": [{"type": "file|diff|grep|git|doc", "ref": "path", "note": "what it shows"}], "affectedFiles": ["paths"], "suggestedChange": "optional"}]}`}researchUserPrompt(e,t){return `## Planning Topic
|
|
327
|
-
${e}
|
|
328
|
-
|
|
329
|
-
${se(t)}
|
|
330
|
-
|
|
331
|
-
Use tools to investigate, then output 3-6 highest-confidence findings as JSON.`}parseResearchResponse(e,t){return oe(e,t)}crossReviewSystemPrompt(e){return `You are ${e}, reviewing other architects' planning proposals.
|
|
332
|
-
|
|
333
|
-
Evaluate critically: identify gaps, suggest improvements, propose better alternatives.
|
|
334
|
-
|
|
335
|
-
For each finding you want to address:
|
|
336
|
-
- "agree": the proposed phase/risk is valid
|
|
337
|
-
- "refine": adjust scope, priority, or dependencies
|
|
338
|
-
- "disagree": propose a different approach
|
|
339
|
-
- "needs_evidence": more investigation needed
|
|
340
|
-
|
|
341
|
-
Respond ONLY with a JSON array:
|
|
342
|
-
[{"findingId": "...", "verdict": "...", "reason": "...", "extraEvidence": ["optional"]}]`}crossReviewUserPrompt(e,t,r){return `## Topic: ${e}
|
|
343
|
-
|
|
344
|
-
## Your Proposed Plan
|
|
345
|
-
${E([t])}
|
|
346
|
-
|
|
347
|
-
## Other Architects' Plans
|
|
348
|
-
${E(r)}
|
|
349
|
-
|
|
350
|
-
Review the other proposals. What are the strengths and gaps? Can elements be combined?`}parseCrossReviewResponse(e,t){return ae(e,t)}consensusSystemPrompt(){return `You are a neutral moderator synthesizing a multi-model planning session into a concrete roadmap.
|
|
351
|
-
|
|
352
|
-
Combine the best ideas into a unified plan with clear sequencing, priorities, and delivery phases.
|
|
353
|
-
IMPORTANT: the roadmap field is the primary output. Use it to describe 3 to 6 implementation phases. The nextActions field is only for the immediate 3 to 5 actions that should happen next.
|
|
354
|
-
|
|
355
|
-
Respond ONLY with JSON (no markdown fences):
|
|
356
|
-
{
|
|
357
|
-
"summary": "unified plan overview",
|
|
358
|
-
"subjectSummary": "factual overview of the current repo/problem scope before proposing changes",
|
|
359
|
-
"strengths": [{"title": "...", "summary": "...", "support": [], "challenge": [], "confidence": 0.0-1.0, "evidenceRefs": []}],
|
|
360
|
-
"improvements": [implementation phases as consensus items],
|
|
361
|
-
"risks": [identified risks],
|
|
362
|
-
"openQuestions": [decisions needed],
|
|
363
|
-
"roadmap": [{"title": "...", "priority": "high|medium|low", "goal": "...", "scope": ["..."], "deliverables": ["..."], "dependencies": ["..."], "risks": ["..."], "successCriteria": ["..."], "relatedFindings": []}],
|
|
364
|
-
"nextActions": [{"title": "...", "priority": "high|medium|low", "rationale": "...", "relatedFindings": []}]
|
|
365
|
-
}`}consensusUserPrompt(e,t,r){return `## Topic
|
|
366
|
-
${e}
|
|
367
|
-
|
|
368
|
-
## Proposed Plans
|
|
369
|
-
${E(t)}
|
|
370
|
-
|
|
371
|
-
## Peer Reviews
|
|
372
|
-
${V(r)}
|
|
373
|
-
|
|
374
|
-
Synthesize a final implementation roadmap.
|
|
375
|
-
Requirements:
|
|
376
|
-
- Start with a factual subjectSummary of the current scope.
|
|
377
|
-
- Produce 3 to 6 roadmap phases covering sequencing, dependencies, deliverables, and success criteria.
|
|
378
|
-
- Use nextActions only for the immediate follow-up work, not the entire roadmap.`}parseConsensusResponse(e){return ce(e)}preferredFindingKinds(){return ["improvement","risk","question"]}verificationReviewUserPrompt(e,t,r,i){return `## Topic: ${e}
|
|
379
|
-
|
|
380
|
-
## Your Proposed Plan
|
|
381
|
-
${E([t])}
|
|
382
|
-
|
|
383
|
-
## Claims to Verify
|
|
384
|
-
${X(r)}
|
|
385
|
-
|
|
386
|
-
## Evidence Digest
|
|
387
|
-
${I(i)}
|
|
388
|
-
|
|
389
|
-
Evaluate each claim for feasibility, sequencing, and dependencies. Challenge proposals that lack evidence.
|
|
390
|
-
Respond ONLY with a JSON array:
|
|
391
|
-
[{"claimId": "...", "verdict": "agree|refine|disagree|needs_evidence", "reason": "...", "supportingEvidenceRefs": ["optional"], "requestedChecks": [{"description": "what to check", "priority": "high|medium|low"}]}]`}parseVerificationReviewResponse(e,t){return Q(e,t)}debateTurnUserPrompt(e,t,r,i){return `## Topic: ${e}
|
|
392
|
-
|
|
393
|
-
## Contested Planning Proposal
|
|
394
|
-
[${t.claimId}] ${t.finding.title}
|
|
395
|
-
${t.finding.summary}
|
|
396
|
-
|
|
397
|
-
## Prior Debate
|
|
398
|
-
${B(r)}
|
|
399
|
-
|
|
400
|
-
## Evidence Digest
|
|
401
|
-
${I(i)}
|
|
402
|
-
|
|
403
|
-
Argue for or against this proposal. Focus on feasibility, risks, and better alternatives.
|
|
404
|
-
Respond ONLY with JSON:
|
|
405
|
-
{"stance": "support|oppose|narrow|uncertain", "summary": "your argument", "newEvidenceRefs": ["optional"]}`}parseDebateTurnResponse(e,t){return J(e,t)}adjudicationUserPrompt(e,t,r,i){let o=r.length>0?r.map(s=>`Round ${s.round}:
|
|
406
|
-
${B(s.participants)}
|
|
407
|
-
${s.resolved?"\u2192 Resolved":"\u2192 Unresolved"}`).join(`
|
|
408
|
-
|
|
409
|
-
`):"No debate rounds occurred.";return `## Topic: ${e}
|
|
410
|
-
|
|
411
|
-
## Contested Proposal
|
|
412
|
-
[${t.claimId}] ${t.finding.title}
|
|
413
|
-
${t.finding.summary}
|
|
414
|
-
Owner: ${t.owner}
|
|
415
|
-
|
|
416
|
-
## Challenges
|
|
417
|
-
`+t.challenges.map(s=>`[${s.reviewer}] ${s.verdict}: ${s.reason}`).join(`
|
|
418
|
-
`)+`
|
|
419
|
-
|
|
420
|
-
## Debate
|
|
421
|
-
${o}
|
|
422
|
-
|
|
423
|
-
## Evidence Digest
|
|
424
|
-
${I(i)}
|
|
425
|
-
|
|
426
|
-
As moderator, decide whether this proposal should be included in the final plan.
|
|
427
|
-
Respond ONLY with JSON:
|
|
428
|
-
{"outcome": "accepted|accepted_with_revision|rejected|unresolved", "rationale": "...", "finalSummary": "revised proposal if needed", "supportingEvidenceRefs": ["..."]}`}parseAdjudicationResponse(e){return W("",e)}mergeReviewUserPrompt(e,t,r,i){return `## Topic: ${e}
|
|
429
|
-
|
|
430
|
-
## Your Proposed Plan
|
|
431
|
-
${E([t])}
|
|
432
|
-
|
|
433
|
-
## Candidate Claims (Proposed Phases & Findings)
|
|
434
|
-
${X(r)}
|
|
435
|
-
|
|
436
|
-
## Evidence Digest
|
|
437
|
-
${I(i)}
|
|
438
|
-
|
|
439
|
-
You are reviewing planning proposals for MERGE and CONVERGENCE, not for correctness judging.
|
|
440
|
-
|
|
441
|
-
For each claim, decide how it should be incorporated into the final roadmap:
|
|
442
|
-
- "agree": the proposed phase/finding is valid as-is
|
|
443
|
-
- "refine": merge with another phase, adjust priority/scope/dependencies, or narrow scope
|
|
444
|
-
- "disagree": only for proposals that directly contradict repo evidence
|
|
445
|
-
- "needs_evidence": mark as open question for further investigation
|
|
446
|
-
|
|
447
|
-
In your reason, use these semantic tags where applicable:
|
|
448
|
-
[merge] \u2014 combine with another phase
|
|
449
|
-
[reprioritize] \u2014 change priority ordering
|
|
450
|
-
[split_phase] \u2014 break into smaller phases
|
|
451
|
-
[combine_phase] \u2014 merge multiple phases into one
|
|
452
|
-
[dependency_risk] \u2014 flag missing dependency
|
|
453
|
-
[needs_detail] \u2014 needs more implementation specifics
|
|
454
|
-
[open_question] \u2014 convert to open question
|
|
455
|
-
|
|
456
|
-
Respond ONLY with a JSON array:
|
|
457
|
-
[{"claimId": "...", "verdict": "agree|refine|disagree|needs_evidence", "reason": "[tag] explanation", "supportingEvidenceRefs": ["optional"], "requestedChecks": [{"description": "what to check", "priority": "high|medium|low"}]}]`}parseMergeReviewResponse(e,t){return Q(e,t)}detailExpansionSystemPrompt(){return `You are a senior architect expanding a high-level roadmap phase into a concrete, repo-level implementation plan.
|
|
458
|
-
|
|
459
|
-
You may have access to read-only tools to investigate the codebase. Use them to verify file paths, interfaces, and module boundaries.
|
|
460
|
-
|
|
461
|
-
IMPORTANT RULES:
|
|
462
|
-
- Be specific: name actual files, modules, interfaces, and functions.
|
|
463
|
-
- If you're uncertain about a target, write "likely: <path>" and note the uncertainty.
|
|
464
|
-
- Do not produce vague platitudes like "refactor the module" \u2014 say what changes.
|
|
465
|
-
- Limit tool usage to 2-3 rounds for verification.
|
|
466
|
-
|
|
467
|
-
Respond ONLY with JSON (no markdown fences):
|
|
468
|
-
{"phaseTitle": "...", "objective": "...", "targetFiles": ["..."], "codeChanges": ["specific change descriptions"], "interfaces": ["new or modified interfaces"], "migrationSteps": ["ordered steps"], "validation": ["how to verify"], "effort": "small|medium|large", "blockers": ["blocking issues"], "evidenceRefs": ["refs to supporting evidence"]}`}detailExpansionUserPrompt(e,t,r){let i=[`Title: ${t.title}`,`Priority: ${t.priority}`,`Goal: ${t.goal}`,t.scope.length>0?`Scope: ${t.scope.join("; ")}`:"",t.deliverables.length>0?`Deliverables: ${t.deliverables.join("; ")}`:"",t.dependencies.length>0?`Dependencies: ${t.dependencies.join("; ")}`:"",t.risks.length>0?`Risks: ${t.risks.join("; ")}`:"",t.successCriteria.length>0?`Success Criteria: ${t.successCriteria.join("; ")}`:"",t.relatedFindings.length>0?`Related Findings: ${t.relatedFindings.join(", ")}`:""].filter(Boolean).join(`
|
|
469
|
-
`);return `## Overall Topic
|
|
470
|
-
${e}
|
|
471
|
-
|
|
472
|
-
## Roadmap Phase to Expand
|
|
473
|
-
${i}
|
|
474
|
-
|
|
475
|
-
## Evidence Digest
|
|
476
|
-
${I(r)}
|
|
477
|
-
|
|
478
|
-
Expand this phase into a repo-level implementation plan.
|
|
479
|
-
Use tools to verify file paths and interfaces if available.
|
|
480
|
-
Answer these questions:
|
|
481
|
-
1. Which files/modules need to change?
|
|
482
|
-
2. What are the specific code changes?
|
|
483
|
-
3. What interfaces need to be added or modified?
|
|
484
|
-
4. What are the migration steps (in order)?
|
|
485
|
-
5. How do we validate the changes?
|
|
486
|
-
6. What is the effort estimate?
|
|
487
|
-
7. What are the blockers?`}parseDetailExpansionResponse(e){return cn(e)}claimAwareConsensusUserPrompt(e,t,r,i){return `## Topic
|
|
488
|
-
${e}
|
|
489
|
-
|
|
490
|
-
## Claim Verification Status
|
|
491
|
-
${de(i)}
|
|
492
|
-
|
|
493
|
-
## Proposed Plans
|
|
494
|
-
${E(t)}
|
|
495
|
-
|
|
496
|
-
## Peer Reviews
|
|
497
|
-
${V(r)}
|
|
498
|
-
|
|
499
|
-
Synthesize a final implementation roadmap.
|
|
500
|
-
Requirements:
|
|
501
|
-
- Verified claims should form the backbone of the roadmap.
|
|
502
|
-
- Unresolved claims should appear as open questions or conditional phases.
|
|
503
|
-
- Produce 3 to 6 roadmap phases with sequencing, dependencies, deliverables, and success criteria.
|
|
504
|
-
- Use nextActions only for immediate follow-up work.`}};h();h();var ke={name:"engineering",label:"Engineering",participantRole:"a software engineer focused on code quality, correctness, and maintainability",reviewerRole:"an engineering peer reviewer evaluating technical rigor and code health",moderatorRole:"a tech lead synthesizing engineering perspectives into actionable conclusions",summaryLabel:"Engineering Assessment",criteria:["Code correctness and edge case handling","Error handling and resilience","Performance and scalability implications","API design and interface clarity","Test coverage and testability","Maintainability and readability","Security considerations","Backward compatibility"],preferredFindingKinds:["risk","improvement","strength","question"]};h();var xe={name:"product",label:"Product",participantRole:"a product analyst focused on user value, completeness, and edge cases",reviewerRole:"a product reviewer evaluating requirements coverage and user impact",moderatorRole:"a product lead synthesizing product perspectives into prioritized insights",summaryLabel:"Product Assessment",criteria:["Requirements completeness and coverage","User experience and usability","Edge cases and boundary conditions","Acceptance criteria clarity","Feature scope \u2014 too broad or too narrow","User journey coherence","Metric and success criteria definition","Stakeholder alignment"],preferredFindingKinds:["question","improvement","risk","strength"]};h();var $e={name:"architecture",label:"Architecture",participantRole:"a system architect focused on boundaries, modularity, and evolution paths",reviewerRole:"an architecture reviewer evaluating structural decisions and trade-offs",moderatorRole:"a chief architect synthesizing architectural perspectives into design guidance",summaryLabel:"Architecture Assessment",criteria:["Module boundaries and responsibility separation","Coupling and cohesion","Extensibility and evolution path","Dependency management","Data flow and state management","API surface area and abstraction levels","Migration and backward compatibility strategy","Operational concerns (monitoring, debugging, deployment)"],preferredFindingKinds:["improvement","risk","question","strength"]};h();var _e={name:"general",label:"General",participantRole:"an analyst providing a broad, balanced perspective",reviewerRole:"a peer reviewer evaluating clarity, logic, and completeness",moderatorRole:"a neutral moderator synthesizing diverse perspectives into balanced conclusions",summaryLabel:"General Assessment",criteria:["Logical coherence and consistency","Completeness of analysis","Trade-off identification","Assumption clarity","Evidence quality","Actionability of recommendations"],preferredFindingKinds:["strength","risk","question","improvement"]};var dn={engineering:ke,product:xe,architecture:$e,general:_e};function $i(n){return dn[n]}a($i,"getLens");function ln(n){return n.map(e=>dn[e.name])}a(ln,"resolveLenses");function we(n,e){if(n.length===0)return "";let t=e==="participant"?"participantRole":e==="reviewer"?"reviewerRole":"moderatorRole",r=n.map(c=>c[t]),i=n.flatMap(c=>c.criteria),o=[...new Set(i)];return [n.length===1?`You are ${r[0]}.`:`You combine multiple perspectives: ${r.join("; ")}.`,"","Evaluation criteria (prioritized):",...o.map(c=>`- ${c}`)].join(`
|
|
505
|
-
`)}a(we,"buildLensPrompt");var pn=["engineering","product","architecture","general"];h();h();function Te(n,e){let t=ln(e.lenses);if(t.length===0)return n;let r=we(t,"participant"),i=we(t,"reviewer"),o=we(t,"moderator"),s=je(e,"participant"),c=je(e,"reviewer"),m=je(e,"moderator");return {researchSystemPrompt(d){return [n.researchSystemPrompt(d),"","\u2500\u2500 Analysis Perspective \u2500\u2500",r,"","\u2500\u2500 Scenario Support \u2500\u2500",s].join(`
|
|
506
|
-
`)},researchUserPrompt(d,l){return [Y(e),"",n.researchUserPrompt(d,l)].join(`
|
|
507
|
-
`)},parseResearchResponse(d,l){return n.parseResearchResponse(d,l)},crossReviewSystemPrompt(d){return [n.crossReviewSystemPrompt(d),"","\u2500\u2500 Review Perspective \u2500\u2500",i,"","\u2500\u2500 Scenario Support \u2500\u2500",c].join(`
|
|
508
|
-
`)},crossReviewUserPrompt(d,l,p){return [Y(e),"",n.crossReviewUserPrompt(d,l,p)].join(`
|
|
509
|
-
`)},parseCrossReviewResponse(d,l){return n.parseCrossReviewResponse(d,l)},consensusSystemPrompt(){return [n.consensusSystemPrompt(),"","\u2500\u2500 Moderator Perspective \u2500\u2500",o,"","\u2500\u2500 Scenario Support \u2500\u2500",m].join(`
|
|
510
|
-
`)},consensusUserPrompt(d,l,p){return [Y(e),"",n.consensusUserPrompt(d,l,p)].join(`
|
|
511
|
-
`)},parseConsensusResponse(d){return n.parseConsensusResponse(d)},preferredFindingKinds(){let d=n.preferredFindingKinds(),l=t.flatMap(h=>h.preferredFindingKinds),p=e.outputShape.emphasize,g=new Set,u=[];for(let h of [...p,...d,...l])g.has(h)||(g.add(h),u.push(h));return u},...U(n)?{verificationReviewUserPrompt(d,l,p,g){return [Y(e),"",n.verificationReviewUserPrompt(d,l,p,g)].join(`
|
|
512
|
-
`)},parseVerificationReviewResponse(d,l){return n.parseVerificationReviewResponse(d,l)},debateTurnUserPrompt(d,l,p,g){return [Y(e),"",n.debateTurnUserPrompt(d,l,p,g)].join(`
|
|
513
|
-
`)},parseDebateTurnResponse(d,l){return n.parseDebateTurnResponse(d,l)},adjudicationUserPrompt(d,l,p,g){return [Y(e),"",n.adjudicationUserPrompt(d,l,p,g)].join(`
|
|
514
|
-
`)},parseAdjudicationResponse(d){return n.parseAdjudicationResponse(d)},claimAwareConsensusUserPrompt(d,l,p,g){return [Y(e),"",n.claimAwareConsensusUserPrompt(d,l,p,g)].join(`
|
|
515
|
-
`)}}:{},...te(n)?{mergeReviewUserPrompt(d,l,p,g){return [Y(e),"",n.mergeReviewUserPrompt(d,l,p,g)].join(`
|
|
516
|
-
`)},parseMergeReviewResponse(d,l){return n.parseMergeReviewResponse(d,l)},detailExpansionSystemPrompt(){return [n.detailExpansionSystemPrompt(),"","\u2500\u2500 Moderator Perspective \u2500\u2500",o].join(`
|
|
517
|
-
`)},detailExpansionUserPrompt(d,l,p){return [Y(e),"",n.detailExpansionUserPrompt(d,l,p)].join(`
|
|
518
|
-
`)},parseDetailExpansionResponse(d){return n.parseDetailExpansionResponse(d)}}:{}}}a(Te,"withLens");function je(n,e){let t=n.sources.map(s=>s.kind).join(", "),r=mn(n.subject.targets),i=un(n.outputShape.emphasize);return [`Subject: ${n.subject.kind} \u2014 ${n.subject.label}${r?` (${r})`:""}`,`Evidence sources: ${t||"none"}`,`Overview label: ${n.outputShape.overviewLabel}`,`Emphasize these finding types first: ${i}`,"Only draw conclusions from available evidence. When evidence is thin, narrow the claim or call it out explicitly.",...St(n,e)].map(s=>`- ${s}`).join(`
|
|
519
|
-
`)}a(je,"buildPlanPrompt");function Y(n){let e=mn(n.subject.targets),t=n.lenses.map(i=>i.name).join(", "),r=n.sources.map(i=>i.kind).join(", ");return ["## Arena Plan",`- Mode: ${n.mode}`,`- Subject: ${n.subject.kind} \u2014 ${n.subject.label}${e?` (${e})`:""}`,`- Lenses: ${t||"general"}`,`- Sources: ${r||"none"}`,`- Output focus: ${un(n.outputShape.emphasize)}`,`- Overview label: ${n.outputShape.overviewLabel}`].join(`
|
|
520
|
-
`)}a(Y,"formatPlanBrief");function St(n,e){let t=[];switch(n.subject.kind){case "changes":t.push(e==="participant"?"Treat this as a change-focused analysis: inspect behavioral impact, regressions, interfaces, and compatibility.":e==="reviewer"?"Challenge findings that are not grounded in changed behavior, affected files, or nearby code paths.":"Summarize the concrete impact of the changes before giving judgment.");break;case "files":t.push(e==="participant"?"Stay anchored to the named files/modules and their immediate call sites instead of drifting into unrelated areas.":e==="reviewer"?"Prioritize corrections to claims that overgeneralize beyond the named files/modules.":"Keep the conclusion scoped to the named files/modules and their direct implications.");break;case "docs":t.push(e==="participant"?"Treat this as a document-centric scene: look for ambiguity, missing acceptance criteria, edge cases, and implementation gaps.":e==="reviewer"?"Challenge findings that skip over unclear requirements, contradictory wording, or unsupported feasibility assumptions.":"Synthesize the document review around completeness, feasibility, and decision-ready gaps.");break;case "topic":t.push(e==="participant"?"Treat this as a topic discussion: surface assumptions, trade-offs, and decision criteria instead of pretending there is hard repo evidence.":e==="reviewer"?"Push back on overconfident claims and preserve unresolved trade-offs as open questions.":"Preserve disagreement where needed and make assumptions explicit.");break;case "mixed":t.push(e==="participant"?"This is a mixed scene: reconcile code, docs, and topic-level evidence instead of analyzing each source in isolation.":e==="reviewer"?"Check whether claims actually connect the different evidence sources, rather than citing only one side.":"Unify the conclusion across repo facts, documents, and higher-level reasoning.");break}let r=new Set(n.sources.map(i=>i.kind));return r.has("docs")&&r.has("repo")?t.push(e==="moderator"?"If documents and repo evidence diverge, call out the mismatch explicitly instead of collapsing it into a single conclusion.":"Cross-check document claims against the current repo structure when possible."):r.has("web")?t.push(e==="moderator"?"Separate external references from local repo facts in the synthesis.":"Keep external research distinct from local evidence and label it clearly."):r.has("none")&&t.push("No external evidence is expected here; reason from the prompt and make assumptions visible."),n.mode==="planning"&&t.push(e==="moderator"?"When enough evidence exists, turn the conclusion into a staged roadmap with sequencing, dependencies, and success criteria.":"Prefer findings that help phase work, sequence dependencies, or expose migration/blocker risks."),t}a(St,"buildScenarioNotes");function un(n){return n.length>0?n.join(", "):"risk, improvement"}a(un,"formatEmphasis");function mn(n){return Array.isArray(n)&&n.length>0?n.join(", "):""}a(mn,"formatTargets");var gn={review:a(()=>new me,"review"),discussion:a(()=>new ge,"discussion"),planning:a(()=>new fe,"planning")};function fn(n){return gn[n]()}a(fn,"getStrategy");function hn(n){let e=gn[n.mode]();return Te(e,n)}a(hn,"getStrategyForPlan");h();var kt=`You are the planner for a multi-model collaborative analysis tool called Arena.
|
|
521
|
-
|
|
522
|
-
Given a user's natural language request, produce an execution plan. You must determine:
|
|
523
|
-
|
|
524
|
-
1. **mode** \u2014 how to collaborate:
|
|
525
|
-
- "review": find issues, verify quality, give a structured verdict
|
|
526
|
-
- "discussion": explore trade-offs, compare viewpoints, preserve disagreements
|
|
527
|
-
- "planning": build a roadmap, identify phases, dependencies, and risks
|
|
528
|
-
|
|
529
|
-
2. **lenses** \u2014 from what analytical perspectives (can be multiple):
|
|
530
|
-
- "engineering": code quality, correctness, performance, maintainability
|
|
531
|
-
- "product": user value, requirements completeness, acceptance criteria, UX
|
|
532
|
-
- "architecture": system boundaries, modularity, coupling, evolution paths
|
|
533
|
-
- "general": broad analysis, logic, trade-offs (use as fallback)
|
|
534
|
-
|
|
535
|
-
3. **sources** \u2014 where to gather evidence (can be multiple):
|
|
536
|
-
- "git": diffs, commit history, branch comparison, changed files
|
|
537
|
-
- "repo": directory structure, source code files, symbol search
|
|
538
|
-
- "docs": markdown/text documents, PRDs, design docs
|
|
539
|
-
- "web": external information, standards, competitor analysis
|
|
540
|
-
- "none": pure topic discussion, no external evidence needed
|
|
541
|
-
|
|
542
|
-
4. **subject** \u2014 what is being analyzed:
|
|
543
|
-
- kind: "changes" (code changes), "files" (specific files), "docs" (documents), "topic" (abstract topic), "mixed"
|
|
544
|
-
- label: human-readable description
|
|
545
|
-
- targets: specific file paths, branch names, or doc names if applicable
|
|
546
|
-
|
|
547
|
-
5. **outputShape** \u2014 what to emphasize in the output
|
|
548
|
-
|
|
549
|
-
Respond ONLY with JSON, no markdown fences:
|
|
550
|
-
{
|
|
551
|
-
"mode": "review|discussion|planning",
|
|
552
|
-
"lenses": [{"name": "engineering|product|architecture|general", "weight": 1.0}],
|
|
553
|
-
"sources": [{"kind": "git|repo|docs|web|none", "targets": ["optional specific targets"]}],
|
|
554
|
-
"subject": {"kind": "changes|files|docs|topic|mixed", "label": "description", "targets": ["optional"]},
|
|
555
|
-
"outputShape": {"overviewLabel": "e.g. What Changed / Current Scope / Problem Framing", "emphasize": ["risk", "improvement"]},
|
|
556
|
-
"confidence": "high|medium|low",
|
|
557
|
-
"followUpQuestion": "question if confidence is low, or null"
|
|
558
|
-
}`;async function yn(n,e,t,r){if(t?.mode&&t?.base)return $t(n,t);try{r?.throwIfAborted();let o=await(await F({...e,enableStreaming:!1,maxTokens:1024})).createMessage({systemPrompt:kt,messages:[{role:"user",content:`<user_request>
|
|
559
|
-
${n}
|
|
560
|
-
</user_request>
|
|
561
|
-
|
|
562
|
-
Analyze the user request above and output the arena plan as JSON.`}],maxTokens:1024,signal:r}),s=xt(o.text,n);return t?.mode&&(s.mode=t.mode),t?.base&&(s.sources=[{kind:"git",targets:[t.base,t.head??"HEAD"]}],s.subject={kind:"changes",label:`${t.base}...${t.head??"HEAD"}`,targets:[t.base,t.head??"HEAD"]}),d.info("arena.planner",{plan:s}),s}catch(i){return d.warn("arena.planner_fallback",{error:i.message}),vn(n,t)}}a(yn,"planArena");function xt(n,e){let t=n.match(/```(?:json)?\s*\n?([\s\S]*?)\n?```/),r=t?t[1].trim():n.match(/\{[\s\S]*\}/)?.[0]??n;try{let i=JSON.parse(r);return {mode:_t(i.mode),lenses:Tt(i.lenses),sources:Dt(i.sources),subject:Et(i.subject,e),outputShape:Lt(i.outputShape,i.mode),confidence:jt(i.confidence),followUpQuestion:i.followUpQuestion||void 0}}catch{return vn(e)}}a(xt,"parsePlanResponse");function $t(n,e){return {mode:e.mode,lenses:[{name:"engineering",weight:1}],sources:[{kind:"git",targets:[e.base,e.head??"HEAD"]},{kind:"repo"}],subject:{kind:"changes",label:`${e.base}...${e.head??"HEAD"}`,targets:[e.base,e.head??"HEAD"]},outputShape:{overviewLabel:"What Changed",emphasize:["risk","improvement"]},confidence:"high"}}a($t,"buildExplicitPlan");function vn(n,e){if(e?.base)return {mode:e.mode??"review",lenses:[{name:"engineering",weight:1}],sources:[{kind:"git"},{kind:"repo"}],subject:{kind:"changes",label:n,targets:[e.base,e.head??"HEAD"]},outputShape:{overviewLabel:"What Changed",emphasize:["risk","improvement"]},confidence:"low"};let t=n.toLowerCase(),r=/\b(prd|doc|docs|spec|rfc|design doc|requirement|proposal)\b/i.test(n)||/(文档|需求|方案)/.test(n),i=/\b(roadmap|plan|planning|strategy|migration|refactor)\b/i.test(n)||/(演进|路线图|规划|重构)/.test(n),o=/\b(feasibility|feasible|can we|should we|trade-?off)\b/i.test(n)||/(可行|能不能|值不值得|取舍)/.test(n),s=/\b(review|pr|diff|patch|change)\b/i.test(n)||/(改动|评审|审查)/.test(n),c=/\b(repo|repository|codebase|module|architecture)\b/i.test(n)||/(代码库|仓库|模块|架构)/.test(n);return i?{mode:"planning",lenses:r?[{name:"architecture",weight:1},{name:"product",weight:.7}]:[{name:"architecture",weight:1},{name:"engineering",weight:.8}],sources:r?[{kind:"docs"},...c?[{kind:"repo"}]:[]]:[{kind:"repo"},{kind:"docs"}],subject:{kind:r?"mixed":"topic",label:n},outputShape:{overviewLabel:"Current Scope",emphasize:["improvement","risk","question"]},confidence:"low"}:r&&o?{mode:"discussion",lenses:[{name:"product",weight:1},{name:"engineering",weight:.8}],sources:c?[{kind:"docs"},{kind:"repo"}]:[{kind:"docs"}],subject:{kind:c?"mixed":"docs",label:n},outputShape:{overviewLabel:"Problem Framing",emphasize:["question","risk","improvement"]},confidence:"low"}:r?{mode:s?"review":"discussion",lenses:[{name:"product",weight:1},{name:"architecture",weight:.6}],sources:c?[{kind:"docs"},{kind:"repo"}]:[{kind:"docs"}],subject:{kind:c?"mixed":"docs",label:n},outputShape:{overviewLabel:s?"Current Scope":"Problem Framing",emphasize:["question","improvement","risk"]},confidence:"low"}:o?{mode:"discussion",lenses:c?[{name:"product",weight:1},{name:"engineering",weight:.8}]:[{name:"general",weight:1},{name:"product",weight:.6}],sources:c?[{kind:"repo"},{kind:"docs"}]:[{kind:"none"}],subject:{kind:"topic",label:n},outputShape:{overviewLabel:"Problem Framing",emphasize:["question","risk","improvement"]},confidence:"low"}:s||/\b(commit|branch|diff|patch|bug|fix|回归)\b/i.test(t)?{mode:"review",lenses:[{name:"engineering",weight:1}],sources:[{kind:"git"},{kind:"repo"}],subject:{kind:"changes",label:n},outputShape:{overviewLabel:"What Changed",emphasize:["risk","improvement","question"]},confidence:"low"}:{mode:e?.mode??"review",lenses:[{name:c?"architecture":"general",weight:1}],sources:c?[{kind:"repo"},{kind:"docs"}]:[{kind:"none"}],subject:{kind:"topic",label:n},outputShape:{overviewLabel:c?"Current Scope":"Problem Framing",emphasize:c?["improvement","risk","question"]:["question","risk","improvement"]},confidence:"low"}}a(vn,"buildFallbackPlan");function _t(n){return n==="review"||n==="discussion"||n==="planning"?n:"review"}a(_t,"validateMode");function jt(n){return n==="high"||n==="medium"||n==="low"?n:"medium"}a(jt,"validateConfidence");function Tt(n){if(!Array.isArray(n)||n.length===0)return [{name:"general",weight:1}];let e=n.filter(t=>pn.includes(t?.name)).map(t=>({name:t.name,weight:typeof t.weight=="number"?t.weight:1}));return e.length>0?e:[{name:"general",weight:1}]}a(Tt,"parseLenses");function Dt(n){if(!Array.isArray(n)||n.length===0)return [{kind:"none"}];let e=["git","repo","docs","web","none"],t=n.filter(r=>e.includes(r?.kind)).map(r=>({kind:r.kind,targets:Array.isArray(r.targets)?r.targets:void 0}));return t.length>0?t:[{kind:"none"}]}a(Dt,"parseSources");function Et(n,e){if(!n||typeof n!="object")return {kind:"topic",label:e};let t=n;return {kind:["changes","files","docs","topic","mixed"].includes(t.kind)?t.kind:"topic",label:t.label??e,targets:Array.isArray(t.targets)?t.targets:void 0}}a(Et,"parseSubject");var Ot=new Set(["strength","improvement","risk","question"]);function Lt(n,e){if(n&&typeof n=="object"){let t=n;return {overviewLabel:t.overviewLabel??"Overview",emphasize:Array.isArray(t.emphasize)?t.emphasize.filter(r=>Ot.has(r)):["risk","improvement"]}}switch(e){case "review":return {overviewLabel:"What Changed",emphasize:["risk","improvement"]};case "discussion":return {overviewLabel:"Problem Framing",emphasize:["strength","risk","question"]};case "planning":return {overviewLabel:"Current Scope",emphasize:["improvement","risk"]};default:return {overviewLabel:"Overview",emphasize:["risk","improvement"]}}}a(Lt,"parseOutputShape");h();h();var De=2e4,Ee=30,Oe={kind:"git",collect(n,e){let t=[],r=n.sources.find(w=>w.kind==="git")?.targets,i=Rn(r?.[0]),o=Rn(r?.[1])??"HEAD",s=!!i,c=z(["rev-parse","--abbrev-ref","HEAD"]);c&&t.push({id:"git-branch",kind:"doc",source:"git",title:"Current Branch",preview:c});let m=s?["log","--oneline",`${i}..${o}`,"--max-count=20"]:["log","--oneline","-10"],d$1=z(m);d$1&&t.push({id:"git-log",kind:"doc",source:"git",title:"Commit Log",preview:d$1});let l=s?["diff","--stat",`${i}...${o}`]:["diff","--stat","HEAD"],p=z(l);!p&&!s&&(p=z(["diff","--stat","--cached"])),p&&t.push({id:"git-diffstat",kind:"doc",source:"git",title:"Diff Stat",preview:p});let g=s?["diff","--name-status",`${i}...${o}`]:["diff","--name-status","HEAD"],u=z(g);if(!u&&!s&&(u=z(["diff","--name-status","--cached"])),u){let w=u.split(`
|
|
563
|
-
`).filter(Boolean),A=w.slice(0,Ee);w.length>Ee&&A.push(`... and ${w.length-Ee} more files`),t.push({id:"git-changed-files",kind:"doc",source:"git",title:"Changed Files",preview:A.join(`
|
|
564
|
-
`),metadata:{totalCount:w.length}});let $=w.map(_=>_.split(" ").slice(1).join(" ")).filter(Boolean),b=It($);b.length>0&&t.push({id:"git-dir-clusters",kind:"doc",source:"git",title:"Changes by Directory",preview:b.slice(0,15).map(([_,C])=>` ${_}/ (${C} files)`).join(`
|
|
565
|
-
`)});}let h=s?["diff",`${i}...${o}`]:["diff","HEAD"],y=z(h);if(!y&&!s&&(y=z(["diff","--cached"])),y){let w=y.length>De,A=w?y.slice(0,De).slice(0,y.slice(0,De).lastIndexOf(`
|
|
566
|
-
`)):y;t.push({id:"git-diff",kind:"diff",source:"git",title:"Diff",preview:A+(w?`
|
|
567
|
-
|
|
568
|
-
... TRUNCATED (${y.length} chars total). Use read_file to inspect specific files.`:""),metadata:{totalChars:y.length,truncated:w}});}if(!y&&!p){let w=z(["status","--short"]);w&&t.push({id:"git-status",kind:"doc",source:"git",title:"Git Status",preview:w});}return d.info("arena.provider.git",{artifactCount:t.length,hasCompare:s}),t}};function z(n){try{return execFileSync("git",n,{encoding:"utf-8",maxBuffer:1024*1024,timeout:1e4}).trim()}catch{return ""}}a(z,"git");function Rn(n){if(!n)return;let e=n.replace(/\.{2,}/g,"");return e=e.replace(/[^a-zA-Z0-9/_\-~^.]/g,""),e||void 0}a(Rn,"sanitizeRef");function It(n){let e=new Map;for(let t of n){let r=t.split("/"),i=r.length>2?r.slice(0,2).join("/"):r[0];e.set(i,(e.get(i)??0)+1);}return [...e.entries()].sort((t,r)=>r[1]-t[1])}a(It,"clusterByDirectory");h();var wn=8e3,qt=3e3,An=400,$n=promisify(execFile),Fe={kind:"repo",async collect(n,e){let t=[],r=n.sources.find(s=>s.kind==="repo")?.targets??[],i=await bn(".",2);i&&t.push({id:"repo-tree",kind:"tree",source:"repo",title:"Project Structure",preview:i});for(let s of r){if(!existsSync(s))continue;if(statSync(s).isDirectory()){let m=await bn(s,3);m&&t.push({id:`repo-tree-${s}`,kind:"tree",source:"repo",title:`Directory: ${s}`,preview:m});for(let d of (await Vt(s)).slice(0,3)){let l=Cn(d);l&&t.push({id:`repo-file-${d}`,kind:"file",source:"repo",title:d,ref:d,preview:Pn(l)});}}else {let m=Cn(s);m&&t.push({id:`repo-file-${s}`,kind:"file",source:"repo",title:s,ref:s,preview:Pn(m)});}}if(r.length===0){let s=zt(e).slice(0,5),c=await Promise.all(s.map(m=>Bt(m)));for(let m=0;m<s.length;m++){let d=s[m],l=c[m]??"";if(!l)continue;let p=l.split(`
|
|
569
|
-
`).filter(Boolean).slice(0,10);for(let g of p)t.some(u=>u.ref===g)||t.push({id:`repo-grep-${d}-${g}`,kind:"grep",source:"repo",title:`Match: ${d} \u2192 ${g}`,ref:g,preview:g});}}if(!n.sources.some(s=>s.kind==="git")){let s=await Yt();s&&t.push({id:"repo-recent-activity",kind:"doc",source:"repo",title:"Recent Git Activity",preview:s});}return d.info("arena.provider.repo",{artifactCount:t.length}),t}};async function bn(n,e){let t=[];return await _n(n,e,0,"",t,{n:0}),t.filter(Boolean).join(`
|
|
570
|
-
`)}a(bn,"buildTree");async function _n(n,e,t,r,i,o){if(t>=e||o.n>=An)return;let s;try{s=(await readdir(n)).filter(c=>!c.startsWith(".")&&c!=="node_modules"&&c!=="dist"&&c!=="__pycache__");}catch{return}for(let c of s.slice(0,30)){if(o.n>=An)return;o.n++;let m=join(n,c),d=false;try{d=(await stat(m)).isDirectory();}catch{continue}i.push(`${r}${d?"/":""} ${c}`),d&&t<e-1&&await _n(m,e,t+1,r+" ",i,o);}}a(_n,"walkTree");async function Vt(n){let e=[];try{let t=await readdir(n),r=["index.ts","index.js","main.ts","main.js","mod.ts","__init__.py"];for(let i of r)t.includes(i)&&e.push(join(n,i));for(let i of t){let o=join(n,i);/\.(ts|js|tsx|jsx|py)$/.test(i)&&!e.includes(o)&&e.push(o);}}catch{}return e}a(Vt,"collectEntryFiles");function Cn(n){try{return !existsSync(n)||statSync(n).size>5e5?null:readFileSync(n,"utf-8")}catch{return null}}a(Cn,"safeReadFile");function Pn(n){if(n.length<=wn)return n;let e=n.slice(0,wn),t=e.lastIndexOf(`
|
|
571
|
-
`);return e.slice(0,t)+`
|
|
572
|
-
... (truncated, ${n.length} chars total)`}a(Pn,"truncate");async function Bt(n){try{let{stdout:e}=await $n("grep",["-rl","--include=*.ts","--include=*.js","--include=*.py","--include=*.md","-i",n,"."],{encoding:"utf-8",maxBuffer:1048576,timeout:qt});return e.trim()}catch(e){let t=e;return t?.code===1||d.warn("arena.provider.grep_failed",{pattern:n,code:t?.code,killed:t?.killed,signal:t?.signal}),""}}a(Bt,"safeGrep");async function Yt(){try{let{stdout:n}=await $n("git",["log","--oneline","-10"],{encoding:"utf-8",maxBuffer:1048576,timeout:1e4});return n.trim()}catch{return ""}}a(Yt,"gitLog");function zt(n){let e=new Set(["the","a","an","is","are","was","were","be","been","have","has","do","does","did","will","would","could","should","may","might","to","of","in","for","on","with","at","by","from","about","and","but","or","not","this","that","my","your","what","how","review","discuss","plan","help","please","look","check","\u4E00\u4E0B","\u770B\u770B","\u5E2E","\u6211","\u7684","\u662F\u5426","\u600E\u4E48","\u5982\u4F55","\u8BA8\u8BBA","\u89C4\u5212","\u5BA1\u67E5"]);return n.split(/[\s,;:]+/).map(t=>t.toLowerCase().replace(/[^a-z0-9_\-/]/g,"")).filter(t=>t.length>2&&!e.has(t))}a(zt,"extractSearchHints");h();var jn=1e4,Xt=new Set([".md",".txt",".rst",".adoc",".org"]),Ie={kind:"docs",collect(n,e){let t=[],i=n.sources.find(o=>o.kind==="docs")?.targets??[];for(let o of i){let s=Tn(o);s&&t.push({id:`doc-${o}`,kind:"doc",source:"docs",title:o,ref:o,preview:Dn(s)});}if(i.length===0){let o=["docs","doc","design","specs","proposals","."],s=new Set;for(let c of o){if(!existsSync(c))continue;let m=Ln(c,2);for(let d of m){if(s.has(d))continue;s.add(d);let l=d.toLowerCase();if(e.toLowerCase().split(/\s+/).filter(h=>h.length>2).some(h=>l.includes(h))||s.size<=5){let h=Tn(d);h&&t.push({id:`doc-${d}`,kind:"doc",source:"docs",title:d,ref:d,preview:Dn(h)});}}}}return d.info("arena.provider.docs",{artifactCount:t.length}),t}};function Ln(n,e,t=0){if(t>=e)return [];let r=[];try{let i=readdirSync(n);for(let o of i){if(o.startsWith(".")||o==="node_modules")continue;let s=join(n,o),c=statSync(s);c.isFile()&&Xt.has(extname(o).toLowerCase())?r.push(s):c.isDirectory()&&t<e-1&&r.push(...Ln(s,e,t+1));}}catch{}return r}a(Ln,"findDocFiles");function Tn(n){try{return !existsSync(n)||statSync(n).size>5e5?null:readFileSync(n,"utf-8")}catch{return null}}a(Tn,"safeReadDoc");function Dn(n){if(n.length<=jn)return n;let e=n.slice(0,jn),t=e.lastIndexOf(`
|
|
573
|
-
`);return e.slice(0,t)+`
|
|
574
|
-
... (truncated, ${n.length} chars total)`}a(Dn,"truncate");h();var Ae={kind:"none",collect(n,e){return []}};var Qt={git:Oe,repo:Fe,docs:Ie,web:Ae,none:Ae},Fn=8e3;async function In(n,e,t={}){let r=[],i=[],o=new Set,{onProgress:s,signal:c}=t,m=[];for(let u of n.sources){if(o.has(u.kind))continue;o.add(u.kind);let h=Qt[u.kind];h&&(s?.({type:"evidence_started",source:u.kind}),m.push(Zt(h,n,e,c)));}let d$1=await Promise.all(m);for(let u of d$1)r.push(...u.artifacts),d.info("arena.evidence_collected",{source:u.kind,count:u.artifacts.length,durationMs:u.durationMs,timedOut:u.timedOut||void 0}),s?.({type:"evidence_collected",source:u.kind,count:u.artifacts.length,durationMs:u.durationMs,timedOut:u.timedOut});let l=r.find(u=>u.id==="git-branch");l&&i.push({label:"Branch",value:l.preview});let p=r.find(u=>u.id==="git-changed-files");p?.metadata?.totalCount&&i.push({label:"Changed Files",value:String(p.metadata.totalCount)});let g=r.filter(u=>u.source==="docs").length;return g>0&&i.push({label:"Documents",value:String(g)}),i.push({label:"Sources",value:[...o].join(", ")}),i.push({label:"Lenses",value:n.lenses.map(u=>u.name).join(", ")}),{artifacts:r,quickFacts:i}}a(In,"collectEvidence");async function Zt(n,e,t,r){let i=Date.now(),o=false,s,c,m=a(()=>{s&&(clearTimeout(s),s=void 0),c&&(r?.removeEventListener("abort",c),c=void 0);},"cleanup"),d$1=Promise.resolve().then(()=>n.collect(e,t)),l=new Promise(g=>{s=setTimeout(()=>{o=true,d.warn("arena.provider.timeout",{source:n.kind,ms:Fn}),g([]);},Fn),typeof s.unref=="function"&&s.unref(),r&&(c=a(()=>g([]),"abortHandler"),r.addEventListener("abort",c,{once:true}));}),p;try{p=await Promise.race([d$1,l]);}catch(g){d.warn("arena.provider.error",{source:n.kind,error:g.message}),p=[];}finally{m();}return {kind:n.kind,artifacts:p,durationMs:Date.now()-i,timedOut:o}}a(Zt,"runProviderWithTimeout");h();h();var Nn=15e3,he=3,Un=resolve("."),le=[{name:"read_file",description:"Read a file from the repository. Use this when you need to see the full source of a file referenced in the context, or to check surrounding code (callers, type definitions, etc.).",inputSchema:{type:"object",properties:{path:{type:"string",description:"Relative file path from repo root"},offset:{type:"number",description:"Start line (1-based, optional)"},limit:{type:"number",description:"Max lines to read (optional, default 200)"}},required:["path"]}},{name:"grep_code",description:"Search for a pattern across the codebase. Use this to find callers, references, type definitions, or usages of symbols.",inputSchema:{type:"object",properties:{pattern:{type:"string",description:"Regex pattern to search for"},glob:{type:"string",description:"File glob filter, e.g. '*.ts' (optional)"}},required:["pattern"]}},{name:"list_files",description:"List files in a directory. Use this to understand project structure around relevant files.",inputSchema:{type:"object",properties:{path:{type:"string",description:"Directory path relative to repo root (default: '.')"}},required:[]}},{name:"git_show",description:"Show a git object (commit, file at a ref, etc.). Use for inspecting specific commits or viewing a file at a different branch/commit.",inputSchema:{type:"object",properties:{ref:{type:"string",description:"Git ref, e.g. 'HEAD~3', 'main:src/foo.ts', commit hash"}},required:["ref"]}},{name:"git_blame",description:"Show git blame for a file. Use to understand who changed what and when.",inputSchema:{type:"object",properties:{path:{type:"string",description:"File path"},lines:{type:"string",description:"Line range, e.g. '10,20' (optional)"}},required:["path"]}}];function be(n){try{switch(n.toolName){case "read_file":return or(n.args);case "grep_code":return ar(n.args);case "list_files":return cr(n.args);case "git_show":return dr(n.args);case "git_blame":return lr(n.args);default:return `Unknown tool: ${n.toolName}`}}catch(e){return `Tool error: ${e.message}`}}a(be,"executeContextTool");function Ne(n){let e=resolve(n);return e===Un||e.startsWith(Un+"/")?e:null}a(Ne,"validatePath");function or(n){let e=n.path;if(!Ne(e))return `Error: path outside repository: ${e}`;if(!existsSync(e))return `Error: file not found: ${e}`;let r=readFileSync(e,"utf-8").split(`
|
|
575
|
-
`),i=Math.max(0,(n.offset??1)-1),o=n.limit??200,c=r.slice(i,i+o).map((m,d)=>`${i+d+1} ${m}`).join(`
|
|
576
|
-
`);return Kn(c)}a(or,"executeReadFile");function ar(n){let e=n.pattern,t=n.glob,r=["-rn","-E","--"];return t&&r.splice(1,0,`--include=${t}`),r.push(e,"."),Ue("grep",r,80)||"No matches found."}a(ar,"executeGrepCode");function cr(n){let e=n.path||".";if(!Ne(e))return `Error: path outside repository: ${e}`;try{let t=readdirSync(e),r=[];for(let i of t.slice(0,50)){let o=join(e,i);try{let s=statSync(o),c=s.isDirectory()?"d":"-",m=s.isDirectory()?"":` ${s.size}`;r.push(`${c} ${i}${m}`);}catch{r.push(`? ${i}`);}}return r.join(`
|
|
577
|
-
`)||`Empty directory: ${e}`}catch{return `Directory not found: ${e}`}}a(cr,"executeListFiles");function dr(n){let e=pr(n.ref);if(!e)return "Error: invalid git ref";let t=Ue("git",["show","--",e],200);return Kn(t||`Could not resolve: ${e}`)}a(dr,"executeGitShow");function lr(n){let e=n.path;if(!Ne(e))return `Error: path outside repository: ${e}`;let t=n.lines,r=["blame"];return t&&/^\d+,\d+$/.test(t)&&r.push("-L",t),r.push("--",e),Ue("git",r,50)||`Could not blame: ${e}`}a(lr,"executeGitBlame");function pr(n){if(!n||n.length>200)return null;let e=n.replace(/[^a-zA-Z0-9/_\-~^.:]/g,"");return /\.\.\/|;\s|&&|\|\||`|\$\(/.test(e)?null:e||null}a(pr,"sanitizeGitRef");function Ue(n,e,t){try{let r=execFileSync(n,e,{encoding:"utf-8",maxBuffer:524288,timeout:1e4}).trim();if(t){let i=r.split(`
|
|
578
|
-
`);if(i.length>t)return i.slice(0,t).join(`
|
|
579
|
-
`)+`
|
|
580
|
-
... (${i.length-t} more lines)`}return r}catch{return ""}}a(Ue,"execFileSafe");function Kn(n){return n.length<=Nn?n:n.slice(0,Nn)+`
|
|
581
|
-
... (truncated)`}a(Kn,"truncateResult");var Me={repo_readonly:{name:"repo_readonly",toolNames:["read_file","grep_code","list_files"]},git:{name:"git",toolNames:["read_file","grep_code","list_files","git_show","git_blame"]},docs:{name:"docs",toolNames:["read_file","list_files"]},no_tools:{name:"no_tools",toolNames:[]}},qn={git:"git",repo:"repo_readonly",docs:"docs",web:"no_tools",none:"no_tools"};function Vn(n){let e=new Set;for(let t of n.sources){let r=t.toolPack??qn[t.kind]??"no_tools",i=Me[r]??Me.no_tools;for(let o of i.toolNames)e.add(o);}return e.size===0?[]:le.filter(t=>e.has(t.name))}a(Vn,"selectTools");function Ys(n){return n.sources.some(e=>{let t=qn[e.kind],r=Me[t];return r&&r.toolNames.length>0})}a(Ys,"hasTools");h();async function Zs(n){return (await Ke(n)).map(t=>t.report)}a(Zs,"runParticipantResearch");async function Ke(n){let{participants:e,strategy:t,topic:r,baseContext:i,enableContextTools:o,contextTools:s,signal:c,onProgress:m}=n,d$1=o?s??le:void 0,l=e.map(async p=>{m?.({type:"research_start",participant:p.name});let g=await F({...p.llm,enableStreaming:false}),u=[{role:"user",content:t.researchUserPrompt(r,i)}],h="",y=0,w=[],A=[],$=30;for(let P=0;P<=he;P++){if(y=P,u.length>=$){d.warn("arena.research_message_limit",{participant:p.name,messageCount:u.length,round:P});break}let x=await g.createMessage({systemPrompt:t.researchSystemPrompt(p.name),messages:u,tools:d$1,signal:c}),q=(x.toolCalls??[]).map(O=>O.toolName),D=x.toolCalls&&x.toolCalls.length>0;if(d.info("arena.research_round",{participant:p.name,round:P,toolCount:x.toolCalls?.length??0,toolNames:q,textLen:x.text?.length??0,stopReason:x.stopReason??"unknown"}),!D){h=x.text;break}m?.({type:"context_lookup",participant:p.name,tools:x.toolCalls.map(O=>`${O.toolName}(${JSON.stringify(O.args)})`)});let j=[];x.text&&j.push({type:"text",text:x.text});for(let O of x.toolCalls)j.push({type:"tool_use",id:O.id,name:O.toolName,input:O.args});u.push({role:"assistant",content:j});let L=[];for(let O of x.toolCalls){let ne=be(O),Ge={round:P,toolName:O.toolName,args:O.args,resultRef:Bn(O),keptAsEvidence:ne.length>50&&!ne.startsWith("Error:")&&!ne.startsWith("Tool error:")&&!ne.startsWith("Unknown tool:")};if(w.push(Ge),Ge.keptAsEvidence){let gt=fr(p.name,O,ne,gr(O.toolName));A.push(gt);}L.push({type:"tool_result",tool_use_id:O.id,content:ne});}let T=he-P,ue=T<=0;if(ue||T===1){let O=ue?"STOP. You have used your tool budget. Your NEXT response MUST be the findings JSON. Do NOT call any more tools \u2014 any further tool_use will be discarded.":"FINAL ROUND. Use the tool results below plus any prior context to output the findings JSON in your NEXT response. Do not call more tools.";L.unshift({type:"text",text:`[arena-research:${p.name}] ${O}`});}u.push({role:"user",content:L});}if(!h){d.warn("arena.research_force_conclude",{participant:p.name,totalRounds:y,messageCount:u.length});let P=await g.createMessage({systemPrompt:t.researchSystemPrompt(p.name),messages:[...u,{role:"user",content:`You have gathered enough context. Based on ALL the tool results above, output your findings NOW.
|
|
582
|
-
|
|
583
|
-
Respond ONLY with the <report> XML element specified in the system prompt \u2014 output your highest-confidence findings (typically 5-15 for a substantive topic; each <summary> should be 80+ words with concrete evidence). Do NOT request any more tools. No prose outside the XML.`}]});d.info("arena.research_force_conclude_response",{participant:p.name,textLen:P.text?.length??0,stopReason:P.stopReason??"unknown"}),h=P.text;}if(d.info("arena.research_raw_response",{participant:p.name,textLength:h.length,text:h}),!h||h.trim().length===0){d.warn("arena.research_failed",{participant:p.name,totalRounds:y,messageCount:u.length});let P={participant:p.name,contextSummary:`(research failed: model returned empty response after ${y} tool rounds)`,findings:[]},x={participant:p.name,contextSummary:P.contextSummary,findings:[],toolTrace:w,evidencePackets:A,findingEvidenceLinks:[]};return m?.({type:"research_done",participant:p.name,report:P}),{report:P,dossier:x}}let b=t.parseResearchResponse(p.name,h),_=yr(b,A),C={participant:p.name,contextSummary:b.contextSummary,findings:b.findings,toolTrace:w,evidencePackets:A,findingEvidenceLinks:_};return m?.({type:"research_done",participant:p.name,report:b}),{report:b,dossier:C}});return Promise.all(l)}a(Ke,"runParticipantResearchWithDossiers");function Bn(n){return n.toolName==="read_file"&&n.args.path?`file:${n.args.path}`:n.toolName==="grep_code"&&n.args.pattern?`grep:${n.args.pattern}`:n.toolName==="list_files"&&n.args.path?`dir:${n.args.path}`:n.toolName==="git_show"&&n.args.ref?`git:${n.args.ref}`:n.toolName==="git_blame"&&n.args.path?`blame:${n.args.path}`:`${n.toolName}:${JSON.stringify(n.args).slice(0,60)}`}a(Bn,"buildResultRef");function mr(n,e,t,r){return `pkt-${createHash("sha256").update(`${n}:${e}:${t}:${r.slice(0,200)}`).digest("hex").slice(0,12)}`}a(mr,"generatePacketId");function gr(n){switch(n){case "git_show":case "git_blame":return "git";case "read_file":case "grep_code":case "list_files":return "repo";default:return "repo"}}a(gr,"inferSourceKind");function fr(n,e,t,r){let i=Bn(e),o=t.slice(0,500);return {packetId:mr(n,r,i,o),participant:n,source:r,title:`${e.toolName}: ${hr(e.args)}`,refs:[i],summary:t.slice(0,200),excerpts:[{ref:i,snippet:o,note:`Result of ${e.toolName} call`}]}}a(fr,"buildEvidencePacketFromTool");function hr(n){let e=[];for(let[t,r]of Object.entries(n))typeof r=="string"?e.push(r.slice(0,60)):e.push(`${t}=${JSON.stringify(r)}`);return e.join(", ").slice(0,100)}a(hr,"formatToolArgs");function yr(n,e){let t=[];for(let r of n.findings){let i=[];for(let o of r.evidence){let s=`${o.type}:${o.ref}`;for(let c of e)c.refs.some(d=>!!(d===s||o.ref&&d.includes(o.ref)))&&!i.includes(c.packetId)&&i.push(c.packetId);}i.length>0&&t.push({findingId:r.id,evidencePacketIds:i});}return t}a(yr,"buildFindingEvidenceLinks");h();function Yn(n){let{dossiers:e,ledger:t,onProgress:r}=n,i=[];for(let o of e){let s=new Map;for(let c of o.findingEvidenceLinks)s.set(c.findingId,c.evidencePacketIds);for(let c of o.findings){let m=`${o.participant}:${c.id}`,d=s.get(c.id)??[],l=c.evidence.map(g=>`${g.type}:${g.ref}`),p={claimId:m,owner:o.participant,finding:c,evidenceRefs:l,evidencePacketIds:d,status:"proposed",challenges:[],debateRounds:[]};i.push(p),t.appendClaim(p);}}return r?.({type:"claims_registered",claimCount:i.length}),i}a(Yn,"registerClaims");function zn(n,e){let t={high:0,medium:1,low:2};return [...n].sort((i,o)=>{let s=t[i.finding.severity??"medium"]??1,c=t[o.finding.severity??"medium"]??1;return s!==c?s-c:o.finding.confidence-i.finding.confidence}).slice(0,e)}a(zn,"selectClaimsForReview");h();function G(n,e){let{round:t,relevantClaimIds:r}=e,i=new Set(r),o=n.getSnapshot(),s=new Set;for(let g of r){let u=n.getClaimById(g);if(u)for(let h of u.evidencePacketIds)s.add(h);}let c=[];for(let g of s){let u=n.getPacketById(g);u&&c.push(u);}let m=[];for(let g of o.dossiers)for(let u of g.toolTrace)u.keptAsEvidence&&m.push({participant:g.participant,toolName:u.toolName,ref:u.resultRef});let d=o.challenges.filter(g=>i.has(g.claimId)),l=o.requestedChecks.filter(g=>i.has(g.claimId)),p=o.adjudications.filter(g=>i.has(g.claimId));return {round:t,relevantClaimIds:r,evidencePackets:c,toolTraceSummary:m,recentChallenges:d,requestedChecks:l,priorAdjudications:p}}a(G,"buildDigest");function Z(n){return n?n.replace(/<\/?(?:system|assistant|user|system-reminder)[^>]*>/gi,"").replace(/^(?:IGNORE|DISREGARD|FORGET|OVERRIDE|SYSTEM|INSTRUCTION)[:\s].*/gim,"").replace(/\n{3,}/g,`
|
|
584
|
-
|
|
585
|
-
`).slice(0,2e3):""}a(Z,"sanitize");function oo(n){let e=[];if(e.push(`## Round ${n.round} Research Digest`),e.push(`Claims under consideration: ${n.relevantClaimIds.join(", ")}`),n.evidencePackets.length>0){e.push(`
|
|
586
|
-
### Evidence`);for(let t of n.evidencePackets){e.push(`- [${t.packetId}] ${Z(t.title)} (${t.source})`),e.push(` ${Z(t.summary)}`);for(let r of t.excerpts.slice(0,3))e.push(` > ${r.ref}: ${Z(r.snippet)}`),r.note&&e.push(` Note: ${Z(r.note)}`);}}if(n.recentChallenges.length>0){e.push(`
|
|
587
|
-
### Challenges`);for(let t of n.recentChallenges)e.push(`- [${t.reviewer}] on ${t.claimId}: ${t.verdict} \u2014 ${Z(t.reason)}`);}if(n.requestedChecks.length>0){e.push(`
|
|
588
|
-
### Requested Checks`);for(let t of n.requestedChecks){let r=t.priority?` (${t.priority})`:"";e.push(`- [${t.requestId}]${r}: ${Z(t.description)}`);}}if(n.priorAdjudications.length>0){e.push(`
|
|
589
|
-
### Prior Adjudications`);for(let t of n.priorAdjudications)e.push(`- ${t.claimId}: ${t.outcome} \u2014 ${Z(t.rationale)}`);}return e.join(`
|
|
590
|
-
`)}a(oo,"formatDigest");h();var qe={proposed:["under_review"],under_review:["verified","contested","rejected"],contested:["under_review","unresolved","verified","rejected"],verified:[],rejected:[],unresolved:[]};function pe(n,e){return qe[n.status].includes(e)?(n.status=e,true):false}a(pe,"transitionClaim");function vr(n,e,t){if(e.length===0)return n.status;let r=e.map(i=>i.verdict);return r.includes("disagree")||r.includes("needs_evidence")||t?"contested":r.includes("agree")?"verified":n.status}a(vr,"resolveClaimStatus");function Jn(n){return pe(n,"under_review")}a(Jn,"markUnderReview");function Wn(n,e,t){let r=vr(n,e,t);pe(n,r);}a(Wn,"applyReviewResult");function Ve(n){return pe(n,"unresolved")}a(Ve,"markUnresolved");function po(n){return qe[n.status].length===0}a(po,"isTerminal");function uo(n){return qe[n.status]}a(uo,"validTransitions");h();async function bo(n){let{participants:e,strategy:t,topic:r,reports:i,signal:o,onProgress:s}=n;s?.({type:"cross_review_start",round:1});let c=[],m=e.map(async l=>{let p=i.find(A=>A.participant===l.name),g=i.filter(A=>A.participant!==l.name);if(g.length===0)return [];if(!p)return [];let u=await F({...l.llm,enableStreaming:false}),h=t.crossReviewSystemPrompt(l.name),y=t.crossReviewUserPrompt(r,p,g),w=await u.createMessage({systemPrompt:h,messages:[{role:"user",content:y}],signal:o});if(d.info("arena.cross_review_raw_response",{participant:l.name,text:w.text,stopReason:w.stopReason}),w.stopReason==="length"){d.warn("arena.cross_review_truncated",{participant:l.name});let A=await u.createMessage({systemPrompt:h,messages:[{role:"user",content:y},{role:"assistant",content:w.text},{role:"user",content:"Your previous response was truncated. Please output the COMPLETE review JSON, using shorter comments. Respond ONLY with JSON."}],signal:o});d.info("arena.cross_review_retry",{participant:l.name,stopReason:A.stopReason}),w=A;}return t.parseCrossReviewResponse(l.name,w.text)}),d$1=await Promise.all(m);for(let l of d$1)c.push(...l);return s?.({type:"cross_review_done",reviews:c}),c}a(bo,"runCrossReview");async function Be(n){let{participants:e,strategy:t,topic:r,reports:i,ledger:o,limits:s,mode:c,signal:m,onProgress:d$1}=n,l=o.getAllClaims(),p=zn(l,s.maxClaimsForReview);for(let b of p)Jn(b);let g=p.map(b=>b.claimId),u=G(o,{round:1,relevantClaimIds:g}),h=c==="planning"&&te(t);d$1?.(h?{type:"planning_merge_review_start"}:{type:"verification_start"});let y=U(t),w=[],A=[],$=e.map(async b=>{let _=i.find(D=>D.participant===b.name),C=i.filter(D=>D.participant!==b.name);if(!_||C.length===0)return;let P=p.filter(D=>D.owner!==b.name);if(P.length===0)return;let x=await F({...b.llm,enableStreaming:false}),q=t.crossReviewSystemPrompt(b.name);if(y){let D=h?t.mergeReviewUserPrompt(r,_,P,u):t.verificationReviewUserPrompt(r,_,P,u),j=await x.createMessage({systemPrompt:q,messages:[{role:"user",content:D}],signal:m});d.info("arena.verification_review_raw",{participant:b.name,stopReason:j.stopReason}),j.stopReason==="length"&&(j=await x.createMessage({systemPrompt:q,messages:[{role:"user",content:D},{role:"assistant",content:j.text},{role:"user",content:"Truncated. Output the COMPLETE JSON array, shorter comments. JSON only."}],signal:m}));let L=h?t.parseMergeReviewResponse(b.name,j.text):t.parseVerificationReviewResponse(b.name,j.text);for(let T of L)A.push(T),o.appendChallenge(T);for(let T of L)w.push({reviewer:T.reviewer,findingId:T.claimId,verdict:T.verdict,reason:T.reason,extraEvidence:T.supportingEvidenceRefs});}else {let D=t.crossReviewUserPrompt(r,_,C),j=await x.createMessage({systemPrompt:q,messages:[{role:"user",content:D}],signal:m});j.stopReason==="length"&&(j=await x.createMessage({systemPrompt:q,messages:[{role:"user",content:D},{role:"assistant",content:j.text},{role:"user",content:"Truncated. Output COMPLETE review JSON. Shorter comments. JSON only."}],signal:m}));let L=t.parseCrossReviewResponse(b.name,j.text);w.push(...L);for(let T of L){let ue=p.find(ee=>ee.finding.id===T.findingId||ee.claimId===T.findingId);if(ue){let ee={reviewer:T.reviewer,claimId:ue.claimId,verdict:T.verdict,reason:T.reason,supportingEvidenceRefs:T.extraEvidence};A.push(ee),o.appendChallenge(ee);}}}});await Promise.all($);for(let b of p){let _=o.getChallengesForClaim(b.claimId),C=o.getPendingChecksForClaim(b.claimId).length>0;Wn(b,_,C);}return d.info("arena.verification_done",{reviewCount:w.length,challengeCount:A.length,claimStatuses:Object.fromEntries(p.map(b=>[b.claimId,b.status]))}),d$1?.(h?{type:"planning_merge_review_done",mergeCount:A.length}:{type:"verification_done",challengeCount:A.length}),d$1?.({type:"cross_review_done",reviews:w}),{reviews:w,challenges:A}}a(Be,"runVerificationReview");h();async function Gn(n){let{participants:e,strategy:t,topic:r,ledger:i,limits:o,maxRounds:s,signal:c,onProgress:m}=n,d$1=i.getClaimsByStatus("contested").slice(0,o.maxContestedClaimsForDebate);if(d$1.length===0)return d.info("arena.debate_skip",{reason:"no contested claims"}),[];d.info("arena.debate_start",{contestedCount:d$1.length,maxRounds:s});let l=[],p=U(t);for(let g of d$1){c?.throwIfAborted();let u=await Rr({claim:g,participants:e,strategy:t,v2:p,topic:r,ledger:i,maxRounds:s,signal:c,onProgress:m});l.push(...u),g.debateRounds.push(...u);}return l}a(Gn,"runDebateRounds");async function Rr(n){let{claim:e,participants:t,strategy:r,v2:i,topic:o,ledger:s,maxRounds:c,signal:m,onProgress:d$1}=n,l=t.find(y=>y.name===e.owner),p=wr(e,t);if(!l||!p)return d.warn("arena.debate_skip_claim",{claimId:e.claimId,reason:"cannot identify debaters"}),[];let g=[l,p],u=[],h=[];for(let y=1;y<=c;y++){m?.throwIfAborted(),d$1?.({type:"debate_round_start",round:y,claims:[e.claimId]});let w=G(s,{round:y,relevantClaimIds:[e.claimId]}),A=g.map(async P=>{let x=await F({...P.llm,enableStreaming:false}),q=r.crossReviewSystemPrompt(P.name),D;i?D=r.debateTurnUserPrompt(o,e,h,w):D=Ar(o,e,h);let j=await x.createMessage({systemPrompt:q,messages:[{role:"user",content:D}],signal:m});return d.info("arena.debate_turn",{participant:P.name,claimId:e.claimId,round:y,stopReason:j.stopReason}),i?r.parseDebateTurnResponse(P.name,j.text):J(P.name,j.text)}),$=await Promise.all(A);h.push(...$);let b=$.every(P=>P.stance==="support"||P.stance==="narrow"),_=b?`Converged in round ${y}: ${$.map(P=>`${P.participant}=${P.stance}`).join(", ")}`:void 0,C={round:y,claimId:e.claimId,participants:$,resolved:b,resolutionNote:_};if(u.push(C),d$1?.({type:"debate_round_done",round:y,resolved:b?1:0}),b){d.info("arena.debate_converged",{claimId:e.claimId,round:y});break}}return u}a(Rr,"debateClaim");function wr(n,e){let t=n.challenges.find(o=>o.verdict==="disagree"),r=n.challenges.find(o=>o.verdict==="needs_evidence"),i=t??r??n.challenges[0];if(i)return e.find(o=>o.name===i.reviewer)}a(wr,"findPrimaryChallenger");function Ar(n,e,t){let r=t.length>0?t.map(i=>`[${i.participant}] ${i.stance}: ${i.summary}`).join(`
|
|
591
|
-
`):"No prior turns.";return `## Topic: ${n}
|
|
592
|
-
|
|
593
|
-
## Contested Claim
|
|
594
|
-
[${e.claimId}] ${e.finding.title}
|
|
595
|
-
${e.finding.summary}
|
|
596
|
-
|
|
597
|
-
## Prior Debate
|
|
598
|
-
${r}
|
|
599
|
-
|
|
600
|
-
State your position on this claim. Build on prior turns: cite specific evidence, acknowledge counter-arguments, and explain your reasoning in 150-300 words. Brevity here means missed nuance \u2014 depth wins.
|
|
601
|
-
Respond ONLY with JSON:
|
|
602
|
-
{"stance": "support|oppose|narrow|uncertain", "summary": "your argument", "newEvidenceRefs": ["optional"]}`}a(Ar,"buildFallbackDebatePrompt");h();async function Hn(n){let{concluder:e,strategy:t,topic:r,ledger:i,signal:o,onProgress:s}=n,c=[],m=U(t),d$1=i.getClaimsByStatus("contested"),l=i.getClaimsByStatus("verified");if(d$1.length===0&&l.length===0)return d.info("arena.adjudication_skip",{reason:"no claims to adjudicate"}),[];d.info("arena.adjudication_start",{contested:d$1.length,verified:l.length});let p=await F({...e.llm,enableStreaming:false});for(let y of d$1){o?.throwIfAborted();let w=G(i,{round:0,relevantClaimIds:[y.claimId]}),A=t.consensusSystemPrompt(),$;m?$=t.adjudicationUserPrompt(r,y,y.debateRounds,w):$=Cr(r,y);let b=await p.createMessage({systemPrompt:A,messages:[{role:"user",content:$}],signal:o});d.info("arena.adjudication_response",{claimId:y.claimId,stopReason:b.stopReason});let _;m?(_=t.parseAdjudicationResponse(b.text),_.claimId=y.claimId):_=W(y.claimId,b.text),i.appendAdjudication(_),c.push(_),br(y,_);}for(let y of l){let w={claimId:y.claimId,outcome:"accepted",rationale:"Verified by peer review without contest",finalSummary:y.finding.summary,supportingEvidenceRefs:y.evidenceRefs};i.appendAdjudication(w),c.push(w);}let g=i.getClaimsByStatus("proposed","under_review");for(let y of g)Ve(y);let u=c.filter(y=>y.outcome==="accepted"||y.outcome==="accepted_with_revision").length,h=i.getClaimsByStatus("unresolved").length;return d.info("arena.adjudication_done",{total:c.length,accepted:u,unresolved:h}),s?.({type:"adjudication_done",accepted:u,unresolved:h}),c}a(Hn,"runAdjudication");function br(n,e){switch(e.outcome){case "accepted":case "accepted_with_revision":pe(n,"verified");break;case "rejected":pe(n,"rejected");break;case "unresolved":Ve(n);break}}a(br,"applyAdjudicationOutcome");function Cr(n,e){let t=e.challenges.length>0?e.challenges.map(i=>`[${i.reviewer}] ${i.verdict}: ${i.reason}`).join(`
|
|
603
|
-
`):"No challenges.",r=e.debateRounds.length>0?e.debateRounds.map(i=>`Round ${i.round}:
|
|
604
|
-
`+i.participants.map(o=>` [${o.participant}] ${o.stance}: ${o.summary}`).join(`
|
|
605
|
-
`)+`
|
|
606
|
-
${i.resolved?"\u2192 Resolved":"\u2192 Unresolved"}`).join(`
|
|
607
|
-
|
|
608
|
-
`):"No debate rounds.";return `## Topic: ${n}
|
|
609
|
-
|
|
610
|
-
## Claim Under Adjudication
|
|
611
|
-
[${e.claimId}] ${e.finding.title}
|
|
612
|
-
${e.finding.summary}
|
|
613
|
-
Owner: ${e.owner} | Status: ${e.status}
|
|
614
|
-
|
|
615
|
-
## Challenges
|
|
616
|
-
${t}
|
|
617
|
-
|
|
618
|
-
## Debate
|
|
619
|
-
${r}
|
|
620
|
-
|
|
621
|
-
As moderator, adjudicate this claim based on all available evidence.
|
|
622
|
-
Respond ONLY with JSON:
|
|
623
|
-
{"outcome": "accepted|accepted_with_revision|rejected|unresolved", "rationale": "...", "finalSummary": "revised claim summary if needed", "supportingEvidenceRefs": ["..."]}`}a(Cr,"buildFallbackAdjudicationPrompt");h();async function Ye(n){let{concluder:e,strategy:t,topic:r,reports:i,reviews:o,claimSummary:s,signal:c,onProgress:m}=n;m?.({type:"consensus_start"});let d$1=await F({...e.llm,enableStreaming:false}),l=t.consensusSystemPrompt(),p;U(t)&&s?(p=t.claimAwareConsensusUserPrompt(r,i,o,s),d.info("arena.consensus_claim_aware",{verified:s.verified.length,unresolved:s.unresolved.length,contested:s.contested.length,rejected:s.rejected.length})):p=t.consensusUserPrompt(r,i,o);let u=await d$1.createMessage({systemPrompt:l,messages:[{role:"user",content:p}],signal:c});if(d.info("arena.consensus_raw_response",{text:u.text,stopReason:u.stopReason}),u.stopReason==="length"){d.warn("arena.consensus_truncated",{textLen:u.text?.length??0,maxTokens:e.llm.maxTokens});let y=await d$1.createMessage({systemPrompt:l,messages:[{role:"user",content:p},{role:"assistant",content:u.text},{role:"user",content:"Your previous response was truncated. Please output a COMPLETE but more concise version of the consensus JSON. Keep all sections but use shorter summaries. Respond ONLY with the complete JSON object."}],signal:c});d.info("arena.consensus_retry_response",{textLen:y.text?.length??0,stopReason:y.stopReason}),y.stopReason==="length"&&d.warn("arena.consensus_still_truncated",{textLen:y.text?.length??0});let w=t.parseConsensusResponse(y.text);return m?.({type:"consensus_done",consensus:w}),w}let h=t.parseConsensusResponse(u.text);return m?.({type:"consensus_done",consensus:h}),h}a(Ye,"buildConsensus");h();var Pr=50,Sr=200,kr=100,Ce=class{static{a(this,"ArenaLedger");}ledger;index;constructor(){this.ledger={dossiers:[],evidencePackets:[],toolTraces:[],claims:[],challenges:[],requestedChecks:[],adjudications:[]},this.index={claimsById:new Map,packetsById:new Map,requestsById:new Map};}checkGrowth(){let e=this.ledger.claims.length,t=this.ledger.evidencePackets.length,r=this.ledger.challenges.length;(e===Pr||t===Sr||r===kr)&&d.warn("arena.ledger_growth",{claims:e,packets:t,challenges:r,toolTraces:this.ledger.toolTraces.length});}appendDossier(e){this.ledger.dossiers.push(e);for(let t of e.evidencePackets)this.appendEvidencePacket(t);for(let t of e.toolTrace)this.ledger.toolTraces.push(t);}appendEvidencePacket(e){this.index.packetsById.has(e.packetId)||(this.ledger.evidencePackets.push(e),this.index.packetsById.set(e.packetId,e));}appendClaim(e){this.ledger.claims.push(e),this.index.claimsById.set(e.claimId,e),this.checkGrowth();}appendChallenge(e){this.ledger.challenges.push(e);let t=this.index.claimsById.get(e.claimId);if(t&&t.challenges.push(e),this.checkGrowth(),e.requestedChecks)for(let r of e.requestedChecks)this.appendRequestedCheck(r);}appendRequestedCheck(e){this.index.requestsById.has(e.requestId)||(this.ledger.requestedChecks.push(e),this.index.requestsById.set(e.requestId,e));}appendAdjudication(e){this.ledger.adjudications.push(e);let t=this.index.claimsById.get(e.claimId);t&&(t.adjudication=e);}getSnapshot(){return this.ledger}getClaimById(e){return this.index.claimsById.get(e)}getPacketById(e){return this.index.packetsById.get(e)}getAllClaims(){return this.ledger.claims}getClaimsByStatus(...e){let t=new Set(e);return this.ledger.claims.filter(r=>t.has(r.status))}getClaimsByOwner(e){return this.ledger.claims.filter(t=>t.owner===e)}getChallengesForClaim(e){return this.ledger.challenges.filter(t=>t.claimId===e)}getPendingChecks(){return this.ledger.requestedChecks}getPendingChecksForClaim(e){return this.ledger.requestedChecks.filter(t=>t.claimId===e)}getPacketsForClaim(e){let t=this.index.claimsById.get(e);return t?t.evidencePacketIds.map(r=>this.index.packetsById.get(r)).filter(r=>r!==void 0):[]}getDossiers(){return this.ledger.dossiers}getDossierByParticipant(e){let t=this.ledger.dossiers.filter(r=>r.participant===e);return t[t.length-1]}};h();h();var xr=3;async function Xn(n){let{concluder:e,strategy:t,topic:r,phases:i,ledger:o,limits:s,signal:c,onProgress:m}=n,d$1=n.enableContextTools!==false?n.contextTools??le:void 0,l=i.slice(0,s.maxExpandedPhasesPerRun);m?.({type:"roadmap_expansion_start",phaseCount:l.length}),d.info("arena.detail_expansion_start",{phaseCount:l.length});let p=[],g=await F({...e.llm,enableStreaming:false}),u=t.detailExpansionSystemPrompt();for(let h of l){c?.throwIfAborted();let y=h.relatedFindings??[],w=G(o,{round:1,relevantClaimIds:y}),$=[{role:"user",content:t.detailExpansionUserPrompt(r,h,w)}],b="",_=d$1?Math.min(xr,he):0;for(let P=0;P<=_;P++){let x=await g.createMessage({systemPrompt:u,messages:$,tools:d$1,signal:c}),q=x.toolCalls&&x.toolCalls.length>0;if(d.info("arena.detail_expansion_round",{phase:h.title,round:P,toolCount:x.toolCalls?.length??0,stopReason:x.stopReason}),!q){b=x.text;break}let D=[];x.text&&D.push({type:"text",text:x.text});for(let L of x.toolCalls)D.push({type:"tool_use",id:L.id,name:L.toolName,input:L.args});$.push({role:"assistant",content:D});let j=[];for(let L of x.toolCalls){let T=be(L);j.push({type:"tool_result",tool_use_id:L.id,content:T.slice(0,15e3)});}$.push({role:"user",content:j}),P===_&&(b=x.text);}b||(b=""),d.info("arena.detail_expansion_phase",{phase:h.title,textLen:b.length});let C=t.parseDetailExpansionResponse(b);C.phaseTitle||(C.phaseTitle=h.title),C.targetFiles.length===0&&C.codeChanges.length===0&&d.warn("arena.detail_expansion_sparse",{phase:h.title,objective:C.objective.slice(0,200)}),p.push(C);}return d.info("arena.detail_expansion_done",{detailCount:p.length}),m?.({type:"roadmap_expansion_done",detailCount:p.length}),p}a(Xn,"runDetailExpansion");h();function $r(n){return n.replace(/[\x00-\x7F]/g,"").length/Math.max(n.length,1)<.15?"":/[\u4e00-\u9fff\u3400-\u4dbf]/.test(n)?"IMPORTANT: The user's query is in Chinese. You MUST respond in Chinese (\u4E2D\u6587). All text output \u2014 summaries, findings, titles, descriptions, rationale \u2014 must be written in Chinese. JSON field values must be in Chinese.":/[\u3040-\u309f\u30a0-\u30ff]/.test(n)?"IMPORTANT: The user's query is in Japanese. You MUST respond in Japanese (\u65E5\u672C\u8A9E). All text output must be in Japanese. JSON field values must be in Japanese.":/[\uac00-\ud7af]/.test(n)?"IMPORTANT: The user's query is in Korean. You MUST respond in Korean (\uD55C\uAD6D\uC5B4). All text output must be in Korean. JSON field values must be in Korean.":/[\u0400-\u04ff]/.test(n)?"IMPORTANT: The user's query is in Russian. You MUST respond in Russian (\u0440\u0443\u0441\u0441\u043A\u0438\u0439). All text output must be in Russian. JSON field values must be in Russian.":/[\u0600-\u06ff]/.test(n)?"IMPORTANT: The user's query is in Arabic. You MUST respond in Arabic (\u0627\u0644\u0639\u0631\u0628\u064A\u0629). All text output must be in Arabic. JSON field values must be in Arabic.":"IMPORTANT: Respond in the same language as the user's query. All text output \u2014 summaries, findings, titles, descriptions \u2014 must match the query language."}a($r,"detectLanguageInstruction");function Qn(n,e){let t=$r(e);return t?{researchSystemPrompt(r){return `${t}
|
|
624
|
-
|
|
625
|
-
${n.researchSystemPrompt(r)}`},researchUserPrompt(r,i){return n.researchUserPrompt(r,i)},parseResearchResponse(r,i){return n.parseResearchResponse(r,i)},crossReviewSystemPrompt(r){return `${t}
|
|
626
|
-
|
|
627
|
-
${n.crossReviewSystemPrompt(r)}`},crossReviewUserPrompt(r,i,o){return n.crossReviewUserPrompt(r,i,o)},parseCrossReviewResponse(r,i){return n.parseCrossReviewResponse(r,i)},consensusSystemPrompt(){return `${t}
|
|
628
|
-
|
|
629
|
-
${n.consensusSystemPrompt()}`},consensusUserPrompt(r,i,o){return n.consensusUserPrompt(r,i,o)},parseConsensusResponse(r){return n.parseConsensusResponse(r)},preferredFindingKinds(){return n.preferredFindingKinds()},...U(n)?{verificationReviewUserPrompt(r,i,o,s){return n.verificationReviewUserPrompt(r,i,o,s)},parseVerificationReviewResponse(r,i){return n.parseVerificationReviewResponse(r,i)},debateTurnUserPrompt(r,i,o,s){return n.debateTurnUserPrompt(r,i,o,s)},parseDebateTurnResponse(r,i){return n.parseDebateTurnResponse(r,i)},adjudicationUserPrompt(r,i,o,s){return n.adjudicationUserPrompt(r,i,o,s)},parseAdjudicationResponse(r){return n.parseAdjudicationResponse(r)},claimAwareConsensusUserPrompt(r,i,o,s){return n.claimAwareConsensusUserPrompt(r,i,o,s)}}:{}}:n}a(Qn,"withLanguage");var Zn=class{static{a(this,"Arena");}config;strategy;limits;constructor(e){if(e.participants.length<2)throw new Error("Arena requires at least 2 participants");let t=e.mode??"review",r=Qe[t];this.config={mode:t,maxDiscussionRounds:e.maxDiscussionRounds??r.maxDiscussionRounds,...e},this.limits=e.executionLimits??Ze,this.strategy=e.strategy??fn(t);}async run(e,t){let r=this.config.participants.map(C=>C.name),i=this.config.signal;d.info("arena.start",{mode:this.config.mode,participants:r}),i?.throwIfAborted();let o=this.config.participants[0].llm,s=await yn(e,o,t,i);this.config.onProgress?.({type:"plan_resolved",plan:s}),d.info("arena.plan",{mode:s.mode,lenses:s.lenses.map(C=>C.name),sources:s.sources.map(C=>C.kind),subject:s.subject.label,confidence:s.confidence}),!t?.mode&&s.mode!==this.config.mode&&(this.config.mode=s.mode),i?.throwIfAborted();let c=this.config.onProgress,{artifacts:m,quickFacts:d$1}=await In(s,e,{signal:i,onProgress:a(C=>{C.type==="evidence_started"?c?.({type:"evidence_started",source:C.source}):c?.({type:"evidence_source_done",source:C.source,count:C.count??0,durationMs:C.durationMs??0,timedOut:C.timedOut??false});},"onProgress")});c?.({type:"evidence_collected",artifacts:m}),d.info("arena.evidence",{artifactCount:m.length,sources:s.sources.map(C=>C.kind)});let l={plan:s,artifacts:m,quickFacts:d$1};this.strategy=this.config.strategy??hn(s),this.strategy=Qn(this.strategy,e);let p=this.config.enableContextTools!==false?Vn(s):void 0;i?.throwIfAborted(),d.info("arena.research_phase",{participants:r});let g=await Ke({participants:this.config.participants,strategy:this.strategy,topic:e,baseContext:l,enableContextTools:this.config.enableContextTools??true,contextTools:p,signal:i,onProgress:this.config.onProgress}),u=g.map(C=>C.report),h=g.map(C=>C.dossier);i?.throwIfAborted();let y=new Ce;for(let C of h)y.appendDossier(C);let w=Yn({dossiers:h,ledger:y,onProgress:this.config.onProgress});d.info("arena.claims_registered",{claimCount:w.length,byOwner:Object.fromEntries(r.map(C=>[C,w.filter(P=>P.owner===C).length]))}),i?.throwIfAborted();let A=this.config.concluder??r[0],$=this.config.participants.find(C=>C.name===A);!$&&this.config.concluder&&d.warn("arena.concluder_not_found",{requested:this.config.concluder,fallback:this.config.participants[0].name});let b=$??this.config.participants[0],_=this.config.enableContextTools!==false;return this.config.mode==="planning"?this.runPlanningPath({topic:e,participantNames:r,plan:s,baseContext:l,reports:u,dossiers:h,ledger:y,concluder:b,contextTools:p,enableContextTools:_,signal:i}):this.runReviewDiscussionPath({topic:e,participantNames:r,plan:s,baseContext:l,reports:u,dossiers:h,ledger:y,concluder:b,signal:i})}async runPlanningPath(e){let{topic:t,participantNames:r,plan:i,baseContext:o,reports:s,dossiers:c,ledger:m,concluder:d$1,contextTools:l,enableContextTools:p,signal:g}=e;d.info("arena.planning_merge_review_phase");let{reviews:u}=await Be({participants:this.config.participants,strategy:this.strategy,topic:t,reports:s,ledger:m,limits:this.limits,mode:"planning",signal:g,onProgress:this.config.onProgress});g?.throwIfAborted();let h=m.getAllClaims(),y={verified:h.filter(A=>A.status==="verified"),contested:h.filter(A=>A.status==="contested"),unresolved:h.filter(A=>A.status==="unresolved"),rejected:h.filter(A=>A.status==="rejected")};d.info("arena.planning_consensus_phase",{concluder:d$1.name});let w=await Ye({concluder:d$1,strategy:this.strategy,topic:t,reports:s,reviews:u,claimSummary:y,signal:g,onProgress:this.config.onProgress});if(g?.throwIfAborted(),w.roadmap.length>0&&te(this.strategy)){d.info("arena.detail_expansion_phase",{phaseCount:w.roadmap.length});try{let A=await Xn({concluder:d$1,strategy:this.strategy,topic:t,phases:w.roadmap,ledger:m,limits:this.limits,enableContextTools:p,contextTools:l,signal:g,onProgress:this.config.onProgress});w.roadmapDetails=A;}catch(A){d.warn("arena.detail_expansion_failed",{error:A.message,phaseCount:w.roadmap.length});}}return {topic:t,mode:this.config.mode,participants:r,plan:i,baseContext:o,reports:s,dossiers:c,claims:h,reviews:u,consensus:w}}async runReviewDiscussionPath(e){let{topic:t,participantNames:r,plan:i,baseContext:o,reports:s,dossiers:c,ledger:m,concluder:d$1,signal:l}=e;d.info("arena.verification_review_phase");let{reviews:p}=await Be({participants:this.config.participants,strategy:this.strategy,topic:t,reports:s,ledger:m,limits:this.limits,signal:l,onProgress:this.config.onProgress});l?.throwIfAborted(),d.info("arena.debate_phase");let g=await Gn({participants:this.config.participants,strategy:this.strategy,topic:t,ledger:m,limits:this.limits,maxRounds:this.config.maxDiscussionRounds,signal:l,onProgress:this.config.onProgress});l?.throwIfAborted(),d.info("arena.adjudication_phase",{concluder:d$1.name});let u=await Hn({concluder:d$1,strategy:this.strategy,topic:t,ledger:m,signal:l,onProgress:this.config.onProgress});l?.throwIfAborted();let h=m.getAllClaims(),y={verified:h.filter(A=>A.status==="verified"),contested:h.filter(A=>A.status==="contested"),unresolved:h.filter(A=>A.status==="unresolved"),rejected:h.filter(A=>A.status==="rejected")};d.info("arena.consensus_phase",{concluder:d$1.name,verified:y.verified.length,unresolved:y.unresolved.length});let w=await Ye({concluder:d$1,strategy:this.strategy,topic:t,reports:s,reviews:p,claimSummary:y,signal:l,onProgress:this.config.onProgress});return {topic:t,mode:this.config.mode,participants:r,plan:i,baseContext:o,reports:s,dossiers:c,claims:h,reviews:p,debateRounds:g,adjudications:u,consensus:w}}};h();h();var et=/^\x1b\[200~/,nt=/\x1b\[201~$/,tt=/[-]/g,rt=/ /g,it=/[‘’“”]/g,st=/[\x00-\x1F\x7F-\x9F]/g;function ze(n){let e=[],t=n;(et.test(t)||nt.test(t))&&(t=t.replace(et,"").replace(nt,""),e.push("\u5DF2\u5265\u79BB\u7EC8\u7AEF\u7C98\u8D34\u5305\u88F9\u7B26")),/[\r\n]/.test(t)&&(t=t.replace(/[\r\n]+/g,""),e.push("\u5DF2\u79FB\u9664\u6362\u884C\u7B26")),tt.test(t)&&(t=t.replace(tt,""),e.push("\u5DF2\u79FB\u9664\u96F6\u5BBD\u5B57\u7B26")),rt.test(t)&&(t=t.replace(rt,""),e.push("\u5DF2\u79FB\u9664\u5168\u89D2\u7A7A\u683C")),it.test(t)&&(t=t.replace(it,""),e.push("\u5DF2\u79FB\u9664\u4E2D\u6587/\u667A\u80FD\u5F15\u53F7")),st.test(t)&&(t=t.replace(st,""),e.push("\u5DF2\u79FB\u9664\u63A7\u5236\u5B57\u7B26"));let r=t.trim();return r!==t&&(t=r),{value:t,changed:t!==n,warnings:e}}a(ze,"sanitizeApiKey");function $a(n){for(let e=0;e<n.length;e++){let t=n.charCodeAt(e);if(t<32||t>126)return true}return false}a($a,"hasNonAsciiPrintable");var ye=[{id:"openrouter",name:"OpenRouter (\u63A8\u8350 \u2014 \u652F\u6301\u6240\u6709\u6A21\u578B)",envKey:"OPENROUTER_API_KEY",provider:"openai",baseUrl:"https://openrouter.ai/api/v1",keyUrl:"https://openrouter.ai/keys",keyPrefix:"sk-or-",models:["anthropic/claude-sonnet-4.6","anthropic/claude-opus-4.7","anthropic/claude-haiku-4.5","openai/gpt-5","openai/gpt-5-mini","openai/gpt-4o","openai/o4-mini","openai/o3","google/gemini-2.5-pro","google/gemini-2.5-flash","deepseek/deepseek-chat","deepseek/deepseek-reasoner","qwen/qwen3-coder","meta-llama/llama-4-maverick"]},{id:"anthropic",name:"Anthropic (\u76F4\u8FDE Claude API)",envKey:"ANTHROPIC_API_KEY",provider:"anthropic",baseUrl:"https://api.anthropic.com",keyUrl:"https://console.anthropic.com/settings/keys",keyPrefix:"sk-ant-",models:["claude-sonnet-4-6","claude-opus-4-7","claude-haiku-4-5"]},{id:"openai",name:"OpenAI",envKey:"OPENAI_API_KEY",provider:"openai",baseUrl:"https://api.openai.com/v1",keyUrl:"https://platform.openai.com/api-keys",keyPrefix:"sk-",models:["gpt-5","gpt-5-mini","gpt-5-nano","gpt-4o","o4-mini","o3"]},{id:"deepseek",name:"DeepSeek (\u5B98\u65B9\u76F4\u8FDE)",envKey:"DEEPSEEK_API_KEY",provider:"openai",baseUrl:"https://api.deepseek.com/v1",keyUrl:"https://platform.deepseek.com/api_keys",keyPrefix:"sk-",models:["deepseek-v4-pro","deepseek-v4-flash","deepseek-chat"]},{id:"zai",name:"Z.AI (GLM \u5B98\u65B9)",envKey:"ZAI_API_KEY",provider:"openai",baseUrl:"https://api.z.ai/api/paas/v4",keyUrl:"https://z.ai/manage-apikey/apikey-list",keyPrefix:"",models:["glm-5.1","glm-4.6","glm-4.5-air"]},{id:"gemini",name:"Google Gemini (\u5B98\u65B9\u76F4\u8FDE)",envKey:"GEMINI_API_KEY",provider:"openai",baseUrl:"https://generativelanguage.googleapis.com/v1beta/openai",keyUrl:"https://aistudio.google.com/apikey",keyPrefix:"",models:["gemini-2.5-pro","gemini-2.5-flash","gemini-2.0-flash"]},{id:"ollama",name:"Ollama (\u672C\u5730\uFF0C\u65E0\u9700 Key)",envKey:"",provider:"openai",baseUrl:"http://localhost:11434/v1",keyUrl:"https://ollama.com/library",keyPrefix:"",models:["llama3.1","qwen2.5-coder","deepseek-r1","mistral","gemma3"],noKey:true},{id:"custom",name:"\u81EA\u5B9A\u4E49 (\u4EFB\u4F55 OpenAI \u517C\u5BB9 API)",envKey:"",provider:"openai",baseUrl:"",keyUrl:"",keyPrefix:"",models:[]}],Tr=[{prefix:"anthropic/",take:4},{prefix:"openai/",take:5},{prefix:"google/",take:3},{prefix:"deepseek/",take:3},{prefix:"x-ai/",take:2},{prefix:"qwen/",take:2},{prefix:"meta-llama/",take:2},{prefix:"mistralai/",take:1}];function Dr(n){let e=c();if(e.length===0)return n;let t=/(?:-guard|-embedding|-rerank|-vision-only|:free)/i,r=[];for(let{prefix:i,take:o}of Tr){let s=e.filter(c=>c.id.startsWith(i)).filter(c=>!t.test(c.id)&&!c.id.includes("-preview")).slice(0,o);r.push(...s.map(c=>c.id));}return r.length>0?r:n}a(Dr,"buildOpenRouterModelList");function Er(n){return n.id==="openrouter"?Dr(n.models):n.models}a(Er,"resolveProviderModels");function Ia(){let n=[];for(let e of ye){if(!e.envKey)continue;let t=process.env[e.envKey];if(!t)continue;let r=ze(t).value;r&&n.push({provider:e,envKey:e.envKey,apiKey:r});}return n}a(Ia,"detectEnvKeys");function Na(n,e){for(let t of ye)if(t.keyPrefix&&n.startsWith(t.keyPrefix))return t;if(e){for(let t of ye)if(t.baseUrl&&e.startsWith(t.baseUrl))return t}for(let t of ye){if(!t.envKey)continue;let r=process.env[t.envKey];if(r&&ze(r).value===n)return t}}a(Na,"detectProviderFromApiKey");function Ua(n,e){if(n)return n;if(e)return e;for(let t of ye){if(!t.envKey)continue;let r=process.env[t.envKey];if(r&&r.trim())return r.trim()}}a(Ua,"resolveApiKey");var ot={"anthropic/claude-opus-4.7":32e3,"anthropic/claude-opus-4-7":32e3,"claude-opus-4-7":32e3,"anthropic/claude-sonnet-4.6":16e3,"anthropic/claude-sonnet-4-6":16e3,"claude-sonnet-4-6":16e3,"anthropic/claude-haiku-4.5":8192,"anthropic/claude-haiku-4-5":8192,"claude-haiku-4-5":8192,"openai/gpt-5":32e3,"openai/gpt-5-mini":32e3,"openai/gpt-5-nano":16e3,"gpt-5":32e3,"gpt-5-mini":32e3,"gpt-5-nano":16e3,"openai/gpt-4o":16384,"gpt-4o":16384,"openai/o4-mini":1e5,"o4-mini":1e5,"openai/o3":1e5,o3:1e5,"google/gemini-2.5-pro":65536,"google/gemini-2.5-flash":65536,"gemini-2.5-pro":65536,"gemini-2.5-flash":65536,"gemini-2.0-flash":8192,"deepseek/deepseek-v3.2":8192,"deepseek/deepseek-r1":8192,"deepseek-v4-flash":8192,"deepseek-v4-pro":65536,"deepseek-chat":8192,"qwen/qwen3-coder":16384,"meta-llama/llama-4-maverick":32e3},at={"deepseek-v4-pro":1e6,"deepseek-v4-flash":1e6,"deepseek-chat":1e6,"deepseek/deepseek-chat":1e6,"deepseek/deepseek-v4-pro":1e6,"deepseek/deepseek-v4-flash":1e6};function We(n){if(ot[n])return ot[n];if(n.includes("/")){let e=c().find(t=>t.id===n);if(e&&e.maxOutputTokens>0)return e.maxOutputTokens}}a(We,"resolveMaxOutput");function Or(n){if(at[n])return at[n];if(n.includes("/")){let e=c().find(t=>t.id===n);if(e&&e.contextLength>0)return e.contextLength}}a(Or,"resolveContextWindow");function Lr(n,e,t=[]){let r=e.lastIndexOf("/"),i=r>=0?e.slice(r+1):e,o=n.toLowerCase(),s=i.toLowerCase().startsWith(`${o}-`)?i:`${o}-${i}`,c=new Set(t);if(!c.has(s))return s;for(let m=2;;m++){let d=`${s}-${m}`;if(!c.has(d))return d}}a(Lr,"deriveModelPoolKey");function Ma(n,e){let t=Er(n),r=[];return t.map(i=>{let o=Lr(n.id,i,r);return r.push(o),{key:o,label:Fr(i),provider:n.provider,model:i,baseUrl:n.baseUrl,apiKey:e,maxOutputTokens:We(i),maxContextTokens:Or(i)}})}a(Ma,"buildModelPool");function Fr(n){let e=n.lastIndexOf("/"),t=e>=0?n.slice(e+1):n,r=t.split("-");if(r[0]==="claude"){let i=r[1]??"";return `Claude ${i.charAt(0).toUpperCase()+i.slice(1)}`}return t.startsWith("gpt-")?`GPT-${r.slice(1).join("-")}`:t.startsWith("gemini-")?`Gemini ${r.slice(1).join("-")}`:t.charAt(0).toUpperCase()+t.slice(1)}a(Fr,"modelDisplayName");function Ka(n){let e=join(homedir(),".code-shell"),t=join(e,"settings.json");mkdirSync(e,{recursive:true});let r={};if(existsSync(t))try{r=JSON.parse(readFileSync(t,"utf-8"));}catch{}let i=Array.isArray(r.providers)?r.providers:[],o=i;n.addedProvider&&(i.some(g=>g?.key===n.addedProvider.key)||(o=[...i,n.addedProvider]));let s=Array.isArray(r.models)?r.models:[],c=new Set(s.map(p=>p?.key)),m=n.addedModels.filter(p=>!c.has(p.key)),d={...r,activeKey:n.activeKey,model:{...typeof r.model=="object"&&r.model?r.model:{},provider:n.activeMirror.provider,name:n.activeMirror.model,apiKey:n.activeMirror.apiKey,baseUrl:n.activeMirror.baseUrl},providers:o,models:[...s,...m]},l=`${t}.${process.pid}.tmp`;writeFileSync(l,JSON.stringify(d,null,2)+`
|
|
630
|
-
`,"utf-8");try{renameSync(l,t);}catch{writeFileSync(t,JSON.stringify(d,null,2)+`
|
|
631
|
-
`,"utf-8");}}a(Ka,"appendOnboardingResult");function qa(n){let e=join(homedir(),".code-shell"),t=join(e,"settings.json"),r={};if(existsSync(t))try{r=JSON.parse(readFileSync(t,"utf-8"));}catch{}let i={...r,arena:{participants:n}};writeFileSync(t,JSON.stringify(i,null,2)+`
|
|
632
|
-
`,"utf-8");}a(qa,"saveArenaSettingsByKeys");h();var pt={claude:{provider:"openai",model:"anthropic/claude-opus-4.6",maxOutputTokens:32e3},"claude-sonnet":{provider:"openai",model:"anthropic/claude-sonnet-4.6",maxOutputTokens:16e3},"claude-haiku":{provider:"openai",model:"anthropic/claude-haiku-4.5",maxOutputTokens:8192},gpt:{provider:"openai",model:"openai/gpt-5.4",maxOutputTokens:32e3},gpt4o:{provider:"openai",model:"openai/gpt-4o",maxOutputTokens:16384},o4:{provider:"openai",model:"openai/o4-mini",maxOutputTokens:1e5},o3:{provider:"openai",model:"openai/o3",maxOutputTokens:1e5},deepseek:{provider:"openai",model:"deepseek/deepseek-v3.2",maxOutputTokens:8192},"deepseek-r1":{provider:"openai",model:"deepseek/deepseek-r1",maxOutputTokens:8192},gemini:{provider:"openai",model:"google/gemini-3.1-pro-preview",maxOutputTokens:65536},"gemini-2.5":{provider:"openai",model:"google/gemini-2.5-pro",maxOutputTokens:65536},"gemini-flash":{provider:"openai",model:"google/gemini-3-flash-preview",maxOutputTokens:65536},qwen:{provider:"openai",model:"qwen/qwen3-235b-a22b",maxOutputTokens:8192},"qwen-coder":{provider:"openai",model:"qwen/qwen3-coder",maxOutputTokens:16384},llama:{provider:"openai",model:"meta-llama/llama-4-maverick",maxOutputTokens:32e3},devstral:{provider:"openai",model:"mistralai/devstral-medium",maxOutputTokens:24e3}};function Ja(n){let e=pt[n];if(e)return e.maxOutputTokens;let t=Object.values(pt).find(r=>r.model===n);return t?t.maxOutputTokens:We(n)??8192}a(Ja,"getMaxOutputTokens");h();function Ir(n){let e=n.mode.charAt(0).toUpperCase()+n.mode.slice(1),t=[];t.push(""),t.push(R.bold(` \u2550\u2550\u2550 ${e} Conclusion \u2550\u2550\u2550`)),t.push(""),n.consensus.summary&&(t.push(` ${n.consensus.summary}`),t.push("")),n.mode==="planning"&&(t.push(...ut(n.consensus.roadmap)),n.consensus.roadmapDetails&&n.consensus.roadmapDetails.length>0&&t.push(...Mr(n.consensus.roadmapDetails)));for(let i of Kr(n))t.push(...Nr(i.title,i.items,i.color,i.icon));if(n.mode!=="planning"&&t.push(...ut(n.consensus.roadmap)),n.consensus.nextActions.length>0){t.push(R.bold.white(`
|
|
633
|
-
Next Actions:`));for(let i of n.consensus.nextActions){let o=i.priority==="high"?R.red("HIGH"):i.priority==="medium"?R.yellow("MED"):R.dim("LOW");t.push(` ${R.white("\u2192")} [${o}${R.white("]")} ${i.title}`),i.rationale&&t.push(R.dim(` ${i.rationale}`));}}t.push("");let r=n.plan?` | Lenses: ${n.plan.lenses.map(i=>i.name).join(", ")} | Sources: ${n.plan.sources.map(i=>i.kind).join(", ")}`:"";return t.push(R.dim(` Mode: ${e} | Findings: ${Ur(n)} | Models: ${n.participants.join(", ")}`+r)),t.push(""),t.join(`
|
|
634
|
-
`)}a(Ir,"formatArenaResult");function Qa(n){console.log(Ir(n));}a(Qa,"printArenaResult");function Nr(n,e,t,r){if(e.length===0)return [];let i=[];i.push(t(`
|
|
635
|
-
${n}:`));for(let o of e)i.push(t(` ${r} ${o.title}`)),o.summary&&i.push(R.dim(` ${o.summary}`)),o.challenge.length>0&&i.push(R.dim(` Challenged by: ${o.challenge.join(", ")}`));return i}a(Nr,"formatConsensusSection");function Ur(n){return n.reports.reduce((e,t)=>e+t.findings.length,0)}a(Ur,"countFindings");function ut(n){if(n.length===0)return [];let e=[];e.push(R.bold.white(`
|
|
636
|
-
Roadmap:`));for(let[t,r]of n.entries()){let i=r.priority==="high"?R.red("HIGH"):r.priority==="medium"?R.yellow("MED"):R.dim("LOW");e.push(` ${R.white("\u2192")} Phase ${t+1}: ${r.title} [${i}${R.white("]")}`),r.goal&&e.push(R.dim(` Goal: ${r.goal}`)),r.scope.length>0&&e.push(R.dim(` Scope: ${r.scope.join("; ")}`)),r.deliverables.length>0&&e.push(R.dim(` Deliverables: ${r.deliverables.join("; ")}`)),r.dependencies.length>0&&e.push(R.dim(` Dependencies: ${r.dependencies.join("; ")}`)),r.risks.length>0&&e.push(R.dim(` Risks: ${r.risks.join("; ")}`)),r.successCriteria.length>0&&e.push(R.dim(` Success: ${r.successCriteria.join("; ")}`));}return e}a(ut,"formatRoadmapSection");function Mr(n){let e=[];e.push(R.bold.white(`
|
|
637
|
-
Implementation Details:`));for(let t of n){let r=t.effort==="large"?R.red("L"):t.effort==="medium"?R.yellow("M"):R.green("S");if(e.push(`
|
|
638
|
-
${R.white("\u25B8")} ${t.phaseTitle} [${r}]`),t.objective&&e.push(R.dim(` ${t.objective}`)),t.targetFiles.length>0&&e.push(R.dim(` Files: ${t.targetFiles.join(", ")}`)),t.codeChanges.length>0)for(let i of t.codeChanges)e.push(R.dim(` \u2022 ${i}`));if(t.interfaces.length>0&&e.push(R.dim(` Interfaces: ${t.interfaces.join("; ")}`)),t.migrationSteps.length>0){e.push(R.dim(" Migration:"));for(let[i,o]of t.migrationSteps.entries())e.push(R.dim(` ${i+1}. ${o}`));}t.validation.length>0&&e.push(R.dim(` Validation: ${t.validation.join("; ")}`)),t.blockers.length>0&&e.push(R.red(` Blockers: ${t.blockers.join("; ")}`));}return e}a(Mr,"formatRoadmapDetailsSection");function Kr(n){let e=new Set(["strength","improvement","risk","question"]),t=["risk","improvement","strength","question"],r=(n.plan?.outputShape?.emphasize??[]).filter(o=>e.has(o));return qr([...r,...t]).map(o=>{switch(o){case "strength":return {kind:o,title:"Strengths",items:n.consensus.strengths,color:R.green,icon:"\u2713"};case "improvement":return {kind:o,title:"Improvements",items:n.consensus.improvements,color:R.yellow,icon:"\u2192"};case "risk":return {kind:o,title:"Risks",items:n.consensus.risks,color:R.red,icon:"\u26A0"};case "question":return {kind:o,title:"Open Questions",items:n.consensus.openQuestions,color:R.cyan,icon:"?"}}}).filter(o=>o!=null).filter(o=>o.items.length>0)}a(Kr,"getOrderedConsensusSections");function qr(n){let e=new Set,t=[];for(let r of n)e.has(r)||(e.add(r),t.push(r));return t}a(qr,"dedupeFindingKinds");function Vr(n){return e=>{switch(e.type){case "plan_resolved":n(R.dim(`Plan: ${e.plan.mode} | lenses: ${e.plan.lenses.map(t=>t.name).join(", ")} | sources: ${e.plan.sources.map(t=>t.kind).join(", ")}`+(e.plan.confidence!=="high"?` (${e.plan.confidence} confidence)`:"")));break;case "evidence_started":n(R.dim(` \xB7 collecting from ${e.source}\u2026`));break;case "evidence_source_done":{let t=e.timedOut?R.yellow(" (timed out)"):"";n(R.dim(` \xB7 ${e.source}: ${e.count} artifacts in ${e.durationMs}ms${t}`));break}case "evidence_collected":n(R.dim(`Evidence: ${e.artifacts.length} artifacts collected`));break;case "research_start":n(R.dim(`\u23F3 ${e.participant} researching...`));break;case "research_done":{let t=e.report.findings.length;n(`${e.participant}: ${R.green("done")} (${t} findings)`);break}case "context_lookup":for(let t of e.tools)n(R.dim(` \u{1F50D} ${e.participant}: ${t}`));break;case "claims_registered":n(R.dim(`${e.claimCount} claims registered`));break;case "cross_review_start":n(R.dim("\u2500\u2500 Cross Review \u2500\u2500"));break;case "cross_review_done":n(R.dim(`${e.reviews.length} peer reviews collected`));break;case "verification_start":n(R.dim("\u2500\u2500 Verification Review \u2500\u2500"));break;case "verification_done":n(R.dim(`${e.challengeCount} challenges raised`));break;case "debate_round_start":n(R.dim(`\u2500\u2500 Debate Round ${e.round} (${e.claims.length} claims) \u2500\u2500`));break;case "debate_round_done":n(R.dim(`Round ${e.round}: ${e.resolved} resolved`));break;case "adjudication_done":n(R.dim(`Adjudication: ${e.accepted} accepted, ${e.unresolved} unresolved`));break;case "planning_merge_review_start":n(R.dim("\u2500\u2500 Planning Merge Review \u2500\u2500"));break;case "planning_merge_review_done":n(R.dim(`${e.mergeCount} merge suggestions collected`));break;case "roadmap_expansion_start":n(R.dim(`\u2500\u2500 Expanding ${e.phaseCount} roadmap phases \u2500\u2500`));break;case "roadmap_expansion_done":n(R.dim(`${e.detailCount} phase details generated`));break;case "consensus_start":n(R.dim("\u23F3 Building consensus..."));break;}}}a(Vr,"createProgressRenderer");function Za(n){Vr(e=>console.log(` ${e}`))(n);}a(Za,"renderProgress");h();function rc(n){let e=[],t=n.mode.charAt(0).toUpperCase()+n.mode.slice(1);e.push(`## Arena ${t} Result`),e.push(`**Topic:** ${n.topic}`),e.push(`**Models:** ${n.participants.join(" vs ")}`),e.push("");let r=n.consensus;if(r.subjectSummary){let i=n.plan.outputShape.overviewLabel??(n.mode==="review"?"What Changed":n.mode==="planning"?"Current Scope":"Problem Framing");e.push(`### ${i}`),e.push(r.subjectSummary),e.push("");}if(r.summary&&(e.push("### Overall Assessment"),e.push(r.summary),e.push("")),n.mode==="planning"&&r.roadmap.length>0){e.push("### Roadmap");for(let[i,o]of r.roadmap.entries())e.push(...mt(i,o));if(e.push(""),r.roadmapDetails&&r.roadmapDetails.length>0){e.push("### Implementation Details");for(let i of r.roadmapDetails)e.push(...Br(i));e.push("");}}for(let i of Yr(n)){e.push(`### ${i.title}`);for(let o of i.items)e.push(`- **${o.title}**: ${o.summary}`);e.push("");}if(n.mode!=="planning"&&r.roadmap.length>0){e.push("### Roadmap");for(let[i,o]of r.roadmap.entries())e.push(...mt(i,o));e.push("");}if(r.nextActions.length>0){e.push("### Next Actions");for(let i of r.nextActions){let o=i.priority==="high"?"\u{1F534}":i.priority==="medium"?"\u{1F7E1}":"\u26AA";e.push(`- ${o} **${i.title}**: ${i.rationale}`);}e.push("");}if(n.reports.some(i=>i.findings.length>0)){e.push("---"),e.push("### Participant Findings");for(let i of n.reports){if(i.findings.length===0){e.push(`
|
|
639
|
-
**${i.participant}**: ${i.contextSummary||"(no findings)"}`);continue}e.push(`
|
|
640
|
-
**${i.participant}** (${i.findings.length} findings)`),i.contextSummary&&e.push(`> ${i.contextSummary}`);for(let o of i.findings){let s=o.severity?`/${o.severity}`:"";e.push(`- [${o.kind}${s}] **${o.title}**: ${o.summary}`);}}}return e.join(`
|
|
641
|
-
`)}a(rc,"formatArenaResultForSession");function mt(n,e){let t=e.priority==="high"?"High":e.priority==="medium"?"Medium":"Low",r=[`#### Phase ${n+1}: ${e.title} (${t} priority)`];return e.goal&&r.push(`Goal: ${e.goal}`),e.scope.length>0&&r.push(`Scope: ${e.scope.join("; ")}`),e.deliverables.length>0&&r.push(`Deliverables: ${e.deliverables.join("; ")}`),e.dependencies.length>0&&r.push(`Dependencies: ${e.dependencies.join("; ")}`),e.risks.length>0&&r.push(`Risks: ${e.risks.join("; ")}`),e.successCriteria.length>0&&r.push(`Success Criteria: ${e.successCriteria.join("; ")}`),r.push(""),r}a(mt,"formatRoadmapPhase");function Br(n){let e=n.effort==="large"?"Large":n.effort==="small"?"Small":"Medium",t=[`#### ${n.phaseTitle} (${e} effort)`];if(n.objective&&t.push(n.objective),n.targetFiles.length>0&&t.push(`**Target files:** ${n.targetFiles.map(r=>"`"+r+"`").join(", ")}`),n.codeChanges.length>0){t.push("**Code changes:**");for(let r of n.codeChanges)t.push(`- ${r}`);}if(n.interfaces.length>0&&t.push(`**Interfaces:** ${n.interfaces.join("; ")}`),n.migrationSteps.length>0){t.push("**Migration steps:**");for(let[r,i]of n.migrationSteps.entries())t.push(`${r+1}. ${i}`);}return n.validation.length>0&&t.push(`**Validation:** ${n.validation.join("; ")}`),n.blockers.length>0&&t.push(`**Blockers:** ${n.blockers.join("; ")}`),t.push(""),t}a(Br,"formatPhaseDetail");function Yr(n){let e=new Set(["strength","improvement","risk","question"]),t=["risk","improvement","strength","question"],r=(n.plan?.outputShape?.emphasize??[]).filter(s=>e.has(s));return zr([...r,...t]).map(s=>{switch(s){case "strength":return {kind:s,title:"\u2713 Strengths",items:n.consensus.strengths};case "improvement":return {kind:s,title:"\u2192 Improvements",items:n.consensus.improvements};case "risk":return {kind:s,title:"\u26A0 Risks",items:n.consensus.risks};case "question":return {kind:s,title:"? Open Questions",items:n.consensus.openQuestions}}}).filter(s=>s!=null).filter(s=>s.items.length>0)}a(Yr,"getOrderedConsensusSections");function zr(n){let e=new Set,t=[];for(let r of n)e.has(r)||(e.add(r),t.push(r));return t}a(zr,"dedupeFindingKinds");export{Ve as A,po as B,uo as C,bo as D,Be as E,Gn as F,Hn as G,Ye as H,Ce as I,Zn as J,ze as K,$a as L,Ia as M,Na as N,Ua as O,Ma as P,Ka as Q,qa as R,pt as S,Ja as T,Ir as U,Qa as V,Vr as W,Za as X,rc as Y,Xe as a,F as b,U as c,me as d,ge as e,fe as f,$i as g,ln as h,we as i,pn as j,fn as k,hn as l,yn as m,In as n,Vn as o,Ys as p,Zs as q,Ke as r,Yn as s,zn as t,G as u,oo as v,pe as w,vr as x,Jn as y,Wn as z};
|