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

Function resolveInvocationContext

actions/setup/js/invocation_context_helpers.cjs:212–269  ·  view source on GitHub ↗

* Resolve workflow repo and effective event context across invocation styles: * - native events * - workflow_dispatch (optional explicit overrides in inputs) * - repository_dispatch (event wrapped in client_payload) * * @param {any} rawContext * @returns {{ * source: "native" | "workflow_di

(rawContext)

Source from the content-addressed store, hash-verified

210 * }}
211 */
212function resolveInvocationContext(rawContext) {
213 const contextRepo = normalizeRepo(rawContext?.repo) || { owner: "", repo: "" };
214 const workflowRepo = normalizeRepo(rawContext?.workflowRepo) || contextRepo;
215
216 /** @type {"native" | "workflow_dispatch" | "repository_dispatch"} */
217 let source = "native";
218 let eventName = rawContext?.eventName || "";
219 let eventPayload = rawContext?.payload || {};
220 let eventRepo = normalizeRepo(rawContext?.eventRepo);
221
222 if (eventName === "repository_dispatch") {
223 const clientPayload = rawContext?.payload?.client_payload;
224 if (clientPayload && typeof clientPayload === "object") {
225 source = "repository_dispatch";
226 eventName = rawContext?.payload?.action || eventName;
227 eventPayload = clientPayload;
228 eventRepo = eventRepo || extractRepoFromPayload(clientPayload) || parseRepoSlug(clientPayload?.aw_context?.repo);
229 }
230 } else if (eventName === "workflow_dispatch") {
231 source = "workflow_dispatch";
232 const inputs = rawContext?.payload?.inputs;
233 if (inputs && typeof inputs === "object") {
234 const inputsEventName = typeof inputs.event_name === "string" ? inputs.event_name : typeof inputs.eventName === "string" ? inputs.eventName : "";
235 const parsedPayload = parseJSONPayload(inputs.event_payload) || parseJSONPayload(inputs.eventPayload);
236 const awContext = parseJSONPayload(inputs.aw_context) || parseJSONPayload(inputs.awContext);
237 const targetRepo = parseRepoSlug(inputs.target_repo) || parseRepoSlug(inputs.targetRepo);
238 if (targetRepo) {
239 checkAllowedRepo(workflowRepo, targetRepo);
240 }
241 if (inputsEventName) {
242 eventName = inputsEventName;
243 } else if (typeof awContext?.event_type === "string" && awContext.event_type.trim()) {
244 eventName = awContext.event_type.trim();
245 }
246 if (parsedPayload) {
247 eventPayload = parsedPayload;
248 } else if (awContext && typeof awContext === "object") {
249 const awPayload = buildPayloadFromAwContext(awContext, eventName);
250 if (awPayload) {
251 eventPayload = awPayload;
252 }
253 }
254 eventRepo = eventRepo || parseRepoSlug(inputs.event_repo) || parseRepoSlug(inputs.eventRepo) || parseRepoSlug(typeof awContext?.repo === "string" ? awContext.repo : undefined) || targetRepo;
255 }
256 }
257
258 if (!eventRepo) {
259 eventRepo = extractRepoFromPayload(eventPayload) || workflowRepo;
260 }
261
262 return {
263 source,
264 eventName,
265 eventPayload,
266 workflowRepo,
267 eventRepo,
268 };
269}

Callers 14

remove_labels.cjsFile · 0.85
replace_label.cjsFile · 0.85
addCommentHandlerFunction · 0.85
updateIssueHandlerFunction · 0.85
updatePullRequestHandlerFunction · 0.85
resolveTargetFunction · 0.85
add_labels.cjsFile · 0.85
updateActivationCommentFunction · 0.85
mainFunction · 0.85

Calls 6

normalizeRepoFunction · 0.85
extractRepoFromPayloadFunction · 0.85
parseJSONPayloadFunction · 0.85
checkAllowedRepoFunction · 0.85
parseRepoSlugFunction · 0.70

Tested by

no test coverage detected