diff --git a/build/esbuild-server.ts b/build/esbuild-server.ts new file mode 100644 index 0000000..80d652f --- /dev/null +++ b/build/esbuild-server.ts @@ -0,0 +1,16 @@ +import esbuild from "esbuild"; +import { esBuildContext } from "./esbuild-build"; +(async () => { + await server(); +})().catch((error) => { + console.error("Unhandled error:", error); + process.exit(1); +}); +export async function server() { + const _context = await esbuild.context(esBuildContext); + const { port } = await _context.serve({ + servedir: "static", + port: 8080, + }); + console.log(`http://localhost:${port}`); +} diff --git a/build/esbuild-watch.ts b/build/esbuild-watch.ts deleted file mode 100644 index d05e7dc..0000000 --- a/build/esbuild-watch.ts +++ /dev/null @@ -1,11 +0,0 @@ -import esbuild from "esbuild"; -import { esBuildContext } from "./esbuild-build"; - -async function watch() { - const ctx = await esbuild.context(esBuildContext); - await ctx.watch(); - console.log("Watching..."); -} - -// This MUST NOT be awaited. -void watch(); diff --git a/functions/referral-manager.ts b/functions/referral-manager.ts deleted file mode 100644 index f83ddd4..0000000 --- a/functions/referral-manager.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { Env, Context } from "./types"; -import { validatePOST } from "./validators"; -import { Request } from "@cloudflare/workers-types"; - -export const corsHeaders = { - "Access-Control-Allow-Origin": "*", - "Access-Control-Allow-Methods": "GET, POST, OPTIONS", - "Access-Control-Allow-Headers": "Content-Type", -}; - -export async function onRequest(ctx: Context): Promise { - const { request, env } = ctx; - - const url = new URL(request.url); - - try { - switch (request.method) { - case "OPTIONS": - return new Response(null, { - headers: corsHeaders, - status: 204, - }); - - case "POST": - return await handleSet(env, request); - - case "GET": - if (url.searchParams.has("key")) { - const key = url.searchParams.get("key") as string; - return await handleGet(key, env); - } else { - return await handleList(env); - } - - default: - return new Response("Method Not Allowed", { - headers: corsHeaders, - status: 405, - }); - } - } catch (error) { - console.error("Error processing request:", error); - return new Response("Internal Server Error", { - headers: corsHeaders, - status: 500, - }); - } -} - -async function handleSet(env: Env, request: Request): Promise { - const result = await validatePOST(request); - - if (!result.isValid || !result.gitHubUserId || !result.referralCode) { - return new Response("Unauthorized", { - headers: corsHeaders, - status: 400, - }); - } - - const { gitHubUserId, referralCode } = result; - - const oldRefCode = await env.KVNamespace.get(gitHubUserId); - - if (oldRefCode) { - return new Response(`Key '${gitHubUserId}' already has a referral code: '${oldRefCode}'`, { - headers: corsHeaders, - status: 404, - }); - } - - await env.KVNamespace.put(gitHubUserId, referralCode); - - return new Response(`Key '${gitHubUserId}' added with value '${referralCode}'`, { - headers: corsHeaders, - status: 200, - }); -} - -async function handleGet(gitHubUserId: string, env: Env): Promise { - const referralCode = await env.KVNamespace.get(gitHubUserId); - if (referralCode) { - return new Response(`Value for '${gitHubUserId}': ${referralCode}`, { - headers: corsHeaders, - status: 200, - }); - } else { - return new Response(`No value found for '${gitHubUserId}'`, { - headers: corsHeaders, - status: 404, - }); - } -} - -async function handleList(env: Env): Promise { - const gitHubUsersIds = await env.KVNamespace.list(); - const referrals: Record = {}; - - for (const { name: userId } of gitHubUsersIds.keys) { - const referralCode = await env.KVNamespace.get(userId); - referrals[userId] = referralCode; - } - - return new Response(JSON.stringify(referrals, null, 2), { - headers: { ...corsHeaders, "Content-Type": "application/json" }, - }); -} diff --git a/functions/types.ts b/functions/types.ts deleted file mode 100644 index acafc2e..0000000 --- a/functions/types.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { EventContext, KVNamespace } from "@cloudflare/workers-types"; - -export interface Env { - KVNamespace: KVNamespace; -} - -export interface POSTRequestBody { - authToken: string; - referralCode: string; -} - -export interface ValidationResult { - isValid: boolean; - gitHubUserId?: string; - referralCode?: string; -} - -export type Context = EventContext>; diff --git a/functions/validators.ts b/functions/validators.ts deleted file mode 100644 index 5133548..0000000 --- a/functions/validators.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { POSTRequestBody, ValidationResult } from "./types"; -import { GitHubUserResponse } from "../src/home/github-types"; -import { Request } from "@cloudflare/workers-types"; -import { Octokit } from "@octokit/rest"; - -export async function validatePOST(request: Request): Promise { - const jsonData: POSTRequestBody = await request.json(); - - const { authToken, referralCode } = jsonData; - - const octokit = new Octokit({ auth: authToken }); - - try { - const response = (await octokit.request("GET /user")) as GitHubUserResponse; - - const gitHubUser = response.data; - - return { isValid: true, gitHubUserId: gitHubUser.id.toString(), referralCode: referralCode }; - } catch (error) { - console.error("User is not logged in"); - return { isValid: false }; - } -} diff --git a/package.json b/package.json index bde85e6..3aab295 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "@ubiquity/work.ubq.fi", + "name": "@ubiquity/nofications.ubq.fi", "version": "1.0.0", - "description": "The DevPool Directory for UbiquityOS.", + "description": "The GitHub notifications viewer for UbiquityOS.", "main": "build/index.ts", "author": "Ubiquity DAO", "license": "MIT", @@ -9,9 +9,7 @@ "node": ">=20.10.0" }, "scripts": { - "start": "run-p start-wrangler watch", - "start-wrangler": "npx wrangler pages dev static --port 8080", - "watch": "tsx build/esbuild-watch.ts", + "start": "tsx build/esbuild-server.ts", "build": "tsx build/esbuild-build.ts", "format": "run-s format:lint format:prettier format:cspell", "format:lint": "eslint --fix .", diff --git a/src/home/authentication.ts b/src/home/authentication.ts index c110f70..161f9cb 100644 --- a/src/home/authentication.ts +++ b/src/home/authentication.ts @@ -1,7 +1,6 @@ import { getGitHubAccessToken } from "./getters/get-github-access-token"; import { getGitHubUser } from "./getters/get-github-user"; import { GitHubUser } from "./github-types"; -import { trackReferralCode } from "./register-referral"; import { displayGitHubUserInformation } from "./rendering/display-github-user-information"; import { renderGitHubLoginButton } from "./rendering/render-github-login-button"; @@ -18,7 +17,6 @@ export async function authentication() { const gitHubUser: null | GitHubUser = await getGitHubUser(); if (gitHubUser) { - await trackReferralCode(); await displayGitHubUserInformation(gitHubUser); } } diff --git a/src/home/fetch-github/cache-integrity.ts b/src/home/fetch-github/cache-integrity.ts deleted file mode 100644 index e9ce40f..0000000 --- a/src/home/fetch-github/cache-integrity.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { getLocalStore } from "../getters/get-local-store"; -import { GITHUB_TASKS_STORAGE_KEY, TaskStorageItems } from "../github-types"; -import { taskManager } from "../home"; - -export async function checkCacheIntegrityAndSyncTasks() { - const _cachedTasks = getLocalStore(GITHUB_TASKS_STORAGE_KEY) as TaskStorageItems; - - // if there are no cached tasks, or timestamp is invalid, or tasks were cached over 15 minutes ago resync tasks - if (!_cachedTasks || !_cachedTasks.timestamp || _cachedTasks.timestamp + 60 * 1000 * 15 <= Date.now()) { - await taskManager.syncTasks(); - } -} diff --git a/src/home/fetch-github/fetch-and-display-previews.ts b/src/home/fetch-github/fetch-and-display-previews.ts deleted file mode 100644 index 5a4d10f..0000000 --- a/src/home/fetch-github/fetch-and-display-previews.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { GitHubIssue } from "../github-types"; -import { taskManager } from "../home"; -import { applyAvatarsToIssues, renderGitHubIssues } from "../rendering/render-github-issues"; -import { renderOrgHeaderLabel } from "../rendering/render-org-header"; -import { closeModal } from "../rendering/render-preview-modal"; -import { filterIssuesBySearch } from "../sorting/filter-issues-by-search"; -import { Sorting } from "../sorting/generate-sorting-buttons"; -import { sortIssuesController } from "../sorting/sort-issues-controller"; -import { checkCacheIntegrityAndSyncTasks } from "./cache-integrity"; - -export type Options = { - ordering: "normal" | "reverse"; -}; - -// start at view based on URL -export let isProposalOnlyViewer = new URLSearchParams(window.location.search).get("proposal") === "true"; - -export const viewToggle = document.getElementById("view-toggle") as HTMLInputElement; - -if (isProposalOnlyViewer) { - viewToggle.checked = true; -} - -if (!viewToggle) { - throw new Error("Could not find view toggle"); -} - -// if the Directory/Proposals toggle is clicked re-render the issues -viewToggle.addEventListener("click", () => { - isProposalOnlyViewer = !isProposalOnlyViewer; - - // If you are in a preview, close it - closeModal(); - void displayGitHubIssues(); -}); - -function getProposalsOnlyFilter(getProposals: boolean) { - return (issue: GitHubIssue) => { - if (!issue?.labels) return false; - - const hasPriceLabel = issue.labels.some((label) => { - if (typeof label === "string") return false; - return label.name?.startsWith("Price: ") || label.name?.startsWith("Price: "); - }); - - return getProposals ? !hasPriceLabel : hasPriceLabel; - }; -} - -function filterIssuesByOrganization(issues: GitHubIssue[]): GitHubIssue[] { - // get organization name from first thing after / in URL - const pathSegments = window.location.pathname.split("/").filter(Boolean); - const urlOrgName = pathSegments.length > 0 ? pathSegments[0] : null; - - // if there is no organization name in the URL, return all issues - if (!urlOrgName) return issues; - - // filter issues by matching the URL organization name with the issue's organization name - const filteredIssues = issues.filter((issue) => { - const [issueOrgName] = issue.repository_url.split("/").slice(-2); - return issueOrgName === urlOrgName; - }); - - // if no issues match the organization, redirect to home - if (filteredIssues.length === 0) { - console.log(`No issues found for organization "${urlOrgName}". Redirecting to the home page.`); - window.location.href = "/"; - } - - renderOrgHeaderLabel(urlOrgName); - - return filteredIssues; -} - -// checks the cache's integrity, sorts issues, checks Directory/Proposals toggle, renders them and applies avatars -export async function displayGitHubIssues({ - sorting, - options = { ordering: "normal" }, - skipAnimation = false, -}: { - sorting?: Sorting; - options?: { ordering: string }; - skipAnimation?: boolean; -} = {}) { - await checkCacheIntegrityAndSyncTasks(); - const cachedTasks = taskManager.getTasks(); - const sortedIssues = sortIssuesController(cachedTasks, sorting, options); - let sortedAndFiltered = sortedIssues.filter(getProposalsOnlyFilter(isProposalOnlyViewer)); - sortedAndFiltered = filterIssuesByOrganization(sortedAndFiltered); - renderGitHubIssues(sortedAndFiltered, skipAnimation); - applyAvatarsToIssues(); -} - -export async function searchDisplayGitHubIssues({ - searchText, - skipAnimation = false, -}: { - searchText: string; - skipAnimation?: boolean; -}) { - const searchResult = filterIssuesBySearch(searchText); - let filteredIssues = searchResult.filter(getProposalsOnlyFilter(isProposalOnlyViewer)); - filteredIssues = filterIssuesByOrganization(filteredIssues); - renderGitHubIssues(filteredIssues, skipAnimation); - applyAvatarsToIssues(); -} diff --git a/src/home/fetch-github/fetch-avatar.ts b/src/home/fetch-github/fetch-avatar.ts index 011e1b2..7c571b8 100644 --- a/src/home/fetch-github/fetch-avatar.ts +++ b/src/home/fetch-github/fetch-avatar.ts @@ -2,9 +2,8 @@ import { Octokit } from "@octokit/rest"; import { getGitHubAccessToken } from "../getters/get-github-access-token"; import { getImageFromCache, saveImageToCache } from "../getters/get-indexed-db"; import { renderErrorInModal } from "../rendering/display-popup-modal"; -import { organizationImageCache } from "./fetch-issues-full"; -import { GitHubIssue } from "../github-types"; -import { taskManager } from "../home"; +import { organizationImageCache } from "./fetch-data"; +import { GitHubAggregated, GitHubNotification, GitHubNotifications } from "../github-types"; // Map to track ongoing avatar fetches const pendingFetches: Map> = new Map(); @@ -100,12 +99,10 @@ export async function fetchAvatar(orgName: string): Promise { } // fetches avatars for all tasks (issues) cached. it will fetch only once per organization, remaining are returned from cache -export async function fetchAvatars() { - const cachedTasks = taskManager.getTasks(); - +export async function fetchAvatars(notifications: GitHubAggregated[]) { // fetches avatar for each organization for each task, but fetchAvatar() will only fetch once per organization, remaining are returned from cache - const avatarPromises = cachedTasks.map(async (task: GitHubIssue) => { - const [orgName] = task.repository_url.split("/").slice(-2); + const avatarPromises = notifications.map(async (task: GitHubAggregated) => { + const [orgName] = task.notification.repository.url.split("/").slice(-2); if (orgName) { return fetchAvatar(orgName); } diff --git a/src/home/fetch-github/fetch-data.ts b/src/home/fetch-github/fetch-data.ts new file mode 100644 index 0000000..f10693a --- /dev/null +++ b/src/home/fetch-github/fetch-data.ts @@ -0,0 +1,286 @@ +import { Octokit } from "@octokit/rest"; +import { GitHubAggregated, GitHubIssue, GitHubNotification, GitHubNotifications, GitHubPullRequest } from "../github-types"; +import { getGitHubAccessToken } from "../getters/get-github-access-token"; +import { handleRateLimit } from "./handle-rate-limit"; +import { RequestError } from "@octokit/request-error"; +// import { testAllNotifications } from "./test-all-notifications"; + +export const organizationImageCache = new Map(); // this should be declared in image related script + +// Generalized function to fetch notifications from GitHub +async function fetchNotifications(): Promise { + const providerToken = await getGitHubAccessToken(); + const octokit = new Octokit({ auth: providerToken }); + + try { + const notifications = (await octokit.request("GET /notifications")).data as GitHubNotifications; + console.log("unfiltered", notifications); + return notifications; + } catch (error) { + if (error instanceof RequestError && error.status === 403) { + await handleRateLimit(octokit, error); + } + console.warn("error fetching notifications:", error); + } + return null; +} + +export async function fetchIssues(): Promise { + const response = await fetch("https://raw.githubusercontent.com/ubiquity/devpool-directory/__STORAGE__/devpool-issues.json"); + const jsonData = await response.json(); + return jsonData; +} + +export async function fetchPullRequests(): Promise { + const response = await fetch("https://raw.githubusercontent.com/ubiquity/devpool-directory/__STORAGE__/devpool-pull-requests.json"); + const jsonData = await response.json(); + return jsonData; +} + +// Pre-filter notifications by general rules (repo filtering and ignoring CI activity) +function preFilterNotifications(devpoolRepos: Set, notifications: GitHubNotification[]): GitHubNotifications { + return notifications.filter((notification) => { + // Ignore based on reason + if ( + ["comment", "ci_activity", "invitation", "member_feature_requested", "security_advisory_credit", "state_change", "team_mention"].includes( + notification.reason + ) + ) { + console.log("skipping ", notification.subject.title, "cause of reason", notification.reason); + return false; + } + + // Ignore notifications from repos that are not in devpoolRepos + const repoName = notification.repository.full_name; + if (!devpoolRepos.has(repoName)) { + console.log("skipping ", notification.subject.title, "cause of repo", repoName); + return false; + } + return devpoolRepos.has(repoName); + }); +} + +// Function to filter pull request notifications +function filterPullRequestNotifications(devpoolRepos: Set, notifications: GitHubNotification[]): GitHubNotifications { + return preFilterNotifications(devpoolRepos, notifications).filter((notification) => notification.subject.type === "PullRequest"); +} + +// Function to filter issue notifications +function filterIssueNotifications(devpoolRepos: Set, notifications: GitHubNotification[]): GitHubNotifications { + return preFilterNotifications(devpoolRepos, notifications).filter((notification) => notification.subject.type === "Issue"); +} + +async function fetchIssueFromPullRequest(pullRequest: GitHubPullRequest, issues: GitHubIssue[]): Promise { + if (!pullRequest.body) return null; + + // Match the issue reference in the PR body + const issueUrlMatch = pullRequest.body.match(/Resolves (https:\/\/github\.com\/(.+?)\/(.+?)\/issues\/(\d+))/); + const issueNumberMatch = pullRequest.body.match(/Resolves #(\d+)/); + const issueMarkdownLinkMatch = pullRequest.body.match(/Resolves \[\s*#(\d+)\s*\]/); + + let apiUrl: string; + + if (issueUrlMatch) { + // Full URL to the issue is provided + const [, , owner, repo, issueNumber] = issueUrlMatch; + apiUrl = `https://api.github.com/repos/${owner}/${repo}/issues/${issueNumber}`; + } else if (issueNumberMatch || issueMarkdownLinkMatch) { + // Only issue number is provided, construct API URL using current repo info + const issueNumber = issueNumberMatch ? issueNumberMatch[1] : issueMarkdownLinkMatch ? issueMarkdownLinkMatch[1] : null; + if (!issueNumber) return null; + const pullRequestUrlMatch = pullRequest.url.match(/repos\/(.+?)\/(.+?)\/pulls\/\d+/); + if (!pullRequestUrlMatch) return null; + + const [, owner, repo] = pullRequestUrlMatch; + apiUrl = `https://api.github.com/repos/${owner}/${repo}/issues/${issueNumber}`; + } else { + // No valid issue reference found + return null; + } + + const issue = issues.find((issue) => issue.url === apiUrl); + return issue || null; +} + +// Function to fetch pull request notifications with related pull request and issue data +export async function getPullRequestNotifications( + devpoolRepos: Set, + notifications: GitHubNotification[], + pullRequests: GitHubPullRequest[], + issues: GitHubIssue[] +): Promise { + if (!notifications) return null; + + const aggregatedData: GitHubAggregated[] = []; + const filteredNotifications = filterPullRequestNotifications(devpoolRepos, notifications); + + for (const notification of filteredNotifications) { + const pullRequestUrl = notification.subject.url; + const pullRequest = pullRequests.find((pr) => pr.url === pullRequestUrl); + if (!pullRequest || pullRequest.draft || pullRequest.state === "closed") { + console.log("skipping ", notification.subject.title, "cause draft or closed"); + continue; // Skip draft or closed pull requests + } + + const issue = await fetchIssueFromPullRequest(pullRequest, issues); + if (!issue) { + console.log("skipping ", notification.subject.title, "cause no associated issue"); + continue; // Skip if no associated issue + } + + aggregatedData.push({ notification, pullRequest, issue, backlinkCount: 0 }); + } + + return aggregatedData; +} + +// Function to fetch issue notifications with related issue data +export function getIssueNotifications(devpoolRepos: Set, notifications: GitHubNotification[], issues: GitHubIssue[]): GitHubAggregated[] | null { + if (!notifications) return null; + + const aggregatedData: GitHubAggregated[] = []; + const filteredNotifications = filterIssueNotifications(devpoolRepos, notifications); + + for (const notification of filteredNotifications) { + const issueUrl = notification.subject.url; + const issue = issues.find((issue) => issue.url === issueUrl); + if (!issue || issue.state === "closed") { + console.log("skipping ", notification.subject.title, "cause issue is closed"); + continue; // Skip closed issues + } + + aggregatedData.push({ notification, pullRequest: null, issue, backlinkCount: 0 }); + } + + return aggregatedData; +} + +function countBacklinks(aggregated: GitHubAggregated, allPullRequests: GitHubPullRequest[], allIssues: GitHubIssue[]): number { + let issueNumber: number | null = null; + let issueUrl: string | null = null; + let prUrl: string | null = null; + let repoName: string, ownerName: string; + + // extract URLs and numbers based on the notification type + if (aggregated.notification.subject.type === "Issue" && aggregated.issue) { + const { number, url, repository_url } = aggregated.issue; + issueNumber = number; + issueUrl = url; + [ownerName, repoName] = repository_url.split("/").slice(-2); + } else if (aggregated.notification.subject.type === "PullRequest" && aggregated.pullRequest) { + const { url, base } = aggregated.pullRequest; + prUrl = url; + issueNumber = aggregated.issue?.number || null; + issueUrl = aggregated.issue?.url || null; + [ownerName, repoName] = base.repo.url.split("/").slice(-2); + } else { + return 0; // unsupported type + } + + if (!prUrl && !issueUrl) return 0; // safety check + + // regex patterns + const issueFullUrlRegex = issueUrl ? new RegExp(issueUrl, "g") : null; + const prFullUrlRegex = prUrl ? new RegExp(prUrl, "g") : null; + const issueShortRefRegex = issueNumber ? new RegExp(`#${issueNumber}\\b`, "g") : null; + + // check backlinks in a body + const countMatches = (body: string | null, repo: string, owner: string): number => { + let count = 0; + if (!body) return count; + + if (prFullUrlRegex && body.match(prFullUrlRegex)) count++; // full PR URL match + if (issueFullUrlRegex && body.match(issueFullUrlRegex)) count++; // full Issue URL match + if (issueShortRefRegex && body.match(issueShortRefRegex) && repo === repoName && owner === ownerName) { + count++; // short issue reference match (same repo) + } + + return count; + }; + + let totalCount = 0; + + // check backlinks in pull requests + for (const pr of allPullRequests) { + const [prOwner, prRepo] = pr.base.repo.url.split("/").slice(-2); + totalCount += countMatches(pr.body, prRepo, prOwner); + } + + // check backlinks in issues + for (const issue of allIssues) { + const [issueOwner, issueRepo] = issue.repository_url.split("/").slice(-2); + totalCount += countMatches(issue.body ?? null, issueRepo, issueOwner); + } + + return totalCount; +} + +function getDevpoolRepos(pullRequests: GitHubPullRequest[], issues: GitHubIssue[]): Set { + const uniqueNames = new Set(); + + for (const pullRequest of pullRequests) { + const [ownerName, repoName] = pullRequest.base.repo.url.split("/").slice(-2); + uniqueNames.add(`${ownerName}/${repoName}`); + } + + for (const issue of issues) { + const [issueOwner, issueRepo] = issue.repository_url.split("/").slice(-2); + uniqueNames.add(`${issueOwner}/${issueRepo}`); + } + return uniqueNames; +} + +// Fetch all notifications and return them as an array of aggregated data +export async function fetchAllNotifications(): Promise { + // fetches all notifications, pull requests and issues in parallel + const [notifications, pullRequests, issues] = await Promise.all([fetchNotifications(), fetchPullRequests(), fetchIssues()]); + if (!notifications || !pullRequests || !issues) return null; + + const devpoolRepos = getDevpoolRepos(pullRequests, issues); + console.log("devpoolRepos: ", devpoolRepos); + + const [pullRequestNotifications, issueNotifications] = await Promise.all([ + getPullRequestNotifications(devpoolRepos, notifications, pullRequests, issues), + getIssueNotifications(devpoolRepos, notifications, issues), + ]); + + if (!pullRequestNotifications && !issueNotifications) return null; + + const allNotifications = [...(pullRequestNotifications || []), ...(issueNotifications || [])]; + + // filter notifs with priority label + const filteredNotifications = allNotifications.filter((aggregated) => { + if (!aggregated.issue || !aggregated.issue.labels) { + // skip if no issue or labels + console.log("skipping ", aggregated.notification.subject.title, "cause no labels or issue"); + return false; + } + + const isSuccess = aggregated.issue.labels.some((label) => { + if (typeof label === "string" || !label.name) { + return false; + } + + const match = label.name.match(/^(Priority): /); + if (match) { + return true; + } + + return false; + }); + + if (!isSuccess){ + console.log("skipping ", aggregated.notification.subject.title, "cause no priority label"); + } + return isSuccess; + }); + + for (const aggregated of filteredNotifications) { + // count backlinks + const backlinkCount = countBacklinks(aggregated, pullRequests, issues); + aggregated.backlinkCount = backlinkCount; + } + + console.log("filteredNotifications", filteredNotifications); + return filteredNotifications; +} diff --git a/src/home/fetch-github/fetch-issues-full.ts b/src/home/fetch-github/fetch-issues-full.ts deleted file mode 100644 index 2c60ff6..0000000 --- a/src/home/fetch-github/fetch-issues-full.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { saveIssuesToCache } from "../getters/get-indexed-db"; -import { GitHubIssue } from "../github-types"; -import { taskManager } from "../home"; -import { displayGitHubIssues } from "./fetch-and-display-previews"; -export const organizationImageCache = new Map(); // this should be declared in image related script - -// Fetches the issues from `devpool-issues.json` file in the `__STORAGE__` branch of the `devpool-directory` repo -// https://github.com/ubiquity/devpool-directory/blob/__STORAGE__/devpool-issues.json - -export async function fetchIssues(): Promise { - const response = await fetch("https://raw.githubusercontent.com/ubiquity/devpool-directory/__STORAGE__/devpool-issues.json"); - const jsonData = await response.json(); - return jsonData; -} - -// First issues are rendered from cache then this function is called to update if needed -export async function postLoadUpdateIssues() { - try { - const cachedIssues = taskManager.getTasks(); - const fetchedIssues = await fetchIssues(); - - if (issuesAreDifferent(cachedIssues, fetchedIssues)) { - await saveIssuesToCache(cachedIssues, fetchedIssues); // this handles stale and new issues - await taskManager.syncTasks(); - if (cachedIssues.length === 0) { - void displayGitHubIssues(); // if it's first time loading keep animation - } else { - void displayGitHubIssues({ skipAnimation: true }); // if there were cached issues skip animation - } - } - } catch (error) { - console.error("Error updating issues cache", error); - } -} - -// Sort issues by ID -function sortIssues(issues: GitHubIssue[]): GitHubIssue[] { - return issues.slice().sort((a, b) => a.id - b.id); -} - -// Check if issues are different -function issuesAreDifferent(cached: GitHubIssue[], fetched: GitHubIssue[]): boolean { - cached = sortIssues(cached); - fetched = sortIssues(fetched); - - if (cached.length !== fetched.length) return true; - - for (let i = 0; i < cached.length; i++) { - if (cached[i].id !== fetched[i].id) { - return true; - } - } - return false; -} diff --git a/src/home/fetch-github/filter-and-display-notifications.ts b/src/home/fetch-github/filter-and-display-notifications.ts new file mode 100644 index 0000000..e9fe6f2 --- /dev/null +++ b/src/home/fetch-github/filter-and-display-notifications.ts @@ -0,0 +1,34 @@ +// import { GitHubAggregated, GitHubNotifications } from "../github-types"; +import { getNotifications } from "../home"; +import { applyAvatarsToNotifications, renderEmpty, renderNotifications } from "../rendering/render-github-notifications"; +// import { renderOrgHeaderLabel } from "../rendering/render-org-header"; +import { closeModal } from "../rendering/render-preview-modal"; +// import { filterIssuesBySearch } from "../sorting/filter-issues-by-search"; +import { Sorting } from "../sorting/generate-sorting-buttons"; +import { sortIssuesController } from "../sorting/sort-controller"; + +export type Options = { + ordering: "normal" | "reverse"; +}; + +// checks the cache's integrity, sorts issues, checks Directory/Proposals toggle, renders them and applies avatars +export async function displayNotifications({ + sorting, + options = { ordering: "normal" }, + skipAnimation = false, +}: { + sorting?: Sorting; + options?: { ordering: string }; + skipAnimation?: boolean; +} = {}) { + const notifications = await getNotifications(); + if (notifications === null || notifications.length === 0) { + renderEmpty(); + return; + } + const sortedIssues = sortIssuesController(notifications, sorting, options); + //let sortedAndFiltered = sortedIssues.filter(getProposalsOnlyFilter(isProposalOnlyViewer)); + //sortedAndFiltered = filterIssuesByOrganization(sortedAndFiltered); + await renderNotifications(sortedIssues, skipAnimation); + applyAvatarsToNotifications(); +} diff --git a/src/home/fetch-github/test-all-notifications.ts b/src/home/fetch-github/test-all-notifications.ts new file mode 100644 index 0000000..be1c4d1 --- /dev/null +++ b/src/home/fetch-github/test-all-notifications.ts @@ -0,0 +1,11290 @@ +import { GitHubAggregated } from "../github-types"; + +export const testAllNotifications = [ + { + notification: { + id: "12581666671", + unread: true, + reason: "mention", + updated_at: "2024-12-12T16:58:04Z", + last_read_at: "2024-12-12T16:27:59Z", + subject: { + title: "chore: initialize", + url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/pulls/3", + latest_comment_url: null, + type: "PullRequest", + }, + repository: { + id: 839915839, + node_id: "R_kgDOMhAZPw", + name: "uusd.ubq.fi", + full_name: "ubiquity/uusd.ubq.fi", + private: false, + owner: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity/uusd.ubq.fi", + description: "Ubiquity Dollar user interface", + fork: false, + url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi", + forks_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/forks", + keys_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/teams", + hooks_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/events", + assignees_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/tags", + blobs_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/languages", + stargazers_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/subscription", + commits_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/merges", + archive_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/downloads", + issues_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/deployments", + }, + url: "https://api.github.com/notifications/threads/12581666671", + subscription_url: "https://api.github.com/notifications/threads/12581666671/subscription", + }, + pullRequest: { + url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/pulls/3", + id: 2092561661, + node_id: "PR_kwDOMhAZP858ufT9", + html_url: "https://github.com/ubiquity/uusd.ubq.fi/pull/3", + diff_url: "https://github.com/ubiquity/uusd.ubq.fi/pull/3.diff", + patch_url: "https://github.com/ubiquity/uusd.ubq.fi/pull/3.patch", + issue_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/3", + number: 3, + state: "open", + locked: false, + title: "chore: initialize", + user: { + login: "kingsley-einstein", + id: 35224620, + node_id: "MDQ6VXNlcjM1MjI0NjIw", + avatar_url: "https://avatars.githubusercontent.com/u/35224620?v=4", + gravatar_id: "", + url: "https://api.github.com/users/kingsley-einstein", + html_url: "https://github.com/kingsley-einstein", + followers_url: "https://api.github.com/users/kingsley-einstein/followers", + following_url: "https://api.github.com/users/kingsley-einstein/following{/other_user}", + gists_url: "https://api.github.com/users/kingsley-einstein/gists{/gist_id}", + starred_url: "https://api.github.com/users/kingsley-einstein/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/kingsley-einstein/subscriptions", + organizations_url: "https://api.github.com/users/kingsley-einstein/orgs", + repos_url: "https://api.github.com/users/kingsley-einstein/repos", + events_url: "https://api.github.com/users/kingsley-einstein/events{/privacy}", + received_events_url: "https://api.github.com/users/kingsley-einstein/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + body: "Resolves [#1 ](https://github.com/ubiquity/uusd.ubq.fi/issues/1)\r\n", + created_at: "2024-09-26T01:24:29Z", + updated_at: "2024-12-12T16:58:03Z", + closed_at: null, + merged_at: null, + merge_commit_sha: "9a7402c47a7d50a54e5096a8f3d673c9a9f2b898", + assignee: null, + assignees: [], + requested_reviewers: [ + { + login: "zugdev", + id: 155616000, + node_id: "U_kgDOCUaDAA", + avatar_url: "https://avatars.githubusercontent.com/u/155616000?v=4", + gravatar_id: "", + url: "https://api.github.com/users/zugdev", + html_url: "https://github.com/zugdev", + followers_url: "https://api.github.com/users/zugdev/followers", + following_url: "https://api.github.com/users/zugdev/following{/other_user}", + gists_url: "https://api.github.com/users/zugdev/gists{/gist_id}", + starred_url: "https://api.github.com/users/zugdev/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/zugdev/subscriptions", + organizations_url: "https://api.github.com/users/zugdev/orgs", + repos_url: "https://api.github.com/users/zugdev/repos", + events_url: "https://api.github.com/users/zugdev/events{/privacy}", + received_events_url: "https://api.github.com/users/zugdev/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + requested_teams: [], + labels: [], + milestone: null, + draft: false, + commits_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/pulls/3/commits", + review_comments_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/pulls/3/comments", + review_comment_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/pulls/comments{/number}", + comments_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/3/comments", + statuses_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/statuses/2baee7252a185b49fd3671a9626f3f3bf1eaaaf4", + head: { + label: "kingsley-einstein:development", + ref: "development", + sha: "2baee7252a185b49fd3671a9626f3f3bf1eaaaf4", + user: { + login: "kingsley-einstein", + id: 35224620, + node_id: "MDQ6VXNlcjM1MjI0NjIw", + avatar_url: "https://avatars.githubusercontent.com/u/35224620?v=4", + gravatar_id: "", + url: "https://api.github.com/users/kingsley-einstein", + html_url: "https://github.com/kingsley-einstein", + followers_url: "https://api.github.com/users/kingsley-einstein/followers", + following_url: "https://api.github.com/users/kingsley-einstein/following{/other_user}", + gists_url: "https://api.github.com/users/kingsley-einstein/gists{/gist_id}", + starred_url: "https://api.github.com/users/kingsley-einstein/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/kingsley-einstein/subscriptions", + organizations_url: "https://api.github.com/users/kingsley-einstein/orgs", + repos_url: "https://api.github.com/users/kingsley-einstein/repos", + events_url: "https://api.github.com/users/kingsley-einstein/events{/privacy}", + received_events_url: "https://api.github.com/users/kingsley-einstein/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 863211620, + node_id: "R_kgDOM3OQZA", + name: "uusd.ubq.fi", + full_name: "kingsley-einstein/uusd.ubq.fi", + private: false, + owner: { + login: "kingsley-einstein", + id: 35224620, + node_id: "MDQ6VXNlcjM1MjI0NjIw", + avatar_url: "https://avatars.githubusercontent.com/u/35224620?v=4", + gravatar_id: "", + url: "https://api.github.com/users/kingsley-einstein", + html_url: "https://github.com/kingsley-einstein", + followers_url: "https://api.github.com/users/kingsley-einstein/followers", + following_url: "https://api.github.com/users/kingsley-einstein/following{/other_user}", + gists_url: "https://api.github.com/users/kingsley-einstein/gists{/gist_id}", + starred_url: "https://api.github.com/users/kingsley-einstein/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/kingsley-einstein/subscriptions", + organizations_url: "https://api.github.com/users/kingsley-einstein/orgs", + repos_url: "https://api.github.com/users/kingsley-einstein/repos", + events_url: "https://api.github.com/users/kingsley-einstein/events{/privacy}", + received_events_url: "https://api.github.com/users/kingsley-einstein/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/kingsley-einstein/uusd.ubq.fi", + description: "Ubiquity Dollar user interface", + fork: true, + url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi", + forks_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/forks", + keys_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/teams", + hooks_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/hooks", + issue_events_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/issues/events{/number}", + events_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/events", + assignees_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/assignees{/user}", + branches_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/branches{/branch}", + tags_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/tags", + blobs_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/git/refs{/sha}", + trees_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/statuses/{sha}", + languages_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/languages", + stargazers_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/stargazers", + contributors_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/contributors", + subscribers_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/subscribers", + subscription_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/subscription", + commits_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/commits{/sha}", + git_commits_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/git/commits{/sha}", + comments_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/comments{/number}", + issue_comment_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/issues/comments{/number}", + contents_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/contents/{+path}", + compare_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/merges", + archive_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/downloads", + issues_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/issues{/number}", + pulls_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/pulls{/number}", + milestones_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/milestones{/number}", + notifications_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/labels{/name}", + releases_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/releases{/id}", + deployments_url: "https://api.github.com/repos/kingsley-einstein/uusd.ubq.fi/deployments", + created_at: "2024-09-25T23:04:28Z", + updated_at: "2024-12-12T16:56:11Z", + pushed_at: "2024-12-12T16:56:08Z", + git_url: "git://github.com/kingsley-einstein/uusd.ubq.fi.git", + ssh_url: "git@github.com:kingsley-einstein/uusd.ubq.fi.git", + clone_url: "https://github.com/kingsley-einstein/uusd.ubq.fi.git", + svn_url: "https://github.com/kingsley-einstein/uusd.ubq.fi", + homepage: null, + size: 482, + stargazers_count: 0, + watchers_count: 0, + language: "CSS", + has_issues: false, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 0, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 0, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 0, + open_issues: 0, + watchers: 0, + default_branch: "development", + }, + }, + base: { + label: "ubiquity:development", + ref: "development", + sha: "ca1f489df6b02cee9500b2ed9a0094b2113948ad", + user: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 839915839, + node_id: "R_kgDOMhAZPw", + name: "uusd.ubq.fi", + full_name: "ubiquity/uusd.ubq.fi", + private: false, + owner: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity/uusd.ubq.fi", + description: "Ubiquity Dollar user interface", + fork: false, + url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi", + forks_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/forks", + keys_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/teams", + hooks_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/events", + assignees_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/tags", + blobs_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/languages", + stargazers_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/subscription", + commits_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/merges", + archive_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/downloads", + issues_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/deployments", + created_at: "2024-08-08T15:25:42Z", + updated_at: "2024-10-22T10:35:28Z", + pushed_at: "2024-10-22T10:35:28Z", + git_url: "git://github.com/ubiquity/uusd.ubq.fi.git", + ssh_url: "git@github.com:ubiquity/uusd.ubq.fi.git", + clone_url: "https://github.com/ubiquity/uusd.ubq.fi.git", + svn_url: "https://github.com/ubiquity/uusd.ubq.fi", + homepage: null, + size: 360, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 3, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 6, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 3, + open_issues: 6, + watchers: 0, + default_branch: "development", + }, + }, + _links: { + self: { + href: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/pulls/3", + }, + html: { + href: "https://github.com/ubiquity/uusd.ubq.fi/pull/3", + }, + issue: { + href: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/3", + }, + comments: { + href: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/3/comments", + }, + review_comments: { + href: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/pulls/3/comments", + }, + review_comment: { + href: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/pulls/comments{/number}", + }, + commits: { + href: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/pulls/3/commits", + }, + statuses: { + href: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/statuses/2baee7252a185b49fd3671a9626f3f3bf1eaaaf4", + }, + }, + author_association: "FIRST_TIME_CONTRIBUTOR", + auto_merge: null, + active_lock_reason: null, + merged: false, + mergeable: true, + rebaseable: false, + mergeable_state: "clean", + merged_by: null, + comments: 51, + review_comments: 45, + maintainer_can_modify: true, + commits: 36, + additions: 8413, + deletions: 188, + changed_files: 33, + }, + issue: { + url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/1", + repository_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi", + labels_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/1/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/1/comments", + events_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/1/events", + html_url: "https://github.com/ubiquity/uusd.ubq.fi/issues/1", + id: 2456119009, + node_id: "I_kwDOMhAZP86SZWbh", + number: 1, + title: "Create UI for `UbiquityPool`", + user: { + login: "rndquu", + id: 119500907, + node_id: "U_kgDOBx9waw", + avatar_url: "https://avatars.githubusercontent.com/u/119500907?v=4", + gravatar_id: "", + url: "https://api.github.com/users/rndquu", + html_url: "https://github.com/rndquu", + followers_url: "https://api.github.com/users/rndquu/followers", + following_url: "https://api.github.com/users/rndquu/following{/other_user}", + gists_url: "https://api.github.com/users/rndquu/gists{/gist_id}", + starred_url: "https://api.github.com/users/rndquu/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/rndquu/subscriptions", + organizations_url: "https://api.github.com/users/rndquu/orgs", + repos_url: "https://api.github.com/users/rndquu/repos", + events_url: "https://api.github.com/users/rndquu/events{/privacy}", + received_events_url: "https://api.github.com/users/rndquu/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 7306247565, + node_id: "LA_kwDOMhAZP88AAAABs3x9jQ", + url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/labels/Time:%20%3C1%20Week", + name: "Time: <1 Week", + color: "ededed", + default: false, + description: null, + }, + { + id: 7306247814, + node_id: "LA_kwDOMhAZP88AAAABs3x-hg", + url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/labels/Priority:%204%20(Urgent)", + name: "Priority: 4 (Urgent)", + color: "ededed", + default: false, + description: null, + }, + { + id: 7453409641, + node_id: "LA_kwDOMhAZP88AAAABvEIBaQ", + url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/labels/Price:%202400%20USD", + name: "Price: 2400 USD", + color: "ededed", + default: false, + description: null, + }, + ], + state: "open", + locked: false, + assignee: { + login: "kingsley-einstein", + id: 35224620, + node_id: "MDQ6VXNlcjM1MjI0NjIw", + avatar_url: "https://avatars.githubusercontent.com/u/35224620?v=4", + gravatar_id: "", + url: "https://api.github.com/users/kingsley-einstein", + html_url: "https://github.com/kingsley-einstein", + followers_url: "https://api.github.com/users/kingsley-einstein/followers", + following_url: "https://api.github.com/users/kingsley-einstein/following{/other_user}", + gists_url: "https://api.github.com/users/kingsley-einstein/gists{/gist_id}", + starred_url: "https://api.github.com/users/kingsley-einstein/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/kingsley-einstein/subscriptions", + organizations_url: "https://api.github.com/users/kingsley-einstein/orgs", + repos_url: "https://api.github.com/users/kingsley-einstein/repos", + events_url: "https://api.github.com/users/kingsley-einstein/events{/privacy}", + received_events_url: "https://api.github.com/users/kingsley-einstein/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + assignees: [ + { + login: "kingsley-einstein", + id: 35224620, + node_id: "MDQ6VXNlcjM1MjI0NjIw", + avatar_url: "https://avatars.githubusercontent.com/u/35224620?v=4", + gravatar_id: "", + url: "https://api.github.com/users/kingsley-einstein", + html_url: "https://github.com/kingsley-einstein", + followers_url: "https://api.github.com/users/kingsley-einstein/followers", + following_url: "https://api.github.com/users/kingsley-einstein/following{/other_user}", + gists_url: "https://api.github.com/users/kingsley-einstein/gists{/gist_id}", + starred_url: "https://api.github.com/users/kingsley-einstein/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/kingsley-einstein/subscriptions", + organizations_url: "https://api.github.com/users/kingsley-einstein/orgs", + repos_url: "https://api.github.com/users/kingsley-einstein/repos", + events_url: "https://api.github.com/users/kingsley-einstein/events{/privacy}", + received_events_url: "https://api.github.com/users/kingsley-einstein/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + milestone: null, + comments: 83, + created_at: "2024-08-08T15:41:44Z", + updated_at: "2024-12-08T16:49:22Z", + closed_at: null, + author_association: "MEMBER", + active_lock_reason: null, + body: 'There is the new [UbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/0a230f977ad91bbfb01dd28bc1d2ea77faed5237/packages/contracts/src/dollar/facets/UbiquityPoolFacet.sol) contract (facet) where users can mint and redeem `Dollar` tokens for collateral tokens.\r\n\r\nMinting example:\r\n1. User calls [mintDollar()](https://github.com/ubiquity/ubiquity-dollar/blob/0a230f977ad91bbfb01dd28bc1d2ea77faed5237/packages/contracts/src/dollar/facets/UbiquityPoolFacet.sol#L133) and sends 95 `LUSD` + 5 Governance (`UBQ`) tokens worth 5 USD\r\n2. User gets 100 `Dollar` tokens\r\n\r\nRedeeming example:\r\n1. User calls [redeemDollar()](https://github.com/ubiquity/ubiquity-dollar/blob/0a230f977ad91bbfb01dd28bc1d2ea77faed5237/packages/contracts/src/dollar/facets/UbiquityPoolFacet.sol#L161) and sends 100 `Dollar` tokens\r\n2. User waits for 2 blocks to be mined\r\n3. User calls [collectRedemption()](https://github.com/ubiquity/ubiquity-dollar/blob/0a230f977ad91bbfb01dd28bc1d2ea77faed5237/packages/contracts/src/dollar/facets/UbiquityPoolFacet.sol#L181) and gets 95 `LUSD` + 5 Governance tokens worth 5 USD back\r\n\r\nWe should create a new frontend (using https://github.com/ubiquity/ts-template) for the [UbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/0a230f977ad91bbfb01dd28bc1d2ea77faed5237/packages/contracts/src/dollar/facets/UbiquityPoolFacet.sol) contract and make sure it works with already deployed [mainnet contracts](https://github.com/ubiquity/ubiquity-dollar/blob/0a230f977ad91bbfb01dd28bc1d2ea77faed5237/packages/contracts/broadcast/Deploy001_Diamond_Dollar_Governance.s.sol/1/run-latest.json).\r\n\r\nNotice:\r\n- The old UI may be found at https://uad.ubq.fi/ + its sources [here](https://github.com/ubiquity/ubiquity-dollar/tree/development/packages/dapp)\r\n- Try to use CSS styles from the old UI defined [here](https://github.com/ubiquity/ubiquity-dollar/tree/0a230f977ad91bbfb01dd28bc1d2ea77faed5237/packages/dapp/pages/styles)\r\n- Make sure input validation and error handling are implemented\r\n\r\n\r\nSince the [UbiquityPool](https://github.com/ubiquity/ubiquity-dollar/blob/0a230f977ad91bbfb01dd28bc1d2ea77faed5237/packages/contracts/src/dollar/facets/UbiquityPoolFacet.sol) contract is forked from the [FraxPoolV3](https://github.com/FraxFinance/frax-solidity/blob/967002fc7f2c5ee9e175cabc763a776a8ed03e01/src/hardhat/contracts/Frax/Pools/FraxPoolV3.sol) contract we can take the Frax UI as an example:\r\n- mint page: https://old.app.frax.finance/mint\r\n- redeem page: https://old.app.frax.finance/redeem\r\n\r\nMint:\r\nScreenshot 2023-11-15 at 16 18 53\r\n\r\nRedeem:\r\nScreenshot 2023-11-15 at 16 19 00\r\n', + closed_by: null, + reactions: { + url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/1/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity/uusd.ubq.fi/issues/1/timeline", + performed_via_github_app: null, + state_reason: null, + }, + backlinkCount: 0, + }, + { + notification: { + id: "13742392316", + unread: true, + reason: "author", + updated_at: "2024-12-12T16:57:00Z", + last_read_at: "2024-12-12T15:32:56Z", + subject: { + title: "Non Collaborator Close - Permits Generated", + url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/207", + latest_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/comments/2539503004", + type: "Issue", + }, + repository: { + id: 759346183, + node_id: "R_kgDOLUK0Bw", + name: "text-conversation-rewards", + full_name: "ubiquity-os-marketplace/text-conversation-rewards", + private: false, + owner: { + login: "ubiquity-os-marketplace", + id: 182627615, + node_id: "O_kgDOCuKtHw", + avatar_url: "https://avatars.githubusercontent.com/u/182627615?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os-marketplace", + html_url: "https://github.com/ubiquity-os-marketplace", + followers_url: "https://api.github.com/users/ubiquity-os-marketplace/followers", + following_url: "https://api.github.com/users/ubiquity-os-marketplace/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os-marketplace/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os-marketplace/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os-marketplace/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os-marketplace/orgs", + repos_url: "https://api.github.com/users/ubiquity-os-marketplace/repos", + events_url: "https://api.github.com/users/ubiquity-os-marketplace/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os-marketplace/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os-marketplace/text-conversation-rewards", + description: null, + fork: false, + url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards", + forks_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/forks", + keys_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/events", + assignees_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/merges", + archive_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/deployments", + }, + url: "https://api.github.com/notifications/threads/13742392316", + subscription_url: "https://api.github.com/notifications/threads/13742392316/subscription", + }, + pullRequest: null, + issue: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/207", + repository_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/207/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/207/comments", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/207/events", + html_url: "https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/207", + id: 2724596123, + node_id: "I_kwDOLUK0B86iZgmb", + number: 207, + title: "Non Collaborator Close - Permits Generated", + user: { + login: "0x4007", + id: 4975670, + node_id: "MDQ6VXNlcjQ5NzU2NzA=", + avatar_url: "https://avatars.githubusercontent.com/u/4975670?v=4", + gravatar_id: "", + url: "https://api.github.com/users/0x4007", + html_url: "https://github.com/0x4007", + followers_url: "https://api.github.com/users/0x4007/followers", + following_url: "https://api.github.com/users/0x4007/following{/other_user}", + gists_url: "https://api.github.com/users/0x4007/gists{/gist_id}", + starred_url: "https://api.github.com/users/0x4007/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/0x4007/subscriptions", + organizations_url: "https://api.github.com/users/0x4007/orgs", + repos_url: "https://api.github.com/users/0x4007/repos", + events_url: "https://api.github.com/users/0x4007/events{/privacy}", + received_events_url: "https://api.github.com/users/0x4007/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 6694362633, + node_id: "LA_kwDOLUK0B88AAAABjwPeCQ", + url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C1%20Hour", + name: "Time: <1 Hour", + color: "ededed", + default: false, + description: null, + }, + { + id: 6694362961, + node_id: "LA_kwDOLUK0B88AAAABjwPfUQ", + url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%204%20(Urgent)", + name: "Priority: 4 (Urgent)", + color: "ededed", + default: false, + description: null, + }, + { + id: 6768021882, + node_id: "LA_kwDOLUK0B88AAAABk2fReg", + url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%20100%20USD", + name: "Price: 100 USD", + color: "1f883d", + default: false, + description: null, + }, + ], + state: "closed", + locked: false, + assignee: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + assignees: [ + { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + milestone: null, + comments: 7, + created_at: "2024-12-07T13:31:16Z", + updated_at: "2024-12-12T16:56:40Z", + closed_at: "2024-12-12T16:56:20Z", + author_association: "MEMBER", + active_lock_reason: null, + body: "The config isn't clear how to set this correctly but it needs to be set by default that only collaborators can close issues and they can generate permits. \r\n\r\nhttps://github.com/ubiquity-os-marketplace/text-conversation-rewards/blob/main/manifest.json#L1478-L1489\r\n\r\nhttps://www.github.com/ubiquity/business-development/issues/92#issuecomment-2525078021", + closed_by: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + reactions: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/207/reactions", + total_count: 1, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 1, + }, + timeline_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/207/timeline", + performed_via_github_app: null, + state_reason: "completed", + }, + backlinkCount: 0, + }, + { + notification: { + id: "13756921450", + unread: true, + reason: "mention", + updated_at: "2024-12-12T16:56:39Z", + last_read_at: "2024-12-12T14:44:57Z", + subject: { + title: "fix: contributor generation", + url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/pulls/209", + latest_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/pulls/209", + type: "PullRequest", + }, + repository: { + id: 759346183, + node_id: "R_kgDOLUK0Bw", + name: "text-conversation-rewards", + full_name: "ubiquity-os-marketplace/text-conversation-rewards", + private: false, + owner: { + login: "ubiquity-os-marketplace", + id: 182627615, + node_id: "O_kgDOCuKtHw", + avatar_url: "https://avatars.githubusercontent.com/u/182627615?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os-marketplace", + html_url: "https://github.com/ubiquity-os-marketplace", + followers_url: "https://api.github.com/users/ubiquity-os-marketplace/followers", + following_url: "https://api.github.com/users/ubiquity-os-marketplace/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os-marketplace/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os-marketplace/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os-marketplace/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os-marketplace/orgs", + repos_url: "https://api.github.com/users/ubiquity-os-marketplace/repos", + events_url: "https://api.github.com/users/ubiquity-os-marketplace/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os-marketplace/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os-marketplace/text-conversation-rewards", + description: null, + fork: false, + url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards", + forks_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/forks", + keys_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/events", + assignees_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/merges", + archive_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/deployments", + }, + url: "https://api.github.com/notifications/threads/13756921450", + subscription_url: "https://api.github.com/notifications/threads/13756921450/subscription", + }, + pullRequest: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/pulls/209", + id: 2222614509, + node_id: "PR_kwDOLUK0B86Eemft", + html_url: "https://github.com/ubiquity-os-marketplace/text-conversation-rewards/pull/209", + diff_url: "https://github.com/ubiquity-os-marketplace/text-conversation-rewards/pull/209.diff", + patch_url: "https://github.com/ubiquity-os-marketplace/text-conversation-rewards/pull/209.patch", + issue_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/209", + number: 209, + state: "closed", + locked: false, + title: "fix: contributor generation", + user: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + body: 'Resolves #207\r\nQA: https://github.com/Meniole/text-conversation-rewards/issues/41#issuecomment-2526846068\r\n\r\n\r\n', + created_at: "2024-12-09T04:13:30Z", + updated_at: "2024-12-12T16:56:22Z", + closed_at: "2024-12-12T16:56:19Z", + merged_at: "2024-12-12T16:56:19Z", + merge_commit_sha: "8f5d852493ccf1ab92bd4a983f1e861cf0678650", + assignee: null, + assignees: [], + requested_reviewers: [ + { + login: "whilefoo", + id: 139262667, + node_id: "U_kgDOCEz6yw", + avatar_url: "https://avatars.githubusercontent.com/u/139262667?v=4", + gravatar_id: "", + url: "https://api.github.com/users/whilefoo", + html_url: "https://github.com/whilefoo", + followers_url: "https://api.github.com/users/whilefoo/followers", + following_url: "https://api.github.com/users/whilefoo/following{/other_user}", + gists_url: "https://api.github.com/users/whilefoo/gists{/gist_id}", + starred_url: "https://api.github.com/users/whilefoo/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/whilefoo/subscriptions", + organizations_url: "https://api.github.com/users/whilefoo/orgs", + repos_url: "https://api.github.com/users/whilefoo/repos", + events_url: "https://api.github.com/users/whilefoo/events{/privacy}", + received_events_url: "https://api.github.com/users/whilefoo/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + requested_teams: [], + labels: [], + milestone: null, + draft: false, + commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/pulls/209/commits", + review_comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/pulls/209/comments", + review_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/pulls/comments{/number}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/209/comments", + statuses_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/statuses/60835ec09de61d21f277d103d098d8ce2d4cebe4", + head: { + label: "gentlementlegen:fix/contributor-generation", + ref: "fix/contributor-generation", + sha: "60835ec09de61d21f277d103d098d8ce2d4cebe4", + user: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 772463306, + node_id: "R_kgDOLgrayg", + name: "text-conversation-rewards", + full_name: "gentlementlegen/text-conversation-rewards", + private: false, + owner: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/gentlementlegen/text-conversation-rewards", + description: null, + fork: true, + url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards", + forks_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/forks", + keys_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/teams", + hooks_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/hooks", + issue_events_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/issues/events{/number}", + events_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/events", + assignees_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/assignees{/user}", + branches_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/branches{/branch}", + tags_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/tags", + blobs_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/git/refs{/sha}", + trees_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/statuses/{sha}", + languages_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/languages", + stargazers_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/stargazers", + contributors_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/contributors", + subscribers_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/subscribers", + subscription_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/subscription", + commits_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/commits{/sha}", + git_commits_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/git/commits{/sha}", + comments_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/comments{/number}", + issue_comment_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/issues/comments{/number}", + contents_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/contents/{+path}", + compare_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/merges", + archive_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/downloads", + issues_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/issues{/number}", + pulls_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/pulls{/number}", + milestones_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/milestones{/number}", + notifications_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/labels{/name}", + releases_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/releases{/id}", + deployments_url: "https://api.github.com/repos/gentlementlegen/text-conversation-rewards/deployments", + created_at: "2024-03-15T08:41:16Z", + updated_at: "2024-12-08T20:55:01Z", + pushed_at: "2024-12-12T16:56:22Z", + git_url: "git://github.com/gentlementlegen/text-conversation-rewards.git", + ssh_url: "git@github.com:gentlementlegen/text-conversation-rewards.git", + clone_url: "https://github.com/gentlementlegen/text-conversation-rewards.git", + svn_url: "https://github.com/gentlementlegen/text-conversation-rewards", + homepage: null, + size: 125556, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: false, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 0, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 1, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 0, + open_issues: 1, + watchers: 0, + default_branch: "development", + }, + }, + base: { + label: "ubiquity-os-marketplace:development", + ref: "development", + sha: "5aaeaea819012c45b91291ee067c8f62890610c8", + user: { + login: "ubiquity-os-marketplace", + id: 182627615, + node_id: "O_kgDOCuKtHw", + avatar_url: "https://avatars.githubusercontent.com/u/182627615?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os-marketplace", + html_url: "https://github.com/ubiquity-os-marketplace", + followers_url: "https://api.github.com/users/ubiquity-os-marketplace/followers", + following_url: "https://api.github.com/users/ubiquity-os-marketplace/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os-marketplace/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os-marketplace/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os-marketplace/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os-marketplace/orgs", + repos_url: "https://api.github.com/users/ubiquity-os-marketplace/repos", + events_url: "https://api.github.com/users/ubiquity-os-marketplace/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os-marketplace/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 759346183, + node_id: "R_kgDOLUK0Bw", + name: "text-conversation-rewards", + full_name: "ubiquity-os-marketplace/text-conversation-rewards", + private: false, + owner: { + login: "ubiquity-os-marketplace", + id: 182627615, + node_id: "O_kgDOCuKtHw", + avatar_url: "https://avatars.githubusercontent.com/u/182627615?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os-marketplace", + html_url: "https://github.com/ubiquity-os-marketplace", + followers_url: "https://api.github.com/users/ubiquity-os-marketplace/followers", + following_url: "https://api.github.com/users/ubiquity-os-marketplace/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os-marketplace/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os-marketplace/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os-marketplace/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os-marketplace/orgs", + repos_url: "https://api.github.com/users/ubiquity-os-marketplace/repos", + events_url: "https://api.github.com/users/ubiquity-os-marketplace/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os-marketplace/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os-marketplace/text-conversation-rewards", + description: null, + fork: false, + url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards", + forks_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/forks", + keys_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/events", + assignees_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/merges", + archive_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/deployments", + created_at: "2024-02-18T10:40:07Z", + updated_at: "2024-12-12T16:56:29Z", + pushed_at: "2024-12-12T16:56:19Z", + git_url: "git://github.com/ubiquity-os-marketplace/text-conversation-rewards.git", + ssh_url: "git@github.com:ubiquity-os-marketplace/text-conversation-rewards.git", + clone_url: "https://github.com/ubiquity-os-marketplace/text-conversation-rewards.git", + svn_url: "https://github.com/ubiquity-os-marketplace/text-conversation-rewards", + homepage: null, + size: 100102, + stargazers_count: 1, + watchers_count: 1, + language: "TypeScript", + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 27, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 19, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 27, + open_issues: 19, + watchers: 1, + default_branch: "development", + }, + }, + _links: { + self: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/pulls/209", + }, + html: { + href: "https://github.com/ubiquity-os-marketplace/text-conversation-rewards/pull/209", + }, + issue: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/209", + }, + comments: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/209/comments", + }, + review_comments: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/pulls/209/comments", + }, + review_comment: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/pulls/comments{/number}", + }, + commits: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/pulls/209/commits", + }, + statuses: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/statuses/60835ec09de61d21f277d103d098d8ce2d4cebe4", + }, + }, + author_association: "MEMBER", + auto_merge: null, + active_lock_reason: null, + merged: true, + mergeable: null, + rebaseable: null, + mergeable_state: "unknown", + merged_by: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + comments: 0, + review_comments: 22, + maintainer_can_modify: false, + commits: 22, + additions: 187, + deletions: 76, + changed_files: 21, + }, + issue: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/207", + repository_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/207/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/207/comments", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/207/events", + html_url: "https://github.com/ubiquity-os-marketplace/text-conversation-rewards/issues/207", + id: 2724596123, + node_id: "I_kwDOLUK0B86iZgmb", + number: 207, + title: "Non Collaborator Close - Permits Generated", + user: { + login: "0x4007", + id: 4975670, + node_id: "MDQ6VXNlcjQ5NzU2NzA=", + avatar_url: "https://avatars.githubusercontent.com/u/4975670?v=4", + gravatar_id: "", + url: "https://api.github.com/users/0x4007", + html_url: "https://github.com/0x4007", + followers_url: "https://api.github.com/users/0x4007/followers", + following_url: "https://api.github.com/users/0x4007/following{/other_user}", + gists_url: "https://api.github.com/users/0x4007/gists{/gist_id}", + starred_url: "https://api.github.com/users/0x4007/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/0x4007/subscriptions", + organizations_url: "https://api.github.com/users/0x4007/orgs", + repos_url: "https://api.github.com/users/0x4007/repos", + events_url: "https://api.github.com/users/0x4007/events{/privacy}", + received_events_url: "https://api.github.com/users/0x4007/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 6694362633, + node_id: "LA_kwDOLUK0B88AAAABjwPeCQ", + url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Time:%20%3C1%20Hour", + name: "Time: <1 Hour", + color: "ededed", + default: false, + description: null, + }, + { + id: 6694362961, + node_id: "LA_kwDOLUK0B88AAAABjwPfUQ", + url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Priority:%204%20(Urgent)", + name: "Priority: 4 (Urgent)", + color: "ededed", + default: false, + description: null, + }, + { + id: 6768021882, + node_id: "LA_kwDOLUK0B88AAAABk2fReg", + url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/labels/Price:%20100%20USD", + name: "Price: 100 USD", + color: "1f883d", + default: false, + description: null, + }, + ], + state: "closed", + locked: false, + assignee: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + assignees: [ + { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + milestone: null, + comments: 7, + created_at: "2024-12-07T13:31:16Z", + updated_at: "2024-12-12T16:56:40Z", + closed_at: "2024-12-12T16:56:20Z", + author_association: "MEMBER", + active_lock_reason: null, + body: "The config isn't clear how to set this correctly but it needs to be set by default that only collaborators can close issues and they can generate permits. \r\n\r\nhttps://github.com/ubiquity-os-marketplace/text-conversation-rewards/blob/main/manifest.json#L1478-L1489\r\n\r\nhttps://www.github.com/ubiquity/business-development/issues/92#issuecomment-2525078021", + closed_by: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + reactions: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/207/reactions", + total_count: 1, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 1, + }, + timeline_url: "https://api.github.com/repos/ubiquity-os-marketplace/text-conversation-rewards/issues/207/timeline", + performed_via_github_app: null, + state_reason: "completed", + }, + backlinkCount: 0, + }, + { + notification: { + id: "13689655151", + unread: true, + reason: "mention", + updated_at: "2024-12-12T07:21:40Z", + last_read_at: "2024-12-12T06:31:30Z", + subject: { + title: "December 2024 Fixes", + url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/28", + latest_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/comments/2538002676", + type: "Issue", + }, + repository: { + id: 819379068, + node_id: "R_kgDOMNa7fA", + name: "command-wallet", + full_name: "ubiquity-os-marketplace/command-wallet", + private: false, + owner: { + login: "ubiquity-os-marketplace", + id: 182627615, + node_id: "O_kgDOCuKtHw", + avatar_url: "https://avatars.githubusercontent.com/u/182627615?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os-marketplace", + html_url: "https://github.com/ubiquity-os-marketplace", + followers_url: "https://api.github.com/users/ubiquity-os-marketplace/followers", + following_url: "https://api.github.com/users/ubiquity-os-marketplace/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os-marketplace/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os-marketplace/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os-marketplace/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os-marketplace/orgs", + repos_url: "https://api.github.com/users/ubiquity-os-marketplace/repos", + events_url: "https://api.github.com/users/ubiquity-os-marketplace/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os-marketplace/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os-marketplace/command-wallet", + description: "Commands related to wallet update and query.", + fork: false, + url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet", + forks_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/forks", + keys_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/events", + assignees_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/merges", + archive_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/deployments", + }, + url: "https://api.github.com/notifications/threads/13689655151", + subscription_url: "https://api.github.com/notifications/threads/13689655151/subscription", + }, + pullRequest: null, + issue: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/28", + repository_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/28/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/28/comments", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/28/events", + html_url: "https://github.com/ubiquity-os-marketplace/command-wallet/issues/28", + id: 2717415239, + node_id: "I_kwDOMNa7fM6h-HdH", + number: 28, + title: "December 2024 Fixes", + user: { + login: "0x4007", + id: 4975670, + node_id: "MDQ6VXNlcjQ5NzU2NzA=", + avatar_url: "https://avatars.githubusercontent.com/u/4975670?v=4", + gravatar_id: "", + url: "https://api.github.com/users/0x4007", + html_url: "https://github.com/0x4007", + followers_url: "https://api.github.com/users/0x4007/followers", + following_url: "https://api.github.com/users/0x4007/following{/other_user}", + gists_url: "https://api.github.com/users/0x4007/gists{/gist_id}", + starred_url: "https://api.github.com/users/0x4007/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/0x4007/subscriptions", + organizations_url: "https://api.github.com/users/0x4007/orgs", + repos_url: "https://api.github.com/users/0x4007/repos", + events_url: "https://api.github.com/users/0x4007/events{/privacy}", + received_events_url: "https://api.github.com/users/0x4007/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 7272080630, + node_id: "LA_kwDOMNa7fM8AAAABsXMk9g", + url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/labels/Time:%20%3C1%20Hour", + name: "Time: <1 Hour", + color: "ededed", + default: false, + description: null, + }, + { + id: 7272081139, + node_id: "LA_kwDOMNa7fM8AAAABsXMm8w", + url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/labels/Priority:%204%20(Urgent)", + name: "Priority: 4 (Urgent)", + color: "ededed", + default: false, + description: null, + }, + { + id: 7836136136, + node_id: "LA_kwDOMNa7fM8AAAAB0xHyyA", + url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/labels/Price:%20100%20USD", + name: "Price: 100 USD", + color: "1f883d", + default: false, + description: null, + }, + ], + state: "closed", + locked: false, + assignee: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + assignees: [ + { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + milestone: null, + comments: 15, + created_at: "2024-12-04T11:24:39Z", + updated_at: "2024-12-12T07:21:20Z", + closed_at: "2024-12-12T06:10:25Z", + author_association: "MEMBER", + active_lock_reason: null, + body: 'Registration failures makes the system unusable. \r\n\r\n# Unnecessary Error\r\n\r\nThe previous error above it is sufficient this one should not display to the user. \r\n\r\n```diff\r\n! Error: Error: No wallet address found\r\n```\r\n\r\n\r\n\r\n_Originally posted by @ubiquity-os[bot] in https://github.com/ubiquity/business-development/issues/85#issuecomment-2516869446_\r\n\r\n# Registration Failure\r\n \r\n```diff\r\n! Error: [object Object]\r\n```\r\n\r\n\r\n\r\n_Originally posted by @ubiquity-os[bot] in https://github.com/ubiquity/business-development/issues/85#issuecomment-2516896879_\r\n ', + closed_by: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + reactions: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/28/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/28/timeline", + performed_via_github_app: null, + state_reason: "completed", + }, + backlinkCount: 0, + }, + { + notification: { + id: "13724518021", + unread: true, + reason: "mention", + updated_at: "2024-12-12T06:10:45Z", + last_read_at: "2024-12-11T11:00:30Z", + subject: { + title: "fix: error messages", + url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/pulls/29", + latest_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/pulls/29", + type: "PullRequest", + }, + repository: { + id: 819379068, + node_id: "R_kgDOMNa7fA", + name: "command-wallet", + full_name: "ubiquity-os-marketplace/command-wallet", + private: false, + owner: { + login: "ubiquity-os-marketplace", + id: 182627615, + node_id: "O_kgDOCuKtHw", + avatar_url: "https://avatars.githubusercontent.com/u/182627615?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os-marketplace", + html_url: "https://github.com/ubiquity-os-marketplace", + followers_url: "https://api.github.com/users/ubiquity-os-marketplace/followers", + following_url: "https://api.github.com/users/ubiquity-os-marketplace/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os-marketplace/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os-marketplace/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os-marketplace/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os-marketplace/orgs", + repos_url: "https://api.github.com/users/ubiquity-os-marketplace/repos", + events_url: "https://api.github.com/users/ubiquity-os-marketplace/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os-marketplace/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os-marketplace/command-wallet", + description: "Commands related to wallet update and query.", + fork: false, + url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet", + forks_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/forks", + keys_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/events", + assignees_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/merges", + archive_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/deployments", + }, + url: "https://api.github.com/notifications/threads/13724518021", + subscription_url: "https://api.github.com/notifications/threads/13724518021/subscription", + }, + pullRequest: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/pulls/29", + id: 2219355486, + node_id: "PR_kwDOMNa7fM6ESK1e", + html_url: "https://github.com/ubiquity-os-marketplace/command-wallet/pull/29", + diff_url: "https://github.com/ubiquity-os-marketplace/command-wallet/pull/29.diff", + patch_url: "https://github.com/ubiquity-os-marketplace/command-wallet/pull/29.patch", + issue_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/29", + number: 29, + state: "closed", + locked: false, + title: "fix: error messages", + user: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + body: 'Resolves #28\n\n\n', + created_at: "2024-12-06T07:27:43Z", + updated_at: "2024-12-12T06:10:27Z", + closed_at: "2024-12-12T06:10:25Z", + merged_at: "2024-12-12T06:10:24Z", + merge_commit_sha: "bfd38c31a30df6f62e6b49c33069fa40b42a87ab", + assignee: null, + assignees: [], + requested_reviewers: [], + requested_teams: [], + labels: [], + milestone: null, + draft: false, + commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/pulls/29/commits", + review_comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/pulls/29/comments", + review_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/pulls/comments{/number}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/29/comments", + statuses_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/statuses/099ee70668b981392cd5cf6de7935cb89f8e26d8", + head: { + label: "gentlementlegen:fix/error-messages", + ref: "fix/error-messages", + sha: "099ee70668b981392cd5cf6de7935cb89f8e26d8", + user: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 819380318, + node_id: "R_kgDOMNbAXg", + name: "command-wallet", + full_name: "gentlementlegen/command-wallet", + private: false, + owner: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/gentlementlegen/command-wallet", + description: "Commands related to wallet update and query.", + fork: true, + url: "https://api.github.com/repos/gentlementlegen/command-wallet", + forks_url: "https://api.github.com/repos/gentlementlegen/command-wallet/forks", + keys_url: "https://api.github.com/repos/gentlementlegen/command-wallet/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/gentlementlegen/command-wallet/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/gentlementlegen/command-wallet/teams", + hooks_url: "https://api.github.com/repos/gentlementlegen/command-wallet/hooks", + issue_events_url: "https://api.github.com/repos/gentlementlegen/command-wallet/issues/events{/number}", + events_url: "https://api.github.com/repos/gentlementlegen/command-wallet/events", + assignees_url: "https://api.github.com/repos/gentlementlegen/command-wallet/assignees{/user}", + branches_url: "https://api.github.com/repos/gentlementlegen/command-wallet/branches{/branch}", + tags_url: "https://api.github.com/repos/gentlementlegen/command-wallet/tags", + blobs_url: "https://api.github.com/repos/gentlementlegen/command-wallet/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/gentlementlegen/command-wallet/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/gentlementlegen/command-wallet/git/refs{/sha}", + trees_url: "https://api.github.com/repos/gentlementlegen/command-wallet/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/gentlementlegen/command-wallet/statuses/{sha}", + languages_url: "https://api.github.com/repos/gentlementlegen/command-wallet/languages", + stargazers_url: "https://api.github.com/repos/gentlementlegen/command-wallet/stargazers", + contributors_url: "https://api.github.com/repos/gentlementlegen/command-wallet/contributors", + subscribers_url: "https://api.github.com/repos/gentlementlegen/command-wallet/subscribers", + subscription_url: "https://api.github.com/repos/gentlementlegen/command-wallet/subscription", + commits_url: "https://api.github.com/repos/gentlementlegen/command-wallet/commits{/sha}", + git_commits_url: "https://api.github.com/repos/gentlementlegen/command-wallet/git/commits{/sha}", + comments_url: "https://api.github.com/repos/gentlementlegen/command-wallet/comments{/number}", + issue_comment_url: "https://api.github.com/repos/gentlementlegen/command-wallet/issues/comments{/number}", + contents_url: "https://api.github.com/repos/gentlementlegen/command-wallet/contents/{+path}", + compare_url: "https://api.github.com/repos/gentlementlegen/command-wallet/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/gentlementlegen/command-wallet/merges", + archive_url: "https://api.github.com/repos/gentlementlegen/command-wallet/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/gentlementlegen/command-wallet/downloads", + issues_url: "https://api.github.com/repos/gentlementlegen/command-wallet/issues{/number}", + pulls_url: "https://api.github.com/repos/gentlementlegen/command-wallet/pulls{/number}", + milestones_url: "https://api.github.com/repos/gentlementlegen/command-wallet/milestones{/number}", + notifications_url: "https://api.github.com/repos/gentlementlegen/command-wallet/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/gentlementlegen/command-wallet/labels{/name}", + releases_url: "https://api.github.com/repos/gentlementlegen/command-wallet/releases{/id}", + deployments_url: "https://api.github.com/repos/gentlementlegen/command-wallet/deployments", + created_at: "2024-06-24T11:44:37Z", + updated_at: "2024-12-08T11:15:17Z", + pushed_at: "2024-12-12T06:10:27Z", + git_url: "git://github.com/gentlementlegen/command-wallet.git", + ssh_url: "git@github.com:gentlementlegen/command-wallet.git", + clone_url: "https://github.com/gentlementlegen/command-wallet.git", + svn_url: "https://github.com/gentlementlegen/command-wallet", + homepage: null, + size: 729, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: false, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 0, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 0, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 0, + open_issues: 0, + watchers: 0, + default_branch: "development", + }, + }, + base: { + label: "ubiquity-os-marketplace:development", + ref: "development", + sha: "85c3c0c5194bbf2519621ac7744d56b93871f4fc", + user: { + login: "ubiquity-os-marketplace", + id: 182627615, + node_id: "O_kgDOCuKtHw", + avatar_url: "https://avatars.githubusercontent.com/u/182627615?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os-marketplace", + html_url: "https://github.com/ubiquity-os-marketplace", + followers_url: "https://api.github.com/users/ubiquity-os-marketplace/followers", + following_url: "https://api.github.com/users/ubiquity-os-marketplace/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os-marketplace/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os-marketplace/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os-marketplace/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os-marketplace/orgs", + repos_url: "https://api.github.com/users/ubiquity-os-marketplace/repos", + events_url: "https://api.github.com/users/ubiquity-os-marketplace/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os-marketplace/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 819379068, + node_id: "R_kgDOMNa7fA", + name: "command-wallet", + full_name: "ubiquity-os-marketplace/command-wallet", + private: false, + owner: { + login: "ubiquity-os-marketplace", + id: 182627615, + node_id: "O_kgDOCuKtHw", + avatar_url: "https://avatars.githubusercontent.com/u/182627615?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os-marketplace", + html_url: "https://github.com/ubiquity-os-marketplace", + followers_url: "https://api.github.com/users/ubiquity-os-marketplace/followers", + following_url: "https://api.github.com/users/ubiquity-os-marketplace/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os-marketplace/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os-marketplace/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os-marketplace/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os-marketplace/orgs", + repos_url: "https://api.github.com/users/ubiquity-os-marketplace/repos", + events_url: "https://api.github.com/users/ubiquity-os-marketplace/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os-marketplace/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os-marketplace/command-wallet", + description: "Commands related to wallet update and query.", + fork: false, + url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet", + forks_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/forks", + keys_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/events", + assignees_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/merges", + archive_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/deployments", + created_at: "2024-06-24T11:41:26Z", + updated_at: "2024-12-12T06:10:33Z", + pushed_at: "2024-12-12T06:10:24Z", + git_url: "git://github.com/ubiquity-os-marketplace/command-wallet.git", + ssh_url: "git@github.com:ubiquity-os-marketplace/command-wallet.git", + clone_url: "https://github.com/ubiquity-os-marketplace/command-wallet.git", + svn_url: "https://github.com/ubiquity-os-marketplace/command-wallet", + homepage: null, + size: 3979, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 9, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 3, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 9, + open_issues: 3, + watchers: 0, + default_branch: "development", + }, + }, + _links: { + self: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/pulls/29", + }, + html: { + href: "https://github.com/ubiquity-os-marketplace/command-wallet/pull/29", + }, + issue: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/29", + }, + comments: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/29/comments", + }, + review_comments: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/pulls/29/comments", + }, + review_comment: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/pulls/comments{/number}", + }, + commits: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/pulls/29/commits", + }, + statuses: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/statuses/099ee70668b981392cd5cf6de7935cb89f8e26d8", + }, + }, + author_association: "MEMBER", + auto_merge: null, + active_lock_reason: null, + merged: true, + mergeable: null, + rebaseable: null, + mergeable_state: "unknown", + merged_by: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + comments: 5, + review_comments: 23, + maintainer_can_modify: false, + commits: 38, + additions: 171, + deletions: 148, + changed_files: 17, + }, + issue: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/28", + repository_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/28/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/28/comments", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/28/events", + html_url: "https://github.com/ubiquity-os-marketplace/command-wallet/issues/28", + id: 2717415239, + node_id: "I_kwDOMNa7fM6h-HdH", + number: 28, + title: "December 2024 Fixes", + user: { + login: "0x4007", + id: 4975670, + node_id: "MDQ6VXNlcjQ5NzU2NzA=", + avatar_url: "https://avatars.githubusercontent.com/u/4975670?v=4", + gravatar_id: "", + url: "https://api.github.com/users/0x4007", + html_url: "https://github.com/0x4007", + followers_url: "https://api.github.com/users/0x4007/followers", + following_url: "https://api.github.com/users/0x4007/following{/other_user}", + gists_url: "https://api.github.com/users/0x4007/gists{/gist_id}", + starred_url: "https://api.github.com/users/0x4007/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/0x4007/subscriptions", + organizations_url: "https://api.github.com/users/0x4007/orgs", + repos_url: "https://api.github.com/users/0x4007/repos", + events_url: "https://api.github.com/users/0x4007/events{/privacy}", + received_events_url: "https://api.github.com/users/0x4007/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 7272080630, + node_id: "LA_kwDOMNa7fM8AAAABsXMk9g", + url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/labels/Time:%20%3C1%20Hour", + name: "Time: <1 Hour", + color: "ededed", + default: false, + description: null, + }, + { + id: 7272081139, + node_id: "LA_kwDOMNa7fM8AAAABsXMm8w", + url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/labels/Priority:%204%20(Urgent)", + name: "Priority: 4 (Urgent)", + color: "ededed", + default: false, + description: null, + }, + { + id: 7836136136, + node_id: "LA_kwDOMNa7fM8AAAAB0xHyyA", + url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/labels/Price:%20100%20USD", + name: "Price: 100 USD", + color: "1f883d", + default: false, + description: null, + }, + ], + state: "closed", + locked: false, + assignee: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + assignees: [ + { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + milestone: null, + comments: 15, + created_at: "2024-12-04T11:24:39Z", + updated_at: "2024-12-12T07:21:20Z", + closed_at: "2024-12-12T06:10:25Z", + author_association: "MEMBER", + active_lock_reason: null, + body: 'Registration failures makes the system unusable. \r\n\r\n# Unnecessary Error\r\n\r\nThe previous error above it is sufficient this one should not display to the user. \r\n\r\n```diff\r\n! Error: Error: No wallet address found\r\n```\r\n\r\n\r\n\r\n_Originally posted by @ubiquity-os[bot] in https://github.com/ubiquity/business-development/issues/85#issuecomment-2516869446_\r\n\r\n# Registration Failure\r\n \r\n```diff\r\n! Error: [object Object]\r\n```\r\n\r\n\r\n\r\n_Originally posted by @ubiquity-os[bot] in https://github.com/ubiquity/business-development/issues/85#issuecomment-2516896879_\r\n ', + closed_by: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + reactions: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/28/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity-os-marketplace/command-wallet/issues/28/timeline", + performed_via_github_app: null, + state_reason: "completed", + }, + backlinkCount: 0, + }, + { + notification: { + id: "12570544202", + unread: true, + reason: "mention", + updated_at: "2024-12-16T19:41:31Z", + last_read_at: "2024-12-10T21:25:24Z", + subject: { + title: 'Generalized "GitHub Webhook + Contributor Role -> Rewards" No Config v1', + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/46", + latest_comment_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/comments/2536957181", + type: "Issue", + }, + repository: { + id: 771565340, + node_id: "R_kgDOLf0nHA", + name: "plugins-wishlist", + full_name: "ubiquity-os/plugins-wishlist", + private: false, + owner: { + login: "ubiquity-os", + id: 160213852, + node_id: "O_kgDOCYyrXA", + avatar_url: "https://avatars.githubusercontent.com/u/160213852?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os", + html_url: "https://github.com/ubiquity-os", + followers_url: "https://api.github.com/users/ubiquity-os/followers", + following_url: "https://api.github.com/users/ubiquity-os/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os/orgs", + repos_url: "https://api.github.com/users/ubiquity-os/repos", + events_url: "https://api.github.com/users/ubiquity-os/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os/plugins-wishlist", + description: null, + fork: false, + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist", + forks_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/forks", + keys_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/events", + assignees_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/merges", + archive_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/deployments", + }, + url: "https://api.github.com/notifications/threads/12570544202", + subscription_url: "https://api.github.com/notifications/threads/12570544202/subscription", + }, + pullRequest: null, + issue: { + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/46", + repository_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist", + labels_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/46/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/46/comments", + events_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/46/events", + html_url: "https://github.com/ubiquity-os/plugins-wishlist/issues/46", + id: 2547975008, + node_id: "I_kwDOLf0nHM6X3wNg", + number: 46, + title: 'Generalized "GitHub Webhook + Contributor Role -> Rewards" No Config v1', + user: { + login: "0x4007", + id: 4975670, + node_id: "MDQ6VXNlcjQ5NzU2NzA=", + avatar_url: "https://avatars.githubusercontent.com/u/4975670?v=4", + gravatar_id: "", + url: "https://api.github.com/users/0x4007", + html_url: "https://github.com/0x4007", + followers_url: "https://api.github.com/users/0x4007/followers", + following_url: "https://api.github.com/users/0x4007/following{/other_user}", + gists_url: "https://api.github.com/users/0x4007/gists{/gist_id}", + starred_url: "https://api.github.com/users/0x4007/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/0x4007/subscriptions", + organizations_url: "https://api.github.com/users/0x4007/orgs", + repos_url: "https://api.github.com/users/0x4007/repos", + events_url: "https://api.github.com/users/0x4007/events{/privacy}", + received_events_url: "https://api.github.com/users/0x4007/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 6922609449, + node_id: "LA_kwDOLf0nHM8AAAABnJ6jKQ", + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Day", + name: "Time: <1 Day", + color: "ededed", + default: false, + description: null, + }, + { + id: 6922609630, + node_id: "LA_kwDOLf0nHM8AAAABnJ6j3g", + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%204%20(Urgent)", + name: "Priority: 4 (Urgent)", + color: "ededed", + default: false, + description: null, + }, + { + id: 6949518978, + node_id: "LA_kwDOLf0nHM8AAAABnjk-gg", + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20800%20USD", + name: "Price: 800 USD", + color: "1f883d", + default: false, + description: null, + }, + ], + state: "open", + locked: false, + assignee: { + login: "kingsley-einstein", + id: 35224620, + node_id: "MDQ6VXNlcjM1MjI0NjIw", + avatar_url: "https://avatars.githubusercontent.com/u/35224620?v=4", + gravatar_id: "", + url: "https://api.github.com/users/kingsley-einstein", + html_url: "https://github.com/kingsley-einstein", + followers_url: "https://api.github.com/users/kingsley-einstein/followers", + following_url: "https://api.github.com/users/kingsley-einstein/following{/other_user}", + gists_url: "https://api.github.com/users/kingsley-einstein/gists{/gist_id}", + starred_url: "https://api.github.com/users/kingsley-einstein/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/kingsley-einstein/subscriptions", + organizations_url: "https://api.github.com/users/kingsley-einstein/orgs", + repos_url: "https://api.github.com/users/kingsley-einstein/repos", + events_url: "https://api.github.com/users/kingsley-einstein/events{/privacy}", + received_events_url: "https://api.github.com/users/kingsley-einstein/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + assignees: [ + { + login: "kingsley-einstein", + id: 35224620, + node_id: "MDQ6VXNlcjM1MjI0NjIw", + avatar_url: "https://avatars.githubusercontent.com/u/35224620?v=4", + gravatar_id: "", + url: "https://api.github.com/users/kingsley-einstein", + html_url: "https://github.com/kingsley-einstein", + followers_url: "https://api.github.com/users/kingsley-einstein/followers", + following_url: "https://api.github.com/users/kingsley-einstein/following{/other_user}", + gists_url: "https://api.github.com/users/kingsley-einstein/gists{/gist_id}", + starred_url: "https://api.github.com/users/kingsley-einstein/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/kingsley-einstein/subscriptions", + organizations_url: "https://api.github.com/users/kingsley-einstein/orgs", + repos_url: "https://api.github.com/users/kingsley-einstein/repos", + events_url: "https://api.github.com/users/kingsley-einstein/events{/privacy}", + received_events_url: "https://api.github.com/users/kingsley-einstein/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + milestone: null, + comments: 65, + created_at: "2024-09-25T13:17:20Z", + updated_at: "2024-12-11T19:41:11Z", + closed_at: null, + author_association: "MEMBER", + active_lock_reason: null, + body: 'Dynamically map the config property name to count the amount of matching webhook events that occur in the issue/pull timeline, and credit accordingly. In which case, this plugin seems generally useful for mapping any value to any event, in the context of an issue or pull! \r\n\r\nAll this is intended to do is:\r\n1. get the timeline of events from the issue and the linked pulls\r\n2. assign a value of `1` to every event that is counted, per contributor.\r\n3. return sum totals. \r\n\r\nIn the next iteration, we should identify the user\'s "class" (specification author, assignee, collaborator, contributor)\r\n\r\nIn the final iteration, we should enable config. \r\n\r\n- All [webhook events](https://github.com/octokit/webhooks.js/blob/main/src/generated/webhook-names.ts) reference.', + closed_by: null, + reactions: { + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/46/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/46/timeline", + performed_via_github_app: null, + state_reason: null, + }, + backlinkCount: 0, + }, + { + notification: { + id: "13612394339", + unread: true, + reason: "mention", + updated_at: "2024-12-14T15:57:08Z", + last_read_at: "2024-12-10T22:54:18Z", + subject: { + title: "Reviewer Incentives", + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/60", + latest_comment_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/comments/2536392743", + type: "Issue", + }, + repository: { + id: 771565340, + node_id: "R_kgDOLf0nHA", + name: "plugins-wishlist", + full_name: "ubiquity-os/plugins-wishlist", + private: false, + owner: { + login: "ubiquity-os", + id: 160213852, + node_id: "O_kgDOCYyrXA", + avatar_url: "https://avatars.githubusercontent.com/u/160213852?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os", + html_url: "https://github.com/ubiquity-os", + followers_url: "https://api.github.com/users/ubiquity-os/followers", + following_url: "https://api.github.com/users/ubiquity-os/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os/orgs", + repos_url: "https://api.github.com/users/ubiquity-os/repos", + events_url: "https://api.github.com/users/ubiquity-os/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os/plugins-wishlist", + description: null, + fork: false, + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist", + forks_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/forks", + keys_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/events", + assignees_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/merges", + archive_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/deployments", + }, + url: "https://api.github.com/notifications/threads/13612394339", + subscription_url: "https://api.github.com/notifications/threads/13612394339/subscription", + }, + pullRequest: null, + issue: { + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/60", + repository_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist", + labels_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/60/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/60/comments", + events_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/60/events", + html_url: "https://github.com/ubiquity-os/plugins-wishlist/issues/60", + id: 2704561536, + node_id: "I_kwDOLf0nHM6hNFWA", + number: 60, + title: "Reviewer Incentives", + user: { + login: "0x4007", + id: 4975670, + node_id: "MDQ6VXNlcjQ5NzU2NzA=", + avatar_url: "https://avatars.githubusercontent.com/u/4975670?v=4", + gravatar_id: "", + url: "https://api.github.com/users/0x4007", + html_url: "https://github.com/0x4007", + followers_url: "https://api.github.com/users/0x4007/followers", + following_url: "https://api.github.com/users/0x4007/following{/other_user}", + gists_url: "https://api.github.com/users/0x4007/gists{/gist_id}", + starred_url: "https://api.github.com/users/0x4007/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/0x4007/subscriptions", + organizations_url: "https://api.github.com/users/0x4007/orgs", + repos_url: "https://api.github.com/users/0x4007/repos", + events_url: "https://api.github.com/users/0x4007/events{/privacy}", + received_events_url: "https://api.github.com/users/0x4007/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 6922609484, + node_id: "LA_kwDOLf0nHM8AAAABnJ6jTA", + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C1%20Week", + name: "Time: <1 Week", + color: "ededed", + default: false, + description: null, + }, + { + id: 6922609630, + node_id: "LA_kwDOLf0nHM8AAAABnJ6j3g", + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%204%20(Urgent)", + name: "Priority: 4 (Urgent)", + color: "ededed", + default: false, + description: null, + }, + { + id: 7098664682, + node_id: "LA_kwDOLf0nHM8AAAABpx0G6g", + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%201600%20USD", + name: "Price: 1600 USD", + color: "1f883d", + default: false, + description: null, + }, + ], + state: "open", + locked: false, + assignee: { + login: "surafeldev", + id: 163689088, + node_id: "U_kgDOCcGygA", + avatar_url: "https://avatars.githubusercontent.com/u/163689088?v=4", + gravatar_id: "", + url: "https://api.github.com/users/surafeldev", + html_url: "https://github.com/surafeldev", + followers_url: "https://api.github.com/users/surafeldev/followers", + following_url: "https://api.github.com/users/surafeldev/following{/other_user}", + gists_url: "https://api.github.com/users/surafeldev/gists{/gist_id}", + starred_url: "https://api.github.com/users/surafeldev/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/surafeldev/subscriptions", + organizations_url: "https://api.github.com/users/surafeldev/orgs", + repos_url: "https://api.github.com/users/surafeldev/repos", + events_url: "https://api.github.com/users/surafeldev/events{/privacy}", + received_events_url: "https://api.github.com/users/surafeldev/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + assignees: [ + { + login: "surafeldev", + id: 163689088, + node_id: "U_kgDOCcGygA", + avatar_url: "https://avatars.githubusercontent.com/u/163689088?v=4", + gravatar_id: "", + url: "https://api.github.com/users/surafeldev", + html_url: "https://github.com/surafeldev", + followers_url: "https://api.github.com/users/surafeldev/followers", + following_url: "https://api.github.com/users/surafeldev/following{/other_user}", + gists_url: "https://api.github.com/users/surafeldev/gists{/gist_id}", + starred_url: "https://api.github.com/users/surafeldev/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/surafeldev/subscriptions", + organizations_url: "https://api.github.com/users/surafeldev/orgs", + repos_url: "https://api.github.com/users/surafeldev/repos", + events_url: "https://api.github.com/users/surafeldev/events{/privacy}", + received_events_url: "https://api.github.com/users/surafeldev/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + milestone: null, + comments: 43, + created_at: "2024-11-29T09:40:58Z", + updated_at: "2024-12-11T15:56:48Z", + closed_at: null, + author_association: "MEMBER", + active_lock_reason: null, + body: "Reviews always seem to be slower than new pulls being submitted. Perhaps with better incentive design we can speed up this operational problem. \r\n\r\nMy original spec was dense but provides a lot of context on the problem. I asked Claude to rewrite it to be more clear, but in case you want more context, [please scroll to the bottom](https://github.com/ubiquity-os/plugins-wishlist/issues/60#issuecomment-2507469146). \r\n\r\nJump to [this comment](https://github.com/ubiquity-os/plugins-wishlist/issues/60#issuecomment-2507501720) to see final output amounts from a large pull. \r\n\r\n# Claude Rewrite\r\n\r\n## Base Calculation\r\n```typescript\r\ninterface ReviewReward {\r\n baseRate: number; // $1 per 100 lines\r\n conclusiveReviewCredit: number; // $25 flat rate\r\n excludedFiles: string[]; // Files marked with linguist-generated\r\n}\r\n\r\nfunction calculateReviewReward(linesChanged: number): number {\r\n return linesChanged / 100;\r\n}\r\n```\r\n\r\n## Core Components\r\n\r\n### 1. Minimum Review Credit\r\n- **Amount**: $25 (`conclusiveReviewCredit`)\r\n- **Conditions**:\r\n - One-time payment per pull request\r\n - Requires conclusive review (approval or request changes)\r\n - Comments-only reviews do not qualify\r\n\r\n### 2. Line Change Calculation\r\n- **Formula**: `(additions + deletions - generated_files) / 100`\r\n- **Example**:\r\n```typescript\r\nfunction calculateNetLines(diff: {\r\n additions: number;\r\n deletions: number;\r\n generatedFiles: number;\r\n}): number {\r\n return (diff.additions + diff.deletions - diff.generatedFiles) / 100;\r\n}\r\n```\r\n\r\n### 3. Multiple Review Handling\r\n- Track line changes between review points\r\n- Only credit newly reviewed lines\r\n- Use commit hashes as review checkpoints\r\n\r\n## Example Scenarios\r\n\r\n### Single Complete Review\r\n```typescript\r\nconst example1 = {\r\n additions: 8406,\r\n deletions: 189,\r\n generatedFiles: 697,\r\n isConclusive: true\r\n};\r\n\r\nconst reward = calculateNetLines(example1) + (example1.isConclusive ? 25 : 0);\r\n// $78.98 + $25 = $103.98\r\n```\r\n\r\n### Incremental Reviews\r\n```typescript\r\ninterface IncrementalReview {\r\n startCommit: string;\r\n endCommit: string;\r\n additions: number;\r\n deletions: number;\r\n generatedFiles: number;\r\n}\r\n\r\nfunction calculateIncrementalReward(reviews: IncrementalReview[]): number {\r\n return reviews.reduce((total, review) => \r\n total + calculateNetLines(review), 0);\r\n}\r\n```\r\n\r\n## Implementation Notes\r\n\r\n1. **File Exclusions**\r\n - Use `.gitattributes` with `linguist-generated`\r\n - Common exclusions:\r\n - `yarn.lock`\r\n - Generated documentation\r\n - Build artifacts\r\n\r\n2. **Diff Comparison**\r\n - Recommendation: Use three-dot diff (`...`)\r\n - Rationale: More accurate representation of changes specific to PR\r\n\r\n3. **Review Tracking**\r\n - Store commit hashes as checkpoints\r\n - Calculate incremental diffs between reviews\r\n - Track review conclusiveness status\r\n\r\n", + closed_by: null, + reactions: { + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/60/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/60/timeline", + performed_via_github_app: null, + state_reason: null, + }, + backlinkCount: 0, + }, + { + notification: { + id: "12640710789", + unread: true, + reason: "author", + updated_at: "2024-12-12T16:48:31Z", + last_read_at: "2024-12-12T16:23:49Z", + subject: { + title: "Personal Agent", + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/3", + latest_comment_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/comments/2539480458", + type: "Issue", + }, + repository: { + id: 771565340, + node_id: "R_kgDOLf0nHA", + name: "plugins-wishlist", + full_name: "ubiquity-os/plugins-wishlist", + private: false, + owner: { + login: "ubiquity-os", + id: 160213852, + node_id: "O_kgDOCYyrXA", + avatar_url: "https://avatars.githubusercontent.com/u/160213852?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os", + html_url: "https://github.com/ubiquity-os", + followers_url: "https://api.github.com/users/ubiquity-os/followers", + following_url: "https://api.github.com/users/ubiquity-os/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os/orgs", + repos_url: "https://api.github.com/users/ubiquity-os/repos", + events_url: "https://api.github.com/users/ubiquity-os/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os/plugins-wishlist", + description: null, + fork: false, + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist", + forks_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/forks", + keys_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/events", + assignees_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/merges", + archive_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/deployments", + }, + url: "https://api.github.com/notifications/threads/12640710789", + subscription_url: "https://api.github.com/notifications/threads/12640710789/subscription", + }, + pullRequest: null, + issue: { + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/3", + repository_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist", + labels_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/3/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/3/comments", + events_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/3/events", + html_url: "https://github.com/ubiquity-os/plugins-wishlist/issues/3", + id: 2208105478, + node_id: "I_kwDOLf0nHM6DnQQG", + number: 3, + title: "Personal Agent", + user: { + login: "0x4007", + id: 4975670, + node_id: "MDQ6VXNlcjQ5NzU2NzA=", + avatar_url: "https://avatars.githubusercontent.com/u/4975670?v=4", + gravatar_id: "", + url: "https://api.github.com/users/0x4007", + html_url: "https://github.com/0x4007", + followers_url: "https://api.github.com/users/0x4007/followers", + following_url: "https://api.github.com/users/0x4007/following{/other_user}", + gists_url: "https://api.github.com/users/0x4007/gists{/gist_id}", + starred_url: "https://api.github.com/users/0x4007/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/0x4007/subscriptions", + organizations_url: "https://api.github.com/users/0x4007/orgs", + repos_url: "https://api.github.com/users/0x4007/repos", + events_url: "https://api.github.com/users/0x4007/events{/privacy}", + received_events_url: "https://api.github.com/users/0x4007/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 6922609365, + node_id: "LA_kwDOLf0nHM8AAAABnJ6i1Q", + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Time:%20%3C2%20Hours", + name: "Time: <2 Hours", + color: "ededed", + default: false, + description: null, + }, + { + id: 6922609603, + node_id: "LA_kwDOLf0nHM8AAAABnJ6jww", + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Priority:%203%20(High)", + name: "Priority: 3 (High)", + color: "ededed", + default: false, + description: null, + }, + { + id: 6970035825, + node_id: "LA_kwDOLf0nHM8AAAABn3JOcQ", + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels/Price:%20150%20USD", + name: "Price: 150 USD", + color: "1f883d", + default: false, + description: null, + }, + ], + state: "open", + locked: false, + assignee: { + login: "EresDev", + id: 11886219, + node_id: "MDQ6VXNlcjExODg2MjE5", + avatar_url: "https://avatars.githubusercontent.com/u/11886219?v=4", + gravatar_id: "", + url: "https://api.github.com/users/EresDev", + html_url: "https://github.com/EresDev", + followers_url: "https://api.github.com/users/EresDev/followers", + following_url: "https://api.github.com/users/EresDev/following{/other_user}", + gists_url: "https://api.github.com/users/EresDev/gists{/gist_id}", + starred_url: "https://api.github.com/users/EresDev/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/EresDev/subscriptions", + organizations_url: "https://api.github.com/users/EresDev/orgs", + repos_url: "https://api.github.com/users/EresDev/repos", + events_url: "https://api.github.com/users/EresDev/events{/privacy}", + received_events_url: "https://api.github.com/users/EresDev/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + assignees: [ + { + login: "EresDev", + id: 11886219, + node_id: "MDQ6VXNlcjExODg2MjE5", + avatar_url: "https://avatars.githubusercontent.com/u/11886219?v=4", + gravatar_id: "", + url: "https://api.github.com/users/EresDev", + html_url: "https://github.com/EresDev", + followers_url: "https://api.github.com/users/EresDev/followers", + following_url: "https://api.github.com/users/EresDev/following{/other_user}", + gists_url: "https://api.github.com/users/EresDev/gists{/gist_id}", + starred_url: "https://api.github.com/users/EresDev/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/EresDev/subscriptions", + organizations_url: "https://api.github.com/users/EresDev/orgs", + repos_url: "https://api.github.com/users/EresDev/repos", + events_url: "https://api.github.com/users/EresDev/events{/privacy}", + received_events_url: "https://api.github.com/users/EresDev/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + milestone: null, + comments: 23, + created_at: "2024-03-26T12:24:26Z", + updated_at: "2024-12-12T16:48:11Z", + closed_at: null, + author_association: "MEMBER", + active_lock_reason: null, + body: '# Task\r\n\r\n- This will be registered under `issues_comment.created`\r\n- This will look for username tags at the beginning of any comment, and relay everything to their self hosted plugin. \r\n- The rest of the magic happens within their own self hosted plugin so this should be a super simple plugin to build.\r\n\r\n### Config\r\n\r\nThe host repository name. For example:\r\n\r\n```yml\r\nplugins:\r\n - uses:\r\n - plugin: ubiquity-os-marketplace/ubiquity-os-agent\r\n with:\r\n target: ubiquity-os-agent\r\n```\r\n\r\nThen comments starting with `@0x4007` will relay the full `issues_comment.created` payload to `0x4007/ubiquity-os-agent`\r\n\r\n# Context\r\n\r\nThis one I\'m very excited about. The vision here is that we can make custom user "agents" (i.e. plugins with LLMs) that are hosted by the user\'s GitHub (so they can modify it) and will automate actions for the user (with their PAT to authorize as them) with the full context of a particular repository/organization. \r\n\r\n- We make a repository that power users are intended to fork, for example `@ubiquibot/personal-agent` -> `@pavlovcik/personal-agent`\r\n- A repository/organization configures personal agents command to be `/@` `/@pavlovcik` maybe something like that. This should also support arguments, for example a sentence that can be parsed by an LLM `/@pavlovcik review my pull #123`\r\n - This technically would allow other users to invoke other user\'s agents. We can easily see if the invoker is an "authorized" user by checking the event context, and hard coding authorized users (self) in the boilerplate plugin code. \r\n - I wonder if it would be more useful if we just look for comments that start with a username tag instead, it might be more natural to set up automations for common questions/requests i.e. `@pavlovcik can i work on this issue?` then my agent, with my PAT, and my custom prompt saying what to do in this situation, would just automatically assign them and explain the `/start` command.\r\n- The kernel will invoke a request (and pass all parameters) to that user\'s plugin/agent (hosted at `@username/personal-agent` actions)\r\n- The user can grant access to their PAT from their agent, allowing the agent to act on behalf of the owner inheriting their permissions. \r\n\r\nThere are some ways we can make the template code which will be forked:\r\n1. simple starting point would be just template/boilerplate that doesn\'t do anything\r\n2. code makes a call to an LLM (we could even run a small model locally on the GitHub Action runner potentially in order to make dealing with credentials/API keys more hands off, at the tradeoff of it being dumber than ChatGPT etc but decentralization/free is cool)\r\n 1. this LLM has a big prompt in the template that explains the context (you\'re running in a github action runner and a user invoked you from this repo...) and its capabilities (we can provide some local functions from our SDK that it can invoke to perform specific tasks by using an authenticated octokit instance using the person\'s PAT. It also receives all of the context of the event invocation (which user called the function, what repository and organization is it coming in from? possibly even scraping all the linked issues and pull requests for more context)\r\n 2. If we can reliably get the LLM to write working code with Octokit (or just raw CURLs with the PAT) then we can have a context aware and english language input to any function a user can perform on GitHub (limited to the PAT permissions) which is quite interesting. \r\n 3. The user can "fine-tune" their LLM by adding extra details and preferences to their prompt in their forked code. I imagine that I would continue to add new sections as I see repetitive questions/queries.\r\n\r\n---\r\n\r\nAssuming that the org config enables support for personal agents, technically we can extend personal agent capabilities beyond GitHub. Generic telegram example: `@pavlovcik send me the credentials on Telegram @username` with the right code in my personal agent, the GitHub Action can send information to their Telegram. All invoked from the GitHub Action runner!\r\n\r\nThis could make plugin development a lot more exciting and rapid. If the team all works on their own agents, and tests them in production, we could extract useful bits from eachothers\' and release "official" plugins which may normally have slower r&d cycles. \r\n\r\nIn the further future, our kernel can support webhooks coming in from other services (like Telegram) and invoke user agents which can be a very powerful architecture for platform composability. For example, a bot call (can be "inline" in a dm to someone as well) that will pass along the conversation context to our kernel, then to a user\'s personal agent (github action) back to kernel and then back to Telegram\r\n\r\n### Notes for @pavlovcik/personal-agent\r\n\r\n- I want to make use of the XP system (as an admin) to soft incentivize/disincentivize behaviors. \r\n - Prompt follow ups: there are situations where I tag team members for input and they take days to reply. I think if they take longer than 24 hours to reply, I would want to dock XP, and include an automated follow up (perhaps even on Telegram dm!) High performing team members generally reply promptly. XP can be used as a heartbeat for how actively engaged the contributor is, and how well they are performing, which is important for performance evaluations regarding base pay. \r\n - On the other end of the spectrum: unnecessary tags[^1^]. If I make it clear to team members that I am around to help but more for emergencies, I would appreciate not being pinged on things unless its essential. Would be interesting to make a personal agent that will automatically reply (like an away message) explaining this, while also scrubbing out the tag from their message. Assuming it is during my awake/working hours, I would still receive a push notification on my device from the original tag. \r\n\r\n## Planned Capabilities\r\n\r\n### Comment rewrites:\r\n\r\nFrom my phone sometimes writing comments can be arduous with the custom vocabulary we use and the autocorrect. A simple agent that will save me from a lot of frustration is to edit my comments posted, and correct any typos when I post from my phone. \r\n\r\n### Review and follow up:\r\n\r\nSometimes a pull request will be 99% of the way there. It will be something like "just make sure CI passes" or "fix merge conflicts" \r\n\r\nIdeally the personal agent should monitor pulls that I approved and are still opened. If I said something like this, and if those conditions are met, it should merge the pull. \r\n\r\n- Example: https://github.com/ubiquity-os/plugin-template/pull/23#issuecomment-2391416311\r\n\r\n[^1^]: Although it is not clear to me how we can capture the event from this. I suppose I would need to manually add in the org/repo config for `issue_comment.created`.\r\n\r\n###### Similar [^01^]\r\n\r\n[^01^]: [2025 Plugins Wishlist](https://www.github.com/ubiquity-os/plugins-wishlist/issues/52) 84%\r\n[^02^]: [New Task Or Edit Pull Arbiter](https://www.github.com/ubiquity-os/plugins-wishlist/issues/53) 82%', + closed_by: null, + reactions: { + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/3/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/3/timeline", + performed_via_github_app: null, + state_reason: null, + }, + backlinkCount: 0, + }, + { + notification: { + id: "13788528031", + unread: true, + reason: "review_requested", + updated_at: "2024-12-12T16:41:16Z", + last_read_at: "2024-12-12T16:24:21Z", + subject: { + title: "PR: offer new fallback intl mastercard SKU 18732", + url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/pulls/362", + latest_comment_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/pulls/362", + type: "PullRequest", + }, + repository: { + id: 601950536, + node_id: "R_kgDOI-EJSA", + name: "pay.ubq.fi", + full_name: "ubiquity/pay.ubq.fi", + private: false, + owner: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity/pay.ubq.fi", + description: "Generate and claim spender permits (EIP-2612)", + fork: false, + url: "https://api.github.com/repos/ubiquity/pay.ubq.fi", + forks_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/forks", + keys_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/teams", + hooks_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/events", + assignees_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/tags", + blobs_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/languages", + stargazers_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/subscription", + commits_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/merges", + archive_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/downloads", + issues_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/deployments", + }, + url: "https://api.github.com/notifications/threads/13788528031", + subscription_url: "https://api.github.com/notifications/threads/13788528031/subscription", + }, + pullRequest: { + url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/pulls/362", + id: 2227048859, + node_id: "PR_kwDOI-EJSM6EvhGb", + html_url: "https://github.com/ubiquity/pay.ubq.fi/pull/362", + diff_url: "https://github.com/ubiquity/pay.ubq.fi/pull/362.diff", + patch_url: "https://github.com/ubiquity/pay.ubq.fi/pull/362.patch", + issue_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/362", + number: 362, + state: "open", + locked: false, + title: "PR: offer new fallback intl mastercard SKU 18732", + user: { + login: "EresDev", + id: 11886219, + node_id: "MDQ6VXNlcjExODg2MjE5", + avatar_url: "https://avatars.githubusercontent.com/u/11886219?v=4", + gravatar_id: "", + url: "https://api.github.com/users/EresDev", + html_url: "https://github.com/EresDev", + followers_url: "https://api.github.com/users/EresDev/followers", + following_url: "https://api.github.com/users/EresDev/following{/other_user}", + gists_url: "https://api.github.com/users/EresDev/gists{/gist_id}", + starred_url: "https://api.github.com/users/EresDev/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/EresDev/subscriptions", + organizations_url: "https://api.github.com/users/EresDev/orgs", + repos_url: "https://api.github.com/users/EresDev/repos", + events_url: "https://api.github.com/users/EresDev/events{/privacy}", + received_events_url: "https://api.github.com/users/EresDev/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + body: 'Resolves #349\r\n\r\nOther than the addition of the new mastercard 18732, it has following improvements.\r\n- Added some trusted and reliable RPCs back as a backup for backend if RPC handler crashes. It goes crazy sometimes. e.g. couldn\'t resolve DNS of an rpcs and crashes the whole process \r\n- show product SKU on UI with the card, will be helpful for troubleshooting if there is a problem. \r\n\r\n## How to test?\r\n\r\nThe easiest way to test is to merge this, generate a real permit for at least 6.12UUSD,, and open the permit and mint card from the location that you want to test. \r\n\r\nA more controlled way is: \r\n- fill .env vars\r\n- fill wrangler.toml with production keys of Reloadly\r\n- yarn build && yarn start\r\n- if you want the permit amount to go to your wallet for testing instead of the treasury, change the treasury address at /shared/constants.ts\r\n\r\nNOTE: All orders with production API keys of Reloadly will deduct the real balance from Reloadly. \r\n\r\n### QA\r\n\r\nhttps://github.com/user-attachments/assets/7a2c9e0c-428c-4889-b3c5-7c70d2af01f6\r\n\r\n\r\n#### /ubiquity-dollar Location: South Korea\r\n\r\n![Screenshot_20241213_010128](https://github.com/user-attachments/assets/58658322-4cc4-4dd7-ada7-9e64a2e87ff0)\r\n\r\n\r\n#### /ubiquity-dollar Location: Germany\r\n\r\n![Screenshot_20241212_165301](https://github.com/user-attachments/assets/ae0d6cd8-e722-4fe4-80fb-a7256788fbdc)\r\n\r\n\r\n\r\n', + created_at: "2024-12-10T17:52:42Z", + updated_at: "2024-12-12T16:40:56Z", + closed_at: null, + merged_at: null, + merge_commit_sha: "748157ecf31f9691cb502591620c7845a5b3ec2f", + assignee: null, + assignees: [], + requested_reviewers: [ + { + login: "0x4007", + id: 4975670, + node_id: "MDQ6VXNlcjQ5NzU2NzA=", + avatar_url: "https://avatars.githubusercontent.com/u/4975670?v=4", + gravatar_id: "", + url: "https://api.github.com/users/0x4007", + html_url: "https://github.com/0x4007", + followers_url: "https://api.github.com/users/0x4007/followers", + following_url: "https://api.github.com/users/0x4007/following{/other_user}", + gists_url: "https://api.github.com/users/0x4007/gists{/gist_id}", + starred_url: "https://api.github.com/users/0x4007/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/0x4007/subscriptions", + organizations_url: "https://api.github.com/users/0x4007/orgs", + repos_url: "https://api.github.com/users/0x4007/repos", + events_url: "https://api.github.com/users/0x4007/events{/privacy}", + received_events_url: "https://api.github.com/users/0x4007/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + { + login: "Keyrxng", + id: 106303466, + node_id: "U_kgDOBlYP6g", + avatar_url: "https://avatars.githubusercontent.com/u/106303466?v=4", + gravatar_id: "", + url: "https://api.github.com/users/Keyrxng", + html_url: "https://github.com/Keyrxng", + followers_url: "https://api.github.com/users/Keyrxng/followers", + following_url: "https://api.github.com/users/Keyrxng/following{/other_user}", + gists_url: "https://api.github.com/users/Keyrxng/gists{/gist_id}", + starred_url: "https://api.github.com/users/Keyrxng/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/Keyrxng/subscriptions", + organizations_url: "https://api.github.com/users/Keyrxng/orgs", + repos_url: "https://api.github.com/users/Keyrxng/repos", + events_url: "https://api.github.com/users/Keyrxng/events{/privacy}", + received_events_url: "https://api.github.com/users/Keyrxng/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + { + login: "rndquu", + id: 119500907, + node_id: "U_kgDOBx9waw", + avatar_url: "https://avatars.githubusercontent.com/u/119500907?v=4", + gravatar_id: "", + url: "https://api.github.com/users/rndquu", + html_url: "https://github.com/rndquu", + followers_url: "https://api.github.com/users/rndquu/followers", + following_url: "https://api.github.com/users/rndquu/following{/other_user}", + gists_url: "https://api.github.com/users/rndquu/gists{/gist_id}", + starred_url: "https://api.github.com/users/rndquu/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/rndquu/subscriptions", + organizations_url: "https://api.github.com/users/rndquu/orgs", + repos_url: "https://api.github.com/users/rndquu/repos", + events_url: "https://api.github.com/users/rndquu/events{/privacy}", + received_events_url: "https://api.github.com/users/rndquu/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + requested_teams: [], + labels: [], + milestone: null, + draft: false, + commits_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/pulls/362/commits", + review_comments_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/pulls/362/comments", + review_comment_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/pulls/comments{/number}", + comments_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/362/comments", + statuses_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/statuses/9ea4642b08f128ee53474ff022a7a8803b93e5cb", + head: { + label: "EresDevOrg:development", + ref: "development", + sha: "9ea4642b08f128ee53474ff022a7a8803b93e5cb", + user: { + login: "EresDevOrg", + id: 163504456, + node_id: "O_kgDOCb7hSA", + avatar_url: "https://avatars.githubusercontent.com/u/163504456?v=4", + gravatar_id: "", + url: "https://api.github.com/users/EresDevOrg", + html_url: "https://github.com/EresDevOrg", + followers_url: "https://api.github.com/users/EresDevOrg/followers", + following_url: "https://api.github.com/users/EresDevOrg/following{/other_user}", + gists_url: "https://api.github.com/users/EresDevOrg/gists{/gist_id}", + starred_url: "https://api.github.com/users/EresDevOrg/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/EresDevOrg/subscriptions", + organizations_url: "https://api.github.com/users/EresDevOrg/orgs", + repos_url: "https://api.github.com/users/EresDevOrg/repos", + events_url: "https://api.github.com/users/EresDevOrg/events{/privacy}", + received_events_url: "https://api.github.com/users/EresDevOrg/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 798981438, + node_id: "R_kgDOL599Pg", + name: "pay.ubq.fi", + full_name: "EresDevOrg/pay.ubq.fi", + private: false, + owner: { + login: "EresDevOrg", + id: 163504456, + node_id: "O_kgDOCb7hSA", + avatar_url: "https://avatars.githubusercontent.com/u/163504456?v=4", + gravatar_id: "", + url: "https://api.github.com/users/EresDevOrg", + html_url: "https://github.com/EresDevOrg", + followers_url: "https://api.github.com/users/EresDevOrg/followers", + following_url: "https://api.github.com/users/EresDevOrg/following{/other_user}", + gists_url: "https://api.github.com/users/EresDevOrg/gists{/gist_id}", + starred_url: "https://api.github.com/users/EresDevOrg/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/EresDevOrg/subscriptions", + organizations_url: "https://api.github.com/users/EresDevOrg/orgs", + repos_url: "https://api.github.com/users/EresDevOrg/repos", + events_url: "https://api.github.com/users/EresDevOrg/events{/privacy}", + received_events_url: "https://api.github.com/users/EresDevOrg/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/EresDevOrg/pay.ubq.fi", + description: "Generate and claim spender permits (EIP-2612)", + fork: true, + url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi", + forks_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/forks", + keys_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/teams", + hooks_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/hooks", + issue_events_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/issues/events{/number}", + events_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/events", + assignees_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/assignees{/user}", + branches_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/branches{/branch}", + tags_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/tags", + blobs_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/git/refs{/sha}", + trees_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/statuses/{sha}", + languages_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/languages", + stargazers_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/stargazers", + contributors_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/contributors", + subscribers_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/subscribers", + subscription_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/subscription", + commits_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/commits{/sha}", + git_commits_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/git/commits{/sha}", + comments_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/comments{/number}", + issue_comment_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/issues/comments{/number}", + contents_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/contents/{+path}", + compare_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/merges", + archive_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/downloads", + issues_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/issues{/number}", + pulls_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/pulls{/number}", + milestones_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/milestones{/number}", + notifications_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/labels{/name}", + releases_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/releases{/id}", + deployments_url: "https://api.github.com/repos/EresDevOrg/pay.ubq.fi/deployments", + created_at: "2024-05-10T22:05:40Z", + updated_at: "2024-12-12T16:16:57Z", + pushed_at: "2024-12-12T16:16:53Z", + git_url: "git://github.com/EresDevOrg/pay.ubq.fi.git", + ssh_url: "git@github.com:EresDevOrg/pay.ubq.fi.git", + clone_url: "https://github.com/EresDevOrg/pay.ubq.fi.git", + svn_url: "https://github.com/EresDevOrg/pay.ubq.fi", + homepage: "https://pay.ubq.fi", + size: 9461, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: false, + has_projects: true, + has_downloads: true, + has_wiki: false, + has_pages: false, + has_discussions: false, + forks_count: 0, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 0, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 0, + open_issues: 0, + watchers: 0, + default_branch: "development", + }, + }, + base: { + label: "ubiquity:development", + ref: "development", + sha: "6bb53d9abba3f6caf09dd67cdf191169419ff5b5", + user: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 601950536, + node_id: "R_kgDOI-EJSA", + name: "pay.ubq.fi", + full_name: "ubiquity/pay.ubq.fi", + private: false, + owner: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity/pay.ubq.fi", + description: "Generate and claim spender permits (EIP-2612)", + fork: false, + url: "https://api.github.com/repos/ubiquity/pay.ubq.fi", + forks_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/forks", + keys_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/teams", + hooks_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/events", + assignees_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/tags", + blobs_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/languages", + stargazers_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/subscription", + commits_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/merges", + archive_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/downloads", + issues_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/deployments", + created_at: "2023-02-15T07:09:46Z", + updated_at: "2024-12-09T13:03:05Z", + pushed_at: "2024-12-09T13:03:01Z", + git_url: "git://github.com/ubiquity/pay.ubq.fi.git", + ssh_url: "git@github.com:ubiquity/pay.ubq.fi.git", + clone_url: "https://github.com/ubiquity/pay.ubq.fi.git", + svn_url: "https://github.com/ubiquity/pay.ubq.fi", + homepage: "https://pay.ubq.fi", + size: 9429, + stargazers_count: 10, + watchers_count: 10, + language: "TypeScript", + has_issues: true, + has_projects: false, + has_downloads: true, + has_wiki: false, + has_pages: false, + has_discussions: true, + forks_count: 42, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 18, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 42, + open_issues: 18, + watchers: 10, + default_branch: "development", + }, + }, + _links: { + self: { + href: "https://api.github.com/repos/ubiquity/pay.ubq.fi/pulls/362", + }, + html: { + href: "https://github.com/ubiquity/pay.ubq.fi/pull/362", + }, + issue: { + href: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/362", + }, + comments: { + href: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/362/comments", + }, + review_comments: { + href: "https://api.github.com/repos/ubiquity/pay.ubq.fi/pulls/362/comments", + }, + review_comment: { + href: "https://api.github.com/repos/ubiquity/pay.ubq.fi/pulls/comments{/number}", + }, + commits: { + href: "https://api.github.com/repos/ubiquity/pay.ubq.fi/pulls/362/commits", + }, + statuses: { + href: "https://api.github.com/repos/ubiquity/pay.ubq.fi/statuses/9ea4642b08f128ee53474ff022a7a8803b93e5cb", + }, + }, + author_association: "MEMBER", + auto_merge: null, + active_lock_reason: null, + merged: false, + mergeable: true, + rebaseable: true, + mergeable_state: "clean", + merged_by: null, + comments: 2, + review_comments: 0, + maintainer_can_modify: false, + commits: 15, + additions: 261, + deletions: 103, + changed_files: 20, + }, + issue: { + url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/349", + repository_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi", + labels_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/349/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/349/comments", + events_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/349/events", + html_url: "https://github.com/ubiquity/pay.ubq.fi/issues/349", + id: 2608795435, + node_id: "I_kwDOI-EJSM6bfw8r", + number: 349, + title: "Add support for gift card with SKU 18732", + user: { + login: "rndquu", + id: 119500907, + node_id: "U_kgDOBx9waw", + avatar_url: "https://avatars.githubusercontent.com/u/119500907?v=4", + gravatar_id: "", + url: "https://api.github.com/users/rndquu", + html_url: "https://github.com/rndquu", + followers_url: "https://api.github.com/users/rndquu/followers", + following_url: "https://api.github.com/users/rndquu/following{/other_user}", + gists_url: "https://api.github.com/users/rndquu/gists{/gist_id}", + starred_url: "https://api.github.com/users/rndquu/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/rndquu/subscriptions", + organizations_url: "https://api.github.com/users/rndquu/orgs", + repos_url: "https://api.github.com/users/rndquu/repos", + events_url: "https://api.github.com/users/rndquu/events{/privacy}", + received_events_url: "https://api.github.com/users/rndquu/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 5347112118, + node_id: "LA_kwDOI-EJSM8AAAABPrZ0tg", + url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Priority:%203%20(High)", + name: "Priority: 3 (High)", + color: "ededed", + default: false, + description: "", + }, + { + id: 5831150872, + node_id: "LA_kwDOI-EJSM8AAAABW5BNGA", + url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Time:%20%3C2%20Hours", + name: "Time: <2 Hours", + color: "ededed", + default: false, + description: null, + }, + { + id: 6508028441, + node_id: "LA_kwDOI-EJSM8AAAABg-iiGQ", + url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Price:%20150%20USD", + name: "Price: 150 USD", + color: "1f883d", + default: false, + description: null, + }, + ], + state: "open", + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 17, + created_at: "2024-10-23T14:20:13Z", + updated_at: "2024-12-11T08:59:43Z", + closed_at: null, + author_association: "MEMBER", + active_lock_reason: null, + body: "We have the feature of minting gift cards for crypto rewards which works this way:\r\n1. `pay.ubq.fi` checks contributor's country\r\n2. If contributor's country is in the [MC allow list 3052024.xlsx](https://github.com/user-attachments/files/16492174/MC.allow.list.3052024.xlsx) then offer gift card with SKU 18597\r\n3. Otherwise try to find the best card SKU from [MasterCard International.xlsx](https://github.com/user-attachments/files/16492175/MasterCard.International.xlsx)\r\n\r\nReloadly has recently added a new tokenized card SKU:\r\n```\r\nWe have a new sku that may be of interest to you: \r\n\r\nSKU: 18732\r\nName: Mastercard Prepaid USD Debit (Virtual only) US\r\n5 - 1000 USD\r\n\r\nProduct Description:\r\nYour Virtual Promotional Prepaid Mastercard can be used online, for phone/mail orders, or in stores that accept mobile wallet where Debit Mastercard is accepted. This card must be used within 6 months from the time you receive your link. Please Note: A 2% currency conversion fee will apply if the merchant settles in a currency other than USD\r\n\r\nThis card works in 130 Countries\r\n```\r\n\r\n[SKU_ 18732 - Countries covered (5).xlsx](https://github.com/user-attachments/files/17493171/SKU_.18732.-.Countries.covered.5.xlsx)\r\n\r\nIt makes sense to support a new SKU 18732 this way:\r\n1. `pay.ubq.fi` checks contributor's country\r\n2. If contributor's country is in the [MC allow list 3052024.xlsx](https://github.com/user-attachments/files/16492174/MC.allow.list.3052024.xlsx) then offer gift card with SKU 18597\r\n3. If contributor's country is in the [SKU_ 18732 - Countries covered (5).xlsx](https://github.com/user-attachments/files/17493171/SKU_.18732.-.Countries.covered.5.xlsx) the offer gift card with SKU 18732\r\n4. Otherwise try to find the best card SKU from [MasterCard International.xlsx](https://github.com/user-attachments/files/16492175/MasterCard.International.xlsx)\r\n\r\nSo as a part of this issue we should make sure that SKU 18732 is supported in these pages:\r\n- https://github.com/ubiquity/pay.ubq.fi/blob/9b88dd6ffe04a13650d51a055441696a13047be9/static/index.html (redeem gift card)\r\n- https://github.com/ubiquity/pay.ubq.fi/blob/9b88dd6ffe04a13650d51a055441696a13047be9/static/ubiquity-dollar.html (mint gift card for UUSD)\r\n\r\nRelated [comment](https://github.com/ubiquity/pay.ubq.fi/issues/259#issuecomment-2268350042).", + closed_by: null, + reactions: { + url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/349/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/349/timeline", + performed_via_github_app: null, + state_reason: null, + }, + backlinkCount: 0, + }, + { + notification: { + id: "13690617414", + unread: true, + reason: "review_requested", + updated_at: "2024-12-12T16:28:34Z", + last_read_at: "2024-12-12T15:28:37Z", + subject: { + title: "Features/create ubiquity os user manual", + url: "https://api.github.com/repos/ubiquity/business-development/pulls/94", + latest_comment_url: "https://api.github.com/repos/ubiquity/business-development/issues/comments/2539433622", + type: "PullRequest", + }, + repository: { + id: 619433796, + node_id: "R_kgDOJOvPRA", + name: "business-development", + full_name: "ubiquity/business-development", + private: false, + owner: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity/business-development", + description: "Ubiquity growth, covering: partnerships, events, fundraising, and user acquisition.", + fork: false, + url: "https://api.github.com/repos/ubiquity/business-development", + forks_url: "https://api.github.com/repos/ubiquity/business-development/forks", + keys_url: "https://api.github.com/repos/ubiquity/business-development/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity/business-development/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity/business-development/teams", + hooks_url: "https://api.github.com/repos/ubiquity/business-development/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity/business-development/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity/business-development/events", + assignees_url: "https://api.github.com/repos/ubiquity/business-development/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity/business-development/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity/business-development/tags", + blobs_url: "https://api.github.com/repos/ubiquity/business-development/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity/business-development/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity/business-development/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity/business-development/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity/business-development/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity/business-development/languages", + stargazers_url: "https://api.github.com/repos/ubiquity/business-development/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity/business-development/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity/business-development/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity/business-development/subscription", + commits_url: "https://api.github.com/repos/ubiquity/business-development/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity/business-development/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity/business-development/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity/business-development/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity/business-development/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity/business-development/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity/business-development/merges", + archive_url: "https://api.github.com/repos/ubiquity/business-development/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity/business-development/downloads", + issues_url: "https://api.github.com/repos/ubiquity/business-development/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity/business-development/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity/business-development/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity/business-development/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity/business-development/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity/business-development/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity/business-development/deployments", + }, + url: "https://api.github.com/notifications/threads/13690617414", + subscription_url: "https://api.github.com/notifications/threads/13690617414/subscription", + }, + pullRequest: { + url: "https://api.github.com/repos/ubiquity/business-development/pulls/94", + id: 2215122199, + node_id: "PR_kwDOJOvPRM6ECBUX", + html_url: "https://github.com/ubiquity/business-development/pull/94", + diff_url: "https://github.com/ubiquity/business-development/pull/94.diff", + patch_url: "https://github.com/ubiquity/business-development/pull/94.patch", + issue_url: "https://api.github.com/repos/ubiquity/business-development/issues/94", + number: 94, + state: "open", + locked: false, + title: "Features/create ubiquity os user manual", + user: { + login: "sura1-0-1", + id: 177723425, + node_id: "U_kgDOCpfYIQ", + avatar_url: "https://avatars.githubusercontent.com/u/177723425?v=4", + gravatar_id: "", + url: "https://api.github.com/users/sura1-0-1", + html_url: "https://github.com/sura1-0-1", + followers_url: "https://api.github.com/users/sura1-0-1/followers", + following_url: "https://api.github.com/users/sura1-0-1/following{/other_user}", + gists_url: "https://api.github.com/users/sura1-0-1/gists{/gist_id}", + starred_url: "https://api.github.com/users/sura1-0-1/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/sura1-0-1/subscriptions", + organizations_url: "https://api.github.com/users/sura1-0-1/orgs", + repos_url: "https://api.github.com/users/sura1-0-1/repos", + events_url: "https://api.github.com/users/sura1-0-1/events{/privacy}", + received_events_url: "https://api.github.com/users/sura1-0-1/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + body: "Resolves #85 \r\n", + created_at: "2024-12-04T12:26:49Z", + updated_at: "2024-12-12T16:28:13Z", + closed_at: null, + merged_at: null, + merge_commit_sha: "8dc60c7c51484bbcb37cea076ab645cc3ae9f7ce", + assignee: null, + assignees: [], + requested_reviewers: [ + { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + { + login: "ana-0k", + id: 180151378, + node_id: "U_kgDOCrzkUg", + avatar_url: "https://avatars.githubusercontent.com/u/180151378?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ana-0k", + html_url: "https://github.com/ana-0k", + followers_url: "https://api.github.com/users/ana-0k/followers", + following_url: "https://api.github.com/users/ana-0k/following{/other_user}", + gists_url: "https://api.github.com/users/ana-0k/gists{/gist_id}", + starred_url: "https://api.github.com/users/ana-0k/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ana-0k/subscriptions", + organizations_url: "https://api.github.com/users/ana-0k/orgs", + repos_url: "https://api.github.com/users/ana-0k/repos", + events_url: "https://api.github.com/users/ana-0k/events{/privacy}", + received_events_url: "https://api.github.com/users/ana-0k/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + requested_teams: [], + labels: [], + milestone: null, + draft: false, + commits_url: "https://api.github.com/repos/ubiquity/business-development/pulls/94/commits", + review_comments_url: "https://api.github.com/repos/ubiquity/business-development/pulls/94/comments", + review_comment_url: "https://api.github.com/repos/ubiquity/business-development/pulls/comments{/number}", + comments_url: "https://api.github.com/repos/ubiquity/business-development/issues/94/comments", + statuses_url: "https://api.github.com/repos/ubiquity/business-development/statuses/1ee1251f6f9310bdbb3d30ace855ad699f08640c", + head: { + label: "sura1-0-1:features/create-UbiquityOS-User-Manual", + ref: "features/create-UbiquityOS-User-Manual", + sha: "1ee1251f6f9310bdbb3d30ace855ad699f08640c", + user: { + login: "sura1-0-1", + id: 177723425, + node_id: "U_kgDOCpfYIQ", + avatar_url: "https://avatars.githubusercontent.com/u/177723425?v=4", + gravatar_id: "", + url: "https://api.github.com/users/sura1-0-1", + html_url: "https://github.com/sura1-0-1", + followers_url: "https://api.github.com/users/sura1-0-1/followers", + following_url: "https://api.github.com/users/sura1-0-1/following{/other_user}", + gists_url: "https://api.github.com/users/sura1-0-1/gists{/gist_id}", + starred_url: "https://api.github.com/users/sura1-0-1/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/sura1-0-1/subscriptions", + organizations_url: "https://api.github.com/users/sura1-0-1/orgs", + repos_url: "https://api.github.com/users/sura1-0-1/repos", + events_url: "https://api.github.com/users/sura1-0-1/events{/privacy}", + received_events_url: "https://api.github.com/users/sura1-0-1/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 898422626, + node_id: "R_kgDONYzXYg", + name: "business-development", + full_name: "sura1-0-1/business-development", + private: false, + owner: { + login: "sura1-0-1", + id: 177723425, + node_id: "U_kgDOCpfYIQ", + avatar_url: "https://avatars.githubusercontent.com/u/177723425?v=4", + gravatar_id: "", + url: "https://api.github.com/users/sura1-0-1", + html_url: "https://github.com/sura1-0-1", + followers_url: "https://api.github.com/users/sura1-0-1/followers", + following_url: "https://api.github.com/users/sura1-0-1/following{/other_user}", + gists_url: "https://api.github.com/users/sura1-0-1/gists{/gist_id}", + starred_url: "https://api.github.com/users/sura1-0-1/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/sura1-0-1/subscriptions", + organizations_url: "https://api.github.com/users/sura1-0-1/orgs", + repos_url: "https://api.github.com/users/sura1-0-1/repos", + events_url: "https://api.github.com/users/sura1-0-1/events{/privacy}", + received_events_url: "https://api.github.com/users/sura1-0-1/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/sura1-0-1/business-development", + description: "Ubiquity growth, covering: partnerships, events, fundraising, and user acquisition.", + fork: true, + url: "https://api.github.com/repos/sura1-0-1/business-development", + forks_url: "https://api.github.com/repos/sura1-0-1/business-development/forks", + keys_url: "https://api.github.com/repos/sura1-0-1/business-development/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/sura1-0-1/business-development/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/sura1-0-1/business-development/teams", + hooks_url: "https://api.github.com/repos/sura1-0-1/business-development/hooks", + issue_events_url: "https://api.github.com/repos/sura1-0-1/business-development/issues/events{/number}", + events_url: "https://api.github.com/repos/sura1-0-1/business-development/events", + assignees_url: "https://api.github.com/repos/sura1-0-1/business-development/assignees{/user}", + branches_url: "https://api.github.com/repos/sura1-0-1/business-development/branches{/branch}", + tags_url: "https://api.github.com/repos/sura1-0-1/business-development/tags", + blobs_url: "https://api.github.com/repos/sura1-0-1/business-development/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/sura1-0-1/business-development/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/sura1-0-1/business-development/git/refs{/sha}", + trees_url: "https://api.github.com/repos/sura1-0-1/business-development/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/sura1-0-1/business-development/statuses/{sha}", + languages_url: "https://api.github.com/repos/sura1-0-1/business-development/languages", + stargazers_url: "https://api.github.com/repos/sura1-0-1/business-development/stargazers", + contributors_url: "https://api.github.com/repos/sura1-0-1/business-development/contributors", + subscribers_url: "https://api.github.com/repos/sura1-0-1/business-development/subscribers", + subscription_url: "https://api.github.com/repos/sura1-0-1/business-development/subscription", + commits_url: "https://api.github.com/repos/sura1-0-1/business-development/commits{/sha}", + git_commits_url: "https://api.github.com/repos/sura1-0-1/business-development/git/commits{/sha}", + comments_url: "https://api.github.com/repos/sura1-0-1/business-development/comments{/number}", + issue_comment_url: "https://api.github.com/repos/sura1-0-1/business-development/issues/comments{/number}", + contents_url: "https://api.github.com/repos/sura1-0-1/business-development/contents/{+path}", + compare_url: "https://api.github.com/repos/sura1-0-1/business-development/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/sura1-0-1/business-development/merges", + archive_url: "https://api.github.com/repos/sura1-0-1/business-development/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/sura1-0-1/business-development/downloads", + issues_url: "https://api.github.com/repos/sura1-0-1/business-development/issues{/number}", + pulls_url: "https://api.github.com/repos/sura1-0-1/business-development/pulls{/number}", + milestones_url: "https://api.github.com/repos/sura1-0-1/business-development/milestones{/number}", + notifications_url: "https://api.github.com/repos/sura1-0-1/business-development/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/sura1-0-1/business-development/labels{/name}", + releases_url: "https://api.github.com/repos/sura1-0-1/business-development/releases{/id}", + deployments_url: "https://api.github.com/repos/sura1-0-1/business-development/deployments", + created_at: "2024-12-04T11:15:30Z", + updated_at: "2024-12-04T22:19:14Z", + pushed_at: "2024-12-12T03:55:50Z", + git_url: "git://github.com/sura1-0-1/business-development.git", + ssh_url: "git@github.com:sura1-0-1/business-development.git", + clone_url: "https://github.com/sura1-0-1/business-development.git", + svn_url: "https://github.com/sura1-0-1/business-development", + homepage: null, + size: 13261, + stargazers_count: 0, + watchers_count: 0, + language: null, + has_issues: false, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 0, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 0, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 0, + open_issues: 0, + watchers: 0, + default_branch: "development", + }, + }, + base: { + label: "ubiquity:development", + ref: "development", + sha: "6d40bff5a79f52ad8e326aca08a729a424d3346d", + user: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 619433796, + node_id: "R_kgDOJOvPRA", + name: "business-development", + full_name: "ubiquity/business-development", + private: false, + owner: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity/business-development", + description: "Ubiquity growth, covering: partnerships, events, fundraising, and user acquisition.", + fork: false, + url: "https://api.github.com/repos/ubiquity/business-development", + forks_url: "https://api.github.com/repos/ubiquity/business-development/forks", + keys_url: "https://api.github.com/repos/ubiquity/business-development/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity/business-development/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity/business-development/teams", + hooks_url: "https://api.github.com/repos/ubiquity/business-development/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity/business-development/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity/business-development/events", + assignees_url: "https://api.github.com/repos/ubiquity/business-development/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity/business-development/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity/business-development/tags", + blobs_url: "https://api.github.com/repos/ubiquity/business-development/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity/business-development/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity/business-development/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity/business-development/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity/business-development/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity/business-development/languages", + stargazers_url: "https://api.github.com/repos/ubiquity/business-development/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity/business-development/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity/business-development/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity/business-development/subscription", + commits_url: "https://api.github.com/repos/ubiquity/business-development/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity/business-development/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity/business-development/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity/business-development/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity/business-development/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity/business-development/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity/business-development/merges", + archive_url: "https://api.github.com/repos/ubiquity/business-development/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity/business-development/downloads", + issues_url: "https://api.github.com/repos/ubiquity/business-development/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity/business-development/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity/business-development/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity/business-development/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity/business-development/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity/business-development/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity/business-development/deployments", + created_at: "2023-03-27T06:14:57Z", + updated_at: "2024-12-09T12:55:48Z", + pushed_at: "2024-12-09T12:55:46Z", + git_url: "git://github.com/ubiquity/business-development.git", + ssh_url: "git@github.com:ubiquity/business-development.git", + clone_url: "https://github.com/ubiquity/business-development.git", + svn_url: "https://github.com/ubiquity/business-development", + homepage: null, + size: 75, + stargazers_count: 1, + watchers_count: 1, + language: null, + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: false, + has_pages: false, + has_discussions: true, + forks_count: 6, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 18, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 6, + open_issues: 18, + watchers: 1, + default_branch: "development", + }, + }, + _links: { + self: { + href: "https://api.github.com/repos/ubiquity/business-development/pulls/94", + }, + html: { + href: "https://github.com/ubiquity/business-development/pull/94", + }, + issue: { + href: "https://api.github.com/repos/ubiquity/business-development/issues/94", + }, + comments: { + href: "https://api.github.com/repos/ubiquity/business-development/issues/94/comments", + }, + review_comments: { + href: "https://api.github.com/repos/ubiquity/business-development/pulls/94/comments", + }, + review_comment: { + href: "https://api.github.com/repos/ubiquity/business-development/pulls/comments{/number}", + }, + commits: { + href: "https://api.github.com/repos/ubiquity/business-development/pulls/94/commits", + }, + statuses: { + href: "https://api.github.com/repos/ubiquity/business-development/statuses/1ee1251f6f9310bdbb3d30ace855ad699f08640c", + }, + }, + author_association: "FIRST_TIME_CONTRIBUTOR", + auto_merge: null, + active_lock_reason: null, + merged: false, + mergeable: true, + rebaseable: false, + mergeable_state: "blocked", + merged_by: null, + comments: 10, + review_comments: 8, + maintainer_can_modify: true, + commits: 86, + additions: 1690, + deletions: 0, + changed_files: 106, + }, + issue: { + url: "https://api.github.com/repos/ubiquity/business-development/issues/85", + repository_url: "https://api.github.com/repos/ubiquity/business-development", + labels_url: "https://api.github.com/repos/ubiquity/business-development/issues/85/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity/business-development/issues/85/comments", + events_url: "https://api.github.com/repos/ubiquity/business-development/issues/85/events", + html_url: "https://github.com/ubiquity/business-development/issues/85", + id: 2568521488, + node_id: "I_kwDOJOvPRM6ZGIcQ", + number: 85, + title: "Full user manual for the system", + user: { + login: "ana-0k", + id: 180151378, + node_id: "U_kgDOCrzkUg", + avatar_url: "https://avatars.githubusercontent.com/u/180151378?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ana-0k", + html_url: "https://github.com/ana-0k", + followers_url: "https://api.github.com/users/ana-0k/followers", + following_url: "https://api.github.com/users/ana-0k/following{/other_user}", + gists_url: "https://api.github.com/users/ana-0k/gists{/gist_id}", + starred_url: "https://api.github.com/users/ana-0k/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ana-0k/subscriptions", + organizations_url: "https://api.github.com/users/ana-0k/orgs", + repos_url: "https://api.github.com/users/ana-0k/repos", + events_url: "https://api.github.com/users/ana-0k/events{/privacy}", + received_events_url: "https://api.github.com/users/ana-0k/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 5356614512, + node_id: "LA_kwDOJOvPRM8AAAABP0dzcA", + url: "https://api.github.com/repos/ubiquity/business-development/labels/Priority:%203%20(High)", + name: "Priority: 3 (High)", + color: "ededed", + default: false, + description: "", + }, + { + id: 5566633288, + node_id: "LA_kwDOJOvPRM8AAAABS8wVSA", + url: "https://api.github.com/repos/ubiquity/business-development/labels/Price:%20300%20USD", + name: "Price: 300 USD", + color: "1f883d", + default: false, + description: null, + }, + { + id: 5839423809, + node_id: "LA_kwDOJOvPRM8AAAABXA6JQQ", + url: "https://api.github.com/repos/ubiquity/business-development/labels/Time:%20%3C4%20Hours", + name: "Time: <4 Hours", + color: "ededed", + default: false, + description: null, + }, + ], + state: "open", + locked: false, + assignee: { + login: "sura1-0-1", + id: 177723425, + node_id: "U_kgDOCpfYIQ", + avatar_url: "https://avatars.githubusercontent.com/u/177723425?v=4", + gravatar_id: "", + url: "https://api.github.com/users/sura1-0-1", + html_url: "https://github.com/sura1-0-1", + followers_url: "https://api.github.com/users/sura1-0-1/followers", + following_url: "https://api.github.com/users/sura1-0-1/following{/other_user}", + gists_url: "https://api.github.com/users/sura1-0-1/gists{/gist_id}", + starred_url: "https://api.github.com/users/sura1-0-1/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/sura1-0-1/subscriptions", + organizations_url: "https://api.github.com/users/sura1-0-1/orgs", + repos_url: "https://api.github.com/users/sura1-0-1/repos", + events_url: "https://api.github.com/users/sura1-0-1/events{/privacy}", + received_events_url: "https://api.github.com/users/sura1-0-1/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + assignees: [ + { + login: "sura1-0-1", + id: 177723425, + node_id: "U_kgDOCpfYIQ", + avatar_url: "https://avatars.githubusercontent.com/u/177723425?v=4", + gravatar_id: "", + url: "https://api.github.com/users/sura1-0-1", + html_url: "https://github.com/sura1-0-1", + followers_url: "https://api.github.com/users/sura1-0-1/followers", + following_url: "https://api.github.com/users/sura1-0-1/following{/other_user}", + gists_url: "https://api.github.com/users/sura1-0-1/gists{/gist_id}", + starred_url: "https://api.github.com/users/sura1-0-1/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/sura1-0-1/subscriptions", + organizations_url: "https://api.github.com/users/sura1-0-1/orgs", + repos_url: "https://api.github.com/users/sura1-0-1/repos", + events_url: "https://api.github.com/users/sura1-0-1/events{/privacy}", + received_events_url: "https://api.github.com/users/sura1-0-1/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + milestone: null, + comments: 55, + created_at: "2024-10-06T07:50:59Z", + updated_at: "2024-12-10T14:50:52Z", + closed_at: null, + author_association: "MEMBER", + active_lock_reason: null, + body: "Create a full user manual with step-by step directions on how to:\r\n- Get started\r\n- Verify account/connect wallet/top-up for payouts\r\n- Create tasks\r\n- See dashboard (if added)\r\n- Add plugins\r\n- Pricing & managing\r\n- Contribute/submit solutions\r\n- Cash out\r\n- Etc\r\n- FAQ\r\n\r\nGood UI example: https://developers.applovin.com/en/max/getting-started\r\n", + closed_by: null, + reactions: { + url: "https://api.github.com/repos/ubiquity/business-development/issues/85/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity/business-development/issues/85/timeline", + performed_via_github_app: null, + state_reason: null, + }, + backlinkCount: 0, + }, + { + notification: { + id: "13561170302", + unread: true, + reason: "subscribed", + updated_at: "2024-12-12T16:05:43Z", + last_read_at: "2024-12-06T17:07:30Z", + subject: { + title: "feat: plugin config param tooltips", + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls/30", + latest_comment_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/comments/2539379392", + type: "PullRequest", + }, + repository: { + id: 857861120, + node_id: "R_kgDOMyHsAA", + name: "ubiquity-os-plugin-installer", + full_name: "ubiquity-os/ubiquity-os-plugin-installer", + private: false, + owner: { + login: "ubiquity-os", + id: 160213852, + node_id: "O_kgDOCYyrXA", + avatar_url: "https://avatars.githubusercontent.com/u/160213852?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os", + html_url: "https://github.com/ubiquity-os", + followers_url: "https://api.github.com/users/ubiquity-os/followers", + following_url: "https://api.github.com/users/ubiquity-os/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os/orgs", + repos_url: "https://api.github.com/users/ubiquity-os/repos", + events_url: "https://api.github.com/users/ubiquity-os/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os/ubiquity-os-plugin-installer", + description: "A GUI to install UbiquityOS plugins.", + fork: false, + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer", + forks_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/forks", + keys_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/events", + assignees_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/merges", + archive_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/deployments", + }, + url: "https://api.github.com/notifications/threads/13561170302", + subscription_url: "https://api.github.com/notifications/threads/13561170302/subscription", + }, + pullRequest: { + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls/30", + id: 2201176329, + node_id: "PR_kwDOMyHsAM6DM0kJ", + html_url: "https://github.com/ubiquity-os/ubiquity-os-plugin-installer/pull/30", + diff_url: "https://github.com/ubiquity-os/ubiquity-os-plugin-installer/pull/30.diff", + patch_url: "https://github.com/ubiquity-os/ubiquity-os-plugin-installer/pull/30.patch", + issue_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/30", + number: 30, + state: "open", + locked: false, + title: "feat: plugin config param tooltips", + user: { + login: "Keyrxng", + id: 106303466, + node_id: "U_kgDOBlYP6g", + avatar_url: "https://avatars.githubusercontent.com/u/106303466?v=4", + gravatar_id: "", + url: "https://api.github.com/users/Keyrxng", + html_url: "https://github.com/Keyrxng", + followers_url: "https://api.github.com/users/Keyrxng/followers", + following_url: "https://api.github.com/users/Keyrxng/following{/other_user}", + gists_url: "https://api.github.com/users/Keyrxng/gists{/gist_id}", + starred_url: "https://api.github.com/users/Keyrxng/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/Keyrxng/subscriptions", + organizations_url: "https://api.github.com/users/Keyrxng/orgs", + repos_url: "https://api.github.com/users/Keyrxng/repos", + events_url: "https://api.github.com/users/Keyrxng/events{/privacy}", + received_events_url: "https://api.github.com/users/Keyrxng/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + body: "Resolves #24\r\nRequires PRs in plugin repos be merged in and I'll remove the mocks\r\n\r\nChanges:\r\n\r\n- tooltip for plugin param descriptions\r\n\r\nQA:\r\n\r\n![image](https://github.com/user-attachments/assets/a12fde41-9565-44aa-b7b6-b1b7866ad9ab)\r\n\r\n", + created_at: "2024-11-26T14:44:58Z", + updated_at: "2024-12-12T16:05:23Z", + closed_at: null, + merged_at: null, + merge_commit_sha: "b3e193763438abee5e01be6d2980e0af04e09816", + assignee: null, + assignees: [], + requested_reviewers: [], + requested_teams: [], + labels: [], + milestone: null, + draft: true, + commits_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls/30/commits", + review_comments_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls/30/comments", + review_comment_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls/comments{/number}", + comments_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/30/comments", + statuses_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/statuses/6e86827a9eb1cbdba7d3f1e259f4d8920e1d9a0e", + head: { + label: "ubq-testing:feat/config-param-descs", + ref: "feat/config-param-descs", + sha: "6e86827a9eb1cbdba7d3f1e259f4d8920e1d9a0e", + user: { + login: "ubq-testing", + id: 146770072, + node_id: "O_kgDOCL-ImA", + avatar_url: "https://avatars.githubusercontent.com/u/146770072?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubq-testing", + html_url: "https://github.com/ubq-testing", + followers_url: "https://api.github.com/users/ubq-testing/followers", + following_url: "https://api.github.com/users/ubq-testing/following{/other_user}", + gists_url: "https://api.github.com/users/ubq-testing/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubq-testing/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubq-testing/subscriptions", + organizations_url: "https://api.github.com/users/ubq-testing/orgs", + repos_url: "https://api.github.com/users/ubq-testing/repos", + events_url: "https://api.github.com/users/ubq-testing/events{/privacy}", + received_events_url: "https://api.github.com/users/ubq-testing/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 885006772, + node_id: "R_kgDONMAhtA", + name: "ubiquity-os-plugin-installer", + full_name: "ubq-testing/ubiquity-os-plugin-installer", + private: false, + owner: { + login: "ubq-testing", + id: 146770072, + node_id: "O_kgDOCL-ImA", + avatar_url: "https://avatars.githubusercontent.com/u/146770072?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubq-testing", + html_url: "https://github.com/ubq-testing", + followers_url: "https://api.github.com/users/ubq-testing/followers", + following_url: "https://api.github.com/users/ubq-testing/following{/other_user}", + gists_url: "https://api.github.com/users/ubq-testing/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubq-testing/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubq-testing/subscriptions", + organizations_url: "https://api.github.com/users/ubq-testing/orgs", + repos_url: "https://api.github.com/users/ubq-testing/repos", + events_url: "https://api.github.com/users/ubq-testing/events{/privacy}", + received_events_url: "https://api.github.com/users/ubq-testing/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubq-testing/ubiquity-os-plugin-installer", + description: "A GUI to install UbiquityOS plugins.", + fork: true, + url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer", + forks_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/forks", + keys_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/teams", + hooks_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/hooks", + issue_events_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/issues/events{/number}", + events_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/events", + assignees_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/assignees{/user}", + branches_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/branches{/branch}", + tags_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/tags", + blobs_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/languages", + stargazers_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/stargazers", + contributors_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/contributors", + subscribers_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/subscribers", + subscription_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/subscription", + commits_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/contents/{+path}", + compare_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/merges", + archive_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/downloads", + issues_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/issues{/number}", + pulls_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/labels{/name}", + releases_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/releases{/id}", + deployments_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/deployments", + created_at: "2024-11-07T19:30:58Z", + updated_at: "2024-11-26T13:55:47Z", + pushed_at: "2024-11-30T00:39:08Z", + git_url: "git://github.com/ubq-testing/ubiquity-os-plugin-installer.git", + ssh_url: "git@github.com:ubq-testing/ubiquity-os-plugin-installer.git", + clone_url: "https://github.com/ubq-testing/ubiquity-os-plugin-installer.git", + svn_url: "https://github.com/ubq-testing/ubiquity-os-plugin-installer", + homepage: "", + size: 1032, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: false, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 0, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 0, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 0, + open_issues: 0, + watchers: 0, + default_branch: "main", + }, + }, + base: { + label: "ubiquity-os:main", + ref: "main", + sha: "b52f2db5db8cdd95fe895b70d295c249c17eea61", + user: { + login: "ubiquity-os", + id: 160213852, + node_id: "O_kgDOCYyrXA", + avatar_url: "https://avatars.githubusercontent.com/u/160213852?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os", + html_url: "https://github.com/ubiquity-os", + followers_url: "https://api.github.com/users/ubiquity-os/followers", + following_url: "https://api.github.com/users/ubiquity-os/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os/orgs", + repos_url: "https://api.github.com/users/ubiquity-os/repos", + events_url: "https://api.github.com/users/ubiquity-os/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 857861120, + node_id: "R_kgDOMyHsAA", + name: "ubiquity-os-plugin-installer", + full_name: "ubiquity-os/ubiquity-os-plugin-installer", + private: false, + owner: { + login: "ubiquity-os", + id: 160213852, + node_id: "O_kgDOCYyrXA", + avatar_url: "https://avatars.githubusercontent.com/u/160213852?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os", + html_url: "https://github.com/ubiquity-os", + followers_url: "https://api.github.com/users/ubiquity-os/followers", + following_url: "https://api.github.com/users/ubiquity-os/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os/orgs", + repos_url: "https://api.github.com/users/ubiquity-os/repos", + events_url: "https://api.github.com/users/ubiquity-os/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os/ubiquity-os-plugin-installer", + description: "A GUI to install UbiquityOS plugins.", + fork: false, + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer", + forks_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/forks", + keys_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/events", + assignees_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/merges", + archive_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/deployments", + created_at: "2024-09-15T19:44:31Z", + updated_at: "2024-12-11T07:47:48Z", + pushed_at: "2024-12-11T07:50:23Z", + git_url: "git://github.com/ubiquity-os/ubiquity-os-plugin-installer.git", + ssh_url: "git@github.com:ubiquity-os/ubiquity-os-plugin-installer.git", + clone_url: "https://github.com/ubiquity-os/ubiquity-os-plugin-installer.git", + svn_url: "https://github.com/ubiquity-os/ubiquity-os-plugin-installer", + homepage: "", + size: 1043, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 9, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 9, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 9, + open_issues: 9, + watchers: 0, + default_branch: "main", + }, + }, + _links: { + self: { + href: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls/30", + }, + html: { + href: "https://github.com/ubiquity-os/ubiquity-os-plugin-installer/pull/30", + }, + issue: { + href: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/30", + }, + comments: { + href: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/30/comments", + }, + review_comments: { + href: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls/30/comments", + }, + review_comment: { + href: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls/comments{/number}", + }, + commits: { + href: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls/30/commits", + }, + statuses: { + href: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/statuses/6e86827a9eb1cbdba7d3f1e259f4d8920e1d9a0e", + }, + }, + author_association: "MEMBER", + auto_merge: null, + active_lock_reason: null, + merged: false, + mergeable: null, + rebaseable: null, + mergeable_state: "unknown", + merged_by: null, + comments: 4, + review_comments: 0, + maintainer_can_modify: false, + commits: 3, + additions: 105, + deletions: 8, + changed_files: 4, + }, + issue: { + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/24", + repository_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer", + labels_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/24/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/24/comments", + events_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/24/events", + html_url: "https://github.com/ubiquity-os/ubiquity-os-plugin-installer/issues/24", + id: 2672874281, + node_id: "I_kwDOMyHsAM6fUNMp", + number: 24, + title: "Add parameter descriptions for core plugins in the `plugin-input.ts`", + user: { + login: "rndquu", + id: 119500907, + node_id: "U_kgDOBx9waw", + avatar_url: "https://avatars.githubusercontent.com/u/119500907?v=4", + gravatar_id: "", + url: "https://api.github.com/users/rndquu", + html_url: "https://github.com/rndquu", + followers_url: "https://api.github.com/users/rndquu/followers", + following_url: "https://api.github.com/users/rndquu/following{/other_user}", + gists_url: "https://api.github.com/users/rndquu/gists{/gist_id}", + starred_url: "https://api.github.com/users/rndquu/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/rndquu/subscriptions", + organizations_url: "https://api.github.com/users/rndquu/orgs", + repos_url: "https://api.github.com/users/rndquu/repos", + events_url: "https://api.github.com/users/rndquu/events{/privacy}", + received_events_url: "https://api.github.com/users/rndquu/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 7469052372, + node_id: "LA_kwDOMyHsAM8AAAABvTCx1A", + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels/Price:%20300%20USD", + name: "Price: 300 USD", + color: "1f883d", + default: false, + description: null, + }, + { + id: 7469052411, + node_id: "LA_kwDOMyHsAM8AAAABvTCx-w", + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels/Time:%20%3C4%20Hours", + name: "Time: <4 Hours", + color: "ededed", + default: false, + description: null, + }, + { + id: 7469052421, + node_id: "LA_kwDOMyHsAM8AAAABvTCyBQ", + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels/Priority:%203%20(High)", + name: "Priority: 3 (High)", + color: "ededed", + default: false, + description: null, + }, + ], + state: "open", + locked: false, + assignee: { + login: "Keyrxng", + id: 106303466, + node_id: "U_kgDOBlYP6g", + avatar_url: "https://avatars.githubusercontent.com/u/106303466?v=4", + gravatar_id: "", + url: "https://api.github.com/users/Keyrxng", + html_url: "https://github.com/Keyrxng", + followers_url: "https://api.github.com/users/Keyrxng/followers", + following_url: "https://api.github.com/users/Keyrxng/following{/other_user}", + gists_url: "https://api.github.com/users/Keyrxng/gists{/gist_id}", + starred_url: "https://api.github.com/users/Keyrxng/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/Keyrxng/subscriptions", + organizations_url: "https://api.github.com/users/Keyrxng/orgs", + repos_url: "https://api.github.com/users/Keyrxng/repos", + events_url: "https://api.github.com/users/Keyrxng/events{/privacy}", + received_events_url: "https://api.github.com/users/Keyrxng/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + assignees: [ + { + login: "Keyrxng", + id: 106303466, + node_id: "U_kgDOBlYP6g", + avatar_url: "https://avatars.githubusercontent.com/u/106303466?v=4", + gravatar_id: "", + url: "https://api.github.com/users/Keyrxng", + html_url: "https://github.com/Keyrxng", + followers_url: "https://api.github.com/users/Keyrxng/followers", + following_url: "https://api.github.com/users/Keyrxng/following{/other_user}", + gists_url: "https://api.github.com/users/Keyrxng/gists{/gist_id}", + starred_url: "https://api.github.com/users/Keyrxng/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/Keyrxng/subscriptions", + organizations_url: "https://api.github.com/users/Keyrxng/orgs", + repos_url: "https://api.github.com/users/Keyrxng/repos", + events_url: "https://api.github.com/users/Keyrxng/events{/privacy}", + received_events_url: "https://api.github.com/users/Keyrxng/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + milestone: null, + comments: 18, + created_at: "2024-11-19T16:56:22Z", + updated_at: "2024-12-09T20:39:22Z", + closed_at: null, + author_association: "MEMBER", + active_lock_reason: null, + body: "Right now all core plugins have a `manifest.json` file ([example](https://github.com/ubiquity-os-marketplace/command-start-stop/blob/ee4f7c698f0e221381df7c73f56457e1ca4d22ea/manifest.json)) describing plugin's:\r\n- name\r\n- description\r\n- listeners\r\n- command examples\r\n- configuration parameters\r\n\r\nThe issue is that when plugin configuration is displayed in https://github.com/ubiquity-os/ubiquity-os-plugin-installer there're no any configuration parameter descriptions so it's really hard for a partner to find out what parameters are meant to be used for:\r\n\"Screenshot\r\n\r\nWhat should be done for all of the core plugins in https://github.com/ubiquity-os-marketplace:\r\n1. Make sure the readme file is relevant (i.e. has a relevant config example and configuration parameter descriptions)\r\n2. Make sure there's a `name` property in the `manifest.json` (some of the core plugins miss it)\r\n3. Make sure there's a `description` property in the `manifest.json`\r\n4. Add descriptions of plugin configuration parameters in the `plugin-input.ts` file (for example [this](https://github.com/Meniole/command-query-user/blob/042533ebbbfebaf5f5754b1d4a2fcf1d8afd94ad/src/types/plugin-input.ts#L7) code generates [this](https://github.com/Meniole/command-query-user/blob/ecb3c906d0e21b1557b23a8465fb2760b3f87abf/manifest.json#L16) manifest). Simply put we should add the `description` field for all of the plugin parameters in the `plugin-input.ts` file. Description should include general info and possible parameter options.\r\n\r\nNotice that in the `manifest.json` file the `configuration` schema is created dynamically:\r\n1. [update-configuration.yml](https://github.com/ubiquity-os-marketplace/command-start-stop/blob/ee4f7c698f0e221381df7c73f56457e1ca4d22ea/.github/workflows/update-configuration.yml) workflow runs \r\n2. Configuration schema is fetched from [plugin-input.ts](https://github.com/ubiquity-os-marketplace/command-start-stop/blob/ee4f7c698f0e221381df7c73f56457e1ca4d22ea/src/types/plugin-input.ts)\r\n3. [manifest.json](https://github.com/ubiquity-os-marketplace/command-start-stop/blob/ee4f7c698f0e221381df7c73f56457e1ca4d22ea/manifest.json) is updated ([example commit](https://github.com/ubiquity-os-marketplace/command-start-stop/commit/56232c8c67d198cc46cf61c9b3fd0b90cce57df7))\r\n\r\nThen we'll display all configuration parameter descriptions in https://github.com/ubiquity-os/ubiquity-os-plugin-installer on creating/editing a config.\r\n\r\nUpdate: parameter description PRs:\r\n- https://github.com/ubiquity-os-marketplace/text-vector-embeddings/pull/49\r\n- https://github.com/ubiquity-os-marketplace/daemon-pricing/pull/56\r\n- https://github.com/ubiquity-os-marketplace/command-start-stop/pull/94\r\n- https://github.com/ubiquity-os-marketplace/daemon-disqualifier/pull/52\r\n- https://github.com/ubiquity-os-marketplace/command-wallet/pull/24\r\n- https://github.com/ubiquity-os-marketplace/command-query/pull/25\r\n- https://github.com/ubiquity-os-marketplace/command-ask/pull/41\r\n- https://github.com/ubiquity-os-marketplace/text-conversation-rewards/pull/202\r\n- https://github.com/ubiquity-os-marketplace/daemon-merging/pull/30\r\n\r\n", + closed_by: null, + reactions: { + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/24/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/24/timeline", + performed_via_github_app: null, + state_reason: null, + }, + backlinkCount: 0, + }, + { + notification: { + id: "13508045140", + unread: true, + reason: "subscribed", + updated_at: "2024-12-12T16:05:37Z", + last_read_at: "2024-12-10T12:37:23Z", + subject: { + title: "Feat/predefined configs", + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls/28", + latest_comment_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/comments/2539379157", + type: "PullRequest", + }, + repository: { + id: 857861120, + node_id: "R_kgDOMyHsAA", + name: "ubiquity-os-plugin-installer", + full_name: "ubiquity-os/ubiquity-os-plugin-installer", + private: false, + owner: { + login: "ubiquity-os", + id: 160213852, + node_id: "O_kgDOCYyrXA", + avatar_url: "https://avatars.githubusercontent.com/u/160213852?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os", + html_url: "https://github.com/ubiquity-os", + followers_url: "https://api.github.com/users/ubiquity-os/followers", + following_url: "https://api.github.com/users/ubiquity-os/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os/orgs", + repos_url: "https://api.github.com/users/ubiquity-os/repos", + events_url: "https://api.github.com/users/ubiquity-os/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os/ubiquity-os-plugin-installer", + description: "A GUI to install UbiquityOS plugins.", + fork: false, + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer", + forks_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/forks", + keys_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/events", + assignees_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/merges", + archive_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/deployments", + }, + url: "https://api.github.com/notifications/threads/13508045140", + subscription_url: "https://api.github.com/notifications/threads/13508045140/subscription", + }, + pullRequest: { + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls/28", + id: 2195734593, + node_id: "PR_kwDOMyHsAM6C4EBB", + html_url: "https://github.com/ubiquity-os/ubiquity-os-plugin-installer/pull/28", + diff_url: "https://github.com/ubiquity-os/ubiquity-os-plugin-installer/pull/28.diff", + patch_url: "https://github.com/ubiquity-os/ubiquity-os-plugin-installer/pull/28.patch", + issue_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/28", + number: 28, + state: "open", + locked: false, + title: "Feat/predefined configs", + user: { + login: "Keyrxng", + id: 106303466, + node_id: "U_kgDOBlYP6g", + avatar_url: "https://avatars.githubusercontent.com/u/106303466?v=4", + gravatar_id: "", + url: "https://api.github.com/users/Keyrxng", + html_url: "https://github.com/Keyrxng", + followers_url: "https://api.github.com/users/Keyrxng/followers", + following_url: "https://api.github.com/users/Keyrxng/following{/other_user}", + gists_url: "https://api.github.com/users/Keyrxng/gists{/gist_id}", + starred_url: "https://api.github.com/users/Keyrxng/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/Keyrxng/subscriptions", + organizations_url: "https://api.github.com/users/Keyrxng/orgs", + repos_url: "https://api.github.com/users/Keyrxng/repos", + events_url: "https://api.github.com/users/Keyrxng/events{/privacy}", + received_events_url: "https://api.github.com/users/Keyrxng/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + body: "Resolves https://github.com/ubiquity-os/ubiquity-os-plugin-installer/issues/22\r\nRequires #25\r\n\r\nChanges:\r\n\r\n- template selection step\r\n- minimal config: I've copied an org installed config but we could create `minimal-config.yml` in a `marketplace` repo (`.ubiquity-os`?) and just fetch it from there instead, this would be prefer imo as it's easier to edit than baked into the build.\r\n- full defaults: I've implemented the schema provided defaults as best we can right now some plugins need updated (see #27)\r\n\r\n\r\nQA:\r\n\r\nhttps://github.com/user-attachments/assets/490b4344-144d-4d10-a454-b2e61fffd9a8\r\n\r\n", + created_at: "2024-11-22T22:27:46Z", + updated_at: "2024-12-12T16:05:16Z", + closed_at: null, + merged_at: null, + merge_commit_sha: null, + assignee: null, + assignees: [], + requested_reviewers: [], + requested_teams: [], + labels: [], + milestone: null, + draft: true, + commits_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls/28/commits", + review_comments_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls/28/comments", + review_comment_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls/comments{/number}", + comments_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/28/comments", + statuses_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/statuses/ddbcb52aa548d3392ab6c91824566ca5bfedf6a7", + head: { + label: "ubq-testing:feat/predefined-configs", + ref: "feat/predefined-configs", + sha: "ddbcb52aa548d3392ab6c91824566ca5bfedf6a7", + user: { + login: "ubq-testing", + id: 146770072, + node_id: "O_kgDOCL-ImA", + avatar_url: "https://avatars.githubusercontent.com/u/146770072?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubq-testing", + html_url: "https://github.com/ubq-testing", + followers_url: "https://api.github.com/users/ubq-testing/followers", + following_url: "https://api.github.com/users/ubq-testing/following{/other_user}", + gists_url: "https://api.github.com/users/ubq-testing/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubq-testing/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubq-testing/subscriptions", + organizations_url: "https://api.github.com/users/ubq-testing/orgs", + repos_url: "https://api.github.com/users/ubq-testing/repos", + events_url: "https://api.github.com/users/ubq-testing/events{/privacy}", + received_events_url: "https://api.github.com/users/ubq-testing/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 885006772, + node_id: "R_kgDONMAhtA", + name: "ubiquity-os-plugin-installer", + full_name: "ubq-testing/ubiquity-os-plugin-installer", + private: false, + owner: { + login: "ubq-testing", + id: 146770072, + node_id: "O_kgDOCL-ImA", + avatar_url: "https://avatars.githubusercontent.com/u/146770072?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubq-testing", + html_url: "https://github.com/ubq-testing", + followers_url: "https://api.github.com/users/ubq-testing/followers", + following_url: "https://api.github.com/users/ubq-testing/following{/other_user}", + gists_url: "https://api.github.com/users/ubq-testing/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubq-testing/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubq-testing/subscriptions", + organizations_url: "https://api.github.com/users/ubq-testing/orgs", + repos_url: "https://api.github.com/users/ubq-testing/repos", + events_url: "https://api.github.com/users/ubq-testing/events{/privacy}", + received_events_url: "https://api.github.com/users/ubq-testing/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubq-testing/ubiquity-os-plugin-installer", + description: "A GUI to install UbiquityOS plugins.", + fork: true, + url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer", + forks_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/forks", + keys_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/teams", + hooks_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/hooks", + issue_events_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/issues/events{/number}", + events_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/events", + assignees_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/assignees{/user}", + branches_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/branches{/branch}", + tags_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/tags", + blobs_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/languages", + stargazers_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/stargazers", + contributors_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/contributors", + subscribers_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/subscribers", + subscription_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/subscription", + commits_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/contents/{+path}", + compare_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/merges", + archive_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/downloads", + issues_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/issues{/number}", + pulls_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/labels{/name}", + releases_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/releases{/id}", + deployments_url: "https://api.github.com/repos/ubq-testing/ubiquity-os-plugin-installer/deployments", + created_at: "2024-11-07T19:30:58Z", + updated_at: "2024-11-26T13:55:47Z", + pushed_at: "2024-11-30T00:39:08Z", + git_url: "git://github.com/ubq-testing/ubiquity-os-plugin-installer.git", + ssh_url: "git@github.com:ubq-testing/ubiquity-os-plugin-installer.git", + clone_url: "https://github.com/ubq-testing/ubiquity-os-plugin-installer.git", + svn_url: "https://github.com/ubq-testing/ubiquity-os-plugin-installer", + homepage: "", + size: 1032, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: false, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 0, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 0, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 0, + open_issues: 0, + watchers: 0, + default_branch: "main", + }, + }, + base: { + label: "ubiquity-os:main", + ref: "main", + sha: "b52f2db5db8cdd95fe895b70d295c249c17eea61", + user: { + login: "ubiquity-os", + id: 160213852, + node_id: "O_kgDOCYyrXA", + avatar_url: "https://avatars.githubusercontent.com/u/160213852?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os", + html_url: "https://github.com/ubiquity-os", + followers_url: "https://api.github.com/users/ubiquity-os/followers", + following_url: "https://api.github.com/users/ubiquity-os/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os/orgs", + repos_url: "https://api.github.com/users/ubiquity-os/repos", + events_url: "https://api.github.com/users/ubiquity-os/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 857861120, + node_id: "R_kgDOMyHsAA", + name: "ubiquity-os-plugin-installer", + full_name: "ubiquity-os/ubiquity-os-plugin-installer", + private: false, + owner: { + login: "ubiquity-os", + id: 160213852, + node_id: "O_kgDOCYyrXA", + avatar_url: "https://avatars.githubusercontent.com/u/160213852?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os", + html_url: "https://github.com/ubiquity-os", + followers_url: "https://api.github.com/users/ubiquity-os/followers", + following_url: "https://api.github.com/users/ubiquity-os/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os/orgs", + repos_url: "https://api.github.com/users/ubiquity-os/repos", + events_url: "https://api.github.com/users/ubiquity-os/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os/ubiquity-os-plugin-installer", + description: "A GUI to install UbiquityOS plugins.", + fork: false, + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer", + forks_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/forks", + keys_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/events", + assignees_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/merges", + archive_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/deployments", + created_at: "2024-09-15T19:44:31Z", + updated_at: "2024-12-11T07:47:48Z", + pushed_at: "2024-12-11T07:50:23Z", + git_url: "git://github.com/ubiquity-os/ubiquity-os-plugin-installer.git", + ssh_url: "git@github.com:ubiquity-os/ubiquity-os-plugin-installer.git", + clone_url: "https://github.com/ubiquity-os/ubiquity-os-plugin-installer.git", + svn_url: "https://github.com/ubiquity-os/ubiquity-os-plugin-installer", + homepage: "", + size: 1043, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 9, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 9, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 9, + open_issues: 9, + watchers: 0, + default_branch: "main", + }, + }, + _links: { + self: { + href: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls/28", + }, + html: { + href: "https://github.com/ubiquity-os/ubiquity-os-plugin-installer/pull/28", + }, + issue: { + href: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/28", + }, + comments: { + href: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/28/comments", + }, + review_comments: { + href: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls/28/comments", + }, + review_comment: { + href: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls/comments{/number}", + }, + commits: { + href: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/pulls/28/commits", + }, + statuses: { + href: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/statuses/ddbcb52aa548d3392ab6c91824566ca5bfedf6a7", + }, + }, + author_association: "MEMBER", + auto_merge: null, + active_lock_reason: null, + merged: false, + mergeable: null, + rebaseable: null, + mergeable_state: "unknown", + merged_by: null, + comments: 2, + review_comments: 0, + maintainer_can_modify: false, + commits: 6, + additions: 492, + deletions: 36, + changed_files: 14, + }, + issue: { + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/22", + repository_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer", + labels_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/22/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/22/comments", + events_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/22/events", + html_url: "https://github.com/ubiquity-os/ubiquity-os-plugin-installer/issues/22", + id: 2661874242, + node_id: "I_kwDOMyHsAM6eqPpC", + number: 22, + title: "Predefined configs", + user: { + login: "rndquu", + id: 119500907, + node_id: "U_kgDOBx9waw", + avatar_url: "https://avatars.githubusercontent.com/u/119500907?v=4", + gravatar_id: "", + url: "https://api.github.com/users/rndquu", + html_url: "https://github.com/rndquu", + followers_url: "https://api.github.com/users/rndquu/followers", + following_url: "https://api.github.com/users/rndquu/following{/other_user}", + gists_url: "https://api.github.com/users/rndquu/gists{/gist_id}", + starred_url: "https://api.github.com/users/rndquu/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/rndquu/subscriptions", + organizations_url: "https://api.github.com/users/rndquu/orgs", + repos_url: "https://api.github.com/users/rndquu/repos", + events_url: "https://api.github.com/users/rndquu/events{/privacy}", + received_events_url: "https://api.github.com/users/rndquu/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 7469052352, + node_id: "LA_kwDOMyHsAM8AAAABvTCxwA", + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels/Price:%20150%20USD", + name: "Price: 150 USD", + color: "1f883d", + default: false, + description: null, + }, + { + id: 7469052407, + node_id: "LA_kwDOMyHsAM8AAAABvTCx9w", + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels/Time:%20%3C2%20Hours", + name: "Time: <2 Hours", + color: "ededed", + default: false, + description: null, + }, + { + id: 7469052421, + node_id: "LA_kwDOMyHsAM8AAAABvTCyBQ", + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/labels/Priority:%203%20(High)", + name: "Priority: 3 (High)", + color: "ededed", + default: false, + description: null, + }, + ], + state: "open", + locked: false, + assignee: { + login: "Keyrxng", + id: 106303466, + node_id: "U_kgDOBlYP6g", + avatar_url: "https://avatars.githubusercontent.com/u/106303466?v=4", + gravatar_id: "", + url: "https://api.github.com/users/Keyrxng", + html_url: "https://github.com/Keyrxng", + followers_url: "https://api.github.com/users/Keyrxng/followers", + following_url: "https://api.github.com/users/Keyrxng/following{/other_user}", + gists_url: "https://api.github.com/users/Keyrxng/gists{/gist_id}", + starred_url: "https://api.github.com/users/Keyrxng/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/Keyrxng/subscriptions", + organizations_url: "https://api.github.com/users/Keyrxng/orgs", + repos_url: "https://api.github.com/users/Keyrxng/repos", + events_url: "https://api.github.com/users/Keyrxng/events{/privacy}", + received_events_url: "https://api.github.com/users/Keyrxng/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + assignees: [ + { + login: "Keyrxng", + id: 106303466, + node_id: "U_kgDOBlYP6g", + avatar_url: "https://avatars.githubusercontent.com/u/106303466?v=4", + gravatar_id: "", + url: "https://api.github.com/users/Keyrxng", + html_url: "https://github.com/Keyrxng", + followers_url: "https://api.github.com/users/Keyrxng/followers", + following_url: "https://api.github.com/users/Keyrxng/following{/other_user}", + gists_url: "https://api.github.com/users/Keyrxng/gists{/gist_id}", + starred_url: "https://api.github.com/users/Keyrxng/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/Keyrxng/subscriptions", + organizations_url: "https://api.github.com/users/Keyrxng/orgs", + repos_url: "https://api.github.com/users/Keyrxng/repos", + events_url: "https://api.github.com/users/Keyrxng/events{/privacy}", + received_events_url: "https://api.github.com/users/Keyrxng/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + milestone: null, + comments: 5, + created_at: "2024-11-15T12:50:07Z", + updated_at: "2024-12-10T06:52:30Z", + closed_at: null, + author_association: "MEMBER", + active_lock_reason: null, + body: "Depends on https://github.com/ubiquity-os/ubiquity-os-plugin-installer/pull/13\r\n\r\nRight now partner is able to setup bot config individually per plugin.\r\n\r\nWe should offer predefined configs so that instead of customizing each plugin individually partner could simply select a predefined config.\r\n\r\nSimply put partner should be able to:\r\n1. Setup each plugin individually (already implemented)\r\n2. Create a new config from a predefined config template in one click\r\n\r\nFor the start I think we should support 2 config templates:\r\n1. Config with all plugins from https://github.com/ubiquity-os-marketplace and all default values\r\n2. Minimal:\r\n - https://github.com/ubiquity-os-marketplace/command-start-stop\r\n - https://github.com/ubiquity-os-marketplace/daemon-pricing\r\n - https://github.com/ubiquity-os-marketplace/text-conversation-rewards\r\n\r\nNotice: the UI should support multiple predefined configs.", + closed_by: null, + reactions: { + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/22/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-plugin-installer/issues/22/timeline", + performed_via_github_app: null, + state_reason: null, + }, + backlinkCount: 0, + }, + { + notification: { + id: "13764100109", + unread: true, + reason: "review_requested", + updated_at: "2024-12-12T07:14:09Z", + last_read_at: "2024-12-12T06:33:53Z", + subject: { + title: "fix: pull-request state adjustments", + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/61", + latest_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/61", + type: "PullRequest", + }, + repository: { + id: 809291952, + node_id: "R_kgDOMDzQsA", + name: "daemon-disqualifier", + full_name: "ubiquity-os-marketplace/daemon-disqualifier", + private: false, + owner: { + login: "ubiquity-os-marketplace", + id: 182627615, + node_id: "O_kgDOCuKtHw", + avatar_url: "https://avatars.githubusercontent.com/u/182627615?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os-marketplace", + html_url: "https://github.com/ubiquity-os-marketplace", + followers_url: "https://api.github.com/users/ubiquity-os-marketplace/followers", + following_url: "https://api.github.com/users/ubiquity-os-marketplace/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os-marketplace/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os-marketplace/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os-marketplace/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os-marketplace/orgs", + repos_url: "https://api.github.com/users/ubiquity-os-marketplace/repos", + events_url: "https://api.github.com/users/ubiquity-os-marketplace/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os-marketplace/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier", + description: "Follows up on user activities related to task, sends reminders, and unassign inactive users.", + fork: false, + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier", + forks_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/forks", + keys_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/events", + assignees_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/merges", + archive_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/deployments", + }, + url: "https://api.github.com/notifications/threads/13764100109", + subscription_url: "https://api.github.com/notifications/threads/13764100109/subscription", + }, + pullRequest: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/61", + id: 2223603463, + node_id: "PR_kwDOMDzQsM6EiX8H", + html_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier/pull/61", + diff_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier/pull/61.diff", + patch_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier/pull/61.patch", + issue_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/61", + number: 61, + state: "closed", + locked: false, + title: "fix: pull-request state adjustments", + user: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + body: 'Resolves #59\r\nQA: https://github.com/Meniole/daemon-disqualifier/pull/8#issuecomment-2529008128\r\n\r\n', + created_at: "2024-12-09T13:14:37Z", + updated_at: "2024-12-12T07:13:51Z", + closed_at: "2024-12-12T07:13:49Z", + merged_at: "2024-12-12T07:13:49Z", + merge_commit_sha: "e0cce5be74a0eb5711f033d03ee248d52536f70a", + assignee: null, + assignees: [], + requested_reviewers: [ + { + login: "0x4007", + id: 4975670, + node_id: "MDQ6VXNlcjQ5NzU2NzA=", + avatar_url: "https://avatars.githubusercontent.com/u/4975670?v=4", + gravatar_id: "", + url: "https://api.github.com/users/0x4007", + html_url: "https://github.com/0x4007", + followers_url: "https://api.github.com/users/0x4007/followers", + following_url: "https://api.github.com/users/0x4007/following{/other_user}", + gists_url: "https://api.github.com/users/0x4007/gists{/gist_id}", + starred_url: "https://api.github.com/users/0x4007/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/0x4007/subscriptions", + organizations_url: "https://api.github.com/users/0x4007/orgs", + repos_url: "https://api.github.com/users/0x4007/repos", + events_url: "https://api.github.com/users/0x4007/events{/privacy}", + received_events_url: "https://api.github.com/users/0x4007/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + requested_teams: [], + labels: [], + milestone: null, + draft: false, + commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/61/commits", + review_comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/61/comments", + review_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/comments{/number}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/61/comments", + statuses_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/statuses/820e814aef1acadf4a03112cbe4774d21ad38a49", + head: { + label: "gentlementlegen:fix/pr-state", + ref: "fix/pr-state", + sha: "820e814aef1acadf4a03112cbe4774d21ad38a49", + user: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 809299952, + node_id: "R_kgDOMDzv8A", + name: "daemon-disqualifier", + full_name: "gentlementlegen/daemon-disqualifier", + private: false, + owner: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/gentlementlegen/daemon-disqualifier", + description: "Follows up on user activities related to task, sends reminders, and unassign inactive users.", + fork: true, + url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier", + forks_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/forks", + keys_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/teams", + hooks_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/hooks", + issue_events_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/issues/events{/number}", + events_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/events", + assignees_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/assignees{/user}", + branches_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/branches{/branch}", + tags_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/tags", + blobs_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/git/refs{/sha}", + trees_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/statuses/{sha}", + languages_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/languages", + stargazers_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/stargazers", + contributors_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/contributors", + subscribers_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/subscribers", + subscription_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/subscription", + commits_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/commits{/sha}", + git_commits_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/git/commits{/sha}", + comments_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/comments{/number}", + issue_comment_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/issues/comments{/number}", + contents_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/contents/{+path}", + compare_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/merges", + archive_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/downloads", + issues_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/issues{/number}", + pulls_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/pulls{/number}", + milestones_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/milestones{/number}", + notifications_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/labels{/name}", + releases_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/releases{/id}", + deployments_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/deployments", + created_at: "2024-06-02T09:53:17Z", + updated_at: "2024-12-12T09:34:40Z", + pushed_at: "2024-12-12T11:33:38Z", + git_url: "git://github.com/gentlementlegen/daemon-disqualifier.git", + ssh_url: "git@github.com:gentlementlegen/daemon-disqualifier.git", + clone_url: "https://github.com/gentlementlegen/daemon-disqualifier.git", + svn_url: "https://github.com/gentlementlegen/daemon-disqualifier", + homepage: null, + size: 5680, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: false, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 0, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 1, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 0, + open_issues: 1, + watchers: 0, + default_branch: "development", + }, + }, + base: { + label: "ubiquity-os-marketplace:development", + ref: "development", + sha: "0a815845617ada9307b3da7e97751b62aff2dbe4", + user: { + login: "ubiquity-os-marketplace", + id: 182627615, + node_id: "O_kgDOCuKtHw", + avatar_url: "https://avatars.githubusercontent.com/u/182627615?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os-marketplace", + html_url: "https://github.com/ubiquity-os-marketplace", + followers_url: "https://api.github.com/users/ubiquity-os-marketplace/followers", + following_url: "https://api.github.com/users/ubiquity-os-marketplace/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os-marketplace/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os-marketplace/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os-marketplace/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os-marketplace/orgs", + repos_url: "https://api.github.com/users/ubiquity-os-marketplace/repos", + events_url: "https://api.github.com/users/ubiquity-os-marketplace/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os-marketplace/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 809291952, + node_id: "R_kgDOMDzQsA", + name: "daemon-disqualifier", + full_name: "ubiquity-os-marketplace/daemon-disqualifier", + private: false, + owner: { + login: "ubiquity-os-marketplace", + id: 182627615, + node_id: "O_kgDOCuKtHw", + avatar_url: "https://avatars.githubusercontent.com/u/182627615?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os-marketplace", + html_url: "https://github.com/ubiquity-os-marketplace", + followers_url: "https://api.github.com/users/ubiquity-os-marketplace/followers", + following_url: "https://api.github.com/users/ubiquity-os-marketplace/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os-marketplace/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os-marketplace/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os-marketplace/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os-marketplace/orgs", + repos_url: "https://api.github.com/users/ubiquity-os-marketplace/repos", + events_url: "https://api.github.com/users/ubiquity-os-marketplace/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os-marketplace/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier", + description: "Follows up on user activities related to task, sends reminders, and unassign inactive users.", + fork: false, + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier", + forks_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/forks", + keys_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/events", + assignees_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/merges", + archive_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/deployments", + created_at: "2024-06-02T09:23:38Z", + updated_at: "2024-12-12T07:13:55Z", + pushed_at: "2024-12-12T07:13:49Z", + git_url: "git://github.com/ubiquity-os-marketplace/daemon-disqualifier.git", + ssh_url: "git@github.com:ubiquity-os-marketplace/daemon-disqualifier.git", + clone_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier.git", + svn_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier", + homepage: null, + size: 7114, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 13, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 9, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 13, + open_issues: 9, + watchers: 0, + default_branch: "development", + }, + }, + _links: { + self: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/61", + }, + html: { + href: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier/pull/61", + }, + issue: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/61", + }, + comments: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/61/comments", + }, + review_comments: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/61/comments", + }, + review_comment: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/comments{/number}", + }, + commits: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/61/commits", + }, + statuses: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/statuses/820e814aef1acadf4a03112cbe4774d21ad38a49", + }, + }, + author_association: "MEMBER", + auto_merge: null, + active_lock_reason: null, + merged: true, + mergeable: null, + rebaseable: null, + mergeable_state: "unknown", + merged_by: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + comments: 1, + review_comments: 8, + maintainer_can_modify: false, + commits: 19, + additions: 71, + deletions: 32, + changed_files: 9, + }, + issue: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/59", + repository_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/59/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/59/comments", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/59/events", + html_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier/issues/59", + id: 2717486939, + node_id: "I_kwDOMDzQsM6h-Y9b", + number: 59, + title: "Pull Request State Adjustments", + user: { + login: "0x4007", + id: 4975670, + node_id: "MDQ6VXNlcjQ5NzU2NzA=", + avatar_url: "https://avatars.githubusercontent.com/u/4975670?v=4", + gravatar_id: "", + url: "https://api.github.com/users/0x4007", + html_url: "https://github.com/0x4007", + followers_url: "https://api.github.com/users/0x4007/followers", + following_url: "https://api.github.com/users/0x4007/following{/other_user}", + gists_url: "https://api.github.com/users/0x4007/gists{/gist_id}", + starred_url: "https://api.github.com/users/0x4007/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/0x4007/subscriptions", + organizations_url: "https://api.github.com/users/0x4007/orgs", + repos_url: "https://api.github.com/users/0x4007/repos", + events_url: "https://api.github.com/users/0x4007/events{/privacy}", + received_events_url: "https://api.github.com/users/0x4007/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 7078200331, + node_id: "LA_kwDOMDzQsM8AAAABpeTECw", + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Time:%20%3C1%20Hour", + name: "Time: <1 Hour", + color: "ededed", + default: false, + description: null, + }, + { + id: 7078200640, + node_id: "LA_kwDOMDzQsM8AAAABpeTFQA", + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Priority:%203%20(High)", + name: "Priority: 3 (High)", + color: "ededed", + default: false, + description: null, + }, + { + id: 7354334675, + node_id: "LA_kwDOMDzQsM8AAAABtlo90w", + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Price:%2075%20USD", + name: "Price: 75 USD", + color: "1f883d", + default: false, + description: null, + }, + ], + state: "closed", + locked: false, + assignee: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + assignees: [ + { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + milestone: null, + comments: 16, + created_at: "2024-12-04T11:48:37Z", + updated_at: "2024-12-12T11:20:22Z", + closed_at: "2024-12-12T07:13:50Z", + author_association: "MEMBER", + active_lock_reason: null, + body: "- When a follow up occurs, the pull request should be turned into a draft.\r\n- If it is already a draft, only leave the follow up message.[^01^] \r\n- When a disqualification occurs, the pull request should be closed. \r\n\r\nContext: https://github.com/ubiquity-os/plugins-wishlist/issues/60#issuecomment-2516409360\r\n\r\nRationale: when a contributor converts from draft to ready, then that signals it is ready for review. \n\n[^01^]: âš  52% possible duplicate - [Reviewer Follow Ups](https://www.github.com/ubiquity-os-marketplace/daemon-disqualifier/issues/49#49)\n\n", + closed_by: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + reactions: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/59/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/59/timeline", + performed_via_github_app: null, + state_reason: "completed", + }, + backlinkCount: 0, + }, + { + notification: { + id: "13169768395", + unread: true, + reason: "mention", + updated_at: "2024-12-12T05:30:25Z", + last_read_at: "2024-12-04T11:53:58Z", + subject: { + title: "Disqualified early", + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/44", + latest_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/comments/2537848923", + type: "Issue", + }, + repository: { + id: 809291952, + node_id: "R_kgDOMDzQsA", + name: "daemon-disqualifier", + full_name: "ubiquity-os-marketplace/daemon-disqualifier", + private: false, + owner: { + login: "ubiquity-os-marketplace", + id: 182627615, + node_id: "O_kgDOCuKtHw", + avatar_url: "https://avatars.githubusercontent.com/u/182627615?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os-marketplace", + html_url: "https://github.com/ubiquity-os-marketplace", + followers_url: "https://api.github.com/users/ubiquity-os-marketplace/followers", + following_url: "https://api.github.com/users/ubiquity-os-marketplace/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os-marketplace/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os-marketplace/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os-marketplace/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os-marketplace/orgs", + repos_url: "https://api.github.com/users/ubiquity-os-marketplace/repos", + events_url: "https://api.github.com/users/ubiquity-os-marketplace/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os-marketplace/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier", + description: "Follows up on user activities related to task, sends reminders, and unassign inactive users.", + fork: false, + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier", + forks_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/forks", + keys_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/events", + assignees_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/merges", + archive_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/deployments", + }, + url: "https://api.github.com/notifications/threads/13169768395", + subscription_url: "https://api.github.com/notifications/threads/13169768395/subscription", + }, + pullRequest: null, + issue: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/44", + repository_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/44/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/44/comments", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/44/events", + html_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier/issues/44", + id: 2630698595, + node_id: "I_kwDOMDzQsM6czUZj", + number: 44, + title: "Disqualified early", + user: { + login: "whilefoo", + id: 139262667, + node_id: "U_kgDOCEz6yw", + avatar_url: "https://avatars.githubusercontent.com/u/139262667?v=4", + gravatar_id: "", + url: "https://api.github.com/users/whilefoo", + html_url: "https://github.com/whilefoo", + followers_url: "https://api.github.com/users/whilefoo/followers", + following_url: "https://api.github.com/users/whilefoo/following{/other_user}", + gists_url: "https://api.github.com/users/whilefoo/gists{/gist_id}", + starred_url: "https://api.github.com/users/whilefoo/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/whilefoo/subscriptions", + organizations_url: "https://api.github.com/users/whilefoo/orgs", + repos_url: "https://api.github.com/users/whilefoo/repos", + events_url: "https://api.github.com/users/whilefoo/events{/privacy}", + received_events_url: "https://api.github.com/users/whilefoo/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 7078200331, + node_id: "LA_kwDOMDzQsM8AAAABpeTECw", + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Time:%20%3C1%20Hour", + name: "Time: <1 Hour", + color: "ededed", + default: false, + description: null, + }, + { + id: 7078200640, + node_id: "LA_kwDOMDzQsM8AAAABpeTFQA", + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Priority:%203%20(High)", + name: "Priority: 3 (High)", + color: "ededed", + default: false, + description: null, + }, + { + id: 7354334675, + node_id: "LA_kwDOMDzQsM8AAAABtlo90w", + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Price:%2075%20USD", + name: "Price: 75 USD", + color: "1f883d", + default: false, + description: null, + }, + ], + state: "closed", + locked: false, + assignee: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + assignees: [ + { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + milestone: null, + comments: 10, + created_at: "2024-11-02T18:43:01Z", + updated_at: "2024-12-12T05:30:04Z", + closed_at: "2024-12-12T05:28:26Z", + author_association: "CONTRIBUTOR", + active_lock_reason: null, + body: "This is the [issue](https://github.com/ubiquity-os/ubiquity-os-kernel/issues/166) where I got disqualified 3 days earlier than the deadline\r\n\r\nWhen I started the task with `/start` on 28th October, the bot said the deadline is Sat, Nov 2, 2:36 PM UTC, however on 30th October, the bot said the deadline has passed and unassigned me\r\n\r\nFound another [issue](https://github.com/ubiquity-os/permit-generation/issues/71#issuecomment-2448881918) with the same problem\r\n", + closed_by: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + reactions: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/44/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/44/timeline", + performed_via_github_app: null, + state_reason: "completed", + }, + backlinkCount: 0, + }, + { + notification: { + id: "13580750889", + unread: true, + reason: "mention", + updated_at: "2024-12-12T05:28:45Z", + last_read_at: "2024-12-11T11:05:39Z", + subject: { + title: "feat: deadline-message", + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/54", + latest_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/54", + type: "PullRequest", + }, + repository: { + id: 809291952, + node_id: "R_kgDOMDzQsA", + name: "daemon-disqualifier", + full_name: "ubiquity-os-marketplace/daemon-disqualifier", + private: false, + owner: { + login: "ubiquity-os-marketplace", + id: 182627615, + node_id: "O_kgDOCuKtHw", + avatar_url: "https://avatars.githubusercontent.com/u/182627615?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os-marketplace", + html_url: "https://github.com/ubiquity-os-marketplace", + followers_url: "https://api.github.com/users/ubiquity-os-marketplace/followers", + following_url: "https://api.github.com/users/ubiquity-os-marketplace/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os-marketplace/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os-marketplace/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os-marketplace/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os-marketplace/orgs", + repos_url: "https://api.github.com/users/ubiquity-os-marketplace/repos", + events_url: "https://api.github.com/users/ubiquity-os-marketplace/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os-marketplace/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier", + description: "Follows up on user activities related to task, sends reminders, and unassign inactive users.", + fork: false, + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier", + forks_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/forks", + keys_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/events", + assignees_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/merges", + archive_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/deployments", + }, + url: "https://api.github.com/notifications/threads/13580750889", + subscription_url: "https://api.github.com/notifications/threads/13580750889/subscription", + }, + pullRequest: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/54", + id: 2203596653, + node_id: "PR_kwDOMDzQsM6DWDdt", + html_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier/pull/54", + diff_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier/pull/54.diff", + patch_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier/pull/54.patch", + issue_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/54", + number: 54, + state: "closed", + locked: false, + title: "feat: deadline-message", + user: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + body: 'Resolves #44\r\nQA: https://github.com/Meniole/daemon-disqualifier/issues/6#issuecomment-2504353561\r\n\r\n', + created_at: "2024-11-27T14:15:02Z", + updated_at: "2024-12-12T05:28:28Z", + closed_at: "2024-12-12T05:28:25Z", + merged_at: "2024-12-12T05:28:25Z", + merge_commit_sha: "0a815845617ada9307b3da7e97751b62aff2dbe4", + assignee: null, + assignees: [], + requested_reviewers: [ + { + login: "whilefoo", + id: 139262667, + node_id: "U_kgDOCEz6yw", + avatar_url: "https://avatars.githubusercontent.com/u/139262667?v=4", + gravatar_id: "", + url: "https://api.github.com/users/whilefoo", + html_url: "https://github.com/whilefoo", + followers_url: "https://api.github.com/users/whilefoo/followers", + following_url: "https://api.github.com/users/whilefoo/following{/other_user}", + gists_url: "https://api.github.com/users/whilefoo/gists{/gist_id}", + starred_url: "https://api.github.com/users/whilefoo/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/whilefoo/subscriptions", + organizations_url: "https://api.github.com/users/whilefoo/orgs", + repos_url: "https://api.github.com/users/whilefoo/repos", + events_url: "https://api.github.com/users/whilefoo/events{/privacy}", + received_events_url: "https://api.github.com/users/whilefoo/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + requested_teams: [], + labels: [], + milestone: null, + draft: false, + commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/54/commits", + review_comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/54/comments", + review_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/comments{/number}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/54/comments", + statuses_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/statuses/cfce4fd5b979b347bcdacc3022e54cad4c16fd49", + head: { + label: "gentlementlegen:feat/deadline-message", + ref: "feat/deadline-message", + sha: "cfce4fd5b979b347bcdacc3022e54cad4c16fd49", + user: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 809299952, + node_id: "R_kgDOMDzv8A", + name: "daemon-disqualifier", + full_name: "gentlementlegen/daemon-disqualifier", + private: false, + owner: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/gentlementlegen/daemon-disqualifier", + description: "Follows up on user activities related to task, sends reminders, and unassign inactive users.", + fork: true, + url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier", + forks_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/forks", + keys_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/teams", + hooks_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/hooks", + issue_events_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/issues/events{/number}", + events_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/events", + assignees_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/assignees{/user}", + branches_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/branches{/branch}", + tags_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/tags", + blobs_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/git/refs{/sha}", + trees_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/statuses/{sha}", + languages_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/languages", + stargazers_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/stargazers", + contributors_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/contributors", + subscribers_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/subscribers", + subscription_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/subscription", + commits_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/commits{/sha}", + git_commits_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/git/commits{/sha}", + comments_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/comments{/number}", + issue_comment_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/issues/comments{/number}", + contents_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/contents/{+path}", + compare_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/merges", + archive_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/downloads", + issues_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/issues{/number}", + pulls_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/pulls{/number}", + milestones_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/milestones{/number}", + notifications_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/labels{/name}", + releases_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/releases{/id}", + deployments_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/deployments", + created_at: "2024-06-02T09:53:17Z", + updated_at: "2024-12-12T09:34:40Z", + pushed_at: "2024-12-12T11:33:38Z", + git_url: "git://github.com/gentlementlegen/daemon-disqualifier.git", + ssh_url: "git@github.com:gentlementlegen/daemon-disqualifier.git", + clone_url: "https://github.com/gentlementlegen/daemon-disqualifier.git", + svn_url: "https://github.com/gentlementlegen/daemon-disqualifier", + homepage: null, + size: 5680, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: false, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 0, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 1, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 0, + open_issues: 1, + watchers: 0, + default_branch: "development", + }, + }, + base: { + label: "ubiquity-os-marketplace:development", + ref: "development", + sha: "ac47cf55d59f1e393bcdfb30c7f039f758a56a95", + user: { + login: "ubiquity-os-marketplace", + id: 182627615, + node_id: "O_kgDOCuKtHw", + avatar_url: "https://avatars.githubusercontent.com/u/182627615?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os-marketplace", + html_url: "https://github.com/ubiquity-os-marketplace", + followers_url: "https://api.github.com/users/ubiquity-os-marketplace/followers", + following_url: "https://api.github.com/users/ubiquity-os-marketplace/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os-marketplace/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os-marketplace/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os-marketplace/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os-marketplace/orgs", + repos_url: "https://api.github.com/users/ubiquity-os-marketplace/repos", + events_url: "https://api.github.com/users/ubiquity-os-marketplace/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os-marketplace/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 809291952, + node_id: "R_kgDOMDzQsA", + name: "daemon-disqualifier", + full_name: "ubiquity-os-marketplace/daemon-disqualifier", + private: false, + owner: { + login: "ubiquity-os-marketplace", + id: 182627615, + node_id: "O_kgDOCuKtHw", + avatar_url: "https://avatars.githubusercontent.com/u/182627615?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os-marketplace", + html_url: "https://github.com/ubiquity-os-marketplace", + followers_url: "https://api.github.com/users/ubiquity-os-marketplace/followers", + following_url: "https://api.github.com/users/ubiquity-os-marketplace/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os-marketplace/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os-marketplace/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os-marketplace/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os-marketplace/orgs", + repos_url: "https://api.github.com/users/ubiquity-os-marketplace/repos", + events_url: "https://api.github.com/users/ubiquity-os-marketplace/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os-marketplace/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier", + description: "Follows up on user activities related to task, sends reminders, and unassign inactive users.", + fork: false, + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier", + forks_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/forks", + keys_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/events", + assignees_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/merges", + archive_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/deployments", + created_at: "2024-06-02T09:23:38Z", + updated_at: "2024-12-12T07:13:55Z", + pushed_at: "2024-12-12T07:13:49Z", + git_url: "git://github.com/ubiquity-os-marketplace/daemon-disqualifier.git", + ssh_url: "git@github.com:ubiquity-os-marketplace/daemon-disqualifier.git", + clone_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier.git", + svn_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier", + homepage: null, + size: 7114, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 13, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 9, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 13, + open_issues: 9, + watchers: 0, + default_branch: "development", + }, + }, + _links: { + self: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/54", + }, + html: { + href: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier/pull/54", + }, + issue: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/54", + }, + comments: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/54/comments", + }, + review_comments: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/54/comments", + }, + review_comment: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/comments{/number}", + }, + commits: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/54/commits", + }, + statuses: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/statuses/cfce4fd5b979b347bcdacc3022e54cad4c16fd49", + }, + }, + author_association: "MEMBER", + auto_merge: null, + active_lock_reason: null, + merged: true, + mergeable: null, + rebaseable: null, + mergeable_state: "unknown", + merged_by: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + comments: 14, + review_comments: 20, + maintainer_can_modify: false, + commits: 49, + additions: 177, + deletions: 63090, + changed_files: 20, + }, + issue: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/44", + repository_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/44/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/44/comments", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/44/events", + html_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier/issues/44", + id: 2630698595, + node_id: "I_kwDOMDzQsM6czUZj", + number: 44, + title: "Disqualified early", + user: { + login: "whilefoo", + id: 139262667, + node_id: "U_kgDOCEz6yw", + avatar_url: "https://avatars.githubusercontent.com/u/139262667?v=4", + gravatar_id: "", + url: "https://api.github.com/users/whilefoo", + html_url: "https://github.com/whilefoo", + followers_url: "https://api.github.com/users/whilefoo/followers", + following_url: "https://api.github.com/users/whilefoo/following{/other_user}", + gists_url: "https://api.github.com/users/whilefoo/gists{/gist_id}", + starred_url: "https://api.github.com/users/whilefoo/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/whilefoo/subscriptions", + organizations_url: "https://api.github.com/users/whilefoo/orgs", + repos_url: "https://api.github.com/users/whilefoo/repos", + events_url: "https://api.github.com/users/whilefoo/events{/privacy}", + received_events_url: "https://api.github.com/users/whilefoo/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 7078200331, + node_id: "LA_kwDOMDzQsM8AAAABpeTECw", + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Time:%20%3C1%20Hour", + name: "Time: <1 Hour", + color: "ededed", + default: false, + description: null, + }, + { + id: 7078200640, + node_id: "LA_kwDOMDzQsM8AAAABpeTFQA", + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Priority:%203%20(High)", + name: "Priority: 3 (High)", + color: "ededed", + default: false, + description: null, + }, + { + id: 7354334675, + node_id: "LA_kwDOMDzQsM8AAAABtlo90w", + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Price:%2075%20USD", + name: "Price: 75 USD", + color: "1f883d", + default: false, + description: null, + }, + ], + state: "closed", + locked: false, + assignee: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + assignees: [ + { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + milestone: null, + comments: 10, + created_at: "2024-11-02T18:43:01Z", + updated_at: "2024-12-12T05:30:04Z", + closed_at: "2024-12-12T05:28:26Z", + author_association: "CONTRIBUTOR", + active_lock_reason: null, + body: "This is the [issue](https://github.com/ubiquity-os/ubiquity-os-kernel/issues/166) where I got disqualified 3 days earlier than the deadline\r\n\r\nWhen I started the task with `/start` on 28th October, the bot said the deadline is Sat, Nov 2, 2:36 PM UTC, however on 30th October, the bot said the deadline has passed and unassigned me\r\n\r\nFound another [issue](https://github.com/ubiquity-os/permit-generation/issues/71#issuecomment-2448881918) with the same problem\r\n", + closed_by: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + reactions: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/44/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/44/timeline", + performed_via_github_app: null, + state_reason: "completed", + }, + backlinkCount: 0, + }, + { + notification: { + id: "11261309716", + unread: true, + reason: "mention", + updated_at: "2024-12-03T18:47:59Z", + last_read_at: "2024-12-02T10:07:06Z", + subject: { + title: 'Toy "Demo" Illustrating the Flow', + url: "https://api.github.com/repos/ubiquity/ubq.fi/issues/29", + latest_comment_url: "https://api.github.com/repos/ubiquity/ubq.fi/issues/comments/2515333322", + type: "Issue", + }, + repository: { + id: 538448655, + node_id: "R_kgDOIBgTDw", + name: "ubq.fi", + full_name: "ubiquity/ubq.fi", + private: false, + owner: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity/ubq.fi", + description: "The home page for Ubiquity.", + fork: false, + url: "https://api.github.com/repos/ubiquity/ubq.fi", + forks_url: "https://api.github.com/repos/ubiquity/ubq.fi/forks", + keys_url: "https://api.github.com/repos/ubiquity/ubq.fi/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity/ubq.fi/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity/ubq.fi/teams", + hooks_url: "https://api.github.com/repos/ubiquity/ubq.fi/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity/ubq.fi/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity/ubq.fi/events", + assignees_url: "https://api.github.com/repos/ubiquity/ubq.fi/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity/ubq.fi/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity/ubq.fi/tags", + blobs_url: "https://api.github.com/repos/ubiquity/ubq.fi/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity/ubq.fi/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity/ubq.fi/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity/ubq.fi/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity/ubq.fi/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity/ubq.fi/languages", + stargazers_url: "https://api.github.com/repos/ubiquity/ubq.fi/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity/ubq.fi/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity/ubq.fi/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity/ubq.fi/subscription", + commits_url: "https://api.github.com/repos/ubiquity/ubq.fi/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity/ubq.fi/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity/ubq.fi/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity/ubq.fi/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity/ubq.fi/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity/ubq.fi/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity/ubq.fi/merges", + archive_url: "https://api.github.com/repos/ubiquity/ubq.fi/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity/ubq.fi/downloads", + issues_url: "https://api.github.com/repos/ubiquity/ubq.fi/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity/ubq.fi/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity/ubq.fi/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity/ubq.fi/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity/ubq.fi/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity/ubq.fi/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity/ubq.fi/deployments", + }, + url: "https://api.github.com/notifications/threads/11261309716", + subscription_url: "https://api.github.com/notifications/threads/11261309716/subscription", + }, + pullRequest: null, + issue: { + url: "https://api.github.com/repos/ubiquity/ubq.fi/issues/29", + repository_url: "https://api.github.com/repos/ubiquity/ubq.fi", + labels_url: "https://api.github.com/repos/ubiquity/ubq.fi/issues/29/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity/ubq.fi/issues/29/comments", + events_url: "https://api.github.com/repos/ubiquity/ubq.fi/issues/29/events", + html_url: "https://github.com/ubiquity/ubq.fi/issues/29", + id: 2376041678, + node_id: "I_kwDOIBgTD86Nn4TO", + number: 29, + title: 'Toy "Demo" Illustrating the Flow', + user: { + login: "0x4007", + id: 4975670, + node_id: "MDQ6VXNlcjQ5NzU2NzA=", + avatar_url: "https://avatars.githubusercontent.com/u/4975670?v=4", + gravatar_id: "", + url: "https://api.github.com/users/0x4007", + html_url: "https://github.com/0x4007", + followers_url: "https://api.github.com/users/0x4007/followers", + following_url: "https://api.github.com/users/0x4007/following{/other_user}", + gists_url: "https://api.github.com/users/0x4007/gists{/gist_id}", + starred_url: "https://api.github.com/users/0x4007/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/0x4007/subscriptions", + organizations_url: "https://api.github.com/users/0x4007/orgs", + repos_url: "https://api.github.com/users/0x4007/repos", + events_url: "https://api.github.com/users/0x4007/events{/privacy}", + received_events_url: "https://api.github.com/users/0x4007/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 5348034116, + node_id: "LA_kwDOIBgTD88AAAABPsSGRA", + url: "https://api.github.com/repos/ubiquity/ubq.fi/labels/Time:%20%3C1%20Week", + name: "Time: <1 Week", + color: "ededed", + default: false, + description: null, + }, + { + id: 6498679050, + node_id: "LA_kwDOIBgTD88AAAABg1n5Cg", + url: "https://api.github.com/repos/ubiquity/ubq.fi/labels/Priority:%203%20(High)", + name: "Priority: 3 (High)", + color: "ededed", + default: false, + description: null, + }, + { + id: 7130901582, + node_id: "LA_kwDOIBgTD88AAAABqQjsTg", + url: "https://api.github.com/repos/ubiquity/ubq.fi/labels/Price:%201200%20USD", + name: "Price: 1200 USD", + color: "1f883d", + default: false, + description: null, + }, + ], + state: "open", + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 58, + created_at: "2024-06-26T18:45:30Z", + updated_at: "2024-12-03T18:47:38Z", + closed_at: null, + author_association: "MEMBER", + active_lock_reason: null, + body: '![dxos org_](https://github.com/ubiquity/ubq.fi/assets/4975670/3d7044f1-ee8f-45c1-a933-53028fa904bc)\r\n\r\n[DXOS](https://dxos.org/) demonstrates their tech above-the-fold, which is the most concise way to explain their offering.\r\n\r\nWe should make a simple example like this that is a simplified model of our flow. \r\n\r\nFor example:\r\n\r\n- There is a simple description "Move the box" \r\n- There already is a priority level set\r\n- User is prompted to set a time estimate\r\n- It shows the price label\r\n- It prompts the user to "start" the task\r\n- It renders a box that you can drag and drop to a goal box. \r\n- As soon as its complete, a payment permit is shown with the reward\r\n- The user can actually claim an NFT etc. \r\n\r\nThis can be handled in a separate repo and we can iframe it in since this seems a bit involved. Also I think we need to create an NFT contract for this demo. \r\n', + closed_by: null, + reactions: { + url: "https://api.github.com/repos/ubiquity/ubq.fi/issues/29/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity/ubq.fi/issues/29/timeline", + performed_via_github_app: null, + state_reason: null, + }, + backlinkCount: 0, + }, + { + notification: { + id: "13665641225", + unread: true, + reason: "review_requested", + updated_at: "2024-12-03T08:26:14Z", + last_read_at: "2024-12-03T07:55:51Z", + subject: { + title: "fix: refactor getPluginOptions function and default kernel public key", + url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/pulls/37", + latest_comment_url: null, + type: "PullRequest", + }, + repository: { + id: 884768435, + node_id: "R_kgDONLx-sw", + name: "plugin-sdk", + full_name: "ubiquity-os/plugin-sdk", + private: false, + owner: { + login: "ubiquity-os", + id: 160213852, + node_id: "O_kgDOCYyrXA", + avatar_url: "https://avatars.githubusercontent.com/u/160213852?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os", + html_url: "https://github.com/ubiquity-os", + followers_url: "https://api.github.com/users/ubiquity-os/followers", + following_url: "https://api.github.com/users/ubiquity-os/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os/orgs", + repos_url: "https://api.github.com/users/ubiquity-os/repos", + events_url: "https://api.github.com/users/ubiquity-os/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os/plugin-sdk", + description: "SDK to facilitate creating plugins.", + fork: false, + url: "https://api.github.com/repos/ubiquity-os/plugin-sdk", + forks_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/forks", + keys_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/events", + assignees_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/merges", + archive_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/deployments", + }, + url: "https://api.github.com/notifications/threads/13665641225", + subscription_url: "https://api.github.com/notifications/threads/13665641225/subscription", + }, + pullRequest: { + url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/pulls/37", + id: 2212023096, + node_id: "PR_kwDONLx-s86D2Ms4", + html_url: "https://github.com/ubiquity-os/plugin-sdk/pull/37", + diff_url: "https://github.com/ubiquity-os/plugin-sdk/pull/37.diff", + patch_url: "https://github.com/ubiquity-os/plugin-sdk/pull/37.patch", + issue_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/issues/37", + number: 37, + state: "closed", + locked: false, + title: "fix: refactor getPluginOptions function and default kernel public key", + user: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + body: 'Resolves #36\n\n\n', + created_at: "2024-12-03T06:57:47Z", + updated_at: "2024-12-03T08:25:53Z", + closed_at: "2024-12-03T08:20:36Z", + merged_at: "2024-12-03T08:20:36Z", + merge_commit_sha: "cdbdd6270f92f42d13071210d42284eac8af5360", + assignee: null, + assignees: [], + requested_reviewers: [], + requested_teams: [], + labels: [], + milestone: null, + draft: false, + commits_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/pulls/37/commits", + review_comments_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/pulls/37/comments", + review_comment_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/pulls/comments{/number}", + comments_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/issues/37/comments", + statuses_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/statuses/49d234e98aa72f2f79c92a56ffbf0c14861030ee", + head: { + label: "gentlementlegen:fix/kernel-key", + ref: "fix/kernel-key", + sha: "49d234e98aa72f2f79c92a56ffbf0c14861030ee", + user: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 885200746, + node_id: "R_kgDONMMXag", + name: "plugin-sdk", + full_name: "gentlementlegen/plugin-sdk", + private: false, + owner: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/gentlementlegen/plugin-sdk", + description: "SDK to facilitate creating plugins.", + fork: true, + url: "https://api.github.com/repos/gentlementlegen/plugin-sdk", + forks_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/forks", + keys_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/teams", + hooks_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/hooks", + issue_events_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/issues/events{/number}", + events_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/events", + assignees_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/assignees{/user}", + branches_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/branches{/branch}", + tags_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/tags", + blobs_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/git/refs{/sha}", + trees_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/statuses/{sha}", + languages_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/languages", + stargazers_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/stargazers", + contributors_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/contributors", + subscribers_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/subscribers", + subscription_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/subscription", + commits_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/commits{/sha}", + git_commits_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/git/commits{/sha}", + comments_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/comments{/number}", + issue_comment_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/issues/comments{/number}", + contents_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/contents/{+path}", + compare_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/merges", + archive_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/downloads", + issues_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/issues{/number}", + pulls_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/pulls{/number}", + milestones_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/milestones{/number}", + notifications_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/labels{/name}", + releases_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/releases{/id}", + deployments_url: "https://api.github.com/repos/gentlementlegen/plugin-sdk/deployments", + created_at: "2024-11-08T06:30:56Z", + updated_at: "2024-11-24T23:40:21Z", + pushed_at: "2024-12-03T08:21:49Z", + git_url: "git://github.com/gentlementlegen/plugin-sdk.git", + ssh_url: "git@github.com:gentlementlegen/plugin-sdk.git", + clone_url: "https://github.com/gentlementlegen/plugin-sdk.git", + svn_url: "https://github.com/gentlementlegen/plugin-sdk", + homepage: null, + size: 1388, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: false, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 0, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 0, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 0, + open_issues: 0, + watchers: 0, + default_branch: "development", + }, + }, + base: { + label: "ubiquity-os:development", + ref: "development", + sha: "9c262705d319acc9f89e32d5b3f051fd93d8c89d", + user: { + login: "ubiquity-os", + id: 160213852, + node_id: "O_kgDOCYyrXA", + avatar_url: "https://avatars.githubusercontent.com/u/160213852?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os", + html_url: "https://github.com/ubiquity-os", + followers_url: "https://api.github.com/users/ubiquity-os/followers", + following_url: "https://api.github.com/users/ubiquity-os/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os/orgs", + repos_url: "https://api.github.com/users/ubiquity-os/repos", + events_url: "https://api.github.com/users/ubiquity-os/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 884768435, + node_id: "R_kgDONLx-sw", + name: "plugin-sdk", + full_name: "ubiquity-os/plugin-sdk", + private: false, + owner: { + login: "ubiquity-os", + id: 160213852, + node_id: "O_kgDOCYyrXA", + avatar_url: "https://avatars.githubusercontent.com/u/160213852?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os", + html_url: "https://github.com/ubiquity-os", + followers_url: "https://api.github.com/users/ubiquity-os/followers", + following_url: "https://api.github.com/users/ubiquity-os/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os/orgs", + repos_url: "https://api.github.com/users/ubiquity-os/repos", + events_url: "https://api.github.com/users/ubiquity-os/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os/plugin-sdk", + description: "SDK to facilitate creating plugins.", + fork: false, + url: "https://api.github.com/repos/ubiquity-os/plugin-sdk", + forks_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/forks", + keys_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/events", + assignees_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/merges", + archive_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/deployments", + created_at: "2024-11-07T11:02:02Z", + updated_at: "2024-12-03T08:20:40Z", + pushed_at: "2024-12-03T08:24:21Z", + git_url: "git://github.com/ubiquity-os/plugin-sdk.git", + ssh_url: "git@github.com:ubiquity-os/plugin-sdk.git", + clone_url: "https://github.com/ubiquity-os/plugin-sdk.git", + svn_url: "https://github.com/ubiquity-os/plugin-sdk", + homepage: null, + size: 1575, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 4, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 5, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 4, + open_issues: 5, + watchers: 0, + default_branch: "development", + }, + }, + _links: { + self: { + href: "https://api.github.com/repos/ubiquity-os/plugin-sdk/pulls/37", + }, + html: { + href: "https://github.com/ubiquity-os/plugin-sdk/pull/37", + }, + issue: { + href: "https://api.github.com/repos/ubiquity-os/plugin-sdk/issues/37", + }, + comments: { + href: "https://api.github.com/repos/ubiquity-os/plugin-sdk/issues/37/comments", + }, + review_comments: { + href: "https://api.github.com/repos/ubiquity-os/plugin-sdk/pulls/37/comments", + }, + review_comment: { + href: "https://api.github.com/repos/ubiquity-os/plugin-sdk/pulls/comments{/number}", + }, + commits: { + href: "https://api.github.com/repos/ubiquity-os/plugin-sdk/pulls/37/commits", + }, + statuses: { + href: "https://api.github.com/repos/ubiquity-os/plugin-sdk/statuses/49d234e98aa72f2f79c92a56ffbf0c14861030ee", + }, + }, + author_association: "MEMBER", + auto_merge: null, + active_lock_reason: null, + merged: true, + mergeable: null, + rebaseable: null, + mergeable_state: "unknown", + merged_by: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + comments: 0, + review_comments: 8, + maintainer_can_modify: false, + commits: 1, + additions: 51, + deletions: 53, + changed_files: 5, + }, + issue: { + url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/issues/36", + repository_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk", + labels_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/issues/36/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/issues/36/comments", + events_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/issues/36/events", + html_url: "https://github.com/ubiquity-os/plugin-sdk/issues/36", + id: 2714041706, + node_id: "I_kwDONLx-s86hxP1q", + number: 36, + title: "Runs triggered with `KERNEL_PUBLIC_KEY` empty fail", + user: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 7726314376, + node_id: "LA_kwDONLx-s88AAAABzIYziA", + url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/labels/Price:%2018%20USD", + name: "Price: 18 USD", + color: "1f883d", + default: false, + description: null, + }, + { + id: 7726314428, + node_id: "LA_kwDONLx-s88AAAABzIYzvA", + url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/labels/Time:%20%3C15%20Minutes", + name: "Time: <15 Minutes", + color: "ededed", + default: false, + description: null, + }, + { + id: 7726314453, + node_id: "LA_kwDONLx-s88AAAABzIYz1Q", + url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/labels/Priority:%203%20(High)", + name: "Priority: 3 (High)", + color: "ededed", + default: false, + description: null, + }, + ], + state: "closed", + locked: false, + assignee: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + assignees: [ + { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + milestone: null, + comments: 5, + created_at: "2024-12-02T21:52:52Z", + updated_at: "2024-12-04T02:28:16Z", + closed_at: "2024-12-04T02:27:18Z", + author_association: "MEMBER", + active_lock_reason: null, + body: 'When no `KERNEL_PUBLIC_KEY` is supplied, the runs fail saying the given key is too short. My suspicion is that the default key is not used but `""` is used instead. See this run for reference: https://github.com/ubiquity-os-marketplace/daemon-pricing/actions/runs/12128570532/job/33815214041\r\n\r\nSDKs will need to get updated across plugins as well.', + closed_by: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + reactions: { + url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/issues/36/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity-os/plugin-sdk/issues/36/timeline", + performed_via_github_app: null, + state_reason: "completed", + }, + backlinkCount: 0, + }, + { + notification: { + id: "10572933293", + unread: true, + reason: "author", + updated_at: "2024-12-02T18:19:37Z", + last_read_at: "2024-10-07T07:18:22Z", + subject: { + title: "Final Pre-Seed/Seed Investor Debt UBQ", + url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/937", + latest_comment_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/comments/2512341191", + type: "Issue", + }, + repository: { + id: 394777862, + node_id: "MDEwOlJlcG9zaXRvcnkzOTQ3Nzc4NjI=", + name: "ubiquity-dollar", + full_name: "ubiquity/ubiquity-dollar", + private: false, + owner: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity/ubiquity-dollar", + description: "Ubiquity Dollar (UUSD) smart contracts and user interface.", + fork: false, + url: "https://api.github.com/repos/ubiquity/ubiquity-dollar", + forks_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/forks", + keys_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/teams", + hooks_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/events", + assignees_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/tags", + blobs_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/languages", + stargazers_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/subscription", + commits_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/merges", + archive_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/downloads", + issues_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/deployments", + }, + url: "https://api.github.com/notifications/threads/10572933293", + subscription_url: "https://api.github.com/notifications/threads/10572933293/subscription", + }, + pullRequest: null, + issue: { + url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/937", + repository_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar", + labels_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/937/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/937/comments", + events_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/937/events", + html_url: "https://github.com/ubiquity/ubiquity-dollar/issues/937", + id: 2284873479, + node_id: "I_kwDOF4fVBs6IMGcH", + number: 937, + title: "Final Pre-Seed/Seed Investor Debt UBQ", + user: { + login: "0x4007", + id: 4975670, + node_id: "MDQ6VXNlcjQ5NzU2NzA=", + avatar_url: "https://avatars.githubusercontent.com/u/4975670?v=4", + gravatar_id: "", + url: "https://api.github.com/users/0x4007", + html_url: "https://github.com/0x4007", + followers_url: "https://api.github.com/users/0x4007/followers", + following_url: "https://api.github.com/users/0x4007/following{/other_user}", + gists_url: "https://api.github.com/users/0x4007/gists{/gist_id}", + starred_url: "https://api.github.com/users/0x4007/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/0x4007/subscriptions", + organizations_url: "https://api.github.com/users/0x4007/orgs", + repos_url: "https://api.github.com/users/0x4007/repos", + events_url: "https://api.github.com/users/0x4007/events{/privacy}", + received_events_url: "https://api.github.com/users/0x4007/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 5898797927, + node_id: "LA_kwDOF4fVBs8AAAABX5iDZw", + url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Time:%20%3C4%20Hours", + name: "Time: <4 Hours", + color: "ededed", + default: false, + description: null, + }, + { + id: 5898805810, + node_id: "LA_kwDOF4fVBs8AAAABX5iiMg", + url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Priority:%203%20(High)", + name: "Priority: 3 (High)", + color: "ededed", + default: false, + description: null, + }, + { + id: 6922903766, + node_id: "LA_kwDOF4fVBs8AAAABnKMg1g", + url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/labels/Price:%20450%20USD", + name: "Price: 450 USD", + color: "1f883d", + default: false, + description: null, + }, + ], + state: "open", + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 28, + created_at: "2024-05-08T07:20:20Z", + updated_at: "2024-12-02T18:19:16Z", + closed_at: null, + author_association: "MEMBER", + active_lock_reason: null, + body: "> So what's next steps to watch out for? Do we need to fix the amounts again when the stakes are withdrawn?\r\n\r\nFinally!\r\n\r\nThe next 'final' batch should be done after bonds expiry. Only then the remaining exact payout amounts will be available.\r\n\r\nThe algorithm will be:\r\n\r\n1) Update network block number in https://github.com/gitcoindev/uad-contracts/blob/staking-mutliplier-fix/tasks/simulateBondingDebt.ts and execute the script again using the following command:\r\n\r\n`$ npx hardhat simulateBondingDebt`\r\n\r\nThis will fork the blockchain, get the current inflation rate and output missing stake values for the same set of bonds. What was paid / disbursed today, should be subtracted from the amount that will be shown.\r\n\r\n2) The BondingDebtV2 / BondingDebtFinal contract will be deployed in the same way BondingDebt, but with remaining UBQ values for the bond holders.\r\n\r\n\r\n\r\n\n\n_Originally posted by @gitcoindev in https://github.com/ubiquity/ubiquity-dollar/issues/752#issuecomment-2098994982_", + closed_by: null, + reactions: { + url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/937/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity/ubiquity-dollar/issues/937/timeline", + performed_via_github_app: null, + state_reason: null, + }, + backlinkCount: 0, + }, + { + notification: { + id: "13793923612", + unread: true, + reason: "author", + updated_at: "2024-12-11T20:20:56Z", + last_read_at: null, + subject: { + title: "Logger Comment Formatting", + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/50", + latest_comment_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/comments/2537039031", + type: "Issue", + }, + repository: { + id: 729061918, + node_id: "R_kgDOK3SaHg", + name: "ubiquity-os-logger", + full_name: "ubiquity-os/ubiquity-os-logger", + private: false, + owner: { + login: "ubiquity-os", + id: 160213852, + node_id: "O_kgDOCYyrXA", + avatar_url: "https://avatars.githubusercontent.com/u/160213852?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os", + html_url: "https://github.com/ubiquity-os", + followers_url: "https://api.github.com/users/ubiquity-os/followers", + following_url: "https://api.github.com/users/ubiquity-os/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os/orgs", + repos_url: "https://api.github.com/users/ubiquity-os/repos", + events_url: "https://api.github.com/users/ubiquity-os/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os/ubiquity-os-logger", + description: null, + fork: false, + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger", + forks_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/forks", + keys_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/events", + assignees_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/merges", + archive_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/deployments", + }, + url: "https://api.github.com/notifications/threads/13793923612", + subscription_url: "https://api.github.com/notifications/threads/13793923612/subscription", + }, + pullRequest: null, + issue: { + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/50", + repository_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger", + labels_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/50/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/50/comments", + events_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/50/events", + html_url: "https://github.com/ubiquity-os/ubiquity-os-logger/issues/50", + id: 2731566747, + node_id: "I_kwDOK3SaHs6i0Gab", + number: 50, + title: "Logger Comment Formatting", + user: { + login: "0x4007", + id: 4975670, + node_id: "MDQ6VXNlcjQ5NzU2NzA=", + avatar_url: "https://avatars.githubusercontent.com/u/4975670?v=4", + gravatar_id: "", + url: "https://api.github.com/users/0x4007", + html_url: "https://github.com/0x4007", + followers_url: "https://api.github.com/users/0x4007/followers", + following_url: "https://api.github.com/users/0x4007/following{/other_user}", + gists_url: "https://api.github.com/users/0x4007/gists{/gist_id}", + starred_url: "https://api.github.com/users/0x4007/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/0x4007/subscriptions", + organizations_url: "https://api.github.com/users/0x4007/orgs", + repos_url: "https://api.github.com/users/0x4007/repos", + events_url: "https://api.github.com/users/0x4007/events{/privacy}", + received_events_url: "https://api.github.com/users/0x4007/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 7121285559, + node_id: "LA_kwDOK3SaHs8AAAABqHYxtw", + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/labels/Time:%20%3C1%20Hour", + name: "Time: <1 Hour", + color: "ededed", + default: false, + description: null, + }, + { + id: 7121285837, + node_id: "LA_kwDOK3SaHs8AAAABqHYyzQ", + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/labels/Priority:%202%20(Medium)", + name: "Priority: 2 (Medium)", + color: "ededed", + default: false, + description: null, + }, + { + id: 7121286138, + node_id: "LA_kwDOK3SaHs8AAAABqHYz-g", + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/labels/Price:%2050%20USD", + name: "Price: 50 USD", + color: "1f883d", + default: false, + description: null, + }, + ], + state: "open", + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 5, + created_at: "2024-12-10T23:38:57Z", + updated_at: "2024-12-11T20:20:36Z", + closed_at: null, + author_association: "MEMBER", + active_lock_reason: null, + body: 'Change all logger comments to "new format" which looks more aesthetically pleasing. \r\n\r\n## Old Format\r\n\r\nWe should color code essentially the equivalent of HTTP 1xx 2xx 3xx 4xx 5xx class errors in these bot comments. \r\n\r\n```diff\r\n# 1xx Class (Informational Responses)\r\n```\r\n\r\n```diff\r\n+ 2xx Class (Successful Responses)\r\n```\r\n\r\n```diff\r\n@@ 3xx Class (Redirection Messages) @@\r\n```\r\n\r\n```diff\r\n! 4xx Class (Client Error Responses)\r\n```\r\n\r\n```diff\r\n- 5xx Class (Server Error Responses)\r\n```\r\n\r\n## New Format\r\n\r\nAs it turns out, GitHub flavored markdown includes these handy color indicators. We can use the same color keys but instead of diff syntax, we use this syntax. \r\n\r\nThis should be applied across all kernel and plugin messages.\r\n\r\nIt might even be handy to rename the methods in our logger if its still attached to posting comments. The inspiration behind the rename is so that the class of message is no longer subjective.\r\n\r\n```typescript\r\nlogger.info();\r\nlogger.success();\r\nlogger.redirect();\r\nlogger.clientError();\r\nlogger.serverError();\r\n```\r\n\r\n### Status Codes\r\n\r\nBased on HTTP status codes, we should color code the responses. The only problem is that some of the headers can be misleading, but it does look a lot more aesthetically pleasing than the diffs. The left border in particular I think is a great minimal representation of the status. \r\n\r\n> [!NOTE]\r\n> 1xx\r\n\r\n> [!TIP]\r\n> 2xx\r\n\r\n> [!IMPORTANT]\r\n> 3xx\r\n\r\n> [!WARNING]\r\n> 4xx\r\n\r\n> [!CAUTION]\r\n> 5xx\r\n\r\n### Source Code\r\n\r\n```markdown\r\n> [!NOTE]\r\n> 1xx\r\n\r\n> [!TIP]\r\n> 2xx\r\n\r\n> [!IMPORTANT]\r\n> 3xx\r\n\r\n> [!WARNING]\r\n> 4xx\r\n\r\n> [!CAUTION]\r\n> 5xx\r\n```\r\n\r\n### About HTTP Status Code Classes\r\n\r\n> HTTP status codes are standardized codes returned by web servers to indicate the result of a client\'s request. These codes are grouped into five classes, each signifying a different category of response:\r\n>\r\n> ---\r\n> \r\n> ### **1xx: Informational**\r\n> \r\n> **Description:** The 1xx class of status codes indicates that the server has received the request and is continuing the process. These are provisional responses, providing interim information while the server continues to process the request.\r\n> \r\n> **Common Status Codes:**\r\n> \r\n> - **100 Continue:** Indicates that the initial part of the request has been received and the client should continue with the rest of the request.\r\n> - **101 Switching Protocols:** Informs the client that the server is switching to a different protocol as requested.\r\n> - **102 Processing (WebDAV):** Signals that the server has received and is processing the request, but no response is available yet.\r\n> \r\n> ---\r\n> \r\n> ### **2xx: Success**\r\n> \r\n> **Description:** The 2xx class signifies that the client\'s request was successfully received, understood, and accepted by the server.\r\n> \r\n> **Common Status Codes:**\r\n> \r\n> - **200 OK:** The request has succeeded. The meaning varies depending on the HTTP method used.\r\n> - **201 Created:** The request has been fulfilled, resulting in the creation of a new resource.\r\n> - **202 Accepted:** The request has been accepted for processing, but the processing is not complete.\r\n> - **204 No Content:** The server successfully processed the request and is not returning any content.\r\n> - **206 Partial Content:** The server is delivering only part of the resource due to a range header sent by the client.\r\n> \r\n> ---\r\n> \r\n> ### **3xx: Redirection**\r\n> \r\n> **Description:** The 3xx class indicates that further action is needed to complete the request. This usually means a redirection to a different resource.\r\n> \r\n> **Common Status Codes:**\r\n> \r\n> - **301 Moved Permanently:** The resource has been permanently moved to a new URL.\r\n> - **302 Found:** The resource resides temporarily under a different URL.\r\n> - **303 See Other:** The response can be found under a different URI and should be retrieved using a GET method.\r\n> - **304 Not Modified:** Indicates that the resource has not been modified since the last request.\r\n> - **307 Temporary Redirect:** The request should be repeated with another URI; however, future requests should still use the original URI.\r\n> \r\n> ---\r\n> \r\n> ### **4xx: Client Error**\r\n> \r\n> **Description:** The 4xx class signifies errors that appear to have been caused by the client. These codes indicate that the request contains bad syntax or cannot be fulfilled.\r\n> \r\n> **Common Status Codes:**\r\n> \r\n> - **400 Bad Request:** The server cannot process the request due to a client error (e.g., malformed request syntax).\r\n> - **401 Unauthorized:** Authentication is required and has failed or has not yet been provided.\r\n> - **403 Forbidden:** The client does not have access rights to the content.\r\n> - **404 Not Found:** The server cannot find the requested resource.\r\n> - **405 Method Not Allowed:** The request method is known by the server but is not supported by the target resource.\r\n> - **408 Request Timeout:** The server timed out waiting for the request.\r\n> - **409 Conflict:** The request could not be completed due to a conflict with the current state of the resource.\r\n> - **410 Gone:** The resource requested is no longer available and will not be available again.\r\n> - **429 Too Many Requests:** The user has sent too many requests in a given amount of time ("rate limiting").\r\n> \r\n> ---\r\n> \r\n> ### **5xx: Server Error**\r\n> \r\n> **Description:** The 5xx class indicates that the server failed to fulfill a valid request. The server is aware that it has encountered an error or is otherwise incapable of performing the request.\r\n> \r\n> **Common Status Codes:**\r\n> \r\n> - **500 Internal Server Error:** A generic error message when the server encounters an unexpected condition.\r\n> - **501 Not Implemented:** The server either does not recognize the request method or lacks the ability to fulfill it.\r\n> - **502 Bad Gateway:** The server was acting as a gateway or proxy and received an invalid response from the upstream server.\r\n> - **503 Service Unavailable:** The server is not ready to handle the request, often due to maintenance or overload.\r\n> - **504 Gateway Timeout:** The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.\r\n> - **505 HTTP Version Not Supported:** The server does not support the HTTP protocol version used in the request.\r\n> \r\n> ---\r\n> \r\n> Understanding these status codes is essential for debugging web applications and ensuring efficient client-server communication. Each code provides specific information about what happened with a request, allowing developers to handle responses appropriately.\r\n', + closed_by: null, + reactions: { + url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/50/reactions", + total_count: 1, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 1, + }, + timeline_url: "https://api.github.com/repos/ubiquity-os/ubiquity-os-logger/issues/50/timeline", + performed_via_github_app: null, + state_reason: null, + }, + backlinkCount: 0, + }, + { + notification: { + id: "13288355301", + unread: true, + reason: "subscribed", + updated_at: "2024-11-29T20:26:16Z", + last_read_at: "2024-11-18T09:58:04Z", + subject: { + title: "Plugin installer review changes", + url: "https://api.github.com/repos/ubiquity/ts-template/issues/79", + latest_comment_url: "https://api.github.com/repos/ubiquity/ts-template/issues/comments/2508607007", + type: "Issue", + }, + repository: { + id: 610789873, + node_id: "R_kgDOJGfp8Q", + name: "ts-template", + full_name: "ubiquity/ts-template", + private: false, + owner: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity/ts-template", + description: "A template repository for all @ubiquity projects.", + fork: false, + url: "https://api.github.com/repos/ubiquity/ts-template", + forks_url: "https://api.github.com/repos/ubiquity/ts-template/forks", + keys_url: "https://api.github.com/repos/ubiquity/ts-template/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity/ts-template/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity/ts-template/teams", + hooks_url: "https://api.github.com/repos/ubiquity/ts-template/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity/ts-template/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity/ts-template/events", + assignees_url: "https://api.github.com/repos/ubiquity/ts-template/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity/ts-template/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity/ts-template/tags", + blobs_url: "https://api.github.com/repos/ubiquity/ts-template/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity/ts-template/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity/ts-template/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity/ts-template/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity/ts-template/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity/ts-template/languages", + stargazers_url: "https://api.github.com/repos/ubiquity/ts-template/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity/ts-template/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity/ts-template/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity/ts-template/subscription", + commits_url: "https://api.github.com/repos/ubiquity/ts-template/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity/ts-template/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity/ts-template/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity/ts-template/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity/ts-template/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity/ts-template/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity/ts-template/merges", + archive_url: "https://api.github.com/repos/ubiquity/ts-template/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity/ts-template/downloads", + issues_url: "https://api.github.com/repos/ubiquity/ts-template/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity/ts-template/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity/ts-template/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity/ts-template/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity/ts-template/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity/ts-template/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity/ts-template/deployments", + }, + url: "https://api.github.com/notifications/threads/13288355301", + subscription_url: "https://api.github.com/notifications/threads/13288355301/subscription", + }, + pullRequest: null, + issue: { + url: "https://api.github.com/repos/ubiquity/ts-template/issues/79", + repository_url: "https://api.github.com/repos/ubiquity/ts-template", + labels_url: "https://api.github.com/repos/ubiquity/ts-template/issues/79/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity/ts-template/issues/79/comments", + events_url: "https://api.github.com/repos/ubiquity/ts-template/issues/79/events", + html_url: "https://github.com/ubiquity/ts-template/issues/79", + id: 2647120910, + node_id: "I_kwDOJGfp8c6dx9wO", + number: 79, + title: "Plugin installer review changes", + user: { + login: "Keyrxng", + id: 106303466, + node_id: "U_kgDOBlYP6g", + avatar_url: "https://avatars.githubusercontent.com/u/106303466?v=4", + gravatar_id: "", + url: "https://api.github.com/users/Keyrxng", + html_url: "https://github.com/Keyrxng", + followers_url: "https://api.github.com/users/Keyrxng/followers", + following_url: "https://api.github.com/users/Keyrxng/following{/other_user}", + gists_url: "https://api.github.com/users/Keyrxng/gists{/gist_id}", + starred_url: "https://api.github.com/users/Keyrxng/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/Keyrxng/subscriptions", + organizations_url: "https://api.github.com/users/Keyrxng/orgs", + repos_url: "https://api.github.com/users/Keyrxng/repos", + events_url: "https://api.github.com/users/Keyrxng/events{/privacy}", + received_events_url: "https://api.github.com/users/Keyrxng/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 6498575088, + node_id: "LA_kwDOJGfp8c8AAAABg1hi8A", + url: "https://api.github.com/repos/ubiquity/ts-template/labels/Priority:%202%20(Medium)", + name: "Priority: 2 (Medium)", + color: "ededed", + default: false, + description: null, + }, + { + id: 7557021723, + node_id: "LA_kwDOJGfp8c8AAAABwm8AGw", + url: "https://api.github.com/repos/ubiquity/ts-template/labels/Price:%2012%20USD", + name: "Price: 12 USD", + color: "1f883d", + default: false, + description: null, + }, + { + id: 7557021725, + node_id: "LA_kwDOJGfp8c8AAAABwm8AHQ", + url: "https://api.github.com/repos/ubiquity/ts-template/labels/Time:%20%3C15%20Minutes", + name: "Time: <15 Minutes", + color: "ededed", + default: false, + description: null, + }, + ], + state: "open", + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 1, + created_at: "2024-11-10T11:03:52Z", + updated_at: "2024-11-29T20:25:56Z", + closed_at: null, + author_association: "MEMBER", + active_lock_reason: null, + body: "\r\n\r\n- [Source](https://github.com/ubiquity-os/ubiquity-os-plugin-installer/pull/13#discussion_r1835570450): Would be better to run this on pull request events.\r\n- [Source](https://github.com/ubiquity-os/ubiquity-os-plugin-installer/pull/13#discussion_r1835570183): Ideally I think we should use the latest version of eslint that provides better feedback: https://github.com/ubiquity-os/plugin-template/blob/development/eslint.config.mjs\r\n", + closed_by: null, + reactions: { + url: "https://api.github.com/repos/ubiquity/ts-template/issues/79/reactions", + total_count: 1, + "+1": 1, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity/ts-template/issues/79/timeline", + performed_via_github_app: null, + state_reason: null, + }, + backlinkCount: 0, + }, + { + notification: { + id: "13776572209", + unread: true, + reason: "mention", + updated_at: "2024-12-12T17:03:14Z", + last_read_at: "2024-12-12T16:24:15Z", + subject: { + title: "fix: avoid comments on closed / merged pull-requests", + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/62", + latest_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/comments/2539505538", + type: "PullRequest", + }, + repository: { + id: 809291952, + node_id: "R_kgDOMDzQsA", + name: "daemon-disqualifier", + full_name: "ubiquity-os-marketplace/daemon-disqualifier", + private: false, + owner: { + login: "ubiquity-os-marketplace", + id: 182627615, + node_id: "O_kgDOCuKtHw", + avatar_url: "https://avatars.githubusercontent.com/u/182627615?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os-marketplace", + html_url: "https://github.com/ubiquity-os-marketplace", + followers_url: "https://api.github.com/users/ubiquity-os-marketplace/followers", + following_url: "https://api.github.com/users/ubiquity-os-marketplace/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os-marketplace/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os-marketplace/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os-marketplace/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os-marketplace/orgs", + repos_url: "https://api.github.com/users/ubiquity-os-marketplace/repos", + events_url: "https://api.github.com/users/ubiquity-os-marketplace/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os-marketplace/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier", + description: "Follows up on user activities related to task, sends reminders, and unassign inactive users.", + fork: false, + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier", + forks_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/forks", + keys_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/events", + assignees_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/merges", + archive_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/deployments", + }, + url: "https://api.github.com/notifications/threads/13776572209", + subscription_url: "https://api.github.com/notifications/threads/13776572209/subscription", + }, + pullRequest: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/62", + id: 2225416786, + node_id: "PR_kwDOMDzQsM6EpSpS", + html_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier/pull/62", + diff_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier/pull/62.diff", + patch_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier/pull/62.patch", + issue_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/62", + number: 62, + state: "open", + locked: false, + title: "fix: avoid comments on closed / merged pull-requests", + user: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + body: 'Resolves #60\r\nQA: https://github.com/Meniole/daemon-disqualifier/issues/7\r\n\r\n', + created_at: "2024-12-10T04:50:00Z", + updated_at: "2024-12-12T17:03:13Z", + closed_at: null, + merged_at: null, + merge_commit_sha: "6bf01742b293113908427df2754f91630c495ef5", + assignee: null, + assignees: [], + requested_reviewers: [ + { + login: "rndquu", + id: 119500907, + node_id: "U_kgDOBx9waw", + avatar_url: "https://avatars.githubusercontent.com/u/119500907?v=4", + gravatar_id: "", + url: "https://api.github.com/users/rndquu", + html_url: "https://github.com/rndquu", + followers_url: "https://api.github.com/users/rndquu/followers", + following_url: "https://api.github.com/users/rndquu/following{/other_user}", + gists_url: "https://api.github.com/users/rndquu/gists{/gist_id}", + starred_url: "https://api.github.com/users/rndquu/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/rndquu/subscriptions", + organizations_url: "https://api.github.com/users/rndquu/orgs", + repos_url: "https://api.github.com/users/rndquu/repos", + events_url: "https://api.github.com/users/rndquu/events{/privacy}", + received_events_url: "https://api.github.com/users/rndquu/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + { + login: "whilefoo", + id: 139262667, + node_id: "U_kgDOCEz6yw", + avatar_url: "https://avatars.githubusercontent.com/u/139262667?v=4", + gravatar_id: "", + url: "https://api.github.com/users/whilefoo", + html_url: "https://github.com/whilefoo", + followers_url: "https://api.github.com/users/whilefoo/followers", + following_url: "https://api.github.com/users/whilefoo/following{/other_user}", + gists_url: "https://api.github.com/users/whilefoo/gists{/gist_id}", + starred_url: "https://api.github.com/users/whilefoo/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/whilefoo/subscriptions", + organizations_url: "https://api.github.com/users/whilefoo/orgs", + repos_url: "https://api.github.com/users/whilefoo/repos", + events_url: "https://api.github.com/users/whilefoo/events{/privacy}", + received_events_url: "https://api.github.com/users/whilefoo/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + requested_teams: [], + labels: [], + milestone: null, + draft: false, + commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/62/commits", + review_comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/62/comments", + review_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/comments{/number}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/62/comments", + statuses_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/statuses/fa76e6d72e64a110c2b5e9f013195518686fca05", + head: { + label: "gentlementlegen:fix/reminders", + ref: "fix/reminders", + sha: "fa76e6d72e64a110c2b5e9f013195518686fca05", + user: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 809299952, + node_id: "R_kgDOMDzv8A", + name: "daemon-disqualifier", + full_name: "gentlementlegen/daemon-disqualifier", + private: false, + owner: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/gentlementlegen/daemon-disqualifier", + description: "Follows up on user activities related to task, sends reminders, and unassign inactive users.", + fork: true, + url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier", + forks_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/forks", + keys_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/teams", + hooks_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/hooks", + issue_events_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/issues/events{/number}", + events_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/events", + assignees_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/assignees{/user}", + branches_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/branches{/branch}", + tags_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/tags", + blobs_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/git/refs{/sha}", + trees_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/statuses/{sha}", + languages_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/languages", + stargazers_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/stargazers", + contributors_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/contributors", + subscribers_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/subscribers", + subscription_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/subscription", + commits_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/commits{/sha}", + git_commits_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/git/commits{/sha}", + comments_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/comments{/number}", + issue_comment_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/issues/comments{/number}", + contents_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/contents/{+path}", + compare_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/merges", + archive_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/downloads", + issues_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/issues{/number}", + pulls_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/pulls{/number}", + milestones_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/milestones{/number}", + notifications_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/labels{/name}", + releases_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/releases{/id}", + deployments_url: "https://api.github.com/repos/gentlementlegen/daemon-disqualifier/deployments", + created_at: "2024-06-02T09:53:17Z", + updated_at: "2024-12-12T09:34:40Z", + pushed_at: "2024-12-12T11:33:38Z", + git_url: "git://github.com/gentlementlegen/daemon-disqualifier.git", + ssh_url: "git@github.com:gentlementlegen/daemon-disqualifier.git", + clone_url: "https://github.com/gentlementlegen/daemon-disqualifier.git", + svn_url: "https://github.com/gentlementlegen/daemon-disqualifier", + homepage: null, + size: 5680, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: false, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 0, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 1, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 0, + open_issues: 1, + watchers: 0, + default_branch: "development", + }, + }, + base: { + label: "ubiquity-os-marketplace:development", + ref: "development", + sha: "e0cce5be74a0eb5711f033d03ee248d52536f70a", + user: { + login: "ubiquity-os-marketplace", + id: 182627615, + node_id: "O_kgDOCuKtHw", + avatar_url: "https://avatars.githubusercontent.com/u/182627615?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os-marketplace", + html_url: "https://github.com/ubiquity-os-marketplace", + followers_url: "https://api.github.com/users/ubiquity-os-marketplace/followers", + following_url: "https://api.github.com/users/ubiquity-os-marketplace/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os-marketplace/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os-marketplace/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os-marketplace/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os-marketplace/orgs", + repos_url: "https://api.github.com/users/ubiquity-os-marketplace/repos", + events_url: "https://api.github.com/users/ubiquity-os-marketplace/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os-marketplace/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 809291952, + node_id: "R_kgDOMDzQsA", + name: "daemon-disqualifier", + full_name: "ubiquity-os-marketplace/daemon-disqualifier", + private: false, + owner: { + login: "ubiquity-os-marketplace", + id: 182627615, + node_id: "O_kgDOCuKtHw", + avatar_url: "https://avatars.githubusercontent.com/u/182627615?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os-marketplace", + html_url: "https://github.com/ubiquity-os-marketplace", + followers_url: "https://api.github.com/users/ubiquity-os-marketplace/followers", + following_url: "https://api.github.com/users/ubiquity-os-marketplace/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os-marketplace/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os-marketplace/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os-marketplace/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os-marketplace/orgs", + repos_url: "https://api.github.com/users/ubiquity-os-marketplace/repos", + events_url: "https://api.github.com/users/ubiquity-os-marketplace/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os-marketplace/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier", + description: "Follows up on user activities related to task, sends reminders, and unassign inactive users.", + fork: false, + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier", + forks_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/forks", + keys_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/events", + assignees_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/merges", + archive_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/deployments", + created_at: "2024-06-02T09:23:38Z", + updated_at: "2024-12-12T07:13:55Z", + pushed_at: "2024-12-12T07:13:49Z", + git_url: "git://github.com/ubiquity-os-marketplace/daemon-disqualifier.git", + ssh_url: "git@github.com:ubiquity-os-marketplace/daemon-disqualifier.git", + clone_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier.git", + svn_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier", + homepage: null, + size: 7114, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 13, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 9, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 13, + open_issues: 9, + watchers: 0, + default_branch: "development", + }, + }, + _links: { + self: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/62", + }, + html: { + href: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier/pull/62", + }, + issue: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/62", + }, + comments: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/62/comments", + }, + review_comments: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/62/comments", + }, + review_comment: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/comments{/number}", + }, + commits: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/pulls/62/commits", + }, + statuses: { + href: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/statuses/fa76e6d72e64a110c2b5e9f013195518686fca05", + }, + }, + author_association: "MEMBER", + auto_merge: null, + active_lock_reason: null, + merged: false, + mergeable: true, + rebaseable: false, + mergeable_state: "clean", + merged_by: null, + comments: 2, + review_comments: 0, + maintainer_can_modify: true, + commits: 8, + additions: 101, + deletions: 10, + changed_files: 6, + }, + issue: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/60", + repository_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier", + labels_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/60/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/60/comments", + events_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/60/events", + html_url: "https://github.com/ubiquity-os-marketplace/daemon-disqualifier/issues/60", + id: 2722583732, + node_id: "I_kwDOMDzQsM6iR1S0", + number: 60, + title: "Bug: follow up on completed task", + user: { + login: "rndquu", + id: 119500907, + node_id: "U_kgDOBx9waw", + avatar_url: "https://avatars.githubusercontent.com/u/119500907?v=4", + gravatar_id: "", + url: "https://api.github.com/users/rndquu", + html_url: "https://github.com/rndquu", + followers_url: "https://api.github.com/users/rndquu/followers", + following_url: "https://api.github.com/users/rndquu/following{/other_user}", + gists_url: "https://api.github.com/users/rndquu/gists{/gist_id}", + starred_url: "https://api.github.com/users/rndquu/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/rndquu/subscriptions", + organizations_url: "https://api.github.com/users/rndquu/orgs", + repos_url: "https://api.github.com/users/rndquu/repos", + events_url: "https://api.github.com/users/rndquu/events{/privacy}", + received_events_url: "https://api.github.com/users/rndquu/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 7078200331, + node_id: "LA_kwDOMDzQsM8AAAABpeTECw", + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Time:%20%3C1%20Hour", + name: "Time: <1 Hour", + color: "ededed", + default: false, + description: null, + }, + { + id: 7078200556, + node_id: "LA_kwDOMDzQsM8AAAABpeTE7A", + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/labels/Priority:%201%20(Normal)", + name: "Priority: 1 (Normal)", + color: "ededed", + default: false, + description: null, + }, + ], + state: "open", + locked: false, + assignee: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + assignees: [ + { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + milestone: null, + comments: 5, + created_at: "2024-12-06T09:59:22Z", + updated_at: "2024-12-12T16:08:27Z", + closed_at: null, + author_association: "MEMBER", + active_lock_reason: null, + body: "Check [this](https://github.com/ubiquity-os/ubiquity-os-kernel/pull/199#issuecomment-2522638152) follow up message which was posted in a merged PR. \r\n\r\nExpected behavior: since the [main issue](https://github.com/ubiquity-os/ubiquity-os-kernel/issues/195) is still open (at the time of creating this task) the follow up message should've been posted in the issue comments, not in PR comments.", + closed_by: null, + reactions: { + url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/60/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity-os-marketplace/daemon-disqualifier/issues/60/timeline", + performed_via_github_app: null, + state_reason: null, + }, + backlinkCount: 0, + }, + { + notification: { + id: "13811721384", + unread: true, + reason: "subscribed", + updated_at: "2024-12-12T13:05:14Z", + last_read_at: null, + subject: { + title: "feat: upgrade template structure", + url: "https://api.github.com/repos/ubiquity/ts-template/pulls/93", + latest_comment_url: "https://api.github.com/repos/ubiquity/ts-template/pulls/93", + type: "PullRequest", + }, + repository: { + id: 610789873, + node_id: "R_kgDOJGfp8Q", + name: "ts-template", + full_name: "ubiquity/ts-template", + private: false, + owner: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity/ts-template", + description: "A template repository for all @ubiquity projects.", + fork: false, + url: "https://api.github.com/repos/ubiquity/ts-template", + forks_url: "https://api.github.com/repos/ubiquity/ts-template/forks", + keys_url: "https://api.github.com/repos/ubiquity/ts-template/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity/ts-template/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity/ts-template/teams", + hooks_url: "https://api.github.com/repos/ubiquity/ts-template/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity/ts-template/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity/ts-template/events", + assignees_url: "https://api.github.com/repos/ubiquity/ts-template/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity/ts-template/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity/ts-template/tags", + blobs_url: "https://api.github.com/repos/ubiquity/ts-template/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity/ts-template/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity/ts-template/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity/ts-template/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity/ts-template/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity/ts-template/languages", + stargazers_url: "https://api.github.com/repos/ubiquity/ts-template/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity/ts-template/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity/ts-template/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity/ts-template/subscription", + commits_url: "https://api.github.com/repos/ubiquity/ts-template/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity/ts-template/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity/ts-template/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity/ts-template/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity/ts-template/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity/ts-template/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity/ts-template/merges", + archive_url: "https://api.github.com/repos/ubiquity/ts-template/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity/ts-template/downloads", + issues_url: "https://api.github.com/repos/ubiquity/ts-template/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity/ts-template/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity/ts-template/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity/ts-template/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity/ts-template/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity/ts-template/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity/ts-template/deployments", + }, + url: "https://api.github.com/notifications/threads/13811721384", + subscription_url: "https://api.github.com/notifications/threads/13811721384/subscription", + }, + pullRequest: { + url: "https://api.github.com/repos/ubiquity/ts-template/pulls/93", + id: 2230098174, + node_id: "PR_kwDOJGfp8c6E7Jj-", + html_url: "https://github.com/ubiquity/ts-template/pull/93", + diff_url: "https://github.com/ubiquity/ts-template/pull/93.diff", + patch_url: "https://github.com/ubiquity/ts-template/pull/93.patch", + issue_url: "https://api.github.com/repos/ubiquity/ts-template/issues/93", + number: 93, + state: "open", + locked: false, + title: "feat: upgrade template structure", + user: { + login: "obeys", + id: 131892818, + node_id: "U_kgDOB9yGUg", + avatar_url: "https://avatars.githubusercontent.com/u/131892818?v=4", + gravatar_id: "", + url: "https://api.github.com/users/obeys", + html_url: "https://github.com/obeys", + followers_url: "https://api.github.com/users/obeys/followers", + following_url: "https://api.github.com/users/obeys/following{/other_user}", + gists_url: "https://api.github.com/users/obeys/gists{/gist_id}", + starred_url: "https://api.github.com/users/obeys/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/obeys/subscriptions", + organizations_url: "https://api.github.com/users/obeys/orgs", + repos_url: "https://api.github.com/users/obeys/repos", + events_url: "https://api.github.com/users/obeys/events{/privacy}", + received_events_url: "https://api.github.com/users/obeys/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + body: "\r\n\r\nResolves #92\r\n\r\n\r\n\r\nChanges: \r\n\r\nAdded `src` which will include:\r\n- two components\r\n- four controllers\r\n\r\n- a router\r\n- and `on-load.ts` for global state initialization\r\n\r\n`static` directory will now only include different html pages\r\n- index (which will serve as a layout)\r\n- home\r\n- 404\r\n- and two different example pages\r\n\r\n\r\n\r\nQA:\r\n\r\n- \r\n\r\n\r\n\r\nHow to QA and setup:\r\n- deploy to any web host\r\n", + created_at: "2024-12-11T22:29:25Z", + updated_at: "2024-12-12T13:04:52Z", + closed_at: null, + merged_at: null, + merge_commit_sha: "cf7d6010dc17bf202da60b6029eb3b9a78784e5a", + assignee: null, + assignees: [], + requested_reviewers: [ + { + login: "zugdev", + id: 155616000, + node_id: "U_kgDOCUaDAA", + avatar_url: "https://avatars.githubusercontent.com/u/155616000?v=4", + gravatar_id: "", + url: "https://api.github.com/users/zugdev", + html_url: "https://github.com/zugdev", + followers_url: "https://api.github.com/users/zugdev/followers", + following_url: "https://api.github.com/users/zugdev/following{/other_user}", + gists_url: "https://api.github.com/users/zugdev/gists{/gist_id}", + starred_url: "https://api.github.com/users/zugdev/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/zugdev/subscriptions", + organizations_url: "https://api.github.com/users/zugdev/orgs", + repos_url: "https://api.github.com/users/zugdev/repos", + events_url: "https://api.github.com/users/zugdev/events{/privacy}", + received_events_url: "https://api.github.com/users/zugdev/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + requested_teams: [], + labels: [], + milestone: null, + draft: false, + commits_url: "https://api.github.com/repos/ubiquity/ts-template/pulls/93/commits", + review_comments_url: "https://api.github.com/repos/ubiquity/ts-template/pulls/93/comments", + review_comment_url: "https://api.github.com/repos/ubiquity/ts-template/pulls/comments{/number}", + comments_url: "https://api.github.com/repos/ubiquity/ts-template/issues/93/comments", + statuses_url: "https://api.github.com/repos/ubiquity/ts-template/statuses/40471ffdda6b25183d3a6de767f83f090201ec2a", + head: { + label: "wellneverknow:upgrade", + ref: "upgrade", + sha: "40471ffdda6b25183d3a6de767f83f090201ec2a", + user: { + login: "wellneverknow", + id: 180039690, + node_id: "O_kgDOCrswCg", + avatar_url: "https://avatars.githubusercontent.com/u/180039690?v=4", + gravatar_id: "", + url: "https://api.github.com/users/wellneverknow", + html_url: "https://github.com/wellneverknow", + followers_url: "https://api.github.com/users/wellneverknow/followers", + following_url: "https://api.github.com/users/wellneverknow/following{/other_user}", + gists_url: "https://api.github.com/users/wellneverknow/gists{/gist_id}", + starred_url: "https://api.github.com/users/wellneverknow/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/wellneverknow/subscriptions", + organizations_url: "https://api.github.com/users/wellneverknow/orgs", + repos_url: "https://api.github.com/users/wellneverknow/repos", + events_url: "https://api.github.com/users/wellneverknow/events{/privacy}", + received_events_url: "https://api.github.com/users/wellneverknow/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 894137574, + node_id: "R_kgDONUt05g", + name: "ts-template", + full_name: "wellneverknow/ts-template", + private: false, + owner: { + login: "wellneverknow", + id: 180039690, + node_id: "O_kgDOCrswCg", + avatar_url: "https://avatars.githubusercontent.com/u/180039690?v=4", + gravatar_id: "", + url: "https://api.github.com/users/wellneverknow", + html_url: "https://github.com/wellneverknow", + followers_url: "https://api.github.com/users/wellneverknow/followers", + following_url: "https://api.github.com/users/wellneverknow/following{/other_user}", + gists_url: "https://api.github.com/users/wellneverknow/gists{/gist_id}", + starred_url: "https://api.github.com/users/wellneverknow/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/wellneverknow/subscriptions", + organizations_url: "https://api.github.com/users/wellneverknow/orgs", + repos_url: "https://api.github.com/users/wellneverknow/repos", + events_url: "https://api.github.com/users/wellneverknow/events{/privacy}", + received_events_url: "https://api.github.com/users/wellneverknow/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/wellneverknow/ts-template", + description: "A template repository for all @ubiquity projects.", + fork: true, + url: "https://api.github.com/repos/wellneverknow/ts-template", + forks_url: "https://api.github.com/repos/wellneverknow/ts-template/forks", + keys_url: "https://api.github.com/repos/wellneverknow/ts-template/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/wellneverknow/ts-template/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/wellneverknow/ts-template/teams", + hooks_url: "https://api.github.com/repos/wellneverknow/ts-template/hooks", + issue_events_url: "https://api.github.com/repos/wellneverknow/ts-template/issues/events{/number}", + events_url: "https://api.github.com/repos/wellneverknow/ts-template/events", + assignees_url: "https://api.github.com/repos/wellneverknow/ts-template/assignees{/user}", + branches_url: "https://api.github.com/repos/wellneverknow/ts-template/branches{/branch}", + tags_url: "https://api.github.com/repos/wellneverknow/ts-template/tags", + blobs_url: "https://api.github.com/repos/wellneverknow/ts-template/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/wellneverknow/ts-template/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/wellneverknow/ts-template/git/refs{/sha}", + trees_url: "https://api.github.com/repos/wellneverknow/ts-template/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/wellneverknow/ts-template/statuses/{sha}", + languages_url: "https://api.github.com/repos/wellneverknow/ts-template/languages", + stargazers_url: "https://api.github.com/repos/wellneverknow/ts-template/stargazers", + contributors_url: "https://api.github.com/repos/wellneverknow/ts-template/contributors", + subscribers_url: "https://api.github.com/repos/wellneverknow/ts-template/subscribers", + subscription_url: "https://api.github.com/repos/wellneverknow/ts-template/subscription", + commits_url: "https://api.github.com/repos/wellneverknow/ts-template/commits{/sha}", + git_commits_url: "https://api.github.com/repos/wellneverknow/ts-template/git/commits{/sha}", + comments_url: "https://api.github.com/repos/wellneverknow/ts-template/comments{/number}", + issue_comment_url: "https://api.github.com/repos/wellneverknow/ts-template/issues/comments{/number}", + contents_url: "https://api.github.com/repos/wellneverknow/ts-template/contents/{+path}", + compare_url: "https://api.github.com/repos/wellneverknow/ts-template/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/wellneverknow/ts-template/merges", + archive_url: "https://api.github.com/repos/wellneverknow/ts-template/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/wellneverknow/ts-template/downloads", + issues_url: "https://api.github.com/repos/wellneverknow/ts-template/issues{/number}", + pulls_url: "https://api.github.com/repos/wellneverknow/ts-template/pulls{/number}", + milestones_url: "https://api.github.com/repos/wellneverknow/ts-template/milestones{/number}", + notifications_url: "https://api.github.com/repos/wellneverknow/ts-template/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/wellneverknow/ts-template/labels{/name}", + releases_url: "https://api.github.com/repos/wellneverknow/ts-template/releases{/id}", + deployments_url: "https://api.github.com/repos/wellneverknow/ts-template/deployments", + created_at: "2024-11-25T20:26:15Z", + updated_at: "2024-11-29T17:56:15Z", + pushed_at: "2024-12-12T15:22:07Z", + git_url: "git://github.com/wellneverknow/ts-template.git", + ssh_url: "git@github.com:wellneverknow/ts-template.git", + clone_url: "https://github.com/wellneverknow/ts-template.git", + svn_url: "https://github.com/wellneverknow/ts-template", + homepage: "", + size: 1093, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: false, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 0, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 1, + license: null, + allow_forking: true, + is_template: true, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 0, + open_issues: 1, + watchers: 0, + default_branch: "development", + }, + }, + base: { + label: "ubiquity:development", + ref: "development", + sha: "b07723d620d7784123f957c63bf6b8cfe42bf2d1", + user: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 610789873, + node_id: "R_kgDOJGfp8Q", + name: "ts-template", + full_name: "ubiquity/ts-template", + private: false, + owner: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity/ts-template", + description: "A template repository for all @ubiquity projects.", + fork: false, + url: "https://api.github.com/repos/ubiquity/ts-template", + forks_url: "https://api.github.com/repos/ubiquity/ts-template/forks", + keys_url: "https://api.github.com/repos/ubiquity/ts-template/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity/ts-template/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity/ts-template/teams", + hooks_url: "https://api.github.com/repos/ubiquity/ts-template/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity/ts-template/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity/ts-template/events", + assignees_url: "https://api.github.com/repos/ubiquity/ts-template/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity/ts-template/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity/ts-template/tags", + blobs_url: "https://api.github.com/repos/ubiquity/ts-template/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity/ts-template/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity/ts-template/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity/ts-template/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity/ts-template/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity/ts-template/languages", + stargazers_url: "https://api.github.com/repos/ubiquity/ts-template/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity/ts-template/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity/ts-template/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity/ts-template/subscription", + commits_url: "https://api.github.com/repos/ubiquity/ts-template/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity/ts-template/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity/ts-template/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity/ts-template/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity/ts-template/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity/ts-template/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity/ts-template/merges", + archive_url: "https://api.github.com/repos/ubiquity/ts-template/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity/ts-template/downloads", + issues_url: "https://api.github.com/repos/ubiquity/ts-template/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity/ts-template/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity/ts-template/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity/ts-template/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity/ts-template/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity/ts-template/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity/ts-template/deployments", + created_at: "2023-03-07T13:43:25Z", + updated_at: "2024-11-27T16:47:23Z", + pushed_at: "2024-11-27T16:47:19Z", + git_url: "git://github.com/ubiquity/ts-template.git", + ssh_url: "git@github.com:ubiquity/ts-template.git", + clone_url: "https://github.com/ubiquity/ts-template.git", + svn_url: "https://github.com/ubiquity/ts-template", + homepage: "", + size: 1481, + stargazers_count: 2, + watchers_count: 2, + language: "TypeScript", + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 25, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 9, + license: null, + allow_forking: true, + is_template: true, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 25, + open_issues: 9, + watchers: 2, + default_branch: "development", + }, + }, + _links: { + self: { + href: "https://api.github.com/repos/ubiquity/ts-template/pulls/93", + }, + html: { + href: "https://github.com/ubiquity/ts-template/pull/93", + }, + issue: { + href: "https://api.github.com/repos/ubiquity/ts-template/issues/93", + }, + comments: { + href: "https://api.github.com/repos/ubiquity/ts-template/issues/93/comments", + }, + review_comments: { + href: "https://api.github.com/repos/ubiquity/ts-template/pulls/93/comments", + }, + review_comment: { + href: "https://api.github.com/repos/ubiquity/ts-template/pulls/comments{/number}", + }, + commits: { + href: "https://api.github.com/repos/ubiquity/ts-template/pulls/93/commits", + }, + statuses: { + href: "https://api.github.com/repos/ubiquity/ts-template/statuses/40471ffdda6b25183d3a6de767f83f090201ec2a", + }, + }, + author_association: "FIRST_TIME_CONTRIBUTOR", + auto_merge: null, + active_lock_reason: null, + merged: false, + mergeable: true, + rebaseable: true, + mergeable_state: "blocked", + merged_by: null, + comments: 1, + review_comments: 0, + maintainer_can_modify: false, + commits: 2, + additions: 244, + deletions: 19, + changed_files: 19, + }, + issue: { + url: "https://api.github.com/repos/ubiquity/ts-template/issues/75", + repository_url: "https://api.github.com/repos/ubiquity/ts-template", + labels_url: "https://api.github.com/repos/ubiquity/ts-template/issues/75/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity/ts-template/issues/75/comments", + events_url: "https://api.github.com/repos/ubiquity/ts-template/issues/75/events", + html_url: "https://github.com/ubiquity/ts-template/issues/75", + id: 2643338664, + node_id: "I_kwDOJGfp8c6djiWo", + number: 75, + title: "Fix secrets usage", + user: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 6495921051, + node_id: "LA_kwDOJGfp8c8AAAABgy_jmw", + url: "https://api.github.com/repos/ubiquity/ts-template/labels/Priority:%201%20(Normal)", + name: "Priority: 1 (Normal)", + color: "ededed", + default: false, + description: null, + }, + { + id: 7557021725, + node_id: "LA_kwDOJGfp8c8AAAABwm8AHQ", + url: "https://api.github.com/repos/ubiquity/ts-template/labels/Time:%20%3C15%20Minutes", + name: "Time: <15 Minutes", + color: "ededed", + default: false, + description: null, + }, + { + id: 7557021730, + node_id: "LA_kwDOJGfp8c8AAAABwm8AIg", + url: "https://api.github.com/repos/ubiquity/ts-template/labels/Price:%206%20USD", + name: "Price: 6 USD", + color: "1f883d", + default: false, + description: null, + }, + ], + state: "closed", + locked: false, + assignee: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + assignees: [ + { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + milestone: null, + comments: 5, + created_at: "2024-11-08T08:48:18Z", + updated_at: "2024-11-10T10:35:30Z", + closed_at: "2024-11-10T10:34:50Z", + author_association: "MEMBER", + active_lock_reason: null, + body: " @0x4007 I should have tested this, but it will always crash if a user opens a pull request because it uses variables from secrets that are not accessible, I will fix that.\r\n\r\n_Originally posted by @gentlementlegen in https://github.com/ubiquity/ts-template/issues/31#issuecomment-2464146839_\r\n \r\n\r\nMany variables of the script reference secrets, which do not exist on PRs for security reasons. They have to be replaced or default to something for graceful fallback.", + closed_by: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + reactions: { + url: "https://api.github.com/repos/ubiquity/ts-template/issues/75/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity/ts-template/issues/75/timeline", + performed_via_github_app: null, + state_reason: "completed", + }, + backlinkCount: 0, + }, + { + notification: { + id: "13785129019", + unread: true, + reason: "subscribed", + updated_at: "2024-12-11T19:01:46Z", + last_read_at: "2024-12-11T01:06:06Z", + subject: { + title: "Better template structure", + url: "https://api.github.com/repos/ubiquity/ts-template/issues/92", + latest_comment_url: "https://api.github.com/repos/ubiquity/ts-template/issues/comments/2536878430", + type: "Issue", + }, + repository: { + id: 610789873, + node_id: "R_kgDOJGfp8Q", + name: "ts-template", + full_name: "ubiquity/ts-template", + private: false, + owner: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity/ts-template", + description: "A template repository for all @ubiquity projects.", + fork: false, + url: "https://api.github.com/repos/ubiquity/ts-template", + forks_url: "https://api.github.com/repos/ubiquity/ts-template/forks", + keys_url: "https://api.github.com/repos/ubiquity/ts-template/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity/ts-template/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity/ts-template/teams", + hooks_url: "https://api.github.com/repos/ubiquity/ts-template/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity/ts-template/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity/ts-template/events", + assignees_url: "https://api.github.com/repos/ubiquity/ts-template/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity/ts-template/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity/ts-template/tags", + blobs_url: "https://api.github.com/repos/ubiquity/ts-template/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity/ts-template/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity/ts-template/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity/ts-template/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity/ts-template/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity/ts-template/languages", + stargazers_url: "https://api.github.com/repos/ubiquity/ts-template/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity/ts-template/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity/ts-template/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity/ts-template/subscription", + commits_url: "https://api.github.com/repos/ubiquity/ts-template/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity/ts-template/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity/ts-template/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity/ts-template/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity/ts-template/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity/ts-template/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity/ts-template/merges", + archive_url: "https://api.github.com/repos/ubiquity/ts-template/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity/ts-template/downloads", + issues_url: "https://api.github.com/repos/ubiquity/ts-template/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity/ts-template/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity/ts-template/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity/ts-template/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity/ts-template/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity/ts-template/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity/ts-template/deployments", + }, + url: "https://api.github.com/notifications/threads/13785129019", + subscription_url: "https://api.github.com/notifications/threads/13785129019/subscription", + }, + pullRequest: null, + issue: { + url: "https://api.github.com/repos/ubiquity/ts-template/issues/92", + repository_url: "https://api.github.com/repos/ubiquity/ts-template", + labels_url: "https://api.github.com/repos/ubiquity/ts-template/issues/92/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity/ts-template/issues/92/comments", + events_url: "https://api.github.com/repos/ubiquity/ts-template/issues/92/events", + html_url: "https://github.com/ubiquity/ts-template/issues/92", + id: 2730306328, + node_id: "I_kwDOJGfp8c6ivSsY", + number: 92, + title: "Better template structure", + user: { + login: "rndquu", + id: 119500907, + node_id: "U_kgDOBx9waw", + avatar_url: "https://avatars.githubusercontent.com/u/119500907?v=4", + gravatar_id: "", + url: "https://api.github.com/users/rndquu", + html_url: "https://github.com/rndquu", + followers_url: "https://api.github.com/users/rndquu/followers", + following_url: "https://api.github.com/users/rndquu/following{/other_user}", + gists_url: "https://api.github.com/users/rndquu/gists{/gist_id}", + starred_url: "https://api.github.com/users/rndquu/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/rndquu/subscriptions", + organizations_url: "https://api.github.com/users/rndquu/orgs", + repos_url: "https://api.github.com/users/rndquu/repos", + events_url: "https://api.github.com/users/rndquu/events{/privacy}", + received_events_url: "https://api.github.com/users/rndquu/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 6495920953, + node_id: "LA_kwDOJGfp8c8AAAABgy_jOQ", + url: "https://api.github.com/repos/ubiquity/ts-template/labels/Time:%20%3C4%20Hours", + name: "Time: <4 Hours", + color: "ededed", + default: false, + description: null, + }, + { + id: 6495921051, + node_id: "LA_kwDOJGfp8c8AAAABgy_jmw", + url: "https://api.github.com/repos/ubiquity/ts-template/labels/Priority:%201%20(Normal)", + name: "Priority: 1 (Normal)", + color: "ededed", + default: false, + description: null, + }, + { + id: 6495925027, + node_id: "LA_kwDOJGfp8c8AAAABgy_zIw", + url: "https://api.github.com/repos/ubiquity/ts-template/labels/Price:%20100%20USD", + name: "Price: 100 USD", + color: "1f883d", + default: false, + description: null, + }, + ], + state: "open", + locked: false, + assignee: { + login: "obeys", + id: 131892818, + node_id: "U_kgDOB9yGUg", + avatar_url: "https://avatars.githubusercontent.com/u/131892818?v=4", + gravatar_id: "", + url: "https://api.github.com/users/obeys", + html_url: "https://github.com/obeys", + followers_url: "https://api.github.com/users/obeys/followers", + following_url: "https://api.github.com/users/obeys/following{/other_user}", + gists_url: "https://api.github.com/users/obeys/gists{/gist_id}", + starred_url: "https://api.github.com/users/obeys/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/obeys/subscriptions", + organizations_url: "https://api.github.com/users/obeys/orgs", + repos_url: "https://api.github.com/users/obeys/repos", + events_url: "https://api.github.com/users/obeys/events{/privacy}", + received_events_url: "https://api.github.com/users/obeys/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + assignees: [ + { + login: "obeys", + id: 131892818, + node_id: "U_kgDOB9yGUg", + avatar_url: "https://avatars.githubusercontent.com/u/131892818?v=4", + gravatar_id: "", + url: "https://api.github.com/users/obeys", + html_url: "https://github.com/obeys", + followers_url: "https://api.github.com/users/obeys/followers", + following_url: "https://api.github.com/users/obeys/following{/other_user}", + gists_url: "https://api.github.com/users/obeys/gists{/gist_id}", + starred_url: "https://api.github.com/users/obeys/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/obeys/subscriptions", + organizations_url: "https://api.github.com/users/obeys/orgs", + repos_url: "https://api.github.com/users/obeys/repos", + events_url: "https://api.github.com/users/obeys/events{/privacy}", + received_events_url: "https://api.github.com/users/obeys/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + milestone: null, + comments: 3, + created_at: "2024-12-10T14:37:33Z", + updated_at: "2024-12-11T19:01:26Z", + closed_at: null, + author_association: "MEMBER", + active_lock_reason: null, + body: "Based on [this](https://github.com/ubiquity/ts-template/issues/67) discussion and [this](https://github.com/ubiquity/uusd.ubq.fi/pull/13) PR we agree that right now the https://github.com/ubiquity/ts-template lacks structure and complex UIs (like `pay.ubq.fi`) are turned into a mess.\r\n\r\nSince we don't want to use a js framework it makes sense at least to structure https://github.com/ubiquity/ts-template properly.\r\n\r\nAs as part of this issue the https://github.com/ubiquity/ts-template should be modified this way:\r\n1. Add 2 separate html pages ([example1](https://github.com/zugdev/uusd.ubq.fi/blob/f4c6623cec130cff75e299ca47f0a45b63ace819/static/home.html), [example2](https://github.com/zugdev/uusd.ubq.fi/blob/f4c6623cec130cff75e299ca47f0a45b63ace819/static/mint.html))\r\n2. Add 2 separate js \"controllers\" for those html pages ([example1](https://github.com/zugdev/uusd.ubq.fi/blob/f4c6623cec130cff75e299ca47f0a45b63ace819/src/pages/home.ts), [example2](https://github.com/zugdev/uusd.ubq.fi/blob/f4c6623cec130cff75e299ca47f0a45b63ace819/src/pages/mint.ts))\r\n3. Add 2 reusable js components ([example](https://github.com/zugdev/uusd.ubq.fi/blob/f4c6623cec130cff75e299ca47f0a45b63ace819/src/common/collateral.ts))\r\n4. Add a router ([example](https://github.com/zugdev/uusd.ubq.fi/blob/f4c6623cec130cff75e299ca47f0a45b63ace819/src/router.ts))\r\n5. Add global `on-load.ts` and `listeners.ts` files for easier review and state management (not sure how it's gonna look like and if it's worth impleneting it)\r\n\r\nIn the end we should get a project structure similar to the one from https://github.com/vercel/next.js where it should be clear where exactly to put UI components, pages, handlers, etc...", + closed_by: null, + reactions: { + url: "https://api.github.com/repos/ubiquity/ts-template/issues/92/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity/ts-template/issues/92/timeline", + performed_via_github_app: null, + state_reason: null, + }, + backlinkCount: 0, + }, + { + notification: { + id: "12516570475", + unread: true, + reason: "subscribed", + updated_at: "2024-12-11T13:08:35Z", + last_read_at: "2024-10-26T21:07:51Z", + subject: { + title: "ID and Partner label mismatch", + url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/issues/42", + latest_comment_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/issues/42", + type: "Issue", + }, + repository: { + id: 639011218, + node_id: "R_kgDOJhaJkg", + name: "devpool-directory-tasks", + full_name: "ubiquity/devpool-directory-tasks", + private: false, + owner: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity/devpool-directory-tasks", + description: "Open bounties for the devpool-directory repository", + fork: false, + url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks", + forks_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/forks", + keys_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/teams", + hooks_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/events", + assignees_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/tags", + blobs_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/languages", + stargazers_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/subscription", + commits_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/merges", + archive_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/downloads", + issues_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/deployments", + }, + url: "https://api.github.com/notifications/threads/12516570475", + subscription_url: "https://api.github.com/notifications/threads/12516570475/subscription", + }, + pullRequest: null, + issue: { + url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/issues/42", + repository_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks", + labels_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/issues/42/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/issues/42/comments", + events_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/issues/42/events", + html_url: "https://github.com/ubiquity/devpool-directory-tasks/issues/42", + id: 2540596143, + node_id: "I_kwDOJhaJks6Xbmuv", + number: 42, + title: "ID and Partner label mismatch", + user: { + login: "Keyrxng", + id: 106303466, + node_id: "U_kgDOBlYP6g", + avatar_url: "https://avatars.githubusercontent.com/u/106303466?v=4", + gravatar_id: "", + url: "https://api.github.com/users/Keyrxng", + html_url: "https://github.com/Keyrxng", + followers_url: "https://api.github.com/users/Keyrxng/followers", + following_url: "https://api.github.com/users/Keyrxng/following{/other_user}", + gists_url: "https://api.github.com/users/Keyrxng/gists{/gist_id}", + starred_url: "https://api.github.com/users/Keyrxng/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/Keyrxng/subscriptions", + organizations_url: "https://api.github.com/users/Keyrxng/orgs", + repos_url: "https://api.github.com/users/Keyrxng/repos", + events_url: "https://api.github.com/users/Keyrxng/events{/privacy}", + received_events_url: "https://api.github.com/users/Keyrxng/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 5487930171, + node_id: "LA_kwDOJhaJks8AAAABRxsrOw", + url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/labels/Priority:%201%20(Normal)", + name: "Priority: 1 (Normal)", + color: "ededed", + default: false, + description: "", + }, + ], + state: "closed", + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 2, + created_at: "2024-09-22T01:54:43Z", + updated_at: "2024-12-11T13:08:14Z", + closed_at: "2024-12-11T13:08:14Z", + author_association: "MEMBER", + active_lock_reason: null, + body: "So it seems that when an issue is transferred to another repository or organization that the issue takes on a new `node_id` so we must update our logic to handle out-of-sync labels.\r\n\r\nWe should also aim to remove any partner issues that have been deleted (I assume) but still exist within the devpool as they can belong to repos that have been deleted.\r\n\r\nSince we already have the `IssueRemover` class we can borrow it and delete any erroneous tasks before we perform any state changes.\r\n\r\nI think we should also delete any devpool issues that's body does not match the typical url formatting standard.\r\n\r\n", + closed_by: { + login: "rndquu", + id: 119500907, + node_id: "U_kgDOBx9waw", + avatar_url: "https://avatars.githubusercontent.com/u/119500907?v=4", + gravatar_id: "", + url: "https://api.github.com/users/rndquu", + html_url: "https://github.com/rndquu", + followers_url: "https://api.github.com/users/rndquu/followers", + following_url: "https://api.github.com/users/rndquu/following{/other_user}", + gists_url: "https://api.github.com/users/rndquu/gists{/gist_id}", + starred_url: "https://api.github.com/users/rndquu/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/rndquu/subscriptions", + organizations_url: "https://api.github.com/users/rndquu/orgs", + repos_url: "https://api.github.com/users/rndquu/repos", + events_url: "https://api.github.com/users/rndquu/events{/privacy}", + received_events_url: "https://api.github.com/users/rndquu/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + reactions: { + url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/issues/42/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity/devpool-directory-tasks/issues/42/timeline", + performed_via_github_app: null, + state_reason: "not_planned", + }, + backlinkCount: 0, + }, + { + notification: { + id: "13553639796", + unread: true, + reason: "subscribed", + updated_at: "2024-12-09T10:33:09Z", + last_read_at: "2024-11-28T19:42:27Z", + subject: { + title: "fix: use sonarjs legacy eslint rules", + url: "https://api.github.com/repos/ubiquity/ts-template/pulls/86", + latest_comment_url: "https://api.github.com/repos/ubiquity/ts-template/issues/comments/2527534659", + type: "PullRequest", + }, + repository: { + id: 610789873, + node_id: "R_kgDOJGfp8Q", + name: "ts-template", + full_name: "ubiquity/ts-template", + private: false, + owner: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity/ts-template", + description: "A template repository for all @ubiquity projects.", + fork: false, + url: "https://api.github.com/repos/ubiquity/ts-template", + forks_url: "https://api.github.com/repos/ubiquity/ts-template/forks", + keys_url: "https://api.github.com/repos/ubiquity/ts-template/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity/ts-template/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity/ts-template/teams", + hooks_url: "https://api.github.com/repos/ubiquity/ts-template/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity/ts-template/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity/ts-template/events", + assignees_url: "https://api.github.com/repos/ubiquity/ts-template/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity/ts-template/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity/ts-template/tags", + blobs_url: "https://api.github.com/repos/ubiquity/ts-template/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity/ts-template/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity/ts-template/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity/ts-template/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity/ts-template/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity/ts-template/languages", + stargazers_url: "https://api.github.com/repos/ubiquity/ts-template/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity/ts-template/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity/ts-template/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity/ts-template/subscription", + commits_url: "https://api.github.com/repos/ubiquity/ts-template/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity/ts-template/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity/ts-template/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity/ts-template/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity/ts-template/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity/ts-template/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity/ts-template/merges", + archive_url: "https://api.github.com/repos/ubiquity/ts-template/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity/ts-template/downloads", + issues_url: "https://api.github.com/repos/ubiquity/ts-template/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity/ts-template/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity/ts-template/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity/ts-template/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity/ts-template/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity/ts-template/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity/ts-template/deployments", + }, + url: "https://api.github.com/notifications/threads/13553639796", + subscription_url: "https://api.github.com/notifications/threads/13553639796/subscription", + }, + pullRequest: { + url: "https://api.github.com/repos/ubiquity/ts-template/pulls/86", + id: 2200213765, + node_id: "PR_kwDOJGfp8c6DJJkF", + html_url: "https://github.com/ubiquity/ts-template/pull/86", + diff_url: "https://github.com/ubiquity/ts-template/pull/86.diff", + patch_url: "https://github.com/ubiquity/ts-template/pull/86.patch", + issue_url: "https://api.github.com/repos/ubiquity/ts-template/issues/86", + number: 86, + state: "closed", + locked: false, + title: "fix: use sonarjs legacy eslint rules", + user: { + login: "rndquu", + id: 119500907, + node_id: "U_kgDOBx9waw", + avatar_url: "https://avatars.githubusercontent.com/u/119500907?v=4", + gravatar_id: "", + url: "https://api.github.com/users/rndquu", + html_url: "https://github.com/rndquu", + followers_url: "https://api.github.com/users/rndquu/followers", + following_url: "https://api.github.com/users/rndquu/following{/other_user}", + gists_url: "https://api.github.com/users/rndquu/gists{/gist_id}", + starred_url: "https://api.github.com/users/rndquu/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/rndquu/subscriptions", + organizations_url: "https://api.github.com/users/rndquu/orgs", + repos_url: "https://api.github.com/users/rndquu/repos", + events_url: "https://api.github.com/users/rndquu/events{/privacy}", + received_events_url: "https://api.github.com/users/rndquu/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + body: "Resolves https://github.com/ubiquity/ts-template/issues/82#issuecomment-2499165687", + created_at: "2024-11-26T07:24:45Z", + updated_at: "2024-12-09T10:32:49Z", + closed_at: "2024-11-26T07:52:55Z", + merged_at: "2024-11-26T07:52:55Z", + merge_commit_sha: "b7f05796d3b65a3f84e980f6fd6f46541ffa6cf4", + assignee: null, + assignees: [], + requested_reviewers: [], + requested_teams: [], + labels: [], + milestone: null, + draft: false, + commits_url: "https://api.github.com/repos/ubiquity/ts-template/pulls/86/commits", + review_comments_url: "https://api.github.com/repos/ubiquity/ts-template/pulls/86/comments", + review_comment_url: "https://api.github.com/repos/ubiquity/ts-template/pulls/comments{/number}", + comments_url: "https://api.github.com/repos/ubiquity/ts-template/issues/86/comments", + statuses_url: "https://api.github.com/repos/ubiquity/ts-template/statuses/b828baf00f7fe330ce3b2da5156100e6a790eddd", + head: { + label: "rndquu:fix/eslint-sonarjs", + ref: "fix/eslint-sonarjs", + sha: "b828baf00f7fe330ce3b2da5156100e6a790eddd", + user: { + login: "rndquu", + id: 119500907, + node_id: "U_kgDOBx9waw", + avatar_url: "https://avatars.githubusercontent.com/u/119500907?v=4", + gravatar_id: "", + url: "https://api.github.com/users/rndquu", + html_url: "https://github.com/rndquu", + followers_url: "https://api.github.com/users/rndquu/followers", + following_url: "https://api.github.com/users/rndquu/following{/other_user}", + gists_url: "https://api.github.com/users/rndquu/gists{/gist_id}", + starred_url: "https://api.github.com/users/rndquu/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/rndquu/subscriptions", + organizations_url: "https://api.github.com/users/rndquu/orgs", + repos_url: "https://api.github.com/users/rndquu/repos", + events_url: "https://api.github.com/users/rndquu/events{/privacy}", + received_events_url: "https://api.github.com/users/rndquu/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 769899836, + node_id: "R_kgDOLeO9PA", + name: "ts-template", + full_name: "rndquu/ts-template", + private: false, + owner: { + login: "rndquu", + id: 119500907, + node_id: "U_kgDOBx9waw", + avatar_url: "https://avatars.githubusercontent.com/u/119500907?v=4", + gravatar_id: "", + url: "https://api.github.com/users/rndquu", + html_url: "https://github.com/rndquu", + followers_url: "https://api.github.com/users/rndquu/followers", + following_url: "https://api.github.com/users/rndquu/following{/other_user}", + gists_url: "https://api.github.com/users/rndquu/gists{/gist_id}", + starred_url: "https://api.github.com/users/rndquu/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/rndquu/subscriptions", + organizations_url: "https://api.github.com/users/rndquu/orgs", + repos_url: "https://api.github.com/users/rndquu/repos", + events_url: "https://api.github.com/users/rndquu/events{/privacy}", + received_events_url: "https://api.github.com/users/rndquu/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/rndquu/ts-template", + description: "A template repository for all @ubiquity projects.", + fork: true, + url: "https://api.github.com/repos/rndquu/ts-template", + forks_url: "https://api.github.com/repos/rndquu/ts-template/forks", + keys_url: "https://api.github.com/repos/rndquu/ts-template/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/rndquu/ts-template/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/rndquu/ts-template/teams", + hooks_url: "https://api.github.com/repos/rndquu/ts-template/hooks", + issue_events_url: "https://api.github.com/repos/rndquu/ts-template/issues/events{/number}", + events_url: "https://api.github.com/repos/rndquu/ts-template/events", + assignees_url: "https://api.github.com/repos/rndquu/ts-template/assignees{/user}", + branches_url: "https://api.github.com/repos/rndquu/ts-template/branches{/branch}", + tags_url: "https://api.github.com/repos/rndquu/ts-template/tags", + blobs_url: "https://api.github.com/repos/rndquu/ts-template/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/rndquu/ts-template/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/rndquu/ts-template/git/refs{/sha}", + trees_url: "https://api.github.com/repos/rndquu/ts-template/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/rndquu/ts-template/statuses/{sha}", + languages_url: "https://api.github.com/repos/rndquu/ts-template/languages", + stargazers_url: "https://api.github.com/repos/rndquu/ts-template/stargazers", + contributors_url: "https://api.github.com/repos/rndquu/ts-template/contributors", + subscribers_url: "https://api.github.com/repos/rndquu/ts-template/subscribers", + subscription_url: "https://api.github.com/repos/rndquu/ts-template/subscription", + commits_url: "https://api.github.com/repos/rndquu/ts-template/commits{/sha}", + git_commits_url: "https://api.github.com/repos/rndquu/ts-template/git/commits{/sha}", + comments_url: "https://api.github.com/repos/rndquu/ts-template/comments{/number}", + issue_comment_url: "https://api.github.com/repos/rndquu/ts-template/issues/comments{/number}", + contents_url: "https://api.github.com/repos/rndquu/ts-template/contents/{+path}", + compare_url: "https://api.github.com/repos/rndquu/ts-template/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/rndquu/ts-template/merges", + archive_url: "https://api.github.com/repos/rndquu/ts-template/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/rndquu/ts-template/downloads", + issues_url: "https://api.github.com/repos/rndquu/ts-template/issues{/number}", + pulls_url: "https://api.github.com/repos/rndquu/ts-template/pulls{/number}", + milestones_url: "https://api.github.com/repos/rndquu/ts-template/milestones{/number}", + notifications_url: "https://api.github.com/repos/rndquu/ts-template/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/rndquu/ts-template/labels{/name}", + releases_url: "https://api.github.com/repos/rndquu/ts-template/releases{/id}", + deployments_url: "https://api.github.com/repos/rndquu/ts-template/deployments", + created_at: "2024-03-10T11:38:12Z", + updated_at: "2024-11-29T15:38:59Z", + pushed_at: "2024-12-12T13:03:44Z", + git_url: "git://github.com/rndquu/ts-template.git", + ssh_url: "git@github.com:rndquu/ts-template.git", + clone_url: "https://github.com/rndquu/ts-template.git", + svn_url: "https://github.com/rndquu/ts-template", + homepage: "", + size: 1099, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: false, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 0, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 1, + license: null, + allow_forking: true, + is_template: true, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 0, + open_issues: 1, + watchers: 0, + default_branch: "development", + }, + }, + base: { + label: "ubiquity:development", + ref: "development", + sha: "7b94011f7e080380dd5517db6a0b80ec6d5ae965", + user: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 610789873, + node_id: "R_kgDOJGfp8Q", + name: "ts-template", + full_name: "ubiquity/ts-template", + private: false, + owner: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity/ts-template", + description: "A template repository for all @ubiquity projects.", + fork: false, + url: "https://api.github.com/repos/ubiquity/ts-template", + forks_url: "https://api.github.com/repos/ubiquity/ts-template/forks", + keys_url: "https://api.github.com/repos/ubiquity/ts-template/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity/ts-template/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity/ts-template/teams", + hooks_url: "https://api.github.com/repos/ubiquity/ts-template/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity/ts-template/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity/ts-template/events", + assignees_url: "https://api.github.com/repos/ubiquity/ts-template/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity/ts-template/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity/ts-template/tags", + blobs_url: "https://api.github.com/repos/ubiquity/ts-template/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity/ts-template/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity/ts-template/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity/ts-template/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity/ts-template/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity/ts-template/languages", + stargazers_url: "https://api.github.com/repos/ubiquity/ts-template/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity/ts-template/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity/ts-template/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity/ts-template/subscription", + commits_url: "https://api.github.com/repos/ubiquity/ts-template/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity/ts-template/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity/ts-template/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity/ts-template/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity/ts-template/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity/ts-template/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity/ts-template/merges", + archive_url: "https://api.github.com/repos/ubiquity/ts-template/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity/ts-template/downloads", + issues_url: "https://api.github.com/repos/ubiquity/ts-template/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity/ts-template/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity/ts-template/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity/ts-template/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity/ts-template/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity/ts-template/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity/ts-template/deployments", + created_at: "2023-03-07T13:43:25Z", + updated_at: "2024-11-27T16:47:23Z", + pushed_at: "2024-11-27T16:47:19Z", + git_url: "git://github.com/ubiquity/ts-template.git", + ssh_url: "git@github.com:ubiquity/ts-template.git", + clone_url: "https://github.com/ubiquity/ts-template.git", + svn_url: "https://github.com/ubiquity/ts-template", + homepage: "", + size: 1481, + stargazers_count: 2, + watchers_count: 2, + language: "TypeScript", + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: true, + has_pages: false, + has_discussions: false, + forks_count: 25, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 9, + license: null, + allow_forking: true, + is_template: true, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 25, + open_issues: 9, + watchers: 2, + default_branch: "development", + }, + }, + _links: { + self: { + href: "https://api.github.com/repos/ubiquity/ts-template/pulls/86", + }, + html: { + href: "https://github.com/ubiquity/ts-template/pull/86", + }, + issue: { + href: "https://api.github.com/repos/ubiquity/ts-template/issues/86", + }, + comments: { + href: "https://api.github.com/repos/ubiquity/ts-template/issues/86/comments", + }, + review_comments: { + href: "https://api.github.com/repos/ubiquity/ts-template/pulls/86/comments", + }, + review_comment: { + href: "https://api.github.com/repos/ubiquity/ts-template/pulls/comments{/number}", + }, + commits: { + href: "https://api.github.com/repos/ubiquity/ts-template/pulls/86/commits", + }, + statuses: { + href: "https://api.github.com/repos/ubiquity/ts-template/statuses/b828baf00f7fe330ce3b2da5156100e6a790eddd", + }, + }, + author_association: "MEMBER", + auto_merge: null, + active_lock_reason: null, + merged: true, + mergeable: null, + rebaseable: null, + mergeable_state: "unknown", + merged_by: { + login: "rndquu", + id: 119500907, + node_id: "U_kgDOBx9waw", + avatar_url: "https://avatars.githubusercontent.com/u/119500907?v=4", + gravatar_id: "", + url: "https://api.github.com/users/rndquu", + html_url: "https://github.com/rndquu", + followers_url: "https://api.github.com/users/rndquu/followers", + following_url: "https://api.github.com/users/rndquu/following{/other_user}", + gists_url: "https://api.github.com/users/rndquu/gists{/gist_id}", + starred_url: "https://api.github.com/users/rndquu/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/rndquu/subscriptions", + organizations_url: "https://api.github.com/users/rndquu/orgs", + repos_url: "https://api.github.com/users/rndquu/repos", + events_url: "https://api.github.com/users/rndquu/events{/privacy}", + received_events_url: "https://api.github.com/users/rndquu/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + comments: 4, + review_comments: 0, + maintainer_can_modify: false, + commits: 1, + additions: 1, + deletions: 1, + changed_files: 1, + }, + issue: { + url: "https://api.github.com/repos/ubiquity/ts-template/issues/82", + repository_url: "https://api.github.com/repos/ubiquity/ts-template", + labels_url: "https://api.github.com/repos/ubiquity/ts-template/issues/82/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity/ts-template/issues/82/comments", + events_url: "https://api.github.com/repos/ubiquity/ts-template/issues/82/events", + html_url: "https://github.com/ubiquity/ts-template/issues/82", + id: 2672552112, + node_id: "I_kwDOJGfp8c6fS-iw", + number: 82, + title: "`Empty String Check` workflow: exclude files", + user: { + login: "rndquu", + id: 119500907, + node_id: "U_kgDOBx9waw", + avatar_url: "https://avatars.githubusercontent.com/u/119500907?v=4", + gravatar_id: "", + url: "https://api.github.com/users/rndquu", + html_url: "https://github.com/rndquu", + followers_url: "https://api.github.com/users/rndquu/followers", + following_url: "https://api.github.com/users/rndquu/following{/other_user}", + gists_url: "https://api.github.com/users/rndquu/gists{/gist_id}", + starred_url: "https://api.github.com/users/rndquu/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/rndquu/subscriptions", + organizations_url: "https://api.github.com/users/rndquu/orgs", + repos_url: "https://api.github.com/users/rndquu/repos", + events_url: "https://api.github.com/users/rndquu/events{/privacy}", + received_events_url: "https://api.github.com/users/rndquu/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 5440623823, + node_id: "LA_kwDOJGfp8c8AAAABRElUzw", + url: "https://api.github.com/repos/ubiquity/ts-template/labels/Time:%20%3C1%20Hour", + name: "Time: <1 Hour", + color: "ededed", + default: false, + description: null, + }, + { + id: 5487751594, + node_id: "LA_kwDOJGfp8c8AAAABRxhxqg", + url: "https://api.github.com/repos/ubiquity/ts-template/labels/Price:%2025%20USD", + name: "Price: 25 USD", + color: "1f883d", + default: false, + description: null, + }, + { + id: 6495921051, + node_id: "LA_kwDOJGfp8c8AAAABgy_jmw", + url: "https://api.github.com/repos/ubiquity/ts-template/labels/Priority:%201%20(Normal)", + name: "Priority: 1 (Normal)", + color: "ededed", + default: false, + description: null, + }, + ], + state: "open", + locked: false, + assignee: { + login: "obeys", + id: 131892818, + node_id: "U_kgDOB9yGUg", + avatar_url: "https://avatars.githubusercontent.com/u/131892818?v=4", + gravatar_id: "", + url: "https://api.github.com/users/obeys", + html_url: "https://github.com/obeys", + followers_url: "https://api.github.com/users/obeys/followers", + following_url: "https://api.github.com/users/obeys/following{/other_user}", + gists_url: "https://api.github.com/users/obeys/gists{/gist_id}", + starred_url: "https://api.github.com/users/obeys/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/obeys/subscriptions", + organizations_url: "https://api.github.com/users/obeys/orgs", + repos_url: "https://api.github.com/users/obeys/repos", + events_url: "https://api.github.com/users/obeys/events{/privacy}", + received_events_url: "https://api.github.com/users/obeys/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + assignees: [ + { + login: "obeys", + id: 131892818, + node_id: "U_kgDOB9yGUg", + avatar_url: "https://avatars.githubusercontent.com/u/131892818?v=4", + gravatar_id: "", + url: "https://api.github.com/users/obeys", + html_url: "https://github.com/obeys", + followers_url: "https://api.github.com/users/obeys/followers", + following_url: "https://api.github.com/users/obeys/following{/other_user}", + gists_url: "https://api.github.com/users/obeys/gists{/gist_id}", + starred_url: "https://api.github.com/users/obeys/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/obeys/subscriptions", + organizations_url: "https://api.github.com/users/obeys/orgs", + repos_url: "https://api.github.com/users/obeys/repos", + events_url: "https://api.github.com/users/obeys/events{/privacy}", + received_events_url: "https://api.github.com/users/obeys/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + milestone: null, + comments: 6, + created_at: "2024-11-19T15:23:35Z", + updated_at: "2024-11-26T07:56:24Z", + closed_at: null, + author_association: "MEMBER", + active_lock_reason: null, + body: "Check [this](https://github.com/ubiquity-os/ubiquity-os-plugin-installer/actions/runs/11914418242/job/33202289177?pr=13) failing `Empty String Check` workflow. It fails because there're empty strings in the following places:\r\n- [one](https://github.com/ubiquity-os/ubiquity-os-plugin-installer/blob/406cac7a7f77be8c8d572d0f39b378722ae867fb/static/scripts/render-manifest.ts#L295)\r\n- [two](https://github.com/ubiquity-os/ubiquity-os-plugin-installer/blob/406cac7a7f77be8c8d572d0f39b378722ae867fb/static/scripts/render-manifest.ts#L440)\r\n- [three](https://github.com/ubiquity-os/ubiquity-os-plugin-installer/blob/406cac7a7f77be8c8d572d0f39b378722ae867fb/static/utils/ele-helpers.ts#L88)\r\n\r\nSo there are legit cases when empty strings can be used. \r\n\r\nWhat should be done:\r\n- add a feature of excluding some files from empty strings check in the [no-empty-strings.yml](https://github.com/ubiquity/ts-template/blob/7b94011f7e080380dd5517db6a0b80ec6d5ae965/.github/workflows/no-empty-strings.yml) workflow \r\n\r\n", + closed_by: { + login: "rndquu", + id: 119500907, + node_id: "U_kgDOBx9waw", + avatar_url: "https://avatars.githubusercontent.com/u/119500907?v=4", + gravatar_id: "", + url: "https://api.github.com/users/rndquu", + html_url: "https://github.com/rndquu", + followers_url: "https://api.github.com/users/rndquu/followers", + following_url: "https://api.github.com/users/rndquu/following{/other_user}", + gists_url: "https://api.github.com/users/rndquu/gists{/gist_id}", + starred_url: "https://api.github.com/users/rndquu/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/rndquu/subscriptions", + organizations_url: "https://api.github.com/users/rndquu/orgs", + repos_url: "https://api.github.com/users/rndquu/repos", + events_url: "https://api.github.com/users/rndquu/events{/privacy}", + received_events_url: "https://api.github.com/users/rndquu/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + reactions: { + url: "https://api.github.com/repos/ubiquity/ts-template/issues/82/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity/ts-template/issues/82/timeline", + performed_via_github_app: null, + state_reason: "reopened", + }, + backlinkCount: 0, + }, + { + notification: { + id: "10913562217", + unread: true, + reason: "mention", + updated_at: "2024-12-02T18:29:34Z", + last_read_at: "2024-10-28T14:06:39Z", + subject: { + title: "Responsive issues on long recipient's name", + url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/237", + latest_comment_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/comments/2512366849", + type: "Issue", + }, + repository: { + id: 601950536, + node_id: "R_kgDOI-EJSA", + name: "pay.ubq.fi", + full_name: "ubiquity/pay.ubq.fi", + private: false, + owner: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity/pay.ubq.fi", + description: "Generate and claim spender permits (EIP-2612)", + fork: false, + url: "https://api.github.com/repos/ubiquity/pay.ubq.fi", + forks_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/forks", + keys_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/teams", + hooks_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/events", + assignees_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/tags", + blobs_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/languages", + stargazers_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/subscription", + commits_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/merges", + archive_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/downloads", + issues_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/deployments", + }, + url: "https://api.github.com/notifications/threads/10913562217", + subscription_url: "https://api.github.com/notifications/threads/10913562217/subscription", + }, + pullRequest: null, + issue: { + url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/237", + repository_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi", + labels_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/237/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/237/comments", + events_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/237/events", + html_url: "https://github.com/ubiquity/pay.ubq.fi/issues/237", + id: 2329617476, + node_id: "I_kwDOI-EJSM6K2yRE", + number: 237, + title: "Responsive issues on long recipient's name", + user: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [ + { + id: 5347112003, + node_id: "LA_kwDOI-EJSM8AAAABPrZ0Qw", + url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Priority:%201%20(Normal)", + name: "Priority: 1 (Normal)", + color: "ededed", + default: false, + description: "", + }, + { + id: 5574937316, + node_id: "LA_kwDOI-EJSM8AAAABTErK5A", + url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Price:%2050%20USD", + name: "Price: 50 USD", + color: "1f883d", + default: false, + description: null, + }, + { + id: 5831150872, + node_id: "LA_kwDOI-EJSM8AAAABW5BNGA", + url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/labels/Time:%20%3C2%20Hours", + name: "Time: <2 Hours", + color: "ededed", + default: false, + description: null, + }, + ], + state: "open", + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 46, + created_at: "2024-06-02T12:00:35Z", + updated_at: "2024-12-02T18:29:13Z", + closed_at: null, + author_association: "MEMBER", + active_lock_reason: null, + body: 'When the recipient name is long, it overflows the container and on mobile makes the button going out of the screen. See attached screenshots:\r\n\r\nimage\r\nimage\r\n\r\nThe name should probably scroll sideways or simply be cut on overflow.', + closed_by: null, + reactions: { + url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/237/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity/pay.ubq.fi/issues/237/timeline", + performed_via_github_app: null, + state_reason: null, + }, + backlinkCount: 0, + }, + { + notification: { + id: "13815710022", + unread: true, + reason: "subscribed", + updated_at: "2024-12-12T05:13:21Z", + last_read_at: null, + subject: { + title: "Add the CHANGELOG to the ignored prettier files", + url: "https://api.github.com/repos/ubiquity-os/plugin-template/issues/35", + latest_comment_url: "https://api.github.com/repos/ubiquity-os/plugin-template/issues/35", + type: "Issue", + }, + repository: { + id: 806821550, + node_id: "R_kgDOMBcerg", + name: "plugin-template", + full_name: "ubiquity-os/plugin-template", + private: false, + owner: { + login: "ubiquity-os", + id: 160213852, + node_id: "O_kgDOCYyrXA", + avatar_url: "https://avatars.githubusercontent.com/u/160213852?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os", + html_url: "https://github.com/ubiquity-os", + followers_url: "https://api.github.com/users/ubiquity-os/followers", + following_url: "https://api.github.com/users/ubiquity-os/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os/orgs", + repos_url: "https://api.github.com/users/ubiquity-os/repos", + events_url: "https://api.github.com/users/ubiquity-os/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os/plugin-template", + description: "Template repository for plugins that will run within Ubiquibot.", + fork: false, + url: "https://api.github.com/repos/ubiquity-os/plugin-template", + forks_url: "https://api.github.com/repos/ubiquity-os/plugin-template/forks", + keys_url: "https://api.github.com/repos/ubiquity-os/plugin-template/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os/plugin-template/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os/plugin-template/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os/plugin-template/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os/plugin-template/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os/plugin-template/events", + assignees_url: "https://api.github.com/repos/ubiquity-os/plugin-template/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os/plugin-template/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os/plugin-template/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os/plugin-template/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os/plugin-template/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os/plugin-template/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os/plugin-template/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os/plugin-template/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os/plugin-template/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os/plugin-template/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os/plugin-template/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os/plugin-template/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os/plugin-template/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os/plugin-template/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os/plugin-template/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os/plugin-template/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os/plugin-template/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os/plugin-template/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os/plugin-template/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os/plugin-template/merges", + archive_url: "https://api.github.com/repos/ubiquity-os/plugin-template/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os/plugin-template/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os/plugin-template/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os/plugin-template/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os/plugin-template/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os/plugin-template/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os/plugin-template/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os/plugin-template/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os/plugin-template/deployments", + }, + url: "https://api.github.com/notifications/threads/13815710022", + subscription_url: "https://api.github.com/notifications/threads/13815710022/subscription", + }, + pullRequest: null, + issue: { + url: "https://api.github.com/repos/ubiquity-os/plugin-template/issues/35", + repository_url: "https://api.github.com/repos/ubiquity-os/plugin-template", + labels_url: "https://api.github.com/repos/ubiquity-os/plugin-template/issues/35/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity-os/plugin-template/issues/35/comments", + events_url: "https://api.github.com/repos/ubiquity-os/plugin-template/issues/35/events", + html_url: "https://github.com/ubiquity-os/plugin-template/issues/35", + id: 2734839716, + node_id: "I_kwDOMBcers6jAlek", + number: 35, + title: "Add the CHANGELOG to the ignored prettier files", + user: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [], + state: "open", + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: "2024-12-12T05:13:01Z", + updated_at: "2024-12-12T05:13:01Z", + closed_at: null, + author_association: "MEMBER", + active_lock_reason: null, + body: "The changelog is auto-generated and doesn't seem to comply with prettier settings, which always lead to a failed formatting action run. We should either ignore the file, or find a way to run prettier on the file before it is created to avoid having to manually fix it every time a new version is released.", + closed_by: null, + reactions: { + url: "https://api.github.com/repos/ubiquity-os/plugin-template/issues/35/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity-os/plugin-template/issues/35/timeline", + performed_via_github_app: null, + state_reason: null, + }, + backlinkCount: 0, + }, + { + notification: { + id: "13515245670", + unread: true, + reason: "mention", + updated_at: "2024-12-11T16:10:30Z", + last_read_at: "2024-12-10T23:14:09Z", + subject: { + title: "org configs sync/corrections", + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/57", + latest_comment_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/comments/2536427377", + type: "Issue", + }, + repository: { + id: 771565340, + node_id: "R_kgDOLf0nHA", + name: "plugins-wishlist", + full_name: "ubiquity-os/plugins-wishlist", + private: false, + owner: { + login: "ubiquity-os", + id: 160213852, + node_id: "O_kgDOCYyrXA", + avatar_url: "https://avatars.githubusercontent.com/u/160213852?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity-os", + html_url: "https://github.com/ubiquity-os", + followers_url: "https://api.github.com/users/ubiquity-os/followers", + following_url: "https://api.github.com/users/ubiquity-os/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity-os/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity-os/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity-os/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity-os/orgs", + repos_url: "https://api.github.com/users/ubiquity-os/repos", + events_url: "https://api.github.com/users/ubiquity-os/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity-os/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity-os/plugins-wishlist", + description: null, + fork: false, + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist", + forks_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/forks", + keys_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/teams", + hooks_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/events", + assignees_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/tags", + blobs_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/languages", + stargazers_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/subscription", + commits_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/merges", + archive_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/downloads", + issues_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/deployments", + }, + url: "https://api.github.com/notifications/threads/13515245670", + subscription_url: "https://api.github.com/notifications/threads/13515245670/subscription", + }, + pullRequest: null, + issue: { + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/57", + repository_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist", + labels_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/57/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/57/comments", + events_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/57/events", + html_url: "https://github.com/ubiquity-os/plugins-wishlist/issues/57", + id: 2686099422, + node_id: "I_kwDOLf0nHM6gGp_e", + number: 57, + title: "org configs sync/corrections", + user: { + login: "Keyrxng", + id: 106303466, + node_id: "U_kgDOBlYP6g", + avatar_url: "https://avatars.githubusercontent.com/u/106303466?v=4", + gravatar_id: "", + url: "https://api.github.com/users/Keyrxng", + html_url: "https://github.com/Keyrxng", + followers_url: "https://api.github.com/users/Keyrxng/followers", + following_url: "https://api.github.com/users/Keyrxng/following{/other_user}", + gists_url: "https://api.github.com/users/Keyrxng/gists{/gist_id}", + starred_url: "https://api.github.com/users/Keyrxng/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/Keyrxng/subscriptions", + organizations_url: "https://api.github.com/users/Keyrxng/orgs", + repos_url: "https://api.github.com/users/Keyrxng/repos", + events_url: "https://api.github.com/users/Keyrxng/events{/privacy}", + received_events_url: "https://api.github.com/users/Keyrxng/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [], + state: "open", + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 2, + created_at: "2024-11-23T14:40:26Z", + updated_at: "2024-12-11T16:10:30Z", + closed_at: null, + author_association: "MEMBER", + active_lock_reason: null, + body: '- We have four orgs all with their own config files. \r\n- Each org has repos which also have their own config files (potentially)\r\n- repo config files need to copy the entire org config (afaik) as it overwrites, not merges.\r\n\r\nDue to the above it\'s very easy to have plugin URLs which are out of sync.\r\n\r\n- [`"ubiquibot"`](https://github.com/ubiquity/.ubiquity-os/blob/c4df855b2e8670608082ad7ea4e7fcd1ef32af0d/.github/.ubiquity-os.config.yml#L20) in `command-wallet` worker URL and it should be `ubiquity-os-marketplace` or just `ubiquity-os` but the URL is valid\r\n- [`"ubiquibot"`](https://github.com/ubiquity/.ubiquity-os/blob/c4df855b2e8670608082ad7ea4e7fcd1ef32af0d/.github/.ubiquity-os.config.yml#L29) in `command-query`, this URL is invalid as it does not match the `worker-deploy.yml` [deployment url](https://github.com/ubiquity-os-marketplace/command-query/actions/runs/11963462112)\r\n- [`"ubiquibot"`](https://github.com/ubiquity/.ubiquity-os/blob/c4df855b2e8670608082ad7ea4e7fcd1ef32af0d/.github/.ubiquity-os.config.yml#L33) in `daemon-merging` and URL is invalid as it still points to `assistive-pricing`\r\n- [`potential branch mismatch`](https://github.com/ubiquity/.ubiquity-os/blob/c4df855b2e8670608082ad7ea4e7fcd1ef32af0d/.github/.ubiquity-os.config.yml#L383) in `text-vector` as it targets `development` but the most recent worker was deployed to `main`.\r\n- [`plugin instance confusion`](https://github.com/ubiquity/.ubiquity-os/blob/c4df855b2e8670608082ad7ea4e7fcd1ef32af0d/.github/.ubiquity-os.config.yml#L383) in `text-vector` as it\'s installed as a worker here but is running on [actions](https://github.com/ubiquity-os-marketplace/text-vector-embeddings/actions)\r\n\r\n\r\nThat is just from one org\' (`ubiquity`) config file and I\'m 100% certain all of them are going to have either the same or similar problems.\r\n\r\n1. Create a plugin which detects changes to `ubiquity-os-config.yml` and then tracks all other config files and updates them accordingly.\r\n2. Create infra to simply TG message the org admins that there is a config mismatch and it can be manually reviewed.\r\n3. Create a workflow which effectively does the same as 1 or presents links to other configs that are mismatched within a diff comment like the `empty strings warning`?', + closed_by: null, + reactions: { + url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/57/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity-os/plugins-wishlist/issues/57/timeline", + performed_via_github_app: null, + state_reason: null, + }, + backlinkCount: 0, + }, + { + notification: { + id: "13258878917", + unread: true, + reason: "mention", + updated_at: "2024-11-29T20:23:39Z", + last_read_at: "2024-11-18T16:34:11Z", + subject: { + title: "feat: add kv binding in actions for referral tracker", + url: "https://api.github.com/repos/ubiquity/work.ubq.fi/pulls/163", + latest_comment_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/issues/comments/2508599992", + type: "PullRequest", + }, + repository: { + id: 724913995, + node_id: "R_kgDOKzVPSw", + name: "work.ubq.fi", + full_name: "ubiquity/work.ubq.fi", + private: false, + owner: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity/work.ubq.fi", + description: "A user interface for https://github.com/ubiquity/devpool-directory/issues", + fork: false, + url: "https://api.github.com/repos/ubiquity/work.ubq.fi", + forks_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/forks", + keys_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/teams", + hooks_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/events", + assignees_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/tags", + blobs_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/languages", + stargazers_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/subscription", + commits_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/merges", + archive_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/downloads", + issues_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/deployments", + }, + url: "https://api.github.com/notifications/threads/13258878917", + subscription_url: "https://api.github.com/notifications/threads/13258878917/subscription", + }, + pullRequest: { + url: "https://api.github.com/repos/ubiquity/work.ubq.fi/pulls/163", + id: 2168685055, + node_id: "PR_kwDOKzVPS86BQ4H_", + html_url: "https://github.com/ubiquity/work.ubq.fi/pull/163", + diff_url: "https://github.com/ubiquity/work.ubq.fi/pull/163.diff", + patch_url: "https://github.com/ubiquity/work.ubq.fi/pull/163.patch", + issue_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/issues/163", + number: 163, + state: "open", + locked: false, + title: "feat: add kv binding in actions for referral tracker", + user: { + login: "zugdev", + id: 155616000, + node_id: "U_kgDOCUaDAA", + avatar_url: "https://avatars.githubusercontent.com/u/155616000?v=4", + gravatar_id: "", + url: "https://api.github.com/users/zugdev", + html_url: "https://github.com/zugdev", + followers_url: "https://api.github.com/users/zugdev/followers", + following_url: "https://api.github.com/users/zugdev/following{/other_user}", + gists_url: "https://api.github.com/users/zugdev/gists{/gist_id}", + starred_url: "https://api.github.com/users/zugdev/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/zugdev/subscriptions", + organizations_url: "https://api.github.com/users/zugdev/orgs", + repos_url: "https://api.github.com/users/zugdev/repos", + events_url: "https://api.github.com/users/zugdev/events{/privacy}", + received_events_url: "https://api.github.com/users/zugdev/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + body: "Resolves #151\r\n\r\n@gentlementlegen I know this ain't right as of now, but I'd love some feedback. I've based myself of https://github.com/ubiquity-os/ubiquity-os-kernel/.", + created_at: "2024-11-08T03:23:23Z", + updated_at: "2024-11-29T20:23:39Z", + closed_at: null, + merged_at: null, + merge_commit_sha: "8479b49b39691f2538e715e4ca10c8c83b9bdc40", + assignee: null, + assignees: [], + requested_reviewers: [ + { + login: "0x4007", + id: 4975670, + node_id: "MDQ6VXNlcjQ5NzU2NzA=", + avatar_url: "https://avatars.githubusercontent.com/u/4975670?v=4", + gravatar_id: "", + url: "https://api.github.com/users/0x4007", + html_url: "https://github.com/0x4007", + followers_url: "https://api.github.com/users/0x4007/followers", + following_url: "https://api.github.com/users/0x4007/following{/other_user}", + gists_url: "https://api.github.com/users/0x4007/gists{/gist_id}", + starred_url: "https://api.github.com/users/0x4007/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/0x4007/subscriptions", + organizations_url: "https://api.github.com/users/0x4007/orgs", + repos_url: "https://api.github.com/users/0x4007/repos", + events_url: "https://api.github.com/users/0x4007/events{/privacy}", + received_events_url: "https://api.github.com/users/0x4007/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + ], + requested_teams: [], + labels: [], + milestone: null, + draft: false, + commits_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/pulls/163/commits", + review_comments_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/pulls/163/comments", + review_comment_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/pulls/comments{/number}", + comments_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/issues/163/comments", + statuses_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/statuses/a7a84ab69e21f04dd7aaa7d8b8cbad998118e62e", + head: { + label: "zugdev:kv-binding-in-actions", + ref: "kv-binding-in-actions", + sha: "a7a84ab69e21f04dd7aaa7d8b8cbad998118e62e", + user: { + login: "zugdev", + id: 155616000, + node_id: "U_kgDOCUaDAA", + avatar_url: "https://avatars.githubusercontent.com/u/155616000?v=4", + gravatar_id: "", + url: "https://api.github.com/users/zugdev", + html_url: "https://github.com/zugdev", + followers_url: "https://api.github.com/users/zugdev/followers", + following_url: "https://api.github.com/users/zugdev/following{/other_user}", + gists_url: "https://api.github.com/users/zugdev/gists{/gist_id}", + starred_url: "https://api.github.com/users/zugdev/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/zugdev/subscriptions", + organizations_url: "https://api.github.com/users/zugdev/orgs", + repos_url: "https://api.github.com/users/zugdev/repos", + events_url: "https://api.github.com/users/zugdev/events{/privacy}", + received_events_url: "https://api.github.com/users/zugdev/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 868572617, + node_id: "R_kgDOM8VdyQ", + name: "work.ubq.fi", + full_name: "zugdev/work.ubq.fi", + private: false, + owner: { + login: "zugdev", + id: 155616000, + node_id: "U_kgDOCUaDAA", + avatar_url: "https://avatars.githubusercontent.com/u/155616000?v=4", + gravatar_id: "", + url: "https://api.github.com/users/zugdev", + html_url: "https://github.com/zugdev", + followers_url: "https://api.github.com/users/zugdev/followers", + following_url: "https://api.github.com/users/zugdev/following{/other_user}", + gists_url: "https://api.github.com/users/zugdev/gists{/gist_id}", + starred_url: "https://api.github.com/users/zugdev/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/zugdev/subscriptions", + organizations_url: "https://api.github.com/users/zugdev/orgs", + repos_url: "https://api.github.com/users/zugdev/repos", + events_url: "https://api.github.com/users/zugdev/events{/privacy}", + received_events_url: "https://api.github.com/users/zugdev/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/zugdev/work.ubq.fi", + description: "A user interface for https://github.com/ubiquity/devpool-directory/issues", + fork: true, + url: "https://api.github.com/repos/zugdev/work.ubq.fi", + forks_url: "https://api.github.com/repos/zugdev/work.ubq.fi/forks", + keys_url: "https://api.github.com/repos/zugdev/work.ubq.fi/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/zugdev/work.ubq.fi/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/zugdev/work.ubq.fi/teams", + hooks_url: "https://api.github.com/repos/zugdev/work.ubq.fi/hooks", + issue_events_url: "https://api.github.com/repos/zugdev/work.ubq.fi/issues/events{/number}", + events_url: "https://api.github.com/repos/zugdev/work.ubq.fi/events", + assignees_url: "https://api.github.com/repos/zugdev/work.ubq.fi/assignees{/user}", + branches_url: "https://api.github.com/repos/zugdev/work.ubq.fi/branches{/branch}", + tags_url: "https://api.github.com/repos/zugdev/work.ubq.fi/tags", + blobs_url: "https://api.github.com/repos/zugdev/work.ubq.fi/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/zugdev/work.ubq.fi/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/zugdev/work.ubq.fi/git/refs{/sha}", + trees_url: "https://api.github.com/repos/zugdev/work.ubq.fi/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/zugdev/work.ubq.fi/statuses/{sha}", + languages_url: "https://api.github.com/repos/zugdev/work.ubq.fi/languages", + stargazers_url: "https://api.github.com/repos/zugdev/work.ubq.fi/stargazers", + contributors_url: "https://api.github.com/repos/zugdev/work.ubq.fi/contributors", + subscribers_url: "https://api.github.com/repos/zugdev/work.ubq.fi/subscribers", + subscription_url: "https://api.github.com/repos/zugdev/work.ubq.fi/subscription", + commits_url: "https://api.github.com/repos/zugdev/work.ubq.fi/commits{/sha}", + git_commits_url: "https://api.github.com/repos/zugdev/work.ubq.fi/git/commits{/sha}", + comments_url: "https://api.github.com/repos/zugdev/work.ubq.fi/comments{/number}", + issue_comment_url: "https://api.github.com/repos/zugdev/work.ubq.fi/issues/comments{/number}", + contents_url: "https://api.github.com/repos/zugdev/work.ubq.fi/contents/{+path}", + compare_url: "https://api.github.com/repos/zugdev/work.ubq.fi/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/zugdev/work.ubq.fi/merges", + archive_url: "https://api.github.com/repos/zugdev/work.ubq.fi/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/zugdev/work.ubq.fi/downloads", + issues_url: "https://api.github.com/repos/zugdev/work.ubq.fi/issues{/number}", + pulls_url: "https://api.github.com/repos/zugdev/work.ubq.fi/pulls{/number}", + milestones_url: "https://api.github.com/repos/zugdev/work.ubq.fi/milestones{/number}", + notifications_url: "https://api.github.com/repos/zugdev/work.ubq.fi/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/zugdev/work.ubq.fi/labels{/name}", + releases_url: "https://api.github.com/repos/zugdev/work.ubq.fi/releases{/id}", + deployments_url: "https://api.github.com/repos/zugdev/work.ubq.fi/deployments", + created_at: "2024-10-06T18:10:55Z", + updated_at: "2024-10-13T22:07:42Z", + pushed_at: "2024-12-04T19:39:21Z", + git_url: "git://github.com/zugdev/work.ubq.fi.git", + ssh_url: "git@github.com:zugdev/work.ubq.fi.git", + clone_url: "https://github.com/zugdev/work.ubq.fi.git", + svn_url: "https://github.com/zugdev/work.ubq.fi", + homepage: "https://work.ubq.fi", + size: 2283, + stargazers_count: 0, + watchers_count: 0, + language: "TypeScript", + has_issues: false, + has_projects: true, + has_downloads: true, + has_wiki: false, + has_pages: false, + has_discussions: false, + forks_count: 0, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 0, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 0, + open_issues: 0, + watchers: 0, + default_branch: "development", + }, + }, + base: { + label: "ubiquity:development", + ref: "development", + sha: "36570a01b6a13f28a92367e86a1be12f903f0550", + user: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + repo: { + id: 724913995, + node_id: "R_kgDOKzVPSw", + name: "work.ubq.fi", + full_name: "ubiquity/work.ubq.fi", + private: false, + owner: { + login: "ubiquity", + id: 76412717, + node_id: "MDEyOk9yZ2FuaXphdGlvbjc2NDEyNzE3", + avatar_url: "https://avatars.githubusercontent.com/u/76412717?v=4", + gravatar_id: "", + url: "https://api.github.com/users/ubiquity", + html_url: "https://github.com/ubiquity", + followers_url: "https://api.github.com/users/ubiquity/followers", + following_url: "https://api.github.com/users/ubiquity/following{/other_user}", + gists_url: "https://api.github.com/users/ubiquity/gists{/gist_id}", + starred_url: "https://api.github.com/users/ubiquity/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/ubiquity/subscriptions", + organizations_url: "https://api.github.com/users/ubiquity/orgs", + repos_url: "https://api.github.com/users/ubiquity/repos", + events_url: "https://api.github.com/users/ubiquity/events{/privacy}", + received_events_url: "https://api.github.com/users/ubiquity/received_events", + type: "Organization", + user_view_type: "public", + site_admin: false, + }, + html_url: "https://github.com/ubiquity/work.ubq.fi", + description: "A user interface for https://github.com/ubiquity/devpool-directory/issues", + fork: false, + url: "https://api.github.com/repos/ubiquity/work.ubq.fi", + forks_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/forks", + keys_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/keys{/key_id}", + collaborators_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/collaborators{/collaborator}", + teams_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/teams", + hooks_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/hooks", + issue_events_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/issues/events{/number}", + events_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/events", + assignees_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/assignees{/user}", + branches_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/branches{/branch}", + tags_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/tags", + blobs_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/git/blobs{/sha}", + git_tags_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/git/tags{/sha}", + git_refs_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/git/refs{/sha}", + trees_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/git/trees{/sha}", + statuses_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/statuses/{sha}", + languages_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/languages", + stargazers_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/stargazers", + contributors_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/contributors", + subscribers_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/subscribers", + subscription_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/subscription", + commits_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/commits{/sha}", + git_commits_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/git/commits{/sha}", + comments_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/comments{/number}", + issue_comment_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/issues/comments{/number}", + contents_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/contents/{+path}", + compare_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/compare/{base}...{head}", + merges_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/merges", + archive_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/{archive_format}{/ref}", + downloads_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/downloads", + issues_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/issues{/number}", + pulls_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/pulls{/number}", + milestones_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/milestones{/number}", + notifications_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/notifications{?since,all,participating}", + labels_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/labels{/name}", + releases_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/releases{/id}", + deployments_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/deployments", + created_at: "2023-11-29T03:30:57Z", + updated_at: "2024-12-08T01:55:47Z", + pushed_at: "2024-12-08T01:55:42Z", + git_url: "git://github.com/ubiquity/work.ubq.fi.git", + ssh_url: "git@github.com:ubiquity/work.ubq.fi.git", + clone_url: "https://github.com/ubiquity/work.ubq.fi.git", + svn_url: "https://github.com/ubiquity/work.ubq.fi", + homepage: "https://work.ubq.fi", + size: 2339, + stargazers_count: 2, + watchers_count: 2, + language: "TypeScript", + has_issues: true, + has_projects: true, + has_downloads: true, + has_wiki: false, + has_pages: false, + has_discussions: true, + forks_count: 29, + mirror_url: null, + archived: false, + disabled: false, + open_issues_count: 11, + license: null, + allow_forking: true, + is_template: false, + web_commit_signoff_required: false, + topics: [], + visibility: "public", + forks: 29, + open_issues: 11, + watchers: 2, + default_branch: "development", + }, + }, + _links: { + self: { + href: "https://api.github.com/repos/ubiquity/work.ubq.fi/pulls/163", + }, + html: { + href: "https://github.com/ubiquity/work.ubq.fi/pull/163", + }, + issue: { + href: "https://api.github.com/repos/ubiquity/work.ubq.fi/issues/163", + }, + comments: { + href: "https://api.github.com/repos/ubiquity/work.ubq.fi/issues/163/comments", + }, + review_comments: { + href: "https://api.github.com/repos/ubiquity/work.ubq.fi/pulls/163/comments", + }, + review_comment: { + href: "https://api.github.com/repos/ubiquity/work.ubq.fi/pulls/comments{/number}", + }, + commits: { + href: "https://api.github.com/repos/ubiquity/work.ubq.fi/pulls/163/commits", + }, + statuses: { + href: "https://api.github.com/repos/ubiquity/work.ubq.fi/statuses/a7a84ab69e21f04dd7aaa7d8b8cbad998118e62e", + }, + }, + author_association: "MEMBER", + auto_merge: null, + active_lock_reason: null, + merged: false, + mergeable: true, + rebaseable: false, + mergeable_state: "unstable", + merged_by: null, + comments: 5, + review_comments: 0, + maintainer_can_modify: true, + commits: 8, + additions: 180, + deletions: 35, + changed_files: 11, + }, + issue: { + url: "https://api.github.com/repos/ubiquity/work.ubq.fi/issues/151", + repository_url: "https://api.github.com/repos/ubiquity/work.ubq.fi", + labels_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/issues/151/labels{/name}", + comments_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/issues/151/comments", + events_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/issues/151/events", + html_url: "https://github.com/ubiquity/work.ubq.fi/issues/151", + id: 2630221058, + node_id: "I_kwDOKzVPS86cxf0C", + number: 151, + title: "Add variables into wrangler deployment script", + user: { + login: "gentlementlegen", + id: 9807008, + node_id: "MDQ6VXNlcjk4MDcwMDg=", + avatar_url: "https://avatars.githubusercontent.com/u/9807008?v=4", + gravatar_id: "", + url: "https://api.github.com/users/gentlementlegen", + html_url: "https://github.com/gentlementlegen", + followers_url: "https://api.github.com/users/gentlementlegen/followers", + following_url: "https://api.github.com/users/gentlementlegen/following{/other_user}", + gists_url: "https://api.github.com/users/gentlementlegen/gists{/gist_id}", + starred_url: "https://api.github.com/users/gentlementlegen/starred{/owner}{/repo}", + subscriptions_url: "https://api.github.com/users/gentlementlegen/subscriptions", + organizations_url: "https://api.github.com/users/gentlementlegen/orgs", + repos_url: "https://api.github.com/users/gentlementlegen/repos", + events_url: "https://api.github.com/users/gentlementlegen/events{/privacy}", + received_events_url: "https://api.github.com/users/gentlementlegen/received_events", + type: "User", + user_view_type: "public", + site_admin: false, + }, + labels: [], + state: "open", + locked: false, + assignee: null, + assignees: [], + milestone: null, + comments: 0, + created_at: "2024-11-02T05:08:58Z", + updated_at: "2024-11-02T05:08:58Z", + closed_at: null, + author_association: "MEMBER", + active_lock_reason: null, + body: " All of the KV setup is automated via the Action deployment script, these variables should be described there. [This](https://github.com/ubiquity/work.ubq.fi/pull/123/files#diff-b1b9719b6eae4103d520f1e902420f5073b5e18a5a47aa73feed71a037557c98R9) should not have been commited as such. Example from the plugin: https://github.com/ubiquity-os/plugin-template/blob/development/.github/workflows/worker-deploy.yml#L34\r\n\r\nBy hardcoding the bindings if we change org / try to deploy on our own, it will break.\r\n\r\n_Originally posted by @gentlementlegen in https://github.com/ubiquity/work.ubq.fi/issues/123#issuecomment-2440249980_\r\n ", + closed_by: null, + reactions: { + url: "https://api.github.com/repos/ubiquity/work.ubq.fi/issues/151/reactions", + total_count: 0, + "+1": 0, + "-1": 0, + laugh: 0, + hooray: 0, + confused: 0, + heart: 0, + rocket: 0, + eyes: 0, + }, + timeline_url: "https://api.github.com/repos/ubiquity/work.ubq.fi/issues/151/timeline", + performed_via_github_app: null, + state_reason: null, + }, + backlinkCount: 0, + }, +] as GitHubAggregated[]; diff --git a/src/home/getters/get-github-access-token.ts b/src/home/getters/get-github-access-token.ts index c5303f8..4e19f00 100644 --- a/src/home/getters/get-github-access-token.ts +++ b/src/home/getters/get-github-access-token.ts @@ -1,31 +1,7 @@ declare const SUPABASE_STORAGE_KEY: string; // @DEV: passed in at build time check build/esbuild-build.ts -import { Octokit } from "@octokit/rest"; import { checkSupabaseSession } from "../rendering/render-github-login-button"; import { getLocalStore } from "./get-local-store"; -/** - * Checks if the logged-in user is part of Ubiquity's Org, and didn't grant the 'repo' scope - */ -export async function isOrgMemberWithoutScope() { - const octokit = new Octokit({ auth: await getGitHubAccessToken() }); - try { - await octokit.orgs.getMembershipForAuthenticatedUser({ - org: "ubiquity", - }); - } catch (e) { - if (e && typeof e === "object" && "status" in e && e.status === 404) { - return false; - } - throw e; - } - const { headers } = await octokit.request("HEAD /"); - if (headers) { - const scopes = headers["x-oauth-scopes"]?.split(", "); - return !scopes?.includes("repo"); - } - return false; -} - export async function getGitHubAccessToken(): Promise { // better to use official function, looking up localstorage has flaws const oauthToken = await checkSupabaseSession(); diff --git a/src/home/getters/get-github-referrals.ts b/src/home/getters/get-github-referrals.ts deleted file mode 100644 index 456b19c..0000000 --- a/src/home/getters/get-github-referrals.ts +++ /dev/null @@ -1,34 +0,0 @@ -export async function getReferralFromUser(devGitHubId: string): Promise { - const url = `/referral-manager?key=${encodeURIComponent(devGitHubId)}`; - - const response = await fetch(url, { - method: "GET", - }); - - if (response.status === 200) { - const referralId = await response.text(); - return referralId; - } else if (response.status == 404) { - // No referral id found for devGitHubId - return null; - } else { - console.error(`Failed to get key: '${devGitHubId}'. Status: ${response.status}`); - return null; - } -} - -export async function getListOfReferrals(): Promise | null> { - const url = "/referral-manager"; - - const response = await fetch(url, { - method: "GET", - }); - - if (response.status === 200) { - const data = await response.json(); - return data; // return JSON file of pairs {key, value} - } else { - console.error(`Failed to fetch list. Status: ${response.status}`); - return null; - } -} diff --git a/src/home/getters/get-indexed-db.ts b/src/home/getters/get-indexed-db.ts index 77c06d4..e02a4c0 100644 --- a/src/home/getters/get-indexed-db.ts +++ b/src/home/getters/get-indexed-db.ts @@ -1,4 +1,4 @@ -import { GitHubIssue } from "../github-types"; +import { GitHubNotifications } from "../github-types"; // this file contains functions to save and retrieve issues/images from IndexedDB which is client-side in-browser storage export async function saveImageToCache({ @@ -88,19 +88,19 @@ async function openIssuesDB(): Promise { }); } // Saves fetched issues into IndexedDB and removes stale issues -export async function saveIssuesToCache(cachedIssues: GitHubIssue[], fetchedIssues: GitHubIssue[]): Promise { +export async function saveIssuesToCache(cachedIssues: GitHubNotifications, fetchedNotifications: GitHubNotifications): Promise { const db = await openIssuesDB(); const transaction = db.transaction("issues", "readwrite"); const store = transaction.objectStore("issues"); // Identify and remove stale issues (in cache but not in fetched list) - const staleIssues = cachedIssues.filter((cachedIssue) => !fetchedIssues.some((issue) => issue.id === cachedIssue.id)); + const staleIssues = cachedIssues.filter((cachedIssue) => !fetchedNotifications.some((issue) => issue.id === cachedIssue.id)); for (const issue of staleIssues) { store.delete(issue.id); } // Save or update fetched issues - for (const issue of fetchedIssues) { + for (const issue of fetchedNotifications) { store.put(issue); } @@ -111,7 +111,7 @@ export async function saveIssuesToCache(cachedIssues: GitHubIssue[], fetchedIssu } // Retrieves issues from IndexedDB -export async function getIssuesFromCache(): Promise { +export async function getIssuesFromCache(): Promise { const db = await openIssuesDB(); const transaction = db.transaction("issues", "readonly"); const store = transaction.objectStore("issues"); diff --git a/src/home/github-types.ts b/src/home/github-types.ts index f407317..54a4fdb 100644 --- a/src/home/github-types.ts +++ b/src/home/github-types.ts @@ -8,13 +8,22 @@ export const GITHUB_TASKS_STORAGE_KEY = "gitHubTasks"; export type TaskStorageItems = { timestamp: number; // in milliseconds - tasks: GitHubIssue[]; + tasks: GitHubNotifications; loggedIn: boolean; }; export type GitHubUserResponse = RestEndpointMethodTypes["users"]["getByUsername"]["response"]; export type GitHubUser = GitHubUserResponse["data"]; export type GitHubIssue = RestEndpointMethodTypes["issues"]["get"]["response"]["data"]; +export type GitHubPullRequest = RestEndpointMethodTypes["pulls"]["get"]["response"]["data"]; +export type GitHubNotifications = RestEndpointMethodTypes["activity"]["listNotificationsForAuthenticatedUser"]["response"]["data"]; +export type GitHubNotification = GitHubNotifications[0]; +export type GitHubAggregated = { + issue: GitHubIssue; + pullRequest: GitHubPullRequest | null; + notification: GitHubNotification; + backlinkCount: number; +}; export type GitHubLabel = | { id?: number; diff --git a/src/home/home.ts b/src/home/home.ts index 8a7b233..0ac3b3d 100644 --- a/src/home/home.ts +++ b/src/home/home.ts @@ -1,15 +1,13 @@ import { grid } from "../the-grid"; import { authentication } from "./authentication"; -import { displayGitHubIssues } from "./fetch-github/fetch-and-display-previews"; -import { postLoadUpdateIssues } from "./fetch-github/fetch-issues-full"; +import { displayNotifications } from "./fetch-github/filter-and-display-notifications"; +import { fetchAvatars } from "./fetch-github/fetch-avatar"; +import { fetchAllNotifications } from "./fetch-github/fetch-data"; import { readyToolbar } from "./ready-toolbar"; -import { initiateReferralCodeTracking } from "./register-referral"; import { renderServiceMessage } from "./render-service-message"; import { renderErrorInModal } from "./rendering/display-popup-modal"; -import { loadIssueFromUrl } from "./rendering/render-github-issues"; import { renderGitRevision } from "./rendering/render-github-login-button"; import { generateSortingToolbar } from "./sorting/generate-sorting-buttons"; -import { TaskManager } from "./task-manager"; // All unhandled errors are caught and displayed in a modal window.addEventListener("error", (event: ErrorEvent) => renderErrorInModal(event.error)); @@ -20,37 +18,52 @@ window.addEventListener("unhandledrejection", (event: PromiseRejectionEvent) => event.preventDefault(); }); -initiateReferralCodeTracking(); renderGitRevision(); generateSortingToolbar(); renderServiceMessage(); grid(document.getElementById("grid") as HTMLElement, () => document.body.classList.add("grid-loaded")); // @DEV: display grid background -const container = document.getElementById("issues-container") as HTMLDivElement; +export const notificationsContainer = document.getElementById("issues-container") as HTMLDivElement; -if (!container) { +if (!notificationsContainer) { throw new Error("Could not find issues container"); } -export const taskManager = new TaskManager(container); +// Should show bot +export let showBotNotifications = false; +export const flipShowBotNotifications = () => { + showBotNotifications = !showBotNotifications; +} + +// Store notifications +let notifications: Awaited> | undefined; + +// This is made to make notifications global +export async function getNotifications() { + if (!notifications) { + notifications = await fetchAllNotifications(); + } + return notifications; +} void (async function home() { void authentication(); void readyToolbar(); - await taskManager.syncTasks(); // Sync tasks from cache on load - loadIssueFromUrl(); // Load issue preview from URL if present - void displayGitHubIssues(); // Display issues from cache - await postLoadUpdateIssues(); // Update cache and issues if cache is outdated + const notifications = await getNotifications(); + if(notifications){ + await fetchAvatars(notifications); + } + void displayNotifications(); // Register service worker for PWA - if ("serviceWorker" in navigator) { - navigator.serviceWorker - .register("/progressive-web-app.js") - .then(() => { - console.log("Service worker registered"); - }) - .catch((err) => { - console.log(err); - }); - } + // if ("serviceWorker" in navigator) { + // navigator.serviceWorker + // .register("/progressive-web-app.js") + // .then(() => { + // console.log("Service worker registered"); + // }) + // .catch((err) => { + // console.log(err); + // }); + // } })(); diff --git a/src/home/issues-search.ts b/src/home/issues-search.ts deleted file mode 100644 index 3699949..0000000 --- a/src/home/issues-search.ts +++ /dev/null @@ -1,163 +0,0 @@ -import { GitHubIssue } from "./github-types"; -import { TaskManager } from "./task-manager"; -import { SearchResult, SearchWeights, SearchConfig } from "./types/search-types"; -import { SearchScorer } from "./search/search-scorer"; - -export class IssueSearch { - private readonly _weights: SearchWeights = { - title: 0.375, - body: 0.25, - fuzzy: 0.25, - meta: 0.125, - repo: 0.1, - }; - - private readonly _config: SearchConfig = { - fuzzySearchThreshold: 0.7, - exactMatchBonus: 1.0, - fuzzyMatchWeight: 0.7, - }; - - private readonly _searchScorer: SearchScorer; - private _searchableIssues: Map = new Map(); - - constructor(private _taskManager: TaskManager) { - this._searchScorer = new SearchScorer(this._config); - } - - public async initializeIssues(issues: GitHubIssue[]) { - this._searchableIssues.clear(); - issues.forEach((issue) => { - const searchableContent = this._getSearchableContent(issue); - this._searchableIssues.set(issue.id, searchableContent); - }); - } - - public search(searchText: string): Map { - let filterText = searchText.toLowerCase().trim(); - const results = new Map(); - const isFuzzySearchEnabled = filterText.startsWith("?"); - - if (isFuzzySearchEnabled) { - filterText = filterText.slice(1).trim(); - } - - if (!filterText) { - for (const id of this._searchableIssues.keys()) { - results.set(id, this._createEmptyResult()); - } - return results; - } - - const searchTerms = this._preprocessSearchTerms(filterText); - - for (const issueId of this._searchableIssues.keys()) { - const issue = this._taskManager.getGitHubIssueById(issueId); - if (!issue) { - results.set(issueId, this._createEmptyResult(false)); - continue; - } - - const result = this._calculateIssueRelevance(issue, searchTerms, isFuzzySearchEnabled); - results.set(issueId, result); - } - - this._calculateNDCGScore(results); - return results; - } - - private _calculateIssueRelevance(issue: GitHubIssue, searchTerms: string[], enableFuzzy: boolean): SearchResult { - const matchDetails = { - titleMatches: [] as string[], - bodyMatches: [] as string[], - labelMatches: [] as string[], - numberMatch: false, - repoMatch: false, - fuzzyMatches: [] as Array<{ - original: string; - matched: string; - score: number; - }>, - }; - - const searchableContent = this._searchableIssues.get(issue.id) || this._getSearchableContent(issue); - - // Calculate individual scores - const scores = { - title: this._searchScorer.calculateTitleScore(issue, searchTerms, matchDetails), - body: this._searchScorer.calculateBodyScore(issue, searchTerms, matchDetails), - fuzzy: enableFuzzy ? this._searchScorer.calculateFuzzyScore(searchableContent, searchTerms, matchDetails) : 0, - meta: this._searchScorer.calculateMetaScore(issue, searchTerms, matchDetails), - repo: this._searchScorer.calculateRepoScore(issue, searchTerms, matchDetails), - }; - - // Calculate weighted total score - const totalScore = Object.entries(scores).reduce((total, [key, score]) => { - return total + score * this._weights[key as keyof SearchWeights]; - }, 0); - - const isVisible = totalScore > 0 || matchDetails.numberMatch; - - return { - visible: isVisible, - score: isVisible ? totalScore : 0, - matchDetails, - }; - } - - private _calculateNDCGScore(results: Map): number { - const scores = Array.from(results.values()) - .filter((r) => r.visible) - .map((r) => r.score) - .sort((a, b) => b - a); - - if (scores.length === 0) return 0; - - const dcg = scores.reduce((sum, score, index) => { - return sum + (Math.pow(2, score) - 1) / Math.log2(index + 2); - }, 0); - - const idcg = [...scores] - .sort((a, b) => b - a) - .reduce((sum, score, index) => { - return sum + (Math.pow(2, score) - 1) / Math.log2(index + 2); - }, 0); - - return idcg === 0 ? 0 : dcg / idcg; - } - - private _preprocessSearchTerms(searchText: string): string[] { - return searchText - .split(/\s+/) - .filter(Boolean) - .map((term) => term.toLowerCase()); - } - - private _getSearchableContent(issue: GitHubIssue): string { - // Remove URLs from the content - const removeUrls = (text: string): string => { - return text.replace(/(?:https?:\/\/|http?:\/\/|www\.)[^\s]+/g, ""); - }; - - const title = issue.title; - const body = removeUrls(issue.body || ""); - const labels = issue.labels?.map((l) => (typeof l === "object" && l.name ? l.name : "")).join(" ") || ""; - - return `${title} ${body} ${labels}`.toLowerCase(); - } - - private _createEmptyResult(visible: boolean = true): SearchResult { - return { - visible, - score: visible ? 1 : 0, - matchDetails: { - titleMatches: [], - bodyMatches: [], - labelMatches: [], - numberMatch: false, - fuzzyMatches: [], - repoMatch: false, - }, - }; - } -} diff --git a/src/home/register-referral.ts b/src/home/register-referral.ts deleted file mode 100644 index 0c871bd..0000000 --- a/src/home/register-referral.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { checkSupabaseSession } from "./rendering/render-github-login-button"; - -export function initiateReferralCodeTracking() { - const oldRefCode = localStorage.getItem("ref"); - if (!oldRefCode) { - const urlParams = new URLSearchParams(window.location.search); - const refCode = urlParams.get("ref"); - if (refCode) { - localStorage.setItem("ref", refCode); - } - } -} - -export async function trackReferralCode() { - const refCode = localStorage.getItem("ref"); - - if (refCode && refCode != "done") { - const url = "/referral-manager"; - - const supabaseAuth = await checkSupabaseSession(); - - const response = await fetch(url, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - authToken: supabaseAuth.provider_token, - referralCode: refCode, - }), - }); - - if (response.status === 200) { - localStorage.setItem("ref", "done"); - - const newURL = new URL(window.location.href); - newURL.searchParams.delete("ref"); - window.history.pushState({}, "", newURL.toString()); - } else { - console.error(`Failed to set referral. Status: ${response.status}`); - } - } -} diff --git a/src/home/rendering/display-github-user-information.ts b/src/home/rendering/display-github-user-information.ts index 701a496..4e9437d 100644 --- a/src/home/rendering/display-github-user-information.ts +++ b/src/home/rendering/display-github-user-information.ts @@ -1,12 +1,10 @@ -import { isOrgMemberWithoutScope } from "../getters/get-github-access-token"; import { GitHubUser } from "../github-types"; import { toolbar } from "../ready-toolbar"; import { renderErrorInModal } from "./display-popup-modal"; -import { authenticationElement, getSupabase, renderAugmentAccessButton } from "./render-github-login-button"; +import { authenticationElement, getSupabase } from "./render-github-login-button"; export async function displayGitHubUserInformation(gitHubUser: GitHubUser) { const authenticatedDivElement = document.createElement("div"); - const containerDivElement = document.createElement("div"); authenticatedDivElement.id = "authenticated"; authenticatedDivElement.classList.add("user-container"); if (!toolbar) throw new Error("toolbar not found"); @@ -37,11 +35,6 @@ export async function displayGitHubUserInformation(gitHubUser: GitHubUser) { window.location.replace("/"); }); - if (await isOrgMemberWithoutScope()) { - const accessButton = renderAugmentAccessButton(); - containerDivElement.appendChild(accessButton); - } - authenticationElement.appendChild(authenticatedDivElement); toolbar.setAttribute("data-authenticated", "true"); toolbar.classList.add("ready"); diff --git a/src/home/rendering/render-github-issues.ts b/src/home/rendering/render-github-issues.ts deleted file mode 100644 index 4c95db4..0000000 --- a/src/home/rendering/render-github-issues.ts +++ /dev/null @@ -1,245 +0,0 @@ -import { marked } from "marked"; -import { organizationImageCache } from "../fetch-github/fetch-issues-full"; -import { GitHubIssue } from "../github-types"; -import { taskManager } from "../home"; -import { renderErrorInModal } from "./display-popup-modal"; -import { closeModal, modal, modalBodyInner, bottomBar, titleAnchor, titleHeader, bottomBarClearLabels } from "./render-preview-modal"; -import { setupKeyboardNavigation } from "./setup-keyboard-navigation"; -import { waitForElement } from "./utils"; - -export function renderGitHubIssues(tasks: GitHubIssue[], skipAnimation: boolean) { - const container = taskManager.getContainer(); - if (container.classList.contains("ready")) { - container.classList.remove("ready"); - container.innerHTML = ""; - } - const existingIssueIds = new Set(Array.from(container.querySelectorAll(".issue-element-inner")).map((element) => element.getAttribute("data-issue-id"))); - - let delay = 0; - const baseDelay = 1000 / 15; // Base delay in milliseconds - - for (const task of tasks) { - if (!existingIssueIds.has(task.id.toString())) { - const issueWrapper = everyNewIssue({ gitHubIssue: task, container }); - if (issueWrapper) { - if (skipAnimation) { - issueWrapper.classList.add("active"); - } else { - setTimeout(() => issueWrapper.classList.add("active"), delay); - delay += baseDelay; - } - } - } - } - container.classList.add("ready"); - // Call this function after the issues have been rendered - setupKeyboardNavigation(container); - - // Scroll to the top of the page - window.scrollTo({ top: 0 }); -} - -function everyNewIssue({ gitHubIssue, container }: { gitHubIssue: GitHubIssue; container: HTMLDivElement }) { - const issueWrapper = document.createElement("div"); - const issueElement = document.createElement("div"); - issueElement.setAttribute("data-issue-id", gitHubIssue.id.toString()); - issueElement.classList.add("issue-element-inner"); - - const labels = parseAndGenerateLabels(gitHubIssue); - const [organizationName, repositoryName] = gitHubIssue.repository_url.split("/").slice(-2); - setUpIssueElement(issueElement, gitHubIssue, organizationName, repositoryName, labels, gitHubIssue.html_url); - issueWrapper.appendChild(issueElement); - - container.appendChild(issueWrapper); - return issueWrapper; -} - -function setUpIssueElement(issueElement: HTMLDivElement, task: GitHubIssue, organizationName: string, repositoryName: string, labels: string[], url: string) { - const image = ``; - - issueElement.innerHTML = ` -

${ - task.title - }

${organizationName}

${repositoryName}

${labels.join( - "" - )}${image}
`; - - issueElement.addEventListener("click", () => { - try { - const issueWrapper = issueElement.parentElement; - - if (!issueWrapper) { - throw new Error("No issue container found"); - } - - Array.from(issueWrapper.parentElement?.children || []).forEach((sibling) => { - sibling.classList.remove("selected"); - }); - - issueWrapper.classList.add("selected"); - - const full = task; - if (!full) { - window.open(url, "_blank"); - } else { - previewIssue(task); - } - } catch (error) { - return renderErrorInModal(error as Error); - } - }); -} - -function parseAndGenerateLabels(task: GitHubIssue) { - type LabelKey = "Price: " | "Time: " | "Priority: "; - - const labelOrder: Record = { "Price: ": 1, "Time: ": 2, "Priority: ": 3 }; - - const { labels, otherLabels } = task.labels.reduce( - (acc, label) => { - // check if label is a single string - if (typeof label === "string") { - return { - labels: [], - otherLabels: [], - }; - } - - // check if label.name exists - if (!label.name) { - return { - labels: [], - otherLabels: [], - }; - } - - const match = label.name.match(/^(Price|Time|Priority): /); - if (match) { - const name = label.name.replace(match[0], ""); - const labelStr = ``; - acc.labels.push({ order: labelOrder[match[0] as LabelKey], label: labelStr }); - } else if (!label.name.startsWith("Partner: ") && !label.name.startsWith("id: ") && !label.name.startsWith("Unavailable")) { - acc.otherLabels.push(label.name); - } - return acc; - }, - { labels: [] as { order: number; label: string }[], otherLabels: [] as string[] } - ); - - // Sort labels - labels.sort((a: { order: number }, b: { order: number }) => a.order - b.order); - - // Log the other labels - if (otherLabels.length) { - const otherLabelName = otherLabels.shift() as string; - labels.unshift({ order: 0, label: `` }); - } - - return labels.map((label) => label.label); -} - -// Function to update and show the preview -function previewIssue(gitHubIssue: GitHubIssue) { - void viewIssueDetails(gitHubIssue); -} - -// Loads the issue preview modal with the issue details -export async function viewIssueDetails(full: GitHubIssue) { - // Update the title and body for the new issue - titleHeader.textContent = full.title; - titleAnchor.href = full.html_url; - if (!full.body) return; - - // Remove any existing cloned labels from the bottom bar - bottomBarClearLabels(); - - // Wait for the issue element to exist, useful when loading issue from URL - const issueElement = await waitForElement(`div[data-issue-id="${full.id}"]`); - - const labelsDiv = issueElement.querySelector(".labels"); - if (labelsDiv) { - // Clone the labels div and remove the img child if it exists - const clonedLabels = labelsDiv.cloneNode(true) as HTMLElement; - const imgElement = clonedLabels.querySelector("img"); - if (imgElement) clonedLabels.removeChild(imgElement); - - // Add an extra class and set padding - clonedLabels.classList.add("cloned-labels"); - - // Prepend the cloned labels to the modal body - bottomBar.prepend(clonedLabels); - } - - // Set the issue body content using `marked` - modalBodyInner.innerHTML = marked(full.body) as string; - - // Show the preview - modal.classList.add("active"); - modal.classList.remove("error"); - document.body.classList.add("preview-active"); - - updateUrlWithIssueId(full.id); -} - -// Listen for changes in view toggle and update the URL accordingly -export const proposalViewToggle = document.getElementById("view-toggle") as HTMLInputElement; -proposalViewToggle.addEventListener("change", () => { - const newURL = new URL(window.location.href); - if (proposalViewToggle.checked) { - newURL.searchParams.set("proposal", "true"); - } else { - newURL.searchParams.delete("proposal"); - } - window.history.replaceState({}, "", newURL.toString()); -}); - -// Adds issue ID to url in format (i.e http://localhost:8080/?issue=2559612103) -function updateUrlWithIssueId(issueID: number) { - const newURL = new URL(window.location.href); - newURL.searchParams.set("issue", String(issueID)); - - // Set issue in URL - window.history.replaceState({ issueID }, "", newURL.toString()); -} - -// Opens the preview modal if a URL contains an issueID -export function loadIssueFromUrl() { - const urlParams = new URLSearchParams(window.location.search); - const issueID = urlParams.get("issue"); - - // If no issue ID in the URL, don't load issue - if (!issueID) { - closeModal(); - return; - } - - // If ID doesn't exist, don't load issue - const issue: GitHubIssue = taskManager.getGitHubIssueById(Number(issueID)) as GitHubIssue; - - if (!issue) { - const newURL = new URL(window.location.href); - newURL.searchParams.delete("issue"); - window.history.pushState({}, "", newURL.toString()); - return; - } - - void viewIssueDetails(issue); -} - -export function applyAvatarsToIssues() { - const container = taskManager.getContainer(); - const issueElements = Array.from(container.querySelectorAll(".issue-element-inner")); - - issueElements.forEach((issueElement) => { - const orgName = issueElement.querySelector(".organization-name")?.textContent; - if (orgName) { - const avatarUrl = organizationImageCache.get(orgName); - if (avatarUrl) { - const avatarImg = issueElement.querySelector("img"); - if (avatarImg) { - avatarImg.src = URL.createObjectURL(avatarUrl); - } - } - } - }); -} diff --git a/src/home/rendering/render-github-login-button.ts b/src/home/rendering/render-github-login-button.ts index 9526c03..39b64ff 100644 --- a/src/home/rendering/render-github-login-button.ts +++ b/src/home/rendering/render-github-login-button.ts @@ -28,7 +28,7 @@ export async function checkSupabaseSession() { return session; } -async function gitHubLoginButtonHandler(scopes = "public_repo read:org") { +async function gitHubLoginButtonHandler(scopes = "public_repo read:org notifications") { const redirectTo = window.location.href; const { error } = await supabase.auth.signInWithOAuth({ provider: "github", diff --git a/src/home/rendering/render-github-notifications.ts b/src/home/rendering/render-github-notifications.ts new file mode 100644 index 0000000..767c9fe --- /dev/null +++ b/src/home/rendering/render-github-notifications.ts @@ -0,0 +1,288 @@ +import { organizationImageCache } from "../fetch-github/fetch-data"; +import { GitHubAggregated } from "../github-types"; +import { getTimeAgo } from "./utils"; +import { notificationsContainer, showBotNotifications } from "../home"; +import { getGitHubAccessToken } from "../getters/get-github-access-token"; +import { Octokit } from "@octokit/rest"; + +export async function renderNotifications(notifications: GitHubAggregated[], skipAnimation: boolean) { + const providerToken = await getGitHubAccessToken(); + + if (notificationsContainer.classList.contains("ready")) { + notificationsContainer.classList.remove("ready"); + notificationsContainer.innerHTML = ""; + } + const existingNotificationIds = new Set( + Array.from(notificationsContainer.querySelectorAll(".issue-element-inner")).map((element) => element.getAttribute("data-issue-id")) + ); + + let delay = 0; + const baseDelay = 1000 / 15; // Base delay in milliseconds + + // Fetch all latest comments before rendering notifications + const commentsMap = await fetchLatestComments(notifications); + + for (const notification of notifications) { + if (!existingNotificationIds.has(notification.notification.id.toString())) { + const issueWrapper = everyNewNotification({ notification, notificationsContainer, commentsMap, providerToken}); + + if (issueWrapper) { + if (skipAnimation) { + issueWrapper.classList.add("active"); + } else { + setTimeout(() => issueWrapper.classList.add("active"), delay); + delay += baseDelay; + } + } + } + } + notificationsContainer.classList.add("ready"); + + // Check if notificationsContainer has no children and render empty message if true + if (notificationsContainer.children.length === 0) { + renderEmpty(); + } + + // Scroll to the top of the page + window.scrollTo({ top: 0 }); +} + +export function renderEmpty() { + if (notificationsContainer.classList.contains("ready")) { + notificationsContainer.classList.remove("ready"); + notificationsContainer.innerHTML = ""; + } + const issueWrapper = document.createElement("div"); + issueWrapper.style.marginTop = "20px"; + const issueElement = document.createElement("div"); + issueElement.innerHTML = ` +

No notifications found

+ `; + issueElement.classList.add("issue-element-inner"); + issueWrapper.appendChild(issueElement); + notificationsContainer.appendChild(issueWrapper); + + issueWrapper.classList.add("active"); + notificationsContainer.classList.add("ready"); +} + +// this is used for cloning to speed up in loop +const notificationTemplate = document.createElement("div"); +notificationTemplate.innerHTML = ` +
+
+ +
+
+`; + +function everyNewNotification({ + notification, + notificationsContainer, + commentsMap, + providerToken +}: { + notification: GitHubAggregated; + notificationsContainer: HTMLDivElement; + commentsMap: Map; + providerToken: string | null; +}) { + const issueWrapper = notificationTemplate.cloneNode(true) as HTMLDivElement; + const issueElement = issueWrapper.querySelector(".issue-element-inner") as HTMLDivElement; + + issueElement.setAttribute("data-issue-id", notification.notification.id.toString()); + issueElement.classList.add("issue-element-inner"); + + const labels = parseAndGenerateLabels(notification); + const [organizationName, repositoryName] = notification.notification.repository.url.split("/").slice(-2); + + const commentData = commentsMap.get(notification.notification.id.toString()); + + if (!commentData || (commentData.userType === "Bot" && !showBotNotifications)) { + console.log("skipping ", notification.notification.subject.title, " because of bot notification"); + return; + } + if (commentData.commentBody === ""){ + console.log("skipping ", notification.notification.subject.title, " because of empty comment"); + return; + } + + setUpIssueElement(providerToken, issueElement, notification, organizationName, repositoryName, labels, commentData); + issueWrapper.appendChild(issueElement); + notificationsContainer.appendChild(issueWrapper); + return issueWrapper; +} + +function setUpIssueElement( + providerToken: string | null, + issueElement: HTMLDivElement, + notification: GitHubAggregated, + organizationName: string, + repositoryName: string, + labels: string[], + commentData: { userType: string, url: string; avatarUrl: string; commentBody: string } +) { + if(commentData.userType === "Bot" && !showBotNotifications) { + console.log("bot notifications are hidden"); + issueElement.style.display = "none"; + } + + const octokit = new Octokit({ auth: providerToken }); + const image = ``; + + issueElement.innerHTML = ` +
+
+
+
+

${notification.notification.subject.title}

+
+
+
+

${organizationName}

+

${repositoryName}

+
+

#${notification.notification.subject.url.split("/").slice(-1)}

+
+
+
+
+
+ + ${commentData.commentBody} +
+
+
+ ${labels.join("")} + ${image} +
`; + + const notificationIcon = issueElement.querySelector(".notification-icon"); + + if (notification.notification.subject.type === "Issue" && notificationIcon) { + notificationIcon.innerHTML = ` + + `; + } else if (notification.notification.subject.type === "PullRequest" && notificationIcon) { + notificationIcon.innerHTML = ` + + `; + } + + issueElement.addEventListener("click", async() => { + window.open(commentData.url, "_blank"); + try{ + await octokit.request('PATCH /notifications/threads/{thread_id}', { + thread_id: Number(notification.notification.id), + headers: { + 'X-GitHub-Api-Version': '2022-11-28' + } + }) + await octokit.request('DELETE /notifications/threads/{thread_id}', { + thread_id: Number(notification.notification.id), + headers: { + 'X-GitHub-Api-Version': '2022-11-28' + } + }) + } catch (error){ + console.error("Failed to delete notification:", error); + } + }); +} + +async function fetchLatestComments(notifications: GitHubAggregated[]) { + const providerToken = await getGitHubAccessToken(); + const commentsMap = new Map(); + + await Promise.all( + notifications.map(async (notification) => { + const { subject } = notification.notification; + let userType = ""; + let url = ""; + let avatarUrl = ""; + let commentBody = ""; + + if (subject.latest_comment_url) { + try { + const response = await fetch(subject.latest_comment_url, { + headers: { Authorization: `Bearer ${providerToken}` } + }); + const data = await response.json(); + userType = data.user.type; + url = data.html_url; + avatarUrl = data.user.avatar_url; + commentBody = data.body; + + // Check if commentBody contains HTML + const parser = new DOMParser(); + const parsedDoc = parser.parseFromString(commentBody, "text/html"); + if (parsedDoc.body.children.length > 0) { + commentBody = "This comment is in HTML format."; + } + } catch (error) { + console.error("Failed to fetch latest comment URL:", error); + } + } + + if (!url) { + url = notification.issue?.html_url || notification.pullRequest?.html_url || "#"; + } + + commentsMap.set(notification.notification.id.toString(), { userType, url, avatarUrl, commentBody }); + }) + ); + + return commentsMap; +} + +function parseAndGenerateLabels(notification: GitHubAggregated) { + const labels: string[] = []; + + if (notification.issue.labels) { + notification.issue.labels.forEach((label) => { + if (typeof label === "string") return; + if (!label.name) return; + + const match = label.name.match(/^(Priority): /); + if (match) { + const name = label.name.replace(match[0], ""); + labels.push(``); + } + }); + } + + if (notification.notification.reason) { + const reason = notification.notification.reason.replace(/_/g, " "); + labels.push(``); + } + + if (notification.notification.updated_at) { + const timeAgo = getTimeAgo(new Date(notification.notification.updated_at)); + labels.push(``); + } + + return labels; +} + +export function applyAvatarsToNotifications() { + const notificationsContainer = document.getElementById("issues-container") as HTMLDivElement; + const notificationElements = Array.from(notificationsContainer.querySelectorAll(".issue-element-inner")); + + notificationElements.forEach((issueElement) => { + const orgName = issueElement.querySelector(".organization-name")?.textContent; + if (orgName) { + const avatarUrl = organizationImageCache.get(orgName); + if (avatarUrl) { + const avatarImg = issueElement.querySelector(".orgAvatar") as HTMLImageElement; + if (avatarImg) { + avatarImg.src = URL.createObjectURL(avatarUrl); + } + } + } + }); +} diff --git a/src/home/rendering/render-org-header.ts b/src/home/rendering/render-org-header.ts index b4f18e0..36ef3db 100644 --- a/src/home/rendering/render-org-header.ts +++ b/src/home/rendering/render-org-header.ts @@ -1,4 +1,4 @@ -import { organizationImageCache } from "../fetch-github/fetch-issues-full"; +import { organizationImageCache } from "../fetch-github/fetch-data"; export function renderOrgHeaderLabel(orgName: string): void { const brandingDiv = document.getElementById("branding"); diff --git a/src/home/rendering/setup-keyboard-navigation.ts b/src/home/rendering/setup-keyboard-navigation.ts deleted file mode 100644 index 55c667b..0000000 --- a/src/home/rendering/setup-keyboard-navigation.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { taskManager } from "../home"; -import { viewIssueDetails } from "./render-github-issues"; - -const keyDownHandlerCurried = keyDownHandler(); -const disableKeyBoardNavigationCurried = disableKeyboardNavigationCurry; - -let isKeyDownListenerAdded = false; -let isMouseOverListenerAdded = false; -let isScrubButtonsListenerAdded = false; - -export function setupKeyboardNavigation(container: HTMLDivElement) { - if (!isKeyDownListenerAdded) { - document.addEventListener("keydown", keyDownHandlerCurried); - isKeyDownListenerAdded = true; - } - if (!isMouseOverListenerAdded) { - container.addEventListener("mouseover", disableKeyBoardNavigationCurried); - isMouseOverListenerAdded = true; - } - if (!isScrubButtonsListenerAdded) { - setupScrubButtons(); - isScrubButtonsListenerAdded = true; - } -} - -function setupScrubButtons() { - const scrubLeft = document.getElementById("scrub-left"); - const scrubRight = document.getElementById("scrub-right"); - - if (scrubLeft) { - scrubLeft.addEventListener("click", () => handleScrub("ArrowUp")); - scrubLeft.addEventListener("touchend", handleTouchEnd); - } - if (scrubRight) { - scrubRight.addEventListener("click", () => handleScrub("ArrowDown")); - scrubRight.addEventListener("touchend", handleTouchEnd); - } - - // Prevent zooming on double tap - document.addEventListener("touchmove", preventZoom, { passive: false }); -} - -function handleTouchEnd(event: TouchEvent) { - event.preventDefault(); - const target = event.target as HTMLElement; - if (target.id === "scrub-left") { - handleScrub("ArrowUp"); - } else if (target.id === "scrub-right") { - handleScrub("ArrowDown"); - } -} - -function preventZoom(event: TouchEvent) { - if (event.touches.length > 1) { - event.preventDefault(); - } -} - -function handleScrub(direction: "ArrowUp" | "ArrowDown") { - const event = new KeyboardEvent("keydown", { key: direction }); - keyDownHandlerCurried(event); -} - -function disableKeyboardNavigationCurry() { - const container = document.getElementById("issues-container") as HTMLDivElement; - return disableKeyboardNavigation(container); -} - -function disableKeyboardNavigation(container: HTMLDivElement) { - container.classList.remove("keyboard-selection"); -} - -function keyDownHandler() { - const container = document.getElementById("issues-container") as HTMLDivElement; - return function keyDownHandler(event: KeyboardEvent) { - if (event.key === "ArrowUp" || event.key === "ArrowDown") { - const issues = Array.from(container.children) as HTMLElement[]; - const visibleIssues = issues.filter((issue) => issue.style.display !== "none"); - const activeIndex = visibleIssues.findIndex((issue) => issue.classList.contains("selected")); - const originalIndex = activeIndex === -1 ? -1 : activeIndex; - let newIndex = originalIndex; - - if (event.key === "ArrowUp" && originalIndex > 0) { - newIndex = originalIndex - 1; - event.preventDefault(); - } else if (event.key === "ArrowDown" && originalIndex < visibleIssues.length - 1) { - newIndex = originalIndex + 1; - event.preventDefault(); - } - - if (newIndex !== originalIndex) { - visibleIssues.forEach((issue) => { - issue.classList.remove("selected"); - }); - - visibleIssues[newIndex]?.classList.add("selected"); - visibleIssues[newIndex].scrollIntoView({ - behavior: "smooth", - block: "center", - }); - - container.classList.add("keyboard-selection"); - - const issueId = visibleIssues[newIndex].children[0].getAttribute("data-issue-id"); - if (issueId) { - const gitHubIssue = taskManager.getGitHubIssueById(parseInt(issueId, 10)); - if (gitHubIssue) { - void viewIssueDetails(gitHubIssue); - } - } - } - } else if (event.key === "Enter") { - const selectedIssue = container.querySelector("#issues-container > div.selected"); - if (selectedIssue) { - const gitHubIssueId = selectedIssue.children[0].getAttribute("data-issue-id"); - if (!gitHubIssueId) { - return; - } - - const gitHubIssue = taskManager.getGitHubIssueById(parseInt(gitHubIssueId, 10)); - if (gitHubIssue) { - window.open(gitHubIssue.html_url, "_blank"); - } - } - } else if (event.key === "Escape") { - disableKeyboardNavigation(container); - } - }; -} diff --git a/src/home/rendering/utils.ts b/src/home/rendering/utils.ts index d5841e4..13f25ba 100644 --- a/src/home/rendering/utils.ts +++ b/src/home/rendering/utils.ts @@ -20,3 +20,26 @@ export function waitForElement(selector: string): Promise { observer.observe(document.body, { childList: true, subtree: true }); }); } + +// Returns string in format: 4 hours ago, 10 weeks ago, etc. +export function getTimeAgo(date: Date): string { + const now = new Date(); + const seconds = Math.floor((now.getTime() - date.getTime()) / 1000); + const intervals: { [key: string]: number } = { + year: 31536000, + month: 2592000, + week: 604800, + day: 86400, + hour: 3600, + minute: 60, + second: 1, + }; + + for (const [unit, value] of Object.entries(intervals)) { + const count = Math.floor(seconds / value); + if (count >= 1) { + return `${count} ${unit}${count > 1 ? 's' : ''} ago`; + } + } + return 'just now'; +} \ No newline at end of file diff --git a/src/home/search/search-scorer.ts b/src/home/search/search-scorer.ts deleted file mode 100644 index 06059cc..0000000 --- a/src/home/search/search-scorer.ts +++ /dev/null @@ -1,164 +0,0 @@ -import { GitHubIssue } from "../github-types"; -import { SearchConfig, SearchResult } from "../types/search-types"; -import { StringSimilarity } from "./string-similarity"; - -export class SearchScorer { - constructor(private _config: SearchConfig) {} - - public calculateTitleScore(issue: GitHubIssue, searchTerms: string[], matchDetails: SearchResult["matchDetails"]): number { - let score = 0; - const title = issue.title.toLowerCase(); - const words = title.split(/\s+/); - - searchTerms.forEach((term) => { - if (title.includes(term)) { - matchDetails.titleMatches.push(term); - score += this._config.exactMatchBonus; - - // Apply exponential boost for word beginnings - words.forEach((word) => { - if (word.startsWith(term)) { - // e^(-x) where x is the position of the match relative to word length - const positionBoost = Math.exp(-term.length / word.length); - score += positionBoost; - } - }); - } - }); - - if (searchTerms.length > 1 && title.includes(searchTerms.join(" "))) { - score += 1; - } - return Math.min(score, 3); - } - - public calculateBodyScore(issue: GitHubIssue, searchTerms: string[], matchDetails: SearchResult["matchDetails"]): number { - let score = 0; - const body = (issue.body || "").toLowerCase(); - const words = body.split(/\s+/); - - searchTerms.forEach((term) => { - let termScore = 0; - words.forEach((word) => { - if (word.startsWith(term)) { - // Apply exponential boost for word beginnings - const positionBoost = Math.exp(-term.length / word.length); - termScore += positionBoost; - } - }); - - if (termScore > 0) { - matchDetails.bodyMatches.push(term); - score += Math.min(termScore, 1); - } - - const codeBlockMatches = body.match(/```[\s\S]*?```/g) || []; - codeBlockMatches.forEach((block) => { - if (block.toLowerCase().includes(term)) { - score += 0.5; - } - }); - }); - return Math.min(score, 2); - } - - public calculateMetaScore(issue: GitHubIssue, searchTerms: string[], matchDetails: SearchResult["matchDetails"]): number { - let score = 0; - const numberTerm = searchTerms.find((term) => /^\d+$/.test(term)); - if (numberTerm && issue.number.toString() === numberTerm) { - matchDetails.numberMatch = true; - score += 2; - } - if (issue.labels) { - searchTerms.forEach((term) => { - issue.labels?.forEach((label) => { - if (typeof label === "object" && label.name) { - const labelName = label.name.toLowerCase(); - if (labelName.includes(term)) { - matchDetails.labelMatches.push(label.name); - // Apply exponential boost for label matches at word start - if (labelName.startsWith(term)) { - score += 0.8; - } else { - score += 0.5; - } - } - } - }); - }); - } - - return score; - } - - public calculateRepoScore(issue: GitHubIssue, searchTerms: string[], matchDetails: SearchResult["matchDetails"]): number { - let score = 0; - if (issue.repository_url) { - const repoName = issue.repository_url.split("/").pop()?.toLowerCase() || ""; - const orgName = issue.repository_url.split("/").slice(-2)[0].toLowerCase() || ""; - searchTerms.forEach((term) => { - if (repoName.startsWith(term.toLowerCase())) { - matchDetails.repoMatch = true; - score += term.length / repoName.length; - } - if (orgName.startsWith(term.toLowerCase())) { - score += term.length / orgName.length; - } - }); - } - return score; - } - - public calculateFuzzyScore(content: string, searchTerms: string[], matchDetails: SearchResult["matchDetails"]): number { - let score = 0; - const contentWords = this._tokenizeContent(content); - - searchTerms.forEach((searchTerm) => { - let bestMatch = { - word: "", - score: 0, - isWordStart: false, - }; - - contentWords.forEach((word) => { - const similarity = StringSimilarity.calculate(searchTerm, word); - const isWordStart = word.startsWith(searchTerm); - - // Calculate position-based boost - const positionBoost = isWordStart ? Math.exp(-searchTerm.length / word.length) : 0; - const adjustedScore = similarity + positionBoost; - - if (adjustedScore > this._config.fuzzySearchThreshold && adjustedScore > bestMatch.score) { - bestMatch = { - word, - score: adjustedScore, - isWordStart, - }; - } - }); - - if (bestMatch.score > 0) { - matchDetails.fuzzyMatches.push({ - original: searchTerm, - matched: bestMatch.word, - score: bestMatch.score, - }); - - // Apply exponential weight for word-start matches - const finalScore = bestMatch.isWordStart ? bestMatch.score * Math.exp(this._config.fuzzyMatchWeight) : bestMatch.score * this._config.fuzzyMatchWeight; - - score += finalScore; - } - }); - - return Math.min(score, 2); - } - - private _tokenizeContent(content: string): string[] { - return content - .toLowerCase() - .replace(/[^\w\s]/g, " ") - .split(/\s+/) - .filter((word) => word.length > 2); - } -} diff --git a/src/home/search/string-similarity.ts b/src/home/search/string-similarity.ts deleted file mode 100644 index c4b3619..0000000 --- a/src/home/search/string-similarity.ts +++ /dev/null @@ -1,31 +0,0 @@ -export class StringSimilarity { - public static calculate(str1: string, str2: string): number { - const maxLen = Math.max(str1.length, str2.length); - if (maxLen === 0) return 1.0; - - const distance = this._calculateLevenshteinDistance(str1, str2); - return 1 - (distance / maxLen); - } - - private static _calculateLevenshteinDistance(str1: string, str2: string): number { - const matrix: number[][] = Array(str2.length + 1).fill(null).map(() => - Array(str1.length + 1).fill(null) - ); - - for (let i = 0; i <= str1.length; i++) matrix[0][i] = i; - for (let j = 0; j <= str2.length; j++) matrix[j][0] = j; - - for (let j = 1; j <= str2.length; j++) { - for (let i = 1; i <= str1.length; i++) { - const indicator = str1[i - 1] === str2[j - 1] ? 0 : 1; - matrix[j][i] = Math.min( - matrix[j][i - 1] + 1, - matrix[j - 1][i] + 1, - matrix[j - 1][i - 1] + indicator - ); - } - } - - return matrix[str2.length][str1.length]; - } -} diff --git a/src/home/sorting/calculate-time-label-value.ts b/src/home/sorting/calculate-time-label-value.ts deleted file mode 100644 index 2175d8a..0000000 --- a/src/home/sorting/calculate-time-label-value.ts +++ /dev/null @@ -1,11 +0,0 @@ -export function calculateTimeLabelValue(label: string): number { - const matches = label.match(/\d+/); - const number = matches && matches.length > 0 ? parseInt(matches[0]) || 0 : 0; - - if (label.toLowerCase().includes("minute")) return number * 0.002; - if (label.toLowerCase().includes("hour")) return number * 0.125; - if (label.toLowerCase().includes("day")) return 1 + (number - 1) * 0.25; - if (label.toLowerCase().includes("week")) return number + 1; - if (label.toLowerCase().includes("month")) return 5 + (number - 1) * 8; - return 0; -} diff --git a/src/home/sorting/filter-issues-by-search.ts b/src/home/sorting/filter-issues-by-search.ts deleted file mode 100644 index 0e26a85..0000000 --- a/src/home/sorting/filter-issues-by-search.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { GitHubIssue } from "../github-types"; -import { taskManager } from "../home"; - -export function filterIssuesBySearch(filterText: string) { - const searchResults = taskManager.issueSearcher.search(filterText); - //Create the new GithubIssue[] array based on the ranking in the searchResults - const sortedIssues = Array.from(searchResults.entries()) - .filter(([, result]) => result.score > 0) - .sort((a, b) => b[1].score - a[1].score) - .map(([id]) => taskManager.getGitHubIssueById(id)) - .filter((issue): issue is GitHubIssue => issue !== undefined); - return sortedIssues; -} diff --git a/src/home/sorting/generate-sorting-buttons.ts b/src/home/sorting/generate-sorting-buttons.ts index eed6819..258af74 100644 --- a/src/home/sorting/generate-sorting-buttons.ts +++ b/src/home/sorting/generate-sorting-buttons.ts @@ -1,6 +1,6 @@ import { SortingManager } from "./sorting-manager"; -export const SORTING_OPTIONS = ["price", "time", "priority", "activity"] as const; +export const SORTING_OPTIONS = ["priority", "backlinks", "activity"] as const; export type Sorting = (typeof SORTING_OPTIONS)[number]; export function generateSortingToolbar() { diff --git a/src/home/sorting/sort-by-activity.ts b/src/home/sorting/sort-by-activity.ts new file mode 100644 index 0000000..8049cc4 --- /dev/null +++ b/src/home/sorting/sort-by-activity.ts @@ -0,0 +1,9 @@ +import { GitHubAggregated } from "../github-types"; + +export function sortByActivity(tasks: GitHubAggregated[]) { + return tasks.sort((b, a) => { + const dateA = new Date(a.notification.updated_at); + const dateB = new Date(b.notification.updated_at); + return dateB.getTime() - dateA.getTime(); + }); +} diff --git a/src/home/sorting/sort-by-backlinks.ts b/src/home/sorting/sort-by-backlinks.ts new file mode 100644 index 0000000..4ffb1b4 --- /dev/null +++ b/src/home/sorting/sort-by-backlinks.ts @@ -0,0 +1,7 @@ +import { GitHubAggregated } from "../github-types"; + +export function sortByBacklinks(tasks: GitHubAggregated[]) { + return tasks.sort((b, a) => { + return a.backlinkCount - b.backlinkCount; + }); +} diff --git a/src/home/sorting/sort-issues-by-priority.ts b/src/home/sorting/sort-by-priority.ts similarity index 57% rename from src/home/sorting/sort-issues-by-priority.ts rename to src/home/sorting/sort-by-priority.ts index ba12b74..ecda236 100644 --- a/src/home/sorting/sort-issues-by-priority.ts +++ b/src/home/sorting/sort-by-priority.ts @@ -1,11 +1,11 @@ -import { GitHubIssue } from "../github-types"; +import { GitHubAggregated } from "../github-types"; -export function sortIssuesByPriority(issues: GitHubIssue[]) { +export function sortByPriority(notifications: GitHubAggregated[]) { const priorityRegex = /Priority: (\d+)/; - return issues.sort((a, b) => { - function getPriority(issue: GitHubIssue) { - const priorityLabel = issue.labels.find( + return notifications.sort((a, b) => { + function getPriority(notification: GitHubAggregated) { + const priorityLabel = notification.issue.labels.find( (label): label is { name: string } => typeof label === "object" && "name" in label && typeof label.name === "string" && priorityRegex.test(label.name) ); const match = priorityLabel?.name.match(priorityRegex); diff --git a/src/home/sorting/sort-by.ts b/src/home/sorting/sort-by.ts new file mode 100644 index 0000000..78c83a4 --- /dev/null +++ b/src/home/sorting/sort-by.ts @@ -0,0 +1,18 @@ +import { GitHubAggregated } from "../github-types"; +import { SORTING_OPTIONS } from "./generate-sorting-buttons"; +import { sortByPriority } from "./sort-by-priority"; +import { sortByBacklinks } from "./sort-by-backlinks"; +import { sortByActivity } from "./sort-by-activity"; + +export function sortBy(tasks: GitHubAggregated[], sortBy: (typeof SORTING_OPTIONS)[number]) { + switch (sortBy) { + case "priority": + return sortByPriority(tasks); + case "backlinks": + return sortByBacklinks(tasks); + case "activity": + return sortByActivity(tasks); + default: + return tasks; + } +} diff --git a/src/home/sorting/sort-controller.ts b/src/home/sorting/sort-controller.ts new file mode 100644 index 0000000..dd6b3fa --- /dev/null +++ b/src/home/sorting/sort-controller.ts @@ -0,0 +1,25 @@ +import { GitHubAggregated } from "../github-types"; +import { Sorting } from "./generate-sorting-buttons"; +import { sortBy } from "./sort-by"; +import { sortByPriority } from "./sort-by-priority"; +import { sortByBacklinks } from "./sort-by-backlinks"; +import { sortByActivity } from "./sort-by-activity"; + +export function sortIssuesController(tasks: GitHubAggregated[], sorting?: Sorting, options = { ordering: "normal" }) { + let sortedNotifications = tasks; + + if (sorting) { + sortedNotifications = sortBy(sortedNotifications, sorting); + } else { + const sortedByFreshness = sortByActivity(sortedNotifications); // activity last + const sortedByBacklinks = sortByBacklinks(sortedByFreshness); // backlinks second + const sortedByPriority = sortByPriority(sortedByBacklinks); // highest priority first + sortedNotifications = sortedByPriority; + } + + if (options.ordering == "reverse") { + sortedNotifications = sortedNotifications.reverse(); + } + + return sortedNotifications; +} diff --git a/src/home/sorting/sort-issues-by-price.ts b/src/home/sorting/sort-issues-by-price.ts deleted file mode 100644 index 67951b7..0000000 --- a/src/home/sorting/sort-issues-by-price.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { GitHubIssue } from "../github-types"; - -export function sortIssuesByPrice(issues: GitHubIssue[]) { - return issues.sort((a, b) => { - const aPrice = a.labels.map(getPriceFromLabel).find((price) => price !== null) ?? -1; - const bPrice = b.labels.map(getPriceFromLabel).find((price) => price !== null) ?? -1; - - return bPrice - aPrice; - }); -} - -function getPriceFromLabel(label: string | { name?: string }) { - if (typeof label === "string" || !label.name) return null; - if (label.name.startsWith("Price: ")) { - const match = label.name.match(/Price: (\d+)/); - return match ? parseInt(match[1], 10) : null; - } - return null; -} diff --git a/src/home/sorting/sort-issues-by-time.ts b/src/home/sorting/sort-issues-by-time.ts deleted file mode 100644 index cbd0899..0000000 --- a/src/home/sorting/sort-issues-by-time.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { GitHubIssue } from "../github-types"; -import { calculateTimeLabelValue } from "./calculate-time-label-value"; - -export function sortIssuesByTime(tasks: GitHubIssue[]) { - return tasks.sort((a, b) => { - const aTimeValue = a.labels.reduce((acc, label) => acc + (typeof label === "object" && label?.name ? calculateTimeLabelValue(label.name) : 0), 0); - const bTimeValue = b.labels.reduce((acc, label) => acc + (typeof label === "object" && label?.name ? calculateTimeLabelValue(label.name) : 0), 0); - return bTimeValue - aTimeValue; - }); -} diff --git a/src/home/sorting/sort-issues-by-updated-time.ts b/src/home/sorting/sort-issues-by-updated-time.ts deleted file mode 100644 index e7f40a7..0000000 --- a/src/home/sorting/sort-issues-by-updated-time.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { GitHubIssue } from "../github-types"; - -export function sortIssuesByLatestActivity(issues: GitHubIssue[], ordering: "normal" | "reverse" = "normal") { - return issues.sort((a, b) => { - const dateA = new Date(a.updated_at); - const dateB = new Date(b.updated_at); - return ordering === "normal" ? dateB.getTime() - dateA.getTime() : dateA.getTime() - dateB.getTime(); - }); -} diff --git a/src/home/sorting/sort-issues-by.ts b/src/home/sorting/sort-issues-by.ts deleted file mode 100644 index 55b0136..0000000 --- a/src/home/sorting/sort-issues-by.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { GitHubIssue } from "../github-types"; -import { SORTING_OPTIONS } from "./generate-sorting-buttons"; -import { sortIssuesByPrice } from "./sort-issues-by-price"; -import { sortIssuesByPriority } from "./sort-issues-by-priority"; -import { sortIssuesByTime } from "./sort-issues-by-time"; -import { sortIssuesByLatestActivity } from "./sort-issues-by-updated-time"; - -export function sortIssuesBy(tasks: GitHubIssue[], sortBy: (typeof SORTING_OPTIONS)[number]) { - switch (sortBy) { - case "priority": - return sortIssuesByPriority(tasks); - case "time": - return sortIssuesByTime(tasks); - case "price": - return sortIssuesByPrice(tasks); - case "activity": - return sortIssuesByLatestActivity(tasks); - default: - return tasks; - } -} diff --git a/src/home/sorting/sort-issues-controller.ts b/src/home/sorting/sort-issues-controller.ts deleted file mode 100644 index a8633ac..0000000 --- a/src/home/sorting/sort-issues-controller.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { GitHubIssue } from "../github-types"; -import { Sorting } from "./generate-sorting-buttons"; -import { sortIssuesBy } from "./sort-issues-by"; -import { sortIssuesByPriority } from "./sort-issues-by-priority"; -import { sortIssuesByTime } from "./sort-issues-by-time"; - -export function sortIssuesController(tasks: GitHubIssue[], sorting?: Sorting, options = { ordering: "normal" }) { - let sortedIssues = tasks; - - if (sorting) { - sortedIssues = sortIssuesBy(sortedIssues, sorting); - } else { - const sortedIssuesByTime = sortIssuesByTime(sortedIssues); - const sortedIssuesByPriority = sortIssuesByPriority(sortedIssuesByTime); - sortedIssues = sortedIssuesByPriority; - } - - if (options.ordering == "reverse") { - sortedIssues = sortedIssues.reverse(); - } - - return sortedIssues; -} diff --git a/src/home/sorting/sorting-manager.ts b/src/home/sorting/sorting-manager.ts index 58da05f..682c3d5 100644 --- a/src/home/sorting/sorting-manager.ts +++ b/src/home/sorting/sorting-manager.ts @@ -1,6 +1,6 @@ -import { displayGitHubIssues, searchDisplayGitHubIssues } from "../fetch-github/fetch-and-display-previews"; +import { displayNotifications } from "../fetch-github/filter-and-display-notifications"; +import { flipShowBotNotifications, getNotifications, showBotNotifications } from "../home"; import { renderErrorInModal } from "../rendering/display-popup-modal"; -import { proposalViewToggle } from "../rendering/render-github-issues"; import { Sorting } from "./generate-sorting-buttons"; export class SortingManager { @@ -39,9 +39,6 @@ export class SortingManager { textBox.type = "text"; textBox.id = `filter-${this._instanceId}`; textBox.placeholder = "Search"; - textBox.spellcheck = false; - textBox.autocapitalize = "off"; - textBox.draggable = false; // Handle CTRL+F document.addEventListener("keydown", (event) => { @@ -56,79 +53,94 @@ export class SortingManager { const searchQuery = urlParams.get("search") || ""; textBox.value = searchQuery; - const issuesContainer = document.getElementById("issues-container") as HTMLDivElement; + const notificationsContainer = document.getElementById("issues-container") as HTMLDivElement; + + function filterNotifications() { + try { + const filterText = textBox.value.toLowerCase(); + const notifications = Array.from(notificationsContainer.children) as HTMLDivElement[]; + notifications.forEach(async (notification) => { + const notificationId = notification.children[0].getAttribute("data-issue-id"); + if (!notificationId) return; + notification.classList.add("active"); + const gitHubNotifications = await getNotifications(); + if (!gitHubNotifications) return; + const gitHubNotification = gitHubNotifications.find((notification) => notification.notification.id === notificationId); + if (!gitHubNotification) return; + + const searchableProperties = ["title", "body", "number", "html_url"] as const; + let searchableStrings: string[] = []; + + // if it's an issue notification search issue properties + if (gitHubNotification.notification.subject.type === "Issue") { + searchableStrings = searchableProperties + .map((prop) => gitHubNotification.issue[prop]?.toString().toLowerCase()) + .filter((str): str is string => str !== undefined); + } + + // if it's a pull request notification search pull request properties + else if (gitHubNotification.notification.subject.type === "PullRequest") { + searchableStrings = searchableProperties + .map((prop) => (gitHubNotification.pullRequest ? gitHubNotification.pullRequest[prop]?.toString().toLowerCase() : "")) + .filter((str): str is string => str !== undefined); + } + + searchableStrings.push(gitHubNotification.notification.subject.title.toLowerCase()); + + const isVisible = searchableStrings.some((str) => str?.includes(filterText)); + notification.style.display = isVisible ? "block" : "none"; + }); + } catch (error) { + return renderErrorInModal(error as Error); + } + } // Observer to detect when children are added to the issues container (only once) const observer = new MutationObserver(() => { - if (issuesContainer.children.length > 0) { + if (notificationsContainer.children.length > 0) { observer.disconnect(); // Stop observing once children are present - if (searchQuery) { - try { - void searchDisplayGitHubIssues({ - searchText: searchQuery, - }); - } catch (error) { - renderErrorInModal(error as Error); - } - } + if (searchQuery) filterNotifications(); // Filter on load if search query exists } }); - observer.observe(issuesContainer, { childList: true }); + observer.observe(notificationsContainer, { childList: true }); - // if the user types in the search box, update the URL and filter the issues textBox.addEventListener("input", () => { const filterText = textBox.value; - // Reset sorting buttons when there is text in search menu - if (filterText) { - this._resetSortButtons(); - } // Update the URL with the search parameter const newURL = new URL(window.location.href); - if (filterText) { - newURL.searchParams.set("search", filterText); - } else { - newURL.searchParams.delete("search"); - } + newURL.searchParams.set("search", filterText); window.history.replaceState({}, "", newURL.toString()); - try { - void searchDisplayGitHubIssues({ - searchText: filterText, - }); - } catch (error) { - renderErrorInModal(error as Error); - } + filterNotifications(); // Run the filter function immediately on input }); - // if the user changes between proposal view and directory view, update the search results - if (proposalViewToggle) { - proposalViewToggle.addEventListener("change", () => { - try { - void searchDisplayGitHubIssues({ - searchText: textBox.value, - }); - } catch (error) { - renderErrorInModal(error as Error); - } - }); - } - return textBox; } - private _resetSortButtons() { - this._sortingButtons.querySelectorAll('input[type="radio"]').forEach((input) => { - if (input instanceof HTMLInputElement) { - input.checked = false; - input.setAttribute("data-ordering", ""); - } - }); - this._lastChecked = null; - } - private _generateSortingButtons(sortingOptions: readonly string[]) { const buttons = document.createElement("div"); buttons.className = "labels"; + const input = document.createElement("input"); + input.style.display = "none"; + input.type = "button"; + input.id = `filter-bot-${this._instanceId}`; + const label = document.createElement("label"); + label.htmlFor = `filter-bot-${this._instanceId}`; + label.textContent = showBotNotifications ? "Hide Bot" : "Show Bot"; + + input.addEventListener("click", () => { + flipShowBotNotifications(); + label.textContent = showBotNotifications ? "Hide Bot" : "Show Bot"; + try { + void displayNotifications(); + } catch (error) { + renderErrorInModal(error as Error); + } + }); + + buttons.appendChild(input); + buttons.appendChild(label); + sortingOptions.forEach((option) => { const input = this._createRadioButton(option); const label = this._createLabel(option); @@ -209,7 +221,7 @@ export class SortingManager { // Apply the sorting based on the new state (normal or reverse) try { - void displayGitHubIssues({ sorting: option as Sorting, options: { ordering: newOrdering } }); + void displayNotifications({ sorting: option as Sorting, options: { ordering: newOrdering } }); } catch (error) { renderErrorCatch(error as ErrorEvent); } @@ -218,7 +230,7 @@ export class SortingManager { private _clearSorting() { try { - void displayGitHubIssues(); + void displayNotifications(); } catch (error) { renderErrorInModal(error as Error); } diff --git a/src/home/task-manager.ts b/src/home/task-manager.ts deleted file mode 100644 index 2329c6c..0000000 --- a/src/home/task-manager.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { fetchAvatars } from "./fetch-github/fetch-avatar"; -import { getGitHubAccessToken } from "./getters/get-github-access-token"; -import { getIssuesFromCache } from "./getters/get-indexed-db"; -import { setLocalStore } from "./getters/get-local-store"; -import { GITHUB_TASKS_STORAGE_KEY, GitHubIssue } from "./github-types"; -import { IssueSearch } from "./issues-search"; - -export class TaskManager { - private _tasks: GitHubIssue[] = []; - private _container: HTMLDivElement; - public issueSearcher: IssueSearch; - constructor(container: HTMLDivElement) { - this._container = container; - this.issueSearcher = new IssueSearch(this); - } - - // Syncs tasks by getting issues from cache, writing them to storage and then fetching avatars - public async syncTasks() { - const issues = await getIssuesFromCache(); - - this._tasks = issues; - void this._writeToStorage(issues); - - // Initialize issues for search operations - await this.issueSearcher.initializeIssues(issues); - - await fetchAvatars(); - } - - public getTasks() { - return this._tasks; - } - - public getContainer() { - return this._container; - } - - public getGitHubIssueById(id: number): GitHubIssue | undefined { - return this._tasks.find((task) => task.id === id); - } - - private async _writeToStorage(tasks: GitHubIssue[]) { - const _accessToken = await getGitHubAccessToken(); - setLocalStore(GITHUB_TASKS_STORAGE_KEY, { - timestamp: Date.now(), - tasks: tasks, - loggedIn: _accessToken !== null, - }); - } -} diff --git a/src/home/types/search-types.ts b/src/home/types/search-types.ts deleted file mode 100644 index bafa5fb..0000000 --- a/src/home/types/search-types.ts +++ /dev/null @@ -1,30 +0,0 @@ -export interface SearchResult { - visible: boolean; - score: number; - matchDetails: { - titleMatches: string[]; - bodyMatches: string[]; - labelMatches: string[]; - numberMatch: boolean; - fuzzyMatches: Array<{ - original: string; - matched: string; - score: number; - }>; - repoMatch: boolean; - }; -} - -export interface SearchWeights { - title: number; - body: number; - fuzzy: number; - meta: number; - repo: number; -} - -export interface SearchConfig { - fuzzySearchThreshold: number; - exactMatchBonus: number; - fuzzyMatchWeight: number; -} diff --git a/static/index.html b/static/index.html index a75d9c3..0917443 100644 --- a/static/index.html +++ b/static/index.html @@ -2,7 +2,7 @@ - DevPool Directory | Ubiquity DAO + Notifications | Ubiquity DAO @@ -43,7 +43,7 @@ d="M132 41.1c0-2.3-1.3-4.5-3.3-5.7L69.4 1.2c-1-.6-2.1-.9-3.3-.9-1.1 0-2.3.3-3.3.9L3.6 35.4c-2 1.2-3.3 3.3-3.3 5.7v68.5c0 2.3 1.3 4.5 3.3 5.7l59.3 34.2c2 1.2 4.5 1.2 6.5 0l59.3-34.2c2-1.2 3.3-3.3 3.3-5.7V41.1zm-11.9 62.5c0 2.7-1.4 5.2-3.7 6.5l-46.6 27.5c-1.1.7-2.4 1-3.7 1s-2.5-.3-3.7-1l-46.6-27.5c-2.3-1.3-3.7-3.8-3.7-6.5V54.1c0-1.2.6-2.4 1.7-3 1.1-.6 2.3-.6 3.4 0l8 4.7c1.9 1.1 3 3.3 4.4 5.8.3.5.5 1 .8 1.4 3.5 6.3 5.2 13 6.8 19.5 3 11.9 6 24.2 21.3 28.2 5 1.3 10.4 1.3 15.4 0 15.2-4 18.3-16.3 21.3-28.2C96.8 76 98.5 69.3 102 63c.3-.5.5-1 .8-1.4 1.3-2.5 2.5-4.6 4.4-5.8l8-4.7c1-.6 2.3-.6 3.4 0s1.7 1.7 1.7 3v49.5zM62.6 13.7c2.2-1.3 4.9-1.3 7.1 0L110 37.6c1 .6 1.6 1 1.6 2.2 0 1.2-.6 1.9-1.6 2.5l-7.7 4.6c-3.4 2-5.1 5.2-6.6 8.1l-.1.2c-.2.4-.4.7-.6 1.1-3.8 6.8-6.6 14-8.2 20.4C83.6 89.1 82.4 97.3 72 100c-1.9.5-3.9.7-5.8.7-2 0-3.9-.3-5.8-.7C50 97.3 48.7 89.1 45.6 76.6 44 70.2 41.2 63 37.4 56.2c-.2-.3-.4-.7-.6-1l-.1-.3c-1.5-2.8-3.3-6.1-6.6-8.1l-7.7-4.6c-1-.6-1.6-1.3-1.6-2.5s.6-1.6 1.6-2.2l40.2-23.8z" >Ubiquity DAO | DevPoolUbiquity DAO | Notifications
diff --git a/static/manifest.json b/static/manifest.json index d0eefcc..8dcb720 100644 --- a/static/manifest.json +++ b/static/manifest.json @@ -1,7 +1,7 @@ { - "name": "DevPool Directory | Ubiquity DAO", - "short_name": "DevPool Directory", - "description": "View and sort through all of the available work within the DevPool network.", + "name": "Notifications | Ubiquity DAO", + "short_name": "Nofications", + "description": "View and sort through all of the notifications within the DevPool network.", "start_url": "/", "display": "standalone", "background_color": "#000410", diff --git a/static/progressive-web-app.js b/static/progressive-web-app.js index 937257f..4d1d687 100644 --- a/static/progressive-web-app.js +++ b/static/progressive-web-app.js @@ -108,4 +108,4 @@ self.addEventListener("fetch", (event) => { } })() ); -}); \ No newline at end of file +}); diff --git a/static/style/inverted-style.css b/static/style/inverted-style.css index f1f7836..87fdd85 100644 --- a/static/style/inverted-style.css +++ b/static/style/inverted-style.css @@ -1,54 +1,3 @@ -@media (orientation: portrait) or (max-width: 1005px) { - #filters { - display: none; - } - .filters-container label:not([for="view-toggle"]) { - width: 48px; - } - #bottom-right { - display: none; - } - #toolbar { - justify-content: space-between; - } - #bottom-bar { - display: flex; - height: 72px; - width: 100%; - overflow: hidden; - } - .preview-active #bottom-bar { - align-items: center; - } - .labels.cloned-labels { - display: none; - } - body.preview-active .labels.cloned-labels { - flex-grow: 1; - padding: 0px 6px; - display: flex; - width: 0%; - } - #filters-bottom { - flex-direction: column; - gap: 4px; - } - .labels { - margin: 0; - align-items: center; - width: 100%; - } - #filter-bottom { - max-width: 100%; - margin: 0; - } -} -@media (orientation: landscape) and (width > 800px) { - #bottom-bar, - #filters-bottom { - display: none; - } -} @media (prefers-color-scheme: light) { :root { --grid-background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABYWlDQ1BrQ0dDb2xvclNwYWNlRGlzcGxheVAzAAAokWNgYFJJLCjIYWFgYMjNKykKcndSiIiMUmB/yMAOhLwMYgwKicnFBY4BAT5AJQwwGhV8u8bACKIv64LMOiU1tUm1XsDXYqbw1YuvRJsw1aMArpTU4mQg/QeIU5MLikoYGBhTgGzl8pICELsDyBYpAjoKyJ4DYqdD2BtA7CQI+whYTUiQM5B9A8hWSM5IBJrB+API1klCEk9HYkPtBQFul8zigpzESoUAYwKuJQOUpFaUgGjn/ILKosz0jBIFR2AopSp45iXr6SgYGRiaMzCAwhyi+nMgOCwZxc4gxJrvMzDY7v////9uhJjXfgaGjUCdXDsRYhoWDAyC3AwMJ3YWJBYlgoWYgZgpLY2B4dNyBgbeSAYG4QtAPdHFacZGYHlGHicGBtZ7//9/VmNgYJ/MwPB3wv//vxf9//93MVDzHQaGA3kAFSFl7jXH0fsAAAA4ZVhJZk1NACoAAAAIAAGHaQAEAAAAAQAAABoAAAAAAAKgAgAEAAAAAQAAABigAwAEAAAAAQAAABgAAAAAwf1XlwAAACNJREFUSA3t0IEAAAAMBKFHm7/UTaQQWnXDgAEDBgwYMGDgAXaJAz4RVVHYAAAAAElFTkSuQmCC"); @@ -155,7 +104,7 @@ display: block; } #issues-container > div.selected, - #issues-container > div.selected .info, + #issues-container > div.selected .text-info, #issues-container > div.selected h3 { opacity: 1; } @@ -247,7 +196,7 @@ text-align: center; white-space: nowrap; background-color: #7f7f7f20; - width: 64px; + width: 86px; letter-spacing: 0.5px; flex-grow: 4; justify-content: center; @@ -291,11 +240,28 @@ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; - margin-top: 2px; + display: flex; + align-items: start; + padding: 6px 0px 8px 0px; + gap: 4px; } - .info > .partner > * { - display: inline-block; + + .comment-preview { + display: flex; + gap: 10px; + align-items: center; + width: 95%; + } + + .comment-body { + align-items: center; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + color: #535353; + font-size: 14px; } + body { display: flex; align-items: center; @@ -303,6 +269,15 @@ justify-content: center; } .info { + display: flex; + gap: 12px; + } + .notification-icon { + display: flex; + flex-direction: column; + justify-content: center; + } + .text-info { opacity: 0.66; transition: 125ms opacity ease-in-out; align-items: center; @@ -375,7 +350,7 @@ } #authentication { position: absolute; - right:8px; + right: 8px; cursor: pointer; vertical-align: middle; flex: 0 0 auto; @@ -418,6 +393,9 @@ font-weight: 400; text-rendering: geometricPrecision; } + .comment-preview{ + padding: 8px 0px; + } @media screen and (max-width: 804px) { .mid { padding: 0 4px; @@ -432,10 +410,15 @@ display: none; } } - @media screen and (max-width: 1361px) { + @media screen and (max-width: 3000px) { .partner { margin-top: 0; } + .full-repo-name { + display: unset; + display: flex; + width: auto; + } .issue-element-inner > * { max-width: unset; } @@ -541,7 +524,7 @@ .preview th { font-weight: bold; } - .preview th, + .preview th, .preview td { padding: 6px 13px; } @@ -780,11 +763,11 @@ background-color: grey; } #view-toggle:checked::after { - content: "Proposals"; + content: ""; cursor: pointer; } #view-toggle::after { - content: "Directory"; + content: ""; letter-spacing: 1.5px; text-rendering: geometricprecision; text-transform: uppercase; @@ -947,7 +930,7 @@ /* Prevent content from going under bottom bar */ /* padding-bottom: 48px; */ } - + .preview-body::-webkit-scrollbar { width: 2px; } @@ -955,4 +938,57 @@ .preview-body::-webkit-scrollbar-thumb { border-radius: 4px; } + + @media (orientation: portrait) or (max-width: 1005px) { + #filters { + display: none; + } + .filters-container label:not([for="view-toggle"]) { + width: 48px; + } + #bottom-right { + display: none; + } + #toolbar { + justify-content: space-between; + } + #bottom-bar { + display: flex; + height: 72px; + width: 100%; + overflow: hidden; + } + .preview-active #bottom-bar { + align-items: center; + } + .labels.cloned-labels { + display: none; + } + body.preview-active .labels.cloned-labels { + flex-grow: 1; + padding: 0px 6px; + display: flex; + width: 0%; + } + #filters-bottom { + flex-direction: column; + gap: 4px; + } + .labels { + margin: 0; + align-items: center; + width: 100%; + } + #filter-bottom { + max-width: 100%; + margin: 0; + } + } + + @media (orientation: landscape) and (width > 800px) { + #bottom-bar, + #filters-bottom { + display: none; + } + } } diff --git a/static/style/special.css b/static/style/special.css index 6cd467c..a3a6514 100644 --- a/static/style/special.css +++ b/static/style/special.css @@ -47,7 +47,7 @@ background-color: var(--light-background); } .preview th, - .preview td{ + .preview td { border: 1px solid var(--alt-dark-background); } .preview tr:nth-child(even) { @@ -98,7 +98,7 @@ background-color: var(--dark-background); } .preview th, - .preview td{ + .preview td { border: 1px solid var(--alt-light-background); } .preview tr:nth-child(even) { diff --git a/static/style/style.css b/static/style/style.css index 7080a8d..80a4e58 100644 --- a/static/style/style.css +++ b/static/style/style.css @@ -1,54 +1,3 @@ -@media (orientation: portrait) or (max-width: 1005px) { - #filters { - display: none; - } - .filters-container label:not([for="view-toggle"]) { - width: 48px; - } - #bottom-right { - display: none; - } - #toolbar { - justify-content: space-between; - } - #bottom-bar { - display: flex; - height: 72px; - width: 100%; - overflow: hidden; - } - .preview-active #bottom-bar { - align-items: center; - } - .labels.cloned-labels { - display: none; - } - body.preview-active .labels.cloned-labels { - flex-grow: 1; - padding: 0px 6px; - display: flex; - width: 0%; - } - #filters-bottom { - flex-direction: column; - gap: 4px; - } - .labels { - margin: 0; - align-items: center; - width: 100%; - } - #filter-bottom { - max-width: 100%; - margin: 0; - } -} -@media (orientation: landscape) and (width > 800px) { - #bottom-bar, - #filters-bottom { - display: none; - } -} @media (prefers-color-scheme: dark) { :root { --grid-background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABYWlDQ1BrQ0dDb2xvclNwYWNlRGlzcGxheVAzAAAokWNgYFJJLCjIYWFgYMjNKykKcndSiIiMUmB/yMAOhLwMYgwKicnFBY4BAT5AJQwwGhV8u8bACKIv64LMOiU1tUm1XsDXYqbw1YuvRJsw1aMArpTU4mQg/QeIU5MLikoYGBhTgGzl8pICELsDyBYpAjoKyJ4DYqdD2BtA7CQI+whYTUiQM5B9A8hWSM5IBJrB+API1klCEk9HYkPtBQFul8zigpzESoUAYwKuJQOUpFaUgGjn/ILKosz0jBIFR2AopSp45iXr6SgYGRiaMzCAwhyi+nMgOCwZxc4gxJrvMzDY7v////9uhJjXfgaGjUCdXDsRYhoWDAyC3AwMJ3YWJBYlgoWYgZgpLY2B4dNyBgbeSAYG4QtAPdHFacZGYHlGHicGBtZ7//9/VmNgYJ/MwPB3wv//vxf9//93MVDzHQaGA3kAFSFl7jXH0fsAAAA4ZVhJZk1NACoAAAAIAAGHaQAEAAAAAQAAABoAAAAAAAKgAgAEAAAAAQAAABigAwAEAAAAAQAAABgAAAAAwf1XlwAAACNJREFUSA3t0IEAAAAMBKFHm7/UTaQQWnXDgAEDBgwYMGDgAXaJAz4RVVHYAAAAAElFTkSuQmCC"); @@ -155,7 +104,7 @@ display: block; } #issues-container > div.selected, - #issues-container > div.selected .info, + #issues-container > div.selected .text-info, #issues-container > div.selected h3 { opacity: 1; } @@ -247,7 +196,7 @@ text-align: center; white-space: nowrap; background-color: #80808020; - width: 64px; + width: 86px; letter-spacing: 0.5px; flex-grow: 4; justify-content: center; @@ -291,11 +240,28 @@ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; - margin-top: 2px; + display: flex; + align-items: start; + padding: 6px 0px 8px 0px; + gap: 4px; } - .info > .partner > * { - display: inline-block; + + .comment-preview { + display: flex; + gap: 10px; + align-items: center; + width: 95%; + } + + .comment-body { + align-items: center; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + color: #acacac; + font-size: 14px; } + body { display: flex; align-items: center; @@ -303,6 +269,15 @@ justify-content: center; } .info { + display: flex; + gap: 12px; + } + .notification-icon { + display: flex; + flex-direction: column; + justify-content: center; + } + .text-info { opacity: 0.66; transition: 125ms opacity ease-in-out; align-items: center; @@ -375,7 +350,7 @@ } #authentication { position: absolute; - right:8px; + right: 8px; cursor: pointer; vertical-align: middle; flex: 0 0 auto; @@ -418,6 +393,9 @@ font-weight: 400; text-rendering: geometricPrecision; } + .comment-preview{ + padding: 8px 0px; + } @media screen and (max-width: 804px) { .mid { padding: 0 4px; @@ -432,10 +410,15 @@ display: none; } } - @media screen and (max-width: 1361px) { + @media screen and (max-width: 3000px) { .partner { margin-top: 0; } + .full-repo-name { + display: unset; + display: flex; + width: auto; + } .issue-element-inner > * { max-width: unset; } @@ -541,7 +524,7 @@ .preview th { font-weight: bold; } - .preview th, + .preview th, .preview td { padding: 6px 13px; } @@ -780,11 +763,11 @@ background-color: grey; } #view-toggle:checked::after { - content: "Proposals"; + content: ""; cursor: pointer; } #view-toggle::after { - content: "Directory"; + content: ""; letter-spacing: 1.5px; text-rendering: geometricprecision; text-transform: uppercase; @@ -947,7 +930,7 @@ /* Prevent content from going under bottom bar */ /* padding-bottom: 48px; */ } - + .preview-body::-webkit-scrollbar { width: 2px; } @@ -955,4 +938,57 @@ .preview-body::-webkit-scrollbar-thumb { border-radius: 4px; } + + @media (orientation: portrait) or (max-width: 1005px) { + #filters { + display: none; + } + .filters-container label:not([for="view-toggle"]) { + width: 48px; + } + #bottom-right { + display: none; + } + #toolbar { + justify-content: space-between; + } + #bottom-bar { + display: flex; + height: 72px; + width: 100%; + overflow: hidden; + } + .preview-active #bottom-bar { + align-items: center; + } + .labels.cloned-labels { + display: none; + } + body.preview-active .labels.cloned-labels { + flex-grow: 1; + padding: 0px 6px; + display: flex; + width: 0%; + } + #filters-bottom { + flex-direction: column; + gap: 4px; + } + .labels { + margin: 0; + align-items: center; + width: 100%; + } + #filter-bottom { + max-width: 100%; + margin: 0; + } + } + + @media (orientation: landscape) and (width > 800px) { + #bottom-bar, + #filters-bottom { + display: none; + } + } } diff --git a/tsconfig.json b/tsconfig.json index 50aa435..f212259 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,8 +11,8 @@ // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ /* Language and Environment */ - "target": "es2022" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, - "lib": ["DOM", "ESNext"] /* Specify a set of bundled library declaration files that describe the target runtime environment. */, + "target": "es2022" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + "lib": ["DOM", "ESNext"] /* Specify a set of bundled library declaration files that describe the target runtime environment. */, // "jsx": "preserve", /* Specify what JSX code is generated. */ // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ @@ -25,21 +25,21 @@ // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ /* Modules */ - "module": "commonjs" /* Specify what module code is generated. */, + "module": "commonjs" /* Specify what module code is generated. */, // "rootDir": "./", /* Specify the root folder within your source files. */ // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - "types": ["cypress"] /* Specify type package names to be included without being referenced in a source file. */, + "types": ["cypress"] /* Specify type package names to be included without being referenced in a source file. */, // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - "resolveJsonModule": true /* Enable importing .json files. */, + "resolveJsonModule": true /* Enable importing .json files. */, // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ @@ -55,7 +55,7 @@ // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - "outDir": "./static/dist/" /* Specify an output folder for all emitted files. */, + "outDir": "./static/dist/" /* Specify an output folder for all emitted files. */, // "removeComments": true, /* Disable emitting comments. */ // "noEmit": true, /* Disable emitting files from a compilation. */ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ @@ -77,12 +77,12 @@ // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, /* Type Checking */ - "strict": true /* Enable all strict type-checking options. */, + "strict": true /* Enable all strict type-checking options. */, // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ @@ -104,6 +104,6 @@ /* Completeness */ // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ } } diff --git a/wrangler.toml b/wrangler.toml deleted file mode 100644 index 5b777f8..0000000 --- a/wrangler.toml +++ /dev/null @@ -1,17 +0,0 @@ -name = "work-ubq-fi" - -compatibility_date = "2024-10-23" - -pages_build_output_dir = "./static" - -[[kv_namespaces]] -binding = "KVNamespace" -id = "0a6aaf0a6edb428189606b116da58ef7" - -[vars] -YARN_VERSION = "1.22.22" - -# These secrets need to be configured via Cloudflare dashboard: -# SUPABASE_URL = "" -# SUPABASE_ANON_KEY = "" - diff --git a/yarn.lock b/yarn.lock index f3e63ba..1d0effc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -32,55 +32,55 @@ __metadata: languageName: node linkType: hard -"@cloudflare/workerd-darwin-64@npm:1.20241106.1": - version: 1.20241106.1 - resolution: "@cloudflare/workerd-darwin-64@npm:1.20241106.1" +"@cloudflare/workerd-darwin-64@npm:1.20241106.2": + version: 1.20241106.2 + resolution: "@cloudflare/workerd-darwin-64@npm:1.20241106.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@cloudflare/workerd-darwin-arm64@npm:1.20241106.1": - version: 1.20241106.1 - resolution: "@cloudflare/workerd-darwin-arm64@npm:1.20241106.1" +"@cloudflare/workerd-darwin-arm64@npm:1.20241106.2": + version: 1.20241106.2 + resolution: "@cloudflare/workerd-darwin-arm64@npm:1.20241106.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@cloudflare/workerd-linux-64@npm:1.20241106.1": - version: 1.20241106.1 - resolution: "@cloudflare/workerd-linux-64@npm:1.20241106.1" +"@cloudflare/workerd-linux-64@npm:1.20241106.2": + version: 1.20241106.2 + resolution: "@cloudflare/workerd-linux-64@npm:1.20241106.2" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@cloudflare/workerd-linux-arm64@npm:1.20241106.1": - version: 1.20241106.1 - resolution: "@cloudflare/workerd-linux-arm64@npm:1.20241106.1" +"@cloudflare/workerd-linux-arm64@npm:1.20241106.2": + version: 1.20241106.2 + resolution: "@cloudflare/workerd-linux-arm64@npm:1.20241106.2" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@cloudflare/workerd-windows-64@npm:1.20241106.1": - version: 1.20241106.1 - resolution: "@cloudflare/workerd-windows-64@npm:1.20241106.1" +"@cloudflare/workerd-windows-64@npm:1.20241106.2": + version: 1.20241106.2 + resolution: "@cloudflare/workerd-windows-64@npm:1.20241106.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@cloudflare/workers-shared@npm:0.7.1": - version: 0.7.1 - resolution: "@cloudflare/workers-shared@npm:0.7.1" +"@cloudflare/workers-shared@npm:0.9.1": + version: 0.9.1 + resolution: "@cloudflare/workers-shared@npm:0.9.1" dependencies: mime: "npm:^3.0.0" zod: "npm:^3.22.3" - checksum: c4b8d67d3a12bca187a956533aed93f0e6ccb19f671bf5982edb883087d4b9e21bc01e1ad6cfb1340655e6a59ea05232a112bbea3fbfb175d3e6fb7949b34632 + checksum: 3d12bf2d52bc58c1124d1074292974ac9bc5eb3a2b2ac33bacedae8dc225a191698dc106565f4c3ecd8e355d725fb161d11865dd5645fa5c08702a693a592bb3 languageName: node linkType: hard "@cloudflare/workers-types@npm:^4.20241011.0": - version: 4.20241112.0 - resolution: "@cloudflare/workers-types@npm:4.20241112.0" - checksum: acb8a65a3018702f09ad57b3eb4b72f3122766592cc901af3d94b75a3bd77eabe163f1d5ae1720a510d2654feba2db5728f0102f8880d1450ab9349f0b029aad + version: 4.20241202.0 + resolution: "@cloudflare/workers-types@npm:4.20241202.0" + checksum: ef3de4d02ed9e3fce2bbec162bc41a07f519f68e79e90b1bf0d6cb727bc1a7f9c87e4184ebba615de74c34eecd64b146b2485764083da9df233f52c8b35ded97 languageName: node linkType: hard @@ -949,6 +949,15 @@ __metadata: languageName: node linkType: hard +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" + dependencies: + minipass: "npm:^7.0.4" + checksum: c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 + languageName: node + linkType: hard + "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -1023,25 +1032,25 @@ __metadata: languageName: node linkType: hard -"@npmcli/agent@npm:^2.0.0": - version: 2.2.2 - resolution: "@npmcli/agent@npm:2.2.2" +"@npmcli/agent@npm:^3.0.0": + version: 3.0.0 + resolution: "@npmcli/agent@npm:3.0.0" dependencies: agent-base: "npm:^7.1.0" http-proxy-agent: "npm:^7.0.0" https-proxy-agent: "npm:^7.0.1" lru-cache: "npm:^10.0.1" socks-proxy-agent: "npm:^8.0.3" - checksum: 325e0db7b287d4154ecd164c0815c08007abfb07653cc57bceded17bb7fd240998a3cbdbe87d700e30bef494885eccc725ab73b668020811d56623d145b524ae + checksum: efe37b982f30740ee77696a80c196912c274ecd2cb243bc6ae7053a50c733ce0f6c09fda085145f33ecf453be19654acca74b69e81eaad4c90f00ccffe2f9271 languageName: node linkType: hard -"@npmcli/fs@npm:^3.1.0": - version: 3.1.1 - resolution: "@npmcli/fs@npm:3.1.1" +"@npmcli/fs@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/fs@npm:4.0.0" dependencies: semver: "npm:^7.3.5" - checksum: c37a5b4842bfdece3d14dfdb054f73fe15ed2d3da61b34ff76629fb5b1731647c49166fd2a8bf8b56fcfa51200382385ea8909a3cbecdad612310c114d3f6c99 + checksum: c90935d5ce670c87b6b14fab04a965a3b8137e585f8b2a6257263bd7f97756dd736cb165bb470e5156a9e718ecd99413dccc54b1138c1a46d6ec7cf325982fe5 languageName: node linkType: hard @@ -1231,11 +1240,11 @@ __metadata: linkType: hard "@octokit/types@npm:^13.0.0, @octokit/types@npm:^13.1.0, @octokit/types@npm:^13.5.0": - version: 13.6.1 - resolution: "@octokit/types@npm:13.6.1" + version: 13.6.2 + resolution: "@octokit/types@npm:13.6.2" dependencies: "@octokit/openapi-types": "npm:^22.2.0" - checksum: 891334b5786ba6aef953384cec05d53e05132dd577c0c22db124d55eaa69609362d1e3147853b46e91bf226e046ba24d615c55214c8f8f4e7c3a5c38429b38e9 + checksum: ea51afb21b667b25dad9e5daae1701da1b362a4d6ed9609f6d3f9f219e5389bf50f7e53ae029ca190750e278be3ab963cac648a95ad248f245a5fda16a4f1ed1 languageName: node linkType: hard @@ -1452,15 +1461,15 @@ __metadata: languageName: node linkType: hard -"@supabase/realtime-js@npm:2.10.7": - version: 2.10.7 - resolution: "@supabase/realtime-js@npm:2.10.7" +"@supabase/realtime-js@npm:2.10.9": + version: 2.10.9 + resolution: "@supabase/realtime-js@npm:2.10.9" dependencies: "@supabase/node-fetch": "npm:^2.6.14" "@types/phoenix": "npm:^1.5.4" "@types/ws": "npm:^8.5.10" - ws: "npm:^8.14.2" - checksum: c626cfb0e5f6bcec23bff35f44b597efe11b8489063e52e43053c9bfeed5dd947f78ab063d7065ed3ced6bce803a231a4f398de4e933c9a0e3093e8c804dbaad + ws: "npm:^8.18.0" + checksum: 8667bcc4f2763e7821f112b805cf2845cb6ce6e4db8e03174ae3f4d2129b37f7c93d64c4621d7728fb5ebd2d9c896691a8940c16913ee1dea6ad32b2bd5cfc8d languageName: node linkType: hard @@ -1474,16 +1483,16 @@ __metadata: linkType: hard "@supabase/supabase-js@npm:^2.39.0": - version: 2.46.1 - resolution: "@supabase/supabase-js@npm:2.46.1" + version: 2.46.2 + resolution: "@supabase/supabase-js@npm:2.46.2" dependencies: "@supabase/auth-js": "npm:2.65.1" "@supabase/functions-js": "npm:2.4.3" "@supabase/node-fetch": "npm:2.6.15" "@supabase/postgrest-js": "npm:1.16.3" - "@supabase/realtime-js": "npm:2.10.7" + "@supabase/realtime-js": "npm:2.10.9" "@supabase/storage-js": "npm:2.7.1" - checksum: ecdcc3b6561b531cd0f1a1796e8f2657997e4bce9b0ea4016e4df05cbfba49526c77378dc843fd81121c38b62c72139103b9b2d72c65391046f26dc1f37c06be + checksum: 83f9bbeb7005da886fcb3fefbcf4105f52230c6b0545a222be463a84d4a1c2755c410d6972bb0ac2f139a0415e96115c266ee2291c0c077f365ba35616a02eae languageName: node linkType: hard @@ -1536,20 +1545,20 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 22.9.0 - resolution: "@types/node@npm:22.9.0" + version: 22.10.1 + resolution: "@types/node@npm:22.10.1" dependencies: - undici-types: "npm:~6.19.8" - checksum: 3f46cbe0a49bab4ba30494025e4c8a6e699b98ac922857aa1f0209ce11a1313ee46e6808b8f13fe5b8b960a9d7796b77c8d542ad4e9810e85ef897d5593b5d51 + undici-types: "npm:~6.20.0" + checksum: 0fbb6d29fa35d807f0223a4db709c598ac08d66820240a2cd6a8a69b8f0bc921d65b339d850a666b43b4e779f967e6ed6cf6f0fca3575e08241e6b900364c234 languageName: node linkType: hard "@types/node@npm:^20.10.0": - version: 20.17.6 - resolution: "@types/node@npm:20.17.6" + version: 20.17.9 + resolution: "@types/node@npm:20.17.9" dependencies: undici-types: "npm:~6.19.2" - checksum: 5918c7ff8368bbe6d06d5e739c8ae41a9db41628f28760c60cda797be7d233406f07c4d0e6fdd960a0a342ec4173c2217eb6624e06bece21c1f1dd1b92805c15 + checksum: 1c37c3618407d56b76301578edabcb4c6a7ef093d0811c50fc4df8df68fc546797a294cafac0e50789f4e0e485cd1d6871964d8e6222fd420658bdae89c1fb4a languageName: node linkType: hard @@ -1561,9 +1570,9 @@ __metadata: linkType: hard "@types/phoenix@npm:^1.5.4": - version: 1.6.5 - resolution: "@types/phoenix@npm:1.6.5" - checksum: a5a6bb468c1596905fd6d1d493fd468cb0b325b0d09573845e01124d65267e606ad9c526701201e2e30d334721108e5e1b98e4fe9dc9d6270eb2f90042cc7bda + version: 1.6.6 + resolution: "@types/phoenix@npm:1.6.6" + checksum: 4dfcb3fd36341ed5500de030291af14163c599857e00d2d4ff065d4c4600317d5d20aa170913fb9609747a09436e3add44db7d0c709bdf80f36cddcc67a42021 languageName: node linkType: hard @@ -1745,9 +1754,9 @@ __metadata: languageName: node linkType: hard -"@ubiquity/work.ubq.fi@workspace:.": +"@ubiquity/nofications.ubq.fi@workspace:.": version: 0.0.0-use.local - resolution: "@ubiquity/work.ubq.fi@workspace:." + resolution: "@ubiquity/nofications.ubq.fi@workspace:." dependencies: "@cloudflare/workers-types": "npm:^4.20241011.0" "@commitlint/cli": "npm:^18.4.3" @@ -2240,11 +2249,11 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^18.0.0": - version: 18.0.4 - resolution: "cacache@npm:18.0.4" +"cacache@npm:^19.0.1": + version: 19.0.1 + resolution: "cacache@npm:19.0.1" dependencies: - "@npmcli/fs": "npm:^3.1.0" + "@npmcli/fs": "npm:^4.0.0" fs-minipass: "npm:^3.0.0" glob: "npm:^10.2.2" lru-cache: "npm:^10.0.1" @@ -2252,11 +2261,11 @@ __metadata: minipass-collect: "npm:^2.0.1" minipass-flush: "npm:^1.0.5" minipass-pipeline: "npm:^1.2.4" - p-map: "npm:^4.0.0" - ssri: "npm:^10.0.0" - tar: "npm:^6.1.11" - unique-filename: "npm:^3.0.0" - checksum: 6c055bafed9de4f3dcc64ac3dc7dd24e863210902b7c470eb9ce55a806309b3efff78033e3d8b4f7dcc5d467f2db43c6a2857aaaf26f0094b8a351d44c42179f + p-map: "npm:^7.0.2" + ssri: "npm:^12.0.0" + tar: "npm:^7.4.3" + unique-filename: "npm:^4.0.0" + checksum: 01f2134e1bd7d3ab68be851df96c8d63b492b1853b67f2eecb2c37bb682d37cb70bb858a16f2f0554d3c0071be6dfe21456a1ff6fa4b7eed996570d6a25ffe9c languageName: node linkType: hard @@ -2366,10 +2375,10 @@ __metadata: languageName: node linkType: hard -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: 594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 +"chownr@npm:^3.0.0": + version: 3.0.0 + resolution: "chownr@npm:3.0.0" + checksum: 43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10 languageName: node linkType: hard @@ -2635,26 +2644,26 @@ __metadata: linkType: hard "cross-spawn@npm:^6.0.5": - version: 6.0.5 - resolution: "cross-spawn@npm:6.0.5" + version: 6.0.6 + resolution: "cross-spawn@npm:6.0.6" dependencies: nice-try: "npm:^1.0.4" path-key: "npm:^2.0.1" semver: "npm:^5.5.0" shebang-command: "npm:^1.2.0" which: "npm:^1.2.9" - checksum: e05544722e9d7189b4292c66e42b7abeb21db0d07c91b785f4ae5fefceb1f89e626da2703744657b287e86dcd4af57b54567cef75159957ff7a8a761d9055012 + checksum: bf61fb890e8635102ea9bce050515cf915ff6a50ccaa0b37a17dc82fded0fb3ed7af5478b9367b86baee19127ad86af4be51d209f64fd6638c0862dca185fe1d languageName: node linkType: hard "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": - version: 7.0.5 - resolution: "cross-spawn@npm:7.0.5" + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" dependencies: path-key: "npm:^3.1.0" shebang-command: "npm:^2.0.0" which: "npm:^2.0.1" - checksum: aa82ce7ac0814a27e6f2b738c5a7cf1fa21a3558a1e42df449fc96541ba3ba731e4d3ecffa4435348808a86212f287c6f20a1ee551ef1ff95d01cfec5f434944 + checksum: 053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 languageName: node linkType: hard @@ -2926,9 +2935,9 @@ __metadata: linkType: hard "dotenv@npm:^16.3.1, dotenv@npm:^16.4.5": - version: 16.4.5 - resolution: "dotenv@npm:16.4.5" - checksum: 48d92870076832af0418b13acd6e5a5a3e83bb00df690d9812e94b24aff62b88ade955ac99a05501305b8dc8f1b0ee7638b18493deb6fe93d680e5220936292f + version: 16.4.7 + resolution: "dotenv@npm:16.4.7" + checksum: be9f597e36a8daf834452daa1f4cc30e5375a5968f98f46d89b16b983c567398a330580c88395069a77473943c06b877d1ca25b4afafcdd6d4adb549e8293462 languageName: node linkType: hard @@ -3050,9 +3059,9 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2": - version: 1.23.4 - resolution: "es-abstract@npm:1.23.4" +"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.5": + version: 1.23.5 + resolution: "es-abstract@npm:1.23.5" dependencies: array-buffer-byte-length: "npm:^1.0.1" arraybuffer.prototype.slice: "npm:^1.0.3" @@ -3100,7 +3109,7 @@ __metadata: typed-array-length: "npm:^1.0.6" unbox-primitive: "npm:^1.0.2" which-typed-array: "npm:^1.1.15" - checksum: 70c56ec479d57e63387f561bb50c80587f4a52010868787e3d4b4f95301edf5ba98d70ffd0ba56eb4722c48c578870ff2a8825236a948cfa483f76015d134acb + checksum: 1f6f91da9cf7ee2c81652d57d3046621d598654d1d1b05c1578bafe5c4c2d3d69513901679bdca2de589f620666ec21de337e4935cec108a4ed0871d5ef04a5d languageName: node linkType: hard @@ -3141,13 +3150,13 @@ __metadata: linkType: hard "es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" + version: 1.3.0 + resolution: "es-to-primitive@npm:1.3.0" dependencies: - is-callable: "npm:^1.1.4" - is-date-object: "npm:^1.0.1" - is-symbol: "npm:^1.0.2" - checksum: 0886572b8dc075cb10e50c0af62a03d03a68e1e69c388bd4f10c0649ee41b1fbb24840a1b7e590b393011b5cdbe0144b776da316762653685432df37d6de60f1 + is-callable: "npm:^1.2.7" + is-date-object: "npm:^1.0.5" + is-symbol: "npm:^1.0.4" + checksum: c7e87467abb0b438639baa8139f701a06537d2b9bc758f23e8622c3b42fd0fdb5bde0f535686119e446dd9d5e4c0f238af4e14960f4771877cf818d023f6730b languageName: node linkType: hard @@ -3849,9 +3858,9 @@ __metadata: linkType: hard "flatted@npm:^3.2.9": - version: 3.3.1 - resolution: "flatted@npm:3.3.1" - checksum: 324166b125ee07d4ca9bcf3a5f98d915d5db4f39d711fba640a3178b959919aae1f7cfd8aabcfef5826ed8aa8a2aa14cc85b2d7d18ff638ddf4ae3df39573eaf + version: 3.3.2 + resolution: "flatted@npm:3.3.2" + checksum: 24cc735e74d593b6c767fe04f2ef369abe15b62f6906158079b9874bdb3ee5ae7110bb75042e70cd3f99d409d766f357caf78d5ecee9780206f5fdc5edbad334 languageName: node linkType: hard @@ -3915,15 +3924,6 @@ __metadata: languageName: node linkType: hard -"fs-minipass@npm:^2.0.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: "npm:^3.0.0" - checksum: 703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 - languageName: node - linkType: hard - "fs-minipass@npm:^3.0.0": version: 3.0.3 resolution: "fs-minipass@npm:3.0.3" @@ -3999,7 +3999,7 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": +"get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": version: 1.2.4 resolution: "get-intrinsic@npm:1.2.4" dependencies: @@ -4123,7 +4123,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2, glob@npm:^10.3.10": +"glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.7": version: 10.4.5 resolution: "glob@npm:10.4.5" dependencies: @@ -4218,12 +4218,10 @@ __metadata: languageName: node linkType: hard -"gopd@npm:^1.0.1": - version: 1.0.1 - resolution: "gopd@npm:1.0.1" - dependencies: - get-intrinsic: "npm:^1.1.3" - checksum: 505c05487f7944c552cee72087bf1567debb470d4355b1335f2c262d218ebbff805cd3715448fe29b4b380bae6912561d0467233e4165830efd28da241418c63 +"gopd@npm:^1.0.1, gopd@npm:^1.1.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: 50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead languageName: node linkType: hard @@ -4248,7 +4246,7 @@ __metadata: languageName: node linkType: hard -"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": +"has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" checksum: 724eb1485bfa3cdff6f18d95130aa190561f00b3fcf9f19dc640baf8176b5917c143b81ec2123f8cddb6c05164a198c94b13e1377c497705ccc8e1a80306e83b @@ -4286,16 +4284,18 @@ __metadata: linkType: hard "has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": - version: 1.0.3 - resolution: "has-proto@npm:1.0.3" - checksum: 35a6989f81e9f8022c2f4027f8b48a552de714938765d019dbea6bb547bd49ce5010a3c7c32ec6ddac6e48fc546166a3583b128f5a7add8b058a6d8b4afec205 + version: 1.1.0 + resolution: "has-proto@npm:1.1.0" + dependencies: + call-bind: "npm:^1.0.7" + checksum: d0aeb83ca76aa265a7629bf973d6338c310b8307cb7fa8b85f8f01a7d95fc3d6ede54eaedeb538a6c1ee4fc8961abfbe89ea88d9a78244fa03097fe5b506c10d languageName: node linkType: hard -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: e6922b4345a3f37069cdfe8600febbca791c94988c01af3394d86ca3360b4b93928bbf395859158f88099cb10b19d98e3bbab7c9ff2c1bd09cf665ee90afa2c3 +"has-symbols@npm:^1.0.3": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e languageName: node linkType: hard @@ -4547,26 +4547,35 @@ __metadata: languageName: node linkType: hard -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" +"is-async-function@npm:^2.0.0": + version: 2.0.0 + resolution: "is-async-function@npm:2.0.0" dependencies: - has-bigints: "npm:^1.0.1" - checksum: eb9c88e418a0d195ca545aff2b715c9903d9b0a5033bc5922fec600eb0c3d7b1ee7f882dbf2e0d5a6e694e42391be3683e4368737bd3c4a77f8ac293e7773696 + has-tostringtag: "npm:^1.0.0" + checksum: 787bc931576aad525d751fc5ce211960fe91e49ac84a5c22d6ae0bc9541945fbc3f686dc590c3175722ce4f6d7b798a93f6f8ff4847fdb2199aea6f4baf5d668 languageName: node linkType: hard -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" +"is-bigint@npm:^1.1.0": + version: 1.1.0 + resolution: "is-bigint@npm:1.1.0" dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: 6090587f8a8a8534c0f816da868bc94f32810f08807aa72fa7e79f7e11c466d281486ffe7a788178809c2aa71fe3e700b167fe80dd96dad68026bfff8ebf39f7 + has-bigints: "npm:^1.0.2" + checksum: f4f4b905ceb195be90a6ea7f34323bf1c18e3793f18922e3e9a73c684c29eeeeff5175605c3a3a74cc38185fe27758f07efba3dbae812e5c5afbc0d2316b40e4 + languageName: node + linkType: hard + +"is-boolean-object@npm:^1.2.0": + version: 1.2.0 + resolution: "is-boolean-object@npm:1.2.0" + dependencies: + call-bind: "npm:^1.0.7" + has-tostringtag: "npm:^1.0.2" + checksum: 166319154c7c1fda06d164d3a25e969032d7929a1e3917ae56f6bd8870b831bbfdc608a3070fb5db94d5a2afc606683d484655777c9b62305383a8b87f1b5aa4 languageName: node linkType: hard -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": +"is-callable@npm:^1.1.3, is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" checksum: ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f @@ -4602,7 +4611,7 @@ __metadata: languageName: node linkType: hard -"is-date-object@npm:^1.0.1": +"is-date-object@npm:^1.0.5": version: 1.0.5 resolution: "is-date-object@npm:1.0.5" dependencies: @@ -4618,6 +4627,15 @@ __metadata: languageName: node linkType: hard +"is-finalizationregistry@npm:^1.1.0": + version: 1.1.0 + resolution: "is-finalizationregistry@npm:1.1.0" + dependencies: + call-bind: "npm:^1.0.7" + checksum: 1cd94236bfb6e060fe2b973c8726a2782727f7d495b3e8e1d51d3e619c5a3345413706f555956eb5b12af15eba0414118f64a1b19d793ec36b5e6767a13836ac + languageName: node + linkType: hard + "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" @@ -4641,6 +4659,15 @@ __metadata: languageName: node linkType: hard +"is-generator-function@npm:^1.0.10": + version: 1.0.10 + resolution: "is-generator-function@npm:1.0.10" + dependencies: + has-tostringtag: "npm:^1.0.0" + checksum: df03514df01a6098945b5a0cfa1abff715807c8e72f57c49a0686ad54b3b74d394e2d8714e6f709a71eb00c9630d48e73ca1796c1ccc84ac95092c1fecc0d98b + languageName: node + linkType: hard + "is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": version: 4.0.3 resolution: "is-glob@npm:4.0.3" @@ -4667,10 +4694,10 @@ __metadata: languageName: node linkType: hard -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d +"is-map@npm:^2.0.3": + version: 2.0.3 + resolution: "is-map@npm:2.0.3" + checksum: 2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc languageName: node linkType: hard @@ -4681,12 +4708,13 @@ __metadata: languageName: node linkType: hard -"is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" +"is-number-object@npm:^1.1.0": + version: 1.1.0 + resolution: "is-number-object@npm:1.1.0" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: aad266da1e530f1804a2b7bd2e874b4869f71c98590b3964f9d06cc9869b18f8d1f4778f838ecd2a11011bce20aeecb53cb269ba916209b79c24580416b74b1b + call-bind: "npm:^1.0.7" + has-tostringtag: "npm:^1.0.2" + checksum: 29d575b5c54ff13f824858d8f7da4cf27131c59858744ec94e96be7b7d2de81038971c15a2636b38fa9eece3797c14bf8de898e1b30afc2f5c1df5cea9f06a8e languageName: node linkType: hard @@ -4726,12 +4754,21 @@ __metadata: linkType: hard "is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" + version: 1.2.0 + resolution: "is-regex@npm:1.2.0" dependencies: - call-bind: "npm:^1.0.2" - has-tostringtag: "npm:^1.0.0" - checksum: bb72aae604a69eafd4a82a93002058c416ace8cde95873589a97fc5dac96a6c6c78a9977d487b7b95426a8f5073969124dd228f043f9f604f041f32fcc465fc1 + call-bind: "npm:^1.0.7" + gopd: "npm:^1.1.0" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: a407fefb871ceedebe718c35d2f4ba75dc3360c335e99ff2f8bc4488bdcc7b0b3bb78a208d1aa896cf2745630b97752ffd40b501c10bb7afc31d23c2e0092e8d + languageName: node + linkType: hard + +"is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7 languageName: node linkType: hard @@ -4758,21 +4795,24 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" +"is-string@npm:^1.0.7, is-string@npm:^1.1.0": + version: 1.1.0 + resolution: "is-string@npm:1.1.0" dependencies: - has-tostringtag: "npm:^1.0.0" - checksum: 905f805cbc6eedfa678aaa103ab7f626aac9ebbdc8737abb5243acaa61d9820f8edc5819106b8fcd1839e33db21de9f0116ae20de380c8382d16dc2a601921f6 + call-bind: "npm:^1.0.7" + has-tostringtag: "npm:^1.0.2" + checksum: 2781bce7bfdb00276d000a7aafccad8038a7b5cb06abbfc638417a705dd41bca259977af78731dc8a87f170783c94c9f684bc086fc4856b623c1fd942c509b6b languageName: node linkType: hard -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" +"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.0": + version: 1.1.0 + resolution: "is-symbol@npm:1.1.0" dependencies: - has-symbols: "npm:^1.0.2" - checksum: 9381dd015f7c8906154dbcbf93fad769de16b4b961edc94f88d26eb8c555935caa23af88bda0c93a18e65560f6d7cca0fd5a3f8a8e1df6f1abbb9bead4502ef7 + call-bind: "npm:^1.0.7" + has-symbols: "npm:^1.0.3" + safe-regex-test: "npm:^1.0.3" + checksum: 57f63c22e00cc4990680e12035b91ed158de1030924175123b13b2188fb2d10c9a80da9a923dd6ff9e9b084afd3d2e8d7d3ad711fe971e7fb74a44644751cd52 languageName: node linkType: hard @@ -4808,6 +4848,13 @@ __metadata: languageName: node linkType: hard +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: 443c35bb86d5e6cc5929cd9c75a4024bb0fff9586ed50b092f94e700b89c43a33b186b76dbc6d54f3d3d09ece689ab38dcdc1af6a482cbe79c0f2da0a17f1299 + languageName: node + linkType: hard + "is-weakref@npm:^1.0.2": version: 1.0.2 resolution: "is-weakref@npm:1.0.2" @@ -4817,6 +4864,16 @@ __metadata: languageName: node linkType: hard +"is-weakset@npm:^2.0.3": + version: 2.0.3 + resolution: "is-weakset@npm:2.0.3" + dependencies: + call-bind: "npm:^1.0.7" + get-intrinsic: "npm:^1.2.4" + checksum: 8ad6141b6a400e7ce7c7442a13928c676d07b1f315ab77d9912920bf5f4170622f43126f111615788f26c3b1871158a6797c862233124507db0bcc33a9537d1a + languageName: node + linkType: hard + "isarray@npm:^2.0.5": version: 2.0.5 resolution: "isarray@npm:2.0.5" @@ -5107,9 +5164,9 @@ __metadata: linkType: hard "lilconfig@npm:~3.1.2": - version: 3.1.2 - resolution: "lilconfig@npm:3.1.2" - checksum: f059630b1a9bddaeba83059db00c672b64dc14074e9f232adce32b38ca1b5686ab737eb665c5ba3c32f147f0002b4bee7311ad0386a9b98547b5623e87071fbe + version: 3.1.3 + resolution: "lilconfig@npm:3.1.3" + checksum: f5604e7240c5c275743561442fbc5abf2a84ad94da0f5adc71d25e31fa8483048de3dcedcb7a44112a942fed305fd75841cdf6c9681c7f640c63f1049e9a5dcc languageName: node linkType: hard @@ -5391,23 +5448,22 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^13.0.0": - version: 13.0.1 - resolution: "make-fetch-happen@npm:13.0.1" +"make-fetch-happen@npm:^14.0.3": + version: 14.0.3 + resolution: "make-fetch-happen@npm:14.0.3" dependencies: - "@npmcli/agent": "npm:^2.0.0" - cacache: "npm:^18.0.0" + "@npmcli/agent": "npm:^3.0.0" + cacache: "npm:^19.0.1" http-cache-semantics: "npm:^4.1.1" - is-lambda: "npm:^1.0.1" minipass: "npm:^7.0.2" - minipass-fetch: "npm:^3.0.0" + minipass-fetch: "npm:^4.0.0" minipass-flush: "npm:^1.0.5" minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^0.6.3" - proc-log: "npm:^4.2.0" + negotiator: "npm:^1.0.0" + proc-log: "npm:^5.0.0" promise-retry: "npm:^2.0.1" - ssri: "npm:^10.0.0" - checksum: df5f4dbb6d98153b751bccf4dc4cc500de85a96a9331db9805596c46aa9f99d9555983954e6c1266d9f981ae37a9e4647f42b9a4bb5466f867f4012e582c9e7e + ssri: "npm:^12.0.0" + checksum: c40efb5e5296e7feb8e37155bde8eb70bc57d731b1f7d90e35a092fde403d7697c56fb49334d92d330d6f1ca29a98142036d6480a12681133a0a1453164cb2f0 languageName: node linkType: hard @@ -5597,9 +5653,9 @@ __metadata: languageName: node linkType: hard -"miniflare@npm:3.20241106.0": - version: 3.20241106.0 - resolution: "miniflare@npm:3.20241106.0" +"miniflare@npm:3.20241106.2": + version: 3.20241106.2 + resolution: "miniflare@npm:3.20241106.2" dependencies: "@cspotcode/source-map-support": "npm:0.8.1" acorn: "npm:^8.8.0" @@ -5609,13 +5665,13 @@ __metadata: glob-to-regexp: "npm:^0.4.1" stoppable: "npm:^1.1.0" undici: "npm:^5.28.4" - workerd: "npm:1.20241106.1" + workerd: "npm:1.20241106.2" ws: "npm:^8.18.0" youch: "npm:^3.2.2" zod: "npm:^3.22.3" bin: miniflare: bootstrap.js - checksum: b3d01509def845f52084661c39e4c158aafada23ba205ddaf1a96797a590e68ddf2d6c1c1a7ebef28aa3bbdbdcb0122be56d6f26d7b6682995bd20551845f396 + checksum: 023f79d6b3219fa254110deb80d4bf05d25ca525db3b4fa97d89a431d41febdedbd80ccacc467ef237ca17956275b7f1e5dd09e216d3dcec418223cebd40d104 languageName: node linkType: hard @@ -5673,18 +5729,18 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^3.0.0": - version: 3.0.5 - resolution: "minipass-fetch@npm:3.0.5" +"minipass-fetch@npm:^4.0.0": + version: 4.0.0 + resolution: "minipass-fetch@npm:4.0.0" dependencies: encoding: "npm:^0.1.13" minipass: "npm:^7.0.3" minipass-sized: "npm:^1.0.3" - minizlib: "npm:^2.1.2" + minizlib: "npm:^3.0.1" dependenciesMeta: encoding: optional: true - checksum: 9d702d57f556274286fdd97e406fc38a2f5c8d15e158b498d7393b1105974b21249289ec571fa2b51e038a4872bfc82710111cf75fae98c662f3d6f95e72152b + checksum: 7fa30ce7c373fb6f94c086b374fff1589fd7e78451855d2d06c2e2d9df936d131e73e952163063016592ed3081444bd8d1ea608533313b0149156ce23311da4b languageName: node linkType: hard @@ -5724,36 +5780,29 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0": - version: 5.0.0 - resolution: "minipass@npm:5.0.0" - checksum: a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 - languageName: node - linkType: hard - -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": version: 7.1.2 resolution: "minipass@npm:7.1.2" checksum: b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 languageName: node linkType: hard -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" +"minizlib@npm:^3.0.1": + version: 3.0.1 + resolution: "minizlib@npm:3.0.1" dependencies: - minipass: "npm:^3.0.0" - yallist: "npm:^4.0.0" - checksum: 64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 + minipass: "npm:^7.0.4" + rimraf: "npm:^5.0.5" + checksum: 82f8bf70da8af656909a8ee299d7ed3b3372636749d29e105f97f20e88971be31f5ed7642f2e898f00283b68b701cc01307401cdc209b0efc5dd3818220e5093 languageName: node linkType: hard -"mkdirp@npm:^1.0.3": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" +"mkdirp@npm:^3.0.1": + version: 3.0.1 + resolution: "mkdirp@npm:3.0.1" bin: - mkdirp: bin/cmd.js - checksum: 46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + mkdirp: dist/cjs/src/bin.js + checksum: 9f2b975e9246351f5e3a40dcfac99fcd0baa31fbfab615fe059fb11e51f10e4803c63de1f384c54d656e4db31d000e4767e9ef076a22e12a641357602e31d57d languageName: node linkType: hard @@ -5774,11 +5823,11 @@ __metadata: linkType: hard "nanoid@npm:^3.3.3": - version: 3.3.7 - resolution: "nanoid@npm:3.3.7" + version: 3.3.8 + resolution: "nanoid@npm:3.3.8" bin: nanoid: bin/nanoid.cjs - checksum: e3fb661aa083454f40500473bb69eedb85dc160e763150b9a2c567c7e9ff560ce028a9f833123b618a6ea742e311138b591910e795614a629029e86e180660f3 + checksum: 4b1bb29f6cfebf3be3bc4ad1f1296fb0a10a3043a79f34fbffe75d1621b4318319211cd420549459018ea3592f0d2f159247a6f874911d6d26eaaadda2478120 languageName: node linkType: hard @@ -5804,10 +5853,10 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:^0.6.3": - version: 0.6.4 - resolution: "negotiator@npm:0.6.4" - checksum: 3e677139c7fb7628a6f36335bf11a885a62c21d5390204590a1a214a5631fcbe5ea74ef6a610b60afe84b4d975cbe0566a23f20ee17c77c73e74b80032108dea +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b languageName: node linkType: hard @@ -5836,33 +5885,33 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 10.2.0 - resolution: "node-gyp@npm:10.2.0" + version: 11.0.0 + resolution: "node-gyp@npm:11.0.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" glob: "npm:^10.3.10" graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^13.0.0" - nopt: "npm:^7.0.0" - proc-log: "npm:^4.1.0" + make-fetch-happen: "npm:^14.0.3" + nopt: "npm:^8.0.0" + proc-log: "npm:^5.0.0" semver: "npm:^7.3.5" - tar: "npm:^6.2.1" - which: "npm:^4.0.0" + tar: "npm:^7.4.3" + which: "npm:^5.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 00630d67dbd09a45aee0a5d55c05e3916ca9e6d427ee4f7bc392d2d3dc5fad7449b21fc098dd38260a53d9dcc9c879b36704a1994235d4707e7271af7e9a835b + checksum: a3b885bbee2d271f1def32ba2e30ffcf4562a3db33af06b8b365e053153e2dd2051b9945783c3c8e852d26a0f20f65b251c7e83361623383a99635c0280ee573 languageName: node linkType: hard -"nopt@npm:^7.0.0": - version: 7.2.1 - resolution: "nopt@npm:7.2.1" +"nopt@npm:^8.0.0": + version: 8.0.0 + resolution: "nopt@npm:8.0.0" dependencies: abbrev: "npm:^2.0.0" bin: nopt: bin/nopt.js - checksum: a069c7c736767121242037a22a788863accfa932ab285a1eb569eb8cd534b09d17206f68c37f096ae785647435e0c5a5a0a67b42ec743e481a455e5ae6a6df81 + checksum: 19cb986f79abaca2d0f0b560021da7b32ee6fcc3de48f3eaeb0c324d36755c17754f886a754c091f01f740c17caf7d6aea8237b7fbaf39f476ae5e30a249f18f languageName: node linkType: hard @@ -6143,6 +6192,13 @@ __metadata: languageName: node linkType: hard +"p-map@npm:^7.0.2": + version: 7.0.2 + resolution: "p-map@npm:7.0.2" + checksum: e10548036648d1c043153f9997112fe5a7de54a319210238628f8ea22ee36587fd6ee740811f88b60bbf29d932e23ae35df7fced40df477116c84c18e797047e + languageName: node + linkType: hard + "p-memoize@npm:4.0.1": version: 4.0.1 resolution: "p-memoize@npm:4.0.1" @@ -6403,11 +6459,11 @@ __metadata: linkType: hard "prettier@npm:^3.2.5": - version: 3.3.3 - resolution: "prettier@npm:3.3.3" + version: 3.4.2 + resolution: "prettier@npm:3.4.2" bin: prettier: bin/prettier.cjs - checksum: b85828b08e7505716324e4245549b9205c0cacb25342a030ba8885aba2039a115dbcf75a0b7ca3b37bc9d101ee61fab8113fc69ca3359f2a226f1ecc07ad2e26 + checksum: 99e076a26ed0aba4ebc043880d0f08bbb8c59a4c6641cdee6cdadf2205bdd87aa1d7823f50c3aea41e015e99878d37c58d7b5f0e663bba0ef047f94e36b96446 languageName: node linkType: hard @@ -6441,13 +6497,20 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^4.0.0, proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": +"proc-log@npm:^4.0.0": version: 4.2.0 resolution: "proc-log@npm:4.2.0" checksum: 17db4757c2a5c44c1e545170e6c70a26f7de58feb985091fb1763f5081cab3d01b181fb2dd240c9f4a4255a1d9227d163d5771b7e69c9e49a561692db865efb9 languageName: node linkType: hard +"proc-log@npm:^5.0.0": + version: 5.0.0 + resolution: "proc-log@npm:5.0.0" + checksum: bbe5edb944b0ad63387a1d5b1911ae93e05ce8d0f60de1035b218cdcceedfe39dbd2c697853355b70f1a090f8f58fe90da487c85216bf9671f9499d1a897e9e3 + languageName: node + linkType: hard + "process@npm:^0.11.10": version: 0.11.10 resolution: "process@npm:0.11.10" @@ -6598,6 +6661,21 @@ __metadata: languageName: node linkType: hard +"reflect.getprototypeof@npm:^1.0.6": + version: 1.0.7 + resolution: "reflect.getprototypeof@npm:1.0.7" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.4" + gopd: "npm:^1.0.1" + which-builtin-type: "npm:^1.1.4" + checksum: 841814f7631b55ee42e198cb14a5c25c0752431ab8f0ad9794c32d46ab9fb0d5ba4939edac1f99a174a21443a1400a72bccbbb9ccd9277e4b4bf6d14aabb31c8 + languageName: node + linkType: hard + "regexp.prototype.flags@npm:^1.5.3": version: 1.5.3 resolution: "regexp.prototype.flags@npm:1.5.3" @@ -6673,13 +6751,6 @@ __metadata: languageName: node linkType: hard -"resolve.exports@npm:^2.0.2": - version: 2.0.2 - resolution: "resolve.exports@npm:2.0.2" - checksum: cc4cffdc25447cf34730f388dca5021156ba9302a3bad3d7f168e790dc74b2827dff603f1bc6ad3d299bac269828dca96dd77e036dc9fba6a2a1807c47ab5c98 - languageName: node - linkType: hard - "resolve@npm:^1.10.0, resolve@npm:^1.22.8": version: 1.22.8 resolution: "resolve@npm:1.22.8" @@ -6765,6 +6836,17 @@ __metadata: languageName: node linkType: hard +"rimraf@npm:^5.0.5": + version: 5.0.10 + resolution: "rimraf@npm:5.0.10" + dependencies: + glob: "npm:^10.3.7" + bin: + rimraf: dist/esm/bin.mjs + checksum: 7da4fd0e15118ee05b918359462cfa1e7fe4b1228c7765195a45b55576e8c15b95db513b8466ec89129666f4af45ad978a3057a02139afba1a63512a2d9644cc + languageName: node + linkType: hard + "rollup-plugin-inject@npm:^3.0.0": version: 3.0.2 resolution: "rollup-plugin-inject@npm:3.0.2" @@ -6963,9 +7045,9 @@ __metadata: linkType: hard "shell-quote@npm:^1.6.1": - version: 1.8.1 - resolution: "shell-quote@npm:1.8.1" - checksum: 8cec6fd827bad74d0a49347057d40dfea1e01f12a6123bf82c4649f3ef152fc2bc6d6176e6376bffcd205d9d0ccb4f1f9acae889384d20baff92186f01ea455a + version: 1.8.2 + resolution: "shell-quote@npm:1.8.2" + checksum: 85fdd44f2ad76e723d34eb72c753f04d847ab64e9f1f10677e3f518d0e5b0752a176fd805297b30bb8c3a1556ebe6e77d2288dbd7b7b0110c7e941e9e9c20ce1 languageName: node linkType: hard @@ -7180,12 +7262,12 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^10.0.0": - version: 10.0.6 - resolution: "ssri@npm:10.0.6" +"ssri@npm:^12.0.0": + version: 12.0.0 + resolution: "ssri@npm:12.0.0" dependencies: minipass: "npm:^7.0.3" - checksum: e5a1e23a4057a86a97971465418f22ea89bd439ac36ade88812dd920e4e61873e8abd6a9b72a03a67ef50faa00a2daf1ab745c5a15b46d03e0544a0296354227 + checksum: caddd5f544b2006e88fa6b0124d8d7b28208b83c72d7672d5ade44d794525d23b540f3396108c4eb9280dcb7c01f0bef50682f5b4b2c34291f7c5e211fd1417d languageName: node linkType: hard @@ -7428,17 +7510,17 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.1.11, tar@npm:^6.2.1": - version: 6.2.1 - resolution: "tar@npm:6.2.1" +"tar@npm:^7.4.3": + version: 7.4.3 + resolution: "tar@npm:7.4.3" dependencies: - chownr: "npm:^2.0.0" - fs-minipass: "npm:^2.0.0" - minipass: "npm:^5.0.0" - minizlib: "npm:^2.1.1" - mkdirp: "npm:^1.0.3" - yallist: "npm:^4.0.0" - checksum: a5eca3eb50bc11552d453488344e6507156b9193efd7635e98e867fab275d527af53d8866e2370cd09dfe74378a18111622ace35af6a608e5223a7d27fe99537 + "@isaacs/fs-minipass": "npm:^4.0.0" + chownr: "npm:^3.0.0" + minipass: "npm:^7.1.2" + minizlib: "npm:^3.0.1" + mkdirp: "npm:^3.0.1" + yallist: "npm:^5.0.0" + checksum: d4679609bb2a9b48eeaf84632b6d844128d2412b95b6de07d53d8ee8baf4ca0857c9331dfa510390a0727b550fd543d4d1a10995ad86cdf078423fbb8d99831d languageName: node linkType: hard @@ -7479,21 +7561,21 @@ __metadata: languageName: node linkType: hard -"tldts-core@npm:^6.1.61": - version: 6.1.61 - resolution: "tldts-core@npm:6.1.61" - checksum: 4596569079488af159ebf5db5d15dee4773314b01c8e3ce7c05dbe149b7670d715ac41fb9d34b7c6333e382fbeb7c9c0314be995176c0a357977936fd1225903 +"tldts-core@npm:^6.1.65": + version: 6.1.65 + resolution: "tldts-core@npm:6.1.65" + checksum: 8e08eec0e8fce756ead9149e3ff3c42f00c96c8bbdf042d357a9b3c93cba6111f8074c8e72967344936e092f388e4e3a574ad5eb93cec8c3855c630d2bec1ccf languageName: node linkType: hard "tldts@npm:^6.1.32": - version: 6.1.61 - resolution: "tldts@npm:6.1.61" + version: 6.1.65 + resolution: "tldts@npm:6.1.65" dependencies: - tldts-core: "npm:^6.1.61" + tldts-core: "npm:^6.1.65" bin: tldts: bin/cli.js - checksum: 6c9b43b5842f5fc79201b86a904c96ce26d96ad746e8227db15cb27cb8271b434e99ac71f7ee782cc1c72fb530e3e8a7b8c463685b7cb418924bf95a32fec000 + checksum: 47ee4d5efcb6e32eb3a4968ae3ed4b441d88cde34eaa23368a12ac49c17939510499f17b61617e0af129d3c02573ae97bca7fa62e7aa95146b7f5b3c715c0206 languageName: node linkType: hard @@ -7562,11 +7644,11 @@ __metadata: linkType: hard "ts-api-utils@npm:^1.0.1": - version: 1.4.0 - resolution: "ts-api-utils@npm:1.4.0" + version: 1.4.3 + resolution: "ts-api-utils@npm:1.4.3" peerDependencies: typescript: ">=4.2.0" - checksum: 1b2bfa50ea52771d564bb143bb69010d25cda03ed573095fbac9b86f717012426443af6647e00e3db70fca60360482a30c1be7cf73c3521c321f6bf5e3594ea0 + checksum: e65dc6e7e8141140c23e1dc94984bf995d4f6801919c71d6dc27cf0cd51b100a91ffcfe5217626193e5bea9d46831e8586febdc7e172df3f1091a7384299e23a languageName: node linkType: hard @@ -7711,8 +7793,8 @@ __metadata: linkType: hard "typed-array-byte-offset@npm:^1.0.2": - version: 1.0.2 - resolution: "typed-array-byte-offset@npm:1.0.2" + version: 1.0.3 + resolution: "typed-array-byte-offset@npm:1.0.3" dependencies: available-typed-arrays: "npm:^1.0.7" call-bind: "npm:^1.0.7" @@ -7720,41 +7802,42 @@ __metadata: gopd: "npm:^1.0.1" has-proto: "npm:^1.0.3" is-typed-array: "npm:^1.1.13" - checksum: d2628bc739732072e39269389a758025f75339de2ed40c4f91357023c5512d237f255b633e3106c461ced41907c1bf9a533c7e8578066b0163690ca8bc61b22f + reflect.getprototypeof: "npm:^1.0.6" + checksum: 5da29585f96671c0521475226d3227000b3e01d1e99208b66bb05b75c7c8f4d0e9cc2e79920f3bfbc792a00102df1daa2608a2753e3f291b671d5a80245bde5b languageName: node linkType: hard "typed-array-length@npm:^1.0.6": - version: 1.0.6 - resolution: "typed-array-length@npm:1.0.6" + version: 1.0.7 + resolution: "typed-array-length@npm:1.0.7" dependencies: call-bind: "npm:^1.0.7" for-each: "npm:^0.3.3" gopd: "npm:^1.0.1" - has-proto: "npm:^1.0.3" is-typed-array: "npm:^1.1.13" possible-typed-array-names: "npm:^1.0.0" - checksum: 74253d7dc488eb28b6b2711cf31f5a9dcefc9c41b0681fd1c178ed0a1681b4468581a3626d39cd4df7aee3d3927ab62be06aa9ca74e5baf81827f61641445b77 + reflect.getprototypeof: "npm:^1.0.6" + checksum: e38f2ae3779584c138a2d8adfa8ecf749f494af3cd3cdafe4e688ce51418c7d2c5c88df1bd6be2bbea099c3f7cea58c02ca02ed438119e91f162a9de23f61295 languageName: node linkType: hard "typescript@npm:^5.3.3": - version: 5.6.3 - resolution: "typescript@npm:5.6.3" + version: 5.7.2 + resolution: "typescript@npm:5.7.2" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 44f61d3fb15c35359bc60399cb8127c30bae554cd555b8e2b46d68fa79d680354b83320ad419ff1b81a0bdf324197b29affe6cc28988cd6a74d4ac60c94f9799 + checksum: a873118b5201b2ef332127ef5c63fb9d9c155e6fdbe211cbd9d8e65877283797cca76546bad742eea36ed7efbe3424a30376818f79c7318512064e8625d61622 languageName: node linkType: hard "typescript@patch:typescript@npm%3A^5.3.3#optional!builtin": - version: 5.6.3 - resolution: "typescript@patch:typescript@npm%3A5.6.3#optional!builtin::version=5.6.3&hash=e012d7" + version: 5.7.2 + resolution: "typescript@patch:typescript@npm%3A5.7.2#optional!builtin::version=5.7.2&hash=e012d7" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: ac8307bb06bbfd08ae7137da740769b7d8c3ee5943188743bb622c621f8ad61d244767480f90fbd840277fbf152d8932aa20c33f867dea1bb5e79b187ca1a92f + checksum: c891ccf04008bc1305ba34053db951f8a4584b4a1bf2f68fd972c4a354df3dc5e62c8bfed4f6ac2d12e5b3b1c49af312c83a651048f818cd5b4949d17baacd79 languageName: node linkType: hard @@ -7777,13 +7860,20 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~6.19.2, undici-types@npm:~6.19.8": +"undici-types@npm:~6.19.2": version: 6.19.8 resolution: "undici-types@npm:6.19.8" checksum: 078afa5990fba110f6824823ace86073b4638f1d5112ee26e790155f481f2a868cc3e0615505b6f4282bdf74a3d8caad715fd809e870c2bb0704e3ea6082f344 languageName: node linkType: hard +"undici-types@npm:~6.20.0": + version: 6.20.0 + resolution: "undici-types@npm:6.20.0" + checksum: 68e659a98898d6a836a9a59e6adf14a5d799707f5ea629433e025ac90d239f75e408e2e5ff086afc3cace26f8b26ee52155293564593fbb4a2f666af57fc59bf + languageName: node + linkType: hard + "undici@npm:^5.28.4": version: 5.28.4 resolution: "undici@npm:5.28.4" @@ -7793,15 +7883,15 @@ __metadata: languageName: node linkType: hard -"unenv@npm:unenv-nightly@2.0.0-20241024-111401-d4156ac": - version: 2.0.0-20241024-111401-d4156ac - resolution: "unenv-nightly@npm:2.0.0-20241024-111401-d4156ac" +"unenv@npm:unenv-nightly@2.0.0-20241121-161142-806b5c0": + version: 2.0.0-20241121-161142-806b5c0 + resolution: "unenv-nightly@npm:2.0.0-20241121-161142-806b5c0" dependencies: defu: "npm:^6.1.4" ohash: "npm:^1.1.4" pathe: "npm:^1.1.2" ufo: "npm:^1.5.4" - checksum: 22c0d93fd72629d94f3a2730790cda817d63813b9d349147c611cfcc0e489416b5dba926e1b8e517e6c7a992016edb6267446a9c26a79c3bb7e90ec899be98e3 + checksum: 63e6cd83668abc950aa20cfe14cea13bd3922edb87706e2b9cddb1c867383690f2e60a68cce3191ca587ab7a5cb334fb2b9dfa776d33c4649f8841d3b2f608da languageName: node linkType: hard @@ -7821,21 +7911,21 @@ __metadata: languageName: node linkType: hard -"unique-filename@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-filename@npm:3.0.0" +"unique-filename@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-filename@npm:4.0.0" dependencies: - unique-slug: "npm:^4.0.0" - checksum: 6363e40b2fa758eb5ec5e21b3c7fb83e5da8dcfbd866cc0c199d5534c42f03b9ea9ab069769cc388e1d7ab93b4eeef28ef506ab5f18d910ef29617715101884f + unique-slug: "npm:^5.0.0" + checksum: 38ae681cceb1408ea0587b6b01e29b00eee3c84baee1e41fd5c16b9ed443b80fba90c40e0ba69627e30855570a34ba8b06702d4a35035d4b5e198bf5a64c9ddc languageName: node linkType: hard -"unique-slug@npm:^4.0.0": - version: 4.0.0 - resolution: "unique-slug@npm:4.0.0" +"unique-slug@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-slug@npm:5.0.0" dependencies: imurmurhash: "npm:^0.1.4" - checksum: cb811d9d54eb5821b81b18205750be84cb015c20a4a44280794e915f5a0a70223ce39066781a354e872df3572e8155c228f43ff0cce94c7cbf4da2cc7cbdd635 + checksum: d324c5a44887bd7e105ce800fcf7533d43f29c48757ac410afd42975de82cc38ea2035c0483f4de82d186691bf3208ef35c644f73aa2b1b20b8e651be5afd293 languageName: node linkType: hard @@ -7974,28 +8064,61 @@ __metadata: linkType: hard "which-boxed-primitive@npm:^1.0.2": + version: 1.1.0 + resolution: "which-boxed-primitive@npm:1.1.0" + dependencies: + is-bigint: "npm:^1.1.0" + is-boolean-object: "npm:^1.2.0" + is-number-object: "npm:^1.1.0" + is-string: "npm:^1.1.0" + is-symbol: "npm:^1.1.0" + checksum: ee4e4bcf0026aeeda1b28d005ddfcf1d8d6025d1cf04b2271f8dbbdd13df9357ba7da657ec2d886520bccf8d93d9535454e44f38f201c5461a2fe7c838b455de + languageName: node + linkType: hard + +"which-builtin-type@npm:^1.1.4": + version: 1.2.0 + resolution: "which-builtin-type@npm:1.2.0" + dependencies: + call-bind: "npm:^1.0.7" + function.prototype.name: "npm:^1.1.6" + has-tostringtag: "npm:^1.0.2" + is-async-function: "npm:^2.0.0" + is-date-object: "npm:^1.0.5" + is-finalizationregistry: "npm:^1.1.0" + is-generator-function: "npm:^1.0.10" + is-regex: "npm:^1.1.4" + is-weakref: "npm:^1.0.2" + isarray: "npm:^2.0.5" + which-boxed-primitive: "npm:^1.0.2" + which-collection: "npm:^1.0.2" + which-typed-array: "npm:^1.1.15" + checksum: 7cd4a8ccfa6a3cb7c2296c716e7266b9f31a66f3e131fe7b185232c16d3ad21442046ec1798c4ec1e19dce7eb99c7751377192e5e734dc07042d14ec0f09b332 + languageName: node + linkType: hard + +"which-collection@npm:^1.0.2": version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" + resolution: "which-collection@npm:1.0.2" dependencies: - is-bigint: "npm:^1.0.1" - is-boolean-object: "npm:^1.1.0" - is-number-object: "npm:^1.0.4" - is-string: "npm:^1.0.5" - is-symbol: "npm:^1.0.3" - checksum: 0a62a03c00c91dd4fb1035b2f0733c341d805753b027eebd3a304b9cb70e8ce33e25317add2fe9b5fea6f53a175c0633ae701ff812e604410ddd049777cd435e + is-map: "npm:^2.0.3" + is-set: "npm:^2.0.3" + is-weakmap: "npm:^2.0.2" + is-weakset: "npm:^2.0.3" + checksum: 3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2 languageName: node linkType: hard "which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15": - version: 1.1.15 - resolution: "which-typed-array@npm:1.1.15" + version: 1.1.16 + resolution: "which-typed-array@npm:1.1.16" dependencies: available-typed-arrays: "npm:^1.0.7" call-bind: "npm:^1.0.7" for-each: "npm:^0.3.3" gopd: "npm:^1.0.1" has-tostringtag: "npm:^1.0.2" - checksum: 4465d5348c044032032251be54d8988270e69c6b7154f8fcb2a47ff706fe36f7624b3a24246b8d9089435a8f4ec48c1c1025c5d6b499456b9e5eff4f48212983 + checksum: a9075293200db4fbce7c24d52731843542c5a19edfc66e31aa2cbefa788b5caa7ef05008f6e60d2c38d8198add6b92d0ddc2937918c5c308be398b1ebd8721af languageName: node linkType: hard @@ -8032,6 +8155,17 @@ __metadata: languageName: node linkType: hard +"which@npm:^5.0.0": + version: 5.0.0 + resolution: "which@npm:5.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: e556e4cd8b7dbf5df52408c9a9dd5ac6518c8c5267c8953f5b0564073c66ed5bf9503b14d876d0e9c7844d4db9725fb0dcf45d6e911e17e26ab363dc3965ae7b + languageName: node + linkType: hard + "word-wrap@npm:^1.2.5": version: 1.2.5 resolution: "word-wrap@npm:1.2.5" @@ -8039,15 +8173,15 @@ __metadata: languageName: node linkType: hard -"workerd@npm:1.20241106.1": - version: 1.20241106.1 - resolution: "workerd@npm:1.20241106.1" +"workerd@npm:1.20241106.2": + version: 1.20241106.2 + resolution: "workerd@npm:1.20241106.2" dependencies: - "@cloudflare/workerd-darwin-64": "npm:1.20241106.1" - "@cloudflare/workerd-darwin-arm64": "npm:1.20241106.1" - "@cloudflare/workerd-linux-64": "npm:1.20241106.1" - "@cloudflare/workerd-linux-arm64": "npm:1.20241106.1" - "@cloudflare/workerd-windows-64": "npm:1.20241106.1" + "@cloudflare/workerd-darwin-64": "npm:1.20241106.2" + "@cloudflare/workerd-darwin-arm64": "npm:1.20241106.2" + "@cloudflare/workerd-linux-64": "npm:1.20241106.2" + "@cloudflare/workerd-linux-arm64": "npm:1.20241106.2" + "@cloudflare/workerd-windows-64": "npm:1.20241106.2" dependenciesMeta: "@cloudflare/workerd-darwin-64": optional: true @@ -8061,16 +8195,16 @@ __metadata: optional: true bin: workerd: bin/workerd - checksum: 5a3fee9081af3ab40471248941c094703540ac2d338099825b782820545fd1a792a09f8eb0698870e61cefdc735cd30328d37298ea9a62cf25a4223adae11503 + checksum: a2c075e712d4b81e585665dec7675cf6ebcd7e757ffe9f01bc1d6b96c97c740d93523570bbb0de7a146d3df86c11132ab8c9b1aea09a2fae58f687466f926b1c languageName: node linkType: hard "wrangler@npm:^3.83.0": - version: 3.87.0 - resolution: "wrangler@npm:3.87.0" + version: 3.92.0 + resolution: "wrangler@npm:3.92.0" dependencies: "@cloudflare/kv-asset-handler": "npm:0.3.4" - "@cloudflare/workers-shared": "npm:0.7.1" + "@cloudflare/workers-shared": "npm:0.9.1" "@esbuild-plugins/node-globals-polyfill": "npm:^0.2.3" "@esbuild-plugins/node-modules-polyfill": "npm:^0.2.2" blake3-wasm: "npm:^2.1.5" @@ -8079,15 +8213,14 @@ __metadata: esbuild: "npm:0.17.19" fsevents: "npm:~2.3.2" itty-time: "npm:^1.0.6" - miniflare: "npm:3.20241106.0" + miniflare: "npm:3.20241106.2" nanoid: "npm:^3.3.3" path-to-regexp: "npm:^6.3.0" resolve: "npm:^1.22.8" - resolve.exports: "npm:^2.0.2" selfsigned: "npm:^2.0.1" source-map: "npm:^0.6.1" - unenv: "npm:unenv-nightly@2.0.0-20241024-111401-d4156ac" - workerd: "npm:1.20241106.1" + unenv: "npm:unenv-nightly@2.0.0-20241121-161142-806b5c0" + workerd: "npm:1.20241106.2" xxhash-wasm: "npm:^1.0.1" peerDependencies: "@cloudflare/workers-types": ^4.20241106.0 @@ -8100,7 +8233,7 @@ __metadata: bin: wrangler: bin/wrangler.js wrangler2: bin/wrangler.js - checksum: 9c9b768046e579e898dfd2ca73e0fb25eedd95cb729797871972d5101bbed2f186283d479d2f87459462c0486eed7462d2ad036449eeb01577f55b4731246073 + checksum: 2389a47e1fc4fce37502dfeecfa6c84f6f63191edaaa7824ee4777acdc3ce5fc5d2730cd9e0a8df87dcdca833a5b45c99a57be6ae35ccc12f72c4626303bfbed languageName: node linkType: hard @@ -8155,7 +8288,7 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.14.2, ws@npm:^8.18.0": +"ws@npm:^8.18.0": version: 8.18.0 resolution: "ws@npm:8.18.0" peerDependencies: @@ -8171,9 +8304,9 @@ __metadata: linkType: hard "xxhash-wasm@npm:^1.0.1": - version: 1.0.2 - resolution: "xxhash-wasm@npm:1.0.2" - checksum: 5ba899d9216d9897de2d61a5331b16c99226e75ce47895fc8c730bac5cb00e6e50856dd8f489c12b3012f0fc81b6894806b2e44d2eb3cc7843919793485a30d1 + version: 1.1.0 + resolution: "xxhash-wasm@npm:1.1.0" + checksum: 35aa152fc7d775ae13364fe4fb20ebd89c6ac1f56cdb6060a6d2f1ed68d15180694467e63a4adb3d11936a4798ccd75a540979070e70d9b911e9981bbdd9cea6 languageName: node linkType: hard @@ -8191,6 +8324,13 @@ __metadata: languageName: node linkType: hard +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416 + languageName: node + linkType: hard + "yaml@npm:~2.5.0": version: 2.5.1 resolution: "yaml@npm:2.5.1"