@planu/cli 0.96.5 → 0.97.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/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +3 -1
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/config/compliance-profiles.json +62 -0
- package/dist/config/license-plans.json +18 -2
- package/dist/config/spec-templates/crud-rest-api/spec.md +35 -0
- package/dist/config/spec-templates/crud-rest-api/template.json +10 -0
- package/dist/config/spec-templates/email-notifications/spec.md +31 -0
- package/dist/config/spec-templates/email-notifications/template.json +10 -0
- package/dist/config/spec-templates/file-upload-s3/spec.md +31 -0
- package/dist/config/spec-templates/file-upload-s3/template.json +11 -0
- package/dist/config/spec-templates/jwt-auth/spec.md +35 -0
- package/dist/config/spec-templates/jwt-auth/template.json +10 -0
- package/dist/config/spec-templates/oauth-social-login/spec.md +31 -0
- package/dist/config/spec-templates/oauth-social-login/template.json +10 -0
- package/dist/config/spec-templates/rate-limiting/spec.md +31 -0
- package/dist/config/spec-templates/rate-limiting/template.json +10 -0
- package/dist/config/spec-templates/stripe-payments/spec.md +32 -0
- package/dist/config/spec-templates/stripe-payments/template.json +10 -0
- package/dist/config/spec-templates/webhook-system/spec.md +36 -0
- package/dist/config/spec-templates/webhook-system/template.json +10 -0
- package/dist/engine/agent-ready-exporter/formatters/devin.d.ts +7 -0
- package/dist/engine/agent-ready-exporter/formatters/devin.d.ts.map +1 -0
- package/dist/engine/agent-ready-exporter/formatters/devin.js +23 -0
- package/dist/engine/agent-ready-exporter/formatters/devin.js.map +1 -0
- package/dist/engine/agent-ready-exporter/formatters/generic.d.ts +7 -0
- package/dist/engine/agent-ready-exporter/formatters/generic.d.ts.map +1 -0
- package/dist/engine/agent-ready-exporter/formatters/generic.js +9 -0
- package/dist/engine/agent-ready-exporter/formatters/generic.js.map +1 -0
- package/dist/engine/agent-ready-exporter/formatters/kiro.d.ts +6 -0
- package/dist/engine/agent-ready-exporter/formatters/kiro.d.ts.map +1 -0
- package/dist/engine/agent-ready-exporter/formatters/kiro.js +34 -0
- package/dist/engine/agent-ready-exporter/formatters/kiro.js.map +1 -0
- package/dist/engine/agent-ready-exporter/formatters/swe-agent.d.ts +6 -0
- package/dist/engine/agent-ready-exporter/formatters/swe-agent.d.ts.map +1 -0
- package/dist/engine/agent-ready-exporter/formatters/swe-agent.js +40 -0
- package/dist/engine/agent-ready-exporter/formatters/swe-agent.js.map +1 -0
- package/dist/engine/agent-ready-exporter.d.ts +11 -0
- package/dist/engine/agent-ready-exporter.d.ts.map +1 -0
- package/dist/engine/agent-ready-exporter.js +86 -0
- package/dist/engine/agent-ready-exporter.js.map +1 -0
- package/dist/engine/compliance-checker.d.ts +19 -0
- package/dist/engine/compliance-checker.d.ts.map +1 -0
- package/dist/engine/compliance-checker.js +145 -0
- package/dist/engine/compliance-checker.js.map +1 -0
- package/dist/engine/generate-tests/generators/property-based-generator.d.ts +12 -0
- package/dist/engine/generate-tests/generators/property-based-generator.d.ts.map +1 -0
- package/dist/engine/generate-tests/generators/property-based-generator.js +159 -0
- package/dist/engine/generate-tests/generators/property-based-generator.js.map +1 -0
- package/dist/engine/jira-exporter.d.ts +39 -0
- package/dist/engine/jira-exporter.d.ts.map +1 -0
- package/dist/engine/jira-exporter.js +190 -0
- package/dist/engine/jira-exporter.js.map +1 -0
- package/dist/engine/linear-exporter.d.ts +32 -0
- package/dist/engine/linear-exporter.d.ts.map +1 -0
- package/dist/engine/linear-exporter.js +184 -0
- package/dist/engine/linear-exporter.js.map +1 -0
- package/dist/engine/property-test-generator.d.ts +14 -0
- package/dist/engine/property-test-generator.d.ts.map +1 -0
- package/dist/engine/property-test-generator.js +223 -0
- package/dist/engine/property-test-generator.js.map +1 -0
- package/dist/engine/skill-evaluator.d.ts +21 -0
- package/dist/engine/skill-evaluator.d.ts.map +1 -0
- package/dist/engine/skill-evaluator.js +126 -0
- package/dist/engine/skill-evaluator.js.map +1 -0
- package/dist/engine/spec-quality-scorer.d.ts +4 -0
- package/dist/engine/spec-quality-scorer.d.ts.map +1 -0
- package/dist/engine/spec-quality-scorer.js +334 -0
- package/dist/engine/spec-quality-scorer.js.map +1 -0
- package/dist/engine/spec-template-engine.d.ts +26 -0
- package/dist/engine/spec-template-engine.d.ts.map +1 -0
- package/dist/engine/spec-template-engine.js +127 -0
- package/dist/engine/spec-template-engine.js.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/storage/compliance-store.d.ts +11 -0
- package/dist/storage/compliance-store.d.ts.map +1 -0
- package/dist/storage/compliance-store.js +30 -0
- package/dist/storage/compliance-store.js.map +1 -0
- package/dist/storage/jira-store.d.ts +30 -0
- package/dist/storage/jira-store.d.ts.map +1 -0
- package/dist/storage/jira-store.js +84 -0
- package/dist/storage/jira-store.js.map +1 -0
- package/dist/storage/linear-store.d.ts +30 -0
- package/dist/storage/linear-store.d.ts.map +1 -0
- package/dist/storage/linear-store.js +84 -0
- package/dist/storage/linear-store.js.map +1 -0
- package/dist/tools/check-readiness.d.ts.map +1 -1
- package/dist/tools/check-readiness.js +8 -2
- package/dist/tools/check-readiness.js.map +1 -1
- package/dist/tools/compliance-handler.d.ts +6 -0
- package/dist/tools/compliance-handler.d.ts.map +1 -0
- package/dist/tools/compliance-handler.js +99 -0
- package/dist/tools/compliance-handler.js.map +1 -0
- package/dist/tools/eval-skill-handler.d.ts +4 -0
- package/dist/tools/eval-skill-handler.d.ts.map +1 -0
- package/dist/tools/eval-skill-handler.js +26 -0
- package/dist/tools/eval-skill-handler.js.map +1 -0
- package/dist/tools/export-spec.d.ts.map +1 -1
- package/dist/tools/export-spec.js +42 -1
- package/dist/tools/export-spec.js.map +1 -1
- package/dist/tools/generate-tests/generators/property-based-generator.d.ts +11 -0
- package/dist/tools/generate-tests/generators/property-based-generator.d.ts.map +1 -0
- package/dist/tools/generate-tests/generators/property-based-generator.js +27 -0
- package/dist/tools/generate-tests/generators/property-based-generator.js.map +1 -0
- package/dist/tools/generate-tests/spec-dispatcher.d.ts +5 -0
- package/dist/tools/generate-tests/spec-dispatcher.d.ts.map +1 -1
- package/dist/tools/generate-tests/spec-dispatcher.js +18 -1
- package/dist/tools/generate-tests/spec-dispatcher.js.map +1 -1
- package/dist/tools/jira-sync-handler.d.ts +6 -0
- package/dist/tools/jira-sync-handler.d.ts.map +1 -0
- package/dist/tools/jira-sync-handler.js +220 -0
- package/dist/tools/jira-sync-handler.js.map +1 -0
- package/dist/tools/linear-sync-handler.d.ts +6 -0
- package/dist/tools/linear-sync-handler.d.ts.map +1 -0
- package/dist/tools/linear-sync-handler.js +212 -0
- package/dist/tools/linear-sync-handler.js.map +1 -0
- package/dist/tools/register-export-tools.d.ts.map +1 -1
- package/dist/tools/register-export-tools.js +10 -3
- package/dist/tools/register-export-tools.js.map +1 -1
- package/dist/tools/register-spec-314.d.ts +3 -0
- package/dist/tools/register-spec-314.d.ts.map +1 -0
- package/dist/tools/register-spec-314.js +38 -0
- package/dist/tools/register-spec-314.js.map +1 -0
- package/dist/tools/register-spec-316.d.ts +3 -0
- package/dist/tools/register-spec-316.d.ts.map +1 -0
- package/dist/tools/register-spec-316.js +71 -0
- package/dist/tools/register-spec-316.js.map +1 -0
- package/dist/tools/register-spec-317.d.ts +3 -0
- package/dist/tools/register-spec-317.d.ts.map +1 -0
- package/dist/tools/register-spec-317.js +158 -0
- package/dist/tools/register-spec-317.js.map +1 -0
- package/dist/tools/register-spec-319.d.ts +3 -0
- package/dist/tools/register-spec-319.d.ts.map +1 -0
- package/dist/tools/register-spec-319.js +59 -0
- package/dist/tools/register-spec-319.js.map +1 -0
- package/dist/tools/register-spec-320.d.ts +3 -0
- package/dist/tools/register-spec-320.d.ts.map +1 -0
- package/dist/tools/register-spec-320.js +60 -0
- package/dist/tools/register-spec-320.js.map +1 -0
- package/dist/tools/spec-marketplace-handler.d.ts +6 -0
- package/dist/tools/spec-marketplace-handler.d.ts.map +1 -0
- package/dist/tools/spec-marketplace-handler.js +113 -0
- package/dist/tools/spec-marketplace-handler.js.map +1 -0
- package/dist/tools/spec-quality-score-handler.d.ts +7 -0
- package/dist/tools/spec-quality-score-handler.d.ts.map +1 -0
- package/dist/tools/spec-quality-score-handler.js +106 -0
- package/dist/tools/spec-quality-score-handler.js.map +1 -0
- package/dist/types/agent-ready.d.ts +58 -0
- package/dist/types/agent-ready.d.ts.map +1 -0
- package/dist/types/agent-ready.js +3 -0
- package/dist/types/agent-ready.js.map +1 -0
- package/dist/types/compliance.d.ts +44 -0
- package/dist/types/compliance.d.ts.map +1 -0
- package/dist/types/compliance.js +3 -0
- package/dist/types/compliance.js.map +1 -0
- package/dist/types/export.d.ts +5 -1
- package/dist/types/export.d.ts.map +1 -1
- package/dist/types/export.js +1 -1
- package/dist/types/export.js.map +1 -1
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/jira-linear.d.ts +216 -0
- package/dist/types/jira-linear.d.ts.map +1 -0
- package/dist/types/jira-linear.js +3 -0
- package/dist/types/jira-linear.js.map +1 -0
- package/dist/types/property-testing.d.ts +50 -0
- package/dist/types/property-testing.d.ts.map +1 -0
- package/dist/types/property-testing.js +3 -0
- package/dist/types/property-testing.js.map +1 -0
- package/dist/types/skill-eval.d.ts +41 -0
- package/dist/types/skill-eval.d.ts.map +1 -0
- package/dist/types/skill-eval.js +3 -0
- package/dist/types/skill-eval.js.map +1 -0
- package/dist/types/spec-marketplace.d.ts +31 -0
- package/dist/types/spec-marketplace.d.ts.map +1 -0
- package/dist/types/spec-marketplace.js +3 -0
- package/dist/types/spec-marketplace.js.map +1 -0
- package/dist/types/spec-quality.d.ts +36 -0
- package/dist/types/spec-quality.d.ts.map +1 -0
- package/dist/types/spec-quality.js +3 -0
- package/dist/types/spec-quality.js.map +1 -0
- package/package.json +7 -2
- package/src/config/compliance-profiles.json +62 -0
- package/src/config/license-plans.json +18 -2
- package/src/config/spec-templates/crud-rest-api/spec.md +35 -0
- package/src/config/spec-templates/crud-rest-api/template.json +10 -0
- package/src/config/spec-templates/email-notifications/spec.md +31 -0
- package/src/config/spec-templates/email-notifications/template.json +10 -0
- package/src/config/spec-templates/file-upload-s3/spec.md +31 -0
- package/src/config/spec-templates/file-upload-s3/template.json +11 -0
- package/src/config/spec-templates/jwt-auth/spec.md +35 -0
- package/src/config/spec-templates/jwt-auth/template.json +10 -0
- package/src/config/spec-templates/oauth-social-login/spec.md +31 -0
- package/src/config/spec-templates/oauth-social-login/template.json +10 -0
- package/src/config/spec-templates/rate-limiting/spec.md +31 -0
- package/src/config/spec-templates/rate-limiting/template.json +10 -0
- package/src/config/spec-templates/stripe-payments/spec.md +32 -0
- package/src/config/spec-templates/stripe-payments/template.json +10 -0
- package/src/config/spec-templates/webhook-system/spec.md +36 -0
- package/src/config/spec-templates/webhook-system/template.json +10 -0
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import { hashProjectPath } from '../storage/base-store.js';
|
|
2
|
+
import { getLinearConfig, saveLinearConfig, removeLinearConfig, getLinearSyncLog, appendLinearSyncEntry, getSyncedLinearIssues, upsertSyncedLinearIssue, } from '../storage/linear-store.js';
|
|
3
|
+
import { LinearClient, mapSpecStatusToLinear } from '../engine/linear-exporter.js';
|
|
4
|
+
import { listSpecs, getSpec } from '../storage/spec-store.js';
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
// configure_linear
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
export async function handleConfigureLinear(input) {
|
|
9
|
+
await saveLinearConfig(input.projectPath, {
|
|
10
|
+
apiKey: input.apiKey,
|
|
11
|
+
teamId: input.teamId,
|
|
12
|
+
});
|
|
13
|
+
const lines = [
|
|
14
|
+
'Linear integration configured.',
|
|
15
|
+
'',
|
|
16
|
+
'| Field | Value |',
|
|
17
|
+
'|-------|-------|',
|
|
18
|
+
`| Team ID | ${input.teamId} |`,
|
|
19
|
+
`| API Key | ${input.apiKey.slice(0, 8)}... |`,
|
|
20
|
+
'',
|
|
21
|
+
'Run `sync_to_linear` to push specs to Linear.',
|
|
22
|
+
];
|
|
23
|
+
return { content: [{ type: 'text', text: lines.join('\n') }] };
|
|
24
|
+
}
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
// sync_to_linear
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
export async function handleSyncToLinear(input) {
|
|
29
|
+
const config = await getLinearConfig(input.projectPath);
|
|
30
|
+
if (config === null) {
|
|
31
|
+
return {
|
|
32
|
+
content: [
|
|
33
|
+
{
|
|
34
|
+
type: 'text',
|
|
35
|
+
text: 'Linear is not configured for this project. Run `configure_linear` first.',
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
isError: true,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const projectId = hashProjectPath(input.projectPath);
|
|
42
|
+
let specs = await listSpecs(projectId);
|
|
43
|
+
if (input.specId !== undefined) {
|
|
44
|
+
const single = await getSpec(projectId, input.specId);
|
|
45
|
+
if (single === null) {
|
|
46
|
+
return {
|
|
47
|
+
content: [
|
|
48
|
+
{
|
|
49
|
+
type: 'text',
|
|
50
|
+
text: `Spec ${input.specId} not found. Check the ID and try again.`,
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
isError: true,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
specs = [single];
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
specs = specs.filter((s) => s.status === 'approved' || s.status === 'done');
|
|
60
|
+
}
|
|
61
|
+
if (specs.length === 0) {
|
|
62
|
+
return {
|
|
63
|
+
content: [
|
|
64
|
+
{
|
|
65
|
+
type: 'text',
|
|
66
|
+
text: 'No specs to sync. Only approved and done specs are synced automatically.',
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
const client = new LinearClient(config);
|
|
72
|
+
const syncedIssues = await getSyncedLinearIssues(input.projectPath);
|
|
73
|
+
const result = { created: 0, updated: 0, failed: 0, issues: [] };
|
|
74
|
+
for (const spec of specs) {
|
|
75
|
+
try {
|
|
76
|
+
const existing = syncedIssues[spec.id];
|
|
77
|
+
if (existing !== undefined && input.mode !== 'pull') {
|
|
78
|
+
// Push: update status of existing issue
|
|
79
|
+
const linearStatus = mapSpecStatusToLinear(spec.status);
|
|
80
|
+
await client.updateIssueStatus(existing.issueId, linearStatus);
|
|
81
|
+
const issueRef = {
|
|
82
|
+
specId: spec.id,
|
|
83
|
+
issueId: existing.issueId,
|
|
84
|
+
issueUrl: existing.issueUrl,
|
|
85
|
+
title: `${spec.id}: ${spec.title}`,
|
|
86
|
+
};
|
|
87
|
+
result.issues.push(issueRef);
|
|
88
|
+
result.updated++;
|
|
89
|
+
}
|
|
90
|
+
else if (existing === undefined && input.mode !== 'pull') {
|
|
91
|
+
// Push: create new issue
|
|
92
|
+
const issueRef = await client.createProject(spec);
|
|
93
|
+
result.issues.push(issueRef);
|
|
94
|
+
result.created++;
|
|
95
|
+
await upsertSyncedLinearIssue(input.projectPath, {
|
|
96
|
+
specId: spec.id,
|
|
97
|
+
issueId: issueRef.issueId,
|
|
98
|
+
issueUrl: issueRef.issueUrl,
|
|
99
|
+
lastSyncedAt: new Date().toISOString(),
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
else if (input.mode === 'pull' && existing !== undefined) {
|
|
103
|
+
// Pull mode: report existing issue (status sync from Linear → Planu is informational)
|
|
104
|
+
const issueRef = {
|
|
105
|
+
specId: spec.id,
|
|
106
|
+
issueId: existing.issueId,
|
|
107
|
+
issueUrl: existing.issueUrl,
|
|
108
|
+
title: `${spec.id}: ${spec.title}`,
|
|
109
|
+
};
|
|
110
|
+
result.issues.push(issueRef);
|
|
111
|
+
result.updated++;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
result.failed++;
|
|
116
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
117
|
+
result.issues.push({
|
|
118
|
+
specId: spec.id,
|
|
119
|
+
issueId: '',
|
|
120
|
+
issueUrl: '',
|
|
121
|
+
title: `${spec.id} (FAILED: ${msg})`,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
await appendLinearSyncEntry(input.projectPath, {
|
|
126
|
+
syncedAt: new Date().toISOString(),
|
|
127
|
+
mode: input.mode,
|
|
128
|
+
result,
|
|
129
|
+
});
|
|
130
|
+
const lines = [
|
|
131
|
+
`Linear sync complete (${input.mode}): ${result.created} created, ${result.updated} updated, ${result.failed} failed.`,
|
|
132
|
+
'',
|
|
133
|
+
];
|
|
134
|
+
for (const issue of result.issues) {
|
|
135
|
+
if (issue.issueUrl !== '') {
|
|
136
|
+
lines.push(`- [${issue.specId}] ${issue.title} — ${issue.issueUrl}`);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
lines.push(`- [${issue.specId}] ${issue.title}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
144
|
+
isError: result.failed > 0 && result.created === 0 && result.updated === 0,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
// ---------------------------------------------------------------------------
|
|
148
|
+
// linear_status
|
|
149
|
+
// ---------------------------------------------------------------------------
|
|
150
|
+
export async function handleLinearStatus(input) {
|
|
151
|
+
const config = await getLinearConfig(input.projectPath);
|
|
152
|
+
if (config === null) {
|
|
153
|
+
return {
|
|
154
|
+
content: [
|
|
155
|
+
{
|
|
156
|
+
type: 'text',
|
|
157
|
+
text: 'Linear is not configured for this project. Run `configure_linear` to set it up.',
|
|
158
|
+
},
|
|
159
|
+
],
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
const log = await getLinearSyncLog(input.projectPath);
|
|
163
|
+
const syncedIssues = await getSyncedLinearIssues(input.projectPath);
|
|
164
|
+
const issueCount = Object.keys(syncedIssues).length;
|
|
165
|
+
const lastEntry = log[log.length - 1];
|
|
166
|
+
const lastSync = lastEntry !== undefined ? lastEntry.syncedAt : 'never';
|
|
167
|
+
const lines = [
|
|
168
|
+
'Linear integration is active.',
|
|
169
|
+
'',
|
|
170
|
+
'| Field | Value |',
|
|
171
|
+
'|-------|-------|',
|
|
172
|
+
`| Team ID | ${config.teamId} |`,
|
|
173
|
+
`| API Key | ${config.apiKey.slice(0, 8)}... |`,
|
|
174
|
+
`| Synced Issues | ${issueCount} |`,
|
|
175
|
+
`| Last Sync | ${lastSync} |`,
|
|
176
|
+
];
|
|
177
|
+
if (log.length > 0) {
|
|
178
|
+
lines.push('', '**Recent sync history:**', '');
|
|
179
|
+
const recent = log.slice(-5).reverse();
|
|
180
|
+
for (const entry of recent) {
|
|
181
|
+
const { result } = entry;
|
|
182
|
+
lines.push(`- ${entry.syncedAt.slice(0, 19)} [${entry.mode}] — created: ${result.created}, updated: ${result.updated}, failed: ${result.failed}`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return { content: [{ type: 'text', text: lines.join('\n') }] };
|
|
186
|
+
}
|
|
187
|
+
// ---------------------------------------------------------------------------
|
|
188
|
+
// remove_linear (convenience — exposed via register-spec-317.ts)
|
|
189
|
+
// ---------------------------------------------------------------------------
|
|
190
|
+
export async function handleRemoveLinear(input) {
|
|
191
|
+
const config = await getLinearConfig(input.projectPath);
|
|
192
|
+
if (config === null) {
|
|
193
|
+
return {
|
|
194
|
+
content: [
|
|
195
|
+
{
|
|
196
|
+
type: 'text',
|
|
197
|
+
text: 'Linear is not configured for this project. Nothing to remove.',
|
|
198
|
+
},
|
|
199
|
+
],
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
await removeLinearConfig(input.projectPath);
|
|
203
|
+
return {
|
|
204
|
+
content: [
|
|
205
|
+
{
|
|
206
|
+
type: 'text',
|
|
207
|
+
text: 'Linear configuration removed. Synced issue records and logs are preserved.',
|
|
208
|
+
},
|
|
209
|
+
],
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=linear-sync-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linear-sync-handler.js","sourceRoot":"","sources":["../../src/tools/linear-sync-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-export-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-export-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"register-export-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-export-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+B3D"}
|
|
@@ -3,19 +3,26 @@ import { handleExportSpec } from './export-spec.js';
|
|
|
3
3
|
import { safeLicensed } from './safe-handler.js';
|
|
4
4
|
export function registerExportTools(server) {
|
|
5
5
|
server.registerTool('export_spec', {
|
|
6
|
-
description: 'Export a spec to an external format.
|
|
7
|
-
'(GitHub spec-kit compatible: spec.md, plan.md, tasks.md)
|
|
6
|
+
description: 'Export a spec to an external format. Supports spec-kit format ' +
|
|
7
|
+
'(GitHub spec-kit compatible: spec.md, plan.md, tasks.md) and agent-ready format ' +
|
|
8
|
+
'(structured JSON optimized for autonomous coding agents: Devin, Kiro, SWE-agent, generic). ' +
|
|
8
9
|
'Writes files to .specify/specs/{slug}/ by default.',
|
|
9
10
|
annotations: { readOnlyHint: false },
|
|
10
11
|
inputSchema: {
|
|
11
12
|
specId: z.string().min(1).max(500).describe('Spec ID to export (e.g. "SPEC-001")'),
|
|
12
13
|
projectPath: z.string().min(1).max(2000).describe('Absolute path to the project root'),
|
|
13
|
-
format: z
|
|
14
|
+
format: z
|
|
15
|
+
.enum(['spec-kit', 'agent-ready'])
|
|
16
|
+
.describe('Export format. Valid values: spec-kit, agent-ready'),
|
|
14
17
|
outputDir: z
|
|
15
18
|
.string()
|
|
16
19
|
.max(2000)
|
|
17
20
|
.optional()
|
|
18
21
|
.describe('Custom output directory (default: .specify/specs/{slug}/ inside projectPath)'),
|
|
22
|
+
agentTarget: z
|
|
23
|
+
.enum(['devin', 'kiro', 'swe-agent', 'generic'])
|
|
24
|
+
.optional()
|
|
25
|
+
.describe('Target agent for agent-ready format. Valid values: devin, kiro, swe-agent, generic. Defaults to generic. Only used when format is agent-ready.'),
|
|
19
26
|
},
|
|
20
27
|
}, safeLicensed('export_spec', async (args) => handleExportSpec(args)));
|
|
21
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-export-tools.js","sourceRoot":"","sources":["../../src/tools/register-export-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"register-export-tools.js","sourceRoot":"","sources":["../../src/tools/register-export-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EACT,gEAAgE;YAChE,kFAAkF;YAClF,6FAA6F;YAC7F,oDAAoD;QACtD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE;QACpC,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YAClF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YACtF,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;iBACjC,QAAQ,CAAC,oDAAoD,CAAC;YACjE,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,8EAA8E,CAAC;YAC3F,WAAW,EAAE,CAAC;iBACX,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;iBAC/C,QAAQ,EAAE;iBACV,QAAQ,CACP,gJAAgJ,CACjJ;SACJ;KACF,EACD,YAAY,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CACpE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-spec-314.d.ts","sourceRoot":"","sources":["../../src/tools/register-spec-314.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0CrE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// tools/register-spec-314.ts — Registers SPEC-314 quality score tool
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { safeTracked } from './safe-handler.js';
|
|
4
|
+
import { handleSpecQualityScore } from './spec-quality-score-handler.js';
|
|
5
|
+
export function registerSpecQualityScoreTools(server) {
|
|
6
|
+
// -------------------------------------------------------------------------
|
|
7
|
+
// spec_quality_score — compute 0-100 quality score with 4 dimensions
|
|
8
|
+
// -------------------------------------------------------------------------
|
|
9
|
+
server.registerTool('spec_quality_score', {
|
|
10
|
+
description: 'Compute a 0-100 quality score for a spec across 4 dimensions: ' +
|
|
11
|
+
'completeness (title, description, AC, scope, estimation), ' +
|
|
12
|
+
'testability (verifiable AC, no vague words), ' +
|
|
13
|
+
'ambiguity (no contradictions, terms defined, edge cases covered), ' +
|
|
14
|
+
'and risk (cross-module deps, architectural scope, NFRs present). ' +
|
|
15
|
+
'Returns a letter grade (A-F) and actionable recommendations.',
|
|
16
|
+
inputSchema: {
|
|
17
|
+
specId: z
|
|
18
|
+
.string()
|
|
19
|
+
.min(1)
|
|
20
|
+
.max(500)
|
|
21
|
+
.describe('Spec ID to evaluate (e.g. SPEC-042).'),
|
|
22
|
+
projectPath: z
|
|
23
|
+
.string()
|
|
24
|
+
.min(1)
|
|
25
|
+
.max(4096)
|
|
26
|
+
.optional()
|
|
27
|
+
.describe('Absolute path to the project root (preferred over projectId).'),
|
|
28
|
+
projectId: z
|
|
29
|
+
.string()
|
|
30
|
+
.min(1)
|
|
31
|
+
.max(500)
|
|
32
|
+
.optional()
|
|
33
|
+
.describe('Project hash ID (use projectPath instead when possible).'),
|
|
34
|
+
},
|
|
35
|
+
annotations: { title: 'Spec Quality Score', readOnlyHint: true },
|
|
36
|
+
}, safeTracked('spec_quality_score', (args) => handleSpecQualityScore(args)));
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=register-spec-314.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-spec-314.js","sourceRoot":"","sources":["../../src/tools/register-spec-314.ts"],"names":[],"mappings":"AAAA,qEAAqE;AAGrE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,MAAM,UAAU,6BAA6B,CAAC,MAAiB;IAC7D,4EAA4E;IAC5E,qEAAqE;IACrE,4EAA4E;IAE5E,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,WAAW,EACT,gEAAgE;YAChE,4DAA4D;YAC5D,+CAA+C;YAC/C,oEAAoE;YACpE,mEAAmE;YACnE,8DAA8D;QAChE,WAAW,EAAE;YACX,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,CAAC,sCAAsC,CAAC;YACnD,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,+DAA+D,CAAC;YAC5E,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,0DAA0D,CAAC;SACxE;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,IAAI,EAAE;KACjE,EACD,WAAW,CAAC,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE,CACzC,sBAAsB,CACpB,IAAoE,CACrE,CACF,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-spec-316.d.ts","sourceRoot":"","sources":["../../src/tools/register-spec-316.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmBzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkE9D"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
// tools/register-spec-316.ts — Registers eval_skill and eval_rule tools (SPEC-316)
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { safeTracked } from './safe-handler.js';
|
|
4
|
+
import { handleEvalSkill, handleEvalRule } from './eval-skill-handler.js';
|
|
5
|
+
const evalScenarioSchema = z.object({
|
|
6
|
+
input: z.string().min(1).max(2000).describe('Natural language description of the user input or trigger for this scenario.'),
|
|
7
|
+
expectedOutput: z
|
|
8
|
+
.string()
|
|
9
|
+
.min(1)
|
|
10
|
+
.max(4000)
|
|
11
|
+
.describe('The expected text fragment or output that the skill/rule should produce or reference.'),
|
|
12
|
+
criteria: z
|
|
13
|
+
.array(z.string().min(1).max(500))
|
|
14
|
+
.min(1)
|
|
15
|
+
.describe('List of keyword or phrase criteria that must appear in the skill/rule content to pass this scenario.'),
|
|
16
|
+
});
|
|
17
|
+
export function registerEvalSkillTools(server) {
|
|
18
|
+
// -------------------------------------------------------------------------
|
|
19
|
+
// eval_skill — evaluate a skill file against test scenarios
|
|
20
|
+
// -------------------------------------------------------------------------
|
|
21
|
+
server.registerTool('eval_skill', {
|
|
22
|
+
description: 'Evaluate the quality of a Claude skill file against a set of test scenarios. ' +
|
|
23
|
+
'Reads the skill from .claude/skills/{skillName}.md and checks whether each scenario\'s ' +
|
|
24
|
+
'criteria appear in the skill content. ' +
|
|
25
|
+
'Returns a pass rate, average score, per-scenario results, and recommendations for improvement.',
|
|
26
|
+
inputSchema: {
|
|
27
|
+
skillName: z
|
|
28
|
+
.string()
|
|
29
|
+
.min(1)
|
|
30
|
+
.max(500)
|
|
31
|
+
.describe('Skill file name without extension (e.g. "vitest") or with extension (e.g. "vitest.md").'),
|
|
32
|
+
projectPath: z
|
|
33
|
+
.string()
|
|
34
|
+
.min(1)
|
|
35
|
+
.max(4096)
|
|
36
|
+
.describe('Absolute path to the project root. Skills are read from {projectPath}/.claude/skills/.'),
|
|
37
|
+
testScenarios: z
|
|
38
|
+
.array(evalScenarioSchema)
|
|
39
|
+
.min(1)
|
|
40
|
+
.describe('One or more test scenarios to evaluate the skill against.'),
|
|
41
|
+
},
|
|
42
|
+
annotations: { title: 'Evaluate Skill Quality', readOnlyHint: true },
|
|
43
|
+
}, safeTracked('eval_skill', (args) => handleEvalSkill(args)));
|
|
44
|
+
// -------------------------------------------------------------------------
|
|
45
|
+
// eval_rule — evaluate a rule file against test scenarios
|
|
46
|
+
// -------------------------------------------------------------------------
|
|
47
|
+
server.registerTool('eval_rule', {
|
|
48
|
+
description: 'Evaluate the quality of a Claude rule file against a set of test scenarios. ' +
|
|
49
|
+
'Reads the rule from .claude/rules/{ruleName}.md and checks whether each scenario\'s ' +
|
|
50
|
+
'criteria appear in the rule content. ' +
|
|
51
|
+
'Returns a pass rate, average score, per-scenario results, and recommendations for improvement.',
|
|
52
|
+
inputSchema: {
|
|
53
|
+
ruleName: z
|
|
54
|
+
.string()
|
|
55
|
+
.min(1)
|
|
56
|
+
.max(500)
|
|
57
|
+
.describe('Rule file name without extension (e.g. "testing") or with extension (e.g. "testing.md").'),
|
|
58
|
+
projectPath: z
|
|
59
|
+
.string()
|
|
60
|
+
.min(1)
|
|
61
|
+
.max(4096)
|
|
62
|
+
.describe('Absolute path to the project root. Rules are read from {projectPath}/.claude/rules/.'),
|
|
63
|
+
testScenarios: z
|
|
64
|
+
.array(evalScenarioSchema)
|
|
65
|
+
.min(1)
|
|
66
|
+
.describe('One or more test scenarios to evaluate the rule against.'),
|
|
67
|
+
},
|
|
68
|
+
annotations: { title: 'Evaluate Rule Quality', readOnlyHint: true },
|
|
69
|
+
}, safeTracked('eval_rule', (args) => handleEvalRule(args)));
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=register-spec-316.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-spec-316.js","sourceRoot":"","sources":["../../src/tools/register-spec-316.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAGnF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG1E,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,8EAA8E,CAAC;IAC3H,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,CAAC,uFAAuF,CAAC;IACpG,QAAQ,EAAE,CAAC;SACR,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACjC,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,sGAAsG,CAAC;CACpH,CAAC,CAAC;AAEH,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,4EAA4E;IAC5E,4DAA4D;IAC5D,4EAA4E;IAE5E,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,WAAW,EACT,+EAA+E;YAC/E,yFAAyF;YACzF,wCAAwC;YACxC,gGAAgG;QAClG,WAAW,EAAE;YACX,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,CAAC,yFAAyF,CAAC;YACtG,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,CAAC,wFAAwF,CAAC;YACrG,aAAa,EAAE,CAAC;iBACb,KAAK,CAAC,kBAAkB,CAAC;iBACzB,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,2DAA2D,CAAC;SACzE;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,YAAY,EAAE,IAAI,EAAE;KACrE,EACD,WAAW,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAsB,CAAC,CAAC,CAC7E,CAAC;IAEF,4EAA4E;IAC5E,0DAA0D;IAC1D,4EAA4E;IAE5E,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,WAAW,EACT,8EAA8E;YAC9E,sFAAsF;YACtF,uCAAuC;YACvC,gGAAgG;QAClG,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,CAAC,0FAA0F,CAAC;YACvG,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,CAAC,sFAAsF,CAAC;YACnG,aAAa,EAAE,CAAC;iBACb,KAAK,CAAC,kBAAkB,CAAC;iBACzB,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,0DAA0D,CAAC;SACxE;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,YAAY,EAAE,IAAI,EAAE;KACpE,EACD,WAAW,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAqB,CAAC,CAAC,CAC1E,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-spec-317.d.ts","sourceRoot":"","sources":["../../src/tools/register-spec-317.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA+CzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmM/D"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
// tools/register-spec-317.ts — Registers Jira and Linear bidirectional sync tools (SPEC-317)
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { safeTracked } from './safe-handler.js';
|
|
4
|
+
import { handleConfigureJira, handleSyncToJira, handleJiraStatus, handleRemoveJira, } from './jira-sync-handler.js';
|
|
5
|
+
import { handleConfigureLinear, handleSyncToLinear, handleLinearStatus, handleRemoveLinear, } from './linear-sync-handler.js';
|
|
6
|
+
const syncModeSchema = z
|
|
7
|
+
.enum(['push', 'pull', 'bidirectional'])
|
|
8
|
+
.describe('Sync direction. ' +
|
|
9
|
+
'"push" sends Planu spec data to the external tool. ' +
|
|
10
|
+
'"pull" reads status from the external tool (informational). ' +
|
|
11
|
+
'"bidirectional" performs push then pull.');
|
|
12
|
+
const projectPathSchema = z
|
|
13
|
+
.string()
|
|
14
|
+
.min(1)
|
|
15
|
+
.max(4096)
|
|
16
|
+
.describe('Absolute path to the project root where Planu stores its data.');
|
|
17
|
+
const specIdSchema = z
|
|
18
|
+
.string()
|
|
19
|
+
.min(1)
|
|
20
|
+
.max(50)
|
|
21
|
+
.optional()
|
|
22
|
+
.describe('Optional SPEC-XXX identifier. Omit to sync all approved and done specs.');
|
|
23
|
+
export function registerJiraLinearTools(server) {
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
// configure_jira
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
server.registerTool('configure_jira', {
|
|
28
|
+
description: 'Configure Jira Cloud integration for a project. ' +
|
|
29
|
+
'Credentials are stored locally and used by sync_to_jira. ' +
|
|
30
|
+
'Requires a Jira Cloud domain, project key, email, and API token. ' +
|
|
31
|
+
'Get your API token at: https://id.atlassian.com/manage-profile/security/api-tokens',
|
|
32
|
+
inputSchema: {
|
|
33
|
+
projectPath: projectPathSchema,
|
|
34
|
+
domain: z
|
|
35
|
+
.string()
|
|
36
|
+
.min(1)
|
|
37
|
+
.max(253)
|
|
38
|
+
.describe('Jira Cloud domain without suffix, e.g. "mycompany" for mycompany.atlassian.net.'),
|
|
39
|
+
email: z
|
|
40
|
+
.string()
|
|
41
|
+
.min(5)
|
|
42
|
+
.max(254)
|
|
43
|
+
.describe('Email address associated with the Atlassian API token.'),
|
|
44
|
+
apiToken: z
|
|
45
|
+
.string()
|
|
46
|
+
.min(1)
|
|
47
|
+
.max(500)
|
|
48
|
+
.describe('Atlassian API token. Generate at id.atlassian.com/manage-profile/security/api-tokens.'),
|
|
49
|
+
projectKey: z
|
|
50
|
+
.string()
|
|
51
|
+
.min(1)
|
|
52
|
+
.max(20)
|
|
53
|
+
.describe('Jira project key where epics and stories will be created, e.g. "ENG" or "PLAT".'),
|
|
54
|
+
},
|
|
55
|
+
annotations: { title: 'Configure Jira Integration' },
|
|
56
|
+
}, safeTracked('configure_jira', (args) => handleConfigureJira(args)));
|
|
57
|
+
// ---------------------------------------------------------------------------
|
|
58
|
+
// sync_to_jira
|
|
59
|
+
// ---------------------------------------------------------------------------
|
|
60
|
+
server.registerTool('sync_to_jira', {
|
|
61
|
+
description: 'Sync Planu specs to Jira Cloud as Epics. ' +
|
|
62
|
+
'By default syncs all approved and done specs. ' +
|
|
63
|
+
'Supports push (Planu → Jira), pull (Jira → Planu informational), and bidirectional modes. ' +
|
|
64
|
+
'Run configure_jira first.',
|
|
65
|
+
inputSchema: {
|
|
66
|
+
projectPath: projectPathSchema,
|
|
67
|
+
specId: specIdSchema,
|
|
68
|
+
mode: syncModeSchema,
|
|
69
|
+
},
|
|
70
|
+
annotations: { title: 'Sync Specs to Jira' },
|
|
71
|
+
}, safeTracked('sync_to_jira', (args) => handleSyncToJira(args)));
|
|
72
|
+
// ---------------------------------------------------------------------------
|
|
73
|
+
// jira_status
|
|
74
|
+
// ---------------------------------------------------------------------------
|
|
75
|
+
server.registerTool('jira_status', {
|
|
76
|
+
description: 'Show the current Jira integration status for a project: configuration, ' +
|
|
77
|
+
'number of synced issues, and recent sync history.',
|
|
78
|
+
inputSchema: {
|
|
79
|
+
projectPath: projectPathSchema,
|
|
80
|
+
},
|
|
81
|
+
annotations: { title: 'Jira Integration Status', readOnlyHint: true },
|
|
82
|
+
}, safeTracked('jira_status', (args) => handleJiraStatus(args)));
|
|
83
|
+
// ---------------------------------------------------------------------------
|
|
84
|
+
// remove_jira
|
|
85
|
+
// ---------------------------------------------------------------------------
|
|
86
|
+
server.registerTool('remove_jira', {
|
|
87
|
+
description: 'Remove the Jira integration configuration for a project. ' +
|
|
88
|
+
'Synced issue records and logs are preserved for reference. ' +
|
|
89
|
+
'Run configure_jira to re-enable the integration.',
|
|
90
|
+
inputSchema: {
|
|
91
|
+
projectPath: projectPathSchema,
|
|
92
|
+
},
|
|
93
|
+
annotations: { title: 'Remove Jira Integration', destructiveHint: true },
|
|
94
|
+
}, safeTracked('remove_jira', (args) => handleRemoveJira(args)));
|
|
95
|
+
// ---------------------------------------------------------------------------
|
|
96
|
+
// configure_linear
|
|
97
|
+
// ---------------------------------------------------------------------------
|
|
98
|
+
server.registerTool('configure_linear', {
|
|
99
|
+
description: 'Configure Linear integration for a project. ' +
|
|
100
|
+
'Credentials are stored locally and used by sync_to_linear. ' +
|
|
101
|
+
'Requires a Linear personal API key and team ID. ' +
|
|
102
|
+
'Get your API key at: https://linear.app/settings/api',
|
|
103
|
+
inputSchema: {
|
|
104
|
+
projectPath: projectPathSchema,
|
|
105
|
+
apiKey: z
|
|
106
|
+
.string()
|
|
107
|
+
.min(1)
|
|
108
|
+
.max(500)
|
|
109
|
+
.describe('Linear personal API key. Generate at https://linear.app/settings/api.'),
|
|
110
|
+
teamId: z
|
|
111
|
+
.string()
|
|
112
|
+
.min(1)
|
|
113
|
+
.max(100)
|
|
114
|
+
.describe('Linear team ID (UUID) where issues will be created. ' +
|
|
115
|
+
'Find it in Linear Settings → Team → General.'),
|
|
116
|
+
},
|
|
117
|
+
annotations: { title: 'Configure Linear Integration' },
|
|
118
|
+
}, safeTracked('configure_linear', (args) => handleConfigureLinear(args)));
|
|
119
|
+
// ---------------------------------------------------------------------------
|
|
120
|
+
// sync_to_linear
|
|
121
|
+
// ---------------------------------------------------------------------------
|
|
122
|
+
server.registerTool('sync_to_linear', {
|
|
123
|
+
description: 'Sync Planu specs to Linear as issues. ' +
|
|
124
|
+
'By default syncs all approved and done specs. ' +
|
|
125
|
+
'Supports push (Planu → Linear), pull (Linear → Planu informational), and bidirectional modes. ' +
|
|
126
|
+
'Run configure_linear first.',
|
|
127
|
+
inputSchema: {
|
|
128
|
+
projectPath: projectPathSchema,
|
|
129
|
+
specId: specIdSchema,
|
|
130
|
+
mode: syncModeSchema,
|
|
131
|
+
},
|
|
132
|
+
annotations: { title: 'Sync Specs to Linear' },
|
|
133
|
+
}, safeTracked('sync_to_linear', (args) => handleSyncToLinear(args)));
|
|
134
|
+
// ---------------------------------------------------------------------------
|
|
135
|
+
// linear_status
|
|
136
|
+
// ---------------------------------------------------------------------------
|
|
137
|
+
server.registerTool('linear_status', {
|
|
138
|
+
description: 'Show the current Linear integration status for a project: configuration, ' +
|
|
139
|
+
'number of synced issues, and recent sync history.',
|
|
140
|
+
inputSchema: {
|
|
141
|
+
projectPath: projectPathSchema,
|
|
142
|
+
},
|
|
143
|
+
annotations: { title: 'Linear Integration Status', readOnlyHint: true },
|
|
144
|
+
}, safeTracked('linear_status', (args) => handleLinearStatus(args)));
|
|
145
|
+
// ---------------------------------------------------------------------------
|
|
146
|
+
// remove_linear
|
|
147
|
+
// ---------------------------------------------------------------------------
|
|
148
|
+
server.registerTool('remove_linear', {
|
|
149
|
+
description: 'Remove the Linear integration configuration for a project. ' +
|
|
150
|
+
'Synced issue records and logs are preserved for reference. ' +
|
|
151
|
+
'Run configure_linear to re-enable the integration.',
|
|
152
|
+
inputSchema: {
|
|
153
|
+
projectPath: projectPathSchema,
|
|
154
|
+
},
|
|
155
|
+
annotations: { title: 'Remove Linear Integration', destructiveHint: true },
|
|
156
|
+
}, safeTracked('remove_linear', (args) => handleRemoveLinear(args)));
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=register-spec-317.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-spec-317.js","sourceRoot":"","sources":["../../src/tools/register-spec-317.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-spec-319.d.ts","sourceRoot":"","sources":["../../src/tools/register-spec-319.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsE/D"}
|