@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
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `gitd ci` — view CI check suites and check runs.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* gitd ci status [<commit>] Show latest check suite status
|
|
6
|
+
* gitd ci list [--limit <n>] List recent check suites
|
|
7
|
+
* gitd ci show <suite-id> Show check suite details + runs
|
|
8
|
+
* gitd ci create <commit> [--app <name>] Create a check suite (for CI bots)
|
|
9
|
+
* gitd ci run <suite-id> <name> Add a check run to a suite
|
|
10
|
+
* gitd ci update <run-id> --status <s> Update a check run status
|
|
11
|
+
*
|
|
12
|
+
* @module
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import type { AgentContext } from '../agent.js';
|
|
16
|
+
|
|
17
|
+
import { DateSort } from '@enbox/dwn-sdk-js';
|
|
18
|
+
|
|
19
|
+
import { flagValue } from '../flags.js';
|
|
20
|
+
import { getRepoContextId } from '../repo-context.js';
|
|
21
|
+
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Sub-command dispatch
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
|
|
26
|
+
export async function ciCommand(ctx: AgentContext, args: string[]): Promise<void> {
|
|
27
|
+
const sub = args[0];
|
|
28
|
+
const rest = args.slice(1);
|
|
29
|
+
|
|
30
|
+
switch (sub) {
|
|
31
|
+
case 'status': return ciStatus(ctx, rest);
|
|
32
|
+
case 'list':
|
|
33
|
+
case 'ls': return ciList(ctx, rest);
|
|
34
|
+
case 'show': return ciShow(ctx, rest);
|
|
35
|
+
case 'create': return ciCreate(ctx, rest);
|
|
36
|
+
case 'run': return ciRun(ctx, rest);
|
|
37
|
+
case 'update': return ciUpdate(ctx, rest);
|
|
38
|
+
default:
|
|
39
|
+
console.error('Usage: gitd ci <status|list|show|create|run|update>');
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
// ci status
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
|
|
48
|
+
async function ciStatus(ctx: AgentContext, args: string[]): Promise<void> {
|
|
49
|
+
const commitFilter = args[0];
|
|
50
|
+
const repoContextId = await getRepoContextId(ctx);
|
|
51
|
+
|
|
52
|
+
const filter: Record<string, unknown> = { contextId: repoContextId };
|
|
53
|
+
if (commitFilter) {
|
|
54
|
+
filter.tags = { commitSha: commitFilter };
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const { records } = await ctx.ci.records.query('repo/checkSuite' as any, {
|
|
58
|
+
filter,
|
|
59
|
+
dateSort : DateSort.CreatedDescending,
|
|
60
|
+
pagination : { limit: 1 },
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
if (records.length === 0) {
|
|
64
|
+
console.log('No CI check suites found.');
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const suite = records[0];
|
|
69
|
+
const data = await suite.data.json();
|
|
70
|
+
const tags = suite.tags as Record<string, string> | undefined;
|
|
71
|
+
const status = tags?.status ?? 'unknown';
|
|
72
|
+
const conclusion = tags?.conclusion;
|
|
73
|
+
const commit = tags?.commitSha ?? '?';
|
|
74
|
+
const branch = tags?.branch;
|
|
75
|
+
const date = suite.dateCreated?.slice(0, 19)?.replace('T', ' ') ?? '';
|
|
76
|
+
|
|
77
|
+
console.log(`CI Status: ${status.toUpperCase()}${conclusion ? ` (${conclusion})` : ''}`);
|
|
78
|
+
console.log(` Commit: ${commit}${branch ? ` (${branch})` : ''}`);
|
|
79
|
+
console.log(` App: ${data.app ?? 'unknown'}`);
|
|
80
|
+
console.log(` Date: ${date}`);
|
|
81
|
+
console.log(` ID: ${suite.id}`);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// ---------------------------------------------------------------------------
|
|
85
|
+
// ci list
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
87
|
+
|
|
88
|
+
async function ciList(ctx: AgentContext, args: string[]): Promise<void> {
|
|
89
|
+
const limit = parseInt(flagValue(args, '--limit') ?? '10', 10);
|
|
90
|
+
const repoContextId = await getRepoContextId(ctx);
|
|
91
|
+
|
|
92
|
+
const { records } = await ctx.ci.records.query('repo/checkSuite' as any, {
|
|
93
|
+
filter : { contextId: repoContextId },
|
|
94
|
+
dateSort : DateSort.CreatedDescending,
|
|
95
|
+
pagination : { limit },
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
if (records.length === 0) {
|
|
99
|
+
console.log('No CI check suites found.');
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
console.log(`Check suites (${records.length}):\n`);
|
|
104
|
+
for (const rec of records) {
|
|
105
|
+
const data = await rec.data.json();
|
|
106
|
+
const tags = rec.tags as Record<string, string> | undefined;
|
|
107
|
+
const status = tags?.status ?? 'unknown';
|
|
108
|
+
const conclusion = tags?.conclusion;
|
|
109
|
+
const commit = (tags?.commitSha ?? '?').slice(0, 8);
|
|
110
|
+
const branch = tags?.branch;
|
|
111
|
+
const date = rec.dateCreated?.slice(0, 10) ?? '';
|
|
112
|
+
const statusStr = conclusion ? `${status}:${conclusion}` : status;
|
|
113
|
+
console.log(` [${statusStr.toUpperCase().padEnd(18)}] ${commit} ${data.app ?? ''}${branch ? ` (${branch})` : ''} ${date}`);
|
|
114
|
+
console.log(`${''.padEnd(24)}id: ${rec.id}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// ---------------------------------------------------------------------------
|
|
119
|
+
// ci show
|
|
120
|
+
// ---------------------------------------------------------------------------
|
|
121
|
+
|
|
122
|
+
async function ciShow(ctx: AgentContext, args: string[]): Promise<void> {
|
|
123
|
+
const suiteId = args[0];
|
|
124
|
+
if (!suiteId) {
|
|
125
|
+
console.error('Usage: gitd ci show <suite-id>');
|
|
126
|
+
process.exit(1);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const { records: suites } = await ctx.ci.records.query('repo/checkSuite' as any, {
|
|
130
|
+
filter: { recordId: suiteId },
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
if (suites.length === 0) {
|
|
134
|
+
console.error(`Check suite ${suiteId} not found.`);
|
|
135
|
+
process.exit(1);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const suite = suites[0];
|
|
139
|
+
const data = await suite.data.json();
|
|
140
|
+
const tags = suite.tags as Record<string, string> | undefined;
|
|
141
|
+
const status = tags?.status ?? 'unknown';
|
|
142
|
+
const conclusion = tags?.conclusion;
|
|
143
|
+
const commit = tags?.commitSha ?? '?';
|
|
144
|
+
const branch = tags?.branch;
|
|
145
|
+
const date = suite.dateCreated?.slice(0, 19)?.replace('T', ' ') ?? '';
|
|
146
|
+
|
|
147
|
+
console.log(`Check Suite: ${data.app ?? 'unknown'}`);
|
|
148
|
+
console.log(` Status: ${status.toUpperCase()}${conclusion ? ` (${conclusion})` : ''}`);
|
|
149
|
+
console.log(` Commit: ${commit}${branch ? ` (${branch})` : ''}`);
|
|
150
|
+
console.log(` Created: ${date}`);
|
|
151
|
+
console.log(` ID: ${suite.id}`);
|
|
152
|
+
|
|
153
|
+
// Fetch check runs.
|
|
154
|
+
const { records: runs } = await ctx.ci.records.query('repo/checkSuite/checkRun' as any, {
|
|
155
|
+
filter: { contextId: suite.contextId },
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
if (runs.length > 0) {
|
|
159
|
+
console.log('');
|
|
160
|
+
console.log(` Check runs (${runs.length}):`);
|
|
161
|
+
console.log(' ---');
|
|
162
|
+
for (const run of runs) {
|
|
163
|
+
const runData = await run.data.json();
|
|
164
|
+
const runTags = run.tags as Record<string, string> | undefined;
|
|
165
|
+
const runStatus = runTags?.status ?? 'unknown';
|
|
166
|
+
const runConclusion = runTags?.conclusion;
|
|
167
|
+
const runName = runTags?.name ?? 'unnamed';
|
|
168
|
+
const statusStr = runConclusion ? `${runStatus}:${runConclusion}` : runStatus;
|
|
169
|
+
console.log(` [${statusStr.toUpperCase()}] ${runName}`);
|
|
170
|
+
if (runData.output) {
|
|
171
|
+
console.log(` ${runData.output.title}: ${runData.output.summary}`);
|
|
172
|
+
}
|
|
173
|
+
console.log(' ---');
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// ---------------------------------------------------------------------------
|
|
179
|
+
// ci create
|
|
180
|
+
// ---------------------------------------------------------------------------
|
|
181
|
+
|
|
182
|
+
async function ciCreate(ctx: AgentContext, args: string[]): Promise<void> {
|
|
183
|
+
const commitSha = args[0];
|
|
184
|
+
const app = flagValue(args, '--app') ?? 'gitd-ci';
|
|
185
|
+
const branch = flagValue(args, '--branch');
|
|
186
|
+
|
|
187
|
+
if (!commitSha) {
|
|
188
|
+
console.error('Usage: gitd ci create <commit-sha> [--app <name>] [--branch <branch>]');
|
|
189
|
+
process.exit(1);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
const repoContextId = await getRepoContextId(ctx);
|
|
193
|
+
|
|
194
|
+
const tags: Record<string, string> = {
|
|
195
|
+
commitSha,
|
|
196
|
+
status: 'queued',
|
|
197
|
+
};
|
|
198
|
+
if (branch) { tags.branch = branch; }
|
|
199
|
+
|
|
200
|
+
const { status, record } = await ctx.ci.records.create('repo/checkSuite' as any, {
|
|
201
|
+
data : { app },
|
|
202
|
+
tags,
|
|
203
|
+
parentContextId : repoContextId,
|
|
204
|
+
} as any);
|
|
205
|
+
|
|
206
|
+
if (status.code >= 300) {
|
|
207
|
+
console.error(`Failed to create check suite: ${status.code} ${status.detail}`);
|
|
208
|
+
process.exit(1);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
console.log(`Created check suite for ${commitSha.slice(0, 8)} (app: ${app})`);
|
|
212
|
+
console.log(` Suite ID: ${record.id}`);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// ---------------------------------------------------------------------------
|
|
216
|
+
// ci run
|
|
217
|
+
// ---------------------------------------------------------------------------
|
|
218
|
+
|
|
219
|
+
async function ciRun(ctx: AgentContext, args: string[]): Promise<void> {
|
|
220
|
+
const suiteId = args[0];
|
|
221
|
+
const name = args[1];
|
|
222
|
+
|
|
223
|
+
if (!suiteId || !name) {
|
|
224
|
+
console.error('Usage: gitd ci run <suite-id> <name>');
|
|
225
|
+
process.exit(1);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// Look up the suite to get its contextId.
|
|
229
|
+
const { records: suites } = await ctx.ci.records.query('repo/checkSuite' as any, {
|
|
230
|
+
filter: { recordId: suiteId },
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
if (suites.length === 0) {
|
|
234
|
+
console.error(`Check suite ${suiteId} not found.`);
|
|
235
|
+
process.exit(1);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
const { status, record } = await ctx.ci.records.create('repo/checkSuite/checkRun' as any, {
|
|
239
|
+
data : {},
|
|
240
|
+
tags : { name, status: 'queued' },
|
|
241
|
+
parentContextId : suites[0].contextId,
|
|
242
|
+
} as any);
|
|
243
|
+
|
|
244
|
+
if (status.code >= 300) {
|
|
245
|
+
console.error(`Failed to create check run: ${status.code} ${status.detail}`);
|
|
246
|
+
process.exit(1);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
console.log(`Created check run "${name}" in suite ${suiteId.slice(0, 8)}...`);
|
|
250
|
+
console.log(` Run ID: ${record.id}`);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// ---------------------------------------------------------------------------
|
|
254
|
+
// ci update
|
|
255
|
+
// ---------------------------------------------------------------------------
|
|
256
|
+
|
|
257
|
+
async function ciUpdate(ctx: AgentContext, args: string[]): Promise<void> {
|
|
258
|
+
const runId = args[0];
|
|
259
|
+
const newStatus = flagValue(args, '--status');
|
|
260
|
+
const conclusion = flagValue(args, '--conclusion');
|
|
261
|
+
|
|
262
|
+
if (!runId || !newStatus) {
|
|
263
|
+
console.error('Usage: gitd ci update <run-id> --status <queued|in_progress|completed> [--conclusion <success|failure|cancelled|skipped>]');
|
|
264
|
+
process.exit(1);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
if (!['queued', 'in_progress', 'completed'].includes(newStatus)) {
|
|
268
|
+
console.error(`Invalid status: ${newStatus}. Must be queued, in_progress, or completed.`);
|
|
269
|
+
process.exit(1);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// Find the run record.
|
|
273
|
+
const { records: runs } = await ctx.ci.records.query('repo/checkSuite/checkRun' as any, {
|
|
274
|
+
filter: { recordId: runId },
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
if (runs.length === 0) {
|
|
278
|
+
console.error(`Check run ${runId} not found.`);
|
|
279
|
+
process.exit(1);
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
const run = runs[0];
|
|
283
|
+
const existingData = await run.data.json();
|
|
284
|
+
const existingTags = run.tags as Record<string, string> | undefined;
|
|
285
|
+
|
|
286
|
+
const updatedTags: Record<string, string> = { ...existingTags, status: newStatus };
|
|
287
|
+
if (conclusion) { updatedTags.conclusion = conclusion; }
|
|
288
|
+
|
|
289
|
+
const { status } = await run.update({
|
|
290
|
+
data : existingData,
|
|
291
|
+
tags : updatedTags,
|
|
292
|
+
});
|
|
293
|
+
|
|
294
|
+
if (status.code >= 300) {
|
|
295
|
+
console.error(`Failed to update check run: ${status.code} ${status.detail}`);
|
|
296
|
+
process.exit(1);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
console.log(`Updated check run ${runId.slice(0, 8)}... → ${newStatus}${conclusion ? ` (${conclusion})` : ''}`);
|
|
300
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `gitd clone <did>/<repo>` — clone a repository by DID.
|
|
3
|
+
*
|
|
4
|
+
* Convenience wrapper that:
|
|
5
|
+
* 1. Validates the DID/repo argument
|
|
6
|
+
* 2. Spawns `git clone did::<did>/<repo>` with inherited stdio
|
|
7
|
+
*
|
|
8
|
+
* Usage: gitd clone <did>/<repo> [-- <git-clone-args...>]
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { spawn } from 'node:child_process';
|
|
14
|
+
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
// Command
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
|
|
19
|
+
export async function cloneCommand(args: string[]): Promise<void> {
|
|
20
|
+
const target = args[0];
|
|
21
|
+
|
|
22
|
+
if (!target) {
|
|
23
|
+
console.error('Usage: gitd clone <did>/<repo> [-- <git-clone-args...>]');
|
|
24
|
+
console.error('');
|
|
25
|
+
console.error('Examples:');
|
|
26
|
+
console.error(' gitd clone did:dht:abc123/my-repo');
|
|
27
|
+
console.error(' gitd clone did:dht:abc123/my-repo -- --depth 1');
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Parse the target: expect "did:<method>:<id>/<repo>" format.
|
|
32
|
+
const slashIdx = target.indexOf('/');
|
|
33
|
+
if (slashIdx === -1 || !target.startsWith('did:')) {
|
|
34
|
+
console.error(`Invalid target: "${target}"`);
|
|
35
|
+
console.error('Expected format: did:<method>:<id>/<repo>');
|
|
36
|
+
console.error('Example: did:dht:abc123/my-repo');
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const didPart = target.slice(0, slashIdx);
|
|
41
|
+
const repoPart = target.slice(slashIdx + 1);
|
|
42
|
+
|
|
43
|
+
if (didPart.split(':').length < 3) {
|
|
44
|
+
console.error(`Invalid DID: "${didPart}"`);
|
|
45
|
+
console.error('Expected format: did:<method>:<id>');
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (!repoPart) {
|
|
50
|
+
console.error('Missing repository name after DID.');
|
|
51
|
+
console.error('Expected format: did:<method>:<id>/<repo>');
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Collect any extra git args after `--`.
|
|
56
|
+
const dashDashIdx = args.indexOf('--');
|
|
57
|
+
const extraArgs = dashDashIdx !== -1 ? args.slice(dashDashIdx + 1) : [];
|
|
58
|
+
|
|
59
|
+
// Build the DID transport URL: `did::<did>/<repo>`
|
|
60
|
+
const didUrl = `did::${didPart}/${repoPart}`;
|
|
61
|
+
|
|
62
|
+
console.log(`Cloning ${didPart}/${repoPart} via DID transport...`);
|
|
63
|
+
console.log('');
|
|
64
|
+
|
|
65
|
+
// Spawn git clone with inherited stdio so the user sees progress.
|
|
66
|
+
const exitCode = await new Promise<number>((resolve, reject) => {
|
|
67
|
+
const child = spawn('git', ['clone', didUrl, ...extraArgs], {
|
|
68
|
+
stdio : 'inherit',
|
|
69
|
+
env : process.env,
|
|
70
|
+
});
|
|
71
|
+
child.on('error', reject);
|
|
72
|
+
child.on('exit', (code) => resolve(code ?? 128));
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
if (exitCode !== 0) {
|
|
76
|
+
process.exit(exitCode);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `gitd daemon` — start the unified shim daemon.
|
|
3
|
+
*
|
|
4
|
+
* Starts all enabled ecosystem shims in a single process. Each shim
|
|
5
|
+
* runs on its own port and speaks the native protocol of its ecosystem
|
|
6
|
+
* (GitHub REST API, npm registry, GOPROXY, OCI Distribution, etc.).
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* gitd daemon Start all shims with defaults
|
|
10
|
+
* gitd daemon --config ./daemon.json Use a config file
|
|
11
|
+
* gitd daemon --only github,npm Only start specific shims
|
|
12
|
+
* gitd daemon --disable go,oci Start all except specific shims
|
|
13
|
+
* gitd daemon --list List available shims and exit
|
|
14
|
+
*
|
|
15
|
+
* Config file format (gitd.daemon.json):
|
|
16
|
+
* {
|
|
17
|
+
* "shims": {
|
|
18
|
+
* "github": { "enabled": true, "port": 8181 },
|
|
19
|
+
* "npm": { "enabled": true, "port": 4873 },
|
|
20
|
+
* "go": { "enabled": true, "port": 4874 },
|
|
21
|
+
* "oci": { "enabled": true, "port": 5555 }
|
|
22
|
+
* }
|
|
23
|
+
* }
|
|
24
|
+
*
|
|
25
|
+
* @module
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
29
|
+
|
|
30
|
+
import type { AgentContext } from '../agent.js';
|
|
31
|
+
import type { DaemonConfig } from '../../daemon/adapter.js';
|
|
32
|
+
|
|
33
|
+
import { builtinAdapters } from '../../daemon/adapters/index.js';
|
|
34
|
+
import { flagValue } from '../flags.js';
|
|
35
|
+
import { startDaemon } from '../../daemon/server.js';
|
|
36
|
+
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
// Config loading
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
|
|
41
|
+
/** Default config file name searched in CWD. */
|
|
42
|
+
const DEFAULT_CONFIG_FILES = [
|
|
43
|
+
'gitd.daemon.json',
|
|
44
|
+
'.gitd-daemon.json',
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Load and merge config from file + CLI flags.
|
|
49
|
+
*/
|
|
50
|
+
function loadConfig(args: string[]): DaemonConfig {
|
|
51
|
+
// Start with empty config (all defaults).
|
|
52
|
+
let config: DaemonConfig = {};
|
|
53
|
+
|
|
54
|
+
// Load config file if specified or found in CWD.
|
|
55
|
+
const configPath = flagValue(args, '--config');
|
|
56
|
+
if (configPath) {
|
|
57
|
+
if (!existsSync(configPath)) {
|
|
58
|
+
console.error(`Config file not found: ${configPath}`);
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
config = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
62
|
+
} else {
|
|
63
|
+
// Auto-discover config in CWD.
|
|
64
|
+
for (const name of DEFAULT_CONFIG_FILES) {
|
|
65
|
+
if (existsSync(name)) {
|
|
66
|
+
config = JSON.parse(readFileSync(name, 'utf-8'));
|
|
67
|
+
console.log(`[daemon] Using config from ${name}`);
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Apply --only filter (disables everything not listed).
|
|
74
|
+
const only = flagValue(args, '--only');
|
|
75
|
+
if (only) {
|
|
76
|
+
const ids = new Set(only.split(',').map((s) => s.trim()));
|
|
77
|
+
if (!config.shims) { config.shims = {}; }
|
|
78
|
+
for (const adapter of builtinAdapters) {
|
|
79
|
+
if (!config.shims[adapter.id]) { config.shims[adapter.id] = {}; }
|
|
80
|
+
config.shims[adapter.id].enabled = ids.has(adapter.id);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Apply --disable filter.
|
|
85
|
+
const disable = flagValue(args, '--disable');
|
|
86
|
+
if (disable) {
|
|
87
|
+
const ids = new Set(disable.split(',').map((s) => s.trim()));
|
|
88
|
+
if (!config.shims) { config.shims = {}; }
|
|
89
|
+
for (const id of ids) {
|
|
90
|
+
if (!config.shims[id]) { config.shims[id] = {}; }
|
|
91
|
+
config.shims[id].enabled = false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return config;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
// Command
|
|
100
|
+
// ---------------------------------------------------------------------------
|
|
101
|
+
|
|
102
|
+
export async function daemonCommand(ctx: AgentContext, args: string[]): Promise<void> {
|
|
103
|
+
// --list: show available shims and exit.
|
|
104
|
+
if (args.includes('--list')) {
|
|
105
|
+
console.log('Available shims:\n');
|
|
106
|
+
for (const adapter of builtinAdapters) {
|
|
107
|
+
console.log(` ${adapter.id.padEnd(12)} ${adapter.name.padEnd(24)} default port: ${adapter.defaultPort} env: ${adapter.portEnvVar}`);
|
|
108
|
+
}
|
|
109
|
+
console.log(`\nTotal: ${builtinAdapters.length} adapters`);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const config = loadConfig(args);
|
|
114
|
+
const instance = await startDaemon({ ctx, config });
|
|
115
|
+
|
|
116
|
+
// Register signal handlers for graceful shutdown.
|
|
117
|
+
const shutdown = async (): Promise<void> => {
|
|
118
|
+
console.log('\n[daemon] Shutting down...');
|
|
119
|
+
await instance.stop();
|
|
120
|
+
console.log('[daemon] All shims stopped.');
|
|
121
|
+
process.exit(0);
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
process.on('SIGINT', shutdown);
|
|
125
|
+
process.on('SIGTERM', shutdown);
|
|
126
|
+
|
|
127
|
+
// Keep the process alive.
|
|
128
|
+
await new Promise(() => {});
|
|
129
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `gitd github-api` — start the GitHub API compatibility shim.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* gitd github-api [--port <port>]
|
|
6
|
+
*
|
|
7
|
+
* Starts a read-only HTTP server that translates GitHub REST API v3
|
|
8
|
+
* requests into DWN queries. Default port: 8181.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import type { AgentContext } from '../agent.js';
|
|
14
|
+
|
|
15
|
+
import { startShimServer } from '../../github-shim/server.js';
|
|
16
|
+
import { flagValue, parsePort } from '../flags.js';
|
|
17
|
+
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Command
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
|
|
22
|
+
export async function githubApiCommand(ctx: AgentContext, args: string[]): Promise<void> {
|
|
23
|
+
const port = parsePort(flagValue(args, '--port') ?? process.env.GITD_GITHUB_API_PORT ?? '8181');
|
|
24
|
+
|
|
25
|
+
console.log('Starting GitHub API compatibility shim...');
|
|
26
|
+
startShimServer({ ctx, port });
|
|
27
|
+
|
|
28
|
+
// Keep the process alive — the server runs until Ctrl+C.
|
|
29
|
+
await new Promise(() => {});
|
|
30
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `gitd init` — create a forge repository record on the local DWN
|
|
3
|
+
* and initialize a bare git repository on the filesystem.
|
|
4
|
+
*
|
|
5
|
+
* Usage: gitd init <name> [--description <text>] [--branch <name>] [--repos <path>]
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type { AgentContext } from '../agent.js';
|
|
11
|
+
|
|
12
|
+
import { flagValue } from '../flags.js';
|
|
13
|
+
import { GitBackend } from '../../git-server/git-backend.js';
|
|
14
|
+
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
// Command
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
|
|
19
|
+
export async function initCommand(ctx: AgentContext, args: string[]): Promise<void> {
|
|
20
|
+
const name = args[0];
|
|
21
|
+
const description = flagValue(args, '--description') ?? flagValue(args, '-d');
|
|
22
|
+
const branch = flagValue(args, '--branch') ?? flagValue(args, '-b') ?? 'main';
|
|
23
|
+
const reposPath = flagValue(args, '--repos') ?? process.env.GITD_REPOS ?? './repos';
|
|
24
|
+
|
|
25
|
+
if (!name) {
|
|
26
|
+
console.error('Usage: gitd init <name> [--description <text>] [--branch <name>] [--repos <path>]');
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Check if a repo already exists (singleton).
|
|
31
|
+
const { records: existing } = await ctx.repo.records.query('repo');
|
|
32
|
+
if (existing.length > 0) {
|
|
33
|
+
const data = await existing[0].data.json();
|
|
34
|
+
console.error(`Repository "${data.name}" already exists (recordId: ${existing[0].id}).`);
|
|
35
|
+
console.error('The forge-repo protocol allows only one repo record per DWN.');
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Initialize the bare git repository on disk.
|
|
40
|
+
const backend = new GitBackend({ basePath: reposPath });
|
|
41
|
+
const gitPath = await backend.initRepo(ctx.did, name);
|
|
42
|
+
|
|
43
|
+
// Create the DWN repo record.
|
|
44
|
+
const { status, record } = await ctx.repo.records.create('repo', {
|
|
45
|
+
data: {
|
|
46
|
+
name,
|
|
47
|
+
description : description ?? '',
|
|
48
|
+
defaultBranch : branch,
|
|
49
|
+
dwnEndpoints : [],
|
|
50
|
+
},
|
|
51
|
+
tags: {
|
|
52
|
+
name,
|
|
53
|
+
visibility: 'public',
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
if (status.code >= 300) {
|
|
58
|
+
console.error(`Failed to create repo: ${status.code} ${status.detail}`);
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
console.log(`Initialized forge repo "${name}" (branch: ${branch})`);
|
|
63
|
+
console.log(` DID: ${ctx.did}`);
|
|
64
|
+
console.log(` Record ID: ${record.id}`);
|
|
65
|
+
console.log(` Context: ${record.contextId}`);
|
|
66
|
+
console.log(` Git path: ${gitPath}`);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
|