gh-inari 0.3.0 → 0.5.3

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.
@@ -5,6 +5,7 @@ import { compileIssueFormTemplate, compileIssueFormYaml, } from "./contract/issu
5
5
  import { assertCanonicalContract, } from "./contract/ir.js";
6
6
  import { compilePullRequestPolicyFile, compilePullRequestPolicyOverlay } from "./pr-policy.js";
7
7
  import { compilePullRequestTemplate, parsePullRequestTemplate } from "./pull-request-template.js";
8
+ import { compileSemanticTemplate, compileSemanticTemplateSource, discoverSemanticTemplates, readSemanticTemplate, selectSemanticTemplate, normalizeSemanticTemplate, } from "./semantic-template.js";
8
9
  import { discoverTemplates, selectIssueTemplate, selectPullRequestTemplate, discoverTemplatesFromPaths, classifyTemplatePath, isTemplateContainerPath, isTemplatePathInNativeDirectory, TemplateNotFoundError, } from "./template-discovery.js";
9
10
  /** Stable, machine-readable failures for repository governance acquisition. */
10
11
  export class GovernanceError extends Error {
@@ -36,8 +37,14 @@ export function rejectGovernedPolicyOverride(policyPath) {
36
37
  */
37
38
  export async function compileLocalGovernedContract(domain, root, selector, policyPath) {
38
39
  const discovery = await discoverTemplates(root);
40
+ const semanticTemplates = await discoverSemanticTemplates(root);
41
+ const semanticCandidates = semanticTemplates.filter((template) => template.kind === (domain === "issue" ? "issue" : "pull_request"));
39
42
  let contract;
40
- if (domain === "issue") {
43
+ if (semanticCandidates.length > 0) {
44
+ const semanticIdentity = selectSemanticTemplate(semanticTemplates, domain === "issue" ? "issue" : "pull_request", selector);
45
+ contract = await compileSemanticTemplate(root, await readSemanticTemplate(root, semanticIdentity));
46
+ }
47
+ else if (domain === "issue") {
41
48
  contract = await compileIssueFormTemplate(discovery, selector);
42
49
  }
43
50
  else {
@@ -54,6 +61,10 @@ export async function compileLocalGovernedContract(domain, root, selector, polic
54
61
  }
55
62
  /** Compile every repository-native Issue Form with the shared compiler. */
56
63
  export async function compileLocalIssueFormContracts(root) {
64
+ const semanticTemplates = (await discoverSemanticTemplates(root)).filter((template) => template.kind === "issue");
65
+ if (semanticTemplates.length > 0) {
66
+ return Promise.all(semanticTemplates.map(async (identity) => compileSemanticTemplate(root, await readSemanticTemplate(root, identity))));
67
+ }
57
68
  const discovery = await discoverTemplates(root);
58
69
  return Promise.all(discovery.issueTemplates.map((template) => compileIssueFormTemplate(discovery, template.id)));
59
70
  }
@@ -78,6 +89,11 @@ async function resolveLocalPolicyPath(root, policyPath) {
78
89
  */
79
90
  export async function compileRepositoryGovernedContract(adapter, domain, selector) {
80
91
  const source = await readRepositoryGovernanceSource(adapter);
92
+ const semanticCandidates = source.semanticTemplates.filter((template) => template.kind === (domain === "issue" ? "issue" : "pull_request"));
93
+ if (semanticCandidates.length > 0) {
94
+ const semanticIdentity = selectSemanticTemplate(source.semanticTemplates, domain === "issue" ? "issue" : "pull_request", selector);
95
+ return compileRepositorySemanticContractFromSource(adapter, source, semanticIdentity);
96
+ }
81
97
  const { discovery } = source;
82
98
  const selectedTemplate = domain === "issue" ? selectIssueTemplate(discovery, selector) : selectPullRequestTemplate(discovery, selector);
83
99
  return compileRepositoryGovernedContractFromSource(adapter, source, domain, selectedTemplate, createRepositoryPolicySourceLoader(adapter, source));
@@ -86,20 +102,58 @@ export async function compileRepositoryGovernedContract(adapter, domain, selecto
86
102
  * Compile every supported native template from the target repository's
87
103
  * trusted default-branch governance. Read commands use this candidate set to
88
104
  * identify an existing artifact without inventing a second template grammar.
105
+ *
106
+ * A template that fails to compile does not abort its siblings: it is
107
+ * reported as a bounded "failed" outcome so an unrelated malformed template
108
+ * cannot make every existing-artifact read in the repository fail. Callers
109
+ * that need fail-closed behavior for a single selected template should use
110
+ * compileRepositoryGovernedContract instead.
89
111
  */
90
112
  export async function compileRepositoryGovernedContracts(adapter, domain) {
91
113
  const source = await readRepositoryGovernanceSource(adapter);
114
+ const semanticTemplates = source.semanticTemplates.filter((template) => template.kind === (domain === "issue" ? "issue" : "pull_request"));
115
+ if (semanticTemplates.length > 0) {
116
+ const outcomes = [];
117
+ for (const identity of semanticTemplates) {
118
+ try {
119
+ outcomes.push({
120
+ status: "compiled",
121
+ contract: await compileRepositorySemanticContractFromSource(adapter, source, identity),
122
+ });
123
+ }
124
+ catch (error) {
125
+ outcomes.push({
126
+ status: "failed",
127
+ path: identity.sourcePath,
128
+ message: error instanceof Error ? error.message : String(error),
129
+ });
130
+ }
131
+ }
132
+ return outcomes;
133
+ }
92
134
  const templates = domain === "issue"
93
135
  ? source.discovery.issueTemplates.filter((template) => template.type === "issue-form")
94
136
  : source.discovery.pullRequestTemplates;
95
137
  if (templates.length === 0)
96
138
  throw new TemplateNotFoundError(undefined, templates);
97
139
  const policySourceLoader = createRepositoryPolicySourceLoader(adapter, source);
98
- const contracts = [];
140
+ const outcomes = [];
99
141
  for (const template of templates) {
100
- contracts.push(await compileRepositoryGovernedContractFromSource(adapter, source, domain, template, policySourceLoader));
142
+ try {
143
+ outcomes.push({
144
+ status: "compiled",
145
+ contract: await compileRepositoryGovernedContractFromSource(adapter, source, domain, template, policySourceLoader),
146
+ });
147
+ }
148
+ catch (error) {
149
+ outcomes.push({
150
+ status: "failed",
151
+ path: template.path,
152
+ message: error instanceof Error ? error.message : String(error),
153
+ });
154
+ }
101
155
  }
102
- return contracts;
156
+ return outcomes;
103
157
  }
104
158
  async function compileRepositoryGovernedContractFromSource(adapter, source, domain, selectedTemplate, policySourceLoader) {
105
159
  const { context, ref, tree, discovery } = source;
@@ -139,6 +193,49 @@ async function compileRepositoryGovernedContractFromSource(adapter, source, doma
139
193
  assertCanonicalContract(bound);
140
194
  return bound;
141
195
  }
196
+ async function compileRepositorySemanticContractFromSource(adapter, source, identity) {
197
+ const { context, ref, tree, discovery } = source;
198
+ const sourceEntry = findBlob(tree, identity.sourcePath, context, ref);
199
+ const serialized = await readGovernedValue("repository.governance.blob", context, ref, () => adapter.getRepositoryBlob(sourceEntry.sha));
200
+ let semanticSource;
201
+ try {
202
+ semanticSource = normalizeSemanticTemplate(JSON.parse(serialized), identity.sourcePath);
203
+ }
204
+ catch (error) {
205
+ throw invalidSource(context, identity.sourcePath, error instanceof Error ? error.message : "semantic source is invalid");
206
+ }
207
+ let contract = compileSemanticTemplateSource(semanticSource, identity.generatedPath);
208
+ let policySource;
209
+ if (semanticSource.kind === "pull_request") {
210
+ const repositoryPolicy = await createRepositoryPolicySourceLoader(adapter, source)();
211
+ if (repositoryPolicy !== undefined) {
212
+ contract = compilePullRequestPolicyOverlay(contract, repositoryPolicy.source, {
213
+ templateIdentities: discovery.pullRequestTemplates,
214
+ });
215
+ policySource = sourceIdentity(repositoryPolicy.entry, ref, repositoryPolicy.source);
216
+ }
217
+ }
218
+ const nativeEntry = findBlob(tree, identity.generatedPath, context, ref);
219
+ const nativeSource = await readGovernedValue("repository.governance.blob", context, ref, () => adapter.getRepositoryBlob(nativeEntry.sha));
220
+ const bound = {
221
+ ...contract,
222
+ provenance: {
223
+ authority: "repository-default-branch",
224
+ repository: {
225
+ host: context.hostname,
226
+ owner: context.owner,
227
+ name: context.name,
228
+ nameWithOwner: context.nameWithOwner,
229
+ },
230
+ ref,
231
+ treeSha: source.treeSha,
232
+ template: sourceIdentity(nativeEntry, ref, nativeSource),
233
+ ...(policySource === undefined ? {} : { policy: policySource }),
234
+ },
235
+ };
236
+ assertCanonicalContract(bound);
237
+ return bound;
238
+ }
142
239
  function createRepositoryPolicySourceLoader(adapter, source) {
143
240
  let pending;
144
241
  return () => {
@@ -178,27 +275,39 @@ export async function discoverRepositoryTemplates(adapter) {
178
275
  */
179
276
  export async function verifyGovernedMutationFreshness(adapter, provenance) {
180
277
  const source = await readRepositoryGovernanceSource(adapter);
278
+ const assessment = assessGovernanceFreshness(source, provenance);
279
+ if (!assessment.fresh)
280
+ throw staleGenerationError(source, provenance, assessment.reason);
281
+ }
282
+ /**
283
+ * Judge whether a previously validated contract's governance inputs are
284
+ * still content-equivalent to the currently observed repository governance.
285
+ * Shared by the pre-mutation freshness gate and post-mutation reconciliation
286
+ * so both use identical stale-generation semantics.
287
+ */
288
+ function assessGovernanceFreshness(source, provenance) {
181
289
  if (source.context.nameWithOwner !== provenance.repository.nameWithOwner) {
182
- throw staleGenerationError(source, provenance, "target repository does not match validated provenance");
290
+ return { fresh: false, reason: "target repository does not match validated provenance" };
183
291
  }
184
292
  if (source.treeSha === provenance.treeSha)
185
- return;
293
+ return { fresh: true };
186
294
  const templateEntry = source.tree.find((entry) => entry.path === provenance.template.path);
187
295
  if (templateEntry === undefined || templateEntry.type !== "blob" || templateEntry.sha !== provenance.template.sha) {
188
- throw staleGenerationError(source, provenance, "template governance input changed");
296
+ return { fresh: false, reason: "template governance input changed" };
189
297
  }
190
298
  const currentPolicyEntry = findPolicy(source.tree);
191
299
  if (provenance.policy === undefined) {
192
300
  if (currentPolicyEntry !== undefined) {
193
- throw staleGenerationError(source, provenance, "a policy governance input was introduced");
301
+ return { fresh: false, reason: "a policy governance input was introduced" };
194
302
  }
195
- return;
303
+ return { fresh: true };
196
304
  }
197
305
  if (currentPolicyEntry === undefined ||
198
306
  currentPolicyEntry.type !== "blob" ||
199
307
  currentPolicyEntry.sha !== provenance.policy.sha) {
200
- throw staleGenerationError(source, provenance, "policy governance input changed");
308
+ return { fresh: false, reason: "policy governance input changed" };
201
309
  }
310
+ return { fresh: true };
202
311
  }
203
312
  function staleGenerationError(source, provenance, reason) {
204
313
  return new GovernanceError("GOVERNANCE_GENERATION_STALE", "The target repository governance changed since this artifact was validated and rendered; recompile and revalidate before mutating.", {
@@ -210,31 +319,97 @@ function staleGenerationError(source, provenance, reason) {
210
319
  currentTreeSha: source.treeSha,
211
320
  });
212
321
  }
322
+ async function reconcileGovernanceAfterMutation(adapter, provenance) {
323
+ const source = await readRepositoryGovernanceSource(adapter);
324
+ const assessment = assessGovernanceFreshness(source, provenance);
325
+ return {
326
+ validatedGeneration: provenance.treeSha,
327
+ currentGeneration: source.treeSha,
328
+ reconciled: assessment.fresh,
329
+ ...(assessment.fresh ? {} : { reason: assessment.reason }),
330
+ };
331
+ }
213
332
  /** Create an Issue only after verifying its governance generation is still fresh. */
214
333
  export async function createGovernedIssue(adapter, artifact) {
215
334
  await verifyGovernedMutationFreshness(adapter, artifact.provenance);
216
- return adapter.createIssue(artifact);
335
+ const created = await adapter.createIssue(artifact);
336
+ const governance = await reconcileGovernanceAfterMutation(adapter, artifact.provenance);
337
+ return { artifact: created, governance };
217
338
  }
218
339
  /** Update an Issue only after verifying its governance generation is still fresh. */
219
340
  export async function updateGovernedIssue(adapter, issueNumber, artifact) {
220
341
  await verifyGovernedMutationFreshness(adapter, artifact.provenance);
221
- return adapter.updateIssue(issueNumber, artifact);
342
+ const updated = await adapter.updateIssue(issueNumber, artifact);
343
+ const governance = await reconcileGovernanceAfterMutation(adapter, artifact.provenance);
344
+ return { artifact: updated, governance };
222
345
  }
223
346
  /** Create a pull request only after verifying its governance generation is still fresh. */
224
347
  export async function createGovernedPullRequest(adapter, artifact) {
225
348
  await verifyGovernedMutationFreshness(adapter, artifact.provenance);
226
- return adapter.createPullRequest(artifact);
349
+ const created = await adapter.createPullRequest(artifact);
350
+ const governance = await reconcileGovernanceAfterMutation(adapter, artifact.provenance);
351
+ return { artifact: created, governance };
227
352
  }
228
353
  /** Update a pull request only after verifying its governance generation is still fresh. */
229
354
  export async function updateGovernedPullRequest(adapter, pullRequestNumber, artifact) {
230
355
  await verifyGovernedMutationFreshness(adapter, artifact.provenance);
231
- return adapter.updatePullRequest(pullRequestNumber, artifact);
356
+ const updated = await adapter.updatePullRequest(pullRequestNumber, artifact);
357
+ const governance = await reconcileGovernanceAfterMutation(adapter, artifact.provenance);
358
+ return { artifact: updated, governance };
232
359
  }
233
360
  async function readRepositoryGovernanceSource(adapter) {
234
361
  const context = await adapter.resolveRepositoryContext();
235
362
  const ref = await readGovernedValue("repository.default_branch", context, undefined, () => adapter.getRepositoryDefaultBranch());
236
363
  const { sha: treeSha, entries: tree } = await readGovernedValue("repository.governance.tree", context, ref, () => adapter.getRepositoryTree(ref));
237
- return { context, ref, treeSha, tree, discovery: createRemoteDiscovery(context, tree) };
364
+ return {
365
+ context,
366
+ ref,
367
+ treeSha,
368
+ tree,
369
+ discovery: createRemoteDiscovery(context, tree),
370
+ semanticTemplates: createRemoteSemanticIdentities(tree),
371
+ };
372
+ }
373
+ function createRemoteSemanticIdentities(tree) {
374
+ const identities = [];
375
+ for (const entry of tree) {
376
+ if (entry.type !== "blob" || !entry.path.endsWith(".json"))
377
+ continue;
378
+ if (entry.path.startsWith(".github/inari/issues/") && entry.path.split("/").length === 4) {
379
+ const id = entry.path.slice(".github/inari/issues/".length, -".json".length);
380
+ if (id.length > 0) {
381
+ identities.push({
382
+ id,
383
+ kind: "issue",
384
+ name: id,
385
+ sourcePath: entry.path,
386
+ generatedPath: `.github/ISSUE_TEMPLATE/${id}.yml`,
387
+ });
388
+ }
389
+ }
390
+ else if (entry.path === ".github/inari/pull-request.json") {
391
+ identities.push({
392
+ id: "pull-request",
393
+ kind: "pull_request",
394
+ name: "Pull request",
395
+ sourcePath: entry.path,
396
+ generatedPath: ".github/PULL_REQUEST_TEMPLATE.md",
397
+ });
398
+ }
399
+ else if (entry.path.startsWith(".github/inari/pull-requests/") && entry.path.split("/").length === 4) {
400
+ const id = entry.path.slice(".github/inari/pull-requests/".length, -".json".length);
401
+ if (id.length > 0) {
402
+ identities.push({
403
+ id,
404
+ kind: "pull_request",
405
+ name: id,
406
+ sourcePath: entry.path,
407
+ generatedPath: `.github/PULL_REQUEST_TEMPLATE/${id}.md`,
408
+ });
409
+ }
410
+ }
411
+ }
412
+ return identities.sort((left, right) => left.sourcePath.localeCompare(right.sourcePath, "en-US"));
238
413
  }
239
414
  function createRemoteDiscovery(context, tree) {
240
415
  for (const entry of tree) {
@@ -1 +1 @@
1
- {"version":3,"file":"governance.js","sourceRoot":"","sources":["../src/governance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,wBAAwB,EACxB,oBAAoB,GAErB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,uBAAuB,GAIxB,MAAM,kBAAkB,CAAC;AAU1B,OAAO,EAAE,4BAA4B,EAAE,+BAA+B,EAAE,MAAM,gBAAgB,CAAC;AAC/F,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAClG,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,EACvB,+BAA+B,EAC/B,qBAAqB,GAGtB,MAAM,yBAAyB,CAAC;AAmBjC,+EAA+E;AAC/E,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,IAAI,CAAsB;IAC1B,OAAO,CAAmC;IAEnD,YACE,IAAyB,EACzB,OAAe,EACf,UAAkC,EAAE,EACpC,OAAsB;QAEtB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,MAAM;QACJ,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IAC3E,CAAC;CACF;AAED,qFAAqF;AACrF,MAAM,UAAU,4BAA4B,CAAC,UAAwC;IACnF,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO;IAC3C,MAAM,IAAI,eAAe,CACvB,sCAAsC,EACtC,gHAAgH,EAChH,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,0BAA0B,EAAE,CACzD,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,MAA8B,EAC9B,IAAY,EACZ,QAAoC,EACpC,UAA6B;IAE7B,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,QAA2B,CAAC;IAChC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,QAAQ,GAAG,MAAM,wBAAwB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,MAAM,0BAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IAErC,MAAM,cAAc,GAAG,MAAM,sBAAsB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACtE,IAAI,cAAc,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAClD,OAAO,4BAA4B,CAAC,QAAQ,EAAE,cAAc,EAAE;QAC5D,kBAAkB,EAAE,SAAS,CAAC,oBAAoB;KACnD,CAAC,CAAC;AACL,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,IAAY;IAC/D,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,wBAAwB,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnH,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,IAAY,EACZ,UAAwC;IAExC,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;IACtH,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,0DAA0D;QAC5D,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,OAAsB,EACtB,MAA8B,EAC9B,QAAoC;IAEpC,MAAM,MAAM,GAAG,MAAM,8BAA8B,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAC7B,MAAM,gBAAgB,GACpB,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACjH,OAAO,2CAA2C,CAChD,OAAO,EACP,MAAM,EACN,MAAM,EACN,gBAAgB,EAChB,kCAAkC,CAAC,OAAO,EAAE,MAAM,CAAC,CACpD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,OAAsB,EACtB,MAA8B;IAE9B,MAAM,MAAM,GAAG,MAAM,8BAA8B,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,SAAS,GACb,MAAM,KAAK,OAAO;QAChB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC;QACtF,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;IAC5C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAClF,MAAM,kBAAkB,GAAG,kCAAkC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC/E,MAAM,SAAS,GAAwB,EAAE,CAAC;IAC1C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,SAAS,CAAC,IAAI,CACZ,MAAM,2CAA2C,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CACzG,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,2CAA2C,CACxD,OAAsB,EACtB,MAAkC,EAClC,MAA8B,EAC9B,gBAA8D,EAC9D,kBAAqE;IAErE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IACjD,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC1E,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,4BAA4B,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAC9F,OAAO,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC,CAC7C,CAAC;IAEF,IAAI,QAA2B,CAAC;IAChC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,QAAQ,GAAG,oBAAoB,CAAC,cAAc,EAAE,gBAA6C,CAAC,CAAC;IACjG,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,wBAAwB,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,YAAkD,CAAC;IACvD,MAAM,gBAAgB,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,kBAAkB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,QAAQ,GAAG,+BAA+B,CAAC,QAAQ,EAAE,gBAAgB,CAAC,MAAM,EAAE;YAC5E,kBAAkB,EAAE,SAAS,CAAC,oBAAoB;SACnD,CAAC,CAAC;QACH,YAAY,GAAG,cAAc,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,KAAK,GAAsB;QAC/B,GAAG,QAAQ;QACX,UAAU,EAAE;YACV,SAAS,EAAE,2BAA2B;YACtC,UAAU,EAAE;gBACV,IAAI,EAAE,OAAO,CAAC,QAAQ;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,aAAa,EAAE,OAAO,CAAC,aAAa;aACrC;YACD,GAAG;YACH,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,cAAc,CAAC;YAC5D,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;SAChE;KACF,CAAC;IACF,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,KAAK,CAAC;AACf,CAAC;AAOD,SAAS,kCAAkC,CACzC,OAAsB,EACtB,MAAkC;IAElC,IAAI,OAAgE,CAAC;IACrE,OAAO,GAAG,EAAE;QACV,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,GAAG,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,OAAsB,EACtB,MAAkC;IAElC,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAChD,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM;QAAE,MAAM,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;IACpH,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,4BAA4B,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAC1G,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,CAAC,CAC3C,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;AACtD,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,OAAsB;IACtE,OAAO,CAAC,MAAM,8BAA8B,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACnE,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,OAAsB,EACtB,UAA8B;IAE9B,MAAM,MAAM,GAAG,MAAM,8BAA8B,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,KAAK,UAAU,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QACzE,MAAM,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,uDAAuD,CAAC,CAAC;IAC1G,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO;QAAE,OAAO;IAElD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3F,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM,IAAI,aAAa,CAAC,GAAG,KAAK,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAClH,MAAM,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,mCAAmC,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACpC,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,0CAA0C,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO;IACT,CAAC;IACD,IACE,kBAAkB,KAAK,SAAS;QAChC,kBAAkB,CAAC,IAAI,KAAK,MAAM;QAClC,kBAAkB,CAAC,GAAG,KAAK,UAAU,CAAC,MAAM,CAAC,GAAG,EAChD,CAAC;QACD,MAAM,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,iCAAiC,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,MAAkC,EAClC,UAA8B,EAC9B,MAAc;IAEd,OAAO,IAAI,eAAe,CACxB,6BAA6B,EAC7B,oIAAoI,EACpI;QACE,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa;QACxC,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,MAAM;QACN,YAAY,EAAE,UAAU,CAAC,GAAG;QAC5B,gBAAgB,EAAE,UAAU,CAAC,OAAO;QACpC,cAAc,EAAE,MAAM,CAAC,OAAO;KAC/B,CACF,CAAC;AACJ,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAsB,EACtB,QAAwC;IAExC,MAAM,+BAA+B,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IACpE,OAAO,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAsB,EACtB,WAAmB,EACnB,QAAwC;IAExC,MAAM,+BAA+B,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IACpE,OAAO,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED,2FAA2F;AAC3F,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAsB,EACtB,QAA8C;IAE9C,MAAM,+BAA+B,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IACpE,OAAO,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED,2FAA2F;AAC3F,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAsB,EACtB,iBAAyB,EACzB,QAA8C;IAE9C,MAAM,+BAA+B,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IACpE,OAAO,OAAO,CAAC,iBAAiB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AAChE,CAAC;AAWD,KAAK,UAAU,8BAA8B,CAAC,OAAsB;IAClE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,wBAAwB,EAAE,CAAC;IACzD,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,2BAA2B,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CACxF,OAAO,CAAC,0BAA0B,EAAE,CACrC,CAAC;IACF,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,iBAAiB,CAAC,4BAA4B,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAC/G,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAC/B,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;AAC1F,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAA0B,EAC1B,IAAoC;IAEpC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,WAAW;gBAAE,SAAS;YAC1B,IAAI,UAA8B,CAAC;YACnC,IAAI,CAAC;gBACH,UAAU,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,MAAM,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;YAC7G,CAAC;YACD,IAAI,+BAA+B,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC5E,MAAM,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,qCAAqC,CAAC,CAAC;YAClF,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,WAAW;YAAE,MAAM,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,qCAAqC,CAAC,CAAC;QACjG,IAAI,CAAC;YACH,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QACH,OAAO,0BAA0B,CAC/B,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EACxE,OAAO,CAAC,GAAG,CACZ,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,aAAa,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;IACpH,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CACf,IAAoC,EACpC,QAAgB,EAChB,OAA0B,EAC1B,GAAW;IAEX,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACpE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACjD,MAAM,IAAI,eAAe,CACvB,2BAA2B,EAC3B,8BAA8B,QAAQ,oCAAoC,GAAG,IAAI,EACjF,EAAE,UAAU,EAAE,OAAO,CAAC,aAAa,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,4BAA4B,EAAE,CACjG,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,IAAoC;IACtD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,6BAA6B,CAAC,CAAC;IACrF,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,cAAc,CAAC,KAA0B,EAAE,GAAW,EAAE,OAAe;IAC9E,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG;QACH,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,OAA0B,EAAE,IAAY,EAAE,MAAc;IAC7E,OAAO,IAAI,eAAe,CACxB,2BAA2B,EAC3B,oCAAoC,IAAI,iBAAiB,MAAM,GAAG,EAClE,EAAE,UAAU,EAAE,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,CACpD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,SAAiB,EACjB,OAA0B,EAC1B,GAAuB,EACvB,IAAsB;IAEtB,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,KAAK,YAAY,eAAe;YAAE,MAAM,KAAK,CAAC;QAClD,MAAM,IAAI,eAAe,CACvB,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAwB;YAC/D,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,+BAA+B,EACnC,4DAA4D,SAAS,GAAG,EACxE;YACE,SAAS;YACT,UAAU,EAAE,OAAO,CAAC,aAAa;YACjC,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;YACrC,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B;SAC7E,EACD,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"governance.js","sourceRoot":"","sources":["../src/governance.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,10 +2,12 @@
2
2
  import { runCli } from "./cli.js";
3
3
  export { runCli };
4
4
  export * from "./artifact.js";
5
+ export * from "./reconciliation.js";
5
6
  export * from "./pr-policy.js";
6
7
  export * from "./governance.js";
7
8
  export * from "./contract/index.js";
8
9
  export * from "./github/index.js";
9
10
  export * from "./pull-request-template.js";
11
+ export * from "./semantic-template.js";
10
12
  export { discoverTemplates, discoverTemplatesSync, discoverTemplatesFromPaths, classifyTemplatePath, isTemplateContainerPath, isTemplatePathInNativeDirectory, selectTemplate, selectIssueTemplate, selectPullRequestTemplate, TemplateDiscoveryError, TemplateFilesystemError, TemplateNotFoundError, TemplateSelectionAmbiguousError, TemplateNameConflictError, InvalidTemplateSelectorError, } from "./template-discovery.js";
11
13
  export type { TemplateDiscoveryResult, TemplateSelector, TemplateType, TemplateKind, TemplateDiscoveryErrorCode, TemplateDiscoveryErrorDetails, } from "./template-discovery.js";
package/dist/index.js CHANGED
@@ -5,11 +5,13 @@ import { fileURLToPath } from "node:url";
5
5
  import { runCli } from "./cli.js";
6
6
  export { runCli };
7
7
  export * from "./artifact.js";
8
+ export * from "./reconciliation.js";
8
9
  export * from "./pr-policy.js";
9
10
  export * from "./governance.js";
10
11
  export * from "./contract/index.js";
11
12
  export * from "./github/index.js";
12
13
  export * from "./pull-request-template.js";
14
+ export * from "./semantic-template.js";
13
15
  export { discoverTemplates, discoverTemplatesSync, discoverTemplatesFromPaths, classifyTemplatePath, isTemplateContainerPath, isTemplatePathInNativeDirectory, selectTemplate, selectIssueTemplate, selectPullRequestTemplate, TemplateDiscoveryError, TemplateFilesystemError, TemplateNotFoundError, TemplateSelectionAmbiguousError, TemplateNameConflictError, InvalidTemplateSelectorError, } from "./template-discovery.js";
14
16
  let invokedPath;
15
17
  try {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,EACvB,+BAA+B,EAC/B,cAAc,EACd,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,+BAA+B,EAC/B,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC;AAUjC,IAAI,WAA+B,CAAC;AACpC,IAAI,CAAC;IACH,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxG,CAAC;AAAC,MAAM,CAAC;IACP,WAAW,GAAG,SAAS,CAAC;AAC1B,CAAC;AACD,IAAI,WAAW,KAAK,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACnD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC1B,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACjB,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC9B,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACxB,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC7D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,EACvB,+BAA+B,EAC/B,cAAc,EACd,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,+BAA+B,EAC/B,yBAAyB,EACzB,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC;AAUjC,IAAI,WAA+B,CAAC;AACpC,IAAI,CAAC;IACH,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxG,CAAC;AAAC,MAAM,CAAC;IACP,WAAW,GAAG,SAAS,CAAC;AAC1B,CAAC;AACD,IAAI,WAAW,KAAK,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACnD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC1B,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACjB,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC9B,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACxB,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC7D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
package/dist/pr-policy.js CHANGED
@@ -208,6 +208,105 @@ function parseRule(value, path) {
208
208
  ...(checklistRequireComplete === undefined ? {} : { checklistRequireComplete }),
209
209
  };
210
210
  }
211
+ const QUANTIFIER_PATTERN = /^(?:[*+?]|\{\d*,?\d*\})/u;
212
+ /**
213
+ * Rejects the structural shapes that cause catastrophic backtracking in a
214
+ * backtracking regex engine: a quantified group nested inside another
215
+ * quantified group, and a quantified group whose top-level alternatives can
216
+ * match overlapping text (e.g. "(a|a)+" or "(a|ab)+"). Overlap is judged by
217
+ * literal prefix comparison, which only inspects alternatives with no
218
+ * metacharacters; alternatives containing metacharacters are treated as
219
+ * potentially safe rather than guessed at. This is a conservative syntactic
220
+ * check, not a full NFA ambiguity analysis: it may reject some safe nested
221
+ * patterns but never a pattern the compiler previously accepted, and it does
222
+ * not claim to catch every possible ambiguous alternation.
223
+ */
224
+ function hasCatastrophicBacktrackingRisk(pattern) {
225
+ const stack = [];
226
+ let inCharClass = false;
227
+ const pushGroup = (startIndex) => {
228
+ stack.push({ hasQuantifiedChild: false, alternatives: [], currentAlternativeStart: startIndex });
229
+ };
230
+ for (let index = 0; index < pattern.length; index += 1) {
231
+ const char = pattern[index];
232
+ if (inCharClass) {
233
+ if (char === "\\") {
234
+ index += 1;
235
+ }
236
+ else if (char === "]") {
237
+ inCharClass = false;
238
+ markIfQuantifiedAtom(stack, pattern, index + 1);
239
+ }
240
+ continue;
241
+ }
242
+ if (char === "\\") {
243
+ index += 1;
244
+ markIfQuantifiedAtom(stack, pattern, index + 1);
245
+ continue;
246
+ }
247
+ if (char === "[") {
248
+ inCharClass = true;
249
+ continue;
250
+ }
251
+ if (char === "(") {
252
+ pushGroup(index + 1);
253
+ continue;
254
+ }
255
+ if (char === "|") {
256
+ const current = stack.at(-1);
257
+ if (current !== undefined) {
258
+ current.alternatives.push(pattern.slice(current.currentAlternativeStart, index));
259
+ current.currentAlternativeStart = index + 1;
260
+ }
261
+ continue;
262
+ }
263
+ if (char === ")") {
264
+ const closed = stack.pop();
265
+ if (closed === undefined)
266
+ continue;
267
+ closed.alternatives.push(pattern.slice(closed.currentAlternativeStart, index));
268
+ const rest = pattern.slice(index + 1);
269
+ const quantifierMatch = QUANTIFIER_PATTERN.exec(rest);
270
+ const isQuantified = quantifierMatch !== null;
271
+ if (isQuantified) {
272
+ if (closed.hasQuantifiedChild)
273
+ return true;
274
+ if (closed.alternatives.length > 1 && alternativesOverlap(closed.alternatives))
275
+ return true;
276
+ }
277
+ const parent = stack.at(-1);
278
+ if (parent !== undefined && isQuantified)
279
+ parent.hasQuantifiedChild = true;
280
+ continue;
281
+ }
282
+ if (QUANTIFIER_PATTERN.test(char))
283
+ continue;
284
+ // An ordinary literal atom: a quantifier immediately following it (e.g. "a+")
285
+ // still contributes unbounded repetition inside whatever group contains it.
286
+ markIfQuantifiedAtom(stack, pattern, index + 1);
287
+ }
288
+ return false;
289
+ }
290
+ function markIfQuantifiedAtom(stack, pattern, fromIndex) {
291
+ const current = stack.at(-1);
292
+ if (current === undefined)
293
+ return;
294
+ if (QUANTIFIER_PATTERN.test(pattern.slice(fromIndex)))
295
+ current.hasQuantifiedChild = true;
296
+ }
297
+ const LITERAL_ALTERNATIVE_PATTERN = /^[^\\^$.*+?()[\]{}|]*$/u;
298
+ /** True if any two alternatives are literal text where one is a prefix of (or equal to) the other. */
299
+ function alternativesOverlap(alternatives) {
300
+ const literals = alternatives.filter((alternative) => LITERAL_ALTERNATIVE_PATTERN.test(alternative));
301
+ for (let i = 0; i < literals.length; i += 1) {
302
+ for (let j = i + 1; j < literals.length; j += 1) {
303
+ const [shorter, longer] = literals[i].length <= literals[j].length ? [literals[i], literals[j]] : [literals[j], literals[i]];
304
+ if (shorter.length > 0 && longer.startsWith(shorter))
305
+ return true;
306
+ }
307
+ }
308
+ return false;
309
+ }
211
310
  function ruleToConstraint(rule, field, path) {
212
311
  if (rule.linkedIssue === true && field.type !== "string" && field.type !== "enum") {
213
312
  throw new PullRequestPolicyError("PR_POLICY_UNSUPPORTED_CONSTRAINT", "linkedIssue requires a string-like section.", path);
@@ -223,6 +322,12 @@ function ruleToConstraint(rule, field, path) {
223
322
  catch {
224
323
  throw new PullRequestPolicyError("PR_POLICY_INVALID_VALUE", "pattern must be a valid regular expression.", path);
225
324
  }
325
+ if (rule.pattern.includes("\\1") || /\\[1-9]/u.test(rule.pattern)) {
326
+ throw new PullRequestPolicyError("PR_POLICY_INVALID_VALUE", "pattern must not use backreferences.", path);
327
+ }
328
+ if (hasCatastrophicBacktrackingRisk(rule.pattern)) {
329
+ throw new PullRequestPolicyError("PR_POLICY_INVALID_VALUE", "pattern must not nest quantified groups or repeat overlapping alternatives, which can cause unbounded regex evaluation.", path);
330
+ }
226
331
  }
227
332
  if (rule.linkedIssue === true && rule.required === false) {
228
333
  throw new PullRequestPolicyError("PR_POLICY_CONFLICT", "linkedIssue cannot be combined with required=false.", path);
@@ -314,7 +419,10 @@ function validatePolicyTemplateBindings(overlay, contract, templateIdentities) {
314
419
  });
315
420
  }
316
421
  function identityMatchesContract(identity, contract) {
317
- return identity.path === contract.templateIdentity.path && identity.name === contract.templateIdentity.name;
422
+ // A semantic source may provide the display name while the generated native
423
+ // identity derives its name from the committed path. The repository path is
424
+ // the stable authority boundary; it must remain an exact match.
425
+ return identity.path === contract.templateIdentity.path;
318
426
  }
319
427
  function assertTemplateMatch(selector, contract, templateIdentities, path = "$.template") {
320
428
  if (selector === undefined)