@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.
Files changed (96) hide show
  1. package/lib/dist/bin/specship.js +302 -4
  2. package/lib/dist/bin/specship.js.map +1 -1
  3. package/lib/dist/commands/specship/jira.md +74 -0
  4. package/lib/dist/commands/specship/spec.md +61 -1
  5. package/lib/dist/extraction/index.d.ts +6 -0
  6. package/lib/dist/extraction/index.d.ts.map +1 -1
  7. package/lib/dist/extraction/index.js.map +1 -1
  8. package/lib/dist/extraction/specs/markdown-spec-extractor.d.ts.map +1 -1
  9. package/lib/dist/extraction/specs/markdown-spec-extractor.js +8 -1
  10. package/lib/dist/extraction/specs/markdown-spec-extractor.js.map +1 -1
  11. package/lib/dist/index.d.ts +7 -0
  12. package/lib/dist/index.d.ts.map +1 -1
  13. package/lib/dist/index.js +45 -18
  14. package/lib/dist/index.js.map +1 -1
  15. package/lib/dist/jira/auto-publish.d.ts +67 -0
  16. package/lib/dist/jira/auto-publish.d.ts.map +1 -0
  17. package/lib/dist/jira/auto-publish.js +232 -0
  18. package/lib/dist/jira/auto-publish.js.map +1 -0
  19. package/lib/dist/jira/board-first.d.ts +64 -0
  20. package/lib/dist/jira/board-first.d.ts.map +1 -0
  21. package/lib/dist/jira/board-first.js +91 -0
  22. package/lib/dist/jira/board-first.js.map +1 -0
  23. package/lib/dist/jira/client.d.ts +80 -1
  24. package/lib/dist/jira/client.d.ts.map +1 -1
  25. package/lib/dist/jira/client.js +213 -1
  26. package/lib/dist/jira/client.js.map +1 -1
  27. package/lib/dist/jira/config.d.ts +1 -1
  28. package/lib/dist/jira/config.d.ts.map +1 -1
  29. package/lib/dist/jira/config.js +14 -3
  30. package/lib/dist/jira/config.js.map +1 -1
  31. package/lib/dist/jira/coverage.d.ts +105 -0
  32. package/lib/dist/jira/coverage.d.ts.map +1 -0
  33. package/lib/dist/jira/coverage.js +160 -0
  34. package/lib/dist/jira/coverage.js.map +1 -0
  35. package/lib/dist/jira/index.d.ts +1 -0
  36. package/lib/dist/jira/index.d.ts.map +1 -1
  37. package/lib/dist/jira/index.js +1 -0
  38. package/lib/dist/jira/index.js.map +1 -1
  39. package/lib/dist/jira/milestone-comment.d.ts +95 -0
  40. package/lib/dist/jira/milestone-comment.d.ts.map +1 -0
  41. package/lib/dist/jira/milestone-comment.js +271 -0
  42. package/lib/dist/jira/milestone-comment.js.map +1 -0
  43. package/lib/dist/jira/publish.d.ts +69 -2
  44. package/lib/dist/jira/publish.d.ts.map +1 -1
  45. package/lib/dist/jira/publish.js +0 -0
  46. package/lib/dist/jira/publish.js.map +1 -1
  47. package/lib/dist/jira/published-specs.d.ts +23 -0
  48. package/lib/dist/jira/published-specs.d.ts.map +1 -0
  49. package/lib/dist/jira/published-specs.js +106 -0
  50. package/lib/dist/jira/published-specs.js.map +1 -0
  51. package/lib/dist/jira/reconcile.d.ts +81 -0
  52. package/lib/dist/jira/reconcile.d.ts.map +1 -0
  53. package/lib/dist/jira/reconcile.js +111 -0
  54. package/lib/dist/jira/reconcile.js.map +1 -0
  55. package/lib/dist/jira/regression-pack.d.ts +547 -0
  56. package/lib/dist/jira/regression-pack.d.ts.map +1 -0
  57. package/lib/dist/jira/regression-pack.js +986 -0
  58. package/lib/dist/jira/regression-pack.js.map +1 -0
  59. package/lib/dist/jira/repo-config.d.ts +59 -0
  60. package/lib/dist/jira/repo-config.d.ts.map +1 -0
  61. package/lib/dist/jira/repo-config.js +222 -0
  62. package/lib/dist/jira/repo-config.js.map +1 -0
  63. package/lib/dist/jira/spec-amend.d.ts +46 -0
  64. package/lib/dist/jira/spec-amend.d.ts.map +1 -0
  65. package/lib/dist/jira/spec-amend.js +232 -0
  66. package/lib/dist/jira/spec-amend.js.map +1 -0
  67. package/lib/dist/jira/spec-writer.d.ts +22 -0
  68. package/lib/dist/jira/spec-writer.d.ts.map +1 -1
  69. package/lib/dist/jira/spec-writer.js +113 -0
  70. package/lib/dist/jira/spec-writer.js.map +1 -1
  71. package/lib/dist/jira/types.d.ts +62 -0
  72. package/lib/dist/jira/types.d.ts.map +1 -1
  73. package/lib/dist/jira/types.js +15 -1
  74. package/lib/dist/jira/types.js.map +1 -1
  75. package/lib/dist/mcp/jira-tools.d.ts +102 -0
  76. package/lib/dist/mcp/jira-tools.d.ts.map +1 -1
  77. package/lib/dist/mcp/jira-tools.js +807 -50
  78. package/lib/dist/mcp/jira-tools.js.map +1 -1
  79. package/lib/dist/mcp/server-instructions.d.ts +1 -1
  80. package/lib/dist/mcp/server-instructions.d.ts.map +1 -1
  81. package/lib/dist/mcp/server-instructions.js +4 -0
  82. package/lib/dist/mcp/server-instructions.js.map +1 -1
  83. package/lib/dist/mcp/spec-tools.d.ts.map +1 -1
  84. package/lib/dist/mcp/spec-tools.js +7 -1
  85. package/lib/dist/mcp/spec-tools.js.map +1 -1
  86. package/lib/dist/mcp/tools.d.ts +3 -0
  87. package/lib/dist/mcp/tools.d.ts.map +1 -1
  88. package/lib/dist/mcp/tools.js +50 -0
  89. package/lib/dist/mcp/tools.js.map +1 -1
  90. package/lib/dist/resolution/spec-link-resolver.d.ts +2 -0
  91. package/lib/dist/resolution/spec-link-resolver.d.ts.map +1 -1
  92. package/lib/dist/resolution/spec-link-resolver.js +11 -3
  93. package/lib/dist/resolution/spec-link-resolver.js.map +1 -1
  94. package/lib/node_modules/.package-lock.json +1 -1
  95. package/lib/package.json +1 -1
  96. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regression-pack.js","sourceRoot":"","sources":["../../src/jira/regression-pack.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Repo-committed JIRA project binding (REQ-JIRATEAM-001).
3
+ *
4
+ * The binding lives under `jira` inside `specship.config.json` — the same
5
+ * file `src/enforce/enforce.ts` uses for gate configuration (single repo
6
+ * config, `ENFORCE_CONFIG_FILE`). Credentials NEVER live here: a
7
+ * credential-shaped field triggers a hard error naming the file and field,
8
+ * pointing the user at `~/.specship/jira.json`.
9
+ *
10
+ * Precedence (per spec): repo binding wins for project identity even over
11
+ * env, but credentials always come from the user-level config/env. See
12
+ * `resolveJiraCredentials`.
13
+ */
14
+ import { JiraConfigError, JiraRepoBinding } from './types';
15
+ /**
16
+ * Walk up from `cwd` to find a `specship.config.json`. Falls back to the
17
+ * git root (nearest `.git` directory) so bindings work in fresh clones
18
+ * before the file is authored. Returns null if neither is found.
19
+ */
20
+ export declare function findRepoRoot(cwd: string): string | null;
21
+ /**
22
+ * Reject a repo config whose `jira` block contains a credential-shaped
23
+ * field. The error names the file path and the offending field — the user
24
+ * should see WHY it was rejected and WHERE to put the value instead.
25
+ */
26
+ export declare function assertNoCredentialsInRepoConfig(raw: unknown, configPath: string): void;
27
+ /**
28
+ * Load the repo-committed JIRA binding from `specship.config.json` at (or
29
+ * above) `cwd`. Returns `{ binding: null, path: null }` when no file is
30
+ * present or the file has no `jira` block — a repo without a binding falls
31
+ * through to the solo-lane user-level behavior (REQ-JIRATEAM-001.A3).
32
+ */
33
+ export declare function loadRepoJiraBinding(cwd: string): {
34
+ binding: JiraRepoBinding | null;
35
+ path: string | null;
36
+ };
37
+ /**
38
+ * Merge a partial `jira` binding patch into the committed
39
+ * `specship.config.json` (REQ-JIRATEAM-006 — used when the intake gate
40
+ * accepts a new default `epicKey`). Preserves every other top-level key
41
+ * (`enforce` and any unknown blocks) — same merge discipline as
42
+ * `enableGateChecks` in `src/enforce/enforce.ts`. Creates the file if
43
+ * absent. Never writes credential-adjacent fields.
44
+ */
45
+ export declare function updateRepoJiraBinding(projectRoot: string, patch: Partial<JiraRepoBinding>): {
46
+ path: string;
47
+ binding: JiraRepoBinding;
48
+ };
49
+ /**
50
+ * Wrap an auth/access failure that occurred against a repo-bound project
51
+ * (REQ-JIRATEAM-001.A4) so the message names the project, host, and the
52
+ * file that bound them — never a silent fallback to another project.
53
+ */
54
+ export declare function wrapRepoBindingProjectError(err: Error, info: {
55
+ projectKey: string;
56
+ host: string;
57
+ bindingPath: string;
58
+ }): JiraConfigError;
59
+ //# sourceMappingURL=repo-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo-config.d.ts","sourceRoot":"","sources":["../../src/jira/repo-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAkB3D;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUvD;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,OAAO,EACZ,UAAU,EAAE,MAAM,GACjB,IAAI,CAcN;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,GACV;IAAE,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CA6C1D;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAyC5C;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,KAAK,EACV,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC9D,eAAe,CAMjB"}
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ /**
3
+ * Repo-committed JIRA project binding (REQ-JIRATEAM-001).
4
+ *
5
+ * The binding lives under `jira` inside `specship.config.json` — the same
6
+ * file `src/enforce/enforce.ts` uses for gate configuration (single repo
7
+ * config, `ENFORCE_CONFIG_FILE`). Credentials NEVER live here: a
8
+ * credential-shaped field triggers a hard error naming the file and field,
9
+ * pointing the user at `~/.specship/jira.json`.
10
+ *
11
+ * Precedence (per spec): repo binding wins for project identity even over
12
+ * env, but credentials always come from the user-level config/env. See
13
+ * `resolveJiraCredentials`.
14
+ */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || (function () {
32
+ var ownKeys = function(o) {
33
+ ownKeys = Object.getOwnPropertyNames || function (o) {
34
+ var ar = [];
35
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
+ return ar;
37
+ };
38
+ return ownKeys(o);
39
+ };
40
+ return function (mod) {
41
+ if (mod && mod.__esModule) return mod;
42
+ var result = {};
43
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
+ __setModuleDefault(result, mod);
45
+ return result;
46
+ };
47
+ })();
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.findRepoRoot = findRepoRoot;
50
+ exports.assertNoCredentialsInRepoConfig = assertNoCredentialsInRepoConfig;
51
+ exports.loadRepoJiraBinding = loadRepoJiraBinding;
52
+ exports.updateRepoJiraBinding = updateRepoJiraBinding;
53
+ exports.wrapRepoBindingProjectError = wrapRepoBindingProjectError;
54
+ const fs = __importStar(require("fs"));
55
+ const path = __importStar(require("path"));
56
+ const enforce_1 = require("../enforce/enforce");
57
+ const types_1 = require("./types");
58
+ /**
59
+ * Field names that must never appear under `jira` in the repo config —
60
+ * these are credential-adjacent (secrets or host URLs that pair with
61
+ * secrets) and belong in the user-level config only.
62
+ */
63
+ const FORBIDDEN_FIELDS = [
64
+ 'email',
65
+ 'apiToken',
66
+ 'token',
67
+ 'password',
68
+ 'username',
69
+ 'host',
70
+ 'baseUrl',
71
+ 'pat',
72
+ ];
73
+ /**
74
+ * Walk up from `cwd` to find a `specship.config.json`. Falls back to the
75
+ * git root (nearest `.git` directory) so bindings work in fresh clones
76
+ * before the file is authored. Returns null if neither is found.
77
+ */
78
+ function findRepoRoot(cwd) {
79
+ let dir = path.resolve(cwd);
80
+ let gitRoot = null;
81
+ while (true) {
82
+ if (fs.existsSync(path.join(dir, enforce_1.ENFORCE_CONFIG_FILE)))
83
+ return dir;
84
+ if (gitRoot === null && fs.existsSync(path.join(dir, '.git')))
85
+ gitRoot = dir;
86
+ const parent = path.dirname(dir);
87
+ if (parent === dir)
88
+ return gitRoot;
89
+ dir = parent;
90
+ }
91
+ }
92
+ /**
93
+ * Reject a repo config whose `jira` block contains a credential-shaped
94
+ * field. The error names the file path and the offending field — the user
95
+ * should see WHY it was rejected and WHERE to put the value instead.
96
+ */
97
+ function assertNoCredentialsInRepoConfig(raw, configPath) {
98
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw))
99
+ return;
100
+ const jira = raw.jira;
101
+ if (!jira || typeof jira !== 'object' || Array.isArray(jira))
102
+ return;
103
+ const jiraObj = jira;
104
+ for (const field of FORBIDDEN_FIELDS) {
105
+ if (field in jiraObj) {
106
+ throw new types_1.JiraConfigError(`Repo config ${configPath} has "jira.${field}" — credentials must ` +
107
+ `live in ~/.specship/jira.json (or SPECSHIP_JIRA_* env), never in the ` +
108
+ `repo. Remove "jira.${field}" and run "specship jira configure".`);
109
+ }
110
+ }
111
+ }
112
+ /**
113
+ * Load the repo-committed JIRA binding from `specship.config.json` at (or
114
+ * above) `cwd`. Returns `{ binding: null, path: null }` when no file is
115
+ * present or the file has no `jira` block — a repo without a binding falls
116
+ * through to the solo-lane user-level behavior (REQ-JIRATEAM-001.A3).
117
+ */
118
+ function loadRepoJiraBinding(cwd) {
119
+ const root = findRepoRoot(cwd);
120
+ if (!root)
121
+ return { binding: null, path: null };
122
+ const configPath = path.join(root, enforce_1.ENFORCE_CONFIG_FILE);
123
+ let raw;
124
+ try {
125
+ raw = fs.readFileSync(configPath, 'utf-8');
126
+ }
127
+ catch {
128
+ return { binding: null, path: null };
129
+ }
130
+ let parsed;
131
+ try {
132
+ parsed = JSON.parse(raw);
133
+ }
134
+ catch {
135
+ throw new types_1.JiraConfigError(`Repo config ${configPath} is not valid JSON.`);
136
+ }
137
+ assertNoCredentialsInRepoConfig(parsed, configPath);
138
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
139
+ return { binding: null, path: configPath };
140
+ }
141
+ const jira = parsed.jira;
142
+ if (!jira || typeof jira !== 'object' || Array.isArray(jira)) {
143
+ return { binding: null, path: configPath };
144
+ }
145
+ const j = jira;
146
+ const projectKey = typeof j.projectKey === 'string' ? j.projectKey.trim() : '';
147
+ if (!projectKey) {
148
+ throw new types_1.JiraConfigError(`Repo config ${configPath} has a "jira" block but no "projectKey".`);
149
+ }
150
+ const binding = { projectKey };
151
+ if (typeof j.storyIssueType === 'string')
152
+ binding.storyIssueType = j.storyIssueType;
153
+ if (typeof j.subtaskIssueType === 'string')
154
+ binding.subtaskIssueType = j.subtaskIssueType;
155
+ if (typeof j.board === 'string' || typeof j.board === 'number')
156
+ binding.board = j.board;
157
+ if (typeof j.sprint === 'string' || typeof j.sprint === 'number')
158
+ binding.sprint = j.sprint;
159
+ if (typeof j.epicKey === 'string' && j.epicKey.trim())
160
+ binding.epicKey = j.epicKey.trim();
161
+ return { binding, path: configPath };
162
+ }
163
+ /**
164
+ * Merge a partial `jira` binding patch into the committed
165
+ * `specship.config.json` (REQ-JIRATEAM-006 — used when the intake gate
166
+ * accepts a new default `epicKey`). Preserves every other top-level key
167
+ * (`enforce` and any unknown blocks) — same merge discipline as
168
+ * `enableGateChecks` in `src/enforce/enforce.ts`. Creates the file if
169
+ * absent. Never writes credential-adjacent fields.
170
+ */
171
+ function updateRepoJiraBinding(projectRoot, patch) {
172
+ const file = path.join(projectRoot, enforce_1.ENFORCE_CONFIG_FILE);
173
+ let cfg = {};
174
+ try {
175
+ const raw = fs.readFileSync(file, 'utf-8');
176
+ const parsed = JSON.parse(raw);
177
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
178
+ cfg = parsed;
179
+ }
180
+ }
181
+ catch {
182
+ // missing / unparseable → start fresh, preserving nothing
183
+ }
184
+ assertNoCredentialsInRepoConfig(cfg, file);
185
+ const existing = cfg.jira && typeof cfg.jira === 'object' && !Array.isArray(cfg.jira)
186
+ ? cfg.jira
187
+ : {};
188
+ const merged = { ...existing };
189
+ for (const [k, v] of Object.entries(patch)) {
190
+ if (v === undefined)
191
+ continue;
192
+ merged[k] = v;
193
+ }
194
+ if (typeof merged.projectKey !== 'string' || !merged.projectKey.trim()) {
195
+ throw new types_1.JiraConfigError(`Cannot update ${file}: a "jira.projectKey" is required.`);
196
+ }
197
+ cfg.jira = merged;
198
+ fs.writeFileSync(file, JSON.stringify(cfg, null, 2) + '\n', 'utf-8');
199
+ const binding = { projectKey: String(merged.projectKey).trim() };
200
+ if (typeof merged.storyIssueType === 'string')
201
+ binding.storyIssueType = merged.storyIssueType;
202
+ if (typeof merged.subtaskIssueType === 'string')
203
+ binding.subtaskIssueType = merged.subtaskIssueType;
204
+ if (typeof merged.board === 'string' || typeof merged.board === 'number')
205
+ binding.board = merged.board;
206
+ if (typeof merged.sprint === 'string' || typeof merged.sprint === 'number')
207
+ binding.sprint = merged.sprint;
208
+ if (typeof merged.epicKey === 'string' && merged.epicKey.trim())
209
+ binding.epicKey = merged.epicKey.trim();
210
+ return { path: file, binding };
211
+ }
212
+ /**
213
+ * Wrap an auth/access failure that occurred against a repo-bound project
214
+ * (REQ-JIRATEAM-001.A4) so the message names the project, host, and the
215
+ * file that bound them — never a silent fallback to another project.
216
+ */
217
+ function wrapRepoBindingProjectError(err, info) {
218
+ return new types_1.JiraConfigError(`Cannot access JIRA project "${info.projectKey}" on ${info.host} ` +
219
+ `(bound via ${info.bindingPath}). Check your credentials or the binding. ` +
220
+ `Cause: ${err.message}`);
221
+ }
222
+ //# sourceMappingURL=repo-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo-config.js","sourceRoot":"","sources":["../../src/jira/repo-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Spec-file write-side for JIRA reconciliation (REQ-JIRATEAM-005.A4).
3
+ *
4
+ * Two operations, both pure text transforms with a thin fs wrapper:
5
+ * - `applyContentAmendment` rewrites the requirement's title/prose body from
6
+ * an edited-in-JIRA summary/description while preserving the leading
7
+ * frontmatter, the `implementations:` / `verifies:` blocks, and the
8
+ * `## Acceptance` section (never clobbered).
9
+ * - `appendAcceptanceCriterion` inserts a new id-marked bullet under the
10
+ * `## Acceptance` container of the target requirement.
11
+ *
12
+ * The transforms return the amended source bytes; callers persist the file and
13
+ * re-publish so the frontmatter fingerprint refreshes.
14
+ */
15
+ export interface AmendResult {
16
+ changed: boolean;
17
+ source: string;
18
+ reason?: 'req-id-not-found' | 'already-present';
19
+ }
20
+ /**
21
+ * Rewrite the requirement's H2 title and its prose paragraph(s) from the
22
+ * edited-in-JIRA summary/description. Preserves the `## Acceptance` container
23
+ * (if present), the `implementations:` and `verifies:` blocks, and every
24
+ * child section. The prose window runs from the line after the heading up to
25
+ * the first of: `## Acceptance`, `implementations:`, `verifies:`, a nested
26
+ * id-marker, or a deeper heading — those all stay intact.
27
+ */
28
+ export declare function applyContentAmendment(source: string, reqId: string, newTitle: string, newDescription: string): AmendResult;
29
+ /**
30
+ * Insert `- <!-- id: <criterionId> -->\n- <text>` under the requirement's
31
+ * `## Acceptance` container. Creates the container when absent (appended to
32
+ * the end of the requirement body). Idempotent: if a bullet with the same id
33
+ * already exists, returns unchanged.
34
+ */
35
+ export declare function appendAcceptanceCriterion(source: string, reqId: string, criterionId: string, criterionText: string): AmendResult;
36
+ /**
37
+ * Fs wrapper: read the spec file, apply `mutator`, and write it back when the
38
+ * result changed. Refuses paths that escape `projectRoot`. Never throws — a
39
+ * malformed spec or a write error is returned as `{ ok: false }`.
40
+ */
41
+ export declare function amendSpecFile(projectRoot: string, specSourcePath: string, mutator: (source: string) => AmendResult): {
42
+ ok: boolean;
43
+ changed: boolean;
44
+ detail: string;
45
+ };
46
+ //# sourceMappingURL=spec-amend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-amend.d.ts","sourceRoot":"","sources":["../../src/jira/spec-amend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAWH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,kBAAkB,GAAG,iBAAiB,CAAC;CACjD;AA2CD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,GACrB,WAAW,CAwCb;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GACpB,WAAW,CAwDb;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,WAAW,GACvC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAuBnD"}
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ /**
3
+ * Spec-file write-side for JIRA reconciliation (REQ-JIRATEAM-005.A4).
4
+ *
5
+ * Two operations, both pure text transforms with a thin fs wrapper:
6
+ * - `applyContentAmendment` rewrites the requirement's title/prose body from
7
+ * an edited-in-JIRA summary/description while preserving the leading
8
+ * frontmatter, the `implementations:` / `verifies:` blocks, and the
9
+ * `## Acceptance` section (never clobbered).
10
+ * - `appendAcceptanceCriterion` inserts a new id-marked bullet under the
11
+ * `## Acceptance` container of the target requirement.
12
+ *
13
+ * The transforms return the amended source bytes; callers persist the file and
14
+ * re-publish so the frontmatter fingerprint refreshes.
15
+ */
16
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ var desc = Object.getOwnPropertyDescriptor(m, k);
19
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
+ desc = { enumerable: true, get: function() { return m[k]; } };
21
+ }
22
+ Object.defineProperty(o, k2, desc);
23
+ }) : (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ o[k2] = m[k];
26
+ }));
27
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29
+ }) : function(o, v) {
30
+ o["default"] = v;
31
+ });
32
+ var __importStar = (this && this.__importStar) || (function () {
33
+ var ownKeys = function(o) {
34
+ ownKeys = Object.getOwnPropertyNames || function (o) {
35
+ var ar = [];
36
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
37
+ return ar;
38
+ };
39
+ return ownKeys(o);
40
+ };
41
+ return function (mod) {
42
+ if (mod && mod.__esModule) return mod;
43
+ var result = {};
44
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
45
+ __setModuleDefault(result, mod);
46
+ return result;
47
+ };
48
+ })();
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.applyContentAmendment = applyContentAmendment;
51
+ exports.appendAcceptanceCriterion = appendAcceptanceCriterion;
52
+ exports.amendSpecFile = amendSpecFile;
53
+ const fs = __importStar(require("fs"));
54
+ const path = __importStar(require("path"));
55
+ const ID_MARKER = /^\s*<!--\s*id\s*:\s*([^\s]+)\s*-->\s*$/;
56
+ const HEADING = /^(#{1,6})\s+(.+?)\s*$/;
57
+ const ACCEPTANCE_CONTAINER = /^##\s+acceptance\s*$/i;
58
+ const IMPL_BLOCK_HEADER = /^implementations:\s*$/;
59
+ const VERIFIES_BLOCK_HEADER = /^verifies:\s*$/;
60
+ /**
61
+ * Find the `<!-- id: reqId -->`-marked heading and return the [start, end)
62
+ * line range of its heading + body (up to but not including the next heading
63
+ * of the same or shallower level, or the next `<!-- id: -->` marker at any
64
+ * level). Returns `null` when the marker doesn't resolve to a heading.
65
+ */
66
+ function findRequirementRange(lines, reqId) {
67
+ let markerIdx = -1;
68
+ for (let i = 0; i < lines.length; i++) {
69
+ const m = (lines[i] ?? '').match(ID_MARKER);
70
+ if (m && m[1] === reqId) {
71
+ markerIdx = i;
72
+ break;
73
+ }
74
+ }
75
+ if (markerIdx === -1)
76
+ return null;
77
+ const headingIdx = markerIdx + 1;
78
+ const headingMatch = (lines[headingIdx] ?? '').match(HEADING);
79
+ if (!headingMatch || !headingMatch[1])
80
+ return null;
81
+ const level = headingMatch[1].length;
82
+ let bodyEnd = lines.length;
83
+ for (let i = headingIdx + 1; i < lines.length; i++) {
84
+ const line = lines[i] ?? '';
85
+ const h = line.match(HEADING);
86
+ if (h && h[1] && h[1].length <= level) {
87
+ bodyEnd = i;
88
+ break;
89
+ }
90
+ if (ID_MARKER.test(line)) {
91
+ bodyEnd = i;
92
+ break;
93
+ }
94
+ }
95
+ return { markerIdx, headingIdx, level, bodyEnd };
96
+ }
97
+ /**
98
+ * Rewrite the requirement's H2 title and its prose paragraph(s) from the
99
+ * edited-in-JIRA summary/description. Preserves the `## Acceptance` container
100
+ * (if present), the `implementations:` and `verifies:` blocks, and every
101
+ * child section. The prose window runs from the line after the heading up to
102
+ * the first of: `## Acceptance`, `implementations:`, `verifies:`, a nested
103
+ * id-marker, or a deeper heading — those all stay intact.
104
+ */
105
+ function applyContentAmendment(source, reqId, newTitle, newDescription) {
106
+ const lines = source.split('\n');
107
+ const range = findRequirementRange(lines, reqId);
108
+ if (!range)
109
+ return { changed: false, source, reason: 'req-id-not-found' };
110
+ const headingLine = lines[range.headingIdx] ?? '';
111
+ const headingHash = '#'.repeat(range.level);
112
+ const oldTitle = headingLine.replace(/^#+\s+/, '').trim();
113
+ // Prose window: from headingIdx+1 up to (but not including) the first
114
+ // structural landmark we must preserve.
115
+ let proseEnd = range.bodyEnd;
116
+ for (let i = range.headingIdx + 1; i < range.bodyEnd; i++) {
117
+ const line = lines[i] ?? '';
118
+ if (ACCEPTANCE_CONTAINER.test(line) ||
119
+ IMPL_BLOCK_HEADER.test(line) ||
120
+ VERIFIES_BLOCK_HEADER.test(line) ||
121
+ HEADING.test(line) ||
122
+ ID_MARKER.test(line)) {
123
+ proseEnd = i;
124
+ break;
125
+ }
126
+ }
127
+ const cleanedDescription = newDescription.replace(/\r\n/g, '\n').trimEnd();
128
+ const cleanedTitle = newTitle.replace(/\r?\n/g, ' ').trim() || oldTitle;
129
+ const newHeading = `${headingHash} ${cleanedTitle}`;
130
+ const nextIsBlank = (lines[proseEnd] ?? '').trim() === '';
131
+ const proseLines = cleanedDescription.length > 0
132
+ ? ['', ...cleanedDescription.split('\n'), ...(nextIsBlank ? [] : [''])]
133
+ : [''];
134
+ const newHead = [newHeading, ...proseLines];
135
+ const before = lines.slice(0, range.headingIdx);
136
+ const after = lines.slice(proseEnd);
137
+ const next = [...before, ...newHead, ...after].join('\n');
138
+ if (next === source)
139
+ return { changed: false, source, reason: 'already-present' };
140
+ return { changed: true, source: next };
141
+ }
142
+ /**
143
+ * Insert `- <!-- id: <criterionId> -->\n- <text>` under the requirement's
144
+ * `## Acceptance` container. Creates the container when absent (appended to
145
+ * the end of the requirement body). Idempotent: if a bullet with the same id
146
+ * already exists, returns unchanged.
147
+ */
148
+ function appendAcceptanceCriterion(source, reqId, criterionId, criterionText) {
149
+ const lines = source.split('\n');
150
+ const range = findRequirementRange(lines, reqId);
151
+ if (!range)
152
+ return { changed: false, source, reason: 'req-id-not-found' };
153
+ // Idempotence: the id already appears anywhere in the file.
154
+ for (const line of lines) {
155
+ const m = line.match(ID_MARKER);
156
+ if (m && m[1] === criterionId) {
157
+ return { changed: false, source, reason: 'already-present' };
158
+ }
159
+ }
160
+ // Locate the acceptance container (if any) inside the requirement body.
161
+ let acceptanceIdx = -1;
162
+ for (let i = range.headingIdx + 1; i < range.bodyEnd; i++) {
163
+ if (ACCEPTANCE_CONTAINER.test(lines[i] ?? '')) {
164
+ acceptanceIdx = i;
165
+ break;
166
+ }
167
+ }
168
+ const marker = `<!-- id: ${criterionId} -->`;
169
+ const bullet = `- ${criterionText.replace(/\s+/g, ' ').trim()}`;
170
+ if (acceptanceIdx === -1) {
171
+ // Create a fresh acceptance section at the end of the body, trimming any
172
+ // trailing blank lines so the new block sits flush.
173
+ let insertAt = range.bodyEnd;
174
+ while (insertAt > range.headingIdx + 1 && (lines[insertAt - 1] ?? '').trim() === '') {
175
+ insertAt--;
176
+ }
177
+ const block = ['', '## Acceptance', marker, bullet];
178
+ if (insertAt < lines.length && (lines[insertAt] ?? '').trim() !== '')
179
+ block.push('');
180
+ lines.splice(insertAt, 0, ...block);
181
+ return { changed: true, source: lines.join('\n') };
182
+ }
183
+ // Append at the end of the acceptance container. The container ends at the
184
+ // first heading of the same-or-shallower level, or the requirement's
185
+ // bodyEnd.
186
+ let acceptEnd = range.bodyEnd;
187
+ for (let i = acceptanceIdx + 1; i < range.bodyEnd; i++) {
188
+ const h = (lines[i] ?? '').match(HEADING);
189
+ if (h && h[1] && h[1].length <= 2) {
190
+ acceptEnd = i;
191
+ break;
192
+ }
193
+ }
194
+ let insertAt = acceptEnd;
195
+ while (insertAt > acceptanceIdx + 1 && (lines[insertAt - 1] ?? '').trim() === '') {
196
+ insertAt--;
197
+ }
198
+ const block = [marker, bullet];
199
+ lines.splice(insertAt, 0, ...block);
200
+ return { changed: true, source: lines.join('\n') };
201
+ }
202
+ /**
203
+ * Fs wrapper: read the spec file, apply `mutator`, and write it back when the
204
+ * result changed. Refuses paths that escape `projectRoot`. Never throws — a
205
+ * malformed spec or a write error is returned as `{ ok: false }`.
206
+ */
207
+ function amendSpecFile(projectRoot, specSourcePath, mutator) {
208
+ try {
209
+ const abs = path.isAbsolute(specSourcePath)
210
+ ? specSourcePath
211
+ : path.join(projectRoot, specSourcePath);
212
+ const rel = path.relative(projectRoot, abs);
213
+ if (rel.startsWith('..') || path.isAbsolute(rel)) {
214
+ return { ok: false, changed: false, detail: `spec source resolves outside project root: ${specSourcePath}` };
215
+ }
216
+ const source = fs.readFileSync(abs, 'utf-8');
217
+ const res = mutator(source);
218
+ if (!res.changed) {
219
+ return {
220
+ ok: res.reason !== 'req-id-not-found',
221
+ changed: false,
222
+ detail: res.reason ?? 'no change',
223
+ };
224
+ }
225
+ fs.writeFileSync(abs, res.source, 'utf-8');
226
+ return { ok: true, changed: true, detail: `amended ${specSourcePath}` };
227
+ }
228
+ catch (err) {
229
+ return { ok: false, changed: false, detail: err instanceof Error ? err.message : String(err) };
230
+ }
231
+ }
232
+ //# sourceMappingURL=spec-amend.js.map