@bendyline/gilde 0.1.18 → 0.1.20
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 +6 -1
- package/authoring/chat-models/README.md +26 -0
- package/authoring/chat-models/btl4-35b-q4.json +142 -0
- package/authoring/chat-models/btl4-compact-iq2.json +142 -0
- package/authoring/chat-models/deepseek-r1-8b-q4.json +53 -0
- package/authoring/chat-models/deepseek-v4-flash-284b-mxfp4.json +110 -0
- package/authoring/chat-models/deepseek-v4-flash-284b-q2.json +110 -0
- package/authoring/chat-models/deepseek-v4-flash-284b-q2q4.json +111 -0
- package/authoring/chat-models/deepseek-v4-flash-284b-q4.json +113 -0
- package/authoring/chat-models/gemma4-12b-q4.json +190 -0
- package/authoring/chat-models/gemma4-12b-q8.json +164 -0
- package/authoring/chat-models/gemma4-26b-q4.json +90 -0
- package/authoring/chat-models/gemma4-31b-q4.json +81 -0
- package/authoring/chat-models/gemma4-e2b-q4.json +76 -0
- package/authoring/chat-models/gemma4-e4b-q4.json +71 -0
- package/authoring/chat-models/glm-5.2-754b-q2.json +60 -0
- package/authoring/chat-models/gpt-oss-120b-q4.json +48 -0
- package/authoring/chat-models/gpt-oss-20b-q4.json +47 -0
- package/authoring/chat-models/laguna-s-2.1-118b-q4.json +127 -0
- package/authoring/chat-models/laguna-s-2.1-118b-q6.json +121 -0
- package/authoring/chat-models/laguna-s-2.1-118b-q8.json +127 -0
- package/authoring/chat-models/lfm2.5-2.6b-q4.json +39 -0
- package/authoring/chat-models/llama3.2-3b-q4.json +42 -0
- package/authoring/chat-models/mistral-7b-q4.json +53 -0
- package/authoring/chat-models/mistral-medium-3.5-128b-q4.json +57 -0
- package/authoring/chat-models/muse-glimmer-30b-q4.json +126 -0
- package/authoring/chat-models/nemotron3-nano-30b-q4.json +49 -0
- package/authoring/chat-models/nemotron3-super-120b-q4.json +41 -0
- package/authoring/chat-models/ornith-35b-q4.json +145 -0
- package/authoring/chat-models/ornith-35b-q8.json +145 -0
- package/authoring/chat-models/ornith-9b-q4.json +146 -0
- package/authoring/chat-models/qwen3.5-122b-a10b-q4.json +172 -0
- package/authoring/chat-models/qwen3.5-2b-q4.json +70 -0
- package/authoring/chat-models/qwen3.5-4b-q4.json +61 -0
- package/authoring/chat-models/qwen3.5-9b-q4.json +61 -0
- package/authoring/chat-models/qwen3.6-27b-q4.json +66 -0
- package/authoring/chat-models/qwen3.6-27b-q8.json +153 -0
- package/authoring/chat-models/qwen3.6-35b-a3b-q4.json +154 -0
- package/authoring/chat-models/qwen3.6-35b-a3b-q8.json +154 -0
- package/authoring/chat-models/talkie-1930-13b-q4.json +74 -0
- package/authoring/chat-models/ternary-bonsai-27b-q2.json +144 -0
- package/data/chat-models/gl/glm-5.2-754b-q2/manifest.json +65 -0
- package/data/chat-models/gl/glm-5.2-754b-q2/versions/1.0.0/manifest.json +18 -0
- package/data/chat-models/gp/gpt-oss-120b-q4/manifest.json +5 -5
- package/data/chat-models/gp/gpt-oss-120b-q4/versions/1.1.0/manifest.json +135 -0
- package/data/chat-models/index.json +1 -1
- package/data/chat-models/mu/muse-glimmer-30b-q4/manifest.json +135 -0
- package/data/chat-models/mu/muse-glimmer-30b-q4/versions/1.0.0/manifest.json +20 -0
- package/data/craftbook-templates/index.json +1 -1
- package/data/craftbook-templates/pu/pull-request-review/manifest.json +5 -1
- package/data/craftbook-templates/pu/pull-request-review/versions/1.2.0/craftbook.json +159 -0
- package/data/craftbook-templates/pu/pull-request-review/versions/1.2.0/test.json +172 -0
- package/data/craftbook-templates/pu/pull-request-review/versions/1.3.0/craftbook.json +156 -0
- package/data/craftbook-templates/pu/pull-request-review/versions/1.3.0/test.json +172 -0
- package/package.json +4 -2
- package/schemas/chat-model-identity.schema.json +44 -0
- package/schemas/chat-model-version.schema.json +3 -0
- package/schemas/connector-type-identity.schema.json +3 -0
- package/schemas/connector-type-version.schema.json +3 -0
- package/schemas/craftbook-doc.schema.json +3 -0
- package/schemas/craftbook-template-identity.schema.json +3 -0
- package/schemas/craftbook-template-version.schema.json +3 -0
- package/schemas/gezel-template-identity.schema.json +3 -0
- package/schemas/gezel-template-version.schema.json +3 -0
- package/schemas/image-model-identity.schema.json +3 -0
- package/schemas/image-model-version.schema.json +3 -0
- package/schemas/project-type-identity.schema.json +3 -0
- package/schemas/project-type-version.schema.json +3 -0
- package/schemas/toolset-identity.schema.json +3 -0
- package/schemas/toolset-version.schema.json +3 -0
- package/schemas/video-model-identity.schema.json +3 -0
- package/schemas/video-model-version.schema.json +3 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"title": "Current-branch pull request review",
|
|
4
|
+
"objective": "Verify that Pull Request Review selects the PR marked as the checked-out branch default, inspects its GitHub metadata and diff through a deterministic MCP fixture, and writes a cited request-changes report without posting to GitHub.",
|
|
5
|
+
"tags": [
|
|
6
|
+
"external",
|
|
7
|
+
"mcp",
|
|
8
|
+
"pull-request"
|
|
9
|
+
],
|
|
10
|
+
"prompt": "Run the Pull Request Review craftbook for the current checked-out branch. The fake GitHub toolset is local and deterministic; do not use real network or credentials. Review the PR marked as the current-branch default, not unrelated PR #41. Write the complete local review to pr-review.md and do not post a GitHub comment.",
|
|
11
|
+
"setup": {
|
|
12
|
+
"projectName": "Current Branch PR Review Eval",
|
|
13
|
+
"about": "A local fixture project whose checked-out branch is codex/pr-review. GitHub operations are supplied by the fake github MCP toolset.",
|
|
14
|
+
"missionObjectives": "Review the open PR for codex/pr-review, cite concrete changed-file lines, identify the insecure fallback credential, and deliver pr-review.md without public side effects.",
|
|
15
|
+
"files": [
|
|
16
|
+
{
|
|
17
|
+
"path": "src/auth.ts",
|
|
18
|
+
"content": "export function isAdmin(token: string): boolean {\n const expected = process.env.ADMIN_API_KEY || 'dev-admin-key';\n return token === expected;\n}\n"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"path": "source/eval-context.md",
|
|
22
|
+
"content": "# Eval context\n\nThe checked-out branch is `codex/pr-review`. PR #52 is the only open pull request whose head matches that branch. PR #41 is unrelated and must not be reviewed.\n"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"worker": {
|
|
26
|
+
"name": "Rina",
|
|
27
|
+
"role": "Reviewer",
|
|
28
|
+
"description": "A careful code reviewer who grounds findings in changed lines."
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"mocks": [
|
|
32
|
+
{
|
|
33
|
+
"kind": "mcp",
|
|
34
|
+
"id": "github",
|
|
35
|
+
"toolsetId": "github",
|
|
36
|
+
"description": "Fake GitHub PR tools with two open PRs; PR #52 is the unique current-branch match and PR #41 is unrelated.",
|
|
37
|
+
"tools": [
|
|
38
|
+
{
|
|
39
|
+
"name": "github_pr_list",
|
|
40
|
+
"description": "List open PRs, prioritizing and marking the checked-out branch match.",
|
|
41
|
+
"resultTemplate": "#52 — Add admin API-key authentication (alex, codex/pr-review → main)\n https://github.example.test/acme/widget/pull/52\n Current branch match — default: codex/pr-review\n\n#41 — Refactor invoice export (sam, feature/invoice-export → main)\n https://github.example.test/acme/widget/pull/41"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "github_pr_view",
|
|
45
|
+
"description": "Fetch PR metadata for a selected number.",
|
|
46
|
+
"resultTemplate": "#52 — Add admin API-key authentication\nAuthor: alex\nBranches: codex/pr-review → main\nState: OPEN\nChanges: +4 −0 across 1 file(s)\nURL: https://github.example.test/acme/widget/pull/52\n\nAdds an API-key check for admin routes."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"name": "github_pr_files",
|
|
50
|
+
"description": "List changed files and patches for a selected PR.",
|
|
51
|
+
"resultTemplate": "src/auth.ts — added (+4 −0)\n```diff\n@@ -0,0 +1,4 @@\n+export function isAdmin(token: string): boolean {\n+ const expected = process.env.ADMIN_API_KEY || 'dev-admin-key';\n+ return token === expected;\n+}\n```"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "github_pr_diff",
|
|
55
|
+
"description": "Fetch the full unified diff for a selected PR.",
|
|
56
|
+
"resultTemplate": "diff --git a/src/auth.ts b/src/auth.ts\nnew file mode 100644\n--- /dev/null\n+++ b/src/auth.ts\n@@ -0,0 +1,4 @@\n+export function isAdmin(token: string): boolean {\n+ const expected = process.env.ADMIN_API_KEY || 'dev-admin-key';\n+ return token === expected;\n+}\n"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"name": "github_pr_comments",
|
|
60
|
+
"description": "List existing PR comments.",
|
|
61
|
+
"resultTemplate": "No comments on this PR."
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"name": "github_pr_comment",
|
|
65
|
+
"description": "Post a PR comment. Present only so the eval can prove the review recipe does not call it.",
|
|
66
|
+
"resultTemplate": {
|
|
67
|
+
"id": 9001,
|
|
68
|
+
"url": "https://github.example.test/acme/widget/pull/52#comment-9001"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"success": {
|
|
75
|
+
"summary": "pr-review.md reviews PR #52 (the unique current-branch match), cites src/auth.ts, flags the hard-coded fallback credential, requests changes, and never calls the GitHub comment tool.",
|
|
76
|
+
"deliverables": [
|
|
77
|
+
{
|
|
78
|
+
"path": "pr-review.md",
|
|
79
|
+
"kind": "markdown-report",
|
|
80
|
+
"minBytes": 500,
|
|
81
|
+
"checks": [
|
|
82
|
+
{
|
|
83
|
+
"kind": "contains",
|
|
84
|
+
"file": "pr-review.md",
|
|
85
|
+
"pattern": "#\\s+Pull Request Review\\s+[—-]\\s+PR\\s+#52",
|
|
86
|
+
"flags": "i"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"kind": "contains",
|
|
90
|
+
"file": "pr-review.md",
|
|
91
|
+
"pattern": "src/auth\\.ts(?::|\\s*\\|\\s*)[23]",
|
|
92
|
+
"flags": "i"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"kind": "contains",
|
|
96
|
+
"file": "pr-review.md",
|
|
97
|
+
"pattern": "dev-admin-key|fallback credential|hard-coded credential|hardcoded credential",
|
|
98
|
+
"flags": "i"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"kind": "contains",
|
|
102
|
+
"file": "pr-review.md",
|
|
103
|
+
"pattern": "Verdict:\\s*request-changes",
|
|
104
|
+
"flags": "i"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"kind": "notContains",
|
|
108
|
+
"file": "pr-review.md",
|
|
109
|
+
"pattern": "PR\\s*#41|invoice export",
|
|
110
|
+
"flags": "i"
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
],
|
|
115
|
+
"mocks": [
|
|
116
|
+
{
|
|
117
|
+
"service": "github",
|
|
118
|
+
"requiredTools": [
|
|
119
|
+
"github_pr_list",
|
|
120
|
+
"github_pr_view",
|
|
121
|
+
"github_pr_files",
|
|
122
|
+
"github_pr_diff"
|
|
123
|
+
],
|
|
124
|
+
"toolCalls": {
|
|
125
|
+
"github_pr_comment": {
|
|
126
|
+
"minCalls": 0,
|
|
127
|
+
"maxCalls": 0
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
]
|
|
132
|
+
},
|
|
133
|
+
"rubric": {
|
|
134
|
+
"artifact": {
|
|
135
|
+
"path": "pr-review.md",
|
|
136
|
+
"kind": "markdown"
|
|
137
|
+
},
|
|
138
|
+
"axes": [
|
|
139
|
+
{
|
|
140
|
+
"name": "selection",
|
|
141
|
+
"description": "The report is explicitly about PR #52, the current-branch default, and contains no analysis of unrelated PR #41."
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"name": "grounding",
|
|
145
|
+
"description": "Every finding is grounded in the supplied diff with a concrete src/auth.ts line citation."
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"name": "severity",
|
|
149
|
+
"description": "The insecure fallback credential receives a proportionate severity and forces request-changes."
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"name": "side-effects",
|
|
153
|
+
"description": "The review remains local and does not post a GitHub comment."
|
|
154
|
+
}
|
|
155
|
+
]
|
|
156
|
+
},
|
|
157
|
+
"qualityFocus": [
|
|
158
|
+
"current-branch PR selection",
|
|
159
|
+
"diff-grounded findings",
|
|
160
|
+
"safe local-only delivery"
|
|
161
|
+
],
|
|
162
|
+
"extensions": {
|
|
163
|
+
"legacySimulators": [
|
|
164
|
+
{
|
|
165
|
+
"id": "pull-request-review-github-mcp",
|
|
166
|
+
"kind": "mcp",
|
|
167
|
+
"status": "implemented",
|
|
168
|
+
"description": "Deterministic fake GitHub PR toolset with a unique current-branch match, an unrelated open PR, changed-file patches, and a forbidden comment side effect."
|
|
169
|
+
}
|
|
170
|
+
]
|
|
171
|
+
}
|
|
172
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bendyline/gilde",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.20",
|
|
4
4
|
"description": "The gilde catalog: model manifests, toolsets, craftbooks, roles, and project types for gezel.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
@@ -26,9 +26,11 @@
|
|
|
26
26
|
},
|
|
27
27
|
"scripts": {
|
|
28
28
|
"fix": "npm run format && npm run format:authoring && npm run build-index",
|
|
29
|
-
"check": "npm run format:check && npm run format:authoring:check && npm run validate && npm run check-authoring && npm run check-index && npm run lint-models && npm run check-page-demos",
|
|
29
|
+
"check": "npm run format:check && npm run format:authoring:check && npm run validate && npm run check-authoring && npm run test-tools && npm run check-index && npm run lint-models && npm run check-page-demos",
|
|
30
30
|
"validate": "npm --prefix tools ci --silent && node tools/validate.mjs",
|
|
31
31
|
"check-authoring": "node tools/check-authoring.mjs",
|
|
32
|
+
"build-chat-model": "node tools/build-chat-model.mjs",
|
|
33
|
+
"test-tools": "node --test tools/test/*.test.mjs",
|
|
32
34
|
"build-index": "node tools/build-index.mjs",
|
|
33
35
|
"check-index": "node tools/build-index.mjs --check",
|
|
34
36
|
"lint-models": "node tools/lint-models.mjs",
|
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
"$id": "https://gezelgilde.com/schemas/chat-model-identity.schema.json",
|
|
4
4
|
"type": "object",
|
|
5
5
|
"properties": {
|
|
6
|
+
"minGezelVersion": {
|
|
7
|
+
"type": "string"
|
|
8
|
+
},
|
|
6
9
|
"schemaVersion": {
|
|
7
10
|
"type": "number",
|
|
8
11
|
"const": 1
|
|
@@ -129,6 +132,7 @@
|
|
|
129
132
|
"phi",
|
|
130
133
|
"nemotron",
|
|
131
134
|
"glm",
|
|
135
|
+
"muse",
|
|
132
136
|
"other"
|
|
133
137
|
]
|
|
134
138
|
},
|
|
@@ -436,6 +440,26 @@
|
|
|
436
440
|
"enableThinking": {
|
|
437
441
|
"description": "Chat-template toggle for dual-mode models (Qwen3+, Nemotron Nano/Super). Implicit on cloud thinking models.",
|
|
438
442
|
"type": "boolean"
|
|
443
|
+
},
|
|
444
|
+
"templateKwargs": {
|
|
445
|
+
"description": "Chat-template variables that drive this model's reasoning depth, forwarded verbatim as `chat_template_kwargs` on local engines. The names are the model's own — GPT-OSS reads `reasoning_effort`, Muse Glimmer reads `reasoning_strength` (low|medium|high|xhigh) — so the manifest declares them rather than the runtime guessing. Lives under `reasoning` (not `engine`) because depth is a per-request choice a tuning profile overrides: `thinking-coding` can ask for xhigh while `instruct` asks for low. Cloud providers ignore it; use `reasoning.effort` there.",
|
|
446
|
+
"type": "object",
|
|
447
|
+
"propertyNames": {
|
|
448
|
+
"type": "string"
|
|
449
|
+
},
|
|
450
|
+
"additionalProperties": {
|
|
451
|
+
"anyOf": [
|
|
452
|
+
{
|
|
453
|
+
"type": "string"
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
"type": "number"
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
"type": "boolean"
|
|
460
|
+
}
|
|
461
|
+
]
|
|
462
|
+
}
|
|
439
463
|
}
|
|
440
464
|
},
|
|
441
465
|
"description": "Reasoning controls."
|
|
@@ -858,6 +882,26 @@
|
|
|
858
882
|
"enableThinking": {
|
|
859
883
|
"description": "Chat-template toggle for dual-mode models (Qwen3+, Nemotron Nano/Super). Implicit on cloud thinking models.",
|
|
860
884
|
"type": "boolean"
|
|
885
|
+
},
|
|
886
|
+
"templateKwargs": {
|
|
887
|
+
"description": "Chat-template variables that drive this model's reasoning depth, forwarded verbatim as `chat_template_kwargs` on local engines. The names are the model's own — GPT-OSS reads `reasoning_effort`, Muse Glimmer reads `reasoning_strength` (low|medium|high|xhigh) — so the manifest declares them rather than the runtime guessing. Lives under `reasoning` (not `engine`) because depth is a per-request choice a tuning profile overrides: `thinking-coding` can ask for xhigh while `instruct` asks for low. Cloud providers ignore it; use `reasoning.effort` there.",
|
|
888
|
+
"type": "object",
|
|
889
|
+
"propertyNames": {
|
|
890
|
+
"type": "string"
|
|
891
|
+
},
|
|
892
|
+
"additionalProperties": {
|
|
893
|
+
"anyOf": [
|
|
894
|
+
{
|
|
895
|
+
"type": "string"
|
|
896
|
+
},
|
|
897
|
+
{
|
|
898
|
+
"type": "number"
|
|
899
|
+
},
|
|
900
|
+
{
|
|
901
|
+
"type": "boolean"
|
|
902
|
+
}
|
|
903
|
+
]
|
|
904
|
+
}
|
|
861
905
|
}
|
|
862
906
|
},
|
|
863
907
|
"description": "Reasoning controls."
|