{"id":16012768,"url":"https://github.com/alexpovel/issuedigger","last_synced_at":"2025-03-17T20:31:36.671Z","repository":{"id":229823720,"uuid":"769845602","full_name":"alexpovel/issuedigger","owner":"alexpovel","description":"For your repository, issuedigger will notify authors of new issues about similar, previously submitted ones, saving manual digging. Implemented as a single, AI-enabled Cloudflare Worker.","archived":false,"fork":false,"pushed_at":"2024-03-26T10:59:55.000Z","size":371,"stargazers_count":13,"open_issues_count":11,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-15T00:35:55.659Z","etag":null,"topics":["cloudflare","cloudflare-ai","cloudflare-durable-objects","cloudflare-kv","cloudflare-queues","cloudflare-vectorize","cloudflare-workers","embeddings","github-app","github-integration","vector-database"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexpovel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-10T08:17:46.000Z","updated_at":"2025-02-26T17:42:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"d3d44812-0a58-420c-8242-c2ad39b9afc3","html_url":"https://github.com/alexpovel/issuedigger","commit_stats":null,"previous_names":["alexpovel/issuedigger"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexpovel%2Fissuedigger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexpovel%2Fissuedigger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexpovel%2Fissuedigger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexpovel%2Fissuedigger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexpovel","download_url":"https://codeload.github.com/alexpovel/issuedigger/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243885859,"owners_count":20363642,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloudflare","cloudflare-ai","cloudflare-durable-objects","cloudflare-kv","cloudflare-queues","cloudflare-vectorize","cloudflare-workers","embeddings","github-app","github-integration","vector-database"],"created_at":"2024-10-08T14:21:01.588Z","updated_at":"2025-03-17T20:31:36.359Z","avatar_url":"https://github.com/alexpovel.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# issuedigger (beta)\n\n*issuedigger* will [notify](https://github.com/alexpovel/issuedigger/issues/134) authors\nof new GitHub issues about similar, previously submitted ones, both open and closed:\n\n![issuedigger commenting screenshot](docs/images/issuedigger-comment.png)\n\nissuedigger helps maintainers and end users alike avoid having to dig through past\nissues (as many projects [request users\ndo](https://github.com/search?type=code\u0026q=path%3Aissue_template.md+similar) before\nsubmitting new ones). For example, in the above screenshot, the [issue titled\n*Airplanes*](https://github.com/alexpovel/issuedigger/issues/126) is *closed*: perhaps\nthe user finds a solution to their problem there? If successful, the new issue can be\nresolved before a second human is even involved.\n\nAs a side effect, the *network of related issues* (bugs, feature requests, ...), often\ntaking up rent-free space on maintainers' minds, can be automated and externalized,\nmaking it accessible to others. For example,\n[duplicates](https://github.com/alexpovel/issuedigger/issues/136) can be caught and\nlinked right away (notice the high similarity score to the above issue):\n\n![duplicate issue comment](docs/images/duplicate-issue.png)\n\nwhich\n[GitHub](https://docs.github.com/en/issues/tracking-your-work-with-issues/about-issues#integrated-with-github)\nwill [link\nback](https://github.com/alexpovel/issuedigger/issues/134#ref-issue-2206246746) from the\nmentioned, original issue automatically:\n\n![issue mention linkback](docs/images/issue-mention.png)\n\n## Trying it out\n\nBefore [installing](#installation) for your own use, feel free to kick issuedigger's\ntires by creating issues or issue comments in this repository!\n\n## Beta status\n\n\u003e [!WARNING]\n\u003e\n\u003e This application is of beta quality. It relies on several products which are\n\u003e themselves in beta ([Cloudflare Queues](https://developers.cloudflare.com/queues/),\n\u003e [Cloudflare Vectorize](https://developers.cloudflare.com/vectorize/), [Cloudflare\n\u003e Workers AI](https://developers.cloudflare.com/workers-ai/)). The project has [no\n\u003e tests](tests/README.md) (not without reason). Think of it as an excuse for playing\n\u003e with and learning new technology (TypeScript, \"AI\" (embeddings, vector storage, ...)\n\u003e and [Cloudflare's developer products](https://developers.cloudflare.com/)), leading to\n\u003e a minimum viable product made available for free, for your convenience.\n\u003e\n\u003e The embeddings are handled simplistically. It's unknown how useful they (and by\n\u003e extension, issuedigger's suggestions) are in real-world scenarios.\n\n### Costs\n\nRunning the infrastructure for issuedigger is cheap, but not free. The intention is to\nkeep it available indefinitely, but there is obviously a risk of shutdown at any time.\nThe app should not be too hard to spin up on your own account, as\n[`wrangler.toml`](wrangler.toml) contains all necessary infrastructure definitions\n(clone this repo, run `npx wrangler deploy` and fix errors about missing pieces until it\nworks...).\n\n## Installation\n\n1. Install the [GitHub App](https://github.com/apps/issuedigger) and grant it access to\n   the repositories you'd like the app on.\n\nThat's it! The following happens now:\n\n- issuedigger will notice your installation request and start backfilling items (issues\nand issue comments). Due to [request limitations in the GitHub\nAPI](https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28#primary-rate-limit-for-github-app-installations),\nthere's a limit to the number of items that will be retroactively made available on\ninitial installation. This should only affect large repositories.\n- after a while (think in the order of a handful of items per second), the\n  [database](https://developers.cloudflare.com/vectorize/) is populated\n- from now on, issuedigger will:\n  - comment once on newly opened issues, and anytime on\n  request ([comment `@issuedigger\n  dig`](https://github.com/alexpovel/issuedigger/issues/126#issuecomment-2018303228)[^1]).\n\n    (on initial installation, give it some time to populate its database before results\n  come up)\n  - index every single new item (issue and issue comment), making it available for similarity\n    search\n\n    Issue threads are treated as **single units**: the initial issue itself and all\n    comments (except ones related to issuedigger itself) will contribute to similarity\n    equally. As such, an issue body mentioning concept\n    [*A*](https://github.com/alexpovel/issuedigger/issues/131#issue-2205987723), with a\n    comment mentioning a (potentially entirely unrelated) concept\n    [*B*](https://github.com/alexpovel/issuedigger/issues/131#issuecomment-2018456611),\n    can later be\n    [suggested](https://github.com/alexpovel/issuedigger/issues/135#issuecomment-2018458230)\n    to users opening issues related to both *A* and/or *B*. This helps alleviate [XY\n    problems](https://xyproblem.info/).\n\n## Working principle\n\nFor a detailed overview, see [ARCHITECTURE.md](ARCHITECTURE.md).\n\n[^1]: Typing `@` will *not* start autocompletion, as it usually does for regular users. Mentioning apps [doesn't work that way](https://github.com/orgs/community/discussions/54188). Don't worry, your comment will still be picked up.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexpovel%2Fissuedigger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexpovel%2Fissuedigger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexpovel%2Fissuedigger/lists"}