ghcralph 0.1.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 (160) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +327 -0
  3. package/bin/ghcralph.js +2 -0
  4. package/dist/cli.d.ts +12 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +92 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/config.d.ts +8 -0
  9. package/dist/commands/config.d.ts.map +1 -0
  10. package/dist/commands/config.js +118 -0
  11. package/dist/commands/config.js.map +1 -0
  12. package/dist/commands/index.d.ts +11 -0
  13. package/dist/commands/index.d.ts.map +1 -0
  14. package/dist/commands/index.js +11 -0
  15. package/dist/commands/index.js.map +1 -0
  16. package/dist/commands/init.d.ts +15 -0
  17. package/dist/commands/init.d.ts.map +1 -0
  18. package/dist/commands/init.js +116 -0
  19. package/dist/commands/init.js.map +1 -0
  20. package/dist/commands/rollback.d.ts +8 -0
  21. package/dist/commands/rollback.d.ts.map +1 -0
  22. package/dist/commands/rollback.js +238 -0
  23. package/dist/commands/rollback.js.map +1 -0
  24. package/dist/commands/run.d.ts +28 -0
  25. package/dist/commands/run.d.ts.map +1 -0
  26. package/dist/commands/run.js +407 -0
  27. package/dist/commands/run.js.map +1 -0
  28. package/dist/commands/status.d.ts +8 -0
  29. package/dist/commands/status.d.ts.map +1 -0
  30. package/dist/commands/status.js +399 -0
  31. package/dist/commands/status.js.map +1 -0
  32. package/dist/core/action-executor.d.ts +96 -0
  33. package/dist/core/action-executor.d.ts.map +1 -0
  34. package/dist/core/action-executor.js +289 -0
  35. package/dist/core/action-executor.js.map +1 -0
  36. package/dist/core/checkpoint-manager.d.ts +94 -0
  37. package/dist/core/checkpoint-manager.d.ts.map +1 -0
  38. package/dist/core/checkpoint-manager.js +236 -0
  39. package/dist/core/checkpoint-manager.js.map +1 -0
  40. package/dist/core/config-manager.d.ts +62 -0
  41. package/dist/core/config-manager.d.ts.map +1 -0
  42. package/dist/core/config-manager.js +184 -0
  43. package/dist/core/config-manager.js.map +1 -0
  44. package/dist/core/config-schema.d.ts +74 -0
  45. package/dist/core/config-schema.d.ts.map +1 -0
  46. package/dist/core/config-schema.js +84 -0
  47. package/dist/core/config-schema.js.map +1 -0
  48. package/dist/core/context-builder.d.ts +116 -0
  49. package/dist/core/context-builder.d.ts.map +1 -0
  50. package/dist/core/context-builder.js +388 -0
  51. package/dist/core/context-builder.js.map +1 -0
  52. package/dist/core/feedback-builder.d.ts +94 -0
  53. package/dist/core/feedback-builder.d.ts.map +1 -0
  54. package/dist/core/feedback-builder.js +226 -0
  55. package/dist/core/feedback-builder.js.map +1 -0
  56. package/dist/core/file-safeguard.d.ts +109 -0
  57. package/dist/core/file-safeguard.d.ts.map +1 -0
  58. package/dist/core/file-safeguard.js +200 -0
  59. package/dist/core/file-safeguard.js.map +1 -0
  60. package/dist/core/git-branch-manager.d.ts +122 -0
  61. package/dist/core/git-branch-manager.d.ts.map +1 -0
  62. package/dist/core/git-branch-manager.js +302 -0
  63. package/dist/core/git-branch-manager.js.map +1 -0
  64. package/dist/core/github-plan.d.ts +86 -0
  65. package/dist/core/github-plan.d.ts.map +1 -0
  66. package/dist/core/github-plan.js +333 -0
  67. package/dist/core/github-plan.js.map +1 -0
  68. package/dist/core/index.d.ts +43 -0
  69. package/dist/core/index.d.ts.map +1 -0
  70. package/dist/core/index.js +26 -0
  71. package/dist/core/index.js.map +1 -0
  72. package/dist/core/local-markdown-plan.d.ts +65 -0
  73. package/dist/core/local-markdown-plan.d.ts.map +1 -0
  74. package/dist/core/local-markdown-plan.js +154 -0
  75. package/dist/core/local-markdown-plan.js.map +1 -0
  76. package/dist/core/loop-engine.d.ts +133 -0
  77. package/dist/core/loop-engine.d.ts.map +1 -0
  78. package/dist/core/loop-engine.js +420 -0
  79. package/dist/core/loop-engine.js.map +1 -0
  80. package/dist/core/loop-events.d.ts +48 -0
  81. package/dist/core/loop-events.d.ts.map +1 -0
  82. package/dist/core/loop-events.js +24 -0
  83. package/dist/core/loop-events.js.map +1 -0
  84. package/dist/core/loop-state.d.ts +51 -0
  85. package/dist/core/loop-state.d.ts.map +1 -0
  86. package/dist/core/loop-state.js +48 -0
  87. package/dist/core/loop-state.js.map +1 -0
  88. package/dist/core/markdown-parser.d.ts +51 -0
  89. package/dist/core/markdown-parser.d.ts.map +1 -0
  90. package/dist/core/markdown-parser.js +122 -0
  91. package/dist/core/markdown-parser.js.map +1 -0
  92. package/dist/core/plan-manager.d.ts +61 -0
  93. package/dist/core/plan-manager.d.ts.map +1 -0
  94. package/dist/core/plan-manager.js +7 -0
  95. package/dist/core/plan-manager.js.map +1 -0
  96. package/dist/core/progress-tracker.d.ts +74 -0
  97. package/dist/core/progress-tracker.d.ts.map +1 -0
  98. package/dist/core/progress-tracker.js +198 -0
  99. package/dist/core/progress-tracker.js.map +1 -0
  100. package/dist/core/prompt-examples.d.ts +52 -0
  101. package/dist/core/prompt-examples.d.ts.map +1 -0
  102. package/dist/core/prompt-examples.js +194 -0
  103. package/dist/core/prompt-examples.js.map +1 -0
  104. package/dist/core/response-parser.d.ts +90 -0
  105. package/dist/core/response-parser.d.ts.map +1 -0
  106. package/dist/core/response-parser.js +209 -0
  107. package/dist/core/response-parser.js.map +1 -0
  108. package/dist/core/verification-hooks.d.ts +103 -0
  109. package/dist/core/verification-hooks.d.ts.map +1 -0
  110. package/dist/core/verification-hooks.js +268 -0
  111. package/dist/core/verification-hooks.js.map +1 -0
  112. package/dist/index.d.ts +13 -0
  113. package/dist/index.d.ts.map +1 -0
  114. package/dist/index.js +17 -0
  115. package/dist/index.js.map +1 -0
  116. package/dist/integrations/auth.d.ts +28 -0
  117. package/dist/integrations/auth.d.ts.map +1 -0
  118. package/dist/integrations/auth.js +76 -0
  119. package/dist/integrations/auth.js.map +1 -0
  120. package/dist/integrations/copilot-agent.d.ts +104 -0
  121. package/dist/integrations/copilot-agent.d.ts.map +1 -0
  122. package/dist/integrations/copilot-agent.js +235 -0
  123. package/dist/integrations/copilot-agent.js.map +1 -0
  124. package/dist/integrations/index.d.ts +18 -0
  125. package/dist/integrations/index.d.ts.map +1 -0
  126. package/dist/integrations/index.js +14 -0
  127. package/dist/integrations/index.js.map +1 -0
  128. package/dist/integrations/mcp-tools.d.ts +129 -0
  129. package/dist/integrations/mcp-tools.d.ts.map +1 -0
  130. package/dist/integrations/mcp-tools.js +272 -0
  131. package/dist/integrations/mcp-tools.js.map +1 -0
  132. package/dist/integrations/tokens.d.ts +45 -0
  133. package/dist/integrations/tokens.d.ts.map +1 -0
  134. package/dist/integrations/tokens.js +50 -0
  135. package/dist/integrations/tokens.js.map +1 -0
  136. package/dist/types/index.d.ts +53 -0
  137. package/dist/types/index.d.ts.map +1 -0
  138. package/dist/types/index.js +7 -0
  139. package/dist/types/index.js.map +1 -0
  140. package/dist/utils/index.d.ts +23 -0
  141. package/dist/utils/index.d.ts.map +1 -0
  142. package/dist/utils/index.js +37 -0
  143. package/dist/utils/index.js.map +1 -0
  144. package/dist/utils/output.d.ts +59 -0
  145. package/dist/utils/output.d.ts.map +1 -0
  146. package/dist/utils/output.js +96 -0
  147. package/dist/utils/output.js.map +1 -0
  148. package/dist/utils/paths.d.ts +34 -0
  149. package/dist/utils/paths.d.ts.map +1 -0
  150. package/dist/utils/paths.js +67 -0
  151. package/dist/utils/paths.js.map +1 -0
  152. package/dist/utils/shell.d.ts +26 -0
  153. package/dist/utils/shell.d.ts.map +1 -0
  154. package/dist/utils/shell.js +65 -0
  155. package/dist/utils/shell.js.map +1 -0
  156. package/dist/utils/validation.d.ts +27 -0
  157. package/dist/utils/validation.d.ts.map +1 -0
  158. package/dist/utils/validation.js +43 -0
  159. package/dist/utils/validation.js.map +1 -0
  160. package/package.json +86 -0
@@ -0,0 +1,333 @@
1
+ /**
2
+ * GitHub Issues Plan Source
3
+ *
4
+ * Implementation of PlanManager for GitHub Issues
5
+ */
6
+ import { Octokit } from '@octokit/rest';
7
+ import { getGitHubAuth } from '../integrations/auth.js';
8
+ import { debug, info, warn } from '../utils/output.js';
9
+ /**
10
+ * GitHub Issues Plan implementation
11
+ */
12
+ export class GitHubPlan {
13
+ sourceType = 'github';
14
+ config;
15
+ octokit = null;
16
+ issues = [];
17
+ currentUser = null;
18
+ constructor(config) {
19
+ this.config = {
20
+ inProgressLabel: 'in-progress',
21
+ addComments: true,
22
+ ...config,
23
+ };
24
+ }
25
+ /**
26
+ * Initialize by authenticating and loading issues
27
+ */
28
+ async initialize() {
29
+ debug(`Initializing GitHub plan for ${this.config.owner}/${this.config.repo}`);
30
+ // Get authentication
31
+ const auth = getGitHubAuth();
32
+ if (!auth.authenticated || !auth.token) {
33
+ throw new Error('GitHub authentication required. Run "gh auth login" or set GITHUB_TOKEN.');
34
+ }
35
+ this.octokit = new Octokit({ auth: auth.token });
36
+ // Get current user
37
+ try {
38
+ const { data: user } = await this.octokit.users.getAuthenticated();
39
+ this.currentUser = user.login;
40
+ debug(`Authenticated as ${this.currentUser}`);
41
+ }
42
+ catch {
43
+ warn('Could not determine current user');
44
+ }
45
+ // Load issues
46
+ await this.loadIssues();
47
+ }
48
+ /**
49
+ * Load issues from GitHub
50
+ */
51
+ async loadIssues() {
52
+ if (!this.octokit) {
53
+ throw new Error('Not initialized. Call initialize() first.');
54
+ }
55
+ const { owner, repo, label, milestone, assignee } = this.config;
56
+ const params = {
57
+ owner,
58
+ repo,
59
+ state: 'open',
60
+ per_page: 100,
61
+ };
62
+ if (label) {
63
+ params.labels = label;
64
+ }
65
+ if (assignee) {
66
+ params.assignee = assignee;
67
+ }
68
+ if (milestone) {
69
+ // Need to get milestone number from name
70
+ const milestones = await this.octokit.issues.listMilestones({
71
+ owner,
72
+ repo,
73
+ state: 'open',
74
+ });
75
+ const found = milestones.data.find((m) => m.title === milestone);
76
+ if (found) {
77
+ params.milestone = String(found.number);
78
+ }
79
+ else {
80
+ warn(`Milestone "${milestone}" not found`);
81
+ }
82
+ }
83
+ const { data } = await this.octokit.issues.listForRepo(params);
84
+ // Filter out pull requests (they show up in issues API)
85
+ this.issues = data
86
+ .filter((issue) => !('pull_request' in issue))
87
+ .map((issue) => ({
88
+ number: issue.number,
89
+ title: issue.title,
90
+ body: issue.body ?? null,
91
+ state: issue.state,
92
+ labels: issue.labels.filter((l) => typeof l === 'object' && 'name' in l),
93
+ assignees: issue.assignees?.map((a) => ({ login: a.login })) ?? [],
94
+ }));
95
+ info(`Loaded ${this.issues.length} issues from ${owner}/${repo}`);
96
+ }
97
+ /**
98
+ * Convert GitHub issue to Task
99
+ */
100
+ toTask(issue) {
101
+ const hasInProgressLabel = issue.labels.some((l) => l.name === this.config.inProgressLabel);
102
+ return {
103
+ id: `github-${issue.number}`,
104
+ title: issue.title,
105
+ content: issue.body ?? issue.title,
106
+ status: hasInProgressLabel ? 'in-progress' : 'pending',
107
+ source: 'github',
108
+ };
109
+ }
110
+ /**
111
+ * Get all tasks, optionally filtered
112
+ */
113
+ async getTasks(filter) {
114
+ let tasks = this.issues.map((i) => this.toTask(i));
115
+ if (filter?.status && filter.status !== 'all') {
116
+ tasks = tasks.filter((t) => t.status === filter.status);
117
+ }
118
+ if (filter?.limit && filter.limit > 0) {
119
+ tasks = tasks.slice(0, filter.limit);
120
+ }
121
+ return tasks;
122
+ }
123
+ /**
124
+ * Get the next pending task
125
+ */
126
+ async getNextTask() {
127
+ // Prioritize issues already in-progress, then oldest pending
128
+ const inProgress = this.issues.find((i) => i.labels.some((l) => l.name === this.config.inProgressLabel));
129
+ if (inProgress) {
130
+ return this.toTask(inProgress);
131
+ }
132
+ const pending = this.issues.find((i) => !i.labels.some((l) => l.name === this.config.inProgressLabel));
133
+ return pending ? this.toTask(pending) : null;
134
+ }
135
+ /**
136
+ * Get a specific task by ID
137
+ */
138
+ async getTask(id) {
139
+ const issueNumber = this.parseIssueNumber(id);
140
+ if (!issueNumber)
141
+ return null;
142
+ const issue = this.issues.find((i) => i.number === issueNumber);
143
+ return issue ? this.toTask(issue) : null;
144
+ }
145
+ /**
146
+ * Mark a task as in-progress
147
+ */
148
+ async startTask(id) {
149
+ if (!this.octokit) {
150
+ throw new Error('Not initialized');
151
+ }
152
+ const issueNumber = this.parseIssueNumber(id);
153
+ if (!issueNumber)
154
+ return;
155
+ const { owner, repo, inProgressLabel } = this.config;
156
+ // Add in-progress label
157
+ if (inProgressLabel) {
158
+ try {
159
+ await this.octokit.issues.addLabels({
160
+ owner,
161
+ repo,
162
+ issue_number: issueNumber,
163
+ labels: [inProgressLabel],
164
+ });
165
+ debug(`Added label "${inProgressLabel}" to issue #${issueNumber}`);
166
+ }
167
+ catch {
168
+ warn(`Could not add label "${inProgressLabel}" to issue #${issueNumber}`);
169
+ }
170
+ }
171
+ // Assign current user
172
+ if (this.currentUser) {
173
+ try {
174
+ await this.octokit.issues.addAssignees({
175
+ owner,
176
+ repo,
177
+ issue_number: issueNumber,
178
+ assignees: [this.currentUser],
179
+ });
180
+ debug(`Assigned ${this.currentUser} to issue #${issueNumber}`);
181
+ }
182
+ catch {
183
+ warn(`Could not assign ${this.currentUser} to issue #${issueNumber}`);
184
+ }
185
+ }
186
+ // Add start comment
187
+ if (this.config.addComments) {
188
+ try {
189
+ await this.octokit.issues.createComment({
190
+ owner,
191
+ repo,
192
+ issue_number: issueNumber,
193
+ body: `🤖 **Ralph CLI** started working on this issue.\n\nTimestamp: ${new Date().toISOString()}`,
194
+ });
195
+ }
196
+ catch {
197
+ warn(`Could not add comment to issue #${issueNumber}`);
198
+ }
199
+ }
200
+ }
201
+ /**
202
+ * Mark a task as completed
203
+ */
204
+ async completeTask(id) {
205
+ if (!this.octokit) {
206
+ throw new Error('Not initialized');
207
+ }
208
+ const issueNumber = this.parseIssueNumber(id);
209
+ if (!issueNumber)
210
+ return;
211
+ const { owner, repo, inProgressLabel } = this.config;
212
+ // Remove in-progress label
213
+ if (inProgressLabel) {
214
+ try {
215
+ await this.octokit.issues.removeLabel({
216
+ owner,
217
+ repo,
218
+ issue_number: issueNumber,
219
+ name: inProgressLabel,
220
+ });
221
+ }
222
+ catch {
223
+ // Label might not exist
224
+ }
225
+ }
226
+ // Add completion comment
227
+ if (this.config.addComments) {
228
+ try {
229
+ await this.octokit.issues.createComment({
230
+ owner,
231
+ repo,
232
+ issue_number: issueNumber,
233
+ body: `✅ **Ralph CLI** completed this task.\n\nTimestamp: ${new Date().toISOString()}`,
234
+ });
235
+ }
236
+ catch {
237
+ warn(`Could not add comment to issue #${issueNumber}`);
238
+ }
239
+ }
240
+ // Close the issue
241
+ try {
242
+ await this.octokit.issues.update({
243
+ owner,
244
+ repo,
245
+ issue_number: issueNumber,
246
+ state: 'closed',
247
+ });
248
+ info(`Closed issue #${issueNumber}`);
249
+ }
250
+ catch {
251
+ warn(`Could not close issue #${issueNumber}`);
252
+ }
253
+ }
254
+ /**
255
+ * Mark a task as failed
256
+ */
257
+ async failTask(id, errorMessage) {
258
+ if (!this.octokit) {
259
+ throw new Error('Not initialized');
260
+ }
261
+ const issueNumber = this.parseIssueNumber(id);
262
+ if (!issueNumber)
263
+ return;
264
+ const { owner, repo, inProgressLabel } = this.config;
265
+ // Remove in-progress label
266
+ if (inProgressLabel) {
267
+ try {
268
+ await this.octokit.issues.removeLabel({
269
+ owner,
270
+ repo,
271
+ issue_number: issueNumber,
272
+ name: inProgressLabel,
273
+ });
274
+ }
275
+ catch {
276
+ // Label might not exist
277
+ }
278
+ }
279
+ // Add failure comment
280
+ if (this.config.addComments) {
281
+ const body = errorMessage
282
+ ? `❌ **Ralph CLI** failed on this task.\n\nError: ${errorMessage}\n\nTimestamp: ${new Date().toISOString()}`
283
+ : `❌ **Ralph CLI** failed on this task.\n\nTimestamp: ${new Date().toISOString()}`;
284
+ try {
285
+ await this.octokit.issues.createComment({
286
+ owner,
287
+ repo,
288
+ issue_number: issueNumber,
289
+ body,
290
+ });
291
+ }
292
+ catch {
293
+ warn(`Could not add comment to issue #${issueNumber}`);
294
+ }
295
+ }
296
+ }
297
+ /**
298
+ * Update task progress
299
+ */
300
+ async updateProgress(id, progress) {
301
+ if (!this.octokit || !this.config.addComments)
302
+ return;
303
+ const issueNumber = this.parseIssueNumber(id);
304
+ if (!issueNumber)
305
+ return;
306
+ const { owner, repo } = this.config;
307
+ try {
308
+ await this.octokit.issues.createComment({
309
+ owner,
310
+ repo,
311
+ issue_number: issueNumber,
312
+ body: `🔄 **Ralph CLI** progress update:\n\n${progress}\n\nTimestamp: ${new Date().toISOString()}`,
313
+ });
314
+ }
315
+ catch {
316
+ warn(`Could not add progress comment to issue #${issueNumber}`);
317
+ }
318
+ }
319
+ /**
320
+ * Parse issue number from task ID
321
+ */
322
+ parseIssueNumber(id) {
323
+ const match = id.match(/^github-(\d+)$/);
324
+ return match ? parseInt(match[1] ?? '0', 10) : null;
325
+ }
326
+ /**
327
+ * Reload issues from GitHub
328
+ */
329
+ async reload() {
330
+ await this.loadIssues();
331
+ }
332
+ }
333
+ //# sourceMappingURL=github-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-plan.js","sourceRoot":"","sources":["../../src/core/github-plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Core Loop Engine
3
+ *
4
+ * This module contains the core loop engine that:
5
+ * - Manages the autonomous coding loop
6
+ * - Tracks iterations and progress
7
+ * - Handles checkpoints and state
8
+ */
9
+ export { LoopEngine } from './loop-engine.js';
10
+ export type { LoopEngineConfig, LoopCompletionReason } from './loop-engine.js';
11
+ export { LoopEventEmitter } from './loop-events.js';
12
+ export type { LoopEvents } from './loop-events.js';
13
+ export { createInitialState, createIterationRecord, completeIteration } from './loop-state.js';
14
+ export type { IterationRecord, FullLoopState } from './loop-state.js';
15
+ export { ConfigManager, isValidConfigKey, validateConfigValue, parseConfigValue, getGlobalConfigPath, getLocalConfigPath, DEFAULT_CONFIG, } from './config-manager.js';
16
+ export type { RalphConfiguration, ConfigKey } from './config-manager.js';
17
+ export type { PlanSource } from './config-schema.js';
18
+ export type { PlanManager, TaskFilter, PlanSourceType } from './plan-manager.js';
19
+ export { parseMarkdownPlan, toTask, updateTaskCheckbox } from './markdown-parser.js';
20
+ export type { ParsedMarkdownTask, ParsedMarkdownPlan } from './markdown-parser.js';
21
+ export { LocalMarkdownPlan } from './local-markdown-plan.js';
22
+ export { GitHubPlan } from './github-plan.js';
23
+ export type { GitHubPlanConfig } from './github-plan.js';
24
+ export { ProgressTracker } from './progress-tracker.js';
25
+ export type { SessionData } from './progress-tracker.js';
26
+ export { ContextBuilder, createContextBuilder } from './context-builder.js';
27
+ export type { ContextBuilderConfig, BuiltContext } from './context-builder.js';
28
+ export { GitBranchManager, createGitBranchManager } from './git-branch-manager.js';
29
+ export type { GitBranchConfig, WorkingDirStatus, BranchInfo } from './git-branch-manager.js';
30
+ export { CheckpointManager, createCheckpointManager } from './checkpoint-manager.js';
31
+ export type { CheckpointConfig, Checkpoint } from './checkpoint-manager.js';
32
+ export { FileSafeguardManager, createFileSafeguardManager } from './file-safeguard.js';
33
+ export type { FileSafeguardConfig, BaselineSnapshot, FileOperations } from './file-safeguard.js';
34
+ export { parseResponse, hasCompleteAction, getCompleteAction, getActionsByType } from './response-parser.js';
35
+ export type { ActionType, Action, CreateAction, EditAction, DeleteAction, ExecuteAction, CompleteAction, ParseResult, } from './response-parser.js';
36
+ export { ActionExecutor, createActionExecutor } from './action-executor.js';
37
+ export type { ActionResult, ExecutionResult, ActionExecutorConfig } from './action-executor.js';
38
+ export { VerificationManager, createVerificationManager, detectDefaultHooks, } from './verification-hooks.js';
39
+ export type { VerificationResult, VerificationHook, VerificationHookType, VerificationConfig, } from './verification-hooks.js';
40
+ export { FeedbackBuilder, createFeedbackBuilder } from './feedback-builder.js';
41
+ export type { FeedbackSectionType, FeedbackSection, IterationFeedback, FeedbackBuilderConfig, } from './feedback-builder.js';
42
+ export { CREATE_EXAMPLE, EDIT_EXAMPLE, DELETE_EXAMPLE, EXECUTE_EXAMPLE, COMPLETE_EXAMPLE, ALL_EXAMPLES, MINIMAL_EXAMPLES, FORMAT_INSTRUCTIONS, getPromptExamples, getModelStrength, getExamplesForModel, } from './prompt-examples.js';
43
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Core Loop Engine
3
+ *
4
+ * This module contains the core loop engine that:
5
+ * - Manages the autonomous coding loop
6
+ * - Tracks iterations and progress
7
+ * - Handles checkpoints and state
8
+ */
9
+ export { LoopEngine } from './loop-engine.js';
10
+ export { LoopEventEmitter } from './loop-events.js';
11
+ export { createInitialState, createIterationRecord, completeIteration } from './loop-state.js';
12
+ export { ConfigManager, isValidConfigKey, validateConfigValue, parseConfigValue, getGlobalConfigPath, getLocalConfigPath, DEFAULT_CONFIG, } from './config-manager.js';
13
+ export { parseMarkdownPlan, toTask, updateTaskCheckbox } from './markdown-parser.js';
14
+ export { LocalMarkdownPlan } from './local-markdown-plan.js';
15
+ export { GitHubPlan } from './github-plan.js';
16
+ export { ProgressTracker } from './progress-tracker.js';
17
+ export { ContextBuilder, createContextBuilder } from './context-builder.js';
18
+ export { GitBranchManager, createGitBranchManager } from './git-branch-manager.js';
19
+ export { CheckpointManager, createCheckpointManager } from './checkpoint-manager.js';
20
+ export { FileSafeguardManager, createFileSafeguardManager } from './file-safeguard.js';
21
+ export { parseResponse, hasCompleteAction, getCompleteAction, getActionsByType } from './response-parser.js';
22
+ export { ActionExecutor, createActionExecutor } from './action-executor.js';
23
+ export { VerificationManager, createVerificationManager, detectDefaultHooks, } from './verification-hooks.js';
24
+ export { FeedbackBuilder, createFeedbackBuilder } from './feedback-builder.js';
25
+ export { CREATE_EXAMPLE, EDIT_EXAMPLE, DELETE_EXAMPLE, EXECUTE_EXAMPLE, COMPLETE_EXAMPLE, ALL_EXAMPLES, MINIMAL_EXAMPLES, FORMAT_INSTRUCTIONS, getPromptExamples, getModelStrength, getExamplesForModel, } from './prompt-examples.js';
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG/F,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAGrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5E,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAGnF,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAGrF,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAGvF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAY7G,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAG5E,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAQjC,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAQ/E,OAAO,EACL,cAAc,EACd,YAAY,EACZ,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Local Markdown Plan Source
3
+ *
4
+ * Implementation of PlanManager for local Markdown files
5
+ */
6
+ import type { Task } from '../types/index.js';
7
+ import type { PlanManager, TaskFilter, PlanSourceType } from './plan-manager.js';
8
+ /**
9
+ * Local Markdown Plan implementation
10
+ */
11
+ export declare class LocalMarkdownPlan implements PlanManager {
12
+ readonly sourceType: PlanSourceType;
13
+ private filePath;
14
+ private plan;
15
+ constructor(filePath: string);
16
+ /**
17
+ * Get the plan file path
18
+ */
19
+ getFilePath(): string;
20
+ /**
21
+ * Initialize by loading and parsing the Markdown file
22
+ */
23
+ initialize(): Promise<void>;
24
+ /**
25
+ * Get all tasks, optionally filtered
26
+ */
27
+ getTasks(filter?: TaskFilter): Promise<Task[]>;
28
+ /**
29
+ * Get the next pending task
30
+ */
31
+ getNextTask(): Promise<Task | null>;
32
+ /**
33
+ * Get a specific task by ID
34
+ */
35
+ getTask(id: string): Promise<Task | null>;
36
+ /**
37
+ * Mark a task as in-progress
38
+ */
39
+ startTask(id: string): Promise<void>;
40
+ /**
41
+ * Mark a task as completed
42
+ */
43
+ completeTask(id: string): Promise<void>;
44
+ /**
45
+ * Mark a task as failed
46
+ */
47
+ failTask(id: string, _error?: string): Promise<void>;
48
+ /**
49
+ * Update task progress
50
+ */
51
+ updateProgress(id: string, progress: string): Promise<void>;
52
+ /**
53
+ * Update task checkbox in the file
54
+ */
55
+ private updateTaskStatus;
56
+ /**
57
+ * Get all sub-tasks of a parent task
58
+ */
59
+ getSubTasks(parentId: string): Promise<Task[]>;
60
+ /**
61
+ * Reload the plan from disk
62
+ */
63
+ reload(): Promise<void>;
64
+ }
65
+ //# sourceMappingURL=local-markdown-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-markdown-plan.d.ts","sourceRoot":"","sources":["../../src/core/local-markdown-plan.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AASjF;;GAEG;AACH,qBAAa,iBAAkB,YAAW,WAAW;IACnD,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAW;IAC9C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,IAAI,CAAmC;gBAEnC,QAAQ,EAAE,MAAM;IAI5B;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC;;OAEG;IACG,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAmBpD;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAqBzC;;OAEG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAS/C;;OAEG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1C;;OAEG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1D;;OAEG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjE;;OAEG;YACW,gBAAgB;IAuB9B;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAQpD;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAG9B"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Local Markdown Plan Source
3
+ *
4
+ * Implementation of PlanManager for local Markdown files
5
+ */
6
+ import fs from 'node:fs/promises';
7
+ import path from 'node:path';
8
+ import { parseMarkdownPlan, toTask, updateTaskCheckbox, } from './markdown-parser.js';
9
+ import { debug, info } from '../utils/output.js';
10
+ /**
11
+ * Local Markdown Plan implementation
12
+ */
13
+ export class LocalMarkdownPlan {
14
+ sourceType = 'local';
15
+ filePath;
16
+ plan = null;
17
+ constructor(filePath) {
18
+ this.filePath = path.resolve(filePath);
19
+ }
20
+ /**
21
+ * Get the plan file path
22
+ */
23
+ getFilePath() {
24
+ return this.filePath;
25
+ }
26
+ /**
27
+ * Initialize by loading and parsing the Markdown file
28
+ */
29
+ async initialize() {
30
+ debug(`Loading plan from ${this.filePath}`);
31
+ try {
32
+ const content = await fs.readFile(this.filePath, 'utf-8');
33
+ this.plan = parseMarkdownPlan(content);
34
+ info(`Loaded ${this.plan.tasks.length} tasks from ${path.basename(this.filePath)}`);
35
+ }
36
+ catch {
37
+ throw new Error(`Failed to load plan file: ${this.filePath}`);
38
+ }
39
+ }
40
+ /**
41
+ * Get all tasks, optionally filtered
42
+ */
43
+ async getTasks(filter) {
44
+ if (!this.plan) {
45
+ throw new Error('Plan not initialized. Call initialize() first.');
46
+ }
47
+ let tasks = this.plan.tasks.map((t) => toTask(t));
48
+ // Apply filters
49
+ if (filter?.status && filter.status !== 'all') {
50
+ tasks = tasks.filter((t) => t.status === filter.status);
51
+ }
52
+ if (filter?.limit && filter.limit > 0) {
53
+ tasks = tasks.slice(0, filter.limit);
54
+ }
55
+ return tasks;
56
+ }
57
+ /**
58
+ * Get the next pending task
59
+ */
60
+ async getNextTask() {
61
+ if (!this.plan) {
62
+ throw new Error('Plan not initialized. Call initialize() first.');
63
+ }
64
+ // Find first uncompleted task (top-level first)
65
+ const pendingTasks = this.plan.tasks.filter((t) => !t.completed && t.indentLevel === 0);
66
+ if (pendingTasks.length === 0) {
67
+ // If no top-level pending tasks, check nested ones
68
+ const nestedPending = this.plan.tasks.find((t) => !t.completed);
69
+ if (nestedPending) {
70
+ return toTask(nestedPending);
71
+ }
72
+ return null;
73
+ }
74
+ const firstPending = pendingTasks[0];
75
+ return firstPending ? toTask(firstPending) : null;
76
+ }
77
+ /**
78
+ * Get a specific task by ID
79
+ */
80
+ async getTask(id) {
81
+ if (!this.plan) {
82
+ throw new Error('Plan not initialized. Call initialize() first.');
83
+ }
84
+ const task = this.plan.tasks.find((t) => t.id === id);
85
+ return task ? toTask(task) : null;
86
+ }
87
+ /**
88
+ * Mark a task as in-progress
89
+ */
90
+ async startTask(id) {
91
+ if (!this.plan) {
92
+ throw new Error('Plan not initialized. Call initialize() first.');
93
+ }
94
+ // For local Markdown, we don't modify the file for in-progress status
95
+ // We could add a marker like "- [~]" but that's not standard Markdown
96
+ debug(`Task ${id} marked as in-progress`);
97
+ }
98
+ /**
99
+ * Mark a task as completed
100
+ */
101
+ async completeTask(id) {
102
+ await this.updateTaskStatus(id, true);
103
+ }
104
+ /**
105
+ * Mark a task as failed
106
+ */
107
+ async failTask(id, _error) {
108
+ // For failed tasks, we don't check the box - leave it unchecked
109
+ debug(`Task ${id} failed`);
110
+ }
111
+ /**
112
+ * Update task progress
113
+ */
114
+ async updateProgress(id, progress) {
115
+ debug(`Task ${id} progress: ${progress}`);
116
+ // Progress updates are logged but not written to the Markdown file
117
+ }
118
+ /**
119
+ * Update task checkbox in the file
120
+ */
121
+ async updateTaskStatus(id, completed) {
122
+ if (!this.plan) {
123
+ throw new Error('Plan not initialized. Call initialize() first.');
124
+ }
125
+ const task = this.plan.tasks.find((t) => t.id === id);
126
+ if (!task) {
127
+ throw new Error(`Task not found: ${id}`);
128
+ }
129
+ // Update the raw content
130
+ const updatedContent = updateTaskCheckbox(this.plan.rawContent, task.lineNumber, completed);
131
+ // Write back to file
132
+ await fs.writeFile(this.filePath, updatedContent, 'utf-8');
133
+ // Update in-memory state
134
+ task.completed = completed;
135
+ this.plan.rawContent = updatedContent;
136
+ debug(`Task ${id} checkbox updated to ${completed ? 'checked' : 'unchecked'}`);
137
+ }
138
+ /**
139
+ * Get all sub-tasks of a parent task
140
+ */
141
+ async getSubTasks(parentId) {
142
+ if (!this.plan) {
143
+ throw new Error('Plan not initialized. Call initialize() first.');
144
+ }
145
+ return this.plan.tasks.filter((t) => t.parentId === parentId).map((t) => toTask(t));
146
+ }
147
+ /**
148
+ * Reload the plan from disk
149
+ */
150
+ async reload() {
151
+ await this.initialize();
152
+ }
153
+ }
154
+ //# sourceMappingURL=local-markdown-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-markdown-plan.js","sourceRoot":"","sources":["../../src/core/local-markdown-plan.ts"],"names":[],"mappings":"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"}