@smwb/onreel-git-mcp 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
  - **жизненный цикл worktree** — замки, двухфазное создание и очистка, сверка при старте, свип и корзина —
11
11
  против портов хранения, которые реализует потребитель;
12
12
  - **адаптеры трекеров** — единая модель задач и пять адаптеров: GitHub, GitLab, Jira, SourceCraft и локальный
13
- трекер поверх хранилища потребителя;
13
+ трекер поверх хранилища потребителя; у GitHub, GitLab и SourceCraft есть раздел pull request-ов (D-005);
14
14
  - **MCP stdio-сервер** — JSON-RPC 2.0 поверх stdin/stdout, инструменты строятся из таблицы команд вызывающего.
15
15
 
16
16
  Пакет ESM, рантайм-зависимость одна — `zod`. Публичная поверхность держится документированной здесь:
@@ -339,6 +339,92 @@ try {
339
339
  Все четыре кода уже есть в каталоге ошибок контракта (`errorCatalog`), срез контракта не меняется.
340
340
  Исчерпывающий `switch` по `TrackerFailure` у потребителя после обновления нужно дополнить.
341
341
 
342
+ ### Pull request-ы
343
+
344
+ Pull request-ы — раздел `pulls` определения трекера (D-005), а не отдельный реестр и не новые методы
345
+ `TrackerAdapter`: адаптер PR живёт на том же подключении (`target`, `token`, `url`) и в том же `AdapterContext`,
346
+ что и задачи. Раздел ведут GitHub, GitLab и SourceCraft; у локального трекера и Jira его нет, и
347
+ `pullRequestAdapterOf(definition, context)` для них бросает `TrackerError('unsupported')`, не сделав ни одного
348
+ запроса. Фабрики разделов — `githubPulls()`, `gitlabPulls()` и `sourcecraftPulls()`: каждая возвращает
349
+ `PullRequestDefinition` (`capabilities` + `create(context)`), и определение трекера получает раздел полем `pulls`.
350
+
351
+ ```ts
352
+ import { findTracker, pullRequestAdapterOf } from '@smwb/onreel-git-mcp/tracker';
353
+
354
+ const definition = findTracker('github');
355
+ if (definition === undefined) throw new Error('Встроенные адаптеры не зарегистрированы');
356
+ const pulls = pullRequestAdapterOf(definition, context);
357
+
358
+ const page = await pulls.list({ limit: 50, status: ['open'], target: 'main', sort: { field: 'updated' } });
359
+ const pr = page.items[0];
360
+ if (pr !== undefined) await pulls.merge(pr.key, { method: 'squash', headSha: pr.headSha });
361
+ ```
362
+
363
+ `PullRequestAdapter` — семь методов: `list`, `get`, `create`, `update`, `merge`, `comments` и `comment`.
364
+ Список и комментарии листаются и фильтруются так же, как задачи (D-004, R-002): `PullRequestQuery` — это
365
+ `PageQuery` плюс необязательные `status`, `author`, `source`, `target`, `labels`, `search`,
366
+ `createdAfter`/`createdBefore`/`updatedAfter`/`updatedBefore` и `sort`; имена фильтров перечисляет
367
+ `pullRequestFilterSchema` (тип `PullRequestFilter`), сортировка — `ListSort<PullRequestSortField>` с полями
368
+ `created`, `updated`, `title` (`pullRequestSortFieldSchema`). `comments` принимает тот же `CommentQuery`, что и
369
+ адаптер задач.
370
+
371
+ Модель PR описывает `pullRequestSchema` (тип `PullRequest`): `key` — номер в своём трекере (GitHub number,
372
+ GitLab iid, SourceCraft slug), для клиента непрозрачная строка; `title`, необязательное `description`;
373
+ `status` — `{ category, name }`, где `category` из `pullRequestStatusCategorySchema` (`draft`, `open`, `merged`,
374
+ `closed`), а `name` — как состояние называет сам трекер; `author`; `source` и `target` — имена веток без
375
+ `refs/heads/`; `headSha` — голова источника; `labels`; необязательные `reviewers` (трекер их не отдаёт — поля
376
+ нет); `links` и времена `createdAt`/`updatedAt`/`mergedAt`/`closedAt`.
377
+
378
+ Что умеет менять адаптер, описывают `PullRequestCapabilities` — они статичны и сериализуются в JSON: `list` и
379
+ `comments` как у задач, плюс `create`, `createDraft`, `update` (поля, которые меняет `update`), `statuses`
380
+ (категории, в которые переводит `update({ status })`), `comment`, `merge` (способы слияния, пусто — `merge` не
381
+ поддерживается) и `deleteSourceOnMerge`. `merge` принимает `MergeInput`: `method` из `mergeMethodSchema`
382
+ (`merge`, `squash`, `rebase`), способ вне `capabilities.merge` — `unsupported` до запроса; без `method` способ по настройке репозитория (у GitHub это слияние коммитом `merge`, у GitLab при явном `method: 'merge'`
383
+ действует squash-настройка MR или проекта), `headSha` — голова, которую видел вызывающий (другая — отказ
384
+ `conflict`, слияния не будет), `message` — сообщение коммита слияния, `deleteSource` — удалить ветку-источник. `create` принимает
385
+ `NewPullRequestInput` (`title`, `source`, `target`, `description?`, `draft?`), `update` — `PullRequestPatchInput`
386
+ (`title?`, `description?`, `target?`, `status?` — в `merged` переводит только `merge`). Вне объявленных
387
+ возможностей — `unsupported` до запроса, как и у списков задач.
388
+
389
+ | Трекер | `list.clientSide` | `list.sorts` | `create` / `createDraft` | `update` | `statuses` | `merge` | `deleteSourceOnMerge` |
390
+ |---|---|---|---|---|---|---|---|
391
+ | GitHub | `status`, `author`, `labels`, `search`, `created*`/`updated*` | `created`, `updated` | `true` / `true` | `title`, `description`, `target` | `open`, `closed` | `merge`, `squash`, `rebase` | `false` |
392
+ | GitLab | `status` | `created`, `updated`, `title` | `true` / `true` | те же | `draft`, `open`, `closed` | `merge`, `squash` | `true` |
393
+ | SourceCraft | `labels`, `search`, `created*`/`updated*` | `created`, `updated`, `title` | `true` / `true` | те же | `draft`, `open`, `closed` | `merge`, `squash`, `rebase` | `true` |
394
+
395
+ У всех трёх `list.filters` — весь `pullRequestFilterSchema`. Комментарии: у GitHub `updatedAfter` фильтрует сам
396
+ трекер и порядок только `asc`; у GitLab и SourceCraft `updatedAfter` проверяется по странице, порядки `asc` и
397
+ `desc`. `comment` — `true` у всех.
398
+
399
+ Сопоставление состояний — открытые таблицы, как у задач: `GITLAB_MERGE_REQUEST_STATES` (`locked` — слияние идёт,
400
+ MR ещё открыт, поэтому `open`) и `SOURCECRAFT_PULL_STATUSES` (`merging` — `open` с именем `merging`, `discarded`
401
+ — `closed`). Черновик у GitLab — префикс заголовка, а не поле: его ставит и снимает адаптер
402
+ (`GITLAB_DRAFT_PREFIX` и все формы префикса — `GITLAB_DRAFT_PATTERN`). Слияние SourceCraft асинхронно: `merge` вернёт PR с категорией `open` (`status.name` `open` или `merging`) до
403
+ завершения операции, либо уже `merged`; операция, отклонённая трекером (`failed`/`cancel` в ответе 202), — отказ
404
+ `conflict`, и следующий `get` потребуется, только чтобы дождаться результата. `headSha` на всех трёх трекерах
405
+ защищает от слияния чужой головы: GitHub и GitLab сверяют его сервером (атомарно), у SourceCraft сверка идёт на
406
+ клиенте перед `POST /merge` — это лучшее старание, push между чтением и слиянием она не отсекает, поэтому
407
+ `headSha` передают полным и в нижнем регистре.
408
+
409
+ Фильтры списка работают по-разному, и это видно по пустым страницам. `search`: у GitHub — подстрока без учёта
410
+ регистра в заголовке и описании, проверяется на странице; у GitLab — серверный параметр `search` по заголовку
411
+ и описанию; у SourceCraft — подстрока на странице. У GitHub `source` уходит параметром `head=<владелец>:<ветка>`
412
+ с владельцем целевого репозитория, поэтому PR из форков этим фильтром не находятся; `author` и `labels` там же
413
+ сверяются точным совпадением на странице (регистр имеет значение). У GitLab `status: ['open']` шлёт
414
+ `state=opened` и потому не возвращает `locked` MR, хотя их категория — `open`. У SourceCraft неизвестный
415
+ `author` — 400 «user not found» от самого трекера, то есть `failed`, а не пустая страница. `status` из
416
+ неизвестной категории адаптер отклоняет `invalid_request` до запроса, пустой массив `status: []` равен его
417
+ отсутствию. Переход `update({ status })` «в то же состояние» ни у кого не пишет повторно: GitLab не шлёт
418
+ PUT, GitHub — PATCH, SourceCraft не дёргает эндпоинт состояния.
419
+
420
+ Публичные символы раздела — схемы `pullRequestSchema`, `pullRequestStatusCategorySchema`,
421
+ `pullRequestFilterSchema`, `pullRequestSortFieldSchema` и `mergeMethodSchema` с выведенными типами
422
+ `PullRequest`, `PullRequestStatusCategory`, `PullRequestFilter`, `PullRequestSortField` и `MergeMethod`; типы
423
+ `PullRequestQuery`, `NewPullRequestInput`, `PullRequestPatchInput`, `MergeInput`, `PullRequestAdapter`,
424
+ `PullRequestCapabilities` и `PullRequestDefinition`; помощник `pullRequestAdapterOf` и фабрики разделов
425
+ `githubPulls()`, `gitlabPulls()` и `sourcecraftPulls()`. Всё это выходит из субпути `…/tracker` — нового субпути
426
+ нет (D-001, D-005). За модель отвечают таблицы сопоставления и запись D-005, отказ до запроса — правило R-002.
427
+
342
428
  ## mcp
343
429
 
344
430
  `serveMcp` — построчный JSON-RPC 2.0 на stdio, только инструменты: `initialize`, `ping`, `tools/list`,
package/dist/git/index.js CHANGED
@@ -44,11 +44,11 @@ import {
44
44
  worktreePathFor
45
45
  } from "../chunk-C6PHNSDC.js";
46
46
  import "../chunk-3YP22YLA.js";
47
- import "../chunk-4ZGRXIVA.js";
48
47
  import {
49
48
  defaultSecretSink,
50
49
  redactSecretText
51
50
  } from "../chunk-L7CPE2SO.js";
51
+ import "../chunk-4ZGRXIVA.js";
52
52
  export {
53
53
  GIT_CHECKOUT_TIMEOUT_MS,
54
54
  GIT_TIMEOUT_MS,
package/dist/index.js CHANGED
@@ -59,7 +59,7 @@ import {
59
59
  // package.json
60
60
  var package_default = {
61
61
  name: "@smwb/onreel-git-mcp",
62
- version: "0.3.0",
62
+ version: "0.4.0",
63
63
  description: "\u0411\u0438\u0431\u043B\u0438\u043E\u0442\u0435\u043A\u0430 \u043C\u043E\u0434\u0443\u043B\u0435\u0439, \u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0445 \u0438\u0437 onreel: git-\u043E\u043F\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 \u0431\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u044B\u0435 \u043F\u0443\u0442\u0438, \u0441\u043F\u0438\u0441\u043E\u043A \u0444\u0430\u0439\u043B\u043E\u0432 worktree, \u0436\u0438\u0437\u043D\u0435\u043D\u043D\u044B\u0439 \u0446\u0438\u043A\u043B worktree \u043F\u0440\u043E\u0442\u0438\u0432 \u043F\u043E\u0440\u0442\u0430 WorktreeStore, \u0430\u0434\u0430\u043F\u0442\u0435\u0440\u044B \u0442\u0440\u0435\u043A\u0435\u0440\u043E\u0432 GitHub/GitLab/Jira/SourceCraft/\u043B\u043E\u043A\u0430\u043B\u044C\u043D\u043E\u0433\u043E \u0438 MCP-\u0441\u0435\u0440\u0432\u0435\u0440 \u043D\u0430 stdio",
64
64
  keywords: [
65
65
  "git",
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../package.json","../src/index.ts"],"sourcesContent":["{\n \"name\": \"@smwb/onreel-git-mcp\",\n \"version\": \"0.3.0\",\n \"description\": \"Библиотека модулей, выделенных из onreel: git-операции и безопасные пути, список файлов worktree, жизненный цикл worktree против порта WorktreeStore, адаптеры трекеров GitHub/GitLab/Jira/SourceCraft/локального и MCP-сервер на stdio\",\n \"keywords\": [\n \"git\",\n \"worktree\",\n \"mcp\",\n \"issue-tracker\",\n \"github\",\n \"gitlab\",\n \"jira\",\n \"sourcecraft\",\n \"onreel\",\n \"typescript\"\n ],\n \"type\": \"module\",\n \"engines\": {\n \"node\": \">=24\"\n },\n \"files\": [\n \"dist\"\n ],\n \"sideEffects\": false,\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org/\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://git.sourcecraft.dev/elfenmail/onreel-git-mcp.git\"\n },\n \"homepage\": \"https://git.sourcecraft.dev/elfenmail/onreel-git-mcp\",\n \"license\": \"MIT\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"default\": \"./dist/index.js\"\n },\n \"./git\": {\n \"types\": \"./dist/git/index.d.ts\",\n \"import\": \"./dist/git/index.js\",\n \"default\": \"./dist/git/index.js\"\n },\n \"./files\": {\n \"types\": \"./dist/files/index.d.ts\",\n \"import\": \"./dist/files/index.js\",\n \"default\": \"./dist/files/index.js\"\n },\n \"./worktree\": {\n \"types\": \"./dist/worktree/index.d.ts\",\n \"import\": \"./dist/worktree/index.js\",\n \"default\": \"./dist/worktree/index.js\"\n },\n \"./tracker\": {\n \"types\": \"./dist/tracker/index.d.ts\",\n \"import\": \"./dist/tracker/index.js\",\n \"default\": \"./dist/tracker/index.js\"\n },\n \"./mcp\": {\n \"types\": \"./dist/mcp/index.d.ts\",\n \"import\": \"./dist/mcp/index.js\",\n \"default\": \"./dist/mcp/index.js\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"scripts\": {\n \"build\": \"tsup && tsc -p tsconfig.build.json\",\n \"typecheck\": \"tsc -p tsconfig.json && tsc -p tsconfig.examples.json\",\n \"lint\": \"oxlint --type-aware\",\n \"test\": \"node --test \\\"test/**/*.test.ts\\\"\",\n \"changeset\": \"changeset\",\n \"version\": \"changeset version\",\n \"release\": \"npm run build && changeset publish\"\n },\n \"dependencies\": {\n \"zod\": \"^4.6.5\"\n },\n \"devDependencies\": {\n \"@changesets/cli\": \"2.29.2\",\n \"@types/node\": \"24.19.1\",\n \"oxlint\": \"1.87.0\",\n \"oxlint-tsgolint\": \"7.0.2003\",\n \"tsup\": \"8.5.1\",\n \"typescript\": \"7.0.2\"\n }\n}\n","// Корневой подпуть пакета @smwb/onreel-git-mcp: срез контракта (константы, схемы, типы, чистые\n// функции) и версия пакета. Всё без побочных эффектов при импорте (R-001). Швы ядра\n// (SecretSink, WorktreeStore, LocalIssueStore) и модули git/files/worktree/tracker/mcp\n// экспортируют свои подпути — см. exports в package.json и README.\nimport pkg from '../package.json' with { type: 'json' };\n\nexport * from './contract/contract.const.ts';\nexport * from './contract/contract.schema.ts';\nexport * from './contract/contract.types.ts';\nexport * from './contract/contract.lib.ts';\n\n// Версия пакета — из version в package.json: статический импорт JSON, его значение tsup подставляет\n// в бандл на сборке, поэтому VERSION не расходится с релизом changesets (тот правит только version).\nexport const VERSION: string = pkg.version;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,EACE,MAAQ;AAAA,EACR,SAAW;AAAA,EACX,aAAe;AAAA,EACf,UAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,MAAQ;AAAA,EACR,SAAW;AAAA,IACT,MAAQ;AAAA,EACV;AAAA,EACA,OAAS;AAAA,IACP;AAAA,EACF;AAAA,EACA,aAAe;AAAA,EACf,eAAiB;AAAA,IACf,QAAU;AAAA,IACV,UAAY;AAAA,EACd;AAAA,EACA,YAAc;AAAA,IACZ,MAAQ;AAAA,IACR,KAAO;AAAA,EACT;AAAA,EACA,UAAY;AAAA,EACZ,SAAW;AAAA,EACX,SAAW;AAAA,IACT,KAAK;AAAA,MACH,OAAS;AAAA,MACT,QAAU;AAAA,MACV,SAAW;AAAA,IACb;AAAA,IACA,SAAS;AAAA,MACP,OAAS;AAAA,MACT,QAAU;AAAA,MACV,SAAW;AAAA,IACb;AAAA,IACA,WAAW;AAAA,MACT,OAAS;AAAA,MACT,QAAU;AAAA,MACV,SAAW;AAAA,IACb;AAAA,IACA,cAAc;AAAA,MACZ,OAAS;AAAA,MACT,QAAU;AAAA,MACV,SAAW;AAAA,IACb;AAAA,IACA,aAAa;AAAA,MACX,OAAS;AAAA,MACT,QAAU;AAAA,MACV,SAAW;AAAA,IACb;AAAA,IACA,SAAS;AAAA,MACP,OAAS;AAAA,MACT,QAAU;AAAA,MACV,SAAW;AAAA,IACb;AAAA,IACA,kBAAkB;AAAA,EACpB;AAAA,EACA,SAAW;AAAA,IACT,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,MAAQ;AAAA,IACR,WAAa;AAAA,IACb,SAAW;AAAA,IACX,SAAW;AAAA,EACb;AAAA,EACA,cAAgB;AAAA,IACd,KAAO;AAAA,EACT;AAAA,EACA,iBAAmB;AAAA,IACjB,mBAAmB;AAAA,IACnB,eAAe;AAAA,IACf,QAAU;AAAA,IACV,mBAAmB;AAAA,IACnB,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AACF;;;AC1EO,IAAM,UAAkB,gBAAI;","names":[]}
1
+ {"version":3,"sources":["../package.json","../src/index.ts"],"sourcesContent":["{\n \"name\": \"@smwb/onreel-git-mcp\",\n \"version\": \"0.4.0\",\n \"description\": \"Библиотека модулей, выделенных из onreel: git-операции и безопасные пути, список файлов worktree, жизненный цикл worktree против порта WorktreeStore, адаптеры трекеров GitHub/GitLab/Jira/SourceCraft/локального и MCP-сервер на stdio\",\n \"keywords\": [\n \"git\",\n \"worktree\",\n \"mcp\",\n \"issue-tracker\",\n \"github\",\n \"gitlab\",\n \"jira\",\n \"sourcecraft\",\n \"onreel\",\n \"typescript\"\n ],\n \"type\": \"module\",\n \"engines\": {\n \"node\": \">=24\"\n },\n \"files\": [\n \"dist\"\n ],\n \"sideEffects\": false,\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org/\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://git.sourcecraft.dev/elfenmail/onreel-git-mcp.git\"\n },\n \"homepage\": \"https://git.sourcecraft.dev/elfenmail/onreel-git-mcp\",\n \"license\": \"MIT\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"default\": \"./dist/index.js\"\n },\n \"./git\": {\n \"types\": \"./dist/git/index.d.ts\",\n \"import\": \"./dist/git/index.js\",\n \"default\": \"./dist/git/index.js\"\n },\n \"./files\": {\n \"types\": \"./dist/files/index.d.ts\",\n \"import\": \"./dist/files/index.js\",\n \"default\": \"./dist/files/index.js\"\n },\n \"./worktree\": {\n \"types\": \"./dist/worktree/index.d.ts\",\n \"import\": \"./dist/worktree/index.js\",\n \"default\": \"./dist/worktree/index.js\"\n },\n \"./tracker\": {\n \"types\": \"./dist/tracker/index.d.ts\",\n \"import\": \"./dist/tracker/index.js\",\n \"default\": \"./dist/tracker/index.js\"\n },\n \"./mcp\": {\n \"types\": \"./dist/mcp/index.d.ts\",\n \"import\": \"./dist/mcp/index.js\",\n \"default\": \"./dist/mcp/index.js\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"scripts\": {\n \"build\": \"tsup && tsc -p tsconfig.build.json\",\n \"typecheck\": \"tsc -p tsconfig.json && tsc -p tsconfig.examples.json\",\n \"lint\": \"oxlint --type-aware\",\n \"test\": \"node --test \\\"test/**/*.test.ts\\\"\",\n \"changeset\": \"changeset\",\n \"version\": \"changeset version\",\n \"release\": \"npm run build && changeset publish\"\n },\n \"dependencies\": {\n \"zod\": \"^4.6.5\"\n },\n \"devDependencies\": {\n \"@changesets/cli\": \"2.29.2\",\n \"@types/node\": \"24.19.1\",\n \"oxlint\": \"1.87.0\",\n \"oxlint-tsgolint\": \"7.0.2003\",\n \"tsup\": \"8.5.1\",\n \"typescript\": \"7.0.2\"\n }\n}\n","// Корневой подпуть пакета @smwb/onreel-git-mcp: срез контракта (константы, схемы, типы, чистые\n// функции) и версия пакета. Всё без побочных эффектов при импорте (R-001). Швы ядра\n// (SecretSink, WorktreeStore, LocalIssueStore) и модули git/files/worktree/tracker/mcp\n// экспортируют свои подпути — см. exports в package.json и README.\nimport pkg from '../package.json' with { type: 'json' };\n\nexport * from './contract/contract.const.ts';\nexport * from './contract/contract.schema.ts';\nexport * from './contract/contract.types.ts';\nexport * from './contract/contract.lib.ts';\n\n// Версия пакета — из version в package.json: статический импорт JSON, его значение tsup подставляет\n// в бандл на сборке, поэтому VERSION не расходится с релизом changesets (тот правит только version).\nexport const VERSION: string = pkg.version;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,EACE,MAAQ;AAAA,EACR,SAAW;AAAA,EACX,aAAe;AAAA,EACf,UAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,MAAQ;AAAA,EACR,SAAW;AAAA,IACT,MAAQ;AAAA,EACV;AAAA,EACA,OAAS;AAAA,IACP;AAAA,EACF;AAAA,EACA,aAAe;AAAA,EACf,eAAiB;AAAA,IACf,QAAU;AAAA,IACV,UAAY;AAAA,EACd;AAAA,EACA,YAAc;AAAA,IACZ,MAAQ;AAAA,IACR,KAAO;AAAA,EACT;AAAA,EACA,UAAY;AAAA,EACZ,SAAW;AAAA,EACX,SAAW;AAAA,IACT,KAAK;AAAA,MACH,OAAS;AAAA,MACT,QAAU;AAAA,MACV,SAAW;AAAA,IACb;AAAA,IACA,SAAS;AAAA,MACP,OAAS;AAAA,MACT,QAAU;AAAA,MACV,SAAW;AAAA,IACb;AAAA,IACA,WAAW;AAAA,MACT,OAAS;AAAA,MACT,QAAU;AAAA,MACV,SAAW;AAAA,IACb;AAAA,IACA,cAAc;AAAA,MACZ,OAAS;AAAA,MACT,QAAU;AAAA,MACV,SAAW;AAAA,IACb;AAAA,IACA,aAAa;AAAA,MACX,OAAS;AAAA,MACT,QAAU;AAAA,MACV,SAAW;AAAA,IACb;AAAA,IACA,SAAS;AAAA,MACP,OAAS;AAAA,MACT,QAAU;AAAA,MACV,SAAW;AAAA,IACb;AAAA,IACA,kBAAkB;AAAA,EACpB;AAAA,EACA,SAAW;AAAA,IACT,OAAS;AAAA,IACT,WAAa;AAAA,IACb,MAAQ;AAAA,IACR,MAAQ;AAAA,IACR,WAAa;AAAA,IACb,SAAW;AAAA,IACX,SAAW;AAAA,EACb;AAAA,EACA,cAAgB;AAAA,IACd,KAAO;AAAA,EACT;AAAA,EACA,iBAAmB;AAAA,IACjB,mBAAmB;AAAA,IACnB,eAAe;AAAA,IACf,QAAU;AAAA,IACV,mBAAmB;AAAA,IACnB,MAAQ;AAAA,IACR,YAAc;AAAA,EAChB;AACF;;;AC1EO,IAAM,UAAkB,gBAAI;","names":[]}
package/dist/mcp/index.js CHANGED
@@ -2,6 +2,9 @@ import {
2
2
  contractError,
3
3
  formatVersion
4
4
  } from "../chunk-3YP22YLA.js";
5
+ import {
6
+ redactSecretText
7
+ } from "../chunk-L7CPE2SO.js";
5
8
  import {
6
9
  ENV_DISPATCH_ID,
7
10
  ENV_HOST_URL,
@@ -13,9 +16,6 @@ import {
13
16
  contractErrorSchema,
14
17
  requestIdSchema
15
18
  } from "../chunk-4ZGRXIVA.js";
16
- import {
17
- redactSecretText
18
- } from "../chunk-L7CPE2SO.js";
19
19
 
20
20
  // src/mcp/mcp.const.ts
21
21
  var MCP_PROTOCOL_VERSIONS = ["2025-11-25", "2025-06-18", "2025-03-26", "2024-11-05"];
@@ -0,0 +1,2 @@
1
+ import type { PullRequestDefinition } from './pull.types.ts';
2
+ export declare function githubPulls(): PullRequestDefinition;
@@ -0,0 +1,2 @@
1
+ import type { PullRequestDefinition } from './pull.types.ts';
2
+ export declare function gitlabPulls(): PullRequestDefinition;
@@ -11,5 +11,11 @@ export * from './github.lib.ts';
11
11
  export * from './gitlab.lib.ts';
12
12
  export * from './jira.lib.ts';
13
13
  export * from './sourcecraft.lib.ts';
14
+ export * from './pull.schema.ts';
15
+ export * from './pull.types.ts';
16
+ export * from './pull.lib.ts';
17
+ export * from './github-pull.lib.ts';
18
+ export * from './gitlab-pull.lib.ts';
19
+ export * from './sourcecraft-pull.lib.ts';
14
20
  export type { ListLocalIssuesInput, LocalCommentRow, LocalIssuePatch, LocalIssueRow, LocalIssueStore, NewLocalIssue, Page, PageInput, WorktreeCleanupFlags, WorktreeCleanupInput, WorktreeStore, WorktreeTx, WorktreeWriteContext, } from '../kernel/store.types.ts';
15
21
  export type { SecretSink } from '../kernel/log.types.ts';