(item, _config, resolvedTemporaryIds)
| 103 | ISSUE_CONFIG, |
| 104 | { |
| 105 | resolveTarget(item, _config, resolvedTemporaryIds) { |
| 106 | // Resolve and validate target repository |
| 107 | const repoResult = resolveAndValidateRepo(item, defaultTargetRepo, allowedRepos, "issue"); |
| 108 | if (!repoResult.success) { |
| 109 | return { success: false, error: repoResult.error }; |
| 110 | } |
| 111 | const { repo: entityRepo, repoParts } = repoResult; |
| 112 | |
| 113 | // Determine issue number - either from explicit field or from context |
| 114 | if (item.issue_number !== undefined) { |
| 115 | // Try to resolve as temporary ID first, then fall back to integer parsing |
| 116 | const tempIdMap = loadTemporaryIdMapFromResolved(resolvedTemporaryIds); |
| 117 | const resolvedTarget = resolveRepoIssueTarget(item.issue_number, tempIdMap, repoParts.owner, repoParts.repo); |
| 118 | if (resolvedTarget.wasTemporaryId && resolvedTarget.resolved) { |
| 119 | const issueNumber = resolvedTarget.resolved.number; |
| 120 | core.info(`Resolved temporary ID '${item.issue_number}' to #${issueNumber}`); |
| 121 | return { success: true, entityNumber: issueNumber, owner: repoParts.owner, repo: repoParts.repo, entityRepo }; |
| 122 | } else if (resolvedTarget.wasTemporaryId && !resolvedTarget.resolved) { |
| 123 | return { |
| 124 | success: false, |
| 125 | deferred: true, |
| 126 | error: resolvedTarget.errorMessage || `Unresolved temporary ID: ${item.issue_number}`, |
| 127 | }; |
| 128 | } |
| 129 | |
| 130 | // Not a temporary ID - parse as integer |
| 131 | const issueNumber = parseInt(String(item.issue_number), 10); |
| 132 | if (isNaN(issueNumber)) { |
| 133 | return { success: false, error: `Invalid issue number: ${item.issue_number}` }; |
| 134 | } |
| 135 | return { success: true, entityNumber: issueNumber, owner: repoParts.owner, repo: repoParts.repo, entityRepo }; |
| 136 | } |
| 137 | |
| 138 | // Fall back to context issue number |
| 139 | const contextIssue = context.payload?.issue?.number; |
| 140 | if (!contextIssue) { |
| 141 | return { success: false, error: "No issue number available" }; |
| 142 | } |
| 143 | return { success: true, entityNumber: contextIssue, owner: repoParts.owner, repo: repoParts.repo, entityRepo }; |
| 144 | }, |
| 145 | |
| 146 | getDetails: getIssueDetails, |
| 147 |
no test coverage detected