@allocator-one/rcl 4.5.34 → 4.5.35

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.
@@ -12,7 +12,10 @@ export type RoundLivenessStatus = 'running' | 'dead' | 'not_launched' | 'complet
12
12
  /** What the caller does next: keep waiting, resume the dead launch, launch the round, read the report, or inspect. */
13
13
  export type RoundLivenessAction = 'wait' | 'resume' | 'launch' | 'process_report' | 'inspect' | 'none';
14
14
  export interface RoundLiveness {
15
+ /** The native target key the answer was read from. */
15
16
  target: string;
17
+ /** What the caller named, when that was a pull request reference standing for `target`. */
18
+ requestedTarget?: string;
16
19
  status: RoundLivenessStatus;
17
20
  action: RoundLivenessAction;
18
21
  message: string;
@@ -46,7 +49,13 @@ export interface RoundOutcomeWaitOptions extends RoundLivenessOptions {
46
49
  }
47
50
  /** Exit code for `rcl converge-status`: 6 when the round is abandoned and nothing will finish it. */
48
51
  export declare function roundLivenessExitCode(liveness: RoundLiveness): 0 | 6;
49
- /** Classify the target's latest round without changing native state, attempts, or reports. */
52
+ /**
53
+ * Classify the target's latest round without changing native state, attempts, or reports.
54
+ *
55
+ * A pull request named as `owner/repo#N` or by URL also reads the other keys
56
+ * its rounds launch under (`<repo>-<N>`, `owner/repo#N`); the key with the latest record answers, and
57
+ * `requestedTarget` says what the caller asked (RCL-235).
58
+ */
50
59
  export declare function inspectRoundLiveness(options: RoundLivenessOptions): Promise<RoundLiveness>;
51
60
  /** Poll until the round is no longer running or the timeout passes; a dead round returns at once. */
52
61
  export declare function waitForRoundOutcome(options: RoundOutcomeWaitOptions): Promise<RoundLiveness>;
@@ -2,6 +2,7 @@ import { loadConvergeAttemptState } from './attempt-budget.js';
2
2
  import { inspectProcessIdentity } from './process-identity.js';
3
3
  import { loadConvergeRunState } from './run-state.js';
4
4
  import { withNativeTarget } from './target-ownership.js';
5
+ import { convergeTargetCandidates, isUnsupportedConvergeTargetForm, UnsupportedConvergeTargetForm } from './target-forms.js';
5
6
  const DEFAULT_LOCK_TIMEOUT_MS = 2_000;
6
7
  const DEFAULT_WAIT_INTERVAL_MS = 30_000;
7
8
  /** Exit code for `rcl converge-status`: 6 when the round is abandoned and nothing will finish it. */
@@ -67,8 +68,31 @@ async function settledLiveness(target, headSha, state, launch) {
67
68
  : `The launch for ${label(launch)} completed${launch.reportPath ? ` with report ${launch.reportPath}` : ''}; ` +
68
69
  'it awaits converge-report.' };
69
70
  }
70
- /** Classify the target's latest round without changing native state, attempts, or reports. */
71
+ /** The launch (or a held lock) the answer rests on; `idle` and a miss at the head are answers about nothing. */
72
+ function recordedAt(liveness) {
73
+ if (liveness.launch)
74
+ return liveness.launch.startedAt;
75
+ return liveness.status === 'running' ? '￿' : undefined;
76
+ }
77
+ /**
78
+ * Classify the target's latest round without changing native state, attempts, or reports.
79
+ *
80
+ * A pull request named as `owner/repo#N` or by URL also reads the other keys
81
+ * its rounds launch under (`<repo>-<N>`, `owner/repo#N`); the key with the latest record answers, and
82
+ * `requestedTarget` says what the caller asked (RCL-235).
83
+ */
71
84
  export async function inspectRoundLiveness(options) {
85
+ const { key, aliases } = convergeTargetCandidates(options.target);
86
+ const literal = await inspectTargetLiveness({ ...options, target: key });
87
+ const answers = [literal, ...await Promise.all(aliases.map(alias => inspectTargetLiveness({ ...options, target: alias })))];
88
+ const recorded = answers.filter(answer => recordedAt(answer) !== undefined)
89
+ .sort((a, b) => recordedAt(b).localeCompare(recordedAt(a)));
90
+ if (recorded.length === 0 && isUnsupportedConvergeTargetForm(key))
91
+ throw new UnsupportedConvergeTargetForm(key);
92
+ const answer = recorded[0] ?? answers.at(aliases.length > 0 ? 1 : 0);
93
+ return answer.target === key ? answer : { ...answer, requestedTarget: key };
94
+ }
95
+ async function inspectTargetLiveness(options) {
72
96
  const target = options.target.trim();
73
97
  try {
74
98
  return await withNativeTarget(options.gitCommonDir, target, async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"round-liveness.js","sourceRoot":"","sources":["../../src/converge/round-liveness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"round-liveness.js","sourceRoot":"","sources":["../../src/converge/round-liveness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAyB,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAuD7H,MAAM,uBAAuB,GAAG,KAAK,CAAC;AACtC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAExC,qGAAqG;AACrG,MAAM,UAAU,qBAAqB,CAAC,QAAuB;IAC3D,OAAO,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,YAAY,CAAC,KAAmC,EAAE,cAA8C;IACvG,OAAO,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,IAAI,cAAc,CAAC;AACrF,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,YAAoB,EAAE,MAAc;IAC5D,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACtE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,cAAc,CAAC,MAA0B;IAChD,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO;QAC5F,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG;QAC5C,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxE,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAC,MAA0B;IACvC,OAAO,WAAW,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC,KAAK,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAC9F,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,qBAAqB,CAAC;AAC3E,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,OAA2B,EACxE,KAAmC,EAAE,MAAsC;IAC3E,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,CAAC;QACrE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gDAAgD,EAAE,CAAC;QAC/G,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ;YACvD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,OAAO,EAAE,kCAAkC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,4CAA4C;gBACzG,mDAAmD,EAAE,CAAC;IAC5D,CAAC;IACD,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,qEAAqE;QACrE,qEAAqE;QACrE,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC;QACpF,IAAI,QAAQ,IAAI,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,cAAuB,CAAC,KAAK,OAAO,EAAE,CAAC;YACxG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS;gBACnE,OAAO,EAAE,6BAA6B,KAAK,CAAC,MAAM,CAAC,wBAAwB,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC;QAClG,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS;YAClE,OAAO,EAAE,6BAA6B,KAAK,CAAC,MAAM,CAAC,6EAA6E;gBAC9H,mHAAmH;gBACnH,kFAAkF,EAAE,CAAC;IAC3F,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS;YACrE,OAAO,EAAE,kBAAkB,KAAK,CAAC,MAAM,CAAC,UAAU,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI;gBACxH,8CAA8C,EAAE,CAAC;IACvD,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IACjH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS;QAC7G,OAAO,EAAE,QAAQ;YACf,CAAC,CAAC,kBAAkB,KAAK,CAAC,MAAM,CAAC,eAAe;YAChD,CAAC,CAAC,kBAAkB,KAAK,CAAC,MAAM,CAAC,aAAa,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI;gBAC5G,4BAA4B,EAAE,CAAC;AACvC,CAAC;AAED,gHAAgH;AAChH,SAAS,UAAU,CAAC,QAAuB;IACzC,IAAI,QAAQ,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;IACtD,OAAO,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAA6B;IACtE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,wBAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5H,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;SACxE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;IAChE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,+BAA+B,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,6BAA6B,CAAC,GAAG,CAAC,CAAC;IAChH,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;IACtE,OAAO,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC;AAC9E,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,OAA6B;IAChE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACrC,IAAI,CAAC;QACH,OAAO,MAAM,gBAAgB,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YACzE,OAAO,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACjE,CAAC,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,uBAAuB,EAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,MAAM,KAAK,CAAC;IACpC,CAAC;IACD,kFAAkF;IAClF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACvG,MAAM,OAAO,GAAG,MAAM,EAAE,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,uDAAuD,KAAK,CAAC,MAAM,CAAC,GAAG;YACxF,CAAC,CAAC,wEAAwE,EAAE,CAAC;AACnF,CAAC;AAED,qGAAqG;AACrG,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAgC;IACxE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,IAAI,wBAAwB,CAAC;IAChE,MAAM,QAAQ,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IAC3C,SAAS,CAAC;QACR,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,EAAE,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QACxE,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * The native target keys a `converge-status --target` value can name (RCL-235).
3
+ *
4
+ * A converge target is a free-form key, and a pull request loop launches under
5
+ * one of two spellings: the sanitized `<repo>-<N>` slug the rcl-converge skill
6
+ * passes (and `rcl review` derives when no `--converge-target` is given), or
7
+ * the `owner/repo#N` form that also attributes a patch run to its pull
8
+ * request. A caller that names the pull request by the other spelling, or by
9
+ * its URL, reads a key that holds no state and sees `not_launched` for a round
10
+ * that is running or finished.
11
+ */
12
+ export declare class UnsupportedConvergeTargetForm extends Error {
13
+ constructor(target: string);
14
+ }
15
+ /**
16
+ * The key as typed first, then the keys a pull request reference stands for:
17
+ * the slug as the skill writes it (case kept, characters outside
18
+ * `[A-Za-z0-9._-]` replaced), as `rcl review` derives it (repo lowercased) and
19
+ * as `owner/repo#N`, so a URL reads a round launched under that short form.
20
+ * Any other value is its own and only key.
21
+ */
22
+ export declare function convergeTargetCandidates(input: string): {
23
+ key: string;
24
+ aliases: string[];
25
+ };
26
+ /** Whether the value is a reference form that cannot resolve to a key, so a miss must refuse instead of reading as idle. */
27
+ export declare function isUnsupportedConvergeTargetForm(input: string): boolean;
@@ -0,0 +1,49 @@
1
+ import { isGitHubTarget, parseGitHubTarget } from '../resolver/github.js';
2
+ /**
3
+ * The native target keys a `converge-status --target` value can name (RCL-235).
4
+ *
5
+ * A converge target is a free-form key, and a pull request loop launches under
6
+ * one of two spellings: the sanitized `<repo>-<N>` slug the rcl-converge skill
7
+ * passes (and `rcl review` derives when no `--converge-target` is given), or
8
+ * the `owner/repo#N` form that also attributes a patch run to its pull
9
+ * request. A caller that names the pull request by the other spelling, or by
10
+ * its URL, reads a key that holds no state and sees `not_launched` for a round
11
+ * that is running or finished.
12
+ */
13
+ export class UnsupportedConvergeTargetForm extends Error {
14
+ constructor(target) {
15
+ super(`converge_target_form_unsupported: "${target}" is not a target key, owner/repo#N or a GitHub pull request URL. ` +
16
+ 'Name the key the round launched under, or the pull request as owner/repo#N.');
17
+ this.name = 'UnsupportedConvergeTargetForm';
18
+ }
19
+ }
20
+ /**
21
+ * A value shaped like a pull request reference that no accepted form covers: `#17256`, `17256`, an issue URL, a
22
+ * malformed `owner/repo#…`. A free-form key that merely contains a `#` (`release#7`) names no reference and stays
23
+ * launchable.
24
+ */
25
+ function looksLikeUnsupportedReference(target) {
26
+ return /^#?\d+$/.test(target) || /^[a-z][a-z0-9+.-]*:\/\//i.test(target) || /^#/.test(target) || /^[^/#\s]+\/[^/#\s]+#/.test(target);
27
+ }
28
+ /**
29
+ * The key as typed first, then the keys a pull request reference stands for:
30
+ * the slug as the skill writes it (case kept, characters outside
31
+ * `[A-Za-z0-9._-]` replaced), as `rcl review` derives it (repo lowercased) and
32
+ * as `owner/repo#N`, so a URL reads a round launched under that short form.
33
+ * Any other value is its own and only key.
34
+ */
35
+ export function convergeTargetCandidates(input) {
36
+ const key = input.trim();
37
+ if (!isGitHubTarget(key))
38
+ return { key, aliases: [] };
39
+ const { owner, repo, number } = parseGitHubTarget(key);
40
+ const slug = `${repo.replace(/[^A-Za-z0-9._-]+/g, '-')}-${number}`;
41
+ const aliases = [...new Set([slug, `${repo.toLowerCase()}-${number}`, `${owner}/${repo}#${number}`])].filter(alias => alias !== key);
42
+ return { key, aliases };
43
+ }
44
+ /** Whether the value is a reference form that cannot resolve to a key, so a miss must refuse instead of reading as idle. */
45
+ export function isUnsupportedConvergeTargetForm(input) {
46
+ const key = input.trim();
47
+ return !isGitHubTarget(key) && looksLikeUnsupportedReference(key);
48
+ }
49
+ //# sourceMappingURL=target-forms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target-forms.js","sourceRoot":"","sources":["../../src/converge/target-forms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,MAAM,OAAO,6BAA8B,SAAQ,KAAK;IACtD,YAAY,MAAc;QACxB,KAAK,CAAC,sCAAsC,MAAM,oEAAoE;YACpH,6EAA6E,CAAC,CAAC;QACjF,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAC9C,CAAC;CACF;AAED;;;;GAIG;AACH,SAAS,6BAA6B,CAAC,MAAc;IACnD,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvI,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAa;IACpD,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACtD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;IACnE,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,MAAM,EAAE,EAAE,GAAG,KAAK,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;IACrI,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC1B,CAAC;AAED,4HAA4H;AAC5H,MAAM,UAAU,+BAA+B,CAAC,KAAa;IAC3D,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACzB,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,6BAA6B,CAAC,GAAG,CAAC,CAAC;AACpE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@allocator-one/rcl",
3
- "version": "4.5.34",
3
+ "version": "4.5.35",
4
4
  "description": "Review Council — multi-model AI code review CLI",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",