MCPcopy Create free account
hub / github.com/github/gh-aw / resolveSafeOutputIssueTarget

Function resolveSafeOutputIssueTarget

actions/setup/js/temporary_id.cjs:460–496  ·  view source on GitHub ↗

* Resolve a safe-output issue/PR target number from a message. * Handles temporary IDs, field aliases, and deferred resolution. * * Returns one of: * - `{ success: true, number: n }` — explicit number found and resolved * - `{ success: true, number: null }` — no explicit number; caller should u

({ message, resolvedTemporaryIds, tempIdMap, repoParts, handlerType, aliases = ["item_number", "issue_number", "pr_number", "pull_number"] })

Source from the content-addressed store, hash-verified

458 * @returns {{success: true, number: number|null} | {success: false, deferred?: boolean, error: string}}
459 */
460function resolveSafeOutputIssueTarget({ message, resolvedTemporaryIds, tempIdMap, repoParts, handlerType, aliases = ["item_number", "issue_number", "pr_number", "pull_number"] }) {
461 const fieldNames = aliases;
462
463 // Find the first non-null explicit value across all provided field aliases
464 let explicitValue;
465 for (const alias of fieldNames) {
466 if (message[alias] !== undefined && message[alias] !== null) {
467 explicitValue = message[alias];
468 break;
469 }
470 }
471
472 if (explicitValue === undefined) {
473 // No explicit item number provided — caller should fall back to event context
474 return { success: true, number: null };
475 }
476
477 const map = tempIdMap ?? loadTemporaryIdMapFromResolved(resolvedTemporaryIds);
478 const resolvedTarget = resolveRepoIssueTarget(explicitValue, map, repoParts.owner, repoParts.repo);
479
480 if (resolvedTarget.wasTemporaryId && !resolvedTarget.resolved) {
481 core.info(`Deferring ${handlerType}: unresolved temporary ID (${explicitValue})`);
482 return {
483 success: false,
484 deferred: true,
485 error: resolvedTarget.errorMessage ?? `Unresolved temporary ID: ${explicitValue}`,
486 };
487 }
488
489 if (resolvedTarget.errorMessage || !resolvedTarget.resolved) {
490 const error = `Invalid item number: ${explicitValue}`;
491 core.warning(error);
492 return { success: false, error };
493 }
494
495 return { success: true, number: resolvedTarget.resolved.number };
496}
497
498/**
499 * Check if text contains unresolved temporary ID references

Callers 7

remove_labels.cjsFile · 0.85
mainFunction · 0.85
replace_label.cjsFile · 0.85
add_labels.cjsFile · 0.85
mainFunction · 0.85
mainFunction · 0.85

Calls 2

resolveRepoIssueTargetFunction · 0.85

Tested by

no test coverage detected