@on-par/factory-core 0.9.26 → 0.9.27-next.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.
Files changed (87) hide show
  1. package/dist/config/index.d.ts +0 -1
  2. package/dist/config/index.d.ts.map +1 -1
  3. package/dist/config/index.js +1 -3
  4. package/dist/config/index.js.map +1 -1
  5. package/dist/config/run-section.d.ts +1 -1
  6. package/dist/config/run-section.js +1 -1
  7. package/dist/index.d.ts +6 -29
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +3 -17
  10. package/dist/index.js.map +1 -1
  11. package/package.json +5 -5
  12. package/dist/config/v2-models.d.ts +0 -75
  13. package/dist/config/v2-models.d.ts.map +0 -1
  14. package/dist/config/v2-models.js +0 -119
  15. package/dist/config/v2-models.js.map +0 -1
  16. package/dist/config/v2.d.ts +0 -252
  17. package/dist/config/v2.d.ts.map +0 -1
  18. package/dist/config/v2.js +0 -369
  19. package/dist/config/v2.js.map +0 -1
  20. package/dist/hosted/control-plane.d.ts +0 -40
  21. package/dist/hosted/control-plane.d.ts.map +0 -1
  22. package/dist/hosted/control-plane.js +0 -198
  23. package/dist/hosted/control-plane.js.map +0 -1
  24. package/dist/hosted/queue-client.d.ts +0 -51
  25. package/dist/hosted/queue-client.d.ts.map +0 -1
  26. package/dist/hosted/queue-client.js +0 -92
  27. package/dist/hosted/queue-client.js.map +0 -1
  28. package/dist/hosted/runner-client.d.ts +0 -78
  29. package/dist/hosted/runner-client.d.ts.map +0 -1
  30. package/dist/hosted/runner-client.js +0 -82
  31. package/dist/hosted/runner-client.js.map +0 -1
  32. package/dist/hosted/runner.d.ts +0 -74
  33. package/dist/hosted/runner.d.ts.map +0 -1
  34. package/dist/hosted/runner.js +0 -174
  35. package/dist/hosted/runner.js.map +0 -1
  36. package/dist/hosted/smoke.d.ts +0 -46
  37. package/dist/hosted/smoke.d.ts.map +0 -1
  38. package/dist/hosted/smoke.js +0 -56
  39. package/dist/hosted/smoke.js.map +0 -1
  40. package/dist/hosted/store-resolve.d.ts +0 -16
  41. package/dist/hosted/store-resolve.d.ts.map +0 -1
  42. package/dist/hosted/store-resolve.js +0 -13
  43. package/dist/hosted/store-resolve.js.map +0 -1
  44. package/dist/hosted/store-sqlite.d.ts +0 -10
  45. package/dist/hosted/store-sqlite.d.ts.map +0 -1
  46. package/dist/hosted/store-sqlite.js +0 -67
  47. package/dist/hosted/store-sqlite.js.map +0 -1
  48. package/dist/hosted/summary.d.ts +0 -26
  49. package/dist/hosted/summary.d.ts.map +0 -1
  50. package/dist/hosted/summary.js +0 -27
  51. package/dist/hosted/summary.js.map +0 -1
  52. package/dist/hosted/watchdog.d.ts +0 -38
  53. package/dist/hosted/watchdog.d.ts.map +0 -1
  54. package/dist/hosted/watchdog.js +0 -56
  55. package/dist/hosted/watchdog.js.map +0 -1
  56. package/dist/phases/board-queue-dispatch.d.ts +0 -21
  57. package/dist/phases/board-queue-dispatch.d.ts.map +0 -1
  58. package/dist/phases/board-queue-dispatch.js +0 -57
  59. package/dist/phases/board-queue-dispatch.js.map +0 -1
  60. package/dist/phases/board-queue-scheduler.d.ts +0 -19
  61. package/dist/phases/board-queue-scheduler.d.ts.map +0 -1
  62. package/dist/phases/board-queue-scheduler.js +0 -56
  63. package/dist/phases/board-queue-scheduler.js.map +0 -1
  64. package/dist/projects/project-queue-poller.d.ts +0 -25
  65. package/dist/projects/project-queue-poller.d.ts.map +0 -1
  66. package/dist/projects/project-queue-poller.js +0 -92
  67. package/dist/projects/project-queue-poller.js.map +0 -1
  68. package/dist/projects/project-queue-reader.d.ts +0 -40
  69. package/dist/projects/project-queue-reader.d.ts.map +0 -1
  70. package/dist/projects/project-queue-reader.js +0 -185
  71. package/dist/projects/project-queue-reader.js.map +0 -1
  72. package/dist/projects/project-status-writer.d.ts +0 -12
  73. package/dist/projects/project-status-writer.d.ts.map +0 -1
  74. package/dist/projects/project-status-writer.js +0 -42
  75. package/dist/projects/project-status-writer.js.map +0 -1
  76. package/dist/queue/project-board-poller.d.ts +0 -15
  77. package/dist/queue/project-board-poller.d.ts.map +0 -1
  78. package/dist/queue/project-board-poller.js +0 -3
  79. package/dist/queue/project-board-poller.js.map +0 -1
  80. package/dist/queue/project-board-status-writer.d.ts +0 -42
  81. package/dist/queue/project-board-status-writer.d.ts.map +0 -1
  82. package/dist/queue/project-board-status-writer.js +0 -83
  83. package/dist/queue/project-board-status-writer.js.map +0 -1
  84. package/dist/queue/reprioritization-audit.d.ts +0 -19
  85. package/dist/queue/reprioritization-audit.d.ts.map +0 -1
  86. package/dist/queue/reprioritization-audit.js +0 -77
  87. package/dist/queue/reprioritization-audit.js.map +0 -1
@@ -1,42 +0,0 @@
1
- // packages/core/src/projects/project-status-writer.ts — Coarse daemon status publishing for ProjectV2 items (#868).
2
- const COARSE_BY_QUEUE_STATUS = {
3
- ready: 'ready',
4
- in_progress: 'active',
5
- blocked: 'blocked',
6
- done: 'done',
7
- };
8
- function coarseStatus(event) {
9
- if (event.phase === 'plan' && event.status === 'started')
10
- return 'active';
11
- if (event.phase === 'ship' && event.status === 'done')
12
- return 'done';
13
- return null;
14
- }
15
- function issueNumber(issueId) {
16
- if (!/^\d+$/.test(issueId))
17
- return null;
18
- const number = Number(issueId);
19
- return Number.isSafeInteger(number) ? number : null;
20
- }
21
- export function createProjectStatusWriter(options) {
22
- const lastWritten = new Map();
23
- async function handle(event) {
24
- const status = coarseStatus(event);
25
- if (status === null)
26
- return;
27
- const number = issueNumber(event.issueId);
28
- if (number === null)
29
- return;
30
- const projection = options.projectionSource.snapshot();
31
- const item = projection?.items.find((candidate) => candidate.issue.number === number);
32
- if (item === undefined)
33
- return;
34
- const known = lastWritten.get(item.membership.itemId) ?? COARSE_BY_QUEUE_STATUS[item.status];
35
- if (known === status)
36
- return;
37
- await options.boardWriter.write(item.membership, status);
38
- lastWritten.set(item.membership.itemId, status);
39
- }
40
- return { handle };
41
- }
42
- //# sourceMappingURL=project-status-writer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-status-writer.js","sourceRoot":"","sources":["../../src/projects/project-status-writer.ts"],"names":[],"mappings":"AAAA,oHAAoH;AAiBpH,MAAM,sBAAsB,GAAkE;IAC5F,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,QAAQ;IACrB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,SAAS,YAAY,CAAC,KAAyB;IAC7C,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC1E,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACrE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,OAAe;IAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAmC;IAC3E,MAAM,WAAW,GAAG,IAAI,GAAG,EAAoC,CAAC;IAEhE,KAAK,UAAU,MAAM,CAAC,KAAyB;QAC7C,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO;QAE5B,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO;QAE5B,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACtF,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO;QAE/B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7F,IAAI,KAAK,KAAK,MAAM;YAAE,OAAO;QAE7B,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QACzD,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC"}
@@ -1,15 +0,0 @@
1
- export type QueueIntentStatus = 'queued' | 'active' | 'blocked' | 'done' | 'unknown';
2
- export interface QueueIntentItem {
3
- readonly projectId: string;
4
- readonly itemId: string;
5
- readonly issueId: string | null;
6
- readonly issueNumber: number | null;
7
- readonly lane: string | null;
8
- readonly priority: string | number | null;
9
- readonly status: QueueIntentStatus;
10
- }
11
- export interface QueueIntentSnapshot {
12
- readonly refreshedAt: string;
13
- readonly items: readonly QueueIntentItem[];
14
- }
15
- //# sourceMappingURL=project-board-poller.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-board-poller.d.ts","sourceRoot":"","sources":["../../src/queue/project-board-poller.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAErF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;CAC5C"}
@@ -1,3 +0,0 @@
1
- // packages/core/src/queue/project-board-poller.ts — ProjectV2 queue-intent snapshot types (#847); the poller itself was removed (#3782).
2
- export {};
3
- //# sourceMappingURL=project-board-poller.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-board-poller.js","sourceRoot":"","sources":["../../src/queue/project-board-poller.ts"],"names":[],"mappings":"AAAA,yIAAyI"}
@@ -1,42 +0,0 @@
1
- import type { FactoryLogger } from '../logger/index.js';
2
- export type ProjectBoardCoarseStatus = 'ready' | 'active' | 'blocked' | 'done';
3
- export interface ProjectBoardStatusItem {
4
- /** Opaque GitHub ProjectV2 node ID. */
5
- readonly projectId: string;
6
- /** Opaque GitHub ProjectV2Item node ID. */
7
- readonly itemId: string;
8
- }
9
- export interface ProjectBoardStatusValues {
10
- /** Opaque single-select option ID for Ready. */
11
- readonly readyOptionId: string;
12
- /** Opaque single-select option ID for In Progress. */
13
- readonly inProgressOptionId: string;
14
- /** Opaque single-select option ID for Blocked. */
15
- readonly blockedOptionId: string;
16
- /** Opaque single-select option ID for Done. */
17
- readonly doneOptionId: string;
18
- }
19
- export interface ProjectBoardStatusConfig {
20
- /** Opaque GitHub ProjectV2 node ID. */
21
- readonly projectId: string;
22
- /** Opaque ProjectV2 single-select status field ID. */
23
- readonly statusFieldId: string;
24
- readonly values: ProjectBoardStatusValues;
25
- }
26
- export interface ProjectBoardStatusWriterOptions {
27
- readonly boards: readonly ProjectBoardStatusConfig[];
28
- graphql: (query: string, variables: {
29
- projectId: string;
30
- itemId: string;
31
- fieldId: string;
32
- value: {
33
- singleSelectOptionId: string;
34
- };
35
- }) => Promise<unknown>;
36
- logger: FactoryLogger;
37
- }
38
- export interface ProjectBoardStatusWriter {
39
- write(item: ProjectBoardStatusItem, status: ProjectBoardCoarseStatus): Promise<void>;
40
- }
41
- export declare function createProjectBoardStatusWriter(options: ProjectBoardStatusWriterOptions): ProjectBoardStatusWriter;
42
- //# sourceMappingURL=project-board-status-writer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-board-status-writer.d.ts","sourceRoot":"","sources":["../../src/queue/project-board-status-writer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAE/E,MAAM,WAAW,sBAAsB;IACrC,uCAAuC;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,wBAAwB;IACvC,gDAAgD;IAChD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,sDAAsD;IACtD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,kDAAkD;IAClD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,+CAA+C;IAC/C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,uCAAuC;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,sDAAsD;IACtD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;CAC3C;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,MAAM,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACrD,OAAO,EAAE,CACP,KAAK,EAAE,MAAM,EACb,SAAS,EAAE;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE;YAAE,oBAAoB,EAAE,MAAM,CAAA;SAAE,CAAC;KACzC,KACE,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtF;AA4DD,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,+BAA+B,GAAG,wBAAwB,CAkCjH"}
@@ -1,83 +0,0 @@
1
- // packages/core/src/queue/project-board-status-writer.ts — Coarse ProjectV2 status updates (#849).
2
- const UPDATE_PROJECT_BOARD_STATUS_MUTATION = `
3
- mutation UpdateProjectBoardStatus($projectId: ID!, $itemId: ID!, $fieldId: ID!, $value: ProjectV2FieldValue!) {
4
- updateProjectV2ItemFieldValue(input: {
5
- projectId: $projectId
6
- itemId: $itemId
7
- fieldId: $fieldId
8
- value: $value
9
- }) {
10
- projectV2Item {
11
- id
12
- }
13
- }
14
- }
15
- `;
16
- const OPTION_KEY_BY_STATUS = {
17
- ready: 'readyOptionId',
18
- active: 'inProgressOptionId',
19
- blocked: 'blockedOptionId',
20
- done: 'doneOptionId',
21
- };
22
- function errorMessage(error) {
23
- return error instanceof Error ? error.message : String(error);
24
- }
25
- function hasNonEmptyId(value) {
26
- return value.trim() !== '';
27
- }
28
- function configurationError(boards) {
29
- if (boards.length === 0)
30
- return new RangeError('Project board status writer configuration requires at least one board');
31
- const projectIds = new Set();
32
- for (const board of boards) {
33
- if (!hasNonEmptyId(board.projectId) ||
34
- !hasNonEmptyId(board.statusFieldId) ||
35
- !hasNonEmptyId(board.values.readyOptionId) ||
36
- !hasNonEmptyId(board.values.inProgressOptionId) ||
37
- !hasNonEmptyId(board.values.blockedOptionId) ||
38
- !hasNonEmptyId(board.values.doneOptionId)) {
39
- return new RangeError('Project board status writer configuration requires non-empty IDs');
40
- }
41
- if (projectIds.has(board.projectId)) {
42
- return new RangeError(`Project board status writer configuration has duplicate project ID: ${board.projectId}`);
43
- }
44
- projectIds.add(board.projectId);
45
- }
46
- return null;
47
- }
48
- function warn(logger, message) {
49
- logger.warn('warn', message, { actor: 'daemon/project-board-status-writer' });
50
- }
51
- export function createProjectBoardStatusWriter(options) {
52
- const invalidConfiguration = configurationError(options.boards);
53
- if (invalidConfiguration !== null) {
54
- warn(options.logger, invalidConfiguration.message);
55
- throw invalidConfiguration;
56
- }
57
- const boards = new Map(options.boards.map((board) => [board.projectId, board]));
58
- async function write(item, status) {
59
- const optionKey = OPTION_KEY_BY_STATUS[status];
60
- if (optionKey === undefined) {
61
- warn(options.logger, `Project board status write skipped: unsupported coarse status "${String(status)}"`);
62
- return;
63
- }
64
- const board = boards.get(item.projectId);
65
- if (board === undefined) {
66
- warn(options.logger, `Project board status write skipped: project is not configured: ${item.projectId}`);
67
- return;
68
- }
69
- try {
70
- await options.graphql(UPDATE_PROJECT_BOARD_STATUS_MUTATION, {
71
- projectId: board.projectId,
72
- itemId: item.itemId,
73
- fieldId: board.statusFieldId,
74
- value: { singleSelectOptionId: board.values[optionKey] },
75
- });
76
- }
77
- catch (error) {
78
- warn(options.logger, `Project board status write failed: ${errorMessage(error)}`);
79
- }
80
- }
81
- return { write };
82
- }
83
- //# sourceMappingURL=project-board-status-writer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-board-status-writer.js","sourceRoot":"","sources":["../../src/queue/project-board-status-writer.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import type { FactoryLogger } from '../logger/index.js';
2
- import type { ProjectQueueProjection } from '../projects/project-queue-poller.js';
3
- import type { QueueReprioritizationRecord } from '../types/index.js';
4
- export interface QueueRationaleCommentClient {
5
- commentOnIssue(input: {
6
- issueNumber: number;
7
- body: string;
8
- }): Promise<void>;
9
- }
10
- export interface QueueRationaleAuditorOptions {
11
- readonly commentClient?: QueueRationaleCommentClient;
12
- }
13
- export interface QueueRationaleAuditor {
14
- observeAcceptedProjection(projection: ProjectQueueProjection): Promise<void>;
15
- recordDaemonReprioritization(input: Omit<QueueReprioritizationRecord, 'actorType'>): Promise<void>;
16
- }
17
- export declare function renderReprioritizationComment(record: QueueReprioritizationRecord): string;
18
- export declare function createQueueRationaleAuditor(logger: FactoryLogger, options?: QueueRationaleAuditorOptions): QueueRationaleAuditor;
19
- //# sourceMappingURL=reprioritization-audit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reprioritization-audit.d.ts","sourceRoot":"","sources":["../../src/queue/reprioritization-audit.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAErE,MAAM,WAAW,2BAA2B;IAC1C,cAAc,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7E;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,aAAa,CAAC,EAAE,2BAA2B,CAAC;CACtD;AAED,MAAM,WAAW,qBAAqB;IACpC,yBAAyB,CAAC,UAAU,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,4BAA4B,CAAC,KAAK,EAAE,IAAI,CAAC,2BAA2B,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpG;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,2BAA2B,GAAG,MAAM,CAWzF;AAUD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,4BAA4B,GACrC,qBAAqB,CAuDvB"}
@@ -1,77 +0,0 @@
1
- // packages/core/src/queue/reprioritization-audit.ts — Local queue reprioritization audit records (#850),
2
- // plus durable rationale comments posted back to the issue (#1049).
3
- export function renderReprioritizationComment(record) {
4
- const lines = [
5
- '🗂️ **Queue reprioritization recorded**',
6
- '',
7
- `- **Field:** ${record.field}`,
8
- `- **Previous:** ${record.priorValue}`,
9
- `- **New:** ${record.newValue}`,
10
- `- **Actor:** ${record.actorType}`,
11
- ];
12
- if (record.rationale !== null)
13
- lines.push(`- **Rationale:** ${record.rationale}`);
14
- return lines.join('\n');
15
- }
16
- function logReprioritization(logger, record) {
17
- logger
18
- .child({ issue: record.issueNumber })
19
- .info('queue_reprioritized', `Queue ${record.field} changed from ${record.priorValue} to ${record.newValue}`, {
20
- queueReprioritization: record,
21
- });
22
- }
23
- export function createQueueRationaleAuditor(logger, options) {
24
- let priorProjection;
25
- async function emit(record) {
26
- logReprioritization(logger, record);
27
- if (options?.commentClient === undefined)
28
- return;
29
- try {
30
- await options.commentClient.commentOnIssue({
31
- issueNumber: record.issueNumber,
32
- body: renderReprioritizationComment(record),
33
- });
34
- }
35
- catch (error) {
36
- const message = error instanceof Error ? error.message : String(error);
37
- logger
38
- .child({ issue: record.issueNumber })
39
- .warn('queue_rationale_comment_failed', `Queue rationale comment failed: ${message}`, {
40
- queueReprioritization: record,
41
- });
42
- }
43
- }
44
- async function observeAcceptedProjection(projection) {
45
- if (priorProjection !== undefined) {
46
- const priorItemsByIssueId = new Map(priorProjection.items.map((item) => [item.issue.id, item]));
47
- for (const item of projection.items) {
48
- const priorItem = priorItemsByIssueId.get(item.issue.id);
49
- if (priorItem === undefined)
50
- continue;
51
- const changedValues = [
52
- ['lane', priorItem.lane, item.lane],
53
- ['order', priorItem.order, item.order],
54
- ];
55
- for (const [field, priorValue, newValue] of changedValues) {
56
- if (priorValue === newValue)
57
- continue;
58
- await emit({
59
- issueId: item.issue.id,
60
- issueNumber: item.issue.number,
61
- field,
62
- priorValue,
63
- newValue,
64
- actorType: 'human',
65
- rationale: null,
66
- });
67
- }
68
- }
69
- }
70
- priorProjection = projection;
71
- }
72
- async function recordDaemonReprioritization(input) {
73
- await emit({ ...input, actorType: 'daemon' });
74
- }
75
- return { observeAcceptedProjection, recordDaemonReprioritization };
76
- }
77
- //# sourceMappingURL=reprioritization-audit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reprioritization-audit.js","sourceRoot":"","sources":["../../src/queue/reprioritization-audit.ts"],"names":[],"mappings":"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"}