@specship/specship-win32-arm64 0.21.2 → 0.22.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/lib/dist/bin/specship.js +302 -4
- package/lib/dist/bin/specship.js.map +1 -1
- package/lib/dist/commands/specship/jira.md +74 -0
- package/lib/dist/commands/specship/spec.md +61 -1
- package/lib/dist/extraction/index.d.ts +6 -0
- package/lib/dist/extraction/index.d.ts.map +1 -1
- package/lib/dist/extraction/index.js.map +1 -1
- package/lib/dist/extraction/specs/markdown-spec-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/specs/markdown-spec-extractor.js +8 -1
- package/lib/dist/extraction/specs/markdown-spec-extractor.js.map +1 -1
- package/lib/dist/index.d.ts +7 -0
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +45 -18
- package/lib/dist/index.js.map +1 -1
- package/lib/dist/jira/auto-publish.d.ts +67 -0
- package/lib/dist/jira/auto-publish.d.ts.map +1 -0
- package/lib/dist/jira/auto-publish.js +232 -0
- package/lib/dist/jira/auto-publish.js.map +1 -0
- package/lib/dist/jira/board-first.d.ts +64 -0
- package/lib/dist/jira/board-first.d.ts.map +1 -0
- package/lib/dist/jira/board-first.js +91 -0
- package/lib/dist/jira/board-first.js.map +1 -0
- package/lib/dist/jira/client.d.ts +80 -1
- package/lib/dist/jira/client.d.ts.map +1 -1
- package/lib/dist/jira/client.js +213 -1
- package/lib/dist/jira/client.js.map +1 -1
- package/lib/dist/jira/config.d.ts +1 -1
- package/lib/dist/jira/config.d.ts.map +1 -1
- package/lib/dist/jira/config.js +14 -3
- package/lib/dist/jira/config.js.map +1 -1
- package/lib/dist/jira/coverage.d.ts +105 -0
- package/lib/dist/jira/coverage.d.ts.map +1 -0
- package/lib/dist/jira/coverage.js +160 -0
- package/lib/dist/jira/coverage.js.map +1 -0
- package/lib/dist/jira/index.d.ts +1 -0
- package/lib/dist/jira/index.d.ts.map +1 -1
- package/lib/dist/jira/index.js +1 -0
- package/lib/dist/jira/index.js.map +1 -1
- package/lib/dist/jira/milestone-comment.d.ts +95 -0
- package/lib/dist/jira/milestone-comment.d.ts.map +1 -0
- package/lib/dist/jira/milestone-comment.js +271 -0
- package/lib/dist/jira/milestone-comment.js.map +1 -0
- package/lib/dist/jira/publish.d.ts +69 -2
- package/lib/dist/jira/publish.d.ts.map +1 -1
- package/lib/dist/jira/publish.js +0 -0
- package/lib/dist/jira/publish.js.map +1 -1
- package/lib/dist/jira/published-specs.d.ts +23 -0
- package/lib/dist/jira/published-specs.d.ts.map +1 -0
- package/lib/dist/jira/published-specs.js +106 -0
- package/lib/dist/jira/published-specs.js.map +1 -0
- package/lib/dist/jira/reconcile.d.ts +81 -0
- package/lib/dist/jira/reconcile.d.ts.map +1 -0
- package/lib/dist/jira/reconcile.js +111 -0
- package/lib/dist/jira/reconcile.js.map +1 -0
- package/lib/dist/jira/regression-pack.d.ts +547 -0
- package/lib/dist/jira/regression-pack.d.ts.map +1 -0
- package/lib/dist/jira/regression-pack.js +986 -0
- package/lib/dist/jira/regression-pack.js.map +1 -0
- package/lib/dist/jira/repo-config.d.ts +59 -0
- package/lib/dist/jira/repo-config.d.ts.map +1 -0
- package/lib/dist/jira/repo-config.js +222 -0
- package/lib/dist/jira/repo-config.js.map +1 -0
- package/lib/dist/jira/spec-amend.d.ts +46 -0
- package/lib/dist/jira/spec-amend.d.ts.map +1 -0
- package/lib/dist/jira/spec-amend.js +232 -0
- package/lib/dist/jira/spec-amend.js.map +1 -0
- package/lib/dist/jira/spec-writer.d.ts +22 -0
- package/lib/dist/jira/spec-writer.d.ts.map +1 -1
- package/lib/dist/jira/spec-writer.js +113 -0
- package/lib/dist/jira/spec-writer.js.map +1 -1
- package/lib/dist/jira/types.d.ts +62 -0
- package/lib/dist/jira/types.d.ts.map +1 -1
- package/lib/dist/jira/types.js +15 -1
- package/lib/dist/jira/types.js.map +1 -1
- package/lib/dist/mcp/jira-tools.d.ts +102 -0
- package/lib/dist/mcp/jira-tools.d.ts.map +1 -1
- package/lib/dist/mcp/jira-tools.js +807 -50
- package/lib/dist/mcp/jira-tools.js.map +1 -1
- package/lib/dist/mcp/server-instructions.d.ts +1 -1
- package/lib/dist/mcp/server-instructions.d.ts.map +1 -1
- package/lib/dist/mcp/server-instructions.js +4 -0
- package/lib/dist/mcp/server-instructions.js.map +1 -1
- package/lib/dist/mcp/spec-tools.d.ts.map +1 -1
- package/lib/dist/mcp/spec-tools.js +7 -1
- package/lib/dist/mcp/spec-tools.js.map +1 -1
- package/lib/dist/mcp/tools.d.ts +3 -0
- package/lib/dist/mcp/tools.d.ts.map +1 -1
- package/lib/dist/mcp/tools.js +50 -0
- package/lib/dist/mcp/tools.js.map +1 -1
- package/lib/dist/resolution/spec-link-resolver.d.ts +2 -0
- package/lib/dist/resolution/spec-link-resolver.d.ts.map +1 -1
- package/lib/dist/resolution/spec-link-resolver.js +11 -3
- package/lib/dist/resolution/spec-link-resolver.js.map +1 -1
- package/lib/node_modules/.package-lock.json +1 -1
- package/lib/package.json +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-amend.js","sourceRoot":"","sources":["../../src/jira/spec-amend.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,4 +40,26 @@ export declare function findSpecForIssueKey(issueKey: string, projectRoot: strin
|
|
|
40
40
|
* created.
|
|
41
41
|
*/
|
|
42
42
|
export declare function writeSpecFromIssue(issue: JiraIssue, projectRoot: string): WriteSpecResult;
|
|
43
|
+
/**
|
|
44
|
+
* Insert or update a `regression_cases:` back-link under the acceptance
|
|
45
|
+
* criterion marked `<!-- id: criterionId -->` (REQ-JIRAREG-001.A3). The block
|
|
46
|
+
* is trace-only metadata the markdown spec extractor ignores by design —
|
|
47
|
+
* `implementations:` and `verifies:` are the only keywords the extractor
|
|
48
|
+
* recognises, so a `regression_cases:` block cannot silently absorb their
|
|
49
|
+
* bullets. Idempotent: a re-run with the same key is a no-op.
|
|
50
|
+
*
|
|
51
|
+
* Returns `{ ok, changed, detail }` mirroring `writeBackImplementation`;
|
|
52
|
+
* never throws past a read/write failure.
|
|
53
|
+
*/
|
|
54
|
+
export declare function writeRegressionCaseKeys(specPath: string, criterionId: string, issueKey: string): {
|
|
55
|
+
ok: boolean;
|
|
56
|
+
changed: boolean;
|
|
57
|
+
detail: string;
|
|
58
|
+
};
|
|
59
|
+
/** Pure text transform — extracted so the extractor-safety test drives it directly. */
|
|
60
|
+
export declare function addRegressionCaseKeyToSource(source: string, criterionId: string, issueKey: string): {
|
|
61
|
+
changed: boolean;
|
|
62
|
+
source: string;
|
|
63
|
+
reason?: 'already-present' | 'criterion-id-not-found';
|
|
64
|
+
};
|
|
43
65
|
//# sourceMappingURL=spec-writer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-writer.d.ts","sourceRoot":"","sources":["../../src/jira/spec-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGzC,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,OAAO,EAAE,OAAO,CAAC;CAClB;AA8BD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM/D;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAqBf;AAWD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,GAClB,eAAe,CAkBjB"}
|
|
1
|
+
{"version":3,"file":"spec-writer.d.ts","sourceRoot":"","sources":["../../src/jira/spec-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGzC,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,OAAO,EAAE,OAAO,CAAC;CAClB;AA8BD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM/D;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAqBf;AAWD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,GAClB,eAAe,CAkBjB;AAWD;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA2BnD;AAED,uFAAuF;AACvF,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,wBAAwB,CAAA;CAAE,CAkE7F"}
|
|
@@ -47,6 +47,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
47
47
|
exports.readSpecJiraKey = readSpecJiraKey;
|
|
48
48
|
exports.findSpecForIssueKey = findSpecForIssueKey;
|
|
49
49
|
exports.writeSpecFromIssue = writeSpecFromIssue;
|
|
50
|
+
exports.writeRegressionCaseKeys = writeRegressionCaseKeys;
|
|
51
|
+
exports.addRegressionCaseKeyToSource = addRegressionCaseKeyToSource;
|
|
50
52
|
const fs = __importStar(require("fs"));
|
|
51
53
|
const path = __importStar(require("path"));
|
|
52
54
|
const spec_generator_1 = require("./spec-generator");
|
|
@@ -155,4 +157,115 @@ function writeSpecFromIssue(issue, projectRoot) {
|
|
|
155
157
|
fs.writeFileSync(target, markdown, 'utf8');
|
|
156
158
|
return { path: target, created };
|
|
157
159
|
}
|
|
160
|
+
// ---------------------------------------------------------------------------
|
|
161
|
+
// Regression-pack back-link (REQ-JIRAREG-001.A3)
|
|
162
|
+
// ---------------------------------------------------------------------------
|
|
163
|
+
const ID_MARKER_LINE = /^\s*<!--\s*id:\s*([^\s]+)\s*-->\s*$/;
|
|
164
|
+
const REG_BULLET = /^\s*[-*]\s+([A-Z][A-Z0-9]+-\d+)\s*$/;
|
|
165
|
+
const SECTION_HEADING = /^#{1,6}\s+/;
|
|
166
|
+
const SPEC_KEYWORD_BLOCK = /^(implementations|verifies|regression_cases):\s*$/;
|
|
167
|
+
/**
|
|
168
|
+
* Insert or update a `regression_cases:` back-link under the acceptance
|
|
169
|
+
* criterion marked `<!-- id: criterionId -->` (REQ-JIRAREG-001.A3). The block
|
|
170
|
+
* is trace-only metadata the markdown spec extractor ignores by design —
|
|
171
|
+
* `implementations:` and `verifies:` are the only keywords the extractor
|
|
172
|
+
* recognises, so a `regression_cases:` block cannot silently absorb their
|
|
173
|
+
* bullets. Idempotent: a re-run with the same key is a no-op.
|
|
174
|
+
*
|
|
175
|
+
* Returns `{ ok, changed, detail }` mirroring `writeBackImplementation`;
|
|
176
|
+
* never throws past a read/write failure.
|
|
177
|
+
*/
|
|
178
|
+
function writeRegressionCaseKeys(specPath, criterionId, issueKey) {
|
|
179
|
+
try {
|
|
180
|
+
const source = fs.readFileSync(specPath, 'utf8');
|
|
181
|
+
const res = addRegressionCaseKeyToSource(source, criterionId, issueKey);
|
|
182
|
+
if (!res.changed) {
|
|
183
|
+
return {
|
|
184
|
+
ok: res.reason !== 'criterion-id-not-found',
|
|
185
|
+
changed: false,
|
|
186
|
+
detail: res.reason === 'already-present'
|
|
187
|
+
? 'regression_cases: block already lists this key'
|
|
188
|
+
: `marker <!-- id: ${criterionId} --> not found in ${specPath}`,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
fs.writeFileSync(specPath, res.source, 'utf8');
|
|
192
|
+
return {
|
|
193
|
+
ok: true,
|
|
194
|
+
changed: true,
|
|
195
|
+
detail: `regression_cases: entry written to ${specPath}`,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
catch (err) {
|
|
199
|
+
return {
|
|
200
|
+
ok: false,
|
|
201
|
+
changed: false,
|
|
202
|
+
detail: err instanceof Error ? err.message : String(err),
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/** Pure text transform — extracted so the extractor-safety test drives it directly. */
|
|
207
|
+
function addRegressionCaseKeyToSource(source, criterionId, issueKey) {
|
|
208
|
+
const lines = source.split('\n');
|
|
209
|
+
let markerIdx = -1;
|
|
210
|
+
for (let i = 0; i < lines.length; i++) {
|
|
211
|
+
const m = (lines[i] ?? '').match(ID_MARKER_LINE);
|
|
212
|
+
if (m && m[1] === criterionId) {
|
|
213
|
+
markerIdx = i;
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (markerIdx === -1) {
|
|
218
|
+
return { changed: false, source, reason: 'criterion-id-not-found' };
|
|
219
|
+
}
|
|
220
|
+
// Body of a criterion ends at the next id marker or heading — same
|
|
221
|
+
// structural boundary the extractor uses.
|
|
222
|
+
const bodyStart = markerIdx + 1;
|
|
223
|
+
let bodyEnd = lines.length;
|
|
224
|
+
for (let i = bodyStart; i < lines.length; i++) {
|
|
225
|
+
const line = lines[i] ?? '';
|
|
226
|
+
if (SECTION_HEADING.test(line) || ID_MARKER_LINE.test(line)) {
|
|
227
|
+
bodyEnd = i;
|
|
228
|
+
break;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
let blockIdx = -1;
|
|
232
|
+
for (let i = bodyStart; i < bodyEnd; i++) {
|
|
233
|
+
if (/^regression_cases:\s*$/.test(lines[i] ?? '')) {
|
|
234
|
+
blockIdx = i;
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
const bullet = ` - ${issueKey}`;
|
|
239
|
+
if (blockIdx !== -1) {
|
|
240
|
+
let lastBullet = blockIdx;
|
|
241
|
+
for (let i = blockIdx + 1; i < bodyEnd; i++) {
|
|
242
|
+
const line = lines[i] ?? '';
|
|
243
|
+
if (line.trim() === '')
|
|
244
|
+
break;
|
|
245
|
+
const m = line.match(REG_BULLET);
|
|
246
|
+
if (!m) {
|
|
247
|
+
// Any non-matching non-blank line terminates the block cleanly —
|
|
248
|
+
// in particular an `implementations:` / `verifies:` keyword just
|
|
249
|
+
// below cannot be swept in.
|
|
250
|
+
if (SPEC_KEYWORD_BLOCK.test(line.trim()))
|
|
251
|
+
break;
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
if (m[1] === issueKey) {
|
|
255
|
+
return { changed: false, source, reason: 'already-present' };
|
|
256
|
+
}
|
|
257
|
+
lastBullet = i;
|
|
258
|
+
}
|
|
259
|
+
lines.splice(lastBullet + 1, 0, bullet);
|
|
260
|
+
return { changed: true, source: lines.join('\n') };
|
|
261
|
+
}
|
|
262
|
+
// No block yet — insert one, terminated by a blank line so the extractor's
|
|
263
|
+
// next-keyword scan cannot bleed across it.
|
|
264
|
+
let insertAt = bodyEnd;
|
|
265
|
+
while (insertAt > bodyStart && (lines[insertAt - 1] ?? '').trim() === '')
|
|
266
|
+
insertAt--;
|
|
267
|
+
const block = ['', 'regression_cases:', bullet, ''];
|
|
268
|
+
lines.splice(insertAt, 0, ...block);
|
|
269
|
+
return { changed: true, source: lines.join('\n') };
|
|
270
|
+
}
|
|
158
271
|
//# sourceMappingURL=spec-writer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-writer.js","sourceRoot":"","sources":["../../src/jira/spec-writer.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDH,0CAMC;AAUD,kDAwBC;AAkBD,gDAqBC;
|
|
1
|
+
{"version":3,"file":"spec-writer.js","sourceRoot":"","sources":["../../src/jira/spec-writer.ts"],"names":[],"mappings":"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"}
|
package/lib/dist/jira/types.d.ts
CHANGED
|
@@ -64,6 +64,46 @@ export interface JiraCredentials {
|
|
|
64
64
|
* process-global. Last resort when no CA bundle is available.
|
|
65
65
|
*/
|
|
66
66
|
insecureTls?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Provenance of the resolved `project` (REQ-JIRATEAM-001). `"repo"` when
|
|
69
|
+
* a `jira` block in `specship.config.json` supplied the binding, `"user"`
|
|
70
|
+
* otherwise. Credentials are ALWAYS user-level regardless.
|
|
71
|
+
*/
|
|
72
|
+
bindingSource?: 'repo' | 'user';
|
|
73
|
+
/** Absolute path to the repo config that supplied the binding, when any. */
|
|
74
|
+
bindingPath?: string;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Shape of the `jira` section inside the repo-committed
|
|
78
|
+
* `specship.config.json` (REQ-JIRATEAM-001). Non-credential binding only —
|
|
79
|
+
* a credential-shaped field here is rejected on load.
|
|
80
|
+
*/
|
|
81
|
+
export interface JiraRepoBinding {
|
|
82
|
+
/** JIRA project key every teammate publishes into, e.g. `ACME`. */
|
|
83
|
+
projectKey: string;
|
|
84
|
+
/** Issue type used when publishing a spec as a Story. */
|
|
85
|
+
storyIssueType?: string;
|
|
86
|
+
/** Issue type used when publishing an acceptance criterion as a Sub-task. */
|
|
87
|
+
subtaskIssueType?: string;
|
|
88
|
+
/** Optional board id/name scoping coverage & pick. */
|
|
89
|
+
board?: string | number;
|
|
90
|
+
/** Optional sprint id/name scoping coverage & pick. */
|
|
91
|
+
sprint?: string | number;
|
|
92
|
+
/**
|
|
93
|
+
* Default epic anchor for spec authoring (REQ-JIRATEAM-006). When set,
|
|
94
|
+
* every new Story published from this repo is parented under this epic
|
|
95
|
+
* unless the spec's frontmatter names a different `epicKey`.
|
|
96
|
+
*/
|
|
97
|
+
epicKey?: string;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* One open epic returned from `listEpics` (REQ-JIRATEAM-006), used to
|
|
101
|
+
* populate the intake-gate picker. Never carries credential-adjacent data.
|
|
102
|
+
*/
|
|
103
|
+
export interface JiraEpic {
|
|
104
|
+
key: string;
|
|
105
|
+
summary: string;
|
|
106
|
+
status: string;
|
|
67
107
|
}
|
|
68
108
|
/**
|
|
69
109
|
* On-disk config shape (`~/.specship/jira.json`). `deployment` is
|
|
@@ -90,6 +130,12 @@ export interface JiraConfig {
|
|
|
90
130
|
* (REQ-JIRAPUB-001). A publish call may override it per invocation.
|
|
91
131
|
*/
|
|
92
132
|
project?: string;
|
|
133
|
+
/**
|
|
134
|
+
* Team-lane repo binding (REQ-JIRATEAM-001) — usually authored inside
|
|
135
|
+
* the repo's `specship.config.json`, not here. Kept as an optional field
|
|
136
|
+
* so `JiraConfig` remains a superset for tools that ingest either shape.
|
|
137
|
+
*/
|
|
138
|
+
jira?: JiraRepoBinding;
|
|
93
139
|
}
|
|
94
140
|
/**
|
|
95
141
|
* Result of probing a JIRA instance's `/myself` endpoint. Carries only
|
|
@@ -126,6 +172,12 @@ export interface JiraIssue {
|
|
|
126
172
|
summary: string;
|
|
127
173
|
status: string;
|
|
128
174
|
}>;
|
|
175
|
+
/**
|
|
176
|
+
* Detail path (REQ-JIRATEAM-006 A4): the issue's parent key when any —
|
|
177
|
+
* for a Story parented to an epic, this is the epic key. Absent when the
|
|
178
|
+
* issue has no parent.
|
|
179
|
+
*/
|
|
180
|
+
parentKey?: string;
|
|
129
181
|
}
|
|
130
182
|
/**
|
|
131
183
|
* Result of listing the current user's issues (REQ-JIRA-002). An empty
|
|
@@ -186,6 +238,16 @@ export declare class JiraError extends Error {
|
|
|
186
238
|
export declare class JiraConfigError extends JiraError {
|
|
187
239
|
constructor(message: string);
|
|
188
240
|
}
|
|
241
|
+
/**
|
|
242
|
+
* Publish was requested on a bound repo with no resolvable epic anchor
|
|
243
|
+
* (REQ-JIRATEAM-006.A3). The message names both fixes — set `jira.epicKey`
|
|
244
|
+
* in `specship.config.json` (the committed binding) or pick an epic — so
|
|
245
|
+
* the caller can surface a directed refusal and never create an unanchored
|
|
246
|
+
* Story.
|
|
247
|
+
*/
|
|
248
|
+
export declare class JiraEpicRequiredError extends JiraError {
|
|
249
|
+
constructor(message: string);
|
|
250
|
+
}
|
|
189
251
|
/** The instance rejected the credentials (HTTP 401 / 403). */
|
|
190
252
|
export declare class JiraAuthError extends JiraError {
|
|
191
253
|
constructor(message: string);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/jira/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,8CAA8C;AAC9C,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,YAAY,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,UAAU,EAAE,cAAc,CAAC;IAC3B,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/jira/types.ts"],"names":[],"mappings":"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"}
|
package/lib/dist/jira/types.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* base URL host and the resolved display name (REQ-JIRA-009 builds on this).
|
|
12
12
|
*/
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.JiraNotFoundError = exports.JiraAuthError = exports.JiraConfigError = exports.JiraError = void 0;
|
|
14
|
+
exports.JiraNotFoundError = exports.JiraAuthError = exports.JiraEpicRequiredError = exports.JiraConfigError = exports.JiraError = void 0;
|
|
15
15
|
/**
|
|
16
16
|
* Base class for JIRA errors. Mirrors `McpConfigError` in
|
|
17
17
|
* `server/src/routes/mcp.ts` — a plain `Error` subclass with a code.
|
|
@@ -36,6 +36,20 @@ class JiraConfigError extends JiraError {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
exports.JiraConfigError = JiraConfigError;
|
|
39
|
+
/**
|
|
40
|
+
* Publish was requested on a bound repo with no resolvable epic anchor
|
|
41
|
+
* (REQ-JIRATEAM-006.A3). The message names both fixes — set `jira.epicKey`
|
|
42
|
+
* in `specship.config.json` (the committed binding) or pick an epic — so
|
|
43
|
+
* the caller can surface a directed refusal and never create an unanchored
|
|
44
|
+
* Story.
|
|
45
|
+
*/
|
|
46
|
+
class JiraEpicRequiredError extends JiraError {
|
|
47
|
+
constructor(message) {
|
|
48
|
+
super(message, 'EPIC_REQUIRED');
|
|
49
|
+
this.name = 'JiraEpicRequiredError';
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.JiraEpicRequiredError = JiraEpicRequiredError;
|
|
39
53
|
/** The instance rejected the credentials (HTTP 401 / 403). */
|
|
40
54
|
class JiraAuthError extends JiraError {
|
|
41
55
|
constructor(message) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/jira/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/jira/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AA2NH;;;;;;GAMG;AACH,MAAa,SAAU,SAAQ,KAAK;IACzB,IAAI,CAAS;IACtB,YAAY,OAAe,EAAE,IAAY;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAPD,8BAOC;AAED,iEAAiE;AACjE,MAAa,eAAgB,SAAQ,SAAS;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AALD,0CAKC;AAED;;;;;;GAMG;AACH,MAAa,qBAAsB,SAAQ,SAAS;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AALD,sDAKC;AAED,8DAA8D;AAC9D,MAAa,aAAc,SAAQ,SAAS;IAC1C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AALD,sCAKC;AAED;;;;;GAKG;AACH,MAAa,iBAAkB,SAAQ,SAAS;IAC9C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AALD,8CAKC"}
|
|
@@ -18,6 +18,7 @@ import type { ToolDefinition, ToolResult } from './tools';
|
|
|
18
18
|
import { type TaskshipAvailability } from '../taskship/detect';
|
|
19
19
|
import { JiraClient } from '../jira/client';
|
|
20
20
|
import { type JiraIssueListResult, type JiraIssueResult, type JiraConnectionResult, type JiraTransitionNames, type JiraTransitionResult } from '../jira/types';
|
|
21
|
+
import { type RegressionPackJiraClient, type RunResultJiraClient } from '../jira/regression-pack';
|
|
21
22
|
import { type PublishJiraClient } from '../jira/publish';
|
|
22
23
|
import { raisePullRequest as defaultRaisePullRequest, type PullRequestOutcome } from '../jira/pull-request';
|
|
23
24
|
/**
|
|
@@ -126,6 +127,22 @@ interface JiraStartExecutorLike {
|
|
|
126
127
|
* to the configured JIRA host through the stored credentials.
|
|
127
128
|
*/
|
|
128
129
|
export declare function handleSpecshipJiraIssues(args: Record<string, unknown>): Promise<ToolResult>;
|
|
130
|
+
/**
|
|
131
|
+
* Handle `specship_jira_anchor` (REQ-JIRATEAM-007). Thin wrapper over
|
|
132
|
+
* `resolveWorkAnchor` so slash-commands and external agents can query the
|
|
133
|
+
* board-first gate without duplicating logic. Always returns a plain-text
|
|
134
|
+
* result — anchored → an `Anchor:` line naming the key; refused → the
|
|
135
|
+
* canonical human refusal (with the pickable list when available); unbound
|
|
136
|
+
* → a one-liner so callers no-op cleanly.
|
|
137
|
+
*/
|
|
138
|
+
export declare function handleSpecshipJiraAnchor(args: Record<string, unknown>): Promise<ToolResult>;
|
|
139
|
+
/**
|
|
140
|
+
* Handle `specship_jira_epics` (REQ-JIRATEAM-008). Lists open epics for a
|
|
141
|
+
* project — the picker source for the `/specship:jira` menu's "choose epic"
|
|
142
|
+
* step. With no `project`, falls back to the repo binding's `projectKey` so
|
|
143
|
+
* on a bound repo the caller doesn't have to duplicate the lookup.
|
|
144
|
+
*/
|
|
145
|
+
export declare function handleSpecshipJiraEpics(args: Record<string, unknown>): Promise<ToolResult>;
|
|
129
146
|
/**
|
|
130
147
|
* Handle `specship_jira_issue` (REQ-JIRA-003). Fetches a single issue by key
|
|
131
148
|
* and renders its full detail. Independent of the code graph — talks only to
|
|
@@ -352,5 +369,90 @@ export interface JiraAddTaskDeps {
|
|
|
352
369
|
* Task under an Epic, watermarked so taskship can adopt it later.
|
|
353
370
|
*/
|
|
354
371
|
export declare function handleSpecshipJiraAddTask(args: Record<string, unknown>, deps: JiraAddTaskDeps): Promise<ToolResult>;
|
|
372
|
+
/** Dependencies for `handleSpecshipJiraRegressionPack` — threaded like publish. */
|
|
373
|
+
export interface JiraRegressionPackDeps {
|
|
374
|
+
specQueries: unknown;
|
|
375
|
+
projectRoot: string;
|
|
376
|
+
/** Client factory seam (default: resolve creds + new JiraClient). */
|
|
377
|
+
makeJiraClient?: () => RegressionPackJiraClient;
|
|
378
|
+
/**
|
|
379
|
+
* Optional graph accessors — enable REQ-JIRAREG-004.A2 tier derivation.
|
|
380
|
+
* Absent (rare — CLI / MCP always pass them) → tier defaults to `'backend'`.
|
|
381
|
+
*/
|
|
382
|
+
getLinkedNodesForReq?: (reqId: string) => import('../types').Node[];
|
|
383
|
+
getNeighbourNodes?: (nodeIds: readonly string[]) => import('../types').Node[];
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Handle `specship_jira_regression_pack` (REQ-JIRAREG-001). Builds the model
|
|
387
|
+
* from the loaded spec set, then upserts it against JIRA idempotently. A
|
|
388
|
+
* dry-run planning path returns the counts without any JIRA write.
|
|
389
|
+
*/
|
|
390
|
+
export declare function handleSpecshipJiraRegressionPack(args: Record<string, unknown>, deps: JiraRegressionPackDeps): Promise<ToolResult>;
|
|
391
|
+
export interface JiraRegressionRecordDeps {
|
|
392
|
+
specQueries: unknown;
|
|
393
|
+
projectRoot: string;
|
|
394
|
+
makeJiraClient?: () => RunResultJiraClient;
|
|
395
|
+
}
|
|
396
|
+
/** Handle `specship_jira_regression_record` (REQ-JIRAREG-005). */
|
|
397
|
+
export declare function handleSpecshipJiraRegressionRecord(args: Record<string, unknown>, deps: JiraRegressionRecordDeps): Promise<ToolResult>;
|
|
398
|
+
/**
|
|
399
|
+
* Dependencies for `handleSpecshipJiraCoverage`. Threaded from the tool
|
|
400
|
+
* dispatcher — the DB handle enumerates specs + link states, `projectRoot`
|
|
401
|
+
* anchors the published-specs scan, and `makeJiraClient` is the injectable
|
|
402
|
+
* live-read seam (default resolves creds + a real `JiraClient`).
|
|
403
|
+
*/
|
|
404
|
+
export interface JiraCoverageDeps {
|
|
405
|
+
specQueries: unknown;
|
|
406
|
+
projectRoot: string;
|
|
407
|
+
makeJiraClient?: () => import('../jira/coverage').CoverageJiraClient & {
|
|
408
|
+
listCommentsDetailed?: (key: string) => Promise<Array<{
|
|
409
|
+
id: string;
|
|
410
|
+
body: string;
|
|
411
|
+
}>>;
|
|
412
|
+
addComment?: (key: string, body: string) => Promise<{
|
|
413
|
+
id: string;
|
|
414
|
+
} | void>;
|
|
415
|
+
updateComment?: (key: string, id: string, body: string) => Promise<void>;
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Handle `specship_jira_coverage` (REQ-JIRATEAM-004). Builds the sprint
|
|
420
|
+
* coverage report, renders markdown, and optionally upserts a single
|
|
421
|
+
* watermarked JIRA comment (A3) — never transitions or edits any issue (A4).
|
|
422
|
+
*
|
|
423
|
+
* SECURITY: no credential is echoed (REQ-JIRA-009); only public issue keys,
|
|
424
|
+
* titles, and statuses appear in output.
|
|
425
|
+
*/
|
|
426
|
+
export declare function handleSpecshipJiraCoverage(args: Record<string, unknown>, deps: JiraCoverageDeps): Promise<ToolResult>;
|
|
427
|
+
/** The read-only client slice `specship_jira_reconcile` needs. */
|
|
428
|
+
export interface JiraReconcileClient {
|
|
429
|
+
getIssue(key: string): Promise<JiraIssueResult>;
|
|
430
|
+
}
|
|
431
|
+
/** Dependencies for `handleSpecshipJiraReconcile`. */
|
|
432
|
+
export interface JiraReconcileDeps {
|
|
433
|
+
specQueries: unknown;
|
|
434
|
+
projectRoot: string;
|
|
435
|
+
/** Read-side factory (default: resolve creds + new JiraClient). */
|
|
436
|
+
makeJiraClient?: () => JiraReconcileClient;
|
|
437
|
+
/**
|
|
438
|
+
* Write-side factory used only in apply mode to re-publish and refresh the
|
|
439
|
+
* fingerprint. Defaults to the full `JiraClient` — tests stub this out so
|
|
440
|
+
* the suite never contacts a real host.
|
|
441
|
+
*/
|
|
442
|
+
makePublishClient?: () => PublishJiraClient;
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Handle `specship_jira_reconcile` (REQ-JIRATEAM-005).
|
|
446
|
+
*
|
|
447
|
+
* Two modes:
|
|
448
|
+
* - preview (default, A3): enumerate every published spec, live-read the
|
|
449
|
+
* issue, diff, and return the proposed spec amendment. NO writes.
|
|
450
|
+
* - apply (A4): fold the previewed diff into the spec file and re-publish so
|
|
451
|
+
* the fingerprint refreshes. Preview-gated: apply refuses unless
|
|
452
|
+
* `expected_live_fingerprint` matches the issue's current live fingerprint,
|
|
453
|
+
* which the caller MUST have just received from a preview call. This
|
|
454
|
+
* encodes the "preview first, then explicit user confirmation" discipline.
|
|
455
|
+
*/
|
|
456
|
+
export declare function handleSpecshipJiraReconcile(args: Record<string, unknown>, deps: JiraReconcileDeps): Promise<ToolResult>;
|
|
355
457
|
export {};
|
|
356
458
|
//# sourceMappingURL=jira-tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jira-tools.d.ts","sourceRoot":"","sources":["../../src/mcp/jira-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAyC,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"jira-tools.d.ts","sourceRoot":"","sources":["../../src/mcp/jira-tools.ts"],"names":[],"mappings":"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"}
|