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.
- package/CHANGELOG.md +78 -0
- package/CONTRIBUTING.md +43 -0
- package/Dockerfile +32 -0
- package/LICENSE +21 -0
- package/README.md +665 -2
- package/README.ru.md +523 -0
- package/SECURITY.md +42 -0
- package/action.yml +68 -0
- package/dist/cli.js +120 -0
- package/dist/cli.js.map +1 -0
- package/dist/cli.test.js +559 -0
- package/dist/cli.test.js.map +1 -0
- package/dist/commands/custom.js +87 -0
- package/dist/commands/custom.js.map +1 -0
- package/dist/commands/docgen.js +256 -0
- package/dist/commands/docgen.js.map +1 -0
- package/dist/commands/doctor.js +334 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/fix.js +282 -0
- package/dist/commands/fix.js.map +1 -0
- package/dist/commands/init.js +59 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/review.js +77 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/scan.js +102 -0
- package/dist/commands/scan.js.map +1 -0
- package/dist/commands/setup.js +443 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/test-fix.js +181 -0
- package/dist/commands/test-fix.js.map +1 -0
- package/dist/core/command.js +69 -0
- package/dist/core/command.js.map +1 -0
- package/dist/core/config.js +277 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/config.test.js +145 -0
- package/dist/core/config.test.js.map +1 -0
- package/dist/core/diff-source.js +98 -0
- package/dist/core/diff-source.js.map +1 -0
- package/dist/core/diff.js +168 -0
- package/dist/core/diff.js.map +1 -0
- package/dist/core/diff.test.js +94 -0
- package/dist/core/diff.test.js.map +1 -0
- package/dist/core/engine.js +179 -0
- package/dist/core/engine.js.map +1 -0
- package/dist/core/engine.test.js +143 -0
- package/dist/core/engine.test.js.map +1 -0
- package/dist/core/errors.js +21 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/file-context.js +58 -0
- package/dist/core/file-context.js.map +1 -0
- package/dist/core/file-context.test.js +58 -0
- package/dist/core/file-context.test.js.map +1 -0
- package/dist/core/findings.js +110 -0
- package/dist/core/findings.js.map +1 -0
- package/dist/core/findings.test.js +62 -0
- package/dist/core/findings.test.js.map +1 -0
- package/dist/core/format.js +31 -0
- package/dist/core/format.js.map +1 -0
- package/dist/core/format.test.js +26 -0
- package/dist/core/format.test.js.map +1 -0
- package/dist/core/git.js +137 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/io.js +57 -0
- package/dist/core/io.js.map +1 -0
- package/dist/core/lang.js +17 -0
- package/dist/core/lang.js.map +1 -0
- package/dist/core/log.js +40 -0
- package/dist/core/log.js.map +1 -0
- package/dist/core/opencode.js +345 -0
- package/dist/core/opencode.js.map +1 -0
- package/dist/core/opencode.test.js +59 -0
- package/dist/core/opencode.test.js.map +1 -0
- package/dist/core/options.js +142 -0
- package/dist/core/options.js.map +1 -0
- package/dist/core/parse.js +54 -0
- package/dist/core/parse.js.map +1 -0
- package/dist/core/patch.js +155 -0
- package/dist/core/patch.js.map +1 -0
- package/dist/core/patch.test.js +70 -0
- package/dist/core/patch.test.js.map +1 -0
- package/dist/core/process.js +27 -0
- package/dist/core/process.js.map +1 -0
- package/dist/core/project.js +191 -0
- package/dist/core/project.js.map +1 -0
- package/dist/core/project.test.js +75 -0
- package/dist/core/project.test.js.map +1 -0
- package/dist/core/prompt.js +255 -0
- package/dist/core/prompt.js.map +1 -0
- package/dist/core/prompt.test.js +106 -0
- package/dist/core/prompt.test.js.map +1 -0
- package/dist/core/rules.js +64 -0
- package/dist/core/rules.js.map +1 -0
- package/dist/core/rules.test.js +72 -0
- package/dist/core/rules.test.js.map +1 -0
- package/dist/core/run.js +255 -0
- package/dist/core/run.js.map +1 -0
- package/dist/core/secrets.js +331 -0
- package/dist/core/secrets.js.map +1 -0
- package/dist/core/secrets.test.js +121 -0
- package/dist/core/secrets.test.js.map +1 -0
- package/dist/core/snippets.js +130 -0
- package/dist/core/snippets.js.map +1 -0
- package/dist/core/snippets.test.js +55 -0
- package/dist/core/snippets.test.js.map +1 -0
- package/dist/mcp-http.test.js +146 -0
- package/dist/mcp-http.test.js.map +1 -0
- package/dist/mcp.js +913 -0
- package/dist/mcp.js.map +1 -0
- package/dist/mcp.test.js +128 -0
- package/dist/mcp.test.js.map +1 -0
- package/dist/setup.test.js +215 -0
- package/dist/setup.test.js.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/docker-compose.yml +18 -0
- package/docs/integrations.md +467 -0
- package/package.json +76 -4
- package/prompts/oc-pilot.en.md +104 -0
- package/prompts/oc-pilot.ru.md +106 -0
- package/server.json +21 -0
- 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`.
|
package/CONTRIBUTING.md
ADDED
|
@@ -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.
|