@planu/cli 0.22.0 → 0.23.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/config/license-plans.json +1 -1
- package/dist/engine/license-validator/core.d.ts.map +1 -1
- package/dist/engine/license-validator/core.js +4 -2
- package/dist/engine/license-validator/core.js.map +1 -1
- package/dist/engine/usage-tracker/index.d.ts +1 -0
- package/dist/engine/usage-tracker/index.d.ts.map +1 -1
- package/dist/engine/usage-tracker/index.js +1 -0
- package/dist/engine/usage-tracker/index.js.map +1 -1
- package/dist/engine/usage-tracker/rate-check.d.ts +7 -0
- package/dist/engine/usage-tracker/rate-check.d.ts.map +1 -0
- package/dist/engine/usage-tracker/rate-check.js +18 -0
- package/dist/engine/usage-tracker/rate-check.js.map +1 -0
- package/dist/tools/check-config-health.d.ts.map +1 -1
- package/dist/tools/check-config-health.js +2 -1
- package/dist/tools/check-config-health.js.map +1 -1
- package/dist/tools/license-gate.d.ts +6 -0
- package/dist/tools/license-gate.d.ts.map +1 -1
- package/dist/tools/license-gate.js +51 -0
- package/dist/tools/license-gate.js.map +1 -1
- package/dist/tools/register-facilitator-tools.d.ts.map +1 -1
- package/dist/tools/register-facilitator-tools.js +2 -1
- package/dist/tools/register-facilitator-tools.js.map +1 -1
- package/dist/tools/register-platform-tools/design-stack-tools.js +4 -4
- package/dist/tools/register-platform-tools/design-stack-tools.js.map +1 -1
- package/dist/tools/register-platform-tools/lifecycle-infra-tools.js +4 -4
- package/dist/tools/register-platform-tools/lifecycle-infra-tools.js.map +1 -1
- package/dist/tools/register-spec-tools/analysis-tools.js +5 -5
- package/dist/tools/register-spec-tools/analysis-tools.js.map +1 -1
- package/dist/tools/register-spec-tools/core-spec-tools.js +10 -10
- package/dist/tools/register-spec-tools/core-spec-tools.js.map +1 -1
- package/dist/tools/safe-handler.d.ts +11 -3
- package/dist/tools/safe-handler.d.ts.map +1 -1
- package/dist/tools/safe-handler.js +15 -5
- package/dist/tools/safe-handler.js.map +1 -1
- package/package.json +1 -1
- package/src/config/license-plans.json +1 -1
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"suggest_tooling",
|
|
82
82
|
"validate_workflow"
|
|
83
83
|
],
|
|
84
|
-
"alwaysAllowed": ["activate_license", "license_status"],
|
|
84
|
+
"alwaysAllowed": ["activate_license", "deactivate_license", "license_status", "usage_stats", "usage_report"],
|
|
85
85
|
"variantMapping": {
|
|
86
86
|
"Planu Pro": "pro",
|
|
87
87
|
"Planu Team": "team"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/engine/license-validator/core.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACX,MAAM,sBAAsB,CAAC;AAa9B,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,WAAW,CAK1E;AAqBD,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAG9D;AAMD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAa1E;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/engine/license-validator/core.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACX,MAAM,sBAAsB,CAAC;AAa9B,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,WAAW,CAK1E;AAqBD,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAG9D;AAMD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAa1E;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,kBAAkB,CAqBvF;AAMD,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU,CAG3D;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,WAAW,EACjB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,aAAa,GAAG,gBAAgB,GAC1C,kBAAkB,CAkBpB;AAMD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAG9D"}
|
|
@@ -58,14 +58,16 @@ export function checkToolAccess(toolName, tier) {
|
|
|
58
58
|
return { allowed: true, currentTier: tier, requiredTier: tier, message: 'Access granted.' };
|
|
59
59
|
}
|
|
60
60
|
const config = loadLicensePlans();
|
|
61
|
+
const freeCount = config.freeTools.length + config.alwaysAllowed.length;
|
|
62
|
+
const totalCount = freeCount + config.proTools.length;
|
|
61
63
|
return {
|
|
62
64
|
allowed: false,
|
|
63
65
|
currentTier: tier,
|
|
64
66
|
requiredTier: 'pro',
|
|
65
67
|
message: [
|
|
66
68
|
`🔒 "${toolName}" requires a Pro or higher plan.`,
|
|
67
|
-
`You are currently on the Free plan (
|
|
68
|
-
`Upgrade at ${config.upgradeUrl} to unlock all
|
|
69
|
+
`You are currently on the Free plan (${String(freeCount)} tools available).`,
|
|
70
|
+
`Upgrade at ${config.upgradeUrl} to unlock all ${String(totalCount)} tools.`,
|
|
69
71
|
'',
|
|
70
72
|
'To activate a license key:',
|
|
71
73
|
' → Use the activate_license tool with your license key.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/engine/license-validator/core.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,8FAA8F;AAQ9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,UAAU;AAE9D,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,MAAM,UAAU,kBAAkB,CAAC,KAA0B;IAC3D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC;AAED,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,MAAM,WAAW,GAAgC;IAC/C,GAAG,EAAE,KAAK;IACV,WAAW,EAAE,KAAK;IAClB,mBAAmB,EAAE,KAAK;IAC1B,kBAAkB,EAAE,KAAK;IACzB,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,MAAM;IACpB,oBAAoB,EAAE,MAAM;IAC5B,mBAAmB,EAAE,MAAM;IAC3B,UAAU,EAAE,YAAY;IACxB,kBAAkB,EAAE,YAAY;IAChC,0BAA0B,EAAE,YAAY;IACxC,yBAAyB,EAAE,YAAY;CACxC,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IACpD,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC;AAC1C,CAAC;AAED,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,IAAiB;IAC/D,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,iDAAiD;IACjD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,IAAiB;IACjE,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC9C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC9F,CAAC;IACD,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,OAAO;QACL,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE;YACP,OAAO,QAAQ,kCAAkC;YACjD,
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/engine/license-validator/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,4 +2,5 @@ export { recordUsageEvent, filterEventsByPeriod, countEventsForDate, getLastEven
|
|
|
2
2
|
export { calculateUsageStats, formatStatsAsMarkdown } from './stats.js';
|
|
3
3
|
export { TRIAL_DAYS, calculateDaysSinceFirstRun, isTrialActive, getTrialLimits } from './trial.js';
|
|
4
4
|
export { COOLDOWN_MS, checkDailyLimit, checkCooldown } from './rate-limiter.js';
|
|
5
|
+
export { evaluateRateLimit } from './rate-check.js';
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/usage-tracker/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEnG,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/usage-tracker/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEnG,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -3,4 +3,5 @@ export { recordUsageEvent, filterEventsByPeriod, countEventsForDate, getLastEven
|
|
|
3
3
|
export { calculateUsageStats, formatStatsAsMarkdown } from './stats.js';
|
|
4
4
|
export { TRIAL_DAYS, calculateDaysSinceFirstRun, isTrialActive, getTrialLimits } from './trial.js';
|
|
5
5
|
export { COOLDOWN_MS, checkDailyLimit, checkCooldown } from './rate-limiter.js';
|
|
6
|
+
export { evaluateRateLimit } from './rate-check.js';
|
|
6
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/usage-tracker/index.ts"],"names":[],"mappings":"AAAA,oFAAoF;AAEpF,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEnG,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/usage-tracker/index.ts"],"names":[],"mappings":"AAAA,oFAAoF;AAEpF,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEnG,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RateLimitResult } from '../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Evaluates both daily limit and cooldown in a single call.
|
|
4
|
+
* Returns the first failing check, or an allowed result if both pass.
|
|
5
|
+
*/
|
|
6
|
+
export declare function evaluateRateLimit(callCount: number, maxCalls: number, lastCallAt: string | null, now: Date): RateLimitResult;
|
|
7
|
+
//# sourceMappingURL=rate-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-check.d.ts","sourceRoot":"","sources":["../../../src/engine/usage-tracker/rate-check.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,GAAG,EAAE,IAAI,GACR,eAAe,CAYjB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// engine/usage-tracker/rate-check.ts — Composed rate-limit evaluation (pure, no I/O).
|
|
2
|
+
import { checkDailyLimit, checkCooldown } from './rate-limiter.js';
|
|
3
|
+
/**
|
|
4
|
+
* Evaluates both daily limit and cooldown in a single call.
|
|
5
|
+
* Returns the first failing check, or an allowed result if both pass.
|
|
6
|
+
*/
|
|
7
|
+
export function evaluateRateLimit(callCount, maxCalls, lastCallAt, now) {
|
|
8
|
+
const daily = checkDailyLimit(callCount, maxCalls);
|
|
9
|
+
if (!daily.allowed) {
|
|
10
|
+
return daily;
|
|
11
|
+
}
|
|
12
|
+
const cooldown = checkCooldown(lastCallAt, now);
|
|
13
|
+
if (!cooldown.allowed) {
|
|
14
|
+
return cooldown;
|
|
15
|
+
}
|
|
16
|
+
return daily;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=rate-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-check.js","sourceRoot":"","sources":["../../../src/engine/usage-tracker/rate-check.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAGtF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAAiB,EACjB,QAAgB,EAChB,UAAyB,EACzB,GAAS;IAET,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-config-health.d.ts","sourceRoot":"","sources":["../../src/tools/check-config-health.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAA2C,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"check-config-health.d.ts","sourceRoot":"","sources":["../../src/tools/check-config-health.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAA2C,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAuF7F,wBAAsB,uBAAuB,CAAC,IAAI,EAAE;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;CACzC,GAAG,OAAO,CAAC,UAAU,CAAC,CAStB;AAMD,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAerE"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// READ-ONLY: this tool never modifies files.
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { runConfigHealthChecks } from '../engine/config-health/index.js';
|
|
5
|
+
import { safeTracked } from './safe-handler.js';
|
|
5
6
|
// ---------------------------------------------------------------------------
|
|
6
7
|
// Zod schema
|
|
7
8
|
// ---------------------------------------------------------------------------
|
|
@@ -85,6 +86,6 @@ export function registerCheckConfigHealthTool(server) {
|
|
|
85
86
|
destructiveHint: false,
|
|
86
87
|
title: 'Check Config Health',
|
|
87
88
|
},
|
|
88
|
-
}, async (args) => handleCheckConfigHealth(args));
|
|
89
|
+
}, safeTracked('check_config_health', async (args) => handleCheckConfigHealth(args)));
|
|
89
90
|
}
|
|
90
91
|
//# sourceMappingURL=check-config-health.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-config-health.js","sourceRoot":"","sources":["../../src/tools/check-config-health.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,6CAA6C;AAG7C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,qBAAqB,EAAmB,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"check-config-health.js","sourceRoot":"","sources":["../../src/tools/check-config-health.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,4 +2,10 @@ import type { PricingTier, ToolResult } from '../types/index.js';
|
|
|
2
2
|
export declare function getCurrentTier(): Promise<PricingTier>;
|
|
3
3
|
export declare function invalidateTierCache(): void;
|
|
4
4
|
export declare function withLicenseGate<T>(toolName: string, handler: (args: T) => Promise<ToolResult>): (args: T) => Promise<ToolResult>;
|
|
5
|
+
/**
|
|
6
|
+
* Wraps a handler with rate limiting (free tier only) and usage event recording.
|
|
7
|
+
* For free tier: checks daily limit + cooldown before executing.
|
|
8
|
+
* For all tiers: records a usage event after execution (fire-and-forget).
|
|
9
|
+
*/
|
|
10
|
+
export declare function withUsageTracking<T>(toolName: string, handler: (args: T) => Promise<ToolResult>): (args: T) => Promise<ToolResult>;
|
|
5
11
|
//# sourceMappingURL=license-gate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license-gate.d.ts","sourceRoot":"","sources":["../../src/tools/license-gate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"license-gate.d.ts","sourceRoot":"","sources":["../../src/tools/license-gate.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAqCjE,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAqB3D;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C;AAMD,wBAAgB,eAAe,CAAC,CAAC,EAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACxC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CASlC;AAMD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACxC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAuBlC"}
|
|
@@ -1,7 +1,22 @@
|
|
|
1
1
|
// tools/license-gate.ts — Runtime license enforcement for MCP tool handlers.
|
|
2
2
|
// Provides getCurrentTier() with in-memory cache and withLicenseGate() wrapper.
|
|
3
|
+
import { createHash } from 'node:crypto';
|
|
3
4
|
import { licenseStore } from '../storage/index.js';
|
|
5
|
+
import * as usageStore from '../storage/usage-store.js';
|
|
4
6
|
import { resolveCurrentTier, checkToolAccess, isValidationFresh, } from '../engine/license-validator.js';
|
|
7
|
+
import { evaluateRateLimit, isTrialActive, recordUsageEvent, } from '../engine/usage-tracker/index.js';
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// Owner token override (SHA-256 verified, not reversible)
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
const OWNER_TOKEN_HASH = '9f9e8410fd0a718540fe1e29f7beaa2506b539c8732915d8eddcb3bcff9b9465';
|
|
12
|
+
function checkOwnerOverride() {
|
|
13
|
+
const token = process.env.SDD_OWNER_TOKEN;
|
|
14
|
+
if (!token) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
const hash = createHash('sha256').update(token.trim()).digest('hex');
|
|
18
|
+
return hash === OWNER_TOKEN_HASH ? 'enterprise' : null;
|
|
19
|
+
}
|
|
5
20
|
// ---------------------------------------------------------------------------
|
|
6
21
|
// In-memory tier cache (avoids disk read on every tool call)
|
|
7
22
|
// ---------------------------------------------------------------------------
|
|
@@ -13,6 +28,12 @@ export async function getCurrentTier() {
|
|
|
13
28
|
if (cachedTier !== null && now - cacheTimestamp < CACHE_TTL_MS) {
|
|
14
29
|
return cachedTier;
|
|
15
30
|
}
|
|
31
|
+
const ownerTier = checkOwnerOverride();
|
|
32
|
+
if (ownerTier) {
|
|
33
|
+
cachedTier = ownerTier;
|
|
34
|
+
cacheTimestamp = now;
|
|
35
|
+
return cachedTier;
|
|
36
|
+
}
|
|
16
37
|
const state = await licenseStore.getLicenseState();
|
|
17
38
|
cachedTier = resolveCurrentTier(state);
|
|
18
39
|
cacheTimestamp = now;
|
|
@@ -40,6 +61,36 @@ export function withLicenseGate(toolName, handler) {
|
|
|
40
61
|
};
|
|
41
62
|
}
|
|
42
63
|
// ---------------------------------------------------------------------------
|
|
64
|
+
// Usage tracking wrapper
|
|
65
|
+
// ---------------------------------------------------------------------------
|
|
66
|
+
/**
|
|
67
|
+
* Wraps a handler with rate limiting (free tier only) and usage event recording.
|
|
68
|
+
* For free tier: checks daily limit + cooldown before executing.
|
|
69
|
+
* For all tiers: records a usage event after execution (fire-and-forget).
|
|
70
|
+
*/
|
|
71
|
+
export function withUsageTracking(toolName, handler) {
|
|
72
|
+
return async (args) => {
|
|
73
|
+
const tier = await getCurrentTier();
|
|
74
|
+
if (tier === 'free') {
|
|
75
|
+
const today = new Date().toISOString().slice(0, 10);
|
|
76
|
+
const [trialState, callCount, lastCallAt] = await Promise.all([
|
|
77
|
+
usageStore.ensureTrialState(),
|
|
78
|
+
usageStore.getDailyCallCount(today),
|
|
79
|
+
usageStore.getLastCallTimestamp(),
|
|
80
|
+
]);
|
|
81
|
+
const maxCalls = isTrialActive(trialState.firstRunAt) ? 50 : 30;
|
|
82
|
+
const check = evaluateRateLimit(callCount, maxCalls, lastCallAt, new Date());
|
|
83
|
+
if (!check.allowed) {
|
|
84
|
+
return { content: [{ type: 'text', text: check.message }], isError: true };
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
const result = await handler(args);
|
|
88
|
+
const success = !result.isError;
|
|
89
|
+
void usageStore.appendUsageEvent(recordUsageEvent(toolName, tier, success));
|
|
90
|
+
return result;
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
// ---------------------------------------------------------------------------
|
|
43
94
|
// Background re-validation (fire-and-forget, grace period on failure)
|
|
44
95
|
// ---------------------------------------------------------------------------
|
|
45
96
|
async function scheduleBackgroundRevalidation(licenseKey, instanceId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license-gate.js","sourceRoot":"","sources":["../../src/tools/license-gate.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,gFAAgF;
|
|
1
|
+
{"version":3,"file":"license-gate.js","sourceRoot":"","sources":["../../src/tools/license-gate.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,UAAU,MAAM,2BAA2B,CAAC;AACxD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,GAClB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,gBAAgB,GACjB,MAAM,kCAAkC,CAAC;AAE1C,8EAA8E;AAC9E,0DAA0D;AAC1D,8EAA8E;AAE9E,MAAM,gBAAgB,GAAG,kEAAkE,CAAC;AAE5F,SAAS,kBAAkB;IACzB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrE,OAAO,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;AACzD,CAAC;AAED,8EAA8E;AAC9E,6DAA6D;AAC7D,8EAA8E;AAE9E,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAChD,IAAI,UAAU,GAAuB,IAAI,CAAC;AAC1C,IAAI,cAAc,GAAG,CAAC,CAAC;AAEvB,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,UAAU,KAAK,IAAI,IAAI,GAAG,GAAG,cAAc,GAAG,YAAY,EAAE,CAAC;QAC/D,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,IAAI,SAAS,EAAE,CAAC;QACd,UAAU,GAAG,SAAS,CAAC;QACvB,cAAc,GAAG,GAAG,CAAC;QACrB,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,CAAC;IACnD,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACvC,cAAc,GAAG,GAAG,CAAC;IAErB,0EAA0E;IAC1E,IAAI,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,KAAK,8BAA8B,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,UAAU,GAAG,IAAI,CAAC;IAClB,cAAc,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,OAAyC;IAEzC,OAAO,KAAK,EAAE,IAAO,EAAuB,EAAE;QAC5C,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC7E,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,OAAyC;IAEzC,OAAO,KAAK,EAAE,IAAO,EAAuB,EAAE;QAC5C,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;QAEpC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpD,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC5D,UAAU,CAAC,gBAAgB,EAAE;gBAC7B,UAAU,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBACnC,UAAU,CAAC,oBAAoB,EAAE;aAClC,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YAC7E,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;QAChC,KAAK,UAAU,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5E,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,sEAAsE;AACtE,8EAA8E;AAE9E,KAAK,UAAU,8BAA8B,CAC3C,UAAkB,EAClB,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC7D,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,eAAe,EAAE,CAAC;YACnD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,YAAY,CAAC,gBAAgB,CAAC;oBAClC,GAAG,KAAK;oBACR,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBAC1C,CAAC,CAAC;gBACH,mBAAmB,EAAE,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,+DAA+D;IACjE,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-facilitator-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-facilitator-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register-facilitator-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-facilitator-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqDhE"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// tools/register-facilitator-tools.ts — Registers Facilitator tools (SPEC-037)
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { handleFacilitate } from './facilitate.js';
|
|
4
|
+
import { safeTracked } from './safe-handler.js';
|
|
4
5
|
/**
|
|
5
6
|
* Registers the `facilitate` tool and related facilitator tools (SPEC-037).
|
|
6
7
|
*/
|
|
@@ -51,6 +52,6 @@ export function registerFacilitatorTools(server) {
|
|
|
51
52
|
annotations: {
|
|
52
53
|
readOnlyHint: false,
|
|
53
54
|
},
|
|
54
|
-
}, (args) => handleFacilitate(args));
|
|
55
|
+
}, safeTracked('facilitate', (args) => Promise.resolve(handleFacilitate(args))));
|
|
55
56
|
}
|
|
56
57
|
//# sourceMappingURL=register-facilitator-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-facilitator-tools.js","sourceRoot":"","sources":["../../src/tools/register-facilitator-tools.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAG/E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"register-facilitator-tools.js","sourceRoot":"","sources":["../../src/tools/register-facilitator-tools.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAG/E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,0CAA0C;IAC1C,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,WAAW,EACT,+CAA+C;YAC/C,uDAAuD;YACvD,2DAA2D;YAC3D,sDAAsD;QACxD,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,8EAA8E,CAAC;YAC3F,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,oDAAoD,CAAC;YACjE,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,qDAAqD,CAAC;YAClE,QAAQ,EAAE,CAAC;iBACR,IAAI,CAAC,CAAC,aAAa,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;iBAC7D,QAAQ,EAAE;iBACV,QAAQ,CAAC,iCAAiC,CAAC;YAC9C,aAAa,EAAE,CAAC;iBACb,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;iBAC9B,QAAQ,EAAE;iBACV,QAAQ,CAAC,qCAAqC,CAAC;YAClD,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CAAC,+CAA+C,CAAC;YAC5D,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,0DAA0D,CAAC;YACvE,UAAU,EAAE,CAAC;iBACV,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,sEAAsE,CAAC;YACnF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;SAC1F;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;SACpB;KACF,EACD,WAAW,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAC7E,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { t } from '../../i18n/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import { safeTracked, safeLicensed } from '../safe-handler.js';
|
|
4
4
|
import { AgentPlatformEnum, SubAgentFrameworkEnum, ChallengeSpecFocusEnum, } from '../schemas/index.js';
|
|
5
5
|
import { handleGenerateADR } from '../generate-adr.js';
|
|
6
6
|
import { handleDesignSchema } from '../design-schema.js';
|
|
@@ -64,7 +64,7 @@ export function registerDesignStackTools(server) {
|
|
|
64
64
|
specId: z.string().describe('Spec ID'),
|
|
65
65
|
projectId: z.string().describe('Project ID'),
|
|
66
66
|
},
|
|
67
|
-
}, async (args) => handleGenerateExecutionPlan(args));
|
|
67
|
+
}, safeTracked('generate_execution_plan', async (args) => handleGenerateExecutionPlan(args)));
|
|
68
68
|
// 25. suggest_stack
|
|
69
69
|
server.registerTool('suggest_stack', {
|
|
70
70
|
description: t('tools.suggest_stack.description'),
|
|
@@ -79,7 +79,7 @@ export function registerDesignStackTools(server) {
|
|
|
79
79
|
.describe('Constraints (budget, team size, timeline, etc.)'),
|
|
80
80
|
projectId: z.string().optional().describe('Project ID for context'),
|
|
81
81
|
},
|
|
82
|
-
},
|
|
82
|
+
}, safeTracked('suggest_stack', async (args) => handleSuggestStack(args)));
|
|
83
83
|
// 26. check_versions
|
|
84
84
|
server.registerTool('check_versions', {
|
|
85
85
|
description: t('tools.check_versions.description'),
|
|
@@ -90,7 +90,7 @@ export function registerDesignStackTools(server) {
|
|
|
90
90
|
.optional()
|
|
91
91
|
.describe('Include dev dependencies (default: false)'),
|
|
92
92
|
},
|
|
93
|
-
},
|
|
93
|
+
}, safeTracked('check_versions', async (args) => handleCheckVersions(args)));
|
|
94
94
|
// 27. generate_skill
|
|
95
95
|
server.registerTool('generate_skill', {
|
|
96
96
|
description: t('tools.generate_skill.description'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"design-stack-tools.js","sourceRoot":"","sources":["../../../src/tools/register-platform-tools/design-stack-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;AACxC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"design-stack-tools.js","sourceRoot":"","sources":["../../../src/tools/register-platform-tools/design-stack-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { t } from '../../i18n/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import { safeTracked, safeLicensed } from '../safe-handler.js';
|
|
4
4
|
import { DocumentationTypeEnum, GitActionEnum, DevLifecycleCategoryEnum, PMPlatformEnum, PMActionEnum, OrchestrateActionEnum, ManageContextActionEnum, ContextBudgetActionEnum, } from '../schemas/index.js';
|
|
5
5
|
import { handleSuggestTooling } from '../suggest-tooling.js';
|
|
6
6
|
import { handleGenerateTests } from '../generate-tests.js';
|
|
@@ -35,7 +35,7 @@ export function registerLifecycleInfraTools(server) {
|
|
|
35
35
|
projectId: z.string().describe('Project ID'),
|
|
36
36
|
autoGenerate: z.boolean().optional().describe('Auto-generate test files (default: false)'),
|
|
37
37
|
},
|
|
38
|
-
},
|
|
38
|
+
}, safeTracked('generate_tests', async (args) => handleGenerateTests(args)));
|
|
39
39
|
// 33. generate_docs
|
|
40
40
|
server.registerTool('generate_docs', {
|
|
41
41
|
description: t('tools.generate_docs.description'),
|
|
@@ -55,7 +55,7 @@ export function registerLifecycleInfraTools(server) {
|
|
|
55
55
|
.describe('Output format: markdown | html | pdf-ready (default: markdown)'),
|
|
56
56
|
language: z.string().optional().describe('Language for the documentation'),
|
|
57
57
|
},
|
|
58
|
-
},
|
|
58
|
+
}, safeTracked('generate_docs', async (args) => handleGenerateDocs(args)));
|
|
59
59
|
// 34. manage_context
|
|
60
60
|
server.registerTool('manage_context', {
|
|
61
61
|
description: t('tools.manage_context.description'),
|
|
@@ -89,7 +89,7 @@ export function registerLifecycleInfraTools(server) {
|
|
|
89
89
|
.optional()
|
|
90
90
|
.describe('Git configuration overrides'),
|
|
91
91
|
},
|
|
92
|
-
}, async (args) => handleManageGit(args));
|
|
92
|
+
}, safeTracked('manage_git', async (args) => handleManageGit(args)));
|
|
93
93
|
// 36. orchestrate
|
|
94
94
|
server.registerTool('orchestrate', {
|
|
95
95
|
description: t('tools.orchestrate.description'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-infra-tools.js","sourceRoot":"","sources":["../../../src/tools/register-platform-tools/lifecycle-infra-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;AACxC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"lifecycle-infra-tools.js","sourceRoot":"","sources":["../../../src/tools/register-platform-tools/lifecycle-infra-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { t } from '../../i18n/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import { safeTracked, safeLicensed } from '../safe-handler.js';
|
|
4
4
|
import { ChecklistFocusEnum, AuditCategoryEnum } from '../schemas/index.js';
|
|
5
5
|
import { handleDetectDrift } from '../detect-drift.js';
|
|
6
6
|
import { handleSummarizeSpec } from '../summarize-spec.js';
|
|
@@ -31,7 +31,7 @@ export function registerAnalysisTools(server) {
|
|
|
31
31
|
.describe('Output format: report | ci-json | github-annotations'),
|
|
32
32
|
threshold: z.number().optional().describe('Drift tolerance threshold 0-100 (default: 10)'),
|
|
33
33
|
},
|
|
34
|
-
},
|
|
34
|
+
}, safeTracked('detect_drift', async (args) => handleDetectDrift(args)));
|
|
35
35
|
// 12. summarize_spec
|
|
36
36
|
server.registerTool('summarize_spec', {
|
|
37
37
|
description: t('tools.summarize_spec.description'),
|
|
@@ -44,7 +44,7 @@ export function registerAnalysisTools(server) {
|
|
|
44
44
|
.optional()
|
|
45
45
|
.describe('Summary format: executive | technical | oneliner (default: technical)'),
|
|
46
46
|
},
|
|
47
|
-
}, async (args) => handleSummarizeSpec(args));
|
|
47
|
+
}, safeTracked('summarize_spec', async (args) => handleSummarizeSpec(args)));
|
|
48
48
|
// 13. generate_checklist
|
|
49
49
|
server.registerTool('generate_checklist', {
|
|
50
50
|
description: t('tools.generate_checklist.description'),
|
|
@@ -87,7 +87,7 @@ export function registerAnalysisTools(server) {
|
|
|
87
87
|
pattern: z.string().describe('Pattern description'),
|
|
88
88
|
source: z.string().optional().describe('Where this pattern was observed'),
|
|
89
89
|
},
|
|
90
|
-
},
|
|
90
|
+
}, safeTracked('learn_pattern', async (args) => handleLearn(args)));
|
|
91
91
|
// 16. audit
|
|
92
92
|
server.registerTool('audit', {
|
|
93
93
|
description: t('tools.audit.description'),
|
|
@@ -109,7 +109,7 @@ export function registerAnalysisTools(server) {
|
|
|
109
109
|
.optional()
|
|
110
110
|
.describe('Framework to consult docs for (auto-detected if omitted)'),
|
|
111
111
|
},
|
|
112
|
-
},
|
|
112
|
+
}, safeTracked('consult_docs', async (args) => handleConsultDocs(args)));
|
|
113
113
|
// 18. discover_mcps
|
|
114
114
|
server.registerTool('discover_mcps', {
|
|
115
115
|
description: t('tools.discover_mcps.description'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-tools.js","sourceRoot":"","sources":["../../../src/tools/register-spec-tools/analysis-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;AACxC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"analysis-tools.js","sourceRoot":"","sources":["../../../src/tools/register-spec-tools/analysis-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { t } from '../../i18n/index.js';
|
|
3
|
-
import {
|
|
3
|
+
import { safeTracked, safeLicensed } from '../safe-handler.js';
|
|
4
4
|
import { SupportedLocaleEnum, SpecStatusEnum, SpecTypeEnum, SpecScopeEnum, SpecTargetEnum, ExperienceLevelEnum, } from '../schemas/index.js';
|
|
5
5
|
import { handleSetLocale } from '../set-locale.js';
|
|
6
6
|
import { handleInitProject } from '../init-project.js';
|
|
@@ -23,7 +23,7 @@ export function registerCoreSpecTools(server) {
|
|
|
23
23
|
locale: SupportedLocaleEnum.describe('Target locale (en, es, pt)'),
|
|
24
24
|
projectId: z.string().optional().describe('Optional project ID to set locale per-project'),
|
|
25
25
|
},
|
|
26
|
-
},
|
|
26
|
+
}, safeTracked('set_locale', async (args) => handleSetLocale(args)));
|
|
27
27
|
// 2. init_project
|
|
28
28
|
server.registerTool('init_project', {
|
|
29
29
|
description: t('tools.init_project.description'),
|
|
@@ -44,7 +44,7 @@ export function registerCoreSpecTools(server) {
|
|
|
44
44
|
.optional()
|
|
45
45
|
.describe('User profile type — determines how detailed and technical Planu interactions will be. Ask the user before running init_project.'),
|
|
46
46
|
},
|
|
47
|
-
}, async (args) => handleInitProject(args));
|
|
47
|
+
}, safeTracked('init_project', async (args) => handleInitProject(args)));
|
|
48
48
|
// 3. init_constitution
|
|
49
49
|
server.registerTool('init_constitution', {
|
|
50
50
|
description: t('tools.init_constitution.description'),
|
|
@@ -75,7 +75,7 @@ export function registerCoreSpecTools(server) {
|
|
|
75
75
|
.optional()
|
|
76
76
|
.describe('Manual principles to include'),
|
|
77
77
|
},
|
|
78
|
-
}, async (args) => handleInitConstitution(args));
|
|
78
|
+
}, safeTracked('init_constitution', async (args) => handleInitConstitution(args)));
|
|
79
79
|
// 4. clarify_requirements
|
|
80
80
|
server.registerTool('clarify_requirements', {
|
|
81
81
|
description: t('tools.clarify_requirements.description'),
|
|
@@ -88,7 +88,7 @@ export function registerCoreSpecTools(server) {
|
|
|
88
88
|
.optional()
|
|
89
89
|
.describe('Maximum number of questions to generate (default: 5)'),
|
|
90
90
|
},
|
|
91
|
-
}, async (args) => handleClarifyRequirements(args));
|
|
91
|
+
}, safeTracked('clarify_requirements', async (args) => handleClarifyRequirements(args)));
|
|
92
92
|
// 5. create_spec
|
|
93
93
|
server.registerTool('create_spec', {
|
|
94
94
|
description: t('tools.create_spec.description'),
|
|
@@ -105,7 +105,7 @@ export function registerCoreSpecTools(server) {
|
|
|
105
105
|
.optional()
|
|
106
106
|
.describe('Feature group name (e.g. "Authentication", "Billing"). Specs are organized under {specLocation}/{feature}/. Defaults to _general.'),
|
|
107
107
|
},
|
|
108
|
-
}, async (args) => handleCreateSpec(args));
|
|
108
|
+
}, safeTracked('create_spec', async (args) => handleCreateSpec(args)));
|
|
109
109
|
// 6. list_specs
|
|
110
110
|
server.registerTool('list_specs', {
|
|
111
111
|
description: t('tools.list_specs.description'),
|
|
@@ -114,7 +114,7 @@ export function registerCoreSpecTools(server) {
|
|
|
114
114
|
status: SpecStatusEnum.optional().describe('Filter by spec status'),
|
|
115
115
|
type: SpecTypeEnum.optional().describe('Filter by spec type'),
|
|
116
116
|
},
|
|
117
|
-
}, async (args) => handleListSpecs(args));
|
|
117
|
+
}, safeTracked('list_specs', async (args) => handleListSpecs(args)));
|
|
118
118
|
// 7. update_status
|
|
119
119
|
server.registerTool('update_status', {
|
|
120
120
|
description: t('tools.update_status.description'),
|
|
@@ -137,7 +137,7 @@ export function registerCoreSpecTools(server) {
|
|
|
137
137
|
.optional()
|
|
138
138
|
.describe('Actual metrics (required when status = done)'),
|
|
139
139
|
},
|
|
140
|
-
}, async (args) => handleUpdateStatus(args));
|
|
140
|
+
}, safeTracked('update_status', async (args) => handleUpdateStatus(args)));
|
|
141
141
|
// 8. estimate
|
|
142
142
|
server.registerTool('estimate', {
|
|
143
143
|
description: t('tools.estimate.description'),
|
|
@@ -145,7 +145,7 @@ export function registerCoreSpecTools(server) {
|
|
|
145
145
|
specId: z.string().describe('Spec ID to estimate'),
|
|
146
146
|
projectId: z.string().describe('Project ID'),
|
|
147
147
|
},
|
|
148
|
-
},
|
|
148
|
+
}, safeTracked('estimate', async (args) => handleEstimate(args)));
|
|
149
149
|
// 9. reverse_engineer
|
|
150
150
|
server.registerTool('reverse_engineer', {
|
|
151
151
|
description: t('tools.reverse_engineer.description'),
|
|
@@ -162,6 +162,6 @@ export function registerCoreSpecTools(server) {
|
|
|
162
162
|
specId: z.string().describe('Spec ID to validate'),
|
|
163
163
|
projectId: z.string().describe('Project ID'),
|
|
164
164
|
},
|
|
165
|
-
},
|
|
165
|
+
}, safeTracked('validate', async (args) => handleValidate(args)));
|
|
166
166
|
}
|
|
167
167
|
//# sourceMappingURL=core-spec-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-spec-tools.js","sourceRoot":"","sources":["../../../src/tools/register-spec-tools/core-spec-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;AACxC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"core-spec-tools.js","sourceRoot":"","sources":["../../../src/tools/register-spec-tools/core-spec-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACd,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,gBAAgB;IAChB,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,WAAW,EAAE,CAAC,CAAC,8BAA8B,CAAC;QAC9C,WAAW,EAAE;YACX,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YAClE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;SAC3F;KACF,EACD,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CACjE,CAAC;IAEF,kBAAkB;IAClB,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EAAE,CAAC,CAAC,gCAAgC,CAAC;QAChD,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YACrE,MAAM,EAAE,mBAAmB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YACpF,YAAY,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,+EAA+E,CAChF;YACH,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,kDAAkD,CAAC;YAC/D,eAAe,EAAE,mBAAmB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACtD,+DAA+D,CAChE;YACD,WAAW,EAAE,CAAC;iBACX,IAAI,CAAC,CAAC,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;iBACjE,QAAQ,EAAE;iBACV,QAAQ,CACP,iIAAiI,CAClI;SACJ;KACF,EACD,WAAW,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CACrE,CAAC;IAEF,uBAAuB;IACvB,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EAAE,CAAC,CAAC,qCAAqC,CAAC;QACrD,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,UAAU,EAAE,CAAC;iBACV,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,sDAAsD,CAAC;YACnE,UAAU,EAAE,CAAC;iBACV,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;gBACP,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;gBACd,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC;oBACf,cAAc;oBACd,UAAU;oBACV,SAAS;oBACT,aAAa;oBACb,YAAY;oBACZ,UAAU;iBACX,CAAC;gBACF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;gBACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;gBACrB,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAC/C,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE;gBAC5B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;gBACzE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;aACvB,CAAC,CACH;iBACA,QAAQ,EAAE;iBACV,QAAQ,CAAC,8BAA8B,CAAC;SAC5C;KACF,EACD,WAAW,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAC/E,CAAC;IAEF,0BAA0B;IAC1B,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EAAE,CAAC,CAAC,wCAAwC,CAAC;QACxD,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YAC7D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YACnF,YAAY,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,sDAAsD,CAAC;SACpE;KACF,EACD,WAAW,CAAC,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,CACrF,CAAC;IAEF,iBAAiB;IACjB,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EAAE,CAAC,CAAC,+BAA+B,CAAC;QAC/C,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YAC5D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;YACjF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YACrE,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YACtE,KAAK,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YACzE,MAAM,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACxC,6EAA6E,CAC9E;YACD,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YACxE,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,mIAAmI,CACpI;SACJ;KACF,EACD,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CACnE,CAAC;IAEF,gBAAgB;IAChB,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,WAAW,EAAE,CAAC,CAAC,8BAA8B,CAAC;QAC9C,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,MAAM,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YACnE,IAAI,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;SAC9D;KACF,EACD,WAAW,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CACjE,CAAC;IAEF,mBAAmB;IACnB,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EAAE,CAAC,CAAC,iCAAiC,CAAC;QACjD,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YAChD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC7C,OAAO,EAAE,CAAC;iBACP,MAAM,CAAC;gBACN,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;gBACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;gBACvB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;gBACtB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;gBACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;gBACtB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;gBACxB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;gBACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;gBACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;aAClB,CAAC;iBACD,QAAQ,EAAE;iBACV,QAAQ,CAAC,8CAA8C,CAAC;SAC5D;KACF,EACD,WAAW,CAAC,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CACvE,CAAC;IAEF,cAAc;IACd,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,WAAW,EAAE,CAAC,CAAC,4BAA4B,CAAC;QAC5C,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAClD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;SAC7C;KACF,EACD,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAC9D,CAAC;IAEF,sBAAsB;IACtB,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EAAE,CAAC,CAAC,oCAAoC,CAAC;QACpD,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YACrE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;SAC5F;KACF,EACD,YAAY,CAAC,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAC9E,CAAC;IAEF,eAAe;IACf,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,WAAW,EAAE,CAAC,CAAC,4BAA4B,CAAC;QAC5C,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAClD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;SAC7C;KACF,EACD,WAAW,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAC9D,CAAC;AACJ,CAAC"}
|
|
@@ -3,13 +3,21 @@ import type { ToolResult } from '../types/index.js';
|
|
|
3
3
|
* Wraps a tool handler so that any unhandled error is caught and returned as a
|
|
4
4
|
* graceful MCP error response, preventing server crashes.
|
|
5
5
|
*
|
|
6
|
-
* Usage:
|
|
6
|
+
* Usage — only for alwaysAllowed tools (activate_license, license_status, etc.):
|
|
7
7
|
* server.registerTool('my_tool', schema, safe(async (args) => { ... }));
|
|
8
8
|
*/
|
|
9
9
|
export declare function safe<T>(handler: (args: T) => Promise<ToolResult>): (args: T) => Promise<ToolResult>;
|
|
10
10
|
/**
|
|
11
|
-
* Composable wrapper:
|
|
12
|
-
* Use for tools that
|
|
11
|
+
* Composable wrapper: usage tracking + error boundary.
|
|
12
|
+
* Use for free-tier tools that need rate limiting and usage recording.
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
* server.registerTool('free_tool', schema, safeTracked('free_tool', async (args) => { ... }));
|
|
16
|
+
*/
|
|
17
|
+
export declare function safeTracked<T>(toolName: string, handler: (args: T) => Promise<ToolResult>): (args: T) => Promise<ToolResult>;
|
|
18
|
+
/**
|
|
19
|
+
* Composable wrapper: usage tracking + license gate + error boundary.
|
|
20
|
+
* Use for tools that require a paid plan.
|
|
13
21
|
*
|
|
14
22
|
* Usage:
|
|
15
23
|
* server.registerTool('pro_tool', schema, safeLicensed('pro_tool', async (args) => { ... }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-handler.d.ts","sourceRoot":"","sources":["../../src/tools/safe-handler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,CAAC,EACpB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACxC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAYlC;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACxC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAElC"}
|
|
1
|
+
{"version":3,"file":"safe-handler.d.ts","sourceRoot":"","sources":["../../src/tools/safe-handler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,CAAC,EACpB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACxC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAYlC;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACxC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAElC;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACxC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAElC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
// tools/safe-handler.ts — Generic error-boundary wrapper for MCP tool handlers.
|
|
2
2
|
// Catches any unhandled error and returns a graceful MCP error response
|
|
3
3
|
// instead of crashing the server.
|
|
4
|
-
import { withLicenseGate } from './license-gate.js';
|
|
4
|
+
import { withLicenseGate, withUsageTracking } from './license-gate.js';
|
|
5
5
|
/**
|
|
6
6
|
* Wraps a tool handler so that any unhandled error is caught and returned as a
|
|
7
7
|
* graceful MCP error response, preventing server crashes.
|
|
8
8
|
*
|
|
9
|
-
* Usage:
|
|
9
|
+
* Usage — only for alwaysAllowed tools (activate_license, license_status, etc.):
|
|
10
10
|
* server.registerTool('my_tool', schema, safe(async (args) => { ... }));
|
|
11
11
|
*/
|
|
12
12
|
export function safe(handler) {
|
|
@@ -24,13 +24,23 @@ export function safe(handler) {
|
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
|
-
* Composable wrapper:
|
|
28
|
-
* Use for tools that
|
|
27
|
+
* Composable wrapper: usage tracking + error boundary.
|
|
28
|
+
* Use for free-tier tools that need rate limiting and usage recording.
|
|
29
|
+
*
|
|
30
|
+
* Usage:
|
|
31
|
+
* server.registerTool('free_tool', schema, safeTracked('free_tool', async (args) => { ... }));
|
|
32
|
+
*/
|
|
33
|
+
export function safeTracked(toolName, handler) {
|
|
34
|
+
return safe(withUsageTracking(toolName, handler));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Composable wrapper: usage tracking + license gate + error boundary.
|
|
38
|
+
* Use for tools that require a paid plan.
|
|
29
39
|
*
|
|
30
40
|
* Usage:
|
|
31
41
|
* server.registerTool('pro_tool', schema, safeLicensed('pro_tool', async (args) => { ... }));
|
|
32
42
|
*/
|
|
33
43
|
export function safeLicensed(toolName, handler) {
|
|
34
|
-
return safe(withLicenseGate(toolName, handler));
|
|
44
|
+
return safe(withUsageTracking(toolName, withLicenseGate(toolName, handler)));
|
|
35
45
|
}
|
|
36
46
|
//# sourceMappingURL=safe-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-handler.js","sourceRoot":"","sources":["../../src/tools/safe-handler.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,wEAAwE;AACxE,kCAAkC;AAGlC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"safe-handler.js","sourceRoot":"","sources":["../../src/tools/safe-handler.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,wEAAwE;AACxE,kCAAkC;AAGlC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,UAAU,IAAI,CAClB,OAAyC;IAEzC,OAAO,KAAK,EAAE,IAAO,EAAuB,EAAE;QAC5C,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;gBACtD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,QAAgB,EAChB,OAAyC;IAEzC,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAgB,EAChB,OAAyC;IAEzC,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/E,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@planu/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.0",
|
|
4
4
|
"description": "Planu — MCP Server for Spec Driven Development. Manages specs, estimations, reverse engineering, and auto-learning across any language/framework.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"suggest_tooling",
|
|
82
82
|
"validate_workflow"
|
|
83
83
|
],
|
|
84
|
-
"alwaysAllowed": ["activate_license", "license_status"],
|
|
84
|
+
"alwaysAllowed": ["activate_license", "deactivate_license", "license_status", "usage_stats", "usage_report"],
|
|
85
85
|
"variantMapping": {
|
|
86
86
|
"Planu Pro": "pro",
|
|
87
87
|
"Planu Team": "team"
|