@planu/cli 4.3.20 → 4.3.22
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 +12 -0
- package/dist/engine/spec-format/lean-technical-generator.js +5 -7
- package/dist/engine/spec-format/unified-spec-builder.js +1 -1
- package/dist/engine/spec-generator/fallback-generator.js +4 -30
- package/dist/engine/test-generators/contract-test-generator.d.ts +3 -2
- package/dist/engine/test-generators/contract-test-generator.js +8 -43
- package/dist/engine/test-generators/mock-generator.d.ts +1 -1
- package/dist/engine/test-generators/mock-generator.js +13 -31
- package/dist/tools/bump-spec-version.js +2 -1
- package/dist/tools/create-spec.js +30 -10
- package/dist/tools/generate-batch-script.js +2 -1
- package/dist/tools/generate-proposal.js +2 -1
- package/dist/tools/generate-tests/adapters/contract-testing-adapter.js +9 -3
- package/dist/tools/heal-spec-docs.js +96 -40
- package/dist/tools/migrate-tech/core-handlers.js +24 -72
- package/dist/tools/register-agent-squad-tools.js +2 -1
- package/dist/tools/register-platform-tools/design-stack-tools.js +10 -10
- package/dist/tools/register-platform-tools/lifecycle-infra-tools.js +8 -8
- package/dist/tools/register-spec-tools/analysis-tools.js +7 -7
- package/dist/tools/register-spec-tools/core-spec-tools.js +6 -6
- package/dist/tools/render-spec-for-provider.js +2 -1
- package/dist/tools/schemas/github.js +4 -3
- package/dist/tools/schemas/index.d.ts +1 -0
- package/dist/tools/schemas/index.js +1 -0
- package/dist/tools/schemas/spec-id.d.ts +7 -0
- package/dist/tools/schemas/spec-id.js +17 -0
- package/dist/tools/spec-prompt-handler.js +2 -1
- package/dist/tools/tool-registry/core-tools.js +3 -2
- package/dist/tools/tool-registry/group-infra.js +3 -3
- package/dist/tools/tool-registry/group-quality-compliance.js +11 -14
- package/package.json +9 -9
- package/planu-native.json +1 -1
- package/planu-plugin.json +1 -1
|
@@ -49,7 +49,7 @@ import { handleDefineLintRule, handleListLintRules, handleRunSpecLint, handleDel
|
|
|
49
49
|
// ── Readiness (register-readiness-tools.ts) ───────────────────────────────────
|
|
50
50
|
import { handleCheckReadiness } from '../check-readiness.js';
|
|
51
51
|
import { handlePackageHandoff } from '../package-handoff.js';
|
|
52
|
-
import { CheckReadinessOutputSchema } from '../schemas/index.js';
|
|
52
|
+
import { CheckReadinessOutputSchema, SpecIdSchema } from '../schemas/index.js';
|
|
53
53
|
// ── Approval (register-approval-tools.ts) ────────────────────────────────────
|
|
54
54
|
import { handleConfigureApprovalPolicy, handleApproveSpec, handleRequestChanges, handleApprovalStatus, handleIssueReviewerToken, } from '../approval-handler.js';
|
|
55
55
|
// ── SPEC-961: Architecture lint ─────────────────────────────────────────────
|
|
@@ -250,7 +250,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
250
250
|
description: '[DEPRECATED] Use check_compliance with mode=verify instead. Checks whether implemented code matches an approved spec. Score >=80 = compliant, 60-79 = partial, <60 = non-compliant.',
|
|
251
251
|
annotations: { readOnlyHint: false },
|
|
252
252
|
inputSchema: {
|
|
253
|
-
specId:
|
|
253
|
+
specId: SpecIdSchema.describe('Spec ID to verify (e.g. SPEC-042).'),
|
|
254
254
|
projectPath: z
|
|
255
255
|
.string()
|
|
256
256
|
.max(4096)
|
|
@@ -393,7 +393,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
393
393
|
description: t('tools.security_check.description'),
|
|
394
394
|
annotations: { readOnlyHint: true },
|
|
395
395
|
inputSchema: {
|
|
396
|
-
specId:
|
|
396
|
+
specId: SpecIdSchema.describe('Spec ID to analyze'),
|
|
397
397
|
...projectIdSchema,
|
|
398
398
|
subcommand: z
|
|
399
399
|
.enum(['analyze', 'score', 'drift'])
|
|
@@ -526,7 +526,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
526
526
|
'Use library="all" to generate schemas for all three libraries at once.',
|
|
527
527
|
inputSchema: {
|
|
528
528
|
projectPath: z.string().min(1).max(4096).describe('Absolute path to the project root.'),
|
|
529
|
-
specId:
|
|
529
|
+
specId: SpecIdSchema.describe('Spec ID to analyze (e.g. SPEC-042).'),
|
|
530
530
|
library: z
|
|
531
531
|
.enum(['zod', 'yup', 'valibot', 'all'])
|
|
532
532
|
.describe('Schema library. Values: zod, yup, valibot, all.'),
|
|
@@ -547,7 +547,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
547
547
|
'"tanstack-query" for React Query hooks.',
|
|
548
548
|
inputSchema: {
|
|
549
549
|
projectPath: z.string().min(1).max(4096).describe('Absolute path to the project root.'),
|
|
550
|
-
specId:
|
|
550
|
+
specId: SpecIdSchema.describe('Spec ID to analyze (e.g. SPEC-042).'),
|
|
551
551
|
framework: z
|
|
552
552
|
.enum(['fetch', 'tanstack-query'])
|
|
553
553
|
.describe('Client framework. Values: fetch, tanstack-query.'),
|
|
@@ -583,10 +583,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
583
583
|
annotations: { readOnlyHint: true },
|
|
584
584
|
inputSchema: {
|
|
585
585
|
projectPath: z.string().describe('Absolute path to the project root'),
|
|
586
|
-
specId:
|
|
587
|
-
.string()
|
|
588
|
-
.optional()
|
|
589
|
-
.describe('SPEC-XXX ID to generate acceptance criteria stubs from'),
|
|
586
|
+
specId: SpecIdSchema.optional().describe('Spec ID to generate acceptance criteria stubs from'),
|
|
590
587
|
registerFile: z
|
|
591
588
|
.string()
|
|
592
589
|
.optional()
|
|
@@ -598,7 +595,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
598
595
|
annotations: { readOnlyHint: true },
|
|
599
596
|
inputSchema: {
|
|
600
597
|
projectPath: z.string().describe('Absolute path to the project root'),
|
|
601
|
-
specId:
|
|
598
|
+
specId: SpecIdSchema.optional().describe('Spec ID to check readiness/completion for'),
|
|
602
599
|
},
|
|
603
600
|
}, async (params) => handleTddStatus(params));
|
|
604
601
|
// ── Coverage ─────────────────────────────────────────────────────────────────
|
|
@@ -841,7 +838,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
841
838
|
description: t('tools.check_readiness.description'),
|
|
842
839
|
inputSchema: {
|
|
843
840
|
...projectIdSchema,
|
|
844
|
-
specId:
|
|
841
|
+
specId: SpecIdSchema.describe('Spec ID to evaluate'),
|
|
845
842
|
mode: z
|
|
846
843
|
.enum(['strict', 'lenient'])
|
|
847
844
|
.optional()
|
|
@@ -962,7 +959,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
962
959
|
description: t('tools.package_handoff.description'),
|
|
963
960
|
inputSchema: {
|
|
964
961
|
...projectIdSchema,
|
|
965
|
-
specId:
|
|
962
|
+
specId: SpecIdSchema.describe('Spec ID to generate handoff package for'),
|
|
966
963
|
},
|
|
967
964
|
}, safeLicensed('package_handoff', withProject((args) => handlePackageHandoff(args))));
|
|
968
965
|
// ── Approval ─────────────────────────────────────────────────────────────────
|
|
@@ -1020,7 +1017,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
1020
1017
|
'When the required number of approvals is reached, the approval gate opens.',
|
|
1021
1018
|
inputSchema: {
|
|
1022
1019
|
projectPath: z.string().min(1).max(4096).describe('Absolute path to the project root.'),
|
|
1023
|
-
specId:
|
|
1020
|
+
specId: SpecIdSchema.describe('Spec ID to approve (e.g. SPEC-042).'),
|
|
1024
1021
|
reviewer: z
|
|
1025
1022
|
.string()
|
|
1026
1023
|
.describe('Name, email, or username of the reviewer approving the spec.'),
|
|
@@ -1073,7 +1070,7 @@ export function registerQualityComplianceGroupTools(s) {
|
|
|
1073
1070
|
'time in review, and SLA breach warning if applicable.',
|
|
1074
1071
|
inputSchema: {
|
|
1075
1072
|
projectPath: z.string().min(1).max(4096).describe('Absolute path to the project root.'),
|
|
1076
|
-
specId:
|
|
1073
|
+
specId: SpecIdSchema.describe('Spec ID to check (e.g. SPEC-042).'),
|
|
1077
1074
|
},
|
|
1078
1075
|
annotations: { title: 'Approval Status', readOnlyHint: true },
|
|
1079
1076
|
}, safeTracked('approval_status', (args) => handleApprovalStatus(args)));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@planu/cli",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.22",
|
|
4
4
|
"description": "Planu — MCP Server for Spec Driven Development with native Rust acceleration for hot paths. Cross-platform (Linux/macOS/Windows, x64/arm64, glibc/musl).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -34,14 +34,14 @@
|
|
|
34
34
|
"packageName": "@planu/core"
|
|
35
35
|
},
|
|
36
36
|
"optionalDependencies": {
|
|
37
|
-
"@planu/core-darwin-arm64": "4.3.
|
|
38
|
-
"@planu/core-darwin-x64": "4.3.
|
|
39
|
-
"@planu/core-linux-arm64-gnu": "4.3.
|
|
40
|
-
"@planu/core-linux-arm64-musl": "4.3.
|
|
41
|
-
"@planu/core-linux-x64-gnu": "4.3.
|
|
42
|
-
"@planu/core-linux-x64-musl": "4.3.
|
|
43
|
-
"@planu/core-win32-arm64-msvc": "4.3.
|
|
44
|
-
"@planu/core-win32-x64-msvc": "4.3.
|
|
37
|
+
"@planu/core-darwin-arm64": "4.3.22",
|
|
38
|
+
"@planu/core-darwin-x64": "4.3.22",
|
|
39
|
+
"@planu/core-linux-arm64-gnu": "4.3.22",
|
|
40
|
+
"@planu/core-linux-arm64-musl": "4.3.22",
|
|
41
|
+
"@planu/core-linux-x64-gnu": "4.3.22",
|
|
42
|
+
"@planu/core-linux-x64-musl": "4.3.22",
|
|
43
|
+
"@planu/core-win32-arm64-msvc": "4.3.22",
|
|
44
|
+
"@planu/core-win32-x64-msvc": "4.3.22"
|
|
45
45
|
},
|
|
46
46
|
"engines": {
|
|
47
47
|
"node": ">=24.0.0"
|
package/planu-native.json
CHANGED
package/planu-plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "dev.planu.cli",
|
|
3
3
|
"displayName": "Planu — Spec Driven Development",
|
|
4
4
|
"description": "Manage software specs, estimations, and autonomous SDD workflows. Language-agnostic MCP server for Claude Code.",
|
|
5
|
-
"version": "4.3.
|
|
5
|
+
"version": "4.3.22",
|
|
6
6
|
"icon": "assets/plugin/icon.svg",
|
|
7
7
|
"command": [
|
|
8
8
|
"npx",
|