@cjhyy/code-shell 0.1.0-alpha.0
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 +109 -0
- package/LICENSE +21 -0
- package/README.md +177 -0
- package/dist/agent/coordinator.d.ts +49 -0
- package/dist/anthropic-NENYS535.js +9 -0
- package/dist/anthropic-XMTTVNSH.cjs +9 -0
- package/dist/arena/arena.d.ts +43 -0
- package/dist/arena/context/context-tools.d.ts +16 -0
- package/dist/arena/detect-mode.d.ts +20 -0
- package/dist/arena/digest-builder.d.ts +25 -0
- package/dist/arena/index.cjs +103 -0
- package/dist/arena/index.d.ts +29 -0
- package/dist/arena/index.js +103 -0
- package/dist/arena/iterate/convergence.d.ts +25 -0
- package/dist/arena/iterate/formats/index.d.ts +22 -0
- package/dist/arena/iterate/index.d.ts +11 -0
- package/dist/arena/iterate/iterative-arena.d.ts +23 -0
- package/dist/arena/iterate/parse.d.ts +42 -0
- package/dist/arena/iterate/phases/argue.d.ts +22 -0
- package/dist/arena/iterate/phases/revise.d.ts +16 -0
- package/dist/arena/iterate/phases/tournament.d.ts +34 -0
- package/dist/arena/iterate/tools/web-tools.d.ts +13 -0
- package/dist/arena/iterate/types.d.ts +152 -0
- package/dist/arena/ledger.d.ts +47 -0
- package/dist/arena/lenses/architecture.d.ts +5 -0
- package/dist/arena/lenses/engineering.d.ts +5 -0
- package/dist/arena/lenses/general.d.ts +5 -0
- package/dist/arena/lenses/index.d.ts +16 -0
- package/dist/arena/lenses/product.d.ts +5 -0
- package/dist/arena/model-presets.d.ts +14 -0
- package/dist/arena/phases/adjudication.d.ts +24 -0
- package/dist/arena/phases/build-consensus.d.ts +29 -0
- package/dist/arena/phases/claim-registry.d.ts +26 -0
- package/dist/arena/phases/cross-review.d.ts +45 -0
- package/dist/arena/phases/debate-rounds.d.ts +27 -0
- package/dist/arena/phases/participant-research.d.ts +38 -0
- package/dist/arena/phases/planning-detail-expansion.d.ts +38 -0
- package/dist/arena/planner.d.ts +27 -0
- package/dist/arena/providers/docs.d.ts +6 -0
- package/dist/arena/providers/git.d.ts +8 -0
- package/dist/arena/providers/index.d.ts +16 -0
- package/dist/arena/providers/none.d.ts +7 -0
- package/dist/arena/providers/repo.d.ts +6 -0
- package/dist/arena/render/session.d.ts +17 -0
- package/dist/arena/render/terminal.d.ts +33 -0
- package/dist/arena/strategies/discussion.d.ts +25 -0
- package/dist/arena/strategies/index.d.ts +15 -0
- package/dist/arena/strategies/language-wrapper.d.ts +17 -0
- package/dist/arena/strategies/lens-wrapper.d.ts +16 -0
- package/dist/arena/strategies/planning.d.ts +30 -0
- package/dist/arena/strategies/review.d.ts +26 -0
- package/dist/arena/strategies/utils.d.ts +34 -0
- package/dist/arena/tools/selector.d.ts +17 -0
- package/dist/arena/transitions.d.ts +48 -0
- package/dist/arena/types.d.ts +499 -0
- package/dist/arena-46QQ6BZQ.js +261 -0
- package/dist/arena-HZZZ2GJH.cjs +261 -0
- package/dist/bootstrap/setup.d.ts +14 -0
- package/dist/bootstrap/state.d.ts +160 -0
- package/dist/bridge-4ZRXVWBN.js +98 -0
- package/dist/bridge-W476QDFH.cjs +98 -0
- package/dist/chunk-3EAEC566.cjs +136 -0
- package/dist/chunk-3EUDE77E.cjs +1252 -0
- package/dist/chunk-3QR52LL5.cjs +105 -0
- package/dist/chunk-4PKZPFCD.js +136 -0
- package/dist/chunk-4RRUP4MM.js +86 -0
- package/dist/chunk-4SFPFHMG.js +132 -0
- package/dist/chunk-5LHVI777.cjs +246 -0
- package/dist/chunk-6JOOLG6F.js +104 -0
- package/dist/chunk-6ZIROYXX.js +207 -0
- package/dist/chunk-7RMAR2Y3.js +6511 -0
- package/dist/chunk-BE6IPRDM.js +224 -0
- package/dist/chunk-BHGIJ2DJ.js +41 -0
- package/dist/chunk-BMH65OVB.cjs +224 -0
- package/dist/chunk-C7JBCO5V.js +80 -0
- package/dist/chunk-CSO5EOEP.cjs +132 -0
- package/dist/chunk-DI7RDLOS.js +47 -0
- package/dist/chunk-DICG4AB7.cjs +73 -0
- package/dist/chunk-EL2RL5DG.cjs +101 -0
- package/dist/chunk-FGZGCFJX.cjs +207 -0
- package/dist/chunk-FUOKLKR2.js +101 -0
- package/dist/chunk-FVP7XJGS.cjs +4577 -0
- package/dist/chunk-HD7MT5XU.cjs +86 -0
- package/dist/chunk-IJSHQGMP.cjs +45 -0
- package/dist/chunk-IMMTBZ33.cjs +63 -0
- package/dist/chunk-J5XW6UYL.js +291 -0
- package/dist/chunk-JT2WSQSR.cjs +335 -0
- package/dist/chunk-KO2FPF7G.js +93 -0
- package/dist/chunk-LRAY5IYC.cjs +291 -0
- package/dist/chunk-NG73UR3L.cjs +285 -0
- package/dist/chunk-NZ4DQ72D.cjs +664 -0
- package/dist/chunk-O6F2EF2Z.js +73 -0
- package/dist/chunk-OG4MIQJ6.js +335 -0
- package/dist/chunk-QHDYFC5U.cjs +6511 -0
- package/dist/chunk-R32DJSJE.cjs +41 -0
- package/dist/chunk-S74VVJBF.js +285 -0
- package/dist/chunk-SK62UVS6.js +105 -0
- package/dist/chunk-SQZHPD3S.js +4577 -0
- package/dist/chunk-UK2SU23S.cjs +93 -0
- package/dist/chunk-VKGNCYRL.js +258 -0
- package/dist/chunk-WFQF3RT4.cjs +104 -0
- package/dist/chunk-WHRTARDJ.cjs +258 -0
- package/dist/chunk-WRZJUQ5Z.js +664 -0
- package/dist/chunk-X4HAERTQ.js +63 -0
- package/dist/chunk-XHC2JMEC.cjs +80 -0
- package/dist/chunk-YZ25SSWJ.js +222 -0
- package/dist/chunk-ZJV3YSY3.cjs +222 -0
- package/dist/chunk-ZRSSGYA5.js +246 -0
- package/dist/chunk-ZXYDDJEJ.js +1252 -0
- package/dist/cli/commands/arena.d.ts +29 -0
- package/dist/cli/commands/builtin/advanced-commands.d.ts +5 -0
- package/dist/cli/commands/builtin/core-commands.d.ts +5 -0
- package/dist/cli/commands/builtin/extra-commands.d.ts +6 -0
- package/dist/cli/commands/builtin/git-commands.d.ts +5 -0
- package/dist/cli/commands/builtin/more-commands.d.ts +7 -0
- package/dist/cli/commands/builtin/permissions-command.d.ts +5 -0
- package/dist/cli/commands/builtin/utility-commands.d.ts +5 -0
- package/dist/cli/commands/registry.d.ts +64 -0
- package/dist/cli/commands/repl.d.ts +21 -0
- package/dist/cli/commands/run.d.ts +21 -0
- package/dist/cli/commands/runs.d.ts +14 -0
- package/dist/cli/cost-tracker.d.ts +57 -0
- package/dist/cli/exit.d.ts +12 -0
- package/dist/cli/input/ndjson-reader.d.ts +31 -0
- package/dist/cli/input-compiler.d.ts +5 -0
- package/dist/cli/main.cjs +19674 -0
- package/dist/cli/main.d.ts +5 -0
- package/dist/cli/main.js +19674 -0
- package/dist/cli/onboarding.d.ts +26 -0
- package/dist/cli/output/renderer.d.ts +28 -0
- package/dist/cli/output/terminal-ui.d.ts +50 -0
- package/dist/cli/updater.d.ts +10 -0
- package/dist/compaction-44I55TLI.cjs +32 -0
- package/dist/compaction-CCHWA4G6.js +32 -0
- package/dist/context/compaction.d.ts +83 -0
- package/dist/context/manager.d.ts +99 -0
- package/dist/context/token-counter.d.ts +27 -0
- package/dist/coordinator-5HY7ALO2.js +7 -0
- package/dist/coordinator-INDLPVMF.cjs +7 -0
- package/dist/cost-tracker-IWYAUPXH.js +9 -0
- package/dist/cost-tracker-JXTJQQWE.cjs +9 -0
- package/dist/cron/scheduler.d.ts +34 -0
- package/dist/devtools-KIY3LWQJ.js +6 -0
- package/dist/devtools-LRP47DDV.cjs +6 -0
- package/dist/engine/cost-store.d.ts +22 -0
- package/dist/engine/engine.d.ts +101 -0
- package/dist/engine/model-facade.d.ts +24 -0
- package/dist/engine/query.d.ts +50 -0
- package/dist/engine/streaming-tool-queue.d.ts +34 -0
- package/dist/engine/token-budget.d.ts +22 -0
- package/dist/engine/tool-summary.d.ts +13 -0
- package/dist/engine/turn-loop.d.ts +62 -0
- package/dist/engine/turn-state.d.ts +14 -0
- package/dist/exceptions.d.ts +44 -0
- package/dist/file-history-HZWO2WQ5.js +7 -0
- package/dist/file-history-UQQILIY7.cjs +7 -0
- package/dist/git/utils.d.ts +35 -0
- package/dist/git/worktree.d.ts +36 -0
- package/dist/hooks/events.d.ts +35 -0
- package/dist/hooks/registry.d.ts +15 -0
- package/dist/index.cjs +336 -0
- package/dist/index.d.ts +64 -0
- package/dist/index.js +336 -0
- package/dist/ink/Ansi.d.ts +10 -0
- package/dist/ink/bidi.d.ts +15 -0
- package/dist/ink/clearTerminal.d.ts +13 -0
- package/dist/ink/colorize.d.ts +16 -0
- package/dist/ink/components/AlternateScreen.d.ts +21 -0
- package/dist/ink/components/App.d.ts +70 -0
- package/dist/ink/components/AppContext.d.ts +11 -0
- package/dist/ink/components/Box.d.ts +49 -0
- package/dist/ink/components/Button.d.ts +36 -0
- package/dist/ink/components/ClockContext.d.ts +9 -0
- package/dist/ink/components/CursorDeclarationContext.d.ts +22 -0
- package/dist/ink/components/ErrorOverview.d.ts +5 -0
- package/dist/ink/components/Link.d.ts +7 -0
- package/dist/ink/components/Newline.d.ts +12 -0
- package/dist/ink/components/NoSelect.d.ts +19 -0
- package/dist/ink/components/RawAnsi.d.ts +16 -0
- package/dist/ink/components/ScrollBox.d.ts +78 -0
- package/dist/ink/components/Spacer.d.ts +5 -0
- package/dist/ink/components/StdinContext.d.ts +27 -0
- package/dist/ink/components/TerminalFocusContext.d.ts +10 -0
- package/dist/ink/components/TerminalSizeContext.d.ts +5 -0
- package/dist/ink/components/Text.d.ts +55 -0
- package/dist/ink/constants.d.ts +1 -0
- package/dist/ink/cursor.d.ts +8 -0
- package/dist/ink/devtools.d.ts +5 -0
- package/dist/ink/dom.d.ts +76 -0
- package/dist/ink/events/click-event.d.ts +31 -0
- package/dist/ink/events/dispatcher.d.ts +40 -0
- package/dist/ink/events/emitter.d.ts +5 -0
- package/dist/ink/events/event-handlers.d.ts +46 -0
- package/dist/ink/events/event.d.ts +5 -0
- package/dist/ink/events/focus-event.d.ts +13 -0
- package/dist/ink/events/input-event.d.ts +30 -0
- package/dist/ink/events/keyboard-event.d.ts +19 -0
- package/dist/ink/events/paste-event.d.ts +8 -0
- package/dist/ink/events/resize-event.d.ts +9 -0
- package/dist/ink/events/terminal-event.d.ts +54 -0
- package/dist/ink/events/terminal-focus-event.d.ts +13 -0
- package/dist/ink/focus.d.ts +43 -0
- package/dist/ink/frame.d.ts +94 -0
- package/dist/ink/get-max-width.d.ts +17 -0
- package/dist/ink/hit-test.d.ts +33 -0
- package/dist/ink/hooks/use-animation-frame.d.ts +26 -0
- package/dist/ink/hooks/use-app.d.ts +5 -0
- package/dist/ink/hooks/use-declared-cursor.d.ts +26 -0
- package/dist/ink/hooks/use-input.d.ts +37 -0
- package/dist/ink/hooks/use-interval.d.ts +18 -0
- package/dist/ink/hooks/use-search-highlight.d.ts +30 -0
- package/dist/ink/hooks/use-selection.d.ts +39 -0
- package/dist/ink/hooks/use-stdin.d.ts +5 -0
- package/dist/ink/hooks/use-tab-status.d.ts +13 -0
- package/dist/ink/hooks/use-terminal-focus.d.ts +10 -0
- package/dist/ink/hooks/use-terminal-title.d.ts +12 -0
- package/dist/ink/hooks/use-terminal-viewport.d.ts +29 -0
- package/dist/ink/index.d.ts +20 -0
- package/dist/ink/ink.d.ts +369 -0
- package/dist/ink/instances.d.ts +3 -0
- package/dist/ink/layout/engine.d.ts +2 -0
- package/dist/ink/layout/geometry.d.ts +30 -0
- package/dist/ink/layout/node.d.ts +125 -0
- package/dist/ink/layout/yoga.d.ts +56 -0
- package/dist/ink/line-width-cache.d.ts +1 -0
- package/dist/ink/log-update.d.ts +17 -0
- package/dist/ink/measure-element.d.ts +16 -0
- package/dist/ink/measure-text.d.ts +6 -0
- package/dist/ink/node-cache.d.ts +20 -0
- package/dist/ink/optimizer.d.ts +15 -0
- package/dist/ink/output.d.ts +119 -0
- package/dist/ink/parse-keypress.d.ts +111 -0
- package/dist/ink/reconciler.d.ts +11 -0
- package/dist/ink/render-border.d.ts +24 -0
- package/dist/ink/render-node-to-output.d.ts +45 -0
- package/dist/ink/render-to-screen.d.ts +46 -0
- package/dist/ink/renderer.d.ts +14 -0
- package/dist/ink/root.d.ts +74 -0
- package/dist/ink/screen.d.ts +269 -0
- package/dist/ink/searchHighlight.d.ts +20 -0
- package/dist/ink/selection.d.ts +229 -0
- package/dist/ink/squash-text-nodes.d.ts +22 -0
- package/dist/ink/stringWidth.d.ts +1 -0
- package/dist/ink/styles.d.ts +306 -0
- package/dist/ink/supports-hyperlinks.d.ts +13 -0
- package/dist/ink/tabstops.d.ts +1 -0
- package/dist/ink/terminal-focus-state.d.ts +6 -0
- package/dist/ink/terminal-querier.d.ts +129 -0
- package/dist/ink/terminal.d.ts +46 -0
- package/dist/ink/termio/ansi.d.ts +65 -0
- package/dist/ink/termio/csi.d.ts +165 -0
- package/dist/ink/termio/dec.d.ts +37 -0
- package/dist/ink/termio/esc.d.ts +12 -0
- package/dist/ink/termio/osc.d.ts +173 -0
- package/dist/ink/termio/parser.d.ts +35 -0
- package/dist/ink/termio/sgr.d.ts +8 -0
- package/dist/ink/termio/tokenize.d.ts +45 -0
- package/dist/ink/termio/types.d.ts +190 -0
- package/dist/ink/termio.d.ts +24 -0
- package/dist/ink/useTerminalNotification.d.ts +28 -0
- package/dist/ink/warn.d.ts +1 -0
- package/dist/ink/widest-line.d.ts +1 -0
- package/dist/ink/wrap-text.d.ts +2 -0
- package/dist/ink/wrapAnsi.d.ts +7 -0
- package/dist/llm/client-base.d.ts +22 -0
- package/dist/llm/client-factory.d.ts +10 -0
- package/dist/llm/model-pool.d.ts +60 -0
- package/dist/llm/providers/anthropic.d.ts +19 -0
- package/dist/llm/providers/openai.d.ts +19 -0
- package/dist/llm/types.d.ts +21 -0
- package/dist/loader-DXFSUB4R.cjs +91 -0
- package/dist/loader-J5UID6CV.js +91 -0
- package/dist/logging/logger.d.ts +19 -0
- package/dist/lsp/client.d.ts +41 -0
- package/dist/lsp/manager.d.ts +40 -0
- package/dist/lsp/servers.d.ts +16 -0
- package/dist/manager-ETWDOCHN.cjs +9 -0
- package/dist/manager-HGMQNEJB.cjs +11 -0
- package/dist/manager-HUAQOORS.js +9 -0
- package/dist/manager-VJIZ2CQC.js +11 -0
- package/dist/mcp-manager-G4G2QASE.cjs +8 -0
- package/dist/mcp-manager-OKXHHWYR.js +8 -0
- package/dist/memory-AP747G5H.js +7 -0
- package/dist/memory-BH3BYUN5.cjs +7 -0
- package/dist/native-ts/yoga-layout/enums.d.ts +117 -0
- package/dist/native-ts/yoga-layout/index.d.ts +270 -0
- package/dist/onboarding-6WEPV7C2.js +11 -0
- package/dist/onboarding-QM5DY2TU.cjs +11 -0
- package/dist/openai-5HQGBL4L.js +9 -0
- package/dist/openai-656VWUQW.cjs +9 -0
- package/dist/plugins/loader.d.ts +72 -0
- package/dist/plugins/types.d.ts +4 -0
- package/dist/preset/index.d.ts +60 -0
- package/dist/product/define.d.ts +60 -0
- package/dist/product/index.cjs +23 -0
- package/dist/product/index.d.ts +5 -0
- package/dist/product/index.js +23 -0
- package/dist/product/types.d.ts +116 -0
- package/dist/prompt/composer.d.ts +42 -0
- package/dist/prompt/instruction-scanner.d.ts +54 -0
- package/dist/prompt/section-cache.d.ts +15 -0
- package/dist/prompt/section-loader.d.ts +26 -0
- package/dist/protocol/client.d.ts +64 -0
- package/dist/protocol/index.d.ts +4 -0
- package/dist/protocol/server.d.ts +49 -0
- package/dist/protocol/transport.d.ts +36 -0
- package/dist/protocol/types.d.ts +150 -0
- package/dist/react-compiler-runtime-shim.d.ts +1 -0
- package/dist/remote/bridge.d.ts +37 -0
- package/dist/run/ArtifactTracker.d.ts +38 -0
- package/dist/run/CheckpointWriter.d.ts +53 -0
- package/dist/run/EngineRunner.d.ts +70 -0
- package/dist/run/Evaluator.d.ts +56 -0
- package/dist/run/FileRunStore.d.ts +39 -0
- package/dist/run/Heartbeat.d.ts +54 -0
- package/dist/run/RunApprovalBackend.d.ts +53 -0
- package/dist/run/RunLock.d.ts +40 -0
- package/dist/run/RunManager.d.ts +76 -0
- package/dist/run/RunQueue.d.ts +27 -0
- package/dist/run/RunStore.d.ts +25 -0
- package/dist/run/factory.d.ts +57 -0
- package/dist/run/index.cjs +50 -0
- package/dist/run/index.d.ts +17 -0
- package/dist/run/index.js +50 -0
- package/dist/run/types.d.ts +136 -0
- package/dist/services/analytics.d.ts +29 -0
- package/dist/services/auto-dream.d.ts +35 -0
- package/dist/services/compact.d.ts +56 -0
- package/dist/services/diagnostics.d.ts +41 -0
- package/dist/services/extract-memories.d.ts +27 -0
- package/dist/services/index.d.ts +11 -0
- package/dist/services/notifier.d.ts +25 -0
- package/dist/services/oauth.d.ts +27 -0
- package/dist/services/session-memory.d.ts +37 -0
- package/dist/session/file-history.d.ts +41 -0
- package/dist/session/memory.d.ts +45 -0
- package/dist/session/session-manager.d.ts +23 -0
- package/dist/session/transcript.d.ts +39 -0
- package/dist/session-manager-JIIBCFTC.js +8 -0
- package/dist/session-manager-UQKB564H.cjs +8 -0
- package/dist/settings/manager.d.ts +27 -0
- package/dist/settings/schema.d.ts +676 -0
- package/dist/skills/index.d.ts +7 -0
- package/dist/skills/matcher.d.ts +21 -0
- package/dist/skills/scanner.d.ts +30 -0
- package/dist/skills-63RBYQRX.js +13 -0
- package/dist/skills-V3BPLW3D.cjs +13 -0
- package/dist/token-counter-CHAXW5O7.cjs +13 -0
- package/dist/token-counter-DSOZGZ5Q.js +13 -0
- package/dist/tool-summary-5P2GKRA4.cjs +31 -0
- package/dist/tool-summary-J2ICNMWP.js +31 -0
- package/dist/tool-system/builtin/agent.d.ts +35 -0
- package/dist/tool-system/builtin/arena.d.ts +18 -0
- package/dist/tool-system/builtin/ask-user.d.ts +12 -0
- package/dist/tool-system/builtin/bash.d.ts +6 -0
- package/dist/tool-system/builtin/brief.d.ts +6 -0
- package/dist/tool-system/builtin/config.d.ts +6 -0
- package/dist/tool-system/builtin/cron.d.ts +10 -0
- package/dist/tool-system/builtin/edit.d.ts +6 -0
- package/dist/tool-system/builtin/file-cache.d.ts +11 -0
- package/dist/tool-system/builtin/glob.d.ts +6 -0
- package/dist/tool-system/builtin/grep.d.ts +6 -0
- package/dist/tool-system/builtin/index.d.ts +10 -0
- package/dist/tool-system/builtin/lsp.d.ts +6 -0
- package/dist/tool-system/builtin/mcp-tools.d.ts +10 -0
- package/dist/tool-system/builtin/notebook-edit.d.ts +6 -0
- package/dist/tool-system/builtin/plan.d.ts +18 -0
- package/dist/tool-system/builtin/powershell.d.ts +6 -0
- package/dist/tool-system/builtin/read.d.ts +6 -0
- package/dist/tool-system/builtin/remote-trigger.d.ts +6 -0
- package/dist/tool-system/builtin/repl.d.ts +6 -0
- package/dist/tool-system/builtin/send-message.d.ts +6 -0
- package/dist/tool-system/builtin/skill.d.ts +6 -0
- package/dist/tool-system/builtin/sleep.d.ts +6 -0
- package/dist/tool-system/builtin/task.d.ts +51 -0
- package/dist/tool-system/builtin/tool-search.d.ts +12 -0
- package/dist/tool-system/builtin/web-fetch.d.ts +6 -0
- package/dist/tool-system/builtin/web-search.d.ts +6 -0
- package/dist/tool-system/builtin/worktree.d.ts +10 -0
- package/dist/tool-system/builtin/write.d.ts +6 -0
- package/dist/tool-system/executor.d.ts +25 -0
- package/dist/tool-system/mcp-manager.d.ts +50 -0
- package/dist/tool-system/permission.d.ts +69 -0
- package/dist/tool-system/registry.d.ts +24 -0
- package/dist/tool-system/validation.d.ts +5 -0
- package/dist/types.d.ts +260 -0
- package/dist/ui/App.d.ts +14 -0
- package/dist/ui/components/AgentBlock.d.ts +32 -0
- package/dist/ui/components/BabyHand.d.ts +1 -0
- package/dist/ui/components/Banner.d.ts +8 -0
- package/dist/ui/components/CodeBlock.d.ts +7 -0
- package/dist/ui/components/CommandInput.d.ts +13 -0
- package/dist/ui/components/ContextUsageBar.d.ts +7 -0
- package/dist/ui/components/DiffView.d.ts +6 -0
- package/dist/ui/components/DogLogo.d.ts +1 -0
- package/dist/ui/components/FullscreenLayout.d.ts +51 -0
- package/dist/ui/components/KunHead.d.ts +1 -0
- package/dist/ui/components/KunLogo.d.ts +1 -0
- package/dist/ui/components/MessageContent.d.ts +22 -0
- package/dist/ui/components/PermissionDialog.d.ts +8 -0
- package/dist/ui/components/PermissionPrompt.d.ts +8 -0
- package/dist/ui/components/ScrollView.d.ts +34 -0
- package/dist/ui/components/Spinner.d.ts +8 -0
- package/dist/ui/components/SpinnerWithVerb.d.ts +13 -0
- package/dist/ui/components/StatusLine.d.ts +22 -0
- package/dist/ui/components/StructuredDiff.d.ts +8 -0
- package/dist/ui/components/TaskList.d.ts +6 -0
- package/dist/ui/components/TextInput.d.ts +9 -0
- package/dist/ui/components/ThemedBox.d.ts +19 -0
- package/dist/ui/components/ThemedText.d.ts +26 -0
- package/dist/ui/components/ToolCall.d.ts +21 -0
- package/dist/ui/components/VirtualMessageList.d.ts +24 -0
- package/dist/ui/hooks/useCostSummary.d.ts +1 -0
- package/dist/ui/index.d.ts +12 -0
- package/dist/ui/input-history.d.ts +61 -0
- package/dist/ui/store.d.ts +82 -0
- package/dist/ui/terminal-renderer.d.ts +45 -0
- package/dist/ui/theme.d.ts +36 -0
- package/dist/ui/vim-mode.d.ts +25 -0
- package/dist/updater-AVD4LKTQ.js +183 -0
- package/dist/updater-URVNPDPW.cjs +183 -0
- package/dist/utils/debug.d.ts +57 -0
- package/dist/utils/earlyInput.d.ts +43 -0
- package/dist/utils/env.d.ts +24 -0
- package/dist/utils/envUtils.d.ts +51 -0
- package/dist/utils/execFileNoThrow.d.ts +39 -0
- package/dist/utils/format.d.ts +44 -0
- package/dist/utils/fullscreen.d.ts +47 -0
- package/dist/utils/intl.d.ts +22 -0
- package/dist/utils/lockfile.d.ts +15 -0
- package/dist/utils/log.d.ts +56 -0
- package/dist/utils/semver.d.ts +5 -0
- package/dist/utils/sliceAnsi.d.ts +12 -0
- package/dist/utils/systemTheme.d.ts +40 -0
- package/dist/utils/theme.d.ts +91 -0
- package/dist/utils/toolDisplay.d.ts +31 -0
- package/dist/utils/truncate.d.ts +40 -0
- package/dist/voice/index.d.ts +35 -0
- package/dist/voice-KTZ7PAGO.js +80 -0
- package/dist/voice-KZE25GKB.cjs +80 -0
- package/package.json +130 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunkHD7MT5XUcjs = require('./chunk-HD7MT5XU.cjs');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunkIJSHQGMPcjs = require('./chunk-IJSHQGMP.cjs');
|
|
10
|
+
|
|
11
|
+
// src/context/compaction.ts
|
|
12
|
+
var compaction_exports = {};
|
|
13
|
+
_chunkIJSHQGMPcjs.__export.call(void 0, compaction_exports, {
|
|
14
|
+
adjustIndexToPreserveAPIInvariants: () => adjustIndexToPreserveAPIInvariants,
|
|
15
|
+
applySummaryCompaction: () => applySummaryCompaction,
|
|
16
|
+
applyToolResultBudget: () => applyToolResultBudget,
|
|
17
|
+
buildSummarizationPrompt: () => buildSummarizationPrompt,
|
|
18
|
+
dropOldestRounds: () => dropOldestRounds,
|
|
19
|
+
estimateTokens: () => estimateTokens,
|
|
20
|
+
extractReferencedFilePaths: () => extractReferencedFilePaths,
|
|
21
|
+
groupMessagesByApiRound: () => groupMessagesByApiRound,
|
|
22
|
+
microcompact: () => microcompact,
|
|
23
|
+
snipCompact: () => snipCompact,
|
|
24
|
+
truncateToolResult: () => truncateToolResult,
|
|
25
|
+
windowCompact: () => windowCompact
|
|
26
|
+
});
|
|
27
|
+
function estimateTokens(messages) {
|
|
28
|
+
return Math.ceil(_chunkHD7MT5XUcjs.estimateMessagesTokens.call(void 0, messages) * (4 / 3));
|
|
29
|
+
}
|
|
30
|
+
function adjustIndexToPreserveAPIInvariants(messages, startIndex) {
|
|
31
|
+
let adjusted = startIndex;
|
|
32
|
+
const neededToolUseIds = /* @__PURE__ */ new Set();
|
|
33
|
+
for (let i = adjusted; i < messages.length; i++) {
|
|
34
|
+
const msg = messages[i];
|
|
35
|
+
if (!Array.isArray(msg.content)) continue;
|
|
36
|
+
for (const block of msg.content) {
|
|
37
|
+
if (block.type === "tool_result" && block.tool_use_id) {
|
|
38
|
+
neededToolUseIds.add(block.tool_use_id);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
for (let i = adjusted; i < messages.length; i++) {
|
|
43
|
+
const msg = messages[i];
|
|
44
|
+
if (!Array.isArray(msg.content)) continue;
|
|
45
|
+
for (const block of msg.content) {
|
|
46
|
+
if (block.type === "tool_use" && block.id) {
|
|
47
|
+
neededToolUseIds.delete(block.id);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (neededToolUseIds.size === 0) return adjusted;
|
|
52
|
+
for (let i = adjusted - 1; i >= 0 && neededToolUseIds.size > 0; i--) {
|
|
53
|
+
const msg = messages[i];
|
|
54
|
+
if (msg.role !== "assistant" || !Array.isArray(msg.content)) continue;
|
|
55
|
+
for (const block of msg.content) {
|
|
56
|
+
if (block.type === "tool_use" && block.id && neededToolUseIds.has(block.id)) {
|
|
57
|
+
neededToolUseIds.delete(block.id);
|
|
58
|
+
if (i < adjusted) adjusted = i;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return adjusted;
|
|
63
|
+
}
|
|
64
|
+
function snipCompact(messages, keepFirstN = 3, keepLastM = 8) {
|
|
65
|
+
if (messages.length <= keepFirstN + keepLastM + 1) return messages;
|
|
66
|
+
let lastStart = messages.length - keepLastM;
|
|
67
|
+
lastStart = adjustIndexToPreserveAPIInvariants(messages, lastStart);
|
|
68
|
+
if (lastStart <= keepFirstN) return messages;
|
|
69
|
+
const snippedCount = lastStart - keepFirstN;
|
|
70
|
+
const snipMarker = {
|
|
71
|
+
role: "user",
|
|
72
|
+
content: `<system-reminder>[${snippedCount} messages snipped to save context. Use the transcript file to review details if needed.]</system-reminder>`
|
|
73
|
+
};
|
|
74
|
+
return [
|
|
75
|
+
...messages.slice(0, keepFirstN),
|
|
76
|
+
snipMarker,
|
|
77
|
+
...messages.slice(lastStart)
|
|
78
|
+
];
|
|
79
|
+
}
|
|
80
|
+
function windowCompact(messages, keepLastN) {
|
|
81
|
+
if (messages.length <= keepLastN + 1) return messages;
|
|
82
|
+
let startIndex = messages.length - keepLastN;
|
|
83
|
+
startIndex = adjustIndexToPreserveAPIInvariants(messages, startIndex);
|
|
84
|
+
if (startIndex <= 1) return messages;
|
|
85
|
+
return [messages[0], ...messages.slice(startIndex)];
|
|
86
|
+
}
|
|
87
|
+
function microcompact(messages, keepRecentN = 3) {
|
|
88
|
+
let toolResultCount = 0;
|
|
89
|
+
const indices = [];
|
|
90
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
91
|
+
const msg = messages[i];
|
|
92
|
+
if (Array.isArray(msg.content)) {
|
|
93
|
+
const hasToolResult = msg.content.some((b) => b.type === "tool_result");
|
|
94
|
+
if (hasToolResult) {
|
|
95
|
+
toolResultCount++;
|
|
96
|
+
if (toolResultCount > keepRecentN) {
|
|
97
|
+
indices.push(i);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (indices.length === 0) return messages;
|
|
103
|
+
return messages.map((msg, i) => {
|
|
104
|
+
if (!indices.includes(i)) return msg;
|
|
105
|
+
if (!Array.isArray(msg.content)) return msg;
|
|
106
|
+
return {
|
|
107
|
+
...msg,
|
|
108
|
+
content: msg.content.map((block) => {
|
|
109
|
+
if (block.type === "tool_result") {
|
|
110
|
+
return { ...block, content: "[Old tool result content cleared]" };
|
|
111
|
+
}
|
|
112
|
+
return block;
|
|
113
|
+
})
|
|
114
|
+
};
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
function applyToolResultBudget(messages, maxTotalChars = 1e5) {
|
|
118
|
+
return messages.map((msg) => {
|
|
119
|
+
if (!Array.isArray(msg.content)) return msg;
|
|
120
|
+
const resultBlocks = [];
|
|
121
|
+
let totalSize = 0;
|
|
122
|
+
for (let i = 0; i < msg.content.length; i++) {
|
|
123
|
+
const block = msg.content[i];
|
|
124
|
+
if (block.type === "tool_result" && typeof block.content === "string") {
|
|
125
|
+
const size = block.content.length;
|
|
126
|
+
resultBlocks.push({ index: i, size });
|
|
127
|
+
totalSize += size;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (totalSize <= maxTotalChars || resultBlocks.length === 0) return msg;
|
|
131
|
+
resultBlocks.sort((a, b) => b.size - a.size);
|
|
132
|
+
let remaining = totalSize;
|
|
133
|
+
const toTruncate = /* @__PURE__ */ new Set();
|
|
134
|
+
for (const rb of resultBlocks) {
|
|
135
|
+
if (remaining <= maxTotalChars) break;
|
|
136
|
+
toTruncate.add(rb.index);
|
|
137
|
+
remaining -= rb.size;
|
|
138
|
+
remaining += 200;
|
|
139
|
+
}
|
|
140
|
+
if (toTruncate.size === 0) return msg;
|
|
141
|
+
const newContent = msg.content.map((block, i) => {
|
|
142
|
+
if (!toTruncate.has(i)) return block;
|
|
143
|
+
const preview = typeof block.content === "string" ? block.content.slice(0, 500) : "";
|
|
144
|
+
return {
|
|
145
|
+
...block,
|
|
146
|
+
content: `Output too large (${(block.content.length / 1e3).toFixed(0)}KB). Full output saved to session transcript. Use Read tool to view the source file if needed.
|
|
147
|
+
|
|
148
|
+
Preview (first 500 chars):
|
|
149
|
+
${preview}`
|
|
150
|
+
};
|
|
151
|
+
});
|
|
152
|
+
return { ...msg, content: newContent };
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
function truncateToolResult(result, maxChars = 3e4) {
|
|
156
|
+
if (result.length <= maxChars) return result;
|
|
157
|
+
const headSize = Math.floor(maxChars * 0.7);
|
|
158
|
+
const tailSize = Math.floor(maxChars * 0.2);
|
|
159
|
+
const head = result.slice(0, headSize);
|
|
160
|
+
const tail = result.slice(-tailSize);
|
|
161
|
+
return head + `
|
|
162
|
+
|
|
163
|
+
... [${result.length - headSize - tailSize} characters truncated] ...
|
|
164
|
+
|
|
165
|
+
` + tail;
|
|
166
|
+
}
|
|
167
|
+
function buildSummarizationPrompt(messagesToSummarize) {
|
|
168
|
+
const parts = [];
|
|
169
|
+
for (const msg of messagesToSummarize) {
|
|
170
|
+
if (typeof msg.content === "string") {
|
|
171
|
+
parts.push(`[${msg.role}]: ${msg.content.slice(0, 3e3)}`);
|
|
172
|
+
} else {
|
|
173
|
+
for (const block of msg.content) {
|
|
174
|
+
if (block.type === "text" && block.text) {
|
|
175
|
+
parts.push(`[${msg.role}]: ${block.text.slice(0, 3e3)}`);
|
|
176
|
+
} else if (block.type === "tool_use") {
|
|
177
|
+
const args = JSON.stringify(block.input).slice(0, 500);
|
|
178
|
+
parts.push(`[tool_use]: ${block.name}(${args})`);
|
|
179
|
+
} else if (block.type === "tool_result") {
|
|
180
|
+
const content = typeof block.content === "string" ? block.content : "";
|
|
181
|
+
parts.push(`[tool_result]: ${content.slice(0, 1500)}`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return "Summarize the following conversation into these sections. Be factual. Preserve file paths, function names, and error messages exactly.\n\n1. **Primary Request**: What the user originally asked for\n2. **Key Concepts**: Important technical terms, patterns, file paths\n3. **Files Referenced**: List of files read/edited with key content\n4. **Errors & Fixes**: Any errors encountered and how they were resolved\n5. **Actions Taken**: Tools used and their outcomes\n6. **User Messages**: All distinct user requests (verbatim if short)\n7. **Pending Tasks**: Anything started but not finished\n8. **Current State**: Where things stand right now\n9. **Next Steps**: What should happen next\n\nConversation:\n\n" + parts.join("\n");
|
|
187
|
+
}
|
|
188
|
+
function applySummaryCompaction(messages, summary, keepRecentN, transcriptPath) {
|
|
189
|
+
if (messages.length <= keepRecentN + 2) return messages;
|
|
190
|
+
let startIndex = messages.length - keepRecentN;
|
|
191
|
+
startIndex = adjustIndexToPreserveAPIInvariants(messages, startIndex);
|
|
192
|
+
if (startIndex <= 1) return messages;
|
|
193
|
+
const first = messages[0];
|
|
194
|
+
const compactedMessages = messages.slice(1, startIndex);
|
|
195
|
+
const recent = messages.slice(startIndex);
|
|
196
|
+
const referencedFiles = extractReferencedFilePaths(compactedMessages);
|
|
197
|
+
let body = `This session is being continued from a previous conversation that ran out of context. The summary below covers the earlier portion of the conversation.
|
|
198
|
+
|
|
199
|
+
${summary}`;
|
|
200
|
+
if (transcriptPath) {
|
|
201
|
+
body += `
|
|
202
|
+
|
|
203
|
+
If you need specific details from before compaction (like exact code snippets, error messages, or content you generated), read the full transcript at: ${transcriptPath}`;
|
|
204
|
+
}
|
|
205
|
+
if (referencedFiles.length > 0) {
|
|
206
|
+
body += `
|
|
207
|
+
|
|
208
|
+
Files referenced before compaction (use Read tool if you need their current content):
|
|
209
|
+
` + referencedFiles.map((f) => `- ${f}`).join("\n");
|
|
210
|
+
}
|
|
211
|
+
body += `
|
|
212
|
+
|
|
213
|
+
Recent messages are preserved verbatim below. Continue from where you left off.`;
|
|
214
|
+
const summaryMsg = {
|
|
215
|
+
role: "user",
|
|
216
|
+
content: `<system-reminder>${body}</system-reminder>`
|
|
217
|
+
};
|
|
218
|
+
return [first, summaryMsg, ...recent];
|
|
219
|
+
}
|
|
220
|
+
function groupMessagesByApiRound(messages) {
|
|
221
|
+
const groups = [];
|
|
222
|
+
let current = [];
|
|
223
|
+
for (const msg of messages) {
|
|
224
|
+
if (msg.role === "assistant" && current.length > 0) {
|
|
225
|
+
groups.push(current);
|
|
226
|
+
current = [msg];
|
|
227
|
+
} else {
|
|
228
|
+
current.push(msg);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
if (current.length > 0) groups.push(current);
|
|
232
|
+
return groups;
|
|
233
|
+
}
|
|
234
|
+
function dropOldestRounds(messages, roundsToDrop) {
|
|
235
|
+
const groups = groupMessagesByApiRound(messages);
|
|
236
|
+
if (groups.length <= roundsToDrop + 1) {
|
|
237
|
+
return groups[groups.length - 1];
|
|
238
|
+
}
|
|
239
|
+
const kept = groups.slice(roundsToDrop).flat();
|
|
240
|
+
const safeStart = adjustIndexToPreserveAPIInvariants(
|
|
241
|
+
kept,
|
|
242
|
+
0
|
|
243
|
+
// already sliced, just validate from start
|
|
244
|
+
);
|
|
245
|
+
const result = kept.slice(safeStart);
|
|
246
|
+
if (result.length > 0 && result[0].role === "assistant") {
|
|
247
|
+
result.unshift({
|
|
248
|
+
role: "user",
|
|
249
|
+
content: "<system-reminder>Earlier conversation context was removed to fit within the context window. Continue from the assistant's response below.</system-reminder>"
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
return result;
|
|
253
|
+
}
|
|
254
|
+
function extractReferencedFilePaths(messages) {
|
|
255
|
+
const paths = /* @__PURE__ */ new Set();
|
|
256
|
+
const FILE_TOOLS = /* @__PURE__ */ new Set(["Read", "Edit", "Write", "Glob", "Grep"]);
|
|
257
|
+
for (const msg of messages) {
|
|
258
|
+
if (!Array.isArray(msg.content)) continue;
|
|
259
|
+
for (const block of msg.content) {
|
|
260
|
+
if (block.type === "tool_use" && block.name && FILE_TOOLS.has(block.name) && block.input) {
|
|
261
|
+
const input = block.input;
|
|
262
|
+
const fp = _nullishCoalesce(input.file_path, () => ( input.path));
|
|
263
|
+
if (fp) paths.add(fp);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return [...paths];
|
|
268
|
+
}
|
|
269
|
+
var init_compaction = _chunkIJSHQGMPcjs.__esm.call(void 0, {
|
|
270
|
+
"src/context/compaction.ts"() {
|
|
271
|
+
_chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
|
|
272
|
+
_chunkHD7MT5XUcjs.init_token_counter.call(void 0, );
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
exports.estimateTokens = estimateTokens; exports.adjustIndexToPreserveAPIInvariants = adjustIndexToPreserveAPIInvariants; exports.snipCompact = snipCompact; exports.windowCompact = windowCompact; exports.microcompact = microcompact; exports.applyToolResultBudget = applyToolResultBudget; exports.truncateToolResult = truncateToolResult; exports.buildSummarizationPrompt = buildSummarizationPrompt; exports.applySummaryCompaction = applySummaryCompaction; exports.groupMessagesByApiRound = groupMessagesByApiRound; exports.dropOldestRounds = dropOldestRounds; exports.extractReferencedFilePaths = extractReferencedFilePaths; exports.compaction_exports = compaction_exports; exports.init_compaction = init_compaction;
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;
|
|
2
|
+
|
|
3
|
+
var _chunkEL2RL5DGcjs = require('./chunk-EL2RL5DG.cjs');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkIJSHQGMPcjs = require('./chunk-IJSHQGMP.cjs');
|
|
7
|
+
|
|
8
|
+
// src/session/session-manager.ts
|
|
9
|
+
_chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
|
|
10
|
+
var _fs = require('fs');
|
|
11
|
+
var _path = require('path');
|
|
12
|
+
var _os = require('os');
|
|
13
|
+
var _nanoid = require('nanoid');
|
|
14
|
+
|
|
15
|
+
// src/session/transcript.ts
|
|
16
|
+
_chunkIJSHQGMPcjs.init_cjs_shims.call(void 0, );
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
var Transcript = (_class = class _Transcript {
|
|
21
|
+
__init() {this.events = []}
|
|
22
|
+
|
|
23
|
+
__init2() {this.currentTurn = 0}
|
|
24
|
+
getFilePath() {
|
|
25
|
+
return this.filePath;
|
|
26
|
+
}
|
|
27
|
+
constructor(filePath) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);
|
|
28
|
+
this.filePath = filePath;
|
|
29
|
+
_fs.mkdirSync.call(void 0, _path.dirname.call(void 0, filePath), { recursive: true });
|
|
30
|
+
if (!_fs.existsSync.call(void 0, filePath)) {
|
|
31
|
+
_fs.writeFileSync.call(void 0, filePath, "", "utf-8");
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
append(type, data) {
|
|
35
|
+
const event = {
|
|
36
|
+
id: _nanoid.nanoid.call(void 0, 12),
|
|
37
|
+
type,
|
|
38
|
+
timestamp: Date.now(),
|
|
39
|
+
turnNumber: this.currentTurn,
|
|
40
|
+
data
|
|
41
|
+
};
|
|
42
|
+
this.events.push(event);
|
|
43
|
+
this.flush(event);
|
|
44
|
+
return event;
|
|
45
|
+
}
|
|
46
|
+
appendMessage(role, content) {
|
|
47
|
+
return this.append("message", { role, content });
|
|
48
|
+
}
|
|
49
|
+
appendToolUse(toolName, toolCallId, args) {
|
|
50
|
+
return this.append("tool_use", { toolName, toolCallId, args });
|
|
51
|
+
}
|
|
52
|
+
appendToolResult(toolCallId, toolName, result, error) {
|
|
53
|
+
return this.append("tool_result", { toolCallId, toolName, result, error });
|
|
54
|
+
}
|
|
55
|
+
appendTurnBoundary() {
|
|
56
|
+
this.currentTurn++;
|
|
57
|
+
return this.append("turn_boundary", { turnNumber: this.currentTurn });
|
|
58
|
+
}
|
|
59
|
+
appendSummary(summary, compactedRange) {
|
|
60
|
+
return this.append("summary", {
|
|
61
|
+
summary,
|
|
62
|
+
trigger: "auto",
|
|
63
|
+
compactedRange,
|
|
64
|
+
preservedSegment: {
|
|
65
|
+
headEventId: _optionalChain([this, 'access', _ => _.events, 'access', _2 => _2[0], 'optionalAccess', _3 => _3.id]),
|
|
66
|
+
tailEventId: _optionalChain([this, 'access', _4 => _4.events, 'access', _5 => _5[this.events.length - 1], 'optionalAccess', _6 => _6.id])
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
appendError(error, details) {
|
|
71
|
+
return this.append("error", { error, ...details });
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Derive Message[] from transcript events for sending to the LLM.
|
|
75
|
+
* This is the critical boundary: the LLM never sees the event log directly.
|
|
76
|
+
*/
|
|
77
|
+
toMessages() {
|
|
78
|
+
const messages = [];
|
|
79
|
+
for (const event of this.events) {
|
|
80
|
+
switch (event.type) {
|
|
81
|
+
case "message": {
|
|
82
|
+
const { role, content } = event.data;
|
|
83
|
+
messages.push({ role, content });
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
case "tool_use": {
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
case "tool_result": {
|
|
90
|
+
const { toolCallId, result, error } = event.data;
|
|
91
|
+
const lastMsg = messages[messages.length - 1];
|
|
92
|
+
const block = {
|
|
93
|
+
type: "tool_result",
|
|
94
|
+
tool_use_id: toolCallId,
|
|
95
|
+
content: error ? `Error: ${error}` : _nullishCoalesce(result, () => ( "(no output)"))
|
|
96
|
+
};
|
|
97
|
+
if (_optionalChain([lastMsg, 'optionalAccess', _7 => _7.role]) === "user" && Array.isArray(lastMsg.content)) {
|
|
98
|
+
lastMsg.content.push(block);
|
|
99
|
+
} else {
|
|
100
|
+
messages.push({ role: "user", content: [block] });
|
|
101
|
+
}
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
case "summary": {
|
|
105
|
+
const { summary } = event.data;
|
|
106
|
+
messages.push({
|
|
107
|
+
role: "user",
|
|
108
|
+
content: `<system-reminder>Previous conversation was summarized:
|
|
109
|
+
${summary}</system-reminder>`
|
|
110
|
+
});
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return messages;
|
|
116
|
+
}
|
|
117
|
+
getEvents(type) {
|
|
118
|
+
if (!type) return [...this.events];
|
|
119
|
+
return this.events.filter((e) => e.type === type);
|
|
120
|
+
}
|
|
121
|
+
get turnNumber() {
|
|
122
|
+
return this.currentTurn;
|
|
123
|
+
}
|
|
124
|
+
get eventCount() {
|
|
125
|
+
return this.events.length;
|
|
126
|
+
}
|
|
127
|
+
flush(event) {
|
|
128
|
+
try {
|
|
129
|
+
_fs.appendFileSync.call(void 0, this.filePath, JSON.stringify(event) + "\n", "utf-8");
|
|
130
|
+
} catch (e2) {
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Repair tool_result pairing issues:
|
|
135
|
+
* - Orphaned tool_results (no matching tool_use) get removed
|
|
136
|
+
* - Missing tool_results (tool_use with no result) get synthetic error results
|
|
137
|
+
*/
|
|
138
|
+
repairToolResultPairs() {
|
|
139
|
+
const toolUseIds = /* @__PURE__ */ new Set();
|
|
140
|
+
const toolResultIds = /* @__PURE__ */ new Set();
|
|
141
|
+
for (const event of this.events) {
|
|
142
|
+
if (event.type === "tool_use") {
|
|
143
|
+
toolUseIds.add(event.data.toolCallId);
|
|
144
|
+
} else if (event.type === "tool_result") {
|
|
145
|
+
toolResultIds.add(event.data.toolCallId);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
for (const id of toolUseIds) {
|
|
149
|
+
if (!toolResultIds.has(id)) {
|
|
150
|
+
this.append("tool_result", {
|
|
151
|
+
toolCallId: id,
|
|
152
|
+
toolName: "unknown",
|
|
153
|
+
error: "[Tool result missing due to interrupted session]"
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
this.events = this.events.filter((event) => {
|
|
158
|
+
if (event.type === "tool_result") {
|
|
159
|
+
const id = event.data.toolCallId;
|
|
160
|
+
return toolUseIds.has(id);
|
|
161
|
+
}
|
|
162
|
+
return true;
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
static loadFromFile(filePath) {
|
|
166
|
+
const transcript = new _Transcript(filePath);
|
|
167
|
+
if (!_fs.existsSync.call(void 0, filePath)) return transcript;
|
|
168
|
+
const content = _fs.readFileSync.call(void 0, filePath, "utf-8");
|
|
169
|
+
const lines = content.split("\n").filter((l) => l.trim());
|
|
170
|
+
for (const line of lines) {
|
|
171
|
+
try {
|
|
172
|
+
const event = JSON.parse(line);
|
|
173
|
+
transcript.events.push(event);
|
|
174
|
+
if (event.type === "turn_boundary") {
|
|
175
|
+
transcript.currentTurn = _nullishCoalesce(event.data.turnNumber, () => ( transcript.currentTurn + 1));
|
|
176
|
+
}
|
|
177
|
+
} catch (e3) {
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
transcript.repairToolResultPairs();
|
|
181
|
+
return transcript;
|
|
182
|
+
}
|
|
183
|
+
}, _class);
|
|
184
|
+
|
|
185
|
+
// src/session/session-manager.ts
|
|
186
|
+
var SessionManager = class {
|
|
187
|
+
|
|
188
|
+
constructor(storageDir) {
|
|
189
|
+
this.sessionsDir = _nullishCoalesce(storageDir, () => ( _path.join.call(void 0, _os.homedir.call(void 0, ), ".code-shell", "sessions")));
|
|
190
|
+
_fs.mkdirSync.call(void 0, this.sessionsDir, { recursive: true });
|
|
191
|
+
}
|
|
192
|
+
create(cwd, model, provider) {
|
|
193
|
+
const sessionId = _nanoid.nanoid.call(void 0, 16);
|
|
194
|
+
const sessionDir = _path.join.call(void 0, this.sessionsDir, sessionId);
|
|
195
|
+
_fs.mkdirSync.call(void 0, sessionDir, { recursive: true });
|
|
196
|
+
const state = {
|
|
197
|
+
sessionId,
|
|
198
|
+
cwd,
|
|
199
|
+
startedAt: Date.now(),
|
|
200
|
+
model,
|
|
201
|
+
provider,
|
|
202
|
+
tokenUsage: { promptTokens: 0, completionTokens: 0, totalTokens: 0 },
|
|
203
|
+
turnCount: 0,
|
|
204
|
+
invokedSkills: [],
|
|
205
|
+
status: "active"
|
|
206
|
+
};
|
|
207
|
+
_fs.writeFileSync.call(void 0, _path.join.call(void 0, sessionDir, "state.json"), JSON.stringify(state, null, 2), "utf-8");
|
|
208
|
+
const transcript = new Transcript(_path.join.call(void 0, sessionDir, "transcript.jsonl"));
|
|
209
|
+
transcript.append("session_meta", {
|
|
210
|
+
sessionId,
|
|
211
|
+
cwd,
|
|
212
|
+
model,
|
|
213
|
+
provider,
|
|
214
|
+
startedAt: state.startedAt
|
|
215
|
+
});
|
|
216
|
+
return { state, transcript };
|
|
217
|
+
}
|
|
218
|
+
resume(sessionId) {
|
|
219
|
+
const sessionDir = _path.join.call(void 0, this.sessionsDir, sessionId);
|
|
220
|
+
if (!_fs.existsSync.call(void 0, sessionDir)) {
|
|
221
|
+
throw new (0, _chunkEL2RL5DGcjs.SessionError)(`Session not found: ${sessionId}`);
|
|
222
|
+
}
|
|
223
|
+
const stateFile = _path.join.call(void 0, sessionDir, "state.json");
|
|
224
|
+
if (!_fs.existsSync.call(void 0, stateFile)) {
|
|
225
|
+
throw new (0, _chunkEL2RL5DGcjs.SessionError)(`Session state file not found: ${sessionId}`);
|
|
226
|
+
}
|
|
227
|
+
const state = JSON.parse(_fs.readFileSync.call(void 0, stateFile, "utf-8"));
|
|
228
|
+
const transcriptFile = _path.join.call(void 0, sessionDir, "transcript.jsonl");
|
|
229
|
+
const transcript = Transcript.loadFromFile(transcriptFile);
|
|
230
|
+
state.status = "active";
|
|
231
|
+
return { state, transcript };
|
|
232
|
+
}
|
|
233
|
+
saveState(state) {
|
|
234
|
+
const sessionDir = _path.join.call(void 0, this.sessionsDir, state.sessionId);
|
|
235
|
+
_fs.mkdirSync.call(void 0, sessionDir, { recursive: true });
|
|
236
|
+
const target = _path.join.call(void 0, sessionDir, "state.json");
|
|
237
|
+
const tmp = `${target}.${process.pid}.${Date.now()}.tmp`;
|
|
238
|
+
_fs.writeFileSync.call(void 0, tmp, JSON.stringify(state, null, 2), "utf-8");
|
|
239
|
+
_fs.renameSync.call(void 0, tmp, target);
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Fork a session from a specific point.
|
|
243
|
+
* Creates a new session that shares events up to the given turn,
|
|
244
|
+
* then diverges independently.
|
|
245
|
+
*/
|
|
246
|
+
fork(sourceSessionId, forkAtTurn) {
|
|
247
|
+
const source = this.resume(sourceSessionId);
|
|
248
|
+
const events = source.transcript.getEvents();
|
|
249
|
+
const forkTurn = _nullishCoalesce(forkAtTurn, () => ( source.state.turnCount));
|
|
250
|
+
const newBundle = this.create(
|
|
251
|
+
source.state.cwd,
|
|
252
|
+
source.state.model,
|
|
253
|
+
source.state.provider
|
|
254
|
+
);
|
|
255
|
+
newBundle.state.parentSessionId = sourceSessionId;
|
|
256
|
+
for (const event of events) {
|
|
257
|
+
if (event.type === "turn_boundary" && event.data.turnNumber > forkTurn) {
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
newBundle.transcript.append(event.type, event.data);
|
|
261
|
+
}
|
|
262
|
+
this.saveState(newBundle.state);
|
|
263
|
+
return newBundle;
|
|
264
|
+
}
|
|
265
|
+
list(limit = 20) {
|
|
266
|
+
if (!_fs.existsSync.call(void 0, this.sessionsDir)) return [];
|
|
267
|
+
const dirs = _fs.readdirSync.call(void 0, this.sessionsDir, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name);
|
|
268
|
+
const sessions = [];
|
|
269
|
+
for (const dir of dirs) {
|
|
270
|
+
const stateFile = _path.join.call(void 0, this.sessionsDir, dir, "state.json");
|
|
271
|
+
if (!_fs.existsSync.call(void 0, stateFile)) continue;
|
|
272
|
+
try {
|
|
273
|
+
const state = JSON.parse(_fs.readFileSync.call(void 0, stateFile, "utf-8"));
|
|
274
|
+
sessions.push(state);
|
|
275
|
+
} catch (e4) {
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return sessions.sort((a, b) => b.startedAt - a.startedAt).slice(0, limit);
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
exports.Transcript = Transcript; exports.SessionManager = SessionManager;
|