oc-pilot 0.0.0-stage → 0.5.1

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.
Files changed (123) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/CONTRIBUTING.md +43 -0
  3. package/Dockerfile +32 -0
  4. package/LICENSE +21 -0
  5. package/README.md +665 -2
  6. package/README.ru.md +523 -0
  7. package/SECURITY.md +42 -0
  8. package/action.yml +68 -0
  9. package/dist/cli.js +120 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/cli.test.js +559 -0
  12. package/dist/cli.test.js.map +1 -0
  13. package/dist/commands/custom.js +87 -0
  14. package/dist/commands/custom.js.map +1 -0
  15. package/dist/commands/docgen.js +256 -0
  16. package/dist/commands/docgen.js.map +1 -0
  17. package/dist/commands/doctor.js +334 -0
  18. package/dist/commands/doctor.js.map +1 -0
  19. package/dist/commands/fix.js +282 -0
  20. package/dist/commands/fix.js.map +1 -0
  21. package/dist/commands/init.js +59 -0
  22. package/dist/commands/init.js.map +1 -0
  23. package/dist/commands/review.js +77 -0
  24. package/dist/commands/review.js.map +1 -0
  25. package/dist/commands/scan.js +102 -0
  26. package/dist/commands/scan.js.map +1 -0
  27. package/dist/commands/setup.js +443 -0
  28. package/dist/commands/setup.js.map +1 -0
  29. package/dist/commands/test-fix.js +181 -0
  30. package/dist/commands/test-fix.js.map +1 -0
  31. package/dist/core/command.js +69 -0
  32. package/dist/core/command.js.map +1 -0
  33. package/dist/core/config.js +277 -0
  34. package/dist/core/config.js.map +1 -0
  35. package/dist/core/config.test.js +145 -0
  36. package/dist/core/config.test.js.map +1 -0
  37. package/dist/core/diff-source.js +98 -0
  38. package/dist/core/diff-source.js.map +1 -0
  39. package/dist/core/diff.js +168 -0
  40. package/dist/core/diff.js.map +1 -0
  41. package/dist/core/diff.test.js +94 -0
  42. package/dist/core/diff.test.js.map +1 -0
  43. package/dist/core/engine.js +179 -0
  44. package/dist/core/engine.js.map +1 -0
  45. package/dist/core/engine.test.js +143 -0
  46. package/dist/core/engine.test.js.map +1 -0
  47. package/dist/core/errors.js +21 -0
  48. package/dist/core/errors.js.map +1 -0
  49. package/dist/core/file-context.js +58 -0
  50. package/dist/core/file-context.js.map +1 -0
  51. package/dist/core/file-context.test.js +58 -0
  52. package/dist/core/file-context.test.js.map +1 -0
  53. package/dist/core/findings.js +110 -0
  54. package/dist/core/findings.js.map +1 -0
  55. package/dist/core/findings.test.js +62 -0
  56. package/dist/core/findings.test.js.map +1 -0
  57. package/dist/core/format.js +31 -0
  58. package/dist/core/format.js.map +1 -0
  59. package/dist/core/format.test.js +26 -0
  60. package/dist/core/format.test.js.map +1 -0
  61. package/dist/core/git.js +137 -0
  62. package/dist/core/git.js.map +1 -0
  63. package/dist/core/io.js +57 -0
  64. package/dist/core/io.js.map +1 -0
  65. package/dist/core/lang.js +17 -0
  66. package/dist/core/lang.js.map +1 -0
  67. package/dist/core/log.js +40 -0
  68. package/dist/core/log.js.map +1 -0
  69. package/dist/core/opencode.js +345 -0
  70. package/dist/core/opencode.js.map +1 -0
  71. package/dist/core/opencode.test.js +59 -0
  72. package/dist/core/opencode.test.js.map +1 -0
  73. package/dist/core/options.js +142 -0
  74. package/dist/core/options.js.map +1 -0
  75. package/dist/core/parse.js +54 -0
  76. package/dist/core/parse.js.map +1 -0
  77. package/dist/core/patch.js +155 -0
  78. package/dist/core/patch.js.map +1 -0
  79. package/dist/core/patch.test.js +70 -0
  80. package/dist/core/patch.test.js.map +1 -0
  81. package/dist/core/process.js +27 -0
  82. package/dist/core/process.js.map +1 -0
  83. package/dist/core/project.js +191 -0
  84. package/dist/core/project.js.map +1 -0
  85. package/dist/core/project.test.js +75 -0
  86. package/dist/core/project.test.js.map +1 -0
  87. package/dist/core/prompt.js +255 -0
  88. package/dist/core/prompt.js.map +1 -0
  89. package/dist/core/prompt.test.js +106 -0
  90. package/dist/core/prompt.test.js.map +1 -0
  91. package/dist/core/rules.js +64 -0
  92. package/dist/core/rules.js.map +1 -0
  93. package/dist/core/rules.test.js +72 -0
  94. package/dist/core/rules.test.js.map +1 -0
  95. package/dist/core/run.js +255 -0
  96. package/dist/core/run.js.map +1 -0
  97. package/dist/core/secrets.js +331 -0
  98. package/dist/core/secrets.js.map +1 -0
  99. package/dist/core/secrets.test.js +121 -0
  100. package/dist/core/secrets.test.js.map +1 -0
  101. package/dist/core/snippets.js +130 -0
  102. package/dist/core/snippets.js.map +1 -0
  103. package/dist/core/snippets.test.js +55 -0
  104. package/dist/core/snippets.test.js.map +1 -0
  105. package/dist/mcp-http.test.js +146 -0
  106. package/dist/mcp-http.test.js.map +1 -0
  107. package/dist/mcp.js +913 -0
  108. package/dist/mcp.js.map +1 -0
  109. package/dist/mcp.test.js +128 -0
  110. package/dist/mcp.test.js.map +1 -0
  111. package/dist/setup.test.js +215 -0
  112. package/dist/setup.test.js.map +1 -0
  113. package/dist/types.js +2 -0
  114. package/dist/types.js.map +1 -0
  115. package/dist/version.js +2 -0
  116. package/dist/version.js.map +1 -0
  117. package/docker-compose.yml +18 -0
  118. package/docs/integrations.md +467 -0
  119. package/package.json +76 -4
  120. package/prompts/oc-pilot.en.md +104 -0
  121. package/prompts/oc-pilot.ru.md +106 -0
  122. package/server.json +21 -0
  123. package/skills/oc-pilot/SKILL.md +47 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,78 @@
1
+ # Changelog
2
+
3
+ ## 0.5.1
4
+
5
+ - `setup` теперь поддерживает **ZCode** (Z.ai): project `.zcode/config.json` и global `~/.zcode/cli/config.json`, ключ `mcp.servers`.
6
+ - Добавлен универсальный клиент `agents`: project `.agents/mcp.json` и global `~/.agents/mcp.json`, ключ `mcpServers`. Этот формат читает ZCode как fallback и другие MCP-клиенты.
7
+ - `doctor` распознаёт ZCode и `.agents` конфиги.
8
+ - README EN/RU и `docs/integrations.md` обновлены: Claude Code, DeepSeek Harness, ZCode, `.agents`, generic MCP.
9
+ - 112 тестов; версия 0.5.1.
10
+
11
+ ## 0.5.0
12
+
13
+ - Добавлен движок `openai`: любой OpenAI-совместимый `/chat/completions` (OpenAI, DeepSeek, Groq, OpenRouter, Ollama). OpenCode больше не обязателен.
14
+ - Новые флаги `--engine`, `--base-url`, `--api-key-env`; конфиг `engine`, `baseUrl`, `apiKeyEnv`; env `OC_PILOT_ENGINE`, `OC_PILOT_BASE_URL`, `OC_PILOT_API_KEY_ENV`. Ключ читается из `OC_PILOT_API_KEY`/`OPENAI_API_KEY` и не попадает в ошибки.
15
+ - Для движка `openai` автоматически включается `FULL_FILE_CONTEXT`, а инструменты репозитория отключаются.
16
+ - Добавлена команда `oc-pilot doctor`: проверяет Node, движок, ключ, git, тестовую команду, MCP-конфиги и правила; `--json`, exit 1 при ошибках, `--strict` для предупреждений.
17
+ - `oc-pilot setup` без `--client` сам находит установленные Claude Code, Codex, Cursor, Gemini CLI, OpenCode, VS Code и Windsurf.
18
+ - Добавлен composite GitHub Action `action.yml` для PR-гейта в три строки.
19
+ - README EN/RU и `docs/integrations.md` обновлены: движки, doctor, авто-настройка, Action.
20
+ - 111 тестов; версия 0.5.0.
21
+
22
+ ## 0.4.3
23
+
24
+ - Fixed remote MCP config shapes: Gemini uses `httpUrl`, Windsurf uses `serverUrl`.
25
+ - `setup --http --token` for Gemini now stops with an explanation instead of writing a header that Gemini does not expand.
26
+ - 103 теста; версия 0.4.3.
27
+
28
+ ## 0.4.2
29
+
30
+ - `fix` scans only added lines in the proposed patch. A patch that removes a leaked secret is no longer rejected as if it added one.
31
+ - `setup` no longer writes the unsupported `enabled` field into OpenCode MCP config; servers are enabled by default in OpenCode V2.
32
+ - `setup --http --token` now writes an `OC_PILOT_MCP_TOKEN` reference instead of the secret itself.
33
+ - User-journey verification: GitHub install, `scan`, real `review`, `test-fix`, `fix --apply` with tests, MCP stdio, Claude/Codex/OpenCode setup.
34
+ - 101 тест; версия 0.4.2.
35
+
36
+ ## 0.4.1
37
+
38
+ - MCP-сервер теперь **read-only по умолчанию** и для stdio, и для HTTP: `fix` с `apply:true` и `test_fix`, запускающий новую команду, требуют явного `--allow-write`.
39
+ - `oc-pilot setup --allow-write` добавляет этот флаг в конфиг клиента; без него агент получает только анализ и предложение патча.
40
+ - Уточнены SECURITY.md, README и `docs/integrations.md`: безопасные значения по умолчанию, доверенный локальный клиент, TLS и токен для HTTP.
41
+ - 100 тестов; версия 0.4.1.
42
+
43
+ ## 0.4.0
44
+
45
+ - Добавлена команда `oc-pilot setup` для Claude Code, Codex, Cursor, Gemini CLI и OpenCode: `--local/--global`, `--print`, `--json`, `--http/--token`, сохранение чужих серверов и настроек.
46
+ - `oc-pilot-mcp` получил Streamable HTTP транспорт (`--http`, `--host`, `--port`, `--path`, `--token`, `/health`, `Mcp-Session-Id`) для контейнеров и удалённых агентов.
47
+ - Добавлена команда `fix`: модель предлагает unified diff, патч проверяется через `git apply --check`, применяется с `--apply`, тесты запускаются автоматически, при падении патч откатывается; `--keep-on-test-failure`, `--no-tests`, `--rounds`.
48
+ - MCP-инструмент `fix` с `apply`, `command`, `no_tests`, `rounds`.
49
+ - `--github` печатает inline-аннотации GitHub Actions (`::error` / `::warning`) для `review` и `fix`.
50
+ - Добавлены `Dockerfile`, `docker-compose.yml`, `.dockerignore`; образ включает OpenCode и запускает HTTP MCP на порту 8787.
51
+ - Добавлен Agent Skill `skills/oc-pilot/SKILL.md` и `server.json` для MCP Registry.
52
+ - Добавлены `oc-pilot mcp`, read-only HTTP по умолчанию, `--allow-write`, проверка токена и ограничение путей; CI/CodeQL/release workflows, `SECURITY.md`, поддержка DeepSeek Harness.
53
+ - `dist` коммитится в репозиторий, поэтому установка из GitHub-тега не требует devDependencies: `npm install -g https://github.com/MyNameIsNikki/oc-pilot/archive/refs/tags/v0.4.0.tar.gz`. Docker runtime использует `--ignore-scripts`.
54
+ - Обновлены README, `README.ru.md`, `docs/integrations.md`; 99 тестов.
55
+
56
+ ## 0.3.0
57
+
58
+ - Английский системный промпт стал языком по умолчанию для глобальной аудитории; добавлены `--lang en|ru`, `OC_PILOT_LANG` и `lang` в конфиге. Русский промпт сохранён.
59
+ - Добавлен MCP-сервер `oc-pilot-mcp` (stdio, JSON-RPC 2.0) с инструментами `review`, `test_fix`, `docgen`, `custom`, `scan` для Claude Code, Codex, Cursor, Gemini CLI и OpenCode.
60
+ - Добавлена интеграционная документация `docs/integrations.md` и разделы MCP в README.
61
+ - README переведён на английский как основной; русская версия — `README.ru.md`.
62
+ - Промпты разделены на `prompts/oc-pilot.en.md` и `prompts/oc-pilot.ru.md`; `.opencode/agents/oc-pilot.md` использует английский промпт.
63
+ - `--no-secret-scan` теперь также отключает сканирование `PROJECT_RULES` и `FULL_FILE_CONTEXT`.
64
+ - Добавлены тесты MCP и двуязычных промптов; версия 0.3.0.
65
+
66
+ ## 0.2.0
67
+
68
+ - Встроенный агент `oc-pilot` теперь работает с read-only контекстом репозитория: `read`, `glob`, `grep`; изменение файлов, shell, web и внешние директории запрещены.
69
+ - Добавлен `--no-repo-context` для изолированного diff-only режима. В нём изменённые файлы передаются как `FULL_FILE_CONTEXT` с redaction.
70
+ - Добавлены структурированные `findings` в JSON и флаг `--fail-on critical|warning|style` для CI.
71
+ - Добавлены правила проекта `.oc-pilot/rules.md` (автопоиск вверх по дереву, `--rules`, `rules` в конфиге).
72
+ - Расширен сканер секретов: Hugging Face, Groq, Discord, SendGrid, DigitalOcean, PyPI, Azure Storage, `.env`-присваивания.
73
+ - Новые настройки: `repoContext`, `failOn`, `rules` и переменные `OC_PILOT_REPO_CONTEXT`, `OC_PILOT_FAIL_ON`, `OC_PILOT_RULES`.
74
+ - Обновлены README, промпт и конфигурация агента.
75
+
76
+ ## 0.1.0
77
+
78
+ - Первый релиз: `review`, `test-fix`, `docgen`, `custom`, `scan`, `init`.
@@ -0,0 +1,43 @@
1
+ # Contributing
2
+
3
+ ## Development
4
+
5
+ ```bash
6
+ git clone https://github.com/MyNameIsNikki/oc-pilot.git
7
+ cd oc-pilot
8
+ npm install
9
+ npm run check
10
+ npm test
11
+ ```
12
+
13
+ Requirements: Node.js 22+, Git, and OpenCode 2.x for live model calls. The test suite uses a fake `opencode` executable and does not need credentials.
14
+
15
+ ## Pull requests
16
+
17
+ - Keep the CLI and MCP behavior in sync. A new command option usually needs an MCP tool argument.
18
+ - Add a regression test for every bug fix. Tests live next to the code in `src/**/*.test.ts`.
19
+ - Do not add runtime dependencies without a security and size justification. The package intentionally ships with none.
20
+ - Do not log prompts, diffs, tokens, or provider responses in production paths. Use the existing `log` helpers.
21
+ - Preserve the bilingual prompt contract. Model-facing English is the default; Russian is selected with `--lang ru`.
22
+ - Run `npm run prompt:export` after changing `src/core/prompt.ts`.
23
+
24
+ ## Security-sensitive changes
25
+
26
+ Changes to secret detection, redaction, the read-only agent permissions, patch application, MCP HTTP authentication, or path confinement need:
27
+
28
+ - negative tests (what must be rejected);
29
+ - updates to `SECURITY.md` when the trust model changes;
30
+ - a note in `CHANGELOG.md`.
31
+
32
+ ## Release
33
+
34
+ Releases are tag-driven. Set `NPM_TOKEN` in GitHub Actions secrets, then:
35
+
36
+ ```bash
37
+ npm version patch --no-git-tag-version
38
+ git commit -am "release: vX.Y.Z"
39
+ git tag vX.Y.Z
40
+ git push origin main --tags
41
+ ```
42
+
43
+ The release workflow checks that the tag matches `package.json`, runs the full suite, and publishes with npm provenance.
package/Dockerfile ADDED
@@ -0,0 +1,32 @@
1
+ FROM node:22-bookworm-slim AS build
2
+ WORKDIR /app
3
+ COPY package.json package-lock.json tsconfig.json ./
4
+ COPY src ./src
5
+ RUN npm ci
6
+ RUN npm run build
7
+
8
+ FROM node:22-bookworm-slim
9
+ RUN apt-get update \
10
+ && apt-get install -y --no-install-recommends git ca-certificates \
11
+ && rm -rf /var/lib/apt/lists/*
12
+ RUN npm install -g opencode-ai
13
+ WORKDIR /app
14
+ COPY package.json package-lock.json ./
15
+ RUN npm ci --omit=dev --ignore-scripts
16
+ COPY --from=build /app/dist ./dist
17
+ COPY prompts ./prompts
18
+ COPY docs ./docs
19
+ COPY skills ./skills
20
+ COPY README.md README.ru.md LICENSE server.json ./
21
+
22
+ ENV NODE_ENV=production \
23
+ OC_PILOT_MCP_HOST=0.0.0.0 \
24
+ OC_PILOT_MCP_PORT=8787 \
25
+ OC_PILOT_MCP_PATH=/mcp
26
+
27
+ WORKDIR /workspace
28
+ EXPOSE 8787
29
+ HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
30
+ CMD node -e "fetch('http://127.0.0.1:8787/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
31
+
32
+ CMD ["node", "/app/dist/mcp.js", "--http", "--host", "0.0.0.0", "--port", "8787", "--path", "/mcp", "--cwd", "/workspace"]
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 oc-pilot contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.