@dtlabs/ai-toolkit 0.16.0 → 0.16.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/CHANGELOG.md +8 -0
- package/package.json +1 -1
- package/src/claude/scripts/wb-validate.js +15 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
## 0.1.4 (2026-07-21)
|
|
2
|
+
## [0.16.1](https://github.com/dtlab-tech/ai-toolkit/compare/v0.16.0...v0.16.1) (2026-10-02)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* **wb-validate:** require groupingRationale only when outputCount > 1 ([e3cb71a](https://github.com/dtlab-tech/ai-toolkit/commit/e3cb71a7f38fbd974c70f3dbdd99223a6aa05048))
|
|
8
|
+
* **wb-validate:** require groupingRationale only when outputCount > 1 ([7406fbe](https://github.com/dtlab-tech/ai-toolkit/commit/7406fbe336304c2ebcd012fc6a6b1b4980121a64))
|
|
9
|
+
|
|
2
10
|
## [0.16.0](https://github.com/dtlab-tech/ai-toolkit/compare/v0.15.1...v0.16.0) (2026-10-02)
|
|
3
11
|
|
|
4
12
|
|
package/package.json
CHANGED
|
@@ -359,7 +359,7 @@ for (const phase of phases) {
|
|
|
359
359
|
|
|
360
360
|
const topLevelFields = [
|
|
361
361
|
'id', 'title', 'outcome', 'domain', 'agentType', 'dependsOn',
|
|
362
|
-
'acceptanceCriteria', 'outputCount', '
|
|
362
|
+
'acceptanceCriteria', 'outputCount', 'commit',
|
|
363
363
|
]
|
|
364
364
|
for (const field of topLevelFields) {
|
|
365
365
|
if (task[field] == null) {
|
|
@@ -374,6 +374,20 @@ for (const phase of phases) {
|
|
|
374
374
|
}
|
|
375
375
|
}
|
|
376
376
|
|
|
377
|
+
// groupingRationale is required only when outputCount > 1 (the generator agent's own
|
|
378
|
+
// contract: a single-output task has nothing to justify grouping, so it emits null) —
|
|
379
|
+
// null is the documented, correct value there, not a missing field.
|
|
380
|
+
if (task.outputCount > 1 && task.groupingRationale == null) {
|
|
381
|
+
report.errors.push({
|
|
382
|
+
category: ERRORS.MISSING_FIELD,
|
|
383
|
+
severity: 'error',
|
|
384
|
+
taskId,
|
|
385
|
+
field: 'groupingRationale',
|
|
386
|
+
message: `Task "${taskId}" has outputCount > 1 but is missing required field "groupingRationale"`,
|
|
387
|
+
details: { taskId, field: 'groupingRationale' },
|
|
388
|
+
})
|
|
389
|
+
}
|
|
390
|
+
|
|
377
391
|
// Nested: verification.commands — existence and array type only; emptiness checked later
|
|
378
392
|
if (task.verification == null || task.verification.commands == null) {
|
|
379
393
|
report.errors.push({
|