@bendyline/gilde 0.1.4 → 0.1.5
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 +1 -0
- package/data/chat-models/de/deepseek-v4-flash-284b-q2/manifest.json +4 -3
- package/data/chat-models/de/deepseek-v4-flash-284b-q4/manifest.json +4 -3
- package/data/chat-models/ge/gemma4-12b-q4/manifest.json +20 -11
- package/data/chat-models/ge/gemma4-12b-q4/versions/1.1.0/manifest.json +2 -8
- package/data/chat-models/ge/gemma4-12b-q4/versions/1.1.2/manifest.json +78 -0
- package/data/chat-models/ge/gemma4-12b-q8/manifest.json +23 -14
- package/data/chat-models/ge/gemma4-12b-q8/versions/1.0.0/manifest.json +2 -8
- package/data/chat-models/ge/gemma4-12b-q8/versions/1.0.2/manifest.json +78 -0
- package/data/chat-models/ge/gemma4-26b-q4/manifest.json +55 -46
- package/data/chat-models/ge/gemma4-26b-q4/versions/1.2.0/manifest.json +2 -8
- package/data/chat-models/ge/gemma4-26b-q4/versions/1.2.1/manifest.json +81 -0
- package/data/chat-models/ge/gemma4-31b-q4/manifest.json +36 -28
- package/data/chat-models/ge/gemma4-31b-q4/versions/1.2.0/manifest.json +2 -8
- package/data/chat-models/ge/gemma4-31b-q4/versions/1.2.1/manifest.json +87 -0
- package/data/chat-models/ge/gemma4-e2b-q8/manifest.json +76 -69
- package/data/chat-models/ge/gemma4-e2b-q8/versions/1.1.0/manifest.json +2 -8
- package/data/chat-models/ge/gemma4-e2b-q8/versions/1.1.2/manifest.json +71 -0
- package/data/chat-models/ge/gemma4-e4b-q8/manifest.json +71 -78
- package/data/chat-models/ge/gemma4-e4b-q8/versions/1.1.0/manifest.json +3 -9
- package/data/chat-models/ge/gemma4-e4b-q8/versions/1.1.2/manifest.json +71 -0
- package/data/chat-models/index.json +1 -1
- package/data/chat-models/la/laguna-s-2.1-118b-q4/manifest.json +17 -17
- package/data/chat-models/la/laguna-s-2.1-118b-q4/versions/1.0.1/manifest.json +124 -0
- package/data/chat-models/la/laguna-s-2.1-118b-q8/manifest.json +7 -7
- package/data/chat-models/la/laguna-s-2.1-118b-q8/versions/1.0.1/manifest.json +174 -0
- package/data/chat-models/mi/mistral-medium-3.5-128b-q4/manifest.json +4 -17
- package/data/chat-models/mi/mistral-medium-3.5-128b-q4/versions/1.0.0/manifest.json +2 -12
- package/data/chat-models/ne/nemotron3-nano-30b-q4/manifest.json +5 -0
- package/data/chat-models/qw/qwen3.5-122b-a10b-q4/manifest.json +27 -19
- package/data/chat-models/qw/qwen3.5-122b-a10b-q4/versions/1.0.1/manifest.json +164 -0
- package/data/chat-models/qw/qwen3.5-2b-q4/manifest.json +79 -77
- package/data/chat-models/qw/qwen3.5-2b-q4/versions/1.1.0/manifest.json +2 -8
- package/data/chat-models/qw/qwen3.5-2b-q4/versions/1.1.2/manifest.json +76 -0
- package/data/chat-models/qw/qwen3.5-4b-q4/manifest.json +79 -77
- package/data/chat-models/qw/qwen3.5-4b-q4/versions/1.1.0/manifest.json +2 -8
- package/data/chat-models/qw/qwen3.5-4b-q4/versions/1.1.2/manifest.json +76 -0
- package/data/chat-models/qw/qwen3.5-9b-q4/manifest.json +87 -85
- package/data/chat-models/qw/qwen3.5-9b-q4/versions/1.1.0/manifest.json +2 -8
- package/data/chat-models/qw/qwen3.5-9b-q4/versions/1.1.2/manifest.json +81 -0
- package/data/chat-models/qw/qwen3.6-27b-q4/manifest.json +99 -97
- package/data/chat-models/qw/qwen3.6-27b-q4/versions/1.1.0/manifest.json +2 -8
- package/data/chat-models/qw/qwen3.6-27b-q4/versions/1.1.4/manifest.json +91 -0
- package/data/chat-models/qw/qwen3.6-27b-q8/manifest.json +16 -12
- package/data/chat-models/qw/qwen3.6-27b-q8/versions/1.0.0/manifest.json +2 -8
- package/data/chat-models/qw/qwen3.6-27b-q8/versions/1.0.2/manifest.json +103 -0
- package/data/chat-models/qw/qwen3.6-35b-a3b-q4/manifest.json +18 -14
- package/data/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.0/manifest.json +2 -8
- package/data/chat-models/qw/qwen3.6-35b-a3b-q4/versions/1.0.1/manifest.json +93 -0
- package/data/chat-models/qw/qwen3.6-35b-a3b-q8/manifest.json +16 -12
- package/data/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.0/manifest.json +2 -8
- package/data/chat-models/qw/qwen3.6-35b-a3b-q8/versions/1.0.1/manifest.json +113 -0
- package/data/craftbook-templates/bu/bug-fix-tdd/versions/1.0.1/test.json +0 -5
- package/data/craftbook-templates/bu/build-loop/versions/1.1.0/craftbook.json +65 -0
- package/data/craftbook-templates/bu/build-loop/versions/1.1.0/test.json +121 -0
- package/data/craftbook-templates/ch/character-sheet/versions/1.0.0/test.json +1 -2
- package/data/craftbook-templates/ch/character-turnaround/versions/1.0.0/test.json +1 -2
- package/data/craftbook-templates/cl/cli-tool/versions/1.1.0/craftbook.json +139 -0
- package/data/craftbook-templates/cl/cli-tool/versions/1.1.0/test.json +128 -0
- package/data/craftbook-templates/cr/crossword-forge/manifest.json +1 -2
- package/data/craftbook-templates/de/deep-security-review/versions/1.1.0/craftbook.json +201 -0
- package/data/craftbook-templates/de/deep-security-review/versions/1.1.0/test.json +157 -0
- package/data/craftbook-templates/do/dockerize-app/versions/1.0.0/test.json +0 -5
- package/data/craftbook-templates/fr/freeze-scope/manifest.json +1 -2
- package/data/craftbook-templates/fr/freeze-scope/versions/{1.0.1 → 1.1.0}/craftbook.json +5 -17
- package/data/craftbook-templates/gr/graphql-api/versions/1.0.1/test.json +0 -5
- package/data/craftbook-templates/gr/grpc-service/versions/1.0.0/test.json +0 -5
- package/data/craftbook-templates/ho/hotfix-flow/versions/1.0.0/test.json +0 -5
- package/data/craftbook-templates/in/investigate/versions/1.1.0/craftbook.json +81 -0
- package/data/craftbook-templates/in/investigate/versions/1.1.0/test.json +122 -0
- package/data/craftbook-templates/in/invoice-run/manifest.json +1 -2
- package/data/craftbook-templates/in/invoice-run/versions/{1.0.1 → 1.1.0}/craftbook.json +4 -4
- package/data/craftbook-templates/index.json +1 -1
- package/data/craftbook-templates/li/library-package/versions/1.0.0/test.json +0 -5
- package/data/craftbook-templates/me/memory-prompt-session/manifest.json +1 -2
- package/data/craftbook-templates/me/message-queue-consumer/versions/1.0.0/test.json +0 -5
- package/data/craftbook-templates/of/office-hours/versions/1.1.0/craftbook.json +48 -0
- package/data/craftbook-templates/of/office-hours/versions/1.1.0/test.json +118 -0
- package/data/craftbook-templates/pa/page-spread/manifest.json +1 -2
- package/data/craftbook-templates/pa/parser-grammar/versions/1.0.0/test.json +0 -5
- package/data/craftbook-templates/pe/perf-optimization/versions/1.0.0/test.json +0 -5
- package/data/craftbook-templates/pl/plan/manifest.json +1 -2
- package/data/craftbook-templates/po/powerpoint-deck/versions/1.1.0/craftbook.json +128 -0
- package/data/craftbook-templates/{ro/root-cause-investigation/versions/1.0.1 → po/powerpoint-deck/versions/1.1.0}/test.json +6 -6
- package/data/craftbook-templates/pu/pull-request-review/versions/1.1.0/craftbook.json +118 -0
- package/data/craftbook-templates/pu/pull-request-review/versions/1.1.0/test.json +160 -0
- package/data/craftbook-templates/re/refactor-module/versions/1.0.1/test.json +0 -5
- package/data/craftbook-templates/re/regex-builder/versions/1.0.0/test.json +0 -5
- package/data/craftbook-templates/re/research-to-document/versions/1.1.0/craftbook.json +158 -0
- package/data/craftbook-templates/re/research-to-document/versions/1.1.0/test.json +97 -0
- package/data/craftbook-templates/ro/root-cause-investigation/manifest.json +1 -2
- package/data/craftbook-templates/sd/sdk-wrapper/versions/1.0.1/test.json +0 -5
- package/data/craftbook-templates/se/security-architecture-review/versions/1.1.0/craftbook.json +28 -0
- package/data/craftbook-templates/{te/technical-documentation/versions/1.0.1 → se/security-architecture-review/versions/1.1.0}/test.json +7 -7
- package/data/craftbook-templates/sh/ship/versions/1.1.0/craftbook.json +137 -0
- package/data/craftbook-templates/sh/ship/versions/1.1.0/test.json +225 -0
- package/data/craftbook-templates/st/state-machine/versions/1.0.0/test.json +0 -5
- package/data/craftbook-templates/te/technical-documentation/manifest.json +1 -2
- package/data/craftbook-templates/te/test-suite-backfill/versions/1.0.0/test.json +0 -5
- package/data/craftbook-templates/ti/tileset-batch/versions/1.0.0/test.json +1 -2
- package/data/craftbook-templates/ty/type-safety-pass/versions/1.0.0/test.json +0 -5
- package/data/craftbook-templates/ve/version-bump/versions/1.0.0/test.json +0 -5
- package/data/gezel-templates/ch/chess-player/manifest.json +20 -0
- package/data/gezel-templates/ch/chess-player/versions/1.0.0/about.md +21 -0
- package/data/gezel-templates/ch/chess-player/versions/1.0.0/manifest.json +10 -0
- package/data/gezel-templates/go/go-player/manifest.json +22 -0
- package/data/gezel-templates/go/go-player/versions/1.0.0/about.md +22 -0
- package/data/gezel-templates/go/go-player/versions/1.0.0/manifest.json +10 -0
- package/data/gezel-templates/index.json +1 -1
- package/data/project-types/ch/chess/manifest.json +20 -0
- package/data/project-types/ch/chess/versions/1.0.0/about.md +9 -0
- package/data/project-types/ch/chess/versions/1.0.0/game.json +127 -0
- package/data/project-types/ch/chess/versions/1.0.0/manifest.json +180 -0
- package/data/project-types/ch/chess/versions/1.0.0/mission.md +8 -0
- package/data/project-types/ch/chess/versions/1.0.0/pages/board/index.html +574 -0
- package/data/project-types/go/go/manifest.json +22 -0
- package/data/project-types/go/go/versions/1.0.0/about.md +9 -0
- package/data/project-types/go/go/versions/1.0.0/game.json +103 -0
- package/data/project-types/go/go/versions/1.0.0/manifest.json +166 -0
- package/data/project-types/go/go/versions/1.0.0/mission.md +8 -0
- package/data/project-types/go/go/versions/1.0.0/pages/board/index.html +637 -0
- package/data/project-types/index.json +1 -1
- package/package.json +2 -1
- package/schemas/chat-model-version.schema.json +22 -0
- package/schemas/craftbook-doc.schema.json +12 -0
- package/schemas/craftbook-template-version.schema.json +12 -0
- package/schemas/craftbook-test.schema.json +12 -0
- package/data/chat-models/gl/glm-5.2-754b-q2/manifest.json +0 -66
- package/data/chat-models/gl/glm-5.2-754b-q2/versions/1.0.0/manifest.json +0 -18
- package/data/craftbook-templates/cr/crossword-forge/versions/1.0.1/craftbook.json +0 -147
- package/data/craftbook-templates/cr/crossword-forge/versions/1.0.1/test.json +0 -135
- package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.1/craftbook.json +0 -116
- package/data/craftbook-templates/me/memory-prompt-session/versions/1.0.1/test.json +0 -112
- package/data/craftbook-templates/pa/page-spread/versions/1.0.1/craftbook.json +0 -94
- package/data/craftbook-templates/pa/page-spread/versions/1.0.1/test.json +0 -133
- package/data/craftbook-templates/pl/plan/versions/1.0.1/craftbook.json +0 -104
- package/data/craftbook-templates/pl/plan/versions/1.0.1/test.json +0 -91
- package/data/craftbook-templates/ro/root-cause-investigation/versions/1.0.1/craftbook.json +0 -126
- package/data/craftbook-templates/te/technical-documentation/versions/1.0.1/craftbook.json +0 -152
- /package/data/craftbook-templates/fr/freeze-scope/versions/{1.0.1 → 1.1.0}/test.json +0 -0
- /package/data/craftbook-templates/in/invoice-run/versions/{1.0.1 → 1.1.0}/test.json +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bendyline/gilde",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "The gilde catalog: model manifests, toolsets, craftbooks, roles, and project types for gezel.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"./schemas/*": "./schemas/*"
|
|
25
25
|
},
|
|
26
26
|
"scripts": {
|
|
27
|
+
"check": "npm run validate && npm run check-index && npm run lint-models",
|
|
27
28
|
"validate": "npm --prefix tools ci --silent && node tools/validate.mjs",
|
|
28
29
|
"build-index": "node tools/build-index.mjs",
|
|
29
30
|
"check-index": "node tools/build-index.mjs --check",
|
|
@@ -107,6 +107,28 @@
|
|
|
107
107
|
"sha256",
|
|
108
108
|
"sizeBytes"
|
|
109
109
|
]
|
|
110
|
+
},
|
|
111
|
+
"draftModel": {
|
|
112
|
+
"type": "object",
|
|
113
|
+
"properties": {
|
|
114
|
+
"filename": {
|
|
115
|
+
"type": "string"
|
|
116
|
+
},
|
|
117
|
+
"sha256": {
|
|
118
|
+
"type": "string",
|
|
119
|
+
"pattern": "^[a-f0-9]{64}$"
|
|
120
|
+
},
|
|
121
|
+
"sizeBytes": {
|
|
122
|
+
"type": "integer",
|
|
123
|
+
"exclusiveMinimum": 0,
|
|
124
|
+
"maximum": 9007199254740991
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
"required": [
|
|
128
|
+
"filename",
|
|
129
|
+
"sha256",
|
|
130
|
+
"sizeBytes"
|
|
131
|
+
]
|
|
110
132
|
}
|
|
111
133
|
},
|
|
112
134
|
"required": [
|
|
@@ -1117,6 +1117,9 @@
|
|
|
1117
1117
|
},
|
|
1118
1118
|
"dir": {
|
|
1119
1119
|
"type": "string"
|
|
1120
|
+
},
|
|
1121
|
+
"verifyImageBytes": {
|
|
1122
|
+
"type": "boolean"
|
|
1120
1123
|
}
|
|
1121
1124
|
},
|
|
1122
1125
|
"required": [
|
|
@@ -1914,6 +1917,9 @@
|
|
|
1914
1917
|
},
|
|
1915
1918
|
"dir": {
|
|
1916
1919
|
"type": "string"
|
|
1920
|
+
},
|
|
1921
|
+
"verifyImageBytes": {
|
|
1922
|
+
"type": "boolean"
|
|
1917
1923
|
}
|
|
1918
1924
|
},
|
|
1919
1925
|
"required": [
|
|
@@ -3616,6 +3622,9 @@
|
|
|
3616
3622
|
},
|
|
3617
3623
|
"dir": {
|
|
3618
3624
|
"type": "string"
|
|
3625
|
+
},
|
|
3626
|
+
"verifyImageBytes": {
|
|
3627
|
+
"type": "boolean"
|
|
3619
3628
|
}
|
|
3620
3629
|
},
|
|
3621
3630
|
"required": [
|
|
@@ -4413,6 +4422,9 @@
|
|
|
4413
4422
|
},
|
|
4414
4423
|
"dir": {
|
|
4415
4424
|
"type": "string"
|
|
4425
|
+
},
|
|
4426
|
+
"verifyImageBytes": {
|
|
4427
|
+
"type": "boolean"
|
|
4416
4428
|
}
|
|
4417
4429
|
},
|
|
4418
4430
|
"required": [
|
|
@@ -810,6 +810,9 @@
|
|
|
810
810
|
},
|
|
811
811
|
"dir": {
|
|
812
812
|
"type": "string"
|
|
813
|
+
},
|
|
814
|
+
"verifyImageBytes": {
|
|
815
|
+
"type": "boolean"
|
|
813
816
|
}
|
|
814
817
|
},
|
|
815
818
|
"required": [
|
|
@@ -1607,6 +1610,9 @@
|
|
|
1607
1610
|
},
|
|
1608
1611
|
"dir": {
|
|
1609
1612
|
"type": "string"
|
|
1613
|
+
},
|
|
1614
|
+
"verifyImageBytes": {
|
|
1615
|
+
"type": "boolean"
|
|
1610
1616
|
}
|
|
1611
1617
|
},
|
|
1612
1618
|
"required": [
|
|
@@ -3303,6 +3309,9 @@
|
|
|
3303
3309
|
},
|
|
3304
3310
|
"dir": {
|
|
3305
3311
|
"type": "string"
|
|
3312
|
+
},
|
|
3313
|
+
"verifyImageBytes": {
|
|
3314
|
+
"type": "boolean"
|
|
3306
3315
|
}
|
|
3307
3316
|
},
|
|
3308
3317
|
"required": [
|
|
@@ -4100,6 +4109,9 @@
|
|
|
4100
4109
|
},
|
|
4101
4110
|
"dir": {
|
|
4102
4111
|
"type": "string"
|
|
4112
|
+
},
|
|
4113
|
+
"verifyImageBytes": {
|
|
4114
|
+
"type": "boolean"
|
|
4103
4115
|
}
|
|
4104
4116
|
},
|
|
4105
4117
|
"required": [
|
|
@@ -444,6 +444,9 @@
|
|
|
444
444
|
},
|
|
445
445
|
"dir": {
|
|
446
446
|
"type": "string"
|
|
447
|
+
},
|
|
448
|
+
"verifyImageBytes": {
|
|
449
|
+
"type": "boolean"
|
|
447
450
|
}
|
|
448
451
|
},
|
|
449
452
|
"required": [
|
|
@@ -1293,6 +1296,9 @@
|
|
|
1293
1296
|
},
|
|
1294
1297
|
"dir": {
|
|
1295
1298
|
"type": "string"
|
|
1299
|
+
},
|
|
1300
|
+
"verifyImageBytes": {
|
|
1301
|
+
"type": "boolean"
|
|
1296
1302
|
}
|
|
1297
1303
|
},
|
|
1298
1304
|
"required": [
|
|
@@ -2142,6 +2148,9 @@
|
|
|
2142
2148
|
},
|
|
2143
2149
|
"dir": {
|
|
2144
2150
|
"type": "string"
|
|
2151
|
+
},
|
|
2152
|
+
"verifyImageBytes": {
|
|
2153
|
+
"type": "boolean"
|
|
2145
2154
|
}
|
|
2146
2155
|
},
|
|
2147
2156
|
"required": [
|
|
@@ -2992,6 +3001,9 @@
|
|
|
2992
3001
|
},
|
|
2993
3002
|
"dir": {
|
|
2994
3003
|
"type": "string"
|
|
3004
|
+
},
|
|
3005
|
+
"verifyImageBytes": {
|
|
3006
|
+
"type": "boolean"
|
|
2995
3007
|
}
|
|
2996
3008
|
},
|
|
2997
3009
|
"required": [
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schemaVersion": 1,
|
|
3
|
-
"kind": "chat-model",
|
|
4
|
-
"id": "glm-5.2-754b-q2",
|
|
5
|
-
"name": "GLM 5.2 (IQ2_XXS)",
|
|
6
|
-
"description": "antirez's routed 2-bit community GGUF of Z.ai's GLM 5.2 — a 754B-parameter Mixture-of-Experts (256 experts, 8 active per token, ~40B active) with a 1M-token context and DeepSeek-style sparse attention. The routed experts are crushed to IQ2_XXS (block 78 in Q2_K) while attention, the shared expert, embeddings, and the output head stay at Q8-class precision, landing the file at ~197 GB. Only ~20 GB of that is non-routed weight that must stay resident: DwarfStar streams the remaining ~177 GB of experts from SSD, so it runs on a 128 GB machine — but it is a very large download and a slow first turn. Built for antirez's `ds4` engine; these quants do not load on stock llama.cpp.",
|
|
7
|
-
"tags": [
|
|
8
|
-
"glm",
|
|
9
|
-
"reasoning",
|
|
10
|
-
"moe",
|
|
11
|
-
"tools",
|
|
12
|
-
"2-bit",
|
|
13
|
-
"iq2",
|
|
14
|
-
"long-context",
|
|
15
|
-
"large"
|
|
16
|
-
],
|
|
17
|
-
"category": "reasoning",
|
|
18
|
-
"maintainer": {
|
|
19
|
-
"name": "antirez",
|
|
20
|
-
"url": "https://huggingface.co/antirez/glm-5.2-gguf"
|
|
21
|
-
},
|
|
22
|
-
"version": "1.0.0",
|
|
23
|
-
"updatedAt": "2026-07-25T00:00:00Z",
|
|
24
|
-
"license": "MIT",
|
|
25
|
-
"parameterSize": "754B",
|
|
26
|
-
"approxSizeBytes": 211075856448,
|
|
27
|
-
"supportsTools": true,
|
|
28
|
-
"contextWindow": 1048576,
|
|
29
|
-
"upstream": "https://huggingface.co/zai-org/GLM-5.2",
|
|
30
|
-
"style": {
|
|
31
|
-
"family": "glm",
|
|
32
|
-
"reasoningFormat": "think",
|
|
33
|
-
"toolCallFormat": "function-call"
|
|
34
|
-
},
|
|
35
|
-
"behaviors": [
|
|
36
|
-
"reasoning.strip-think-tags",
|
|
37
|
-
"prompt.private-reasoning-guidance",
|
|
38
|
-
"prompt.tool-cookbook-condensed",
|
|
39
|
-
"mcp.compact-tool-schemas",
|
|
40
|
-
"fabrication.detect-past-tense-no-tools",
|
|
41
|
-
"turn.preamble-folding"
|
|
42
|
-
],
|
|
43
|
-
"tuning": {
|
|
44
|
-
"sampling": {
|
|
45
|
-
"temperature": 1,
|
|
46
|
-
"topP": 0.95,
|
|
47
|
-
"maxTokens": 16384
|
|
48
|
-
},
|
|
49
|
-
"reasoning": {
|
|
50
|
-
"enableThinking": true,
|
|
51
|
-
"thinkingBudget": 4096
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
"ds4": {
|
|
55
|
-
"huggingfaceRepo": "antirez/glm-5.2-gguf",
|
|
56
|
-
"revision": "2638b3b878f5c6cc3ae7334b8dbea1275025f52e",
|
|
57
|
-
"filename": "GLM-5.2-UD-IQ2_XXS_RoutedIQ2XXS_blk78Q2K.gguf",
|
|
58
|
-
"sha256": "a49de64c5020432bdae23de36a423a9660a5621bc0db8d12b66bd8814b07fea0",
|
|
59
|
-
"approxSizeBytes": 211075856448,
|
|
60
|
-
"quantization": "IQ2_XXS",
|
|
61
|
-
"residentBytes": 61363217408,
|
|
62
|
-
"cacheExpertsBytes": 34359738368,
|
|
63
|
-
"ssdStreaming": true,
|
|
64
|
-
"maxLaunchCtx": 65536
|
|
65
|
-
}
|
|
66
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schemaVersion": 1,
|
|
3
|
-
"version": "1.0.0",
|
|
4
|
-
"releasedAt": "2026-07-25T00:00:00Z",
|
|
5
|
-
"approxSizeBytes": 211075856448,
|
|
6
|
-
"ds4": {
|
|
7
|
-
"huggingfaceRepo": "antirez/glm-5.2-gguf",
|
|
8
|
-
"revision": "2638b3b878f5c6cc3ae7334b8dbea1275025f52e",
|
|
9
|
-
"filename": "GLM-5.2-UD-IQ2_XXS_RoutedIQ2XXS_blk78Q2K.gguf",
|
|
10
|
-
"sha256": "a49de64c5020432bdae23de36a423a9660a5621bc0db8d12b66bd8814b07fea0",
|
|
11
|
-
"approxSizeBytes": 211075856448,
|
|
12
|
-
"quantization": "IQ2_XXS",
|
|
13
|
-
"residentBytes": 61363217408,
|
|
14
|
-
"cacheExpertsBytes": 34359738368,
|
|
15
|
-
"ssdStreaming": true,
|
|
16
|
-
"maxLaunchCtx": 65536
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "crossword-forge",
|
|
3
|
-
"name": "Forge a Crossword",
|
|
4
|
-
"description": "Construct a personalized crossword and prove it works before anyone's pencil touches it: the grid actually interlocks, every entry sits in the grid exactly where its number says, every clue is tuned to the solver — and the whole thing ships as a printable page with the solution kept decently out of sight. Locks the theme and the word list FIRST, then constructs the mechanically-verified grid, then renders the printable puzzle. Use for making a crossword, a personalized puzzle for the family, 'a crossword with the grandkids' names in it', and printable puzzle gifts.\n\nA gallery craftbook generated from an archetype spec. It runs\n`phase → (per-phase gate) → … → evaluate → (loop) → finish`. Each build\nphase that produces a checkable artifact is followed by a **runtime\ngate-checkpoint** — the runtime verifies the artifact and routes with no\nmodel turn, looping back to redo the phase on a miss. The final `evaluate`\nstep holds a static deliverable gate plus a reviewer QA pass. What it adds\nover the generic `build-loop`: a specialist role per phase, a\ndomain-correct ordering, and a concrete per-phase quality bar.\n\nPhases:\n\n1. Scope the puzzle (puzzle-maker) — theme and word list from the personal material, construction rules → gated on `notes/scope.md` (markdown-notes)\n2. Construct the grid (developer) — verified puzzle data — grid, entries, clues → gated on `puzzle.json` (json)\n3. Render the printable page (developer) — printable grid and clues, solution out of sight, shelf copy filed → gated on `puzzle.html` (html-page)\n\nThe gates never advance with an unmet criterion, and loop back to the\nowning phase to fix named gaps.\n",
|
|
5
|
-
"entryStepId": "scope",
|
|
6
|
-
"triggers": [
|
|
7
|
-
"make a crossword",
|
|
8
|
-
"crossword for the family",
|
|
9
|
-
"personalized crossword puzzle",
|
|
10
|
-
"forge a crossword",
|
|
11
|
-
"printable crossword"
|
|
12
|
-
],
|
|
13
|
-
"steps": [
|
|
14
|
-
{
|
|
15
|
-
"id": "scope",
|
|
16
|
-
"name": "Scope the puzzle",
|
|
17
|
-
"description": "theme and word list from the personal material, construction rules",
|
|
18
|
-
"prompt": "Set the build before placing a letter. Step 1: gather the personal material — the task's params (theme, names, size) and any notes in the workspace about the solvers: names, places, pets, running jokes. Step 2: draft the word list — the personal entries first, filler words only where the grid needs them to interlock, everything spellable in plain uppercase letters. Step 3: lock the construction rules — grid size from the size param (small about 9x9, medium about 13x13, large about 15x15), every entry placed in the grid and crossing at least one other entry, no entry without a clue, clue difficulty tuned to the solvers. Step 4: write an acceptance-criteria checklist ('every entry reads out of the grid at its stated coordinates', 'every crossing agrees letter for letter', 'every entry has a clue at the target difficulty', 'the personal words made it into the grid', 'the rendered page prints cleanly with the solution out of casual sight'). Call write_task_note with the theme + word count + checklist and write notes/scope.md.",
|
|
19
|
-
"suggestedRole": "puzzle-maker",
|
|
20
|
-
"advanceWhen": {
|
|
21
|
-
"file": "notes/scope.md",
|
|
22
|
-
"minBytes": 1,
|
|
23
|
-
"sniff": "nonempty"
|
|
24
|
-
},
|
|
25
|
-
"gate": {
|
|
26
|
-
"at": "completion",
|
|
27
|
-
"checks": [
|
|
28
|
-
{
|
|
29
|
-
"kind": "minBytes",
|
|
30
|
-
"file": "notes/scope.md",
|
|
31
|
-
"bytes": 120
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"kind": "sniff",
|
|
35
|
-
"file": "notes/scope.md",
|
|
36
|
-
"sniff": "nonempty"
|
|
37
|
-
}
|
|
38
|
-
],
|
|
39
|
-
"onReject": "scope",
|
|
40
|
-
"maxAttempts": 3
|
|
41
|
-
},
|
|
42
|
-
"next": "construct"
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"id": "construct",
|
|
46
|
-
"name": "Construct the grid",
|
|
47
|
-
"description": "verified puzzle data — grid, entries, clues",
|
|
48
|
-
"prompt": "Construct the puzzle as data at puzzle.json. Step 1: build the grid — uppercase letters in filled cells, '.' for blocks — placing every word from the locked list so the entries interlock. Step 2: write it as JSON with this exact shape: { \"title\": ..., \"size\": { \"rows\": N, \"cols\": N }, \"grid\": [ one string per row ], \"entries\": [ { \"number\", \"answer\", \"row\", \"col\", \"direction\": \"across\" or \"down\", \"clue\" } ] } — rows and columns zero-indexed from the top-left. Step 3: **verify mechanically, not mentally.** Reading a grid cell-by-cell in your head does not work at this size — every constructive puzzle needs a checker. If the project already has one (look under `checks/`), run it with `run_nodejs_script`. If it does not, write one first: a short dependency-free Node script at `checks/verify-puzzle.mjs` that loads puzzle.json, walks every entry, reads its letters out of the grid at its row/col in its direction, and prints the exact mismatches (entry number, expected answer, what the grid actually spells) — then `PUZZLE OK` when all entries agree. Run it, fix exactly what it names, and run it again until it is clean. Do not complete this step on an unverified grid: the gate re-checks this the same way and will name any entry that lies. Step 4: write the clues into the entries — personal entries clued with the in-jokes, fillers clued honestly at the target difficulty. Call write_task_note with the grid size, the entry count, and the checker's final output.",
|
|
49
|
-
"suggestedRole": "developer",
|
|
50
|
-
"advanceWhen": {
|
|
51
|
-
"file": "puzzle.json",
|
|
52
|
-
"minBytes": 1,
|
|
53
|
-
"sniff": "json-valid"
|
|
54
|
-
},
|
|
55
|
-
"gate": {
|
|
56
|
-
"at": "completion",
|
|
57
|
-
"checks": [
|
|
58
|
-
{
|
|
59
|
-
"kind": "minBytes",
|
|
60
|
-
"file": "puzzle.json",
|
|
61
|
-
"bytes": 400
|
|
62
|
-
}
|
|
63
|
-
],
|
|
64
|
-
"scripts": [
|
|
65
|
-
{
|
|
66
|
-
"name": "checkJsonValid",
|
|
67
|
-
"scope": "standard",
|
|
68
|
-
"inputs": {
|
|
69
|
-
"file": "puzzle.json"
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
],
|
|
73
|
-
"onReject": "construct",
|
|
74
|
-
"maxAttempts": 3
|
|
75
|
-
},
|
|
76
|
-
"next": "render"
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
"id": "render",
|
|
80
|
-
"name": "Render the printable page",
|
|
81
|
-
"description": "printable grid and clues, solution out of sight, shelf copy filed",
|
|
82
|
-
"prompt": "Render the playable, printable page at puzzle.html. Step 1: draw the empty numbered grid from puzzle.json — blocks and cell numbers exactly as the data has them — beside the across and down clue lists. Step 2: make it print-ready — an @page rule, print styles, the grid sized so a pencil fits in the squares. Step 3: keep the solution out of casual sight — behind a toggle on screen and on its own page in print, never beside the blank grid. Step 4: any script on the page must actually run — check it before completing. Step 5: file a dated copy of puzzle.json and puzzle.html into the puzzles/ shelf named for the theme, so the pack-layout ritual can find them later. Call write_task_note with the page path and the shelf copies.",
|
|
83
|
-
"suggestedRole": "developer",
|
|
84
|
-
"advanceWhen": {
|
|
85
|
-
"file": "puzzle.html",
|
|
86
|
-
"minBytes": 1,
|
|
87
|
-
"sniff": "html-complete"
|
|
88
|
-
},
|
|
89
|
-
"gate": {
|
|
90
|
-
"at": "completion",
|
|
91
|
-
"checks": [
|
|
92
|
-
{
|
|
93
|
-
"kind": "minBytes",
|
|
94
|
-
"file": "puzzle.html",
|
|
95
|
-
"bytes": 800
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
"kind": "cssMinBytes",
|
|
99
|
-
"bytes": 650,
|
|
100
|
-
"file": "puzzle.html"
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
"kind": "contains",
|
|
104
|
-
"file": "puzzle.html",
|
|
105
|
-
"pattern": "@page|@media\\s+print",
|
|
106
|
-
"flags": "i",
|
|
107
|
-
"label": "print CSS"
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
"kind": "jsParses",
|
|
111
|
-
"file": "puzzle.html"
|
|
112
|
-
}
|
|
113
|
-
],
|
|
114
|
-
"scripts": [
|
|
115
|
-
{
|
|
116
|
-
"name": "checkHtmlComplete",
|
|
117
|
-
"scope": "standard",
|
|
118
|
-
"inputs": {
|
|
119
|
-
"file": "puzzle.html"
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
],
|
|
123
|
-
"onReject": "render",
|
|
124
|
-
"maxAttempts": 4
|
|
125
|
-
},
|
|
126
|
-
"next": "evaluate"
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
"id": "evaluate",
|
|
130
|
-
"name": "Evaluate",
|
|
131
|
-
"description": "Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.",
|
|
132
|
-
"prompt": "Open puzzle.json and puzzle.html and verify every criterion from notes/scope.md: read three entries out of the grid by their coordinates and confirm each matches its answer, check one crossing square agrees in both directions, confirm every entry has a clue and the personal words from the scope made it in, and check the rendered page — the grid matches the data, the clue numbers line up, and the solution stays out of sight on screen and in print. Write PASS/FAIL per criterion; on any failure, name the entry or cell and loop back to construct.\n\nThen route — this is the whole point of the loop:\n\n- **Every criterion PASSES →** call `advance_task_step({ ref, stepId: \"evaluate\", next: \"finish\" })`.\n- **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: \"evaluate\", next: \"construct\" })` to loop back. The builder fixes exactly those gaps.\n\nNever route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in.",
|
|
133
|
-
"suggestedRole": "reviewer",
|
|
134
|
-
"next": "construct"
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
"id": "finish",
|
|
138
|
-
"name": "Finish",
|
|
139
|
-
"description": "All acceptance criteria met. Stamp a short summary and report DONE.",
|
|
140
|
-
"prompt": "Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.",
|
|
141
|
-
"suggestedRole": "developer",
|
|
142
|
-
"terminal": true
|
|
143
|
-
}
|
|
144
|
-
],
|
|
145
|
-
"version": "1.0.1",
|
|
146
|
-
"releasedAt": "2026-07-26T01:30:00.000Z"
|
|
147
|
-
}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schemaVersion": 1,
|
|
3
|
-
"title": "Forge a Crossword — personal words to a verified printable grid",
|
|
4
|
-
"objective": "Measure whether the crossword-forge craftbook constructs a mechanically-valid interlocking crossword from the seeded family notes — entries readable out of the grid at their coordinates, every entry clued — rendered as a printable page with the solution out of sight.",
|
|
5
|
-
"tags": [
|
|
6
|
-
"html-page"
|
|
7
|
-
],
|
|
8
|
-
"prompt": "can you make a crossword for the grandkids with there names and our dog in it? printable pls",
|
|
9
|
-
"setup": {
|
|
10
|
-
"projectName": "Loon Lake Puzzle Almanac",
|
|
11
|
-
"about": "Puzzle almanac project for the Halloran family. Notes about the solvers live at workspace/notes/family.md; finished puzzles are filed on the workspace/puzzles shelf. The working puzzle is workspace/puzzle.json with its printable page at workspace/puzzle.html.",
|
|
12
|
-
"missionObjectives": "The grid must actually interlock and verify — every entry readable out of the grid at its coordinates, every entry clued. Personalization comes from the family notes. No live services, no real credentials.",
|
|
13
|
-
"files": [
|
|
14
|
-
{
|
|
15
|
-
"path": "notes/family.md",
|
|
16
|
-
"content": "# The solvers\n\nGrandkids: Nora (12, reigning flashlight-tag champion), Felix (10, dinosaur phase never ended),\nImani (9, reads above her grade and knows it), Theo (7, will need help with the long ones).\n\nThe dog: Biscuit — golden retriever, eats crayons, beloved.\n\nPlaces: the cabin at Loon Lake, the porch swing, Grandpa's garden.\n\nRunning jokes: Grandpa's burnt pancakes, the canoe that tipped twice in one day,\nflashlight tag after dark, \"who fed Biscuit already?\"\n"
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
"path": "checks/verify-puzzle.mjs",
|
|
20
|
-
"content": "// Eval-only re-check: verifies puzzle.json is a real, solvable crossword.\n// Exits 0 and prints PUZZLE OK when every entry reads out of the grid at its\n// coordinates, every entry has a clue, and the entries interlock.\nimport { readFileSync } from 'node:fs';\n\nfunction fail(message) {\n console.error('PUZZLE BROKEN: ' + message);\n process.exit(1);\n}\n\nlet puzzle;\ntry {\n puzzle = JSON.parse(readFileSync('puzzle.json', 'utf8'));\n} catch (err) {\n fail('puzzle.json missing or not valid JSON (' + err.message + ')');\n}\n\nconst grid = puzzle.grid;\nif (!Array.isArray(grid) || grid.length < 5 || !grid.every((r) => typeof r === 'string')) {\n fail('grid must be an array of at least 5 row strings');\n}\nconst width = grid[0].length;\nfor (let r = 0; r < grid.length; r++) {\n if (grid[r].length !== width) fail('row ' + r + ' width differs from row 0');\n if (!/^[A-Z.]+$/.test(grid[r])) fail('row ' + r + ' has characters outside A-Z and \".\"');\n}\n\nconst entries = puzzle.entries;\nif (!Array.isArray(entries) || entries.length < 4) fail('need at least 4 entries');\n\nconst owners = new Map();\nlet across = 0;\nlet down = 0;\nfor (const e of entries) {\n const label = typeof e.answer === 'string' && e.answer ? e.answer : 'entry #' + (e.number ?? '?');\n if (typeof e.answer !== 'string' || !/^[A-Z]{2,}$/.test(e.answer)) fail(label + ': bad answer');\n if (e.direction !== 'across' && e.direction !== 'down') fail(label + ': bad direction');\n if (!Number.isInteger(e.row) || !Number.isInteger(e.col)) fail(label + ': bad coordinates');\n if (typeof e.clue !== 'string' || e.clue.trim().length === 0) fail(label + ': missing clue');\n if (e.direction === 'across') across++;\n else down++;\n for (let i = 0; i < e.answer.length; i++) {\n const r = e.direction === 'down' ? e.row + i : e.row;\n const c = e.direction === 'across' ? e.col + i : e.col;\n if (r < 0 || r >= grid.length || c < 0 || c >= width) fail(label + ' runs off the grid');\n if (grid[r][c] !== e.answer[i]) {\n fail(label + ': grid has \"' + grid[r][c] + '\" at ' + r + ',' + c + ' expected \"' + e.answer[i] + '\"');\n }\n const key = r + ',' + c;\n if (!owners.has(key)) owners.set(key, new Set());\n owners.get(key).add(e.direction + ':' + label);\n }\n}\nif (across === 0 || down === 0) fail('need both across and down entries');\n\nfor (const e of entries) {\n let interlocks = false;\n for (let i = 0; i < e.answer.length && !interlocks; i++) {\n const r = e.direction === 'down' ? e.row + i : e.row;\n const c = e.direction === 'across' ? e.col + i : e.col;\n for (const owner of owners.get(r + ',' + c) ?? []) {\n if (!owner.startsWith(e.direction + ':')) interlocks = true;\n }\n }\n if (!interlocks) fail(e.answer + ' does not cross any other entry');\n}\n\nconsole.log('PUZZLE OK: ' + entries.length + ' entries (' + across + ' across, ' + down + ' down) verified');\n"
|
|
21
|
-
}
|
|
22
|
-
],
|
|
23
|
-
"worker": {
|
|
24
|
-
"name": "Wouter",
|
|
25
|
-
"role": "Puzzle maker"
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
"mocks": [],
|
|
29
|
-
"success": {
|
|
30
|
-
"summary": "puzzle.json is a verified interlocking crossword carrying the personal words; puzzle.html is a printable page with clue lists and the solution kept out of sight.",
|
|
31
|
-
"deliverables": [
|
|
32
|
-
{
|
|
33
|
-
"path": "puzzle.json",
|
|
34
|
-
"kind": "json",
|
|
35
|
-
"minBytes": 400,
|
|
36
|
-
"checks": [
|
|
37
|
-
{
|
|
38
|
-
"kind": "sniff",
|
|
39
|
-
"file": "puzzle.json",
|
|
40
|
-
"sniff": "json-valid"
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"kind": "nodeScriptPasses",
|
|
44
|
-
"script": "checks/verify-puzzle.mjs",
|
|
45
|
-
"timeoutMs": 5000,
|
|
46
|
-
"requiredOutput": [
|
|
47
|
-
{
|
|
48
|
-
"pattern": "PUZZLE OK",
|
|
49
|
-
"label": "grid verifies as solvable"
|
|
50
|
-
}
|
|
51
|
-
]
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"kind": "contains",
|
|
55
|
-
"file": "puzzle.json",
|
|
56
|
-
"pattern": "NORA|FELIX|IMANI|THEO",
|
|
57
|
-
"label": "a grandkid name made the grid"
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
"kind": "contains",
|
|
61
|
-
"file": "puzzle.json",
|
|
62
|
-
"pattern": "BISCUIT",
|
|
63
|
-
"label": "the dog made the grid"
|
|
64
|
-
}
|
|
65
|
-
]
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
"path": "puzzle.html",
|
|
69
|
-
"kind": "html-page",
|
|
70
|
-
"minBytes": 2000,
|
|
71
|
-
"checks": [
|
|
72
|
-
{
|
|
73
|
-
"kind": "cssMinBytes",
|
|
74
|
-
"bytes": 650,
|
|
75
|
-
"file": "puzzle.html"
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"kind": "jsParses",
|
|
79
|
-
"file": "puzzle.html"
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
"kind": "contains",
|
|
83
|
-
"file": "puzzle.html",
|
|
84
|
-
"pattern": "@page|@media\\s+print",
|
|
85
|
-
"flags": "i",
|
|
86
|
-
"label": "print CSS"
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
"kind": "contains",
|
|
90
|
-
"file": "puzzle.html",
|
|
91
|
-
"pattern": "Across",
|
|
92
|
-
"flags": "i",
|
|
93
|
-
"label": "across clue list"
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
"kind": "contains",
|
|
97
|
-
"file": "puzzle.html",
|
|
98
|
-
"pattern": "Down",
|
|
99
|
-
"flags": "i",
|
|
100
|
-
"label": "down clue list"
|
|
101
|
-
}
|
|
102
|
-
]
|
|
103
|
-
}
|
|
104
|
-
]
|
|
105
|
-
},
|
|
106
|
-
"rubric": {
|
|
107
|
-
"artifact": {
|
|
108
|
-
"path": "puzzle.html",
|
|
109
|
-
"kind": "html"
|
|
110
|
-
},
|
|
111
|
-
"axes": [
|
|
112
|
-
{
|
|
113
|
-
"name": "solvability",
|
|
114
|
-
"description": "The grid interlocks and the clue numbering matches the grid — a solver could actually finish it."
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
"name": "personalization",
|
|
118
|
-
"description": "The names, the dog, and the running jokes from the family notes carry the puzzle; fillers stay in the background."
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
"name": "clue craft",
|
|
122
|
-
"description": "Clues are tuned to the solvers — in-jokes for the personal entries, honest difficulty for the fillers, help-sized for the youngest."
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
"name": "print readiness",
|
|
126
|
-
"description": "The page prints with pencil-sized squares and the solution on its own page, never beside the blank grid."
|
|
127
|
-
}
|
|
128
|
-
]
|
|
129
|
-
},
|
|
130
|
-
"qualityFocus": [
|
|
131
|
-
"verified interlocking grid",
|
|
132
|
-
"grounded personalization",
|
|
133
|
-
"solution out of sight"
|
|
134
|
-
]
|
|
135
|
-
}
|