hungry-ghost-hive 0.43.0 → 0.43.2
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.
- package/dist/cli/commands/agents.d.ts.map +1 -1
- package/dist/cli/commands/agents.js +4 -11
- package/dist/cli/commands/agents.js.map +1 -1
- package/dist/cli/commands/approach.d.ts.map +1 -1
- package/dist/cli/commands/approach.js +2 -6
- package/dist/cli/commands/approach.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +9 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/init.test.js +3 -0
- package/dist/cli/commands/init.test.js.map +1 -1
- package/dist/cli/commands/manager/index.d.ts +2 -27
- package/dist/cli/commands/manager/index.d.ts.map +1 -1
- package/dist/cli/commands/manager/index.js +23 -1519
- package/dist/cli/commands/manager/index.js.map +1 -1
- package/dist/cli/commands/manager/manager-utils.d.ts +9 -0
- package/dist/cli/commands/manager/manager-utils.d.ts.map +1 -0
- package/dist/cli/commands/manager/manager-utils.js +49 -0
- package/dist/cli/commands/manager/manager-utils.js.map +1 -0
- package/dist/cli/commands/manager/pr-sync-orchestrator.d.ts +7 -0
- package/dist/cli/commands/manager/pr-sync-orchestrator.d.ts.map +1 -0
- package/dist/cli/commands/manager/pr-sync-orchestrator.js +537 -0
- package/dist/cli/commands/manager/pr-sync-orchestrator.js.map +1 -0
- package/dist/cli/commands/manager/qa-review-handler.d.ts +15 -0
- package/dist/cli/commands/manager/qa-review-handler.d.ts.map +1 -0
- package/dist/cli/commands/manager/qa-review-handler.js +290 -0
- package/dist/cli/commands/manager/qa-review-handler.js.map +1 -0
- package/dist/cli/commands/manager/stuck-story-helpers.d.ts +32 -0
- package/dist/cli/commands/manager/stuck-story-helpers.d.ts.map +1 -0
- package/dist/cli/commands/manager/stuck-story-helpers.js +163 -0
- package/dist/cli/commands/manager/stuck-story-helpers.js.map +1 -0
- package/dist/cli/commands/manager/stuck-story-processor.d.ts +8 -0
- package/dist/cli/commands/manager/stuck-story-processor.d.ts.map +1 -0
- package/dist/cli/commands/manager/stuck-story-processor.js +392 -0
- package/dist/cli/commands/manager/stuck-story-processor.js.map +1 -0
- package/dist/cli/commands/manager/tech-lead-lifecycle.d.ts +3 -0
- package/dist/cli/commands/manager/tech-lead-lifecycle.d.ts.map +1 -0
- package/dist/cli/commands/manager/tech-lead-lifecycle.js +141 -0
- package/dist/cli/commands/manager/tech-lead-lifecycle.js.map +1 -0
- package/dist/cli/commands/my-stories.d.ts.map +1 -1
- package/dist/cli/commands/my-stories.js +5 -20
- package/dist/cli/commands/my-stories.js.map +1 -1
- package/dist/cli/commands/pr.js +7 -22
- package/dist/cli/commands/pr.js.map +1 -1
- package/dist/cli/commands/progress.d.ts.map +1 -1
- package/dist/cli/commands/progress.js +2 -5
- package/dist/cli/commands/progress.js.map +1 -1
- package/dist/cli/commands/resume.d.ts.map +1 -1
- package/dist/cli/commands/resume.js +3 -6
- package/dist/cli/commands/resume.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +2 -5
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/stories.d.ts.map +1 -1
- package/dist/cli/commands/stories.js +2 -5
- package/dist/cli/commands/stories.js.map +1 -1
- package/dist/cluster/adapters.d.ts +3 -2
- package/dist/cluster/adapters.d.ts.map +1 -1
- package/dist/cluster/adapters.js +2 -11
- package/dist/cluster/adapters.js.map +1 -1
- package/dist/cluster/cluster-http-server.d.ts +20 -0
- package/dist/cluster/cluster-http-server.d.ts.map +1 -0
- package/dist/cluster/cluster-http-server.js +140 -0
- package/dist/cluster/cluster-http-server.js.map +1 -0
- package/dist/cluster/heartbeat-manager.d.ts +24 -0
- package/dist/cluster/heartbeat-manager.d.ts.map +1 -0
- package/dist/cluster/heartbeat-manager.js +74 -0
- package/dist/cluster/heartbeat-manager.js.map +1 -0
- package/dist/cluster/raft-state-machine.d.ts +48 -0
- package/dist/cluster/raft-state-machine.d.ts.map +1 -0
- package/dist/cluster/raft-state-machine.js +207 -0
- package/dist/cluster/raft-state-machine.js.map +1 -0
- package/dist/cluster/runtime.d.ts +5 -29
- package/dist/cluster/runtime.d.ts.map +1 -1
- package/dist/cluster/runtime.js +58 -406
- package/dist/cluster/runtime.js.map +1 -1
- package/dist/integrations/jira/sync.d.ts +2 -5
- package/dist/integrations/jira/sync.d.ts.map +1 -1
- package/dist/integrations/jira/sync.js +116 -178
- package/dist/integrations/jira/sync.js.map +1 -1
- package/dist/utils/cli-helpers.d.ts +19 -0
- package/dist/utils/cli-helpers.d.ts.map +1 -0
- package/dist/utils/cli-helpers.js +51 -0
- package/dist/utils/cli-helpers.js.map +1 -0
- package/dist/utils/cli-helpers.test.d.ts +2 -0
- package/dist/utils/cli-helpers.test.d.ts.map +1 -0
- package/dist/utils/cli-helpers.test.js +100 -0
- package/dist/utils/cli-helpers.test.js.map +1 -0
- package/dist/utils/github-cli.d.ts +3 -0
- package/dist/utils/github-cli.d.ts.map +1 -0
- package/dist/utils/github-cli.js +4 -0
- package/dist/utils/github-cli.js.map +1 -0
- package/dist/utils/pr-sync.d.ts.map +1 -1
- package/dist/utils/pr-sync.js +1 -2
- package/dist/utils/pr-sync.js.map +1 -1
- package/dist/utils/story-status.d.ts +19 -0
- package/dist/utils/story-status.d.ts.map +1 -0
- package/dist/utils/story-status.js +58 -0
- package/dist/utils/story-status.js.map +1 -0
- package/dist/utils/story-status.test.d.ts +2 -0
- package/dist/utils/story-status.test.d.ts.map +1 -0
- package/dist/utils/story-status.test.js +65 -0
- package/dist/utils/story-status.test.js.map +1 -0
- package/package.json +1 -1
- package/src/cli/commands/agents.ts +3 -11
- package/src/cli/commands/approach.ts +2 -7
- package/src/cli/commands/init.test.ts +4 -0
- package/src/cli/commands/init.ts +9 -0
- package/src/cli/commands/manager/index.ts +166 -2236
- package/src/cli/commands/manager/manager-utils.ts +85 -0
- package/src/cli/commands/manager/pr-sync-orchestrator.ts +659 -0
- package/src/cli/commands/manager/qa-review-handler.ts +399 -0
- package/src/cli/commands/manager/stuck-story-helpers.ts +255 -0
- package/src/cli/commands/manager/stuck-story-processor.ts +604 -0
- package/src/cli/commands/manager/tech-lead-lifecycle.ts +210 -0
- package/src/cli/commands/my-stories.ts +5 -30
- package/src/cli/commands/pr.ts +6 -22
- package/src/cli/commands/progress.ts +2 -7
- package/src/cli/commands/resume.ts +3 -6
- package/src/cli/commands/status.ts +2 -5
- package/src/cli/commands/stories.ts +2 -5
- package/src/cluster/adapters.ts +3 -12
- package/src/cluster/cluster-http-server.ts +187 -0
- package/src/cluster/heartbeat-manager.ts +112 -0
- package/src/cluster/raft-state-machine.ts +267 -0
- package/src/cluster/runtime.ts +71 -515
- package/src/integrations/jira/sync.ts +157 -215
- package/src/utils/cli-helpers.test.ts +138 -0
- package/src/utils/cli-helpers.ts +61 -0
- package/src/utils/github-cli.ts +4 -0
- package/src/utils/pr-sync.ts +1 -3
- package/src/utils/story-status.test.ts +74 -0
- package/src/utils/story-status.ts +62 -0
|
@@ -9,63 +9,13 @@ import { createLog } from '../../db/queries/logs.js';
|
|
|
9
9
|
import { getStoryById, updateStory } from '../../db/queries/stories.js';
|
|
10
10
|
import * as logger from '../../utils/logger.js';
|
|
11
11
|
import { getHivePaths } from '../../utils/paths.js';
|
|
12
|
+
import { isForwardTransition, isStatusRegression } from '../../utils/story-status.js';
|
|
12
13
|
import { JiraClient } from './client.js';
|
|
13
14
|
import { createSubtask, postComment } from './comments.js';
|
|
14
15
|
import { getIssue } from './issues.js';
|
|
15
16
|
import { syncRequirementToJira, tryMoveToActiveSprint } from './stories.js';
|
|
16
17
|
import { syncStoryStatusToJira, transitionJiraIssue } from './transitions.js';
|
|
17
|
-
|
|
18
|
-
* Ordered lifecycle stages for Hive stories.
|
|
19
|
-
* Used to prevent bidirectional sync from regressing story status.
|
|
20
|
-
*/
|
|
21
|
-
const STATUS_LIFECYCLE_ORDER = [
|
|
22
|
-
'draft',
|
|
23
|
-
'estimated',
|
|
24
|
-
'planned',
|
|
25
|
-
'in_progress',
|
|
26
|
-
'review',
|
|
27
|
-
'qa',
|
|
28
|
-
'qa_failed',
|
|
29
|
-
'pr_submitted',
|
|
30
|
-
'merged',
|
|
31
|
-
];
|
|
32
|
-
/**
|
|
33
|
-
* Check if transitioning from currentStatus to newStatus would be a regression.
|
|
34
|
-
* Returns true if the new status is earlier in the lifecycle than the current one.
|
|
35
|
-
*/
|
|
36
|
-
function isStatusRegression(currentStatus, newStatus) {
|
|
37
|
-
const currentIdx = STATUS_LIFECYCLE_ORDER.indexOf(currentStatus);
|
|
38
|
-
const newIdx = STATUS_LIFECYCLE_ORDER.indexOf(newStatus);
|
|
39
|
-
// If either status is unknown, allow the transition
|
|
40
|
-
if (currentIdx === -1 || newIdx === -1)
|
|
41
|
-
return false;
|
|
42
|
-
return newIdx < currentIdx;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Status progression order for the Hive pipeline.
|
|
46
|
-
* Higher numbers represent further progress. Used to prevent
|
|
47
|
-
* Jira sync from regressing stories backward.
|
|
48
|
-
*/
|
|
49
|
-
const STATUS_ORDER = {
|
|
50
|
-
draft: 0,
|
|
51
|
-
estimated: 1,
|
|
52
|
-
planned: 2,
|
|
53
|
-
in_progress: 3,
|
|
54
|
-
review: 4,
|
|
55
|
-
pr_submitted: 5,
|
|
56
|
-
qa: 6,
|
|
57
|
-
qa_failed: 4, // allowed as a backward step from qa
|
|
58
|
-
merged: 7,
|
|
59
|
-
};
|
|
60
|
-
/**
|
|
61
|
-
* Check whether transitioning from currentStatus to newStatus is a
|
|
62
|
-
* forward (or lateral) move in the pipeline.
|
|
63
|
-
*/
|
|
64
|
-
export function isForwardTransition(currentStatus, newStatus) {
|
|
65
|
-
const currentOrder = STATUS_ORDER[currentStatus] ?? -1;
|
|
66
|
-
const newOrder = STATUS_ORDER[newStatus] ?? -1;
|
|
67
|
-
return newOrder >= currentOrder;
|
|
68
|
-
}
|
|
18
|
+
export { isForwardTransition };
|
|
69
19
|
/**
|
|
70
20
|
* Convert a Jira status name to a Hive status using the configured status mapping.
|
|
71
21
|
* @param jiraStatusName - The Jira status name (e.g., "In Progress")
|
|
@@ -82,6 +32,66 @@ export function jiraStatusToHiveStatus(jiraStatusName, statusMapping) {
|
|
|
82
32
|
}
|
|
83
33
|
return null;
|
|
84
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Create a JiraClient from environment variables.
|
|
37
|
+
* Shared by all sync functions in this module.
|
|
38
|
+
*/
|
|
39
|
+
function createJiraClient(tokenStore) {
|
|
40
|
+
loadEnvIntoProcess();
|
|
41
|
+
return new JiraClient({
|
|
42
|
+
tokenStore,
|
|
43
|
+
clientId: process.env.JIRA_CLIENT_ID || '',
|
|
44
|
+
clientSecret: process.env.JIRA_CLIENT_SECRET || '',
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Shared loop used by both bidirectional sync functions.
|
|
49
|
+
*
|
|
50
|
+
* For each story, fetches the current Jira status, converts it to a Hive status
|
|
51
|
+
* via the configured mapping, skips if unmapped, then delegates to `onMappedStatus`
|
|
52
|
+
* for the direction-specific action. Catches and logs per-story errors so one
|
|
53
|
+
* failing story does not abort the entire batch.
|
|
54
|
+
*
|
|
55
|
+
* @param db - Database instance (used for error logging)
|
|
56
|
+
* @param client - Authenticated JiraClient
|
|
57
|
+
* @param config - Jira configuration with status_mapping
|
|
58
|
+
* @param stories - Stories to process
|
|
59
|
+
* @param getIssueKey - Returns the Jira issue key for a given story row
|
|
60
|
+
* @param onMappedStatus - Called when a Jira status is successfully mapped;
|
|
61
|
+
* returns true if the story was acted upon (counted toward the return value)
|
|
62
|
+
* @returns Number of stories acted upon
|
|
63
|
+
*/
|
|
64
|
+
async function processBidirectionalStatusSync(db, client, config, stories, getIssueKey, onMappedStatus) {
|
|
65
|
+
let count = 0;
|
|
66
|
+
for (const story of stories) {
|
|
67
|
+
const issueKey = getIssueKey(story);
|
|
68
|
+
try {
|
|
69
|
+
const jiraIssue = await getIssue(client, issueKey, ['status']);
|
|
70
|
+
const jiraStatusName = jiraIssue.fields.status.name;
|
|
71
|
+
const mappedHiveStatus = jiraStatusToHiveStatus(jiraStatusName, config.status_mapping);
|
|
72
|
+
if (!mappedHiveStatus) {
|
|
73
|
+
logger.debug(`No Hive status mapping for Jira status "${jiraStatusName}" (${issueKey}), skipping`);
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
if (await onMappedStatus(story, issueKey, jiraStatusName, mappedHiveStatus)) {
|
|
77
|
+
count++;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
82
|
+
logger.warn(`Failed to sync Jira status for story ${story.id} (${issueKey}): ${message}`);
|
|
83
|
+
createLog(db, {
|
|
84
|
+
agentId: 'manager',
|
|
85
|
+
storyId: story.id,
|
|
86
|
+
eventType: 'JIRA_SYNC_WARNING',
|
|
87
|
+
status: 'warn',
|
|
88
|
+
message: `Failed to sync status: ${message}`,
|
|
89
|
+
metadata: { jiraKey: issueKey, error: message },
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return count;
|
|
94
|
+
}
|
|
85
95
|
/**
|
|
86
96
|
* Sync Jira issue statuses back to the Hive database.
|
|
87
97
|
* This detects manual status changes in Jira (e.g., dragging cards on the board)
|
|
@@ -103,71 +113,40 @@ export async function syncJiraStatusesToHive(db, tokenStore, config) {
|
|
|
103
113
|
if (storiesWithJira.length === 0) {
|
|
104
114
|
return 0;
|
|
105
115
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
let updatedCount = 0;
|
|
113
|
-
for (const story of storiesWithJira) {
|
|
114
|
-
try {
|
|
115
|
-
// Fetch current Jira issue status
|
|
116
|
-
const jiraIssue = await getIssue(client, story.external_issue_key, ['status']);
|
|
117
|
-
const jiraStatusName = jiraIssue.fields.status.name;
|
|
118
|
-
// Convert Jira status to Hive status
|
|
119
|
-
const mappedHiveStatus = jiraStatusToHiveStatus(jiraStatusName, config.status_mapping);
|
|
120
|
-
if (!mappedHiveStatus) {
|
|
121
|
-
logger.debug(`No Hive status mapping for Jira status "${jiraStatusName}" (${story.external_issue_key}), skipping`);
|
|
122
|
-
continue;
|
|
123
|
-
}
|
|
124
|
-
// Check if status differs from current Hive status
|
|
125
|
-
// Guard: never regress status backward in the lifecycle
|
|
126
|
-
if (isStatusRegression(story.status, mappedHiveStatus)) {
|
|
127
|
-
logger.debug(`Skipping Jira sync for ${story.id}: would regress ${story.status} → ${mappedHiveStatus}`);
|
|
128
|
-
continue;
|
|
129
|
-
}
|
|
130
|
-
if (mappedHiveStatus !== story.status) {
|
|
131
|
-
// Only allow forward transitions — never regress stories backward
|
|
132
|
-
if (!isForwardTransition(story.status, mappedHiveStatus)) {
|
|
133
|
-
logger.debug(`Skipping backward Jira sync for story ${story.id} (${story.external_issue_key}): ` +
|
|
134
|
-
`would regress ${story.status} → ${mappedHiveStatus} (Jira: "${jiraStatusName}")`);
|
|
135
|
-
continue;
|
|
136
|
-
}
|
|
137
|
-
// Update the story status in Hive
|
|
138
|
-
await withTransaction(db, () => {
|
|
139
|
-
updateStory(db, story.id, { status: mappedHiveStatus });
|
|
140
|
-
createLog(db, {
|
|
141
|
-
agentId: 'manager',
|
|
142
|
-
storyId: story.id,
|
|
143
|
-
eventType: 'JIRA_SYNC_COMPLETED',
|
|
144
|
-
message: `Synced status from Jira: ${story.status} → ${mappedHiveStatus} (Jira: "${jiraStatusName}")`,
|
|
145
|
-
metadata: {
|
|
146
|
-
jiraKey: story.external_issue_key,
|
|
147
|
-
oldHiveStatus: story.status,
|
|
148
|
-
newHiveStatus: mappedHiveStatus,
|
|
149
|
-
jiraStatus: jiraStatusName,
|
|
150
|
-
},
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
logger.debug(`Synced Jira status for story ${story.id} (${story.external_issue_key}): ${story.status} → ${mappedHiveStatus}`);
|
|
154
|
-
updatedCount++;
|
|
155
|
-
}
|
|
116
|
+
const client = createJiraClient(tokenStore);
|
|
117
|
+
return processBidirectionalStatusSync(db, client, config, storiesWithJira, story => story.external_issue_key, async (story, issueKey, jiraStatusName, mappedHiveStatus) => {
|
|
118
|
+
// Guard: never regress status backward in the lifecycle
|
|
119
|
+
if (isStatusRegression(story.status, mappedHiveStatus)) {
|
|
120
|
+
logger.debug(`Skipping Jira sync for ${story.id}: would regress ${story.status} → ${mappedHiveStatus}`);
|
|
121
|
+
return false;
|
|
156
122
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
123
|
+
if (mappedHiveStatus === story.status)
|
|
124
|
+
return false;
|
|
125
|
+
// Only allow forward transitions — never regress stories backward
|
|
126
|
+
if (!isForwardTransition(story.status, mappedHiveStatus)) {
|
|
127
|
+
logger.debug(`Skipping backward Jira sync for story ${story.id} (${issueKey}): ` +
|
|
128
|
+
`would regress ${story.status} → ${mappedHiveStatus} (Jira: "${jiraStatusName}")`);
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
// Update the story status in Hive
|
|
132
|
+
await withTransaction(db, () => {
|
|
133
|
+
updateStory(db, story.id, { status: mappedHiveStatus });
|
|
160
134
|
createLog(db, {
|
|
161
135
|
agentId: 'manager',
|
|
162
136
|
storyId: story.id,
|
|
163
|
-
eventType: '
|
|
164
|
-
status:
|
|
165
|
-
|
|
166
|
-
|
|
137
|
+
eventType: 'JIRA_SYNC_COMPLETED',
|
|
138
|
+
message: `Synced status from Jira: ${story.status} → ${mappedHiveStatus} (Jira: "${jiraStatusName}")`,
|
|
139
|
+
metadata: {
|
|
140
|
+
jiraKey: issueKey,
|
|
141
|
+
oldHiveStatus: story.status,
|
|
142
|
+
newHiveStatus: mappedHiveStatus,
|
|
143
|
+
jiraStatus: jiraStatusName,
|
|
144
|
+
},
|
|
167
145
|
});
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
|
|
146
|
+
});
|
|
147
|
+
logger.debug(`Synced Jira status for story ${story.id} (${issueKey}): ${story.status} → ${mappedHiveStatus}`);
|
|
148
|
+
return true;
|
|
149
|
+
});
|
|
171
150
|
}
|
|
172
151
|
/**
|
|
173
152
|
* Detect stories that exist in the Hive DB but have no Jira issue key,
|
|
@@ -280,12 +259,7 @@ export async function repairMissedAssignmentHooks(db, tokenStore, config) {
|
|
|
280
259
|
return 0;
|
|
281
260
|
}
|
|
282
261
|
logger.info(`Found ${storiesMissingSubtasks.length} assigned story(ies) missing Jira subtasks — repairing`);
|
|
283
|
-
|
|
284
|
-
const client = new JiraClient({
|
|
285
|
-
tokenStore,
|
|
286
|
-
clientId: process.env.JIRA_CLIENT_ID || '',
|
|
287
|
-
clientSecret: process.env.JIRA_CLIENT_SECRET || '',
|
|
288
|
-
});
|
|
262
|
+
const client = createJiraClient(tokenStore);
|
|
289
263
|
let repairedCount = 0;
|
|
290
264
|
for (const story of storiesMissingSubtasks) {
|
|
291
265
|
try {
|
|
@@ -364,12 +338,7 @@ export async function retrySprintAssignment(db, tokenStore, config) {
|
|
|
364
338
|
return 0;
|
|
365
339
|
}
|
|
366
340
|
logger.info(`Found ${storiesNotInSprint.length} story(ies) not in sprint — retrying assignment`);
|
|
367
|
-
|
|
368
|
-
const client = new JiraClient({
|
|
369
|
-
tokenStore,
|
|
370
|
-
clientId: process.env.JIRA_CLIENT_ID || '',
|
|
371
|
-
clientSecret: process.env.JIRA_CLIENT_SECRET || '',
|
|
372
|
-
});
|
|
341
|
+
const client = createJiraClient(tokenStore);
|
|
373
342
|
const issueKeys = storiesNotInSprint.map(s => s.jira_issue_key).filter(Boolean);
|
|
374
343
|
const moved = await tryMoveToActiveSprint(client, config, issueKeys);
|
|
375
344
|
if (moved) {
|
|
@@ -401,66 +370,35 @@ export async function syncHiveStatusesToJira(db, tokenStore, config) {
|
|
|
401
370
|
if (storiesWithJira.length === 0) {
|
|
402
371
|
return 0;
|
|
403
372
|
}
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
// Fetch current Jira issue status
|
|
414
|
-
const jiraIssue = await getIssue(client, story.jira_issue_key, ['status']);
|
|
415
|
-
const jiraStatusName = jiraIssue.fields.status.name;
|
|
416
|
-
// Convert Jira status to Hive status to compare
|
|
417
|
-
const jiraStatusAsHiveStatus = jiraStatusToHiveStatus(jiraStatusName, config.status_mapping);
|
|
418
|
-
if (!jiraStatusAsHiveStatus) {
|
|
419
|
-
logger.debug(`No Hive status mapping for Jira status "${jiraStatusName}" (${story.jira_issue_key}), skipping`);
|
|
420
|
-
continue;
|
|
421
|
-
}
|
|
422
|
-
// Check if Hive status is ahead of Jira status
|
|
423
|
-
if (story.status !== jiraStatusAsHiveStatus) {
|
|
424
|
-
// Only push forward transitions — never regress Jira backward
|
|
425
|
-
if (!isForwardTransition(jiraStatusAsHiveStatus, story.status)) {
|
|
426
|
-
logger.debug(`Skipping Hive-to-Jira push for story ${story.id} (${story.jira_issue_key}): ` +
|
|
427
|
-
`would regress Jira from ${jiraStatusAsHiveStatus} → ${story.status} (Jira: "${jiraStatusName}")`);
|
|
428
|
-
continue;
|
|
429
|
-
}
|
|
430
|
-
// Push the Hive status to Jira
|
|
431
|
-
const transitioned = await transitionJiraIssue(client, story.jira_issue_key, story.status, config.status_mapping);
|
|
432
|
-
if (transitioned) {
|
|
433
|
-
createLog(db, {
|
|
434
|
-
agentId: 'manager',
|
|
435
|
-
storyId: story.id,
|
|
436
|
-
eventType: 'JIRA_SYNC_COMPLETED',
|
|
437
|
-
message: `Pushed status to Jira: ${jiraStatusAsHiveStatus} → ${story.status} (was Jira: "${jiraStatusName}")`,
|
|
438
|
-
metadata: {
|
|
439
|
-
jiraKey: story.jira_issue_key,
|
|
440
|
-
oldJiraStatus: jiraStatusName,
|
|
441
|
-
oldHiveStatus: jiraStatusAsHiveStatus,
|
|
442
|
-
newHiveStatus: story.status,
|
|
443
|
-
},
|
|
444
|
-
});
|
|
445
|
-
logger.debug(`Pushed Hive status to Jira for story ${story.id} (${story.jira_issue_key}): ${jiraStatusAsHiveStatus} → ${story.status}`);
|
|
446
|
-
pushedCount++;
|
|
447
|
-
}
|
|
448
|
-
}
|
|
373
|
+
const client = createJiraClient(tokenStore);
|
|
374
|
+
return processBidirectionalStatusSync(db, client, config, storiesWithJira, story => story.jira_issue_key, async (story, issueKey, jiraStatusName, jiraStatusAsHiveStatus) => {
|
|
375
|
+
if (story.status === jiraStatusAsHiveStatus)
|
|
376
|
+
return false;
|
|
377
|
+
// Only push forward transitions — never regress Jira backward
|
|
378
|
+
if (!isForwardTransition(jiraStatusAsHiveStatus, story.status)) {
|
|
379
|
+
logger.debug(`Skipping Hive-to-Jira push for story ${story.id} (${issueKey}): ` +
|
|
380
|
+
`would regress Jira from ${jiraStatusAsHiveStatus} → ${story.status} (Jira: "${jiraStatusName}")`);
|
|
381
|
+
return false;
|
|
449
382
|
}
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
383
|
+
// Push the Hive status to Jira
|
|
384
|
+
const transitioned = await transitionJiraIssue(client, issueKey, story.status, config.status_mapping);
|
|
385
|
+
if (transitioned) {
|
|
453
386
|
createLog(db, {
|
|
454
387
|
agentId: 'manager',
|
|
455
388
|
storyId: story.id,
|
|
456
|
-
eventType: '
|
|
457
|
-
status:
|
|
458
|
-
|
|
459
|
-
|
|
389
|
+
eventType: 'JIRA_SYNC_COMPLETED',
|
|
390
|
+
message: `Pushed status to Jira: ${jiraStatusAsHiveStatus} → ${story.status} (was Jira: "${jiraStatusName}")`,
|
|
391
|
+
metadata: {
|
|
392
|
+
jiraKey: issueKey,
|
|
393
|
+
oldJiraStatus: jiraStatusName,
|
|
394
|
+
oldHiveStatus: jiraStatusAsHiveStatus,
|
|
395
|
+
newHiveStatus: story.status,
|
|
396
|
+
},
|
|
460
397
|
});
|
|
398
|
+
logger.debug(`Pushed Hive status to Jira for story ${story.id} (${issueKey}): ${jiraStatusAsHiveStatus} → ${story.status}`);
|
|
461
399
|
}
|
|
462
|
-
|
|
463
|
-
|
|
400
|
+
return transitioned;
|
|
401
|
+
});
|
|
464
402
|
}
|
|
465
403
|
/**
|
|
466
404
|
* Top-level entry point for Jira bidirectional sync.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/integrations/jira/sync.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,eAAe,GAGhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAoB,MAAM,6BAA6B,CAAC;AAC1F,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE9E;;;GAGG;AACH,MAAM,sBAAsB,GAAa;IACvC,OAAO;IACP,WAAW;IACX,SAAS;IACT,aAAa;IACb,QAAQ;IACR,IAAI;IACJ,WAAW;IACX,cAAc;IACd,QAAQ;CACT,CAAC;AAEF;;;GAGG;AACH,SAAS,kBAAkB,CAAC,aAAqB,EAAE,SAAiB;IAClE,MAAM,UAAU,GAAG,sBAAsB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzD,oDAAoD;IACpD,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrD,OAAO,MAAM,GAAG,UAAU,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,MAAM,YAAY,GAA2B;IAC3C,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,CAAC;IACZ,OAAO,EAAE,CAAC;IACV,WAAW,EAAE,CAAC;IACd,MAAM,EAAE,CAAC;IACT,YAAY,EAAE,CAAC;IACf,EAAE,EAAE,CAAC;IACL,SAAS,EAAE,CAAC,EAAE,qCAAqC;IACnD,MAAM,EAAE,CAAC;CACV,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,aAAqB,EAAE,SAAiB;IAC1E,MAAM,YAAY,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,OAAO,QAAQ,IAAI,YAAY,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,cAAsB,EACtB,aAAqC;IAErC,MAAM,oBAAoB,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC;IAE1D,2CAA2C;IAC3C,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QACrE,IAAI,UAAU,CAAC,WAAW,EAAE,KAAK,oBAAoB,EAAE,CAAC;YACtD,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,EAAY,EACZ,UAAsB,EACtB,MAAkB;IAElB,uCAAuC;IACvC,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9E,MAAM,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QAC/E,OAAO,CAAC,CAAC;IACX,CAAC;IAED,8EAA8E;IAC9E,MAAM,eAAe,GAAG,QAAQ,CAC9B,EAAE,EACF,yFAAyF,CAC1F,CAAC;IAEF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,kBAAkB,EAAE,CAAC;IAErB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;QAC5B,UAAU;QACV,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;QAC1C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE;KACnD,CAAC,CAAC;IAEH,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,kCAAkC;YAClC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,kBAAmB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;YAChF,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;YAEpD,qCAAqC;YACrC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;YAEvF,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtB,MAAM,CAAC,KAAK,CACV,2CAA2C,cAAc,MAAM,KAAK,CAAC,kBAAkB,aAAa,CACrG,CAAC;gBACF,SAAS;YACX,CAAC;YAED,mDAAmD;YACnD,wDAAwD;YACxD,IAAI,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC;gBACvD,MAAM,CAAC,KAAK,CACV,0BAA0B,KAAK,CAAC,EAAE,mBAAmB,KAAK,CAAC,MAAM,MAAM,gBAAgB,EAAE,CAC1F,CAAC;gBACF,SAAS;YACX,CAAC;YAED,IAAI,gBAAgB,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;gBACtC,kEAAkE;gBAClE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,CAAC;oBACzD,MAAM,CAAC,KAAK,CACV,yCAAyC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,kBAAkB,KAAK;wBACjF,iBAAiB,KAAK,CAAC,MAAM,MAAM,gBAAgB,YAAY,cAAc,IAAI,CACpF,CAAC;oBACF,SAAS;gBACX,CAAC;gBAED,kCAAkC;gBAClC,MAAM,eAAe,CAAC,EAAE,EAAE,GAAG,EAAE;oBAC7B,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,gBAA+B,EAAE,CAAC,CAAC;oBAEvE,SAAS,CAAC,EAAE,EAAE;wBACZ,OAAO,EAAE,SAAS;wBAClB,OAAO,EAAE,KAAK,CAAC,EAAE;wBACjB,SAAS,EAAE,qBAAqB;wBAChC,OAAO,EAAE,4BAA4B,KAAK,CAAC,MAAM,MAAM,gBAAgB,YAAY,cAAc,IAAI;wBACrG,QAAQ,EAAE;4BACR,OAAO,EAAE,KAAK,CAAC,kBAAkB;4BACjC,aAAa,EAAE,KAAK,CAAC,MAAM;4BAC3B,aAAa,EAAE,gBAAgB;4BAC/B,UAAU,EAAE,cAAc;yBAC3B;qBACF,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,MAAM,CAAC,KAAK,CACV,gCAAgC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,kBAAkB,MAAM,KAAK,CAAC,MAAM,MAAM,gBAAgB,EAAE,CAChH,CAAC;gBAEF,YAAY,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,CAAC,IAAI,CACT,wCAAwC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,kBAAkB,MAAM,OAAO,EAAE,CAC7F,CAAC;YAEF,SAAS,CAAC,EAAE,EAAE;gBACZ,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,SAAS,EAAE,mBAAmB;gBAC9B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,oCAAoC,OAAO,EAAE;gBACtD,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE;aAChE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,EAAY,EACZ,UAAsB,EACtB,MAAkB;IAElB,2EAA2E;IAC3E,MAAM,eAAe,GAAG,QAAQ,CAC9B,EAAE,EACF,gHAAgH,CACjH,CAAC;IAEF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,SAAS,eAAe,CAAC,MAAM,wCAAwC,CAAC,CAAC;IAErF,gEAAgE;IAChE,MAAM,aAAa,GAAG,IAAI,GAAG,EAA6B,CAAC;IAC3D,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC/B,CAAC;QACD,aAAa,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,aAAa,EAAE,CAAC;QACrD,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,MAAM,0CAA0C,CAAC,CAAC;gBAClF,SAAS;YACX,CAAC;YAED,MAAM,WAAW,GAAG,QAAQ,CAAiB,EAAE,EAAE,yCAAyC,EAAE;gBAC1F,aAAa;aACd,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,eAAe,aAAa,wBAAwB,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;gBAC1F,SAAS;YACX,CAAC;YAED,mDAAmD;YACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC;YAEjD,sEAAsE;YACtE,mEAAmE;YACnE,MAAM,iBAAiB,GAAa,EAAE,CAAC;YACvC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBACrC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;oBACnC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC/B,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,qCAAqC,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;YAED,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,SAAS;YACX,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,qBAAqB,CACxC,EAAE,EACF,UAAU,EACV,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,QAAQ,CACT,CAAC;YAEF,WAAW,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YAErC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAChC,MAAM,CAAC,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YAED,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CACT,UAAU,MAAM,CAAC,OAAO,CAAC,MAAM,uCAAuC,aAAa,WAAW,MAAM,CAAC,OAAO,GAAG,CAChH,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,CAAC,IAAI,CAAC,0CAA0C,aAAa,KAAK,OAAO,EAAE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,EAAY,EACZ,UAAsB,EACtB,MAAkB;IAElB,qBAAqB;IACrB,yDAAyD;IACzD,qDAAqD;IACrD,oEAAoE;IACpE,MAAM,sBAAsB,GAAG,QAAQ,CACrC,EAAE,EACF;;;;;yBAKqB,CACtB,CAAC;IAEF,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,CAAC,IAAI,CACT,SAAS,sBAAsB,CAAC,MAAM,wDAAwD,CAC/F,CAAC;IAEF,kBAAkB,EAAE,CAAC;IAErB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;QAC5B,UAAU;QACV,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;QAC1C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE;KACnD,CAAC,CAAC;IAEH,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,KAAK,MAAM,KAAK,IAAI,sBAAsB,EAAE,CAAC;QAC3C,IAAI,CAAC;YACH,wCAAwC;YACxC,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,iBAAkB,CAAC,CAAC;YACzD,MAAM,SAAS,GAAG,KAAK,EAAE,YAAY,IAAI,KAAK,EAAE,EAAE,IAAI,KAAK,CAAC,iBAAkB,CAAC;YAE/E,qBAAqB;YACrB,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE;gBAC1C,cAAc,EAAE,KAAK,CAAC,kBAAmB;gBACzC,UAAU,EAAE,KAAK,CAAC,oBAAoB,IAAI,MAAM,CAAC,WAAW;gBAC5D,SAAS;gBACT,UAAU,EAAE,KAAK,CAAC,KAAK;aACxB,CAAC,CAAC;YAEH,IAAI,OAAO,EAAE,CAAC;gBACZ,4BAA4B;gBAC5B,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;oBACxB,kBAAkB,EAAE,OAAO,CAAC,GAAG;oBAC/B,iBAAiB,EAAE,OAAO,CAAC,EAAE;iBAC9B,CAAC,CAAC;gBAEH,MAAM,CAAC,IAAI,CACT,kCAAkC,OAAO,CAAC,GAAG,cAAc,KAAK,CAAC,EAAE,YAAY,SAAS,GAAG,CAC5F,CAAC;gBAEF,0BAA0B;gBAC1B,MAAM,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,kBAAmB,EAAE,UAAU,EAAE;oBAC/D,SAAS;oBACT,UAAU,EAAE,OAAO,CAAC,GAAG;iBACxB,CAAC,CAAC;gBAEH,aAAa,EAAE,CAAC;gBAEhB,SAAS,CAAC,EAAE,EAAE;oBACZ,OAAO,EAAE,SAAS;oBAClB,OAAO,EAAE,KAAK,CAAC,EAAE;oBACjB,SAAS,EAAE,0BAA0B;oBACrC,OAAO,EAAE,oDAAoD,OAAO,CAAC,GAAG,cAAc,SAAS,EAAE;oBACjG,QAAQ,EAAE;wBACR,OAAO,EAAE,KAAK,CAAC,kBAAkB;wBACjC,UAAU,EAAE,OAAO,CAAC,GAAG;wBACvB,SAAS;qBACV;iBACF,CAAC,CAAC;YACL,CAAC;YAED,gEAAgE;YAChE,yEAAyE;YACzE,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC3D,MAAM,qBAAqB,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,CAAC,IAAI,CAAC,8CAA8C,KAAK,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;YAElF,SAAS,CAAC,EAAE,EAAE;gBACZ,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,SAAS,EAAE,+BAA+B;gBAC1C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,4CAA4C,OAAO,EAAE;gBAC9D,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE;aAChE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,EAAY,EACZ,UAAsB,EACtB,MAAkB;IAElB,MAAM,kBAAkB,GAAG,QAAQ,CACjC,EAAE,EACF;;;;yBAIqB,CACtB,CAAC;IAEF,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,SAAS,kBAAkB,CAAC,MAAM,iDAAiD,CAAC,CAAC;IAEjG,kBAAkB,EAAE,CAAC;IAErB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;QAC5B,UAAU;QACV,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;QAC1C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE;KACnD,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEjF,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACrE,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,MAAM,KAAK,IAAI,kBAAkB,EAAE,CAAC;YACvC,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,kBAAkB,CAAC,MAAM,CAAC;IACnC,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,EAAY,EACZ,UAAsB,EACtB,MAAkB;IAElB,uCAAuC;IACvC,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9E,MAAM,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;QAC9E,OAAO,CAAC,CAAC;IACX,CAAC;IAED,+CAA+C;IAC/C,MAAM,eAAe,GAAG,QAAQ,CAC9B,EAAE,EACF,qFAAqF,CACtF,CAAC;IAEF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,kBAAkB,EAAE,CAAC;IAErB,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;QAC5B,UAAU;QACV,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;QAC1C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE;KACnD,CAAC,CAAC;IAEH,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,kCAAkC;YAClC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,cAAe,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5E,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;YAEpD,gDAAgD;YAChD,MAAM,sBAAsB,GAAG,sBAAsB,CAAC,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;YAE7F,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC5B,MAAM,CAAC,KAAK,CACV,2CAA2C,cAAc,MAAM,KAAK,CAAC,cAAc,aAAa,CACjG,CAAC;gBACF,SAAS;YACX,CAAC;YAED,+CAA+C;YAC/C,IAAI,KAAK,CAAC,MAAM,KAAK,sBAAsB,EAAE,CAAC;gBAC5C,8DAA8D;gBAC9D,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC/D,MAAM,CAAC,KAAK,CACV,wCAAwC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,cAAc,KAAK;wBAC5E,2BAA2B,sBAAsB,MAAM,KAAK,CAAC,MAAM,YAAY,cAAc,IAAI,CACpG,CAAC;oBACF,SAAS;gBACX,CAAC;gBAED,+BAA+B;gBAC/B,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAC5C,MAAM,EACN,KAAK,CAAC,cAAe,EACrB,KAAK,CAAC,MAAM,EACZ,MAAM,CAAC,cAAc,CACtB,CAAC;gBAEF,IAAI,YAAY,EAAE,CAAC;oBACjB,SAAS,CAAC,EAAE,EAAE;wBACZ,OAAO,EAAE,SAAS;wBAClB,OAAO,EAAE,KAAK,CAAC,EAAE;wBACjB,SAAS,EAAE,qBAAqB;wBAChC,OAAO,EAAE,0BAA0B,sBAAsB,MAAM,KAAK,CAAC,MAAM,gBAAgB,cAAc,IAAI;wBAC7G,QAAQ,EAAE;4BACR,OAAO,EAAE,KAAK,CAAC,cAAc;4BAC7B,aAAa,EAAE,cAAc;4BAC7B,aAAa,EAAE,sBAAsB;4BACrC,aAAa,EAAE,KAAK,CAAC,MAAM;yBAC5B;qBACF,CAAC,CAAC;oBAEH,MAAM,CAAC,KAAK,CACV,wCAAwC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,cAAc,MAAM,sBAAsB,MAAM,KAAK,CAAC,MAAM,EAAE,CAC1H,CAAC;oBAEF,WAAW,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,CAAC,IAAI,CACT,gDAAgD,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,cAAc,MAAM,OAAO,EAAE,CACjG,CAAC;YAEF,SAAS,CAAC,EAAE,EAAE;gBACZ,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,SAAS,EAAE,mBAAmB;gBAC9B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,kCAAkC,OAAO,EAAE;gBACpD,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE;aAC5D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,EAAY;IAC3D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEzC,IAAI,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC/D,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAC/D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEtC,2CAA2C;QAC3C,MAAM,yBAAyB,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAE5D,yEAAyE;QACzE,MAAM,2BAA2B,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAE9D,wEAAwE;QACxE,MAAM,qBAAqB,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAExD,sCAAsC;QACtC,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAE7E,4CAA4C;QAC5C,MAAM,sBAAsB,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAEzD,OAAO,WAAW,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,8CAA8C;QAC9C,MAAM,CAAC,KAAK,CAAC,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9F,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/integrations/jira/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Database } from 'sql.js';
|
|
2
|
+
import type { AgentRow, PullRequestRow, StoryRow } from '../db/client.js';
|
|
3
|
+
/**
|
|
4
|
+
* Require a story by ID, exit with error if not found.
|
|
5
|
+
*/
|
|
6
|
+
export declare function requireStory(db: Database, storyId: string): StoryRow;
|
|
7
|
+
/**
|
|
8
|
+
* Require an agent by ID, exit with error if not found.
|
|
9
|
+
*/
|
|
10
|
+
export declare function requireAgent(db: Database, agentId: string): AgentRow;
|
|
11
|
+
/**
|
|
12
|
+
* Require an active agent by tmux session name, exit with error if not found or terminated.
|
|
13
|
+
*/
|
|
14
|
+
export declare function requireAgentBySession(db: Database, session: string): AgentRow;
|
|
15
|
+
/**
|
|
16
|
+
* Require a pull request by ID, exit with error if not found.
|
|
17
|
+
*/
|
|
18
|
+
export declare function requirePullRequest(db: Database, prId: string): PullRequestRow;
|
|
19
|
+
//# sourceMappingURL=cli-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/cli-helpers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAM1E;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,CAOpE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,CAOpE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,CAW7E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,CAO7E"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// Licensed under the Hungry Ghost Hive License. See LICENSE.
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { queryOne } from '../db/client.js';
|
|
4
|
+
import { getAgentById } from '../db/queries/agents.js';
|
|
5
|
+
import { getPullRequestById } from '../db/queries/pull-requests.js';
|
|
6
|
+
import { getStoryById } from '../db/queries/stories.js';
|
|
7
|
+
/**
|
|
8
|
+
* Require a story by ID, exit with error if not found.
|
|
9
|
+
*/
|
|
10
|
+
export function requireStory(db, storyId) {
|
|
11
|
+
const story = getStoryById(db, storyId);
|
|
12
|
+
if (!story) {
|
|
13
|
+
console.error(chalk.red(`Story not found: ${storyId}`));
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
return story;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Require an agent by ID, exit with error if not found.
|
|
20
|
+
*/
|
|
21
|
+
export function requireAgent(db, agentId) {
|
|
22
|
+
const agent = getAgentById(db, agentId);
|
|
23
|
+
if (!agent) {
|
|
24
|
+
console.error(chalk.red(`Agent not found: ${agentId}`));
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
return agent;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Require an active agent by tmux session name, exit with error if not found or terminated.
|
|
31
|
+
*/
|
|
32
|
+
export function requireAgentBySession(db, session) {
|
|
33
|
+
const agent = queryOne(db, "SELECT * FROM agents WHERE tmux_session = ? AND status != 'terminated'", [session]);
|
|
34
|
+
if (!agent) {
|
|
35
|
+
console.error(chalk.red(`No agent found with session: ${session}`));
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
return agent;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Require a pull request by ID, exit with error if not found.
|
|
42
|
+
*/
|
|
43
|
+
export function requirePullRequest(db, prId) {
|
|
44
|
+
const pr = getPullRequestById(db, prId);
|
|
45
|
+
if (!pr) {
|
|
46
|
+
console.error(chalk.red(`PR not found: ${prId}`));
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
return pr;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=cli-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-helpers.js","sourceRoot":"","sources":["../../src/utils/cli-helpers.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,EAAY,EAAE,OAAe;IACxD,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,EAAY,EAAE,OAAe;IACxD,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAY,EAAE,OAAe;IACjE,MAAM,KAAK,GAAG,QAAQ,CACpB,EAAE,EACF,wEAAwE,EACxE,CAAC,OAAO,CAAC,CACV,CAAC;IACF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,OAAO,EAAE,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAY,EAAE,IAAY;IAC3D,MAAM,EAAE,GAAG,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-helpers.test.d.ts","sourceRoot":"","sources":["../../src/utils/cli-helpers.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// Licensed under the Hungry Ghost Hive License. See LICENSE.
|
|
2
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
3
|
+
vi.mock('../db/client.js', () => ({
|
|
4
|
+
queryOne: vi.fn(),
|
|
5
|
+
}));
|
|
6
|
+
vi.mock('../db/queries/agents.js', () => ({
|
|
7
|
+
getAgentById: vi.fn(),
|
|
8
|
+
}));
|
|
9
|
+
vi.mock('../db/queries/pull-requests.js', () => ({
|
|
10
|
+
getPullRequestById: vi.fn(),
|
|
11
|
+
}));
|
|
12
|
+
vi.mock('../db/queries/stories.js', () => ({
|
|
13
|
+
getStoryById: vi.fn(),
|
|
14
|
+
}));
|
|
15
|
+
import { queryOne } from '../db/client.js';
|
|
16
|
+
import { getAgentById } from '../db/queries/agents.js';
|
|
17
|
+
import { getPullRequestById } from '../db/queries/pull-requests.js';
|
|
18
|
+
import { getStoryById } from '../db/queries/stories.js';
|
|
19
|
+
import { requireAgent, requireAgentBySession, requirePullRequest, requireStory, } from './cli-helpers.js';
|
|
20
|
+
const mockDb = {};
|
|
21
|
+
beforeEach(() => {
|
|
22
|
+
vi.clearAllMocks();
|
|
23
|
+
});
|
|
24
|
+
describe('requireStory', () => {
|
|
25
|
+
it('returns the story when found', () => {
|
|
26
|
+
const story = { id: 'STORY-1', title: 'Test' };
|
|
27
|
+
vi.mocked(getStoryById).mockReturnValue(story);
|
|
28
|
+
const result = requireStory(mockDb, 'STORY-1');
|
|
29
|
+
expect(result).toBe(story);
|
|
30
|
+
expect(getStoryById).toHaveBeenCalledWith(mockDb, 'STORY-1');
|
|
31
|
+
});
|
|
32
|
+
it('exits with error when story not found', () => {
|
|
33
|
+
vi.mocked(getStoryById).mockReturnValue(undefined);
|
|
34
|
+
const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
|
|
35
|
+
const exitSpy = vi.spyOn(process, 'exit').mockImplementation((() => {
|
|
36
|
+
throw new Error('process.exit called');
|
|
37
|
+
}));
|
|
38
|
+
expect(() => requireStory(mockDb, 'STORY-99')).toThrow('process.exit called');
|
|
39
|
+
expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining('Story not found: STORY-99'));
|
|
40
|
+
expect(exitSpy).toHaveBeenCalledWith(1);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
describe('requireAgent', () => {
|
|
44
|
+
it('returns the agent when found', () => {
|
|
45
|
+
const agent = { id: 'agent-1', type: 'senior' };
|
|
46
|
+
vi.mocked(getAgentById).mockReturnValue(agent);
|
|
47
|
+
const result = requireAgent(mockDb, 'agent-1');
|
|
48
|
+
expect(result).toBe(agent);
|
|
49
|
+
expect(getAgentById).toHaveBeenCalledWith(mockDb, 'agent-1');
|
|
50
|
+
});
|
|
51
|
+
it('exits with error when agent not found', () => {
|
|
52
|
+
vi.mocked(getAgentById).mockReturnValue(undefined);
|
|
53
|
+
const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
|
|
54
|
+
const exitSpy = vi.spyOn(process, 'exit').mockImplementation((() => {
|
|
55
|
+
throw new Error('process.exit called');
|
|
56
|
+
}));
|
|
57
|
+
expect(() => requireAgent(mockDb, 'agent-99')).toThrow('process.exit called');
|
|
58
|
+
expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining('Agent not found: agent-99'));
|
|
59
|
+
expect(exitSpy).toHaveBeenCalledWith(1);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe('requireAgentBySession', () => {
|
|
63
|
+
it('returns the agent when session matches', () => {
|
|
64
|
+
const agent = { id: 'agent-1', tmux_session: 'hive-senior-team' };
|
|
65
|
+
vi.mocked(queryOne).mockReturnValue(agent);
|
|
66
|
+
const result = requireAgentBySession(mockDb, 'hive-senior-team');
|
|
67
|
+
expect(result).toBe(agent);
|
|
68
|
+
expect(queryOne).toHaveBeenCalledWith(mockDb, expect.stringContaining("status != 'terminated'"), ['hive-senior-team']);
|
|
69
|
+
});
|
|
70
|
+
it('exits with error when session not found', () => {
|
|
71
|
+
vi.mocked(queryOne).mockReturnValue(undefined);
|
|
72
|
+
const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
|
|
73
|
+
const exitSpy = vi.spyOn(process, 'exit').mockImplementation((() => {
|
|
74
|
+
throw new Error('process.exit called');
|
|
75
|
+
}));
|
|
76
|
+
expect(() => requireAgentBySession(mockDb, 'unknown-session')).toThrow('process.exit called');
|
|
77
|
+
expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining('No agent found with session: unknown-session'));
|
|
78
|
+
expect(exitSpy).toHaveBeenCalledWith(1);
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
describe('requirePullRequest', () => {
|
|
82
|
+
it('returns the PR when found', () => {
|
|
83
|
+
const pr = { id: 'pr-1', branch_name: 'feature/test' };
|
|
84
|
+
vi.mocked(getPullRequestById).mockReturnValue(pr);
|
|
85
|
+
const result = requirePullRequest(mockDb, 'pr-1');
|
|
86
|
+
expect(result).toBe(pr);
|
|
87
|
+
expect(getPullRequestById).toHaveBeenCalledWith(mockDb, 'pr-1');
|
|
88
|
+
});
|
|
89
|
+
it('exits with error when PR not found', () => {
|
|
90
|
+
vi.mocked(getPullRequestById).mockReturnValue(undefined);
|
|
91
|
+
const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
|
|
92
|
+
const exitSpy = vi.spyOn(process, 'exit').mockImplementation((() => {
|
|
93
|
+
throw new Error('process.exit called');
|
|
94
|
+
}));
|
|
95
|
+
expect(() => requirePullRequest(mockDb, 'pr-99')).toThrow('process.exit called');
|
|
96
|
+
expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining('PR not found: pr-99'));
|
|
97
|
+
expect(exitSpy).toHaveBeenCalledWith(1);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=cli-helpers.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-helpers.test.js","sourceRoot":"","sources":["../../src/utils/cli-helpers.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-cli.d.ts","sourceRoot":"","sources":["../../src/utils/github-cli.ts"],"names":[],"mappings":"AAEA,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-cli.js","sourceRoot":"","sources":["../../src/utils/github-cli.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC"}
|