ghostrail 0.15.1 → 0.16.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 (139) hide show
  1. package/README.md +206 -1
  2. package/dist/agent/claude-code.d.ts.map +1 -1
  3. package/dist/agent/claude-code.js +4 -1
  4. package/dist/agent/claude-code.js.map +1 -1
  5. package/dist/board/page.d.ts +1 -1
  6. package/dist/board/page.d.ts.map +1 -1
  7. package/dist/board/page.js +2 -1
  8. package/dist/board/page.js.map +1 -1
  9. package/dist/board/server.d.ts +1 -1
  10. package/dist/board/server.d.ts.map +1 -1
  11. package/dist/board/server.js +7 -1
  12. package/dist/board/server.js.map +1 -1
  13. package/dist/board/stats.d.ts +1 -1
  14. package/dist/board/stats.d.ts.map +1 -1
  15. package/dist/board/stats.js +2 -1
  16. package/dist/board/stats.js.map +1 -1
  17. package/dist/claude-profile/index.d.ts +1 -1
  18. package/dist/claude-profile/index.d.ts.map +1 -1
  19. package/dist/claude-profile/index.js +1 -1
  20. package/dist/claude-profile/index.js.map +1 -1
  21. package/dist/claude-profile/setup.d.ts +7 -0
  22. package/dist/claude-profile/setup.d.ts.map +1 -1
  23. package/dist/claude-profile/setup.js +7 -0
  24. package/dist/claude-profile/setup.js.map +1 -1
  25. package/dist/cli/commands.d.ts +6 -0
  26. package/dist/cli/commands.d.ts.map +1 -1
  27. package/dist/cli/commands.js +142 -33
  28. package/dist/cli/commands.js.map +1 -1
  29. package/dist/cli/update-diagnosis.d.ts +52 -0
  30. package/dist/cli/update-diagnosis.d.ts.map +1 -0
  31. package/dist/cli/update-diagnosis.js +87 -0
  32. package/dist/cli/update-diagnosis.js.map +1 -0
  33. package/dist/cli.d.ts.map +1 -1
  34. package/dist/cli.js +3 -1
  35. package/dist/cli.js.map +1 -1
  36. package/dist/commands/help.d.ts.map +1 -1
  37. package/dist/commands/help.js +11 -0
  38. package/dist/commands/help.js.map +1 -1
  39. package/dist/config/load.d.ts.map +1 -1
  40. package/dist/config/load.js +18 -2
  41. package/dist/config/load.js.map +1 -1
  42. package/dist/config/schema.d.ts +8 -2
  43. package/dist/config/schema.d.ts.map +1 -1
  44. package/dist/config/schema.js.map +1 -1
  45. package/dist/dashboard/index.d.ts +1 -1
  46. package/dist/dashboard/index.d.ts.map +1 -1
  47. package/dist/dashboard/index.js +1 -1
  48. package/dist/dashboard/index.js.map +1 -1
  49. package/dist/dashboard/page.d.ts +7 -1
  50. package/dist/dashboard/page.d.ts.map +1 -1
  51. package/dist/dashboard/page.js +204 -39
  52. package/dist/dashboard/page.js.map +1 -1
  53. package/dist/dashboard/routes.d.ts +32 -0
  54. package/dist/dashboard/routes.d.ts.map +1 -1
  55. package/dist/dashboard/routes.js +45 -0
  56. package/dist/dashboard/routes.js.map +1 -1
  57. package/dist/dashboard/server.d.ts +55 -10
  58. package/dist/dashboard/server.d.ts.map +1 -1
  59. package/dist/dashboard/server.js +91 -14
  60. package/dist/dashboard/server.js.map +1 -1
  61. package/dist/doctor/checks.d.ts +87 -0
  62. package/dist/doctor/checks.d.ts.map +1 -0
  63. package/dist/doctor/checks.js +414 -0
  64. package/dist/doctor/checks.js.map +1 -0
  65. package/dist/doctor/index.d.ts +6 -0
  66. package/dist/doctor/index.d.ts.map +1 -0
  67. package/dist/doctor/index.js +5 -0
  68. package/dist/doctor/index.js.map +1 -0
  69. package/dist/doctor/probes.d.ts +42 -0
  70. package/dist/doctor/probes.d.ts.map +1 -0
  71. package/dist/doctor/probes.js +136 -0
  72. package/dist/doctor/probes.js.map +1 -0
  73. package/dist/doctor/report.d.ts +13 -0
  74. package/dist/doctor/report.d.ts.map +1 -0
  75. package/dist/doctor/report.js +32 -0
  76. package/dist/doctor/report.js.map +1 -0
  77. package/dist/doctor/run.d.ts +48 -0
  78. package/dist/doctor/run.d.ts.map +1 -0
  79. package/dist/doctor/run.js +109 -0
  80. package/dist/doctor/run.js.map +1 -0
  81. package/dist/doctor/types.d.ts +17 -0
  82. package/dist/doctor/types.d.ts.map +1 -0
  83. package/dist/doctor/types.js +6 -0
  84. package/dist/doctor/types.js.map +1 -0
  85. package/dist/factory/state.d.ts +1 -0
  86. package/dist/factory/state.d.ts.map +1 -1
  87. package/dist/factory/state.js +44 -1
  88. package/dist/factory/state.js.map +1 -1
  89. package/dist/loop/budget.d.ts +11 -2
  90. package/dist/loop/budget.d.ts.map +1 -1
  91. package/dist/loop/budget.js +13 -3
  92. package/dist/loop/budget.js.map +1 -1
  93. package/dist/loop/comments.d.ts +20 -0
  94. package/dist/loop/comments.d.ts.map +1 -0
  95. package/dist/loop/comments.js +35 -0
  96. package/dist/loop/comments.js.map +1 -0
  97. package/dist/loop/engine.d.ts.map +1 -1
  98. package/dist/loop/engine.js +18 -0
  99. package/dist/loop/engine.js.map +1 -1
  100. package/dist/loop/index.d.ts +1 -0
  101. package/dist/loop/index.d.ts.map +1 -1
  102. package/dist/loop/index.js +1 -0
  103. package/dist/loop/index.js.map +1 -1
  104. package/dist/source/dependencies.d.ts +81 -0
  105. package/dist/source/dependencies.d.ts.map +1 -0
  106. package/dist/source/dependencies.js +218 -0
  107. package/dist/source/dependencies.js.map +1 -0
  108. package/dist/source/index.d.ts +1 -0
  109. package/dist/source/index.d.ts.map +1 -1
  110. package/dist/source/index.js +1 -0
  111. package/dist/source/index.js.map +1 -1
  112. package/dist/source/linear.d.ts +17 -1
  113. package/dist/source/linear.d.ts.map +1 -1
  114. package/dist/source/linear.js +75 -9
  115. package/dist/source/linear.js.map +1 -1
  116. package/dist/store/events.d.ts +8 -0
  117. package/dist/store/events.d.ts.map +1 -1
  118. package/dist/store/events.js +10 -0
  119. package/dist/store/events.js.map +1 -1
  120. package/dist/store/file-store.d.ts +1 -1
  121. package/dist/store/file-store.d.ts.map +1 -1
  122. package/dist/store/file-store.js +7 -0
  123. package/dist/store/file-store.js.map +1 -1
  124. package/dist/store/index.d.ts +1 -1
  125. package/dist/store/index.d.ts.map +1 -1
  126. package/dist/store/index.js +1 -1
  127. package/dist/store/index.js.map +1 -1
  128. package/dist/store/port.d.ts +15 -0
  129. package/dist/store/port.d.ts.map +1 -1
  130. package/dist/store/port.js +17 -1
  131. package/dist/store/port.js.map +1 -1
  132. package/dist/triage/engine.d.ts.map +1 -1
  133. package/dist/triage/engine.js +2 -0
  134. package/dist/triage/engine.js.map +1 -1
  135. package/package.json +3 -1
  136. package/skill/ghostrail/SKILL.md +30 -29
  137. package/templates/code/prompts/resolve-issue.md +7 -0
  138. package/templates/code/prompts/triage.md +7 -0
  139. package/templates/content/prompts/draft.md +7 -0
@@ -0,0 +1,81 @@
1
+ import type { EligibleFilter } from "../config/schema.js";
2
+ /** A blocking issue, resolved to just what dependency gating needs. */
3
+ export interface BlockerRef {
4
+ identifier: string;
5
+ /** Whether the blocker's workflow state is `completed` or `canceled`. */
6
+ done: boolean;
7
+ /** Whether the blocker itself carries the eligible label(s), directly or via its parent. */
8
+ inScope: boolean;
9
+ }
10
+ /** A child issue (Linear sub-issue) of a root, as fetched for dependency gating. */
11
+ export interface DependencyChild {
12
+ id: string;
13
+ identifier: string;
14
+ title: string;
15
+ url?: string;
16
+ description?: string;
17
+ stateName?: string;
18
+ stateType?: string;
19
+ /** `null` when unassigned, `undefined` when the field was absent from the payload. */
20
+ assigneeId?: string | null;
21
+ assigneeEmail?: string;
22
+ blockers: BlockerRef[];
23
+ }
24
+ /** A top-level issue matching the eligible filter, with its children and blockers. */
25
+ export interface DependencyRoot {
26
+ id: string;
27
+ identifier: string;
28
+ title: string;
29
+ url?: string;
30
+ description?: string;
31
+ blockers: BlockerRef[];
32
+ children: DependencyChild[];
33
+ }
34
+ /** The minimal shape `resolveEpicDependencies` returns per workable/blocked item. */
35
+ export interface DependencyItem {
36
+ identifier: string;
37
+ title: string;
38
+ url?: string;
39
+ description?: string;
40
+ }
41
+ export interface OutOfScopeBlock {
42
+ item: DependencyItem;
43
+ blockerIdentifier: string;
44
+ }
45
+ export interface DependencyDiscovery {
46
+ /** Items ready to run now, in discovery order. */
47
+ workable: DependencyItem[];
48
+ /** Items withheld because an incomplete blocker is outside the factory's scope. */
49
+ blockedOutOfScope: OutOfScopeBlock[];
50
+ }
51
+ /** Whether `labels` carries every name in `required` (vacuously true when `required` is empty). */
52
+ export declare function hasAllLabels(labels: string[], required: string[]): boolean;
53
+ /**
54
+ * Parse the `issues.nodes` payload from `ELIGIBLE_ISSUES_QUERY` into roots with
55
+ * their children and blockers. `required` is `[source].eligible.labels`, used
56
+ * to decide whether each blocker is in the factory's scope. Malformed nodes are
57
+ * skipped rather than thrown on: this is external data.
58
+ */
59
+ export declare function parseDependencyRoots(data: Record<string, unknown>, required: string[]): DependencyRoot[];
60
+ export interface BlockerVerdict {
61
+ ready: boolean;
62
+ /** Set when blocked by something out of scope: that blocker's identifier. */
63
+ blockedBy?: string;
64
+ outOfScope: boolean;
65
+ }
66
+ /**
67
+ * Decide readiness from a candidate's blockers alone. Ready when every blocker
68
+ * is done. Otherwise: an incomplete out-of-scope blocker always wins (it is the
69
+ * hard-stop case), even alongside incomplete in-scope blockers; with only
70
+ * incomplete in-scope blockers, the candidate is quietly not ready yet.
71
+ */
72
+ export declare function resolveBlockers(blockers: BlockerRef[]): BlockerVerdict;
73
+ /**
74
+ * Decide, per root, what's workable now and what's blocked on an out-of-scope
75
+ * dependency. A root with no children is a plain candidate on its own blockers.
76
+ * A root with children is an epic: it is never itself workable, and each
77
+ * eligible child (state/assignee-matching, not already done) is gated on its
78
+ * own blockers instead.
79
+ */
80
+ export declare function resolveEpicDependencies(roots: DependencyRoot[], eligible: EligibleFilter, viewerId?: string): DependencyDiscovery;
81
+ //# sourceMappingURL=dependencies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../src/source/dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAc1E,uEAAuE;AACvE,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,IAAI,EAAE,OAAO,CAAC;IACd,4FAA4F;IAC5F,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB;AAED,sFAAsF;AACtF,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,qFAAqF;AACrF,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,cAAc,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,kDAAkD;IAClD,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,mFAAmF;IACnF,iBAAiB,EAAE,eAAe,EAAE,CAAC;CACtC;AAkBD,mGAAmG;AACnG,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAE1E;AAsFD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,QAAQ,EAAE,MAAM,EAAE,GACjB,cAAc,EAAE,CAUlB;AA+BD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,cAAc,CAQtE;AAgBD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,cAAc,EAAE,EACvB,QAAQ,EAAE,cAAc,EACxB,QAAQ,CAAC,EAAE,MAAM,GAChB,mBAAmB,CA2BrB"}
@@ -0,0 +1,218 @@
1
+ /**
2
+ * Epics and dependencies (TJ-1638): once an epic (an issue with children)
3
+ * carries the factory's label(s), its children become workable in their own
4
+ * right, gated by the `blocks` relations triage already records
5
+ * (`src/triage/apply.ts`). See `specs/epic-dependencies.spec.md`.
6
+ *
7
+ * Every function here is pure and driven off already-fetched GraphQL data, so
8
+ * it is testable without a network or a fake Linear server.
9
+ */
10
+ const DONE_STATE_TYPES = new Set(["completed", "canceled"]);
11
+ function isRecord(value) {
12
+ return value !== null && typeof value === "object";
13
+ }
14
+ function parseLabelNames(raw) {
15
+ if (!isRecord(raw))
16
+ return [];
17
+ const nodes = raw.nodes;
18
+ if (!Array.isArray(nodes))
19
+ return [];
20
+ const out = [];
21
+ for (const node of nodes) {
22
+ const name = isRecord(node) ? node.name : undefined;
23
+ if (typeof name === "string")
24
+ out.push(name);
25
+ }
26
+ return out;
27
+ }
28
+ /** Whether `labels` carries every name in `required` (vacuously true when `required` is empty). */
29
+ export function hasAllLabels(labels, required) {
30
+ return required.every((name) => labels.includes(name));
31
+ }
32
+ function parseBlockerRefs(raw, required) {
33
+ if (!isRecord(raw))
34
+ return [];
35
+ const nodes = raw.nodes;
36
+ if (!Array.isArray(nodes))
37
+ return [];
38
+ const out = [];
39
+ for (const node of nodes) {
40
+ if (!isRecord(node) || !isRecord(node.issue))
41
+ continue;
42
+ const issue = node.issue;
43
+ const { identifier } = issue;
44
+ if (typeof identifier !== "string")
45
+ continue;
46
+ const stateType = isRecord(issue.state) ? issue.state.type : undefined;
47
+ const done = typeof stateType === "string" && DONE_STATE_TYPES.has(stateType);
48
+ const ownLabels = parseLabelNames(issue.labels);
49
+ const parent = issue.parent;
50
+ const parentLabels = isRecord(parent) ? parseLabelNames(parent.labels) : undefined;
51
+ const inScope = hasAllLabels(ownLabels, required) ||
52
+ (parentLabels !== undefined && hasAllLabels(parentLabels, required));
53
+ out.push({ identifier, done, inScope });
54
+ }
55
+ return out;
56
+ }
57
+ function parseDependencyChild(raw, required) {
58
+ if (!isRecord(raw))
59
+ return undefined;
60
+ const { id, identifier, title, url, description } = raw;
61
+ if (typeof id !== "string" || typeof identifier !== "string" || typeof title !== "string") {
62
+ return undefined;
63
+ }
64
+ const state = raw.state;
65
+ const stateName = isRecord(state) && typeof state.name === "string" ? state.name : undefined;
66
+ const stateType = isRecord(state) && typeof state.type === "string" ? state.type : undefined;
67
+ const assignee = raw.assignee;
68
+ const assigneeId = assignee === null
69
+ ? null
70
+ : isRecord(assignee) && typeof assignee.id === "string"
71
+ ? assignee.id
72
+ : undefined;
73
+ const assigneeEmail = isRecord(assignee) && typeof assignee.email === "string" ? assignee.email : undefined;
74
+ return {
75
+ id,
76
+ identifier,
77
+ title,
78
+ ...(typeof url === "string" ? { url } : {}),
79
+ ...(typeof description === "string" && description.trim().length > 0
80
+ ? { description: description.trim() }
81
+ : {}),
82
+ ...(stateName === undefined ? {} : { stateName }),
83
+ ...(stateType === undefined ? {} : { stateType }),
84
+ ...(assigneeId === undefined ? {} : { assigneeId }),
85
+ ...(assigneeEmail === undefined ? {} : { assigneeEmail }),
86
+ blockers: parseBlockerRefs(raw.inverseRelations, required),
87
+ };
88
+ }
89
+ function parseDependencyRoot(raw, required) {
90
+ if (!isRecord(raw))
91
+ return undefined;
92
+ const { id, identifier, title, url, description } = raw;
93
+ if (typeof id !== "string" || typeof identifier !== "string" || typeof title !== "string") {
94
+ return undefined;
95
+ }
96
+ const childNodes = isRecord(raw.children) ? raw.children.nodes : undefined;
97
+ const children = [];
98
+ if (Array.isArray(childNodes)) {
99
+ for (const node of childNodes) {
100
+ const child = parseDependencyChild(node, required);
101
+ if (child !== undefined)
102
+ children.push(child);
103
+ }
104
+ }
105
+ return {
106
+ id,
107
+ identifier,
108
+ title,
109
+ ...(typeof url === "string" ? { url } : {}),
110
+ ...(typeof description === "string" && description.trim().length > 0
111
+ ? { description: description.trim() }
112
+ : {}),
113
+ blockers: parseBlockerRefs(raw.inverseRelations, required),
114
+ children,
115
+ };
116
+ }
117
+ /**
118
+ * Parse the `issues.nodes` payload from `ELIGIBLE_ISSUES_QUERY` into roots with
119
+ * their children and blockers. `required` is `[source].eligible.labels`, used
120
+ * to decide whether each blocker is in the factory's scope. Malformed nodes are
121
+ * skipped rather than thrown on: this is external data.
122
+ */
123
+ export function parseDependencyRoots(data, required) {
124
+ if (!isRecord(data))
125
+ return [];
126
+ const issues = data.issues;
127
+ const nodes = isRecord(issues) && Array.isArray(issues.nodes) ? issues.nodes : [];
128
+ const out = [];
129
+ for (const node of nodes) {
130
+ const root = parseDependencyRoot(node, required);
131
+ if (root !== undefined)
132
+ out.push(root);
133
+ }
134
+ return out;
135
+ }
136
+ /** Whether `assigneeId`/`assigneeEmail` satisfies an `EligibleFilter.assignee` constraint. */
137
+ function matchesAssignee(assigneeId, assigneeEmail, assignee, viewerId) {
138
+ if (assignee === undefined)
139
+ return true;
140
+ if (assignee === "unassigned")
141
+ return assigneeId === null || assigneeId === undefined;
142
+ if (assignee === "me")
143
+ return viewerId !== undefined && assigneeId === viewerId;
144
+ if (assignee.includes("@"))
145
+ return assigneeEmail === assignee;
146
+ return assigneeId === assignee;
147
+ }
148
+ /**
149
+ * Whether a child qualifies as a candidate: not already done, and matching the
150
+ * `state`/`assignee` constraints the top-level query would have applied to a
151
+ * root (the children connection isn't itself filtered by Linear).
152
+ */
153
+ function childMatchesEligibility(child, eligible, viewerId) {
154
+ if (child.stateType !== undefined && DONE_STATE_TYPES.has(child.stateType))
155
+ return false;
156
+ if (eligible.state !== undefined && child.stateName !== eligible.state)
157
+ return false;
158
+ return matchesAssignee(child.assigneeId, child.assigneeEmail, eligible.assignee, viewerId);
159
+ }
160
+ /**
161
+ * Decide readiness from a candidate's blockers alone. Ready when every blocker
162
+ * is done. Otherwise: an incomplete out-of-scope blocker always wins (it is the
163
+ * hard-stop case), even alongside incomplete in-scope blockers; with only
164
+ * incomplete in-scope blockers, the candidate is quietly not ready yet.
165
+ */
166
+ export function resolveBlockers(blockers) {
167
+ const incomplete = blockers.filter((blocker) => !blocker.done);
168
+ if (incomplete.length === 0)
169
+ return { ready: true, outOfScope: false };
170
+ const outOfScope = incomplete.find((blocker) => !blocker.inScope);
171
+ if (outOfScope !== undefined) {
172
+ return { ready: false, blockedBy: outOfScope.identifier, outOfScope: true };
173
+ }
174
+ return { ready: false, outOfScope: false };
175
+ }
176
+ function toDependencyItem(source) {
177
+ return {
178
+ identifier: source.identifier,
179
+ title: source.title,
180
+ ...(source.url === undefined ? {} : { url: source.url }),
181
+ ...(source.description === undefined ? {} : { description: source.description }),
182
+ };
183
+ }
184
+ /**
185
+ * Decide, per root, what's workable now and what's blocked on an out-of-scope
186
+ * dependency. A root with no children is a plain candidate on its own blockers.
187
+ * A root with children is an epic: it is never itself workable, and each
188
+ * eligible child (state/assignee-matching, not already done) is gated on its
189
+ * own blockers instead.
190
+ */
191
+ export function resolveEpicDependencies(roots, eligible, viewerId) {
192
+ const workable = [];
193
+ const blockedOutOfScope = [];
194
+ const place = (item, blockers) => {
195
+ const verdict = resolveBlockers(blockers);
196
+ if (verdict.ready) {
197
+ workable.push(item);
198
+ }
199
+ else if (verdict.blockedBy !== undefined) {
200
+ blockedOutOfScope.push({ item, blockerIdentifier: verdict.blockedBy });
201
+ }
202
+ // Otherwise: waiting on in-scope work still in flight. Say nothing; a later
203
+ // tick re-evaluates once the blocker completes.
204
+ };
205
+ for (const root of roots) {
206
+ if (root.children.length === 0) {
207
+ place(toDependencyItem(root), root.blockers);
208
+ continue;
209
+ }
210
+ for (const child of root.children) {
211
+ if (!childMatchesEligibility(child, eligible, viewerId))
212
+ continue;
213
+ place(toDependencyItem(child), child.blockers);
214
+ }
215
+ }
216
+ return { workable, blockedOutOfScope };
217
+ }
218
+ //# sourceMappingURL=dependencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/source/dependencies.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
+ export { type BlockerRef, type DependencyChild, type DependencyDiscovery, type DependencyItem, type DependencyRoot, hasAllLabels, parseDependencyRoots, resolveBlockers, resolveEpicDependencies, } from "./dependencies.js";
1
2
  export { buildIssueFilter, createFetchRequester, ELIGIBLE_ISSUES_QUERY, LINEAR_ENDPOINT, type LinearRequester, LinearSource, type LinearSourceOptions, parseIssueNodes, } from "./linear.js";
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/source/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,KAAK,eAAe,EACpB,YAAY,EACZ,KAAK,mBAAmB,EACxB,eAAe,GAChB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/source/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,KAAK,eAAe,EACpB,YAAY,EACZ,KAAK,mBAAmB,EACxB,eAAe,GAChB,MAAM,aAAa,CAAC"}
@@ -1,2 +1,3 @@
1
+ export { hasAllLabels, parseDependencyRoots, resolveBlockers, resolveEpicDependencies, } from "./dependencies.js";
1
2
  export { buildIssueFilter, createFetchRequester, ELIGIBLE_ISSUES_QUERY, LINEAR_ENDPOINT, LinearSource, parseIssueNodes, } from "./linear.js";
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/source/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EAEf,YAAY,EAEZ,eAAe,GAChB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/source/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EAEf,YAAY,EAEZ,eAAe,GAChB,MAAM,aAAa,CAAC"}
@@ -25,7 +25,16 @@ interface IssueNode {
25
25
  */
26
26
  description?: string;
27
27
  }
28
- export declare const ELIGIBLE_ISSUES_QUERY = "\nquery EligibleIssues($filter: IssueFilter!, $first: Int!) {\n issues(filter: $filter, first: $first, orderBy: updatedAt) {\n nodes { id identifier title url description }\n }\n}";
28
+ /**
29
+ * `inverseRelations(type: blocks)` on an issue is the incoming side of a
30
+ * `blocks` relation: the issues that block it (see `IssueRelationCreate`
31
+ * below, which always creates the relation from the blocker's side). Fetched
32
+ * on both roots and children so `resolveEpicDependencies` can gate readiness
33
+ * on them (TJ-1638); a query whose fake payload omits these fields (every
34
+ * existing test) parses to no children and no blockers, which is exactly the
35
+ * pre-TJ-1638 behavior.
36
+ */
37
+ export declare const ELIGIBLE_ISSUES_QUERY = "\nquery EligibleIssues($filter: IssueFilter!, $first: Int!) {\n issues(filter: $filter, first: $first, orderBy: updatedAt) {\n nodes {\n id identifier title url description\n inverseRelations(filter: { type: { eq: blocks } }) {\n nodes {\n issue {\n id identifier\n state { type }\n labels { nodes { name } }\n parent { id identifier labels { nodes { name } } }\n }\n }\n }\n children(first: 100) {\n nodes {\n id identifier title url description\n state { name type }\n assignee { id email }\n inverseRelations(filter: { type: { eq: blocks } }) {\n nodes {\n issue {\n id identifier\n state { type }\n labels { nodes { name } }\n parent { id identifier labels { nodes { name } } }\n }\n }\n }\n }\n }\n }\n }\n}";
29
38
  /** Scope in which to build a filter: the team key, optional project, and, when
30
39
  * the assignee is `"me"`, the resolved viewer id to match. */
31
40
  export interface FilterScope {
@@ -93,6 +102,13 @@ export declare class LinearSource implements TriageSource {
93
102
  private readonly uuidByIdentifier;
94
103
  constructor(request: LinearRequester, opts: LinearSourceOptions);
95
104
  listEligible(): Promise<WorkItem[]>;
105
+ /**
106
+ * An item blocked by a dependency outside the factory's scope never becomes
107
+ * eligible on its own: claim it (so it leaves the eligible pool and this
108
+ * doesn't repeat every tick), say why, and hand it to a human, the same way
109
+ * `runTick` routes a `blocked` agent outcome.
110
+ */
111
+ private flagOutOfScopeDependency;
96
112
  claim(item: WorkItem): Promise<boolean>;
97
113
  comment(item: WorkItem, body: string): Promise<void>;
98
114
  listComments(item: WorkItem): Promise<Comment[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../src/source/linear.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linear.d.ts","sourceRoot":"","sources":["../../src/source/linear.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { GHOSTRAIL_MARKER } from "../publish/githost.js";
2
+ import { parseDependencyRoots, resolveEpicDependencies, } from "./dependencies.js";
2
3
  export const LINEAR_ENDPOINT = "https://api.linear.app/graphql";
3
4
  /**
4
5
  * A default requester over `fetch`, authenticating with a Linear personal API
@@ -21,10 +22,48 @@ export function createFetchRequester(apiKey, endpoint = LINEAR_ENDPOINT, fetchIm
21
22
  return (body.data ?? {});
22
23
  };
23
24
  }
25
+ /**
26
+ * `inverseRelations(type: blocks)` on an issue is the incoming side of a
27
+ * `blocks` relation: the issues that block it (see `IssueRelationCreate`
28
+ * below, which always creates the relation from the blocker's side). Fetched
29
+ * on both roots and children so `resolveEpicDependencies` can gate readiness
30
+ * on them (TJ-1638); a query whose fake payload omits these fields (every
31
+ * existing test) parses to no children and no blockers, which is exactly the
32
+ * pre-TJ-1638 behavior.
33
+ */
24
34
  export const ELIGIBLE_ISSUES_QUERY = `
25
35
  query EligibleIssues($filter: IssueFilter!, $first: Int!) {
26
36
  issues(filter: $filter, first: $first, orderBy: updatedAt) {
27
- nodes { id identifier title url description }
37
+ nodes {
38
+ id identifier title url description
39
+ inverseRelations(filter: { type: { eq: blocks } }) {
40
+ nodes {
41
+ issue {
42
+ id identifier
43
+ state { type }
44
+ labels { nodes { name } }
45
+ parent { id identifier labels { nodes { name } } }
46
+ }
47
+ }
48
+ }
49
+ children(first: 100) {
50
+ nodes {
51
+ id identifier title url description
52
+ state { name type }
53
+ assignee { id email }
54
+ inverseRelations(filter: { type: { eq: blocks } }) {
55
+ nodes {
56
+ issue {
57
+ id identifier
58
+ state { type }
59
+ labels { nodes { name } }
60
+ parent { id identifier labels { nodes { name } } }
61
+ }
62
+ }
63
+ }
64
+ }
65
+ }
66
+ }
28
67
  }
29
68
  }`;
30
69
  /**
@@ -239,16 +278,43 @@ export class LinearSource {
239
278
  }),
240
279
  first: this.opts.maxItems,
241
280
  });
242
- const nodes = parseIssueNodes(data);
243
- for (const node of nodes)
244
- this.uuidByIdentifier.set(node.identifier, node.id);
245
- return nodes.map((node) => ({
246
- id: node.identifier,
247
- title: node.title,
248
- ...(node.url === undefined ? {} : { url: node.url }),
249
- ...(node.description === undefined ? {} : { description: node.description }),
281
+ // Epics and dependencies (TJ-1638): a root with children is an epic, whose
282
+ // children (not the epic itself) are the workable candidates, gated on the
283
+ // `blocks` relations triage records. See specs/epic-dependencies.spec.md.
284
+ const roots = parseDependencyRoots(data, this.opts.eligible.labels);
285
+ for (const root of roots) {
286
+ this.uuidByIdentifier.set(root.identifier, root.id);
287
+ for (const child of root.children)
288
+ this.uuidByIdentifier.set(child.identifier, child.id);
289
+ }
290
+ const discovery = resolveEpicDependencies(roots, this.opts.eligible, viewerId);
291
+ for (const blocked of discovery.blockedOutOfScope) {
292
+ await this.flagOutOfScopeDependency(blocked.item, blocked.blockerIdentifier);
293
+ }
294
+ return discovery.workable.map((item) => ({
295
+ id: item.identifier,
296
+ title: item.title,
297
+ ...(item.url === undefined ? {} : { url: item.url }),
298
+ ...(item.description === undefined ? {} : { description: item.description }),
250
299
  }));
251
300
  }
301
+ /**
302
+ * An item blocked by a dependency outside the factory's scope never becomes
303
+ * eligible on its own: claim it (so it leaves the eligible pool and this
304
+ * doesn't repeat every tick), say why, and hand it to a human, the same way
305
+ * `runTick` routes a `blocked` agent outcome.
306
+ */
307
+ async flagOutOfScopeDependency(item, blockerIdentifier) {
308
+ const workItem = {
309
+ id: item.identifier,
310
+ title: item.title,
311
+ ...(item.url === undefined ? {} : { url: item.url }),
312
+ ...(item.description === undefined ? {} : { description: item.description }),
313
+ };
314
+ await this.claim(workItem);
315
+ await this.comment(workItem, `This issue depends on ${blockerIdentifier}, which is outside the factory's scope (not tagged for this factory, and not a sub-issue of a tagged epic). A human needs to resolve the dependency before the factory can pick this up.`);
316
+ await this.reassignToHuman(workItem);
317
+ }
252
318
  async claim(item) {
253
319
  const { viewerId, stateIdByName } = await this.ensureBootstrap();
254
320
  const stateId = stateIdByName.get(this.opts.inProgressState);
@@ -1 +1 @@
1
- {"version":3,"file":"linear.js","sourceRoot":"","sources":["../../src/source/linear.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"linear.js","sourceRoot":"","sources":["../../src/source/linear.ts"],"names":[],"mappings":"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"}
@@ -96,6 +96,14 @@ export interface RunRow {
96
96
  }
97
97
  /** An empty row for a run id, before any event is applied. */
98
98
  export declare function emptyRow(runId: string): RunRow;
99
+ /**
100
+ * The word every view uses for a run that has not yet reached a terminal
101
+ * `outcome` state. One shared constant so the board and the dashboard cannot
102
+ * spell the same idea two different ways.
103
+ */
104
+ export declare const IN_PROGRESS_STATE = "in-progress";
105
+ /** The state to show for a run row: its terminal state, or the in-progress fallback. */
106
+ export declare function displayState(state: string | undefined): string;
99
107
  /**
100
108
  * Apply one event to a run row, returning the updated row (does not mutate the
101
109
  * input). `startedAt` tracks the earliest `ts`, `finishedAt` the latest, and
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/store/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/store/events.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7F;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnF;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,GACD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjF;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC3E;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEN,8EAA8E;AAC9E,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,wEAAwE;AACxE,MAAM,WAAW,MAAM;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2FAA2F;IAC3F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,8DAA8D;AAC9D,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C,wFAAwF;AACxF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAE9D;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,MAAM,CA0C/D;AAED,mDAAmD;AACnD,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,MAAM,CAE1E"}
@@ -4,6 +4,16 @@ export const ROW_SCHEMA_VERSION = 1;
4
4
  export function emptyRow(runId) {
5
5
  return { schemaVersion: ROW_SCHEMA_VERSION, runId, gate: [], artifacts: [], events: 0 };
6
6
  }
7
+ /**
8
+ * The word every view uses for a run that has not yet reached a terminal
9
+ * `outcome` state. One shared constant so the board and the dashboard cannot
10
+ * spell the same idea two different ways.
11
+ */
12
+ export const IN_PROGRESS_STATE = "in-progress";
13
+ /** The state to show for a run row: its terminal state, or the in-progress fallback. */
14
+ export function displayState(state) {
15
+ return state ?? IN_PROGRESS_STATE;
16
+ }
7
17
  /**
8
18
  * Apply one event to a run row, returning the updated row (does not mutate the
9
19
  * input). `startedAt` tracks the earliest `ts`, `finishedAt` the latest, and
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/store/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/store/events.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type RunEvent, type RunRow } from "./events.js";
2
- import type { RetentionPolicy, RunFilter, RunStore } from "./port.js";
2
+ import { type RetentionPolicy, type RunFilter, type RunStore } from "./port.js";
3
3
  export type { RetentionPolicy, RunFilter } from "./port.js";
4
4
  /**
5
5
  * The local-by-default run store (research Appendix C). `events.ndjson` is the