specweave 0.22.13 → 0.22.14

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 (188) hide show
  1. package/.claude-plugin/README.md +2 -2
  2. package/CLAUDE.md +269 -51
  3. package/README.md +33 -10
  4. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.d.ts +1 -1
  5. package/dist/plugins/specweave-github/lib/ThreeLayerSyncManager.js +1 -1
  6. package/dist/plugins/specweave-github/lib/enhanced-github-sync.js +1 -1
  7. package/dist/plugins/specweave-github/lib/enhanced-github-sync.js.map +1 -1
  8. package/dist/plugins/specweave-github/lib/github-spec-content-sync.d.ts.map +1 -1
  9. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js +4 -1
  10. package/dist/plugins/specweave-github/lib/github-spec-content-sync.js.map +1 -1
  11. package/dist/plugins/specweave-github/lib/github-spec-sync.d.ts +1 -1
  12. package/dist/plugins/specweave-github/lib/github-spec-sync.js +1 -1
  13. package/dist/plugins/specweave-github/lib/github-sync-bidirectional.d.ts +9 -0
  14. package/dist/plugins/specweave-github/lib/github-sync-bidirectional.d.ts.map +1 -1
  15. package/dist/plugins/specweave-github/lib/github-sync-bidirectional.js +10 -1
  16. package/dist/plugins/specweave-github/lib/github-sync-bidirectional.js.map +1 -1
  17. package/dist/plugins/specweave-github/lib/progress-comment-builder.js +2 -2
  18. package/dist/plugins/specweave-github/lib/progress-comment-builder.js.map +1 -1
  19. package/dist/plugins/specweave-github/lib/types.d.ts +1 -1
  20. package/dist/src/cli/commands/init.d.ts.map +1 -1
  21. package/dist/src/cli/commands/init.js +313 -1
  22. package/dist/src/cli/commands/init.js.map +1 -1
  23. package/dist/src/cli/helpers/issue-tracker/index.d.ts.map +1 -1
  24. package/dist/src/cli/helpers/issue-tracker/index.js +41 -24
  25. package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
  26. package/dist/src/config/import-config.d.ts +69 -0
  27. package/dist/src/config/import-config.d.ts.map +1 -0
  28. package/dist/src/config/import-config.js +136 -0
  29. package/dist/src/config/import-config.js.map +1 -0
  30. package/dist/src/config/types.d.ts +10 -10
  31. package/dist/src/core/living-docs/living-docs-sync.d.ts +2 -0
  32. package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
  33. package/dist/src/core/living-docs/living-docs-sync.js +10 -1
  34. package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
  35. package/dist/src/core/living-docs/task-project-specific-generator.d.ts +2 -2
  36. package/dist/src/core/living-docs/task-project-specific-generator.js +2 -2
  37. package/dist/src/core/repo-structure/prompt-consolidator.d.ts +2 -2
  38. package/dist/src/core/repo-structure/prompt-consolidator.d.ts.map +1 -1
  39. package/dist/src/core/repo-structure/prompt-consolidator.js +3 -15
  40. package/dist/src/core/repo-structure/prompt-consolidator.js.map +1 -1
  41. package/dist/src/core/repo-structure/repo-structure-manager.d.ts +1 -1
  42. package/dist/src/core/repo-structure/repo-structure-manager.d.ts.map +1 -1
  43. package/dist/src/core/repo-structure/repo-structure-manager.js +3 -6
  44. package/dist/src/core/repo-structure/repo-structure-manager.js.map +1 -1
  45. package/dist/src/core/spec-content-sync.d.ts +4 -1
  46. package/dist/src/core/spec-content-sync.d.ts.map +1 -1
  47. package/dist/src/core/spec-content-sync.js +139 -4
  48. package/dist/src/core/spec-content-sync.js.map +1 -1
  49. package/dist/src/core/spec-task-mapper.d.ts.map +1 -1
  50. package/dist/src/core/spec-task-mapper.js +9 -8
  51. package/dist/src/core/spec-task-mapper.js.map +1 -1
  52. package/dist/src/core/status-line-validator.d.ts +63 -0
  53. package/dist/src/core/status-line-validator.d.ts.map +1 -0
  54. package/dist/src/core/status-line-validator.js +253 -0
  55. package/dist/src/core/status-line-validator.js.map +1 -0
  56. package/dist/src/core/sync/bidirectional-engine.d.ts +10 -1
  57. package/dist/src/core/sync/bidirectional-engine.d.ts.map +1 -1
  58. package/dist/src/core/sync/bidirectional-engine.js +10 -1
  59. package/dist/src/core/sync/bidirectional-engine.js.map +1 -1
  60. package/dist/src/core/sync/profile-manager.d.ts.map +1 -1
  61. package/dist/src/core/sync/profile-manager.js +3 -0
  62. package/dist/src/core/sync/profile-manager.js.map +1 -1
  63. package/dist/src/core/sync/project-context.d.ts.map +1 -1
  64. package/dist/src/core/sync/project-context.js +3 -0
  65. package/dist/src/core/sync/project-context.js.map +1 -1
  66. package/dist/src/core/sync/status-sync-engine.d.ts +1 -1
  67. package/dist/src/core/sync/status-sync-engine.js +1 -1
  68. package/dist/src/core/types/origin-metadata.d.ts +153 -0
  69. package/dist/src/core/types/origin-metadata.d.ts.map +1 -0
  70. package/dist/src/core/types/origin-metadata.js +166 -0
  71. package/dist/src/core/types/origin-metadata.js.map +1 -0
  72. package/dist/src/core/types/sync-profile.d.ts +8 -2
  73. package/dist/src/core/types/sync-profile.d.ts.map +1 -1
  74. package/dist/src/core/types/sync-profile.js.map +1 -1
  75. package/dist/src/core/types/sync-settings.d.ts +73 -0
  76. package/dist/src/core/types/sync-settings.d.ts.map +1 -0
  77. package/dist/src/core/types/sync-settings.js +90 -0
  78. package/dist/src/core/types/sync-settings.js.map +1 -0
  79. package/dist/src/core/utils/permission-checker.d.ts +100 -0
  80. package/dist/src/core/utils/permission-checker.d.ts.map +1 -0
  81. package/dist/src/core/utils/permission-checker.js +166 -0
  82. package/dist/src/core/utils/permission-checker.js.map +1 -0
  83. package/dist/src/generators/spec/spec-parser.js +3 -3
  84. package/dist/src/generators/spec/spec-parser.js.map +1 -1
  85. package/dist/src/generators/spec/task-parser.js +4 -4
  86. package/dist/src/generators/spec/task-parser.js.map +1 -1
  87. package/dist/src/id-generators/task-id-generator.d.ts +96 -0
  88. package/dist/src/id-generators/task-id-generator.d.ts.map +1 -0
  89. package/dist/src/id-generators/task-id-generator.js +143 -0
  90. package/dist/src/id-generators/task-id-generator.js.map +1 -0
  91. package/dist/src/id-generators/us-id-generator.d.ts +96 -0
  92. package/dist/src/id-generators/us-id-generator.d.ts.map +1 -0
  93. package/dist/src/id-generators/us-id-generator.js +143 -0
  94. package/dist/src/id-generators/us-id-generator.js.map +1 -0
  95. package/dist/src/importers/ado-importer.d.ts +43 -0
  96. package/dist/src/importers/ado-importer.d.ts.map +1 -0
  97. package/dist/src/importers/ado-importer.js +234 -0
  98. package/dist/src/importers/ado-importer.js.map +1 -0
  99. package/dist/src/importers/external-importer.d.ts +96 -0
  100. package/dist/src/importers/external-importer.d.ts.map +1 -0
  101. package/dist/src/importers/external-importer.js +13 -0
  102. package/dist/src/importers/external-importer.js.map +1 -0
  103. package/dist/src/importers/github-importer.d.ts +37 -0
  104. package/dist/src/importers/github-importer.d.ts.map +1 -0
  105. package/dist/src/importers/github-importer.js +161 -0
  106. package/dist/src/importers/github-importer.js.map +1 -0
  107. package/dist/src/importers/import-coordinator.d.ts +90 -0
  108. package/dist/src/importers/import-coordinator.d.ts.map +1 -0
  109. package/dist/src/importers/import-coordinator.js +182 -0
  110. package/dist/src/importers/import-coordinator.js.map +1 -0
  111. package/dist/src/importers/item-converter.d.ts +91 -0
  112. package/dist/src/importers/item-converter.d.ts.map +1 -0
  113. package/dist/src/importers/item-converter.js +221 -0
  114. package/dist/src/importers/item-converter.js.map +1 -0
  115. package/dist/src/importers/jira-importer.d.ts +42 -0
  116. package/dist/src/importers/jira-importer.d.ts.map +1 -0
  117. package/dist/src/importers/jira-importer.js +221 -0
  118. package/dist/src/importers/jira-importer.js.map +1 -0
  119. package/dist/src/init/repo/types.d.ts +2 -2
  120. package/dist/src/integrations/jira/jira-mapper.d.ts +1 -1
  121. package/dist/src/integrations/jira/jira-mapper.js +1 -1
  122. package/dist/src/living-docs/fs-id-allocator.d.ts +149 -0
  123. package/dist/src/living-docs/fs-id-allocator.d.ts.map +1 -0
  124. package/dist/src/living-docs/fs-id-allocator.js +325 -0
  125. package/dist/src/living-docs/fs-id-allocator.js.map +1 -0
  126. package/dist/src/living-docs/id-registry.d.ts +124 -0
  127. package/dist/src/living-docs/id-registry.d.ts.map +1 -0
  128. package/dist/src/living-docs/id-registry.js +230 -0
  129. package/dist/src/living-docs/id-registry.js.map +1 -0
  130. package/dist/src/progress/us-progress-tracker.d.ts +68 -0
  131. package/dist/src/progress/us-progress-tracker.d.ts.map +1 -0
  132. package/dist/src/progress/us-progress-tracker.js +120 -0
  133. package/dist/src/progress/us-progress-tracker.js.map +1 -0
  134. package/package.json +1 -1
  135. package/plugins/specweave/.claude-plugin/plugin.json +16 -2
  136. package/plugins/specweave/agents/architect/AGENT.md +11 -2
  137. package/plugins/specweave/agents/test-aware-planner/AGENT.md +81 -25
  138. package/plugins/specweave/commands/specweave-import-docs.md +278 -88
  139. package/plugins/specweave/commands/specweave-progress.md +45 -97
  140. package/plugins/specweave/hooks/post-increment-completion.sh +168 -26
  141. package/plugins/specweave/hooks/post-increment-planning.sh +148 -4
  142. package/plugins/specweave/hooks/post-task-completion.sh +64 -4
  143. package/plugins/specweave/lib/hooks/sync-cache.js +294 -0
  144. package/plugins/specweave/lib/hooks/sync-living-docs.js +32 -1
  145. package/plugins/specweave/lib/hooks/sync-us-tasks.js +23 -13
  146. package/plugins/specweave-ado/.claude-plugin/plugin.json +1 -1
  147. package/plugins/specweave-ado/lib/conflict-resolver.ts +1 -1
  148. package/plugins/specweave-alternatives/.claude-plugin/plugin.json +1 -1
  149. package/plugins/specweave-backend/.claude-plugin/plugin.json +1 -1
  150. package/plugins/specweave-confluent/.claude-plugin/plugin.json +1 -1
  151. package/plugins/specweave-cost-optimizer/.claude-plugin/plugin.json +1 -1
  152. package/plugins/specweave-diagrams/.claude-plugin/plugin.json +1 -1
  153. package/plugins/specweave-docs/.claude-plugin/plugin.json +1 -1
  154. package/plugins/specweave-docs-preview/.claude-plugin/plugin.json +1 -1
  155. package/plugins/specweave-figma/.claude-plugin/plugin.json +1 -1
  156. package/plugins/specweave-frontend/.claude-plugin/plugin.json +1 -1
  157. package/plugins/specweave-github/.claude-plugin/plugin.json +1 -1
  158. package/plugins/specweave-github/hooks/post-task-completion.sh +37 -22
  159. package/plugins/specweave-github/lib/ThreeLayerSyncManager.ts +1 -1
  160. package/plugins/specweave-github/lib/enhanced-github-sync.js +1 -1
  161. package/plugins/specweave-github/lib/enhanced-github-sync.ts +1 -1
  162. package/plugins/specweave-github/lib/github-spec-content-sync.js +2 -1
  163. package/plugins/specweave-github/lib/github-spec-content-sync.ts +4 -1
  164. package/plugins/specweave-github/lib/github-spec-sync.js +1 -1
  165. package/plugins/specweave-github/lib/github-spec-sync.ts +1 -1
  166. package/plugins/specweave-github/lib/github-sync-bidirectional.js +1 -1
  167. package/plugins/specweave-github/lib/github-sync-bidirectional.ts +10 -1
  168. package/plugins/specweave-github/lib/progress-comment-builder.js +1 -1
  169. package/plugins/specweave-github/lib/progress-comment-builder.ts +2 -2
  170. package/plugins/specweave-github/lib/types.ts +1 -1
  171. package/plugins/specweave-infrastructure/.claude-plugin/plugin.json +1 -1
  172. package/plugins/specweave-jira/.claude-plugin/plugin.json +1 -1
  173. package/plugins/specweave-kafka/.claude-plugin/plugin.json +1 -1
  174. package/plugins/specweave-kafka-streams/.claude-plugin/plugin.json +1 -1
  175. package/plugins/specweave-kubernetes/.claude-plugin/plugin.json +1 -1
  176. package/plugins/specweave-ml/.claude-plugin/plugin.json +1 -1
  177. package/plugins/specweave-mobile/.claude-plugin/plugin.json +1 -1
  178. package/plugins/specweave-n8n/.claude-plugin/plugin.json +1 -1
  179. package/plugins/specweave-payments/.claude-plugin/plugin.json +1 -1
  180. package/plugins/specweave-release/.claude-plugin/plugin.json +1 -1
  181. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +252 -0
  182. package/plugins/specweave-testing/.claude-plugin/plugin.json +1 -1
  183. package/plugins/specweave-tooling/.claude-plugin/plugin.json +1 -1
  184. package/plugins/specweave-ui/.claude-plugin/plugin.json +1 -1
  185. package/src/templates/.env.example +5 -0
  186. package/src/templates/config-permissions-guide.md +413 -0
  187. package/src/templates/config.json.template +68 -0
  188. package/src/templates/tasks.md.template +180 -201
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Origin Metadata Types
3
+ *
4
+ * Defines types for tracking the origin of User Stories and Tasks:
5
+ * - Internal: Created within SpecWeave increments
6
+ * - External: Imported from external tools (GitHub, JIRA, ADO)
7
+ */
8
+ export type Origin = 'internal' | 'external';
9
+ export type ExternalSource = 'github' | 'jira' | 'ado' | 'unknown';
10
+ /**
11
+ * External item metadata (stored in spec.md/tasks.md frontmatter)
12
+ */
13
+ export interface ExternalItemMetadata {
14
+ /** User Story or Task ID (e.g., "US-004E", "T-010E") */
15
+ id: string;
16
+ /** Origin type */
17
+ origin: 'external';
18
+ /** External tool source */
19
+ source: ExternalSource;
20
+ /** External ID in source system (e.g., "GH-#638", "JIRA-SPEC-789") */
21
+ external_id: string;
22
+ /** External URL (link to original item) */
23
+ external_url: string;
24
+ /** Timestamp when imported */
25
+ imported_at: string;
26
+ /** External title (original, may differ from SpecWeave format) */
27
+ external_title?: string;
28
+ /** Format preservation flag (if true, preserve original title/description) */
29
+ format_preservation?: boolean;
30
+ }
31
+ /**
32
+ * Extended spec frontmatter with external items
33
+ */
34
+ export interface SpecFrontmatter {
35
+ increment: string;
36
+ title: string;
37
+ type: string;
38
+ priority?: string;
39
+ status?: string;
40
+ created?: string;
41
+ epic?: string;
42
+ test_mode?: string;
43
+ coverage_target?: number;
44
+ /** External items imported into this increment */
45
+ external_items?: ExternalItemMetadata[];
46
+ }
47
+ /**
48
+ * Extended task frontmatter with external items
49
+ */
50
+ export interface TasksFrontmatter {
51
+ total_tasks: number;
52
+ completed: number;
53
+ by_user_story?: Record<string, number>;
54
+ test_mode?: string;
55
+ coverage_target?: number;
56
+ /** External items imported into tasks */
57
+ external_items?: ExternalItemMetadata[];
58
+ }
59
+ /**
60
+ * Origin badge emojis for living docs
61
+ */
62
+ export declare const ORIGIN_BADGES: Record<ExternalSource | 'internal', string>;
63
+ /**
64
+ * Get origin badge for display
65
+ *
66
+ * @param source - External source or 'internal'
67
+ * @returns Emoji badge
68
+ *
69
+ * @example
70
+ * getOriginBadge('github') // Returns: '🔗'
71
+ * getOriginBadge('internal') // Returns: '🏠'
72
+ */
73
+ export declare function getOriginBadge(source: ExternalSource | 'internal'): string;
74
+ /**
75
+ * Format origin for display in living docs
76
+ *
77
+ * @param metadata - External item metadata
78
+ * @returns Formatted origin string (e.g., "🔗 GitHub #638")
79
+ *
80
+ * @example
81
+ * formatOrigin({
82
+ * id: 'US-004E',
83
+ * origin: 'external',
84
+ * source: 'github',
85
+ * external_id: 'GH-#638',
86
+ * external_url: 'https://github.com/...',
87
+ * imported_at: '2025-11-19T10:30:00Z'
88
+ * })
89
+ * // Returns: "🔗 [GitHub #638](https://github.com/...)"
90
+ */
91
+ export declare function formatOrigin(metadata: ExternalItemMetadata): string;
92
+ /**
93
+ * Check if ID is from external source (has E suffix)
94
+ *
95
+ * @param id - User Story or Task ID
96
+ * @returns True if external, false if internal
97
+ *
98
+ * @example
99
+ * isExternalId('US-004E') // Returns: true
100
+ * isExternalId('US-003') // Returns: false
101
+ * isExternalId('T-010E') // Returns: true
102
+ */
103
+ export declare function isExternalId(id: string): boolean;
104
+ /**
105
+ * Extract origin from ID suffix
106
+ *
107
+ * @param id - User Story or Task ID
108
+ * @returns Origin type
109
+ *
110
+ * @example
111
+ * getOriginFromId('US-004E') // Returns: 'external'
112
+ * getOriginFromId('US-003') // Returns: 'internal'
113
+ */
114
+ export declare function getOriginFromId(id: string): Origin;
115
+ /**
116
+ * Parse external ID to extract source and number
117
+ *
118
+ * @param externalId - External ID (e.g., "GH-#638", "JIRA-SPEC-789")
119
+ * @returns Parsed components
120
+ *
121
+ * @example
122
+ * parseExternalId('GH-#638')
123
+ * // Returns: { source: 'github', number: '638' }
124
+ *
125
+ * parseExternalId('JIRA-SPEC-789')
126
+ * // Returns: { source: 'jira', number: 'SPEC-789' }
127
+ */
128
+ export declare function parseExternalId(externalId: string): {
129
+ source: ExternalSource;
130
+ number: string;
131
+ } | null;
132
+ /**
133
+ * Create external item metadata
134
+ *
135
+ * @param params - Creation parameters
136
+ * @returns External item metadata
137
+ */
138
+ export declare function createExternalMetadata(params: {
139
+ id: string;
140
+ source: ExternalSource;
141
+ externalId: string;
142
+ externalUrl: string;
143
+ externalTitle?: string;
144
+ formatPreservation?: boolean;
145
+ }): ExternalItemMetadata;
146
+ /**
147
+ * Validate external item metadata
148
+ *
149
+ * @param metadata - External item metadata
150
+ * @throws Error if metadata is invalid
151
+ */
152
+ export declare function validateExternalMetadata(metadata: ExternalItemMetadata): void;
153
+ //# sourceMappingURL=origin-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"origin-metadata.d.ts","sourceRoot":"","sources":["../../../../src/core/types/origin-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;AAE7C,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAC;IAEX,kBAAkB;IAClB,MAAM,EAAE,UAAU,CAAC;IAEnB,2BAA2B;IAC3B,MAAM,EAAE,cAAc,CAAC;IAEvB,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;IAEpB,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;IAErB,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IAEpB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,8EAA8E;IAC9E,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,kDAAkD;IAClD,cAAc,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,yCAAyC;IACzC,cAAc,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACzC;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,cAAc,GAAG,UAAU,EAAE,MAAM,CAMrE,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU,GAAG,MAAM,CAE1E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAKnE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG;IACnD,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,IAAI,CAiBP;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,GAAG,oBAAoB,CAoBvB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAkC7E"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Origin Metadata Types
3
+ *
4
+ * Defines types for tracking the origin of User Stories and Tasks:
5
+ * - Internal: Created within SpecWeave increments
6
+ * - External: Imported from external tools (GitHub, JIRA, ADO)
7
+ */
8
+ /**
9
+ * Origin badge emojis for living docs
10
+ */
11
+ export const ORIGIN_BADGES = {
12
+ internal: '🏠', // Internal
13
+ github: '🔗', // GitHub
14
+ jira: '🎫', // JIRA
15
+ ado: '📋', // Azure DevOps
16
+ unknown: '❓' // Unknown external source
17
+ };
18
+ /**
19
+ * Get origin badge for display
20
+ *
21
+ * @param source - External source or 'internal'
22
+ * @returns Emoji badge
23
+ *
24
+ * @example
25
+ * getOriginBadge('github') // Returns: '🔗'
26
+ * getOriginBadge('internal') // Returns: '🏠'
27
+ */
28
+ export function getOriginBadge(source) {
29
+ return ORIGIN_BADGES[source] || ORIGIN_BADGES.unknown;
30
+ }
31
+ /**
32
+ * Format origin for display in living docs
33
+ *
34
+ * @param metadata - External item metadata
35
+ * @returns Formatted origin string (e.g., "🔗 GitHub #638")
36
+ *
37
+ * @example
38
+ * formatOrigin({
39
+ * id: 'US-004E',
40
+ * origin: 'external',
41
+ * source: 'github',
42
+ * external_id: 'GH-#638',
43
+ * external_url: 'https://github.com/...',
44
+ * imported_at: '2025-11-19T10:30:00Z'
45
+ * })
46
+ * // Returns: "🔗 [GitHub #638](https://github.com/...)"
47
+ */
48
+ export function formatOrigin(metadata) {
49
+ const badge = getOriginBadge(metadata.source);
50
+ const displayId = metadata.external_id.replace(/^(GH|JIRA|ADO)-/, '');
51
+ return `${badge} [${metadata.source.toUpperCase()} ${displayId}](${metadata.external_url})`;
52
+ }
53
+ /**
54
+ * Check if ID is from external source (has E suffix)
55
+ *
56
+ * @param id - User Story or Task ID
57
+ * @returns True if external, false if internal
58
+ *
59
+ * @example
60
+ * isExternalId('US-004E') // Returns: true
61
+ * isExternalId('US-003') // Returns: false
62
+ * isExternalId('T-010E') // Returns: true
63
+ */
64
+ export function isExternalId(id) {
65
+ return id.endsWith('E');
66
+ }
67
+ /**
68
+ * Extract origin from ID suffix
69
+ *
70
+ * @param id - User Story or Task ID
71
+ * @returns Origin type
72
+ *
73
+ * @example
74
+ * getOriginFromId('US-004E') // Returns: 'external'
75
+ * getOriginFromId('US-003') // Returns: 'internal'
76
+ */
77
+ export function getOriginFromId(id) {
78
+ return isExternalId(id) ? 'external' : 'internal';
79
+ }
80
+ /**
81
+ * Parse external ID to extract source and number
82
+ *
83
+ * @param externalId - External ID (e.g., "GH-#638", "JIRA-SPEC-789")
84
+ * @returns Parsed components
85
+ *
86
+ * @example
87
+ * parseExternalId('GH-#638')
88
+ * // Returns: { source: 'github', number: '638' }
89
+ *
90
+ * parseExternalId('JIRA-SPEC-789')
91
+ * // Returns: { source: 'jira', number: 'SPEC-789' }
92
+ */
93
+ export function parseExternalId(externalId) {
94
+ const ghMatch = externalId.match(/^GH-#?(\d+)$/);
95
+ if (ghMatch) {
96
+ return { source: 'github', number: ghMatch[1] };
97
+ }
98
+ const jiraMatch = externalId.match(/^JIRA-(.+)$/);
99
+ if (jiraMatch) {
100
+ return { source: 'jira', number: jiraMatch[1] };
101
+ }
102
+ const adoMatch = externalId.match(/^ADO-(\d+)$/);
103
+ if (adoMatch) {
104
+ return { source: 'ado', number: adoMatch[1] };
105
+ }
106
+ return null;
107
+ }
108
+ /**
109
+ * Create external item metadata
110
+ *
111
+ * @param params - Creation parameters
112
+ * @returns External item metadata
113
+ */
114
+ export function createExternalMetadata(params) {
115
+ const metadata = {
116
+ id: params.id,
117
+ origin: 'external',
118
+ source: params.source,
119
+ external_id: params.externalId,
120
+ external_url: params.externalUrl,
121
+ imported_at: new Date().toISOString()
122
+ };
123
+ // Only include optional fields if explicitly provided
124
+ if (params.externalTitle !== undefined) {
125
+ metadata.external_title = params.externalTitle;
126
+ }
127
+ if (params.formatPreservation !== undefined) {
128
+ metadata.format_preservation = params.formatPreservation;
129
+ }
130
+ return metadata;
131
+ }
132
+ /**
133
+ * Validate external item metadata
134
+ *
135
+ * @param metadata - External item metadata
136
+ * @throws Error if metadata is invalid
137
+ */
138
+ export function validateExternalMetadata(metadata) {
139
+ if (!metadata.id) {
140
+ throw new Error('External item metadata must have id');
141
+ }
142
+ if (!metadata.id.endsWith('E')) {
143
+ throw new Error(`External item ID must end with E suffix: ${metadata.id}`);
144
+ }
145
+ if (metadata.origin !== 'external') {
146
+ throw new Error(`External item must have origin='external': ${metadata.id}`);
147
+ }
148
+ if (!['github', 'jira', 'ado', 'unknown'].includes(metadata.source)) {
149
+ throw new Error(`Invalid external source: ${metadata.source}`);
150
+ }
151
+ if (!metadata.external_id) {
152
+ throw new Error(`External item must have external_id: ${metadata.id}`);
153
+ }
154
+ if (!metadata.external_url) {
155
+ throw new Error(`External item must have external_url: ${metadata.id}`);
156
+ }
157
+ if (!metadata.imported_at) {
158
+ throw new Error(`External item must have imported_at: ${metadata.id}`);
159
+ }
160
+ // Validate ISO 8601 format
161
+ const timestamp = new Date(metadata.imported_at);
162
+ if (isNaN(timestamp.getTime())) {
163
+ throw new Error(`Invalid imported_at timestamp: ${metadata.imported_at}`);
164
+ }
165
+ }
166
+ //# sourceMappingURL=origin-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"origin-metadata.js","sourceRoot":"","sources":["../../../../src/core/types/origin-metadata.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  * Supports multiple projects per provider (GitHub, JIRA, ADO, etc.)
5
5
  * with time range filtering and rate limiting protection.
6
6
  */
7
+ import { SyncSettings } from './sync-settings.js';
7
8
  export type SyncProvider = 'github' | 'jira' | 'ado';
8
9
  /**
9
10
  * Sync Strategy (v0.13.0+ - Simplified Two-Tier Architecture)
@@ -310,8 +311,13 @@ export interface SyncConfiguration {
310
311
  profiles: Record<string, SyncProfile>;
311
312
  /** Project contexts */
312
313
  projects?: Record<string, ProjectContext>;
313
- /** Global settings */
314
- settings?: {
314
+ /**
315
+ * Global settings (v0.24.0+ - Three-Permission Architecture)
316
+ *
317
+ * Combines external tool permissions (SyncSettings) with global behavior settings.
318
+ * All permission settings default to false for safety (explicit opt-in required).
319
+ */
320
+ settings?: SyncSettings & {
315
321
  /** Auto-detect project from increment description */
316
322
  autoDetectProject?: boolean;
317
323
  /** Default time range for new syncs */
@@ -1 +1 @@
1
- {"version":3,"file":"sync-profile.d.ts","sourceRoot":"","sources":["../../../../src/core/types/sync-profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-profile.d.ts","sourceRoot":"","sources":["../../../../src/core/types/sync-profile.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sync-profile.js","sourceRoot":"","sources":["../../../../src/core/types/sync-profile.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAufH,+EAA+E;AAC/E,+CAA+C;AAC/C,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAoB;IACxD,6EAA6E;IAC7E,IAAI,CAAC,OAAO,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,OAAO,CAAC,QAAQ,KAAK,aAAa,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAoB;IACnD,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAoB;IACzD,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAoB;IACxD,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAkB;IACxD,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAoB;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAA8B,CAAC;IAExD,mDAAmD;IACnD,IAAI,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvC,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO,QAAwB,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAoB;IACnD,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"sync-profile.js","sourceRoot":"","sources":["../../../../src/core/types/sync-profile.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA8fH,+EAA+E;AAC/E,+CAA+C;AAC/C,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAoB;IACxD,6EAA6E;IAC7E,IAAI,CAAC,OAAO,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,OAAO,CAAC,QAAQ,KAAK,aAAa,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAoB;IACnD,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAoB;IACzD,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAoB;IACxD,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAkB;IACxD,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAoB;IACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAA8B,CAAC;IAExD,mDAAmD;IACnD,IAAI,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvC,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO,QAAwB,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAoB;IACnD,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Sync Settings - Controls what SpecWeave can modify in external tools
3
+ *
4
+ * These settings determine how Living Docs sync with external tools (GitHub, JIRA, ADO).
5
+ * All settings default to false for safety (explicit opt-in required).
6
+ *
7
+ * Storage: .specweave/config.json under sync.settings
8
+ */
9
+ /**
10
+ * Three independent permission flags for external tool sync
11
+ */
12
+ export interface SyncSettings {
13
+ /**
14
+ * Q1: Can SpecWeave CREATE and UPDATE internal work items in external tools?
15
+ *
16
+ * UPSERT = CREATE initially + UPDATE as work progresses
17
+ * - Controls: Title, Description/Body, Acceptance Criteria for INTERNAL items
18
+ * - Flow: increment → living spec → CREATE external item → UPDATE on task completion
19
+ * - If false: Stops before external item creation (local-only workflow)
20
+ *
21
+ * @default false (safer, no external items created)
22
+ */
23
+ canUpsertInternalItems: boolean;
24
+ /**
25
+ * Q2: Can SpecWeave UPDATE work items created externally?
26
+ *
27
+ * UPDATE = Full content updates (title, description, ACs, tasks, comments)
28
+ * - Controls: FULL content updates of EXTERNAL items
29
+ * - Flow: increment progress → living spec → UPDATE external tool (full sync)
30
+ * - If false: External items remain read-only snapshots (no sync back)
31
+ *
32
+ * @default false (safer, external items remain read-only)
33
+ */
34
+ canUpdateExternalItems: boolean;
35
+ /**
36
+ * Q3: Can SpecWeave UPDATE status of work items?
37
+ *
38
+ * STATUS = Status field ONLY (for BOTH internal AND external items)
39
+ * - Controls: Status field updates after all ACs/tasks complete
40
+ * - Flow: Both flows (internal and external items)
41
+ * - If false: No status updates regardless of item origin (manual status management)
42
+ *
43
+ * @default false (safer, status updated manually in external tool)
44
+ */
45
+ canUpdateStatus: boolean;
46
+ }
47
+ /**
48
+ * Default sync settings (all permissions disabled for safety)
49
+ */
50
+ export declare const DEFAULT_SYNC_SETTINGS: SyncSettings;
51
+ /**
52
+ * Type guard to check if an object is valid SyncSettings
53
+ */
54
+ export declare function isValidSyncSettings(obj: any): obj is SyncSettings;
55
+ /**
56
+ * Migrate old syncDirection to new SyncSettings
57
+ *
58
+ * @param syncDirection - Old syncDirection value ('bidirectional' | 'export' | 'import' | 'to-external' | 'from-external' | undefined)
59
+ * @returns SyncSettings with appropriate permissions
60
+ */
61
+ export declare function migrateSyncDirection(syncDirection?: string | null): SyncSettings;
62
+ /**
63
+ * Validate SyncSettings object
64
+ *
65
+ * @param settings - Settings to validate
66
+ * @throws Error if settings are invalid
67
+ */
68
+ export declare function validateSyncSettings(settings: SyncSettings): void;
69
+ /**
70
+ * Merge user-provided settings with defaults (fill in missing fields)
71
+ */
72
+ export declare function mergeSyncSettings(userSettings: Partial<SyncSettings> | undefined): SyncSettings;
73
+ //# sourceMappingURL=sync-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-settings.d.ts","sourceRoot":"","sources":["../../../../src/core/types/sync-settings.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;;;OASG;IACH,sBAAsB,EAAE,OAAO,CAAC;IAEhC;;;;;;;;;OASG;IACH,sBAAsB,EAAE,OAAO,CAAC;IAEhC;;;;;;;;;OASG;IACH,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAInC,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,YAAY,CAQjE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,CA8BhF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAgBjE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,SAAS,GAC9C,YAAY,CAKd"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Sync Settings - Controls what SpecWeave can modify in external tools
3
+ *
4
+ * These settings determine how Living Docs sync with external tools (GitHub, JIRA, ADO).
5
+ * All settings default to false for safety (explicit opt-in required).
6
+ *
7
+ * Storage: .specweave/config.json under sync.settings
8
+ */
9
+ /**
10
+ * Default sync settings (all permissions disabled for safety)
11
+ */
12
+ export const DEFAULT_SYNC_SETTINGS = {
13
+ canUpsertInternalItems: false,
14
+ canUpdateExternalItems: false,
15
+ canUpdateStatus: false,
16
+ };
17
+ /**
18
+ * Type guard to check if an object is valid SyncSettings
19
+ */
20
+ export function isValidSyncSettings(obj) {
21
+ return (typeof obj === 'object' &&
22
+ obj !== null &&
23
+ typeof obj.canUpsertInternalItems === 'boolean' &&
24
+ typeof obj.canUpdateExternalItems === 'boolean' &&
25
+ typeof obj.canUpdateStatus === 'boolean');
26
+ }
27
+ /**
28
+ * Migrate old syncDirection to new SyncSettings
29
+ *
30
+ * @param syncDirection - Old syncDirection value ('bidirectional' | 'export' | 'import' | 'to-external' | 'from-external' | undefined)
31
+ * @returns SyncSettings with appropriate permissions
32
+ */
33
+ export function migrateSyncDirection(syncDirection) {
34
+ if (syncDirection === 'bidirectional') {
35
+ // Old bidirectional mode → enable all permissions
36
+ return {
37
+ canUpsertInternalItems: true,
38
+ canUpdateExternalItems: true,
39
+ canUpdateStatus: true,
40
+ };
41
+ }
42
+ if (syncDirection === 'export' || syncDirection === 'to-external') {
43
+ // Old export-only mode → create/update internal items only
44
+ return {
45
+ canUpsertInternalItems: true,
46
+ canUpdateExternalItems: false,
47
+ canUpdateStatus: false,
48
+ };
49
+ }
50
+ if (syncDirection === 'import' || syncDirection === 'from-external') {
51
+ // Old import-only mode → status updates only
52
+ return {
53
+ canUpsertInternalItems: false,
54
+ canUpdateExternalItems: false,
55
+ canUpdateStatus: true,
56
+ };
57
+ }
58
+ // Old one-way or missing or unknown → disable all (safer default)
59
+ return { ...DEFAULT_SYNC_SETTINGS };
60
+ }
61
+ /**
62
+ * Validate SyncSettings object
63
+ *
64
+ * @param settings - Settings to validate
65
+ * @throws Error if settings are invalid
66
+ */
67
+ export function validateSyncSettings(settings) {
68
+ if (!settings || typeof settings !== 'object') {
69
+ throw new Error('SyncSettings must be a non-null object');
70
+ }
71
+ if (typeof settings.canUpsertInternalItems !== 'boolean') {
72
+ throw new Error('SyncSettings.canUpsertInternalItems must be a boolean (required)');
73
+ }
74
+ if (typeof settings.canUpdateExternalItems !== 'boolean') {
75
+ throw new Error('SyncSettings.canUpdateExternalItems must be a boolean (required)');
76
+ }
77
+ if (typeof settings.canUpdateStatus !== 'boolean') {
78
+ throw new Error('SyncSettings.canUpdateStatus must be a boolean (required)');
79
+ }
80
+ }
81
+ /**
82
+ * Merge user-provided settings with defaults (fill in missing fields)
83
+ */
84
+ export function mergeSyncSettings(userSettings) {
85
+ return {
86
+ ...DEFAULT_SYNC_SETTINGS,
87
+ ...userSettings,
88
+ };
89
+ }
90
+ //# sourceMappingURL=sync-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-settings.js","sourceRoot":"","sources":["../../../../src/core/types/sync-settings.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA2CH;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAiB;IACjD,sBAAsB,EAAE,KAAK;IAC7B,sBAAsB,EAAE,KAAK;IAC7B,eAAe,EAAE,KAAK;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAQ;IAC1C,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,OAAO,GAAG,CAAC,sBAAsB,KAAK,SAAS;QAC/C,OAAO,GAAG,CAAC,sBAAsB,KAAK,SAAS;QAC/C,OAAO,GAAG,CAAC,eAAe,KAAK,SAAS,CACzC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,aAA6B;IAChE,IAAI,aAAa,KAAK,eAAe,EAAE,CAAC;QACtC,kDAAkD;QAClD,OAAO;YACL,sBAAsB,EAAE,IAAI;YAC5B,sBAAsB,EAAE,IAAI;YAC5B,eAAe,EAAE,IAAI;SACtB,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,aAAa,EAAE,CAAC;QAClE,2DAA2D;QAC3D,OAAO;YACL,sBAAsB,EAAE,IAAI;YAC5B,sBAAsB,EAAE,KAAK;YAC7B,eAAe,EAAE,KAAK;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,eAAe,EAAE,CAAC;QACpE,6CAA6C;QAC7C,OAAO;YACL,sBAAsB,EAAE,KAAK;YAC7B,sBAAsB,EAAE,KAAK;YAC7B,eAAe,EAAE,IAAI;SACtB,CAAC;IACJ,CAAC;IAED,kEAAkE;IAClE,OAAO,EAAE,GAAG,qBAAqB,EAAE,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAsB;IACzD,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,OAAO,QAAQ,CAAC,sBAAsB,KAAK,SAAS,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,OAAO,QAAQ,CAAC,sBAAsB,KAAK,SAAS,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,OAAO,QAAQ,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,YAA+C;IAE/C,OAAO;QACL,GAAG,qBAAqB;QACxB,GAAG,YAAY;KAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Permission Checker - Controls what SpecWeave can modify in external tools
3
+ *
4
+ * Provides centralized permission checking for external tool sync operations.
5
+ * All permissions default to false (explicit opt-in required).
6
+ *
7
+ * Usage:
8
+ * ```typescript
9
+ * const checker = await PermissionChecker.load(projectRoot);
10
+ *
11
+ * if (checker.canUpsertInternalItems()) {
12
+ * await createGitHubIssue(item);
13
+ * }
14
+ *
15
+ * if (checker.canUpdateStatus()) {
16
+ * await updateIssueStatus(issueNumber, 'Done');
17
+ * }
18
+ * ```
19
+ */
20
+ import { SyncSettings } from '../types/sync-settings.js';
21
+ /**
22
+ * Configuration structure from .specweave/config.json
23
+ */
24
+ export interface SpecWeaveConfig {
25
+ sync?: {
26
+ settings?: Partial<SyncSettings> & {
27
+ syncDirection?: 'bidirectional' | 'one-way';
28
+ autoDetectProject?: boolean;
29
+ defaultTimeRange?: string;
30
+ rateLimitProtection?: boolean;
31
+ };
32
+ };
33
+ }
34
+ /**
35
+ * Permission checker for external tool sync operations
36
+ */
37
+ export declare class PermissionChecker {
38
+ private settings;
39
+ /**
40
+ * Create permission checker with explicit settings
41
+ * @param settings - Sync permission settings
42
+ */
43
+ constructor(settings: SyncSettings);
44
+ /**
45
+ * Load permission settings from .specweave/config.json
46
+ * @param projectRoot - Project root directory
47
+ * @returns Permission checker instance
48
+ */
49
+ static load(projectRoot: string): Promise<PermissionChecker>;
50
+ /**
51
+ * Check if SpecWeave can CREATE and UPDATE internal work items in external tools
52
+ *
53
+ * UPSERT = CREATE initially + UPDATE as work progresses
54
+ * - Controls: Title, Description/Body, Acceptance Criteria for INTERNAL items
55
+ * - Flow: increment → living spec → CREATE external item → UPDATE on task completion
56
+ * - If false: Stops before external item creation (local-only workflow)
57
+ *
58
+ * @returns true if UPSERT (CREATE + UPDATE) is allowed for internal items
59
+ */
60
+ canUpsertInternalItems(): boolean;
61
+ /**
62
+ * Check if SpecWeave can UPDATE work items created externally
63
+ *
64
+ * UPDATE = Full content updates (title, description, ACs, tasks, comments)
65
+ * - Controls: FULL content updates of EXTERNAL items
66
+ * - Flow: increment progress → living spec → UPDATE external tool (full sync)
67
+ * - If false: External items remain read-only snapshots (no sync back)
68
+ *
69
+ * @returns true if UPDATE is allowed for external items (full content updates)
70
+ */
71
+ canUpdateExternalItems(): boolean;
72
+ /**
73
+ * Check if SpecWeave can UPDATE status of work items
74
+ *
75
+ * STATUS = Status field ONLY (for BOTH internal AND external items)
76
+ * - Controls: Status field updates after all ACs/tasks complete
77
+ * - Flow: Both flows (internal and external items)
78
+ * - If false: No status updates regardless of item origin (manual status management)
79
+ *
80
+ * @returns true if status updates are allowed
81
+ */
82
+ canUpdateStatus(): boolean;
83
+ /**
84
+ * Get all permission settings (for logging/debugging)
85
+ * @returns Current permission settings
86
+ */
87
+ getSettings(): Readonly<SyncSettings>;
88
+ /**
89
+ * Get human-readable description of current permissions
90
+ * @returns Permission summary string
91
+ */
92
+ getPermissionSummary(): string;
93
+ /**
94
+ * Validate that operation is allowed, throw error if not
95
+ * @param operation - Operation type
96
+ * @throws Error if operation not allowed
97
+ */
98
+ requirePermission(operation: 'upsert-internal' | 'update-external' | 'update-status'): void;
99
+ }
100
+ //# sourceMappingURL=permission-checker.d.ts.map