@enbox/gitd 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +177 -0
- package/README.md +134 -0
- package/dist/esm/ci.js +76 -0
- package/dist/esm/ci.js.map +1 -0
- package/dist/esm/cli/agent.js +86 -0
- package/dist/esm/cli/agent.js.map +1 -0
- package/dist/esm/cli/commands/ci.js +278 -0
- package/dist/esm/cli/commands/ci.js.map +1 -0
- package/dist/esm/cli/commands/clone.js +77 -0
- package/dist/esm/cli/commands/clone.js.map +1 -0
- package/dist/esm/cli/commands/daemon.js +132 -0
- package/dist/esm/cli/commands/daemon.js.map +1 -0
- package/dist/esm/cli/commands/github-api.js +36 -0
- package/dist/esm/cli/commands/github-api.js.map +1 -0
- package/dist/esm/cli/commands/init.js +69 -0
- package/dist/esm/cli/commands/init.js.map +1 -0
- package/dist/esm/cli/commands/issue.js +293 -0
- package/dist/esm/cli/commands/issue.js.map +1 -0
- package/dist/esm/cli/commands/log.js +90 -0
- package/dist/esm/cli/commands/log.js.map +1 -0
- package/dist/esm/cli/commands/migrate.js +444 -0
- package/dist/esm/cli/commands/migrate.js.map +1 -0
- package/dist/esm/cli/commands/notification.js +141 -0
- package/dist/esm/cli/commands/notification.js.map +1 -0
- package/dist/esm/cli/commands/org.js +353 -0
- package/dist/esm/cli/commands/org.js.map +1 -0
- package/dist/esm/cli/commands/patch.js +375 -0
- package/dist/esm/cli/commands/patch.js.map +1 -0
- package/dist/esm/cli/commands/registry.js +501 -0
- package/dist/esm/cli/commands/registry.js.map +1 -0
- package/dist/esm/cli/commands/release.js +197 -0
- package/dist/esm/cli/commands/release.js.map +1 -0
- package/dist/esm/cli/commands/repo.js +148 -0
- package/dist/esm/cli/commands/repo.js.map +1 -0
- package/dist/esm/cli/commands/serve.js +148 -0
- package/dist/esm/cli/commands/serve.js.map +1 -0
- package/dist/esm/cli/commands/setup.js +92 -0
- package/dist/esm/cli/commands/setup.js.map +1 -0
- package/dist/esm/cli/commands/shim.js +75 -0
- package/dist/esm/cli/commands/shim.js.map +1 -0
- package/dist/esm/cli/commands/social.js +206 -0
- package/dist/esm/cli/commands/social.js.map +1 -0
- package/dist/esm/cli/commands/web.js +36 -0
- package/dist/esm/cli/commands/web.js.map +1 -0
- package/dist/esm/cli/commands/wiki.js +185 -0
- package/dist/esm/cli/commands/wiki.js.map +1 -0
- package/dist/esm/cli/flags.js +29 -0
- package/dist/esm/cli/flags.js.map +1 -0
- package/dist/esm/cli/main.js +331 -0
- package/dist/esm/cli/main.js.map +1 -0
- package/dist/esm/cli/repo-context.js +53 -0
- package/dist/esm/cli/repo-context.js.map +1 -0
- package/dist/esm/daemon/adapter.js +18 -0
- package/dist/esm/daemon/adapter.js.map +1 -0
- package/dist/esm/daemon/adapters/github.js +112 -0
- package/dist/esm/daemon/adapters/github.js.map +1 -0
- package/dist/esm/daemon/adapters/go.js +51 -0
- package/dist/esm/daemon/adapters/go.js.map +1 -0
- package/dist/esm/daemon/adapters/index.js +32 -0
- package/dist/esm/daemon/adapters/index.js.map +1 -0
- package/dist/esm/daemon/adapters/npm.js +51 -0
- package/dist/esm/daemon/adapters/npm.js.map +1 -0
- package/dist/esm/daemon/adapters/oci.js +62 -0
- package/dist/esm/daemon/adapters/oci.js.map +1 -0
- package/dist/esm/daemon/index.js +12 -0
- package/dist/esm/daemon/index.js.map +1 -0
- package/dist/esm/daemon/server.js +167 -0
- package/dist/esm/daemon/server.js.map +1 -0
- package/dist/esm/git-remote/credential-helper.js +106 -0
- package/dist/esm/git-remote/credential-helper.js.map +1 -0
- package/dist/esm/git-remote/credential-main.js +109 -0
- package/dist/esm/git-remote/credential-main.js.map +1 -0
- package/dist/esm/git-remote/index.js +10 -0
- package/dist/esm/git-remote/index.js.map +1 -0
- package/dist/esm/git-remote/main.js +78 -0
- package/dist/esm/git-remote/main.js.map +1 -0
- package/dist/esm/git-remote/parse-url.js +60 -0
- package/dist/esm/git-remote/parse-url.js.map +1 -0
- package/dist/esm/git-remote/resolve.js +175 -0
- package/dist/esm/git-remote/resolve.js.map +1 -0
- package/dist/esm/git-remote/service.js +82 -0
- package/dist/esm/git-remote/service.js.map +1 -0
- package/dist/esm/git-server/auth.js +211 -0
- package/dist/esm/git-server/auth.js.map +1 -0
- package/dist/esm/git-server/bundle-restore.js +180 -0
- package/dist/esm/git-server/bundle-restore.js.map +1 -0
- package/dist/esm/git-server/bundle-sync.js +233 -0
- package/dist/esm/git-server/bundle-sync.js.map +1 -0
- package/dist/esm/git-server/did-service.js +73 -0
- package/dist/esm/git-server/did-service.js.map +1 -0
- package/dist/esm/git-server/git-backend.js +186 -0
- package/dist/esm/git-server/git-backend.js.map +1 -0
- package/dist/esm/git-server/http-handler.js +295 -0
- package/dist/esm/git-server/http-handler.js.map +1 -0
- package/dist/esm/git-server/index.js +16 -0
- package/dist/esm/git-server/index.js.map +1 -0
- package/dist/esm/git-server/push-authorizer.js +62 -0
- package/dist/esm/git-server/push-authorizer.js.map +1 -0
- package/dist/esm/git-server/ref-sync.js +132 -0
- package/dist/esm/git-server/ref-sync.js.map +1 -0
- package/dist/esm/git-server/server.js +185 -0
- package/dist/esm/git-server/server.js.map +1 -0
- package/dist/esm/git-server/verify.js +109 -0
- package/dist/esm/git-server/verify.js.map +1 -0
- package/dist/esm/github-shim/helpers.js +273 -0
- package/dist/esm/github-shim/helpers.js.map +1 -0
- package/dist/esm/github-shim/index.js +13 -0
- package/dist/esm/github-shim/index.js.map +1 -0
- package/dist/esm/github-shim/issues.js +318 -0
- package/dist/esm/github-shim/issues.js.map +1 -0
- package/dist/esm/github-shim/pulls.js +423 -0
- package/dist/esm/github-shim/pulls.js.map +1 -0
- package/dist/esm/github-shim/releases.js +154 -0
- package/dist/esm/github-shim/releases.js.map +1 -0
- package/dist/esm/github-shim/repos.js +86 -0
- package/dist/esm/github-shim/repos.js.map +1 -0
- package/dist/esm/github-shim/server.js +351 -0
- package/dist/esm/github-shim/server.js.map +1 -0
- package/dist/esm/github-shim/users.js +61 -0
- package/dist/esm/github-shim/users.js.map +1 -0
- package/dist/esm/index.js +26 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/indexer/api.js +132 -0
- package/dist/esm/indexer/api.js.map +1 -0
- package/dist/esm/indexer/crawler.js +256 -0
- package/dist/esm/indexer/crawler.js.map +1 -0
- package/dist/esm/indexer/index.js +9 -0
- package/dist/esm/indexer/index.js.map +1 -0
- package/dist/esm/indexer/main.js +76 -0
- package/dist/esm/indexer/main.js.map +1 -0
- package/dist/esm/indexer/store.js +334 -0
- package/dist/esm/indexer/store.js.map +1 -0
- package/dist/esm/issues.js +133 -0
- package/dist/esm/issues.js.map +1 -0
- package/dist/esm/notifications.js +47 -0
- package/dist/esm/notifications.js.map +1 -0
- package/dist/esm/org.js +90 -0
- package/dist/esm/org.js.map +1 -0
- package/dist/esm/patches.js +136 -0
- package/dist/esm/patches.js.map +1 -0
- package/dist/esm/refs.js +54 -0
- package/dist/esm/refs.js.map +1 -0
- package/dist/esm/registry.js +81 -0
- package/dist/esm/registry.js.map +1 -0
- package/dist/esm/releases.js +78 -0
- package/dist/esm/releases.js.map +1 -0
- package/dist/esm/repo.js +150 -0
- package/dist/esm/repo.js.map +1 -0
- package/dist/esm/resolver/index.js +10 -0
- package/dist/esm/resolver/index.js.map +1 -0
- package/dist/esm/resolver/resolve.js +189 -0
- package/dist/esm/resolver/resolve.js.map +1 -0
- package/dist/esm/resolver/trust-chain.js +155 -0
- package/dist/esm/resolver/trust-chain.js.map +1 -0
- package/dist/esm/resolver/verify.js +186 -0
- package/dist/esm/resolver/verify.js.map +1 -0
- package/dist/esm/shims/go/index.js +9 -0
- package/dist/esm/shims/go/index.js.map +1 -0
- package/dist/esm/shims/go/proxy.js +275 -0
- package/dist/esm/shims/go/proxy.js.map +1 -0
- package/dist/esm/shims/go/server.js +70 -0
- package/dist/esm/shims/go/server.js.map +1 -0
- package/dist/esm/shims/index.js +15 -0
- package/dist/esm/shims/index.js.map +1 -0
- package/dist/esm/shims/npm/index.js +9 -0
- package/dist/esm/shims/npm/index.js.map +1 -0
- package/dist/esm/shims/npm/registry.js +234 -0
- package/dist/esm/shims/npm/registry.js.map +1 -0
- package/dist/esm/shims/npm/server.js +72 -0
- package/dist/esm/shims/npm/server.js.map +1 -0
- package/dist/esm/shims/oci/index.js +9 -0
- package/dist/esm/shims/oci/index.js.map +1 -0
- package/dist/esm/shims/oci/registry.js +276 -0
- package/dist/esm/shims/oci/registry.js.map +1 -0
- package/dist/esm/shims/oci/server.js +82 -0
- package/dist/esm/shims/oci/server.js.map +1 -0
- package/dist/esm/social.js +70 -0
- package/dist/esm/social.js.map +1 -0
- package/dist/esm/web/html.js +123 -0
- package/dist/esm/web/html.js.map +1 -0
- package/dist/esm/web/index.js +7 -0
- package/dist/esm/web/index.js.map +1 -0
- package/dist/esm/web/routes.js +420 -0
- package/dist/esm/web/routes.js.map +1 -0
- package/dist/esm/web/server.js +225 -0
- package/dist/esm/web/server.js.map +1 -0
- package/dist/esm/wiki.js +63 -0
- package/dist/esm/wiki.js.map +1 -0
- package/dist/types/ci.d.ts +203 -0
- package/dist/types/ci.d.ts.map +1 -0
- package/dist/types/cli/agent.d.ts +59 -0
- package/dist/types/cli/agent.d.ts.map +1 -0
- package/dist/types/cli/commands/ci.d.ts +16 -0
- package/dist/types/cli/commands/ci.d.ts.map +1 -0
- package/dist/types/cli/commands/clone.d.ts +13 -0
- package/dist/types/cli/commands/clone.d.ts.map +1 -0
- package/dist/types/cli/commands/daemon.d.ts +29 -0
- package/dist/types/cli/commands/daemon.d.ts.map +1 -0
- package/dist/types/cli/commands/github-api.d.ts +14 -0
- package/dist/types/cli/commands/github-api.d.ts.map +1 -0
- package/dist/types/cli/commands/init.d.ts +11 -0
- package/dist/types/cli/commands/init.d.ts.map +1 -0
- package/dist/types/cli/commands/issue.d.ts +16 -0
- package/dist/types/cli/commands/issue.d.ts.map +1 -0
- package/dist/types/cli/commands/log.d.ts +13 -0
- package/dist/types/cli/commands/log.d.ts.map +1 -0
- package/dist/types/cli/commands/migrate.d.ts +19 -0
- package/dist/types/cli/commands/migrate.d.ts.map +1 -0
- package/dist/types/cli/commands/notification.d.ts +16 -0
- package/dist/types/cli/commands/notification.d.ts.map +1 -0
- package/dist/types/cli/commands/org.d.ts +19 -0
- package/dist/types/cli/commands/org.d.ts.map +1 -0
- package/dist/types/cli/commands/patch.d.ts +17 -0
- package/dist/types/cli/commands/patch.d.ts.map +1 -0
- package/dist/types/cli/commands/registry.d.ts +25 -0
- package/dist/types/cli/commands/registry.d.ts.map +1 -0
- package/dist/types/cli/commands/release.d.ts +13 -0
- package/dist/types/cli/commands/release.d.ts.map +1 -0
- package/dist/types/cli/commands/repo.d.ts +15 -0
- package/dist/types/cli/commands/repo.d.ts.map +1 -0
- package/dist/types/cli/commands/serve.d.ts +22 -0
- package/dist/types/cli/commands/serve.d.ts.map +1 -0
- package/dist/types/cli/commands/setup.d.ts +16 -0
- package/dist/types/cli/commands/setup.d.ts.map +1 -0
- package/dist/types/cli/commands/shim.d.ts +16 -0
- package/dist/types/cli/commands/shim.d.ts.map +1 -0
- package/dist/types/cli/commands/social.d.ts +19 -0
- package/dist/types/cli/commands/social.d.ts.map +1 -0
- package/dist/types/cli/commands/web.d.ts +14 -0
- package/dist/types/cli/commands/web.d.ts.map +1 -0
- package/dist/types/cli/commands/wiki.d.ts +14 -0
- package/dist/types/cli/commands/wiki.d.ts.map +1 -0
- package/dist/types/cli/flags.d.ts +16 -0
- package/dist/types/cli/flags.d.ts.map +1 -0
- package/dist/types/cli/main.d.ts +69 -0
- package/dist/types/cli/main.d.ts.map +1 -0
- package/dist/types/cli/repo-context.d.ts +30 -0
- package/dist/types/cli/repo-context.d.ts.map +1 -0
- package/dist/types/daemon/adapter.d.ts +74 -0
- package/dist/types/daemon/adapter.d.ts.map +1 -0
- package/dist/types/daemon/adapters/github.d.ts +10 -0
- package/dist/types/daemon/adapters/github.d.ts.map +1 -0
- package/dist/types/daemon/adapters/go.d.ts +10 -0
- package/dist/types/daemon/adapters/go.d.ts.map +1 -0
- package/dist/types/daemon/adapters/index.d.ts +22 -0
- package/dist/types/daemon/adapters/index.d.ts.map +1 -0
- package/dist/types/daemon/adapters/npm.d.ts +10 -0
- package/dist/types/daemon/adapters/npm.d.ts.map +1 -0
- package/dist/types/daemon/adapters/oci.d.ts +10 -0
- package/dist/types/daemon/adapters/oci.d.ts.map +1 -0
- package/dist/types/daemon/index.d.ts +14 -0
- package/dist/types/daemon/index.d.ts.map +1 -0
- package/dist/types/daemon/server.d.ts +55 -0
- package/dist/types/daemon/server.d.ts.map +1 -0
- package/dist/types/git-remote/credential-helper.d.ts +49 -0
- package/dist/types/git-remote/credential-helper.d.ts.map +1 -0
- package/dist/types/git-remote/credential-main.d.ts +24 -0
- package/dist/types/git-remote/credential-main.d.ts.map +1 -0
- package/dist/types/git-remote/index.d.ts +10 -0
- package/dist/types/git-remote/index.d.ts.map +1 -0
- package/dist/types/git-remote/main.d.ts +23 -0
- package/dist/types/git-remote/main.d.ts.map +1 -0
- package/dist/types/git-remote/parse-url.d.ts +32 -0
- package/dist/types/git-remote/parse-url.d.ts.map +1 -0
- package/dist/types/git-remote/resolve.d.ts +30 -0
- package/dist/types/git-remote/resolve.d.ts.map +1 -0
- package/dist/types/git-remote/service.d.ts +75 -0
- package/dist/types/git-remote/service.d.ts.map +1 -0
- package/dist/types/git-server/auth.d.ts +129 -0
- package/dist/types/git-server/auth.d.ts.map +1 -0
- package/dist/types/git-server/bundle-restore.d.ts +48 -0
- package/dist/types/git-server/bundle-restore.d.ts.map +1 -0
- package/dist/types/git-server/bundle-sync.d.ts +90 -0
- package/dist/types/git-server/bundle-sync.d.ts.map +1 -0
- package/dist/types/git-server/did-service.d.ts +26 -0
- package/dist/types/git-server/did-service.d.ts.map +1 -0
- package/dist/types/git-server/git-backend.d.ts +84 -0
- package/dist/types/git-server/git-backend.d.ts.map +1 -0
- package/dist/types/git-server/http-handler.d.ts +73 -0
- package/dist/types/git-server/http-handler.d.ts.map +1 -0
- package/dist/types/git-server/index.d.ts +16 -0
- package/dist/types/git-server/index.d.ts.map +1 -0
- package/dist/types/git-server/push-authorizer.d.ts +38 -0
- package/dist/types/git-server/push-authorizer.d.ts.map +1 -0
- package/dist/types/git-server/ref-sync.d.ts +52 -0
- package/dist/types/git-server/ref-sync.d.ts.map +1 -0
- package/dist/types/git-server/server.d.ts +70 -0
- package/dist/types/git-server/server.d.ts.map +1 -0
- package/dist/types/git-server/verify.d.ts +12 -0
- package/dist/types/git-server/verify.d.ts.map +1 -0
- package/dist/types/github-shim/helpers.d.ts +108 -0
- package/dist/types/github-shim/helpers.d.ts.map +1 -0
- package/dist/types/github-shim/index.d.ts +15 -0
- package/dist/types/github-shim/index.d.ts.map +1 -0
- package/dist/types/github-shim/issues.d.ts +24 -0
- package/dist/types/github-shim/issues.d.ts.map +1 -0
- package/dist/types/github-shim/pulls.d.ts +31 -0
- package/dist/types/github-shim/pulls.d.ts.map +1 -0
- package/dist/types/github-shim/releases.d.ts +18 -0
- package/dist/types/github-shim/releases.d.ts.map +1 -0
- package/dist/types/github-shim/repos.d.ts +21 -0
- package/dist/types/github-shim/repos.d.ts.map +1 -0
- package/dist/types/github-shim/server.d.ts +53 -0
- package/dist/types/github-shim/server.d.ts.map +1 -0
- package/dist/types/github-shim/users.d.ts +17 -0
- package/dist/types/github-shim/users.d.ts.map +1 -0
- package/dist/types/index.d.ts +26 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/indexer/api.d.ts +32 -0
- package/dist/types/indexer/api.d.ts.map +1 -0
- package/dist/types/indexer/crawler.d.ts +72 -0
- package/dist/types/indexer/crawler.d.ts.map +1 -0
- package/dist/types/indexer/index.d.ts +12 -0
- package/dist/types/indexer/index.d.ts.map +1 -0
- package/dist/types/indexer/main.d.ts +21 -0
- package/dist/types/indexer/main.d.ts.map +1 -0
- package/dist/types/indexer/store.d.ts +168 -0
- package/dist/types/indexer/store.d.ts.map +1 -0
- package/dist/types/issues.d.ts +395 -0
- package/dist/types/issues.d.ts.map +1 -0
- package/dist/types/notifications.d.ts +93 -0
- package/dist/types/notifications.d.ts.map +1 -0
- package/dist/types/org.d.ts +232 -0
- package/dist/types/org.d.ts.map +1 -0
- package/dist/types/patches.d.ts +410 -0
- package/dist/types/patches.d.ts.map +1 -0
- package/dist/types/refs.d.ts +114 -0
- package/dist/types/refs.d.ts.map +1 -0
- package/dist/types/registry.d.ts +212 -0
- package/dist/types/registry.d.ts.map +1 -0
- package/dist/types/releases.d.ts +204 -0
- package/dist/types/releases.d.ts.map +1 -0
- package/dist/types/repo.d.ts +450 -0
- package/dist/types/repo.d.ts.map +1 -0
- package/dist/types/resolver/index.d.ts +13 -0
- package/dist/types/resolver/index.d.ts.map +1 -0
- package/dist/types/resolver/resolve.d.ts +80 -0
- package/dist/types/resolver/resolve.d.ts.map +1 -0
- package/dist/types/resolver/trust-chain.d.ts +54 -0
- package/dist/types/resolver/trust-chain.d.ts.map +1 -0
- package/dist/types/resolver/verify.d.ts +62 -0
- package/dist/types/resolver/verify.d.ts.map +1 -0
- package/dist/types/shims/go/index.d.ts +11 -0
- package/dist/types/shims/go/index.d.ts.map +1 -0
- package/dist/types/shims/go/proxy.d.ts +51 -0
- package/dist/types/shims/go/proxy.d.ts.map +1 -0
- package/dist/types/shims/go/server.d.ts +23 -0
- package/dist/types/shims/go/server.d.ts.map +1 -0
- package/dist/types/shims/index.d.ts +18 -0
- package/dist/types/shims/index.d.ts.map +1 -0
- package/dist/types/shims/npm/index.d.ts +11 -0
- package/dist/types/shims/npm/index.d.ts.map +1 -0
- package/dist/types/shims/npm/registry.d.ts +46 -0
- package/dist/types/shims/npm/registry.d.ts.map +1 -0
- package/dist/types/shims/npm/server.d.ts +23 -0
- package/dist/types/shims/npm/server.d.ts.map +1 -0
- package/dist/types/shims/oci/index.d.ts +11 -0
- package/dist/types/shims/oci/index.d.ts.map +1 -0
- package/dist/types/shims/oci/registry.d.ts +56 -0
- package/dist/types/shims/oci/registry.d.ts.map +1 -0
- package/dist/types/shims/oci/server.d.ts +23 -0
- package/dist/types/shims/oci/server.d.ts.map +1 -0
- package/dist/types/social.d.ts +162 -0
- package/dist/types/social.d.ts.map +1 -0
- package/dist/types/web/html.d.ts +23 -0
- package/dist/types/web/html.d.ts.map +1 -0
- package/dist/types/web/index.d.ts +8 -0
- package/dist/types/web/index.d.ts.map +1 -0
- package/dist/types/web/routes.d.ts +21 -0
- package/dist/types/web/routes.d.ts.map +1 -0
- package/dist/types/web/server.d.ts +38 -0
- package/dist/types/web/server.d.ts.map +1 -0
- package/dist/types/wiki.d.ts +143 -0
- package/dist/types/wiki.d.ts.map +1 -0
- package/package.json +108 -0
- package/schemas/ci/check-run.json +23 -0
- package/schemas/ci/check-suite.json +23 -0
- package/schemas/issues/assignment.json +17 -0
- package/schemas/issues/comment.json +14 -0
- package/schemas/issues/issue.json +20 -0
- package/schemas/issues/label.json +17 -0
- package/schemas/issues/reaction.json +14 -0
- package/schemas/issues/status-change.json +14 -0
- package/schemas/notifications/notification.json +20 -0
- package/schemas/org/org-member.json +17 -0
- package/schemas/org/org.json +26 -0
- package/schemas/org/team-member.json +17 -0
- package/schemas/org/team.json +17 -0
- package/schemas/patches/merge-result.json +14 -0
- package/schemas/patches/patch-status-change.json +14 -0
- package/schemas/patches/patch.json +20 -0
- package/schemas/patches/review-comment.json +17 -0
- package/schemas/patches/review.json +14 -0
- package/schemas/patches/revision.json +30 -0
- package/schemas/refs/git-ref.json +32 -0
- package/schemas/registry/attestation.json +23 -0
- package/schemas/registry/package-version.json +23 -0
- package/schemas/registry/package.json +32 -0
- package/schemas/releases/release.json +17 -0
- package/schemas/repo/collaborator.json +17 -0
- package/schemas/repo/repo.json +35 -0
- package/schemas/repo/settings.json +39 -0
- package/schemas/repo/topic.json +14 -0
- package/schemas/repo/webhook.json +26 -0
- package/schemas/social/activity.json +23 -0
- package/schemas/social/follow.json +17 -0
- package/schemas/social/star.json +20 -0
- package/schemas/wiki/wiki-history.json +20 -0
- package/schemas/wiki/wiki-page.json +17 -0
- package/src/ci.ts +118 -0
- package/src/cli/agent.ts +117 -0
- package/src/cli/commands/ci.ts +300 -0
- package/src/cli/commands/clone.ts +78 -0
- package/src/cli/commands/daemon.ts +129 -0
- package/src/cli/commands/github-api.ts +30 -0
- package/src/cli/commands/init.ts +69 -0
- package/src/cli/commands/issue.ts +321 -0
- package/src/cli/commands/log.ts +106 -0
- package/src/cli/commands/migrate.ts +525 -0
- package/src/cli/commands/notification.ts +148 -0
- package/src/cli/commands/org.ts +381 -0
- package/src/cli/commands/patch.ts +413 -0
- package/src/cli/commands/registry.ts +542 -0
- package/src/cli/commands/release.ts +189 -0
- package/src/cli/commands/repo.ts +160 -0
- package/src/cli/commands/serve.ts +153 -0
- package/src/cli/commands/setup.ts +97 -0
- package/src/cli/commands/shim.ts +79 -0
- package/src/cli/commands/social.ts +221 -0
- package/src/cli/commands/web.ts +30 -0
- package/src/cli/commands/wiki.ts +199 -0
- package/src/cli/flags.ts +28 -0
- package/src/cli/main.ts +350 -0
- package/src/cli/repo-context.ts +55 -0
- package/src/daemon/adapter.ts +95 -0
- package/src/daemon/adapters/github.ts +86 -0
- package/src/daemon/adapters/go.ts +47 -0
- package/src/daemon/adapters/index.ts +36 -0
- package/src/daemon/adapters/npm.ts +47 -0
- package/src/daemon/adapters/oci.ts +59 -0
- package/src/daemon/index.ts +16 -0
- package/src/daemon/server.ts +204 -0
- package/src/git-remote/credential-helper.ts +114 -0
- package/src/git-remote/credential-main.ts +118 -0
- package/src/git-remote/index.ts +10 -0
- package/src/git-remote/main.ts +74 -0
- package/src/git-remote/parse-url.ts +81 -0
- package/src/git-remote/resolve.ts +207 -0
- package/src/git-remote/service.ts +126 -0
- package/src/git-server/auth.ts +308 -0
- package/src/git-server/bundle-restore.ts +217 -0
- package/src/git-server/bundle-sync.ts +300 -0
- package/src/git-server/did-service.ts +77 -0
- package/src/git-server/git-backend.ts +222 -0
- package/src/git-server/http-handler.ts +386 -0
- package/src/git-server/index.ts +16 -0
- package/src/git-server/push-authorizer.ts +77 -0
- package/src/git-server/ref-sync.ts +166 -0
- package/src/git-server/server.ts +236 -0
- package/src/git-server/verify.ts +116 -0
- package/src/github-shim/helpers.ts +311 -0
- package/src/github-shim/index.ts +35 -0
- package/src/github-shim/issues.ts +389 -0
- package/src/github-shim/pulls.ts +500 -0
- package/src/github-shim/releases.ts +185 -0
- package/src/github-shim/repos.ts +95 -0
- package/src/github-shim/server.ts +334 -0
- package/src/github-shim/users.ts +63 -0
- package/src/index.ts +26 -0
- package/src/indexer/api.ts +162 -0
- package/src/indexer/crawler.ts +290 -0
- package/src/indexer/index.ts +22 -0
- package/src/indexer/main.ts +83 -0
- package/src/indexer/store.ts +408 -0
- package/src/issues.ts +200 -0
- package/src/notifications.ts +80 -0
- package/src/org.ts +147 -0
- package/src/patches.ts +203 -0
- package/src/refs.ts +94 -0
- package/src/registry.ts +132 -0
- package/src/releases.ts +124 -0
- package/src/repo.ts +234 -0
- package/src/resolver/index.ts +42 -0
- package/src/resolver/resolve.ts +244 -0
- package/src/resolver/trust-chain.ts +217 -0
- package/src/resolver/verify.ts +237 -0
- package/src/shims/go/index.ts +14 -0
- package/src/shims/go/proxy.ts +336 -0
- package/src/shims/go/server.ts +82 -0
- package/src/shims/index.ts +20 -0
- package/src/shims/npm/index.ts +14 -0
- package/src/shims/npm/registry.ts +288 -0
- package/src/shims/npm/server.ts +84 -0
- package/src/shims/oci/index.ts +14 -0
- package/src/shims/oci/registry.ts +334 -0
- package/src/shims/oci/server.ts +94 -0
- package/src/social.ts +116 -0
- package/src/web/html.ts +120 -0
- package/src/web/index.ts +8 -0
- package/src/web/routes.ts +449 -0
- package/src/web/server.ts +256 -0
- package/src/wiki.ts +102 -0
package/src/cli/main.ts
ADDED
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
/**
|
|
3
|
+
* gitd CLI — decentralized forge powered by DWN protocols.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* gitd setup Configure git for DID transport
|
|
7
|
+
* gitd clone <did>/<repo> Clone a repo via DID
|
|
8
|
+
* gitd init <name> [--description <text>] Create a repo record + bare git repo
|
|
9
|
+
* gitd repo info Show repo metadata
|
|
10
|
+
* gitd repo add-collaborator <did> <role> Grant a role
|
|
11
|
+
* gitd repo remove-collaborator <did> Revoke a collaborator role
|
|
12
|
+
* gitd issue create <title> File an issue
|
|
13
|
+
* gitd issue show <number> Show issue details + comments
|
|
14
|
+
* gitd issue comment <number> <body> Add a comment to an issue
|
|
15
|
+
* gitd issue close <number> Close an issue
|
|
16
|
+
* gitd issue list [--status <open|closed>]
|
|
17
|
+
* gitd patch create <title> Open a patch (PR)
|
|
18
|
+
* gitd patch show <number> Show patch details + reviews
|
|
19
|
+
* gitd patch comment <number> <body> Add a comment/review
|
|
20
|
+
* gitd patch merge <number> Merge a patch
|
|
21
|
+
* gitd patch list [--status <status>]
|
|
22
|
+
* gitd release create <tag> Create a release
|
|
23
|
+
* gitd release show <tag> Show release details
|
|
24
|
+
* gitd release list List releases
|
|
25
|
+
* gitd ci status [<commit>] Show latest CI status
|
|
26
|
+
* gitd ci create <commit> Create a check suite
|
|
27
|
+
* gitd ci run <suite-id> <name> Add a check run
|
|
28
|
+
* gitd ci update <run-id> --status <s> Update a check run status
|
|
29
|
+
* gitd registry publish <name> <ver> <tarball> Publish a package version
|
|
30
|
+
* gitd registry info <name> Show package details
|
|
31
|
+
* gitd registry versions <name> List published versions
|
|
32
|
+
* gitd registry list List all packages
|
|
33
|
+
* gitd registry yank <name> <version> Mark a version as deprecated
|
|
34
|
+
* gitd registry attest <name> <ver> --claim <c> Create attestation
|
|
35
|
+
* gitd registry attestations <name> <ver> List attestations
|
|
36
|
+
* gitd registry verify <name> <ver> Verify a package version
|
|
37
|
+
* gitd registry resolve <did>/<name>@<ver> Resolve a remote package
|
|
38
|
+
* gitd registry verify-deps <did>/<name>@<ver> Verify trust chain
|
|
39
|
+
* gitd wiki create <slug> <title> Create a wiki page
|
|
40
|
+
* gitd wiki show <slug> Show a wiki page
|
|
41
|
+
* gitd org create <name> Create an organization
|
|
42
|
+
* gitd org info Show org details
|
|
43
|
+
* gitd social star <did> Star a repo
|
|
44
|
+
* gitd social follow <did> Follow a user
|
|
45
|
+
* gitd notification list [--unread] List notifications
|
|
46
|
+
* gitd migrate all <owner/repo> Import everything from GitHub
|
|
47
|
+
* gitd migrate issues <owner/repo> Import issues + comments
|
|
48
|
+
* gitd migrate pulls <owner/repo> Import PRs as patches
|
|
49
|
+
* gitd migrate releases <owner/repo> Import releases
|
|
50
|
+
* gitd web [--port <port>] Start the read-only web UI
|
|
51
|
+
* gitd indexer [--port] [--interval] [--seed] Start the indexer service
|
|
52
|
+
* gitd daemon [--config <path>] [--only ...] Start unified shim daemon
|
|
53
|
+
* gitd github-api [--port <port>] Start GitHub API compatibility shim
|
|
54
|
+
* gitd shim npm [--port 4873] Start npm registry proxy
|
|
55
|
+
* gitd shim go [--port 4874] Start Go module proxy (GOPROXY)
|
|
56
|
+
* gitd shim oci [--port 5555] Start OCI/Docker registry proxy
|
|
57
|
+
* gitd log Show recent activity
|
|
58
|
+
* gitd serve [--port <port>] Start the git transport server
|
|
59
|
+
* gitd whoami Show connected DID
|
|
60
|
+
*
|
|
61
|
+
* Environment:
|
|
62
|
+
* GITD_PASSWORD — vault password (prompted interactively if not set)
|
|
63
|
+
* GITD_PORT — server port for `serve` (default: 9418)
|
|
64
|
+
* GITD_REPOS — base path for bare repos (default: ./repos)
|
|
65
|
+
*
|
|
66
|
+
* @module
|
|
67
|
+
*/
|
|
68
|
+
|
|
69
|
+
import { ciCommand } from './commands/ci.js';
|
|
70
|
+
import { cloneCommand } from './commands/clone.js';
|
|
71
|
+
import { connectAgent } from './agent.js';
|
|
72
|
+
import { daemonCommand } from './commands/daemon.js';
|
|
73
|
+
import { githubApiCommand } from './commands/github-api.js';
|
|
74
|
+
import { indexerCommand } from '../indexer/main.js';
|
|
75
|
+
import { initCommand } from './commands/init.js';
|
|
76
|
+
import { issueCommand } from './commands/issue.js';
|
|
77
|
+
import { logCommand } from './commands/log.js';
|
|
78
|
+
import { migrateCommand } from './commands/migrate.js';
|
|
79
|
+
import { notificationCommand } from './commands/notification.js';
|
|
80
|
+
import { orgCommand } from './commands/org.js';
|
|
81
|
+
import { patchCommand } from './commands/patch.js';
|
|
82
|
+
import { registryCommand } from './commands/registry.js';
|
|
83
|
+
import { releaseCommand } from './commands/release.js';
|
|
84
|
+
import { repoCommand } from './commands/repo.js';
|
|
85
|
+
import { serveCommand } from './commands/serve.js';
|
|
86
|
+
import { setupCommand } from './commands/setup.js';
|
|
87
|
+
import { shimCommand } from './commands/shim.js';
|
|
88
|
+
import { socialCommand } from './commands/social.js';
|
|
89
|
+
import { webCommand } from './commands/web.js';
|
|
90
|
+
import { wikiCommand } from './commands/wiki.js';
|
|
91
|
+
|
|
92
|
+
// ---------------------------------------------------------------------------
|
|
93
|
+
// Arg parsing
|
|
94
|
+
// ---------------------------------------------------------------------------
|
|
95
|
+
|
|
96
|
+
const args = process.argv.slice(2);
|
|
97
|
+
const command = args[0];
|
|
98
|
+
const rest = args.slice(1);
|
|
99
|
+
|
|
100
|
+
// ---------------------------------------------------------------------------
|
|
101
|
+
// Usage
|
|
102
|
+
// ---------------------------------------------------------------------------
|
|
103
|
+
|
|
104
|
+
function printUsage(): void {
|
|
105
|
+
console.log('gitd — decentralized forge powered by DWN protocols\n');
|
|
106
|
+
console.log('Commands:');
|
|
107
|
+
console.log(' setup Configure git for DID-based remotes');
|
|
108
|
+
console.log(' clone <did>/<repo> Clone a repository via DID');
|
|
109
|
+
console.log(' init <name> Create a repo record + bare git repo');
|
|
110
|
+
console.log(' serve [--port <port>] Start the git transport server');
|
|
111
|
+
console.log('');
|
|
112
|
+
console.log(' repo info Show repo metadata');
|
|
113
|
+
console.log(' repo add-collaborator <did> <role> Grant a role (maintainer|triager|contributor)');
|
|
114
|
+
console.log(' repo remove-collaborator <did> Revoke a collaborator role');
|
|
115
|
+
console.log('');
|
|
116
|
+
console.log(' issue create <title> [--body <text>] File an issue');
|
|
117
|
+
console.log(' issue show <number> Show issue details and comments');
|
|
118
|
+
console.log(' issue comment <number> <body> Add a comment to an issue');
|
|
119
|
+
console.log(' issue close <number> Close an issue');
|
|
120
|
+
console.log(' issue reopen <number> Reopen a closed issue');
|
|
121
|
+
console.log(' issue list [--status <open|closed>] List issues');
|
|
122
|
+
console.log('');
|
|
123
|
+
console.log(' patch create <title> [--base ...] [--head ...] Open a patch (PR)');
|
|
124
|
+
console.log(' patch show <number> Show patch details and reviews');
|
|
125
|
+
console.log(' patch comment <number> <body> Add a comment/review');
|
|
126
|
+
console.log(' patch merge <number> Merge a patch');
|
|
127
|
+
console.log(' patch close <number> Close a patch');
|
|
128
|
+
console.log(' patch reopen <number> Reopen a closed patch');
|
|
129
|
+
console.log(' patch list [--status <status>] List patches');
|
|
130
|
+
console.log('');
|
|
131
|
+
console.log(' release create <tag> [--name ...] [--body ...] Create a release');
|
|
132
|
+
console.log(' release show <tag> Show release details + assets');
|
|
133
|
+
console.log(' release list List releases');
|
|
134
|
+
console.log('');
|
|
135
|
+
console.log(' ci status [<commit>] Show latest CI status');
|
|
136
|
+
console.log(' ci list List recent check suites');
|
|
137
|
+
console.log(' ci show <suite-id> Show check suite + runs');
|
|
138
|
+
console.log(' ci create <commit> [--app <name>] Create a check suite');
|
|
139
|
+
console.log(' ci run <suite-id> <name> Add a check run to a suite');
|
|
140
|
+
console.log(' ci update <run-id> --status <status> Update a check run status');
|
|
141
|
+
console.log('');
|
|
142
|
+
console.log(' registry publish <name> <ver> <tarball> Publish a package version');
|
|
143
|
+
console.log(' registry info <name> Show package details');
|
|
144
|
+
console.log(' registry versions <name> List published versions');
|
|
145
|
+
console.log(' registry list [--ecosystem <eco>] List all packages');
|
|
146
|
+
console.log(' registry yank <name> <version> Mark a version as deprecated');
|
|
147
|
+
console.log(' registry attest <name> <ver> --claim <c> Create an attestation');
|
|
148
|
+
console.log(' registry attestations <name> <version> List attestations');
|
|
149
|
+
console.log(' registry verify <name> <version> Verify a package version');
|
|
150
|
+
console.log(' registry resolve <did>/<name>@<ver> Resolve a remote package');
|
|
151
|
+
console.log(' registry verify-deps <did>/<name>@<ver> Verify dependency trust chain');
|
|
152
|
+
console.log('');
|
|
153
|
+
console.log(' wiki create <slug> <title> [--body ...] Create a wiki page');
|
|
154
|
+
console.log(' wiki show <slug> Show a wiki page');
|
|
155
|
+
console.log(' wiki edit <slug> --body <markdown> Edit a wiki page');
|
|
156
|
+
console.log(' wiki list List wiki pages');
|
|
157
|
+
console.log('');
|
|
158
|
+
console.log(' org create <name> Create an organization');
|
|
159
|
+
console.log(' org info Show org details');
|
|
160
|
+
console.log(' org add-member <did> Add a member');
|
|
161
|
+
console.log(' org team create <name> Create a team');
|
|
162
|
+
console.log('');
|
|
163
|
+
console.log(' social star <did> Star a repo');
|
|
164
|
+
console.log(' social unstar <did> Remove a star');
|
|
165
|
+
console.log(' social stars List starred repos');
|
|
166
|
+
console.log(' social follow <did> Follow a user');
|
|
167
|
+
console.log(' social following List followed users');
|
|
168
|
+
console.log('');
|
|
169
|
+
console.log(' notification list [--unread] List notifications');
|
|
170
|
+
console.log(' notification read <id> Mark as read');
|
|
171
|
+
console.log(' notification clear Clear read notifications');
|
|
172
|
+
console.log('');
|
|
173
|
+
console.log(' migrate all <owner/repo> Import everything from GitHub');
|
|
174
|
+
console.log(' migrate repo <owner/repo> Import repo metadata');
|
|
175
|
+
console.log(' migrate issues <owner/repo> Import issues + comments');
|
|
176
|
+
console.log(' migrate pulls <owner/repo> Import PRs as patches + reviews');
|
|
177
|
+
console.log(' migrate releases <owner/repo> Import releases');
|
|
178
|
+
console.log('');
|
|
179
|
+
console.log(' web [--port <port>] Start read-only web UI (default: 8080)');
|
|
180
|
+
console.log('');
|
|
181
|
+
console.log(' indexer [--port <port>] [--interval <sec>] Start the indexer service');
|
|
182
|
+
console.log(' indexer --seed <did> Discover DIDs from a seed');
|
|
183
|
+
console.log('');
|
|
184
|
+
console.log(' daemon [--config <path>] [--only ...] Start all shims in one process');
|
|
185
|
+
console.log(' daemon --list List available shim adapters');
|
|
186
|
+
console.log('');
|
|
187
|
+
console.log(' github-api [--port <port>] Start GitHub API shim (default: 8181)');
|
|
188
|
+
console.log('');
|
|
189
|
+
console.log(' shim npm [--port 4873] Start npm registry proxy');
|
|
190
|
+
console.log(' shim go [--port 4874] Start Go module proxy (GOPROXY)');
|
|
191
|
+
console.log(' shim oci [--port 5555] Start OCI/Docker registry proxy');
|
|
192
|
+
console.log('');
|
|
193
|
+
console.log(' log Show recent activity');
|
|
194
|
+
console.log(' whoami Show connected DID');
|
|
195
|
+
console.log(' help Show this message\n');
|
|
196
|
+
console.log('Environment:');
|
|
197
|
+
console.log(' GITD_PASSWORD vault password (prompted if not set)');
|
|
198
|
+
console.log(' GITD_PORT server port for `serve` (default: 9418)');
|
|
199
|
+
console.log(' GITD_WEB_PORT web UI port for `web` (default: 8080)');
|
|
200
|
+
console.log(' GITD_REPOS base path for bare repos (default: ./repos)');
|
|
201
|
+
console.log(' GITD_INDEXER_PORT indexer API port (default: 8090)');
|
|
202
|
+
console.log(' GITD_INDEXER_INTERVAL crawl interval in seconds (default: 60)');
|
|
203
|
+
console.log(' GITD_GITHUB_API_PORT GitHub API shim port (default: 8181)');
|
|
204
|
+
console.log(' GITD_NPM_SHIM_PORT npm shim port (default: 4873)');
|
|
205
|
+
console.log(' GITD_GO_SHIM_PORT Go proxy shim port (default: 4874)');
|
|
206
|
+
console.log(' GITD_OCI_SHIM_PORT OCI registry shim port (default: 5555)');
|
|
207
|
+
console.log(' GITHUB_TOKEN GitHub API token for migration (optional, higher rate limits)');
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// ---------------------------------------------------------------------------
|
|
211
|
+
// Password
|
|
212
|
+
// ---------------------------------------------------------------------------
|
|
213
|
+
|
|
214
|
+
async function getPassword(): Promise<string> {
|
|
215
|
+
// Prefer env var for non-interactive use / testing.
|
|
216
|
+
const env = process.env.GITD_PASSWORD;
|
|
217
|
+
if (env) { return env; }
|
|
218
|
+
|
|
219
|
+
// Interactive prompt via stdin.
|
|
220
|
+
process.stdout.write('Vault password: ');
|
|
221
|
+
const response = await new Promise<string>((resolve) => {
|
|
222
|
+
let buf = '';
|
|
223
|
+
process.stdin.setEncoding('utf8');
|
|
224
|
+
process.stdin.once('data', (chunk: string) => {
|
|
225
|
+
buf += chunk;
|
|
226
|
+
resolve(buf.trim());
|
|
227
|
+
});
|
|
228
|
+
process.stdin.resume();
|
|
229
|
+
});
|
|
230
|
+
return response;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
// ---------------------------------------------------------------------------
|
|
234
|
+
// Main
|
|
235
|
+
// ---------------------------------------------------------------------------
|
|
236
|
+
|
|
237
|
+
async function main(): Promise<void> {
|
|
238
|
+
if (!command || command === 'help' || command === '--help' || command === '-h') {
|
|
239
|
+
printUsage();
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// Commands that don't require the Web5 agent.
|
|
244
|
+
switch (command) {
|
|
245
|
+
case 'setup':
|
|
246
|
+
await setupCommand(rest);
|
|
247
|
+
return;
|
|
248
|
+
|
|
249
|
+
case 'clone':
|
|
250
|
+
await cloneCommand(rest);
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// Commands that require the Web5 agent.
|
|
255
|
+
const password = await getPassword();
|
|
256
|
+
const ctx = await connectAgent(password);
|
|
257
|
+
|
|
258
|
+
switch (command) {
|
|
259
|
+
case 'init':
|
|
260
|
+
await initCommand(ctx, rest);
|
|
261
|
+
break;
|
|
262
|
+
|
|
263
|
+
case 'issue':
|
|
264
|
+
await issueCommand(ctx, rest);
|
|
265
|
+
break;
|
|
266
|
+
|
|
267
|
+
case 'patch':
|
|
268
|
+
await patchCommand(ctx, rest);
|
|
269
|
+
break;
|
|
270
|
+
|
|
271
|
+
case 'repo':
|
|
272
|
+
await repoCommand(ctx, rest);
|
|
273
|
+
break;
|
|
274
|
+
|
|
275
|
+
case 'serve':
|
|
276
|
+
await serveCommand(ctx, rest);
|
|
277
|
+
break;
|
|
278
|
+
|
|
279
|
+
case 'release':
|
|
280
|
+
await releaseCommand(ctx, rest);
|
|
281
|
+
break;
|
|
282
|
+
|
|
283
|
+
case 'registry':
|
|
284
|
+
await registryCommand(ctx, rest);
|
|
285
|
+
break;
|
|
286
|
+
|
|
287
|
+
case 'ci':
|
|
288
|
+
await ciCommand(ctx, rest);
|
|
289
|
+
break;
|
|
290
|
+
|
|
291
|
+
case 'wiki':
|
|
292
|
+
await wikiCommand(ctx, rest);
|
|
293
|
+
break;
|
|
294
|
+
|
|
295
|
+
case 'org':
|
|
296
|
+
await orgCommand(ctx, rest);
|
|
297
|
+
break;
|
|
298
|
+
|
|
299
|
+
case 'social':
|
|
300
|
+
await socialCommand(ctx, rest);
|
|
301
|
+
break;
|
|
302
|
+
|
|
303
|
+
case 'notification':
|
|
304
|
+
case 'notifications':
|
|
305
|
+
await notificationCommand(ctx, rest);
|
|
306
|
+
break;
|
|
307
|
+
|
|
308
|
+
case 'migrate':
|
|
309
|
+
await migrateCommand(ctx, rest);
|
|
310
|
+
break;
|
|
311
|
+
|
|
312
|
+
case 'web':
|
|
313
|
+
await webCommand(ctx, rest);
|
|
314
|
+
break;
|
|
315
|
+
|
|
316
|
+
case 'indexer':
|
|
317
|
+
await indexerCommand(ctx, rest);
|
|
318
|
+
break;
|
|
319
|
+
|
|
320
|
+
case 'daemon':
|
|
321
|
+
await daemonCommand(ctx, rest);
|
|
322
|
+
break;
|
|
323
|
+
|
|
324
|
+
case 'github-api':
|
|
325
|
+
await githubApiCommand(ctx, rest);
|
|
326
|
+
break;
|
|
327
|
+
|
|
328
|
+
case 'shim':
|
|
329
|
+
await shimCommand(ctx, rest);
|
|
330
|
+
break;
|
|
331
|
+
|
|
332
|
+
case 'log':
|
|
333
|
+
await logCommand(ctx, rest);
|
|
334
|
+
break;
|
|
335
|
+
|
|
336
|
+
case 'whoami':
|
|
337
|
+
console.log(ctx.did);
|
|
338
|
+
break;
|
|
339
|
+
|
|
340
|
+
default:
|
|
341
|
+
console.error(`Unknown command: ${command}`);
|
|
342
|
+
printUsage();
|
|
343
|
+
process.exit(1);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
main().catch((err: Error) => {
|
|
348
|
+
console.error(`Fatal: ${err.message}`);
|
|
349
|
+
process.exit(1);
|
|
350
|
+
});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared helper to locate the repo record's contextId and visibility.
|
|
3
|
+
*
|
|
4
|
+
* All composing protocols (issues, patches) need the repo's `contextId`
|
|
5
|
+
* as the `parentContextId` for their top-level writes (via `$ref`).
|
|
6
|
+
* The `visibility` tag determines whether bundle records are encrypted.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import type { AgentContext } from './agent.js';
|
|
12
|
+
|
|
13
|
+
/** Repo context returned by {@link getRepoContext}. */
|
|
14
|
+
export type RepoContext = {
|
|
15
|
+
/** The repo record's contextId (used as parentContextId for child records). */
|
|
16
|
+
contextId: string;
|
|
17
|
+
/** Repo visibility — controls encryption of bundle records. */
|
|
18
|
+
visibility: 'public' | 'private';
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Query the local DWN for the singleton repo record and return its context.
|
|
23
|
+
* Exits with an error if no repo has been initialized.
|
|
24
|
+
*/
|
|
25
|
+
export async function getRepoContext(ctx: AgentContext): Promise<RepoContext> {
|
|
26
|
+
const { records } = await ctx.repo.records.query('repo');
|
|
27
|
+
|
|
28
|
+
if (records.length === 0) {
|
|
29
|
+
console.error('No repository found. Run `gitd init <name>` first.');
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const record = records[0];
|
|
34
|
+
|
|
35
|
+
const contextId = record.contextId;
|
|
36
|
+
if (!contextId) {
|
|
37
|
+
console.error('Repository record has no contextId — this should not happen.');
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const visibility = (record.tags?.visibility as 'public' | 'private') ?? 'public';
|
|
42
|
+
|
|
43
|
+
return { contextId, visibility };
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Query the local DWN for the singleton repo record and return its contextId.
|
|
48
|
+
* Exits with an error if no repo has been initialized.
|
|
49
|
+
*
|
|
50
|
+
* @deprecated Use {@link getRepoContext} instead to also get visibility.
|
|
51
|
+
*/
|
|
52
|
+
export async function getRepoContextId(ctx: AgentContext): Promise<string> {
|
|
53
|
+
const { contextId } = await getRepoContext(ctx);
|
|
54
|
+
return contextId;
|
|
55
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ShimAdapter — the interface every ecosystem shim implements to plug
|
|
3
|
+
* into the unified daemon.
|
|
4
|
+
*
|
|
5
|
+
* Each adapter wraps a specific protocol translation (GitHub REST API,
|
|
6
|
+
* npm registry, Go module proxy, OCI Distribution, etc.) behind a
|
|
7
|
+
* uniform contract. The daemon starts one HTTP server per enabled
|
|
8
|
+
* adapter and delegates all request handling to the adapter.
|
|
9
|
+
*
|
|
10
|
+
* To add a new ecosystem (e.g. Maven Central, Rust crates.io):
|
|
11
|
+
* 1. Implement `ShimAdapter`
|
|
12
|
+
* 2. Register it in `adapters/index.ts`
|
|
13
|
+
* 3. The daemon picks it up automatically
|
|
14
|
+
*
|
|
15
|
+
* @module
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
19
|
+
|
|
20
|
+
import type { AgentContext } from '../cli/agent.js';
|
|
21
|
+
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Adapter interface
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
|
|
26
|
+
/** A shim adapter bridges between an ecosystem's native HTTP protocol and DWN. */
|
|
27
|
+
export interface ShimAdapter {
|
|
28
|
+
/** Unique identifier — used in config and CLI flags (e.g. `'github'`, `'npm'`). */
|
|
29
|
+
readonly id: string;
|
|
30
|
+
|
|
31
|
+
/** Human-readable name for log output (e.g. `'GitHub API'`, `'npm registry'`). */
|
|
32
|
+
readonly name: string;
|
|
33
|
+
|
|
34
|
+
/** Default port when none is configured. */
|
|
35
|
+
readonly defaultPort: number;
|
|
36
|
+
|
|
37
|
+
/** Environment variable that overrides the default port (e.g. `'GITD_GITHUB_API_PORT'`). */
|
|
38
|
+
readonly portEnvVar: string;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Handle an incoming HTTP request.
|
|
42
|
+
*
|
|
43
|
+
* The daemon calls this for every non-OPTIONS request on the
|
|
44
|
+
* adapter's server. The adapter is responsible for writing the
|
|
45
|
+
* full response (status, headers, body) to `res`.
|
|
46
|
+
*
|
|
47
|
+
* CORS preflight (OPTIONS) is handled by the daemon — adapters
|
|
48
|
+
* never see OPTIONS requests.
|
|
49
|
+
*/
|
|
50
|
+
handle(ctx: AgentContext, req: IncomingMessage, res: ServerResponse): Promise<void>;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Additional CORS methods to advertise in the preflight response.
|
|
54
|
+
* Defaults to `'GET, OPTIONS'` if not provided.
|
|
55
|
+
*/
|
|
56
|
+
readonly corsMethods?: string;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Additional CORS headers to advertise in the preflight response.
|
|
60
|
+
* Defaults to `'Authorization, Accept, Content-Type'` if not provided.
|
|
61
|
+
*/
|
|
62
|
+
readonly corsHeaders?: string;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* One-line usage hint printed when the adapter starts.
|
|
66
|
+
* Can reference `{port}` which will be replaced with the actual port.
|
|
67
|
+
*/
|
|
68
|
+
readonly usageHint?: string;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// ---------------------------------------------------------------------------
|
|
72
|
+
// Configuration
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
|
|
75
|
+
/** Per-shim configuration entry. */
|
|
76
|
+
export type ShimConfig = {
|
|
77
|
+
/** Whether this shim is enabled. Defaults to `true`. */
|
|
78
|
+
enabled? : boolean;
|
|
79
|
+
|
|
80
|
+
/** Port override. Falls back to env var, then `defaultPort`. */
|
|
81
|
+
port? : number;
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
/** Full daemon configuration. */
|
|
85
|
+
export type DaemonConfig = {
|
|
86
|
+
/** Per-shim overrides keyed by adapter `id`. */
|
|
87
|
+
shims? : Record<string, ShimConfig>;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
/** Resolved runtime config for a single shim — all values concrete. */
|
|
91
|
+
export type ResolvedShimConfig = {
|
|
92
|
+
adapter : ShimAdapter;
|
|
93
|
+
enabled : boolean;
|
|
94
|
+
port : number;
|
|
95
|
+
};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub API shim adapter for the unified daemon.
|
|
3
|
+
*
|
|
4
|
+
* Wraps `handleShimRequest()` behind the `ShimAdapter` interface.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
10
|
+
|
|
11
|
+
import type { AgentContext } from '../../cli/agent.js';
|
|
12
|
+
import type { ShimAdapter } from '../adapter.js';
|
|
13
|
+
|
|
14
|
+
import { handleShimRequest } from '../../github-shim/server.js';
|
|
15
|
+
import { baseHeaders, jsonMethodNotAllowed } from '../../github-shim/helpers.js';
|
|
16
|
+
|
|
17
|
+
/** Maximum JSON request body size (1 MB). */
|
|
18
|
+
const MAX_JSON_BODY = 1 * 1024 * 1024;
|
|
19
|
+
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
// Adapter
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
|
|
24
|
+
export const githubAdapter: ShimAdapter = {
|
|
25
|
+
id : 'github',
|
|
26
|
+
name : 'GitHub API',
|
|
27
|
+
defaultPort : 8181,
|
|
28
|
+
portEnvVar : 'GITD_GITHUB_API_PORT',
|
|
29
|
+
corsMethods : 'GET, POST, PATCH, PUT, DELETE, OPTIONS',
|
|
30
|
+
corsHeaders : 'Authorization, Accept, Content-Type',
|
|
31
|
+
usageHint : 'GitHub REST API v3 compatible — point tools at http://localhost:{port}',
|
|
32
|
+
|
|
33
|
+
async handle(ctx: AgentContext, req: IncomingMessage, res: ServerResponse): Promise<void> {
|
|
34
|
+
const method = req.method ?? 'GET';
|
|
35
|
+
const port = (req.socket.address() as { port?: number })?.port ?? 8181;
|
|
36
|
+
const url = new URL(req.url ?? '/', `http://localhost:${port}`);
|
|
37
|
+
|
|
38
|
+
// Reject truly unsupported methods.
|
|
39
|
+
const allowed = new Set(['GET', 'POST', 'PATCH', 'PUT', 'DELETE']);
|
|
40
|
+
if (!allowed.has(method)) {
|
|
41
|
+
const r = jsonMethodNotAllowed(`Method ${method} is not supported.`);
|
|
42
|
+
res.writeHead(r.status, r.headers);
|
|
43
|
+
res.end(r.body);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Parse body for mutating methods (with size limit).
|
|
48
|
+
let reqBody: Record<string, unknown> = {};
|
|
49
|
+
if (method === 'POST' || method === 'PATCH' || method === 'PUT') {
|
|
50
|
+
const chunks: Buffer[] = [];
|
|
51
|
+
let totalSize = 0;
|
|
52
|
+
let tooLarge = false;
|
|
53
|
+
for await (const chunk of req) {
|
|
54
|
+
const buf = typeof chunk === 'string' ? Buffer.from(chunk) : chunk;
|
|
55
|
+
totalSize += buf.length;
|
|
56
|
+
if (totalSize > MAX_JSON_BODY) { tooLarge = true; break; }
|
|
57
|
+
chunks.push(buf);
|
|
58
|
+
}
|
|
59
|
+
if (tooLarge) {
|
|
60
|
+
res.writeHead(413, baseHeaders());
|
|
61
|
+
res.end(JSON.stringify({ message: 'Payload Too Large' }));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const raw = Buffer.concat(chunks).toString('utf-8');
|
|
65
|
+
if (raw.length > 0) {
|
|
66
|
+
try {
|
|
67
|
+
reqBody = JSON.parse(raw);
|
|
68
|
+
} catch {
|
|
69
|
+
res.writeHead(400, baseHeaders());
|
|
70
|
+
res.end(JSON.stringify({ message: 'Invalid JSON in request body.' }));
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
try {
|
|
77
|
+
const authHeader = req.headers.authorization ?? null;
|
|
78
|
+
const result = await handleShimRequest(ctx, url, method, reqBody, authHeader);
|
|
79
|
+
res.writeHead(result.status, result.headers);
|
|
80
|
+
res.end(result.body);
|
|
81
|
+
} catch {
|
|
82
|
+
res.writeHead(500, baseHeaders());
|
|
83
|
+
res.end(JSON.stringify({ message: 'Internal server error' }));
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Go module proxy shim adapter for the unified daemon.
|
|
3
|
+
*
|
|
4
|
+
* Wraps `handleGoProxyRequest()` behind the `ShimAdapter` interface.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
10
|
+
|
|
11
|
+
import type { AgentContext } from '../../cli/agent.js';
|
|
12
|
+
import type { ShimAdapter } from '../adapter.js';
|
|
13
|
+
|
|
14
|
+
import { handleGoProxyRequest } from '../../shims/go/proxy.js';
|
|
15
|
+
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
// Adapter
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
|
|
20
|
+
export const goAdapter: ShimAdapter = {
|
|
21
|
+
id : 'go',
|
|
22
|
+
name : 'Go module proxy',
|
|
23
|
+
defaultPort : 4874,
|
|
24
|
+
portEnvVar : 'GITD_GO_SHIM_PORT',
|
|
25
|
+
corsMethods : 'GET, OPTIONS',
|
|
26
|
+
corsHeaders : 'Authorization, Accept',
|
|
27
|
+
usageHint : 'GOPROXY=http://localhost:{port} go get did.enbox.org/did:dht:<id>/<module>@v1.0.0',
|
|
28
|
+
|
|
29
|
+
async handle(ctx: AgentContext, req: IncomingMessage, res: ServerResponse): Promise<void> {
|
|
30
|
+
if (req.method !== 'GET') {
|
|
31
|
+
res.writeHead(405, { 'Content-Type': 'text/plain' });
|
|
32
|
+
res.end('Method not allowed. This is a read-only Go module proxy.');
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
try {
|
|
37
|
+
const port = (req.socket.address() as { port?: number })?.port ?? 4874;
|
|
38
|
+
const url = new URL(req.url ?? '/', `http://localhost:${port}`);
|
|
39
|
+
const result = await handleGoProxyRequest(ctx, url);
|
|
40
|
+
res.writeHead(result.status, result.headers);
|
|
41
|
+
res.end(result.body);
|
|
42
|
+
} catch {
|
|
43
|
+
res.writeHead(500, { 'Content-Type': 'text/plain' });
|
|
44
|
+
res.end('Internal server error');
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter registry — all available shim adapters.
|
|
3
|
+
*
|
|
4
|
+
* To add a new ecosystem shim:
|
|
5
|
+
* 1. Create `src/daemon/adapters/<name>.ts` implementing `ShimAdapter`
|
|
6
|
+
* 2. Import and add it to the `builtinAdapters` array below
|
|
7
|
+
* 3. The daemon picks it up automatically
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import type { ShimAdapter } from '../adapter.js';
|
|
13
|
+
|
|
14
|
+
import { githubAdapter } from './github.js';
|
|
15
|
+
import { goAdapter } from './go.js';
|
|
16
|
+
import { npmAdapter } from './npm.js';
|
|
17
|
+
import { ociAdapter } from './oci.js';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* All built-in shim adapters, in display order.
|
|
21
|
+
*
|
|
22
|
+
* Each adapter is registered once and referenced by its `id` in
|
|
23
|
+
* configuration. The daemon iterates this list to resolve config
|
|
24
|
+
* entries to concrete adapters.
|
|
25
|
+
*/
|
|
26
|
+
export const builtinAdapters: readonly ShimAdapter[] = [
|
|
27
|
+
githubAdapter,
|
|
28
|
+
npmAdapter,
|
|
29
|
+
goAdapter,
|
|
30
|
+
ociAdapter,
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
/** Look up an adapter by its `id`. Returns `undefined` if not found. */
|
|
34
|
+
export function findAdapter(id: string): ShimAdapter | undefined {
|
|
35
|
+
return builtinAdapters.find((a) => a.id === id);
|
|
36
|
+
}
|