@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.
Files changed (502) hide show
  1. package/LICENSE +177 -0
  2. package/README.md +134 -0
  3. package/dist/esm/ci.js +76 -0
  4. package/dist/esm/ci.js.map +1 -0
  5. package/dist/esm/cli/agent.js +86 -0
  6. package/dist/esm/cli/agent.js.map +1 -0
  7. package/dist/esm/cli/commands/ci.js +278 -0
  8. package/dist/esm/cli/commands/ci.js.map +1 -0
  9. package/dist/esm/cli/commands/clone.js +77 -0
  10. package/dist/esm/cli/commands/clone.js.map +1 -0
  11. package/dist/esm/cli/commands/daemon.js +132 -0
  12. package/dist/esm/cli/commands/daemon.js.map +1 -0
  13. package/dist/esm/cli/commands/github-api.js +36 -0
  14. package/dist/esm/cli/commands/github-api.js.map +1 -0
  15. package/dist/esm/cli/commands/init.js +69 -0
  16. package/dist/esm/cli/commands/init.js.map +1 -0
  17. package/dist/esm/cli/commands/issue.js +293 -0
  18. package/dist/esm/cli/commands/issue.js.map +1 -0
  19. package/dist/esm/cli/commands/log.js +90 -0
  20. package/dist/esm/cli/commands/log.js.map +1 -0
  21. package/dist/esm/cli/commands/migrate.js +444 -0
  22. package/dist/esm/cli/commands/migrate.js.map +1 -0
  23. package/dist/esm/cli/commands/notification.js +141 -0
  24. package/dist/esm/cli/commands/notification.js.map +1 -0
  25. package/dist/esm/cli/commands/org.js +353 -0
  26. package/dist/esm/cli/commands/org.js.map +1 -0
  27. package/dist/esm/cli/commands/patch.js +375 -0
  28. package/dist/esm/cli/commands/patch.js.map +1 -0
  29. package/dist/esm/cli/commands/registry.js +501 -0
  30. package/dist/esm/cli/commands/registry.js.map +1 -0
  31. package/dist/esm/cli/commands/release.js +197 -0
  32. package/dist/esm/cli/commands/release.js.map +1 -0
  33. package/dist/esm/cli/commands/repo.js +148 -0
  34. package/dist/esm/cli/commands/repo.js.map +1 -0
  35. package/dist/esm/cli/commands/serve.js +148 -0
  36. package/dist/esm/cli/commands/serve.js.map +1 -0
  37. package/dist/esm/cli/commands/setup.js +92 -0
  38. package/dist/esm/cli/commands/setup.js.map +1 -0
  39. package/dist/esm/cli/commands/shim.js +75 -0
  40. package/dist/esm/cli/commands/shim.js.map +1 -0
  41. package/dist/esm/cli/commands/social.js +206 -0
  42. package/dist/esm/cli/commands/social.js.map +1 -0
  43. package/dist/esm/cli/commands/web.js +36 -0
  44. package/dist/esm/cli/commands/web.js.map +1 -0
  45. package/dist/esm/cli/commands/wiki.js +185 -0
  46. package/dist/esm/cli/commands/wiki.js.map +1 -0
  47. package/dist/esm/cli/flags.js +29 -0
  48. package/dist/esm/cli/flags.js.map +1 -0
  49. package/dist/esm/cli/main.js +331 -0
  50. package/dist/esm/cli/main.js.map +1 -0
  51. package/dist/esm/cli/repo-context.js +53 -0
  52. package/dist/esm/cli/repo-context.js.map +1 -0
  53. package/dist/esm/daemon/adapter.js +18 -0
  54. package/dist/esm/daemon/adapter.js.map +1 -0
  55. package/dist/esm/daemon/adapters/github.js +112 -0
  56. package/dist/esm/daemon/adapters/github.js.map +1 -0
  57. package/dist/esm/daemon/adapters/go.js +51 -0
  58. package/dist/esm/daemon/adapters/go.js.map +1 -0
  59. package/dist/esm/daemon/adapters/index.js +32 -0
  60. package/dist/esm/daemon/adapters/index.js.map +1 -0
  61. package/dist/esm/daemon/adapters/npm.js +51 -0
  62. package/dist/esm/daemon/adapters/npm.js.map +1 -0
  63. package/dist/esm/daemon/adapters/oci.js +62 -0
  64. package/dist/esm/daemon/adapters/oci.js.map +1 -0
  65. package/dist/esm/daemon/index.js +12 -0
  66. package/dist/esm/daemon/index.js.map +1 -0
  67. package/dist/esm/daemon/server.js +167 -0
  68. package/dist/esm/daemon/server.js.map +1 -0
  69. package/dist/esm/git-remote/credential-helper.js +106 -0
  70. package/dist/esm/git-remote/credential-helper.js.map +1 -0
  71. package/dist/esm/git-remote/credential-main.js +109 -0
  72. package/dist/esm/git-remote/credential-main.js.map +1 -0
  73. package/dist/esm/git-remote/index.js +10 -0
  74. package/dist/esm/git-remote/index.js.map +1 -0
  75. package/dist/esm/git-remote/main.js +78 -0
  76. package/dist/esm/git-remote/main.js.map +1 -0
  77. package/dist/esm/git-remote/parse-url.js +60 -0
  78. package/dist/esm/git-remote/parse-url.js.map +1 -0
  79. package/dist/esm/git-remote/resolve.js +175 -0
  80. package/dist/esm/git-remote/resolve.js.map +1 -0
  81. package/dist/esm/git-remote/service.js +82 -0
  82. package/dist/esm/git-remote/service.js.map +1 -0
  83. package/dist/esm/git-server/auth.js +211 -0
  84. package/dist/esm/git-server/auth.js.map +1 -0
  85. package/dist/esm/git-server/bundle-restore.js +180 -0
  86. package/dist/esm/git-server/bundle-restore.js.map +1 -0
  87. package/dist/esm/git-server/bundle-sync.js +233 -0
  88. package/dist/esm/git-server/bundle-sync.js.map +1 -0
  89. package/dist/esm/git-server/did-service.js +73 -0
  90. package/dist/esm/git-server/did-service.js.map +1 -0
  91. package/dist/esm/git-server/git-backend.js +186 -0
  92. package/dist/esm/git-server/git-backend.js.map +1 -0
  93. package/dist/esm/git-server/http-handler.js +295 -0
  94. package/dist/esm/git-server/http-handler.js.map +1 -0
  95. package/dist/esm/git-server/index.js +16 -0
  96. package/dist/esm/git-server/index.js.map +1 -0
  97. package/dist/esm/git-server/push-authorizer.js +62 -0
  98. package/dist/esm/git-server/push-authorizer.js.map +1 -0
  99. package/dist/esm/git-server/ref-sync.js +132 -0
  100. package/dist/esm/git-server/ref-sync.js.map +1 -0
  101. package/dist/esm/git-server/server.js +185 -0
  102. package/dist/esm/git-server/server.js.map +1 -0
  103. package/dist/esm/git-server/verify.js +109 -0
  104. package/dist/esm/git-server/verify.js.map +1 -0
  105. package/dist/esm/github-shim/helpers.js +273 -0
  106. package/dist/esm/github-shim/helpers.js.map +1 -0
  107. package/dist/esm/github-shim/index.js +13 -0
  108. package/dist/esm/github-shim/index.js.map +1 -0
  109. package/dist/esm/github-shim/issues.js +318 -0
  110. package/dist/esm/github-shim/issues.js.map +1 -0
  111. package/dist/esm/github-shim/pulls.js +423 -0
  112. package/dist/esm/github-shim/pulls.js.map +1 -0
  113. package/dist/esm/github-shim/releases.js +154 -0
  114. package/dist/esm/github-shim/releases.js.map +1 -0
  115. package/dist/esm/github-shim/repos.js +86 -0
  116. package/dist/esm/github-shim/repos.js.map +1 -0
  117. package/dist/esm/github-shim/server.js +351 -0
  118. package/dist/esm/github-shim/server.js.map +1 -0
  119. package/dist/esm/github-shim/users.js +61 -0
  120. package/dist/esm/github-shim/users.js.map +1 -0
  121. package/dist/esm/index.js +26 -0
  122. package/dist/esm/index.js.map +1 -0
  123. package/dist/esm/indexer/api.js +132 -0
  124. package/dist/esm/indexer/api.js.map +1 -0
  125. package/dist/esm/indexer/crawler.js +256 -0
  126. package/dist/esm/indexer/crawler.js.map +1 -0
  127. package/dist/esm/indexer/index.js +9 -0
  128. package/dist/esm/indexer/index.js.map +1 -0
  129. package/dist/esm/indexer/main.js +76 -0
  130. package/dist/esm/indexer/main.js.map +1 -0
  131. package/dist/esm/indexer/store.js +334 -0
  132. package/dist/esm/indexer/store.js.map +1 -0
  133. package/dist/esm/issues.js +133 -0
  134. package/dist/esm/issues.js.map +1 -0
  135. package/dist/esm/notifications.js +47 -0
  136. package/dist/esm/notifications.js.map +1 -0
  137. package/dist/esm/org.js +90 -0
  138. package/dist/esm/org.js.map +1 -0
  139. package/dist/esm/patches.js +136 -0
  140. package/dist/esm/patches.js.map +1 -0
  141. package/dist/esm/refs.js +54 -0
  142. package/dist/esm/refs.js.map +1 -0
  143. package/dist/esm/registry.js +81 -0
  144. package/dist/esm/registry.js.map +1 -0
  145. package/dist/esm/releases.js +78 -0
  146. package/dist/esm/releases.js.map +1 -0
  147. package/dist/esm/repo.js +150 -0
  148. package/dist/esm/repo.js.map +1 -0
  149. package/dist/esm/resolver/index.js +10 -0
  150. package/dist/esm/resolver/index.js.map +1 -0
  151. package/dist/esm/resolver/resolve.js +189 -0
  152. package/dist/esm/resolver/resolve.js.map +1 -0
  153. package/dist/esm/resolver/trust-chain.js +155 -0
  154. package/dist/esm/resolver/trust-chain.js.map +1 -0
  155. package/dist/esm/resolver/verify.js +186 -0
  156. package/dist/esm/resolver/verify.js.map +1 -0
  157. package/dist/esm/shims/go/index.js +9 -0
  158. package/dist/esm/shims/go/index.js.map +1 -0
  159. package/dist/esm/shims/go/proxy.js +275 -0
  160. package/dist/esm/shims/go/proxy.js.map +1 -0
  161. package/dist/esm/shims/go/server.js +70 -0
  162. package/dist/esm/shims/go/server.js.map +1 -0
  163. package/dist/esm/shims/index.js +15 -0
  164. package/dist/esm/shims/index.js.map +1 -0
  165. package/dist/esm/shims/npm/index.js +9 -0
  166. package/dist/esm/shims/npm/index.js.map +1 -0
  167. package/dist/esm/shims/npm/registry.js +234 -0
  168. package/dist/esm/shims/npm/registry.js.map +1 -0
  169. package/dist/esm/shims/npm/server.js +72 -0
  170. package/dist/esm/shims/npm/server.js.map +1 -0
  171. package/dist/esm/shims/oci/index.js +9 -0
  172. package/dist/esm/shims/oci/index.js.map +1 -0
  173. package/dist/esm/shims/oci/registry.js +276 -0
  174. package/dist/esm/shims/oci/registry.js.map +1 -0
  175. package/dist/esm/shims/oci/server.js +82 -0
  176. package/dist/esm/shims/oci/server.js.map +1 -0
  177. package/dist/esm/social.js +70 -0
  178. package/dist/esm/social.js.map +1 -0
  179. package/dist/esm/web/html.js +123 -0
  180. package/dist/esm/web/html.js.map +1 -0
  181. package/dist/esm/web/index.js +7 -0
  182. package/dist/esm/web/index.js.map +1 -0
  183. package/dist/esm/web/routes.js +420 -0
  184. package/dist/esm/web/routes.js.map +1 -0
  185. package/dist/esm/web/server.js +225 -0
  186. package/dist/esm/web/server.js.map +1 -0
  187. package/dist/esm/wiki.js +63 -0
  188. package/dist/esm/wiki.js.map +1 -0
  189. package/dist/types/ci.d.ts +203 -0
  190. package/dist/types/ci.d.ts.map +1 -0
  191. package/dist/types/cli/agent.d.ts +59 -0
  192. package/dist/types/cli/agent.d.ts.map +1 -0
  193. package/dist/types/cli/commands/ci.d.ts +16 -0
  194. package/dist/types/cli/commands/ci.d.ts.map +1 -0
  195. package/dist/types/cli/commands/clone.d.ts +13 -0
  196. package/dist/types/cli/commands/clone.d.ts.map +1 -0
  197. package/dist/types/cli/commands/daemon.d.ts +29 -0
  198. package/dist/types/cli/commands/daemon.d.ts.map +1 -0
  199. package/dist/types/cli/commands/github-api.d.ts +14 -0
  200. package/dist/types/cli/commands/github-api.d.ts.map +1 -0
  201. package/dist/types/cli/commands/init.d.ts +11 -0
  202. package/dist/types/cli/commands/init.d.ts.map +1 -0
  203. package/dist/types/cli/commands/issue.d.ts +16 -0
  204. package/dist/types/cli/commands/issue.d.ts.map +1 -0
  205. package/dist/types/cli/commands/log.d.ts +13 -0
  206. package/dist/types/cli/commands/log.d.ts.map +1 -0
  207. package/dist/types/cli/commands/migrate.d.ts +19 -0
  208. package/dist/types/cli/commands/migrate.d.ts.map +1 -0
  209. package/dist/types/cli/commands/notification.d.ts +16 -0
  210. package/dist/types/cli/commands/notification.d.ts.map +1 -0
  211. package/dist/types/cli/commands/org.d.ts +19 -0
  212. package/dist/types/cli/commands/org.d.ts.map +1 -0
  213. package/dist/types/cli/commands/patch.d.ts +17 -0
  214. package/dist/types/cli/commands/patch.d.ts.map +1 -0
  215. package/dist/types/cli/commands/registry.d.ts +25 -0
  216. package/dist/types/cli/commands/registry.d.ts.map +1 -0
  217. package/dist/types/cli/commands/release.d.ts +13 -0
  218. package/dist/types/cli/commands/release.d.ts.map +1 -0
  219. package/dist/types/cli/commands/repo.d.ts +15 -0
  220. package/dist/types/cli/commands/repo.d.ts.map +1 -0
  221. package/dist/types/cli/commands/serve.d.ts +22 -0
  222. package/dist/types/cli/commands/serve.d.ts.map +1 -0
  223. package/dist/types/cli/commands/setup.d.ts +16 -0
  224. package/dist/types/cli/commands/setup.d.ts.map +1 -0
  225. package/dist/types/cli/commands/shim.d.ts +16 -0
  226. package/dist/types/cli/commands/shim.d.ts.map +1 -0
  227. package/dist/types/cli/commands/social.d.ts +19 -0
  228. package/dist/types/cli/commands/social.d.ts.map +1 -0
  229. package/dist/types/cli/commands/web.d.ts +14 -0
  230. package/dist/types/cli/commands/web.d.ts.map +1 -0
  231. package/dist/types/cli/commands/wiki.d.ts +14 -0
  232. package/dist/types/cli/commands/wiki.d.ts.map +1 -0
  233. package/dist/types/cli/flags.d.ts +16 -0
  234. package/dist/types/cli/flags.d.ts.map +1 -0
  235. package/dist/types/cli/main.d.ts +69 -0
  236. package/dist/types/cli/main.d.ts.map +1 -0
  237. package/dist/types/cli/repo-context.d.ts +30 -0
  238. package/dist/types/cli/repo-context.d.ts.map +1 -0
  239. package/dist/types/daemon/adapter.d.ts +74 -0
  240. package/dist/types/daemon/adapter.d.ts.map +1 -0
  241. package/dist/types/daemon/adapters/github.d.ts +10 -0
  242. package/dist/types/daemon/adapters/github.d.ts.map +1 -0
  243. package/dist/types/daemon/adapters/go.d.ts +10 -0
  244. package/dist/types/daemon/adapters/go.d.ts.map +1 -0
  245. package/dist/types/daemon/adapters/index.d.ts +22 -0
  246. package/dist/types/daemon/adapters/index.d.ts.map +1 -0
  247. package/dist/types/daemon/adapters/npm.d.ts +10 -0
  248. package/dist/types/daemon/adapters/npm.d.ts.map +1 -0
  249. package/dist/types/daemon/adapters/oci.d.ts +10 -0
  250. package/dist/types/daemon/adapters/oci.d.ts.map +1 -0
  251. package/dist/types/daemon/index.d.ts +14 -0
  252. package/dist/types/daemon/index.d.ts.map +1 -0
  253. package/dist/types/daemon/server.d.ts +55 -0
  254. package/dist/types/daemon/server.d.ts.map +1 -0
  255. package/dist/types/git-remote/credential-helper.d.ts +49 -0
  256. package/dist/types/git-remote/credential-helper.d.ts.map +1 -0
  257. package/dist/types/git-remote/credential-main.d.ts +24 -0
  258. package/dist/types/git-remote/credential-main.d.ts.map +1 -0
  259. package/dist/types/git-remote/index.d.ts +10 -0
  260. package/dist/types/git-remote/index.d.ts.map +1 -0
  261. package/dist/types/git-remote/main.d.ts +23 -0
  262. package/dist/types/git-remote/main.d.ts.map +1 -0
  263. package/dist/types/git-remote/parse-url.d.ts +32 -0
  264. package/dist/types/git-remote/parse-url.d.ts.map +1 -0
  265. package/dist/types/git-remote/resolve.d.ts +30 -0
  266. package/dist/types/git-remote/resolve.d.ts.map +1 -0
  267. package/dist/types/git-remote/service.d.ts +75 -0
  268. package/dist/types/git-remote/service.d.ts.map +1 -0
  269. package/dist/types/git-server/auth.d.ts +129 -0
  270. package/dist/types/git-server/auth.d.ts.map +1 -0
  271. package/dist/types/git-server/bundle-restore.d.ts +48 -0
  272. package/dist/types/git-server/bundle-restore.d.ts.map +1 -0
  273. package/dist/types/git-server/bundle-sync.d.ts +90 -0
  274. package/dist/types/git-server/bundle-sync.d.ts.map +1 -0
  275. package/dist/types/git-server/did-service.d.ts +26 -0
  276. package/dist/types/git-server/did-service.d.ts.map +1 -0
  277. package/dist/types/git-server/git-backend.d.ts +84 -0
  278. package/dist/types/git-server/git-backend.d.ts.map +1 -0
  279. package/dist/types/git-server/http-handler.d.ts +73 -0
  280. package/dist/types/git-server/http-handler.d.ts.map +1 -0
  281. package/dist/types/git-server/index.d.ts +16 -0
  282. package/dist/types/git-server/index.d.ts.map +1 -0
  283. package/dist/types/git-server/push-authorizer.d.ts +38 -0
  284. package/dist/types/git-server/push-authorizer.d.ts.map +1 -0
  285. package/dist/types/git-server/ref-sync.d.ts +52 -0
  286. package/dist/types/git-server/ref-sync.d.ts.map +1 -0
  287. package/dist/types/git-server/server.d.ts +70 -0
  288. package/dist/types/git-server/server.d.ts.map +1 -0
  289. package/dist/types/git-server/verify.d.ts +12 -0
  290. package/dist/types/git-server/verify.d.ts.map +1 -0
  291. package/dist/types/github-shim/helpers.d.ts +108 -0
  292. package/dist/types/github-shim/helpers.d.ts.map +1 -0
  293. package/dist/types/github-shim/index.d.ts +15 -0
  294. package/dist/types/github-shim/index.d.ts.map +1 -0
  295. package/dist/types/github-shim/issues.d.ts +24 -0
  296. package/dist/types/github-shim/issues.d.ts.map +1 -0
  297. package/dist/types/github-shim/pulls.d.ts +31 -0
  298. package/dist/types/github-shim/pulls.d.ts.map +1 -0
  299. package/dist/types/github-shim/releases.d.ts +18 -0
  300. package/dist/types/github-shim/releases.d.ts.map +1 -0
  301. package/dist/types/github-shim/repos.d.ts +21 -0
  302. package/dist/types/github-shim/repos.d.ts.map +1 -0
  303. package/dist/types/github-shim/server.d.ts +53 -0
  304. package/dist/types/github-shim/server.d.ts.map +1 -0
  305. package/dist/types/github-shim/users.d.ts +17 -0
  306. package/dist/types/github-shim/users.d.ts.map +1 -0
  307. package/dist/types/index.d.ts +26 -0
  308. package/dist/types/index.d.ts.map +1 -0
  309. package/dist/types/indexer/api.d.ts +32 -0
  310. package/dist/types/indexer/api.d.ts.map +1 -0
  311. package/dist/types/indexer/crawler.d.ts +72 -0
  312. package/dist/types/indexer/crawler.d.ts.map +1 -0
  313. package/dist/types/indexer/index.d.ts +12 -0
  314. package/dist/types/indexer/index.d.ts.map +1 -0
  315. package/dist/types/indexer/main.d.ts +21 -0
  316. package/dist/types/indexer/main.d.ts.map +1 -0
  317. package/dist/types/indexer/store.d.ts +168 -0
  318. package/dist/types/indexer/store.d.ts.map +1 -0
  319. package/dist/types/issues.d.ts +395 -0
  320. package/dist/types/issues.d.ts.map +1 -0
  321. package/dist/types/notifications.d.ts +93 -0
  322. package/dist/types/notifications.d.ts.map +1 -0
  323. package/dist/types/org.d.ts +232 -0
  324. package/dist/types/org.d.ts.map +1 -0
  325. package/dist/types/patches.d.ts +410 -0
  326. package/dist/types/patches.d.ts.map +1 -0
  327. package/dist/types/refs.d.ts +114 -0
  328. package/dist/types/refs.d.ts.map +1 -0
  329. package/dist/types/registry.d.ts +212 -0
  330. package/dist/types/registry.d.ts.map +1 -0
  331. package/dist/types/releases.d.ts +204 -0
  332. package/dist/types/releases.d.ts.map +1 -0
  333. package/dist/types/repo.d.ts +450 -0
  334. package/dist/types/repo.d.ts.map +1 -0
  335. package/dist/types/resolver/index.d.ts +13 -0
  336. package/dist/types/resolver/index.d.ts.map +1 -0
  337. package/dist/types/resolver/resolve.d.ts +80 -0
  338. package/dist/types/resolver/resolve.d.ts.map +1 -0
  339. package/dist/types/resolver/trust-chain.d.ts +54 -0
  340. package/dist/types/resolver/trust-chain.d.ts.map +1 -0
  341. package/dist/types/resolver/verify.d.ts +62 -0
  342. package/dist/types/resolver/verify.d.ts.map +1 -0
  343. package/dist/types/shims/go/index.d.ts +11 -0
  344. package/dist/types/shims/go/index.d.ts.map +1 -0
  345. package/dist/types/shims/go/proxy.d.ts +51 -0
  346. package/dist/types/shims/go/proxy.d.ts.map +1 -0
  347. package/dist/types/shims/go/server.d.ts +23 -0
  348. package/dist/types/shims/go/server.d.ts.map +1 -0
  349. package/dist/types/shims/index.d.ts +18 -0
  350. package/dist/types/shims/index.d.ts.map +1 -0
  351. package/dist/types/shims/npm/index.d.ts +11 -0
  352. package/dist/types/shims/npm/index.d.ts.map +1 -0
  353. package/dist/types/shims/npm/registry.d.ts +46 -0
  354. package/dist/types/shims/npm/registry.d.ts.map +1 -0
  355. package/dist/types/shims/npm/server.d.ts +23 -0
  356. package/dist/types/shims/npm/server.d.ts.map +1 -0
  357. package/dist/types/shims/oci/index.d.ts +11 -0
  358. package/dist/types/shims/oci/index.d.ts.map +1 -0
  359. package/dist/types/shims/oci/registry.d.ts +56 -0
  360. package/dist/types/shims/oci/registry.d.ts.map +1 -0
  361. package/dist/types/shims/oci/server.d.ts +23 -0
  362. package/dist/types/shims/oci/server.d.ts.map +1 -0
  363. package/dist/types/social.d.ts +162 -0
  364. package/dist/types/social.d.ts.map +1 -0
  365. package/dist/types/web/html.d.ts +23 -0
  366. package/dist/types/web/html.d.ts.map +1 -0
  367. package/dist/types/web/index.d.ts +8 -0
  368. package/dist/types/web/index.d.ts.map +1 -0
  369. package/dist/types/web/routes.d.ts +21 -0
  370. package/dist/types/web/routes.d.ts.map +1 -0
  371. package/dist/types/web/server.d.ts +38 -0
  372. package/dist/types/web/server.d.ts.map +1 -0
  373. package/dist/types/wiki.d.ts +143 -0
  374. package/dist/types/wiki.d.ts.map +1 -0
  375. package/package.json +108 -0
  376. package/schemas/ci/check-run.json +23 -0
  377. package/schemas/ci/check-suite.json +23 -0
  378. package/schemas/issues/assignment.json +17 -0
  379. package/schemas/issues/comment.json +14 -0
  380. package/schemas/issues/issue.json +20 -0
  381. package/schemas/issues/label.json +17 -0
  382. package/schemas/issues/reaction.json +14 -0
  383. package/schemas/issues/status-change.json +14 -0
  384. package/schemas/notifications/notification.json +20 -0
  385. package/schemas/org/org-member.json +17 -0
  386. package/schemas/org/org.json +26 -0
  387. package/schemas/org/team-member.json +17 -0
  388. package/schemas/org/team.json +17 -0
  389. package/schemas/patches/merge-result.json +14 -0
  390. package/schemas/patches/patch-status-change.json +14 -0
  391. package/schemas/patches/patch.json +20 -0
  392. package/schemas/patches/review-comment.json +17 -0
  393. package/schemas/patches/review.json +14 -0
  394. package/schemas/patches/revision.json +30 -0
  395. package/schemas/refs/git-ref.json +32 -0
  396. package/schemas/registry/attestation.json +23 -0
  397. package/schemas/registry/package-version.json +23 -0
  398. package/schemas/registry/package.json +32 -0
  399. package/schemas/releases/release.json +17 -0
  400. package/schemas/repo/collaborator.json +17 -0
  401. package/schemas/repo/repo.json +35 -0
  402. package/schemas/repo/settings.json +39 -0
  403. package/schemas/repo/topic.json +14 -0
  404. package/schemas/repo/webhook.json +26 -0
  405. package/schemas/social/activity.json +23 -0
  406. package/schemas/social/follow.json +17 -0
  407. package/schemas/social/star.json +20 -0
  408. package/schemas/wiki/wiki-history.json +20 -0
  409. package/schemas/wiki/wiki-page.json +17 -0
  410. package/src/ci.ts +118 -0
  411. package/src/cli/agent.ts +117 -0
  412. package/src/cli/commands/ci.ts +300 -0
  413. package/src/cli/commands/clone.ts +78 -0
  414. package/src/cli/commands/daemon.ts +129 -0
  415. package/src/cli/commands/github-api.ts +30 -0
  416. package/src/cli/commands/init.ts +69 -0
  417. package/src/cli/commands/issue.ts +321 -0
  418. package/src/cli/commands/log.ts +106 -0
  419. package/src/cli/commands/migrate.ts +525 -0
  420. package/src/cli/commands/notification.ts +148 -0
  421. package/src/cli/commands/org.ts +381 -0
  422. package/src/cli/commands/patch.ts +413 -0
  423. package/src/cli/commands/registry.ts +542 -0
  424. package/src/cli/commands/release.ts +189 -0
  425. package/src/cli/commands/repo.ts +160 -0
  426. package/src/cli/commands/serve.ts +153 -0
  427. package/src/cli/commands/setup.ts +97 -0
  428. package/src/cli/commands/shim.ts +79 -0
  429. package/src/cli/commands/social.ts +221 -0
  430. package/src/cli/commands/web.ts +30 -0
  431. package/src/cli/commands/wiki.ts +199 -0
  432. package/src/cli/flags.ts +28 -0
  433. package/src/cli/main.ts +350 -0
  434. package/src/cli/repo-context.ts +55 -0
  435. package/src/daemon/adapter.ts +95 -0
  436. package/src/daemon/adapters/github.ts +86 -0
  437. package/src/daemon/adapters/go.ts +47 -0
  438. package/src/daemon/adapters/index.ts +36 -0
  439. package/src/daemon/adapters/npm.ts +47 -0
  440. package/src/daemon/adapters/oci.ts +59 -0
  441. package/src/daemon/index.ts +16 -0
  442. package/src/daemon/server.ts +204 -0
  443. package/src/git-remote/credential-helper.ts +114 -0
  444. package/src/git-remote/credential-main.ts +118 -0
  445. package/src/git-remote/index.ts +10 -0
  446. package/src/git-remote/main.ts +74 -0
  447. package/src/git-remote/parse-url.ts +81 -0
  448. package/src/git-remote/resolve.ts +207 -0
  449. package/src/git-remote/service.ts +126 -0
  450. package/src/git-server/auth.ts +308 -0
  451. package/src/git-server/bundle-restore.ts +217 -0
  452. package/src/git-server/bundle-sync.ts +300 -0
  453. package/src/git-server/did-service.ts +77 -0
  454. package/src/git-server/git-backend.ts +222 -0
  455. package/src/git-server/http-handler.ts +386 -0
  456. package/src/git-server/index.ts +16 -0
  457. package/src/git-server/push-authorizer.ts +77 -0
  458. package/src/git-server/ref-sync.ts +166 -0
  459. package/src/git-server/server.ts +236 -0
  460. package/src/git-server/verify.ts +116 -0
  461. package/src/github-shim/helpers.ts +311 -0
  462. package/src/github-shim/index.ts +35 -0
  463. package/src/github-shim/issues.ts +389 -0
  464. package/src/github-shim/pulls.ts +500 -0
  465. package/src/github-shim/releases.ts +185 -0
  466. package/src/github-shim/repos.ts +95 -0
  467. package/src/github-shim/server.ts +334 -0
  468. package/src/github-shim/users.ts +63 -0
  469. package/src/index.ts +26 -0
  470. package/src/indexer/api.ts +162 -0
  471. package/src/indexer/crawler.ts +290 -0
  472. package/src/indexer/index.ts +22 -0
  473. package/src/indexer/main.ts +83 -0
  474. package/src/indexer/store.ts +408 -0
  475. package/src/issues.ts +200 -0
  476. package/src/notifications.ts +80 -0
  477. package/src/org.ts +147 -0
  478. package/src/patches.ts +203 -0
  479. package/src/refs.ts +94 -0
  480. package/src/registry.ts +132 -0
  481. package/src/releases.ts +124 -0
  482. package/src/repo.ts +234 -0
  483. package/src/resolver/index.ts +42 -0
  484. package/src/resolver/resolve.ts +244 -0
  485. package/src/resolver/trust-chain.ts +217 -0
  486. package/src/resolver/verify.ts +237 -0
  487. package/src/shims/go/index.ts +14 -0
  488. package/src/shims/go/proxy.ts +336 -0
  489. package/src/shims/go/server.ts +82 -0
  490. package/src/shims/index.ts +20 -0
  491. package/src/shims/npm/index.ts +14 -0
  492. package/src/shims/npm/registry.ts +288 -0
  493. package/src/shims/npm/server.ts +84 -0
  494. package/src/shims/oci/index.ts +14 -0
  495. package/src/shims/oci/registry.ts +334 -0
  496. package/src/shims/oci/server.ts +94 -0
  497. package/src/social.ts +116 -0
  498. package/src/web/html.ts +120 -0
  499. package/src/web/index.ts +8 -0
  500. package/src/web/routes.ts +449 -0
  501. package/src/web/server.ts +256 -0
  502. 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
+