@fractary/faber 0.1.1 → 1.0.1

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 (261) hide show
  1. package/README.md +366 -76
  2. package/dist/cli/commands/logs.d.ts +6 -0
  3. package/dist/cli/commands/logs.d.ts.map +1 -0
  4. package/dist/cli/commands/logs.js +215 -0
  5. package/dist/cli/commands/logs.js.map +1 -0
  6. package/dist/cli/commands/repo.d.ts +6 -0
  7. package/dist/cli/commands/repo.d.ts.map +1 -0
  8. package/dist/cli/commands/repo.js +260 -0
  9. package/dist/cli/commands/repo.js.map +1 -0
  10. package/dist/cli/commands/spec.d.ts +6 -0
  11. package/dist/cli/commands/spec.d.ts.map +1 -0
  12. package/dist/cli/commands/spec.js +184 -0
  13. package/dist/cli/commands/spec.js.map +1 -0
  14. package/dist/cli/commands/work.d.ts +6 -0
  15. package/dist/cli/commands/work.d.ts.map +1 -0
  16. package/dist/cli/commands/work.js +113 -0
  17. package/dist/cli/commands/work.js.map +1 -0
  18. package/dist/cli/commands/workflow.d.ts +6 -0
  19. package/dist/cli/commands/workflow.d.ts.map +1 -0
  20. package/dist/cli/commands/workflow.js +214 -0
  21. package/dist/cli/commands/workflow.js.map +1 -0
  22. package/dist/cli/index.d.ts +8 -0
  23. package/dist/cli/index.d.ts.map +1 -0
  24. package/dist/cli/index.js +27 -0
  25. package/dist/cli/index.js.map +1 -0
  26. package/dist/config.d.ts +814 -0
  27. package/dist/config.d.ts.map +1 -0
  28. package/dist/config.js +438 -0
  29. package/dist/config.js.map +1 -0
  30. package/dist/errors.d.ts +264 -0
  31. package/dist/errors.d.ts.map +1 -0
  32. package/dist/errors.js +491 -0
  33. package/dist/errors.js.map +1 -0
  34. package/dist/index.d.ts +21 -16
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +23 -36
  37. package/dist/index.js.map +1 -1
  38. package/dist/logs/index.d.ts +8 -0
  39. package/dist/logs/index.d.ts.map +1 -0
  40. package/dist/{types → logs}/index.js +7 -11
  41. package/dist/logs/index.js.map +1 -0
  42. package/dist/logs/manager.d.ts +97 -0
  43. package/dist/logs/manager.d.ts.map +1 -0
  44. package/dist/logs/manager.js +581 -0
  45. package/dist/logs/manager.js.map +1 -0
  46. package/dist/logs/types.d.ts +45 -0
  47. package/dist/logs/types.d.ts.map +1 -0
  48. package/dist/logs/types.js +8 -0
  49. package/dist/logs/types.js.map +1 -0
  50. package/dist/repo/git.d.ts +182 -0
  51. package/dist/repo/git.d.ts.map +1 -0
  52. package/dist/repo/git.js +496 -0
  53. package/dist/repo/git.js.map +1 -0
  54. package/dist/repo/index.d.ts +10 -0
  55. package/dist/repo/index.d.ts.map +1 -0
  56. package/dist/repo/index.js +29 -0
  57. package/dist/repo/index.js.map +1 -0
  58. package/dist/repo/manager.d.ts +179 -0
  59. package/dist/repo/manager.d.ts.map +1 -0
  60. package/dist/repo/manager.js +433 -0
  61. package/dist/repo/manager.js.map +1 -0
  62. package/dist/repo/providers/bitbucket.d.ts +38 -0
  63. package/dist/repo/providers/bitbucket.d.ts.map +1 -0
  64. package/dist/repo/providers/bitbucket.js +76 -0
  65. package/dist/repo/providers/bitbucket.js.map +1 -0
  66. package/dist/repo/providers/github.d.ts +30 -0
  67. package/dist/repo/providers/github.d.ts.map +1 -0
  68. package/dist/repo/providers/github.js +311 -0
  69. package/dist/repo/providers/github.js.map +1 -0
  70. package/dist/repo/providers/gitlab.d.ts +37 -0
  71. package/dist/repo/providers/gitlab.d.ts.map +1 -0
  72. package/dist/repo/providers/gitlab.js +74 -0
  73. package/dist/repo/providers/gitlab.js.map +1 -0
  74. package/dist/repo/providers/index.d.ts +9 -0
  75. package/dist/repo/providers/index.d.ts.map +1 -0
  76. package/dist/repo/providers/index.js +15 -0
  77. package/dist/repo/providers/index.js.map +1 -0
  78. package/dist/repo/types.d.ts +47 -0
  79. package/dist/repo/types.d.ts.map +1 -0
  80. package/dist/repo/types.js +8 -0
  81. package/dist/repo/types.js.map +1 -0
  82. package/dist/spec/index.d.ts +9 -0
  83. package/dist/spec/index.d.ts.map +1 -0
  84. package/dist/spec/index.js +30 -0
  85. package/dist/spec/index.js.map +1 -0
  86. package/dist/spec/manager.d.ts +98 -0
  87. package/dist/spec/manager.d.ts.map +1 -0
  88. package/dist/spec/manager.js +650 -0
  89. package/dist/spec/manager.js.map +1 -0
  90. package/dist/spec/templates.d.ts +28 -0
  91. package/dist/spec/templates.d.ts.map +1 -0
  92. package/dist/spec/templates.js +357 -0
  93. package/dist/spec/templates.js.map +1 -0
  94. package/dist/spec/types.d.ts +53 -0
  95. package/dist/spec/types.d.ts.map +1 -0
  96. package/dist/spec/types.js +8 -0
  97. package/dist/spec/types.js.map +1 -0
  98. package/dist/state/index.d.ts +8 -0
  99. package/dist/state/index.d.ts.map +1 -0
  100. package/dist/state/index.js +26 -0
  101. package/dist/state/index.js.map +1 -0
  102. package/dist/state/manager.d.ts +132 -0
  103. package/dist/state/manager.d.ts.map +1 -0
  104. package/dist/state/manager.js +517 -0
  105. package/dist/state/manager.js.map +1 -0
  106. package/dist/state/types.d.ts +46 -0
  107. package/dist/state/types.d.ts.map +1 -0
  108. package/dist/state/types.js +8 -0
  109. package/dist/state/types.js.map +1 -0
  110. package/dist/storage/codex-adapter.d.ts +62 -0
  111. package/dist/storage/codex-adapter.d.ts.map +1 -0
  112. package/dist/storage/codex-adapter.js +177 -0
  113. package/dist/storage/codex-adapter.js.map +1 -0
  114. package/dist/storage/index.d.ts +9 -0
  115. package/dist/storage/index.d.ts.map +1 -0
  116. package/dist/storage/index.js +15 -0
  117. package/dist/storage/index.js.map +1 -0
  118. package/dist/storage/local.d.ts +42 -0
  119. package/dist/storage/local.d.ts.map +1 -0
  120. package/dist/storage/local.js +137 -0
  121. package/dist/storage/local.js.map +1 -0
  122. package/dist/types.d.ts +603 -0
  123. package/dist/types.d.ts.map +1 -0
  124. package/dist/types.js +8 -0
  125. package/dist/types.js.map +1 -0
  126. package/dist/work/index.d.ts +8 -0
  127. package/dist/work/index.d.ts.map +1 -0
  128. package/dist/work/index.js +26 -0
  129. package/dist/work/index.js.map +1 -0
  130. package/dist/work/manager.d.ts +112 -0
  131. package/dist/work/manager.d.ts.map +1 -0
  132. package/dist/work/manager.js +227 -0
  133. package/dist/work/manager.js.map +1 -0
  134. package/dist/work/providers/github.d.ts +40 -0
  135. package/dist/work/providers/github.d.ts.map +1 -0
  136. package/dist/work/providers/github.js +299 -0
  137. package/dist/work/providers/github.js.map +1 -0
  138. package/dist/work/providers/jira.d.ts +50 -0
  139. package/dist/work/providers/jira.d.ts.map +1 -0
  140. package/dist/work/providers/jira.js +99 -0
  141. package/dist/work/providers/jira.js.map +1 -0
  142. package/dist/work/providers/linear.d.ts +47 -0
  143. package/dist/work/providers/linear.d.ts.map +1 -0
  144. package/dist/work/providers/linear.js +93 -0
  145. package/dist/work/providers/linear.js.map +1 -0
  146. package/dist/work/types.d.ts +41 -0
  147. package/dist/work/types.d.ts.map +1 -0
  148. package/dist/work/types.js +8 -0
  149. package/dist/work/types.js.map +1 -0
  150. package/dist/workflow/faber.d.ts +107 -0
  151. package/dist/workflow/faber.d.ts.map +1 -0
  152. package/dist/workflow/faber.js +606 -0
  153. package/dist/workflow/faber.js.map +1 -0
  154. package/dist/workflow/index.d.ts +8 -0
  155. package/dist/workflow/index.d.ts.map +1 -0
  156. package/dist/workflow/index.js +26 -0
  157. package/dist/workflow/index.js.map +1 -0
  158. package/dist/workflow/types.d.ts +54 -0
  159. package/dist/workflow/types.d.ts.map +1 -0
  160. package/dist/workflow/types.js +8 -0
  161. package/dist/workflow/types.js.map +1 -0
  162. package/package.json +42 -28
  163. package/dist/api.d.ts +0 -81
  164. package/dist/api.d.ts.map +0 -1
  165. package/dist/api.js +0 -261
  166. package/dist/api.js.map +0 -1
  167. package/dist/bindings/claude-code/transformer.d.ts +0 -55
  168. package/dist/bindings/claude-code/transformer.d.ts.map +0 -1
  169. package/dist/bindings/claude-code/transformer.js +0 -271
  170. package/dist/bindings/claude-code/transformer.js.map +0 -1
  171. package/dist/bindings/index.d.ts +0 -21
  172. package/dist/bindings/index.d.ts.map +0 -1
  173. package/dist/bindings/index.js +0 -43
  174. package/dist/bindings/index.js.map +0 -1
  175. package/dist/core/concepts/base.d.ts +0 -89
  176. package/dist/core/concepts/base.d.ts.map +0 -1
  177. package/dist/core/concepts/base.js +0 -230
  178. package/dist/core/concepts/base.js.map +0 -1
  179. package/dist/core/concepts/eval.d.ts +0 -90
  180. package/dist/core/concepts/eval.d.ts.map +0 -1
  181. package/dist/core/concepts/eval.js +0 -118
  182. package/dist/core/concepts/eval.js.map +0 -1
  183. package/dist/core/concepts/index.d.ts +0 -9
  184. package/dist/core/concepts/index.d.ts.map +0 -1
  185. package/dist/core/concepts/index.js +0 -36
  186. package/dist/core/concepts/index.js.map +0 -1
  187. package/dist/core/concepts/role.d.ts +0 -19
  188. package/dist/core/concepts/role.d.ts.map +0 -1
  189. package/dist/core/concepts/role.js +0 -227
  190. package/dist/core/concepts/role.js.map +0 -1
  191. package/dist/core/concepts/team.d.ts +0 -57
  192. package/dist/core/concepts/team.d.ts.map +0 -1
  193. package/dist/core/concepts/team.js +0 -106
  194. package/dist/core/concepts/team.js.map +0 -1
  195. package/dist/core/concepts/tool.d.ts +0 -43
  196. package/dist/core/concepts/tool.d.ts.map +0 -1
  197. package/dist/core/concepts/tool.js +0 -104
  198. package/dist/core/concepts/tool.js.map +0 -1
  199. package/dist/core/concepts/workflow.d.ts +0 -87
  200. package/dist/core/concepts/workflow.d.ts.map +0 -1
  201. package/dist/core/concepts/workflow.js +0 -114
  202. package/dist/core/concepts/workflow.js.map +0 -1
  203. package/dist/core/config/index.d.ts +0 -34
  204. package/dist/core/config/index.d.ts.map +0 -1
  205. package/dist/core/config/index.js +0 -80
  206. package/dist/core/config/index.js.map +0 -1
  207. package/dist/core/config/loader.d.ts +0 -53
  208. package/dist/core/config/loader.d.ts.map +0 -1
  209. package/dist/core/config/loader.js +0 -234
  210. package/dist/core/config/loader.js.map +0 -1
  211. package/dist/core/contexts/index.d.ts +0 -36
  212. package/dist/core/contexts/index.d.ts.map +0 -1
  213. package/dist/core/contexts/index.js +0 -75
  214. package/dist/core/contexts/index.js.map +0 -1
  215. package/dist/core/contexts/loader.d.ts +0 -66
  216. package/dist/core/contexts/loader.d.ts.map +0 -1
  217. package/dist/core/contexts/loader.js +0 -261
  218. package/dist/core/contexts/loader.js.map +0 -1
  219. package/dist/core/overlays/index.d.ts +0 -31
  220. package/dist/core/overlays/index.d.ts.map +0 -1
  221. package/dist/core/overlays/index.js +0 -82
  222. package/dist/core/overlays/index.js.map +0 -1
  223. package/dist/core/overlays/resolver.d.ts +0 -65
  224. package/dist/core/overlays/resolver.d.ts.map +0 -1
  225. package/dist/core/overlays/resolver.js +0 -249
  226. package/dist/core/overlays/resolver.js.map +0 -1
  227. package/dist/types/bindings.d.ts +0 -59
  228. package/dist/types/bindings.d.ts.map +0 -1
  229. package/dist/types/bindings.js +0 -6
  230. package/dist/types/bindings.js.map +0 -1
  231. package/dist/types/concepts.d.ts +0 -131
  232. package/dist/types/concepts.d.ts.map +0 -1
  233. package/dist/types/concepts.js +0 -29
  234. package/dist/types/concepts.js.map +0 -1
  235. package/dist/types/config.d.ts +0 -42
  236. package/dist/types/config.d.ts.map +0 -1
  237. package/dist/types/config.js +0 -6
  238. package/dist/types/config.js.map +0 -1
  239. package/dist/types/contexts.d.ts +0 -59
  240. package/dist/types/contexts.d.ts.map +0 -1
  241. package/dist/types/contexts.js +0 -17
  242. package/dist/types/contexts.js.map +0 -1
  243. package/dist/types/index.d.ts +0 -17
  244. package/dist/types/index.d.ts.map +0 -1
  245. package/dist/types/index.js.map +0 -1
  246. package/dist/types/overlays.d.ts +0 -28
  247. package/dist/types/overlays.d.ts.map +0 -1
  248. package/dist/types/overlays.js +0 -15
  249. package/dist/types/overlays.js.map +0 -1
  250. package/dist/utils/file-system.d.ts +0 -40
  251. package/dist/utils/file-system.d.ts.map +0 -1
  252. package/dist/utils/file-system.js +0 -105
  253. package/dist/utils/file-system.js.map +0 -1
  254. package/dist/utils/template.d.ts +0 -28
  255. package/dist/utils/template.d.ts.map +0 -1
  256. package/dist/utils/template.js +0 -107
  257. package/dist/utils/template.js.map +0 -1
  258. package/dist/utils/validation.d.ts +0 -42
  259. package/dist/utils/validation.d.ts.map +0 -1
  260. package/dist/utils/validation.js +0 -94
  261. package/dist/utils/validation.js.map +0 -1
@@ -0,0 +1,112 @@
1
+ /**
2
+ * @fractary/faber - WorkManager
3
+ *
4
+ * Main entry point for work tracking operations.
5
+ * Supports GitHub Issues, Jira, and Linear.
6
+ */
7
+ import { WorkConfig, Issue, IssueCreateOptions, IssueUpdateOptions, IssueFilters, WorkType, Comment, Label, Milestone, MilestoneCreateOptions, FaberContext } from '../types';
8
+ import { ListCommentsOptions } from './types';
9
+ /**
10
+ * WorkManager - Unified work tracking across platforms
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const work = new WorkManager();
15
+ * const issue = await work.fetchIssue(123);
16
+ * await work.createComment(123, 'Implementation complete');
17
+ * ```
18
+ */
19
+ export declare class WorkManager {
20
+ private provider;
21
+ private config;
22
+ constructor(config?: WorkConfig);
23
+ /**
24
+ * Load work configuration from project
25
+ */
26
+ private loadConfig;
27
+ /**
28
+ * Create the appropriate provider based on config
29
+ */
30
+ private createProvider;
31
+ /**
32
+ * Get the current platform
33
+ */
34
+ getPlatform(): string;
35
+ /**
36
+ * Create a new issue
37
+ */
38
+ createIssue(options: IssueCreateOptions): Promise<Issue>;
39
+ /**
40
+ * Fetch an issue by ID
41
+ */
42
+ fetchIssue(issueId: string | number): Promise<Issue>;
43
+ /**
44
+ * Update an existing issue
45
+ */
46
+ updateIssue(issueId: string | number, options: IssueUpdateOptions): Promise<Issue>;
47
+ /**
48
+ * Close an issue
49
+ */
50
+ closeIssue(issueId: string | number): Promise<Issue>;
51
+ /**
52
+ * Reopen a closed issue
53
+ */
54
+ reopenIssue(issueId: string | number): Promise<Issue>;
55
+ /**
56
+ * Search for issues
57
+ */
58
+ searchIssues(query: string, filters?: IssueFilters): Promise<Issue[]>;
59
+ /**
60
+ * Assign an issue to a user
61
+ */
62
+ assignIssue(issueId: string | number, assignee: string): Promise<Issue>;
63
+ /**
64
+ * Unassign an issue
65
+ */
66
+ unassignIssue(issueId: string | number): Promise<Issue>;
67
+ /**
68
+ * Create a comment on an issue
69
+ */
70
+ createComment(issueId: string | number, body: string, faberContext?: FaberContext): Promise<Comment>;
71
+ /**
72
+ * List comments on an issue
73
+ */
74
+ listComments(issueId: string | number, options?: ListCommentsOptions): Promise<Comment[]>;
75
+ /**
76
+ * Add labels to an issue
77
+ */
78
+ addLabels(issueId: string | number, labels: string[]): Promise<Label[]>;
79
+ /**
80
+ * Remove labels from an issue
81
+ */
82
+ removeLabels(issueId: string | number, labels: string[]): Promise<void>;
83
+ /**
84
+ * Set labels on an issue (replaces existing)
85
+ */
86
+ setLabels(issueId: string | number, labels: string[]): Promise<Label[]>;
87
+ /**
88
+ * List all labels (or labels on an issue)
89
+ */
90
+ listLabels(issueId?: string | number): Promise<Label[]>;
91
+ /**
92
+ * Create a new milestone
93
+ */
94
+ createMilestone(options: MilestoneCreateOptions): Promise<Milestone>;
95
+ /**
96
+ * Set milestone on an issue
97
+ */
98
+ setMilestone(issueId: string | number, milestone: string): Promise<Issue>;
99
+ /**
100
+ * Remove milestone from an issue
101
+ */
102
+ removeMilestone(issueId: string | number): Promise<Issue>;
103
+ /**
104
+ * List all milestones
105
+ */
106
+ listMilestones(state?: 'open' | 'closed' | 'all'): Promise<Milestone[]>;
107
+ /**
108
+ * Classify the type of work based on issue metadata
109
+ */
110
+ classifyWorkType(issue: Issue): Promise<WorkType>;
111
+ }
112
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/work/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ /**
3
+ * @fractary/faber - WorkManager
4
+ *
5
+ * Main entry point for work tracking operations.
6
+ * Supports GitHub Issues, Jira, and Linear.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.WorkManager = void 0;
10
+ const config_1 = require("../config");
11
+ const errors_1 = require("../errors");
12
+ const github_1 = require("./providers/github");
13
+ const jira_1 = require("./providers/jira");
14
+ const linear_1 = require("./providers/linear");
15
+ /**
16
+ * WorkManager - Unified work tracking across platforms
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const work = new WorkManager();
21
+ * const issue = await work.fetchIssue(123);
22
+ * await work.createComment(123, 'Implementation complete');
23
+ * ```
24
+ */
25
+ class WorkManager {
26
+ provider;
27
+ config;
28
+ constructor(config) {
29
+ this.config = config || this.loadConfig();
30
+ this.provider = this.createProvider(this.config);
31
+ }
32
+ /**
33
+ * Load work configuration from project
34
+ */
35
+ loadConfig() {
36
+ const config = (0, config_1.loadWorkConfig)((0, config_1.findProjectRoot)());
37
+ if (!config) {
38
+ throw new errors_1.ConfigurationError('Work configuration not found. Run "fractary work init" to set up.');
39
+ }
40
+ return config;
41
+ }
42
+ /**
43
+ * Create the appropriate provider based on config
44
+ */
45
+ createProvider(config) {
46
+ switch (config.platform) {
47
+ case 'github':
48
+ return new github_1.GitHubWorkProvider(config);
49
+ case 'jira':
50
+ return new jira_1.JiraWorkProvider(config);
51
+ case 'linear':
52
+ return new linear_1.LinearWorkProvider(config);
53
+ default:
54
+ throw new errors_1.ConfigurationError(`Unsupported work platform: ${config.platform}`);
55
+ }
56
+ }
57
+ /**
58
+ * Get the current platform
59
+ */
60
+ getPlatform() {
61
+ return this.provider.platform;
62
+ }
63
+ // =========================================================================
64
+ // ISSUES
65
+ // =========================================================================
66
+ /**
67
+ * Create a new issue
68
+ */
69
+ async createIssue(options) {
70
+ return this.provider.createIssue(options);
71
+ }
72
+ /**
73
+ * Fetch an issue by ID
74
+ */
75
+ async fetchIssue(issueId) {
76
+ return this.provider.fetchIssue(issueId);
77
+ }
78
+ /**
79
+ * Update an existing issue
80
+ */
81
+ async updateIssue(issueId, options) {
82
+ return this.provider.updateIssue(issueId, options);
83
+ }
84
+ /**
85
+ * Close an issue
86
+ */
87
+ async closeIssue(issueId) {
88
+ return this.provider.closeIssue(issueId);
89
+ }
90
+ /**
91
+ * Reopen a closed issue
92
+ */
93
+ async reopenIssue(issueId) {
94
+ return this.provider.reopenIssue(issueId);
95
+ }
96
+ /**
97
+ * Search for issues
98
+ */
99
+ async searchIssues(query, filters) {
100
+ return this.provider.searchIssues(query, filters);
101
+ }
102
+ /**
103
+ * Assign an issue to a user
104
+ */
105
+ async assignIssue(issueId, assignee) {
106
+ return this.provider.assignIssue(issueId, assignee);
107
+ }
108
+ /**
109
+ * Unassign an issue
110
+ */
111
+ async unassignIssue(issueId) {
112
+ return this.provider.unassignIssue(issueId);
113
+ }
114
+ // =========================================================================
115
+ // COMMENTS
116
+ // =========================================================================
117
+ /**
118
+ * Create a comment on an issue
119
+ */
120
+ async createComment(issueId, body, faberContext) {
121
+ return this.provider.createComment(issueId, body, faberContext);
122
+ }
123
+ /**
124
+ * List comments on an issue
125
+ */
126
+ async listComments(issueId, options) {
127
+ return this.provider.listComments(issueId, options);
128
+ }
129
+ // =========================================================================
130
+ // LABELS
131
+ // =========================================================================
132
+ /**
133
+ * Add labels to an issue
134
+ */
135
+ async addLabels(issueId, labels) {
136
+ return this.provider.addLabels(issueId, labels);
137
+ }
138
+ /**
139
+ * Remove labels from an issue
140
+ */
141
+ async removeLabels(issueId, labels) {
142
+ return this.provider.removeLabels(issueId, labels);
143
+ }
144
+ /**
145
+ * Set labels on an issue (replaces existing)
146
+ */
147
+ async setLabels(issueId, labels) {
148
+ return this.provider.setLabels(issueId, labels);
149
+ }
150
+ /**
151
+ * List all labels (or labels on an issue)
152
+ */
153
+ async listLabels(issueId) {
154
+ return this.provider.listLabels(issueId);
155
+ }
156
+ // =========================================================================
157
+ // MILESTONES
158
+ // =========================================================================
159
+ /**
160
+ * Create a new milestone
161
+ */
162
+ async createMilestone(options) {
163
+ return this.provider.createMilestone(options);
164
+ }
165
+ /**
166
+ * Set milestone on an issue
167
+ */
168
+ async setMilestone(issueId, milestone) {
169
+ return this.provider.setMilestone(issueId, milestone);
170
+ }
171
+ /**
172
+ * Remove milestone from an issue
173
+ */
174
+ async removeMilestone(issueId) {
175
+ return this.provider.removeMilestone(issueId);
176
+ }
177
+ /**
178
+ * List all milestones
179
+ */
180
+ async listMilestones(state) {
181
+ return this.provider.listMilestones(state);
182
+ }
183
+ // =========================================================================
184
+ // CLASSIFICATION
185
+ // =========================================================================
186
+ /**
187
+ * Classify the type of work based on issue metadata
188
+ */
189
+ async classifyWorkType(issue) {
190
+ const labels = issue.labels.map(l => l.name.toLowerCase());
191
+ const title = issue.title.toLowerCase();
192
+ const body = issue.body.toLowerCase();
193
+ // Check labels first
194
+ if (labels.some(l => l.includes('bug') || l.includes('defect'))) {
195
+ return 'bug';
196
+ }
197
+ if (labels.some(l => l.includes('feature') || l.includes('enhancement'))) {
198
+ return 'feature';
199
+ }
200
+ if (labels.some(l => l.includes('chore') || l.includes('maintenance'))) {
201
+ return 'chore';
202
+ }
203
+ if (labels.some(l => l.includes('patch') || l.includes('hotfix'))) {
204
+ return 'patch';
205
+ }
206
+ if (labels.some(l => l.includes('infrastructure') || l.includes('infra'))) {
207
+ return 'infrastructure';
208
+ }
209
+ if (labels.some(l => l.includes('api'))) {
210
+ return 'api';
211
+ }
212
+ // Check title/body keywords
213
+ if (title.includes('bug') || title.includes('fix') || body.includes('regression')) {
214
+ return 'bug';
215
+ }
216
+ if (title.includes('add') || title.includes('implement') || title.includes('feature')) {
217
+ return 'feature';
218
+ }
219
+ if (title.includes('refactor') || title.includes('cleanup') || title.includes('chore')) {
220
+ return 'chore';
221
+ }
222
+ // Default to feature
223
+ return 'feature';
224
+ }
225
+ }
226
+ exports.WorkManager = WorkManager;
227
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/work/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @fractary/faber - GitHub Work Provider
3
+ *
4
+ * Work tracking via GitHub Issues using the gh CLI.
5
+ */
6
+ import { WorkConfig, Issue, IssueCreateOptions, IssueUpdateOptions, IssueFilters, Comment, Label, Milestone, MilestoneCreateOptions, FaberContext } from '../../types';
7
+ import { WorkProvider } from '../types';
8
+ /**
9
+ * GitHub Issues provider using gh CLI
10
+ */
11
+ export declare class GitHubWorkProvider implements WorkProvider {
12
+ readonly platform: "github";
13
+ private owner;
14
+ private repo;
15
+ constructor(config: WorkConfig);
16
+ private getRepoArg;
17
+ createIssue(options: IssueCreateOptions): Promise<Issue>;
18
+ fetchIssue(issueId: string | number): Promise<Issue>;
19
+ updateIssue(issueId: string | number, options: IssueUpdateOptions): Promise<Issue>;
20
+ closeIssue(issueId: string | number): Promise<Issue>;
21
+ reopenIssue(issueId: string | number): Promise<Issue>;
22
+ searchIssues(query: string, filters?: IssueFilters): Promise<Issue[]>;
23
+ assignIssue(issueId: string | number, assignee: string): Promise<Issue>;
24
+ unassignIssue(issueId: string | number): Promise<Issue>;
25
+ createComment(issueId: string | number, body: string, faberContext?: FaberContext): Promise<Comment>;
26
+ listComments(issueId: string | number, options?: {
27
+ limit?: number;
28
+ since?: string;
29
+ }): Promise<Comment[]>;
30
+ addLabels(issueId: string | number, labels: string[]): Promise<Label[]>;
31
+ removeLabels(issueId: string | number, labels: string[]): Promise<void>;
32
+ setLabels(issueId: string | number, labels: string[]): Promise<Label[]>;
33
+ listLabels(issueId?: string | number): Promise<Label[]>;
34
+ createMilestone(options: MilestoneCreateOptions): Promise<Milestone>;
35
+ setMilestone(issueId: string | number, milestone: string): Promise<Issue>;
36
+ removeMilestone(issueId: string | number): Promise<Issue>;
37
+ listMilestones(state?: 'open' | 'closed' | 'all'): Promise<Milestone[]>;
38
+ private parseIssue;
39
+ }
40
+ //# sourceMappingURL=github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/work/providers/github.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,UAAU,EACV,KAAK,EACL,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,OAAO,EACP,KAAK,EACL,SAAS,EACT,sBAAsB,EACtB,YAAY,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA+CxC;;GAEG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACrD,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IACtC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,IAAI,CAAS;gBAET,MAAM,EAAE,UAAU;IAa9B,OAAO,CAAC,UAAU;IAQZ,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IA4BxD,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAgBpD,WAAW,CACf,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,KAAK,CAAC;IAiBX,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAKpD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAKrD,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,KAAK,EAAE,CAAC;IAwBb,WAAW,CACf,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,KAAK,CAAC;IAKX,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAavD,aAAa,CACjB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,OAAO,CAAC;IAgBb,YAAY,CAChB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3C,OAAO,CAAC,OAAO,EAAE,CAAC;IAmCf,SAAS,CACb,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,KAAK,EAAE,CAAC;IAMb,YAAY,CAChB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,IAAI,CAAC;IAIV,SAAS,CACb,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,KAAK,EAAE,CAAC;IAYb,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAgBvD,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,SAAS,CAAC;IAuBpE,YAAY,CAChB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,KAAK,CAAC;IAKX,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAKzD,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA2B7E,OAAO,CAAC,UAAU;CA2BnB"}