devlyn-cli 4.1.0 → 4.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +10 -94
- package/CLAUDE.md +7 -160
- package/LICENSE +21 -0
- package/README.md +68 -111
- package/bin/devlyn.js +265 -259
- package/bin/instruction-templates.json +43 -2
- package/bin/instructions.js +29 -8
- package/bin/skill-history.json +140 -0
- package/bin/skill-ownership.js +67 -0
- package/config/skills/_shared/adapters/claude.md +8 -85
- package/config/skills/_shared/adapters/codex.md +14 -34
- package/config/skills/_shared/adapters/omp.md +1 -11
- package/config/skills/_shared/codex-monitored.sh +4 -54
- package/config/skills/_shared/engine-doctor.sh +18 -58
- package/config/skills/_shared/engine-preflight.md +15 -47
- package/config/skills/_shared/expected-contract.py +242 -0
- package/config/skills/_shared/expected.schema.json +10 -95
- package/config/skills/_shared/invocation-receipt.py +26 -757
- package/config/skills/_shared/platform-support.py +37 -28
- package/config/skills/_shared/role-config.py +100 -421
- package/config/skills/_shared/runtime-principles.md +17 -93
- package/config/skills/_shared/task-complete.py +490 -285
- package/config/skills/_shared/task-completion.md +235 -0
- package/config/skills/devlyn-engines/SKILL.md +9 -11
- package/config/skills/devlyn-ideate/SKILL.md +57 -107
- package/config/skills/devlyn-ideate/references/elicitation.md +18 -99
- package/config/skills/devlyn-ideate/references/loop.md +110 -0
- package/config/skills/devlyn-ideate/references/package-format.md +128 -0
- package/config/skills/devlyn-ideate/scripts/acceptance.py +795 -0
- package/config/skills/devlyn-ideate/scripts/queue.py +1780 -0
- package/node_modules/@inquirer/ansi/LICENSE +22 -0
- package/node_modules/@inquirer/ansi/README.md +121 -0
- package/node_modules/@inquirer/ansi/dist/index.d.ts +14 -0
- package/node_modules/@inquirer/ansi/dist/index.js +21 -0
- package/node_modules/@inquirer/ansi/package.json +79 -0
- package/node_modules/@inquirer/checkbox/LICENSE +22 -0
- package/node_modules/@inquirer/checkbox/README.md +265 -0
- package/node_modules/@inquirer/checkbox/dist/index.d.ts +67 -0
- package/node_modules/@inquirer/checkbox/dist/index.js +210 -0
- package/node_modules/@inquirer/checkbox/package.json +93 -0
- package/node_modules/@inquirer/core/LICENSE +22 -0
- package/node_modules/@inquirer/core/README.md +424 -0
- package/node_modules/@inquirer/core/dist/index.d.ts +13 -0
- package/node_modules/@inquirer/core/dist/index.js +12 -0
- package/node_modules/@inquirer/core/dist/lib/Separator.d.ts +10 -0
- package/node_modules/@inquirer/core/dist/lib/Separator.js +21 -0
- package/node_modules/@inquirer/core/dist/lib/__probe/p1.d.ts +9 -0
- package/node_modules/@inquirer/core/dist/lib/__probe/p1.js +4 -0
- package/node_modules/@inquirer/core/dist/lib/__probe/p2.d.ts +9 -0
- package/node_modules/@inquirer/core/dist/lib/__probe/p2.js +3 -0
- package/node_modules/@inquirer/core/dist/lib/__probe/p3.d.ts +9 -0
- package/node_modules/@inquirer/core/dist/lib/__probe/p3.js +5 -0
- package/node_modules/@inquirer/core/dist/lib/create-prompt.d.ts +11 -0
- package/node_modules/@inquirer/core/dist/lib/create-prompt.js +185 -0
- package/node_modules/@inquirer/core/dist/lib/errors.d.ts +20 -0
- package/node_modules/@inquirer/core/dist/lib/errors.js +21 -0
- package/node_modules/@inquirer/core/dist/lib/hook-engine.d.ts +17 -0
- package/node_modules/@inquirer/core/dist/lib/hook-engine.js +109 -0
- package/node_modules/@inquirer/core/dist/lib/key.d.ts +15 -0
- package/node_modules/@inquirer/core/dist/lib/key.js +34 -0
- package/node_modules/@inquirer/core/dist/lib/make-theme.d.ts +3 -0
- package/node_modules/@inquirer/core/dist/lib/make-theme.js +33 -0
- package/node_modules/@inquirer/core/dist/lib/pagination/use-pagination.d.ts +15 -0
- package/node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js +121 -0
- package/node_modules/@inquirer/core/dist/lib/screen-manager.d.ts +14 -0
- package/node_modules/@inquirer/core/dist/lib/screen-manager.js +84 -0
- package/node_modules/@inquirer/core/dist/lib/theme.d.ts +166 -0
- package/node_modules/@inquirer/core/dist/lib/theme.js +29 -0
- package/node_modules/@inquirer/core/dist/lib/use-effect.d.ts +2 -0
- package/node_modules/@inquirer/core/dist/lib/use-effect.js +11 -0
- package/node_modules/@inquirer/core/dist/lib/use-keypress.d.ts +3 -0
- package/node_modules/@inquirer/core/dist/lib/use-keypress.js +20 -0
- package/node_modules/@inquirer/core/dist/lib/use-memo.d.ts +1 -0
- package/node_modules/@inquirer/core/dist/lib/use-memo.js +14 -0
- package/node_modules/@inquirer/core/dist/lib/use-prefix.d.ts +5 -0
- package/node_modules/@inquirer/core/dist/lib/use-prefix.js +35 -0
- package/node_modules/@inquirer/core/dist/lib/use-ref.d.ts +6 -0
- package/node_modules/@inquirer/core/dist/lib/use-ref.js +4 -0
- package/node_modules/@inquirer/core/dist/lib/use-state.d.ts +7 -0
- package/node_modules/@inquirer/core/dist/lib/use-state.js +28 -0
- package/node_modules/@inquirer/core/dist/lib/utils.d.ts +13 -0
- package/node_modules/@inquirer/core/dist/lib/utils.js +25 -0
- package/node_modules/@inquirer/core/package.json +98 -0
- package/node_modules/@inquirer/figures/LICENSE +22 -0
- package/node_modules/@inquirer/figures/dist/index.d.ts +275 -0
- package/node_modules/@inquirer/figures/dist/index.js +315 -0
- package/node_modules/@inquirer/figures/package.json +81 -0
- package/node_modules/@inquirer/select/LICENSE +22 -0
- package/node_modules/@inquirer/select/README.md +258 -0
- package/node_modules/@inquirer/select/dist/index.d.ts +42 -0
- package/node_modules/@inquirer/select/dist/index.js +191 -0
- package/node_modules/@inquirer/select/package.json +93 -0
- package/node_modules/@inquirer/type/LICENSE +22 -0
- package/node_modules/@inquirer/type/dist/index.d.ts +2 -0
- package/node_modules/@inquirer/type/dist/index.js +2 -0
- package/node_modules/@inquirer/type/dist/inquirer.d.ts +35 -0
- package/node_modules/@inquirer/type/dist/inquirer.js +1 -0
- package/node_modules/@inquirer/type/dist/utils.d.ts +45 -0
- package/node_modules/@inquirer/type/dist/utils.js +16 -0
- package/node_modules/@inquirer/type/package.json +88 -0
- package/node_modules/cli-width/LICENSE +13 -0
- package/node_modules/cli-width/README.md +71 -0
- package/node_modules/cli-width/index.d.ts +13 -0
- package/node_modules/cli-width/index.js +49 -0
- package/node_modules/cli-width/package.json +40 -0
- package/node_modules/fast-string-truncated-width/dist/index.d.ts +4 -0
- package/node_modules/fast-string-truncated-width/dist/index.js +111 -0
- package/node_modules/fast-string-truncated-width/dist/types.d.ts +19 -0
- package/node_modules/fast-string-truncated-width/dist/types.js +2 -0
- package/node_modules/fast-string-truncated-width/dist/utils.d.ts +4 -0
- package/node_modules/fast-string-truncated-width/dist/utils.js +20 -0
- package/node_modules/fast-string-truncated-width/license +21 -0
- package/node_modules/fast-string-truncated-width/package.json +35 -0
- package/node_modules/fast-string-truncated-width/readme.md +59 -0
- package/node_modules/fast-string-width/dist/index.d.ts +4 -0
- package/node_modules/fast-string-width/dist/index.js +14 -0
- package/node_modules/fast-string-width/license +21 -0
- package/node_modules/fast-string-width/package.json +34 -0
- package/node_modules/fast-string-width/readme.md +42 -0
- package/node_modules/fast-wrap-ansi/LICENSE +23 -0
- package/node_modules/fast-wrap-ansi/README.md +26 -0
- package/node_modules/fast-wrap-ansi/lib/main.d.ts +6 -0
- package/node_modules/fast-wrap-ansi/lib/main.js +218 -0
- package/node_modules/fast-wrap-ansi/package.json +51 -0
- package/node_modules/mute-stream/LICENSE +15 -0
- package/node_modules/mute-stream/README.md +68 -0
- package/node_modules/mute-stream/lib/index.js +142 -0
- package/node_modules/mute-stream/package.json +54 -0
- package/node_modules/signal-exit/LICENSE.txt +16 -0
- package/node_modules/signal-exit/README.md +74 -0
- package/node_modules/signal-exit/dist/cjs/browser.d.ts +12 -0
- package/node_modules/signal-exit/dist/cjs/browser.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/cjs/browser.js +10 -0
- package/node_modules/signal-exit/dist/cjs/browser.js.map +1 -0
- package/node_modules/signal-exit/dist/cjs/index.d.ts +48 -0
- package/node_modules/signal-exit/dist/cjs/index.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/cjs/index.js +279 -0
- package/node_modules/signal-exit/dist/cjs/index.js.map +1 -0
- package/node_modules/signal-exit/dist/cjs/package.json +3 -0
- package/node_modules/signal-exit/dist/cjs/signals.d.ts +29 -0
- package/node_modules/signal-exit/dist/cjs/signals.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/cjs/signals.js +42 -0
- package/node_modules/signal-exit/dist/cjs/signals.js.map +1 -0
- package/node_modules/signal-exit/dist/mjs/browser.d.ts +12 -0
- package/node_modules/signal-exit/dist/mjs/browser.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/mjs/browser.js +4 -0
- package/node_modules/signal-exit/dist/mjs/browser.js.map +1 -0
- package/node_modules/signal-exit/dist/mjs/index.d.ts +48 -0
- package/node_modules/signal-exit/dist/mjs/index.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/mjs/index.js +275 -0
- package/node_modules/signal-exit/dist/mjs/index.js.map +1 -0
- package/node_modules/signal-exit/dist/mjs/package.json +3 -0
- package/node_modules/signal-exit/dist/mjs/signals.d.ts +29 -0
- package/node_modules/signal-exit/dist/mjs/signals.d.ts.map +1 -0
- package/node_modules/signal-exit/dist/mjs/signals.js +39 -0
- package/node_modules/signal-exit/dist/mjs/signals.js.map +1 -0
- package/node_modules/signal-exit/package.json +106 -0
- package/package.json +17 -4
- package/config/commit-conventions.md +0 -28
- package/config/skills/_shared/adapters/README.md +0 -74
- package/config/skills/_shared/adapters/grok.md +0 -100
- package/config/skills/_shared/archive_run.py +0 -969
- package/config/skills/_shared/codex-config.md +0 -81
- package/config/skills/_shared/collect-codex-findings.py +0 -505
- package/config/skills/_shared/finish-gate.py +0 -521
- package/config/skills/_shared/grok-anchor-guard.py +0 -78
- package/config/skills/_shared/judge-output-parser.py +0 -200
- package/config/skills/_shared/judge-role-evidence.py +0 -320
- package/config/skills/_shared/phase-prompt-render.py +0 -183
- package/config/skills/_shared/process-evidence.py +0 -926
- package/config/skills/_shared/resolve-bootstrap.py +0 -1410
- package/config/skills/_shared/resolve-stop-hook.py +0 -359
- package/config/skills/_shared/run-bounded.py +0 -58
- package/config/skills/_shared/spec-verify-check.py +0 -5083
- package/config/skills/_shared/state-phase-write.py +0 -5989
- package/config/skills/_shared/terminal-claim-check.py +0 -777
- package/config/skills/_shared/verify-merge-findings.py +0 -3528
- package/config/skills/devlyn-design-ui/SKILL.md +0 -650
- package/config/skills/devlyn-ideate/references/from-spec-mode.md +0 -61
- package/config/skills/devlyn-ideate/references/project-mode.md +0 -80
- package/config/skills/devlyn-ideate/references/spec-template.md +0 -121
- package/config/skills/devlyn-ideate/references/templates/decision.md +0 -48
- package/config/skills/devlyn-ideate/references/templates/roadmap.md +0 -50
- package/config/skills/devlyn-ideate/references/templates/vision.md +0 -44
- package/config/skills/devlyn-queue/SKILL.md +0 -66
- package/config/skills/devlyn-queue/scripts/append.py +0 -94
- package/config/skills/devlyn-resolve/SKILL.md +0 -379
- package/config/skills/devlyn-resolve/references/free-form-mode.md +0 -71
- package/config/skills/devlyn-resolve/references/outer-loop.md +0 -23
- package/config/skills/devlyn-resolve/references/phases/build-gate.md +0 -75
- package/config/skills/devlyn-resolve/references/phases/cleanup.md +0 -33
- package/config/skills/devlyn-resolve/references/phases/implement.md +0 -44
- package/config/skills/devlyn-resolve/references/phases/plan.md +0 -39
- package/config/skills/devlyn-resolve/references/phases/probe-derive.md +0 -261
- package/config/skills/devlyn-resolve/references/phases/surface-close.md +0 -34
- package/config/skills/devlyn-resolve/references/phases/verify.md +0 -310
- package/config/skills/devlyn-resolve/references/state-schema.md +0 -152
- package/config/skills/devlyn-resolve/references/task-completion.md +0 -160
- package/config/templates/prompt-templates.md +0 -71
- package/config/templates/template-feature.spec.md +0 -255
- package/config/templates/template-product-spec.md +0 -680
|
@@ -89,10 +89,12 @@
|
|
|
89
89
|
"029ce19ffbe7b9bab829a8da4aecbfec239c566b2b395112dddeda4516a50255",
|
|
90
90
|
"02acf4d54b0fbb587b78b227a16d3394f737f9a984d168bd5ab71f4d6b00ab72",
|
|
91
91
|
"03d85ed66f64ea52f2f96d9fb203b05ac6afc0ba634a4dfb3585429ce1531c44",
|
|
92
|
+
"0467080d13d933b663362006ae5f5a0ad73baaed51ad50faf3f0d3d9f92244a3",
|
|
92
93
|
"0634a245075d1a5aac4e58c1345f40f5f4c3b4909315f86aacd7ab239ea3ce61",
|
|
93
94
|
"0869633a322da8f8d800b1d2c23becc52f5ff592f0823533ea24f09de465c53a",
|
|
94
95
|
"090f003bb30b98e6979865f3eb9bbc66eaa8f0cd74a89ff2eea5ef38cbee13b5",
|
|
95
96
|
"0926622dde30d21c6cafe6b69b0bb0608b31e2528655615c7edbdedc6ae43d7c",
|
|
97
|
+
"0a8be3a2fb2bd90dd48d9bfa1f1419f77a5378929f6b296c5332252e73c61d43",
|
|
96
98
|
"0b679ac026de2416da082320f94e0f4f0ae9680b97751500db80b3546f9db9be",
|
|
97
99
|
"0bc87e8af36113cda1539f916c835fe65485fc33e9010ece546b07e5925f4a9c",
|
|
98
100
|
"0c0458c53f32a021ed4cf6ca7db6f8c3d1dd4fc93204850017e7194864fcbc16",
|
|
@@ -108,9 +110,11 @@
|
|
|
108
110
|
"15598b4bdb679c765c616182509d021633b964ecc7f8be77cc0d90680a713e98",
|
|
109
111
|
"16a1d88b1a778004f91439f57371164b525b21d3aec1820510c0de596e5d1fb7",
|
|
110
112
|
"16c7d965e59534532e390b17dba008a2414fe88dcd3595e89a16d6d86ca01f61",
|
|
113
|
+
"1705d88a34e295eef17ee08ebf412decb6f45d328e57c58996fe20f0594fb820",
|
|
111
114
|
"17ac254ca2cf86f7637db35f6380370aef06c4f87c08af6c1976e968c4c3f549",
|
|
112
115
|
"186f55e73293c12c2c5ada4c8ceffdbee69c7d147e17237f3650ae235e9ca7b8",
|
|
113
116
|
"188e31cffa81acc58baf4c94b525d3a1945ffb41ba849244b7372e6852e48fb8",
|
|
117
|
+
"19d17a2a263d240c7e3c4520f8bd6cf4705bf99532edc84d4546eb0440e6dff8",
|
|
114
118
|
"1b1d4045f72b6e96026b549edfcb24cfdb0e3d621814b769893f53095b11f362",
|
|
115
119
|
"1c3ef72df964eb9d6ba964b4dc1e10c442c7ac46f44e40f9e634a74594cc2f3b",
|
|
116
120
|
"1d90788860a8e032046629a2a0e106bbbf325a8a627012897ee9235fbab98bd0",
|
|
@@ -149,6 +153,7 @@
|
|
|
149
153
|
"34a09b8d6023ae5b858ec5135cae8efeabd921e3108e63e9627a222b188fe554",
|
|
150
154
|
"34a494444df9d11dea3e6f01868ed11ece52c322d7198ed2075ab2640da45266",
|
|
151
155
|
"350aa6a3140d56a22cb4d5f2503f453ad238384150dc2b5e480fc626db33dfec",
|
|
156
|
+
"35782424442926d2fdc6128337e2f86ce681890ff7c2328dfe8475af009e6fea",
|
|
152
157
|
"37f003566c80ead28d713e86bd6a877e2e3239302c884911f5144a896c291c17",
|
|
153
158
|
"39972d3dd19a7d771d2d3a5d083fddca6da1a22ad8ea27dbe70bbb4615ef2c94",
|
|
154
159
|
"39af5b94a2734e4fc6c943b604fde4b0d798c4a2a7b1ffb5d053ab7f22488de3",
|
|
@@ -179,6 +184,7 @@
|
|
|
179
184
|
"4d756bc5c6a7c7ca1589efc6c340c75fb389699fe14d114aa211a29921e7effe",
|
|
180
185
|
"4dcba526b49c91411d98925a7f638d990acea0f904ba8f143f195f7f99f85e33",
|
|
181
186
|
"4e114313a6fbf27b89bebe7847f9aebb4ca2c61d23d167997efd459fa091e602",
|
|
187
|
+
"4e80a2a2797d5320ea96f785698b699a49fd69622bf00733edb8de67f46dd148",
|
|
182
188
|
"4f6bf3fa8b8b706d234a7d5a3dda34e52ce1fcba68770aadf606c1717543bd5a",
|
|
183
189
|
"50fe2edc6da214c0ae4bfce43d8d210f98ff15da2d2f9bca88269dab9a4ed179",
|
|
184
190
|
"51a7490d3c92e196373ec01bde05d8209426b765b6351dfe27449838c487f073",
|
|
@@ -195,8 +201,10 @@
|
|
|
195
201
|
"5978dcb6e377cf64fe4865f68355d9f48bbf6f2fa19a2d89eb94e5eabbb1e813",
|
|
196
202
|
"5a12650a43b6a809a28ef665907740b90150fce895b4d4de4e5d7446a482f182",
|
|
197
203
|
"5ad7118a8116ae2fea66b45dc6c59128b16f8e8000911f87acbcdba1525b9b68",
|
|
204
|
+
"5b82f9020d952e89ccf8803bce90dd5b9c38b39fa59a629349c9d15cc14c9597",
|
|
198
205
|
"5c775bb62be74cec0b9f52520d89ac918872c3a65832c7eb120b5b4461b30854",
|
|
199
206
|
"5da2a81f95f8697406622ac92c8ccb61537b90c74a99beb48905844394cdd93e",
|
|
207
|
+
"5dcd2f3c12ef8665788614439bc8a87f14b3c8ed6c2d779ec587ac304933d47a",
|
|
200
208
|
"5e329ef8e25962ef0c9b29cf769fa1a92a82ab597ef29118961ff250eee76f70",
|
|
201
209
|
"5e73319288935d1857bf1d9b8a46f56c19bdffd46ff2f822b930f2b17cb1f98d",
|
|
202
210
|
"5eaedae1a36f29150537ca51771c3ed19afadc72e08a304179c52454252ad312",
|
|
@@ -220,6 +228,7 @@
|
|
|
220
228
|
"69b0122066857d8b166ab5e94e162bf2479425760914ca6c05c655455b8f6e66",
|
|
221
229
|
"6a08a11aea6a1dfaa99823a73bc8730e8fff9c483ec8989aaeca669cfc7b3ed6",
|
|
222
230
|
"6b287911edc5fa5f7792941de251b46d8ae8500553239b559f11292136e89e7a",
|
|
231
|
+
"6b65f3883cfca3d531ab716c069c88f3a7d964657c5e026bda25eacdb37f16c5",
|
|
223
232
|
"6c32954c006e1cbe92ca74656797f0165dbd55ca77a8873fa63737206e40b857",
|
|
224
233
|
"6c7d2465dc68f1d040d5f3904f7d08622a0f2195de893635f5f359e72b9b2f5e",
|
|
225
234
|
"6ce3f0a6ffffd02adb100b725b53ad6cacc2a133f38075e0103bfd854792b2dd",
|
|
@@ -233,6 +242,7 @@
|
|
|
233
242
|
"6f9b366d18f73b72e6d66bc942a84126c60bed911faf834522c92fde7d12ad4c",
|
|
234
243
|
"7076c6738e6d3e2739680f57c9ab3c7522ec0b9ace00b663619bcd7370ce570a",
|
|
235
244
|
"722cc953822fe6a46b182f787999d166920a6b3ad4bd71b57ea2bdc79590071a",
|
|
245
|
+
"7457d0f899bffbe34526b04f89673a3f84a9aaaa8c12f90d69e3cc261cd4cecf",
|
|
236
246
|
"74d1a65b0689c3a4fb81c950c56f8b753a240f43ca336389aadc90c02fae13b9",
|
|
237
247
|
"7608b1cabef6a327cd841f8c994301a12aa29e04a00fcd02d641a3ed6d619db7",
|
|
238
248
|
"76517a747d47a3986b7181db4bbe5898ad3d6d82644ce39d8bf62edc998cecb9",
|
|
@@ -253,6 +263,7 @@
|
|
|
253
263
|
"8a612ad6038c31b74582cce2a2165c2be6be72e29db03dd2a2ab55d5a67d3055",
|
|
254
264
|
"8b0c46ab550956964233c24c188a68b9e054b9a250c17a7f7d3ac49dcc735798",
|
|
255
265
|
"8b5229a215f1b662c6da49a96f06bb7ec32e39c435100d49275272c25837fb47",
|
|
266
|
+
"8bfa724fab748a31d710b443ee13e4464369b7d5c82b9515ddb18df56132d671",
|
|
256
267
|
"8c06bf7daf489571b342b7b4ba23b13f28cc5436e1b4694460e29962a7b63e8f",
|
|
257
268
|
"8ce293fd80ec392803698f6564b995f6bbcb8fc6072dcc8a45b0b4afea989950",
|
|
258
269
|
"8ec1424b49dbae25dcba6f7c220624a024e426f32a0fb1bb56b49cfb38ca4132",
|
|
@@ -275,20 +286,24 @@
|
|
|
275
286
|
"9d9afeab8026b9bf7074febe07380d8ea7a9ef7168149e72ff8af93c1abee29b",
|
|
276
287
|
"9e074e9e2c4302901a160f0ba121aa348b2a0e1e1313a2079aae289f2746de3e",
|
|
277
288
|
"9e65019acb60433529160c929b840398fe6e5d72dcfd219cb79e69ba2d3cd5e9",
|
|
289
|
+
"9f105921480a9157deaad98839fee04bb52ae28f72a8efa6ddf78d658ec1b2b3",
|
|
278
290
|
"9f62c5b2a94e8b5e81528ccbdb6f78d147d14882108568b2cb3b7f85212694c0",
|
|
279
291
|
"9f6d9ef148d5b4ab1e365bd7411a01a1d019ee241d9ed556bab5ee7499d79417",
|
|
280
292
|
"a02eb2d8d77553327fb77377dbfedeab059b2e68e0a33c469b9be54a5d55182b",
|
|
293
|
+
"a10a5a7838269e918a14d99e09bf54162b7f5e460ff488d068e420aa63180af7",
|
|
281
294
|
"a12a5593a1725fceed3c52706a13ed6a72063f267e13696f0ce2a4bc50bb37b5",
|
|
282
295
|
"a27ec7f5f0f0a2798e53695f20dc43fe28378d551fc060e2c772d0b522a336e5",
|
|
283
296
|
"a3a15249968f64085b0cec8c0826688a4c3a1e4cf09b4879054baa086d5cbca1",
|
|
284
297
|
"a4da26a46ab83815d8ca5d747c68a907ad67dad485adbc6c863b982ee23b307e",
|
|
285
298
|
"a5d6ff585d696254d6727cd1e6d7f8825881f90210eff744265e211ced715ea3",
|
|
299
|
+
"a5f9cf621cf485e6247f664752e13929b4e52a0bbd3955cdd022c1af584b05ab",
|
|
286
300
|
"a7ff913df40945a8a16b6632214020a368119ff665953d4a07ec58330b39f101",
|
|
287
301
|
"a9395efaa63038c24ffaed027b72acd6d67612a80f697e47fd440e3ddc16ef20",
|
|
288
302
|
"aafc680a7ac73e100f4a17d2c4070190e68563f78614c39f4c2f58f1e291d9a9",
|
|
289
303
|
"ab7f6d08d95cf1c22b7ec6e2e113158b7f767b73d8dde04fd1c3b33788922c93",
|
|
290
304
|
"ac432d9179f245fec0beaf4010355613dcd6d476d8c9268c9cd430c98e73ff35",
|
|
291
305
|
"adcb46726c532fef32c4e420d305c2de9bd43b668fa5d0e7f00a570a6a426500",
|
|
306
|
+
"af35a3eee2e642bb1d32390efdcceb3de4558287e8b26d7c40df0e521cd00a3c",
|
|
292
307
|
"af3a498714fecb29ebdc1e43e5cc0425efaf1c290130e6913cabd75fe4c9cc67",
|
|
293
308
|
"af77f01317665c50815eb3cfefe481519efcc9c8b81bac06fc110abf723c7868",
|
|
294
309
|
"af96d41e6e6d2dce4d1038d71f0f68306fa8170d2c37c537c593778e558f3dc5",
|
|
@@ -306,6 +321,7 @@
|
|
|
306
321
|
"bddb4f88a0c11165b9cafe7a31027e9769313e1aee7c0a9ed9dad490e4fe1bcc",
|
|
307
322
|
"be11c198a50be2884c4c1efec52bbddff55c7547a5daf0ec2ef046279c95dc45",
|
|
308
323
|
"bfdb7c7e4db21e1c452e730cecadc8e97abd317c6e54ae58c298f4288b1f1354",
|
|
324
|
+
"c1a1e9722a0f3c13c693eeaacdac8cc3d13d36d242f2bab58311170496ea4e2e",
|
|
309
325
|
"c236da36a45d4013ffb7e131575229b605f662a30b5174f14754f519acc24252",
|
|
310
326
|
"c276962617888c5ac2d352c5e2ed018c5ce9d00f199c73e1dd61438ec4a914fb",
|
|
311
327
|
"c2e80f501e29074e625206b864b084138153be2c83e63cacb20d47f62dd82f95",
|
|
@@ -338,8 +354,10 @@
|
|
|
338
354
|
"d07f2a32bc75d6b25d60a5404db6fba52bc967bde80862484ed77cc7fdc8ce1f",
|
|
339
355
|
"d189a2002b4ef0e858acb734c4ed14f6af6f0b7bb250b178f65d439369a9149a",
|
|
340
356
|
"d342ef78e480e86a51375142cc31797143e3ebd3dec52ab2f788530505f54fe0",
|
|
357
|
+
"d3df16f5c755d614c644ac33c397e6ece6b0d3ddc4b18de70d45b2b938311248",
|
|
341
358
|
"d41692aa7577bbd85144fe73d111947f98e1304f4aceb891d712daa5907d550d",
|
|
342
359
|
"d486a0b267c9425bde2cba737d802d2412a9b4b4b339e925500c1643327d2a3d",
|
|
360
|
+
"d496c0136a48c3ee3de3fd8dbed8e0ebc649d906c507722993b9c5833239d49b",
|
|
343
361
|
"d5d8d02a1fb53cd28ed1c33e7184067b76defbfcc6cab9498b365dee35579013",
|
|
344
362
|
"d75bdfc9cf08cfcb46214f69dac4f20b1a0a30b86d91127007fe587de9eaaeb0",
|
|
345
363
|
"d768a149b5842e0d50eda941872188c8b29bcfb4b1aa0f4190fd4299f237fce0",
|
|
@@ -347,6 +365,7 @@
|
|
|
347
365
|
"d8c50cb04441e6b568236bc6cd494b4de296dfc7e8b33cf96e7aeb94612df3b8",
|
|
348
366
|
"d940c2df4cfffa42265e4f85e429762b99dd6d055c1658d782c7b472c6ebacd5",
|
|
349
367
|
"da019f3edfb762b9216016a3ea9cf7211b2ba698a55ddda5cec2e478218b0288",
|
|
368
|
+
"db194ffd774757f9e0c373e36fc127f8c031a541f23bf9abfdcd935277b0318b",
|
|
350
369
|
"ddb200267b43942de3c061b449d08cc3f73441258b74816cfe13da091377b428",
|
|
351
370
|
"dff43f9976c68267baf13f6a460f24af8e76be233c8440ac4684dc664106deae",
|
|
352
371
|
"e031aef2a9adb0d0900e8269cf84c892f77b9938984e26df54826d1771861629",
|
|
@@ -387,7 +406,9 @@
|
|
|
387
406
|
"fc5c3b053d38dcd91edeaef99ae8e308218563f10a66690b5fe1b5d12c42e42b",
|
|
388
407
|
"fc813d93e760a69058c05fc0c9380f7dd09e3235cc22398a97ed2c1445eca29c",
|
|
389
408
|
"fc98b9a7c2abdcc797b808459cea5ee0a1fdfcd95f24a8c0c38c0f4d920c77a7",
|
|
390
|
-
"
|
|
409
|
+
"fe77333774ef88faae6fa95402d7ced6f9caa18d6c97406aca0d934f5e700891",
|
|
410
|
+
"ffbd338af8a2b43cce01855c3d75582fe63e1bd1e60d9a62b70312afce30d331",
|
|
411
|
+
"ffd4b4af5ab9f5b4682e69a4a729df3dea59b98cc95e5724e0e4498e74a71e8d"
|
|
391
412
|
],
|
|
392
413
|
"CLAUDE.md": [
|
|
393
414
|
"00343e30ffbe497b405bfc956f52986fce298c1b162ec07831f06ae90d689369",
|
|
@@ -416,6 +437,7 @@
|
|
|
416
437
|
"080051ed34915b572971d9fc734b95ba7a7984f6e799a7286055d41a7aeaa3b6",
|
|
417
438
|
"0845abb4d59bce13c33c80b3292ba829bace0abe26d67a100a3bbc07e5db2b7d",
|
|
418
439
|
"086b65c51d3342970968f4c3c6554a605b8740ed82809d26587cbd08f87d19f8",
|
|
440
|
+
"0a8be3a2fb2bd90dd48d9bfa1f1419f77a5378929f6b296c5332252e73c61d43",
|
|
419
441
|
"0ab05e7ec571a8c899901514ab0655622817e8a77254ec2ec763fd78dad7f5bd",
|
|
420
442
|
"0b45db686d97f33be4dc2b091ed259de534c2e3f97f8787574e722d2e86a0c1d",
|
|
421
443
|
"0be26727b83829948ce23413a534c309a54dc7d238c8c1b232a31bbb26cb717c",
|
|
@@ -460,6 +482,7 @@
|
|
|
460
482
|
"1c14e388ba39b4953aa51b2b73a92d287027f6849e25ee8725d9e3ea51f78fa1",
|
|
461
483
|
"1c8eb04322ddd32ba3557b70d441e339d26159acb4b7361702177af607ecdf58",
|
|
462
484
|
"1eb91782df82c7e317b7080d6caee3d8a3e638d3306b21c3dc1dbd8101179019",
|
|
485
|
+
"1f646b24267aeb362829ab0a63be6a9c43cad8621096f641675a774d3531bb6c",
|
|
463
486
|
"1fa41c8a810b585535072b74f943a8570d942eb5617154353a5c8b6ebff4a2fb",
|
|
464
487
|
"201b88453127e7a4dceb42a7ce6250812ed8a1aa00687c989d58741695ec8291",
|
|
465
488
|
"20a6ad5c33b13bc791f34e1e414aadd5bf9b25383d21f0dde96a76cd9f45606a",
|
|
@@ -522,6 +545,7 @@
|
|
|
522
545
|
"347019bc4c775fb46ff2fa68e8845b082aad6053b8e646c5f4aa5196a6a52f84",
|
|
523
546
|
"34e0ff8adfd8d5088dcf09ef68a8f9d14d319b77115a5dc79b382dee1f7e451a",
|
|
524
547
|
"35782424442926d2fdc6128337e2f86ce681890ff7c2328dfe8475af009e6fea",
|
|
548
|
+
"35b0cfdb6c727c658dc228e52e172061494bc0391479119fcff83a2f87e3fe6b",
|
|
525
549
|
"35b1aa18fa6f90d3dac5b24aa9f54debf433857c694aa78f6bf122f4464480f5",
|
|
526
550
|
"35d558ed31c5c53aeba50cd8c53f3d4fa8e2a8bc287f13a25a99944a8ebded29",
|
|
527
551
|
"3610b254d617a02d9627f472a75326d11865f546c03df24e5acd6d047ba7d460",
|
|
@@ -617,6 +641,7 @@
|
|
|
617
641
|
"5b82f9020d952e89ccf8803bce90dd5b9c38b39fa59a629349c9d15cc14c9597",
|
|
618
642
|
"5d1183e08f92cb76c9fb41131742771101daebd65199b32050818a554e1ca185",
|
|
619
643
|
"5d56b35a8b69aabc401bb42cf93f38d0eebcb1219f3a8a032e124c45d4e4b5d8",
|
|
644
|
+
"5dcd2f3c12ef8665788614439bc8a87f14b3c8ed6c2d779ec587ac304933d47a",
|
|
620
645
|
"5dec4f3f015629b0c29c802b30a9e373c570fca85bb3e260c0dac9662d2685cd",
|
|
621
646
|
"5dfd01e48b8b3eb9d6eec85d68624b2af0dd0eeb483307865ef88b0fc916bc97",
|
|
622
647
|
"5e73319288935d1857bf1d9b8a46f56c19bdffd46ff2f822b930f2b17cb1f98d",
|
|
@@ -641,6 +666,7 @@
|
|
|
641
666
|
"6a27907ba14fae9ddcacd551007b783b2f813c51c118828c74fd2174e09a7d41",
|
|
642
667
|
"6a5ea10aa15a05ac992bd118adc3c0de48c85cea504aef655065d9678f93717c",
|
|
643
668
|
"6b26d02b3f87d53a964b6fe405992104dd2ee85f8c1b3048951ece574d9005a8",
|
|
669
|
+
"6b65f3883cfca3d531ab716c069c88f3a7d964657c5e026bda25eacdb37f16c5",
|
|
644
670
|
"6b726d35cdc0851401769b6de9c422cfa475dbe7c0d036726706439a2cdbb02a",
|
|
645
671
|
"6b87c5a061164bac137a5bd44056ae78101b7315e09502bc9156b806e1ef0c00",
|
|
646
672
|
"6bd51d5724a2ca78115853583a363b15bf74632714aebb5a51962159110a03f8",
|
|
@@ -659,6 +685,7 @@
|
|
|
659
685
|
"72c9862cb638431dadce3a7ea004ebe76fa6e8d9e94f40178a8ad7a8d479fd0a",
|
|
660
686
|
"730165a8d5893eec0b5056de6c79e50bd35a98321b78fcb946273c075d06140b",
|
|
661
687
|
"74099aa171aa5bd6c61bb213f1c3b6735beb4abcabc197e75744e5c2d88817a8",
|
|
688
|
+
"7457d0f899bffbe34526b04f89673a3f84a9aaaa8c12f90d69e3cc261cd4cecf",
|
|
662
689
|
"746f71b4a75713b055c6691179b364dc0da582e226e97f40ae409d9f73ee0311",
|
|
663
690
|
"75b022c464eacbb24bf6e5b225e8e6fb1f313869603c1695a95cc995ee2699e0",
|
|
664
691
|
"75d8e47601bab4fd9935ec353e7ea2146dc52954bf9b490816f97a42ed7610cf",
|
|
@@ -670,6 +697,7 @@
|
|
|
670
697
|
"7aaf7227bd67650944c709f4143b6b9161834d391e5cfd4aaeea105f5e840594",
|
|
671
698
|
"7af6e9be693d906ba1f942430f46b288176e418d35eefb869d3cc35570e3daff",
|
|
672
699
|
"7b47b07e3062f3dc839f11397bc3265120e01a35b0fda094d738e28a6729e6c3",
|
|
700
|
+
"7bb5c341115c56592c0d1b5903d01321ce9c324136bc53babf9d438389796d94",
|
|
673
701
|
"7c0dacd603b4381539d6d3cf21f5fe625cf54b05eb4aa750fce658529b11d81d",
|
|
674
702
|
"7c79750557c7d7156df6f135fb582ec09cc5f4987ac8e2af0f5113e42c117224",
|
|
675
703
|
"7d083db061c678113c12453eb73299caa9e207dd6418ad63406154fd330f3309",
|
|
@@ -682,6 +710,7 @@
|
|
|
682
710
|
"818e10a1244cf2aa6fe34f6d1a8f680c124ecb201ab4364a2021a215dc5533cb",
|
|
683
711
|
"82319a758f8397ba30f13857b1d814bb0652bcc9bf527e25a4761e0d60d685bf",
|
|
684
712
|
"8320d006c59b36ea9a6227b6ee32c9da72e565b610e862e41a7d409894b56d09",
|
|
713
|
+
"835fe46abd073f866a928d1cd6cc0af1ef76d485e070d4c0ba9b0c2d8c411df8",
|
|
685
714
|
"83abc941a813a09a37feea1edaa0b6ae69d28bfd88844cb5a1f867254638a4d8",
|
|
686
715
|
"841faeaab5635f2552e257a69ab9b39a03db25d40ca711a31ec30853a0f69d08",
|
|
687
716
|
"855c1f988b0794e1f1b1a589b8f5860312317bec5570af5f7c49001884f486da",
|
|
@@ -689,6 +718,7 @@
|
|
|
689
718
|
"85fa19a45def0b572cd7b9a8310e7997677f88e48879f85b82688f1ab65b3b8d",
|
|
690
719
|
"8619e97c3712d7d83a1101629f8546d013f3d5542659053283e9dbc565e4bfc0",
|
|
691
720
|
"866c65c557a855671f5cd24ea4b9acf76b87a6ede4f42cea10c21c2486b26848",
|
|
721
|
+
"868cec4966c5b4b22dd6cdec48c973224a8a9d0187b58b711db55024fe9ff80a",
|
|
692
722
|
"86e67b1646b959e175eaa510b7aee00d642dfb645da979b5a264218174e64584",
|
|
693
723
|
"870231faeb0a9c7adb66e8e6d20bd271e45d4d1e5fb58737d9cadcca4f42de2a",
|
|
694
724
|
"871b119f7954a8751ce0cfc08a2655d10ba66e4a27c632a4285d8d4eb916269d",
|
|
@@ -703,6 +733,7 @@
|
|
|
703
733
|
"8aa71cc3b1cff95ecf309049f4fc6f6dec3b8827272e0ec72d05cec9f9e2803f",
|
|
704
734
|
"8acb7ff8fca15e6f4c9db052f3690b908804e2bc98a20ffc12c5caaef6c87b55",
|
|
705
735
|
"8b417f12b79e7328ab8998bde222da856470a9fe2a5eff838c710d5fc66c850e",
|
|
736
|
+
"8bfa724fab748a31d710b443ee13e4464369b7d5c82b9515ddb18df56132d671",
|
|
706
737
|
"8c89d0106c4051f7400670c2e83e6e3cfd95533b6d4d5f715124f28dbf41c37e",
|
|
707
738
|
"8cff7c530e70102f9506012e91f305c306c56a6e68073f44aba74a827c87f679",
|
|
708
739
|
"8d0079bdee4cf4dc86c1cca826f81584fe2c97db04514fdd666167df8b509979",
|
|
@@ -735,11 +766,13 @@
|
|
|
735
766
|
"9dcfd026c98eda9dad08214f602187ac47b3388029a8e33d46c20d49a4f8b3a4",
|
|
736
767
|
"9de043ab22d62e6227b220e5d6ef7628f08380ba629c4c72766c2ec5fbc7cd9f",
|
|
737
768
|
"9e8649d414e65cdeaffab5090601cfbdfc91ba3a78626b66ca8fe85669acb3e7",
|
|
769
|
+
"9f105921480a9157deaad98839fee04bb52ae28f72a8efa6ddf78d658ec1b2b3",
|
|
738
770
|
"9f60ff43c2eb53ef727b06a0958e6636e034ece04fd542f9deb4a94b14871432",
|
|
739
771
|
"9fb2bb484494751d0888a37d0de4d1b72fb2efb5453a8b0204de9fc8254a4595",
|
|
740
772
|
"a045cf85544fd3b3c71c6ff5da52656247b81a8d22828f1d01e677704859e6b4",
|
|
741
773
|
"a04d86da6195f71926bee98cc812b61497a0948cd60e2b235712de2215af7d4b",
|
|
742
774
|
"a053c180750405173ec7141081081d171df1aa74ef62a3c8854b6f7f61a9e659",
|
|
775
|
+
"a10a5a7838269e918a14d99e09bf54162b7f5e460ff488d068e420aa63180af7",
|
|
743
776
|
"a219da47dd42cfbfcc808a6f00279ba87b2bbe1928ee009434bcb4ffa71e790d",
|
|
744
777
|
"a292850ee0ceb0549d2e0cd50e48c8596594a509597f7210f59acbad7b45b475",
|
|
745
778
|
"a2b7ab33386255547ecd6fce85b574d0354ef8e93d2bafb58e0cb77d7fee46b7",
|
|
@@ -769,6 +802,7 @@
|
|
|
769
802
|
"ae165ed9dd87a9a0cc44e6aedecda36e7baf30f906387b6b61498b15024e6ebd",
|
|
770
803
|
"aee00431c6f1093dabf9f28ac906e6769e6a637bd7029b260e20c44120470ca5",
|
|
771
804
|
"af009f3b01fe6d41be46d0992a74c1a3d0681264b72a1a344cb14e787c770a65",
|
|
805
|
+
"af35a3eee2e642bb1d32390efdcceb3de4558287e8b26d7c40df0e521cd00a3c",
|
|
772
806
|
"b0bfa637d2cae4be520471a45c0503f517400c6bf30cd394318fcd28b0bf6df1",
|
|
773
807
|
"b240b9b48eb5404781c4985878ebb29781bd9cd8d943796ea545a043847a696d",
|
|
774
808
|
"b248b5c31b014ad5505bca439a714a0834f9c57b7132f8b5077c4369cc49279a",
|
|
@@ -776,6 +810,7 @@
|
|
|
776
810
|
"b306b9a953a3fb5a9e15315099b7fa31bdac076f17b66ebc9259141ab1a47e98",
|
|
777
811
|
"b38536c283085dced3d955f6d4e44709c2bf5e64111dc7c637593e36415aabbe",
|
|
778
812
|
"b5aee45614a24eed18f2e4bc840a8065c8143717b41259c0c6a6f5fcda10c55b",
|
|
813
|
+
"b5ed93204a83bd43b1514c92330d41f7e30696fbb78243c934abcb264a2158c0",
|
|
779
814
|
"b5eefabd99457de1df2edbe78d22ee3967c18c83975657f17d15c18abb4df28e",
|
|
780
815
|
"b6ca70dfc1111cd1a43bf89e2a46459af77dfce229922f148a6f289fdd650691",
|
|
781
816
|
"b72e4d316502751c6e43d943580182ece074d509fd520c097f782e206239ceb9",
|
|
@@ -793,6 +828,7 @@
|
|
|
793
828
|
"bb88e23401b6d11ef9a198107a30eed055c5d21b589738a3f74ddd39b4d76701",
|
|
794
829
|
"bba69a83c7459bb44e4558051ead063003c7d152be222cbdb250008dbd9d64cf",
|
|
795
830
|
"bc2ed35fa458e1fb26fd52c14220622c1f9d5dc95a69ab888209949f26400cf9",
|
|
831
|
+
"bc94dea221397fcfca8011c44d7b05790d60a51bbfe35f8d5bef4aaa1b3f3002",
|
|
796
832
|
"bd222e31dc5ecfdd8f1539aaf9d13f7c5f454113e65924f78060dd0e92974653",
|
|
797
833
|
"be11c198a50be2884c4c1efec52bbddff55c7547a5daf0ec2ef046279c95dc45",
|
|
798
834
|
"be49c865c8b78d714cd68baeace35163cf96ecc5c7ed5c7e2a4d5f46c7b1a8e6",
|
|
@@ -843,8 +879,11 @@
|
|
|
843
879
|
"d19be0bfb42f1790c5b6ca1937208eea906828ff2a4ca3db9898efec50ba6fd3",
|
|
844
880
|
"d1da83f9946ab02cfad62623784b08a52f3f063976ab9b0c5e8a43131aa10078",
|
|
845
881
|
"d230016fd8ff7318169ccafa4ac50d94d9b8191370bc8b13149d8d58bfced9d0",
|
|
882
|
+
"d313ee61489edaf0c72ee2e70ee3a46b534ffbc49f02404c4516073bf16d2c91",
|
|
846
883
|
"d36ca232e2f764ac114976ac179955a798824a148ff5a8e11fdab96428a0aa86",
|
|
847
884
|
"d37bd6a360ef6f6d4ebc51c3fa9190021a350b68539750aff77682a67b48bb90",
|
|
885
|
+
"d3df16f5c755d614c644ac33c397e6ece6b0d3ddc4b18de70d45b2b938311248",
|
|
886
|
+
"d496c0136a48c3ee3de3fd8dbed8e0ebc649d906c507722993b9c5833239d49b",
|
|
848
887
|
"d4bd7c282f4e5566a8c3d3500683801cb36d7fe41cd7c385fa10c38755dd4aa5",
|
|
849
888
|
"d52b18bf2bf26813548370212ba9eef13360679c97baae313b87d2b5dea4ea88",
|
|
850
889
|
"d58f34824ea64c3bcacb13c797c8ea68623288bc0d5280d12fa0af27a511acb1",
|
|
@@ -928,11 +967,13 @@
|
|
|
928
967
|
"fd12c4da9cc5df8a0b41e98e30e3a6bfcce31902f860be541145d77ed458dda8",
|
|
929
968
|
"fd8befbc4061f2476c8edb97982043a7ce43caa4b3a529f472ae191f5d9b81fd",
|
|
930
969
|
"fe0bac647b061b1974ab623fbacd72865d7aec39969e2f4585b939abbcb43d6a",
|
|
970
|
+
"fe77333774ef88faae6fa95402d7ced6f9caa18d6c97406aca0d934f5e700891",
|
|
931
971
|
"ff03ba1ce6021d1d81f710084d8fdda61cd3a38c2e4f7252ae2eae94bb7ba5d9",
|
|
932
972
|
"ff2b34264a111ea52124a016fe6fdba437ca5752a183a9a80b8d5abc9be6ba0f",
|
|
933
973
|
"ff39e0c8a38e75a76c5abb3ae3ab87fd6c7aa75fc40b2b9e269d99aaca02b30e",
|
|
934
974
|
"ff6cc2213ac0ba09985ec631ac5320fd356f783e373b6e8a347cb7f88fd14f5c",
|
|
935
|
-
"ff7303737742c55a8806c655cab4a65abf3fc0fcf1f96b50a5a1a534ed3148ff"
|
|
975
|
+
"ff7303737742c55a8806c655cab4a65abf3fc0fcf1f96b50a5a1a534ed3148ff",
|
|
976
|
+
"ffd4b4af5ab9f5b4682e69a4a729df3dea59b98cc95e5724e0e4498e74a71e8d"
|
|
936
977
|
]
|
|
937
978
|
}
|
|
938
979
|
}
|
package/bin/instructions.js
CHANGED
|
@@ -119,6 +119,18 @@ function instructionParagraphs(text) {
|
|
|
119
119
|
return paragraphs;
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
+
// Claude Code expands an `@AGENTS.md` import line, except inside a fenced code block.
|
|
123
|
+
function importsAgentsMd(text) {
|
|
124
|
+
let fence = null;
|
|
125
|
+
for (const line of text.replace(/^\uFEFF/, '').split(/\r?\n/)) {
|
|
126
|
+
const marker = /^ {0,3}(`{3,}|~{3,})/.exec(line)?.[1];
|
|
127
|
+
if (marker && !fence) fence = marker;
|
|
128
|
+
else if (marker && marker[0] === fence[0] && marker.length >= fence.length && /^ {0,3}(?:`+|~+)\s*$/.test(line)) fence = null;
|
|
129
|
+
else if (!fence && line.trimEnd() === '@AGENTS.md') return true;
|
|
130
|
+
}
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
|
|
122
134
|
function customInstructions(text, name, template, managed = false) {
|
|
123
135
|
const known = new Set([
|
|
124
136
|
...legacyTemplates.paragraphs[name],
|
|
@@ -168,7 +180,9 @@ function retainFile(file, bytes) {
|
|
|
168
180
|
}
|
|
169
181
|
}
|
|
170
182
|
|
|
171
|
-
|
|
183
|
+
// `withBlock` false removes the devlyn defaults the file holds, keeping everything else. `write` false writes nothing
|
|
184
|
+
// and returns whether the file needs an update, a merge included.
|
|
185
|
+
function updateInstructions(name, initial = '', withBlock = true, write = true) {
|
|
172
186
|
const templatePath = path.join(__dirname, '..', name);
|
|
173
187
|
const template = fs.readFileSync(templatePath, 'utf8');
|
|
174
188
|
if (template.includes(BEGIN) || template.includes(END)) {
|
|
@@ -187,16 +201,18 @@ function updateInstructions(name) {
|
|
|
187
201
|
throw new InstructionError(`Instruction file must be a regular file; preserved: ${dest}. Move it aside and rerun, then merge your shared rules outside the managed block.`);
|
|
188
202
|
}
|
|
189
203
|
const before = exists ? fs.readFileSync(dest) : Buffer.alloc(0);
|
|
190
|
-
let current;
|
|
204
|
+
let current = initial;
|
|
191
205
|
try {
|
|
192
|
-
current = new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(before);
|
|
206
|
+
if (exists) current = new TextDecoder('utf-8', { fatal: true, ignoreBOM: true }).decode(before);
|
|
193
207
|
} catch (cause) {
|
|
194
208
|
throw new InstructionError(`${name} must be UTF-8; original preserved. Convert its encoding and rerun installation.`, { cause });
|
|
195
209
|
}
|
|
196
210
|
const eol = current.match(/\r?\n/)?.[0] || '\n';
|
|
197
211
|
const block = managedBlock(template, eol);
|
|
212
|
+
const inserted = withBlock ? block : '';
|
|
198
213
|
const recovery = path.join(process.cwd(), '.devlyn', 'instructions');
|
|
199
214
|
const conflict = (reason) => {
|
|
215
|
+
if (!write) return true;
|
|
200
216
|
const incoming = path.join(recovery, `${name}.${digest(block)}.incoming`);
|
|
201
217
|
const backup = path.join(recovery, `${name}.${digest(before)}.backup`);
|
|
202
218
|
const guide = path.join(recovery, `${name}.${digest(before)}.${digest(block)}.merge.md`);
|
|
@@ -231,8 +247,11 @@ function updateInstructions(name) {
|
|
|
231
247
|
const custom = digest(normalize(previous)) === start[1] ? ''
|
|
232
248
|
: customInstructions(previous, name,
|
|
233
249
|
'Project-specific instructions outside this managed block take precedence over these defaults.\n\n' + template, true);
|
|
250
|
+
const after = current.slice(end.index + end[0].length);
|
|
234
251
|
content = current.slice(0, start.index + (start[0].startsWith('\uFEFF') ? 1 : 0))
|
|
235
|
-
+ custom + (custom ? eol : '') +
|
|
252
|
+
+ custom + (custom ? eol : '') + inserted + after;
|
|
253
|
+
// A block removed from the end takes along the blank lines that set it apart.
|
|
254
|
+
if (!inserted && !after) content = content.replace(/(\r?\n)(?:\r?\n)+$/, '$1');
|
|
236
255
|
} else {
|
|
237
256
|
const normalized = normalize(template);
|
|
238
257
|
const bodyStart = normalized.indexOf('## North Star\n');
|
|
@@ -246,14 +265,15 @@ function updateInstructions(name) {
|
|
|
246
265
|
if (ranges.length === 1 && !LEGACY.test(current.slice(0, ranges[0].start)
|
|
247
266
|
+ ranges[0].custom + current.slice(ranges[0].end))) {
|
|
248
267
|
const { start, end, custom } = ranges[0];
|
|
249
|
-
content = current.slice(0, start) + custom +
|
|
268
|
+
content = current.slice(0, start) + custom + inserted + current.slice(end);
|
|
250
269
|
} else {
|
|
251
270
|
const custom = customInstructions(current, name, template);
|
|
252
|
-
content = custom + (custom ? eol + eol : '') +
|
|
271
|
+
content = custom + (custom && inserted ? eol + eol : '') + inserted;
|
|
253
272
|
}
|
|
254
273
|
}
|
|
255
274
|
const bytes = Buffer.from(content);
|
|
256
275
|
if (bytes.equals(before)) return false;
|
|
276
|
+
if (!write) return true;
|
|
257
277
|
if (exists) {
|
|
258
278
|
const backup = path.join(recovery, `${name}.${digest(before)}.backup`);
|
|
259
279
|
retainFile(backup, before);
|
|
@@ -270,8 +290,9 @@ function updateInstructions(name) {
|
|
|
270
290
|
} finally {
|
|
271
291
|
if (fs.existsSync(temp)) fs.unlinkSync(temp);
|
|
272
292
|
}
|
|
273
|
-
console.log(` →
|
|
293
|
+
console.log(!exists ? ` → Created ${name}`
|
|
294
|
+
: ` → ${withBlock ? 'Updated Devlyn defaults in' : 'Removed Devlyn defaults from'} ${name}; project-specific instructions preserved`);
|
|
274
295
|
return true;
|
|
275
296
|
}
|
|
276
297
|
|
|
277
|
-
module.exports = { updateInstructions, InstructionError, instructionParagraphs, holdsDevlynDefaults };
|
|
298
|
+
module.exports = { updateInstructions, InstructionError, instructionParagraphs, holdsDevlynDefaults, importsAgentsMd };
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
{
|
|
2
|
+
"source": "devlyn-cli@4.1.0 (npm tarball sha1 398ff07d3d689b56cc22e18ac50260bc6e4e9e85); devlyn-cli@4.2.0 (npm tarball sha1 c93c2fb1cf5630b18d2eba0085182c14fddbe2d5); whole-tree fingerprints from bin/skill-ownership.js; deprecated commands: commands/ and optional-commands/*/ files of devlyn-cli 0.0.1-0.5.8 (every published version that shipped them), LF-normalized SHA-256",
|
|
3
|
+
"skills": {
|
|
4
|
+
"_shared": [
|
|
5
|
+
"eb3327d5e6940bd5e0459fa28c9ab323d9c58ccfdeb9426c19cd027cc4e5c4ed",
|
|
6
|
+
"8c80926ab03b2477e52264495b35c2116f65fc51b02e8c56e441b5705872392a"
|
|
7
|
+
],
|
|
8
|
+
"devlyn-design-ui": [
|
|
9
|
+
"91080266232fb62b6f1d45932184f065589e12eb66f02fb6442527c6dfcd81b6"
|
|
10
|
+
],
|
|
11
|
+
"devlyn-engines": [
|
|
12
|
+
"3451d37f47e6e707cff92baa12d04b43aee94301456b8e280c09332e598a1c2c",
|
|
13
|
+
"89f0efaa2efdfddc887b494138247980d97856f6cabe6a8dcc585b3a28e5fa88"
|
|
14
|
+
],
|
|
15
|
+
"devlyn-ideate": [
|
|
16
|
+
"8ff5148cc65b4608c35b29afd6fef20d42d8da93a094144d98cfc63e74089b6e",
|
|
17
|
+
"5824f07e455fe1c3942bf595a12e935258d4c0a851ca1bf741db915603d1c4e0"
|
|
18
|
+
],
|
|
19
|
+
"devlyn-queue": [
|
|
20
|
+
"4c7d988dcd154c7bf658d2d24cd7868955df9d854ed87eb784742d6d4bb229e0"
|
|
21
|
+
],
|
|
22
|
+
"devlyn-resolve": [
|
|
23
|
+
"2abd303851f085da07f6b55ee1724842ef7f8e8ad6b68c6339df5f1eaa8c69de"
|
|
24
|
+
],
|
|
25
|
+
"asset-creator": [
|
|
26
|
+
"e295f57eca534cbd4e27e236999f4f5412ebdc6944ac864761e922dea213f904"
|
|
27
|
+
],
|
|
28
|
+
"better-auth-setup": [
|
|
29
|
+
"e97c39c5d669ffc1f49d57fd3a016e852727e57c3abe2f9be1ebffab9fcb19ec"
|
|
30
|
+
],
|
|
31
|
+
"cloudflare-nextjs-setup": [
|
|
32
|
+
"f147a28b9f6f62feb21df89bdf08869820f4871ede7a8ba4a242246509ee6e35"
|
|
33
|
+
],
|
|
34
|
+
"code-health-standards": [
|
|
35
|
+
"2056617b324bb7e1e3b85a6536bfe33151e31ef421656cade74258fb4e922c1b"
|
|
36
|
+
],
|
|
37
|
+
"code-review-standards": [
|
|
38
|
+
"3fe0742825aff05fa6fda49d3e3e0fbf5457307af944eb90f2771cbf611edd69"
|
|
39
|
+
],
|
|
40
|
+
"devlyn-pencil-pull": [
|
|
41
|
+
"65af00f88b0837ffd377ebf363da73c766ae0ae8e20716fe18f80edfa91bd6da"
|
|
42
|
+
],
|
|
43
|
+
"devlyn-pencil-push": [
|
|
44
|
+
"76955458ced72f4b0bdaf71482be6097c4c86876934b6e6a2ac7d19f850662ad"
|
|
45
|
+
],
|
|
46
|
+
"devlyn-reap": [
|
|
47
|
+
"77e029ab06c37fb7135a9bd4395ff84b84ab2e44cf79c5827798777e39472351"
|
|
48
|
+
],
|
|
49
|
+
"dokkit": [
|
|
50
|
+
"42045db4e2f70f68d0ed90a9c7c5c2660a6d5183ea641dfa9f2f1f0d0938e3fb"
|
|
51
|
+
],
|
|
52
|
+
"generate-skill": [
|
|
53
|
+
"16a78b867539c0bc11a44f3ecfa1762ba7fcba8841fca8558abe818fc961ff68"
|
|
54
|
+
],
|
|
55
|
+
"polar-billing-setup": [
|
|
56
|
+
"8b6dc842903e7343ac7b1e3a1c55911a9987552196ffb27a11a86093537fe976"
|
|
57
|
+
],
|
|
58
|
+
"prompt-engineering": [
|
|
59
|
+
"d7a0718ab0fd7e0a3c0d8ef8bc4e0349edfc843648343f08f9776e1ea047573c"
|
|
60
|
+
],
|
|
61
|
+
"pyx-scan": [
|
|
62
|
+
"60f02fa049616e94fff4318c96dc9f417b3def7ec75a3bd0846f2bcbd99b0b69"
|
|
63
|
+
],
|
|
64
|
+
"root-cause-analysis": [
|
|
65
|
+
"eeb20fe09edd37b07360c3440b68bdb488abee4917d4e808e64e3889c6addf5a"
|
|
66
|
+
],
|
|
67
|
+
"ui-implementation-standards": [
|
|
68
|
+
"0fbaad2b7d77462916d9364b97b921354ffbf945a68e9e0d422b3a88d36d2569"
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
"commands": {
|
|
72
|
+
"commands/devlyn.handoff.md": [
|
|
73
|
+
"91d143c6305e95e4af6992eda0d127e94a394c2e91a2d409b4d41ca03c23f470"
|
|
74
|
+
],
|
|
75
|
+
"commands/devlyn.clean.md": [
|
|
76
|
+
"918c6ae867c57a4d9748237adae0df8c78a1447c7c028a0af988b59a5fbb0d9a"
|
|
77
|
+
],
|
|
78
|
+
"commands/devlyn.design-system.md": [
|
|
79
|
+
"f81166b5ba08d9ee1f5cff33c911ea387e5cb50141a9712a96fc4434c60a673f"
|
|
80
|
+
],
|
|
81
|
+
"commands/devlyn.design-ui.md": [
|
|
82
|
+
"0496a6b2dd8c6bb0474b71ef9a319a6b95bb76972d0f07a01c33f8860fe83dfb",
|
|
83
|
+
"4e2aafcc0de6ce7f3022a353aaa9fb4330e76a50a91ab970b9b9a0f192f9f1f2"
|
|
84
|
+
],
|
|
85
|
+
"commands/devlyn.discover-product.md": [
|
|
86
|
+
"a609401d29cd2bdad7a48c7c8f096b442fe03a17c6b2c3151936c47b4a16e6c6",
|
|
87
|
+
"1e66aa35bf300ec6167e1b888f43a92ebd9e60d501397ff0334c9a7809d433f5"
|
|
88
|
+
],
|
|
89
|
+
"commands/devlyn.evaluate.md": [
|
|
90
|
+
"8f17ccc639d54adab24c49dcf471376bab97511675d00554056a4c1f67a14115"
|
|
91
|
+
],
|
|
92
|
+
"commands/devlyn.feature-spec.md": [
|
|
93
|
+
"d442ed7ae8d14a255c37f1b120b758f69794be88e2970a8a0c0e51519344b6c7"
|
|
94
|
+
],
|
|
95
|
+
"commands/devlyn.implement-ui.md": [
|
|
96
|
+
"a8d0813781b2f7a3df5a4751c92755bf7c84c53428cf63cea34c965939b8c478"
|
|
97
|
+
],
|
|
98
|
+
"commands/devlyn.product-spec.md": [
|
|
99
|
+
"7a92d2df2586b44e2c4d9182eeb3d61f7adc2a13bed4d2cd26abcfe086585895"
|
|
100
|
+
],
|
|
101
|
+
"commands/devlyn.recommend-features.md": [
|
|
102
|
+
"2b92523017e1da10c299dafb19d84736de5084b5b46693de7fd2d6df51dc56b4"
|
|
103
|
+
],
|
|
104
|
+
"commands/devlyn.resolve.md": [
|
|
105
|
+
"48c0c3ee553f87f1f0733190effc7220c01c82837a5300ef68c9ffdf30c5d3a1",
|
|
106
|
+
"24595766e1a81a1fcacb78261b03c3665bc686bcac8b1805d1c4db379584879f",
|
|
107
|
+
"eaad5354cfc20ed378ffd2a2e1ca6bade1310bd2a47ab93e5942e9599c3ba9a8"
|
|
108
|
+
],
|
|
109
|
+
"commands/devlyn.review.md": [
|
|
110
|
+
"55888e08bf31ead1d359f218277cfa7efc3c6cb0f96fadc665d5a2406ff115d3",
|
|
111
|
+
"22f532f587f6d2fbf2662e38d5073b85a030141573f86d92ad40b9d292836fb7",
|
|
112
|
+
"7f9ce1db4ffd3cdaf9fd949e4b07de04e0931c91cd846d4ab220ff6114a45b17",
|
|
113
|
+
"3a511fc678e599ff4b4c37fd9191399a599e1ba9ea9c40fc4afcbe29cb188d2b"
|
|
114
|
+
],
|
|
115
|
+
"commands/devlyn.team-design-ui.md": [
|
|
116
|
+
"02485911588e9f52afb5a5082fd7804ee7a41bad44323960a2afe1a16a49d628"
|
|
117
|
+
],
|
|
118
|
+
"commands/devlyn.team-resolve.md": [
|
|
119
|
+
"8f11fa0c3203c0dd5bf09b5243dcff5968a36275682c54b3a012262fc545859a",
|
|
120
|
+
"09fc163d34dfe8906dd8d22501a028bfbbad639499acab01e5e60f06fc520382",
|
|
121
|
+
"ccfc5083813ee50d407109616ccbc2509aa7526316cebbf7a271537abdfff3b7",
|
|
122
|
+
"72f66be3c4c27a46e76d56d13a0d381880c054a03243188f98da2faf6dc77295",
|
|
123
|
+
"54c52c3f27998998ed55cc648d071bbb10444761b819c59ed118b795596a4aee"
|
|
124
|
+
],
|
|
125
|
+
"commands/devlyn.team-review.md": [
|
|
126
|
+
"58b36cfe2749968d697d486a104a1b139e4312730b0ac2933550634f6ece48db",
|
|
127
|
+
"7e5c2d93a23d51af7939dae29c70095dbd8a4a681cc06d4d578f2de29df346a3",
|
|
128
|
+
"c8e145955a303141af4082dae174e3b3f1681e4c9698e25ae337eadd31fb883b"
|
|
129
|
+
],
|
|
130
|
+
"commands/devlyn.update-docs.md": [
|
|
131
|
+
"86945afccf24762a88d26eef3703fbf6c5a90a3343fd3de72a9cb26b6f62d3b5"
|
|
132
|
+
],
|
|
133
|
+
"commands/devlyn.pencil-pull.md": [
|
|
134
|
+
"dfdd3d19ca676558bfa2bb3ce398181b0a081ab88d1feaf69c54c706a9671631"
|
|
135
|
+
],
|
|
136
|
+
"commands/devlyn.pencil-push.md": [
|
|
137
|
+
"5f2e8b29609cbb2af72941579823bec598265ebf29cd3a375d6aa47d95b74354"
|
|
138
|
+
]
|
|
139
|
+
}
|
|
140
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
const crypto = require('crypto');
|
|
2
|
+
const fs = require('fs');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
const { spawnSync } = require('child_process');
|
|
5
|
+
|
|
6
|
+
// A folder-metadata file the OS writes on its own (Finder, Explorer); never user content.
|
|
7
|
+
// Only a regular file: a folder or link under that name is still the user's.
|
|
8
|
+
function isOsMetadata(full) {
|
|
9
|
+
return ['.DS_Store', 'Thumbs.db'].includes(path.basename(full))
|
|
10
|
+
&& fs.lstatSync(full, { throwIfNoEntry: false })?.isFile() === true;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// SHA-256 of a file with CRLF read as LF: Git for Windows checks text out with CRLF by
|
|
14
|
+
// default, and an unedited clone must still match its shipped copy.
|
|
15
|
+
function contentHash(file) {
|
|
16
|
+
const bytes = fs.readFileSync(file).toString('latin1').replace(/\r\n/g, '\n');
|
|
17
|
+
return crypto.createHash('sha256').update(bytes, 'latin1').digest('hex');
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Hash every entry, including empty directories and dotfiles, except OS metadata. Links and
|
|
21
|
+
// special files are never installer-owned.
|
|
22
|
+
function fingerprint(dir) {
|
|
23
|
+
const entries = [];
|
|
24
|
+
function visit(full, relative) {
|
|
25
|
+
const stat = fs.lstatSync(full);
|
|
26
|
+
if (stat.isDirectory()) {
|
|
27
|
+
entries.push([relative, 'directory']);
|
|
28
|
+
for (const name of fs.readdirSync(full).sort()) {
|
|
29
|
+
if (isOsMetadata(path.join(full, name))) continue;
|
|
30
|
+
visit(path.join(full, name), relative ? `${relative}/${name}` : name);
|
|
31
|
+
}
|
|
32
|
+
} else if (stat.isFile()) {
|
|
33
|
+
entries.push([relative, 'file', contentHash(full)]);
|
|
34
|
+
} else {
|
|
35
|
+
throw new Error(`link or special file: ${full}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (!fs.lstatSync(dir).isDirectory()) throw new Error('not a real directory');
|
|
39
|
+
visit(dir, '');
|
|
40
|
+
return crypto.createHash('sha256').update(JSON.stringify(entries)).digest('hex');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Use the index, not status: even files deleted locally need ownership checks.
|
|
44
|
+
// Inspect the repository containing this root, including global dotfiles repos.
|
|
45
|
+
function trackedPaths(root) {
|
|
46
|
+
let cwd = root;
|
|
47
|
+
while (!fs.existsSync(cwd)) cwd = path.dirname(cwd);
|
|
48
|
+
const env = { ...process.env, LC_ALL: 'C' };
|
|
49
|
+
for (const key of ['GIT_DIR', 'GIT_WORK_TREE', 'GIT_INDEX_FILE', 'GIT_COMMON_DIR',
|
|
50
|
+
'GIT_LITERAL_PATHSPECS', 'GIT_GLOB_PATHSPECS', 'GIT_NOGLOB_PATHSPECS', 'GIT_ICASE_PATHSPECS',
|
|
51
|
+
'GIT_CEILING_DIRECTORIES', 'GIT_DISCOVERY_ACROSS_FILESYSTEM']) delete env[key];
|
|
52
|
+
const git = (args) => spawnSync('git', ['-C', cwd, ...args], { encoding: 'utf8', env });
|
|
53
|
+
const repo = git(['rev-parse', '--show-toplevel']);
|
|
54
|
+
if (repo.error?.code === 'ENOENT') return [];
|
|
55
|
+
if (repo.error) throw repo.error;
|
|
56
|
+
if (repo.status !== 0) {
|
|
57
|
+
if (repo.status === 128 && repo.stderr.includes('not a git repository')) return [];
|
|
58
|
+
throw new Error(`cannot inspect Git ownership: ${repo.stderr.trim()}`);
|
|
59
|
+
}
|
|
60
|
+
// Conservative case folding also protects index spellings on macOS/Windows volumes.
|
|
61
|
+
const files = git(['ls-files', '--full-name', '-z', '--', `:(icase,literal)${root}`]);
|
|
62
|
+
if (files.error) throw files.error;
|
|
63
|
+
if (files.status !== 0) throw new Error(`cannot inspect Git index: ${files.stderr.trim()}`);
|
|
64
|
+
return files.stdout.split('\0').filter(Boolean).map((file) => path.resolve(repo.stdout.trim(), file));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
module.exports = { contentHash, fingerprint, isOsMetadata, trackedPaths };
|