@sdd-method/sdd-cli 2.3.0 → 2.5.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 (78) hide show
  1. package/dist/author-program.d.ts.map +1 -1
  2. package/dist/author-program.js +2 -0
  3. package/dist/author-program.js.map +1 -1
  4. package/dist/lib/behaviour-store/archive.d.ts +6 -0
  5. package/dist/lib/behaviour-store/archive.d.ts.map +1 -1
  6. package/dist/lib/behaviour-store/archive.js +28 -1
  7. package/dist/lib/behaviour-store/archive.js.map +1 -1
  8. package/dist/lib/behaviour-store/schema.d.ts +22 -0
  9. package/dist/lib/behaviour-store/schema.d.ts.map +1 -0
  10. package/dist/lib/behaviour-store/schema.js +85 -0
  11. package/dist/lib/behaviour-store/schema.js.map +1 -0
  12. package/dist/lib/catalogue/build.d.ts.map +1 -1
  13. package/dist/lib/catalogue/build.js +3 -0
  14. package/dist/lib/catalogue/build.js.map +1 -1
  15. package/dist/lib/catalogue/builders/requirements.d.ts +8 -0
  16. package/dist/lib/catalogue/builders/requirements.d.ts.map +1 -1
  17. package/dist/lib/catalogue/builders/requirements.js +110 -11
  18. package/dist/lib/catalogue/builders/requirements.js.map +1 -1
  19. package/dist/lib/catalogue/canonical-schema.yaml +138 -2
  20. package/dist/lib/catalogue/rubric-coverage-map.yaml +28 -0
  21. package/dist/lib/ci-binding/module.d.ts.map +1 -1
  22. package/dist/lib/ci-binding/module.js +4 -2
  23. package/dist/lib/ci-binding/module.js.map +1 -1
  24. package/dist/lib/init/platform.d.ts.map +1 -1
  25. package/dist/lib/init/platform.js +7 -10
  26. package/dist/lib/init/platform.js.map +1 -1
  27. package/dist/lib/intents/format.d.ts +18 -0
  28. package/dist/lib/intents/format.d.ts.map +1 -0
  29. package/dist/lib/intents/format.js +77 -0
  30. package/dist/lib/intents/format.js.map +1 -0
  31. package/dist/lib/intents/migrate.d.ts +44 -0
  32. package/dist/lib/intents/migrate.d.ts.map +1 -0
  33. package/dist/lib/intents/migrate.js +644 -0
  34. package/dist/lib/intents/migrate.js.map +1 -0
  35. package/dist/lib/repo-kind.d.ts +0 -7
  36. package/dist/lib/repo-kind.d.ts.map +1 -1
  37. package/dist/lib/repo-kind.js +1 -9
  38. package/dist/lib/repo-kind.js.map +1 -1
  39. package/dist/lib/scaffold/archetype-behaviour.d.ts +5 -0
  40. package/dist/lib/scaffold/archetype-behaviour.d.ts.map +1 -1
  41. package/dist/lib/scaffold/archetype-behaviour.js +6 -4
  42. package/dist/lib/scaffold/archetype-behaviour.js.map +1 -1
  43. package/dist/lib/scaffold/behaviour-store.d.ts +10 -0
  44. package/dist/lib/scaffold/behaviour-store.d.ts.map +1 -0
  45. package/dist/lib/scaffold/behaviour-store.js +60 -0
  46. package/dist/lib/scaffold/behaviour-store.js.map +1 -0
  47. package/dist/lib/sync/adr-transitions.d.ts +2 -1
  48. package/dist/lib/sync/adr-transitions.d.ts.map +1 -1
  49. package/dist/lib/sync/adr-transitions.js +4 -2
  50. package/dist/lib/sync/adr-transitions.js.map +1 -1
  51. package/dist/lib/sync/index.d.ts.map +1 -1
  52. package/dist/lib/sync/index.js +32 -5
  53. package/dist/lib/sync/index.js.map +1 -1
  54. package/dist/lib/validate/archetype-citations.d.ts.map +1 -1
  55. package/dist/lib/validate/archetype-citations.js +37 -2
  56. package/dist/lib/validate/archetype-citations.js.map +1 -1
  57. package/dist/lib/validate/behaviour-store.d.ts.map +1 -1
  58. package/dist/lib/validate/behaviour-store.js +137 -6
  59. package/dist/lib/validate/behaviour-store.js.map +1 -1
  60. package/dist/lib/validate/dispatch.d.ts.map +1 -1
  61. package/dist/lib/validate/dispatch.js +7 -0
  62. package/dist/lib/validate/dispatch.js.map +1 -1
  63. package/dist/lib/validate/intents.d.ts +5 -0
  64. package/dist/lib/validate/intents.d.ts.map +1 -0
  65. package/dist/lib/validate/intents.js +76 -0
  66. package/dist/lib/validate/intents.js.map +1 -0
  67. package/dist/maintain-version.json +2 -2
  68. package/dist/verbs/migrate.d.ts.map +1 -1
  69. package/dist/verbs/migrate.js +44 -0
  70. package/dist/verbs/migrate.js.map +1 -1
  71. package/dist/verbs/scaffold.d.ts.map +1 -1
  72. package/dist/verbs/scaffold.js +29 -0
  73. package/dist/verbs/scaffold.js.map +1 -1
  74. package/dist/verify-version.json +2 -2
  75. package/package.json +1 -1
  76. package/scripts/author-version.json +2 -2
  77. package/scripts/maintain-version.json +2 -2
  78. package/scripts/verify-version.json +2 -2
@@ -0,0 +1,77 @@
1
+ // The intent artefact's shape (M-ADR 0227 §4.1), shared by the migration that writes intents and the check
2
+ // that reads them. The section names and header lines are the shipped template's
3
+ // (docs/method/methods/templates/intent-template.md), so a change there is a change here.
4
+ export const INTENT_DIRS = ["content/method/intents", "content/product/intents"];
5
+ export const INTENT_SECTIONS = [
6
+ "Problem",
7
+ "Proposed outcome",
8
+ "Affected users and systems",
9
+ "Constraints",
10
+ "Open questions",
11
+ "Decision to resolve in exploration",
12
+ "ADR requirement",
13
+ "Where it went",
14
+ ];
15
+ /** Header fields of the retired Idea and the idea map: planning state, which belongs in the work item (§4.3). */
16
+ export const PLANNING_FIELDS = [
17
+ "Status",
18
+ "Priority",
19
+ "Blocked by",
20
+ "Enables",
21
+ "Parent Idea",
22
+ "Child Ideas",
23
+ "Idea ID",
24
+ "Epic ID",
25
+ "Theme",
26
+ ];
27
+ /** A "Where it went" line naming a path: "- `<path>` (<sdd-id>; <source>)". */
28
+ export const WHERE_PATH_LINE = /^-\s+`([^`]+)`\s+\(([^;)]+);\s*([^)]+)\)\s*$/;
29
+ /** "## 3. Why Explore This (Revised)" -> "why explore this". */
30
+ export function normaliseHeading(h) {
31
+ return h
32
+ .replace(/^\s*\d+[A-Za-z]?(\.\d+)*\.?\s*/, "")
33
+ .replace(/\((revised|updated)\)\s*$/i, "")
34
+ .trim()
35
+ .toLowerCase();
36
+ }
37
+ export function parseMarkdown(text) {
38
+ const lines = text.split("\n");
39
+ let title = "";
40
+ const fields = new Map();
41
+ const sections = new Map();
42
+ const headings = [];
43
+ let current = null;
44
+ let buf = [];
45
+ const flush = () => {
46
+ if (current !== null) {
47
+ const prev = sections.get(current);
48
+ const body = buf.join("\n").trim();
49
+ sections.set(current, prev ? `${prev}\n\n${body}` : body);
50
+ }
51
+ buf = [];
52
+ };
53
+ for (const line of lines) {
54
+ const h1 = /^#\s+(.+?)\s*$/.exec(line);
55
+ if (h1 && !title && current === null) {
56
+ title = h1[1];
57
+ continue;
58
+ }
59
+ const h2 = /^##\s+(.+?)\s*$/.exec(line);
60
+ if (h2) {
61
+ flush();
62
+ headings.push(h2[1]);
63
+ current = normaliseHeading(h2[1]);
64
+ continue;
65
+ }
66
+ if (current === null) {
67
+ const f = /^\*\*([^*:]+):\*\*\s*(.*?)\s*$/.exec(line);
68
+ if (f)
69
+ fields.set(f[1].trim(), f[2]);
70
+ continue;
71
+ }
72
+ buf.push(line);
73
+ }
74
+ flush();
75
+ return { title, fields, sections, headings };
76
+ }
77
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/lib/intents/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ export interface MigrateIntentsOptions {
2
+ /** Directories holding Idea and Epic Brief files (searched recursively). */
3
+ sources: string[];
4
+ /** SDDs searched for evidence and offered as homes; the first is the home when the evidence names none. */
5
+ sdds: string[];
6
+ /** Directories of plan files: evidence only, never converted. */
7
+ plans: string[];
8
+ /** The idea map, for priority, status and dependency edges. */
9
+ ideaMap?: string;
10
+ /** Where the report, import file and citation table go. */
11
+ out: string;
12
+ write: boolean;
13
+ /** A file naming more distinct request ids than this is an index, not evidence. */
14
+ indexThreshold: number;
15
+ /** A reviewer's home for an id, by SDD id. */
16
+ homes?: Map<string, string>;
17
+ /** A reviewer's status for an id. */
18
+ statuses?: Map<string, "open" | "closed">;
19
+ }
20
+ export interface WorkItem {
21
+ alias: string;
22
+ title: string;
23
+ status: "open" | "closed";
24
+ closed_reason?: string;
25
+ priority?: string;
26
+ intent: {
27
+ sdd: string;
28
+ path: string;
29
+ };
30
+ parent?: string;
31
+ children: string[];
32
+ depends_on: string[];
33
+ labels: string[];
34
+ source_status?: string;
35
+ }
36
+ export interface MigrationResult {
37
+ ids: number;
38
+ written: string[];
39
+ skippedExisting: string[];
40
+ flags: Map<string, string[]>;
41
+ unrecognised: string[];
42
+ }
43
+ export declare function migrateIntents(opts: MigrateIntentsOptions): Promise<MigrationResult>;
44
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/lib/intents/migrate.ts"],"names":[],"mappings":"AAkCA,MAAM,WAAW,qBAAqB;IACpC,4EAA4E;IAC5E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2GAA2G;IAC3G,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,iEAAiE;IACjE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,mFAAmF;IACnF,cAAc,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;CAC3C;AA2BD,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AACD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AA8QD,wBAAsB,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CA0S1F"}