sedd 0.1.9 → 0.1.10

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 (48) hide show
  1. package/README.md +140 -2
  2. package/commands/sedd.board.md +67 -0
  3. package/commands/sedd.clarify.md +23 -0
  4. package/commands/sedd.specify.md +22 -0
  5. package/dist/cli/board.d.ts +9 -0
  6. package/dist/cli/board.d.ts.map +1 -0
  7. package/dist/cli/board.js +211 -0
  8. package/dist/cli/board.js.map +1 -0
  9. package/dist/cli/clarify.d.ts +5 -1
  10. package/dist/cli/clarify.d.ts.map +1 -1
  11. package/dist/cli/clarify.js +52 -8
  12. package/dist/cli/clarify.js.map +1 -1
  13. package/dist/cli/index.js +31 -0
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/cli/setup-github.d.ts +5 -0
  16. package/dist/cli/setup-github.d.ts.map +1 -0
  17. package/dist/cli/setup-github.js +437 -0
  18. package/dist/cli/setup-github.js.map +1 -0
  19. package/dist/cli/specify.d.ts +1 -0
  20. package/dist/cli/specify.d.ts.map +1 -1
  21. package/dist/cli/specify.js +82 -9
  22. package/dist/cli/specify.js.map +1 -1
  23. package/dist/cli/status.d.ts.map +1 -1
  24. package/dist/cli/status.js +31 -0
  25. package/dist/cli/status.js.map +1 -1
  26. package/dist/cli/tasks.d.ts.map +1 -1
  27. package/dist/cli/tasks.js +102 -1
  28. package/dist/cli/tasks.js.map +1 -1
  29. package/dist/cli/update.d.ts.map +1 -1
  30. package/dist/cli/update.js +21 -0
  31. package/dist/cli/update.js.map +1 -1
  32. package/dist/core/board-manager.d.ts +65 -0
  33. package/dist/core/board-manager.d.ts.map +1 -0
  34. package/dist/core/board-manager.js +326 -0
  35. package/dist/core/board-manager.js.map +1 -0
  36. package/dist/index.d.ts +3 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +2 -0
  39. package/dist/index.js.map +1 -1
  40. package/dist/types/index.d.ts +117 -0
  41. package/dist/types/index.d.ts.map +1 -1
  42. package/dist/types/index.js +11 -0
  43. package/dist/types/index.js.map +1 -1
  44. package/dist/utils/github.d.ts +99 -0
  45. package/dist/utils/github.d.ts.map +1 -0
  46. package/dist/utils/github.js +488 -0
  47. package/dist/utils/github.js.map +1 -0
  48. package/package.json +61 -61
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/utils/github.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,GAAG,CAAS;gBAER,GAAG,GAAE,MAAsB;IAIvC,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,QAAQ;IAShB;;OAEG;IACH,KAAK,IAAI,OAAO;IAShB;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;IAU7B;;OAEG;IACH,eAAe,IAAI,OAAO;IAS1B;;OAEG;IACH,WAAW,IAAI,MAAM,GAAG,IAAI;IAS5B;;OAEG;IACH,eAAe,IAAI,OAAO;IAS1B;;OAEG;IACH,qBAAqB,IAAI,kBAAkB,EAAE;IAc7C;;OAEG;IACH,eAAe,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAUzD;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,EAAE;IA4BhD,OAAO,CAAC,eAAe;IAyBvB;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,EAAE;IAkCtD;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAKzD;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAyC3E,OAAO,CAAC,mBAAmB;IA8B3B;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,eAAe,GAAG,IAAI;IAsBnF;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAqBrE,OAAO,CAAC,cAAc;IAetB;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAqB7F;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAmBhD;;OAEG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAsBpD;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IASnC;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAWzD;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAMlF;;;OAGG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;CAuD7D"}
@@ -0,0 +1,488 @@
1
+ import { execSync } from 'node:child_process';
2
+ import { existsSync, mkdirSync } from 'node:fs';
3
+ import { join, extname } from 'node:path';
4
+ export class GitHubOperations {
5
+ cwd;
6
+ constructor(cwd = process.cwd()) {
7
+ this.cwd = cwd;
8
+ }
9
+ exec(cmd) {
10
+ return execSync(cmd, { cwd: this.cwd, encoding: 'utf-8', stdio: 'pipe' }).trim();
11
+ }
12
+ execJson(cmd) {
13
+ try {
14
+ const output = this.exec(cmd);
15
+ return JSON.parse(output);
16
+ }
17
+ catch {
18
+ return null;
19
+ }
20
+ }
21
+ /**
22
+ * Check if gh CLI is installed
23
+ */
24
+ hasGh() {
25
+ try {
26
+ this.exec('gh --version');
27
+ return true;
28
+ }
29
+ catch {
30
+ return false;
31
+ }
32
+ }
33
+ /**
34
+ * Get gh CLI version string
35
+ */
36
+ getGhVersion() {
37
+ try {
38
+ const output = this.exec('gh --version');
39
+ const match = output.match(/gh version ([\d.]+)/);
40
+ return match ? match[1] : null;
41
+ }
42
+ catch {
43
+ return null;
44
+ }
45
+ }
46
+ /**
47
+ * Check if user is authenticated
48
+ */
49
+ isAuthenticated() {
50
+ try {
51
+ this.exec('gh auth status');
52
+ return true;
53
+ }
54
+ catch {
55
+ return false;
56
+ }
57
+ }
58
+ /**
59
+ * Get authenticated username
60
+ */
61
+ getUsername() {
62
+ try {
63
+ const output = this.exec('gh api user --jq .login');
64
+ return output || null;
65
+ }
66
+ catch {
67
+ return null;
68
+ }
69
+ }
70
+ /**
71
+ * Check if the 'project' scope is available
72
+ */
73
+ hasProjectScope() {
74
+ try {
75
+ const output = this.exec('gh auth status');
76
+ return output.includes('project') || output.includes('read:project');
77
+ }
78
+ catch {
79
+ return false;
80
+ }
81
+ }
82
+ /**
83
+ * List organizations the authenticated user belongs to
84
+ */
85
+ listUserOrganizations() {
86
+ try {
87
+ const query = `query { viewer { login organizations(first: 50) { nodes { login name } } } }`;
88
+ const output = this.exec(`gh api graphql -f query='${query}'`);
89
+ const data = JSON.parse(output);
90
+ const nodes = data?.data?.viewer?.organizations?.nodes || [];
91
+ return nodes.map((o) => ({ login: o.login, name: o.name || o.login }));
92
+ }
93
+ catch {
94
+ return [];
95
+ }
96
+ }
97
+ /**
98
+ * Detect owner/repo from git remote
99
+ */
100
+ detectOwnerRepo() {
101
+ try {
102
+ const remote = this.exec('gh repo view --json owner,name');
103
+ const parsed = JSON.parse(remote);
104
+ return { owner: parsed.owner.login, repo: parsed.name };
105
+ }
106
+ catch {
107
+ return null;
108
+ }
109
+ }
110
+ /**
111
+ * List projects for an owner (user or org)
112
+ */
113
+ listProjects(owner) {
114
+ try {
115
+ const query = `query($owner: String!, $first: Int!) {
116
+ user(login: $owner) {
117
+ projectsV2(first: $first) {
118
+ nodes { id number title }
119
+ }
120
+ }
121
+ }`;
122
+ const output = this.exec(`gh api graphql -f query='${query.replace(/\n/g, ' ')}' -F owner="${owner}" -F first=20`);
123
+ const data = JSON.parse(output);
124
+ const nodes = data?.data?.user?.projectsV2?.nodes;
125
+ if (!nodes) {
126
+ // Try as org
127
+ return this.listOrgProjects(owner);
128
+ }
129
+ return nodes.map((n) => ({
130
+ number: n.number,
131
+ id: n.id,
132
+ title: n.title,
133
+ }));
134
+ }
135
+ catch {
136
+ return this.listOrgProjects(owner);
137
+ }
138
+ }
139
+ listOrgProjects(owner) {
140
+ try {
141
+ const query = `query($owner: String!, $first: Int!) {
142
+ organization(login: $owner) {
143
+ projectsV2(first: $first) {
144
+ nodes { id number title }
145
+ }
146
+ }
147
+ }`;
148
+ const output = this.exec(`gh api graphql -f query='${query.replace(/\n/g, ' ')}' -F owner="${owner}" -F first=20`);
149
+ const data = JSON.parse(output);
150
+ const nodes = data?.data?.organization?.projectsV2?.nodes;
151
+ if (!nodes)
152
+ return [];
153
+ return nodes.map((n) => ({
154
+ number: n.number,
155
+ id: n.id,
156
+ title: n.title,
157
+ }));
158
+ }
159
+ catch {
160
+ return [];
161
+ }
162
+ }
163
+ /**
164
+ * Get fields for a project (including Status with options)
165
+ */
166
+ getProjectFields(projectId) {
167
+ try {
168
+ const query = `query($projectId: ID!) {
169
+ node(id: $projectId) {
170
+ ... on ProjectV2 {
171
+ fields(first: 50) {
172
+ nodes {
173
+ ... on ProjectV2Field { id name }
174
+ ... on ProjectV2SingleSelectField {
175
+ id name
176
+ options { id name }
177
+ }
178
+ ... on ProjectV2IterationField { id name }
179
+ }
180
+ }
181
+ }
182
+ }
183
+ }`;
184
+ const output = this.exec(`gh api graphql -f query='${query.replace(/\n/g, ' ')}' -F projectId="${projectId}"`);
185
+ const data = JSON.parse(output);
186
+ const nodes = data?.data?.node?.fields?.nodes;
187
+ if (!nodes)
188
+ return [];
189
+ return nodes.map((n) => ({
190
+ id: n.id,
191
+ name: n.name,
192
+ options: n.options,
193
+ }));
194
+ }
195
+ catch {
196
+ return [];
197
+ }
198
+ }
199
+ /**
200
+ * Get the Status field (single select with column options)
201
+ */
202
+ getStatusField(projectId) {
203
+ const fields = this.getProjectFields(projectId);
204
+ return fields.find(f => f.name === 'Status' && f.options) || null;
205
+ }
206
+ /**
207
+ * List items in a project (issues on the board)
208
+ */
209
+ listProjectItems(owner, projectNumber) {
210
+ try {
211
+ const query = `query($owner: String!, $number: Int!, $first: Int!) {
212
+ user(login: $owner) {
213
+ projectV2(number: $number) {
214
+ items(first: $first) {
215
+ nodes {
216
+ id
217
+ fieldValueByName(name: "Status") {
218
+ ... on ProjectV2ItemFieldSingleSelectValue { name }
219
+ }
220
+ content {
221
+ ... on Issue { number title url }
222
+ ... on DraftIssue { title }
223
+ }
224
+ }
225
+ }
226
+ }
227
+ }
228
+ }`;
229
+ const output = this.exec(`gh api graphql -f query='${query.replace(/\n/g, ' ')}' -F owner="${owner}" -F number=${projectNumber} -F first=100`);
230
+ const data = JSON.parse(output);
231
+ let nodes = data?.data?.user?.projectV2?.items?.nodes;
232
+ if (!nodes) {
233
+ nodes = this.listOrgProjectItems(owner, projectNumber);
234
+ }
235
+ if (!nodes)
236
+ return [];
237
+ return nodes.map((n) => ({
238
+ id: n.id,
239
+ title: n.content?.title || '',
240
+ status: n.fieldValueByName?.name || '',
241
+ issueNumber: n.content?.number,
242
+ issueUrl: n.content?.url,
243
+ }));
244
+ }
245
+ catch {
246
+ return [];
247
+ }
248
+ }
249
+ listOrgProjectItems(owner, projectNumber) {
250
+ try {
251
+ const query = `query($owner: String!, $number: Int!, $first: Int!) {
252
+ organization(login: $owner) {
253
+ projectV2(number: $number) {
254
+ items(first: $first) {
255
+ nodes {
256
+ id
257
+ fieldValueByName(name: "Status") {
258
+ ... on ProjectV2ItemFieldSingleSelectValue { name }
259
+ }
260
+ content {
261
+ ... on Issue { number title url }
262
+ ... on DraftIssue { title }
263
+ }
264
+ }
265
+ }
266
+ }
267
+ }
268
+ }`;
269
+ const output = this.exec(`gh api graphql -f query='${query.replace(/\n/g, ' ')}' -F owner="${owner}" -F number=${projectNumber} -F first=100`);
270
+ const data = JSON.parse(output);
271
+ return data?.data?.organization?.projectV2?.items?.nodes || null;
272
+ }
273
+ catch {
274
+ return null;
275
+ }
276
+ }
277
+ /**
278
+ * Create a GitHub issue
279
+ */
280
+ createIssue(title, body, labels) {
281
+ try {
282
+ const labelArgs = labels && labels.length > 0
283
+ ? labels.map(l => `-l "${l}"`).join(' ')
284
+ : '';
285
+ const output = this.exec(`gh issue create --title "${title.replace(/"/g, '\\"')}" --body "${body.replace(/"/g, '\\"').replace(/\n/g, '\\n')}" ${labelArgs} --json number,url,title,body,state,labels`);
286
+ const parsed = JSON.parse(output);
287
+ return {
288
+ number: parsed.number,
289
+ url: parsed.url,
290
+ title: parsed.title,
291
+ body: parsed.body || '',
292
+ state: parsed.state || 'OPEN',
293
+ labels: (parsed.labels || []).map((l) => l.name || l),
294
+ };
295
+ }
296
+ catch {
297
+ return null;
298
+ }
299
+ }
300
+ /**
301
+ * Add an issue to a project, returns the item ID
302
+ */
303
+ addIssueToProject(projectId, issueUrl) {
304
+ try {
305
+ const query = `mutation($projectId: ID!, $contentId: ID!) {
306
+ addProjectV2ItemById(input: { projectId: $projectId, contentId: $contentId }) {
307
+ item { id }
308
+ }
309
+ }`;
310
+ // First get the issue node ID from the URL
311
+ const issueNodeId = this.getIssueNodeId(issueUrl);
312
+ if (!issueNodeId)
313
+ return null;
314
+ const output = this.exec(`gh api graphql -f query='${query.replace(/\n/g, ' ')}' -F projectId="${projectId}" -F contentId="${issueNodeId}"`);
315
+ const data = JSON.parse(output);
316
+ return data?.data?.addProjectV2ItemById?.item?.id || null;
317
+ }
318
+ catch {
319
+ return null;
320
+ }
321
+ }
322
+ getIssueNodeId(issueUrl) {
323
+ try {
324
+ // Parse URL: https://github.com/owner/repo/issues/42
325
+ const match = issueUrl.match(/github\.com\/([^/]+)\/([^/]+)\/issues\/(\d+)/);
326
+ if (!match)
327
+ return null;
328
+ const [, owner, repo, number] = match;
329
+ const output = this.exec(`gh api repos/${owner}/${repo}/issues/${number} --jq .node_id`);
330
+ return output || null;
331
+ }
332
+ catch {
333
+ return null;
334
+ }
335
+ }
336
+ /**
337
+ * Move an item to a specific column in the project
338
+ */
339
+ moveItem(projectId, itemId, statusFieldId, optionId) {
340
+ try {
341
+ const query = `mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $optionId: String!) {
342
+ updateProjectV2ItemFieldValue(input: {
343
+ projectId: $projectId
344
+ itemId: $itemId
345
+ fieldId: $fieldId
346
+ value: { singleSelectOptionId: $optionId }
347
+ }) {
348
+ projectV2Item { id }
349
+ }
350
+ }`;
351
+ this.exec(`gh api graphql -f query='${query.replace(/\n/g, ' ')}' -F projectId="${projectId}" -F itemId="${itemId}" -F fieldId="${statusFieldId}" -F optionId="${optionId}"`);
352
+ return true;
353
+ }
354
+ catch {
355
+ return false;
356
+ }
357
+ }
358
+ /**
359
+ * Get issue by number
360
+ */
361
+ getIssue(number) {
362
+ try {
363
+ const output = this.exec(`gh issue view ${number} --json number,url,title,body,state,labels`);
364
+ const parsed = JSON.parse(output);
365
+ return {
366
+ number: parsed.number,
367
+ url: parsed.url,
368
+ title: parsed.title,
369
+ body: parsed.body || '',
370
+ state: parsed.state || 'OPEN',
371
+ labels: (parsed.labels || []).map((l) => l.name || l),
372
+ };
373
+ }
374
+ catch {
375
+ return null;
376
+ }
377
+ }
378
+ /**
379
+ * Get issue from full URL
380
+ */
381
+ getIssueFromUrl(url) {
382
+ const match = url.match(/github\.com\/([^/]+)\/([^/]+)\/issues\/(\d+)/);
383
+ if (!match)
384
+ return null;
385
+ const [, owner, repo, number] = match;
386
+ try {
387
+ const output = this.exec(`gh issue view ${number} --repo ${owner}/${repo} --json number,url,title,body,state,labels`);
388
+ const parsed = JSON.parse(output);
389
+ return {
390
+ number: parsed.number,
391
+ url: parsed.url || url,
392
+ title: parsed.title,
393
+ body: parsed.body || '',
394
+ state: parsed.state || 'OPEN',
395
+ labels: (parsed.labels || []).map((l) => l.name || l),
396
+ };
397
+ }
398
+ catch {
399
+ return null;
400
+ }
401
+ }
402
+ /**
403
+ * Close an issue
404
+ */
405
+ closeIssue(number) {
406
+ try {
407
+ this.exec(`gh issue close ${number}`);
408
+ return true;
409
+ }
410
+ catch {
411
+ return false;
412
+ }
413
+ }
414
+ /**
415
+ * Add a comment to an issue
416
+ */
417
+ addIssueComment(number, comment) {
418
+ try {
419
+ this.exec(`gh issue comment ${number} --body "${comment.replace(/"/g, '\\"').replace(/\n/g, '\\n')}"`);
420
+ return true;
421
+ }
422
+ catch {
423
+ return false;
424
+ }
425
+ }
426
+ /**
427
+ * Parse issue URL into components
428
+ */
429
+ parseIssueUrl(url) {
430
+ const match = url.match(/github\.com\/([^/]+)\/([^/]+)\/issues\/(\d+)/);
431
+ if (!match)
432
+ return null;
433
+ return { owner: match[1], repo: match[2], number: parseInt(match[3]) };
434
+ }
435
+ /**
436
+ * Download images referenced in issue body to local assets/ directory.
437
+ * Rewrites markdown image links to relative paths.
438
+ */
439
+ downloadIssueImages(body, targetDir) {
440
+ const imageRegex = /!\[([^\]]*)\]\((https?:\/\/[^)]+)\)/g;
441
+ const imageExtensions = ['.png', '.jpg', '.jpeg', '.gif', '.webp', '.svg'];
442
+ const githubAttachments = 'github.com/user-attachments';
443
+ const matches = [];
444
+ let m;
445
+ while ((m = imageRegex.exec(body)) !== null) {
446
+ const url = m[2];
447
+ const ext = extname(new URL(url).pathname).toLowerCase();
448
+ if (imageExtensions.includes(ext) || url.includes(githubAttachments)) {
449
+ matches.push({ full: m[0], alt: m[1], url });
450
+ }
451
+ }
452
+ if (matches.length === 0)
453
+ return body;
454
+ const assetsDir = join(targetDir, 'assets');
455
+ if (!existsSync(assetsDir)) {
456
+ mkdirSync(assetsDir, { recursive: true });
457
+ }
458
+ let downloaded = 0;
459
+ let result = body;
460
+ for (let i = 0; i < matches.length; i++) {
461
+ const { full, alt, url } = matches[i];
462
+ const urlExt = extname(new URL(url).pathname).toLowerCase();
463
+ const ext = imageExtensions.includes(urlExt) ? urlExt : '.png';
464
+ const filename = `image-${String(i + 1).padStart(3, '0')}${ext}`;
465
+ const filepath = join(assetsDir, filename);
466
+ try {
467
+ execSync(`curl -sL "${url}" -o "${filepath}"`, {
468
+ cwd: this.cwd,
469
+ encoding: 'utf-8',
470
+ stdio: 'pipe',
471
+ timeout: 30000,
472
+ });
473
+ if (existsSync(filepath)) {
474
+ result = result.replace(full, `![${alt}](./assets/${filename})`);
475
+ downloaded++;
476
+ }
477
+ }
478
+ catch {
479
+ // Keep original link on failure
480
+ }
481
+ }
482
+ if (downloaded > 0) {
483
+ console.log(` ✓ Downloaded ${downloaded} image${downloaded > 1 ? 's' : ''} to assets/`);
484
+ }
485
+ return result;
486
+ }
487
+ }
488
+ //# sourceMappingURL=github.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/utils/github.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,61 +1,61 @@
1
- {
2
- "name": "sedd",
3
- "version": "0.1.9",
4
- "description": "SEDD - Spec & Expectation Driven Development. A phase-based specification workflow for AI-assisted development.",
5
- "type": "module",
6
- "main": "dist/index.js",
7
- "types": "dist/index.d.ts",
8
- "bin": {
9
- "sedd": "bin/sedd.js"
10
- },
11
- "files": [
12
- "dist",
13
- "bin",
14
- "templates",
15
- "commands",
16
- "scripts",
17
- "hooks",
18
- "README.md"
19
- ],
20
- "scripts": {
21
- "build": "tsc",
22
- "dev": "tsc --watch",
23
- "typecheck": "tsc --noEmit",
24
- "prepublishOnly": "npm run build"
25
- },
26
- "keywords": [
27
- "specification",
28
- "driven-development",
29
- "ai-coding",
30
- "claude",
31
- "cursor",
32
- "copilot",
33
- "llm",
34
- "workflow",
35
- "cli"
36
- ],
37
- "author": "Kelvin R.C",
38
- "license": "MIT",
39
- "homepage": "https://goldensrazer.github.io/sedd/",
40
- "bugs": {
41
- "url": "https://github.com/goldensrazer/sedd/issues"
42
- },
43
- "repository": {
44
- "type": "git",
45
- "url": "git+https://github.com/goldensrazer/sedd.git"
46
- },
47
- "engines": {
48
- "node": ">=18.0.0"
49
- },
50
- "dependencies": {
51
- "chalk": "^5.3.0",
52
- "commander": "^12.1.0",
53
- "glob": "^10.3.10",
54
- "inquirer": "^9.2.12"
55
- },
56
- "devDependencies": {
57
- "@types/inquirer": "^9.0.7",
58
- "@types/node": "^20.10.0",
59
- "typescript": "^5.5.0"
60
- }
61
- }
1
+ {
2
+ "name": "sedd",
3
+ "version": "0.1.10",
4
+ "description": "SEDD - Spec & Expectation Driven Development. A phase-based specification workflow for AI-assisted development.",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "sedd": "bin/sedd.js"
10
+ },
11
+ "files": [
12
+ "dist",
13
+ "bin",
14
+ "templates",
15
+ "commands",
16
+ "scripts",
17
+ "hooks",
18
+ "README.md"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc",
22
+ "dev": "tsc --watch",
23
+ "typecheck": "tsc --noEmit",
24
+ "prepublishOnly": "npm run build"
25
+ },
26
+ "keywords": [
27
+ "specification",
28
+ "driven-development",
29
+ "ai-coding",
30
+ "claude",
31
+ "cursor",
32
+ "copilot",
33
+ "llm",
34
+ "workflow",
35
+ "cli"
36
+ ],
37
+ "author": "Kelvin R.C",
38
+ "license": "MIT",
39
+ "homepage": "https://goldensrazer.github.io/sedd/",
40
+ "bugs": {
41
+ "url": "https://github.com/goldensrazer/sedd/issues"
42
+ },
43
+ "repository": {
44
+ "type": "git",
45
+ "url": "git+https://github.com/goldensrazer/sedd.git"
46
+ },
47
+ "engines": {
48
+ "node": ">=18.0.0"
49
+ },
50
+ "dependencies": {
51
+ "chalk": "^5.3.0",
52
+ "commander": "^12.1.0",
53
+ "glob": "^10.3.10",
54
+ "inquirer": "^9.2.12"
55
+ },
56
+ "devDependencies": {
57
+ "@types/inquirer": "^9.0.7",
58
+ "@types/node": "^20.10.0",
59
+ "typescript": "^5.5.0"
60
+ }
61
+ }