devlyn-cli 4.3.21 → 4.3.24
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 +1 -1
- package/CLAUDE.md +1 -1
- package/README.md +1 -1
- package/bin/devlyn.js +26 -1
- package/bin/harness-activation.js +11 -13
- package/bin/instruction-templates.json +26 -0
- package/bin/instructions.js +1 -1
- package/bin/skill-history.json +15 -1
- package/config/skills/_shared/bring-in.py +810 -0
- package/config/skills/_shared/harness-store.py +18 -6
- package/config/skills/_shared/runtime-principles.md +2 -2
- package/config/skills/_shared/storage-checkout.py +117 -0
- package/config/skills/_shared/storage-client.py +1180 -0
- package/config/skills/_shared/task-complete.py +900 -88
- package/config/skills/_shared/task-completion.md +78 -6
- package/config/skills/_shared/warm-build-dirs.py +53 -3
- package/config/skills/devlyn-ideate/SKILL.md +2 -2
- package/config/skills/devlyn-ideate/references/loop.md +4 -4
- package/config/skills/devlyn-ideate/scripts/queue.py +70 -19
- package/config/storage-client-contract.json +7 -0
- package/harness/AGENTS.md +2 -2
- package/harness/CLAUDE.md +2 -2
- package/native/claude/.claude-plugin/plugin.json +1 -1
- package/native/claude/skills/_shared/bring-in.py +810 -0
- package/native/claude/skills/_shared/harness-store.py +18 -6
- package/native/claude/skills/_shared/runtime-principles.md +2 -2
- package/native/claude/skills/_shared/storage-checkout.py +117 -0
- package/native/claude/skills/_shared/storage-client.py +1180 -0
- package/native/claude/skills/_shared/task-complete.py +900 -88
- package/native/claude/skills/_shared/task-completion.md +78 -6
- package/native/claude/skills/_shared/warm-build-dirs.py +53 -3
- package/native/claude/skills/devlyn-ideate/SKILL.md +2 -2
- package/native/claude/skills/devlyn-ideate/references/loop.md +4 -4
- package/native/claude/skills/devlyn-ideate/scripts/queue.py +70 -19
- package/native/codex/.agents/plugins/marketplace.json +1 -1
- package/native/codex/plugins/devlyn/.codex-plugin/plugin.json +1 -1
- package/native/codex/plugins/devlyn/skills/_shared/bring-in.py +810 -0
- package/native/codex/plugins/devlyn/skills/_shared/harness-store.py +18 -6
- package/native/codex/plugins/devlyn/skills/_shared/runtime-principles.md +2 -2
- package/native/codex/plugins/devlyn/skills/_shared/storage-checkout.py +117 -0
- package/native/codex/plugins/devlyn/skills/_shared/storage-client.py +1180 -0
- package/native/codex/plugins/devlyn/skills/_shared/task-complete.py +900 -88
- package/native/codex/plugins/devlyn/skills/_shared/task-completion.md +78 -6
- package/native/codex/plugins/devlyn/skills/_shared/warm-build-dirs.py +53 -3
- package/native/codex/plugins/devlyn/skills/devlyn-ideate/SKILL.md +2 -2
- package/native/codex/plugins/devlyn/skills/devlyn-ideate/references/loop.md +4 -4
- package/native/codex/plugins/devlyn/skills/devlyn-ideate/scripts/queue.py +70 -19
- package/optional-skills/better-auth-setup/SKILL.md +9 -3
- package/optional-skills/better-auth-setup/references/proxy-setup.md +10 -3
- package/package.json +1 -1
- package/release.json +93 -43
package/AGENTS.md
CHANGED
|
@@ -13,7 +13,7 @@ Seven rules govern every change. Cite them by name when a decision touches one.
|
|
|
13
13
|
1. **No workaround** — fix the root cause, never the symptom. No `any`, no `@ts-ignore`, no silent `catch`, no hardcoded fallback that hides a broken contract. No config bypasses.
|
|
14
14
|
2. **No overengineering** — smallest sufficient change, one responsibility per module. New abstractions need an observed failure. Subtractive-first: ask "what can I delete instead?" before writing anything new. Remove code your change makes unused; only report unrelated pre-existing dead code.
|
|
15
15
|
3. **No guesswork** — verify with the actual files, logs, diffs, and run output before forming conclusions. State the falsifiable prediction BEFORE the experiment; record raw results AFTER. Retroactive prediction edits are dishonest.
|
|
16
|
-
4. **Worldclass** —
|
|
16
|
+
4. **Worldclass** — zero CRITICAL, zero HIGH security/design findings on the shippable path. Any review is one pass in which every reviewer, including each one the user requires, reads the source the checks ran on; fix each finding or reject it with a reason, re-check the fixes and the invariants they touch, and repeat the full review only while a CRITICAL or HIGH finding remains.
|
|
17
17
|
5. **Best practice** — idiomatic for the language and framework. Use standard primitives; do not hand-roll what the library already provides.
|
|
18
18
|
6. **Optimized** — use efficient code and avoid unnecessary work without sacrificing correctness or the user's requirements.
|
|
19
19
|
7. **Production ready** — error states are explicit and visible; behavior under failure is what the user expects, not silent corruption.
|
package/CLAUDE.md
CHANGED
|
@@ -13,7 +13,7 @@ Seven rules govern every change. Cite them by name when a decision touches one.
|
|
|
13
13
|
1. **No workaround** — fix the root cause, never the symptom. No `any`, no `@ts-ignore`, no silent `catch`, no hardcoded fallback that hides a broken contract. No config bypasses.
|
|
14
14
|
2. **No overengineering** — smallest sufficient change, one responsibility per module. New abstractions need an observed failure. Subtractive-first: ask "what can I delete instead?" before writing anything new. Remove code your change makes unused; only report unrelated pre-existing dead code.
|
|
15
15
|
3. **No guesswork** — verify with the actual files, logs, diffs, and run output before forming conclusions. State the falsifiable prediction BEFORE the experiment; record raw results AFTER. Retroactive prediction edits are dishonest.
|
|
16
|
-
4. **Worldclass** —
|
|
16
|
+
4. **Worldclass** — zero CRITICAL, zero HIGH security/design findings on the shippable path. Any review is one pass in which every reviewer, including each one the user requires, reads the source the checks ran on; fix each finding or reject it with a reason, re-check the fixes and the invariants they touch, and repeat the full review only while a CRITICAL or HIGH finding remains.
|
|
17
17
|
5. **Best practice** — idiomatic for the language and framework. Use standard primitives; do not hand-roll what the library already provides.
|
|
18
18
|
6. **Optimized** — use efficient code and avoid unnecessary work without sacrificing correctness or the user's requirements.
|
|
19
19
|
7. **Production ready** — error states are explicit and visible; behavior under failure is what the user expects, not silent corruption.
|
package/README.md
CHANGED
|
@@ -62,7 +62,7 @@ Give ideate an intent or a document. It writes a loop package — a meta-prompt
|
|
|
62
62
|
| `/devlyn-ideate status` | Pending, active, accepted and failed counts; the next runnable task; delivery and recovery blockers. |
|
|
63
63
|
| `/devlyn-ideate drain` | Runs the queue serially and hands-free. |
|
|
64
64
|
|
|
65
|
-
A bare intent is planned and, when your request authorizes the work, added and drained without another confirmation; no arguments shows status. Questions come only when the answer changes behavior, scope, data semantics, acceptance or delivery, each with a recommended answer; `--autonomous` plans without questions, recording ordinary low-consequence, reversible defaults within the request, including user-visible details; material ambiguity in intended outcomes, persistent data or state semantics, or public surface beyond the request stops planning with a concrete question. Each task runs in its own worktree with the executor pinned by `/devlyn-engines` (default: the CLI you opened; Pi and Grok need a pin) under your installed CLAUDE.md/AGENTS.md instructions. Tasks start from committed state, the branch you added the loop on or the remote base for `auto`/`pr`, so a task's worktree holds only what is committed there. A task would run without installed CLAUDE.md/AGENTS.md that exist only in this checkout, so add stops while they differ from HEAD, and drain waits while they differ from the task's start commit. It is marked `[x]` only when its declared checks pass on its committed source and its required reviews cover it: the checks run through the drain's runner (a wholly clean run the executor lists for that source is reused; the drain runs any other check itself), and review coverage is attested by records the executor submits; a failed task becomes `[F]` with its reason and blocks only its dependents. An interrupted drain resumes without repeating accepted work. `--local-only` (or `--no-push`) keeps delivery local: each accepted task stays on its `devlyn/<loop-id>/<task-id>` branch in a retained worktree, nothing is merged or pushed, and the drain report's `Bring into` command
|
|
65
|
+
A bare intent is planned and, when your request authorizes the work, added and drained without another confirmation; no arguments shows status. Questions come only when the answer changes behavior, scope, data semantics, acceptance or delivery, each with a recommended answer; `--autonomous` plans without questions, recording ordinary low-consequence, reversible defaults within the request, including user-visible details; material ambiguity in intended outcomes, persistent data or state semantics, or public surface beyond the request stops planning with a concrete question. Each task runs in its own worktree with the executor pinned by `/devlyn-engines` (default: the CLI you opened; Pi and Grok need a pin) under your installed CLAUDE.md/AGENTS.md instructions. Tasks start from committed state, the branch you added the loop on or the remote base for `auto`/`pr`, so a task's worktree holds only what is committed there. A task would run without installed CLAUDE.md/AGENTS.md that exist only in this checkout, so add stops while they differ from HEAD, and drain waits while they differ from the task's start commit. It is marked `[x]` only when its declared checks pass on its committed source and its required reviews cover it: the checks run through the drain's runner (a wholly clean run the executor lists for that source is reused; the drain runs any other check itself), and review coverage is attested by records the executor submits; a failed task becomes `[F]` with its reason and blocks only its dependents. An interrupted drain resumes without repeating accepted work. `--local-only` (or `--no-push`) keeps delivery local: each accepted task stays on its `devlyn/<loop-id>/<task-id>` branch in a retained worktree, nothing is merged or pushed, and the drain report's `Bring into` command brings the result into your branch, stopping if your files cannot be preserved.
|
|
66
66
|
|
|
67
67
|
### Delivery
|
|
68
68
|
|
package/bin/devlyn.js
CHANGED
|
@@ -2239,9 +2239,34 @@ function cleanupDeliver(scope, items, current) {
|
|
|
2239
2239
|
'--remote', 'origin', '--base', scope.remote.base], scope.root).stdout);
|
|
2240
2240
|
if (allocated?.status !== 'ALLOCATED') {
|
|
2241
2241
|
const reason = allocated?.reason || 'allocation failed';
|
|
2242
|
-
return { error: cleanupReason(failureCode(reason), { detail: reason
|
|
2242
|
+
return { error: cleanupReason(failureCode(reason), { detail: reason,
|
|
2243
|
+
...(allocated?.receipt ? { receipt: allocated.receipt } : {}),
|
|
2244
|
+
...(allocated?.resume ? { resume: allocated.resume } : {}),
|
|
2245
|
+
...(allocated?.storage_error ? { storage_error: allocated.storage_error } : {}) }) };
|
|
2243
2246
|
}
|
|
2244
2247
|
const release = (error = null) => {
|
|
2248
|
+
let receipt, managedMarker;
|
|
2249
|
+
try {
|
|
2250
|
+
receipt = JSON.parse(fs.readFileSync(allocated.receipt, 'utf8'));
|
|
2251
|
+
managedMarker = fs.lstatSync(path.join(path.dirname(allocated.receipt), 'storage-allocation.json'), { throwIfNoEntry: false }) !== undefined;
|
|
2252
|
+
}
|
|
2253
|
+
catch (readError) { return { error: cleanupReason('delivery-failed', { detail: readError.message, receipt: allocated.receipt }) }; }
|
|
2254
|
+
if (managedMarker || receipt.mode === 'managed' || ['allocation', 'allocation_state'].some((key) => String(receipt[key] || '').startsWith('managed'))) {
|
|
2255
|
+
// These are the cleanup's own edits and commit in its private checkout.
|
|
2256
|
+
// Return both index/worktree and branch before asking fenced abandonment.
|
|
2257
|
+
const reset = cleanupGit(worktree, ['reset', '--hard', receipt.baseline]);
|
|
2258
|
+
if (reset.error || reset.status !== 0) return { error: cleanupReason(error?.code || 'delivery-failed', {
|
|
2259
|
+
...error?.params, detail: reset.error?.message || reset.stderr.trim(), receipt: allocated.receipt }) };
|
|
2260
|
+
const recovery = ['recover-storage', '--receipt', allocated.receipt,
|
|
2261
|
+
...(receipt.storage?.request?.operation_id ? ['--operation-id', receipt.storage.request.operation_id] : []), '--for-removal'];
|
|
2262
|
+
const recovered = lastJson(run(recovery, scope.root).stdout);
|
|
2263
|
+
if (recovered?.status !== 'ABANDONED') return { error: cleanupReason(error?.code || 'delivery-failed', {
|
|
2264
|
+
...error?.params, detail: recovered?.reason || 'managed cleanup pending', receipt: allocated.receipt,
|
|
2265
|
+
...(recovered?.storage_error ? { storage_error: recovered.storage_error } : {}),
|
|
2266
|
+
resume: recovered?.resume || [python, '-B', helper, ...recovery]
|
|
2267
|
+
.map((arg) => `'${arg.replace(/'/g, "'\\''")}'`).join(' ') }) };
|
|
2268
|
+
return error ? { error } : {};
|
|
2269
|
+
}
|
|
2245
2270
|
for (const args of [['worktree', 'remove', '--force', worktree], ['branch', '-D', branch]]) {
|
|
2246
2271
|
const result = cleanupGit(scope.root, args);
|
|
2247
2272
|
if (result.error || result.status !== 0) return { error: cleanupReason(error?.code || 'delivery-failed', { ...error?.params,
|
|
@@ -312,7 +312,8 @@ function planActivation(releaseRoot, input, env = process.env) {
|
|
|
312
312
|
status.skills = channel('partial', null, reasons);
|
|
313
313
|
return finish(plan);
|
|
314
314
|
}
|
|
315
|
-
|
|
315
|
+
// The selected release is the one source of principles; a committed project block never suppresses it.
|
|
316
|
+
const defaults = fs.readFileSync(path.join(release.root, 'config/skills/_shared/runtime-principles.md'), 'utf8');
|
|
316
317
|
const catalog = skillCatalog(release);
|
|
317
318
|
const instructions = joinText(defaults, catalog);
|
|
318
319
|
const file = (relativePath, utf8) => {
|
|
@@ -327,7 +328,7 @@ function planActivation(releaseRoot, input, env = process.env) {
|
|
|
327
328
|
plan.files.push({ relativePath, utf8, sha256: sha256(utf8) });
|
|
328
329
|
return path.join(context.runDir, relativePath);
|
|
329
330
|
};
|
|
330
|
-
const principles = (mechanism) => { status.principles = channel('configured',
|
|
331
|
+
const principles = (mechanism) => { status.principles = channel('configured', mechanism); };
|
|
331
332
|
const fallback = (reasons = []) => {
|
|
332
333
|
status.skills = channel('partial', 'absolute-catalog', [...reasons, reason('skills-catalog')]);
|
|
333
334
|
status.invocation = { kind: 'read-file', text: `Read ${path.join(release.root, 'config/skills/devlyn-ideate/SKILL.md')}` };
|
|
@@ -419,16 +420,14 @@ function planActivation(releaseRoot, input, env = process.env) {
|
|
|
419
420
|
break;
|
|
420
421
|
}
|
|
421
422
|
case 'copilot': {
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
principles('COPILOT_CUSTOM_INSTRUCTIONS_DIRS');
|
|
431
|
-
}
|
|
423
|
+
const directory = path.join(context.runDir, 'copilot');
|
|
424
|
+
if (directory.includes(',')) {
|
|
425
|
+
status.principles = channel('unavailable', null, [reason('principles-unavailable', { detail: 'comma-in-path' })]);
|
|
426
|
+
} else {
|
|
427
|
+
file('copilot/devlyn.instructions.md', '---\napplyTo: "**"\n---\n' + instructions);
|
|
428
|
+
const dirs = config.instructionsDirs ?? env.COPILOT_CUSTOM_INSTRUCTIONS_DIRS ?? '';
|
|
429
|
+
plan.envPatch.COPILOT_CUSTOM_INSTRUCTIONS_DIRS = dirs.split(',').includes(directory) ? dirs : (dirs ? `${dirs},${directory}` : directory);
|
|
430
|
+
principles('COPILOT_CUSTOM_INSTRUCTIONS_DIRS');
|
|
432
431
|
}
|
|
433
432
|
const root = path.join(release.root, 'config/skills');
|
|
434
433
|
if (root.includes(',') || collisions.length || errors.length) {
|
|
@@ -464,7 +463,6 @@ function planActivation(releaseRoot, input, env = process.env) {
|
|
|
464
463
|
} else status.skills = channel('partial', null, [reason('skills-unavailable', { detail: 'no-initial-task' })]);
|
|
465
464
|
break;
|
|
466
465
|
}
|
|
467
|
-
if (context.committedBlockApplies) status.principles = channel('configured', 'native-project');
|
|
468
466
|
if (plan.engineArgs.length || Object.keys(plan.envPatch).length || plan.prompt) plan.envPatch.DEVLYN_HARNESS_ROOT = release.root;
|
|
469
467
|
return finish(plan);
|
|
470
468
|
}
|
|
@@ -96,6 +96,18 @@
|
|
|
96
96
|
"length": 3823,
|
|
97
97
|
"sha256": "372d8fcee5f2498bcf282ebd3b3ba74d2ccf317019406193317275864d1f78a2"
|
|
98
98
|
}
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"versions": [
|
|
102
|
+
"4.3.21"
|
|
103
|
+
],
|
|
104
|
+
"length": 4018,
|
|
105
|
+
"sha256": "7d559f330bb426022b8166e0a0cbb77d25ca8d204d3ca6c1f4fbcb18c3963626",
|
|
106
|
+
"preamble": "# Project Instructions\n\ndevlyn-cli installs the `devlyn-ideate` and `devlyn-engines` skills alongside the principles below, which are non-negotiable on every change \u2014 yours and any sub-agent's.\n\n",
|
|
107
|
+
"body": {
|
|
108
|
+
"length": 3823,
|
|
109
|
+
"sha256": "b8afbb73fb27c01544b411c90242bdfcfaf2537907a943270540cbcdfe2bf148"
|
|
110
|
+
}
|
|
99
111
|
}
|
|
100
112
|
],
|
|
101
113
|
"CLAUDE.md": [
|
|
@@ -195,6 +207,18 @@
|
|
|
195
207
|
"length": 3823,
|
|
196
208
|
"sha256": "372d8fcee5f2498bcf282ebd3b3ba74d2ccf317019406193317275864d1f78a2"
|
|
197
209
|
}
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"versions": [
|
|
213
|
+
"4.3.21"
|
|
214
|
+
],
|
|
215
|
+
"length": 4018,
|
|
216
|
+
"sha256": "7d559f330bb426022b8166e0a0cbb77d25ca8d204d3ca6c1f4fbcb18c3963626",
|
|
217
|
+
"preamble": "# Project Instructions\n\ndevlyn-cli installs the `devlyn-ideate` and `devlyn-engines` skills alongside the principles below, which are non-negotiable on every change \u2014 yours and any sub-agent's.\n\n",
|
|
218
|
+
"body": {
|
|
219
|
+
"length": 3823,
|
|
220
|
+
"sha256": "b8afbb73fb27c01544b411c90242bdfcfaf2537907a943270540cbcdfe2bf148"
|
|
221
|
+
}
|
|
198
222
|
}
|
|
199
223
|
],
|
|
200
224
|
"paragraphs": {
|
|
@@ -330,6 +354,7 @@
|
|
|
330
354
|
"5e329ef8e25962ef0c9b29cf769fa1a92a82ab597ef29118961ff250eee76f70",
|
|
331
355
|
"5e73319288935d1857bf1d9b8a46f56c19bdffd46ff2f822b930f2b17cb1f98d",
|
|
332
356
|
"5eaedae1a36f29150537ca51771c3ed19afadc72e08a304179c52454252ad312",
|
|
357
|
+
"5f641238add8c0124994452bd9f814412111f23b53355af6b736940b151e2aae",
|
|
333
358
|
"5ffc38dcb6fdccd02c03d67777b3a45ffc131883b61ce604dc8c9d74394dd739",
|
|
334
359
|
"601518dee731c1966283001440827f4250beccc82bfb573d596e04eac45c1918",
|
|
335
360
|
"6152799d5f13bb10d474f2498c0b5258da2ee5197819b67ff87716183711a59b",
|
|
@@ -773,6 +798,7 @@
|
|
|
773
798
|
"5e73319288935d1857bf1d9b8a46f56c19bdffd46ff2f822b930f2b17cb1f98d",
|
|
774
799
|
"5e911fbf2ddc2fafa3a62a42b66036bf9a70c52eab36207678e2a90f13bd157d",
|
|
775
800
|
"5f38703141243c57ce3bd616331b1c6d02b774a9559d1cf6854f92731b1561ca",
|
|
801
|
+
"5f641238add8c0124994452bd9f814412111f23b53355af6b736940b151e2aae",
|
|
776
802
|
"5fc4015eaff44f45d38070d5c55f8ab3aa99397e02a9451255d3a3565e1f0c77",
|
|
777
803
|
"60a9d5e21a3bf0bb16a04b9680905fd8d3e9332b883f10aae48c00155086206a",
|
|
778
804
|
"6170d780ab4f3cb5e2ea7d2757f9239d35dbbc1f9398e73877a95d5ef4c582ee",
|
package/bin/instructions.js
CHANGED
|
@@ -24,7 +24,7 @@ function managedBlock(template, eol = '\n') {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
function sessionDefaults(template) {
|
|
27
|
-
return 'The following Devlyn instructions are defaults for this session.
|
|
27
|
+
return 'The following Devlyn instructions are defaults for this session. Explicit user and native owner/project instructions take precedence, except a Devlyn managed block (devlyn:instructions markers), which these defaults replace. They change no other engine instructions or permissions.\n\n'
|
|
28
28
|
+ normalize(template);
|
|
29
29
|
}
|
|
30
30
|
|
package/bin/skill-history.json
CHANGED
|
@@ -58,6 +58,7 @@
|
|
|
58
58
|
"45ef27af9ec27089e2861c13b882521fc6bf073dc6b7a356b326b4a27c5e6e24",
|
|
59
59
|
"4685be6a94ad5587ce53785c14a60cccf9a852d9d23391dba0a5bcd0c64931cf",
|
|
60
60
|
"484db9dd2635de5f5acbcf692e2f329f33c0a483951e27bcd77bcbafbc052e19",
|
|
61
|
+
"491fab4aca617e7e1c9735addfe4b0f249192a4c14c43a85225e65b99031c89b",
|
|
61
62
|
"4ecb004b24a8adfe41c7416c3fa24e62cf76baa3b276ae1ce5091caef77e57b8",
|
|
62
63
|
"4fed91aed4dc1cd28a9e07229dbe9b7f6d8127e5f763dde8f76bb1b6f6855cce",
|
|
63
64
|
"514bfaf5667af3c9d4d36f391e6567a5eb759c6dfb06a5c3ea23cf29692844ef",
|
|
@@ -69,6 +70,7 @@
|
|
|
69
70
|
"58af082042ac1cec7fb60dd2b6287e714db2684edeea5f96112716464f583742",
|
|
70
71
|
"5995fcdb203a6b98c3e7cae4fe6cc7a3fb57f06a5d32069576e58350d50eab6f",
|
|
71
72
|
"59f0ecc2c1fd9620e4cac06be370e0bf9965a35c20616047445dbc42da6a1677",
|
|
73
|
+
"5b8541a98c06de50443c2c3905c1b92ba143a972dfe618c4b296b799e0e1673c",
|
|
72
74
|
"5be2e643f96b6ce503ae8d631c67729f0c24b6c5d2b431c087161b520ccbe417",
|
|
73
75
|
"60cdd1a8b220e629bcba3a24652323d16e3e6a15ba5b07c69ef2785a9c2eca70",
|
|
74
76
|
"61ec4c0435a2f0b307df8e88d81d9862c3abc1bf758648f2c18039581596659b",
|
|
@@ -119,6 +121,7 @@
|
|
|
119
121
|
"9815b6e6963e068872a6dbeae24068143bf92042bb035f67bafd1a224d65bcb0",
|
|
120
122
|
"998343c148618b937556b58b83749c05d5aa3283280d751c118da6a542fb87f2",
|
|
121
123
|
"9dd3ec225818efe0ad3726192db94ff129154e995617a9d3c150fc58ad0f9f2c",
|
|
124
|
+
"9e4d06fd466fa896040109bac0018fcfb2f1604d55abb4180ff1f1a0b665bbc8",
|
|
122
125
|
"9f14ca629e41730b1a9fb5d0ad1a39cff558fe34758d6ceccbb9de498f9f384e",
|
|
123
126
|
"a11950a5880346f03257c688fd8bc6f8c29fc0b7c05c90e8f5211d5fb7665774",
|
|
124
127
|
"a405a99b988f6edd2eabb0504b36309bb4cf0c3b97eab26bb7ef257e4515dbf3",
|
|
@@ -137,9 +140,11 @@
|
|
|
137
140
|
"afd8966f25b601b4f6a915fa2c6591b7369f55e8a9ae370cdcb98caf886de707",
|
|
138
141
|
"b1fced67f40768df688e8ce34d3105dafaf6027d3e4522b77276d168bf150f32",
|
|
139
142
|
"b27e98e1872f450aa11c85d6aebd70d25cb5d45db13662b7ce57a1ab1736b348",
|
|
143
|
+
"b382de815165e3d23bf95206e73b496b790f2b17dd4dca91a9038311032b9647",
|
|
140
144
|
"b3ba619b28a26cb71e2d1fd45adb203cca2b0917acd44288bb1dadf300859259",
|
|
141
145
|
"b4414c6811d824ba16084bc1dda9b956d04055fd4ec4467e62d2d27f364389a0",
|
|
142
146
|
"b6b5b1952f7d2daa15af39858bb05dda9b5f55dc15c479f8fa7ca84a0ad5299e",
|
|
147
|
+
"ba2895753d926f3d8ebcb800299ec2853932620f9374a18b6c833aa33e8731bd",
|
|
143
148
|
"ba64bf037553aafdfb6de721fff73f32ae6b0e6fc1fb54d857d347bf3e9b8952",
|
|
144
149
|
"bb967300f6fdee8b8461ff2a5f82acd055d969dc6cdc1040cc36a39867cad6e6",
|
|
145
150
|
"bf553a8028b16a662916922ef1017d9d8d09dac487134252f2871776e5166ce2",
|
|
@@ -184,6 +189,7 @@
|
|
|
184
189
|
"f958bfabd2e056fea911526fba2196d2ed5a48828f576e5ce1657100b466db20",
|
|
185
190
|
"f9617e1034543f31ae2a3820301fbac6e4674e5d6fbc0d4b76751fe87b8e013e",
|
|
186
191
|
"fd68c7a74272929a14e685e447a51058ffcdd4c1d6bef83cbba18045c07aee55",
|
|
192
|
+
"fdb608b34a8600b4ce209d7f645ec5ad4475948be6ad95c941cc7ef02b5959df",
|
|
187
193
|
"fe386122e502410394ab60643e79aa736ddb5030257c863f4a198e23b56b4cef",
|
|
188
194
|
"feaa255b2b6a7b0dc79877c4eb620c0f3cac88b50d2d1407a0a8a02ebc08ed49"
|
|
189
195
|
],
|
|
@@ -193,7 +199,8 @@
|
|
|
193
199
|
"better-auth-setup": [
|
|
194
200
|
"4cdc8e524f4caa806ac6899c4259cd7dfb872d0ba2226159024938607e1ce85b",
|
|
195
201
|
"ca927c5078ef5f6ef145a8a11203bec33e57d71d130befeb5b65ad13f4138b6f",
|
|
196
|
-
"e97c39c5d669ffc1f49d57fd3a016e852727e57c3abe2f9be1ebffab9fcb19ec"
|
|
202
|
+
"e97c39c5d669ffc1f49d57fd3a016e852727e57c3abe2f9be1ebffab9fcb19ec",
|
|
203
|
+
"eaf93cc4f0fa83d53cc4228f272229a5564411cf5258787f111efe3c76cf8f6a"
|
|
197
204
|
],
|
|
198
205
|
"cloudflare-nextjs-setup": [
|
|
199
206
|
"f147a28b9f6f62feb21df89bdf08869820f4871ede7a8ba4a242246509ee6e35"
|
|
@@ -335,13 +342,16 @@
|
|
|
335
342
|
"0dc69c20434966015176d83baa6f95b3421f9e13d0b1bd608a22f0560eae1049",
|
|
336
343
|
"0fe9b270d670f70da9d2535969b6117684b7c1517806b3029ebaf9624da8006c",
|
|
337
344
|
"1582c202d361af927c2d0843d4bcb72ccc98a0a2a9d8344d118d680f70f7e1e4",
|
|
345
|
+
"15f3eca3fad92b199814a00d42e4005a2838a40d800b9f755f7165d31773e7c9",
|
|
338
346
|
"19207315f23c9a12bf2ced0e4e79bb7dfdc7cc5d0c9dd94095d9c6dfe1e8fea8",
|
|
339
347
|
"1d8c3bd31c8b755acd0c3c9f416acb5024dfa99fbf5e2c14d8d6df00a24fe9b4",
|
|
340
348
|
"300d1af60cc53285935dc4b5b370e157707218d844a4303b96d7826eef36ed43",
|
|
341
349
|
"302b1a6c109087dce02ed6af184d6aeeca6cecfd40ebe638beecf8bdf21cf59c",
|
|
350
|
+
"338a2b5ddde0f09444040c45922716663b1df76ec1a6c97ebdeb770b9e3ede49",
|
|
342
351
|
"33cf196ba7dd2d96df119707d874317e6005f1323fc2cae677c53e2f134f9ff4",
|
|
343
352
|
"36b58dbdc26e51abc05a60872c4582faeebd67e9fe5626a3933467ba07c68dc4",
|
|
344
353
|
"40237cd5259dbcf7c490f130e844a9e32eea48a8edabd50800edee5029bf95a4",
|
|
354
|
+
"4213143689f7e7fe62ab8743c256a45492fafffc1757d64901b7b02725aee5c3",
|
|
345
355
|
"49d6e024b343dd77e4c0cea0e513e40fe679a7a8192953190d042b3a21bbf69c",
|
|
346
356
|
"5536f8391ec4442f1b793dba8dd5d7820d45f4b6dadf1111cbac9d54469a01ca",
|
|
347
357
|
"573a6059a7383b37affd9c2e8bc6c88a4fb54117628a5a0746406cc32111e9aa",
|
|
@@ -380,6 +390,7 @@
|
|
|
380
390
|
"e25da746dc37b2e82c658a28d9481fd69741151045683eee2119582ddaf731cd",
|
|
381
391
|
"e47a2ce766ae81fa0870e0a8dfbfe737311de69ce620e92217abbe4c532e3c8b",
|
|
382
392
|
"e929f76c15349f1b9bc1e84e0a3e9e48e916168d79270e0f4a36ea8eab9b5388",
|
|
393
|
+
"ebc693658da0b260c876f29cd6dfc2b12ae6690e3532622fa9c1cd4481162bd8",
|
|
383
394
|
"f2243cc4150e225961825f6097b0cf38166c291dcf58127516ceee841f7ed4c8",
|
|
384
395
|
"fa536198d539a3c85f54dda74d0d78716ac6e6849e733bdadecc8605511eac37",
|
|
385
396
|
"fffa5a47a414c9eae607aeacb6f1a35c5dd5a7f9d1f8532cccf275c79b80775c"
|
|
@@ -789,6 +800,9 @@
|
|
|
789
800
|
"4.3.2",
|
|
790
801
|
"4.3.20",
|
|
791
802
|
"4.3.21",
|
|
803
|
+
"4.3.22",
|
|
804
|
+
"4.3.23",
|
|
805
|
+
"4.3.24",
|
|
792
806
|
"4.3.3",
|
|
793
807
|
"4.3.4",
|
|
794
808
|
"4.3.5",
|