@bluewombat/manager-github 0.8.0 → 0.10.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 (96) hide show
  1. package/README.md +188 -33
  2. package/SPECS.md +60 -24
  3. package/dist/adapter/normalize/intent.d.ts +3 -3
  4. package/dist/adapter/normalize/intent.d.ts.map +1 -1
  5. package/dist/adapter/normalize/intent.js +4 -4
  6. package/dist/adapter/normalize/intent.js.map +1 -1
  7. package/dist/adapter/normalize/normalize.d.ts +5 -1
  8. package/dist/adapter/normalize/normalize.d.ts.map +1 -1
  9. package/dist/adapter/normalize/normalize.js +5 -1
  10. package/dist/adapter/normalize/normalize.js.map +1 -1
  11. package/dist/adapter/run/run-adapter.d.ts +1 -1
  12. package/dist/adapter/run/run-adapter.d.ts.map +1 -1
  13. package/dist/adapter/run/run-adapter.js +29 -2
  14. package/dist/adapter/run/run-adapter.js.map +1 -1
  15. package/dist/adapter/types.d.ts +13 -3
  16. package/dist/adapter/types.d.ts.map +1 -1
  17. package/dist/adapter/types.js +1 -1
  18. package/dist/adapter/types.js.map +1 -1
  19. package/dist/emitter/event/field-matrix.d.ts +1 -1
  20. package/dist/emitter/event/field-matrix.d.ts.map +1 -1
  21. package/dist/emitter/event/field-matrix.js +5 -9
  22. package/dist/emitter/event/field-matrix.js.map +1 -1
  23. package/dist/emitter/github/labels.d.ts +3 -4
  24. package/dist/emitter/github/labels.d.ts.map +1 -1
  25. package/dist/emitter/github/labels.js +9 -9
  26. package/dist/emitter/github/labels.js.map +1 -1
  27. package/dist/emitter/render/render-event.d.ts.map +1 -1
  28. package/dist/emitter/render/render-event.js +13 -42
  29. package/dist/emitter/render/render-event.js.map +1 -1
  30. package/dist/emitter/run/run-emitter.d.ts +1 -1
  31. package/dist/emitter/run/run-emitter.js +3 -3
  32. package/dist/emitter/thread/marker.d.ts +1 -1
  33. package/dist/emitter/thread/marker.d.ts.map +1 -1
  34. package/dist/emitter/thread/marker.js +1 -1
  35. package/dist/emitter/thread/marker.js.map +1 -1
  36. package/dist/emitter/types.d.ts +8 -10
  37. package/dist/emitter/types.d.ts.map +1 -1
  38. package/dist/emitter/types.js +1 -1
  39. package/dist/emitter/types.js.map +1 -1
  40. package/dist/github/blockers.d.ts +24 -0
  41. package/dist/github/blockers.d.ts.map +1 -0
  42. package/dist/github/blockers.js +50 -0
  43. package/dist/github/blockers.js.map +1 -0
  44. package/dist/index.d.ts +1 -1
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +164 -45
  47. package/dist/index.js.map +1 -1
  48. package/dist/label-colors.d.ts +26 -0
  49. package/dist/label-colors.d.ts.map +1 -0
  50. package/dist/label-colors.js +51 -0
  51. package/dist/label-colors.js.map +1 -0
  52. package/dist/listener/delivery/process-tree.d.ts +1 -1
  53. package/dist/listener/delivery/process-tree.js +1 -1
  54. package/dist/listener/run/run-listener.d.ts +1 -1
  55. package/dist/listener/run/run-listener.js +1 -1
  56. package/dist/listener/source/select-events.d.ts +6 -1
  57. package/dist/listener/source/select-events.d.ts.map +1 -1
  58. package/dist/listener/source/select-events.js +9 -2
  59. package/dist/listener/source/select-events.js.map +1 -1
  60. package/dist/listener/types.d.ts +1 -1
  61. package/dist/listener/types.d.ts.map +1 -1
  62. package/dist/listener/types.js +1 -1
  63. package/dist/listener/types.js.map +1 -1
  64. package/dist/manager.d.ts +28 -8
  65. package/dist/manager.d.ts.map +1 -1
  66. package/dist/manager.js +152 -95
  67. package/dist/manager.js.map +1 -1
  68. package/dist/settled.d.ts +5 -4
  69. package/dist/settled.d.ts.map +1 -1
  70. package/dist/settled.js +7 -7
  71. package/dist/settled.js.map +1 -1
  72. package/dist/setup.d.ts +33 -8
  73. package/dist/setup.d.ts.map +1 -1
  74. package/dist/setup.js +117 -19
  75. package/dist/setup.js.map +1 -1
  76. package/dist/state-labels.d.ts +23 -0
  77. package/dist/state-labels.d.ts.map +1 -0
  78. package/dist/state-labels.js +55 -0
  79. package/dist/state-labels.js.map +1 -0
  80. package/dist/submission/lines.d.ts +19 -0
  81. package/dist/submission/lines.d.ts.map +1 -0
  82. package/dist/submission/lines.js +91 -0
  83. package/dist/submission/lines.js.map +1 -0
  84. package/dist/submission/submission.d.ts +16 -6
  85. package/dist/submission/submission.d.ts.map +1 -1
  86. package/dist/submission/submission.js +53 -7
  87. package/dist/submission/submission.js.map +1 -1
  88. package/dist/tickets/list-tickets.d.ts +29 -0
  89. package/dist/tickets/list-tickets.d.ts.map +1 -0
  90. package/dist/tickets/list-tickets.js +98 -0
  91. package/dist/tickets/list-tickets.js.map +1 -0
  92. package/dist/written-fingerprint.d.ts +2 -1
  93. package/dist/written-fingerprint.d.ts.map +1 -1
  94. package/dist/written-fingerprint.js +3 -3
  95. package/dist/written-fingerprint.js.map +1 -1
  96. package/package.json +3 -3
@@ -0,0 +1,51 @@
1
+ import { EVENT_NAMES } from "@bluewombat/manager-kit";
2
+ /**
3
+ * What `labelColors` can colour. Keys name what a label is for, never the label itself, so
4
+ * renaming a label (`stateLabels`, `resumeLabel`, ...) does not lose its colour.
5
+ *
6
+ * One key per label, none for a group: `feature-ready`, `ticket-ready` and `merge-when-ready`
7
+ * for the three ready labels, `no-tests` for the label that skips the tests written first,
8
+ * `e2e` for the Ticket that holds the acceptance suite, `skip-test-e2e` for the Feature that
9
+ * is not put through it,
10
+ * `resume` for the resume label, `project` for the
11
+ * `project:<name>` label, and `state-<event>` for the label of each Event. When the Feature and
12
+ * the Ticket ready labels are one label (the same name), `feature-ready` colours it.
13
+ */
14
+ export const LABEL_COLOR_KEYS = [
15
+ "feature-ready",
16
+ "ticket-ready",
17
+ "merge-when-ready",
18
+ "no-tests",
19
+ "e2e",
20
+ "skip-test-e2e",
21
+ "resume",
22
+ "project",
23
+ ...EVENT_NAMES.map((event) => `state-${event}`),
24
+ ];
25
+ const HEX = /^#?([0-9a-fA-F]{6})$/;
26
+ /** The colours from the `labelColors` option. A colour is six hex digits, with or without `#`. */
27
+ export function resolveLabelColors(named) {
28
+ if (named === undefined) {
29
+ return { ok: true, colors: undefined };
30
+ }
31
+ const known = new Set(LABEL_COLOR_KEYS);
32
+ const colors = {};
33
+ for (const [key, value] of Object.entries(named)) {
34
+ if (!known.has(key)) {
35
+ return {
36
+ ok: false,
37
+ reason: `"labelColors" names "${key}", which is not something a label is for (${LABEL_COLOR_KEYS.join(", ")}).`,
38
+ };
39
+ }
40
+ const match = HEX.exec(value.trim());
41
+ if (match?.[1] === undefined) {
42
+ return {
43
+ ok: false,
44
+ reason: `"labelColors.${key}" must be six hex digits, like "1d76db"; got "${value}".`,
45
+ };
46
+ }
47
+ colors[key] = match[1].toLowerCase();
48
+ }
49
+ return { ok: true, colors };
50
+ }
51
+ //# sourceMappingURL=label-colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label-colors.js","sourceRoot":"","sources":["../src/label-colors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,eAAe;IACf,cAAc;IACd,kBAAkB;IAClB,UAAU;IACV,KAAK;IACL,eAAe;IACf,QAAQ;IACR,SAAS;IACT,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,KAAK,EAAW,CAAC;CAChD,CAAC;AAUX,MAAM,GAAG,GAAG,sBAAsB,CAAC;AAEnC,kGAAkG;AAClG,MAAM,UAAU,kBAAkB,CAAC,KAAyC;IAC1E,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACzC,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,gBAAgB,CAAC,CAAC;IAChD,MAAM,MAAM,GAA2C,EAAE,CAAC;IAC1D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,wBAAwB,GAAG,6CAA6C,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;aAChH,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACrC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,gBAAgB,GAAG,iDAAiD,KAAK,IAAI;aACtF,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,GAAoB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC"}
@@ -5,7 +5,7 @@ export declare function ownGroup(): {
5
5
  };
6
6
  /**
7
7
  * Remember a running child so it does not outlive this process: a group of its
8
- * own no longer shares the terminal's Ctrl-C, nor dies by accident with us.
8
+ * own does not share the terminal's Ctrl-C, nor die by accident with us.
9
9
  * Forgotten on its own once it closes.
10
10
  */
11
11
  export declare function track(child: ChildProcess): void;
@@ -35,7 +35,7 @@ export function ownGroup() {
35
35
  }
36
36
  /**
37
37
  * Remember a running child so it does not outlive this process: a group of its
38
- * own no longer shares the terminal's Ctrl-C, nor dies by accident with us.
38
+ * own does not share the terminal's Ctrl-C, nor die by accident with us.
39
39
  * Forgotten on its own once it closes.
40
40
  */
41
41
  export function track(child) {
@@ -29,7 +29,7 @@ export type RunOptions = {
29
29
  };
30
30
  export declare function invalidInvocationResult(write: ProgressWriter, reason: string): RunResult;
31
31
  /**
32
- * Run one FeatureListener invocation to a run outcome.
32
+ * Run one Listener invocation to a run outcome.
33
33
  */
34
34
  export declare function runListener(options: RunOptions): Promise<RunResult>;
35
35
  //# sourceMappingURL=run-listener.d.ts.map
@@ -44,7 +44,7 @@ async function waitPoll(input) {
44
44
  }
45
45
  }
46
46
  /**
47
- * Run one FeatureListener invocation to a run outcome.
47
+ * Run one Listener invocation to a run outcome.
48
48
  */
49
49
  export async function runListener(options) {
50
50
  const write = options.write ?? (() => { });
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Cursor arithmetic over what the Source listed. Pure: no request is made here,
3
- * so ordering, cursor filtering, and the pull-request filter are testable from
3
+ * so ordering, cursor filtering, and the pull-request and sub-issue filters are testable from
4
4
  * a list of objects.
5
5
  */
6
6
  import type { Cursor, SkipReason } from "../types.js";
@@ -19,6 +19,11 @@ export declare function compareCursors(left: Cursor, right: Cursor): number;
19
19
  * `/issues`, and only the tracker half is what this Block subscribes to.
20
20
  */
21
21
  export declare function isPullRequest(entry: Record<string, unknown>): boolean;
22
+ /**
23
+ * A sub-issue is a Ticket, read through its Feature. Only a top-level issue is
24
+ * a Feature, which is what lets a Feature and its Tickets carry the same label.
25
+ */
26
+ export declare function isSubIssue(entry: Record<string, unknown>): boolean;
22
27
  export type CursorOfResult = {
23
28
  ok: true;
24
29
  cursor: Cursor;
@@ -1 +1 @@
1
- {"version":3,"file":"select-events.d.ts","sourceRoot":"","sources":["../../../src/listener/source/select-events.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEtD,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWvD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQlE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAErE;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD,oEAAoE;AACpE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,CAUvE;AAED,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,EAAE,CAoCvF"}
1
+ {"version":3,"file":"select-events.d.ts","sourceRoot":"","sources":["../../../src/listener/source/select-events.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEtD,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWvD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQlE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAErE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAElE;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD,oEAAoE;AACpE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,CAUvE;AAED,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,EAAE,CAoCvF"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Cursor arithmetic over what the Source listed. Pure: no request is made here,
3
- * so ordering, cursor filtering, and the pull-request filter are testable from
3
+ * so ordering, cursor filtering, and the pull-request and sub-issue filters are testable from
4
4
  * a list of objects.
5
5
  */
6
6
  export const CURSOR_SEPARATOR = "#";
@@ -41,6 +41,13 @@ export function compareCursors(left, right) {
41
41
  export function isPullRequest(entry) {
42
42
  return entry.pull_request !== undefined;
43
43
  }
44
+ /**
45
+ * A sub-issue is a Ticket, read through its Feature. Only a top-level issue is
46
+ * a Feature, which is what lets a Feature and its Tickets carry the same label.
47
+ */
48
+ export function isSubIssue(entry) {
49
+ return typeof entry.parent_issue_url === "string";
50
+ }
44
51
  /** The two fields an Event must carry to be placed in the order. */
45
52
  export function cursorOf(entry) {
46
53
  const number = entry.number;
@@ -71,7 +78,7 @@ export function selectEvents(entries, since) {
71
78
  continue;
72
79
  }
73
80
  const issue = entry;
74
- if (isPullRequest(issue)) {
81
+ if (isPullRequest(issue) || isSubIssue(issue)) {
75
82
  continue;
76
83
  }
77
84
  const cursor = cursorOf(issue);
@@ -1 +1 @@
1
- {"version":3,"file":"select-events.js","sourceRoot":"","sources":["../../../src/listener/source/select-events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"select-events.js","sourceRoot":"","sources":["../../../src/listener/source/select-events.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** Domain types owned by FeatureListener. Names match the Block perimeter only. */
1
+ /** Domain types owned by Listener. Names match the Block perimeter only. */
2
2
  export type RunOutcome = "completed" | "source-lost" | "invalid-invocation" | "interrupted";
3
3
  export type StopReason = "drained" | "max-events" | "duration" | "source-lost" | "signal";
4
4
  export type SkipReason = "not-object" | "no-cursor";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/listener/types.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,oBAAoB,GAAG,aAAa,CAAC;AAE5F,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,QAAQ,CAAC;AAE1F,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,WAAW,CAAC;AAEpD,2CAA2C;AAC3C,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEnD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;IACjB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,UAAU,CAAC;IAClB,oEAAoE;IACpE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW;AACrB,mGAAmG;AACnG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtF,kFAAkF;AAClF,MAAM,MAAM,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,qEAAqE;AACrE,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,IAAI,GAAG;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/listener/types.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,oBAAoB,GAAG,aAAa,CAAC;AAE5F,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,QAAQ,CAAC;AAE1F,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,WAAW,CAAC;AAEpD,2CAA2C;AAC3C,MAAM,MAAM,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEnD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,CAAC;IACjB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,UAAU,CAAC;IAClB,oEAAoE;IACpE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,WAAW;AACrB,mGAAmG;AACnG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtF,kFAAkF;AAClF,MAAM,MAAM,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,qEAAqE;AACrE,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,IAAI,GAAG;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC"}
@@ -1,3 +1,3 @@
1
- /** Domain types owned by FeatureListener. Names match the Block perimeter only. */
1
+ /** Domain types owned by Listener. Names match the Block perimeter only. */
2
2
  export {};
3
3
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/listener/types.ts"],"names":[],"mappings":"AAAA,mFAAmF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/listener/types.ts"],"names":[],"mappings":"AAAA,4EAA4E"}
package/dist/manager.d.ts CHANGED
@@ -1,8 +1,15 @@
1
- import type { ManagerPort } from "@bluewombat/manager-kit";
1
+ import type { Manager } from "@bluewombat/manager-kit";
2
2
  import type { Repository } from "./repo.js";
3
+ import type { StateLabels } from "./state-labels.js";
3
4
  export declare const DEFAULT_API_BASE = "https://api.github.com";
4
5
  export declare const DEFAULT_TOKEN_ENV = "GITHUB_TOKEN";
5
- export declare const DEFAULT_READY_LABEL = "ready";
6
+ export declare const DEFAULT_RESUME_LABEL = "to-resume";
7
+ export declare const DEFAULT_FEATURE_READY_LABEL = "feature-ready";
8
+ export declare const DEFAULT_TICKET_READY_LABEL = "task-ready";
9
+ export declare const DEFAULT_NO_TESTS_LABEL = "no-tests";
10
+ export declare const DEFAULT_E2E_LABEL = "e2e";
11
+ export declare const DEFAULT_SKIP_TEST_E2E_LABEL = "skip-test-e2e";
12
+ export declare const DEFAULT_MERGE_WHEN_READY_LABEL = "merge-when-ready";
6
13
  export declare const DEFAULT_PRIORITY = 50;
7
14
  export type GithubManagerOptions = {
8
15
  repo: Repository;
@@ -12,18 +19,31 @@ export type GithubManagerOptions = {
12
19
  interrupted: boolean;
13
20
  };
14
21
  apiBase?: string;
15
- labels?: string[];
16
22
  defaultProject?: string;
17
- readyLabel?: string;
23
+ resumeLabel?: string;
24
+ /** On a Feature: its content is final, so its Tickets may be made. */
25
+ featureReadyLabel?: string;
26
+ /** On a Ticket: its specification is final. */
27
+ ticketReadyLabel?: string;
28
+ /** On a Ticket: no tests are written before its code. */
29
+ noTestsLabel?: string;
30
+ /** On a Ticket: it holds the e2e acceptance suite of its Feature. */
31
+ e2eLabel?: string;
32
+ /** On a Feature: it is not put through the e2e acceptance check. */
33
+ skipTestE2eLabel?: string;
34
+ /** On a Feature: its line may be folded without a human. */
35
+ mergeWhenReadyLabel?: string;
18
36
  defaultPriority?: number;
19
- stateLabelPrefix?: string;
20
- /** Leave the feature branch on the remote after a fold. Default: delete it. */
37
+ /** When set, each Event also lands on the issue as its label. */
38
+ stateLabels?: StateLabels;
39
+ /** Leave the ticket branch on the remote after a fold. Default: delete it. */
21
40
  keepBranch?: boolean;
22
41
  /** Replaces the REST API. Tests only. */
23
42
  githubFetch?: typeof fetch;
24
43
  };
25
44
  /**
26
- * One repository's issues in, comments (and optional state labels) out.
45
+ * One repository: its issues are the Features and, as sub-issues, their
46
+ * Tickets; its branches are the lines; its pull requests are the Submissions.
27
47
  */
28
- export declare function createGithubManager(options: GithubManagerOptions): ManagerPort;
48
+ export declare function createGithubManager(options: GithubManagerOptions): Manager;
29
49
  //# sourceMappingURL=manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,WAAW,EAKZ,MAAM,yBAAyB,CAAC;AAUjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAoB5C,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AACzD,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,mBAAmB,UAAU,CAAC;AAC3C,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE;QAAE,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yCAAyC;IACzC,WAAW,CAAC,EAAE,OAAO,KAAK,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,WAAW,CA8M9E"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAOV,OAAO,EAQR,MAAM,yBAAyB,CAAC;AAUjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAsBrD,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AACzD,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAChD,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAC3D,eAAO,MAAM,0BAA0B,eAAe,CAAC;AACvD,eAAO,MAAM,sBAAsB,aAAa,CAAC;AACjD,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AACvC,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAC3D,eAAO,MAAM,8BAA8B,qBAAqB,CAAC;AACjE,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE;QAAE,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+CAA+C;IAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,8EAA8E;IAC9E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yCAAyC;IACzC,WAAW,CAAC,EAAE,OAAO,KAAK,CAAC;CAC5B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAuQ1E"}
package/dist/manager.js CHANGED
@@ -7,7 +7,9 @@ import { payloadHasLabel } from "./labels.js";
7
7
  import { runListener } from "./listener/run/run-listener.js";
8
8
  import { probeIssue } from "./probe/probe-issue.js";
9
9
  import { settledAlready } from "./settled.js";
10
- import { foldPullRequest, submitPullRequest, } from "./submission/submission.js";
10
+ import { dropLine, openLine, settledPullRequest } from "./submission/lines.js";
11
+ import { behindPullRequest, foldPullRequest, submitPullRequest, } from "./submission/submission.js";
12
+ import { listTickets } from "./tickets/list-tickets.js";
11
13
  import { writtenFingerprint } from "./written-fingerprint.js";
12
14
  const silent = () => { };
13
15
  const MANAGER = "github";
@@ -21,16 +23,28 @@ const DEFAULT_PRIORITY_LABEL_PREFIX = "priority:";
21
23
  const MAX_REPORT_CHARS = 8_000;
22
24
  export const DEFAULT_API_BASE = "https://api.github.com";
23
25
  export const DEFAULT_TOKEN_ENV = "GITHUB_TOKEN";
24
- export const DEFAULT_READY_LABEL = "ready";
26
+ export const DEFAULT_RESUME_LABEL = "to-resume";
27
+ export const DEFAULT_FEATURE_READY_LABEL = "feature-ready";
28
+ export const DEFAULT_TICKET_READY_LABEL = "task-ready";
29
+ export const DEFAULT_NO_TESTS_LABEL = "no-tests";
30
+ export const DEFAULT_E2E_LABEL = "e2e";
31
+ export const DEFAULT_SKIP_TEST_E2E_LABEL = "skip-test-e2e";
32
+ export const DEFAULT_MERGE_WHEN_READY_LABEL = "merge-when-ready";
25
33
  export const DEFAULT_PRIORITY = 50;
26
34
  /**
27
- * One repository's issues in, comments (and optional state labels) out.
35
+ * One repository: its issues are the Features and, as sub-issues, their
36
+ * Tickets; its branches are the lines; its pull requests are the Submissions.
28
37
  */
29
38
  export function createGithubManager(options) {
30
39
  const apiBase = options.apiBase ?? DEFAULT_API_BASE;
31
- const readyLabel = options.readyLabel ?? DEFAULT_READY_LABEL;
40
+ const resumeLabel = options.resumeLabel ?? DEFAULT_RESUME_LABEL;
41
+ const featureReadyLabel = options.featureReadyLabel ?? DEFAULT_FEATURE_READY_LABEL;
42
+ const ticketReadyLabel = options.ticketReadyLabel ?? DEFAULT_TICKET_READY_LABEL;
43
+ const noTestsLabel = options.noTestsLabel ?? DEFAULT_NO_TESTS_LABEL;
44
+ const e2eLabel = options.e2eLabel ?? DEFAULT_E2E_LABEL;
45
+ const skipTestE2eLabel = options.skipTestE2eLabel ?? DEFAULT_SKIP_TEST_E2E_LABEL;
46
+ const mergeWhenReadyLabel = options.mergeWhenReadyLabel ?? DEFAULT_MERGE_WHEN_READY_LABEL;
32
47
  const defaultPriority = options.defaultPriority ?? DEFAULT_PRIORITY;
33
- const labels = options.labels ?? [];
34
48
  const testNetwork = options.githubFetch !== undefined;
35
49
  // One for the life of this manager — one `mason run` — shared by every call,
36
50
  // so a tick that finds nothing changed costs no budget.
@@ -49,39 +63,107 @@ export function createGithubManager(options) {
49
63
  ...(options.githubFetch !== undefined ? { fetch: options.githubFetch } : {}),
50
64
  };
51
65
  }
52
- return {
53
- signalsReady(payload) {
54
- return payloadHasLabel(payload, readyLabel);
55
- },
56
- async clearReady(key) {
57
- const issue = issueNumberFromExternalId(key);
58
- if (issue === undefined) {
59
- return;
60
- }
61
- const call = createClient(channelOptions());
62
- try {
63
- await call.request("DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}", {
64
- owner: options.repo.owner,
65
- repo: options.repo.name,
66
- issue_number: issue,
67
- name: readyLabel,
68
- });
69
- }
70
- catch {
71
- // Already gone, or the label was never there. Either way there is
72
- // nothing left to take back.
73
- }
74
- },
66
+ const signalsResume = (payload) => payloadHasLabel(payload, resumeLabel);
67
+ const clearResume = async (key) => {
68
+ const issue = issueNumberFromExternalId(key);
69
+ if (issue === undefined) {
70
+ return;
71
+ }
72
+ const call = createClient(channelOptions());
73
+ try {
74
+ await call.request("DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}", {
75
+ owner: options.repo.owner,
76
+ repo: options.repo.name,
77
+ issue_number: issue,
78
+ name: resumeLabel,
79
+ });
80
+ }
81
+ catch {
82
+ // Already gone, or the label was never there. Either way there is
83
+ // nothing left to take back.
84
+ }
85
+ };
86
+ const report = async (input) => {
87
+ // Every key this manager mints ends in `#<issue>`, so the Thread to write
88
+ // on is recoverable without Host carrying an issue number around.
89
+ const issue = issueNumberFromExternalId(input.key);
90
+ if (issue === undefined) {
91
+ return false;
92
+ }
93
+ const emitterInvocation = {
94
+ repo: options.repo,
95
+ issue,
96
+ apiBase,
97
+ event: input.event,
98
+ key: input.key,
99
+ project: input.project,
100
+ at: new Date().toISOString(),
101
+ fields: input.fields,
102
+ maxReportChars: MAX_REPORT_CHARS,
103
+ defaultPriority,
104
+ resumeLabel,
105
+ durationMs: options.durationMs,
106
+ requestRetries: testNetwork ? 0 : DEFAULT_REQUEST_RETRIES,
107
+ dryRun: false,
108
+ };
109
+ if (input.eventId !== undefined) {
110
+ emitterInvocation.eventId = input.eventId;
111
+ }
112
+ if (options.stateLabels !== undefined) {
113
+ emitterInvocation.stateLabels = options.stateLabels;
114
+ }
115
+ const result = await runEmitter({
116
+ invocation: emitterInvocation,
117
+ github: createClient(channelOptions()),
118
+ write: silent,
119
+ interruptFlag: options.interruptFlag,
120
+ });
121
+ // A Thread that already carries this eventId has said it. Counting that
122
+ // as failure made every poll re-ask and film report-declined forever.
123
+ return result.outcome === "reported" || result.outcome === "duplicate";
124
+ };
125
+ const probe = async (key) => {
126
+ const issue = issueNumberFromExternalId(key);
127
+ if (issue === undefined) {
128
+ return "unavailable";
129
+ }
130
+ const now = () => Date.now();
131
+ return await probeIssue({
132
+ github: createClient(channelOptions()),
133
+ repo: options.repo,
134
+ number: issue,
135
+ deadlineMs: now() + options.durationMs,
136
+ now,
137
+ shouldInterrupt: () => options.interruptFlag.interrupted,
138
+ });
139
+ };
140
+ function submissionContext() {
141
+ const now = () => Date.now();
142
+ return {
143
+ repo: options.repo,
144
+ github: createClient(channelOptions()),
145
+ deadlineMs: now() + options.durationMs,
146
+ now,
147
+ shouldInterrupt: () => options.interruptFlag.interrupted,
148
+ keepBranch: options.keepBranch,
149
+ };
150
+ }
151
+ /** Features: the top-level issues that carry the feature-ready label, whatever else they say. */
152
+ const features = {
153
+ signalsResume,
154
+ clearResume,
155
+ probe,
156
+ report,
75
157
  async listen(input) {
76
158
  const deliveries = [];
77
- const alreadySettled = (payload) => options.stateLabelPrefix !== undefined &&
78
- settledAlready(payload, options.stateLabelPrefix, readyLabel);
159
+ const alreadySettled = (payload) => options.stateLabels !== undefined &&
160
+ settledAlready(payload, options.stateLabels, resumeLabel);
79
161
  const listenerInvocation = {
80
162
  manager: MANAGER,
81
163
  repo: options.repo,
82
164
  apiBase,
83
165
  state: "all",
84
- labels,
166
+ labels: [featureReadyLabel],
85
167
  follow: false,
86
168
  maxEvents: DEFAULT_MAX_EVENTS,
87
169
  durationMs: options.durationMs,
@@ -116,7 +198,9 @@ export function createGithubManager(options) {
116
198
  maxRawBytes: DEFAULT_MAX_RAW_BYTES,
117
199
  projectLabelPrefix: DEFAULT_PROJECT_LABEL_PREFIX,
118
200
  priorityLabelPrefix: DEFAULT_PRIORITY_LABEL_PREFIX,
119
- readyLabel,
201
+ resumeLabel,
202
+ mergeWhenReadyLabel,
203
+ skipTestE2eLabel,
120
204
  fetch: true,
121
205
  fetchDurationMs: options.durationMs,
122
206
  requestRetries: testNetwork ? 0 : DEFAULT_REQUEST_RETRIES,
@@ -137,7 +221,7 @@ export function createGithubManager(options) {
137
221
  invalid: adapted.invalid,
138
222
  key: keyFromPayload(payload, options.repo),
139
223
  project: projectFromPayload(payload, options.defaultProject),
140
- fingerprint: writtenFingerprint(payload, options.stateLabelPrefix),
224
+ fingerprint: writtenFingerprint(payload, options.stateLabels),
141
225
  };
142
226
  }
143
227
  if (adapted.outcome === "unavailable" || adapted.outcome === "interrupted") {
@@ -148,86 +232,59 @@ export function createGithubManager(options) {
148
232
  }
149
233
  return { outcome: "converted", feature: adapted.feature };
150
234
  },
151
- async report(input) {
152
- // Every key this manager mints ends in `#<issue>`, so the Thread to write
153
- // on is recoverable without Host carrying an issue number around.
154
- const issue = issueNumberFromExternalId(input.key);
155
- if (issue === undefined) {
156
- return false;
157
- }
158
- const emitterInvocation = {
235
+ };
236
+ /** Tickets: the sub-issues of a Feature; the lines and Submissions: branches and pull requests. */
237
+ const tickets = {
238
+ clearResume,
239
+ probe,
240
+ report,
241
+ async tickets(feature) {
242
+ const now = () => Date.now();
243
+ return await listTickets({
244
+ github: createClient(channelOptions()),
159
245
  repo: options.repo,
160
- issue,
161
- apiBase,
162
- event: input.event,
163
- key: input.key,
164
- project: input.project,
165
- at: new Date().toISOString(),
166
- fields: input.fields,
167
- maxReportChars: MAX_REPORT_CHARS,
246
+ manager: MANAGER,
247
+ feature,
168
248
  defaultPriority,
169
- readyLabel,
170
- durationMs: options.durationMs,
171
- requestRetries: testNetwork ? 0 : DEFAULT_REQUEST_RETRIES,
172
- dryRun: false,
173
- };
174
- if (input.eventId !== undefined) {
175
- emitterInvocation.eventId = input.eventId;
176
- }
177
- if (options.stateLabelPrefix !== undefined) {
178
- emitterInvocation.labelPrefix = options.stateLabelPrefix;
179
- }
180
- const result = await runEmitter({
181
- invocation: emitterInvocation,
182
- github: createClient(channelOptions()),
183
- write: silent,
184
- interruptFlag: options.interruptFlag,
249
+ projectLabelPrefix: DEFAULT_PROJECT_LABEL_PREFIX,
250
+ priorityLabelPrefix: DEFAULT_PRIORITY_LABEL_PREFIX,
251
+ resumeLabel,
252
+ ticketReadyLabel,
253
+ noTestsLabel,
254
+ e2eLabel,
255
+ deadlineMs: now() + options.durationMs,
256
+ now,
257
+ shouldInterrupt: () => options.interruptFlag.interrupted,
185
258
  });
186
- // A Thread that already carries this eventId has said it. Counting that
187
- // as failure made every poll re-ask and film report-declined forever.
188
- return result.outcome === "reported" || result.outcome === "duplicate";
259
+ },
260
+ async openLine(input) {
261
+ return await openLine(input, submissionContext());
262
+ },
263
+ async dropLine(line) {
264
+ await dropLine(line, submissionContext());
189
265
  },
190
266
  async submit(input) {
191
267
  return await submitPullRequest(input, submissionContext());
192
268
  },
269
+ async behind(input) {
270
+ return await behindPullRequest(input.reference, submissionContext());
271
+ },
193
272
  async fold(input) {
194
273
  return await foldPullRequest(input.reference, submissionContext());
195
274
  },
196
- async probe(key) {
197
- const issue = issueNumberFromExternalId(key);
198
- if (issue === undefined) {
199
- return "unavailable";
200
- }
201
- const now = () => Date.now();
202
- return await probeIssue({
203
- github: createClient(channelOptions()),
204
- repo: options.repo,
205
- number: issue,
206
- deadlineMs: now() + options.durationMs,
207
- now,
208
- shouldInterrupt: () => options.interruptFlag.interrupted,
209
- });
275
+ async settled(input) {
276
+ return await settledPullRequest(input.reference, submissionContext());
210
277
  },
211
278
  };
212
- function submissionContext() {
213
- const now = () => Date.now();
214
- return {
215
- repo: options.repo,
216
- github: createClient(channelOptions()),
217
- deadlineMs: now() + options.durationMs,
218
- now,
219
- shouldInterrupt: () => options.interruptFlag.interrupted,
220
- keepBranch: options.keepBranch,
221
- };
222
- }
279
+ return { features, tickets };
223
280
  }
224
281
  /**
225
- * Whether the tracker already says this Feature is finished.
282
+ * Whether the tracker already says this Ticket is finished.
226
283
  *
227
284
  * The WorkLedger is the source of truth, and it is the only memory: lose it and
228
285
  * every open issue looks new, so finished work is built and offered a second
229
286
  * time. The state label is what the tracker remembers, and reading it back is
230
- * cheaper than rebuilding a Feature that is already merged. The resume signal
287
+ * cheaper than rebuilding a Ticket that is already merged. The resume signal
231
288
  * overrides it, so a human still has a way to ask for more.
232
289
  */
233
290
  function keyFromPayload(payload, repo) {
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}