Звіт у форматі JSON машиночитний
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 606525,
"has_wiki": false,
"homepage": null,
"languages": {
"Go": 695957,
"CSS": 2441,
"Shell": 2509,
"Dockerfile": 2011,
"JavaScript": 2545,
"TypeScript": 254039
},
"pushed_at": "2026-07-24T13:01:13Z",
"created_at": "2026-04-16T17:55:07Z",
"owner_type": "Organization",
"updated_at": "2026-07-24T13:02:28Z",
"description": "Offer your services.",
"is_archived": false,
"is_disabled": false,
"license_spdx": null,
"default_branch": "main",
"license_spdx_raw": null,
"primary_language": "Go",
"significant_languages": [
"Go",
"TypeScript"
]
},
"owner": {
"blog": "https://milo-os.com",
"name": "Milo OS",
"type": "Organization",
"login": "milo-os",
"company": null,
"location": "United States of America",
"followers": 11,
"avatar_url": "https://avatars.githubusercontent.com/u/278872061?v=4",
"created_at": "2026-04-24T04:03:06Z",
"is_verified": null,
"public_repos": 30,
"account_age_days": 93
},
"license": {
"state": "absent",
"spdx_id": null,
"raw_spdx": null,
"file_present": false,
"scorecard_found": false,
"profile_has_license": false
},
"activity": {
"releases": [
{
"tag": "v0.3.1",
"kind": "patch",
"published_at": "2026-06-22T16:44:18Z"
},
{
"tag": "v0.3.0",
"kind": "minor",
"published_at": "2026-06-05T19:15:06Z"
},
{
"tag": "v0.2.0",
"kind": "minor",
"published_at": "2026-06-01T22:45:17Z"
},
{
"tag": "v0.1.0",
"kind": "minor",
"published_at": "2026-06-01T19:29:33Z"
}
],
"recent_commits": [
{
"oid": "b9c74bbaa8b0a1f25e1f44ecc2dc3ebd398c339d",
"body": "…ontract-for-managed-services\n\nfeat(consumer): add non-destructive Suspend/Resume hooks for project suspension",
"is_bot": false,
"headline": "Merge pull request #59 from milo-os/55-integrate-once-suspendresume-c…",
"author_name": "Jose Szychowski",
"author_login": "JoseSzycho",
"committed_at": "2026-07-24T13:01:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d6e7d1b6dc21cc489f4d6b183f491e19d73904d7",
"body": "…-managed-services",
"is_bot": false,
"headline": "Merge branch 'main' into 55-integrate-once-suspendresume-contract-for…",
"author_name": "Jose Szychowski",
"author_login": "JoseSzycho",
"committed_at": "2026-07-24T12:51:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9bce65e6abbc55cb280824284804ceff2752f570",
"body": "Gate project deletion on provider teardown via a deprovisioning finalizer",
"is_bot": false,
"headline": "Merge pull request #58 from milo-os/feat/provider-teardown-finalizer",
"author_name": "Scot Schuchert-Wells",
"author_login": "scotwells",
"committed_at": "2026-07-24T08:49:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2de05cdc0c4921602c4602fd1b5e8c8d26ef7b9d",
"body": "…e hooks with a conformance test harness",
"is_bot": false,
"headline": "feat(consumer): implement standardized, non-destructive Suspend/Resum…",
"author_name": "Jose Szychowski",
"author_login": "JoseSzycho",
"committed_at": "2026-07-23T18:38:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ea0d514a08ad081cb2e0aca95a0ead52eb330dda",
"body": "…izer\n\nProvider teardown was best-effort and poll-based: when a project was\ndeleted, nothing held the deletion open until each provider serving it\nconfirmed it had torn down the resources it created on the project's\nbehalf. A hard project deletion could therefore complete while provider\nresources st\n[…]\nothing set no\nfinalizer and are unaffected; providers already implementing the teardown\nhook get the guarantee with no code change.\n\nCloses #57\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Gate project deletion on provider teardown via a deprovisioning final…",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-07-22T22:12:54Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "1719b40dd09fc9aaac6ececfb09346f00b7e93c7",
"body": "feat: consumer-scoped projection — engage consumer projects only while the service is enabled",
"is_bot": false,
"headline": "Merge pull request #38 from milo-os/feat/consumer-multicluster-provider",
"author_name": "Scot Schuchert-Wells",
"author_login": "scotwells",
"committed_at": "2026-07-22T20:50:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cc1ede438a84969b46c0cba66136e6e117ac13dc",
"body": "The /services list page renders its title via the datum-ui <PageTitle>\ncomponent, which emits a <span data-e2e=\"page-title\"> rather than an\nARIA heading. The demo scene asserted getByRole('heading', {name:\n/services/i}), which never matched and timed out, failing the UI Demo\nRecording job. Match the sibling services.spec.ts scene by locating\n[data-e2e=\"page-title\"] instead.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "test(ui): fix full-walkthrough demo locator for /services page title",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-07-22T15:38:44Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b75bf24f4774cf314a0d2ae23c1f412db3abbbc0",
"body": "…ate-a-project-platform-primitive\n\nfeat: propagate project suspension to ServiceConsumers, with an e2e suite to prove it",
"is_bot": false,
"headline": "Merge pull request #56 from milo-os/718-reversibly-suspend-and-reinst…",
"author_name": "Jose Szychowski",
"author_login": "JoseSzycho",
"committed_at": "2026-07-18T20:06:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "93bae72c21e0739db49c9ff2146e56e869960f64",
"body": "…y-suspend-and-reinstate-a-project-platform-primitive",
"is_bot": false,
"headline": "Merge branch 'feat/consumer-multicluster-provider' into 718-reversibl…",
"author_name": "Jose Szychowski",
"author_login": "JoseSzycho",
"committed_at": "2026-07-17T19:49:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "440619906876834bcc03479330f72f1ee6da6f91",
"body": "…rviceConsumer status conditions",
"is_bot": false,
"headline": "feat: propagate project suspension state to ServiceEntitlement and Se…",
"author_name": "Jose Szychowski",
"author_login": "JoseSzycho",
"committed_at": "2026-07-17T19:22:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cab26bc56cee0086427df0a94e52de22b6d137b3",
"body": null,
"is_bot": false,
"headline": "chore: upgrade go.miloapis.com/milo to v0.31.1",
"author_name": "Jose Szychowski",
"author_login": "JoseSzycho",
"committed_at": "2026-07-17T15:09:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6abb67f58f45d75a2debc168b082893324b3e5bf",
"body": null,
"is_bot": false,
"headline": "feat: follow latest billing tag",
"author_name": "Alex Savanovich",
"author_login": "savme",
"committed_at": "2026-07-17T12:03:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6562994915ca6783ee3de859533c8edc2c4e7495",
"body": "…y-suspend-and-reinstate-a-project-platform-primitive",
"is_bot": false,
"headline": "Merge branch 'feat/consumer-multicluster-provider' into 718-reversibl…",
"author_name": "Jose Szychowski",
"author_login": "JoseSzycho",
"committed_at": "2026-07-17T00:07:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3d1f21719e400e5d3fc08e60694bea7c67f034d5",
"body": "…tor Taskfile for automated environment setup",
"is_bot": false,
"headline": "feat: add e2e test suite for project suspension propagation and refac…",
"author_name": "Jose Szychowski",
"author_login": "JoseSzycho",
"committed_at": "2026-07-16T23:29:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1762dcd77383a010eda20439ce827e6a50c115b2",
"body": null,
"is_bot": false,
"headline": "feat: add e2esingle multicluster provider for e2e tests",
"author_name": "Jose Szychowski",
"author_login": "JoseSzycho",
"committed_at": "2026-07-16T23:29:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cb7ce46fc126447e6c57ad3ff63dfeabae2266b2",
"body": null,
"is_bot": false,
"headline": "feat: implement project suspension in service entitlement controller",
"author_name": "Jose Szychowski",
"author_login": "JoseSzycho",
"committed_at": "2026-07-16T23:27:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b2366d12757542dc5d0a6e723f05709633be7b2f",
"body": null,
"is_bot": false,
"headline": "feat: implement ProjectSuspensionPropagation controller",
"author_name": "Jose Szychowski",
"author_login": "JoseSzycho",
"committed_at": "2026-07-16T23:26:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1c356e14926b51fcd9dee8b2f36373f42e81eb17",
"body": "This fields indicates that the ServiceConsumer has been suspended",
"is_bot": false,
"headline": "feat: add suspended field",
"author_name": "Jose Szychowski",
"author_login": "JoseSzycho",
"committed_at": "2026-07-16T23:24:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4e9a0970caaa5de16473eedd331565980bbd5961",
"body": null,
"is_bot": false,
"headline": "feat: scope DeleteAllOf for namespaced resources",
"author_name": "Alex Savanovich",
"author_login": "savme",
"committed_at": "2026-07-16T16:45:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cccc92221056ec04c14ed6572155ddaa9fd203fc",
"body": "Needed to get the ProjectSuspensions API",
"is_bot": false,
"headline": "chore: bump go.miloapis.com/milo dependency to v0.31.0",
"author_name": "Jose Szychowski",
"author_login": "JoseSzycho",
"committed_at": "2026-07-16T14:50:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "30a3c3371c923c4e5662b6159845a312b1b39bd4",
"body": null,
"is_bot": false,
"headline": "chore: format code",
"author_name": "Jose Szychowski",
"author_login": "JoseSzycho",
"committed_at": "2026-07-16T14:48:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0707b911354eb3f929c4bb5ab6649d73af4e1e30",
"body": null,
"is_bot": false,
"headline": "feat: propagate client scheme to teardown",
"author_name": "Alex Savanovich",
"author_login": "savme",
"committed_at": "2026-07-16T11:25:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7e5685db005161032016072f6a3a036e311c396f",
"body": null,
"is_bot": false,
"headline": "feat: read services from a rootClient",
"author_name": "Alex Savanovich",
"author_login": "savme",
"committed_at": "2026-07-15T17:00:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e583dd04d2ccb2efb9c41ad5e8bb5e0d190ef236",
"body": null,
"is_bot": false,
"headline": "feat: implement ProviderRunnable on consumer provider",
"author_name": "Alex Savanovich",
"author_login": "savme",
"committed_at": "2026-07-15T14:57:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6fef50acf28d7c66122c3db16cf67b9e320ae7cd",
"body": null,
"is_bot": false,
"headline": "dep: bump go version in container",
"author_name": "Alex Savanovich",
"author_login": "savme",
"committed_at": "2026-07-14T15:09:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6119d5879347e01ab895bd4f5bdff2e8e23056ab",
"body": null,
"is_bot": false,
"headline": "dep: bump billing",
"author_name": "Alex Savanovich",
"author_login": "savme",
"committed_at": "2026-07-14T15:04:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a4773b41029f0a1ee6a472218cc5df23b7eb7eda",
"body": null,
"is_bot": false,
"headline": "ci: track go.mod version",
"author_name": "Alex Savanovich",
"author_login": "savme",
"committed_at": "2026-07-14T15:03:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dbf2bfb221f57570b72c174403721c515d31bcab",
"body": null,
"is_bot": false,
"headline": "ci: bump golangci lint version",
"author_name": "Alex Savanovich",
"author_login": "savme",
"committed_at": "2026-07-14T11:15:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fae0547b2f7f21bc0e85c7517725a52a6c8d98d5",
"body": null,
"is_bot": false,
"headline": "ci: bump go version in actions",
"author_name": "Alex Savanovich",
"author_login": "savme",
"committed_at": "2026-07-14T11:09:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3d2b6e956938c04eeefde49c701eca4193370a05",
"body": "Updates milo to latest version. This also pulls in multicluster-runtime\nv0.23.3, aligning with compute.",
"is_bot": false,
"headline": "deps: bump milo to v0.30.3 (multicluster-runtime to v0.23.3)",
"author_name": "Alex Savanovich",
"author_login": "savme",
"committed_at": "2026-07-14T11:01:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ef200bfa54afc09a0cfae9b60bd6dc4e56ca3361",
"body": null,
"is_bot": false,
"headline": "Merge branch 'main' into feat/consumer-multicluster-provider",
"author_name": "Alex Savanovich",
"author_login": "savme",
"committed_at": "2026-07-14T09:23:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "209f418ecf458d046090b3f01a4eb3830c24f7b3",
"body": null,
"is_bot": false,
"headline": "Merge branch 'main' into feat/consumer-multicluster-provider",
"author_name": "Alex Savanovich",
"author_login": "savme",
"committed_at": "2026-07-14T09:10:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6a3cddd298b0f62109333bf6c1caa8168269ff0c",
"body": null,
"is_bot": false,
"headline": "Merge pull request #52 from milo-os/feat/pkg-cmd-services",
"author_name": "Scot Schuchert-Wells",
"author_login": "scotwells",
"committed_at": "2026-07-14T00:52:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a002414738b73bffa75313facd31d2fa4180f40f",
"body": "ServicesCommandOptions.Project was a static string captured when the host\nCLI built the command tree, before cobra parsed any flags. A --project flag\non the actual invocation was therefore ignored. Make it a func() (string,\nerror) resolver called at RunE time, mirroring CatalogRESTConfig/\nProjectRESTConfig, so live scope (including a parsed --project) is reflected.",
"is_bot": false,
"headline": "fix(cmd): resolve Project lazily so a host --project flag takes effect",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-07-14T00:01:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e594afc9fae945c683c182863db3c4b53049d8d6",
"body": "docs: product enhancement doc for the services CLI",
"is_bot": false,
"headline": "Merge pull request #54 from milo-os/feat/enablement-cli-docs-standalone",
"author_name": "Scot Schuchert-Wells",
"author_login": "scotwells",
"committed_at": "2026-07-13T23:40:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "29666be67d415cbd628634d2aa24bcf30eaf49f5",
"body": "Add pkg/activation: a shared SDK for service enablement",
"is_bot": false,
"headline": "Merge pull request #51 from milo-os/feat/pkg-activation",
"author_name": "Scot Schuchert-Wells",
"author_login": "scotwells",
"committed_at": "2026-07-13T23:40:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5bbf63519b48e20bc689a43dd3c96e2e776fa9d0",
"body": "Uses the datum-cloud/enhancements KEP-style template. Explains why a\nconsistent, correct enablement experience is a platform-level gap\ntoday (every consumer-facing surface re-derives what an entitlement's\nstate means on its own), what the proposed services command group and\nauto-enrollment check look like for a consumer, and how they fit\nalongside the ServiceEntitlement/Service APIs and service-catalog#51/#52.",
"is_bot": false,
"headline": "docs(enhancements): add enhancement doc for the services CLI experience",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-07-13T23:34:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e30920134e00291514661a96b5d7c9ab4e5e6b87",
"body": "Adds NewServicesCommand (list/enable/status subcommands) so a host CLI\ncan offer datumctl services list/enable/status instead of every plugin\nhand-rolling its own access command. Mirrors activity/pkg/cmd's\nOptions-struct + New*Command constructor conventions, but takes two\nlazy *rest.Config resolver\n[…]\nt the project's entitlements via activation.JoinCatalog; enable\nand status resolve a <name> argument against the catalog (canonical\nname, then object name) before driving activation.Requester/Observe.",
"is_bot": false,
"headline": "feat(cmd): add pkg/cmd, the services CLI command group",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-07-13T23:23:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "08b2d8d991c2b93e50e6176d69673bf9d60991c3",
"body": "…fields\n\nConfig duplicated three of ServiceInfo's four identity fields and was the\nonly way to build one, while ServiceInfo.Description and .EnablementMode\nwere populated but read nowhere and Config.SupportURL could never be set —\nits two guarded message branches were permanently dead.\n\nDelete Confi\n[…]\nor: the not-requested gate prompt\nnow promises provider approval only for a GatedByProvider service and\nimmediate enablement otherwise, and the status view prints the service\ndescription when present.",
"is_bot": false,
"headline": "refactor(activation): fold Config into ServiceInfo and wire its dead …",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-07-13T23:21:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "28462859fb5d77fc89c713aab3cc78bfbd2036fe",
"body": "golangci-lint's errcheck flags unchecked writes to IOStreams.Err (a\nbest-effort progress/status stream where a write failure has nothing\nuseful to recover into); explicitly discard those returns. Also point\nthe join end-to-end test at newCatalogFake instead of hand-building the\ncatalog client, so the helper isn't reported unused.",
"is_bot": false,
"headline": "fix(activation): satisfy errcheck and use the newCatalogFake helper",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-07-13T20:46:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7758dc96544d0c1053878ea1bfb0155dab0c3919",
"body": "…ment\n\nCLI tools that let a consumer request and check access to a Datum service\n(datumctl compute access today, more to follow) each hand-rolled their own\ncopy of the ServiceEntitlement state machine, drifting out of sync with\nwhat the API actually does. Two real bugs shipped that way: preferring t\n[…]\nll be closed once\nthis lands, and is a prerequisite for datum-cloud/compute#113. A follow-up\nPR in this repo will add the `datumctl services` CLI commands (list/enable/\nstatus) on top of this package.",
"is_bot": false,
"headline": "feat(activation): add pkg/activation, a shared SDK for service enable…",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-07-13T20:27:10Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1b5d53f6bad05fc435fe0a0060ca884fd28ce40e",
"body": "feat(client): generated typed clientset for services.miloapis.com/v1alpha1",
"is_bot": false,
"headline": "Merge pull request #50 from milo-os/feat/generated-clientset",
"author_name": "Scot Schuchert-Wells",
"author_login": "scotwells",
"committed_at": "2026-07-10T17:33:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ef9a1b2c5b200513ffc04afa13009390c87a9f1c",
"body": "…alpha1\n\nConsumers of the services API (CLIs, SDKs) hand-roll a controller-runtime\nclient and register the scheme themselves. Add a generated typed clientset —\nand its fake for tests — so they get services.miloapis.com/v1alpha1 access\nwith no client or scheme boilerplate. The datumctl compute activa\n[…]\nceEntitlement Ready condition type and reason constants\n from api/v1alpha1 so clients branch on named constants instead of\n string-matching the controller output; the controller now references them.",
"is_bot": false,
"headline": "feat(client): generate a typed clientset for services.miloapis.com/v1…",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-07-10T00:21:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "cb37826229981f358636caa9811dcb0f6af4b3b2",
"body": "…-matching\n\nfix: activate the customer's entitlement when a gated service request is approved",
"is_bot": false,
"headline": "Merge pull request #43 from milo-os/fix/issue-42-consumer-entitlement…",
"author_name": "Scot Schuchert-Wells",
"author_login": "scotwells",
"committed_at": "2026-06-15T21:29:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3bf139bb8a70293406529bc6dcf8e0cab3137022",
"body": "docs: remove implemented downstream-push-architecture enhancement doc",
"is_bot": false,
"headline": "Merge pull request #34 from milo-os/docs/remove-downstream-push",
"author_name": "Scot Schuchert-Wells",
"author_login": "scotwells",
"committed_at": "2026-06-15T15:21:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "76c5d9f8416e45bd17eace495baedfeb6b3f3ad7",
"body": "Only engage consumer projects that have actually enabled the service",
"is_bot": false,
"headline": "Merge pull request #31 from milo-os/docs/consumer-multicluster-provider",
"author_name": "Scot Schuchert-Wells",
"author_login": "scotwells",
"committed_at": "2026-06-15T15:13:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3e945f83ee4bc27ad4bd90973c98f1a7ce4b166e",
"body": null,
"is_bot": false,
"headline": "Merge branch 'main' into fix/issue-42-consumer-entitlement-matching",
"author_name": "Scot Schuchert-Wells",
"author_login": "scotwells",
"committed_at": "2026-06-15T14:32:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df0eed72e7923c0c0fb106c29179dbc8a0e25a5d",
"body": "…ounded pending latency\n\nTwo hardening changes to the ServiceEntitlement reconciler:\n\nThe CreateOrUpdate mutate fn unconditionally assigned spec.serviceRef\nand spec.consumerProjectRef on every reconcile, but the ServiceConsumer\nwebhook makes both fields immutable after creation for everyone,\nincludi\n[…]\ns dedup scan (full list plus loop on\nstatus.serviceName) to the same indexed lookup so all entitlement\nmatching goes through the field selector.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(controller): harden entitlement reconcile against wedging and unb…",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-06-11T14:21:27Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "9357c3a09c10737128b2342b98d24c31746fb373",
"body": "…ace relay failures\n\nSince ec1f0e5 (PR #37) the entitlement reconciler mirrors the caller's\nverbatim serviceRef (e.g. \"compute\") into the ServiceConsumer spec and\nstamps the canonical service name (e.g. \"compute.miloapis.com\") on\nstatus.serviceName of both the entitlement and the consumer. The\nServi\n[…]\nse, and a no-match case\nasserting the error. The fake-client builder registers the new index so\nfield-selector lists work under test.\n\nFixes #42\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(controller): match entitlement by canonical service name and surf…",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-06-11T14:21:26Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "8ec617970221ea7fd96fe0615712393dc6f81809",
"body": null,
"is_bot": false,
"headline": "Merge pull request #41 from milo-os/feat/quota-limit-display-metadata",
"author_name": "Yahya Fakhroji",
"author_login": "yahyafakhroji",
"committed_at": "2026-06-11T09:59:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ded8902ce5a7cce65ac7d89b9c070304204c62ef",
"body": "…ration\n\nAdd DisplayName/Description to QuotaLimitSpec and stamp them as\nkubernetes.io/display-name and kubernetes.io/description annotations on the\nResourceRegistration objects produced by the quota fan-out. Portals and\ndashboards (e.g. cloud-portal Quotas) can then render human-readable names\nand \n[…]\n-out sets the annotations when present, omitting\n them entirely when unset.\n- crd: regenerated schema for the new fields.\n- test: assert annotations propagate and are absent without display metadata.",
"is_bot": false,
"headline": "feat(quota): propagate quota limit display metadata to ResourceRegist…",
"author_name": "Yahya Fakhroji",
"author_login": "yahyafakhroji",
"committed_at": "2026-06-11T01:12:55Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "079499e834543e081f5e26a5c9f3137cec2c6fad",
"body": "feat(quota): materialize org-scoped default grants from ServiceConfiguration",
"is_bot": false,
"headline": "Merge pull request #40 from milo-os/feat/org-scoped-default-grants",
"author_name": "Matt Jenkinson",
"author_login": "mattdjenkinson",
"committed_at": "2026-06-10T12:31:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5742a2ce35e0e5766400805df05c7f68cf6c8e60",
"body": "…gurations\n\nThe reconciler previously skipped every non-Published configuration in\nthe desired-set walk, which sent its grants into the prune sweep at the\nend of Reconcile. That over-prunes Deprecated configurations: the\ntype-level contract says \"existing references continue to work\" but\nthe impleme\n[…]\n the\n quota disappearing is consistent; Retired is terminal.\n\nTwo new tests cover the Deprecated paths (preserves existing,\nsuppresses new issuance).\n\nAddresses review feedback from @savme on PR #40.",
"is_bot": false,
"headline": "fix(controller): preserve existing grants for Deprecated ServiceConfi…",
"author_name": "Matt Jenkinson",
"author_login": "mattdjenkinson",
"committed_at": "2026-06-09T13:57:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ebc234ac1c47685466f6ff46fb883712aea01ed9",
"body": "…uration\n\nAdd OrganizationDefaultsReconciler. ServiceConfiguration's\ndefaultLimit field has always declared the per-consumer floor for a\nquota metric, but the existing fan-out only emits ResourceGrants for\nlimits whose ConsumerType.Kind is Project — Organization-typed limits\nwere silently skipped. T\n[…]\n\nThe existing multi-billing-accounts-feature-grant policy keeps\nemitting an override grant of 99 in milo-system, so opted-in orgs\ncontinue to receive an effective cap of 100 (1 default + 99 override).",
"is_bot": false,
"headline": "feat(quota): materialize org-scoped default grants from ServiceConfig…",
"author_name": "Matt Jenkinson",
"author_login": "mattdjenkinson",
"committed_at": "2026-06-08T10:39:49Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8e759a28b6e787720edd2dc201b81d06a280cbfe",
"body": "feat(billing): support per-metric dimensions in ServiceConfiguration",
"is_bot": false,
"headline": "Merge pull request #39 from milo-os/feat/metric-dimensions",
"author_name": "Kevin",
"author_login": "kevwilliams",
"committed_at": "2026-06-05T19:14:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0516a9cdd57b0f811c05bafd967d6b568b031893",
"body": "Add a `dimensions` field to ServiceConfiguration's MetricSpec and fan it\nout to MeterDefinition.spec.measurement.dimensions. The billing central\nvalidator quarantines usage events whose data.dimensions keys aren't\ndeclared on the meter, so producers cannot attach a dimension (e.g.\n`model` for per-mo\n[…]\nptional, MaxItems=32, atomic list)\n- billing_fanout copies metric.Dimensions into Measurement.Dimensions\n- regenerated deepcopy + CRD manifests\n- unit tests for pass-through and the no-dimensions case",
"is_bot": false,
"headline": "feat(billing): support per-metric dimensions in ServiceConfiguration",
"author_name": "Kevin",
"author_login": "kevwilliams",
"committed_at": "2026-06-05T19:07:06Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6a9e0286de24016e7d564a07547013af4f32e494",
"body": "…rator config\n\nWire the catalog to the consumer provider behind an opt-in\nconsumerScopedProjection config block (nil = off = today's all-projects\nbehavior, byte-for-byte). When enabled, LocationBindingReconciler runs on the\nconsumer-scoped manager and the provider engages consumer projects by active\n[…]\ncluster;\n exercising the path needs a multicluster harness)\n- Dockerfile copies pkg/ so the binary build resolves the new package\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(integration): gate consumer-scoped projection behind ServicesOpe…",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-06-04T20:46:24Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "61714465ae42c852700d4220888ed0dcd9715cab",
"body": "…rovider\n\nAdd a reusable provider at pkg/multicluster-runtime/consumer that engages a\nconsumer project's control plane only while it has at least one active\nServiceConsumer for one of the operator's services, and disengages — tearing\ndown the resources projected there — when the last one goes away.\n\n[…]\n engaged-cluster + teardown-failure Prometheus metrics; package docs\n\nOperator-agnostic; the service catalog is the first adopter.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(consumer): add consumer-scoped multicluster-runtime projection p…",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-06-04T20:46:24Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "35b35de461510a8b162bdf45f96a36875754dc18",
"body": "…t finalize\n\nThe shared, hash-named ServiceConsumer (keyed on service + consumer\nproject) can be referenced by multiple ServiceEntitlements — e.g. a direct\nentitlement and a dependency entitlement for the same service.\nreconcileDelete previously deleted it unconditionally on any entitlement\nfinalize\n[…]\nlist the consumer project's entitlements, skip those being\ndeleted, and delete the consumer only when none remain for the service.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(controller): reference-count ServiceConsumer delete on entitlemen…",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-06-04T20:46:24Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "2b41463939816f4f986ce9dd6e7e9acc4322d628",
"body": "Propose a reusable library that engages a consumer project's control plane\nonly while it has an active consumer for the operator's service, and cleans\nup the operator's projected resources when the last consumer goes away.\nCovers the engagement/cleanup model, the operator-declared managed-resource\nc\n[…]\ntion.\n\nIncludes C4-PlantUML diagrams (engagement/cleanup + two-manager topology)\nrendered with the datum-cloud enhancements theme.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: add consumer multi-cluster runtime provider enhancement",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-06-04T03:35:51Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "dc7551cf8fc0d8d5d7141a38b3e7208f4f949983",
"body": "…ignment\n\nService enablement: surface the canonical service name and keep enablement from getting stuck",
"is_bot": false,
"headline": "Merge pull request #37 from milo-os/fix/serviceconsumer-serviceref-al…",
"author_name": "Scot Schuchert-Wells",
"author_login": "scotwells",
"committed_at": "2026-06-04T02:10:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3bd2ecfe1733eb42bbecb2b259c4534e143cc213",
"body": null,
"is_bot": false,
"headline": "Merge branch 'main' into fix/serviceconsumer-serviceref-alignment",
"author_name": "Scot Schuchert-Wells",
"author_login": "scotwells",
"committed_at": "2026-06-04T00:45:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ec1f0e5c701a03090dcd24bad117a1fa89274367",
"body": "… on status.serviceName\n\nThe reconciler wrote the resolved canonical serviceName into the immutable\nServiceConsumer.spec.serviceRef. This diverged from the convention\nServiceEntitlement already uses — spec holds the caller's ref; status.serviceName\nholds the resolved canonical — and wedged reconcili\n[…]\ncarrying the canonical value in spec.serviceRef must be\ndeleted and recreated to migrate (serviceRef is immutable).\n\nRefs #33, #36\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(serviceconsumer): mirror entitlement serviceRef; expose canonical…",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-06-04T00:38:25Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "310ca9d96108a32a3704c85ebb458e70d375fbeb",
"body": "Private beta service enablement — access requests, approvals, and quota provisioning",
"is_bot": false,
"headline": "Merge pull request #33 from milo-os/feat/private-beta-backend",
"author_name": "Scot Schuchert-Wells",
"author_login": "scotwells",
"committed_at": "2026-06-03T22:40:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ef3a87b02e37f9d315aaecb5626c8294b1410258",
"body": "The downstream push (services operator applying billing MeterDefinition /\nMonitoredResourceType) is implemented, so the point-in-time design/plan doc\nno longer earns its keep. Remove it and clean up the five inbound links in\nservice-enablement-architecture.md and service-enablement.md, inlining a\none-line description of the push pattern where the prose relied on it.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: remove downstream-push-architecture enhancement doc",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-06-03T20:43:36Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f03704c313841e59010f505ab8560c460f9dce55",
"body": "…consumer webhook/RBAC\n\nBackend half of the private-beta service-enablement work, split out of the\nUI PR (#17) into its own change off main. Everything that is not the React UI.\n\nQuota provisioning\n- Provision one per-project ResourceGrant per published quota limit when a\n ServiceEntitlement become\n[…]\n\n objects are not orphaned; drop the legacy value next release.\n\n- Multicluster provider plumbing; e2e overlay and seed-dev data.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: entitlement quota provisioning, canonical-name resolution, and …",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-06-03T20:29:08Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7b71613245e1e7a3155382a15eaf0d32aad2d0a8",
"body": "Automatically show consumers which locations are available when they enable a service",
"is_bot": false,
"headline": "Merge pull request #29 from milo-os/feat/location-binding-reconciler",
"author_name": "Kevin",
"author_login": "kevwilliams",
"committed_at": "2026-06-01T22:44:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "62e91f870110c3a9f142bdf5c024473af86962c9",
"body": "The Milo multicluster provider runs a \"projectcontrolplane\" controller\nthat watches resourcemanager.miloapis.com/Project to discover project\ncontrol planes. In e2e that CRD is absent and the controller-manager\nServiceAccount also lacks list/watch on projects, so the informer never\nsyncs. After the ~\n[…]\n.\") — the human-friendly\nmessage refactor changed the text but not the test; the crash-loop had\nbeen masking this stale assertion.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(e2e): stop manager crash-loop by granting Project RBAC + CRD",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-06-01T21:58:41Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "1f9ba10b90d105758fbd6d82e2c58af6b421b897",
"body": null,
"is_bot": false,
"headline": "Merge branch 'main' into feat/location-binding-reconciler",
"author_name": "Scot Schuchert-Wells",
"author_login": "scotwells",
"committed_at": "2026-06-01T21:15:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "835b3f10e55c746e92a21aacbe2f5ff76a53b746",
"body": "Add product overview for the service catalog",
"is_bot": false,
"headline": "Merge pull request #19 from milo-os/docs/service-catalog-overview",
"author_name": "Kevin",
"author_login": "kevwilliams",
"committed_at": "2026-06-01T19:17:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c1eb006865d411da7b48835709a761adbbc7220d",
"body": "Let service operators declare where their service is deployed and ready",
"is_bot": false,
"headline": "Merge pull request #25 from milo-os/feat/service-availability",
"author_name": "Kevin",
"author_login": "kevwilliams",
"committed_at": "2026-06-01T19:16:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e45533d96ea0efbfba2a651c36c3eead2528db99",
"body": "…econciler",
"is_bot": false,
"headline": "Merge branch 'feat/service-availability' into feat/location-binding-r…",
"author_name": "Kevin",
"author_login": "kevwilliams",
"committed_at": "2026-06-01T19:15:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9d1fd78f1ffceee665ad1e62a04059bca92c5555",
"body": "…lity\n\n# Conflicts:\n#\tconfig/base/webhook/kustomization.yaml",
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/main' into feat/service-availabi…",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-06-01T18:18:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0926e863cf67bb3eebd1d78fec338db0c06afd7b",
"body": "…ents\n\nfix: restore ServiceEntitlement & ServiceConsumer admission on the control plane",
"is_bot": false,
"headline": "Merge pull request #30 from milo-os/fix/webhook-clientconfig-replacem…",
"author_name": "Scot Schuchert-Wells",
"author_login": "scotwells",
"committed_at": "2026-06-01T18:13:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1d07636d63734764639d450aa9d20bf8f2a1753a",
"body": "The dev overlay redirects webhooks to host.docker.internal:9443 for a\ncontroller running on the host, but the move/remove ops only touched\n`/webhooks/0`, so only the `service` resource's webhooks worked locally;\ncreating a ServiceEntitlement/ServiceConsumer/etc. hit a dead in-cluster\nService. Conver\n[…]\nrge\npatches (service: null drops the mutually-exclusive service block), so\nlocal dev covers every webhook and survives reordering.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(webhook): key dev URL rewrite by webhook name, not index",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-29T18:47:58Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "58cca211e96d5374d1452ae8b7fa52e88f9b1d16",
"body": "The validating/mutating webhook clientConfig service name and namespace\nwere rewritten from controller-gen's `webhook-service`/`system`\nplaceholders to `services-webhook`/`services-system` with index-based\nJSON6902 patches (`/webhooks/N/...`). The index list drifted out of sync\nwhen webhooks were ad\n[…]\nbhook clientConfig.\n\nRemoves the now-redundant kustomizeconfig.yaml nameReference (no Service\nexists in this bundle to anchor it).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(webhook): rewrite clientConfig via wildcard replacements",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-29T18:47:58Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b15da03e4a93675bb62de18e4e2edc2ccbfb9e90",
"body": "Rewrite the user-facing detail of every validation/admission message in\ninternal/validation and the ServiceConsumer webhook so callers running\nkubectl/datumctl apply get plain, actionable explanations instead of\ninternal jargon (DNS-1123, \"is immutable\", \"fan out\", spec field-path\nreferences, raw SA\n[…]\nused reasonConsumerPending constant (dead code).\nUpdates the two dependency-cycle test assertions to match the new\n\"loop\" wording.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor: make admission/validation messages human-friendly",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-29T03:06:37Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "809b6c6e4d919bf9c834359459087c8ad09c638d",
"body": "Rewrite every status condition Message across the service-catalog\nreconcilers (Service, ServiceConfiguration, ServiceAvailability,\nServiceEntitlement, ServiceConsumer, LocationBinding) to use plain,\nproduct-focused language for service providers and consumers reading\nthem via kubectl/datumctl descri\n[…]\n names) and raw Go errors from messages; Reason tokens are\nunchanged so automation stays stable. Raw errors remain in logs/events.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor: make status condition messages human-friendly",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-29T02:53:10Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5c68c017eb49812d7f200155b84594ad2c02d1f8",
"body": "…nding\n\nThe LocationBindingReconciler projected bindings without spec.topology, so\ndownstream consumers (compute's workload webhook) computed zero valid city\ncodes and rejected every location-scoped deploy. The reconciler already\nfetches the referenced Location for the readiness gate, so copy its\nsp\n[…]\nys are not in the\nnetworking.datumapis.com LocationBinding schema and were silently stripped;\nthe canonical home is spec.topology.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(locationbinding): mirror Location spec.topology onto projected bi…",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-29T02:28:17Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "86b2bd16e7e7585fdf31654afea3a1b1b05fec75",
"body": "The staging project `owner` role inherits\n`services.miloapis.com-entitlement-admin` (infra commit 2582cbf), but\nthat role was never defined — service-catalog only shipped\n`-entitlement-viewer`. Milo's Role controller treats an unresolved\ninherited role as an all-or-nothing failure: the owner role's \n[…]\n+ serviceconsumers) and adds\nserviceentitlements.{create,update,patch,delete} so project owners can\nadminister their entitlements.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(iam): add services.miloapis.com-entitlement-admin role",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-29T01:56:19Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ebd3dbe2de739e3550b919d989648db9e4aacd95",
"body": "The ServiceConsumer validating webhook decided whether a caller could\nwrite the full spec (vs. spec.approval only) by string-matching the\nusername in IsServicesControllerCaller (system:serviceaccount: prefix or\na \"services-controller\" substring). The controller actually authenticates\nas system:contr\n[…]\n permission on the serviceconsumer\n ProtectedResource (registers the OpenFGA relation) and grant it in the\n services admin role.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: authorize ServiceConsumer writes by permission, not username",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-28T22:52:23Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d321dbac54f25c32143552b16429959a7da14b12",
"body": "The Milo multicluster provider created each engaged project cluster\nwithout a scheme, so its cache fell back to the client-go global scheme,\nwhich lacks the services.miloapis.com/v1alpha1 types. Every\nServiceEntitlement, ServiceConsumer, and LocationBinding watch then\nfailed in a tight retry loop wi\n[…]\nd engaged a\nproject.\n\nPass the operator scheme through Options.ClusterOptions so the\nper-project cluster caches can map our types.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: register app scheme on engaged project clusters",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-28T22:23:00Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "652f149ff2532e2837ef01f0957690e2e8609b97",
"body": "Location is now cluster-scoped in the platform\n(datum-cloud/network-services-operator#171), so the namespace field on\nLocationRef no longer carries meaning. Remove it from the API type,\nregenerate the ServiceAvailability CRD/deepcopy, fetch Locations by name\nonly in the ServiceAvailability and LocationBinding reconcilers, and drop\nthe field from samples and test fixtures.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: drop Namespace from LocationRef (Location is cluster-scoped)",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-28T16:38:03Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9c61b6fe7bb37b84452281c6392d10a7a82ba249",
"body": "Project VCPs are themselves the isolation boundary, so namespaces add\nno value. Write LocationBinding as cluster-scoped (matching\nServiceEntitlement and ServiceConsumer): drop the projectBindingNamespace\n\"default\" workaround, stop setting a namespace on projected objects, and\nremove the namespace from List/Get calls. The e2e CRD switches to\nscope: Cluster.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: make LocationBinding cluster-scoped within project VCPs",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-28T16:38:03Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "0d6cdae03f70b53b04754b130f97cd12d9045200",
"body": "… topology map\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: revert incorrect field-path changes; NSO Location uses v1alpha +…",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-28T16:38:03Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4f553921455755b192d2010cdfb367866a47256b",
"body": "Cross-PR review against the milo networking types (milo-os/milo#625):\n\n- The Location and LocationBinding GVKs used apiVersion v1alpha; the milo\n types define v1alpha1. Fix both (Location GVK is shared with the\n ServiceAvailability reconciler) and the e2e LocationBinding CRD.\n- extractLocationFiel\n[…]\npec.topology map with\n topology.datum.net/* keys; the Location type exposes spec.city and\n spec.region as direct fields. Read those directly.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: correct networking GVK version and Location city/region paths",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-28T16:38:03Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "34263ca8143d180d552ce76fdea87c15f7faf587",
"body": "Project platform Locations into entitled projects as consumer-facing\nLocationBinding objects, combining the three location gates:\n\n gate 1: Location class in active ServiceConfiguration supportedClasses\n gate 2: Location.status.conditions[Ready]=True\n gate 3: ServiceAvailability.status.conditions\n[…]\n is not Available get no binding, and\norphaned bindings are pruned. Adds RBAC, main.go wiring, and a hand-authored\nLocationBinding CRD for e2e.\n\nCo-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: add LocationBindingReconciler (locations Phase 1)",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-28T16:38:03Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "9e33a72a3701da5782cd45d758db946385377ec0",
"body": "…bility\n\nAdding vserviceavailability.kb.io inserted a new webhook alphabetically\nbetween vservice and vserviceconfiguration, shifting vserviceconfiguration\nfrom index 1 to index 2. The existing patches only covered indices 0-1, so\nvserviceconfiguration (and all subsequent webhooks) retained the controller-gen\nplaceholder service name/namespace and broke e2e tests.\n\nExtend the ValidatingWebhookConfiguration patch to cover all 5 indices.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: patch all validating webhook indices after adding vserviceavaila…",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-28T16:37:58Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b87153b41e579ef300a171e4fce780fa447f1a61",
"body": "Introduces the ServiceAvailability resource type, enabling service providers\nto express per-location availability as a first-class platform primitive.\n\n- ServiceAvailability (cluster-scoped) with spec.serviceRef + spec.locationRef\n- Three-gate reconciler: Service published → Location exists → Locati\n[…]\nocation filtering\n- IAM roles, discovery policy, and ProtectedResource config\n- Design doc: docs/enhancements/locations-platform-primitive.md\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: add ServiceAvailability CRD and controller",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-28T16:37:58Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7f34a94d440d4eb2e5b79c32b601886a4b505d2b",
"body": "Explains that Services and ServiceConfigurations are global platform\nresources owned by producer projects, while ServiceEntitlements are\nscoped to consumer projects and ServiceConsumers appear in the\nprovider's project.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: add Projects and Ownership section to overview",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-28T16:25:02Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "659d7b9b8410effb255115d71d3dcbf60bede57b",
"body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: use descriptive link text instead of file paths",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-28T16:25:02Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b3a88ed42acddf6efd1aac8a407b61a33b7bb9e5",
"body": "The previous README tried to be both a product overview and an\nengineering reference. Now that docs/overview.md covers the product\ncontext, the README can focus on orientation: what this repo is, where\nto read more, and how to run it.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: slim README down to a thin landing page",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-28T16:25:02Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d6097a526069a58b89dc12a173631787d63fea5c",
"body": "Adds docs/overview.md explaining what the service catalog is, how it\nfits into the Milo platform, the core resources and their relationships,\nthe service lifecycle, and example flows for providers and consumers\n(including a private beta gated-access walkthrough).\n\nLinks the new doc from README.md under Further reading.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: add product overview for the service catalog",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-28T16:25:02Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f8aeca1538798f055083849506ff9dd28a69a272",
"body": "feat: skip service configuration prefix validation during dry-run",
"is_bot": false,
"headline": "Merge pull request #28 from milo-os/fix/failing-dry-run-validation",
"author_name": "Jose Szychowski",
"author_login": "JoseSzycho",
"committed_at": "2026-05-27T22:11:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "42017e966557c4fd36412b818bc23c2d073cf7bc",
"body": "…uests\n\nDry-run request should not depend on the cluster state",
"is_bot": false,
"headline": "feat: skip service configuration prefix validation during dry-run req…",
"author_name": "Jose Szychowski",
"author_login": "JoseSzycho",
"committed_at": "2026-05-27T21:36:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "712fcec79443cf5e93e656f6e9f84b81dcc6a31b",
"body": "fix(ci): publish container as service-catalog to match kustomize bundle",
"is_bot": false,
"headline": "Merge pull request #26 from milo-os/fix/publish-image-name-rename",
"author_name": "Kevin",
"author_login": "kevwilliams",
"committed_at": "2026-05-27T17:41:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "80b8945b5aabc0dfd823fc15cd0c029e4e134c16",
"body": "The repo rename in 48fc8a3 updated the kustomize bundle reference and\nmanager image path, but missed the image-name input on the docker\npublish job — so the container kept publishing as\nghcr.io/milo-os/services:<tag> while the kustomize bundle was patched\nto reference ghcr.io/milo-os/service-catalog\n[…]\n, an image that was\nnever produced.\n\nResult: any cluster pulling the renamed bundle hits ImagePullBackOff\non the controller pod. Align the publish job's image-name so both\nartifacts use the same name.",
"is_bot": false,
"headline": "fix(ci): publish container as service-catalog to match kustomize bundle",
"author_name": "Kevin",
"author_login": "kevwilliams",
"committed_at": "2026-05-27T17:31:32Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "866abf86189163c8adb90e0c8dd19aba76087162",
"body": "feat(iam): add entitlement-viewer and approver roles",
"is_bot": false,
"headline": "Merge pull request #22 from milo-os/feat/staff-iam-roles",
"author_name": "Kevin",
"author_login": "kevwilliams",
"committed_at": "2026-05-27T14:40:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b8c2715f60be3ca0339abc421c19b554cd24e486",
"body": "…eref",
"is_bot": false,
"headline": "Merge pull request #23 from milo-os/fix/claim-creation-policy-resourc…",
"author_name": "Scot Schuchert-Wells",
"author_login": "scotwells",
"committed_at": "2026-05-27T13:28:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "308ad8c7d5f502f9580d3ebb008ac594eddb30b4",
"body": "Now that milo-os/milo#623 makes ResourceClaimSpec.ResourceRef a pointer,\nencoding/json correctly omits the field when nil. Switch the\napplyClaimCreationPolicies implementation back to the typed\n*quotav1alpha1.ClaimCreationPolicy and remove the unstructured workaround.\n\nKey changes:\n- Replace *unstru\n[…]\nnch commit)\n- Rewrite unit test to assert on typed fields rather than raw map keys\n\nThe regression test still verifies that ResourceRef is nil on the\npatched object, preserving the original invariant.",
"is_bot": false,
"headline": "refactor: use typed ClaimCreationPolicy instead of unstructured",
"author_name": "Scot Wells",
"author_login": "scotwells",
"committed_at": "2026-05-27T02:40:47Z",
"body_truncated": true,
"is_coding_agent": false
}
],
"releases_count": 4,
"commits_last_year": 152,
"latest_release_at": "2026-06-22T16:44:18Z",
"latest_release_tag": "v0.3.1",
"releases_from_tags": false,
"days_since_last_push": 2,
"active_weeks_last_year": 12,
"days_since_latest_release": 33,
"mean_days_between_releases": 7
},
"community": {
"has_readme": true,
"has_license": false,
"has_description": true,
"has_contributing": false,
"health_percentage": 25,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "go.miloapis.com/service-catalog",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": null,
"registry_url": "https://pkg.go.dev/go.miloapis.com/service-catalog",
"is_deprecated": false,
"latest_version": "v0.3.1",
"repository_url": null,
"versions_count": 4,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-06-15T21:29:12Z",
"latest_version_yanked": null,
"days_since_latest_publish": 40
}
]
},
"popularity": {
"forks": 0,
"stars": 0,
"watchers": 0,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": {
"days": [],
"complete": true,
"collected": 0,
"total_stars": 0,
"collected_at": null
},
"open_issues_and_prs": 19
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"samples"
],
"has_llms_txt": false,
"has_dockerfile": true,
"has_mcp_signal": false,
"bootstrap_files": [
"Taskfile.yaml",
"ui/Taskfile.yaml"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"ui/tsconfig.json"
],
"toolchain_manifests": [
"go.mod"
],
"largest_source_bytes": 60415,
"source_files_sampled": 137,
"oversized_source_files": 1,
"agent_instruction_files": [
"CLAUDE.md"
],
"agent_instruction_max_bytes": 2859
},
"dependencies": {
"manifests": [
"go.mod",
"ui/package.json"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "google.golang.org/grpc",
"direct": false,
"version": "v1.72.2",
"severity": "critical",
"ecosystem": "go",
"cvss_score": 9.1,
"advisory_ids": [
"GHSA-hrxh-6v49-42gf",
"GHSA-p77j-4mvh-x3m3",
"GO-2026-4762"
],
"fixed_version": "1.82.1",
"advisory_count": 3,
"oldest_advisory_days": 129
},
{
"name": "js-yaml",
"direct": true,
"version": "4.1.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-52cp-r559-cp3m",
"GHSA-h67p-54hq-rp68"
],
"fixed_version": "4.3.0",
"advisory_count": 2,
"oldest_advisory_days": 40
},
{
"name": "@remix-run/server-runtime",
"direct": false,
"version": "2.17.4",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-84g9-w2xq-vcv6",
"GHSA-8x6r-g9mw-2r78"
],
"fixed_version": "7.15.1",
"advisory_count": 2,
"oldest_advisory_days": 52
},
{
"name": "brace-expansion",
"direct": false,
"version": "2.1.0",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-3jxr-9vmj-r5cp",
"GHSA-mh99-v99m-4gvg"
],
"fixed_version": "5.0.8",
"advisory_count": 2,
"oldest_advisory_days": 5
},
{
"name": "postcss",
"direct": false,
"version": "8.5.14",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-r28c-9q8g-f849"
],
"fixed_version": "8.5.18",
"advisory_count": 1,
"oldest_advisory_days": 1
},
{
"name": "react-router",
"direct": false,
"version": "6.30.3",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-2j2x-hqr9-3h42",
"GHSA-337j-9hxr-rhxg",
"GHSA-wrjc-x8rr-h8h6"
],
"fixed_version": "7.18.0",
"advisory_count": 3,
"oldest_advisory_days": 52
},
{
"name": "tar",
"direct": false,
"version": "6.2.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 8.8,
"advisory_ids": [
"GHSA-23hp-3jrh-7fpw",
"GHSA-34x7-hfp2-rc4v",
"GHSA-83g3-92jg-28cx",
"GHSA-8qq5-rm4j-mr97",
"GHSA-8x88-c5mf-7j5w",
"GHSA-9ppj-qmqm-q256",
"GHSA-gvwx-54wh-qm9j",
"GHSA-qffp-2rhf-9h96",
"GHSA-r292-9mhp-454m",
"GHSA-r6q2-hw4h-h46w"
],
"fixed_version": "7.5.21",
"advisory_count": 12,
"oldest_advisory_days": 190
},
{
"name": "turbo-stream",
"direct": false,
"version": "2.4.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-rxv8-25v2-qmq8"
],
"fixed_version": "7.14.0",
"advisory_count": 1,
"oldest_advisory_days": 51
},
{
"name": "undici",
"direct": false,
"version": "6.25.0",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-35p6-xmwp-9g52",
"GHSA-g8m3-5g58-fq7m",
"GHSA-p88m-4jfj-68fv",
"GHSA-vxpw-j846-p89q"
],
"fixed_version": "8.5.0",
"advisory_count": 4,
"oldest_advisory_days": 37
},
{
"name": "undici",
"direct": false,
"version": "7.25.0",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-35p6-xmwp-9g52",
"GHSA-g8m3-5g58-fq7m",
"GHSA-hm92-r4w5-c3mj",
"GHSA-p88m-4jfj-68fv",
"GHSA-pr7r-676h-xcf6",
"GHSA-vmh5-mc38-953g",
"GHSA-vxpw-j846-p89q"
],
"fixed_version": "8.5.0",
"advisory_count": 7,
"oldest_advisory_days": 38
},
{
"name": "vite",
"direct": false,
"version": "5.4.21",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-4w7w-66w2-5vf9",
"GHSA-fx2h-pf6j-xcff",
"GHSA-v6wh-96g9-6wx3"
],
"fixed_version": "8.0.16",
"advisory_count": 3,
"oldest_advisory_days": 110
},
{
"name": "ws",
"direct": false,
"version": "7.5.10",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-96hv-2xvq-fx4p"
],
"fixed_version": "8.21.0",
"advisory_count": 1,
"oldest_advisory_days": 40
},
{
"name": "dompurify",
"direct": false,
"version": "3.4.2",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 6.1,
"advisory_ids": [
"GHSA-76mc-f452-cxcm",
"GHSA-c2j3-45gr-mqc4",
"GHSA-cmwh-pvxp-8882",
"GHSA-gvmj-g25r-r7wr",
"GHSA-hpcv-96wg-7vj8",
"GHSA-r47g-fvhr-h676",
"GHSA-rp9w-3fw7-7cwq",
"GHSA-vxr8-fq34-vvx9",
"GHSA-x4vx-rjvf-j5p4"
],
"fixed_version": "3.4.12",
"advisory_count": 9,
"oldest_advisory_days": 40
},
{
"name": "esbuild",
"direct": false,
"version": "0.17.6",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-67mh-4wv8-2f99"
],
"fixed_version": "0.25.0",
"advisory_count": 1,
"oldest_advisory_days": 530
},
{
"name": "esbuild",
"direct": false,
"version": "0.21.5",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-67mh-4wv8-2f99"
],
"fixed_version": "0.25.0",
"advisory_count": 1,
"oldest_advisory_days": 530
},
{
"name": "estree-util-value-to-estree",
"direct": false,
"version": "1.3.0",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 6.5,
"advisory_ids": [
"GHSA-f7f6-9jq7-3rqj"
],
"fixed_version": "3.3.3",
"advisory_count": 1,
"oldest_advisory_days": 474
},
{
"name": "github.com/google/cel-go",
"direct": false,
"version": "v0.26.0",
"severity": "moderate",
"ecosystem": "go",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-gcjh-h69q-9w9g"
],
"fixed_version": "0.29.0",
"advisory_count": 1,
"oldest_advisory_days": 1
},
{
"name": "golang.org/x/net",
"direct": false,
"version": "v0.52.0",
"severity": "moderate",
"ecosystem": "go",
"cvss_score": 6.5,
"advisory_ids": [
"GHSA-5cv4-jp36-h3mw",
"GO-2026-4918",
"GO-2026-5025",
"GO-2026-5026",
"GO-2026-5027",
"GO-2026-5028",
"GO-2026-5029",
"GO-2026-5030",
"GO-2026-5942"
],
"fixed_version": "1.26.3",
"advisory_count": 9,
"oldest_advisory_days": 79
},
{
"name": "morgan",
"direct": false,
"version": "1.10.1",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-4vj7-5mj6-jm8m"
],
"fixed_version": "1.11.0",
"advisory_count": 1,
"oldest_advisory_days": 16
},
{
"name": "qs",
"direct": false,
"version": "6.14.2",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-q8mj-m7cp-5q26"
],
"fixed_version": "6.15.2",
"advisory_count": 1,
"oldest_advisory_days": 64
},
{
"name": "qs",
"direct": false,
"version": "6.15.1",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-q8mj-m7cp-5q26"
],
"fixed_version": "6.15.2",
"advisory_count": 1,
"oldest_advisory_days": 64
},
{
"name": "react-router-dom",
"direct": false,
"version": "6.30.3",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 6.9,
"advisory_ids": [
"GHSA-jjmj-jmhj-qwj2"
],
"fixed_version": "7.13.0",
"advisory_count": 1,
"oldest_advisory_days": 2
},
{
"name": "valibot",
"direct": false,
"version": "1.4.0",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-5qjj-4xww-7phc"
],
"fixed_version": "1.4.2",
"advisory_count": 1,
"oldest_advisory_days": 1
},
{
"name": "@babel/core",
"direct": false,
"version": "7.29.0",
"severity": "low",
"ecosystem": "npm",
"cvss_score": 3.2,
"advisory_ids": [
"GHSA-4x5r-pxfx-6jf8"
],
"fixed_version": "8.0.0-rc.6",
"advisory_count": 1,
"oldest_advisory_days": 40
},
{
"name": "body-parser",
"direct": false,
"version": "1.20.5",
"severity": "low",
"ecosystem": "npm",
"cvss_score": 3.7,
"advisory_ids": [
"GHSA-v422-hmwv-36x6"
],
"fixed_version": "2.3.0",
"advisory_count": 1,
"oldest_advisory_days": 5
},
{
"name": "go.opentelemetry.io/otel",
"direct": false,
"version": "v1.43.0",
"severity": "unknown",
"ecosystem": "go",
"cvss_score": null,
"advisory_ids": [
"GO-2026-5158"
],
"fixed_version": "1.44.0",
"advisory_count": 1,
"oldest_advisory_days": 1
},
{
"name": "golang.org/x/sys",
"direct": false,
"version": "v0.43.0",
"severity": "unknown",
"ecosystem": "go",
"cvss_score": null,
"advisory_ids": [
"GO-2026-5024"
],
"fixed_version": "0.44.0",
"advisory_count": 1,
"oldest_advisory_days": 64
},
{
"name": "golang.org/x/text",
"direct": false,
"version": "v0.36.0",
"severity": "unknown",
"ecosystem": "go",
"cvss_score": null,
"advisory_ids": [
"GO-2026-5970"
],
"fixed_version": "0.39.0",
"advisory_count": 1,
"oldest_advisory_days": 11
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"low": 2,
"high": 11,
"unknown": 3,
"critical": 1,
"moderate": 11
},
"advisory_count": 73,
"affected_count": 28,
"assessed_count": 882,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 1
},
"ecosystems": [
"go",
"npm"
],
"dependencies": [
{
"name": "github.com/go-logr/logr",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.4.3"
},
{
"name": "github.com/onsi/ginkgo/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.27.2"
},
{
"name": "github.com/onsi/gomega",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.38.2"
},
{
"name": "github.com/prometheus/client_golang",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.23.2"
},
{
"name": "github.com/prometheus/client_model",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.6.2"
},
{
"name": "github.com/spf13/cobra",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.10.0"
},
{
"name": "go.miloapis.com/billing",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.2.15"
},
{
"name": "go.miloapis.com/milo",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.31.1"
},
{
"name": "golang.org/x/term",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.42.0"
},
{
"name": "k8s.io/api",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.35.0"
},
{
"name": "k8s.io/apimachinery",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.35.0"
},
{
"name": "k8s.io/cli-runtime",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.33.1"
},
{
"name": "k8s.io/client-go",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.35.0"
},
{
"name": "k8s.io/utils",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.0.0-20251002143259-bc988d571ff4"
},
{
"name": "sigs.k8s.io/controller-runtime",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.23.3"
},
{
"name": "sigs.k8s.io/multicluster-runtime",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.23.3"
},
{
"name": "sigs.k8s.io/yaml",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.6.0"
},
{
"name": "@datum-cloud/datum-ui",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "^0.8.0"
},
{
"name": "@remix-run/node",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "^2.15.2"
},
{
"name": "@remix-run/react",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "^2.15.2"
},
{
"name": "@remix-run/serve",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "^2.15.2"
},
{
"name": "class-variance-authority",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "^0.7.1"
},
{
"name": "clsx",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "^2.1.1"
},
{
"name": "isbot",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "^5.1.17"
},
{
"name": "js-yaml",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "^4.1.1"
},
{
"name": "lucide-react",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "^0.577.0"
},
{
"name": "react",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "^19.2.5"
},
{
"name": "react-dom",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "^19.2.5"
},
{
"name": "@tanstack/react-virtual",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": ">=3"
},
{
"name": "sonner",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": ">=2"
},
{
"name": "zod",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": ">=4"
},
{
"name": "tailwind-merge",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "^3.4.0"
},
{
"name": "tailwindcss-animate",
"manifest": "ui/package.json",
"ecosystem": "npm",
"version_constraint": "^1.0.7"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "github.com/go-logr/logr",
"direct": true,
"version": "v1.4.3",
"ecosystem": "go"
},
{
"name": "github.com/onsi/ginkgo/v2",
"direct": true,
"version": "v2.27.2",
"ecosystem": "go"
},
{
"name": "github.com/onsi/gomega",
"direct": true,
"version": "v1.38.2",
"ecosystem": "go"
},
{
"name": "github.com/prometheus/client_golang",
"direct": true,
"version": "v1.23.2",
"ecosystem": "go"
},
{
"name": "github.com/prometheus/client_model",
"direct": true,
"version": "v0.6.2",
"ecosystem": "go"
},
{
"name": "github.com/spf13/cobra",
"direct": true,
"version": "v1.10.0",
"ecosystem": "go"
},
{
"name": "go.miloapis.com/billing",
"direct": true,
"version": "v0.2.15",
"ecosystem": "go"
},
{
"name": "go.miloapis.com/milo",
"direct": true,
"version": "v0.31.1",
"ecosystem": "go"
},
{
"name": "golang.org/x/term",
"direct": true,
"version": "v0.42.0",
"ecosystem": "go"
},
{
"name": "k8s.io/api",
"direct": true,
"version": "v0.35.0",
"ecosystem": "go"
},
{
"name": "k8s.io/apimachinery",
"direct": true,
"version": "v0.35.0",
"ecosystem": "go"
},
{
"name": "k8s.io/cli-runtime",
"direct": true,
"version": "v0.33.1",
"ecosystem": "go"
},
{
"name": "k8s.io/client-go",
"direct": true,
"version": "v0.35.0",
"ecosystem": "go"
},
{
"name": "k8s.io/utils",
"direct": true,
"version": "v0.0.0-20251002143259-bc988d571ff4",
"ecosystem": "go"
},
{
"name": "sigs.k8s.io/controller-runtime",
"direct": true,
"version": "v0.23.3",
"ecosystem": "go"
},
{
"name": "sigs.k8s.io/multicluster-runtime",
"direct": true,
"version": "v0.23.3",
"ecosystem": "go"
},
{
"name": "sigs.k8s.io/yaml",
"direct": true,
"version": "v1.6.0",
"ecosystem": "go"
},
{
"name": "@datum-cloud/datum-ui",
"direct": true,
"version": "0.8.1",
"ecosystem": "npm"
},
{
"name": "@remix-run/node",
"direct": true,
"version": "2.17.4",
"ecosystem": "npm"
},
{
"name": "@remix-run/react",
"direct": true,
"version": "2.17.4",
"ecosystem": "npm"
},
{
"name": "@remix-run/serve",
"direct": true,
"version": "2.17.4",
"ecosystem": "npm"
},
{
"name": "@tanstack/react-virtual",
"direct": true,
"version": "3.13.24",
"ecosystem": "npm"
},
{
"name": "class-variance-authority",
"direct": true,
"version": "0.7.1",
"ecosystem": "npm"
},
{
"name": "clsx",
"direct": true,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "isbot",
"direct": true,
"version": "5.1.40",
"ecosystem": "npm"
},
{
"name": "js-yaml",
"direct": true,
"version": "4.1.1",
"ecosystem": "npm"
},
{
"name": "lucide-react",
"direct": true,
"version": "0.577.0",
"ecosystem": "npm"
},
{
"name": "react",
"direct": true,
"version": "19.2.5",
"ecosystem": "npm"
},
{
"name": "react-dom",
"direct": true,
"version": "19.2.5",
"ecosystem": "npm"
},
{
"name": "sonner",
"direct": true,
"version": "2.0.7",
"ecosystem": "npm"
},
{
"name": "tailwind-merge",
"direct": true,
"version": "3.5.0",
"ecosystem": "npm"
},
{
"name": "tailwindcss-animate",
"direct": true,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "zod",
"direct": true,
"version": "4.4.3",
"ecosystem": "npm"
},
{
"name": "cel.dev/expr",
"direct": false,
"version": "v0.24.0",
"ecosystem": "go"
},
{
"name": "github.com/antlr4-go/antlr/v4",
"direct": false,
"version": "v4.13.0",
"ecosystem": "go"
},
{
"name": "github.com/azure/go-ansiterm",
"direct": false,
"version": "v0.0.0-20230124172434-306776ec8161",
"ecosystem": "go"
},
{
"name": "github.com/beorn7/perks",
"direct": false,
"version": "v1.0.1",
"ecosystem": "go"
},
{
"name": "github.com/blang/semver/v4",
"direct": false,
"version": "v4.0.0",
"ecosystem": "go"
},
{
"name": "github.com/cenkalti/backoff/v4",
"direct": false,
"version": "v4.3.0",
"ecosystem": "go"
},
{
"name": "github.com/cespare/xxhash/v2",
"direct": false,
"version": "v2.3.0",
"ecosystem": "go"
},
{
"name": "github.com/davecgh/go-spew",
"direct": false,
"version": "v1.1.2-0.20180830191138-d8f796af33cc",
"ecosystem": "go"
},
{
"name": "github.com/emicklei/go-restful/v3",
"direct": false,
"version": "v3.12.2",
"ecosystem": "go"
},
{
"name": "github.com/evanphx/json-patch/v5",
"direct": false,
"version": "v5.9.11",
"ecosystem": "go"
},
{
"name": "github.com/felixge/httpsnoop",
"direct": false,
"version": "v1.0.4",
"ecosystem": "go"
},
{
"name": "github.com/fsnotify/fsnotify",
"direct": false,
"version": "v1.9.0",
"ecosystem": "go"
},
{
"name": "github.com/fxamacker/cbor/v2",
"direct": false,
"version": "v2.9.0",
"ecosystem": "go"
},
{
"name": "github.com/go-errors/errors",
"direct": false,
"version": "v1.4.2",
"ecosystem": "go"
},
{
"name": "github.com/go-logr/stdr",
"direct": false,
"version": "v1.2.2",
"ecosystem": "go"
},
{
"name": "github.com/go-logr/zapr",
"direct": false,
"version": "v1.3.0",
"ecosystem": "go"
},
{
"name": "github.com/go-openapi/jsonpointer",
"direct": false,
"version": "v0.21.1",
"ecosystem": "go"
},
{
"name": "github.com/go-openapi/jsonreference",
"direct": false,
"version": "v0.21.0",
"ecosystem": "go"
},
{
"name": "github.com/go-openapi/swag",
"direct": false,
"version": "v0.23.1",
"ecosystem": "go"
},
{
"name": "github.com/go-task/slim-sprig/v3",
"direct": false,
"version": "v3.0.0",
"ecosystem": "go"
},
{
"name": "github.com/google/btree",
"direct": false,
"version": "v1.1.3",
"ecosystem": "go"
},
{
"name": "github.com/google/cel-go",
"direct": false,
"version": "v0.26.0",
"ecosystem": "go"
},
{
"name": "github.com/google/gnostic-models",
"direct": false,
"version": "v0.7.0",
"ecosystem": "go"
},
{
"name": "github.com/google/go-cmp",
"direct": false,
"version": "v0.7.0",
"ecosystem": "go"
},
{
"name": "github.com/google/pprof",
"direct": false,
"version": "v0.0.0-20250403155104-27863c87afa6",
"ecosystem": "go"
},
{
"name": "github.com/google/shlex",
"direct": false,
"version": "v0.0.0-20191202100458-e7afc7fbc510",
"ecosystem": "go"
},
{
"name": "github.com/google/uuid",
"direct": false,
"version": "v1.6.0",
"ecosystem": "go"
},
{
"name": "github.com/gregjones/httpcache",
"direct": false,
"version": "v0.0.0-20190611155906-901d90724c79",
"ecosystem": "go"
},
{
"name": "github.com/grpc-ecosystem/grpc-gateway/v2",
"direct": false,
"version": "v2.26.3",
"ecosystem": "go"
},
{
"name": "github.com/inconshreveable/mousetrap",
"direct": false,
"version": "v1.1.0",
"ecosystem": "go"
},
{
"name": "github.com/josharian/intern",
"direct": false,
"version": "v1.0.0",
"ecosystem": "go"
},
{
"name": "github.com/json-iterator/go",
"direct": false,
"version": "v1.1.12",
"ecosystem": "go"
},
{
"name": "github.com/liggitt/tabwriter",
"direct": false,
"version": "v0.0.0-20181228230101-89fcab3d43de",
"ecosystem": "go"
},
{
"name": "github.com/mailru/easyjson",
"direct": false,
"version": "v0.9.0",
"ecosystem": "go"
},
{
"name": "github.com/masterminds/semver/v3",
"direct": false,
"version": "v3.4.0",
"ecosystem": "go"
},
{
"name": "github.com/moby/term",
"direct": false,
"version": "v0.5.0",
"ecosystem": "go"
},
{
"name": "github.com/modern-go/concurrent",
"direct": false,
"version": "v0.0.0-20180306012644-bacd9c7ef1dd",
"ecosystem": "go"
},
{
"name": "github.com/modern-go/reflect2",
"direct": false,
"version": "v1.0.3-0.20250322232337-35a7c28c31ee",
"ecosystem": "go"
},
{
"name": "github.com/monochromegane/go-gitignore",
"direct": false,
"version": "v0.0.0-20200626010858-205db1a8cc00",
"ecosystem": "go"
},
{
"name": "github.com/munnerz/goautoneg",
"direct": false,
"version": "v0.0.0-20191010083416-a7dc8b61c822",
"ecosystem": "go"
},
{
"name": "github.com/peterbourgon/diskv",
"direct": false,
"version": "v2.0.1+incompatible",
"ecosystem": "go"
},
{
"name": "github.com/pmezard/go-difflib",
"direct": false,
"version": "v1.0.1-0.20181226105442-5d4384ee4fb2",
"ecosystem": "go"
},
{
"name": "github.com/prometheus/common",
"direct": false,
"version": "v0.67.5",
"ecosystem": "go"
},
{
"name": "github.com/prometheus/procfs",
"direct": false,
"version": "v0.20.1",
"ecosystem": "go"
},
{
"name": "github.com/spf13/pflag",
"direct": false,
"version": "v1.0.9",
"ecosystem": "go"
},
{
"name": "github.com/stoewer/go-strcase",
"direct": false,
"version": "v1.3.0",
"ecosystem": "go"
},
{
"name": "github.com/x448/float16",
"direct": false,
"version": "v0.8.4",
"ecosystem": "go"
},
{
"name": "github.com/xlab/treeprint",
"direct": false,
"version": "v1.2.0",
"ecosystem": "go"
},
{
"name": "go.opentelemetry.io/auto/sdk",
"direct": false,
"version": "v1.2.1",
"ecosystem": "go"
},
{
"name": "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",
"direct": false,
"version": "v0.61.0",
"ecosystem": "go"
},
{
"name": "go.opentelemetry.io/otel",
"direct": false,
"version": "v1.43.0",
"ecosystem": "go"
},
{
"name": "go.opentelemetry.io/otel/exporters/otlp/otlptrace",
"direct": false,
"version": "v1.34.0",
"ecosystem": "go"
},
{
"name": "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc",
"direct": false,
"version": "v1.34.0",
"ecosystem": "go"
},
{
"name": "go.opentelemetry.io/otel/metric",
"direct": false,
"version": "v1.43.0",
"ecosystem": "go"
},
{
"name": "go.opentelemetry.io/otel/sdk",
"direct": false,
"version": "v1.43.0",
"ecosystem": "go"
},
{
"name": "go.opentelemetry.io/otel/trace",
"direct": false,
"version": "v1.43.0",
"ecosystem": "go"
},
{
"name": "go.opentelemetry.io/proto/otlp",
"direct": false,
"version": "v1.5.0",
"ecosystem": "go"
},
{
"name": "go.uber.org/multierr",
"direct": false,
"version": "v1.11.0",
"ecosystem": "go"
},
{
"name": "go.uber.org/zap",
"direct": false,
"version": "v1.27.0",
"ecosystem": "go"
},
{
"name": "go.yaml.in/yaml/v2",
"direct": false,
"version": "v2.4.4",
"ecosystem": "go"
},
{
"name": "go.yaml.in/yaml/v3",
"direct": false,
"version": "v3.0.4",
"ecosystem": "go"
},
{
"name": "golang.org/x/exp",
"direct": false,
"version": "v0.0.0-20240719175910-8a7402abbf56",
"ecosystem": "go"
},
{
"name": "golang.org/x/mod",
"direct": false,
"version": "v0.34.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/net",
"direct": false,
"version": "v0.52.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/oauth2",
"direct": false,
"version": "v0.34.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/sync",
"direct": false,
"version": "v0.20.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/sys",
"direct": false,
"version": "v0.43.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/text",
"direct": false,
"version": "v0.36.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/time",
"direct": false,
"version": "v0.15.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/tools",
"direct": false,
"version": "v0.43.0",
"ecosystem": "go"
},
{
"name": "gomodules.xyz/jsonpatch/v2",
"direct": false,
"version": "v2.5.0",
"ecosystem": "go"
},
{
"name": "google.golang.org/genproto/googleapis/api",
"direct": false,
"version": "v0.0.0-20250303144028-a0af3efb3deb",
"ecosystem": "go"
},
{
"name": "google.golang.org/genproto/googleapis/rpc",
"direct": false,
"version": "v0.0.0-20250528174236-200df99c418a",
"ecosystem": "go"
},
{
"name": "google.golang.org/grpc",
"direct": false,
"version": "v1.72.2",
"ecosystem": "go"
},
{
"name": "google.golang.org/protobuf",
"direct": false,
"version": "v1.36.11",
"ecosystem": "go"
},
{
"name": "gopkg.in/evanphx/json-patch.v4",
"direct": false,
"version": "v4.13.0",
"ecosystem": "go"
},
{
"name": "gopkg.in/inf.v0",
"direct": false,
"version": "v0.9.1",
"ecosystem": "go"
},
{
"name": "gopkg.in/yaml.v3",
"direct": false,
"version": "v3.0.1",
"ecosystem": "go"
},
{
"name": "k8s.io/apiextensions-apiserver",
"direct": false,
"version": "v0.35.0",
"ecosystem": "go"
},
{
"name": "k8s.io/apiserver",
"direct": false,
"version": "v0.35.0",
"ecosystem": "go"
},
{
"name": "k8s.io/component-base",
"direct": false,
"version": "v0.35.0",
"ecosystem": "go"
},
{
"name": "k8s.io/klog/v2",
"direct": false,
"version": "v2.130.1",
"ecosystem": "go"
},
{
"name": "k8s.io/kube-openapi",
"direct": false,
"version": "v0.0.0-20250910181357-589584f1c912",
"ecosystem": "go"
},
{
"name": "sigs.k8s.io/apiserver-network-proxy/konnectivity-client",
"direct": false,
"version": "v0.31.2",
"ecosystem": "go"
},
{
"name": "sigs.k8s.io/json",
"direct": false,
"version": "v0.0.0-20250730193827-2d320260d730",
"ecosystem": "go"
},
{
"name": "sigs.k8s.io/kustomize/api",
"direct": false,
"version": "v0.19.0",
"ecosystem": "go"
},
{
"name": "sigs.k8s.io/kustomize/kyaml",
"direct": false,
"version": "v0.19.0",
"ecosystem": "go"
},
{
"name": "sigs.k8s.io/randfill",
"direct": false,
"version": "v1.0.0",
"ecosystem": "go"
},
{
"name": "sigs.k8s.io/structured-merge-diff/v6",
"direct": false,
"version": "v6.3.2-0.20260122202528-d9cc6641c482",
"ecosystem": "go"
},
{
"name": "@alloc/quick-lru",
"direct": false,
"version": "5.2.0",
"ecosystem": "npm"
},
{
"name": "@asamuzakjp/css-color",
"direct": false,
"version": "5.1.11",
"ecosystem": "npm"
},
{
"name": "@asamuzakjp/dom-selector",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "@asamuzakjp/generational-cache",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "@asamuzakjp/nwsapi",
"direct": false,
"version": "2.3.9",
"ecosystem": "npm"
},
{
"name": "@babel/code-frame",
"direct": false,
"version": "7.29.0",
"ecosystem": "npm"
},
{
"name": "@babel/compat-data",
"direct": false,
"version": "7.29.3",
"ecosystem": "npm"
},
{
"name": "@babel/core",
"direct": false,
"version": "7.29.0",
"ecosystem": "npm"
},
{
"name": "@babel/generator",
"direct": false,
"version": "7.29.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-annotate-as-pure",
"direct": false,
"version": "7.27.3",
"ecosystem": "npm"
},
{
"name": "@babel/helper-compilation-targets",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/helper-create-class-features-plugin",
"direct": false,
"version": "7.29.3",
"ecosystem": "npm"
},
{
"name": "@babel/helper-globals",
"direct": false,
"version": "7.28.0",
"ecosystem": "npm"
},
{
"name": "@babel/helper-member-expression-to-functions",
"direct": false,
"version": "7.28.5",
"ecosystem": "npm"
},
{
"name": "@babel/helper-module-imports",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/helper-module-transforms",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/helper-optimise-call-expression",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-plugin-utils",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/helper-replace-supers",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/helper-skip-transparent-expression-wrappers",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-string-parser",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-identifier",
"direct": false,
"version": "7.28.5",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-option",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helpers",
"direct": false,
"version": "7.29.2",
"ecosystem": "npm"
},
{
"name": "@babel/parser",
"direct": false,
"version": "7.29.3",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-decorators",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-jsx",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-typescript",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-modules-commonjs",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-typescript",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/preset-typescript",
"direct": false,
"version": "7.28.5",
"ecosystem": "npm"
},
{
"name": "@babel/runtime",
"direct": false,
"version": "7.29.2",
"ecosystem": "npm"
},
{
"name": "@babel/template",
"direct": false,
"version": "7.28.6",
"ecosystem": "npm"
},
{
"name": "@babel/traverse",
"direct": false,
"version": "7.29.0",
"ecosystem": "npm"
},
{
"name": "@babel/types",
"direct": false,
"version": "7.29.0",
"ecosystem": "npm"
},
{
"name": "@bramus/specificity",
"direct": false,
"version": "2.4.2",
"ecosystem": "npm"
},
{
"name": "@csstools/color-helpers",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "@csstools/css-calc",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "@csstools/css-color-parser",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "@csstools/css-parser-algorithms",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "@csstools/css-syntax-patches-for-csstree",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@csstools/css-tokenizer",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "@date-fns/tz",
"direct": false,
"version": "1.4.1",
"ecosystem": "npm"
},
{
"name": "@dnd-kit/utilities",
"direct": false,
"version": "3.2.2",
"ecosystem": "npm"
},
{
"name": "@emotion/hash",
"direct": false,
"version": "0.9.2",
"ecosystem": "npm"
},
{
"name": "@esbuild/aix-ppc64",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-arm",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-arm",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-arm64",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-arm64",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-x64",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-x64",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/darwin-arm64",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/darwin-arm64",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/darwin-x64",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/darwin-x64",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/freebsd-arm64",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/freebsd-arm64",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/freebsd-x64",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/freebsd-x64",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-arm",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-arm",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-arm64",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-arm64",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-ia32",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-ia32",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-loong64",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-loong64",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-mips64el",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-mips64el",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-ppc64",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-ppc64",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-riscv64",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-riscv64",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-s390x",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-s390x",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-x64",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-x64",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/netbsd-x64",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/netbsd-x64",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/openbsd-x64",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/openbsd-x64",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/sunos-x64",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/sunos-x64",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-arm64",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-arm64",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-ia32",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-ia32",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-x64",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-x64",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "@exodus/bytes",
"direct": false,
"version": "1.15.0",
"ecosystem": "npm"
},
{
"name": "@floating-ui/core",
"direct": false,
"version": "1.7.5",
"ecosystem": "npm"
},
{
"name": "@floating-ui/dom",
"direct": false,
"version": "1.7.6",
"ecosystem": "npm"
},
{
"name": "@floating-ui/react-dom",
"direct": false,
"version": "2.1.8",
"ecosystem": "npm"
},
{
"name": "@floating-ui/utils",
"direct": false,
"version": "0.2.11",
"ecosystem": "npm"
},
{
"name": "@isaacs/cliui",
"direct": false,
"version": "8.0.2",
"ecosystem": "npm"
},
{
"name": "@jridgewell/gen-mapping",
"direct": false,
"version": "0.3.13",
"ecosystem": "npm"
},
{
"name": "@jridgewell/remapping",
"direct": false,
"version": "2.3.5",
"ecosystem": "npm"
},
{
"name": "@jridgewell/resolve-uri",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "@jridgewell/sourcemap-codec",
"direct": false,
"version": "1.5.5",
"ecosystem": "npm"
},
{
"name": "@jridgewell/trace-mapping",
"direct": false,
"version": "0.3.31",
"ecosystem": "npm"
},
{
"name": "@jspm/core",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "@mdx-js/mdx",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "@npmcli/fs",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "@npmcli/git",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "@npmcli/package-json",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "@npmcli/promise-spawn",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "@pkgjs/parseargs",
"direct": false,
"version": "0.11.0",
"ecosystem": "npm"
},
{
"name": "@playwright/test",
"direct": false,
"version": "1.59.1",
"ecosystem": "npm"
},
{
"name": "@radix-ui/number",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "@radix-ui/primitive",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-arrow",
"direct": false,
"version": "1.1.7",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-avatar",
"direct": false,
"version": "1.1.11",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-checkbox",
"direct": false,
"version": "1.3.3",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-collapsible",
"direct": false,
"version": "1.1.12",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-collection",
"direct": false,
"version": "1.1.7",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-compose-refs",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-context",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-context",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-dialog",
"direct": false,
"version": "1.1.15",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-direction",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-dismissable-layer",
"direct": false,
"version": "1.1.11",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-dropdown-menu",
"direct": false,
"version": "2.1.16",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-focus-guards",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-focus-scope",
"direct": false,
"version": "1.1.7",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-hover-card",
"direct": false,
"version": "1.1.15",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-id",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-label",
"direct": false,
"version": "2.1.8",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-menu",
"direct": false,
"version": "2.1.16",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-popover",
"direct": false,
"version": "1.1.15",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-popper",
"direct": false,
"version": "1.2.8",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-portal",
"direct": false,
"version": "1.1.9",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-presence",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-primitive",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-primitive",
"direct": false,
"version": "2.1.4",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-radio-group",
"direct": false,
"version": "1.3.8",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-roving-focus",
"direct": false,
"version": "1.1.11",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-select",
"direct": false,
"version": "2.2.6",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-separator",
"direct": false,
"version": "1.1.8",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-slot",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-slot",
"direct": false,
"version": "1.2.4",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-switch",
"direct": false,
"version": "1.2.6",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-tabs",
"direct": false,
"version": "1.1.13",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-tooltip",
"direct": false,
"version": "1.2.8",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-use-callback-ref",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-use-controllable-state",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-use-effect-event",
"direct": false,
"version": "0.0.2",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-use-escape-keydown",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-use-is-hydrated",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-use-layout-effect",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-use-previous",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-use-rect",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-use-size",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-visually-hidden",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "@radix-ui/react-visually-hidden",
"direct": false,
"version": "1.2.4",
"ecosystem": "npm"
},
{
"name": "@radix-ui/rect",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "@remix-run/dev",
"direct": false,
"version": "2.17.4",
"ecosystem": "npm"
},
{
"name": "@remix-run/express",
"direct": false,
"version": "2.17.4",
"ecosystem": "npm"
},
{
"name": "@remix-run/router",
"direct": false,
"version": "1.23.2",
"ecosystem": "npm"
},
{
"name": "@remix-run/server-runtime",
"direct": false,
"version": "2.17.4",
"ecosystem": "npm"
},
{
"name": "@remix-run/web-blob",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "@remix-run/web-fetch",
"direct": false,
"version": "4.4.2",
"ecosystem": "npm"
},
{
"name": "@remix-run/web-file",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "@remix-run/web-form-data",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "@remix-run/web-stream",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-android-arm-eabi",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-android-arm64",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-darwin-arm64",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-darwin-x64",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-freebsd-arm64",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-freebsd-x64",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm-gnueabihf",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm-musleabihf",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm64-gnu",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm64-musl",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-loong64-gnu",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-loong64-musl",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-ppc64-gnu",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-ppc64-musl",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-riscv64-gnu",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-riscv64-musl",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-s390x-gnu",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-x64-gnu",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-x64-musl",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-openbsd-x64",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-openharmony-arm64",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-win32-arm64-msvc",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-win32-ia32-msvc",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-win32-x64-gnu",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-win32-x64-msvc",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "@tabby_ai/hijri-converter",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/node",
"direct": false,
"version": "4.2.4",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide",
"direct": false,
"version": "4.2.4",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-android-arm64",
"direct": false,
"version": "4.2.4",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-darwin-arm64",
"direct": false,
"version": "4.2.4",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-darwin-x64",
"direct": false,
"version": "4.2.4",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-freebsd-x64",
"direct": false,
"version": "4.2.4",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-arm-gnueabihf",
"direct": false,
"version": "4.2.4",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-arm64-gnu",
"direct": false,
"version": "4.2.4",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-arm64-musl",
"direct": false,
"version": "4.2.4",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-x64-gnu",
"direct": false,
"version": "4.2.4",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-linux-x64-musl",
"direct": false,
"version": "4.2.4",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-wasm32-wasi",
"direct": false,
"version": "4.2.4",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-win32-arm64-msvc",
"direct": false,
"version": "4.2.4",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/oxide-win32-x64-msvc",
"direct": false,
"version": "4.2.4",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/postcss",
"direct": false,
"version": "4.2.4",
"ecosystem": "npm"
},
{
"name": "@tailwindcss/vite",
"direct": false,
"version": "4.2.4",
"ecosystem": "npm"
},
{
"name": "@tanstack/virtual-core",
"direct": false,
"version": "3.14.0",
"ecosystem": "npm"
},
{
"name": "@types/acorn",
"direct": false,
"version": "4.0.6",
"ecosystem": "npm"
},
{
"name": "@types/cookie",
"direct": false,
"version": "0.6.0",
"ecosystem": "npm"
},
{
"name": "@types/debug",
"direct": false,
"version": "4.1.13",
"ecosystem": "npm"
},
{
"name": "@types/estree",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "@types/estree-jsx",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "@types/hast",
"direct": false,
"version": "2.3.10",
"ecosystem": "npm"
},
{
"name": "@types/js-yaml",
"direct": false,
"version": "4.0.9",
"ecosystem": "npm"
},
{
"name": "@types/mdast",
"direct": false,
"version": "3.0.15",
"ecosystem": "npm"
},
{
"name": "@types/mdx",
"direct": false,
"version": "2.0.13",
"ecosystem": "npm"
},
{
"name": "@types/ms",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "@types/node",
"direct": false,
"version": "25.6.0",
"ecosystem": "npm"
},
{
"name": "@types/react",
"direct": false,
"version": "19.2.14",
"ecosystem": "npm"
},
{
"name": "@types/react-dom",
"direct": false,
"version": "19.2.3",
"ecosystem": "npm"
},
{
"name": "@types/trusted-types",
"direct": false,
"version": "2.0.7",
"ecosystem": "npm"
},
{
"name": "@types/unist",
"direct": false,
"version": "2.0.11",
"ecosystem": "npm"
},
{
"name": "@vanilla-extract/babel-plugin-debug-ids",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "@vanilla-extract/css",
"direct": false,
"version": "1.20.1",
"ecosystem": "npm"
},
{
"name": "@vanilla-extract/integration",
"direct": false,
"version": "6.5.0",
"ecosystem": "npm"
},
{
"name": "@vanilla-extract/private",
"direct": false,
"version": "1.0.9",
"ecosystem": "npm"
},
{
"name": "@web3-storage/multipart-parser",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "@zxing/text-encoding",
"direct": false,
"version": "0.9.0",
"ecosystem": "npm"
},
{
"name": "abort-controller",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "accepts",
"direct": false,
"version": "1.3.8",
"ecosystem": "npm"
},
{
"name": "acorn",
"direct": false,
"version": "8.16.0",
"ecosystem": "npm"
},
{
"name": "acorn-jsx",
"direct": false,
"version": "5.3.2",
"ecosystem": "npm"
},
{
"name": "aggregate-error",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "6.2.2",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "6.2.3",
"ecosystem": "npm"
},
{
"name": "anymatch",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "arg",
"direct": false,
"version": "5.0.2",
"ecosystem": "npm"
},
{
"name": "argparse",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "aria-hidden",
"direct": false,
"version": "1.2.6",
"ecosystem": "npm"
},
{
"name": "array-flatten",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "astring",
"direct": false,
"version": "1.9.0",
"ecosystem": "npm"
},
{
"name": "autoprefixer",
"direct": false,
"version": "10.5.0",
"ecosystem": "npm"
},
{
"name": "available-typed-arrays",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "bail",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "balanced-match",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "base64-js",
"direct": false,
"version": "1.5.1",
"ecosystem": "npm"
},
{
"name": "baseline-browser-mapping",
"direct": false,
"version": "2.10.27",
"ecosystem": "npm"
},
{
"name": "basic-auth",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "bidi-js",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "binary-extensions",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "bl",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "body-parser",
"direct": false,
"version": "1.20.5",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "braces",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "browserify-zlib",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "browserslist",
"direct": false,
"version": "4.28.2",
"ecosystem": "npm"
},
{
"name": "buffer",
"direct": false,
"version": "5.7.1",
"ecosystem": "npm"
},
{
"name": "buffer-from",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "bytes",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "cac",
"direct": false,
"version": "6.7.14",
"ecosystem": "npm"
},
{
"name": "cacache",
"direct": false,
"version": "17.1.4",
"ecosystem": "npm"
},
{
"name": "call-bind",
"direct": false,
"version": "1.0.9",
"ecosystem": "npm"
},
{
"name": "call-bind-apply-helpers",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "call-bound",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "caniuse-lite",
"direct": false,
"version": "1.0.30001791",
"ecosystem": "npm"
},
{
"name": "ccount",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "character-entities",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "character-entities-html4",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "character-entities-legacy",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "character-reference-invalid",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "chokidar",
"direct": false,
"version": "3.6.0",
"ecosystem": "npm"
},
{
"name": "chownr",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "chownr",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "clean-stack",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "cli-cursor",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "cli-spinners",
"direct": false,
"version": "2.9.2",
"ecosystem": "npm"
},
{
"name": "clone",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "cmdk",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "color-convert",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "color-name",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "comma-separated-tokens",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "compressible",
"direct": false,
"version": "2.0.18",
"ecosystem": "npm"
},
{
"name": "compression",
"direct": false,
"version": "1.8.1",
"ecosystem": "npm"
},
{
"name": "confbox",
"direct": false,
"version": "0.1.8",
"ecosystem": "npm"
},
{
"name": "confbox",
"direct": false,
"version": "0.2.4",
"ecosystem": "npm"
},
{
"name": "content-disposition",
"direct": false,
"version": "0.5.4",
"ecosystem": "npm"
},
{
"name": "content-type",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "convert-source-map",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "cookie",
"direct": false,
"version": "0.7.2",
"ecosystem": "npm"
},
{
"name": "cookie-signature",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "cookie-signature",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "core-util-is",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "cross-spawn",
"direct": false,
"version": "7.0.6",
"ecosystem": "npm"
},
{
"name": "css-tree",
"direct": false,
"version": "3.2.1",
"ecosystem": "npm"
},
{
"name": "css-what",
"direct": false,
"version": "6.2.2",
"ecosystem": "npm"
},
{
"name": "cssesc",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "csstype",
"direct": false,
"version": "3.2.3",
"ecosystem": "npm"
},
{
"name": "data-uri-to-buffer",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "data-urls",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "date-fns",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "date-fns-jalali",
"direct": false,
"version": "4.1.0-0",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "2.6.9",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.4.3",
"ecosystem": "npm"
},
{
"name": "decimal.js",
"direct": false,
"version": "10.6.0",
"ecosystem": "npm"
},
{
"name": "decode-named-character-reference",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "dedent",
"direct": false,
"version": "1.7.2",
"ecosystem": "npm"
},
{
"name": "deep-object-diff",
"direct": false,
"version": "1.1.9",
"ecosystem": "npm"
},
{
"name": "deepmerge",
"direct": false,
"version": "4.3.1",
"ecosystem": "npm"
},
{
"name": "defaults",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "define-data-property",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "depd",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "dequal",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "destroy",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "detect-libc",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "detect-node-es",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "diff",
"direct": false,
"version": "5.2.2",
"ecosystem": "npm"
},
{
"name": "dompurify",
"direct": false,
"version": "3.4.2",
"ecosystem": "npm"
},
{
"name": "dotenv",
"direct": false,
"version": "16.6.1",
"ecosystem": "npm"
},
{
"name": "dunder-proto",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "duplexify",
"direct": false,
"version": "3.7.1",
"ecosystem": "npm"
},
{
"name": "eastasianwidth",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "ee-first",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "electron-to-chromium",
"direct": false,
"version": "1.5.350",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "9.2.2",
"ecosystem": "npm"
},
{
"name": "encodeurl",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "end-of-stream",
"direct": false,
"version": "1.4.5",
"ecosystem": "npm"
},
{
"name": "enhanced-resolve",
"direct": false,
"version": "5.21.0",
"ecosystem": "npm"
},
{
"name": "entities",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "err-code",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "es-define-property",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "es-errors",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "es-module-lexer",
"direct": false,
"version": "1.7.0",
"ecosystem": "npm"
},
{
"name": "es-object-atoms",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "esbuild",
"direct": false,
"version": "0.17.6",
"ecosystem": "npm"
},
{
"name": "esbuild",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "esbuild-plugins-node-modules-polyfill",
"direct": false,
"version": "1.8.1",
"ecosystem": "npm"
},
{
"name": "escalade",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "escape-html",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "estree-util-attach-comments",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "estree-util-build-jsx",
"direct": false,
"version": "2.2.2",
"ecosystem": "npm"
},
{
"name": "estree-util-is-identifier-name",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "estree-util-is-identifier-name",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "estree-util-to-js",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "estree-util-value-to-estree",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "estree-util-visit",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "estree-walker",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "etag",
"direct": false,
"version": "1.8.1",
"ecosystem": "npm"
},
{
"name": "eval",
"direct": false,
"version": "0.1.8",
"ecosystem": "npm"
},
{
"name": "event-target-shim",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "execa",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "exit-hook",
"direct": false,
"version": "2.2.1",
"ecosystem": "npm"
},
{
"name": "express",
"direct": false,
"version": "4.22.1",
"ecosystem": "npm"
},
{
"name": "exsolve",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "extend",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "fault",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "fill-range",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "finalhandler",
"direct": false,
"version": "1.3.2",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "for-each",
"direct": false,
"version": "0.3.5",
"ecosystem": "npm"
},
{
"name": "foreground-child",
"direct": false,
"version": "3.3.1",
"ecosystem": "npm"
},
{
"name": "format",
"direct": false,
"version": "0.2.2",
"ecosystem": "npm"
},
{
"name": "forwarded",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "fraction.js",
"direct": false,
"version": "5.3.4",
"ecosystem": "npm"
},
{
"name": "fresh",
"direct": false,
"version": "0.5.2",
"ecosystem": "npm"
},
{
"name": "fs-constants",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "fs-extra",
"direct": false,
"version": "10.1.0",
"ecosystem": "npm"
},
{
"name": "fs-minipass",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "fs-minipass",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "fsevents",
"direct": false,
"version": "2.3.2",
"ecosystem": "npm"
},
{
"name": "fsevents",
"direct": false,
"version": "2.3.3",
"ecosystem": "npm"
},
{
"name": "function-bind",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "generator-function",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "generic-names",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "gensync",
"direct": false,
"version": "1.0.0-beta.2",
"ecosystem": "npm"
},
{
"name": "get-intrinsic",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "get-nonce",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "get-port",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "get-proto",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "get-stream",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "glob",
"direct": false,
"version": "10.5.0",
"ecosystem": "npm"
},
{
"name": "glob-parent",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "gopd",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "graceful-fs",
"direct": false,
"version": "4.2.11",
"ecosystem": "npm"
},
{
"name": "gunzip-maybe",
"direct": false,
"version": "1.4.2",
"ecosystem": "npm"
},
{
"name": "has-flag",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "has-property-descriptors",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "has-symbols",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "has-tostringtag",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "hasown",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "hast-util-to-estree",
"direct": false,
"version": "2.3.3",
"ecosystem": "npm"
},
{
"name": "hast-util-whitespace",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "hosted-git-info",
"direct": false,
"version": "6.1.3",
"ecosystem": "npm"
},
{
"name": "html-encoding-sniffer",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "http-errors",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "human-signals",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "iconv-lite",
"direct": false,
"version": "0.4.24",
"ecosystem": "npm"
},
{
"name": "icss-utils",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "ieee754",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "imurmurhash",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "indent-string",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "inherits",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "inline-style-parser",
"direct": false,
"version": "0.1.1",
"ecosystem": "npm"
},
{
"name": "ipaddr.js",
"direct": false,
"version": "1.9.1",
"ecosystem": "npm"
},
{
"name": "is-alphabetical",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "is-alphanumerical",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "is-arguments",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "is-binary-path",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "is-buffer",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "is-callable",
"direct": false,
"version": "1.2.7",
"ecosystem": "npm"
},
{
"name": "is-core-module",
"direct": false,
"version": "2.16.2",
"ecosystem": "npm"
},
{
"name": "is-decimal",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "is-deflate",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "is-extglob",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "is-fullwidth-code-point",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "is-generator-function",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "is-glob",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "is-gzip",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "is-hexadecimal",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "is-interactive",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "is-number",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "is-plain-obj",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "is-plain-obj",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "is-potential-custom-element-name",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "is-reference",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "is-regex",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "is-stream",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "is-typed-array",
"direct": false,
"version": "1.1.15",
"ecosystem": "npm"
},
{
"name": "is-unicode-supported",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
},
{
"name": "isarray",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "isexe",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "isomorphic-dompurify",
"direct": false,
"version": "3.12.0",
"ecosystem": "npm"
},
{
"name": "jackspeak",
"direct": false,
"version": "3.4.3",
"ecosystem": "npm"
},
{
"name": "javascript-stringify",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "jiti",
"direct": false,
"version": "2.7.0",
"ecosystem": "npm"
},
{
"name": "js-tokens",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "jsdom",
"direct": false,
"version": "29.1.1",
"ecosystem": "npm"
},
{
"name": "jsesc",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "json-parse-even-better-errors",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "json5",
"direct": false,
"version": "2.2.3",
"ecosystem": "npm"
},
{
"name": "jsonfile",
"direct": false,
"version": "6.2.1",
"ecosystem": "npm"
},
{
"name": "kleur",
"direct": false,
"version": "4.1.5",
"ecosystem": "npm"
},
{
"name": "lightningcss",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-android-arm64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-darwin-arm64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-darwin-x64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-freebsd-x64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm-gnueabihf",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm64-gnu",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm64-musl",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-x64-gnu",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-x64-musl",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-win32-arm64-msvc",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-win32-x64-msvc",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lilconfig",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "loader-utils",
"direct": false,
"version": "3.3.1",
"ecosystem": "npm"
},
{
"name": "local-pkg",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "locate-path",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "lodash",
"direct": false,
"version": "4.18.1",
"ecosystem": "npm"
},
{
"name": "lodash.camelcase",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "lodash.debounce",
"direct": false,
"version": "4.0.8",
"ecosystem": "npm"
},
{
"name": "log-symbols",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "longest-streak",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "lru-cache",
"direct": false,
"version": "10.4.3",
"ecosystem": "npm"
},
{
"name": "lru-cache",
"direct": false,
"version": "11.3.6",
"ecosystem": "npm"
},
{
"name": "lru-cache",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "lru-cache",
"direct": false,
"version": "7.18.3",
"ecosystem": "npm"
},
{
"name": "magic-string",
"direct": false,
"version": "0.30.21",
"ecosystem": "npm"
},
{
"name": "markdown-extensions",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "math-intrinsics",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "mdast-util-definitions",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "mdast-util-from-markdown",
"direct": false,
"version": "1.3.1",
"ecosystem": "npm"
},
{
"name": "mdast-util-frontmatter",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "mdast-util-mdx",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "mdast-util-mdx-expression",
"direct": false,
"version": "1.3.2",
"ecosystem": "npm"
},
{
"name": "mdast-util-mdx-jsx",
"direct": false,
"version": "2.1.4",
"ecosystem": "npm"
},
{
"name": "mdast-util-mdxjs-esm",
"direct": false,
"version": "1.3.1",
"ecosystem": "npm"
},
{
"name": "mdast-util-phrasing",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "mdast-util-to-hast",
"direct": false,
"version": "12.3.0",
"ecosystem": "npm"
},
{
"name": "mdast-util-to-markdown",
"direct": false,
"version": "1.5.0",
"ecosystem": "npm"
},
{
"name": "mdast-util-to-string",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "mdn-data",
"direct": false,
"version": "2.27.1",
"ecosystem": "npm"
},
{
"name": "media-query-parser",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "media-typer",
"direct": false,
"version": "0.3.0",
"ecosystem": "npm"
},
{
"name": "merge-descriptors",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "merge-stream",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "methods",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "micromark",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "micromark-core-commonmark",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-extension-frontmatter",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "micromark-extension-mdx-expression",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "micromark-extension-mdx-jsx",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "micromark-extension-mdx-md",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-extension-mdxjs",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "micromark-extension-mdxjs-esm",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "micromark-factory-destination",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-factory-label",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-factory-mdx-expression",
"direct": false,
"version": "1.0.9",
"ecosystem": "npm"
},
{
"name": "micromark-factory-space",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-factory-title",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-factory-whitespace",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-character",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-chunked",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-classify-character",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-combine-extensions",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-decode-numeric-character-reference",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-decode-string",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-encode",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-events-to-acorn",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "micromark-util-html-tag-name",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-normalize-identifier",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-resolve-all",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-sanitize-uri",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-subtokenize",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-symbol",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "micromark-util-types",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "mime",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "mime-db",
"direct": false,
"version": "1.52.0",
"ecosystem": "npm"
},
{
"name": "mime-db",
"direct": false,
"version": "1.54.0",
"ecosystem": "npm"
},
{
"name": "mime-types",
"direct": false,
"version": "2.1.35",
"ecosystem": "npm"
},
{
"name": "mimic-fn",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "9.0.9",
"ecosystem": "npm"
},
{
"name": "minimist",
"direct": false,
"version": "1.2.8",
"ecosystem": "npm"
},
{
"name": "minipass",
"direct": false,
"version": "3.3.6",
"ecosystem": "npm"
},
{
"name": "minipass",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "minipass",
"direct": false,
"version": "7.1.3",
"ecosystem": "npm"
},
{
"name": "minipass-collect",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "minipass-flush",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "minipass-pipeline",
"direct": false,
"version": "1.2.4",
"ecosystem": "npm"
},
{
"name": "minizlib",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "mkdirp",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "mkdirp-classic",
"direct": false,
"version": "0.5.3",
"ecosystem": "npm"
},
{
"name": "mlly",
"direct": false,
"version": "1.8.2",
"ecosystem": "npm"
},
{
"name": "modern-ahocorasick",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "morgan",
"direct": false,
"version": "1.10.1",
"ecosystem": "npm"
},
{
"name": "mri",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "mrmime",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "nanoid",
"direct": false,
"version": "3.3.12",
"ecosystem": "npm"
},
{
"name": "negotiator",
"direct": false,
"version": "0.6.3",
"ecosystem": "npm"
},
{
"name": "negotiator",
"direct": false,
"version": "0.6.4",
"ecosystem": "npm"
},
{
"name": "node-releases",
"direct": false,
"version": "2.0.38",
"ecosystem": "npm"
},
{
"name": "normalize-package-data",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "normalize-path",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "npm-install-checks",
"direct": false,
"version": "6.3.0",
"ecosystem": "npm"
},
{
"name": "npm-normalize-package-bin",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "npm-package-arg",
"direct": false,
"version": "10.1.0",
"ecosystem": "npm"
},
{
"name": "npm-pick-manifest",
"direct": false,
"version": "8.0.2",
"ecosystem": "npm"
},
{
"name": "npm-run-path",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "object-inspect",
"direct": false,
"version": "1.13.4",
"ecosystem": "npm"
},
{
"name": "on-finished",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "on-finished",
"direct": false,
"version": "2.4.1",
"ecosystem": "npm"
},
{
"name": "on-headers",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "once",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "onetime",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "ora",
"direct": false,
"version": "5.4.1",
"ecosystem": "npm"
},
{
"name": "outdent",
"direct": false,
"version": "0.8.0",
"ecosystem": "npm"
},
{
"name": "p-limit",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "p-locate",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "p-map",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "package-json-from-dist",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "pako",
"direct": false,
"version": "0.2.9",
"ecosystem": "npm"
},
{
"name": "parse-entities",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "parse-ms",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "parse5",
"direct": false,
"version": "8.0.1",
"ecosystem": "npm"
},
{
"name": "parseurl",
"direct": false,
"version": "1.3.3",
"ecosystem": "npm"
},
{
"name": "path-exists",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "path-key",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "path-scurry",
"direct": false,
"version": "1.11.1",
"ecosystem": "npm"
},
{
"name": "path-to-regexp",
"direct": false,
"version": "0.1.13",
"ecosystem": "npm"
},
{
"name": "pathe",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "pathe",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "peek-stream",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "periscopic",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "picocolors",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "2.3.2",
"ecosystem": "npm"
},
{
"name": "pidtree",
"direct": false,
"version": "0.6.0",
"ecosystem": "npm"
},
{
"name": "pkg-types",
"direct": false,
"version": "1.3.1",
"ecosystem": "npm"
},
{
"name": "pkg-types",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "playwright",
"direct": false,
"version": "1.59.1",
"ecosystem": "npm"
},
{
"name": "playwright-core",
"direct": false,
"version": "1.59.1",
"ecosystem": "npm"
},
{
"name": "possible-typed-array-names",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "postcss",
"direct": false,
"version": "8.5.14",
"ecosystem": "npm"
},
{
"name": "postcss-discard-duplicates",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "postcss-load-config",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "postcss-modules",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "postcss-modules-extract-imports",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "postcss-modules-local-by-default",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "postcss-modules-scope",
"direct": false,
"version": "3.2.1",
"ecosystem": "npm"
},
{
"name": "postcss-modules-values",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "postcss-selector-parser",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "postcss-value-parser",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "prettier",
"direct": false,
"version": "2.8.8",
"ecosystem": "npm"
},
{
"name": "pretty-ms",
"direct": false,
"version": "7.0.1",
"ecosystem": "npm"
},
{
"name": "proc-log",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "process-nextick-args",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "promise-inflight",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "promise-retry",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "property-information",
"direct": false,
"version": "6.5.0",
"ecosystem": "npm"
},
{
"name": "proxy-addr",
"direct": false,
"version": "2.0.7",
"ecosystem": "npm"
},
{
"name": "pump",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "pump",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "pumpify",
"direct": false,
"version": "1.5.1",
"ecosystem": "npm"
},
{
"name": "punycode",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "qs",
"direct": false,
"version": "6.14.2",
"ecosystem": "npm"
},
{
"name": "qs",
"direct": false,
"version": "6.15.1",
"ecosystem": "npm"
},
{
"name": "quansync",
"direct": false,
"version": "0.2.11",
"ecosystem": "npm"
},
{
"name": "range-parser",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "raw-body",
"direct": false,
"version": "2.5.3",
"ecosystem": "npm"
},
{
"name": "react-day-picker",
"direct": false,
"version": "9.14.0",
"ecosystem": "npm"
},
{
"name": "react-refresh",
"direct": false,
"version": "0.14.2",
"ecosystem": "npm"
},
{
"name": "react-remove-scroll",
"direct": false,
"version": "2.7.2",
"ecosystem": "npm"
},
{
"name": "react-remove-scroll-bar",
"direct": false,
"version": "2.3.8",
"ecosystem": "npm"
},
{
"name": "react-router",
"direct": false,
"version": "6.30.3",
"ecosystem": "npm"
},
{
"name": "react-router-dom",
"direct": false,
"version": "6.30.3",
"ecosystem": "npm"
},
{
"name": "react-style-singleton",
"direct": false,
"version": "2.2.3",
"ecosystem": "npm"
},
{
"name": "readable-stream",
"direct": false,
"version": "2.3.8",
"ecosystem": "npm"
},
{
"name": "readable-stream",
"direct": false,
"version": "3.6.2",
"ecosystem": "npm"
},
{
"name": "readdirp",
"direct": false,
"version": "3.6.0",
"ecosystem": "npm"
},
{
"name": "remark-frontmatter",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "remark-mdx",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "remark-mdx-frontmatter",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "remark-parse",
"direct": false,
"version": "10.0.2",
"ecosystem": "npm"
},
{
"name": "remark-rehype",
"direct": false,
"version": "10.1.0",
"ecosystem": "npm"
},
{
"name": "require-from-string",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "require-like",
"direct": false,
"version": "0.1.2",
"ecosystem": "npm"
},
{
"name": "resolve.exports",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "restore-cursor",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "retry",
"direct": false,
"version": "0.12.0",
"ecosystem": "npm"
},
{
"name": "rollup",
"direct": false,
"version": "4.60.3",
"ecosystem": "npm"
},
{
"name": "sade",
"direct": false,
"version": "1.8.1",
"ecosystem": "npm"
},
{
"name": "safe-buffer",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "safe-buffer",
"direct": false,
"version": "5.2.1",
"ecosystem": "npm"
},
{
"name": "safe-regex-test",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "safer-buffer",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "saxes",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "scheduler",
"direct": false,
"version": "0.27.0",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "6.3.1",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "7.7.4",
"ecosystem": "npm"
},
{
"name": "send",
"direct": false,
"version": "0.19.2",
"ecosystem": "npm"
},
{
"name": "serve-static",
"direct": false,
"version": "1.16.3",
"ecosystem": "npm"
},
{
"name": "set-cookie-parser",
"direct": false,
"version": "2.7.2",
"ecosystem": "npm"
},
{
"name": "set-function-length",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "setprototypeof",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "shebang-command",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "shebang-regex",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "side-channel",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "side-channel-list",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "side-channel-map",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "side-channel-weakmap",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "signal-exit",
"direct": false,
"version": "3.0.7",
"ecosystem": "npm"
},
{
"name": "signal-exit",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "source-map",
"direct": false,
"version": "0.6.1",
"ecosystem": "npm"
},
{
"name": "source-map",
"direct": false,
"version": "0.7.6",
"ecosystem": "npm"
},
{
"name": "source-map-js",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "source-map-support",
"direct": false,
"version": "0.5.21",
"ecosystem": "npm"
},
{
"name": "space-separated-tokens",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "spdx-correct",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "spdx-exceptions",
"direct": false,
"version": "2.5.0",
"ecosystem": "npm"
},
{
"name": "spdx-expression-parse",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "spdx-license-ids",
"direct": false,
"version": "3.0.23",
"ecosystem": "npm"
},
{
"name": "ssri",
"direct": false,
"version": "10.0.6",
"ecosystem": "npm"
},
{
"name": "statuses",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "stream-shift",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "stream-slice",
"direct": false,
"version": "0.1.2",
"ecosystem": "npm"
},
{
"name": "string-hash",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "4.2.3",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "string_decoder",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "string_decoder",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "stringify-entities",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "strip-bom",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "strip-final-newline",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "style-to-object",
"direct": false,
"version": "0.4.4",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "symbol-tree",
"direct": false,
"version": "3.2.4",
"ecosystem": "npm"
},
{
"name": "tailwindcss",
"direct": false,
"version": "4.2.4",
"ecosystem": "npm"
},
{
"name": "tapable",
"direct": false,
"version": "2.3.3",
"ecosystem": "npm"
},
{
"name": "tar",
"direct": false,
"version": "6.2.1",
"ecosystem": "npm"
},
{
"name": "tar-fs",
"direct": false,
"version": "2.1.4",
"ecosystem": "npm"
},
{
"name": "tar-stream",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "through2",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "tldts",
"direct": false,
"version": "7.0.30",
"ecosystem": "npm"
},
{
"name": "tldts-core",
"direct": false,
"version": "7.0.30",
"ecosystem": "npm"
},
{
"name": "to-regex-range",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "toidentifier",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "toml",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "tough-cookie",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "tr46",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "trim-lines",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "trough",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "tsconfig-paths",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "tslib",
"direct": false,
"version": "2.8.1",
"ecosystem": "npm"
},
{
"name": "turbo-stream",
"direct": false,
"version": "2.4.1",
"ecosystem": "npm"
},
{
"name": "tw-animate-css",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "type-is",
"direct": false,
"version": "1.6.18",
"ecosystem": "npm"
},
{
"name": "typescript",
"direct": false,
"version": "5.9.3",
"ecosystem": "npm"
},
{
"name": "ufo",
"direct": false,
"version": "1.6.4",
"ecosystem": "npm"
},
{
"name": "undici",
"direct": false,
"version": "6.25.0",
"ecosystem": "npm"
},
{
"name": "undici",
"direct": false,
"version": "7.25.0",
"ecosystem": "npm"
},
{
"name": "undici-types",
"direct": false,
"version": "7.19.2",
"ecosystem": "npm"
},
{
"name": "unified",
"direct": false,
"version": "10.1.2",
"ecosystem": "npm"
},
{
"name": "unique-filename",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "unique-slug",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "unist-util-generated",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "unist-util-is",
"direct": false,
"version": "5.2.1",
"ecosystem": "npm"
},
{
"name": "unist-util-position",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "unist-util-position-from-estree",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "unist-util-remove-position",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "unist-util-stringify-position",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "unist-util-visit",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "unist-util-visit-parents",
"direct": false,
"version": "5.1.3",
"ecosystem": "npm"
},
{
"name": "universalify",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "unpipe",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "update-browserslist-db",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "use-callback-ref",
"direct": false,
"version": "1.3.3",
"ecosystem": "npm"
},
{
"name": "use-sidecar",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "use-sync-external-store",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "util",
"direct": false,
"version": "0.12.5",
"ecosystem": "npm"
},
{
"name": "util-deprecate",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "utils-merge",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "uvu",
"direct": false,
"version": "0.5.6",
"ecosystem": "npm"
},
{
"name": "valibot",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "validate-npm-package-license",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "validate-npm-package-name",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "vary",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "vfile",
"direct": false,
"version": "5.3.7",
"ecosystem": "npm"
},
{
"name": "vfile-message",
"direct": false,
"version": "3.1.4",
"ecosystem": "npm"
},
{
"name": "vite",
"direct": false,
"version": "5.4.21",
"ecosystem": "npm"
},
{
"name": "vite-node",
"direct": false,
"version": "1.6.1",
"ecosystem": "npm"
},
{
"name": "vite-node",
"direct": false,
"version": "3.2.4",
"ecosystem": "npm"
},
{
"name": "w3c-xmlserializer",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "wcwidth",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "web-encoding",
"direct": false,
"version": "1.1.5",
"ecosystem": "npm"
},
{
"name": "web-streams-polyfill",
"direct": false,
"version": "3.3.3",
"ecosystem": "npm"
},
{
"name": "webidl-conversions",
"direct": false,
"version": "8.0.1",
"ecosystem": "npm"
},
{
"name": "whatwg-mimetype",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "whatwg-url",
"direct": false,
"version": "16.0.1",
"ecosystem": "npm"
},
{
"name": "which",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "which",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "which-typed-array",
"direct": false,
"version": "1.1.20",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "8.1.0",
"ecosystem": "npm"
},
{
"name": "wrappy",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "ws",
"direct": false,
"version": "7.5.10",
"ecosystem": "npm"
},
{
"name": "xml-name-validator",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "xmlchars",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "xtend",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "yallist",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "yallist",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "yaml",
"direct": false,
"version": "2.8.4",
"ecosystem": "npm"
},
{
"name": "yocto-queue",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
},
{
"name": "zwitch",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
}
],
"collected": true,
"truncated": false,
"total_count": 882,
"direct_count": 33,
"indirect_count": 849
}
},
"maintainership": {
"issues": {
"open_prs": 5,
"merged_prs": 31,
"open_issues": 14,
"closed_ratio": 0.176,
"closed_issues": 3,
"closed_unmerged_prs": 7
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "scotwells",
"commits": 107,
"avatar_url": "https://avatars.githubusercontent.com/u/6007097?v=4"
},
{
"type": "User",
"login": "JoseSzycho",
"commits": 17,
"avatar_url": "https://avatars.githubusercontent.com/u/77838520?v=4"
},
{
"type": "User",
"login": "savme",
"commits": 13,
"avatar_url": "https://avatars.githubusercontent.com/u/40720931?v=4"
},
{
"type": "User",
"login": "kevwilliams",
"commits": 10,
"avatar_url": "https://avatars.githubusercontent.com/u/1724763?v=4"
},
{
"type": "User",
"login": "mattdjenkinson",
"commits": 3,
"avatar_url": "https://avatars.githubusercontent.com/u/75292329?v=4"
},
{
"type": "User",
"login": "yahyafakhroji",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/3510868?v=4"
}
],
"contributors_sampled": 6,
"top_contributor_share": 0.704
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"e2e.yml",
"lint.yml",
"publish.yaml",
"test.yml",
"ui-demo.yml",
"validate-kustomize.yaml",
"verify.yml"
],
"has_docs_dir": true,
"linter_configs": [
".golangci.yml"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"go.sum",
"pnpm-lock.yaml"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": null,
"reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "4 out of 4 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 10,
"reason": "all changesets reviewed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 3,
"reason": "project has 1 contributing companies or organizations -- score normalized to 3",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 0,
"reason": "license file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 0,
"reason": "65 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "b9c74bbaa8b0a1f25e1f44ecc2dc3ebd398c339d",
"ran_at": "2026-07-26T15:14:32Z",
"aggregate_score": 4.2,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-24T13:05:00Z",
"oldest_open_prs": [
{
"number": 9,
"created_at": "2026-05-13T12:23:16Z",
"last_comment_at": "2026-05-28T16:20:18Z",
"last_comment_author": "scotwells"
},
{
"number": 17,
"created_at": "2026-05-20T01:51:50Z",
"last_comment_at": "2026-05-20T02:14:38Z",
"last_comment_author": "github-actions"
},
{
"number": 20,
"created_at": "2026-05-24T18:18:08Z",
"last_comment_at": "2026-05-28T16:20:11Z",
"last_comment_author": "scotwells"
},
{
"number": 44,
"created_at": "2026-06-20T13:37:08Z",
"last_comment_at": "2026-06-25T12:38:38Z",
"last_comment_author": "JoseSzycho"
},
{
"number": 49,
"created_at": "2026-07-03T14:43:33Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-07-24T13:01:11Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 3,
"created_at": "2026-05-04T23:39:11Z",
"last_comment_at": "2026-05-05T01:27:58Z",
"last_comment_author": "scotwells"
},
{
"number": 4,
"created_at": "2026-05-05T01:27:53Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 5,
"created_at": "2026-05-06T01:46:31Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 6,
"created_at": "2026-05-06T23:41:24Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 21,
"created_at": "2026-05-26T09:39:20Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 24,
"created_at": "2026-05-27T14:15:00Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 32,
"created_at": "2026-06-03T12:38:13Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 35,
"created_at": "2026-06-03T21:56:06Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 36,
"created_at": "2026-06-03T22:41:12Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 45,
"created_at": "2026-06-28T17:00:09Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 46,
"created_at": "2026-06-28T17:00:10Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 47,
"created_at": "2026-06-28T17:00:11Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 48,
"created_at": "2026-07-01T23:43:30Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 60,
"created_at": "2026-07-23T22:00:08Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/milo-os/service-catalog",
"host": "github.com",
"name": "service-catalog",
"owner": "milo-os"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 56,
"inputs": {
"security": 48,
"vitality": 83,
"community": 12,
"governance": 52,
"engineering": 76
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 83,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 72,
"inputs": {
"commits_last_year": 152,
"human_commit_share": 1,
"days_since_last_push": 2,
"active_weeks_last_year": 12
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 2 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 2
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "12/52 weeks with commits",
"points": 8.3,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 12
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "152 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 152
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"releases_count": 4,
"latest_release_tag": "v0.3.1",
"releases_from_tags": false,
"days_since_latest_release": 33,
"mean_days_between_releases": 7
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "4 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 4
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 33 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 33
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~7 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 7
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "unverified",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": "repository_too_young",
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": null,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "maintenance record not established from the collected data",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_unverified",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "critical",
"name": "Community & Adoption",
"value": 12,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"forks": 0,
"stars": 0,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "0 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 0
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "0 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 0
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "critical",
"name": "Community health",
"note": null,
"notes": [],
"value": 25,
"inputs": {
"has_readme": true,
"has_license": false,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "no license file detected",
"points": 0,
"status": "missed",
"details": [
{
"code": "license_absent",
"params": {}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 52,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 27,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 6,
"top_contributor_share": 0.704
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 70% of commits",
"points": 6.7,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 70
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "6 contributors",
"points": 8.1,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 6
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 3,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "moderate",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 54,
"inputs": {
"merged_prs": 31,
"open_issues": 14,
"closed_issues": 3,
"issue_closed_ratio": 0.176,
"closed_unmerged_prs": 7
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "18% of issues closed",
"points": 8.2,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 18
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "31/38 decided PRs merged",
"points": 31.2,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 31,
"decided": 38
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "all changesets reviewed",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "at_risk",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 49,
"inputs": {
"followers": 11,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "milo-os",
"public_repos": 30,
"account_age_days": 93
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "11 followers of milo-os",
"points": 7.8,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 11,
"login": "milo-os"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "30 public repos, account ~0 yr old",
"points": 11.4,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 30
}
},
{
"code": "account_age_years",
"params": {
"years": 0
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 92,
"inputs": {
"packages": [
"go.miloapis.com/service-catalog"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 40
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on go",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "go"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 40 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 40
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "4 published versions",
"points": 12,
"status": "partial",
"details": [
{
"code": "published_versions",
"params": {
"count": 4
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 76,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 84,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "7 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 7
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": ".golangci.yml",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "4 out of 4 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"topics": [],
"has_wiki": false,
"homepage": null,
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "at_risk",
"name": "Security",
"value": 48,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection, Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection",
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 42,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 15,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 3,
"scorecard_aggregate": 4.2
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "4 out of 4 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "all changesets reviewed",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 0.8,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "65 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "good",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories. Remaining weights renormalized. Matched 882 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"indirect_dependencies_free_of_known_advisories"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 882
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 72,
"inputs": {
"source": "osv",
"advisories": 73,
"affected_packages": 28,
"assessed_packages": 882,
"unassessed_packages": 0,
"affected_by_severity": "critical 1, high 11, moderate 11, low 2, unknown 3",
"direct_affected_packages": 1
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "1 affected: js-yaml 4.1.1 (high 7.5)",
"points": 14,
"status": "partial",
"details": [
{
"code": "advisories_affected",
"params": {
"count": 1,
"packages": "js-yaml 4.1.1 (high 7.5)"
}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "transitive set not separable from development and test dependencies in this scope",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_scope_not_separable",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory has been public longer than 90 days",
"points": 40,
"status": "met",
"details": [
{
"code": "advisories_none_stale",
"params": {
"days": 90
}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "excellent",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 882,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 6
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "good",
"name": "AI Readiness",
"value": 79,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.9,
"agent_instruction_files": [
"CLAUDE.md"
],
"agent_instruction_max_bytes": 2859
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "CLAUDE.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "CLAUDE.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "90 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 90,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 82,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"go.sum",
"pnpm-lock.yaml"
],
"has_dockerfile": true,
"typed_language": true,
"bootstrap_files": [
"Taskfile.yaml",
"ui/Taskfile.yaml"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"ui/tsconfig.json"
],
"agent_commit_share": 0.31,
"toolchain_manifests": [
"go.mod"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Taskfile.yaml, ui/Taskfile.yaml",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Taskfile.yaml, ui/Taskfile.yaml"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".golangci.yml",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "ui/tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "ui/tsconfig.json"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "Dockerfile, lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Dockerfile, lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "31 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 31,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "Go",
"largest_source_bytes": 60415,
"source_files_sampled": 137,
"oversized_source_files": 1
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Go (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "1/137 source files over 60KB",
"points": 54.6,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 137,
"oversized": 1
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "at_risk",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"samples"
],
"has_mcp_signal": false,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "samples",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "samples"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [],
"report_type": "repository",
"generated_at": "2026-07-26T15:14:48.617971Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/m/milo-os/service-catalog.svg",
"full_name": "milo-os/service-catalog",
"license_state": "absent",
"license_spdx": null
}