github(minor): change repositoryId from select to text; add NewAssignedIssue and NewMention triggers#1095
Open
apx-vero wants to merge 12 commits into
Open
Conversation
f047ca9 to
34899f6
Compare
added 4 commits
May 15, 2026 14:09
…edIssue and NewMention triggers - Change repositoryId input from dynamic ListRepos select to free-text in all 30 components, allowing users to enter any repository (incl. org repos) in owner/repo format - Add NewAssignedIssue trigger: polls /issues?filter=assigned for issues assigned to the authenticated user; optional repositoryId filter scopes to a single repo - Add NewMention trigger: polls /notifications filtered by reason=mention, fires when the authenticated user is @mentioned in an issue, PR, or comment - Bump version 2.1.1 → 2.2.0
…/repo example Keep dynamic ListRepos source so users still get autocomplete suggestions, while text type allows free entry of any owner/repo value. Update tooltip to use Appmixer-ai/apmmixer-connectors as example.
…-examples threshold
34899f6 to
0153b6f
Compare
added 5 commits
May 15, 2026 14:26
…arated owner/repo)
…e-insensitive repo filter
… first tick to ignore pre-existing mentions
added 3 commits
May 18, 2026 10:26
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates the GitHub connector UX and trigger coverage by switching repositoryId from a dynamically-loaded select to a free-text owner/repo input across many components, and by adding two new polling triggers (assigned issues and mentions). It also expands output-port example schemas and adds defensive trimming of trigger state.
Changes:
- Changed
repositoryIdinputs fromselecttotext(withowner/repovalidation pattern) across affected components. - Added new polling triggers:
NewAssignedIssueandNewMention. - Added/expanded output-port
schema.examplevalues (and trimmedcontext.state.knownin multiple polling triggers).
Reviewed changes
Copilot reviewed 65 out of 67 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| src/appmixer/github/list/UpdatePullRequest/component.json | Expanded output option schemas/examples; changed repositoryId inspector to text with pattern. |
| src/appmixer/github/list/UpdateIssue/component.json | Expanded output option schemas/examples; changed repositoryId inspector to text with pattern. |
| src/appmixer/github/list/SubmitReview/component.json | Updated output option schemas/examples (notably simplified some nested object schemas). |
| src/appmixer/github/list/NewWatcher/NewWatcher.js | Trimmed saved known IDs to a capped size. |
| src/appmixer/github/list/NewWatcher/component.json | Added output option schemas/examples; changed repositoryId inspector to text with pattern. |
| src/appmixer/github/list/NewTeam/NewTeam.js | Trimmed saved known IDs to a capped size. |
| src/appmixer/github/list/NewTeam/component.json | Added output option schemas/examples. |
| src/appmixer/github/list/NewStargazer/NewStargazer.js | Trimmed saved known IDs to a capped size. |
| src/appmixer/github/list/NewStargazer/component.json | Added output option schemas/examples; changed repositoryId inspector to text with pattern. |
| src/appmixer/github/list/NewReviewRequest/NewReviewRequest.js | Trimmed saved known IDs to a capped size. |
| src/appmixer/github/list/NewReviewRequest/component.json | Added output option schemas/examples; changed repositoryId inspector to text with pattern. |
| src/appmixer/github/list/NewRepository/NewRepository.js | Trimmed saved known IDs to a capped size. |
| src/appmixer/github/list/NewRepository/component.json | Added output option schemas/examples. |
| src/appmixer/github/list/NewRelease/NewRelease.js | Trimmed saved known IDs to a capped size. |
| src/appmixer/github/list/NewRelease/component.json | Added output option schemas/examples; changed repositoryId inspector to text with pattern. |
| src/appmixer/github/list/NewPullRequest/NewPullRequest.js | Trimmed saved known IDs to a capped size. |
| src/appmixer/github/list/NewPullRequest/component.json | Added output option schemas/examples; changed repositoryId inspector to text with pattern. |
| src/appmixer/github/list/NewOrganization/NewOrganization.js | Trimmed saved known IDs to a capped size. |
| src/appmixer/github/list/NewOrganization/component.json | Added output option schemas/examples. |
| src/appmixer/github/list/NewNotification/NewNotification.js | Trimmed saved known IDs to a capped size. |
| src/appmixer/github/list/NewNotification/component.json | Added output option schemas/examples. |
| src/appmixer/github/list/NewMilestone/NewMilestone.js | Trimmed saved known IDs to a capped size. |
| src/appmixer/github/list/NewMilestone/component.json | Added output option schemas/examples; changed repositoryId inspector to text with pattern. |
| src/appmixer/github/list/NewMention/NewMention.js | Added new polling trigger for mentions via Notifications API, using since + ID dedupe. |
| src/appmixer/github/list/NewMention/component.json | Added new trigger manifest (properties + output options with examples). |
| src/appmixer/github/list/NewLabel/NewLabel.js | Trimmed saved known IDs to a capped size. |
| src/appmixer/github/list/NewLabel/component.json | Added output option schemas/examples; changed repositoryId inspector to text with pattern. |
| src/appmixer/github/list/NewIssue/NewIssue.js | Trimmed saved known IDs to a capped size. |
| src/appmixer/github/list/NewIssue/component.json | Added output option schemas/examples; changed repositoryId inspector to text with pattern. |
| src/appmixer/github/list/NewGlobalEvent/NewGlobalEvent.js | Trimmed saved known IDs to a capped size. |
| src/appmixer/github/list/NewGlobalEvent/component.json | Added output option schemas/examples. |
| src/appmixer/github/list/NewGist/NewGist.js | Trimmed saved known IDs to a capped size. |
| src/appmixer/github/list/NewGist/component.json | Added output option schemas/examples. |
| src/appmixer/github/list/NewEvent/NewEvent.js | Trimmed saved known IDs to a capped size. |
| src/appmixer/github/list/NewEvent/component.json | Added output option schemas/examples; changed repositoryId inspector to text with pattern. |
| src/appmixer/github/list/NewCommitComment/NewCommitComment.js | Trimmed saved known IDs to a capped size. |
| src/appmixer/github/list/NewCommitComment/component.json | Added output option schemas/examples; changed repositoryId inspector to text with pattern. |
| src/appmixer/github/list/NewCommit/NewCommit.js | Trimmed saved known IDs to a capped size. |
| src/appmixer/github/list/NewCommit/component.json | Added output option schemas/examples; changed repositoryId inspector to text with pattern. |
| src/appmixer/github/list/NewCollaborator/NewCollaborator.js | Trimmed saved known IDs to a capped size. |
| src/appmixer/github/list/NewCollaborator/component.json | Added output option schemas/examples; changed repositoryId inspector to text with pattern. |
| src/appmixer/github/list/NewBranch/NewBranch.js | Trimmed saved known IDs to a capped size. |
| src/appmixer/github/list/NewBranch/component.json | Added output option schemas/examples; changed repositoryId inspector to text with pattern. |
| src/appmixer/github/list/NewAssignedIssue/NewAssignedIssue.js | Added new polling trigger for issues assigned to authenticated user, optionally repo-scoped. |
| src/appmixer/github/list/NewAssignedIssue/component.json | Added new trigger manifest with optional repositoryId and output examples. |
| src/appmixer/github/list/MakeApiCall/component.json | Added example schema for status code output option. |
| src/appmixer/github/list/ListPullRequests/component.json | Changed repositoryId inspector to text with pattern + tooltip. |
| src/appmixer/github/list/ListPRs/component.json | Changed repositoryId inspector to text with pattern + tooltip. |
| src/appmixer/github/list/ListMilestones/component.json | Changed repositoryId inspector to text with pattern + tooltip. |
| src/appmixer/github/list/ListLabels/component.json | Changed repositoryId inspector to text with pattern + tooltip. |
| src/appmixer/github/list/ListIssues/component.json | Changed repositoryId inspector to text with pattern + tooltip. |
| src/appmixer/github/list/ListBranches/component.json | Changed repositoryId inspector to text with pattern + tooltip. |
| src/appmixer/github/list/ListAssignees/component.json | Changed repositoryId inspector to text with pattern + tooltip. |
| src/appmixer/github/list/GetUser/component.json | Updated output option examples/types (including nullable-related adjustments). |
| src/appmixer/github/list/GetPullRequestByNumber/component.json | Changed repositoryId inspector to text; adjusted output option schemas/examples. |
| src/appmixer/github/list/GetOrganizationByName/component.json | Added/adjusted output examples; updated nullable example for archived_at. |
| src/appmixer/github/list/FindPullRequest/component.json | Changed repositoryId inspector to text with pattern + tooltip; formatted labels schema. |
| src/appmixer/github/list/FindIssue/component.json | Changed repositoryId inspector to text with pattern + tooltip; formatted labels schema. |
| src/appmixer/github/list/DeleteBranch/component.json | Changed repository selector to text; added output example; schema formatting. |
| src/appmixer/github/list/CreatePullRequest/component.json | Added output option schemas/examples; changed repositoryId inspector to text with pattern. |
| src/appmixer/github/list/CreateIssue/component.json | Added output option schemas/examples; changed repositoryId inspector to text with pattern. |
| src/appmixer/github/list/CreateComment/component.json | Added output option schemas/examples; changed repositoryId inspector to text with pattern. |
| src/appmixer/github/lib.js | Updated GitHub API request helper (header version change). |
| src/appmixer/github/bundle.json | Bumped connector version to 2.2.0 and updated changelog. |
| scripts/validators/.thresholds.json | Lowered validation threshold for output-port examples (ratchet update). |
Comments suppressed due to low confidence (1)
src/appmixer/github/list/NewAssignedIssue/NewAssignedIssue.js:30
per_page=100is hardcoded into the endpoint query string, butlib.apiRequest()already appendsper_page: 100viaoptions.params. This can lead to duplicated query params (e.g....&per_page=100&per_page=100). Prefer passingparamstoapiRequest(and omitper_pagefrom the action URL).
let endpoint;
if (repositoryId) {
// Repo-specific: GET /repos/{owner}/{repo}/issues?assignee=@me&state=open
endpoint = `repos/${repositoryId}/issues?assignee=@me&state=open&per_page=100`;
} else {
// Cross-repo: GET /issues?filter=assigned (returns all issues assigned to the auth user)
endpoint = 'issues?filter=assigned&state=open&per_page=100';
}
const res = await lib.apiRequest(context, endpoint);
Comment on lines
300
to
304
| "group": "config", | ||
| "label": "Repository", | ||
| "index": 1, | ||
| "tooltip": "Enter the repository in `owner/repo` format (e.g. `Appmixer-ai/apmmixer-connectors`). You can also pick from the dynamically loaded list of your repositories.", | ||
| "source": { |
Comment on lines
324
to
328
| "group": "config", | ||
| "label": "Repository", | ||
| "index": 1, | ||
| "tooltip": "Enter the repository in `owner/repo` format (e.g. `Appmixer-ai/apmmixer-connectors`). You can also pick from the dynamically loaded list of your repositories.", | ||
| "source": { |
Comment on lines
+20
to
+33
|
|
||
| let endpoint; | ||
| if (repositoryId) { | ||
| // Repo-specific: GET /repos/{owner}/{repo}/issues?assignee=@me&state=open | ||
| endpoint = `repos/${repositoryId}/issues?assignee=@me&state=open&per_page=100`; | ||
| } else { | ||
| // Cross-repo: GET /issues?filter=assigned (returns all issues assigned to the auth user) | ||
| endpoint = 'issues?filter=assigned&state=open&per_page=100'; | ||
| } | ||
|
|
||
| const res = await lib.apiRequest(context, endpoint); | ||
|
|
||
| let known = Array.isArray(context.state.known) ? new Set(context.state.known) : null; | ||
| const { diff, actual } = lib.getNewItems(known, res.data, 'id'); |
Comment on lines
+45
to
+49
| // since — server-side date filter: only notifications updated after the flow started. | ||
| // GitHub expects YYYY-MM-DDTHH:MM:SSZ (no milliseconds). | ||
| const since = encodeURIComponent(context.state.since); | ||
| const res = await lib.apiRequest(context, `notifications?all=true&since=${since}&per_page=100`); | ||
|
|
Comment on lines
+67
to
+71
| // Advance the since window to now so the next tick only fetches what's new. | ||
| // Trim known to MAX_KNOWN as a defensive cap (getNewItems already replaces — not | ||
| // accumulates — the set each tick, but we guard against unexpectedly large pages). | ||
| const trimmedKnown = actual.length > MAX_KNOWN ? actual.slice(actual.length - MAX_KNOWN) : actual; | ||
| await context.saveState({ known: trimmedKnown, since: nowIso() }); |
| "value": "archived_at", | ||
| "schema": { | ||
| "type": "string" | ||
| "type": "string", |
Comment on lines
+225
to
+226
| "type": "boolean", | ||
| "example": false |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
1. repositoryId: select → text (all 30 components)
All GitHub components using a dynamic ListRepos select now use text input instead, allowing any repository in
owner/repoformat (including org repos and public repos the user doesn't own).Updated tooltip: Enter the repository in
owner/repoformat (e.g.octocat/Hello-World).Affected components (30): CreateComment, CreateIssue, CreatePullRequest, DeleteBranch, FindIssue, FindPullRequest, GetPullRequestByNumber, ListAssignees, ListBranches, ListIssues, ListLabels, ListMilestones, ListPRs, ListPullRequests, NewBranch, NewCollaborator, NewCommit, NewCommitComment, NewEvent, NewIssue, NewLabel, NewMilestone, NewPullRequest, NewRelease, NewReviewRequest, NewStargazer, NewWatcher, SubmitReview, UpdateIssue, UpdatePullRequest
2. New trigger: NewAssignedIssue
Triggers when a new issue is assigned to the authenticated user. Uses
GET /issues?filter=assigned. Optional repositoryId field scopes to a single repo.3. New trigger: NewMention
Triggers when the authenticated user is mentioned in an issue, PR, or comment. Polls
GET /notificationsfiltered byreason=mention.Version: 2.1.1 → 2.2.0