@farmslot/protocol 0.25.0 → 0.26.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 (117) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/contracts/agents.d.ts +17 -0
  3. package/dist/contracts/agents.d.ts.map +1 -1
  4. package/dist/contracts/dispatch.d.ts +2 -0
  5. package/dist/contracts/dispatch.d.ts.map +1 -1
  6. package/dist/contracts/execution-templates.d.ts +6 -0
  7. package/dist/contracts/execution-templates.d.ts.map +1 -1
  8. package/dist/contracts/execution-templates.js +6 -0
  9. package/dist/contracts/execution-templates.js.map +1 -1
  10. package/dist/contracts/index.d.ts +4 -0
  11. package/dist/contracts/index.d.ts.map +1 -1
  12. package/dist/contracts/index.js +4 -0
  13. package/dist/contracts/index.js.map +1 -1
  14. package/dist/contracts/pr-monitoring.d.ts +167 -0
  15. package/dist/contracts/pr-monitoring.d.ts.map +1 -0
  16. package/dist/contracts/pr-monitoring.js +2 -0
  17. package/dist/contracts/pr-monitoring.js.map +1 -0
  18. package/dist/contracts/pr-rules.d.ts +350 -0
  19. package/dist/contracts/pr-rules.d.ts.map +1 -0
  20. package/dist/contracts/pr-rules.js +6 -0
  21. package/dist/contracts/pr-rules.js.map +1 -0
  22. package/dist/contracts/readiness.d.ts +37 -0
  23. package/dist/contracts/readiness.d.ts.map +1 -0
  24. package/dist/contracts/readiness.js +8 -0
  25. package/dist/contracts/readiness.js.map +1 -0
  26. package/dist/contracts/reviews.d.ts +1 -0
  27. package/dist/contracts/reviews.d.ts.map +1 -1
  28. package/dist/contracts/reviews.js.map +1 -1
  29. package/dist/contracts/runs.d.ts +22 -6
  30. package/dist/contracts/runs.d.ts.map +1 -1
  31. package/dist/contracts/runs.js +18 -4
  32. package/dist/contracts/runs.js.map +1 -1
  33. package/dist/contracts/template-placeholders.d.ts +16 -0
  34. package/dist/contracts/template-placeholders.d.ts.map +1 -0
  35. package/dist/contracts/template-placeholders.js +39 -0
  36. package/dist/contracts/template-placeholders.js.map +1 -0
  37. package/dist/index.d.ts +6 -0
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +6 -0
  40. package/dist/index.js.map +1 -1
  41. package/dist/integrations/pr-monitoring.d.ts +13 -0
  42. package/dist/integrations/pr-monitoring.d.ts.map +1 -0
  43. package/dist/integrations/pr-monitoring.js +160 -0
  44. package/dist/integrations/pr-monitoring.js.map +1 -0
  45. package/dist/integrations/pr-project-import.d.ts +12 -0
  46. package/dist/integrations/pr-project-import.d.ts.map +1 -0
  47. package/dist/integrations/pr-project-import.js +279 -0
  48. package/dist/integrations/pr-project-import.js.map +1 -0
  49. package/dist/integrations/pr-review-requirements.d.ts +4 -0
  50. package/dist/integrations/pr-review-requirements.d.ts.map +1 -0
  51. package/dist/integrations/pr-review-requirements.js +21 -0
  52. package/dist/integrations/pr-review-requirements.js.map +1 -0
  53. package/dist/integrations/pr-rule-config.d.ts +6 -0
  54. package/dist/integrations/pr-rule-config.d.ts.map +1 -0
  55. package/dist/integrations/pr-rule-config.js +217 -0
  56. package/dist/integrations/pr-rule-config.js.map +1 -0
  57. package/dist/integrations/pr-rule-predicates.d.ts +9 -0
  58. package/dist/integrations/pr-rule-predicates.d.ts.map +1 -0
  59. package/dist/integrations/pr-rule-predicates.js +223 -0
  60. package/dist/integrations/pr-rule-predicates.js.map +1 -0
  61. package/dist/rpc/backlog.d.ts +2 -2
  62. package/dist/rpc/backlog.d.ts.map +1 -1
  63. package/dist/rpc/backlog.js +2 -1
  64. package/dist/rpc/backlog.js.map +1 -1
  65. package/dist/rpc/config.d.ts +13 -1
  66. package/dist/rpc/config.d.ts.map +1 -1
  67. package/dist/rpc/config.js +1 -0
  68. package/dist/rpc/config.js.map +1 -1
  69. package/dist/rpc/index.d.ts +4 -0
  70. package/dist/rpc/index.d.ts.map +1 -1
  71. package/dist/rpc/index.js +4 -0
  72. package/dist/rpc/index.js.map +1 -1
  73. package/dist/rpc/native-session.d.ts +193 -0
  74. package/dist/rpc/native-session.d.ts.map +1 -0
  75. package/dist/rpc/native-session.js +2 -0
  76. package/dist/rpc/native-session.js.map +1 -0
  77. package/dist/rpc/pr-push.d.ts +56 -0
  78. package/dist/rpc/pr-push.d.ts.map +1 -0
  79. package/dist/rpc/pr-push.js +2 -0
  80. package/dist/rpc/pr-push.js.map +1 -0
  81. package/dist/rpc/pr-rules.d.ts +72 -0
  82. package/dist/rpc/pr-rules.d.ts.map +1 -0
  83. package/dist/rpc/pr-rules.js +2 -0
  84. package/dist/rpc/pr-rules.js.map +1 -0
  85. package/dist/rpc/pr-watch.d.ts +43 -0
  86. package/dist/rpc/pr-watch.d.ts.map +1 -0
  87. package/dist/rpc/pr-watch.js +2 -0
  88. package/dist/rpc/pr-watch.js.map +1 -0
  89. package/dist/rpc/registry.d.ts +40 -0
  90. package/dist/rpc/registry.d.ts.map +1 -1
  91. package/dist/rpc/registry.js +40 -0
  92. package/dist/rpc/registry.js.map +1 -1
  93. package/dist/rpc/roadmap.d.ts +1 -1
  94. package/dist/rpc/roadmap.d.ts.map +1 -1
  95. package/dist/rpc/roadmap.js +2 -1
  96. package/dist/rpc/roadmap.js.map +1 -1
  97. package/dist/rpc/worker-session-history.d.ts +1 -1
  98. package/dist/rpc/worker-session-history.d.ts.map +1 -1
  99. package/dist/runs/interactive-handoff.d.ts +14 -0
  100. package/dist/runs/interactive-handoff.d.ts.map +1 -0
  101. package/dist/runs/interactive-handoff.js +69 -0
  102. package/dist/runs/interactive-handoff.js.map +1 -0
  103. package/dist/runs/portable-bundle.d.ts +2 -0
  104. package/dist/runs/portable-bundle.d.ts.map +1 -1
  105. package/dist/runs/portable-bundle.js +14 -1
  106. package/dist/runs/portable-bundle.js.map +1 -1
  107. package/dist/runs/review-chain.d.ts +3 -2
  108. package/dist/runs/review-chain.d.ts.map +1 -1
  109. package/dist/runs/review-chain.js +4 -2
  110. package/dist/runs/review-chain.js.map +1 -1
  111. package/dist/transport/events.d.ts +12 -1
  112. package/dist/transport/events.d.ts.map +1 -1
  113. package/dist/transport/events.js +4 -0
  114. package/dist/transport/events.js.map +1 -1
  115. package/dist/version.d.ts +1 -1
  116. package/dist/version.js +1 -1
  117. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-monitoring.js","sourceRoot":"","sources":["../../src/integrations/pr-monitoring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { PRImportedProjectView, PRProjectField, PRProjectFilterTerm } from '../contracts/pr-rules.js';
2
+ export declare function parsePRProjectURL(value: string, host: string): {
3
+ ownerKind: "user" | "organization";
4
+ owner: string;
5
+ number: number;
6
+ viewNumber: number | undefined;
7
+ };
8
+ /** Preserve unsupported syntax as one term so it cannot be partially dropped or regrouped. */
9
+ export declare function splitPRProjectFilter(filter: string): string[];
10
+ export declare function compilePRProjectFilter(filter: string, projectId: string, fields: PRProjectField[]): PRProjectFilterTerm[];
11
+ export declare function assertPRImportedProjectView(value: unknown): asserts value is PRImportedProjectView;
12
+ //# sourceMappingURL=pr-project-import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-project-import.d.ts","sourceRoot":"","sources":["../../src/integrations/pr-project-import.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EAGpB,MAAM,0BAA0B,CAAC;AAIlC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;;;EAgC5D;AAED,8FAA8F;AAC9F,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CA+B7D;AA6ED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,cAAc,EAAE,GACvB,mBAAmB,EAAE,CAkGvB;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,KAAK,IAAI,qBAAqB,CAsDxC"}
@@ -0,0 +1,279 @@
1
+ import { assertPRRulePredicate } from './pr-rule-predicates.js';
2
+ export function parsePRProjectURL(value, host) {
3
+ const url = new URL(value);
4
+ const match = /^\/(orgs|users)\/([a-z0-9-]+)\/projects\/([1-9]\d*)(?:\/views\/([1-9]\d*))?\/?$/i.exec(url.pathname);
5
+ if (url.protocol !== 'https:' ||
6
+ url.hostname.toLowerCase() !== host.toLowerCase() ||
7
+ url.port ||
8
+ url.username ||
9
+ url.password ||
10
+ url.search ||
11
+ url.hash ||
12
+ !match)
13
+ throw new Error('Use a saved GitHub Project or view URL on the selected account host, without temporary query filters');
14
+ const number = Number(match[3]);
15
+ const viewNumber = match[4] ? Number(match[4]) : undefined;
16
+ if (!Number.isSafeInteger(number) ||
17
+ (viewNumber !== undefined && !Number.isSafeInteger(viewNumber)))
18
+ throw new Error('Invalid Project/view number');
19
+ return {
20
+ ownerKind: match[1].toLowerCase() === 'orgs' ? 'organization' : 'user',
21
+ owner: match[2],
22
+ number,
23
+ viewNumber,
24
+ };
25
+ }
26
+ /** Preserve unsupported syntax as one term so it cannot be partially dropped or regrouped. */
27
+ export function splitPRProjectFilter(filter) {
28
+ if (typeof filter !== 'string' || filter.length > 4096)
29
+ throw new Error('Project filters must be strings of at most 4096 characters');
30
+ // Keep unsupported quoting whole so negation and OR grouping cannot change during partial import.
31
+ if (filter.includes("'"))
32
+ return filter.trim() ? [filter.trim()] : [];
33
+ const terms = [];
34
+ let start = 0, quoted = false, escaped = false, grouping = false;
35
+ for (let i = 0; i <= filter.length; i++) {
36
+ const char = filter[i];
37
+ if (escaped) {
38
+ escaped = false;
39
+ continue;
40
+ }
41
+ if (char === '\\' && quoted) {
42
+ escaped = true;
43
+ continue;
44
+ }
45
+ if (char === '"')
46
+ quoted = !quoted;
47
+ if (!quoted && (char === '(' || char === ')'))
48
+ grouping = true;
49
+ if ((!quoted && /\s/.test(char ?? '')) || i === filter.length) {
50
+ if (i > start)
51
+ terms.push(filter.slice(start, i));
52
+ start = i + 1;
53
+ }
54
+ }
55
+ if (quoted || grouping || terms.some((term) => ['OR', 'AND'].includes(term.toUpperCase())))
56
+ return filter.trim() ? [filter.trim()] : [];
57
+ if (terms.length > 100)
58
+ throw new Error('Project filters may contain at most 100 terms');
59
+ return terms;
60
+ }
61
+ function literal(text) {
62
+ if (text.startsWith('"')) {
63
+ const value = JSON.parse(text);
64
+ if (typeof value !== 'string' || !value)
65
+ throw new Error('Expected a non-empty quoted value');
66
+ return value;
67
+ }
68
+ if (!text || /["\s]/.test(text))
69
+ throw new Error('Quote filter values containing spaces');
70
+ return text;
71
+ }
72
+ function parseTerm(text) {
73
+ if (text.includes("'"))
74
+ throw new Error('Map single-quoted filters explicitly or re-save the view using double quotes');
75
+ let quoted = false, escaped = false, colon = -1;
76
+ for (let i = 0; i < text.length; i++) {
77
+ if (escaped) {
78
+ escaped = false;
79
+ continue;
80
+ }
81
+ if (text[i] === '\\' && quoted) {
82
+ escaped = true;
83
+ continue;
84
+ }
85
+ if (text[i] === '"')
86
+ quoted = !quoted;
87
+ if (text[i] === ':' && !quoted) {
88
+ colon = i;
89
+ break;
90
+ }
91
+ }
92
+ if (colon < 1)
93
+ throw new Error('Map this filter expression explicitly');
94
+ const negated = text.startsWith('-');
95
+ const key = literal(text.slice(negated ? 1 : 0, colon)).toLowerCase();
96
+ const tail = text.slice(colon + 1);
97
+ const values = [];
98
+ let start = 0;
99
+ quoted = false;
100
+ escaped = false;
101
+ for (let i = 0; i <= tail.length; i++) {
102
+ if (escaped) {
103
+ escaped = false;
104
+ continue;
105
+ }
106
+ if (tail[i] === '\\' && quoted) {
107
+ escaped = true;
108
+ continue;
109
+ }
110
+ if (tail[i] === '"')
111
+ quoted = !quoted;
112
+ if ((!quoted && tail[i] === ',') || i === tail.length) {
113
+ values.push(literal(tail.slice(start, i)));
114
+ start = i + 1;
115
+ }
116
+ }
117
+ if (quoted)
118
+ throw new Error('Unclosed filter quote');
119
+ return { key, values, negated };
120
+ }
121
+ function comparison(field, operator, value) {
122
+ return { kind: 'compare', field, operator, value };
123
+ }
124
+ function any(values) {
125
+ if (values.includes(true))
126
+ return true;
127
+ const predicates = values.filter((value) => typeof value !== 'boolean');
128
+ return !predicates.length
129
+ ? false
130
+ : predicates.length === 1
131
+ ? predicates[0]
132
+ : { kind: 'any', items: predicates };
133
+ }
134
+ export function compilePRProjectFilter(filter, projectId, fields) {
135
+ return splitPRProjectFilter(filter).map((text) => {
136
+ try {
137
+ const { key, values, negated } = parseTerm(text);
138
+ let predicate;
139
+ if (key === 'is') {
140
+ predicate = any(values.map((value) => {
141
+ if (value === 'pr')
142
+ return true;
143
+ if (value === 'issue')
144
+ return false;
145
+ if (value === 'draft')
146
+ return comparison('draft', 'equals', true);
147
+ if (value === 'open' || value === 'merged')
148
+ return comparison('state', 'equals', value);
149
+ if (value === 'closed')
150
+ return comparison('state', 'one-of', ['closed', 'merged']);
151
+ throw new Error(`Unsupported item state/type: ${value}`);
152
+ }));
153
+ }
154
+ else if (key === 'repo') {
155
+ if (values.some((value) => !/^[^/\s*,]+\/[^/\s*,]+$/.test(value)))
156
+ throw new Error('Repository filters require literal owner/repo values');
157
+ predicate = comparison('repository', 'one-of', values);
158
+ }
159
+ else if (key === 'label') {
160
+ if (values.some((value) => value.includes('*')))
161
+ throw new Error('Map label wildcard filters explicitly');
162
+ predicate = comparison('labels', 'contains-any', values);
163
+ }
164
+ else {
165
+ const fieldKey = key === 'no' || key === 'has' ? values[0].toLowerCase() : key;
166
+ if ((key === 'no' || key === 'has') && values.length !== 1)
167
+ throw new Error('Map combined presence filters explicitly');
168
+ if ((key === 'no' || key === 'has') && fieldKey === 'label') {
169
+ predicate = comparison('labels', 'glob', ['**']);
170
+ if (key === 'no')
171
+ predicate = { kind: 'not', item: predicate };
172
+ }
173
+ else {
174
+ const matches = fields.filter((field) => field.name.toLowerCase() === fieldKey ||
175
+ field.name.toLowerCase().replace(/\s+/g, '-') === fieldKey);
176
+ if (matches.length !== 1)
177
+ throw new Error(`Field is unavailable or ambiguous: ${fieldKey}`);
178
+ const field = matches[0];
179
+ const valueType = field.dataType.toLowerCase().replaceAll('_', '-');
180
+ if (!['text', 'number', 'date', 'single-select'].includes(valueType))
181
+ throw new Error(`Unsupported Project field type: ${field.dataType}`);
182
+ const binding = {
183
+ projectId,
184
+ fieldId: field.id,
185
+ valueType: valueType,
186
+ };
187
+ if (key === 'no' || key === 'has')
188
+ predicate = comparison(binding, 'is-set', key === 'has');
189
+ else if (valueType === 'single-select') {
190
+ const ids = values.map((value) => {
191
+ const options = field.options?.filter((option) => option.name.toLowerCase() === value.toLowerCase()) ?? [];
192
+ if (options.length !== 1)
193
+ throw new Error(`Option is unavailable or ambiguous: ${value}`);
194
+ return options[0].id;
195
+ });
196
+ predicate = comparison(binding, 'one-of', [...new Set(ids)]);
197
+ }
198
+ else if (valueType === 'number') {
199
+ predicate = any(values.map((value) => {
200
+ const match = /^(>|<)?(-?(?:\d+(?:\.\d+)?|\.\d+))$/.exec(value);
201
+ if (!match || !Number.isFinite(Number(match[2])))
202
+ throw new Error('Map numeric ranges and inclusive comparisons explicitly');
203
+ return comparison(binding, match[1] === '>' ? 'greater-than' : match[1] === '<' ? 'less-than' : 'equals', Number(match[2]));
204
+ }));
205
+ }
206
+ else if (valueType === 'date') {
207
+ if (values.some((value) => !/^\d{4}-\d{2}-\d{2}$/.test(value)))
208
+ throw new Error('Map date ranges and relative dates explicitly');
209
+ predicate = comparison(binding, 'one-of', values);
210
+ }
211
+ else
212
+ throw new Error('Map text-search filters explicitly; substring search is not exact equality');
213
+ }
214
+ }
215
+ if (typeof predicate === 'boolean')
216
+ return { text, kind: 'constant', value: negated ? !predicate : predicate };
217
+ if (negated)
218
+ predicate = { kind: 'not', item: predicate };
219
+ assertPRRulePredicate(predicate);
220
+ return { text, kind: 'predicate', predicate };
221
+ }
222
+ catch (error) {
223
+ // An unsupported or invalid term stays visible and blocks the source until explicitly mapped.
224
+ return {
225
+ text,
226
+ kind: 'unmapped',
227
+ reason: error instanceof Error ? error.message : String(error),
228
+ };
229
+ }
230
+ });
231
+ }
232
+ export function assertPRImportedProjectView(value) {
233
+ if (!value || typeof value !== 'object' || Array.isArray(value))
234
+ throw new Error('Imported view must be an object');
235
+ const view = value;
236
+ if (Object.keys(view).some((key) => !['number', 'name', 'filter', 'terms'].includes(key)) ||
237
+ !Number.isSafeInteger(view.number) ||
238
+ Number(view.number) < 1 ||
239
+ typeof view.name !== 'string' ||
240
+ !view.name.trim())
241
+ throw new Error('Invalid imported view identity');
242
+ if (typeof view.filter !== 'string' || !Array.isArray(view.terms))
243
+ throw new Error('Imported view must retain its filter and all terms');
244
+ const terms = splitPRProjectFilter(view.filter);
245
+ if (terms.length !== view.terms.length)
246
+ throw new Error('Imported view cannot discard filter terms');
247
+ for (let i = 0; i < terms.length; i++) {
248
+ const term = view.terms[i];
249
+ if (!term || typeof term !== 'object' || term.text !== terms[i])
250
+ throw new Error('Imported filter term does not match the original filter');
251
+ const allowed = term.kind === 'predicate'
252
+ ? ['text', 'kind', 'predicate', 'manuallyMapped']
253
+ : term.kind === 'constant'
254
+ ? ['text', 'kind', 'value']
255
+ : ['text', 'kind', 'reason'];
256
+ if (Object.keys(term).some((key) => !allowed.includes(key)))
257
+ throw new Error('Unsupported imported filter property');
258
+ if (term.kind === 'predicate') {
259
+ assertPRRulePredicate(term.predicate);
260
+ if (term.manuallyMapped !== undefined && typeof term.manuallyMapped !== 'boolean')
261
+ throw new Error('manuallyMapped must be explicit boolean');
262
+ }
263
+ else if (term.kind === 'constant') {
264
+ const compiled = compilePRProjectFilter(terms[i], 'unused', []);
265
+ if (compiled.length !== 1 ||
266
+ compiled[0].kind !== 'constant' ||
267
+ compiled[0].value !== term.value)
268
+ throw new Error('Only PR/issue type filters may compile to constants');
269
+ }
270
+ else if (term.kind !== 'unmapped' || typeof term.reason !== 'string' || !term.reason.trim())
271
+ throw new Error('Unsupported filter terms need an actionable reason');
272
+ }
273
+ const predicates = view.terms
274
+ .filter((term) => term.kind === 'predicate')
275
+ .map((term) => term.predicate);
276
+ if (predicates.length)
277
+ assertPRRulePredicate(predicates.length === 1 ? predicates[0] : { kind: 'all', items: predicates });
278
+ }
279
+ //# sourceMappingURL=pr-project-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-project-import.js","sourceRoot":"","sources":["../../src/integrations/pr-project-import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { PRReviewObservation } from '../contracts/pr-rules.js';
2
+ /** A negative gate only: satisfying this check never authorizes a run. */
3
+ export declare function prReviewBlockedReason(observation: PRReviewObservation | undefined): string | undefined;
4
+ //# sourceMappingURL=pr-review-requirements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-review-requirements.d.ts","sourceRoot":"","sources":["../../src/integrations/pr-review-requirements.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,0EAA0E;AAC1E,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,mBAAmB,GAAG,SAAS,GAC3C,MAAM,GAAG,SAAS,CAgBpB"}
@@ -0,0 +1,21 @@
1
+ /** A negative gate only: satisfying this check never authorizes a run. */
2
+ export function prReviewBlockedReason(observation) {
3
+ if (!observation)
4
+ return undefined;
5
+ if (observation.state !== 'open')
6
+ return `This PR is ${observation.state}; no review is needed.`;
7
+ if (observation.draft)
8
+ return 'This PR is still a draft.';
9
+ // A fresh, explicit GitHub re-request can ask for another review on the same commit.
10
+ if (observation.requested)
11
+ return undefined;
12
+ if (observation.decision === 'APPROVED')
13
+ return 'GitHub review requirements are already satisfied.';
14
+ const review = observation.review;
15
+ if (review &&
16
+ ['APPROVED', 'COMMENTED', 'CHANGES_REQUESTED'].includes(review.state) &&
17
+ review.commit === observation.headSha)
18
+ return `@${observation.reviewer} already reviewed the current commit. A new review is unnecessary until the head changes or GitHub requests another review.`;
19
+ return undefined;
20
+ }
21
+ //# sourceMappingURL=pr-review-requirements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-review-requirements.js","sourceRoot":"","sources":["../../src/integrations/pr-review-requirements.ts"],"names":[],"mappings":"AAEA,0EAA0E;AAC1E,MAAM,UAAU,qBAAqB,CACnC,WAA4C;IAE5C,IAAI,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IACnC,IAAI,WAAW,CAAC,KAAK,KAAK,MAAM;QAAE,OAAO,cAAc,WAAW,CAAC,KAAK,wBAAwB,CAAC;IACjG,IAAI,WAAW,CAAC,KAAK;QAAE,OAAO,2BAA2B,CAAC;IAC1D,qFAAqF;IACrF,IAAI,WAAW,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,WAAW,CAAC,QAAQ,KAAK,UAAU;QACrC,OAAO,mDAAmD,CAAC;IAC7D,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAClC,IACE,MAAM;QACN,CAAC,UAAU,EAAE,WAAW,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;QACrE,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,OAAO;QAErC,OAAO,IAAI,WAAW,CAAC,QAAQ,6HAA6H,CAAC;IAC/J,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { PRReviewOptions, PRReviewRequest, PRTeamConfig, PRTriggerRuleConfig } from '../contracts/pr-rules.js';
2
+ export declare function assertPRReviewOptions(value: unknown): asserts value is PRReviewOptions;
3
+ export declare function assertPRReviewRequest(value: unknown): asserts value is PRReviewRequest;
4
+ export declare function assertPRTeamConfig(value: unknown): asserts value is PRTeamConfig;
5
+ export declare function assertPRTriggerRuleConfig(value: unknown): asserts value is PRTriggerRuleConfig;
6
+ //# sourceMappingURL=pr-rule-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-rule-config.d.ts","sourceRoot":"","sources":["../../src/integrations/pr-rule-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,YAAY,EACZ,mBAAmB,EACpB,MAAM,0BAA0B,CAAC;AAgClC,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,eAAe,CAetF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,eAAe,CActF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,CA+FhF;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,mBAAmB,CA4C9F"}
@@ -0,0 +1,217 @@
1
+ import { assertMonitoredPRIdentity, assertPRExecutionProfile } from './pr-monitoring.js';
2
+ import { assertPRImportedProjectView, parsePRProjectURL } from './pr-project-import.js';
3
+ import { assertPRRulePredicate } from './pr-rule-predicates.js';
4
+ function record(value, name) {
5
+ if (!value || typeof value !== 'object' || Array.isArray(value))
6
+ throw new Error(`${name} must be an object`);
7
+ }
8
+ function keys(value, allowed) {
9
+ const unsupported = Object.keys(value).find((key) => !allowed.includes(key));
10
+ if (unsupported)
11
+ throw new Error(`Unsupported property: ${unsupported}`);
12
+ }
13
+ function text(value, name) {
14
+ if (typeof value !== 'string' || !value.trim() || value !== value.trim() || value.length > 256)
15
+ throw new Error(`${name} must be a non-empty trimmed string of at most 256 characters`);
16
+ }
17
+ function list(value, name, minimum = 0) {
18
+ if (!Array.isArray(value) || value.length < minimum || value.length > 100)
19
+ throw new Error(`${name} must have ${minimum} to 100 entries`);
20
+ }
21
+ function texts(value, name) {
22
+ list(value, name);
23
+ value.forEach((item) => text(item, name));
24
+ if (new Set(value).size !== value.length)
25
+ throw new Error(`${name} has duplicate values`);
26
+ }
27
+ function integer(value, name, min, max) {
28
+ if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < min || value > max)
29
+ throw new Error(`${name} must be an integer from ${min} to ${max}`);
30
+ }
31
+ export function assertPRReviewOptions(value) {
32
+ record(value, 'review options');
33
+ keys(value, ['sessionIntent', 'scope', 'validationDepth', 'busySession']);
34
+ if (value.sessionIntent !== 'resume' && value.sessionIntent !== 'reset')
35
+ throw new Error('Review session must be Continue or Fresh');
36
+ if (value.scope !== 'incremental' && value.scope !== 'full')
37
+ throw new Error('Review scope must be incremental or full');
38
+ if (value.validationDepth !== 'static-code' && value.validationDepth !== 'full-live')
39
+ throw new Error('Review validation must be static-code or full-live');
40
+ if (value.busySession !== undefined &&
41
+ value.busySession !== 'wait' &&
42
+ value.busySession !== 'fresh')
43
+ throw new Error('Busy reviewer policy must be wait or fresh');
44
+ }
45
+ export function assertPRReviewRequest(value) {
46
+ record(value, 'review request');
47
+ keys(value, ['teamId', 'pr', 'idempotencyKey', 'autoStart', 'execution', 'review', 'source']);
48
+ text(value.teamId, 'teamId');
49
+ text(value.idempotencyKey, 'idempotencyKey');
50
+ assertMonitoredPRIdentity(value.pr);
51
+ if (typeof value.autoStart !== 'boolean')
52
+ throw new Error('Review autoStart must be explicit');
53
+ if (value.execution !== undefined)
54
+ assertPRExecutionProfile(value.execution);
55
+ if (value.review !== undefined)
56
+ assertPRReviewOptions(value.review);
57
+ record(value.source, 'review source');
58
+ keys(value.source, ['client', 'reference', 'requester']);
59
+ text(value.source.client, 'source.client');
60
+ if (value.source.reference !== undefined)
61
+ text(value.source.reference, 'source.reference');
62
+ if (value.source.requester !== undefined)
63
+ text(value.source.requester, 'source.requester');
64
+ }
65
+ export function assertPRTeamConfig(value) {
66
+ record(value, 'team');
67
+ keys(value, [
68
+ 'name',
69
+ 'account',
70
+ 'sources',
71
+ 'predicate',
72
+ 'repositories',
73
+ 'execution',
74
+ 'review',
75
+ 'githubTeams',
76
+ 'notificationPrincipalIds',
77
+ ]);
78
+ text(value.name, 'team.name');
79
+ record(value.account, 'team.account');
80
+ keys(value.account, ['host', 'login']);
81
+ text(value.account.host, 'account.host');
82
+ text(value.account.login, 'account.login');
83
+ if (!/^[a-z0-9][a-z0-9-]*$/i.test(value.account.login))
84
+ throw new Error('Invalid GitHub account login');
85
+ assertMonitoredPRIdentity({ host: value.account.host, repo: 'validation/validation', number: 1 });
86
+ list(value.sources, 'sources', 1);
87
+ for (const source of value.sources) {
88
+ record(source, 'source');
89
+ if (source.kind === 'repository') {
90
+ keys(source, ['kind', 'repo']);
91
+ assertMonitoredPRIdentity({ host: value.account.host, repo: source.repo, number: 1 });
92
+ }
93
+ else if (source.kind === 'github-project') {
94
+ keys(source, ['kind', 'projectId', 'label', 'url', 'importedView']);
95
+ text(source.projectId, 'projectId');
96
+ text(source.label, 'source.label');
97
+ if (source.importedView !== undefined)
98
+ assertPRImportedProjectView(source.importedView);
99
+ if (source.url !== undefined) {
100
+ if (typeof source.url !== 'string' ||
101
+ source.url.length > 2048 ||
102
+ parsePRProjectURL(source.url, value.account.host).viewNumber !== undefined)
103
+ throw new Error('Project source URL must identify the Project itself');
104
+ }
105
+ }
106
+ else
107
+ throw new Error('Unsupported PR source kind');
108
+ }
109
+ if (new Set(value.sources.map((source) => {
110
+ const item = source;
111
+ return JSON.stringify(item.kind === 'repository'
112
+ ? ['repository', String(item.repo).toLowerCase()]
113
+ : [
114
+ 'github-project',
115
+ item.projectId,
116
+ item.importedView?.number ?? null,
117
+ ]);
118
+ })).size !== value.sources.length)
119
+ throw new Error('Duplicate PR sources');
120
+ assertPRRulePredicate(value.predicate);
121
+ list(value.repositories, 'repositories');
122
+ const repos = new Set();
123
+ for (const policy of value.repositories) {
124
+ record(policy, 'repository policy');
125
+ keys(policy, [
126
+ 'repo',
127
+ 'project',
128
+ 'reviewProfile',
129
+ 'execution',
130
+ 'review',
131
+ 'excludedLabels',
132
+ 'approvalTarget',
133
+ 'staleAfterDays',
134
+ ]);
135
+ assertMonitoredPRIdentity({ host: value.account.host, repo: policy.repo, number: 1 });
136
+ const repo = String(policy.repo).toLowerCase();
137
+ if (repos.has(repo))
138
+ throw new Error('Duplicate repository policy');
139
+ repos.add(repo);
140
+ if (policy.project !== undefined)
141
+ text(policy.project, 'project');
142
+ text(policy.reviewProfile, 'reviewProfile');
143
+ texts(policy.excludedLabels, 'excludedLabels');
144
+ if (policy.execution !== undefined)
145
+ assertPRExecutionProfile(policy.execution);
146
+ if (policy.review !== undefined)
147
+ assertPRReviewOptions(policy.review);
148
+ if (policy.approvalTarget !== undefined)
149
+ integer(policy.approvalTarget, 'approvalTarget', 0, 100);
150
+ if (policy.staleAfterDays !== undefined)
151
+ integer(policy.staleAfterDays, 'staleAfterDays', 1, 365);
152
+ }
153
+ if (value.execution !== undefined)
154
+ assertPRExecutionProfile(value.execution);
155
+ if (value.review !== undefined)
156
+ assertPRReviewOptions(value.review);
157
+ texts(value.githubTeams, 'githubTeams');
158
+ for (const team of value.githubTeams)
159
+ if (!/^[a-z0-9-]+\/[a-z0-9-]+$/i.test(team))
160
+ throw new Error('GitHub teams must use org/team-slug');
161
+ texts(value.notificationPrincipalIds, 'notificationPrincipalIds');
162
+ }
163
+ export function assertPRTriggerRuleConfig(value) {
164
+ record(value, 'rule');
165
+ keys(value, [
166
+ 'name',
167
+ 'teamId',
168
+ 'predicate',
169
+ 'actions',
170
+ 'pollIntervalMs',
171
+ 'maxAdmissionsPerScan',
172
+ 'rereviewOnHeadChange',
173
+ ]);
174
+ text(value.name, 'rule.name');
175
+ text(value.teamId, 'rule.teamId');
176
+ assertPRRulePredicate(value.predicate);
177
+ list(value.actions, 'actions', 1);
178
+ const kinds = new Set();
179
+ for (const action of value.actions) {
180
+ record(action, 'action');
181
+ if (typeof action.kind !== 'string' || kinds.has(action.kind))
182
+ throw new Error('Duplicate or invalid rule action');
183
+ kinds.add(action.kind);
184
+ if (action.kind === 'notify')
185
+ keys(action, ['kind']);
186
+ else if (action.kind === 'review') {
187
+ keys(action, ['kind', 'autoStart', 'execution', 'review']);
188
+ if (typeof action.autoStart !== 'boolean')
189
+ throw new Error('Review autoStart must be explicit');
190
+ if (action.execution !== undefined)
191
+ assertPRExecutionProfile(action.execution);
192
+ if (action.review !== undefined)
193
+ assertPRReviewOptions(action.review);
194
+ }
195
+ else if (action.kind === 'monitor') {
196
+ keys(action, ['kind', 'policy', 'pollIntervalMs']);
197
+ if (action.pollIntervalMs !== undefined)
198
+ integer(action.pollIntervalMs, 'monitor.pollIntervalMs', 60_000, 86_400_000);
199
+ record(action.policy, 'monitor policy');
200
+ if (action.policy.mode === 'notify-only')
201
+ keys(action.policy, ['mode']);
202
+ else if (action.policy.mode === 'automatic-repair') {
203
+ keys(action.policy, ['mode', 'execution']);
204
+ assertPRExecutionProfile(action.policy.execution);
205
+ }
206
+ else
207
+ throw new Error('Unsupported monitor policy');
208
+ }
209
+ else
210
+ throw new Error('Unsupported rule action');
211
+ }
212
+ integer(value.pollIntervalMs, 'pollIntervalMs', 60_000, 86_400_000);
213
+ integer(value.maxAdmissionsPerScan, 'maxAdmissionsPerScan', 1, 100);
214
+ if (typeof value.rereviewOnHeadChange !== 'boolean')
215
+ throw new Error('rereviewOnHeadChange must be explicit');
216
+ }
217
+ //# sourceMappingURL=pr-rule-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-rule-config.js","sourceRoot":"","sources":["../../src/integrations/pr-rule-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { PRRuleField, PRRuleMatch, PRRulePredicate, PRRuleSubject } from '../contracts/pr-rules.js';
2
+ export declare function prRuleFieldKey(field: PRRuleField): string;
3
+ /** Supported glob syntax: *, ** and ?. Braces, character classes and extglobs are rejected. */
4
+ export declare function prRuleGlob(pattern: string): {
5
+ test: (value: string) => boolean;
6
+ };
7
+ export declare function assertPRRulePredicate(value: unknown): asserts value is PRRulePredicate;
8
+ export declare function evaluatePRRulePredicate(predicate: PRRulePredicate, subject: PRRuleSubject): PRRuleMatch;
9
+ //# sourceMappingURL=pr-rule-predicates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-rule-predicates.d.ts","sourceRoot":"","sources":["../../src/integrations/pr-rule-predicates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,eAAe,EACf,aAAa,EAEd,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAIzD;AAsBD,+FAA+F;AAC/F,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAA;CAAE,CA8ChF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,eAAe,CAsEtF;AAkCD,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,eAAe,EAC1B,OAAO,EAAE,aAAa,GACrB,WAAW,CA2Cb"}