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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr-sync.d.ts","sourceRoot":"","sources":["../../src/utils/pr-sync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"pr-sync.d.ts","sourceRoot":"","sources":["../../src/utils/pr-sync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAYvC;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGzD;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,EAAE,CAAC;CACtB;AAUD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,QAAQ,EACZ,uBAAuB,UAAO,GAC7B;IAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,CAkBnE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAYrB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,QAAQ,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC7B,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,mBAAmB,CAAC,CAmF9B;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,MAAM,IAAI,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,MAAM,IAAI,GACjB,OAAO,CAAC,MAAM,CAAC,CA+FjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,QAAQ,EACZ,UAAU,SAAS,GAClB,OAAO,CAAC,YAAY,EAAE,CAAC,CA0FzB"}
|
package/dist/utils/pr-sync.js
CHANGED
|
@@ -6,10 +6,9 @@ import { createLog } from '../db/queries/logs.js';
|
|
|
6
6
|
import { createPullRequest } from '../db/queries/pull-requests.js';
|
|
7
7
|
import { updateStory } from '../db/queries/stories.js';
|
|
8
8
|
import { getAllTeams } from '../db/queries/teams.js';
|
|
9
|
+
import { GH_CLI_TIMEOUT_MS } from './github-cli.js';
|
|
9
10
|
import { extractStoryIdFromBranch } from './story-id.js';
|
|
10
11
|
const GITHUB_PR_LIST_LIMIT = 20;
|
|
11
|
-
/** Default timeout in ms for GitHub CLI operations */
|
|
12
|
-
const GH_CLI_TIMEOUT_MS = 30000;
|
|
13
12
|
/**
|
|
14
13
|
* Extract 'owner/repo' slug from a GitHub URL for use with `gh -R`.
|
|
15
14
|
* Handles https://github.com/owner/repo.git and similar variants.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pr-sync.js","sourceRoot":"","sources":["../../src/utils/pr-sync.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"pr-sync.js","sourceRoot":"","sources":["../../src/utils/pr-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ordered lifecycle stages for Hive stories.
|
|
3
|
+
* Used to prevent bidirectional sync from regressing story status
|
|
4
|
+
* and to determine canonical status during cluster story merges.
|
|
5
|
+
*/
|
|
6
|
+
export declare const STORY_STATUS_ORDER: readonly ["draft", "estimated", "planned", "in_progress", "review", "qa", "qa_failed", "pr_submitted", "merged"];
|
|
7
|
+
export type StoryStatusValue = (typeof STORY_STATUS_ORDER)[number];
|
|
8
|
+
/**
|
|
9
|
+
* Check if transitioning from currentStatus to newStatus would be a regression.
|
|
10
|
+
* Returns true if the new status is earlier in the lifecycle than the current one.
|
|
11
|
+
* Unknown statuses are allowed through (returns false).
|
|
12
|
+
*/
|
|
13
|
+
export declare function isStatusRegression(currentStatus: string, newStatus: string): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Check whether transitioning from currentStatus to newStatus is a
|
|
16
|
+
* forward (or lateral) move in the pipeline.
|
|
17
|
+
*/
|
|
18
|
+
export declare function isForwardTransition(currentStatus: string, newStatus: string): boolean;
|
|
19
|
+
//# sourceMappingURL=story-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"story-status.d.ts","sourceRoot":"","sources":["../../src/utils/story-status.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,kHAUrB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAsBnE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAKpF;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAIrF"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// Licensed under the Hungry Ghost Hive License. See LICENSE.
|
|
2
|
+
/**
|
|
3
|
+
* Ordered lifecycle stages for Hive stories.
|
|
4
|
+
* Used to prevent bidirectional sync from regressing story status
|
|
5
|
+
* and to determine canonical status during cluster story merges.
|
|
6
|
+
*/
|
|
7
|
+
export const STORY_STATUS_ORDER = [
|
|
8
|
+
'draft',
|
|
9
|
+
'estimated',
|
|
10
|
+
'planned',
|
|
11
|
+
'in_progress',
|
|
12
|
+
'review',
|
|
13
|
+
'qa',
|
|
14
|
+
'qa_failed',
|
|
15
|
+
'pr_submitted',
|
|
16
|
+
'merged',
|
|
17
|
+
];
|
|
18
|
+
/**
|
|
19
|
+
* Status progression order for the Hive pipeline.
|
|
20
|
+
* Higher numbers represent further progress. Used to prevent
|
|
21
|
+
* sync from regressing stories backward.
|
|
22
|
+
*
|
|
23
|
+
* Note: qa_failed has the same order as review (4) because it
|
|
24
|
+
* represents a lateral step, not a regression.
|
|
25
|
+
*/
|
|
26
|
+
const STATUS_ORDER = {
|
|
27
|
+
draft: 0,
|
|
28
|
+
estimated: 1,
|
|
29
|
+
planned: 2,
|
|
30
|
+
in_progress: 3,
|
|
31
|
+
review: 4,
|
|
32
|
+
pr_submitted: 5,
|
|
33
|
+
qa: 6,
|
|
34
|
+
qa_failed: 4, // allowed as a backward step from qa
|
|
35
|
+
merged: 7,
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Check if transitioning from currentStatus to newStatus would be a regression.
|
|
39
|
+
* Returns true if the new status is earlier in the lifecycle than the current one.
|
|
40
|
+
* Unknown statuses are allowed through (returns false).
|
|
41
|
+
*/
|
|
42
|
+
export function isStatusRegression(currentStatus, newStatus) {
|
|
43
|
+
const currentIdx = STORY_STATUS_ORDER.indexOf(currentStatus);
|
|
44
|
+
const newIdx = STORY_STATUS_ORDER.indexOf(newStatus);
|
|
45
|
+
if (currentIdx === -1 || newIdx === -1)
|
|
46
|
+
return false;
|
|
47
|
+
return newIdx < currentIdx;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Check whether transitioning from currentStatus to newStatus is a
|
|
51
|
+
* forward (or lateral) move in the pipeline.
|
|
52
|
+
*/
|
|
53
|
+
export function isForwardTransition(currentStatus, newStatus) {
|
|
54
|
+
const currentOrder = STATUS_ORDER[currentStatus] ?? -1;
|
|
55
|
+
const newOrder = STATUS_ORDER[newStatus] ?? -1;
|
|
56
|
+
return newOrder >= currentOrder;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=story-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"story-status.js","sourceRoot":"","sources":["../../src/utils/story-status.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,OAAO;IACP,WAAW;IACX,SAAS;IACT,aAAa;IACb,QAAQ;IACR,IAAI;IACJ,WAAW;IACX,cAAc;IACd,QAAQ;CACA,CAAC;AAIX;;;;;;;GAOG;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;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,aAAqB,EAAE,SAAiB;IACzE,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,aAAiC,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAA6B,CAAC,CAAC;IACzE,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrD,OAAO,MAAM,GAAG,UAAU,CAAC;AAC7B,CAAC;AAED;;;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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"story-status.test.d.ts","sourceRoot":"","sources":["../../src/utils/story-status.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// Licensed under the Hungry Ghost Hive License. See LICENSE.
|
|
2
|
+
import { describe, expect, it } from 'vitest';
|
|
3
|
+
import { STORY_STATUS_ORDER, isForwardTransition, isStatusRegression } from './story-status.js';
|
|
4
|
+
describe('STORY_STATUS_ORDER', () => {
|
|
5
|
+
it('contains all expected statuses in order', () => {
|
|
6
|
+
expect(STORY_STATUS_ORDER).toEqual([
|
|
7
|
+
'draft',
|
|
8
|
+
'estimated',
|
|
9
|
+
'planned',
|
|
10
|
+
'in_progress',
|
|
11
|
+
'review',
|
|
12
|
+
'qa',
|
|
13
|
+
'qa_failed',
|
|
14
|
+
'pr_submitted',
|
|
15
|
+
'merged',
|
|
16
|
+
]);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
describe('isStatusRegression', () => {
|
|
20
|
+
it('detects regression to earlier status', () => {
|
|
21
|
+
expect(isStatusRegression('in_progress', 'draft')).toBe(true);
|
|
22
|
+
expect(isStatusRegression('merged', 'planned')).toBe(true);
|
|
23
|
+
expect(isStatusRegression('review', 'estimated')).toBe(true);
|
|
24
|
+
});
|
|
25
|
+
it('returns false for forward transitions', () => {
|
|
26
|
+
expect(isStatusRegression('draft', 'estimated')).toBe(false);
|
|
27
|
+
expect(isStatusRegression('planned', 'in_progress')).toBe(false);
|
|
28
|
+
expect(isStatusRegression('review', 'merged')).toBe(false);
|
|
29
|
+
});
|
|
30
|
+
it('returns false for same status', () => {
|
|
31
|
+
expect(isStatusRegression('planned', 'planned')).toBe(false);
|
|
32
|
+
});
|
|
33
|
+
it('returns false for unknown statuses', () => {
|
|
34
|
+
expect(isStatusRegression('unknown', 'planned')).toBe(false);
|
|
35
|
+
expect(isStatusRegression('planned', 'unknown')).toBe(false);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('isForwardTransition', () => {
|
|
39
|
+
it('allows forward transitions', () => {
|
|
40
|
+
expect(isForwardTransition('draft', 'estimated')).toBe(true);
|
|
41
|
+
expect(isForwardTransition('estimated', 'planned')).toBe(true);
|
|
42
|
+
expect(isForwardTransition('planned', 'in_progress')).toBe(true);
|
|
43
|
+
expect(isForwardTransition('in_progress', 'review')).toBe(true);
|
|
44
|
+
expect(isForwardTransition('review', 'pr_submitted')).toBe(true);
|
|
45
|
+
expect(isForwardTransition('pr_submitted', 'qa')).toBe(true);
|
|
46
|
+
expect(isForwardTransition('qa', 'merged')).toBe(true);
|
|
47
|
+
});
|
|
48
|
+
it('allows same-status (no-op)', () => {
|
|
49
|
+
expect(isForwardTransition('planned', 'planned')).toBe(true);
|
|
50
|
+
expect(isForwardTransition('in_progress', 'in_progress')).toBe(true);
|
|
51
|
+
});
|
|
52
|
+
it('prevents backward transitions', () => {
|
|
53
|
+
expect(isForwardTransition('in_progress', 'planned')).toBe(false);
|
|
54
|
+
expect(isForwardTransition('in_progress', 'draft')).toBe(false);
|
|
55
|
+
expect(isForwardTransition('review', 'planned')).toBe(false);
|
|
56
|
+
expect(isForwardTransition('merged', 'planned')).toBe(false);
|
|
57
|
+
expect(isForwardTransition('qa', 'planned')).toBe(false);
|
|
58
|
+
});
|
|
59
|
+
it('handles qa_failed ordering correctly', () => {
|
|
60
|
+
expect(isForwardTransition('review', 'qa_failed')).toBe(true);
|
|
61
|
+
expect(isForwardTransition('in_progress', 'qa_failed')).toBe(true);
|
|
62
|
+
expect(isForwardTransition('qa', 'qa_failed')).toBe(false);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=story-status.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"story-status.test.js","sourceRoot":"","sources":["../../src/utils/story-status.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -6,7 +6,6 @@ import { Command } from 'commander';
|
|
|
6
6
|
import {
|
|
7
7
|
deleteAgent,
|
|
8
8
|
getActiveAgents,
|
|
9
|
-
getAgentById,
|
|
10
9
|
getAgentByTmuxSession,
|
|
11
10
|
getAgentsByStatus,
|
|
12
11
|
getAllAgents,
|
|
@@ -14,6 +13,7 @@ import {
|
|
|
14
13
|
} from '../../db/queries/agents.js';
|
|
15
14
|
import { createLog, getLogsByAgent } from '../../db/queries/logs.js';
|
|
16
15
|
import { removeWorktree } from '../../git/worktree.js';
|
|
16
|
+
import { requireAgent } from '../../utils/cli-helpers.js';
|
|
17
17
|
import { statusColor } from '../../utils/logger.js';
|
|
18
18
|
import { withHiveContext, withReadOnlyHiveContext } from '../../utils/with-hive-context.js';
|
|
19
19
|
|
|
@@ -67,11 +67,7 @@ agentsCommand
|
|
|
67
67
|
.option('--json', 'Output as JSON')
|
|
68
68
|
.action(async (agentId: string, options: { limit: string; json?: boolean }) => {
|
|
69
69
|
await withReadOnlyHiveContext(async ({ db }) => {
|
|
70
|
-
|
|
71
|
-
if (!agent) {
|
|
72
|
-
console.error(chalk.red(`Agent not found: ${agentId}`));
|
|
73
|
-
process.exit(1);
|
|
74
|
-
}
|
|
70
|
+
requireAgent(db.db, agentId);
|
|
75
71
|
|
|
76
72
|
const logs = getLogsByAgent(db.db, agentId, parseInt(options.limit, 10));
|
|
77
73
|
|
|
@@ -112,11 +108,7 @@ agentsCommand
|
|
|
112
108
|
.description('View detailed agent state')
|
|
113
109
|
.action(async (agentId: string) => {
|
|
114
110
|
await withReadOnlyHiveContext(async ({ db }) => {
|
|
115
|
-
const agent =
|
|
116
|
-
if (!agent) {
|
|
117
|
-
console.error(chalk.red(`Agent not found: ${agentId}`));
|
|
118
|
-
process.exit(1);
|
|
119
|
-
}
|
|
111
|
+
const agent = requireAgent(db.db, agentId);
|
|
120
112
|
|
|
121
113
|
console.log(chalk.bold(`\nAgent: ${agent.id}\n`));
|
|
122
114
|
console.log(chalk.gray(`Type: ${agent.type}`));
|
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
import chalk from 'chalk';
|
|
4
4
|
import { Command } from 'commander';
|
|
5
5
|
import { postCommentOnIssue } from '../../connectors/project-management/operations.js';
|
|
6
|
-
import { queryOne } from '../../db/client.js';
|
|
7
6
|
import { createLog } from '../../db/queries/logs.js';
|
|
8
|
-
import
|
|
7
|
+
import { requireStory } from '../../utils/cli-helpers.js';
|
|
9
8
|
import * as logger from '../../utils/logger.js';
|
|
10
9
|
import { withHiveContext } from '../../utils/with-hive-context.js';
|
|
11
10
|
|
|
@@ -19,11 +18,7 @@ export const approachCommand = new Command('approach')
|
|
|
19
18
|
const agentName = options.from || 'unknown-agent';
|
|
20
19
|
|
|
21
20
|
// Look up the story
|
|
22
|
-
const story =
|
|
23
|
-
if (!story) {
|
|
24
|
-
console.error(chalk.red(`Story not found: ${storyId}`));
|
|
25
|
-
process.exit(1);
|
|
26
|
-
}
|
|
21
|
+
const story = requireStory(db.db, storyId);
|
|
27
22
|
|
|
28
23
|
// Log approach to agent_logs
|
|
29
24
|
createLog(db.db, {
|
package/src/cli/commands/init.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import chalk from 'chalk';
|
|
4
4
|
import { Command } from 'commander';
|
|
5
|
+
import { execa } from 'execa';
|
|
5
6
|
import { existsSync, mkdirSync } from 'fs';
|
|
6
7
|
import ora from 'ora';
|
|
7
8
|
import { join } from 'path';
|
|
@@ -63,6 +64,14 @@ export const initCommand = new Command('init')
|
|
|
63
64
|
db.runMigrations();
|
|
64
65
|
db.close();
|
|
65
66
|
|
|
67
|
+
// Initialize git repository if not already in one
|
|
68
|
+
spinner.text = 'Initializing git repository...';
|
|
69
|
+
try {
|
|
70
|
+
await execa('git', ['rev-parse', '--git-dir'], { cwd: rootDir });
|
|
71
|
+
} catch {
|
|
72
|
+
await execa('git', ['init'], { cwd: rootDir });
|
|
73
|
+
}
|
|
74
|
+
|
|
66
75
|
// Create .gitkeep files
|
|
67
76
|
if (!existsSync(join(paths.reposDir, '.gitkeep'))) {
|
|
68
77
|
const fs = await import('fs');
|