@aletheia-works/vivarium-mcp 0.2.1 → 0.3.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.
Files changed (59) hide show
  1. package/README.md +22 -1
  2. package/dist/bundled/recipes.json +130 -89
  3. package/dist/catalogue.d.ts.map +1 -1
  4. package/dist/catalogue.js +0 -5
  5. package/dist/catalogue.js.map +1 -1
  6. package/dist/index.js +0 -11
  7. package/dist/index.js.map +1 -1
  8. package/dist/server.d.ts.map +1 -1
  9. package/dist/server.js +2 -11
  10. package/dist/server.js.map +1 -1
  11. package/dist/tools/create_fork_pr.d.ts +11 -11
  12. package/dist/tools/create_fork_pr.d.ts.map +1 -1
  13. package/dist/tools/create_fork_pr.js +1 -62
  14. package/dist/tools/create_fork_pr.js.map +1 -1
  15. package/dist/tools/get_recipe.d.ts +6 -6
  16. package/dist/tools/get_recipe.d.ts.map +1 -1
  17. package/dist/tools/list_recipes.d.ts +8 -8
  18. package/dist/tools/list_recipes.d.ts.map +1 -1
  19. package/dist/tools/list_recipes.js +2 -2
  20. package/dist/tools/list_recipes.js.map +1 -1
  21. package/dist/tools/lookup_verdict.d.ts +6 -6
  22. package/dist/tools/lookup_verdict.d.ts.map +1 -1
  23. package/dist/tools/match_error.d.ts +7 -20
  24. package/dist/tools/match_error.d.ts.map +1 -1
  25. package/dist/tools/match_error.js +0 -29
  26. package/dist/tools/match_error.js.map +1 -1
  27. package/dist/tools/prepare_fix_candidate.d.ts +16 -16
  28. package/dist/tools/prepare_fix_candidate.d.ts.map +1 -1
  29. package/dist/tools/prepare_fix_candidate.js +8 -22
  30. package/dist/tools/prepare_fix_candidate.js.map +1 -1
  31. package/dist/tools/prepare_new_recipe.d.ts +20 -17
  32. package/dist/tools/prepare_new_recipe.d.ts.map +1 -1
  33. package/dist/tools/prepare_new_recipe.js +22 -26
  34. package/dist/tools/prepare_new_recipe.js.map +1 -1
  35. package/dist/tools/run_layer1_verdict.d.ts.map +1 -1
  36. package/dist/tools/run_layer1_verdict.js +0 -16
  37. package/dist/tools/run_layer1_verdict.js.map +1 -1
  38. package/dist/tools/run_layer23_verdict.d.ts.map +1 -1
  39. package/dist/tools/run_layer23_verdict.js +0 -46
  40. package/dist/tools/run_layer23_verdict.js.map +1 -1
  41. package/dist/tools/search_upstream_issues.d.ts +19 -19
  42. package/dist/tools/search_upstream_issues.d.ts.map +1 -1
  43. package/dist/tools/search_upstream_issues.js +0 -21
  44. package/dist/tools/search_upstream_issues.js.map +1 -1
  45. package/dist/tools/verify_and_report_fix.d.ts +20 -20
  46. package/dist/tools/verify_and_report_fix.d.ts.map +1 -1
  47. package/dist/tools/verify_and_report_fix.js +23 -42
  48. package/dist/tools/verify_and_report_fix.js.map +1 -1
  49. package/dist/tools/verify_branch_fix.d.ts +8 -8
  50. package/dist/tools/verify_branch_fix.d.ts.map +1 -1
  51. package/dist/tools/verify_branch_fix.js +7 -18
  52. package/dist/tools/verify_branch_fix.js.map +1 -1
  53. package/dist/types.d.ts +2 -0
  54. package/dist/types.d.ts.map +1 -1
  55. package/dist/types.js +0 -7
  56. package/dist/types.js.map +1 -1
  57. package/jsr.json +23 -0
  58. package/package.json +11 -9
  59. package/src/bundled/recipes.json +130 -89
package/README.md CHANGED
@@ -21,7 +21,7 @@ deployed verdict snapshots, without scraping the docs site.
21
21
  | `lookup_verdict(slug)` | Layer 1 → `kind: "live"` + page URL (verdicts run in the browser). Layer 2/3 → `kind: "snapshot"` with the deployed `verdict.json` contents (verdict, exit code, image digest, stdout, stderr tail). | All layers (Layer 1 returns a stub). |
22
22
  | `match_error(text, limit?)` | Mechanical token-overlap ranking of recipes against a pasted error message or stack trace. Synonym table + bounded fuzzy match + multi-language stopwords. | All layers. |
23
23
  | `verify_branch_fix(slug, fix_url? \| fix_source?)` | Scaffolding helper for the AI-slop verification loop. Layer 1 → Path A: a recipe-page `compare_url` with the fix pre-loaded. Layer 2/3 → Path B: a `/repro/compare` deep-link plus the `gh workflow run branch-fix-verdict.yml` command. NOT an execution engine — actual reproduction runs in the visitor's browser (Path A) or in GitHub Actions (Path B). | All layers. |
24
- | `prepare_new_recipe(project, issue, title, base_image?, repo_owner?, layer?)` | Scaffolding helper that bundles every artefact an agent needs to author a new recipe: validated slug, the exact `mise run recipes:new` and `mise run recipes:verify` commands, placeholder rows for `docs/site/_data/recipe-facets.json` and (if the project is new) `docs/site/_data/projects.json`, a commit-subject template, and a sequenced next-steps checklist. NOT an execution engine — the agent's shell tool runs the returned commands. | Layer 2 has the canonical scaffolder; Layer 1/3 fall back to copying from an existing recipe. |
24
+ | `prepare_new_recipe(project, issue, title, base_image?, repo_owner?, layer?)` | Scaffolding helper that bundles every artefact an agent needs to author a new recipe: validated slug, the exact `mise run recipes:new` and `mise run recipes:verify` commands, a placeholder `recipe.json` to drop into the recipe directory (validates against `docs/site/public/spec/recipe.schema.json`), an optional `projects.json` row (only when the recipe debuts a new upstream project), a commit-subject template, and a sequenced next-steps checklist. NOT an execution engine — the agent's shell tool runs the returned commands. | Layer 2 has the canonical scaffolder; Layer 1/3 fall back to copying from an existing recipe. |
25
25
  | `prepare_fix_candidate(slug, fork_url, branch, upstream_pr?, package?, purpose?)` | Scaffolding helper that registers a fix-candidate spec on an existing Layer 1 recipe so the page runs the fork branch's wheel side-by-side with the released build (per ADR-0040). Returns the `fix-candidate.json` content, the recommended commit subject + PR title, a ready-to-paste PR body (with AI-authorship disclosure tucked inside a `<details>` block), and the exact `gh` / `git` commands to fork-and-clone aletheia-works/vivarium, branch off main, drop the spec in, commit, push, and open the cross-repo PR. NOT an execution engine — the agent's shell tool runs the returned commands. | Layer 1 only (Layers 2/3 use `verify_branch_fix`). |
26
26
 
27
27
  ## Install
@@ -72,3 +72,24 @@ at `index = "v1"` — see
72
72
  ## License
73
73
 
74
74
  Apache-2.0 — see [LICENSE](./LICENSE).
75
+
76
+ ## Releasing
77
+
78
+ All first-party packages use the version in the root `package.json`.
79
+ Release Please updates every package's `package.json`, the MCP `jsr.json`,
80
+ and the root `CHANGELOG.md` in one release PR from Conventional Commits
81
+ merged into `main`. The MCP handshake reads its version from `jsr.json`;
82
+ `bun run check:version` checks the MCP manifests before tests and builds.
83
+
84
+ Merge the release PR after its required checks pass to create one shared
85
+ `v<version>` tag and GitHub release. That tag triggers `publish-mcp`, which
86
+ checks out the tag and rejects mismatched versions before publishing to
87
+ npm and JSR. To resume a partial publication, run the same workflow manually
88
+ with the existing `v<version>` tag. It checks both registries, skips versions
89
+ already published, and stops on HTTP or network errors. Only HTTP 404 means
90
+ unpublished.
91
+
92
+ This workflow uses OIDC trusted publishing. Keep its filename
93
+ `publish-mcp.yml` aligned with the npm trusted publisher configuration.
94
+ See [release automation](../../docs/releases.md) for version rules,
95
+ repository-wide releases, and recovery.
@@ -2,6 +2,28 @@
2
2
  "index": "v1",
3
3
  "contract": "v1",
4
4
  "recipes": [
5
+ {
6
+ "slug": "biome-12265",
7
+ "layer": 1,
8
+ "project": "biome",
9
+ "issue": 12265,
10
+ "title": "biomejs/biome#12265 — Prettier migration changes omitted defaults",
11
+ "page_url": "https://aletheia-works.github.io/vivarium/repro/biome/12265/",
12
+ "source_url": "https://github.com/aletheia-works/vivarium/tree/main/src/layer1_wasm/biome-12265",
13
+ "language": "shell",
14
+ "tags": [
15
+ "biome",
16
+ "prettier",
17
+ "migration",
18
+ "formatter",
19
+ "defaults"
20
+ ],
21
+ "symptom": "incorrect-migration-defaults",
22
+ "severity": "bug",
23
+ "expected_verdict": "reproduced",
24
+ "expected_runtime": "terrarium",
25
+ "page_url_ja": "https://aletheia-works.github.io/vivarium/ja/repro/biome/12265/"
26
+ },
5
27
  {
6
28
  "slug": "cpython-137205",
7
29
  "layer": 1,
@@ -18,25 +40,91 @@
18
40
  "autocommit"
19
41
  ],
20
42
  "symptom": "fk-pragma-silently-dropped",
21
- "severity": "spec-violation"
43
+ "severity": "spec-violation",
44
+ "expected_verdict": "reproduced",
45
+ "expected_runtime": "pyodide",
46
+ "page_url_ja": "https://aletheia-works.github.io/vivarium/ja/repro/cpython/137205/"
47
+ },
48
+ {
49
+ "slug": "dateutil-1478",
50
+ "layer": 1,
51
+ "project": "dateutil",
52
+ "issue": 1478,
53
+ "title": "dateutil/dateutil#1478",
54
+ "page_url": "https://aletheia-works.github.io/vivarium/repro/dateutil/1478/",
55
+ "source_url": "https://github.com/aletheia-works/vivarium/tree/main/src/layer1_wasm/dateutil-1478",
56
+ "language": "python",
57
+ "tags": [
58
+ "python-dateutil",
59
+ "parser",
60
+ "timezone",
61
+ "iso8601",
62
+ "utc-offset"
63
+ ],
64
+ "symptom": "inverted-utc-offset-sign",
65
+ "severity": "bug",
66
+ "expected_verdict": "reproduced",
67
+ "expected_runtime": "pyodide",
68
+ "page_url_ja": "https://aletheia-works.github.io/vivarium/ja/repro/dateutil/1478/",
69
+ "roundtrip": {
70
+ "schema_version": 1,
71
+ "slug": "dateutil-1478",
72
+ "upstream_issue": "https://github.com/dateutil/dateutil/issues/1478",
73
+ "vivarium_pr": "https://github.com/aletheia-works/vivarium/pull/266",
74
+ "fork": {
75
+ "owner": "JamBalaya56562",
76
+ "repo": "dateutil",
77
+ "branch": "fix-1478-utc-gmt-offset-sign"
78
+ },
79
+ "upstream_pr": "https://github.com/dateutil/dateutil/pull/1500",
80
+ "status": "verifying",
81
+ "updated_at": "2026-05-19T02:54:07Z",
82
+ "notes": [
83
+ "scaffolded from upstream issue dateutil/dateutil#1478 (sign of UTC±N offset inverted when the literal UTC prefix precedes a numeric offset). Native repro.py confirms reproduction against python-dateutil 2.9.0.post0; in-browser repro pinned to the same version via micropip.",
84
+ "fix-candidate registered (Stage 6): JamBalaya56562/dateutil@fix-1478-utc-gmt-offset-sign (commit 63e0611 — \"Fix sign inversion when parsing literal UTC/GMT offsets\"). Wheel is built by CI on Vivarium PR merge so the live recipe page renders baseline + fix-candidate side-by-side; expected fixed verdict: unreproduced.",
85
+ "upstream PR opened: dateutil/dateutil#1500 (\"Fix UTC/GMT offset sign parsing\")."
86
+ ]
87
+ }
22
88
  },
23
89
  {
24
- "slug": "mpmath-983",
90
+ "slug": "lark-1585",
25
91
  "layer": 1,
26
- "project": "mpmath",
27
- "issue": 983,
28
- "title": "mpmath/mpmath#983",
29
- "page_url": "https://aletheia-works.github.io/vivarium/repro/mpmath/983/",
30
- "source_url": "https://github.com/aletheia-works/vivarium/tree/main/src/layer1_wasm/mpmath-983",
92
+ "project": "lark",
93
+ "issue": 1585,
94
+ "title": "lark-parser/lark#1585",
95
+ "page_url": "https://aletheia-works.github.io/vivarium/repro/lark/1585/",
96
+ "source_url": "https://github.com/aletheia-works/vivarium/tree/main/src/layer1_wasm/lark-1585",
31
97
  "language": "python",
32
98
  "tags": [
33
- "numerical-linear-algebra",
34
- "qr-solve",
35
- "householder",
36
- "arbitrary-precision"
99
+ "lark",
100
+ "lalr",
101
+ "cyk",
102
+ "grammar-priority",
103
+ "infinite-loop"
37
104
  ],
38
- "symptom": "solver-asymmetry-on-nonsingular-matrix",
39
- "severity": "bug"
105
+ "symptom": "lalr-construction-infinite-loop",
106
+ "severity": "bug",
107
+ "expected_verdict": "reproduced",
108
+ "expected_runtime": "pyodide",
109
+ "page_url_ja": "https://aletheia-works.github.io/vivarium/ja/repro/lark/1585/",
110
+ "roundtrip": {
111
+ "schema_version": 1,
112
+ "slug": "lark-1585",
113
+ "upstream_issue": "https://github.com/lark-parser/lark/issues/1585",
114
+ "vivarium_pr": "https://github.com/aletheia-works/vivarium/pull/263",
115
+ "fork": {
116
+ "owner": "JamBalaya56562",
117
+ "repo": "lark",
118
+ "branch": "claude/fix-lark-1585-QLVa7"
119
+ },
120
+ "status": "verifying",
121
+ "updated_at": "2026-05-17T22:45:00Z",
122
+ "notes": [
123
+ "scaffolded from upstream issue lark-parser/lark#1585 — infinite loop in lark's LALR/CYK back-ends on the grammar `start.1: \"a\" | start start*`",
124
+ "Layer 1 recipe runs Pyodide + lark in a Web Worker so the hang does not freeze the page; main thread terminates the worker after an 8-second budget and that termination is the verdict signal",
125
+ "fix-candidate registered (Stage 6): JamBalaya56562/lark@claude/fix-lark-1585-QLVa7 — wheel built by CI on PR merge so the live recipe page renders baseline + fix-candidate side-by-side. verify_fix.py confirmed locally: baseline reproduces (hang past 8s) AND fix-candidate returns a parse tree in ~0.6s"
126
+ ]
127
+ }
40
128
  },
41
129
  {
42
130
  "slug": "numpy-28287",
@@ -53,7 +141,10 @@
53
141
  "datetime-units"
54
142
  ],
55
143
  "symptom": "ordering-non-transitive",
56
- "severity": "bug"
144
+ "severity": "bug",
145
+ "expected_verdict": "reproduced",
146
+ "expected_runtime": "pyodide",
147
+ "page_url_ja": "https://aletheia-works.github.io/vivarium/ja/repro/numpy/28287/"
57
148
  },
58
149
  {
59
150
  "slug": "pandas-56679",
@@ -70,39 +161,10 @@
70
161
  "type-inference"
71
162
  ],
72
163
  "symptom": "dtype-mismatch",
73
- "severity": "regression"
74
- },
75
- {
76
- "slug": "php-12167",
77
- "layer": 1,
78
- "project": "php",
79
- "issue": 12167,
80
- "title": "php/php-src#12167",
81
- "page_url": "https://aletheia-works.github.io/vivarium/repro/php/12167/",
82
- "source_url": "https://github.com/aletheia-works/vivarium/tree/main/src/layer1_wasm/php-12167",
83
- "language": "php",
84
- "tags": [
85
- "json_encode",
86
- "recursion-depth"
87
- ],
88
- "symptom": "json-encode-recursion",
89
- "severity": "bug"
90
- },
91
- {
92
- "slug": "regex-779",
93
- "layer": 1,
94
- "project": "regex",
95
- "issue": 779,
96
- "title": "rust-lang/regex#779",
97
- "page_url": "https://aletheia-works.github.io/vivarium/repro/regex/779/",
98
- "source_url": "https://github.com/aletheia-works/vivarium/tree/main/src/layer1_wasm/regex-779",
99
- "language": "rust",
100
- "tags": [
101
- "regex",
102
- "wasm32-wasip1"
103
- ],
104
- "symptom": "regex-engine-edge-case",
105
- "severity": "bug"
164
+ "severity": "regression",
165
+ "expected_verdict": "reproduced",
166
+ "expected_runtime": "pyodide",
167
+ "page_url_ja": "https://aletheia-works.github.io/vivarium/ja/repro/pandas/56679/"
106
168
  },
107
169
  {
108
170
  "slug": "ruby-21709",
@@ -114,12 +176,16 @@
114
176
  "source_url": "https://github.com/aletheia-works/vivarium/tree/main/src/layer1_wasm/ruby-21709",
115
177
  "language": "ruby",
116
178
  "tags": [
117
- "string",
118
- "unicode",
119
- "combining-diacritics"
179
+ "regexp",
180
+ "string-interpolation",
181
+ "encoding",
182
+ "onigmo"
120
183
  ],
121
- "symptom": "unicode-normalize-nfd",
122
- "severity": "bug"
184
+ "symptom": "regexp-interpolation-encoding-mismatch",
185
+ "severity": "bug",
186
+ "expected_verdict": "reproduced",
187
+ "expected_runtime": "ruby.wasm",
188
+ "page_url_ja": "https://aletheia-works.github.io/vivarium/ja/repro/ruby/21709/"
123
189
  },
124
190
  {
125
191
  "slug": "bash-local-shadows-exit",
@@ -137,6 +203,9 @@
137
203
  ],
138
204
  "symptom": "local-shadows-exit-status",
139
205
  "severity": "footgun",
206
+ "expected_verdict": "reproduced",
207
+ "expected_runtime": "docker-snapshot",
208
+ "page_url_ja": "https://aletheia-works.github.io/vivarium/ja/repro/bash/local-shadows-exit/",
140
209
  "verdict_url": "https://aletheia-works.github.io/vivarium/repro/bash/local-shadows-exit/verdict.json"
141
210
  },
142
211
  {
@@ -156,6 +225,9 @@
156
225
  ],
157
226
  "symptom": "whitespace-unsafe-pipeline",
158
227
  "severity": "footgun",
228
+ "expected_verdict": "reproduced",
229
+ "expected_runtime": "docker-snapshot",
230
+ "page_url_ja": "https://aletheia-works.github.io/vivarium/ja/repro/find/xargs-whitespace/",
159
231
  "verdict_url": "https://aletheia-works.github.io/vivarium/repro/find/xargs-whitespace/verdict.json"
160
232
  },
161
233
  {
@@ -174,27 +246,11 @@
174
246
  ],
175
247
  "symptom": "advisory-lock-bypass",
176
248
  "severity": "spec-violation",
249
+ "expected_verdict": "reproduced",
250
+ "expected_runtime": "docker-snapshot",
251
+ "page_url_ja": "https://aletheia-works.github.io/vivarium/ja/repro/flock/is-advisory/",
177
252
  "verdict_url": "https://aletheia-works.github.io/vivarium/repro/flock/is-advisory/verdict.json"
178
253
  },
179
- {
180
- "slug": "node-63041",
181
- "layer": 2,
182
- "project": "node",
183
- "issue": 63041,
184
- "title": "Node.js `Intl.DateTimeFormat` drops month with `calendar: 'iso8601'`",
185
- "page_url": "https://aletheia-works.github.io/vivarium/repro/node/63041/",
186
- "source_url": "https://github.com/aletheia-works/vivarium/tree/main/src/layer2_docker/node-63041",
187
- "language": "javascript",
188
- "tags": [
189
- "intl",
190
- "datetimeformat",
191
- "iso8601-calendar",
192
- "icu"
193
- ],
194
- "symptom": "intl-month-dropped",
195
- "severity": "regression",
196
- "verdict_url": "https://aletheia-works.github.io/vivarium/repro/node/63041/verdict.json"
197
- },
198
254
  {
199
255
  "slug": "postgres-lost-update",
200
256
  "layer": 2,
@@ -211,25 +267,10 @@
211
267
  ],
212
268
  "symptom": "lost-update-read-committed",
213
269
  "severity": "datarace",
270
+ "expected_verdict": "reproduced",
271
+ "expected_runtime": "docker-snapshot",
272
+ "page_url_ja": "https://aletheia-works.github.io/vivarium/ja/repro/postgres/lost-update/",
214
273
  "verdict_url": "https://aletheia-works.github.io/vivarium/repro/postgres/lost-update/verdict.json"
215
- },
216
- {
217
- "slug": "lost-update",
218
- "layer": 3,
219
- "project": "pthread",
220
- "issue": 0,
221
- "title": "pthread lost-update data race (canonical)",
222
- "page_url": "https://aletheia-works.github.io/vivarium/repro/pthread/lost-update/",
223
- "source_url": "https://github.com/aletheia-works/vivarium/tree/main/src/layer3_thirdway/lost-update",
224
- "language": "c",
225
- "tags": [
226
- "pthread",
227
- "rr-replay",
228
- "deterministic"
229
- ],
230
- "symptom": "lost-update-data-race",
231
- "severity": "datarace",
232
- "verdict_url": "https://aletheia-works.github.io/vivarium/repro/pthread/lost-update/verdict.json"
233
274
  }
234
275
  ]
235
276
  }
@@ -1 +1 @@
1
- {"version":3,"file":"catalogue.d.ts","sourceRoot":"","sources":["../src/catalogue.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGhE,eAAO,MAAM,SAAS,+DACwC,CAAC;AAW/D,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,CAsB1D;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAYjC"}
1
+ {"version":3,"file":"catalogue.d.ts","sourceRoot":"","sources":["../src/catalogue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGhE,eAAO,MAAM,SAAS,+DACwC,CAAC;AAW/D,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,wBAAgB,eAAe,IAAI,YAAY,CAE9C;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,CAqB1D;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAYjC"}
package/dist/catalogue.js CHANGED
@@ -1,7 +1,3 @@
1
- // Catalogue fetcher: 5-minute in-process TTL with a build-time bundled
2
- // fallback for offline / network-failure / cold-start. The bundled
3
- // snapshot is refreshed at publish time by the GHA workflow that
4
- // copies docs/site/public/api/recipes.json into src/bundled/.
5
1
  import bundledIndex from './bundled/recipes.json' with { type: 'json' };
6
2
  export const INDEX_URL = 'https://aletheia-works.github.io/vivarium/api/recipes.json';
7
3
  const TTL_MS = 5 * 60 * 1000;
@@ -30,7 +26,6 @@ export async function getCatalogue() {
30
26
  }
31
27
  }
32
28
  catch {
33
- // Network failure → fall through to bundled fallback.
34
29
  }
35
30
  return getBundledIndex();
36
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"catalogue.js","sourceRoot":"","sources":["../src/catalogue.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,mEAAmE;AACnE,iEAAiE;AACjE,8DAA8D;AAG9D,OAAO,YAAY,MAAM,wBAAwB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAExE,MAAM,CAAC,MAAM,SAAS,GACpB,4DAA4D,CAAC;AAE/D,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAO7B,IAAI,KAAK,GAAsB,IAAI,CAAC;AAEpC,MAAM,UAAU,qBAAqB;IACnC,KAAK,GAAG,IAAI,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAuC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,MAAM,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE;YACjC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE;SAC1C,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAiB,CAAC;YAChD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/D,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;IACxD,CAAC;IAED,OAAO,eAAe,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE;YAClC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE;SAC1C,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAoB,CAAC;QACnD,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"catalogue.js","sourceRoot":"","sources":["../src/catalogue.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,wBAAwB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAExE,MAAM,CAAC,MAAM,SAAS,GACpB,4DAA4D,CAAC;AAE/D,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAO7B,IAAI,KAAK,GAAsB,IAAI,CAAC;AAEpC,MAAM,UAAU,qBAAqB;IACnC,KAAK,GAAG,IAAI,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAuC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,MAAM,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE;YACjC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE;SAC1C,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACX,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAiB,CAAC;YAChD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/D,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;IACT,CAAC;IAED,OAAO,eAAe,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE;YAClC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE;SAC1C,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAoB,CAAC;QACnD,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
package/dist/index.js CHANGED
@@ -1,17 +1,6 @@
1
1
  #!/usr/bin/env node
2
- //
3
- // Vivarium MCP server — stdio entrypoint.
4
- //
5
- // Spawned by an MCP client (Claude Code, Cline, Cursor, Continue, …)
6
- // via `npx -y @aletheia-works/vivarium-mcp` or the equivalent JSR
7
- // invocation. Speaks the MCP protocol over stdin / stdout.
8
- //
9
- // See packages/mcp-server/README.md for client configuration snippets
10
- // and ADR-0019 (private memo) for the design rationale.
11
2
  import { runServer } from './server.js';
12
3
  runServer().catch((err) => {
13
- // The MCP transport itself uses stdout, so all human-visible
14
- // diagnostics go to stderr.
15
4
  console.error('vivarium-mcp: fatal:', err);
16
5
  process.exit(1);
17
6
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,EAAE;AACF,0CAA0C;AAC1C,EAAE;AACF,qEAAqE;AACrE,kEAAkE;AAClE,2DAA2D;AAC3D,EAAE;AACF,sEAAsE;AACtE,wDAAwD;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IACjC,6DAA6D;IAC7D,4BAA4B;IAC5B,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IACjC,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AA+DnE,wBAAgB,YAAY,IAAI,MAAM,CAsGrC;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAI/C"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAwDnE,wBAAgB,YAAY,IAAI,MAAM,CAsGrC;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAI/C"}
package/dist/server.js CHANGED
@@ -1,6 +1,4 @@
1
- // MCP server wiring — registers the v1 tools and connects a stdio
2
- // transport. The tool surface is documented in README.md; each tool
3
- // module owns its own description literal.
1
+ import metadata from '../jsr.json' with { type: 'json' };
4
2
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
5
3
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
6
4
  import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
@@ -15,14 +13,7 @@ import { SEARCH_UPSTREAM_ISSUES_TOOL, searchUpstreamIssues, } from './tools/sear
15
13
  import { VERIFY_AND_REPORT_FIX_TOOL, verifyAndReportFix, } from './tools/verify_and_report_fix.js';
16
14
  import { VERIFY_BRANCH_FIX_TOOL, verifyBranchFix, } from './tools/verify_branch_fix.js';
17
15
  const SERVER_NAME = 'vivarium-mcp';
18
- // Keep in sync with package.json + jsr.json. The MCP `initialize`
19
- // handshake exposes this string to clients, so unsynced values across
20
- // these three files produce a confusing client experience. Bump the
21
- // patch component for additive changes within v0.x (additional tools,
22
- // description / surface refinements) — the project is still pre-1.0
23
- // and `prepare_fix_candidate` is meaningful but fully opt-in, so a minor
24
- // bump would overstate the impact.
25
- const SERVER_VERSION = '0.2.1';
16
+ const SERVER_VERSION = metadata.version;
26
17
  export function createServer() {
27
18
  const server = new Server({ name: SERVER_NAME, version: SERVER_VERSION }, { capabilities: { tools: {} } });
28
19
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,oEAAoE;AACpE,2CAA2C;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACL,mBAAmB,EACnB,YAAY,GAEb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EACL,iBAAiB,EACjB,WAAW,GAEZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,mBAAmB,EACnB,aAAa,GACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,gBAAgB,EAChB,UAAU,GAEX,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,GAEpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,uBAAuB,EACvB,gBAAgB,GAEjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,GAErB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,GAEnB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,sBAAsB,EACtB,eAAe,GAEhB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,GAAG,cAAc,CAAC;AACnC,kEAAkE;AAClE,sEAAsE;AACtE,oEAAoE;AACpE,sEAAsE;AACtE,oEAAoE;AACpE,yEAAyE;AACzE,mCAAmC;AACnC,MAAM,cAAc,GAAG,OAAO,CAAC;AAE/B,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,EAC9C,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;IAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,EAAE;YACL,iBAAiB;YACjB,eAAe;YACf,mBAAmB;YACnB,gBAAgB;YAChB,2BAA2B;YAC3B,sBAAsB;YACtB,0BAA0B;YAC1B,uBAAuB;YACvB,0BAA0B;YAC1B,mBAAmB;SACpB;KACF,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC5D,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7B,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAA4B,CAAC;QAErE,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YACH,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,cAAc;oBACjB,OAAO,GAAG,MAAM,WAAW,CAAC,IAAuB,CAAC,CAAC;oBACrD,MAAM;gBACR,KAAK,YAAY;oBACf,OAAO,GAAG,MAAM,SAAS,CAAC,IAAwB,CAAC,CAAC;oBACpD,MAAM;gBACR,KAAK,gBAAgB;oBACnB,OAAO,GAAG,MAAM,aAAa,CAAC,IAAwB,CAAC,CAAC;oBACxD,MAAM;gBACR,KAAK,aAAa;oBAChB,OAAO,GAAG,MAAM,UAAU,CAAC,IAAiC,CAAC,CAAC;oBAC9D,MAAM;gBACR,KAAK,wBAAwB;oBAC3B,OAAO,GAAG,MAAM,oBAAoB,CAClC,IAA2C,CAC5C,CAAC;oBACF,MAAM;gBACR,KAAK,mBAAmB;oBACtB,OAAO,GAAG,MAAM,eAAe,CAC7B,IAAsC,CACvC,CAAC;oBACF,MAAM;gBACR,KAAK,uBAAuB;oBAC1B,OAAO,GAAG,MAAM,kBAAkB,CAChC,IAAyC,CAC1C,CAAC;oBACF,MAAM;gBACR,KAAK,oBAAoB;oBACvB,OAAO,GAAG,MAAM,gBAAgB,CAC9B,IAAuC,CACxC,CAAC;oBACF,MAAM;gBACR,KAAK,uBAAuB;oBAC1B,OAAO,GAAG,MAAM,mBAAmB,CACjC,IAA0C,CAC3C,CAAC;oBACF,MAAM;gBACR,KAAK,gBAAgB;oBACnB,OAAO,GAAG,MAAM,YAAY,CAAC,IAAmC,CAAC,CAAC;oBAClE,MAAM;gBACR;oBACE,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,iBAAiB,IAAI,EAAE;6BAC9B;yBACF;qBACF,CAAC;YACN,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,QAAQ,IAAI,WAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBAChF;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;iBACvC;aACF;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -32,37 +32,37 @@ export type GhRunner = (args: string[]) => GhRunResult;
32
32
  export declare function _setGhRunnerForTesting(runner: GhRunner | null): void;
33
33
  export declare function createForkPr(args: CreateForkPrArgs): Promise<CreateForkPrResult>;
34
34
  export declare const CREATE_FORK_PR_TOOL: {
35
- readonly name: "create_fork_pr";
35
+ readonly name: 'create_fork_pr';
36
36
  readonly description: "Open a draft PR on the upstream repository from the contributor's already-pushed fork branch. The output side of the round-trip loop. Conservative by design: `dry_run` defaults to true (returns the gh command without executing); `--draft` is mandatory (caller cannot opt out); AI authorship is disclosed via a boilerplate footer appended to the PR body (the `ai: generated` LABEL from AGENTS.md §4.6 is Vivarium-internal and is intentionally NOT applied — upstream repos rarely carry it and contributors usually lack permission to create it). The tool refuses to run unless `computeNextAction(current_state) === 'open_fork_pr'` — that single check enforces all the round-trip preconditions in one place (verdicts captured with the expected polarity, the Vivarium-side PR already opened, no existing upstream PR, status not blocked/merged). The fork branch must already exist on GitHub — this tool does NOT clone, commit, or push on the caller's behalf, and does NOT create the fork (use `gh repo fork` manually first). Pair with `verify_and_report_fix` upstream of this call and with `prepare_fix_candidate` (Layer 1) when registering a fix-candidate spec.";
37
37
  readonly inputSchema: {
38
- readonly type: "object";
38
+ readonly type: 'object';
39
39
  readonly properties: {
40
40
  readonly slug: {
41
- readonly type: "string";
42
- readonly pattern: "^[a-z0-9]+(-[a-z0-9]+)*$";
43
- readonly description: "Kebab-case recipe slug (e.g. 'mpmath-983', 'bash-local-shadows-exit'). Must exist in the catalogue.";
41
+ readonly type: 'string';
42
+ readonly pattern: '^[a-z0-9]+(-[a-z0-9]+)*$';
43
+ readonly description: "Kebab-case recipe slug (e.g. 'lark-1585', 'bash-local-shadows-exit'). Must exist in the catalogue.";
44
44
  };
45
45
  readonly current_state: {
46
- readonly type: "object";
46
+ readonly type: 'object';
47
47
  readonly description: "Parsed roundtrip.json contents. Must contain `upstream_issue`, `fork` (owner/repo/branch), and `verdicts` with both `unfixed.verdict='reproduced'` and `fixed.verdict='unreproduced'`. The tool refuses to run otherwise.";
48
48
  readonly additionalProperties: true;
49
49
  };
50
50
  readonly pr_title: {
51
- readonly type: "string";
51
+ readonly type: 'string';
52
52
  readonly minLength: 1;
53
53
  readonly description: "PR title. Caller is responsible for following the upstream project's commit / PR title conventions (Conventional Commits, etc.).";
54
54
  };
55
55
  readonly pr_body: {
56
- readonly type: "string";
56
+ readonly type: 'string';
57
57
  readonly description: "PR body (Markdown). Defaults to empty. Include a link back to the Vivarium recipe and the upstream issue, and disclose AI authorship per AGENTS.md §4.6 (the `ai: generated` label is applied automatically; surfacing the disclosure in the body is good practice).";
58
58
  };
59
59
  readonly dry_run: {
60
- readonly type: "boolean";
60
+ readonly type: 'boolean';
61
61
  readonly default: true;
62
- readonly description: "When true (the default), the tool returns the exact `gh pr create` command + a structured summary WITHOUT calling gh. Set to false to actually open the PR. The MCP server never opens an upstream PR by accident.";
62
+ readonly description: 'When true (the default), the tool returns the exact `gh pr create` command + a structured summary WITHOUT calling gh. Set to false to actually open the PR. The MCP server never opens an upstream PR by accident.';
63
63
  };
64
64
  };
65
- readonly required: readonly ["slug", "current_state", "pr_title"];
65
+ readonly required: readonly ['slug', 'current_state', 'pr_title'];
66
66
  };
67
67
  };
68
68
  //# sourceMappingURL=create_fork_pr.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create_fork_pr.d.ts","sourceRoot":"","sources":["../../src/tools/create_fork_pr.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMlD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IAId,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,IAAI,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAAG,iBAAiB,CAAC;AAEpE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,WAAW,CAAC;AAgBvD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAEpE;AA2BD,wBAAsB,YAAY,CAChC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAkL7B;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCtB,CAAC"}
1
+ {"version":3,"file":"create_fork_pr.d.ts","sourceRoot":"","sources":["../../src/tools/create_fork_pr.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMlD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,IAAI,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAAG,iBAAiB,CAAC;AAEpE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,WAAW,CAAC;AAgBvD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAEpE;AAgBD,wBAAsB,YAAY,CAChC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAyJ7B;AAED,eAAO,MAAM,mBAAmB;aAC9B,IAAI,EAAE,gBAAgB;aACtB,WAAW,EACT,soCAAsoC;aACxoC,WAAW;iBACT,IAAI,EAAE,QAAQ;iBACd,UAAU;qBACR,IAAI;yBACF,IAAI,EAAE,QAAQ;yBACd,OAAO,EAAE,0BAA0B;yBACnC,WAAW,EACT,oGAAoG;;qBAExG,aAAa;yBACX,IAAI,EAAE,QAAQ;yBACd,WAAW,EACT,2NAA2N;yBAC7N,oBAAoB;;qBAEtB,QAAQ;yBACN,IAAI,EAAE,QAAQ;yBACd,SAAS,EAAE,CAAC;yBACZ,WAAW,EACT,kIAAkI;;qBAEtI,OAAO;yBACL,IAAI,EAAE,QAAQ;yBACd,WAAW,EACT,sQAAsQ;;qBAE1Q,OAAO;yBACL,IAAI,EAAE,SAAS;yBACf,OAAO;yBACP,WAAW,EACT,oNAAoN;;;iBAG1N,QAAQ,YAAG,MAAM,EAAE,eAAe,EAAE,UAAU;;CAExC,CAAC"}