@planu/cli 0.74.0 → 0.76.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/README.md +1 -1
- package/dist/config/license-plans.json +6 -1
- package/dist/engine/elicitation/index.d.ts +1 -0
- package/dist/engine/elicitation/index.d.ts.map +1 -1
- package/dist/engine/elicitation/index.js +1 -0
- package/dist/engine/elicitation/index.js.map +1 -1
- package/dist/engine/elicitation/question-generator.d.ts +13 -0
- package/dist/engine/elicitation/question-generator.d.ts.map +1 -0
- package/dist/engine/elicitation/question-generator.js +112 -0
- package/dist/engine/elicitation/question-generator.js.map +1 -0
- package/dist/engine/skills/skills-fetcher.d.ts +2 -0
- package/dist/engine/skills/skills-fetcher.d.ts.map +1 -1
- package/dist/engine/skills/skills-fetcher.js +37 -0
- package/dist/engine/skills/skills-fetcher.js.map +1 -1
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/configure-oauth-handler.d.ts +4 -0
- package/dist/tools/configure-oauth-handler.d.ts.map +1 -0
- package/dist/tools/configure-oauth-handler.js +57 -0
- package/dist/tools/configure-oauth-handler.js.map +1 -0
- package/dist/tools/create-spec-hu/ac-adapters/architecture-adapter.d.ts.map +1 -1
- package/dist/tools/create-spec-hu/ac-adapters/architecture-adapter.js +30 -5
- package/dist/tools/create-spec-hu/ac-adapters/architecture-adapter.js.map +1 -1
- package/dist/tools/create-spec-hu/frontend-architecture-hu-adapter.d.ts +8 -0
- package/dist/tools/create-spec-hu/frontend-architecture-hu-adapter.d.ts.map +1 -0
- package/dist/tools/create-spec-hu/frontend-architecture-hu-adapter.js +95 -0
- package/dist/tools/create-spec-hu/frontend-architecture-hu-adapter.js.map +1 -0
- package/dist/tools/create-spec-hu.d.ts.map +1 -1
- package/dist/tools/create-spec-hu.js +4 -0
- package/dist/tools/create-spec-hu.js.map +1 -1
- package/dist/tools/elicit-requirements-handler.d.ts +4 -0
- package/dist/tools/elicit-requirements-handler.d.ts.map +1 -0
- package/dist/tools/elicit-requirements-handler.js +68 -0
- package/dist/tools/elicit-requirements-handler.js.map +1 -0
- package/dist/tools/generate-spec-from-design.d.ts +3 -0
- package/dist/tools/generate-spec-from-design.d.ts.map +1 -0
- package/dist/tools/generate-spec-from-design.js +90 -0
- package/dist/tools/generate-spec-from-design.js.map +1 -0
- package/dist/tools/register-elicitation-tools.d.ts +3 -0
- package/dist/tools/register-elicitation-tools.d.ts.map +1 -0
- package/dist/tools/register-elicitation-tools.js +33 -0
- package/dist/tools/register-elicitation-tools.js.map +1 -0
- package/dist/tools/register-generate-spec-from-design.d.ts +3 -0
- package/dist/tools/register-generate-spec-from-design.d.ts.map +1 -0
- package/dist/tools/register-generate-spec-from-design.js +45 -0
- package/dist/tools/register-generate-spec-from-design.js.map +1 -0
- package/dist/tools/register-oauth-tools.d.ts +3 -0
- package/dist/tools/register-oauth-tools.d.ts.map +1 -0
- package/dist/tools/register-oauth-tools.js +24 -0
- package/dist/tools/register-oauth-tools.js.map +1 -0
- package/dist/transports/http-transport.d.ts.map +1 -1
- package/dist/transports/http-transport.js +17 -0
- package/dist/transports/http-transport.js.map +1 -1
- package/dist/transports/oauth-validator.d.ts +6 -0
- package/dist/transports/oauth-validator.d.ts.map +1 -0
- package/dist/transports/oauth-validator.js +76 -0
- package/dist/transports/oauth-validator.js.map +1 -0
- package/dist/types/design-to-spec.d.ts +11 -0
- package/dist/types/design-to-spec.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/oauth.d.ts +17 -0
- package/dist/types/oauth.d.ts.map +1 -0
- package/dist/types/oauth.js +3 -0
- package/dist/types/oauth.js.map +1 -0
- package/dist/types/spec-elicitation.d.ts +24 -0
- package/dist/types/spec-elicitation.d.ts.map +1 -0
- package/dist/types/spec-elicitation.js +3 -0
- package/dist/types/spec-elicitation.js.map +1 -0
- package/package.json +1 -1
- package/src/config/license-plans.json +6 -1
package/README.md
CHANGED
|
@@ -242,7 +242,7 @@ claude mcp add planu node /absolute/path/to/planu/dist/index.js
|
|
|
242
242
|
```
|
|
243
243
|
src/
|
|
244
244
|
├── index.ts # MCP server entry point
|
|
245
|
-
├── tools/ # MCP tool handlers (
|
|
245
|
+
├── tools/ # MCP tool handlers (174 tools, 9 streams A-I)
|
|
246
246
|
├── resources/ # MCP resources (read-only)
|
|
247
247
|
├── engine/ # Business logic (estimator, analyzer, validator)
|
|
248
248
|
├── storage/ # JSON persistence layer
|
|
@@ -178,7 +178,12 @@
|
|
|
178
178
|
"generate_infrastructure",
|
|
179
179
|
"spec_usage_report",
|
|
180
180
|
"triage_feedback",
|
|
181
|
-
"resolve_feedback"
|
|
181
|
+
"resolve_feedback",
|
|
182
|
+
"a2a_register",
|
|
183
|
+
"a2a_delegate",
|
|
184
|
+
"generate_spec_from_design",
|
|
185
|
+
"configure_oauth",
|
|
186
|
+
"elicit_requirements"
|
|
182
187
|
],
|
|
183
188
|
"alwaysAllowed": [
|
|
184
189
|
"activate_license",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/elicitation/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/elicitation/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/elicitation/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/elicitation/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ElicitationQuestion, ElicitationSession } from '../../types/index.js';
|
|
2
|
+
export type { ElicitationQuestion, ElicitationSession };
|
|
3
|
+
/** Generate standard clarification questions for a feature spec */
|
|
4
|
+
export declare function generateSpecQuestions(title: string, description: string, context?: {
|
|
5
|
+
framework?: string;
|
|
6
|
+
hasDatabase?: boolean;
|
|
7
|
+
isApi?: boolean;
|
|
8
|
+
}): ElicitationQuestion[];
|
|
9
|
+
/** Format questions as a readable prompt for the LLM to present to the user */
|
|
10
|
+
export declare function formatQuestionsAsPrompt(session: ElicitationSession): string;
|
|
11
|
+
/** Parse answers from free-form text (numbered list format) */
|
|
12
|
+
export declare function parseAnswers(questions: ElicitationQuestion[], answersText: string): Record<string, string>;
|
|
13
|
+
//# sourceMappingURL=question-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"question-generator.d.ts","sourceRoot":"","sources":["../../../src/engine/elicitation/question-generator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAEpF,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;AAExD,mEAAmE;AACnE,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACvE,mBAAmB,EAAE,CA2EvB;AAED,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CA2B3E;AAED,+DAA+D;AAC/D,wBAAgB,YAAY,CAC1B,SAAS,EAAE,mBAAmB,EAAE,EAChC,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBxB"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// src/engine/elicitation/question-generator.ts
|
|
2
|
+
// SPEC-163: Generates structured clarification questions for spec creation.
|
|
3
|
+
/** Generate standard clarification questions for a feature spec */
|
|
4
|
+
export function generateSpecQuestions(title, description, context) {
|
|
5
|
+
const questions = [];
|
|
6
|
+
const lowerDesc = description.toLowerCase();
|
|
7
|
+
questions.push({
|
|
8
|
+
id: 'users',
|
|
9
|
+
category: 'users',
|
|
10
|
+
question: `Who are the primary users of "${title}"?`,
|
|
11
|
+
hint: 'e.g., "authenticated users", "admin only", "all visitors"',
|
|
12
|
+
required: true,
|
|
13
|
+
answerType: 'text',
|
|
14
|
+
});
|
|
15
|
+
questions.push({
|
|
16
|
+
id: 'success',
|
|
17
|
+
category: 'success',
|
|
18
|
+
question: 'How will you know when this feature is successfully implemented?',
|
|
19
|
+
hint: "Describe the outcome from the user's perspective",
|
|
20
|
+
required: true,
|
|
21
|
+
answerType: 'text',
|
|
22
|
+
});
|
|
23
|
+
questions.push({
|
|
24
|
+
id: 'scope',
|
|
25
|
+
category: 'scope',
|
|
26
|
+
question: 'What is the scope of this change?',
|
|
27
|
+
required: true,
|
|
28
|
+
answerType: 'choice',
|
|
29
|
+
choices: [
|
|
30
|
+
'Small change in one place',
|
|
31
|
+
'Medium feature across 2-3 areas',
|
|
32
|
+
'Large cross-module change',
|
|
33
|
+
'Major architectural change',
|
|
34
|
+
],
|
|
35
|
+
});
|
|
36
|
+
questions.push({
|
|
37
|
+
id: 'edge_cases',
|
|
38
|
+
category: 'behavior',
|
|
39
|
+
question: 'What should happen in error or edge cases?',
|
|
40
|
+
hint: 'e.g., "show error message", "redirect to login", "fail silently"',
|
|
41
|
+
required: false,
|
|
42
|
+
answerType: 'text',
|
|
43
|
+
});
|
|
44
|
+
if (context?.hasDatabase === true || lowerDesc.includes('data') || lowerDesc.includes('store')) {
|
|
45
|
+
questions.push({
|
|
46
|
+
id: 'data',
|
|
47
|
+
category: 'data',
|
|
48
|
+
question: 'What data needs to be stored or retrieved for this feature?',
|
|
49
|
+
hint: 'List the key fields/entities involved',
|
|
50
|
+
required: false,
|
|
51
|
+
answerType: 'text',
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
if (context?.isApi === true || lowerDesc.includes('api') || lowerDesc.includes('endpoint')) {
|
|
55
|
+
questions.push({
|
|
56
|
+
id: 'api_contract',
|
|
57
|
+
category: 'constraints',
|
|
58
|
+
question: 'Does this require a new API endpoint or changes to existing ones?',
|
|
59
|
+
required: false,
|
|
60
|
+
answerType: 'yes-no',
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
questions.push({
|
|
64
|
+
id: 'performance',
|
|
65
|
+
category: 'constraints',
|
|
66
|
+
question: 'Are there performance requirements (response time, load, etc.)?',
|
|
67
|
+
required: false,
|
|
68
|
+
answerType: 'text',
|
|
69
|
+
});
|
|
70
|
+
return questions;
|
|
71
|
+
}
|
|
72
|
+
/** Format questions as a readable prompt for the LLM to present to the user */
|
|
73
|
+
export function formatQuestionsAsPrompt(session) {
|
|
74
|
+
const lines = [
|
|
75
|
+
`## Clarification needed for: "${session.title}"`,
|
|
76
|
+
'',
|
|
77
|
+
'Please answer the following questions to help create a detailed spec:',
|
|
78
|
+
'',
|
|
79
|
+
];
|
|
80
|
+
session.questions.forEach((q, i) => {
|
|
81
|
+
const required = q.required ? ' *(required)*' : ' *(optional)*';
|
|
82
|
+
lines.push(`**${i + 1}. ${q.question}**${required}`);
|
|
83
|
+
if (q.hint !== undefined) {
|
|
84
|
+
lines.push(` > Hint: ${q.hint}`);
|
|
85
|
+
}
|
|
86
|
+
if (q.choices !== undefined) {
|
|
87
|
+
lines.push(' Options:');
|
|
88
|
+
q.choices.forEach((c) => lines.push(` - ${c}`));
|
|
89
|
+
}
|
|
90
|
+
lines.push('');
|
|
91
|
+
});
|
|
92
|
+
lines.push('---');
|
|
93
|
+
lines.push('*Reply with your answers (e.g., "1. Admin users 2. User sees dashboard with charts...")*');
|
|
94
|
+
return lines.join('\n');
|
|
95
|
+
}
|
|
96
|
+
/** Parse answers from free-form text (numbered list format) */
|
|
97
|
+
export function parseAnswers(questions, answersText) {
|
|
98
|
+
const answers = {};
|
|
99
|
+
const lines = answersText.split('\n');
|
|
100
|
+
lines.forEach((line) => {
|
|
101
|
+
const match = /^(\d+)[.)]\s*(.+)/.exec(line.trim());
|
|
102
|
+
if (match?.[1] !== undefined && match[2] !== undefined) {
|
|
103
|
+
const idx = parseInt(match[1], 10) - 1;
|
|
104
|
+
const question = questions[idx];
|
|
105
|
+
if (idx >= 0 && question !== undefined) {
|
|
106
|
+
answers[question.id] = match[2].trim();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
return answers;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=question-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"question-generator.js","sourceRoot":"","sources":["../../../src/engine/elicitation/question-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { ProjectKnowledge, RecommendedSkill } from '../../types/index.js';
|
|
2
|
+
/** Returns true when the project has signals of product identity / marketing content. */
|
|
3
|
+
export declare function hasMarketingSignals(knowledge: ProjectKnowledge): boolean;
|
|
2
4
|
export declare function isMcpServer(knowledge: ProjectKnowledge): boolean;
|
|
3
5
|
export declare function fetchRecommendedSkills(knowledge: ProjectKnowledge): Promise<RecommendedSkill[]>;
|
|
4
6
|
//# sourceMappingURL=skills-fetcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills-fetcher.d.ts","sourceRoot":"","sources":["../../../src/engine/skills/skills-fetcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"skills-fetcher.d.ts","sourceRoot":"","sources":["../../../src/engine/skills/skills-fetcher.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAM/E,yFAAyF;AACzF,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAexE;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAQhE;AAED,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA2C7B"}
|
|
@@ -1,7 +1,27 @@
|
|
|
1
1
|
// engine/skills/skills-fetcher.ts — SPEC-022: skills.sh catalog fetcher
|
|
2
2
|
// Business logic for fetching and recommending AI agent skills.
|
|
3
3
|
// Lives in engine/ so engine/ modules can import it without violating architecture.
|
|
4
|
+
// SPEC-198: design/marketing skill detection added.
|
|
4
5
|
import { fetchUrl } from '../web-fetcher/http-client.js';
|
|
6
|
+
const MARKETING_DIR_KEYWORDS = ['landing', 'marketing', 'brand', 'assets/brand', 'brand-assets'];
|
|
7
|
+
const MARKETING_STACK_KEYWORDS = ['landing', 'saas', 'startup', 'website', 'brand', 'marketing'];
|
|
8
|
+
/** Returns true when the project has signals of product identity / marketing content. */
|
|
9
|
+
export function hasMarketingSignals(knowledge) {
|
|
10
|
+
const stackLower = knowledge.stack.map((s) => s.toLowerCase());
|
|
11
|
+
if (MARKETING_STACK_KEYWORDS.some((k) => stackLower.some((s) => s.includes(k)))) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
const projectPathLower = knowledge.projectPath.toLowerCase();
|
|
15
|
+
if (MARKETING_DIR_KEYWORDS.some((k) => projectPathLower.includes(k))) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
const apps = Array.isArray(knowledge.apps) ? knowledge.apps : [];
|
|
19
|
+
if (apps.some((a) => MARKETING_DIR_KEYWORDS.some((k) => a.name.toLowerCase().includes(k)))) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
const conventionsStr = Object.values(knowledge.conventions).join(' ').toLowerCase();
|
|
23
|
+
return MARKETING_STACK_KEYWORDS.some((k) => conventionsStr.includes(k));
|
|
24
|
+
}
|
|
5
25
|
export function isMcpServer(knowledge) {
|
|
6
26
|
const stackLower = knowledge.stack.map((s) => s.toLowerCase());
|
|
7
27
|
const toolingStr = JSON.stringify(knowledge.tooling).toLowerCase();
|
|
@@ -11,6 +31,15 @@ export function isMcpServer(knowledge) {
|
|
|
11
31
|
}
|
|
12
32
|
export async function fetchRecommendedSkills(knowledge) {
|
|
13
33
|
const skills = [];
|
|
34
|
+
// SPEC-198: add design/marketing skills when project has brand/marketing signals
|
|
35
|
+
if (hasMarketingSignals(knowledge)) {
|
|
36
|
+
skills.push({
|
|
37
|
+
name: 'brand-design-kit',
|
|
38
|
+
description: 'Logo, banner, OG image, and brand identity generation for product projects',
|
|
39
|
+
installCommand: 'npx skills add brand-design-kit',
|
|
40
|
+
justification: 'Marketing/brand signals detected in project (landing page, brand assets, or product keywords)',
|
|
41
|
+
});
|
|
42
|
+
}
|
|
14
43
|
// Always add mcp-builder first for MCP server projects
|
|
15
44
|
if (isMcpServer(knowledge)) {
|
|
16
45
|
skills.push({
|
|
@@ -97,6 +126,14 @@ function buildFallbackSkills(knowledge) {
|
|
|
97
126
|
justification: 'Python detected in project stack',
|
|
98
127
|
});
|
|
99
128
|
}
|
|
129
|
+
if (hasMarketingSignals(knowledge)) {
|
|
130
|
+
skills.push({
|
|
131
|
+
name: 'og-image-generator',
|
|
132
|
+
description: 'Generate Open Graph images, social media banners, and favicon sets',
|
|
133
|
+
installCommand: 'npx skills add og-image-generator',
|
|
134
|
+
justification: 'Marketing/brand signals detected — visual assets are typically needed',
|
|
135
|
+
});
|
|
136
|
+
}
|
|
100
137
|
return skills;
|
|
101
138
|
}
|
|
102
139
|
//# sourceMappingURL=skills-fetcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills-fetcher.js","sourceRoot":"","sources":["../../../src/engine/skills/skills-fetcher.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,gEAAgE;AAChE,oFAAoF;
|
|
1
|
+
{"version":3,"file":"skills-fetcher.js","sourceRoot":"","sources":["../../../src/engine/skills/skills-fetcher.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -84,6 +84,19 @@ import { registerGenerateProposalTool } from './tools/generate-proposal.js';
|
|
|
84
84
|
import { registerExportPdfTool } from './tools/export-pdf.js';
|
|
85
85
|
import { registerEcosystemTools } from './tools/register-ecosystem-tools.js';
|
|
86
86
|
import { registerFeedbackTools } from './tools/register-feedback-tools.js';
|
|
87
|
+
import { registerA2ATools } from './tools/register-a2a-tools.js';
|
|
88
|
+
import { registerAuditTrailTools } from './tools/register-audit-trail-tools.js';
|
|
89
|
+
import { registerDecomposeTools } from './tools/register-decompose-tools.js';
|
|
90
|
+
import { registerFederationTools } from './tools/register-federation-tools.js';
|
|
91
|
+
import { registerInfrastructureTools } from './tools/register-infrastructure-tools.js';
|
|
92
|
+
import { registerObservabilityTools } from './tools/register-observability-tools.js';
|
|
93
|
+
import { registerRbacTools } from './tools/register-rbac-tools.js';
|
|
94
|
+
import { registerSpecObservabilityTools } from './tools/register-spec-observability-tools.js';
|
|
95
|
+
import { registerVersioningTools } from './tools/register-versioning-tools.js';
|
|
96
|
+
import { registerWellKnownTools } from './tools/register-well-known-tools.js';
|
|
97
|
+
import { registerGenerateSpecFromDesignTool } from './tools/register-generate-spec-from-design.js';
|
|
98
|
+
import { registerOAuthTools } from './tools/register-oauth-tools.js';
|
|
99
|
+
import { registerElicitationTools } from './tools/register-elicitation-tools.js';
|
|
87
100
|
import { registerReconcileRulesTool } from './tools/reconcile-rules.js';
|
|
88
101
|
import { registerReconcileSkillsTool } from './tools/reconcile-skills.js';
|
|
89
102
|
import { registerReconcileHooksTool } from './tools/reconcile-hooks.js';
|
|
@@ -162,6 +175,27 @@ const SERVER_INSTRUCTIONS = [
|
|
|
162
175
|
'- When creating multiple specs at once, present ALL specs for review and let the user approve/reject each one individually.',
|
|
163
176
|
'- The reviewNotes field stores a history of all feedback — implementers can see what was requested and why.',
|
|
164
177
|
'',
|
|
178
|
+
'SKILL DISCOVERY — proactive search, mandatory in these situations:',
|
|
179
|
+
'1. AFTER init_project: call skill_search for EACH technology in the detected stack.',
|
|
180
|
+
' - Use the actual detected values: language, framework, database, key stack entries.',
|
|
181
|
+
' - Works for ANY stack: Python, Go, Rust, Java, Ruby, PHP, .NET — not just JavaScript.',
|
|
182
|
+
' - Example: stack has [Django, PostgreSQL, Celery] → call skill_search("django"), skill_search("postgresql").',
|
|
183
|
+
' - Example: stack has [Next.js, Tailwind, Prisma] → call skill_search("nextjs"), skill_search("prisma").',
|
|
184
|
+
' - Present the top 5 results grouped by technology and offer to install the most relevant.',
|
|
185
|
+
' - ALSO search for design/marketing skills when the project has brand or product signals:',
|
|
186
|
+
' * Signals: projectPath contains "landing"/"marketing"/"brand", stack has "website"/"saas"/"startup",',
|
|
187
|
+
' apps[] has marketing-named entries, or README mentions logo/brand/landing.',
|
|
188
|
+
' * When detected: call skill_search("logo design"), skill_search("banner design"),',
|
|
189
|
+
' skill_search("brand identity"), skill_search("og image"), skill_search("favicon generator").',
|
|
190
|
+
' * Present these alongside technical skills — visual assets matter as much as code.',
|
|
191
|
+
'2. BEFORE implementing any repeatable pattern: call skill_search with the pattern name.',
|
|
192
|
+
' - "add authentication" → skill_search("authentication " + detected_framework)',
|
|
193
|
+
' - "setup CI/CD" → skill_search("github actions") or skill_search("gitlab ci")',
|
|
194
|
+
'3. When the user mentions any technology by name: call skill_search with that term.',
|
|
195
|
+
'- If a matching skill is found: show it, offer to install with skill_install.',
|
|
196
|
+
'- If no skill found: proceed normally and note there are no community skills for that technology yet.',
|
|
197
|
+
'- Explain: "Skills are community-curated guides that encode best practices for this technology."',
|
|
198
|
+
'',
|
|
165
199
|
'RESPONSE FORMAT — MANDATORY for all tool results:',
|
|
166
200
|
'- NEVER show raw JSON.stringify output to the user — always format as readable markdown',
|
|
167
201
|
'- Use emojis for visual hierarchy: ✅ success, ⚠️ warning, ❌ error, 🚀 next steps, 📊 stats',
|
|
@@ -227,6 +261,19 @@ function createMcpServer() {
|
|
|
227
261
|
registerExportPdfTool(s);
|
|
228
262
|
registerEcosystemTools(s);
|
|
229
263
|
registerFeedbackTools(s);
|
|
264
|
+
registerA2ATools(s);
|
|
265
|
+
registerAuditTrailTools(s);
|
|
266
|
+
registerDecomposeTools(s);
|
|
267
|
+
registerFederationTools(s);
|
|
268
|
+
registerInfrastructureTools(s);
|
|
269
|
+
registerObservabilityTools(s);
|
|
270
|
+
registerRbacTools(s);
|
|
271
|
+
registerSpecObservabilityTools(s);
|
|
272
|
+
registerVersioningTools(s);
|
|
273
|
+
registerWellKnownTools(s);
|
|
274
|
+
registerGenerateSpecFromDesignTool(s);
|
|
275
|
+
registerOAuthTools(s);
|
|
276
|
+
registerElicitationTools(s);
|
|
230
277
|
registerReconcileRulesTool(s);
|
|
231
278
|
registerReconcileSkillsTool(s);
|
|
232
279
|
registerReconcileHooksTool(s);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configure-oauth-handler.d.ts","sourceRoot":"","sources":["../../src/tools/configure-oauth-handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAe,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAOrF,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAoCnC,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CA8BxF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// configure-oauth-handler.ts — Handler for the configure_oauth MCP tool (SPEC-161).
|
|
2
|
+
// Reads and displays the current OAuth config status (without exposing secrets).
|
|
3
|
+
import { loadOAuthConfig, extractBearerToken, validateToken, } from '../transports/oauth-validator.js';
|
|
4
|
+
function buildStatusLines(config) {
|
|
5
|
+
const exampleCurl = config.enabled
|
|
6
|
+
? 'curl -H "Authorization: Bearer <your-token>" http://localhost:3000/mcp'
|
|
7
|
+
: 'curl http://localhost:3000/mcp # No auth required — set SDD_OAUTH_API_KEY to enable';
|
|
8
|
+
const envVars = {
|
|
9
|
+
SDD_OAUTH_API_KEY: 'Set this to enable simple API-key auth (overrides JWT mode)',
|
|
10
|
+
SDD_OAUTH_JWT_SECRET: 'Set this to enable HMAC-signed JWT validation (HS256)',
|
|
11
|
+
SDD_OAUTH_ISSUER: 'Optional: expected "iss" claim in JWT (e.g. https://myapp.com)',
|
|
12
|
+
SDD_OAUTH_AUDIENCE: 'Optional: expected "aud" claim in JWT (e.g. planu-mcp)',
|
|
13
|
+
};
|
|
14
|
+
const lines = [
|
|
15
|
+
`OAuth status: ${config.enabled ? 'ENABLED' : 'DISABLED'}`,
|
|
16
|
+
`Mode: ${config.mode}`,
|
|
17
|
+
];
|
|
18
|
+
if (config.issuer) {
|
|
19
|
+
lines.push(`Issuer: ${config.issuer}`);
|
|
20
|
+
}
|
|
21
|
+
if (config.audience) {
|
|
22
|
+
lines.push(`Audience: ${config.audience}`);
|
|
23
|
+
}
|
|
24
|
+
lines.push('', 'Environment variables:');
|
|
25
|
+
for (const [key, desc] of Object.entries(envVars)) {
|
|
26
|
+
const isSet = process.env[key] !== undefined;
|
|
27
|
+
lines.push(` ${key}: ${isSet ? '(set)' : '(not set)'} — ${desc}`);
|
|
28
|
+
}
|
|
29
|
+
lines.push('', `Example: ${exampleCurl}`);
|
|
30
|
+
return lines;
|
|
31
|
+
}
|
|
32
|
+
export async function handleConfigureOAuth(args) {
|
|
33
|
+
const config = loadOAuthConfig();
|
|
34
|
+
if (args.action === 'status') {
|
|
35
|
+
const lines = buildStatusLines(config);
|
|
36
|
+
return { content: [{ type: 'text', text: lines.join('\n') }] };
|
|
37
|
+
}
|
|
38
|
+
// action === 'test'
|
|
39
|
+
const token = extractBearerToken(args.token ? `Bearer ${args.token}` : undefined);
|
|
40
|
+
if (!token) {
|
|
41
|
+
return {
|
|
42
|
+
content: [{ type: 'text', text: 'Token test result: INVALID — No token provided for test' }],
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
const testResult = await validateToken(token, config);
|
|
46
|
+
if (testResult.valid) {
|
|
47
|
+
return {
|
|
48
|
+
content: [{ type: 'text', text: 'Token test result: VALID — token accepted successfully' }],
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
content: [
|
|
53
|
+
{ type: 'text', text: `Token test result: INVALID — ${testResult.reason ?? 'Rejected'}` },
|
|
54
|
+
],
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=configure-oauth-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configure-oauth-handler.js","sourceRoot":"","sources":["../../src/tools/configure-oauth-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"architecture-adapter.d.ts","sourceRoot":"","sources":["../../../../src/tools/create-spec-hu/ac-adapters/architecture-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"architecture-adapter.d.ts","sourceRoot":"","sources":["../../../../src/tools/create-spec-hu/ac-adapters/architecture-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAuJ7E"}
|
|
@@ -91,15 +91,40 @@ export function generateArchitectureAcs(knowledge) {
|
|
|
91
91
|
'- [ ] Failure compensation logic (retry / compensate) defined for each activity',
|
|
92
92
|
'- [ ] Determinism enforced: no random, time, or I/O calls inside workflow/actor code',
|
|
93
93
|
];
|
|
94
|
-
// Frontend/rendering patterns — no specialized backend ACs generated
|
|
95
|
-
case 'microfrontends':
|
|
96
|
-
case 'jamstack':
|
|
97
|
-
case 'islands':
|
|
98
94
|
case 'spa':
|
|
99
95
|
case 'mpa':
|
|
96
|
+
return [
|
|
97
|
+
'- [ ] Route-level code splitting implemented — no single bundle with the full app',
|
|
98
|
+
'- [ ] Client-side navigation does not cause memory leaks (event listeners cleaned up on unmount)',
|
|
99
|
+
'- [ ] Global state shape documented — no implicit dependencies between unrelated features',
|
|
100
|
+
];
|
|
100
101
|
case 'ssr':
|
|
101
|
-
case 'ssg':
|
|
102
102
|
case 'isr':
|
|
103
|
+
return [
|
|
104
|
+
'- [ ] Component is hydration-safe: no browser-only APIs called during server render',
|
|
105
|
+
'- [ ] Dynamic data fetched at the correct lifecycle (server-side for SEO-critical content)',
|
|
106
|
+
'- [ ] Cache strategy documented for ISR pages (revalidate interval or on-demand tag)',
|
|
107
|
+
];
|
|
108
|
+
case 'ssg':
|
|
109
|
+
case 'jamstack':
|
|
110
|
+
return [
|
|
111
|
+
'- [ ] All dynamic content uses client-side hydration or an API route — no stale static data',
|
|
112
|
+
'- [ ] Build output audited: no sensitive data embedded in generated HTML/JSON',
|
|
113
|
+
'- [ ] Critical path CSS inlined — no render-blocking external stylesheets',
|
|
114
|
+
];
|
|
115
|
+
case 'microfrontends':
|
|
116
|
+
return [
|
|
117
|
+
'- [ ] MFE boundary clearly defined — no direct imports across micro-frontend packages',
|
|
118
|
+
'- [ ] Shared dependencies (React, design system) loaded once via module federation or import map',
|
|
119
|
+
'- [ ] MFE communicates with host via custom events or a defined contract — not window globals',
|
|
120
|
+
];
|
|
121
|
+
case 'islands':
|
|
122
|
+
return [
|
|
123
|
+
'- [ ] Island component is self-contained — no shared mutable state with the static shell',
|
|
124
|
+
'- [ ] Island hydration deferred until visible (client:visible or equivalent) when not above-fold',
|
|
125
|
+
'- [ ] Each island ships minimal JS — no full app runtime included in a leaf island',
|
|
126
|
+
];
|
|
127
|
+
// No specialized ACs for organizational patterns — handled by other adapters
|
|
103
128
|
case 'monorepo':
|
|
104
129
|
case 'multi-repo':
|
|
105
130
|
case 'cell-based':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"architecture-adapter.js","sourceRoot":"","sources":["../../../../src/tools/create-spec-hu/ac-adapters/architecture-adapter.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,gFAAgF;AAKhF;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,SAA2B;IACjE,MAAM,OAAO,GAAwB,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC;IAEpE,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,WAAW,CAAC;QACjB,KAAK,oBAAoB,CAAC;QAC1B,KAAK,OAAO;YACV,OAAO;gBACL,sGAAsG;gBACtG,uGAAuG;gBACvG,sFAAsF;aACvF,CAAC;QAEJ,KAAK,eAAe;YAClB,OAAO;gBACL,wFAAwF;gBACxF,0EAA0E;gBAC1E,4EAA4E;aAC7E,CAAC;QAEJ,KAAK,cAAc,CAAC;QACpB,KAAK,gBAAgB;YACnB,OAAO;gBACL,iFAAiF;gBACjF,uFAAuF;gBACvF,6FAA6F;aAC9F,CAAC;QAEJ,KAAK,YAAY;YACf,OAAO;gBACL,4EAA4E;gBAC5E,gFAAgF;gBAChF,yFAAyF;aAC1F,CAAC;QAEJ,KAAK,UAAU,CAAC;QAChB,KAAK,kBAAkB,CAAC;QACxB,KAAK,SAAS;YACZ,OAAO;gBACL,mFAAmF;gBACnF,4EAA4E;aAC7E,CAAC;QAEJ,KAAK,MAAM;YACT,OAAO;gBACL,2EAA2E;gBAC3E,kEAAkE;gBAClE,+EAA+E;aAChF,CAAC;QAEJ,KAAK,MAAM;YACT,OAAO;gBACL,uFAAuF;gBACvF,+DAA+D;gBAC/D,8FAA8F;aAC/F,CAAC;QAEJ,KAAK,gBAAgB;YACnB,OAAO;gBACL,iGAAiG;gBACjG,8CAA8C;gBAC9C,oFAAoF;aACrF,CAAC;QAEJ,KAAK,UAAU;YACb,OAAO;gBACL,6EAA6E;gBAC7E,0EAA0E;gBAC1E,gEAAgE;aACjE,CAAC;QAEJ,KAAK,KAAK;YACR,OAAO;gBACL,0FAA0F;gBAC1F,gFAAgF;gBAChF,+EAA+E;aAChF,CAAC;QAEJ,KAAK,KAAK,CAAC;QACX,KAAK,aAAa;YAChB,OAAO;gBACL,uFAAuF;gBACvF,yEAAyE;gBACzE,gFAAgF;aACjF,CAAC;QAEJ,KAAK,oBAAoB;YACvB,OAAO;gBACL,+EAA+E;gBAC/E,qFAAqF;gBACrF,mFAAmF;aACpF,CAAC;QAEJ,KAAK,aAAa,CAAC;QACnB,KAAK,UAAU;YACb,OAAO;gBACL,6EAA6E;gBAC7E,iFAAiF;gBACjF,sFAAsF;aACvF,CAAC;QAEJ,
|
|
1
|
+
{"version":3,"file":"architecture-adapter.js","sourceRoot":"","sources":["../../../../src/tools/create-spec-hu/ac-adapters/architecture-adapter.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,gFAAgF;AAKhF;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,SAA2B;IACjE,MAAM,OAAO,GAAwB,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC;IAEpE,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,WAAW,CAAC;QACjB,KAAK,oBAAoB,CAAC;QAC1B,KAAK,OAAO;YACV,OAAO;gBACL,sGAAsG;gBACtG,uGAAuG;gBACvG,sFAAsF;aACvF,CAAC;QAEJ,KAAK,eAAe;YAClB,OAAO;gBACL,wFAAwF;gBACxF,0EAA0E;gBAC1E,4EAA4E;aAC7E,CAAC;QAEJ,KAAK,cAAc,CAAC;QACpB,KAAK,gBAAgB;YACnB,OAAO;gBACL,iFAAiF;gBACjF,uFAAuF;gBACvF,6FAA6F;aAC9F,CAAC;QAEJ,KAAK,YAAY;YACf,OAAO;gBACL,4EAA4E;gBAC5E,gFAAgF;gBAChF,yFAAyF;aAC1F,CAAC;QAEJ,KAAK,UAAU,CAAC;QAChB,KAAK,kBAAkB,CAAC;QACxB,KAAK,SAAS;YACZ,OAAO;gBACL,mFAAmF;gBACnF,4EAA4E;aAC7E,CAAC;QAEJ,KAAK,MAAM;YACT,OAAO;gBACL,2EAA2E;gBAC3E,kEAAkE;gBAClE,+EAA+E;aAChF,CAAC;QAEJ,KAAK,MAAM;YACT,OAAO;gBACL,uFAAuF;gBACvF,+DAA+D;gBAC/D,8FAA8F;aAC/F,CAAC;QAEJ,KAAK,gBAAgB;YACnB,OAAO;gBACL,iGAAiG;gBACjG,8CAA8C;gBAC9C,oFAAoF;aACrF,CAAC;QAEJ,KAAK,UAAU;YACb,OAAO;gBACL,6EAA6E;gBAC7E,0EAA0E;gBAC1E,gEAAgE;aACjE,CAAC;QAEJ,KAAK,KAAK;YACR,OAAO;gBACL,0FAA0F;gBAC1F,gFAAgF;gBAChF,+EAA+E;aAChF,CAAC;QAEJ,KAAK,KAAK,CAAC;QACX,KAAK,aAAa;YAChB,OAAO;gBACL,uFAAuF;gBACvF,yEAAyE;gBACzE,gFAAgF;aACjF,CAAC;QAEJ,KAAK,oBAAoB;YACvB,OAAO;gBACL,+EAA+E;gBAC/E,qFAAqF;gBACrF,mFAAmF;aACpF,CAAC;QAEJ,KAAK,aAAa,CAAC;QACnB,KAAK,UAAU;YACb,OAAO;gBACL,6EAA6E;gBAC7E,iFAAiF;gBACjF,sFAAsF;aACvF,CAAC;QAEJ,KAAK,KAAK,CAAC;QACX,KAAK,KAAK;YACR,OAAO;gBACL,mFAAmF;gBACnF,kGAAkG;gBAClG,2FAA2F;aAC5F,CAAC;QAEJ,KAAK,KAAK,CAAC;QACX,KAAK,KAAK;YACR,OAAO;gBACL,qFAAqF;gBACrF,4FAA4F;gBAC5F,sFAAsF;aACvF,CAAC;QAEJ,KAAK,KAAK,CAAC;QACX,KAAK,UAAU;YACb,OAAO;gBACL,6FAA6F;gBAC7F,+EAA+E;gBAC/E,2EAA2E;aAC5E,CAAC;QAEJ,KAAK,gBAAgB;YACnB,OAAO;gBACL,uFAAuF;gBACvF,kGAAkG;gBAClG,+FAA+F;aAChG,CAAC;QAEJ,KAAK,SAAS;YACZ,OAAO;gBACL,0FAA0F;gBAC1F,kGAAkG;gBAClG,oFAAoF;aACrF,CAAC;QAEJ,6EAA6E;QAC7E,KAAK,UAAU,CAAC;QAChB,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY,CAAC;QAClB,KAAK,WAAW,CAAC;QACjB,KAAK,YAAY,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,EAAE,CAAC;QAEZ;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ProjectKnowledge } from '../../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Returns frontend architecture acceptance criteria when atomic design,
|
|
4
|
+
* component library, or design token patterns are detected.
|
|
5
|
+
* Auto-injected into create_spec HU output (SPEC-147).
|
|
6
|
+
*/
|
|
7
|
+
export declare function buildFrontendArchitectureHuSection(knowledge: ProjectKnowledge | null | undefined): string[];
|
|
8
|
+
//# sourceMappingURL=frontend-architecture-hu-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontend-architecture-hu-adapter.d.ts","sourceRoot":"","sources":["../../../src/tools/create-spec-hu/frontend-architecture-hu-adapter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AA+E7D;;;;GAIG;AACH,wBAAgB,kCAAkC,CAChD,SAAS,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC7C,MAAM,EAAE,CAmDV"}
|