@planu/cli 0.92.0 → 0.93.0
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/dist/engine/telemetry/error-reporter.d.ts +6 -0
- package/dist/engine/telemetry/error-reporter.d.ts.map +1 -1
- package/dist/engine/telemetry/error-reporter.js +22 -0
- package/dist/engine/telemetry/error-reporter.js.map +1 -1
- package/dist/tools/audit-trail-handler.d.ts +6 -2
- package/dist/tools/audit-trail-handler.d.ts.map +1 -1
- package/dist/tools/audit-trail-handler.js +12 -9
- package/dist/tools/audit-trail-handler.js.map +1 -1
- package/dist/tools/check-readiness.d.ts +3 -1
- package/dist/tools/check-readiness.d.ts.map +1 -1
- package/dist/tools/check-readiness.js +9 -1
- package/dist/tools/check-readiness.js.map +1 -1
- package/dist/tools/data-governance.d.ts +3 -1
- package/dist/tools/data-governance.d.ts.map +1 -1
- package/dist/tools/data-governance.js +9 -1
- package/dist/tools/data-governance.js.map +1 -1
- package/dist/tools/register-audit-trail-tools.d.ts.map +1 -1
- package/dist/tools/register-audit-trail-tools.js +27 -4
- package/dist/tools/register-audit-trail-tools.js.map +1 -1
- package/dist/tools/register-backlog-tools.d.ts.map +1 -1
- package/dist/tools/register-backlog-tools.js +24 -8
- package/dist/tools/register-backlog-tools.js.map +1 -1
- package/dist/tools/register-ci-tools.d.ts.map +1 -1
- package/dist/tools/register-ci-tools.js +27 -5
- package/dist/tools/register-ci-tools.js.map +1 -1
- package/dist/tools/register-coverage-tools.d.ts.map +1 -1
- package/dist/tools/register-coverage-tools.js +14 -2
- package/dist/tools/register-coverage-tools.js.map +1 -1
- package/dist/tools/register-domain-criteria-tools.d.ts.map +1 -1
- package/dist/tools/register-domain-criteria-tools.js +27 -4
- package/dist/tools/register-domain-criteria-tools.js.map +1 -1
- package/dist/tools/register-elicitation-tools.d.ts.map +1 -1
- package/dist/tools/register-elicitation-tools.js +14 -2
- package/dist/tools/register-elicitation-tools.js.map +1 -1
- package/dist/tools/register-event-tools.d.ts.map +1 -1
- package/dist/tools/register-event-tools.js +14 -2
- package/dist/tools/register-event-tools.js.map +1 -1
- package/dist/tools/register-federation-tools.d.ts.map +1 -1
- package/dist/tools/register-federation-tools.js +27 -4
- package/dist/tools/register-federation-tools.js.map +1 -1
- package/dist/tools/register-governance-tools.d.ts.map +1 -1
- package/dist/tools/register-governance-tools.js +27 -4
- package/dist/tools/register-governance-tools.js.map +1 -1
- package/dist/tools/register-hooks-tools.d.ts.map +1 -1
- package/dist/tools/register-hooks-tools.js +14 -2
- package/dist/tools/register-hooks-tools.js.map +1 -1
- package/dist/tools/register-infrastructure-tools.d.ts.map +1 -1
- package/dist/tools/register-infrastructure-tools.js +17 -2
- package/dist/tools/register-infrastructure-tools.js.map +1 -1
- package/dist/tools/register-lessons-tools.d.ts.map +1 -1
- package/dist/tools/register-lessons-tools.js +12 -4
- package/dist/tools/register-lessons-tools.js.map +1 -1
- package/dist/tools/register-living-spec-advanced-tools.d.ts.map +1 -1
- package/dist/tools/register-living-spec-advanced-tools.js +92 -16
- package/dist/tools/register-living-spec-advanced-tools.js.map +1 -1
- package/dist/tools/register-living-spec-tools.d.ts.map +1 -1
- package/dist/tools/register-living-spec-tools.js +53 -10
- package/dist/tools/register-living-spec-tools.js.map +1 -1
- package/dist/tools/register-migration-tools.d.ts.map +1 -1
- package/dist/tools/register-migration-tools.js +10 -3
- package/dist/tools/register-migration-tools.js.map +1 -1
- package/dist/tools/register-readiness-tools.d.ts.map +1 -1
- package/dist/tools/register-readiness-tools.js +27 -4
- package/dist/tools/register-readiness-tools.js.map +1 -1
- package/dist/tools/register-scan-tools.js +1 -1
- package/dist/tools/register-scan-tools.js.map +1 -1
- package/dist/tools/register-scope-tools.d.ts.map +1 -1
- package/dist/tools/register-scope-tools.js +27 -4
- package/dist/tools/register-scope-tools.js.map +1 -1
- package/dist/tools/register-search-tools.d.ts.map +1 -1
- package/dist/tools/register-search-tools.js +14 -2
- package/dist/tools/register-search-tools.js.map +1 -1
- package/dist/tools/register-security-tools.d.ts.map +1 -1
- package/dist/tools/register-security-tools.js +14 -2
- package/dist/tools/register-security-tools.js.map +1 -1
- package/dist/tools/register-spec-observability-tools.d.ts.map +1 -1
- package/dist/tools/register-spec-observability-tools.js +14 -2
- package/dist/tools/register-spec-observability-tools.js.map +1 -1
- package/dist/tools/register-spec-split-tools.d.ts.map +1 -1
- package/dist/tools/register-spec-split-tools.js +26 -6
- package/dist/tools/register-spec-split-tools.js.map +1 -1
- package/dist/tools/register-stack-tools.d.ts.map +1 -1
- package/dist/tools/register-stack-tools.js +40 -9
- package/dist/tools/register-stack-tools.js.map +1 -1
- package/dist/tools/register-team-tools.d.ts.map +1 -1
- package/dist/tools/register-team-tools.js +38 -6
- package/dist/tools/register-team-tools.js.map +1 -1
- package/dist/tools/register-telemetry-tools.d.ts.map +1 -1
- package/dist/tools/register-telemetry-tools.js +6 -1
- package/dist/tools/register-telemetry-tools.js.map +1 -1
- package/dist/tools/register-versioning-tools.d.ts.map +1 -1
- package/dist/tools/register-versioning-tools.js +66 -13
- package/dist/tools/register-versioning-tools.js.map +1 -1
- package/dist/tools/resolve-project-id.d.ts +13 -0
- package/dist/tools/resolve-project-id.d.ts.map +1 -0
- package/dist/tools/resolve-project-id.js +22 -0
- package/dist/tools/resolve-project-id.js.map +1 -0
- package/dist/tools/safe-handler.d.ts.map +1 -1
- package/dist/tools/safe-handler.js +7 -2
- package/dist/tools/safe-handler.js.map +1 -1
- package/package.json +1 -1
|
@@ -13,4 +13,10 @@ export declare function sanitizeErrorMessage(message: string): string;
|
|
|
13
13
|
* Call this from safe-handler catch blocks after returning isError:true to the user.
|
|
14
14
|
*/
|
|
15
15
|
export declare function reportToolError(toolName: string, error: unknown): void;
|
|
16
|
+
/**
|
|
17
|
+
* Sends a tool_error event for business-logic validation failures (isError:true responses).
|
|
18
|
+
* These are expected errors (missing params, not-found, etc.) but still valuable for monitoring.
|
|
19
|
+
* Fire-and-forget — never throws.
|
|
20
|
+
*/
|
|
21
|
+
export declare function reportToolValidationError(toolName: string, message: string): void;
|
|
16
22
|
//# sourceMappingURL=error-reporter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-reporter.d.ts","sourceRoot":"","sources":["../../../src/engine/telemetry/error-reporter.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM5D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"error-reporter.d.ts","sourceRoot":"","sources":["../../../src/engine/telemetry/error-reporter.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM5D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAmBtE;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAgBjF"}
|
|
@@ -37,6 +37,28 @@ export function reportToolError(toolName, error) {
|
|
|
37
37
|
properties: {
|
|
38
38
|
tool: toolName,
|
|
39
39
|
message,
|
|
40
|
+
errorType: 'exception',
|
|
41
|
+
planVersion: PLANU_VERSION,
|
|
42
|
+
nodeVersion: process.version,
|
|
43
|
+
},
|
|
44
|
+
installationId: 'anonymous',
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Sends a tool_error event for business-logic validation failures (isError:true responses).
|
|
49
|
+
* These are expected errors (missing params, not-found, etc.) but still valuable for monitoring.
|
|
50
|
+
* Fire-and-forget — never throws.
|
|
51
|
+
*/
|
|
52
|
+
export function reportToolValidationError(toolName, message) {
|
|
53
|
+
if (!isErrorReportingEnabled()) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
sendTelemetryEvent({
|
|
57
|
+
event: 'tool_error',
|
|
58
|
+
properties: {
|
|
59
|
+
tool: toolName,
|
|
60
|
+
message: sanitizeErrorMessage(message),
|
|
61
|
+
errorType: 'validation',
|
|
40
62
|
planVersion: PLANU_VERSION,
|
|
41
63
|
nodeVersion: process.version,
|
|
42
64
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-reporter.js","sourceRoot":"","sources":["../../../src/engine/telemetry/error-reporter.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,wFAAwF;AACxF,gEAAgE;AAChE,uFAAuF;AAEvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,KAAK,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,OAAO,OAAO;SACX,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC;SACvC,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC;SACtC,OAAO,CAAC,sBAAsB,EAAE,YAAY,CAAC;SAC7C,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,KAAc;IAC9D,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAEjD,kBAAkB,CAAC;QACjB,KAAK,EAAE,YAAY;QACnB,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,OAAO;YACP,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,OAAO,CAAC,OAAO;SAC7B;QACD,cAAc,EAAE,WAAW;KAC5B,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"error-reporter.js","sourceRoot":"","sources":["../../../src/engine/telemetry/error-reporter.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,wFAAwF;AACxF,gEAAgE;AAChE,uFAAuF;AAEvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,KAAK,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,OAAO,OAAO;SACX,OAAO,CAAC,mBAAmB,EAAE,SAAS,CAAC;SACvC,OAAO,CAAC,kBAAkB,EAAE,SAAS,CAAC;SACtC,OAAO,CAAC,sBAAsB,EAAE,YAAY,CAAC;SAC7C,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,KAAc;IAC9D,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAEjD,kBAAkB,CAAC;QACjB,KAAK,EAAE,YAAY;QACnB,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,OAAO;YACP,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,OAAO,CAAC,OAAO;SAC7B;QACD,cAAc,EAAE,WAAW;KAC5B,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAgB,EAAE,OAAe;IACzE,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,kBAAkB,CAAC;QACjB,KAAK,EAAE,YAAY;QACnB,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC;YACtC,SAAS,EAAE,YAAY;YACvB,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,OAAO,CAAC,OAAO;SAC7B;QACD,cAAc,EAAE,WAAW;KAC5B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import type { ToolResult, AuditTrailInput, GenerateAttestationInput } from '../types/index.js';
|
|
2
|
-
export declare function handleAuditTrail(args: AuditTrailInput
|
|
3
|
-
|
|
2
|
+
export declare function handleAuditTrail(args: AuditTrailInput & {
|
|
3
|
+
projectPath?: string;
|
|
4
|
+
}): Promise<ToolResult>;
|
|
5
|
+
export declare function handleGenerateAttestation(args: GenerateAttestationInput & {
|
|
6
|
+
projectPath?: string;
|
|
7
|
+
}): Promise<ToolResult>;
|
|
4
8
|
//# sourceMappingURL=audit-trail-handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-trail-handler.d.ts","sourceRoot":"","sources":["../../src/tools/audit-trail-handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"audit-trail-handler.d.ts","sourceRoot":"","sources":["../../src/tools/audit-trail-handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAmB/F,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,eAAe,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C,OAAO,CAAC,UAAU,CAAC,CAuDrB;AAMD,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,wBAAwB,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,OAAO,CAAC,UAAU,CAAC,CA8CrB"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { queryAuditLog, verifyChainIntegrity, generateAttestation, } from '../engine/audit-trail/index.js';
|
|
3
3
|
import { projectDataDir } from '../storage/base-store.js';
|
|
4
4
|
import { formatSuccess, formatError, toolResult } from './response-helpers.js';
|
|
5
|
+
import { resolveProjectId } from './resolve-project-id.js';
|
|
5
6
|
/** Build the path to a project's audit log file. */
|
|
6
7
|
function auditLogPath(projectId) {
|
|
7
8
|
return `${projectDataDir(projectId)}/audit-log.jsonl`;
|
|
@@ -10,13 +11,14 @@ function auditLogPath(projectId) {
|
|
|
10
11
|
// audit_trail handler
|
|
11
12
|
// ---------------------------------------------------------------------------
|
|
12
13
|
export async function handleAuditTrail(args) {
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
const projectId = resolveProjectId(args);
|
|
15
|
+
if (!projectId) {
|
|
16
|
+
return toolResult(formatError('projectId is required', 'Provide projectId or projectPath.'), undefined, true);
|
|
15
17
|
}
|
|
16
|
-
const filePath = auditLogPath(
|
|
18
|
+
const filePath = auditLogPath(projectId);
|
|
17
19
|
const [queryResult, chainResult] = await Promise.all([
|
|
18
20
|
queryAuditLog(filePath, {
|
|
19
|
-
projectId
|
|
21
|
+
projectId,
|
|
20
22
|
specId: args.specId,
|
|
21
23
|
eventType: args.eventType,
|
|
22
24
|
from: args.from,
|
|
@@ -29,7 +31,7 @@ export async function handleAuditTrail(args) {
|
|
|
29
31
|
? 'Chain: INTACT'
|
|
30
32
|
: `Chain: BROKEN (${chainResult.message})`;
|
|
31
33
|
const lines = [
|
|
32
|
-
`Audit Log — ${
|
|
34
|
+
`Audit Log — ${projectId}`,
|
|
33
35
|
`${String(queryResult.total)} events found | ${integrityLabel}`,
|
|
34
36
|
queryResult.truncated
|
|
35
37
|
? `(Showing first ${String(queryResult.events.length)} of ${String(queryResult.total)})`
|
|
@@ -58,14 +60,15 @@ export async function handleAuditTrail(args) {
|
|
|
58
60
|
// generate_attestation handler
|
|
59
61
|
// ---------------------------------------------------------------------------
|
|
60
62
|
export async function handleGenerateAttestation(args) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
+
const projectId = resolveProjectId(args);
|
|
64
|
+
if (!projectId) {
|
|
65
|
+
return toolResult(formatError('projectId is required', 'Provide projectId or projectPath.'), undefined, true);
|
|
63
66
|
}
|
|
64
67
|
if (!args.specId || args.specId.trim().length === 0) {
|
|
65
68
|
return toolResult(formatError('specId is required', 'Provide a spec ID to generate attestation for.'), undefined, true);
|
|
66
69
|
}
|
|
67
|
-
const filePath = auditLogPath(
|
|
68
|
-
const attestation = await generateAttestation(filePath,
|
|
70
|
+
const filePath = auditLogPath(projectId);
|
|
71
|
+
const attestation = await generateAttestation(filePath, projectId, args.specId);
|
|
69
72
|
const { summary } = attestation;
|
|
70
73
|
const chainLabel = attestation.chainValid ? 'INTACT' : 'BROKEN';
|
|
71
74
|
const typeLines = Object.entries(summary.eventTypes)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-trail-handler.js","sourceRoot":"","sources":["../../src/tools/audit-trail-handler.ts"],"names":[],"mappings":"AAAA,oGAAoG;AAGpG,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"audit-trail-handler.js","sourceRoot":"","sources":["../../src/tools/audit-trail-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import type { ToolResult, CheckReadinessInput } from '../types/index.js';
|
|
2
|
-
export declare function handleCheckReadiness(args: CheckReadinessInput
|
|
2
|
+
export declare function handleCheckReadiness(args: CheckReadinessInput & {
|
|
3
|
+
projectPath?: string;
|
|
4
|
+
}): Promise<ToolResult>;
|
|
3
5
|
//# sourceMappingURL=check-readiness.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-readiness.d.ts","sourceRoot":"","sources":["../../src/tools/check-readiness.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAmB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"check-readiness.d.ts","sourceRoot":"","sources":["../../src/tools/check-readiness.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAmB,MAAM,mBAAmB,CAAC;AA4F1F,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,mBAAmB,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD,OAAO,CAAC,UAAU,CAAC,CAqCrB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// tools/check-readiness.ts — Completeness checkpoint tool (SPEC-039)
|
|
2
2
|
import { specStore } from '../storage/index.js';
|
|
3
3
|
import { checkSpecReadiness } from '../engine/readiness-checker.js';
|
|
4
|
+
import { resolveProjectId } from './resolve-project-id.js';
|
|
4
5
|
// ── Formatting helpers ───────────────────────────────────────────────────────
|
|
5
6
|
function formatScore(score) {
|
|
6
7
|
if (score >= 90) {
|
|
@@ -78,7 +79,14 @@ function formatReport(report) {
|
|
|
78
79
|
}
|
|
79
80
|
// ── Handler ──────────────────────────────────────────────────────────────────
|
|
80
81
|
export async function handleCheckReadiness(args) {
|
|
81
|
-
const
|
|
82
|
+
const projectId = resolveProjectId(args);
|
|
83
|
+
if (!projectId) {
|
|
84
|
+
return {
|
|
85
|
+
content: [{ type: 'text', text: 'Provide projectId or projectPath.' }],
|
|
86
|
+
isError: true,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
const { specId, mode = 'strict' } = args;
|
|
82
90
|
const spec = await specStore.getSpec(projectId, specId);
|
|
83
91
|
if (!spec) {
|
|
84
92
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-readiness.js","sourceRoot":"","sources":["../../src/tools/check-readiness.ts"],"names":[],"mappings":"AAAA,qEAAqE;AAErE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"check-readiness.js","sourceRoot":"","sources":["../../src/tools/check-readiness.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import type { DataGovernanceInput, ToolResult } from '../types/index.js';
|
|
2
|
-
export declare function handleDataGovernance(args: DataGovernanceInput
|
|
2
|
+
export declare function handleDataGovernance(args: DataGovernanceInput & {
|
|
3
|
+
projectPath?: string;
|
|
4
|
+
}): Promise<ToolResult>;
|
|
3
5
|
//# sourceMappingURL=data-governance.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-governance.d.ts","sourceRoot":"","sources":["../../src/tools/data-governance.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"data-governance.d.ts","sourceRoot":"","sources":["../../src/tools/data-governance.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AASzE,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,mBAAmB,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD,OAAO,CAAC,UAAU,CAAC,CA4CrB"}
|
|
@@ -4,11 +4,19 @@ import { knowledgeStore } from '../storage/index.js';
|
|
|
4
4
|
import { ti } from '../i18n/index.js';
|
|
5
5
|
import { handleDetect, handleRetentionPolicy } from './data-governance/detect-handler.js';
|
|
6
6
|
import { handlePrivacyNotice, handleAudit } from './data-governance/audit-handler.js';
|
|
7
|
+
import { resolveProjectId } from './resolve-project-id.js';
|
|
7
8
|
// ---------------------------------------------------------------------------
|
|
8
9
|
// Main handler
|
|
9
10
|
// ---------------------------------------------------------------------------
|
|
10
11
|
export async function handleDataGovernance(args) {
|
|
11
|
-
const
|
|
12
|
+
const projectId = resolveProjectId(args);
|
|
13
|
+
if (!projectId) {
|
|
14
|
+
return {
|
|
15
|
+
content: [{ type: 'text', text: 'Provide projectId or projectPath.' }],
|
|
16
|
+
isError: true,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
const { specId, subcommand, modelName, specContent } = args;
|
|
12
20
|
// Load project knowledge (required for all subcommands)
|
|
13
21
|
const knowledge = await knowledgeStore.getKnowledge(projectId);
|
|
14
22
|
if (!knowledge) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-governance.js","sourceRoot":"","sources":["../../src/tools/data-governance.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,8GAA8G;AAE9G,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"data-governance.js","sourceRoot":"","sources":["../../src/tools/data-governance.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,8GAA8G;AAE9G,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAoD;IAEpD,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,mCAAmC,EAAE,CAAC;YAC/E,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAE5D,wDAAwD;IACxD,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC/D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,EAAE,EAAE,CAAC,EAAE,CAAC;YACtE,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,QAAQ,UAAU,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACX,OAAO,MAAM,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;YAEnF,KAAK,kBAAkB;gBACrB,OAAO,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;YAEjE,KAAK,gBAAgB;gBACnB,OAAO,MAAM,mBAAmB,CAAC,SAAS,CAAC,CAAC;YAE9C,KAAK,OAAO;gBACV,OAAO,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC;YAEtC,sBAAsB;YACtB;gBACE,OAAO,MAAM,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;YACnF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-audit-trail-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-audit-trail-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register-audit-trail-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-audit-trail-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiBzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqF/D"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { safeLicensed } from './safe-handler.js';
|
|
4
4
|
import { handleAuditTrail, handleGenerateAttestation } from './audit-trail-handler.js';
|
|
5
|
+
import { resolveProjectId, missingProjectIdError } from './resolve-project-id.js';
|
|
5
6
|
const AUDIT_EVENT_TYPES = [
|
|
6
7
|
'spec.created',
|
|
7
8
|
'spec.updated',
|
|
@@ -18,7 +19,12 @@ export function registerAuditTrailTools(server) {
|
|
|
18
19
|
description: 'Query the immutable audit log for a project. Supports filtering by specId, userId, eventType, and date range. Returns events with SHA-256 chain integrity status.',
|
|
19
20
|
annotations: { readOnlyHint: true },
|
|
20
21
|
inputSchema: {
|
|
21
|
-
projectId: z.string().
|
|
22
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
23
|
+
projectPath: z
|
|
24
|
+
.string()
|
|
25
|
+
.max(4096)
|
|
26
|
+
.optional()
|
|
27
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
22
28
|
specId: z
|
|
23
29
|
.string()
|
|
24
30
|
.max(500)
|
|
@@ -44,19 +50,36 @@ export function registerAuditTrailTools(server) {
|
|
|
44
50
|
.optional()
|
|
45
51
|
.describe('Maximum number of events to return (default: 100, max: 1000).'),
|
|
46
52
|
},
|
|
47
|
-
}, safeLicensed('audit_trail', async (args) =>
|
|
53
|
+
}, safeLicensed('audit_trail', async (args) => {
|
|
54
|
+
const pid = resolveProjectId(args);
|
|
55
|
+
if (!pid) {
|
|
56
|
+
return missingProjectIdError;
|
|
57
|
+
}
|
|
58
|
+
return handleAuditTrail({ ...args, projectId: pid });
|
|
59
|
+
}));
|
|
48
60
|
// generate_attestation — SPEC-167
|
|
49
61
|
server.registerTool('generate_attestation', {
|
|
50
62
|
description: 'Generate a compliance attestation document for a specific spec. Includes full audit history, chain integrity verification, and event summary for SOC2/HIPAA/ISO27001 audits.',
|
|
51
63
|
annotations: { readOnlyHint: true },
|
|
52
64
|
inputSchema: {
|
|
53
|
-
projectId: z.string().
|
|
65
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
66
|
+
projectPath: z
|
|
67
|
+
.string()
|
|
68
|
+
.max(4096)
|
|
69
|
+
.optional()
|
|
70
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
54
71
|
specId: z
|
|
55
72
|
.string()
|
|
56
73
|
.min(1)
|
|
57
74
|
.max(500)
|
|
58
75
|
.describe('Spec ID to generate attestation for (e.g. SPEC-042).'),
|
|
59
76
|
},
|
|
60
|
-
}, safeLicensed('generate_attestation', async (args) =>
|
|
77
|
+
}, safeLicensed('generate_attestation', async (args) => {
|
|
78
|
+
const pid = resolveProjectId(args);
|
|
79
|
+
if (!pid) {
|
|
80
|
+
return missingProjectIdError;
|
|
81
|
+
}
|
|
82
|
+
return handleGenerateAttestation({ ...args, projectId: pid });
|
|
83
|
+
}));
|
|
61
84
|
}
|
|
62
85
|
//# sourceMappingURL=register-audit-trail-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-audit-trail-tools.js","sourceRoot":"","sources":["../../src/tools/register-audit-trail-tools.ts"],"names":[],"mappings":"AAAA,wGAAwG;AAGxG,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"register-audit-trail-tools.js","sourceRoot":"","sources":["../../src/tools/register-audit-trail-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-backlog-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-backlog-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"register-backlog-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-backlog-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsG5D"}
|
|
@@ -10,8 +10,12 @@ export function registerBacklogTools(server) {
|
|
|
10
10
|
'Use when the user expresses non-urgent ideas (e.g. "sería bueno", "a futuro", "what if"). ' +
|
|
11
11
|
'Ideas expire after 90 days and can later be promoted to a spec with promote_idea.',
|
|
12
12
|
inputSchema: {
|
|
13
|
-
projectId: z.string().
|
|
14
|
-
projectPath: z
|
|
13
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
14
|
+
projectPath: z
|
|
15
|
+
.string()
|
|
16
|
+
.max(4096)
|
|
17
|
+
.optional()
|
|
18
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
15
19
|
title: z.string().min(3).max(200).describe('Short title for the idea.'),
|
|
16
20
|
description: z
|
|
17
21
|
.string()
|
|
@@ -31,8 +35,12 @@ export function registerBacklogTools(server) {
|
|
|
31
35
|
'Optionally filter by status or tag. Groups results by tag. ' +
|
|
32
36
|
'Expired ideas are shown with a ⚠️ indicator.',
|
|
33
37
|
inputSchema: {
|
|
34
|
-
projectId: z.string().
|
|
35
|
-
projectPath: z
|
|
38
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
39
|
+
projectPath: z
|
|
40
|
+
.string()
|
|
41
|
+
.max(4096)
|
|
42
|
+
.optional()
|
|
43
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
36
44
|
status: z
|
|
37
45
|
.enum(['new', 'in-review', 'converted', 'discarded'])
|
|
38
46
|
.optional()
|
|
@@ -46,8 +54,12 @@ export function registerBacklogTools(server) {
|
|
|
46
54
|
'Only ideas with status "new" or "in-review" can be promoted. ' +
|
|
47
55
|
'After promotion the idea is marked as "converted" with the resulting specId.',
|
|
48
56
|
inputSchema: {
|
|
49
|
-
projectId: z.string().
|
|
50
|
-
projectPath: z
|
|
57
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
58
|
+
projectPath: z
|
|
59
|
+
.string()
|
|
60
|
+
.max(4096)
|
|
61
|
+
.optional()
|
|
62
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
51
63
|
ideaId: z.string().min(1).describe('ID of the idea to promote (e.g. "idea-20260321-001").'),
|
|
52
64
|
},
|
|
53
65
|
annotations: { readOnlyHint: false },
|
|
@@ -56,8 +68,12 @@ export function registerBacklogTools(server) {
|
|
|
56
68
|
description: 'Mark a backlog idea as discarded with a reason. ' +
|
|
57
69
|
'Idempotent — calling this on an already-discarded idea is safe and returns a confirmation.',
|
|
58
70
|
inputSchema: {
|
|
59
|
-
projectId: z.string().
|
|
60
|
-
projectPath: z
|
|
71
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
72
|
+
projectPath: z
|
|
73
|
+
.string()
|
|
74
|
+
.max(4096)
|
|
75
|
+
.optional()
|
|
76
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
61
77
|
ideaId: z.string().min(1).describe('ID of the idea to discard (e.g. "idea-20260321-001").'),
|
|
62
78
|
reason: z
|
|
63
79
|
.string()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-backlog-tools.js","sourceRoot":"","sources":["../../src/tools/register-backlog-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAQ9D,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EACT,iFAAiF;YACjF,4FAA4F;YAC5F,mFAAmF;QACrF,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"register-backlog-tools.js","sourceRoot":"","sources":["../../src/tools/register-backlog-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-ci-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-ci-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register-ci-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-ci-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiKvD"}
|
|
@@ -2,12 +2,17 @@ import { z } from 'zod';
|
|
|
2
2
|
import { handleGenerateCI } from './ci-generator.js';
|
|
3
3
|
import { handleGeneratePlanuCI } from './ci-planu-handler.js';
|
|
4
4
|
import { safeLicensed } from './safe-handler.js';
|
|
5
|
+
import { resolveProjectId, missingProjectIdError } from './resolve-project-id.js';
|
|
5
6
|
export function registerCITools(server) {
|
|
6
7
|
server.registerTool('generate_ci', {
|
|
7
8
|
description: 'Generate a GitHub Actions CI workflow YAML for a project. Auto-detects ecosystem (Node.js, Python, Go, Rust, Java/Kotlin, Ruby, PHP, Dart, .NET) and configures lint, test, build, and deploy jobs with proper caching and dependency installation.',
|
|
8
9
|
inputSchema: {
|
|
9
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
10
|
-
projectPath: z
|
|
10
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
11
|
+
projectPath: z
|
|
12
|
+
.string()
|
|
13
|
+
.max(4096)
|
|
14
|
+
.optional()
|
|
15
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
11
16
|
jobs: z
|
|
12
17
|
.array(z
|
|
13
18
|
.enum(['lint', 'test', 'build', 'deploy'])
|
|
@@ -53,11 +58,22 @@ export function registerCITools(server) {
|
|
|
53
58
|
.describe('Name for the GitHub Actions workflow (default: "CI"). Used as the workflow name and filename'),
|
|
54
59
|
},
|
|
55
60
|
annotations: { readOnlyHint: true },
|
|
56
|
-
}, safeLicensed('generate_ci', async (args) =>
|
|
61
|
+
}, safeLicensed('generate_ci', async (args) => {
|
|
62
|
+
const pid = resolveProjectId(args);
|
|
63
|
+
if (!pid) {
|
|
64
|
+
return missingProjectIdError;
|
|
65
|
+
}
|
|
66
|
+
return handleGenerateCI({ ...args, projectId: pid });
|
|
67
|
+
}));
|
|
57
68
|
server.registerTool('generate_planu_ci', {
|
|
58
69
|
description: 'Generate a Planu-specific GitHub Actions CI workflow that validates specs, detects drift between code and specs, posts results as PR comments, generates badges, and supports .planu.yml configuration. Produces ready-to-use workflow YAML + config file.',
|
|
59
70
|
inputSchema: {
|
|
60
|
-
projectId: z.string().max(500).describe('Project ID'),
|
|
71
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
72
|
+
projectPath: z
|
|
73
|
+
.string()
|
|
74
|
+
.max(4096)
|
|
75
|
+
.optional()
|
|
76
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
61
77
|
specsDir: z
|
|
62
78
|
.string()
|
|
63
79
|
.max(4096)
|
|
@@ -98,6 +114,12 @@ export function registerCITools(server) {
|
|
|
98
114
|
.describe('Mark for git pre-push hook integration in the output instructions (default: false)'),
|
|
99
115
|
},
|
|
100
116
|
annotations: { readOnlyHint: true },
|
|
101
|
-
}, safeLicensed('generate_planu_ci', (args) =>
|
|
117
|
+
}, safeLicensed('generate_planu_ci', (args) => {
|
|
118
|
+
const pid = resolveProjectId(args);
|
|
119
|
+
if (!pid) {
|
|
120
|
+
return Promise.resolve(missingProjectIdError);
|
|
121
|
+
}
|
|
122
|
+
return Promise.resolve(handleGeneratePlanuCI({ ...args, projectId: pid }));
|
|
123
|
+
}));
|
|
102
124
|
}
|
|
103
125
|
//# sourceMappingURL=register-ci-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-ci-tools.js","sourceRoot":"","sources":["../../src/tools/register-ci-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"register-ci-tools.js","sourceRoot":"","sources":["../../src/tools/register-ci-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAElF,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EACT,qPAAqP;QACvP,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAC1F,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,IAAI,EAAE,CAAC;iBACJ,KAAK,CACJ,CAAC;iBACE,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;iBACzC,QAAQ,CAAC,wCAAwC,CAAC,CACtD;iBACA,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,iGAAiG,CAClG;YACH,QAAQ,EAAE,CAAC;iBACR,KAAK,CACJ,CAAC;iBACE,IAAI,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,mBAAmB,EAAE,UAAU,CAAC,CAAC;iBAC/D,QAAQ,CAAC,6DAA6D,CAAC,CAC3E;iBACA,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,6HAA6H,CAC9H;YACH,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,gGAAgG,CACjG;YACH,aAAa,EAAE,CAAC;iBACb,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,8GAA8G,CAC/G;YACH,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,+EAA+E,CAChF;YACH,WAAW,EAAE,CAAC;iBACX,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;iBACnC,QAAQ,EAAE;iBACV,QAAQ,CACP,oGAAoG,CACrG;YACH,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,8FAA8F,CAC/F;YACH,YAAY,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,8FAA8F,CAC/F;SACJ;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,YAAY,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACzC,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAoD,CAAC,CAAC;QACnF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,OAAO,gBAAgB,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,EAE7C,CAAC,CAAC;IACR,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EACT,4PAA4P;QAC9P,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAC1F,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,wDAAwD,CAAC;YACrE,WAAW,EAAE,CAAC;iBACX,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,uEAAuE,CAAC;YACpF,WAAW,EAAE,CAAC;iBACX,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,6EAA6E,CAAC;YAC1F,iBAAiB,EAAE,CAAC;iBACjB,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;iBACrC,QAAQ,EAAE;iBACV,QAAQ,CACP,6LAA6L,CAC9L;YACH,WAAW,EAAE,CAAC;iBACX,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,+DAA+D,CAAC;YAC5E,KAAK,EAAE,CAAC;iBACL,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,gBAAgB,EAAE,CAAC;iBAChB,MAAM,EAAE;iBACR,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,wDAAwD,CAAC;YACrE,oBAAoB,EAAE,CAAC;iBACpB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,kKAAkK,CACnK;YACH,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,oFAAoF,CACrF;SACJ;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,YAAY,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAAE;QACzC,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAoD,CAAC,CAAC;QACnF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CACpB,qBAAqB,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,EAE3C,CAAC,CACN,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-coverage-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-coverage-tools.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register-coverage-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-coverage-tools.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqC7D"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { safeLicensed } from './safe-handler.js';
|
|
5
5
|
import { handleSpecCoverage } from './spec-coverage.js';
|
|
6
|
+
import { resolveProjectId, missingProjectIdError } from './resolve-project-id.js';
|
|
6
7
|
/**
|
|
7
8
|
* Registers the spec_coverage tool (SPEC-068) on the MCP server.
|
|
8
9
|
* Requires a paid plan — coverage analysis is a Pro feature.
|
|
@@ -13,7 +14,12 @@ export function registerCoverageTools(server) {
|
|
|
13
14
|
'Performs static analysis across 10 ecosystems (TypeScript, Python, Go, Java, Rust, Swift, C#, PHP, Ruby, Kotlin). ' +
|
|
14
15
|
'Returns a per-criterion breakdown with coverage grade (A/B/C/D) and identifies untested criteria as risk items.',
|
|
15
16
|
inputSchema: {
|
|
16
|
-
projectId: z.string().max(500).describe('Project ID
|
|
17
|
+
projectId: z.string().max(500).optional().describe('Project ID hash. Prefer projectPath.'),
|
|
18
|
+
projectPath: z
|
|
19
|
+
.string()
|
|
20
|
+
.max(4096)
|
|
21
|
+
.optional()
|
|
22
|
+
.describe('Absolute path to project root. Derives projectId automatically.'),
|
|
17
23
|
specId: z
|
|
18
24
|
.string()
|
|
19
25
|
.max(500)
|
|
@@ -23,6 +29,12 @@ export function registerCoverageTools(server) {
|
|
|
23
29
|
title: 'Spec Test Coverage',
|
|
24
30
|
readOnlyHint: true,
|
|
25
31
|
},
|
|
26
|
-
}, safeLicensed('spec_coverage', async (args) =>
|
|
32
|
+
}, safeLicensed('spec_coverage', async (args) => {
|
|
33
|
+
const pid = resolveProjectId(args);
|
|
34
|
+
if (!pid) {
|
|
35
|
+
return missingProjectIdError;
|
|
36
|
+
}
|
|
37
|
+
return handleSpecCoverage({ ...args, projectId: pid });
|
|
38
|
+
}));
|
|
27
39
|
}
|
|
28
40
|
//# sourceMappingURL=register-coverage-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-coverage-tools.js","sourceRoot":"","sources":["../../src/tools/register-coverage-tools.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,oCAAoC;AAGpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"register-coverage-tools.js","sourceRoot":"","sources":["../../src/tools/register-coverage-tools.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,oCAAoC;AAGpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAElF;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EACT,gGAAgG;YAChG,oHAAoH;YACpH,iHAAiH;QACnH,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAC1F,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,CACP,sFAAsF,CACvF;SACJ;QACD,WAAW,EAAE;YACX,KAAK,EAAE,oBAAoB;YAC3B,YAAY,EAAE,IAAI;SACnB;KACF,EACD,YAAY,CAAC,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC3C,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAoD,CAAC,CAAC;QACnF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,qBAAqB,CAAC;QAC/B,CAAC;QACD,OAAO,kBAAkB,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,EAE/C,CAAC,CAAC;IACR,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-domain-criteria-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-domain-criteria-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register-domain-criteria-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-domain-criteria-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiFnE"}
|