opencode-repos 0.3.0 → 0.3.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/index.ts +25 -11
- package/package.json +27 -27
- package/src/__tests__/git.test.ts +33 -2
- package/src/git.ts +32 -5
- package/.sisyphus/boulder.json +0 -8
- package/.sisyphus/notepads/opencode-repos/decisions.md +0 -15
- package/.sisyphus/notepads/opencode-repos/learnings.md +0 -384
- package/.sisyphus/plans/opencode-repos.md +0 -987
- package/.tmux-sessionizer +0 -8
- package/TODO.md +0 -3
- package/oh-my-opencode/.github/FUNDING.yml +0 -15
- package/oh-my-opencode/.github/ISSUE_TEMPLATE/bug_report.yml +0 -129
- package/oh-my-opencode/.github/ISSUE_TEMPLATE/config.yml +0 -8
- package/oh-my-opencode/.github/ISSUE_TEMPLATE/feature_request.yml +0 -100
- package/oh-my-opencode/.github/ISSUE_TEMPLATE/general.yml +0 -83
- package/oh-my-opencode/.github/assets/google.jpg +0 -0
- package/oh-my-opencode/.github/assets/hero.jpg +0 -0
- package/oh-my-opencode/.github/assets/indent.jpg +0 -0
- package/oh-my-opencode/.github/assets/microsoft.jpg +0 -0
- package/oh-my-opencode/.github/assets/omo.png +0 -0
- package/oh-my-opencode/.github/assets/orchestrator-atlas.png +0 -0
- package/oh-my-opencode/.github/assets/sisyphus.png +0 -0
- package/oh-my-opencode/.github/assets/sisyphuslabs.png +0 -0
- package/oh-my-opencode/.github/pull_request_template.md +0 -34
- package/oh-my-opencode/.github/workflows/ci.yml +0 -138
- package/oh-my-opencode/.github/workflows/cla.yml +0 -41
- package/oh-my-opencode/.github/workflows/lint-workflows.yml +0 -22
- package/oh-my-opencode/.github/workflows/publish.yml +0 -165
- package/oh-my-opencode/.github/workflows/sisyphus-agent.yml +0 -500
- package/oh-my-opencode/.opencode/background-tasks.json +0 -27
- package/oh-my-opencode/.opencode/command/get-unpublished-changes.md +0 -84
- package/oh-my-opencode/.opencode/command/omomomo.md +0 -37
- package/oh-my-opencode/.opencode/command/publish.md +0 -257
- package/oh-my-opencode/AGENTS.md +0 -179
- package/oh-my-opencode/CLA.md +0 -58
- package/oh-my-opencode/CONTRIBUTING.md +0 -268
- package/oh-my-opencode/LICENSE.md +0 -82
- package/oh-my-opencode/README.ja.md +0 -370
- package/oh-my-opencode/README.md +0 -376
- package/oh-my-opencode/README.zh-cn.md +0 -380
- package/oh-my-opencode/assets/oh-my-opencode.schema.json +0 -2171
- package/oh-my-opencode/bin/oh-my-opencode.js +0 -80
- package/oh-my-opencode/bin/platform.js +0 -38
- package/oh-my-opencode/bin/platform.test.ts +0 -148
- package/oh-my-opencode/bun.lock +0 -314
- package/oh-my-opencode/bunfig.toml +0 -2
- package/oh-my-opencode/docs/category-skill-guide.md +0 -200
- package/oh-my-opencode/docs/cli-guide.md +0 -272
- package/oh-my-opencode/docs/configurations.md +0 -654
- package/oh-my-opencode/docs/features.md +0 -550
- package/oh-my-opencode/docs/guide/installation.md +0 -288
- package/oh-my-opencode/docs/guide/overview.md +0 -97
- package/oh-my-opencode/docs/guide/understanding-orchestration-system.md +0 -445
- package/oh-my-opencode/docs/orchestration-guide.md +0 -152
- package/oh-my-opencode/docs/ultrawork-manifesto.md +0 -197
- package/oh-my-opencode/package.json +0 -89
- package/oh-my-opencode/packages/darwin-arm64/bin/.gitkeep +0 -0
- package/oh-my-opencode/packages/darwin-arm64/package.json +0 -22
- package/oh-my-opencode/packages/darwin-x64/bin/.gitkeep +0 -0
- package/oh-my-opencode/packages/darwin-x64/package.json +0 -22
- package/oh-my-opencode/packages/linux-arm64/bin/.gitkeep +0 -0
- package/oh-my-opencode/packages/linux-arm64/package.json +0 -25
- package/oh-my-opencode/packages/linux-arm64-musl/bin/.gitkeep +0 -0
- package/oh-my-opencode/packages/linux-arm64-musl/package.json +0 -25
- package/oh-my-opencode/packages/linux-x64/bin/.gitkeep +0 -0
- package/oh-my-opencode/packages/linux-x64/package.json +0 -25
- package/oh-my-opencode/packages/linux-x64-musl/bin/.gitkeep +0 -0
- package/oh-my-opencode/packages/linux-x64-musl/package.json +0 -25
- package/oh-my-opencode/packages/windows-x64/bin/.gitkeep +0 -0
- package/oh-my-opencode/packages/windows-x64/package.json +0 -22
- package/oh-my-opencode/postinstall.mjs +0 -43
- package/oh-my-opencode/script/build-binaries.ts +0 -103
- package/oh-my-opencode/script/build-schema.ts +0 -28
- package/oh-my-opencode/script/generate-changelog.ts +0 -92
- package/oh-my-opencode/script/publish.ts +0 -344
- package/oh-my-opencode/signatures/cla.json +0 -676
- package/oh-my-opencode/src/agents/AGENTS.md +0 -67
- package/oh-my-opencode/src/agents/atlas.ts +0 -1383
- package/oh-my-opencode/src/agents/dynamic-agent-prompt-builder.ts +0 -400
- package/oh-my-opencode/src/agents/explore.ts +0 -122
- package/oh-my-opencode/src/agents/index.ts +0 -13
- package/oh-my-opencode/src/agents/librarian.ts +0 -326
- package/oh-my-opencode/src/agents/metis.ts +0 -315
- package/oh-my-opencode/src/agents/momus.test.ts +0 -57
- package/oh-my-opencode/src/agents/momus.ts +0 -444
- package/oh-my-opencode/src/agents/multimodal-looker.ts +0 -56
- package/oh-my-opencode/src/agents/oracle.ts +0 -122
- package/oh-my-opencode/src/agents/prometheus-prompt.test.ts +0 -22
- package/oh-my-opencode/src/agents/prometheus-prompt.ts +0 -1196
- package/oh-my-opencode/src/agents/sisyphus-junior.test.ts +0 -232
- package/oh-my-opencode/src/agents/sisyphus-junior.ts +0 -134
- package/oh-my-opencode/src/agents/sisyphus.ts +0 -633
- package/oh-my-opencode/src/agents/types.ts +0 -80
- package/oh-my-opencode/src/agents/utils.test.ts +0 -311
- package/oh-my-opencode/src/agents/utils.ts +0 -240
- package/oh-my-opencode/src/cli/AGENTS.md +0 -91
- package/oh-my-opencode/src/cli/config-manager.test.ts +0 -364
- package/oh-my-opencode/src/cli/config-manager.ts +0 -641
- package/oh-my-opencode/src/cli/doctor/checks/auth.test.ts +0 -114
- package/oh-my-opencode/src/cli/doctor/checks/auth.ts +0 -115
- package/oh-my-opencode/src/cli/doctor/checks/config.test.ts +0 -103
- package/oh-my-opencode/src/cli/doctor/checks/config.ts +0 -123
- package/oh-my-opencode/src/cli/doctor/checks/dependencies.test.ts +0 -152
- package/oh-my-opencode/src/cli/doctor/checks/dependencies.ts +0 -163
- package/oh-my-opencode/src/cli/doctor/checks/gh.test.ts +0 -151
- package/oh-my-opencode/src/cli/doctor/checks/gh.ts +0 -171
- package/oh-my-opencode/src/cli/doctor/checks/index.ts +0 -34
- package/oh-my-opencode/src/cli/doctor/checks/lsp.test.ts +0 -134
- package/oh-my-opencode/src/cli/doctor/checks/lsp.ts +0 -77
- package/oh-my-opencode/src/cli/doctor/checks/mcp.test.ts +0 -115
- package/oh-my-opencode/src/cli/doctor/checks/mcp.ts +0 -128
- package/oh-my-opencode/src/cli/doctor/checks/opencode.test.ts +0 -227
- package/oh-my-opencode/src/cli/doctor/checks/opencode.ts +0 -178
- package/oh-my-opencode/src/cli/doctor/checks/plugin.test.ts +0 -109
- package/oh-my-opencode/src/cli/doctor/checks/plugin.ts +0 -124
- package/oh-my-opencode/src/cli/doctor/checks/version.test.ts +0 -148
- package/oh-my-opencode/src/cli/doctor/checks/version.ts +0 -135
- package/oh-my-opencode/src/cli/doctor/constants.ts +0 -72
- package/oh-my-opencode/src/cli/doctor/formatter.test.ts +0 -218
- package/oh-my-opencode/src/cli/doctor/formatter.ts +0 -140
- package/oh-my-opencode/src/cli/doctor/index.ts +0 -11
- package/oh-my-opencode/src/cli/doctor/runner.test.ts +0 -153
- package/oh-my-opencode/src/cli/doctor/runner.ts +0 -132
- package/oh-my-opencode/src/cli/doctor/types.ts +0 -113
- package/oh-my-opencode/src/cli/get-local-version/formatter.ts +0 -66
- package/oh-my-opencode/src/cli/get-local-version/index.ts +0 -106
- package/oh-my-opencode/src/cli/get-local-version/types.ts +0 -14
- package/oh-my-opencode/src/cli/index.ts +0 -153
- package/oh-my-opencode/src/cli/install.ts +0 -523
- package/oh-my-opencode/src/cli/model-fallback.ts +0 -246
- package/oh-my-opencode/src/cli/run/completion.test.ts +0 -170
- package/oh-my-opencode/src/cli/run/completion.ts +0 -79
- package/oh-my-opencode/src/cli/run/events.test.ts +0 -155
- package/oh-my-opencode/src/cli/run/events.ts +0 -325
- package/oh-my-opencode/src/cli/run/index.ts +0 -2
- package/oh-my-opencode/src/cli/run/runner.ts +0 -159
- package/oh-my-opencode/src/cli/run/types.ts +0 -76
- package/oh-my-opencode/src/cli/types.ts +0 -40
- package/oh-my-opencode/src/config/index.ts +0 -26
- package/oh-my-opencode/src/config/schema.test.ts +0 -444
- package/oh-my-opencode/src/config/schema.ts +0 -339
- package/oh-my-opencode/src/features/AGENTS.md +0 -77
- package/oh-my-opencode/src/features/background-agent/concurrency.test.ts +0 -418
- package/oh-my-opencode/src/features/background-agent/concurrency.ts +0 -137
- package/oh-my-opencode/src/features/background-agent/index.ts +0 -3
- package/oh-my-opencode/src/features/background-agent/manager.test.ts +0 -1928
- package/oh-my-opencode/src/features/background-agent/manager.ts +0 -1335
- package/oh-my-opencode/src/features/background-agent/types.ts +0 -66
- package/oh-my-opencode/src/features/boulder-state/constants.ts +0 -13
- package/oh-my-opencode/src/features/boulder-state/index.ts +0 -3
- package/oh-my-opencode/src/features/boulder-state/storage.test.ts +0 -250
- package/oh-my-opencode/src/features/boulder-state/storage.ts +0 -150
- package/oh-my-opencode/src/features/boulder-state/types.ts +0 -26
- package/oh-my-opencode/src/features/builtin-commands/commands.ts +0 -89
- package/oh-my-opencode/src/features/builtin-commands/index.ts +0 -2
- package/oh-my-opencode/src/features/builtin-commands/templates/init-deep.ts +0 -300
- package/oh-my-opencode/src/features/builtin-commands/templates/ralph-loop.ts +0 -38
- package/oh-my-opencode/src/features/builtin-commands/templates/refactor.ts +0 -619
- package/oh-my-opencode/src/features/builtin-commands/templates/start-work.ts +0 -72
- package/oh-my-opencode/src/features/builtin-commands/types.ts +0 -9
- package/oh-my-opencode/src/features/builtin-skills/frontend-ui-ux/SKILL.md +0 -78
- package/oh-my-opencode/src/features/builtin-skills/git-master/SKILL.md +0 -1105
- package/oh-my-opencode/src/features/builtin-skills/index.ts +0 -2
- package/oh-my-opencode/src/features/builtin-skills/skills.ts +0 -1203
- package/oh-my-opencode/src/features/builtin-skills/types.ts +0 -16
- package/oh-my-opencode/src/features/claude-code-agent-loader/index.ts +0 -2
- package/oh-my-opencode/src/features/claude-code-agent-loader/loader.ts +0 -90
- package/oh-my-opencode/src/features/claude-code-agent-loader/types.ts +0 -17
- package/oh-my-opencode/src/features/claude-code-command-loader/index.ts +0 -2
- package/oh-my-opencode/src/features/claude-code-command-loader/loader.ts +0 -144
- package/oh-my-opencode/src/features/claude-code-command-loader/types.ts +0 -46
- package/oh-my-opencode/src/features/claude-code-mcp-loader/env-expander.ts +0 -27
- package/oh-my-opencode/src/features/claude-code-mcp-loader/index.ts +0 -11
- package/oh-my-opencode/src/features/claude-code-mcp-loader/loader.test.ts +0 -162
- package/oh-my-opencode/src/features/claude-code-mcp-loader/loader.ts +0 -113
- package/oh-my-opencode/src/features/claude-code-mcp-loader/transformer.ts +0 -53
- package/oh-my-opencode/src/features/claude-code-mcp-loader/types.ts +0 -42
- package/oh-my-opencode/src/features/claude-code-plugin-loader/index.ts +0 -3
- package/oh-my-opencode/src/features/claude-code-plugin-loader/loader.ts +0 -486
- package/oh-my-opencode/src/features/claude-code-plugin-loader/types.ts +0 -210
- package/oh-my-opencode/src/features/claude-code-session-state/index.ts +0 -1
- package/oh-my-opencode/src/features/claude-code-session-state/state.test.ts +0 -126
- package/oh-my-opencode/src/features/claude-code-session-state/state.ts +0 -37
- package/oh-my-opencode/src/features/context-injector/collector.test.ts +0 -330
- package/oh-my-opencode/src/features/context-injector/collector.ts +0 -85
- package/oh-my-opencode/src/features/context-injector/index.ts +0 -14
- package/oh-my-opencode/src/features/context-injector/injector.test.ts +0 -122
- package/oh-my-opencode/src/features/context-injector/injector.ts +0 -167
- package/oh-my-opencode/src/features/context-injector/types.ts +0 -91
- package/oh-my-opencode/src/features/hook-message-injector/constants.ts +0 -6
- package/oh-my-opencode/src/features/hook-message-injector/index.ts +0 -4
- package/oh-my-opencode/src/features/hook-message-injector/injector.ts +0 -195
- package/oh-my-opencode/src/features/hook-message-injector/types.ts +0 -47
- package/oh-my-opencode/src/features/opencode-skill-loader/async-loader.test.ts +0 -448
- package/oh-my-opencode/src/features/opencode-skill-loader/async-loader.ts +0 -180
- package/oh-my-opencode/src/features/opencode-skill-loader/blocking.test.ts +0 -210
- package/oh-my-opencode/src/features/opencode-skill-loader/blocking.ts +0 -62
- package/oh-my-opencode/src/features/opencode-skill-loader/discover-worker.ts +0 -59
- package/oh-my-opencode/src/features/opencode-skill-loader/index.ts +0 -4
- package/oh-my-opencode/src/features/opencode-skill-loader/loader.test.ts +0 -273
- package/oh-my-opencode/src/features/opencode-skill-loader/loader.ts +0 -259
- package/oh-my-opencode/src/features/opencode-skill-loader/merger.ts +0 -267
- package/oh-my-opencode/src/features/opencode-skill-loader/skill-content.test.ts +0 -267
- package/oh-my-opencode/src/features/opencode-skill-loader/skill-content.ts +0 -206
- package/oh-my-opencode/src/features/opencode-skill-loader/types.ts +0 -38
- package/oh-my-opencode/src/features/skill-mcp-manager/env-cleaner.test.ts +0 -201
- package/oh-my-opencode/src/features/skill-mcp-manager/env-cleaner.ts +0 -27
- package/oh-my-opencode/src/features/skill-mcp-manager/index.ts +0 -2
- package/oh-my-opencode/src/features/skill-mcp-manager/manager.test.ts +0 -611
- package/oh-my-opencode/src/features/skill-mcp-manager/manager.ts +0 -520
- package/oh-my-opencode/src/features/skill-mcp-manager/types.ts +0 -14
- package/oh-my-opencode/src/features/task-toast-manager/index.ts +0 -2
- package/oh-my-opencode/src/features/task-toast-manager/manager.test.ts +0 -249
- package/oh-my-opencode/src/features/task-toast-manager/manager.ts +0 -215
- package/oh-my-opencode/src/features/task-toast-manager/types.ts +0 -24
- package/oh-my-opencode/src/hooks/AGENTS.md +0 -73
- package/oh-my-opencode/src/hooks/agent-usage-reminder/constants.ts +0 -54
- package/oh-my-opencode/src/hooks/agent-usage-reminder/index.ts +0 -109
- package/oh-my-opencode/src/hooks/agent-usage-reminder/storage.ts +0 -42
- package/oh-my-opencode/src/hooks/agent-usage-reminder/types.ts +0 -6
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/executor.test.ts +0 -307
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/executor.ts +0 -485
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/index.ts +0 -151
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/parser.ts +0 -201
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/pruning-deduplication.test.ts +0 -33
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/pruning-deduplication.ts +0 -184
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/pruning-types.ts +0 -44
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/storage.test.ts +0 -77
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/storage.ts +0 -250
- package/oh-my-opencode/src/hooks/anthropic-context-window-limit-recovery/types.ts +0 -42
- package/oh-my-opencode/src/hooks/atlas/index.test.ts +0 -953
- package/oh-my-opencode/src/hooks/atlas/index.ts +0 -771
- package/oh-my-opencode/src/hooks/auto-slash-command/constants.ts +0 -12
- package/oh-my-opencode/src/hooks/auto-slash-command/detector.test.ts +0 -296
- package/oh-my-opencode/src/hooks/auto-slash-command/detector.ts +0 -65
- package/oh-my-opencode/src/hooks/auto-slash-command/executor.ts +0 -205
- package/oh-my-opencode/src/hooks/auto-slash-command/index.test.ts +0 -254
- package/oh-my-opencode/src/hooks/auto-slash-command/index.ts +0 -89
- package/oh-my-opencode/src/hooks/auto-slash-command/types.ts +0 -23
- package/oh-my-opencode/src/hooks/auto-update-checker/cache.ts +0 -93
- package/oh-my-opencode/src/hooks/auto-update-checker/checker.test.ts +0 -24
- package/oh-my-opencode/src/hooks/auto-update-checker/checker.ts +0 -284
- package/oh-my-opencode/src/hooks/auto-update-checker/constants.ts +0 -64
- package/oh-my-opencode/src/hooks/auto-update-checker/index.test.ts +0 -254
- package/oh-my-opencode/src/hooks/auto-update-checker/index.ts +0 -260
- package/oh-my-opencode/src/hooks/auto-update-checker/types.ts +0 -29
- package/oh-my-opencode/src/hooks/background-compaction/index.ts +0 -87
- package/oh-my-opencode/src/hooks/background-notification/index.ts +0 -28
- package/oh-my-opencode/src/hooks/background-notification/types.ts +0 -5
- package/oh-my-opencode/src/hooks/claude-code-hooks/AGENTS.md +0 -70
- package/oh-my-opencode/src/hooks/claude-code-hooks/config-loader.ts +0 -107
- package/oh-my-opencode/src/hooks/claude-code-hooks/config.ts +0 -103
- package/oh-my-opencode/src/hooks/claude-code-hooks/index.ts +0 -401
- package/oh-my-opencode/src/hooks/claude-code-hooks/plugin-config.ts +0 -12
- package/oh-my-opencode/src/hooks/claude-code-hooks/post-tool-use.ts +0 -199
- package/oh-my-opencode/src/hooks/claude-code-hooks/pre-compact.ts +0 -109
- package/oh-my-opencode/src/hooks/claude-code-hooks/pre-tool-use.ts +0 -172
- package/oh-my-opencode/src/hooks/claude-code-hooks/stop.ts +0 -118
- package/oh-my-opencode/src/hooks/claude-code-hooks/todo.ts +0 -76
- package/oh-my-opencode/src/hooks/claude-code-hooks/tool-input-cache.ts +0 -47
- package/oh-my-opencode/src/hooks/claude-code-hooks/transcript.ts +0 -252
- package/oh-my-opencode/src/hooks/claude-code-hooks/types.ts +0 -204
- package/oh-my-opencode/src/hooks/claude-code-hooks/user-prompt-submit.ts +0 -117
- package/oh-my-opencode/src/hooks/comment-checker/cli.test.ts +0 -68
- package/oh-my-opencode/src/hooks/comment-checker/cli.ts +0 -221
- package/oh-my-opencode/src/hooks/comment-checker/downloader.ts +0 -196
- package/oh-my-opencode/src/hooks/comment-checker/index.ts +0 -171
- package/oh-my-opencode/src/hooks/comment-checker/types.ts +0 -33
- package/oh-my-opencode/src/hooks/compaction-context-injector/index.ts +0 -61
- package/oh-my-opencode/src/hooks/context-window-monitor.ts +0 -99
- package/oh-my-opencode/src/hooks/delegate-task-retry/index.test.ts +0 -119
- package/oh-my-opencode/src/hooks/delegate-task-retry/index.ts +0 -136
- package/oh-my-opencode/src/hooks/directory-agents-injector/constants.ts +0 -9
- package/oh-my-opencode/src/hooks/directory-agents-injector/index.ts +0 -182
- package/oh-my-opencode/src/hooks/directory-agents-injector/storage.ts +0 -48
- package/oh-my-opencode/src/hooks/directory-agents-injector/types.ts +0 -5
- package/oh-my-opencode/src/hooks/directory-readme-injector/constants.ts +0 -9
- package/oh-my-opencode/src/hooks/directory-readme-injector/index.ts +0 -177
- package/oh-my-opencode/src/hooks/directory-readme-injector/storage.ts +0 -48
- package/oh-my-opencode/src/hooks/directory-readme-injector/types.ts +0 -5
- package/oh-my-opencode/src/hooks/edit-error-recovery/index.test.ts +0 -126
- package/oh-my-opencode/src/hooks/edit-error-recovery/index.ts +0 -57
- package/oh-my-opencode/src/hooks/empty-task-response-detector.ts +0 -27
- package/oh-my-opencode/src/hooks/index.ts +0 -32
- package/oh-my-opencode/src/hooks/interactive-bash-session/constants.ts +0 -15
- package/oh-my-opencode/src/hooks/interactive-bash-session/index.ts +0 -262
- package/oh-my-opencode/src/hooks/interactive-bash-session/storage.ts +0 -59
- package/oh-my-opencode/src/hooks/interactive-bash-session/types.ts +0 -11
- package/oh-my-opencode/src/hooks/keyword-detector/constants.ts +0 -300
- package/oh-my-opencode/src/hooks/keyword-detector/detector.ts +0 -52
- package/oh-my-opencode/src/hooks/keyword-detector/index.test.ts +0 -529
- package/oh-my-opencode/src/hooks/keyword-detector/index.ts +0 -100
- package/oh-my-opencode/src/hooks/keyword-detector/types.ts +0 -4
- package/oh-my-opencode/src/hooks/non-interactive-env/constants.ts +0 -70
- package/oh-my-opencode/src/hooks/non-interactive-env/detector.ts +0 -19
- package/oh-my-opencode/src/hooks/non-interactive-env/index.test.ts +0 -323
- package/oh-my-opencode/src/hooks/non-interactive-env/index.ts +0 -63
- package/oh-my-opencode/src/hooks/non-interactive-env/types.ts +0 -3
- package/oh-my-opencode/src/hooks/prometheus-md-only/constants.ts +0 -32
- package/oh-my-opencode/src/hooks/prometheus-md-only/index.test.ts +0 -488
- package/oh-my-opencode/src/hooks/prometheus-md-only/index.ts +0 -136
- package/oh-my-opencode/src/hooks/ralph-loop/constants.ts +0 -5
- package/oh-my-opencode/src/hooks/ralph-loop/index.test.ts +0 -835
- package/oh-my-opencode/src/hooks/ralph-loop/index.ts +0 -417
- package/oh-my-opencode/src/hooks/ralph-loop/storage.ts +0 -115
- package/oh-my-opencode/src/hooks/ralph-loop/types.ts +0 -19
- package/oh-my-opencode/src/hooks/rules-injector/constants.ts +0 -30
- package/oh-my-opencode/src/hooks/rules-injector/finder.test.ts +0 -381
- package/oh-my-opencode/src/hooks/rules-injector/finder.ts +0 -263
- package/oh-my-opencode/src/hooks/rules-injector/index.ts +0 -223
- package/oh-my-opencode/src/hooks/rules-injector/matcher.ts +0 -63
- package/oh-my-opencode/src/hooks/rules-injector/parser.test.ts +0 -226
- package/oh-my-opencode/src/hooks/rules-injector/parser.ts +0 -211
- package/oh-my-opencode/src/hooks/rules-injector/storage.ts +0 -59
- package/oh-my-opencode/src/hooks/rules-injector/types.ts +0 -57
- package/oh-my-opencode/src/hooks/session-notification-utils.ts +0 -140
- package/oh-my-opencode/src/hooks/session-notification.test.ts +0 -361
- package/oh-my-opencode/src/hooks/session-notification.ts +0 -330
- package/oh-my-opencode/src/hooks/session-recovery/constants.ts +0 -10
- package/oh-my-opencode/src/hooks/session-recovery/index.test.ts +0 -223
- package/oh-my-opencode/src/hooks/session-recovery/index.ts +0 -435
- package/oh-my-opencode/src/hooks/session-recovery/storage.ts +0 -390
- package/oh-my-opencode/src/hooks/session-recovery/types.ts +0 -98
- package/oh-my-opencode/src/hooks/start-work/index.test.ts +0 -402
- package/oh-my-opencode/src/hooks/start-work/index.ts +0 -242
- package/oh-my-opencode/src/hooks/task-resume-info/index.ts +0 -36
- package/oh-my-opencode/src/hooks/think-mode/detector.ts +0 -57
- package/oh-my-opencode/src/hooks/think-mode/index.test.ts +0 -353
- package/oh-my-opencode/src/hooks/think-mode/index.ts +0 -89
- package/oh-my-opencode/src/hooks/think-mode/switcher.test.ts +0 -461
- package/oh-my-opencode/src/hooks/think-mode/switcher.ts +0 -222
- package/oh-my-opencode/src/hooks/think-mode/types.ts +0 -21
- package/oh-my-opencode/src/hooks/thinking-block-validator/index.ts +0 -171
- package/oh-my-opencode/src/hooks/todo-continuation-enforcer.test.ts +0 -876
- package/oh-my-opencode/src/hooks/todo-continuation-enforcer.ts +0 -480
- package/oh-my-opencode/src/hooks/tool-output-truncator.test.ts +0 -168
- package/oh-my-opencode/src/hooks/tool-output-truncator.ts +0 -61
- package/oh-my-opencode/src/index.ts +0 -589
- package/oh-my-opencode/src/mcp/AGENTS.md +0 -70
- package/oh-my-opencode/src/mcp/context7.ts +0 -6
- package/oh-my-opencode/src/mcp/grep-app.ts +0 -6
- package/oh-my-opencode/src/mcp/index.test.ts +0 -86
- package/oh-my-opencode/src/mcp/index.ts +0 -32
- package/oh-my-opencode/src/mcp/types.ts +0 -9
- package/oh-my-opencode/src/mcp/websearch.ts +0 -10
- package/oh-my-opencode/src/plugin-config.test.ts +0 -119
- package/oh-my-opencode/src/plugin-config.ts +0 -135
- package/oh-my-opencode/src/plugin-handlers/config-handler.test.ts +0 -103
- package/oh-my-opencode/src/plugin-handlers/config-handler.ts +0 -399
- package/oh-my-opencode/src/plugin-handlers/index.ts +0 -1
- package/oh-my-opencode/src/plugin-state.ts +0 -30
- package/oh-my-opencode/src/shared/AGENTS.md +0 -63
- package/oh-my-opencode/src/shared/agent-tool-restrictions.ts +0 -44
- package/oh-my-opencode/src/shared/agent-variant.test.ts +0 -83
- package/oh-my-opencode/src/shared/agent-variant.ts +0 -40
- package/oh-my-opencode/src/shared/claude-config-dir.test.ts +0 -60
- package/oh-my-opencode/src/shared/claude-config-dir.ts +0 -11
- package/oh-my-opencode/src/shared/command-executor.ts +0 -225
- package/oh-my-opencode/src/shared/config-errors.ts +0 -18
- package/oh-my-opencode/src/shared/config-path.ts +0 -47
- package/oh-my-opencode/src/shared/data-path.ts +0 -22
- package/oh-my-opencode/src/shared/deep-merge.test.ts +0 -336
- package/oh-my-opencode/src/shared/deep-merge.ts +0 -53
- package/oh-my-opencode/src/shared/dynamic-truncator.ts +0 -193
- package/oh-my-opencode/src/shared/external-plugin-detector.test.ts +0 -133
- package/oh-my-opencode/src/shared/external-plugin-detector.ts +0 -132
- package/oh-my-opencode/src/shared/file-reference-resolver.ts +0 -85
- package/oh-my-opencode/src/shared/file-utils.ts +0 -40
- package/oh-my-opencode/src/shared/first-message-variant.test.ts +0 -32
- package/oh-my-opencode/src/shared/first-message-variant.ts +0 -28
- package/oh-my-opencode/src/shared/frontmatter.test.ts +0 -262
- package/oh-my-opencode/src/shared/frontmatter.ts +0 -31
- package/oh-my-opencode/src/shared/hook-disabled.ts +0 -22
- package/oh-my-opencode/src/shared/index.ts +0 -29
- package/oh-my-opencode/src/shared/jsonc-parser.test.ts +0 -266
- package/oh-my-opencode/src/shared/jsonc-parser.ts +0 -66
- package/oh-my-opencode/src/shared/logger.ts +0 -20
- package/oh-my-opencode/src/shared/migration.test.ts +0 -602
- package/oh-my-opencode/src/shared/migration.ts +0 -191
- package/oh-my-opencode/src/shared/model-resolver.test.ts +0 -101
- package/oh-my-opencode/src/shared/model-resolver.ts +0 -35
- package/oh-my-opencode/src/shared/model-sanitizer.ts +0 -12
- package/oh-my-opencode/src/shared/opencode-config-dir.test.ts +0 -318
- package/oh-my-opencode/src/shared/opencode-config-dir.ts +0 -142
- package/oh-my-opencode/src/shared/opencode-version.test.ts +0 -223
- package/oh-my-opencode/src/shared/opencode-version.ts +0 -72
- package/oh-my-opencode/src/shared/pattern-matcher.ts +0 -29
- package/oh-my-opencode/src/shared/permission-compat.test.ts +0 -134
- package/oh-my-opencode/src/shared/permission-compat.ts +0 -77
- package/oh-my-opencode/src/shared/session-cursor.test.ts +0 -66
- package/oh-my-opencode/src/shared/session-cursor.ts +0 -85
- package/oh-my-opencode/src/shared/shell-env.test.ts +0 -278
- package/oh-my-opencode/src/shared/shell-env.ts +0 -111
- package/oh-my-opencode/src/shared/snake-case.ts +0 -49
- package/oh-my-opencode/src/shared/system-directive.ts +0 -40
- package/oh-my-opencode/src/shared/tool-name.ts +0 -26
- package/oh-my-opencode/src/shared/zip-extractor.ts +0 -83
- package/oh-my-opencode/src/tools/AGENTS.md +0 -74
- package/oh-my-opencode/src/tools/ast-grep/cli.ts +0 -230
- package/oh-my-opencode/src/tools/ast-grep/constants.ts +0 -261
- package/oh-my-opencode/src/tools/ast-grep/downloader.ts +0 -128
- package/oh-my-opencode/src/tools/ast-grep/index.ts +0 -13
- package/oh-my-opencode/src/tools/ast-grep/tools.ts +0 -112
- package/oh-my-opencode/src/tools/ast-grep/types.ts +0 -61
- package/oh-my-opencode/src/tools/ast-grep/utils.ts +0 -102
- package/oh-my-opencode/src/tools/background-task/constants.ts +0 -7
- package/oh-my-opencode/src/tools/background-task/index.ts +0 -7
- package/oh-my-opencode/src/tools/background-task/tools.ts +0 -479
- package/oh-my-opencode/src/tools/background-task/types.ts +0 -16
- package/oh-my-opencode/src/tools/call-omo-agent/constants.ts +0 -7
- package/oh-my-opencode/src/tools/call-omo-agent/index.ts +0 -3
- package/oh-my-opencode/src/tools/call-omo-agent/tools.ts +0 -338
- package/oh-my-opencode/src/tools/call-omo-agent/types.ts +0 -27
- package/oh-my-opencode/src/tools/delegate-task/constants.ts +0 -205
- package/oh-my-opencode/src/tools/delegate-task/index.ts +0 -3
- package/oh-my-opencode/src/tools/delegate-task/tools.test.ts +0 -1575
- package/oh-my-opencode/src/tools/delegate-task/tools.ts +0 -885
- package/oh-my-opencode/src/tools/delegate-task/types.ts +0 -9
- package/oh-my-opencode/src/tools/glob/cli.test.ts +0 -158
- package/oh-my-opencode/src/tools/glob/cli.ts +0 -191
- package/oh-my-opencode/src/tools/glob/constants.ts +0 -12
- package/oh-my-opencode/src/tools/glob/index.ts +0 -3
- package/oh-my-opencode/src/tools/glob/tools.ts +0 -41
- package/oh-my-opencode/src/tools/glob/types.ts +0 -22
- package/oh-my-opencode/src/tools/glob/utils.ts +0 -26
- package/oh-my-opencode/src/tools/grep/cli.ts +0 -229
- package/oh-my-opencode/src/tools/grep/constants.ts +0 -127
- package/oh-my-opencode/src/tools/grep/downloader.test.ts +0 -103
- package/oh-my-opencode/src/tools/grep/downloader.ts +0 -145
- package/oh-my-opencode/src/tools/grep/index.ts +0 -3
- package/oh-my-opencode/src/tools/grep/tools.ts +0 -40
- package/oh-my-opencode/src/tools/grep/types.ts +0 -39
- package/oh-my-opencode/src/tools/grep/utils.ts +0 -53
- package/oh-my-opencode/src/tools/index.ts +0 -72
- package/oh-my-opencode/src/tools/interactive-bash/constants.ts +0 -18
- package/oh-my-opencode/src/tools/interactive-bash/index.ts +0 -4
- package/oh-my-opencode/src/tools/interactive-bash/tools.ts +0 -126
- package/oh-my-opencode/src/tools/interactive-bash/utils.ts +0 -71
- package/oh-my-opencode/src/tools/look-at/constants.ts +0 -3
- package/oh-my-opencode/src/tools/look-at/index.ts +0 -3
- package/oh-my-opencode/src/tools/look-at/tools.test.ts +0 -73
- package/oh-my-opencode/src/tools/look-at/tools.ts +0 -173
- package/oh-my-opencode/src/tools/look-at/types.ts +0 -4
- package/oh-my-opencode/src/tools/lsp/client.ts +0 -596
- package/oh-my-opencode/src/tools/lsp/config.test.ts +0 -130
- package/oh-my-opencode/src/tools/lsp/config.ts +0 -285
- package/oh-my-opencode/src/tools/lsp/constants.ts +0 -390
- package/oh-my-opencode/src/tools/lsp/index.ts +0 -7
- package/oh-my-opencode/src/tools/lsp/tools.ts +0 -261
- package/oh-my-opencode/src/tools/lsp/types.ts +0 -124
- package/oh-my-opencode/src/tools/lsp/utils.ts +0 -406
- package/oh-my-opencode/src/tools/session-manager/constants.ts +0 -97
- package/oh-my-opencode/src/tools/session-manager/index.ts +0 -3
- package/oh-my-opencode/src/tools/session-manager/storage.test.ts +0 -315
- package/oh-my-opencode/src/tools/session-manager/storage.ts +0 -238
- package/oh-my-opencode/src/tools/session-manager/tools.test.ts +0 -124
- package/oh-my-opencode/src/tools/session-manager/tools.ts +0 -146
- package/oh-my-opencode/src/tools/session-manager/types.ts +0 -99
- package/oh-my-opencode/src/tools/session-manager/utils.test.ts +0 -160
- package/oh-my-opencode/src/tools/session-manager/utils.ts +0 -199
- package/oh-my-opencode/src/tools/skill/constants.ts +0 -8
- package/oh-my-opencode/src/tools/skill/index.ts +0 -3
- package/oh-my-opencode/src/tools/skill/tools.test.ts +0 -239
- package/oh-my-opencode/src/tools/skill/tools.ts +0 -200
- package/oh-my-opencode/src/tools/skill/types.ts +0 -31
- package/oh-my-opencode/src/tools/skill-mcp/constants.ts +0 -3
- package/oh-my-opencode/src/tools/skill-mcp/index.ts +0 -3
- package/oh-my-opencode/src/tools/skill-mcp/tools.test.ts +0 -215
- package/oh-my-opencode/src/tools/skill-mcp/tools.ts +0 -172
- package/oh-my-opencode/src/tools/skill-mcp/types.ts +0 -8
- package/oh-my-opencode/src/tools/slashcommand/index.ts +0 -2
- package/oh-my-opencode/src/tools/slashcommand/tools.ts +0 -252
- package/oh-my-opencode/src/tools/slashcommand/types.ts +0 -28
- package/oh-my-opencode/test-setup.ts +0 -6
- package/oh-my-opencode/tsconfig.json +0 -20
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
import { spawn } from "bun"
|
|
2
|
-
import { createRequire } from "module"
|
|
3
|
-
import { dirname, join } from "path"
|
|
4
|
-
import { existsSync } from "fs"
|
|
5
|
-
import * as fs from "fs"
|
|
6
|
-
import { tmpdir } from "os"
|
|
7
|
-
import { getCachedBinaryPath, ensureCommentCheckerBinary } from "./downloader"
|
|
8
|
-
|
|
9
|
-
const DEBUG = process.env.COMMENT_CHECKER_DEBUG === "1"
|
|
10
|
-
const DEBUG_FILE = join(tmpdir(), "comment-checker-debug.log")
|
|
11
|
-
|
|
12
|
-
function debugLog(...args: unknown[]) {
|
|
13
|
-
if (DEBUG) {
|
|
14
|
-
const msg = `[${new Date().toISOString()}] [comment-checker:cli] ${args.map(a => typeof a === 'object' ? JSON.stringify(a, null, 2) : String(a)).join(' ')}\n`
|
|
15
|
-
fs.appendFileSync(DEBUG_FILE, msg)
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
function getBinaryName(): string {
|
|
20
|
-
return process.platform === "win32" ? "comment-checker.exe" : "comment-checker"
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
function findCommentCheckerPathSync(): string | null {
|
|
24
|
-
const binaryName = getBinaryName()
|
|
25
|
-
|
|
26
|
-
// Check cached binary first (safest path - no module resolution needed)
|
|
27
|
-
const cachedPath = getCachedBinaryPath()
|
|
28
|
-
if (cachedPath) {
|
|
29
|
-
debugLog("found binary in cache:", cachedPath)
|
|
30
|
-
return cachedPath
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Guard against undefined import.meta.url (can happen on Windows during plugin loading)
|
|
34
|
-
if (!import.meta.url) {
|
|
35
|
-
debugLog("import.meta.url is undefined, skipping package resolution")
|
|
36
|
-
return null
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
try {
|
|
40
|
-
const require = createRequire(import.meta.url)
|
|
41
|
-
const cliPkgPath = require.resolve("@code-yeongyu/comment-checker/package.json")
|
|
42
|
-
const cliDir = dirname(cliPkgPath)
|
|
43
|
-
const binaryPath = join(cliDir, "bin", binaryName)
|
|
44
|
-
|
|
45
|
-
if (existsSync(binaryPath)) {
|
|
46
|
-
debugLog("found binary in main package:", binaryPath)
|
|
47
|
-
return binaryPath
|
|
48
|
-
}
|
|
49
|
-
} catch (err) {
|
|
50
|
-
debugLog("main package not installed or resolution failed:", err)
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
debugLog("no binary found in known locations")
|
|
54
|
-
return null
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// Cached resolved path
|
|
58
|
-
let resolvedCliPath: string | null = null
|
|
59
|
-
let initPromise: Promise<string | null> | null = null
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Asynchronously get comment-checker binary path.
|
|
63
|
-
* Will trigger lazy download if binary not found.
|
|
64
|
-
*/
|
|
65
|
-
export async function getCommentCheckerPath(): Promise<string | null> {
|
|
66
|
-
// Return cached path if already resolved
|
|
67
|
-
if (resolvedCliPath !== null) {
|
|
68
|
-
return resolvedCliPath
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// Return existing promise if initialization is in progress
|
|
72
|
-
if (initPromise) {
|
|
73
|
-
return initPromise
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
initPromise = (async () => {
|
|
77
|
-
// First try sync path resolution
|
|
78
|
-
const syncPath = findCommentCheckerPathSync()
|
|
79
|
-
if (syncPath && existsSync(syncPath)) {
|
|
80
|
-
resolvedCliPath = syncPath
|
|
81
|
-
debugLog("using sync-resolved path:", syncPath)
|
|
82
|
-
return syncPath
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// Lazy download if not found
|
|
86
|
-
debugLog("triggering lazy download...")
|
|
87
|
-
const downloadedPath = await ensureCommentCheckerBinary()
|
|
88
|
-
if (downloadedPath) {
|
|
89
|
-
resolvedCliPath = downloadedPath
|
|
90
|
-
debugLog("using downloaded path:", downloadedPath)
|
|
91
|
-
return downloadedPath
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
debugLog("no binary available")
|
|
95
|
-
return null
|
|
96
|
-
})()
|
|
97
|
-
|
|
98
|
-
return initPromise
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Synchronously get comment-checker path (no download).
|
|
103
|
-
* Returns cached path or searches known locations.
|
|
104
|
-
*/
|
|
105
|
-
export function getCommentCheckerPathSync(): string | null {
|
|
106
|
-
return resolvedCliPath ?? findCommentCheckerPathSync()
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Start background initialization.
|
|
111
|
-
* Call this early to trigger download while other init happens.
|
|
112
|
-
*/
|
|
113
|
-
export function startBackgroundInit(): void {
|
|
114
|
-
if (!initPromise) {
|
|
115
|
-
initPromise = getCommentCheckerPath()
|
|
116
|
-
initPromise.then(path => {
|
|
117
|
-
debugLog("background init complete:", path || "no binary")
|
|
118
|
-
}).catch(err => {
|
|
119
|
-
debugLog("background init error:", err)
|
|
120
|
-
})
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
export interface HookInput {
|
|
125
|
-
session_id: string
|
|
126
|
-
tool_name: string
|
|
127
|
-
transcript_path: string
|
|
128
|
-
cwd: string
|
|
129
|
-
hook_event_name: string
|
|
130
|
-
tool_input: {
|
|
131
|
-
file_path?: string
|
|
132
|
-
content?: string
|
|
133
|
-
old_string?: string
|
|
134
|
-
new_string?: string
|
|
135
|
-
edits?: Array<{ old_string: string; new_string: string }>
|
|
136
|
-
}
|
|
137
|
-
tool_response?: unknown
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
export interface CheckResult {
|
|
141
|
-
hasComments: boolean
|
|
142
|
-
message: string
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Run comment-checker CLI with given input.
|
|
147
|
-
* @param input Hook input to check
|
|
148
|
-
* @param cliPath Optional explicit path to CLI binary
|
|
149
|
-
* @param customPrompt Optional custom prompt to replace default warning message
|
|
150
|
-
*/
|
|
151
|
-
export async function runCommentChecker(input: HookInput, cliPath?: string, customPrompt?: string): Promise<CheckResult> {
|
|
152
|
-
const binaryPath = cliPath ?? resolvedCliPath ?? getCommentCheckerPathSync()
|
|
153
|
-
|
|
154
|
-
if (!binaryPath) {
|
|
155
|
-
debugLog("comment-checker binary not found")
|
|
156
|
-
return { hasComments: false, message: "" }
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
if (!existsSync(binaryPath)) {
|
|
160
|
-
debugLog("comment-checker binary does not exist:", binaryPath)
|
|
161
|
-
return { hasComments: false, message: "" }
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
const jsonInput = JSON.stringify(input)
|
|
165
|
-
debugLog("running comment-checker with input:", jsonInput.substring(0, 200))
|
|
166
|
-
|
|
167
|
-
try {
|
|
168
|
-
const args = [binaryPath]
|
|
169
|
-
if (customPrompt) {
|
|
170
|
-
args.push("--prompt", customPrompt)
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
const proc = spawn(args, {
|
|
174
|
-
stdin: "pipe",
|
|
175
|
-
stdout: "pipe",
|
|
176
|
-
stderr: "pipe",
|
|
177
|
-
})
|
|
178
|
-
|
|
179
|
-
// Write JSON to stdin
|
|
180
|
-
proc.stdin.write(jsonInput)
|
|
181
|
-
proc.stdin.end()
|
|
182
|
-
|
|
183
|
-
const stdout = await new Response(proc.stdout).text()
|
|
184
|
-
const stderr = await new Response(proc.stderr).text()
|
|
185
|
-
const exitCode = await proc.exited
|
|
186
|
-
|
|
187
|
-
debugLog("exit code:", exitCode, "stdout length:", stdout.length, "stderr length:", stderr.length)
|
|
188
|
-
|
|
189
|
-
if (exitCode === 0) {
|
|
190
|
-
return { hasComments: false, message: "" }
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
if (exitCode === 2) {
|
|
194
|
-
// Comments detected - message is in stderr
|
|
195
|
-
return { hasComments: true, message: stderr }
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
// Error case
|
|
199
|
-
debugLog("unexpected exit code:", exitCode, "stderr:", stderr)
|
|
200
|
-
return { hasComments: false, message: "" }
|
|
201
|
-
} catch (err) {
|
|
202
|
-
debugLog("failed to run comment-checker:", err)
|
|
203
|
-
return { hasComments: false, message: "" }
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
/**
|
|
208
|
-
* Check if CLI is available (sync check, no download).
|
|
209
|
-
*/
|
|
210
|
-
export function isCliAvailable(): boolean {
|
|
211
|
-
const path = getCommentCheckerPathSync()
|
|
212
|
-
return path !== null && existsSync(path)
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
/**
|
|
216
|
-
* Check if CLI will be available (async, may trigger download).
|
|
217
|
-
*/
|
|
218
|
-
export async function ensureCliAvailable(): Promise<boolean> {
|
|
219
|
-
const path = await getCommentCheckerPath()
|
|
220
|
-
return path !== null && existsSync(path)
|
|
221
|
-
}
|
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
import { spawn } from "bun"
|
|
2
|
-
import { existsSync, mkdirSync, chmodSync, unlinkSync, appendFileSync } from "fs"
|
|
3
|
-
import { join } from "path"
|
|
4
|
-
import { homedir, tmpdir } from "os"
|
|
5
|
-
import { createRequire } from "module"
|
|
6
|
-
import { extractZip } from "../../shared"
|
|
7
|
-
|
|
8
|
-
const DEBUG = process.env.COMMENT_CHECKER_DEBUG === "1"
|
|
9
|
-
const DEBUG_FILE = join(tmpdir(), "comment-checker-debug.log")
|
|
10
|
-
|
|
11
|
-
function debugLog(...args: unknown[]) {
|
|
12
|
-
if (DEBUG) {
|
|
13
|
-
const msg = `[${new Date().toISOString()}] [comment-checker:downloader] ${args.map(a => typeof a === 'object' ? JSON.stringify(a, null, 2) : String(a)).join(' ')}\n`
|
|
14
|
-
appendFileSync(DEBUG_FILE, msg)
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const REPO = "code-yeongyu/go-claude-code-comment-checker"
|
|
19
|
-
|
|
20
|
-
interface PlatformInfo {
|
|
21
|
-
os: string
|
|
22
|
-
arch: string
|
|
23
|
-
ext: "tar.gz" | "zip"
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const PLATFORM_MAP: Record<string, PlatformInfo> = {
|
|
27
|
-
"darwin-arm64": { os: "darwin", arch: "arm64", ext: "tar.gz" },
|
|
28
|
-
"darwin-x64": { os: "darwin", arch: "amd64", ext: "tar.gz" },
|
|
29
|
-
"linux-arm64": { os: "linux", arch: "arm64", ext: "tar.gz" },
|
|
30
|
-
"linux-x64": { os: "linux", arch: "amd64", ext: "tar.gz" },
|
|
31
|
-
"win32-x64": { os: "windows", arch: "amd64", ext: "zip" },
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Get the cache directory for oh-my-opencode binaries.
|
|
36
|
-
* On Windows: Uses %LOCALAPPDATA% or %APPDATA% (Windows conventions)
|
|
37
|
-
* On Unix: Follows XDG Base Directory Specification
|
|
38
|
-
*/
|
|
39
|
-
export function getCacheDir(): string {
|
|
40
|
-
if (process.platform === "win32") {
|
|
41
|
-
const localAppData = process.env.LOCALAPPDATA || process.env.APPDATA
|
|
42
|
-
const base = localAppData || join(homedir(), "AppData", "Local")
|
|
43
|
-
return join(base, "oh-my-opencode", "bin")
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const xdgCache = process.env.XDG_CACHE_HOME
|
|
47
|
-
const base = xdgCache || join(homedir(), ".cache")
|
|
48
|
-
return join(base, "oh-my-opencode", "bin")
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Get the binary name based on platform.
|
|
53
|
-
*/
|
|
54
|
-
export function getBinaryName(): string {
|
|
55
|
-
return process.platform === "win32" ? "comment-checker.exe" : "comment-checker"
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Get the cached binary path if it exists.
|
|
60
|
-
*/
|
|
61
|
-
export function getCachedBinaryPath(): string | null {
|
|
62
|
-
const binaryPath = join(getCacheDir(), getBinaryName())
|
|
63
|
-
return existsSync(binaryPath) ? binaryPath : null
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Get the version from the installed @code-yeongyu/comment-checker package.
|
|
68
|
-
*/
|
|
69
|
-
function getPackageVersion(): string {
|
|
70
|
-
try {
|
|
71
|
-
const require = createRequire(import.meta.url)
|
|
72
|
-
const pkg = require("@code-yeongyu/comment-checker/package.json")
|
|
73
|
-
return pkg.version
|
|
74
|
-
} catch {
|
|
75
|
-
// Fallback to hardcoded version if package not found
|
|
76
|
-
return "0.4.1"
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Extract tar.gz archive using system tar command.
|
|
82
|
-
*/
|
|
83
|
-
async function extractTarGz(archivePath: string, destDir: string): Promise<void> {
|
|
84
|
-
debugLog("Extracting tar.gz:", archivePath, "to", destDir)
|
|
85
|
-
|
|
86
|
-
const proc = spawn(["tar", "-xzf", archivePath, "-C", destDir], {
|
|
87
|
-
stdout: "pipe",
|
|
88
|
-
stderr: "pipe",
|
|
89
|
-
})
|
|
90
|
-
|
|
91
|
-
const exitCode = await proc.exited
|
|
92
|
-
|
|
93
|
-
if (exitCode !== 0) {
|
|
94
|
-
const stderr = await new Response(proc.stderr).text()
|
|
95
|
-
throw new Error(`tar extraction failed (exit ${exitCode}): ${stderr}`)
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Download the comment-checker binary from GitHub Releases.
|
|
103
|
-
* Returns the path to the downloaded binary, or null on failure.
|
|
104
|
-
*/
|
|
105
|
-
export async function downloadCommentChecker(): Promise<string | null> {
|
|
106
|
-
const platformKey = `${process.platform}-${process.arch}`
|
|
107
|
-
const platformInfo = PLATFORM_MAP[platformKey]
|
|
108
|
-
|
|
109
|
-
if (!platformInfo) {
|
|
110
|
-
debugLog(`Unsupported platform: ${platformKey}`)
|
|
111
|
-
return null
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
const cacheDir = getCacheDir()
|
|
115
|
-
const binaryName = getBinaryName()
|
|
116
|
-
const binaryPath = join(cacheDir, binaryName)
|
|
117
|
-
|
|
118
|
-
// Already exists in cache
|
|
119
|
-
if (existsSync(binaryPath)) {
|
|
120
|
-
debugLog("Binary already cached at:", binaryPath)
|
|
121
|
-
return binaryPath
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
const version = getPackageVersion()
|
|
125
|
-
const { os, arch, ext } = platformInfo
|
|
126
|
-
const assetName = `comment-checker_v${version}_${os}_${arch}.${ext}`
|
|
127
|
-
const downloadUrl = `https://github.com/${REPO}/releases/download/v${version}/${assetName}`
|
|
128
|
-
|
|
129
|
-
debugLog(`Downloading from: ${downloadUrl}`)
|
|
130
|
-
console.log(`[oh-my-opencode] Downloading comment-checker binary...`)
|
|
131
|
-
|
|
132
|
-
try {
|
|
133
|
-
// Ensure cache directory exists
|
|
134
|
-
if (!existsSync(cacheDir)) {
|
|
135
|
-
mkdirSync(cacheDir, { recursive: true })
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
// Download with fetch() - Bun handles redirects automatically
|
|
139
|
-
const response = await fetch(downloadUrl, { redirect: "follow" })
|
|
140
|
-
|
|
141
|
-
if (!response.ok) {
|
|
142
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`)
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
const archivePath = join(cacheDir, assetName)
|
|
146
|
-
const arrayBuffer = await response.arrayBuffer()
|
|
147
|
-
await Bun.write(archivePath, arrayBuffer)
|
|
148
|
-
|
|
149
|
-
debugLog(`Downloaded archive to: ${archivePath}`)
|
|
150
|
-
|
|
151
|
-
// Extract based on file type
|
|
152
|
-
if (ext === "tar.gz") {
|
|
153
|
-
await extractTarGz(archivePath, cacheDir)
|
|
154
|
-
} else {
|
|
155
|
-
await extractZip(archivePath, cacheDir)
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// Clean up archive
|
|
159
|
-
if (existsSync(archivePath)) {
|
|
160
|
-
unlinkSync(archivePath)
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
// Set execute permission on Unix
|
|
164
|
-
if (process.platform !== "win32" && existsSync(binaryPath)) {
|
|
165
|
-
chmodSync(binaryPath, 0o755)
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
debugLog(`Successfully downloaded binary to: ${binaryPath}`)
|
|
169
|
-
console.log(`[oh-my-opencode] comment-checker binary ready.`)
|
|
170
|
-
|
|
171
|
-
return binaryPath
|
|
172
|
-
|
|
173
|
-
} catch (err) {
|
|
174
|
-
debugLog(`Failed to download: ${err}`)
|
|
175
|
-
console.error(`[oh-my-opencode] Failed to download comment-checker: ${err instanceof Error ? err.message : err}`)
|
|
176
|
-
console.error(`[oh-my-opencode] Comment checking disabled.`)
|
|
177
|
-
return null
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
/**
|
|
182
|
-
* Ensure the comment-checker binary is available.
|
|
183
|
-
* First checks cache, then downloads if needed.
|
|
184
|
-
* Returns the binary path or null if unavailable.
|
|
185
|
-
*/
|
|
186
|
-
export async function ensureCommentCheckerBinary(): Promise<string | null> {
|
|
187
|
-
// Check cache first
|
|
188
|
-
const cachedPath = getCachedBinaryPath()
|
|
189
|
-
if (cachedPath) {
|
|
190
|
-
debugLog("Using cached binary:", cachedPath)
|
|
191
|
-
return cachedPath
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
// Download if not cached
|
|
195
|
-
return downloadCommentChecker()
|
|
196
|
-
}
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
import type { PendingCall } from "./types"
|
|
2
|
-
import { runCommentChecker, getCommentCheckerPath, startBackgroundInit, type HookInput } from "./cli"
|
|
3
|
-
import type { CommentCheckerConfig } from "../../config/schema"
|
|
4
|
-
|
|
5
|
-
import * as fs from "fs"
|
|
6
|
-
import { existsSync } from "fs"
|
|
7
|
-
import { tmpdir } from "os"
|
|
8
|
-
import { join } from "path"
|
|
9
|
-
|
|
10
|
-
const DEBUG = process.env.COMMENT_CHECKER_DEBUG === "1"
|
|
11
|
-
const DEBUG_FILE = join(tmpdir(), "comment-checker-debug.log")
|
|
12
|
-
|
|
13
|
-
function debugLog(...args: unknown[]) {
|
|
14
|
-
if (DEBUG) {
|
|
15
|
-
const msg = `[${new Date().toISOString()}] [comment-checker:hook] ${args.map(a => typeof a === 'object' ? JSON.stringify(a, null, 2) : String(a)).join(' ')}\n`
|
|
16
|
-
fs.appendFileSync(DEBUG_FILE, msg)
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
const pendingCalls = new Map<string, PendingCall>()
|
|
21
|
-
const PENDING_CALL_TTL = 60_000
|
|
22
|
-
|
|
23
|
-
let cliPathPromise: Promise<string | null> | null = null
|
|
24
|
-
let cleanupIntervalStarted = false
|
|
25
|
-
|
|
26
|
-
function cleanupOldPendingCalls(): void {
|
|
27
|
-
const now = Date.now()
|
|
28
|
-
for (const [callID, call] of pendingCalls) {
|
|
29
|
-
if (now - call.timestamp > PENDING_CALL_TTL) {
|
|
30
|
-
pendingCalls.delete(callID)
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export function createCommentCheckerHooks(config?: CommentCheckerConfig) {
|
|
36
|
-
debugLog("createCommentCheckerHooks called", { config })
|
|
37
|
-
|
|
38
|
-
if (!cleanupIntervalStarted) {
|
|
39
|
-
cleanupIntervalStarted = true
|
|
40
|
-
setInterval(cleanupOldPendingCalls, 10_000)
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// Start background CLI initialization (may trigger lazy download)
|
|
44
|
-
startBackgroundInit()
|
|
45
|
-
cliPathPromise = getCommentCheckerPath()
|
|
46
|
-
cliPathPromise.then(path => {
|
|
47
|
-
debugLog("CLI path resolved:", path || "disabled (no binary)")
|
|
48
|
-
}).catch(err => {
|
|
49
|
-
debugLog("CLI path resolution error:", err)
|
|
50
|
-
})
|
|
51
|
-
|
|
52
|
-
return {
|
|
53
|
-
"tool.execute.before": async (
|
|
54
|
-
input: { tool: string; sessionID: string; callID: string },
|
|
55
|
-
output: { args: Record<string, unknown> }
|
|
56
|
-
): Promise<void> => {
|
|
57
|
-
debugLog("tool.execute.before:", { tool: input.tool, callID: input.callID, args: output.args })
|
|
58
|
-
|
|
59
|
-
const toolLower = input.tool.toLowerCase()
|
|
60
|
-
if (toolLower !== "write" && toolLower !== "edit" && toolLower !== "multiedit") {
|
|
61
|
-
debugLog("skipping non-write/edit tool:", toolLower)
|
|
62
|
-
return
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
const filePath = (output.args.filePath ?? output.args.file_path ?? output.args.path) as string | undefined
|
|
66
|
-
const content = output.args.content as string | undefined
|
|
67
|
-
const oldString = output.args.oldString ?? output.args.old_string as string | undefined
|
|
68
|
-
const newString = output.args.newString ?? output.args.new_string as string | undefined
|
|
69
|
-
const edits = output.args.edits as Array<{ old_string: string; new_string: string }> | undefined
|
|
70
|
-
|
|
71
|
-
debugLog("extracted filePath:", filePath)
|
|
72
|
-
|
|
73
|
-
if (!filePath) {
|
|
74
|
-
debugLog("no filePath found")
|
|
75
|
-
return
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
debugLog("registering pendingCall:", { callID: input.callID, filePath, tool: toolLower })
|
|
79
|
-
pendingCalls.set(input.callID, {
|
|
80
|
-
filePath,
|
|
81
|
-
content,
|
|
82
|
-
oldString: oldString as string | undefined,
|
|
83
|
-
newString: newString as string | undefined,
|
|
84
|
-
edits,
|
|
85
|
-
tool: toolLower as "write" | "edit" | "multiedit",
|
|
86
|
-
sessionID: input.sessionID,
|
|
87
|
-
timestamp: Date.now(),
|
|
88
|
-
})
|
|
89
|
-
},
|
|
90
|
-
|
|
91
|
-
"tool.execute.after": async (
|
|
92
|
-
input: { tool: string; sessionID: string; callID: string },
|
|
93
|
-
output: { title: string; output: string; metadata: unknown }
|
|
94
|
-
): Promise<void> => {
|
|
95
|
-
debugLog("tool.execute.after:", { tool: input.tool, callID: input.callID })
|
|
96
|
-
|
|
97
|
-
const pendingCall = pendingCalls.get(input.callID)
|
|
98
|
-
if (!pendingCall) {
|
|
99
|
-
debugLog("no pendingCall found for:", input.callID)
|
|
100
|
-
return
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
pendingCalls.delete(input.callID)
|
|
104
|
-
debugLog("processing pendingCall:", pendingCall)
|
|
105
|
-
|
|
106
|
-
// Only skip if the output indicates a tool execution failure
|
|
107
|
-
const outputLower = output.output.toLowerCase()
|
|
108
|
-
const isToolFailure =
|
|
109
|
-
outputLower.includes("error:") ||
|
|
110
|
-
outputLower.includes("failed to") ||
|
|
111
|
-
outputLower.includes("could not") ||
|
|
112
|
-
outputLower.startsWith("error")
|
|
113
|
-
|
|
114
|
-
if (isToolFailure) {
|
|
115
|
-
debugLog("skipping due to tool failure in output")
|
|
116
|
-
return
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
try {
|
|
120
|
-
// Wait for CLI path resolution
|
|
121
|
-
const cliPath = await cliPathPromise
|
|
122
|
-
|
|
123
|
-
if (!cliPath || !existsSync(cliPath)) {
|
|
124
|
-
// CLI not available - silently skip comment checking
|
|
125
|
-
debugLog("CLI not available, skipping comment check")
|
|
126
|
-
return
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
// CLI mode only
|
|
130
|
-
debugLog("using CLI:", cliPath)
|
|
131
|
-
await processWithCli(input, pendingCall, output, cliPath, config?.custom_prompt)
|
|
132
|
-
} catch (err) {
|
|
133
|
-
debugLog("tool.execute.after failed:", err)
|
|
134
|
-
}
|
|
135
|
-
},
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
async function processWithCli(
|
|
140
|
-
input: { tool: string; sessionID: string; callID: string },
|
|
141
|
-
pendingCall: PendingCall,
|
|
142
|
-
output: { output: string },
|
|
143
|
-
cliPath: string,
|
|
144
|
-
customPrompt?: string
|
|
145
|
-
): Promise<void> {
|
|
146
|
-
debugLog("using CLI mode with path:", cliPath)
|
|
147
|
-
|
|
148
|
-
const hookInput: HookInput = {
|
|
149
|
-
session_id: pendingCall.sessionID,
|
|
150
|
-
tool_name: pendingCall.tool.charAt(0).toUpperCase() + pendingCall.tool.slice(1),
|
|
151
|
-
transcript_path: "",
|
|
152
|
-
cwd: process.cwd(),
|
|
153
|
-
hook_event_name: "PostToolUse",
|
|
154
|
-
tool_input: {
|
|
155
|
-
file_path: pendingCall.filePath,
|
|
156
|
-
content: pendingCall.content,
|
|
157
|
-
old_string: pendingCall.oldString,
|
|
158
|
-
new_string: pendingCall.newString,
|
|
159
|
-
edits: pendingCall.edits,
|
|
160
|
-
},
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
const result = await runCommentChecker(hookInput, cliPath, customPrompt)
|
|
164
|
-
|
|
165
|
-
if (result.hasComments && result.message) {
|
|
166
|
-
debugLog("CLI detected comments, appending message")
|
|
167
|
-
output.output += `\n\n${result.message}`
|
|
168
|
-
} else {
|
|
169
|
-
debugLog("CLI: no comments detected")
|
|
170
|
-
}
|
|
171
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
export type CommentType = "line" | "block" | "docstring"
|
|
2
|
-
|
|
3
|
-
export interface CommentInfo {
|
|
4
|
-
text: string
|
|
5
|
-
lineNumber: number
|
|
6
|
-
filePath: string
|
|
7
|
-
commentType: CommentType
|
|
8
|
-
isDocstring: boolean
|
|
9
|
-
metadata?: Record<string, string>
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export interface PendingCall {
|
|
13
|
-
filePath: string
|
|
14
|
-
content?: string
|
|
15
|
-
oldString?: string
|
|
16
|
-
newString?: string
|
|
17
|
-
edits?: Array<{ old_string: string; new_string: string }>
|
|
18
|
-
tool: "write" | "edit" | "multiedit"
|
|
19
|
-
sessionID: string
|
|
20
|
-
timestamp: number
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export interface FileComments {
|
|
24
|
-
filePath: string
|
|
25
|
-
comments: CommentInfo[]
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export interface FilterResult {
|
|
29
|
-
shouldSkip: boolean
|
|
30
|
-
reason?: string
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export type CommentFilter = (comment: CommentInfo) => FilterResult
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { injectHookMessage } from "../../features/hook-message-injector"
|
|
2
|
-
import { log } from "../../shared/logger"
|
|
3
|
-
import { createSystemDirective, SystemDirectiveTypes } from "../../shared/system-directive"
|
|
4
|
-
|
|
5
|
-
export interface SummarizeContext {
|
|
6
|
-
sessionID: string
|
|
7
|
-
providerID: string
|
|
8
|
-
modelID: string
|
|
9
|
-
usageRatio: number
|
|
10
|
-
directory: string
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
const SUMMARIZE_CONTEXT_PROMPT = `${createSystemDirective(SystemDirectiveTypes.COMPACTION_CONTEXT)}
|
|
14
|
-
|
|
15
|
-
When summarizing this session, you MUST include the following sections in your summary:
|
|
16
|
-
|
|
17
|
-
## 1. User Requests (As-Is)
|
|
18
|
-
- List all original user requests exactly as they were stated
|
|
19
|
-
- Preserve the user's exact wording and intent
|
|
20
|
-
|
|
21
|
-
## 2. Final Goal
|
|
22
|
-
- What the user ultimately wanted to achieve
|
|
23
|
-
- The end result or deliverable expected
|
|
24
|
-
|
|
25
|
-
## 3. Work Completed
|
|
26
|
-
- What has been done so far
|
|
27
|
-
- Files created/modified
|
|
28
|
-
- Features implemented
|
|
29
|
-
- Problems solved
|
|
30
|
-
|
|
31
|
-
## 4. Remaining Tasks
|
|
32
|
-
- What still needs to be done
|
|
33
|
-
- Pending items from the original request
|
|
34
|
-
- Follow-up tasks identified during the work
|
|
35
|
-
|
|
36
|
-
## 5. MUST NOT Do (Critical Constraints)
|
|
37
|
-
- Things that were explicitly forbidden
|
|
38
|
-
- Approaches that failed and should not be retried
|
|
39
|
-
- User's explicit restrictions or preferences
|
|
40
|
-
- Anti-patterns identified during the session
|
|
41
|
-
|
|
42
|
-
This context is critical for maintaining continuity after compaction.
|
|
43
|
-
`
|
|
44
|
-
|
|
45
|
-
export function createCompactionContextInjector() {
|
|
46
|
-
return async (ctx: SummarizeContext): Promise<void> => {
|
|
47
|
-
log("[compaction-context-injector] injecting context", { sessionID: ctx.sessionID })
|
|
48
|
-
|
|
49
|
-
const success = injectHookMessage(ctx.sessionID, SUMMARIZE_CONTEXT_PROMPT, {
|
|
50
|
-
agent: "general",
|
|
51
|
-
model: { providerID: ctx.providerID, modelID: ctx.modelID },
|
|
52
|
-
path: { cwd: ctx.directory },
|
|
53
|
-
})
|
|
54
|
-
|
|
55
|
-
if (success) {
|
|
56
|
-
log("[compaction-context-injector] context injected", { sessionID: ctx.sessionID })
|
|
57
|
-
} else {
|
|
58
|
-
log("[compaction-context-injector] injection failed", { sessionID: ctx.sessionID })
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|