oh-my-openagent 5.1.1 → 5.1.3
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/README.ja.md +3 -3
- package/README.ko.md +3 -3
- package/README.md +6 -4
- package/README.ru.md +3 -3
- package/README.zh-cn.md +3 -3
- package/dist/cli/index.js +112 -95
- package/dist/cli-node/index.js +112 -95
- package/dist/index.js +66 -37
- package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
- package/dist/skills/refactor/SKILL.md +1 -0
- package/dist/skills/remove-ai-slops/SKILL.md +1 -0
- package/dist/skills/ulw-execute/SKILL.md +1 -0
- package/dist/tui.js +27 -31
- package/package.json +27 -31
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/dist/cli.js +33 -7
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/src/runner.ts +4 -4
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/omo-codex/plugin/skills/refactor/SKILL.md +1 -0
- package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +1 -0
- package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +1 -0
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/shared-skills/skills/refactor/SKILL.md +1 -0
- package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +1 -0
- package/packages/shared-skills/skills/ulw-execute/SKILL.md +1 -0
package/README.ja.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
> [!NOTE]
|
|
2
2
|
> **OmO ベータ: OmO ❤️ Pi**
|
|
3
|
-
> `
|
|
3
|
+
> `curl -fsSL https://get.omo.dev/install.sh | bash` でインストールしてください。メモリシステム、CodeMode、Anthropic サブスクリプションにすべて対応しています。
|
|
4
4
|
> [](https://github.com/jc01rho/omo-herdr-dag)
|
|
5
5
|
> *プロンプトに "mass ulw" と入れるだけ。あなたはもうグラフエンジニアリングのマスター。マルチモデルの ultracode を、より良いメモリシステムとともに。(右側のパネルは [omo-herdr-dag](https://github.com/jc01rho/omo-herdr-dag) です)*
|
|
6
6
|
|
|
@@ -52,11 +52,11 @@ OmO は、あなたのトークンを完成した成果に変える `omo` コマ
|
|
|
52
52
|
## インストール
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
|
-
|
|
55
|
+
curl -fsSL https://get.omo.dev/install.sh | bash
|
|
56
56
|
omo
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
bun
|
|
59
|
+
Windows では PowerShell で `irm https://get.omo.dev/install.ps1 | iex` を実行してください。OS と CPU に合ったネイティブの `omo` を `~/.local/bin` に入れ、リリースのチェックサムで検証します。パッケージマネージャーを使いたい場合は `bun add -g omo-ai`(または `npm i -g omo-ai`)で同じ OmO が入ります。パッケージ名は `omo-ai` です。npm にある `omo` パッケージは無関係の別物です。Windows CMD、`PATH` の直し方、更新とアンインストールは [omo.dev/docs/install](https://omo.dev/docs/install) で説明しています。
|
|
60
60
|
|
|
61
61
|
プロジェクトを開いて `omo` を実行し、やることを伝えてください。セットアップはそれだけです。
|
|
62
62
|
|
package/README.ko.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
> [!NOTE]
|
|
2
2
|
> **OmO 베타: OmO ❤️ Pi**
|
|
3
|
-
> `
|
|
3
|
+
> `curl -fsSL https://get.omo.dev/install.sh | bash`로 설치하세요. 메모리 시스템, CodeMode, Anthropic 구독까지 전부 지원됩니다.
|
|
4
4
|
> [](https://github.com/jc01rho/omo-herdr-dag)
|
|
5
5
|
> *프롬프트에 "mass ulw" 한 줄이면 끝. 당신도 그래프 엔지니어링의 마스터가 됩니다. 멀티 모델 ultracode, 더 나은 메모리 시스템과 함께. (우측의 패널은 [omo-herdr-dag](https://github.com/jc01rho/omo-herdr-dag) 입니다)*
|
|
6
6
|
|
|
@@ -53,11 +53,11 @@ OmO는 토큰을 끝난 일로 바꿔 주는 `omo` 명령 하나입니다. 만
|
|
|
53
53
|
## 설치
|
|
54
54
|
|
|
55
55
|
```bash
|
|
56
|
-
|
|
56
|
+
curl -fsSL https://get.omo.dev/install.sh | bash
|
|
57
57
|
omo
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
-
bun
|
|
60
|
+
Windows는 PowerShell에서 `irm https://get.omo.dev/install.ps1 | iex`를 실행하세요. OS와 CPU에 맞는 네이티브 `omo`를 `~/.local/bin`에 설치하고 릴리스 체크섬으로 검증합니다. 패키지 매니저가 편하면 `bun add -g omo-ai`(또는 `npm i -g omo-ai`)로 같은 OmO를 설치할 수 있어요. 패키지 이름은 `omo-ai`예요. npm의 `omo` 패키지는 다른 사람이 만든 전혀 다른 물건입니다. Windows CMD, `PATH` 문제 해결, 업데이트와 삭제는 [omo.dev/docs/install](https://omo.dev/docs/install)에서 다룹니다.
|
|
61
61
|
|
|
62
62
|
프로젝트를 열고 `omo`를 실행한 다음, 할 일을 말하세요. 설정은 그게 끝.
|
|
63
63
|
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
> [!NOTE]
|
|
2
2
|
> **OmO 5.0: OmO ❤️ Pi**
|
|
3
|
-
> Install it with `
|
|
3
|
+
> Install it with `curl -fsSL https://get.omo.dev/install.sh | bash`. Memory system, CodeMode, Anthropic subscriptions, all covered.
|
|
4
4
|
> [](https://github.com/jc01rho/omo-herdr-dag)
|
|
5
5
|
> *Just type "mass ulw" with your prompt - now you are the master of graph engineering. Multi-model ultracode, together with a better memory system. (The right panel is [omo-herdr-dag](https://github.com/jc01rho/omo-herdr-dag).)*
|
|
6
6
|
|
|
@@ -51,17 +51,19 @@ OmO is one `omo` command that turns your tokens into finished work: research acr
|
|
|
51
51
|
## Install
|
|
52
52
|
|
|
53
53
|
```bash
|
|
54
|
-
|
|
54
|
+
curl -fsSL https://get.omo.dev/install.sh | bash
|
|
55
55
|
omo
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
On Windows, in PowerShell: `irm https://get.omo.dev/install.ps1 | iex`. The script installs the native `omo` binary for your OS and CPU into `~/.local/bin`, checks it against the release checksums, and falls back to GitHub Releases when the mirror is unreachable. Add `-s -- beta` (or a version such as `-s -- 5.1.1`) after `bash` to pick another channel. Windows CMD, fixing your `PATH`, updating and uninstalling are covered at [omo.dev/docs/install](https://omo.dev/docs/install).
|
|
59
|
+
|
|
60
|
+
Prefer a package manager? `bun add -g omo-ai` (or `npm i -g omo-ai`) installs the same OmO. The package is `omo-ai`; the unrelated `omo` package on npm is someone else's.
|
|
59
61
|
|
|
60
62
|
Open your project, run `omo`, describe the job. That's the whole setup.
|
|
61
63
|
|
|
62
64
|
Coming from the OpenCode edition or LazyCodex? Run `omo setup` once. It carries your provider keys, custom providers, MCP servers, skills and model picks across. `omo doctor` then shows which task categories your providers can run and what the old install left behind. The full walkthrough is [Migrating from OpenCode](docs/guide/migrating-from-opencode.md).
|
|
63
65
|
|
|
64
|
-
`omo update`
|
|
66
|
+
To update, run the install line again (a package-manager install updates with `omo update`). `rm ~/.local/bin/omo` removes the binary install; `bun remove -g omo-ai` (or `npm uninstall -g omo-ai`) removes the package install.
|
|
65
67
|
|
|
66
68
|
## Why OmO
|
|
67
69
|
|
package/README.ru.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
> [!NOTE]
|
|
2
2
|
> **OmO Бета: OmO ❤️ Pi**
|
|
3
|
-
> Установите `
|
|
3
|
+
> Установите одной командой `curl -fsSL https://get.omo.dev/install.sh | bash`: система памяти, CodeMode, подписки Anthropic. Всё включено.
|
|
4
4
|
> [](https://github.com/jc01rho/omo-herdr-dag)
|
|
5
5
|
> *Просто добавьте "mass ulw" в свой промпт - и вы мастер графовой инженерии. Мультимодельный ultracode с улучшенной системой памяти. (Правая панель - [omo-herdr-dag](https://github.com/jc01rho/omo-herdr-dag))*
|
|
6
6
|
|
|
@@ -52,11 +52,11 @@ OmO это одна команда `omo`, которая превращает в
|
|
|
52
52
|
## Установка
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
|
-
|
|
55
|
+
curl -fsSL https://get.omo.dev/install.sh | bash
|
|
56
56
|
omo
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
В Windows запустите в PowerShell `irm https://get.omo.dev/install.ps1 | iex`. Скрипт ставит нативный `omo` для вашей ОС и процессора в `~/.local/bin` и сверяет его с контрольными суммами релиза. Если удобнее пакетный менеджер, `bun add -g omo-ai` (или `npm i -g omo-ai`) ставит тот же OmO. Пакет называется `omo-ai`, а пакет `omo` в npm не имеет к нам отношения. Windows CMD, исправление `PATH`, обновление и удаление описаны на [omo.dev/docs/install](https://omo.dev/docs/install).
|
|
60
60
|
|
|
61
61
|
Откройте проект, запустите `omo` и опишите задачу. На этом настройка закончена.
|
|
62
62
|
|
package/README.zh-cn.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
> [!NOTE]
|
|
2
2
|
> **OmO 测试版: OmO ❤️ Pi**
|
|
3
|
-
> 使用 `
|
|
3
|
+
> 使用 `curl -fsSL https://get.omo.dev/install.sh | bash` 安装。记忆系统、CodeMode、Anthropic 订阅,全部支持。
|
|
4
4
|
> [](https://github.com/jc01rho/omo-herdr-dag)
|
|
5
5
|
> *只需在提示词中输入 "mass ulw" - 你就是图工程的大师。多模型 ultracode,搭配更出色的记忆系统。(右侧面板是 [omo-herdr-dag](https://github.com/jc01rho/omo-herdr-dag))*
|
|
6
6
|
|
|
@@ -52,11 +52,11 @@ OmO 就是一个 `omo` 命令,把你的 token 变成真正完成的工作:
|
|
|
52
52
|
## 安装
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
|
-
|
|
55
|
+
curl -fsSL https://get.omo.dev/install.sh | bash
|
|
56
56
|
omo
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
Windows 请在 PowerShell 中运行 `irm https://get.omo.dev/install.ps1 | iex`。脚本会为你的系统和 CPU 安装原生 `omo` 到 `~/.local/bin`,并用发布的校验和验证。想用包管理器的话,`bun add -g omo-ai`(或 `npm i -g omo-ai`)安装的是同一个 OmO。包名是 `omo-ai`;npm 上那个无关的 `omo` 包属于别人。Windows CMD、`PATH` 修复、更新和卸载见 [omo.dev/docs/install](https://omo.dev/docs/install)。
|
|
60
60
|
|
|
61
61
|
打开项目,运行 `omo`,说出要做的事。设置就这么多。
|
|
62
62
|
|
package/dist/cli/index.js
CHANGED
|
@@ -64,7 +64,7 @@ var package_default;
|
|
|
64
64
|
var init_package = __esm(() => {
|
|
65
65
|
package_default = {
|
|
66
66
|
name: "oh-my-opencode",
|
|
67
|
-
version: "5.1.
|
|
67
|
+
version: "5.1.3",
|
|
68
68
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
69
69
|
main: "./dist/index.js",
|
|
70
70
|
types: "dist/index.d.ts",
|
|
@@ -235,25 +235,14 @@ var init_package = __esm(() => {
|
|
|
235
235
|
},
|
|
236
236
|
homepage: "https://github.com/code-yeongyu/oh-my-openagent#readme",
|
|
237
237
|
dependencies: {
|
|
238
|
-
"@clack/prompts": "^1.8.1",
|
|
239
|
-
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
240
|
-
"@opencode-ai/plugin": "1.18.31",
|
|
241
|
-
"@opencode-ai/sdk": "1.18.31",
|
|
242
|
-
"@opentui/core": "^0.5.11",
|
|
243
|
-
"@opentui/keymap": "^0.5.11",
|
|
244
238
|
"@opentui/solid": "^0.5.11",
|
|
245
|
-
commander: "^15.0.0",
|
|
246
239
|
"detect-libc": "^2.1.2",
|
|
247
|
-
diff: "^9.0.0",
|
|
248
|
-
"js-yaml": "^5.4.2",
|
|
249
|
-
"jsonc-parser": "^3.3.1",
|
|
250
|
-
picocolors: "^1.1.1",
|
|
251
|
-
picomatch: "^4.0.7",
|
|
252
|
-
"posthog-node": "^5.52.4",
|
|
253
240
|
zod: "^4.6.5"
|
|
254
241
|
},
|
|
255
242
|
devDependencies: {
|
|
256
|
-
"@
|
|
243
|
+
"@clack/prompts": "^1.8.1",
|
|
244
|
+
"@code-yeongyu/senpi": "2026.9.29-4",
|
|
245
|
+
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
257
246
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
258
247
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
259
248
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -287,36 +276,43 @@ var init_package = __esm(() => {
|
|
|
287
276
|
"@oh-my-opencode/telemetry-core": "workspace:*",
|
|
288
277
|
"@oh-my-opencode/tmux-core": "workspace:*",
|
|
289
278
|
"@oh-my-opencode/utils": "workspace:*",
|
|
279
|
+
"@opencode-ai/plugin": "1.18.31",
|
|
280
|
+
"@opencode-ai/sdk": "1.18.31",
|
|
281
|
+
"@opentui/core": "^0.5.11",
|
|
282
|
+
"@opentui/keymap": "^0.5.11",
|
|
290
283
|
"@types/js-yaml": "^4.0.9",
|
|
291
284
|
"@types/picomatch": "^4.0.3",
|
|
292
285
|
"@typescript/native-preview": "7.0.0-dev.20260707.2",
|
|
293
286
|
"@xterm/addon-unicode11": "^0.9.0",
|
|
294
287
|
"@xterm/xterm": "^6.0.0",
|
|
295
288
|
"bun-types": "1.4.2",
|
|
289
|
+
commander: "^15.0.0",
|
|
290
|
+
diff: "^9.0.0",
|
|
291
|
+
"js-yaml": "^5.4.2",
|
|
292
|
+
"jsonc-parser": "^3.3.1",
|
|
296
293
|
"node-pty": "^1.1.0",
|
|
297
294
|
omowright: "github:code-yeongyu/omowright#293ca5002cbd4c8b0c104c5934683385ef7e0d3a",
|
|
295
|
+
picocolors: "^1.1.1",
|
|
296
|
+
picomatch: "^4.0.7",
|
|
297
|
+
"posthog-node": "^5.52.4",
|
|
298
298
|
"puppeteer-core": "^25.11.0",
|
|
299
299
|
typescript: "^7.0.2"
|
|
300
300
|
},
|
|
301
301
|
optionalDependencies: {
|
|
302
|
-
"oh-my-opencode-darwin-arm64": "5.1.
|
|
303
|
-
"oh-my-opencode-darwin-x64": "5.1.
|
|
304
|
-
"oh-my-opencode-darwin-x64-baseline": "5.1.
|
|
305
|
-
"oh-my-opencode-linux-arm64": "5.1.
|
|
306
|
-
"oh-my-opencode-linux-arm64-musl": "5.1.
|
|
307
|
-
"oh-my-opencode-linux-x64": "5.1.
|
|
308
|
-
"oh-my-opencode-linux-x64-baseline": "5.1.
|
|
309
|
-
"oh-my-opencode-linux-x64-musl": "5.1.
|
|
310
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.1.
|
|
311
|
-
"oh-my-opencode-windows-arm64": "5.1.
|
|
312
|
-
"oh-my-opencode-windows-x64": "5.1.
|
|
313
|
-
"oh-my-opencode-windows-x64-baseline": "5.1.
|
|
302
|
+
"oh-my-opencode-darwin-arm64": "5.1.3",
|
|
303
|
+
"oh-my-opencode-darwin-x64": "5.1.3",
|
|
304
|
+
"oh-my-opencode-darwin-x64-baseline": "5.1.3",
|
|
305
|
+
"oh-my-opencode-linux-arm64": "5.1.3",
|
|
306
|
+
"oh-my-opencode-linux-arm64-musl": "5.1.3",
|
|
307
|
+
"oh-my-opencode-linux-x64": "5.1.3",
|
|
308
|
+
"oh-my-opencode-linux-x64-baseline": "5.1.3",
|
|
309
|
+
"oh-my-opencode-linux-x64-musl": "5.1.3",
|
|
310
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.1.3",
|
|
311
|
+
"oh-my-opencode-windows-arm64": "5.1.3",
|
|
312
|
+
"oh-my-opencode-windows-x64": "5.1.3",
|
|
313
|
+
"oh-my-opencode-windows-x64-baseline": "5.1.3"
|
|
314
314
|
},
|
|
315
315
|
overrides: {
|
|
316
|
-
"@earendil-works/pi-agent-core": "0.84.2",
|
|
317
|
-
"@earendil-works/pi-ai": "0.84.2",
|
|
318
|
-
"@earendil-works/pi-coding-agent": "0.84.2",
|
|
319
|
-
"@earendil-works/pi-tui": "0.84.2",
|
|
320
316
|
hono: "^4.13.8",
|
|
321
317
|
"@hono/node-server": "2.1.1",
|
|
322
318
|
"express-rate-limit": "^8.7.0",
|
|
@@ -89024,7 +89020,7 @@ var package_default2;
|
|
|
89024
89020
|
var init_package2 = __esm(() => {
|
|
89025
89021
|
package_default2 = {
|
|
89026
89022
|
name: "@oh-my-opencode/omo-codex",
|
|
89027
|
-
version: "5.1.
|
|
89023
|
+
version: "5.1.3",
|
|
89028
89024
|
type: "module",
|
|
89029
89025
|
private: true,
|
|
89030
89026
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -106457,15 +106453,10 @@ async function checkDeprecatedReasoningKeys() {
|
|
|
106457
106453
|
}
|
|
106458
106454
|
|
|
106459
106455
|
// packages/omo-opencode/src/cli/doctor/checks/dependencies.ts
|
|
106460
|
-
init_src();
|
|
106461
106456
|
import { existsSync as existsSync55 } from "fs";
|
|
106462
|
-
import { createRequire as
|
|
106457
|
+
import { createRequire as createRequire3 } from "module";
|
|
106463
106458
|
import { homedir as homedir20 } from "os";
|
|
106464
|
-
import {
|
|
106465
|
-
|
|
106466
|
-
// packages/omo-opencode/src/hooks/comment-checker/downloader.ts
|
|
106467
|
-
import { join as join87 } from "path";
|
|
106468
|
-
import { homedir as homedir19, tmpdir as tmpdir4 } from "os";
|
|
106459
|
+
import { join as join89 } from "path";
|
|
106469
106460
|
// packages/comment-checker-core/src/release.ts
|
|
106470
106461
|
import { join as join85 } from "path";
|
|
106471
106462
|
var COMMENT_CHECKER_RELEASE_VERSION = "0.8.0";
|
|
@@ -106492,12 +106483,45 @@ function isCachedCommentCheckerCurrent(cacheDir, readFile = (path) => readFileSy
|
|
|
106492
106483
|
return false;
|
|
106493
106484
|
}
|
|
106494
106485
|
}
|
|
106486
|
+
// packages/comment-checker-core/src/package-binary.ts
|
|
106487
|
+
import { createRequire as createRequire2 } from "module";
|
|
106488
|
+
import { dirname as dirname33, join as join87 } from "path";
|
|
106489
|
+
var COMMENT_CHECKER_PACKAGE_NAME = "@code-yeongyu/comment-checker";
|
|
106490
|
+
function isModuleResolutionMiss(error) {
|
|
106491
|
+
return error instanceof Error || typeof error === "object" && error !== null && "name" in error && error.name === "ResolveMessage";
|
|
106492
|
+
}
|
|
106493
|
+
function findCommentCheckerPackageBinary(input) {
|
|
106494
|
+
const packageName = input.packageName ?? COMMENT_CHECKER_PACKAGE_NAME;
|
|
106495
|
+
const platformKey = `${input.platform ?? process.platform}-${input.arch ?? process.arch}`;
|
|
106496
|
+
const packageDir = dirname33(input.packageJsonPath);
|
|
106497
|
+
const candidates = [
|
|
106498
|
+
resolvePlatformPackageBinary(input.packageJsonPath, `${packageName}-${platformKey}`, input.binaryName),
|
|
106499
|
+
join87(packageDir, "vendor", platformKey, input.binaryName),
|
|
106500
|
+
join87(packageDir, "bin", input.binaryName)
|
|
106501
|
+
];
|
|
106502
|
+
return candidates.find((candidate) => candidate !== null && input.existsSync(candidate)) ?? null;
|
|
106503
|
+
}
|
|
106504
|
+
function resolvePlatformPackageBinary(packageJsonPath, platformPackageName, binaryName) {
|
|
106505
|
+
try {
|
|
106506
|
+
const manifestPath = createRequire2(packageJsonPath).resolve(`${platformPackageName}/package.json`);
|
|
106507
|
+
return join87(dirname33(manifestPath), "bin", binaryName);
|
|
106508
|
+
} catch (error) {
|
|
106509
|
+
if (isModuleResolutionMiss(error))
|
|
106510
|
+
return null;
|
|
106511
|
+
throw error;
|
|
106512
|
+
}
|
|
106513
|
+
}
|
|
106514
|
+
// packages/omo-opencode/src/cli/doctor/checks/dependencies.ts
|
|
106515
|
+
init_src();
|
|
106516
|
+
|
|
106495
106517
|
// packages/omo-opencode/src/hooks/comment-checker/downloader.ts
|
|
106518
|
+
import { join as join88 } from "path";
|
|
106519
|
+
import { homedir as homedir19, tmpdir as tmpdir4 } from "os";
|
|
106496
106520
|
init_binary_downloader();
|
|
106497
106521
|
init_logger2();
|
|
106498
106522
|
init_plugin_identity();
|
|
106499
106523
|
var DEBUG = process.env.COMMENT_CHECKER_DEBUG === "1";
|
|
106500
|
-
var DEBUG_FILE =
|
|
106524
|
+
var DEBUG_FILE = join88(tmpdir4(), "comment-checker-debug.log");
|
|
106501
106525
|
function getCacheDir2() {
|
|
106502
106526
|
return commentCheckerCacheDir({
|
|
106503
106527
|
platform: process.platform,
|
|
@@ -106556,7 +106580,7 @@ async function getBinaryVersion(binary) {
|
|
|
106556
106580
|
}
|
|
106557
106581
|
}
|
|
106558
106582
|
async function checkAstGrepCli() {
|
|
106559
|
-
const runtimeDir = astGrepRuntimeDir(
|
|
106583
|
+
const runtimeDir = astGrepRuntimeDir(join89(homedir20(), ".omo"));
|
|
106560
106584
|
const sgPath = findSgBinarySync({ runtimeDir });
|
|
106561
106585
|
if (sgPath === null) {
|
|
106562
106586
|
return {
|
|
@@ -106578,20 +106602,14 @@ async function checkAstGrepCli() {
|
|
|
106578
106602
|
};
|
|
106579
106603
|
}
|
|
106580
106604
|
function resolveCommentCheckerPackageJson() {
|
|
106581
|
-
const require2 =
|
|
106605
|
+
const require2 = createRequire3(import.meta.url);
|
|
106582
106606
|
return require2.resolve("@code-yeongyu/comment-checker/package.json");
|
|
106583
106607
|
}
|
|
106584
|
-
function
|
|
106608
|
+
function findCommentCheckerPackageBinary2(baseDirOverride, resolvePackageJsonPath = resolveCommentCheckerPackageJson) {
|
|
106585
106609
|
const binaryName = process.platform === "win32" ? "comment-checker.exe" : "comment-checker";
|
|
106586
|
-
const platformKey = `${process.platform}-${process.arch === "x64" ? "x64" : process.arch}`;
|
|
106587
106610
|
try {
|
|
106588
|
-
const
|
|
106589
|
-
|
|
106590
|
-
if (existsSync55(vendorPath))
|
|
106591
|
-
return vendorPath;
|
|
106592
|
-
const binPath = join88(packageDir, "bin", binaryName);
|
|
106593
|
-
if (existsSync55(binPath))
|
|
106594
|
-
return binPath;
|
|
106611
|
+
const packageJsonPath = baseDirOverride === undefined ? resolvePackageJsonPath() : join89(baseDirOverride, "package.json");
|
|
106612
|
+
return findCommentCheckerPackageBinary({ packageJsonPath, binaryName, existsSync: existsSync55 });
|
|
106595
106613
|
} catch (error) {
|
|
106596
106614
|
if (!(error instanceof Error) && !isModuleResolutionFailure(error))
|
|
106597
106615
|
throw error;
|
|
@@ -106611,7 +106629,7 @@ async function checkCommentChecker() {
|
|
|
106611
106629
|
};
|
|
106612
106630
|
}
|
|
106613
106631
|
const binaryCheck = await checkBinaryExists("comment-checker");
|
|
106614
|
-
const resolvedPath = binaryCheck.exists ? binaryCheck.path :
|
|
106632
|
+
const resolvedPath = binaryCheck.exists ? binaryCheck.path : findCommentCheckerPackageBinary2();
|
|
106615
106633
|
if (!resolvedPath) {
|
|
106616
106634
|
return {
|
|
106617
106635
|
name: "Comment Checker",
|
|
@@ -106737,7 +106755,7 @@ async function getGhCliInfo(dependencies = {}) {
|
|
|
106737
106755
|
init_zod();
|
|
106738
106756
|
init_opencode_config_dir();
|
|
106739
106757
|
import { existsSync as existsSync56, readFileSync as readFileSync38 } from "fs";
|
|
106740
|
-
import { delimiter as delimiter3, dirname as
|
|
106758
|
+
import { delimiter as delimiter3, dirname as dirname35, resolve as resolve23 } from "path";
|
|
106741
106759
|
import { fileURLToPath as fileURLToPath7 } from "url";
|
|
106742
106760
|
|
|
106743
106761
|
// packages/omo-opencode/src/mcp/cli-suffix.ts
|
|
@@ -106868,7 +106886,7 @@ var LSP_BOOTSTRAP_SCRIPT = [
|
|
|
106868
106886
|
].join(";");
|
|
106869
106887
|
function getModuleDirectory(moduleUrl) {
|
|
106870
106888
|
try {
|
|
106871
|
-
return
|
|
106889
|
+
return dirname35(fileURLToPath7(moduleUrl));
|
|
106872
106890
|
} catch (error) {
|
|
106873
106891
|
if (!(error instanceof Error))
|
|
106874
106892
|
throw error;
|
|
@@ -106965,13 +106983,13 @@ function getInstalledLspServers(options = {}) {
|
|
|
106965
106983
|
init_shared();
|
|
106966
106984
|
import { existsSync as existsSync57, readFileSync as readFileSync39 } from "fs";
|
|
106967
106985
|
import { homedir as homedir21 } from "os";
|
|
106968
|
-
import { join as
|
|
106986
|
+
import { join as join90 } from "path";
|
|
106969
106987
|
var BUILTIN_MCP_SERVERS = ["websearch", "context7", "grep_app", "lsp"];
|
|
106970
106988
|
function getMcpConfigPaths() {
|
|
106971
106989
|
return [
|
|
106972
|
-
|
|
106973
|
-
|
|
106974
|
-
|
|
106990
|
+
join90(homedir21(), ".claude", ".mcp.json"),
|
|
106991
|
+
join90(process.cwd(), ".mcp.json"),
|
|
106992
|
+
join90(process.cwd(), ".claude", ".mcp.json")
|
|
106975
106993
|
];
|
|
106976
106994
|
}
|
|
106977
106995
|
function loadUserMcpConfig() {
|
|
@@ -107253,7 +107271,7 @@ init_src();
|
|
|
107253
107271
|
import { existsSync as existsSync59 } from "fs";
|
|
107254
107272
|
import { lstat as lstat16, readdir as readdir14, readFile as readFile30 } from "fs/promises";
|
|
107255
107273
|
import { homedir as homedir23 } from "os";
|
|
107256
|
-
import { basename as basename12, join as
|
|
107274
|
+
import { basename as basename12, join as join91, resolve as resolve24 } from "path";
|
|
107257
107275
|
// packages/omo-opencode/package.json
|
|
107258
107276
|
var package_default3 = {
|
|
107259
107277
|
name: "@oh-my-opencode/omo-opencode",
|
|
@@ -107301,7 +107319,6 @@ var package_default3 = {
|
|
|
107301
107319
|
commander: "^15.0.0",
|
|
107302
107320
|
"jsonc-parser": "^3.3.1",
|
|
107303
107321
|
picocolors: "^1.1.1",
|
|
107304
|
-
picomatch: "^4.0.7",
|
|
107305
107322
|
zod: "^4.6.5"
|
|
107306
107323
|
}
|
|
107307
107324
|
};
|
|
@@ -107323,13 +107340,13 @@ var CODEX_BIN_NAMES = [
|
|
|
107323
107340
|
"omo-git-bash-hook"
|
|
107324
107341
|
];
|
|
107325
107342
|
async function gatherCodexSummary(deps = {}) {
|
|
107326
|
-
const codexHome = resolve24(deps.codexHome ?? process.env.CODEX_HOME ??
|
|
107343
|
+
const codexHome = resolve24(deps.codexHome ?? process.env.CODEX_HOME ?? join91(homedir23(), ".codex"));
|
|
107327
107344
|
const binDir = resolveCodexInstallerBinDir({ binDir: deps.binDir, codexHome, env: process.env });
|
|
107328
107345
|
const detection = await (deps.detectCodexInstallation ?? detectCodexInstallation)();
|
|
107329
107346
|
const pluginRoot = await resolveInstalledPluginRoot(codexHome);
|
|
107330
|
-
const manifest = pluginRoot === null ? null : await readJson(
|
|
107331
|
-
const installSnapshot = pluginRoot === null ? null : await readJson(
|
|
107332
|
-
const configPath =
|
|
107347
|
+
const manifest = pluginRoot === null ? null : await readJson(join91(pluginRoot, ".codex-plugin", "plugin.json"));
|
|
107348
|
+
const installSnapshot = pluginRoot === null ? null : await readJson(join91(pluginRoot, "lazycodex-install.json"));
|
|
107349
|
+
const configPath = join91(codexHome, "config.toml");
|
|
107333
107350
|
const pluginVersion = stringField(manifest, "version");
|
|
107334
107351
|
return {
|
|
107335
107352
|
codexPath: detection.found && "path" in detection ? detection.path : null,
|
|
@@ -107386,7 +107403,7 @@ function buildCodexIssues(summary) {
|
|
|
107386
107403
|
if (summary.pluginRoot === null) {
|
|
107387
107404
|
issues.push({
|
|
107388
107405
|
title: "OMO Codex plugin is not installed",
|
|
107389
|
-
description: `Expected cached plugin at ${
|
|
107406
|
+
description: `Expected cached plugin at ${join91("plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2, DEFAULT_PLUGIN_VERSION)} under CODEX_HOME.`,
|
|
107390
107407
|
fix: "Run: npx lazycodex-ai install",
|
|
107391
107408
|
severity: "error",
|
|
107392
107409
|
affects: ["plugin loading"]
|
|
@@ -107451,12 +107468,12 @@ function buildCodexIssues(summary) {
|
|
|
107451
107468
|
return issues;
|
|
107452
107469
|
}
|
|
107453
107470
|
async function resolveInstalledPluginRoot(codexHome) {
|
|
107454
|
-
const pluginRoot =
|
|
107471
|
+
const pluginRoot = join91(codexHome, "plugins", "cache", MARKETPLACE_NAME, PLUGIN_NAME2);
|
|
107455
107472
|
if (!existsSync59(pluginRoot))
|
|
107456
107473
|
return null;
|
|
107457
107474
|
const versions = await readdir14(pluginRoot, { withFileTypes: true });
|
|
107458
107475
|
const candidates = versions.filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort(compareVersionsDescending);
|
|
107459
|
-
return candidates.length === 0 ? null :
|
|
107476
|
+
return candidates.length === 0 ? null : join91(pluginRoot, candidates[0] ?? DEFAULT_PLUGIN_VERSION);
|
|
107460
107477
|
}
|
|
107461
107478
|
async function readCodexConfigSummary(configPath) {
|
|
107462
107479
|
if (!existsSync59(configPath)) {
|
|
@@ -107484,13 +107501,13 @@ async function readCodexConfigSummary(configPath) {
|
|
|
107484
107501
|
async function readLinkedBins(binDir) {
|
|
107485
107502
|
const linked = [];
|
|
107486
107503
|
for (const name of CODEX_BIN_NAMES) {
|
|
107487
|
-
if (await pathExists3(
|
|
107504
|
+
if (await pathExists3(join91(binDir, process.platform === "win32" ? `${name}.cmd` : name)))
|
|
107488
107505
|
linked.push(name);
|
|
107489
107506
|
}
|
|
107490
107507
|
return linked;
|
|
107491
107508
|
}
|
|
107492
107509
|
async function readLinkedAgents(codexHome) {
|
|
107493
|
-
const agentsDir =
|
|
107510
|
+
const agentsDir = join91(codexHome, "agents");
|
|
107494
107511
|
if (!existsSync59(agentsDir))
|
|
107495
107512
|
return [];
|
|
107496
107513
|
const entries = await readdir14(agentsDir, { withFileTypes: true });
|
|
@@ -107624,7 +107641,7 @@ function resolveLatestVersion(input) {
|
|
|
107624
107641
|
init_src();
|
|
107625
107642
|
import { readdir as readdir15, readFile as readFile31, stat as stat7 } from "fs/promises";
|
|
107626
107643
|
import { homedir as homedir24 } from "os";
|
|
107627
|
-
import { dirname as
|
|
107644
|
+
import { dirname as dirname36, isAbsolute as isAbsolute14, join as join92, relative as relative9, resolve as resolve25, sep as sep9 } from "path";
|
|
107628
107645
|
var CODEX_COMPONENTS_CHECK_ID = "codex-components";
|
|
107629
107646
|
var CODEX_COMPONENTS_CHECK_NAME = "codex-components";
|
|
107630
107647
|
var PLUGIN_DATA_DIR_NAME = "omo-sisyphuslabs";
|
|
@@ -107634,7 +107651,7 @@ async function checkCodexComponents(deps = {}) {
|
|
|
107634
107651
|
const env = deps.env ?? process.env;
|
|
107635
107652
|
const platform = deps.platform ?? process.platform;
|
|
107636
107653
|
const arch = deps.arch ?? process.arch;
|
|
107637
|
-
const codexHome = resolve25(deps.codexHome ?? env["CODEX_HOME"] ??
|
|
107654
|
+
const codexHome = resolve25(deps.codexHome ?? env["CODEX_HOME"] ?? join92(homedir24(), ".codex"));
|
|
107638
107655
|
const summary = await gatherCodexSummary({ ...deps, codexHome });
|
|
107639
107656
|
if (summary.pluginRoot === null) {
|
|
107640
107657
|
return {
|
|
@@ -107659,7 +107676,7 @@ async function checkCodexComponents(deps = {}) {
|
|
|
107659
107676
|
});
|
|
107660
107677
|
}
|
|
107661
107678
|
const runtimeSgDir = runtimeSgDirectory(codexHome, platform, arch);
|
|
107662
|
-
const runtimeSgPath =
|
|
107679
|
+
const runtimeSgPath = join92(runtimeSgDir, sgBinaryName(platform));
|
|
107663
107680
|
const sg = findSgBinarySync({
|
|
107664
107681
|
arch,
|
|
107665
107682
|
env,
|
|
@@ -107698,7 +107715,7 @@ async function auditBundleTargets(pluginRoot) {
|
|
|
107698
107715
|
const manifest = await readJson2(manifestPath);
|
|
107699
107716
|
if (manifest === null || !isRecord18(manifest["mcpServers"]))
|
|
107700
107717
|
continue;
|
|
107701
|
-
const manifestRoot =
|
|
107718
|
+
const manifestRoot = dirname36(manifestPath);
|
|
107702
107719
|
const isRootManifest = resolve25(manifestRoot) === resolve25(pluginRoot);
|
|
107703
107720
|
for (const server of Object.values(manifest["mcpServers"])) {
|
|
107704
107721
|
if (!isRecord18(server) || !Array.isArray(server["args"]))
|
|
@@ -107719,7 +107736,7 @@ async function auditBundleTargets(pluginRoot) {
|
|
|
107719
107736
|
continue;
|
|
107720
107737
|
const commands = [];
|
|
107721
107738
|
collectHookCommands(manifest, commands);
|
|
107722
|
-
const hookPluginRoot =
|
|
107739
|
+
const hookPluginRoot = dirname36(dirname36(hookManifestPath));
|
|
107723
107740
|
for (const command of commands) {
|
|
107724
107741
|
for (const relativePath of extractPluginRootPaths(command)) {
|
|
107725
107742
|
referencedCount += 1;
|
|
@@ -107758,7 +107775,7 @@ async function classifyBundleTarget(bundleRoot, baseRoot, relativePath, allowEsc
|
|
|
107758
107775
|
}
|
|
107759
107776
|
async function findHookManifestPaths(root) {
|
|
107760
107777
|
const paths = await findManifestPaths(root, "hooks.json");
|
|
107761
|
-
return paths.filter((path) =>
|
|
107778
|
+
return paths.filter((path) => dirname36(path).endsWith(`${sep9}hooks`));
|
|
107762
107779
|
}
|
|
107763
107780
|
async function findManifestPaths(root, manifestName) {
|
|
107764
107781
|
let entries;
|
|
@@ -107771,7 +107788,7 @@ async function findManifestPaths(root, manifestName) {
|
|
|
107771
107788
|
for (const entry of entries) {
|
|
107772
107789
|
if (entry.name === "node_modules" || entry.name === ".git")
|
|
107773
107790
|
continue;
|
|
107774
|
-
const entryPath =
|
|
107791
|
+
const entryPath = join92(root, entry.name);
|
|
107775
107792
|
if (entry.isDirectory()) {
|
|
107776
107793
|
paths.push(...await findManifestPaths(entryPath, manifestName));
|
|
107777
107794
|
continue;
|
|
@@ -107815,18 +107832,18 @@ function isPluginRuntimePathArg(arg) {
|
|
|
107815
107832
|
return normalized.endsWith(".js") && normalized.includes("/dist/") && (normalized.startsWith("./") || normalized.startsWith("../") || normalized.startsWith("components/") || normalized.startsWith("/") || isAbsolute14(arg));
|
|
107816
107833
|
}
|
|
107817
107834
|
function runtimeSgDirectory(codexHome, platform, arch) {
|
|
107818
|
-
return
|
|
107835
|
+
return join92(codexHome, "runtime", "ast-grep", runtimeSlug(platform, arch));
|
|
107819
107836
|
}
|
|
107820
107837
|
function describeSgSource(sgPath, env, runtimeSgDir, platform) {
|
|
107821
107838
|
const override = env[SG_PATH_ENV_KEY]?.trim();
|
|
107822
107839
|
if (override !== undefined && override.length > 0 && sgPath === override)
|
|
107823
107840
|
return `env override ${SG_PATH_ENV_KEY}`;
|
|
107824
|
-
if (sgPath ===
|
|
107841
|
+
if (sgPath === join92(runtimeSgDir, sgBinaryName(platform)))
|
|
107825
107842
|
return "runtime dir";
|
|
107826
107843
|
return "PATH";
|
|
107827
107844
|
}
|
|
107828
107845
|
async function readBootstrapStateSummary(codexHome) {
|
|
107829
|
-
const statePath =
|
|
107846
|
+
const statePath = join92(codexHome, "plugins", "data", PLUGIN_DATA_DIR_NAME, "bootstrap", "state.json");
|
|
107830
107847
|
const raw = await readJson2(statePath);
|
|
107831
107848
|
if (raw === null)
|
|
107832
107849
|
return null;
|
|
@@ -107905,16 +107922,16 @@ function isRecord18(value) {
|
|
|
107905
107922
|
import { existsSync as existsSync60 } from "fs";
|
|
107906
107923
|
import { readFile as readFile32 } from "fs/promises";
|
|
107907
107924
|
import { homedir as homedir25 } from "os";
|
|
107908
|
-
import { join as
|
|
107925
|
+
import { join as join93, resolve as resolve26 } from "path";
|
|
107909
107926
|
var RUNTIME_WRAPPER_MARKER2 = "OMO_GENERATED_RUNTIME_WRAPPER";
|
|
107910
107927
|
var CHECK_NAME = "codex-runtime-wrapper";
|
|
107911
107928
|
var REINSTALL_COMMAND = "npx --yes lazycodex-ai@latest install --no-tui";
|
|
107912
107929
|
async function checkCodexRuntimeWrapper(deps = {}) {
|
|
107913
|
-
const codexHome = resolve26(deps.codexHome ?? process.env.CODEX_HOME ??
|
|
107930
|
+
const codexHome = resolve26(deps.codexHome ?? process.env.CODEX_HOME ?? join93(homedir25(), ".codex"));
|
|
107914
107931
|
const binDir = resolveCodexInstallerBinDir({ binDir: deps.binDir, codexHome, env: process.env });
|
|
107915
107932
|
const platform = deps.platform ?? process.platform;
|
|
107916
|
-
const wrapperPath =
|
|
107917
|
-
const legacyWrapperPath =
|
|
107933
|
+
const wrapperPath = join93(binDir, platform === "win32" ? "omo-agent-toolkit.cmd" : "omo-agent-toolkit");
|
|
107934
|
+
const legacyWrapperPath = join93(binDir, platform === "win32" ? "omo.cmd" : "omo");
|
|
107918
107935
|
const [wrapper, legacyWrapper] = await Promise.all([readRuntimeWrapper(wrapperPath), readRuntimeWrapper(legacyWrapperPath)]);
|
|
107919
107936
|
const issues = [];
|
|
107920
107937
|
if (wrapper?.includes(RUNTIME_WRAPPER_MARKER2) === true) {
|
|
@@ -108450,12 +108467,12 @@ import {
|
|
|
108450
108467
|
unlinkSync as unlinkSync9,
|
|
108451
108468
|
writeFileSync as writeFileSync14
|
|
108452
108469
|
} from "fs";
|
|
108453
|
-
import { basename as basename13, dirname as
|
|
108470
|
+
import { basename as basename13, dirname as dirname37, join as join96 } from "path";
|
|
108454
108471
|
|
|
108455
108472
|
// packages/mcp-client-core/src/config-dir.ts
|
|
108456
108473
|
import { existsSync as existsSync61, realpathSync as realpathSync10 } from "fs";
|
|
108457
108474
|
import { homedir as homedir26 } from "os";
|
|
108458
|
-
import { join as
|
|
108475
|
+
import { join as join94, resolve as resolve27 } from "path";
|
|
108459
108476
|
function resolveConfigPath2(pathValue) {
|
|
108460
108477
|
const resolvedPath = resolve27(pathValue);
|
|
108461
108478
|
if (!existsSync61(resolvedPath))
|
|
@@ -108473,13 +108490,13 @@ function getOpenCodeCliConfigDir(env = process.env) {
|
|
|
108473
108490
|
if (customConfigDir) {
|
|
108474
108491
|
return resolveConfigPath2(customConfigDir);
|
|
108475
108492
|
}
|
|
108476
|
-
const xdgConfigDir = env["XDG_CONFIG_HOME"]?.trim() ||
|
|
108477
|
-
return resolveConfigPath2(
|
|
108493
|
+
const xdgConfigDir = env["XDG_CONFIG_HOME"]?.trim() || join94(homedir26(), ".config");
|
|
108494
|
+
return resolveConfigPath2(join94(xdgConfigDir, "opencode"));
|
|
108478
108495
|
}
|
|
108479
108496
|
|
|
108480
108497
|
// packages/mcp-client-core/src/mcp-oauth/storage-index.ts
|
|
108481
108498
|
import { chmodSync as chmodSync4, existsSync as existsSync62, readFileSync as readFileSync41, renameSync as renameSync7, writeFileSync as writeFileSync13 } from "fs";
|
|
108482
|
-
import { join as
|
|
108499
|
+
import { join as join95 } from "path";
|
|
108483
108500
|
var INDEX_FILE_NAME = "index.json";
|
|
108484
108501
|
function isTokenIndex(value) {
|
|
108485
108502
|
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
@@ -108487,7 +108504,7 @@ function isTokenIndex(value) {
|
|
|
108487
108504
|
return Object.values(value).every((entry) => typeof entry === "string");
|
|
108488
108505
|
}
|
|
108489
108506
|
function getIndexPath(storageDir) {
|
|
108490
|
-
return
|
|
108507
|
+
return join95(storageDir, INDEX_FILE_NAME);
|
|
108491
108508
|
}
|
|
108492
108509
|
function readTokenIndex(storageDir) {
|
|
108493
108510
|
const indexPath = getIndexPath(storageDir);
|
|
@@ -108531,16 +108548,16 @@ function deleteTokenIndexEntry(storageDir, hash) {
|
|
|
108531
108548
|
var STORAGE_DIR_NAME = "mcp-oauth";
|
|
108532
108549
|
var LEGACY_STORAGE_FILE_NAME = "mcp-oauth.json";
|
|
108533
108550
|
function getMcpOauthStorageDir() {
|
|
108534
|
-
return
|
|
108551
|
+
return join96(getOpenCodeCliConfigDir(), STORAGE_DIR_NAME);
|
|
108535
108552
|
}
|
|
108536
108553
|
function getMcpOauthServerHash(serverHost, resource) {
|
|
108537
108554
|
return createHash7("sha256").update(buildKey(serverHost, resource)).digest("hex").slice(0, 32);
|
|
108538
108555
|
}
|
|
108539
108556
|
function getMcpOauthStoragePath(serverHost, resource) {
|
|
108540
|
-
return
|
|
108557
|
+
return join96(getMcpOauthStorageDir(), `${getMcpOauthServerHash(serverHost, resource)}.json`);
|
|
108541
108558
|
}
|
|
108542
108559
|
function getLegacyStoragePath() {
|
|
108543
|
-
return
|
|
108560
|
+
return join96(getOpenCodeCliConfigDir(), LEGACY_STORAGE_FILE_NAME);
|
|
108544
108561
|
}
|
|
108545
108562
|
function normalizeHost2(serverHost) {
|
|
108546
108563
|
let host = serverHost.trim();
|
|
@@ -108634,7 +108651,7 @@ function readLegacyStore() {
|
|
|
108634
108651
|
}
|
|
108635
108652
|
function writeTokenFile(filePath, token) {
|
|
108636
108653
|
try {
|
|
108637
|
-
const dir =
|
|
108654
|
+
const dir = dirname37(filePath);
|
|
108638
108655
|
if (!existsSync63(dir)) {
|
|
108639
108656
|
mkdirSync17(dir, { recursive: true });
|
|
108640
108657
|
}
|
|
@@ -108719,7 +108736,7 @@ function listTokensByHost(serverHost) {
|
|
|
108719
108736
|
for (const [hash, indexedKey] of Object.entries(index)) {
|
|
108720
108737
|
if (!indexedKey.startsWith(prefix))
|
|
108721
108738
|
continue;
|
|
108722
|
-
const indexedToken = readTokenFile(
|
|
108739
|
+
const indexedToken = readTokenFile(join96(getMcpOauthStorageDir(), `${hash}.json`));
|
|
108723
108740
|
if (indexedToken)
|
|
108724
108741
|
result[indexedKey] = indexedToken;
|
|
108725
108742
|
}
|
|
@@ -108734,7 +108751,7 @@ function listAllTokens() {
|
|
|
108734
108751
|
for (const entry of readdirSync13(dir, { withFileTypes: true })) {
|
|
108735
108752
|
if (!entry.isFile() || !entry.name.endsWith(".json") || entry.name === "index.json")
|
|
108736
108753
|
continue;
|
|
108737
|
-
const token = readTokenFile(
|
|
108754
|
+
const token = readTokenFile(join96(dir, entry.name));
|
|
108738
108755
|
const hash = basename13(entry.name, ".json");
|
|
108739
108756
|
if (token)
|
|
108740
108757
|
result[index[hash] ?? hash] = token;
|