gitx.do 0.1.1 → 0.1.2

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 (356) hide show
  1. package/README.md +40 -353
  2. package/dist/do/logger.d.ts +50 -0
  3. package/dist/do/logger.d.ts.map +1 -0
  4. package/dist/do/logger.js +122 -0
  5. package/dist/do/logger.js.map +1 -0
  6. package/dist/{durable-object → do}/schema.d.ts +3 -3
  7. package/dist/do/schema.d.ts.map +1 -0
  8. package/dist/{durable-object → do}/schema.js +4 -3
  9. package/dist/do/schema.js.map +1 -0
  10. package/dist/do/types.d.ts +267 -0
  11. package/dist/do/types.d.ts.map +1 -0
  12. package/dist/do/types.js +62 -0
  13. package/dist/do/types.js.map +1 -0
  14. package/dist/index.d.ts +14 -469
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +31 -483
  17. package/dist/index.js.map +1 -1
  18. package/package.json +13 -21
  19. package/dist/cli/commands/add.d.ts +0 -176
  20. package/dist/cli/commands/add.d.ts.map +0 -1
  21. package/dist/cli/commands/add.js +0 -979
  22. package/dist/cli/commands/add.js.map +0 -1
  23. package/dist/cli/commands/blame.d.ts +0 -259
  24. package/dist/cli/commands/blame.d.ts.map +0 -1
  25. package/dist/cli/commands/blame.js +0 -609
  26. package/dist/cli/commands/blame.js.map +0 -1
  27. package/dist/cli/commands/branch.d.ts +0 -249
  28. package/dist/cli/commands/branch.d.ts.map +0 -1
  29. package/dist/cli/commands/branch.js +0 -693
  30. package/dist/cli/commands/branch.js.map +0 -1
  31. package/dist/cli/commands/checkout.d.ts +0 -73
  32. package/dist/cli/commands/checkout.d.ts.map +0 -1
  33. package/dist/cli/commands/checkout.js +0 -725
  34. package/dist/cli/commands/checkout.js.map +0 -1
  35. package/dist/cli/commands/commit.d.ts +0 -182
  36. package/dist/cli/commands/commit.d.ts.map +0 -1
  37. package/dist/cli/commands/commit.js +0 -457
  38. package/dist/cli/commands/commit.js.map +0 -1
  39. package/dist/cli/commands/diff.d.ts +0 -464
  40. package/dist/cli/commands/diff.d.ts.map +0 -1
  41. package/dist/cli/commands/diff.js +0 -959
  42. package/dist/cli/commands/diff.js.map +0 -1
  43. package/dist/cli/commands/log.d.ts +0 -239
  44. package/dist/cli/commands/log.d.ts.map +0 -1
  45. package/dist/cli/commands/log.js +0 -535
  46. package/dist/cli/commands/log.js.map +0 -1
  47. package/dist/cli/commands/merge.d.ts +0 -106
  48. package/dist/cli/commands/merge.d.ts.map +0 -1
  49. package/dist/cli/commands/merge.js +0 -852
  50. package/dist/cli/commands/merge.js.map +0 -1
  51. package/dist/cli/commands/review.d.ts +0 -457
  52. package/dist/cli/commands/review.d.ts.map +0 -1
  53. package/dist/cli/commands/review.js +0 -558
  54. package/dist/cli/commands/review.js.map +0 -1
  55. package/dist/cli/commands/stash.d.ts +0 -157
  56. package/dist/cli/commands/stash.d.ts.map +0 -1
  57. package/dist/cli/commands/stash.js +0 -655
  58. package/dist/cli/commands/stash.js.map +0 -1
  59. package/dist/cli/commands/status.d.ts +0 -269
  60. package/dist/cli/commands/status.d.ts.map +0 -1
  61. package/dist/cli/commands/status.js +0 -492
  62. package/dist/cli/commands/status.js.map +0 -1
  63. package/dist/cli/commands/web.d.ts +0 -199
  64. package/dist/cli/commands/web.d.ts.map +0 -1
  65. package/dist/cli/commands/web.js +0 -697
  66. package/dist/cli/commands/web.js.map +0 -1
  67. package/dist/cli/fs-adapter.d.ts +0 -656
  68. package/dist/cli/fs-adapter.d.ts.map +0 -1
  69. package/dist/cli/fs-adapter.js +0 -1177
  70. package/dist/cli/fs-adapter.js.map +0 -1
  71. package/dist/cli/fsx-cli-adapter.d.ts +0 -359
  72. package/dist/cli/fsx-cli-adapter.d.ts.map +0 -1
  73. package/dist/cli/fsx-cli-adapter.js +0 -619
  74. package/dist/cli/fsx-cli-adapter.js.map +0 -1
  75. package/dist/cli/index.d.ts +0 -387
  76. package/dist/cli/index.d.ts.map +0 -1
  77. package/dist/cli/index.js +0 -579
  78. package/dist/cli/index.js.map +0 -1
  79. package/dist/cli/ui/components/DiffView.d.ts +0 -12
  80. package/dist/cli/ui/components/DiffView.d.ts.map +0 -1
  81. package/dist/cli/ui/components/DiffView.js +0 -11
  82. package/dist/cli/ui/components/DiffView.js.map +0 -1
  83. package/dist/cli/ui/components/ErrorDisplay.d.ts +0 -10
  84. package/dist/cli/ui/components/ErrorDisplay.d.ts.map +0 -1
  85. package/dist/cli/ui/components/ErrorDisplay.js +0 -11
  86. package/dist/cli/ui/components/ErrorDisplay.js.map +0 -1
  87. package/dist/cli/ui/components/FuzzySearch.d.ts +0 -15
  88. package/dist/cli/ui/components/FuzzySearch.d.ts.map +0 -1
  89. package/dist/cli/ui/components/FuzzySearch.js +0 -12
  90. package/dist/cli/ui/components/FuzzySearch.js.map +0 -1
  91. package/dist/cli/ui/components/LoadingSpinner.d.ts +0 -10
  92. package/dist/cli/ui/components/LoadingSpinner.d.ts.map +0 -1
  93. package/dist/cli/ui/components/LoadingSpinner.js +0 -10
  94. package/dist/cli/ui/components/LoadingSpinner.js.map +0 -1
  95. package/dist/cli/ui/components/NavigationList.d.ts +0 -14
  96. package/dist/cli/ui/components/NavigationList.d.ts.map +0 -1
  97. package/dist/cli/ui/components/NavigationList.js +0 -11
  98. package/dist/cli/ui/components/NavigationList.js.map +0 -1
  99. package/dist/cli/ui/components/ScrollableContent.d.ts +0 -13
  100. package/dist/cli/ui/components/ScrollableContent.d.ts.map +0 -1
  101. package/dist/cli/ui/components/ScrollableContent.js +0 -11
  102. package/dist/cli/ui/components/ScrollableContent.js.map +0 -1
  103. package/dist/cli/ui/components/index.d.ts +0 -7
  104. package/dist/cli/ui/components/index.d.ts.map +0 -1
  105. package/dist/cli/ui/components/index.js +0 -9
  106. package/dist/cli/ui/components/index.js.map +0 -1
  107. package/dist/cli/ui/terminal-ui.d.ts +0 -85
  108. package/dist/cli/ui/terminal-ui.d.ts.map +0 -1
  109. package/dist/cli/ui/terminal-ui.js +0 -121
  110. package/dist/cli/ui/terminal-ui.js.map +0 -1
  111. package/dist/do/BashModule.d.ts +0 -871
  112. package/dist/do/BashModule.d.ts.map +0 -1
  113. package/dist/do/BashModule.js +0 -1143
  114. package/dist/do/BashModule.js.map +0 -1
  115. package/dist/do/FsModule.d.ts +0 -612
  116. package/dist/do/FsModule.d.ts.map +0 -1
  117. package/dist/do/FsModule.js +0 -1120
  118. package/dist/do/FsModule.js.map +0 -1
  119. package/dist/do/GitModule.d.ts +0 -635
  120. package/dist/do/GitModule.d.ts.map +0 -1
  121. package/dist/do/GitModule.js +0 -784
  122. package/dist/do/GitModule.js.map +0 -1
  123. package/dist/do/GitRepoDO.d.ts +0 -281
  124. package/dist/do/GitRepoDO.d.ts.map +0 -1
  125. package/dist/do/GitRepoDO.js +0 -479
  126. package/dist/do/GitRepoDO.js.map +0 -1
  127. package/dist/do/bash-ast.d.ts +0 -246
  128. package/dist/do/bash-ast.d.ts.map +0 -1
  129. package/dist/do/bash-ast.js +0 -888
  130. package/dist/do/bash-ast.js.map +0 -1
  131. package/dist/do/container-executor.d.ts +0 -491
  132. package/dist/do/container-executor.d.ts.map +0 -1
  133. package/dist/do/container-executor.js +0 -731
  134. package/dist/do/container-executor.js.map +0 -1
  135. package/dist/do/index.d.ts +0 -53
  136. package/dist/do/index.d.ts.map +0 -1
  137. package/dist/do/index.js +0 -91
  138. package/dist/do/index.js.map +0 -1
  139. package/dist/do/tiered-storage.d.ts +0 -403
  140. package/dist/do/tiered-storage.d.ts.map +0 -1
  141. package/dist/do/tiered-storage.js +0 -689
  142. package/dist/do/tiered-storage.js.map +0 -1
  143. package/dist/do/withBash.d.ts +0 -231
  144. package/dist/do/withBash.d.ts.map +0 -1
  145. package/dist/do/withBash.js +0 -244
  146. package/dist/do/withBash.js.map +0 -1
  147. package/dist/do/withFs.d.ts +0 -237
  148. package/dist/do/withFs.d.ts.map +0 -1
  149. package/dist/do/withFs.js +0 -387
  150. package/dist/do/withFs.js.map +0 -1
  151. package/dist/do/withGit.d.ts +0 -180
  152. package/dist/do/withGit.d.ts.map +0 -1
  153. package/dist/do/withGit.js +0 -271
  154. package/dist/do/withGit.js.map +0 -1
  155. package/dist/durable-object/object-store.d.ts +0 -633
  156. package/dist/durable-object/object-store.d.ts.map +0 -1
  157. package/dist/durable-object/object-store.js +0 -1164
  158. package/dist/durable-object/object-store.js.map +0 -1
  159. package/dist/durable-object/schema.d.ts.map +0 -1
  160. package/dist/durable-object/schema.js.map +0 -1
  161. package/dist/durable-object/wal.d.ts +0 -416
  162. package/dist/durable-object/wal.d.ts.map +0 -1
  163. package/dist/durable-object/wal.js +0 -445
  164. package/dist/durable-object/wal.js.map +0 -1
  165. package/dist/mcp/adapter.d.ts +0 -772
  166. package/dist/mcp/adapter.d.ts.map +0 -1
  167. package/dist/mcp/adapter.js +0 -895
  168. package/dist/mcp/adapter.js.map +0 -1
  169. package/dist/mcp/sandbox/miniflare-evaluator.d.ts +0 -22
  170. package/dist/mcp/sandbox/miniflare-evaluator.d.ts.map +0 -1
  171. package/dist/mcp/sandbox/miniflare-evaluator.js +0 -140
  172. package/dist/mcp/sandbox/miniflare-evaluator.js.map +0 -1
  173. package/dist/mcp/sandbox/object-store-proxy.d.ts +0 -32
  174. package/dist/mcp/sandbox/object-store-proxy.d.ts.map +0 -1
  175. package/dist/mcp/sandbox/object-store-proxy.js +0 -30
  176. package/dist/mcp/sandbox/object-store-proxy.js.map +0 -1
  177. package/dist/mcp/sandbox/template.d.ts +0 -17
  178. package/dist/mcp/sandbox/template.d.ts.map +0 -1
  179. package/dist/mcp/sandbox/template.js +0 -71
  180. package/dist/mcp/sandbox/template.js.map +0 -1
  181. package/dist/mcp/sandbox.d.ts +0 -764
  182. package/dist/mcp/sandbox.d.ts.map +0 -1
  183. package/dist/mcp/sandbox.js +0 -1362
  184. package/dist/mcp/sandbox.js.map +0 -1
  185. package/dist/mcp/sdk-adapter.d.ts +0 -835
  186. package/dist/mcp/sdk-adapter.d.ts.map +0 -1
  187. package/dist/mcp/sdk-adapter.js +0 -974
  188. package/dist/mcp/sdk-adapter.js.map +0 -1
  189. package/dist/mcp/tools/do.d.ts +0 -32
  190. package/dist/mcp/tools/do.d.ts.map +0 -1
  191. package/dist/mcp/tools/do.js +0 -117
  192. package/dist/mcp/tools/do.js.map +0 -1
  193. package/dist/mcp/tools.d.ts +0 -548
  194. package/dist/mcp/tools.d.ts.map +0 -1
  195. package/dist/mcp/tools.js +0 -3170
  196. package/dist/mcp/tools.js.map +0 -1
  197. package/dist/ops/blame.d.ts +0 -551
  198. package/dist/ops/blame.d.ts.map +0 -1
  199. package/dist/ops/blame.js +0 -1037
  200. package/dist/ops/blame.js.map +0 -1
  201. package/dist/ops/branch.d.ts +0 -766
  202. package/dist/ops/branch.d.ts.map +0 -1
  203. package/dist/ops/branch.js +0 -950
  204. package/dist/ops/branch.js.map +0 -1
  205. package/dist/ops/commit-traversal.d.ts +0 -349
  206. package/dist/ops/commit-traversal.d.ts.map +0 -1
  207. package/dist/ops/commit-traversal.js +0 -821
  208. package/dist/ops/commit-traversal.js.map +0 -1
  209. package/dist/ops/commit.d.ts +0 -555
  210. package/dist/ops/commit.d.ts.map +0 -1
  211. package/dist/ops/commit.js +0 -826
  212. package/dist/ops/commit.js.map +0 -1
  213. package/dist/ops/merge-base.d.ts +0 -397
  214. package/dist/ops/merge-base.d.ts.map +0 -1
  215. package/dist/ops/merge-base.js +0 -691
  216. package/dist/ops/merge-base.js.map +0 -1
  217. package/dist/ops/merge.d.ts +0 -855
  218. package/dist/ops/merge.d.ts.map +0 -1
  219. package/dist/ops/merge.js +0 -1551
  220. package/dist/ops/merge.js.map +0 -1
  221. package/dist/ops/tag.d.ts +0 -247
  222. package/dist/ops/tag.d.ts.map +0 -1
  223. package/dist/ops/tag.js +0 -649
  224. package/dist/ops/tag.js.map +0 -1
  225. package/dist/ops/tree-builder.d.ts +0 -178
  226. package/dist/ops/tree-builder.d.ts.map +0 -1
  227. package/dist/ops/tree-builder.js +0 -271
  228. package/dist/ops/tree-builder.js.map +0 -1
  229. package/dist/ops/tree-diff.d.ts +0 -291
  230. package/dist/ops/tree-diff.d.ts.map +0 -1
  231. package/dist/ops/tree-diff.js +0 -705
  232. package/dist/ops/tree-diff.js.map +0 -1
  233. package/dist/pack/delta.d.ts +0 -248
  234. package/dist/pack/delta.d.ts.map +0 -1
  235. package/dist/pack/delta.js +0 -740
  236. package/dist/pack/delta.js.map +0 -1
  237. package/dist/pack/format.d.ts +0 -446
  238. package/dist/pack/format.d.ts.map +0 -1
  239. package/dist/pack/format.js +0 -572
  240. package/dist/pack/format.js.map +0 -1
  241. package/dist/pack/full-generation.d.ts +0 -612
  242. package/dist/pack/full-generation.d.ts.map +0 -1
  243. package/dist/pack/full-generation.js +0 -1378
  244. package/dist/pack/full-generation.js.map +0 -1
  245. package/dist/pack/generation.d.ts +0 -441
  246. package/dist/pack/generation.d.ts.map +0 -1
  247. package/dist/pack/generation.js +0 -707
  248. package/dist/pack/generation.js.map +0 -1
  249. package/dist/pack/index.d.ts +0 -502
  250. package/dist/pack/index.d.ts.map +0 -1
  251. package/dist/pack/index.js +0 -833
  252. package/dist/pack/index.js.map +0 -1
  253. package/dist/refs/branch.d.ts +0 -683
  254. package/dist/refs/branch.d.ts.map +0 -1
  255. package/dist/refs/branch.js +0 -881
  256. package/dist/refs/branch.js.map +0 -1
  257. package/dist/refs/storage.d.ts +0 -833
  258. package/dist/refs/storage.d.ts.map +0 -1
  259. package/dist/refs/storage.js +0 -1023
  260. package/dist/refs/storage.js.map +0 -1
  261. package/dist/refs/tag.d.ts +0 -860
  262. package/dist/refs/tag.d.ts.map +0 -1
  263. package/dist/refs/tag.js +0 -996
  264. package/dist/refs/tag.js.map +0 -1
  265. package/dist/storage/backend.d.ts +0 -425
  266. package/dist/storage/backend.d.ts.map +0 -1
  267. package/dist/storage/backend.js +0 -41
  268. package/dist/storage/backend.js.map +0 -1
  269. package/dist/storage/fsx-adapter.d.ts +0 -204
  270. package/dist/storage/fsx-adapter.d.ts.map +0 -1
  271. package/dist/storage/fsx-adapter.js +0 -518
  272. package/dist/storage/fsx-adapter.js.map +0 -1
  273. package/dist/storage/lru-cache.d.ts +0 -691
  274. package/dist/storage/lru-cache.d.ts.map +0 -1
  275. package/dist/storage/lru-cache.js +0 -813
  276. package/dist/storage/lru-cache.js.map +0 -1
  277. package/dist/storage/object-index.d.ts +0 -585
  278. package/dist/storage/object-index.d.ts.map +0 -1
  279. package/dist/storage/object-index.js +0 -532
  280. package/dist/storage/object-index.js.map +0 -1
  281. package/dist/storage/r2-pack.d.ts +0 -1257
  282. package/dist/storage/r2-pack.d.ts.map +0 -1
  283. package/dist/storage/r2-pack.js +0 -1773
  284. package/dist/storage/r2-pack.js.map +0 -1
  285. package/dist/tiered/cdc-pipeline.d.ts +0 -1888
  286. package/dist/tiered/cdc-pipeline.d.ts.map +0 -1
  287. package/dist/tiered/cdc-pipeline.js +0 -1880
  288. package/dist/tiered/cdc-pipeline.js.map +0 -1
  289. package/dist/tiered/migration.d.ts +0 -1104
  290. package/dist/tiered/migration.d.ts.map +0 -1
  291. package/dist/tiered/migration.js +0 -1217
  292. package/dist/tiered/migration.js.map +0 -1
  293. package/dist/tiered/parquet-writer.d.ts +0 -1145
  294. package/dist/tiered/parquet-writer.d.ts.map +0 -1
  295. package/dist/tiered/parquet-writer.js +0 -1183
  296. package/dist/tiered/parquet-writer.js.map +0 -1
  297. package/dist/tiered/read-path.d.ts +0 -835
  298. package/dist/tiered/read-path.d.ts.map +0 -1
  299. package/dist/tiered/read-path.js +0 -487
  300. package/dist/tiered/read-path.js.map +0 -1
  301. package/dist/types/capability.d.ts +0 -1385
  302. package/dist/types/capability.d.ts.map +0 -1
  303. package/dist/types/capability.js +0 -36
  304. package/dist/types/capability.js.map +0 -1
  305. package/dist/types/index.d.ts +0 -13
  306. package/dist/types/index.d.ts.map +0 -1
  307. package/dist/types/index.js +0 -18
  308. package/dist/types/index.js.map +0 -1
  309. package/dist/types/interfaces.d.ts +0 -673
  310. package/dist/types/interfaces.d.ts.map +0 -1
  311. package/dist/types/interfaces.js +0 -26
  312. package/dist/types/interfaces.js.map +0 -1
  313. package/dist/types/objects.d.ts +0 -692
  314. package/dist/types/objects.d.ts.map +0 -1
  315. package/dist/types/objects.js +0 -837
  316. package/dist/types/objects.js.map +0 -1
  317. package/dist/types/storage.d.ts +0 -603
  318. package/dist/types/storage.d.ts.map +0 -1
  319. package/dist/types/storage.js +0 -191
  320. package/dist/types/storage.js.map +0 -1
  321. package/dist/types/worker-loader.d.ts +0 -60
  322. package/dist/types/worker-loader.d.ts.map +0 -1
  323. package/dist/types/worker-loader.js +0 -62
  324. package/dist/types/worker-loader.js.map +0 -1
  325. package/dist/utils/hash.d.ts +0 -198
  326. package/dist/utils/hash.d.ts.map +0 -1
  327. package/dist/utils/hash.js +0 -272
  328. package/dist/utils/hash.js.map +0 -1
  329. package/dist/utils/sha1.d.ts +0 -325
  330. package/dist/utils/sha1.d.ts.map +0 -1
  331. package/dist/utils/sha1.js +0 -635
  332. package/dist/utils/sha1.js.map +0 -1
  333. package/dist/wire/capabilities.d.ts +0 -1044
  334. package/dist/wire/capabilities.d.ts.map +0 -1
  335. package/dist/wire/capabilities.js +0 -941
  336. package/dist/wire/capabilities.js.map +0 -1
  337. package/dist/wire/path-security.d.ts +0 -157
  338. package/dist/wire/path-security.d.ts.map +0 -1
  339. package/dist/wire/path-security.js +0 -307
  340. package/dist/wire/path-security.js.map +0 -1
  341. package/dist/wire/pkt-line.d.ts +0 -345
  342. package/dist/wire/pkt-line.d.ts.map +0 -1
  343. package/dist/wire/pkt-line.js +0 -381
  344. package/dist/wire/pkt-line.js.map +0 -1
  345. package/dist/wire/receive-pack.d.ts +0 -1059
  346. package/dist/wire/receive-pack.d.ts.map +0 -1
  347. package/dist/wire/receive-pack.js +0 -1414
  348. package/dist/wire/receive-pack.js.map +0 -1
  349. package/dist/wire/smart-http.d.ts +0 -799
  350. package/dist/wire/smart-http.d.ts.map +0 -1
  351. package/dist/wire/smart-http.js +0 -945
  352. package/dist/wire/smart-http.js.map +0 -1
  353. package/dist/wire/upload-pack.d.ts +0 -727
  354. package/dist/wire/upload-pack.d.ts.map +0 -1
  355. package/dist/wire/upload-pack.js +0 -1141
  356. package/dist/wire/upload-pack.js.map +0 -1
package/README.md CHANGED
@@ -1,36 +1,8 @@
1
1
  # gitx.do
2
2
 
3
- **Git for Cloudflare Workers.** Full protocol. Edge-native. 5,600+ tests.
3
+ Git on Cloudflare Durable Objects - A complete git reimplementation for the edge.
4
4
 
5
- [![npm version](https://img.shields.io/npm/v/gitx.do.svg)](https://www.npmjs.com/package/gitx.do)
6
- [![Tests](https://img.shields.io/badge/tests-5%2C684%20passing-brightgreen.svg)](https://github.com/dot-do/gitx)
7
- [![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue.svg)](https://www.typescriptlang.org/)
8
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
9
-
10
- ## Why gitx?
11
-
12
- **AI agents need version control.** They generate code, iterate on files, need to track changes and roll back mistakes.
13
-
14
- **gitx is Git reimplemented for Cloudflare Workers.** Full protocol support - pack files, delta compression, smart HTTP. Not a wrapper around git CLI. A complete implementation.
15
-
16
- **Scales to millions of agents.** Each agent gets its own git repository on Cloudflare's edge network. No shared servers. No rate limits. Just fast, isolated version control at global scale.
17
-
18
- ```typescript
19
- import git from 'gitx.do'
20
-
21
- // Initialize a repo
22
- await git.init('/my-project')
23
-
24
- // Stage and commit
25
- await git.add('/my-project', '.')
26
- await git.commit('/my-project', 'Initial commit')
27
-
28
- // Branch and merge
29
- await git.branch('/my-project', 'feature')
30
- await git.checkout('/my-project', 'feature')
31
- // ... make changes ...
32
- await git.merge('/my-project', 'feature')
33
- ```
5
+ This package provides Cloudflare Workers/Durable Objects integration for git. It depends on [@dotdo/gitx](../core) for the pure git implementation.
34
6
 
35
7
  ## Installation
36
8
 
@@ -38,346 +10,61 @@ await git.merge('/my-project', 'feature')
38
10
  npm install gitx.do
39
11
  ```
40
12
 
41
- ## Quick Start
42
-
43
- ```typescript
44
- import git from 'gitx.do'
45
-
46
- // Create a repository
47
- await git.init('/repo')
48
-
49
- // Write files and commit
50
- await git.add('/repo', 'README.md')
51
- await git.commit('/repo', 'Add readme')
52
-
53
- // View history
54
- const log = await git.log('/repo')
55
- console.log(log.commits)
56
-
57
- // Create branches
58
- await git.branch('/repo', 'feature/auth')
59
- await git.checkout('/repo', 'feature/auth')
60
-
61
- // View changes
62
- const diff = await git.diff('/repo', 'main', 'feature/auth')
63
- const status = await git.status('/repo')
64
- ```
65
-
66
13
  ## Features
67
14
 
68
- ### Full Git Protocol
69
-
70
- Complete implementation of Git internals:
71
-
72
- ```typescript
73
- // Object model
74
- await git.hashObject('/repo', content, 'blob')
75
- await git.catFile('/repo', sha, 'blob')
76
-
77
- // Trees and commits
78
- const tree = await git.writeTree('/repo')
79
- const commit = await git.commitTree('/repo', tree, 'message', [parent])
80
-
81
- // Pack files
82
- await git.pack('/repo', objects)
83
- await git.unpack('/repo', packData)
84
-
85
- // References
86
- await git.updateRef('/repo', 'refs/heads/main', sha)
87
- const ref = await git.resolveRef('/repo', 'HEAD')
88
- ```
89
-
90
- ### Tiered Storage
91
-
92
- Hot objects in SQLite. Pack files in R2. You don't think about it.
93
-
94
- ```
95
- ┌────────────────────────────────────────────────────────┐
96
- │ Hot Tier (SQLite) │ Warm Tier (R2) │
97
- ├───────────────────────────────┼────────────────────────┤
98
- │ • Recent commits │ • Pack files │
99
- │ • Active branches │ • Full history │
100
- │ • Loose objects │ • Large blobs │
101
- │ • <10ms access │ • <100ms access │
102
- └───────────────────────────────┴────────────────────────┘
103
- ```
104
-
105
- ### Pack File Engine
106
-
107
- Full packfile v2/v3 support:
108
-
109
- ```typescript
110
- // Delta compression
111
- await git.repack('/repo', { deltify: true })
112
-
113
- // Verify integrity
114
- await git.fsck('/repo')
115
-
116
- // Garbage collection
117
- await git.gc('/repo')
118
- ```
119
-
120
- - OFS_DELTA and REF_DELTA compression
121
- - Multi-pack indexes (MIDX)
122
- - CRC32 verification
123
- - Thin pack support for network transfer
124
-
125
- ### Wire Protocol
126
-
127
- Smart HTTP protocol for git clients:
128
-
129
- ```typescript
130
- // Serve git fetch/push
131
- app.all('/repo.git/*', (req) => git.serve(req))
132
-
133
- // Clone works
134
- // git clone https://your-worker.dev/repo.git
135
- ```
136
-
137
- - Capability negotiation
138
- - Side-band progress reporting
139
- - Multi-ack for efficiency
140
- - Shallow clone support
141
-
142
- ### Merge & Diff
143
-
144
- Full three-way merge with conflict detection:
145
-
146
- ```typescript
147
- // Merge branches
148
- const result = await git.merge('/repo', 'feature')
149
- if (result.conflicts) {
150
- console.log('Conflicts:', result.conflicts)
151
- }
152
-
153
- // View diff
154
- const diff = await git.diff('/repo', 'main', 'feature')
155
- for (const file of diff.files) {
156
- console.log(file.path, file.additions, file.deletions)
157
- }
158
- ```
159
-
160
- ### CLI Commands
161
-
162
- Full command-line interface:
163
-
164
- ```typescript
165
- import { cli } from 'gitx.do/cli'
166
-
167
- await cli('init /repo')
168
- await cli('add /repo .')
169
- await cli('commit /repo -m "message"')
170
- await cli('log /repo --oneline')
171
- await cli('branch /repo feature')
172
- await cli('checkout /repo feature')
173
- await cli('merge /repo main')
174
- await cli('status /repo')
175
- await cli('diff /repo')
176
- ```
177
-
178
- ### MCP Tools
179
-
180
- Model Context Protocol for AI agents:
181
-
182
- ```typescript
183
- import { gitTools, invokeTool } from 'gitx.do/mcp'
184
-
185
- // Available tools
186
- // git_init, git_add, git_commit, git_log, git_diff, git_status,
187
- // git_branch, git_checkout, git_merge, git_show, git_blame
188
-
189
- await invokeTool('git_commit', {
190
- repo: '/my-project',
191
- message: 'Fix authentication bug'
192
- })
193
-
194
- await invokeTool('git_log', {
195
- repo: '/my-project',
196
- limit: 10
197
- })
198
- ```
199
-
200
- ## Durable Object Integration
201
-
202
- ### As a Standalone DO
203
-
204
- ```typescript
205
- import { GitDO } from 'gitx.do/do'
206
-
207
- export { GitDO }
208
-
209
- export default {
210
- async fetch(request, env) {
211
- const id = env.GIT.idFromName('repo-123')
212
- const stub = env.GIT.get(id)
213
- return stub.fetch(request)
214
- }
215
- }
216
- ```
15
+ - **Durable Object Integration** - GitRepoDO for full repository management
16
+ - **R2 Storage** - Packfile storage with tiered hot/warm/cold system
17
+ - **MCP Integration** - Model Context Protocol for AI assistant integration
18
+ - **Wire Protocol** - Git Smart HTTP protocol handlers
19
+ - **Mixins** - withGit, withFs for adding git capabilities to any DO
217
20
 
218
- ### With dotdo Framework
21
+ ## Usage
219
22
 
220
23
  ```typescript
221
- import { DO } from 'dotdo'
222
- import { withGit } from 'gitx.do/do'
24
+ import { GitRepoDO, GitModule, withGit } from 'gitx.do'
223
25
 
224
- class MyAgent extends withGit(DO) {
225
- async work() {
226
- await this.$.git.add('.', 'src/')
227
- await this.$.git.commit('.', 'Update source files')
26
+ // Export GitRepoDO for full repository management
27
+ export { GitRepoDO }
228
28
 
229
- const log = await this.$.git.log('.')
230
- return log.commits[0]
29
+ // Or use mixins for custom DOs
30
+ class MyDO extends withGit(DurableObject) {
31
+ async doSomething() {
32
+ await this.git.clone('https://github.com/org/repo')
33
+ const status = await this.git.status()
34
+ console.log(status)
231
35
  }
232
36
  }
233
37
  ```
234
38
 
235
- ### As RPC Service
39
+ ## Architecture
236
40
 
237
- ```toml
238
- # wrangler.toml
239
- [[services]]
240
- binding = "GITX"
241
- service = "gitx-worker"
242
41
  ```
243
-
244
- ```typescript
245
- await env.GITX.commit('/repo', 'message')
42
+ gitx.do
43
+ ├── do/ # Durable Object implementations
44
+ │ ├── GitRepoDO # Full git repository DO
45
+ │ ├── GitModule # Git capability module
46
+ │ ├── FsModule # Filesystem capability
47
+ │ ├── withGit # Git mixin
48
+ │ └── withFs # Fs mixin
49
+ ├── storage/ # Storage implementations
50
+ │ ├── r2-pack # R2 packfile storage
51
+ │ ├── tiered # Hot/warm/cold tiering
52
+ │ └── object-index # Object location tracking
53
+ ├── wire/ # Git wire protocol
54
+ │ ├── smart-http # HTTP handlers
55
+ │ ├── pkt-line # Packet line format
56
+ │ └── capabilities # Protocol capabilities
57
+ └── mcp/ # MCP integration
58
+ ├── tools # MCP tool definitions
59
+ └── adapter # Protocol adapter
246
60
  ```
247
61
 
248
- ## API Reference
249
-
250
- ### Repository Operations
251
-
252
- | Method | Description |
253
- |--------|-------------|
254
- | `init(path)` | Initialize new repository |
255
- | `clone(url, path)` | Clone remote repository |
256
- | `status(path)` | Get working tree status |
257
- | `log(path, options?)` | View commit history |
258
-
259
- ### Staging & Commits
260
-
261
- | Method | Description |
262
- |--------|-------------|
263
- | `add(path, files)` | Stage files |
264
- | `commit(path, message)` | Create commit |
265
- | `reset(path, ref)` | Reset to commit |
266
-
267
- ### Branches & Merging
268
-
269
- | Method | Description |
270
- |--------|-------------|
271
- | `branch(path, name)` | Create branch |
272
- | `checkout(path, ref)` | Switch branches |
273
- | `merge(path, branch)` | Merge branch |
274
- | `rebase(path, onto)` | Rebase branch |
275
-
276
- ### Diff & Blame
277
-
278
- | Method | Description |
279
- |--------|-------------|
280
- | `diff(path, a, b)` | Compare commits |
281
- | `blame(path, file)` | Line-by-line history |
282
- | `show(path, ref)` | Show commit details |
283
-
284
- ### Low-Level
285
-
286
- | Method | Description |
287
- |--------|-------------|
288
- | `hashObject(path, data, type)` | Create object |
289
- | `catFile(path, sha, type)` | Read object |
290
- | `updateRef(path, ref, sha)` | Update reference |
291
- | `pack(path, objects)` | Create packfile |
62
+ ## Related
292
63
 
293
- ## How It Works
294
-
295
- ```
296
- ┌─────────────────────────────────────────────────────────┐
297
- │ gitx.do │
298
- ├─────────────────────────────────────────────────────────┤
299
- │ Git Commands (add, commit, branch, merge, etc.) │
300
- ├─────────────────────────────────────────────────────────┤
301
- │ Object Model (blob, tree, commit, tag) │
302
- ├─────────────────────────────────────────────────────────┤
303
- │ Pack Engine (delta, compression, indexes) │
304
- ├────────────────────┬────────────────────────────────────┤
305
- │ Hot Tier │ Warm Tier │
306
- │ (SQLite) │ (R2) │
307
- │ │ │
308
- │ • Loose objects │ • Pack files │
309
- │ • References │ • Large blobs │
310
- │ • Index │ • Archive │
311
- └────────────────────┴────────────────────────────────────┘
312
- ```
313
-
314
- ## Comparison
315
-
316
- | Feature | GitHub | GitLab | gitx.do |
317
- |---------|--------|--------|---------|
318
- | **Pricing** | $21/user/month | $29/user/month | Self-hosted |
319
- | **Storage** | 1GB free | 5GB free | R2 (cheap) |
320
- | **LFS bandwidth** | $0.0875/GB | Metered | R2 (no egress) |
321
- | **Full protocol** | Yes | Yes | Yes |
322
- | **Edge-native** | No | No | Yes |
323
- | **AI-native API** | No | No | Yes |
324
- | **Self-hosted** | Enterprise only | Complex | One-click |
325
-
326
- ## Use Cases
327
-
328
- ### AI Agent Version Control
329
-
330
- Each AI agent gets its own repository:
331
-
332
- ```typescript
333
- class CodeAgent extends withGit(DO) {
334
- async generateCode(spec) {
335
- const code = await this.ai.generate(spec)
336
-
337
- await this.$.fs.writeFile('src/index.ts', code)
338
- await this.$.git.add('.', 'src/')
339
- await this.$.git.commit('.', `Implement: ${spec}`)
340
-
341
- return this.$.git.log('.', { limit: 1 })
342
- }
343
- }
344
- ```
345
-
346
- ### Private Git Hosting
347
-
348
- Your repositories on your infrastructure:
349
-
350
- ```typescript
351
- export default GitX({
352
- name: 'my-repos',
353
- domain: 'git.mycompany.com',
354
- })
355
- ```
356
-
357
- ### LFS Without Bandwidth Fees
358
-
359
- R2 has no egress charges:
360
-
361
- ```typescript
362
- await git.lfsTrack('/repo', '*.psd')
363
- await git.lfsPush('/repo')
364
- ```
365
-
366
- ## Performance
367
-
368
- - **5,684 tests** covering all operations
369
- - **Full Git protocol** - clone, fetch, push all work
370
- - **<10ms** for hot tier operations
371
- - **Global edge** - 300+ Cloudflare locations
372
- - **Zero cold starts** - Durable Objects
64
+ - [@dotdo/gitx](../core) - Pure git implementation (zero CF deps)
65
+ - [fsx.do](https://fsx.do) - Filesystem for Workers
66
+ - [bashx.do](https://bashx.do) - Shell execution for Workers
373
67
 
374
68
  ## License
375
69
 
376
70
  MIT
377
-
378
- ## Links
379
-
380
- - [GitHub](https://github.com/dot-do/gitx)
381
- - [Documentation](https://gitx.do)
382
- - [.do](https://do.org.ai)
383
- - [Platform.do](https://platform.do)
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @fileoverview Logging infrastructure for GitRepoDO.
3
+ *
4
+ * Provides structured logging with configurable levels and output.
5
+ *
6
+ * @module do/logger
7
+ */
8
+ import { Logger, LogLevel, LogEntry } from './types';
9
+ /**
10
+ * Options for creating a logger.
11
+ */
12
+ export interface LoggerOptions {
13
+ /** Minimum log level to output */
14
+ minLevel?: LogLevel;
15
+ /** DO namespace for context */
16
+ ns?: string;
17
+ /** DO type for context */
18
+ $type?: string;
19
+ /** Custom log handler */
20
+ handler?: (entry: LogEntry) => void;
21
+ }
22
+ /**
23
+ * Create a logger instance.
24
+ *
25
+ * @param options - Logger configuration options
26
+ * @returns Logger instance
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * const logger = createLogger({ minLevel: LogLevel.INFO, ns: 'my-repo' })
31
+ * logger.info('Repository initialized', { branch: 'main' })
32
+ * ```
33
+ */
34
+ export declare function createLogger(options?: LoggerOptions): Logger;
35
+ /**
36
+ * Create a child logger with additional context.
37
+ *
38
+ * @param parent - Parent logger
39
+ * @param context - Additional context to include in all log entries
40
+ * @returns Child logger instance
41
+ */
42
+ export declare function createChildLogger(parent: Logger, context: Record<string, unknown>): Logger;
43
+ /**
44
+ * No-op logger that discards all messages.
45
+ * Useful for testing or when logging is disabled.
46
+ */
47
+ export declare const noopLogger: Logger;
48
+ export type { Logger, LogEntry };
49
+ export { LogLevel };
50
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/do/logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAMpD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,kCAAkC;IAClC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,+BAA+B;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yBAAyB;IACzB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;CACpC;AAqCD;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,aAAkB,GAAG,MAAM,CAmDhE;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAkBR;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,MAKxB,CAAA;AAGD,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * @fileoverview Logging infrastructure for GitRepoDO.
3
+ *
4
+ * Provides structured logging with configurable levels and output.
5
+ *
6
+ * @module do/logger
7
+ */
8
+ import { LogLevel } from './types';
9
+ /**
10
+ * Default log handler that outputs to console.
11
+ */
12
+ function defaultLogHandler(entry) {
13
+ const timestamp = new Date(entry.timestamp).toISOString();
14
+ const contextStr = entry.context
15
+ ? ` ${JSON.stringify(entry.context)}`
16
+ : '';
17
+ switch (entry.level) {
18
+ case LogLevel.DEBUG:
19
+ console.debug(`[${timestamp}] DEBUG: ${entry.message}${contextStr}`);
20
+ break;
21
+ case LogLevel.INFO:
22
+ console.info(`[${timestamp}] INFO: ${entry.message}${contextStr}`);
23
+ break;
24
+ case LogLevel.WARN:
25
+ console.warn(`[${timestamp}] WARN: ${entry.message}${contextStr}`);
26
+ break;
27
+ case LogLevel.ERROR:
28
+ console.error(`[${timestamp}] ERROR: ${entry.message}${contextStr}`);
29
+ break;
30
+ }
31
+ }
32
+ /**
33
+ * Log level priority for comparison.
34
+ */
35
+ const LOG_LEVEL_PRIORITY = {
36
+ [LogLevel.DEBUG]: 0,
37
+ [LogLevel.INFO]: 1,
38
+ [LogLevel.WARN]: 2,
39
+ [LogLevel.ERROR]: 3,
40
+ };
41
+ /**
42
+ * Create a logger instance.
43
+ *
44
+ * @param options - Logger configuration options
45
+ * @returns Logger instance
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * const logger = createLogger({ minLevel: LogLevel.INFO, ns: 'my-repo' })
50
+ * logger.info('Repository initialized', { branch: 'main' })
51
+ * ```
52
+ */
53
+ export function createLogger(options = {}) {
54
+ const { minLevel = LogLevel.INFO, ns, $type, handler = defaultLogHandler, } = options;
55
+ const baseContext = {
56
+ ...(ns && { ns }),
57
+ ...($type && { $type }),
58
+ };
59
+ function shouldLog(level) {
60
+ return LOG_LEVEL_PRIORITY[level] >= LOG_LEVEL_PRIORITY[minLevel];
61
+ }
62
+ function log(level, message, context) {
63
+ if (!shouldLog(level))
64
+ return;
65
+ const entry = {
66
+ level,
67
+ message,
68
+ timestamp: Date.now(),
69
+ context: context ? { ...baseContext, ...context } : baseContext,
70
+ };
71
+ handler(entry);
72
+ }
73
+ return {
74
+ debug(message, context) {
75
+ log(LogLevel.DEBUG, message, context);
76
+ },
77
+ info(message, context) {
78
+ log(LogLevel.INFO, message, context);
79
+ },
80
+ warn(message, context) {
81
+ log(LogLevel.WARN, message, context);
82
+ },
83
+ error(message, context) {
84
+ log(LogLevel.ERROR, message, context);
85
+ },
86
+ };
87
+ }
88
+ /**
89
+ * Create a child logger with additional context.
90
+ *
91
+ * @param parent - Parent logger
92
+ * @param context - Additional context to include in all log entries
93
+ * @returns Child logger instance
94
+ */
95
+ export function createChildLogger(parent, context) {
96
+ return {
97
+ debug(message, childContext) {
98
+ parent.debug(message, { ...context, ...childContext });
99
+ },
100
+ info(message, childContext) {
101
+ parent.info(message, { ...context, ...childContext });
102
+ },
103
+ warn(message, childContext) {
104
+ parent.warn(message, { ...context, ...childContext });
105
+ },
106
+ error(message, childContext) {
107
+ parent.error(message, { ...context, ...childContext });
108
+ },
109
+ };
110
+ }
111
+ /**
112
+ * No-op logger that discards all messages.
113
+ * Useful for testing or when logging is disabled.
114
+ */
115
+ export const noopLogger = {
116
+ debug: () => { },
117
+ info: () => { },
118
+ warn: () => { },
119
+ error: () => { },
120
+ };
121
+ export { LogLevel };
122
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/do/logger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAU,QAAQ,EAAY,MAAM,SAAS,CAAA;AAoBpD;;GAEG;AACH,SAAS,iBAAiB,CAAC,KAAe;IACxC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAA;IACzD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO;QAC9B,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QACrC,CAAC,CAAC,EAAE,CAAA;IAEN,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,KAAK,QAAQ,CAAC,KAAK;YACjB,OAAO,CAAC,KAAK,CAAC,IAAI,SAAS,YAAY,KAAK,CAAC,OAAO,GAAG,UAAU,EAAE,CAAC,CAAA;YACpE,MAAK;QACP,KAAK,QAAQ,CAAC,IAAI;YAChB,OAAO,CAAC,IAAI,CAAC,IAAI,SAAS,WAAW,KAAK,CAAC,OAAO,GAAG,UAAU,EAAE,CAAC,CAAA;YAClE,MAAK;QACP,KAAK,QAAQ,CAAC,IAAI;YAChB,OAAO,CAAC,IAAI,CAAC,IAAI,SAAS,WAAW,KAAK,CAAC,OAAO,GAAG,UAAU,EAAE,CAAC,CAAA;YAClE,MAAK;QACP,KAAK,QAAQ,CAAC,KAAK;YACjB,OAAO,CAAC,KAAK,CAAC,IAAI,SAAS,YAAY,KAAK,CAAC,OAAO,GAAG,UAAU,EAAE,CAAC,CAAA;YACpE,MAAK;IACT,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,kBAAkB,GAA6B;IACnD,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;IACnB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAClB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAClB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;CACpB,CAAA;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,UAAyB,EAAE;IACtD,MAAM,EACJ,QAAQ,GAAG,QAAQ,CAAC,IAAI,EACxB,EAAE,EACF,KAAK,EACL,OAAO,GAAG,iBAAiB,GAC5B,GAAG,OAAO,CAAA;IAEX,MAAM,WAAW,GAAG;QAClB,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC;KACxB,CAAA;IAED,SAAS,SAAS,CAAC,KAAe;QAChC,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IAClE,CAAC;IAED,SAAS,GAAG,CACV,KAAe,EACf,OAAe,EACf,OAAiC;QAEjC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAM;QAE7B,MAAM,KAAK,GAAa;YACtB,KAAK;YACL,OAAO;YACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,WAAW;SAChE,CAAA;QAED,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAe,EAAE,OAAiC;YACtD,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACvC,CAAC;QAED,IAAI,CAAC,OAAe,EAAE,OAAiC;YACrD,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACtC,CAAC;QAED,IAAI,CAAC,OAAe,EAAE,OAAiC;YACrD,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACtC,CAAC;QAED,KAAK,CAAC,OAAe,EAAE,OAAiC;YACtD,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACvC,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAc,EACd,OAAgC;IAEhC,OAAO;QACL,KAAK,CAAC,OAAe,EAAE,YAAsC;YAC3D,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,YAAY,EAAE,CAAC,CAAA;QACxD,CAAC;QAED,IAAI,CAAC,OAAe,EAAE,YAAsC;YAC1D,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,YAAY,EAAE,CAAC,CAAA;QACvD,CAAC;QAED,IAAI,CAAC,OAAe,EAAE,YAAsC;YAC1D,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,YAAY,EAAE,CAAC,CAAA;QACvD,CAAC;QAED,KAAK,CAAC,OAAe,EAAE,YAAsC;YAC3D,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,YAAY,EAAE,CAAC,CAAA;QACxD,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAW;IAChC,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;IACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;IACd,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;IACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;CAChB,CAAA;AAID,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -16,11 +16,11 @@
16
16
  * - `git_content`: Staged file content for commits
17
17
  * - `exec`: Execution safety settings and policies for BashModule
18
18
  *
19
- * @module durable-object/schema
19
+ * @module do/schema
20
20
  *
21
21
  * @example
22
22
  * ```typescript
23
- * import { SchemaManager, DurableObjectStorage } from './durable-object/schema'
23
+ * import { SchemaManager, DurableObjectStorage } from './do/schema'
24
24
  *
25
25
  * // Initialize schema on first access
26
26
  * const schemaManager = new SchemaManager(storage)
@@ -122,7 +122,7 @@ export declare const SCHEMA_VERSION = 1;
122
122
  * - `idx_git_content_repo_path`: Fast staged file lookup
123
123
  * - `idx_exec_name`: Fast lookup by policy name
124
124
  */
125
- export declare const SCHEMA_SQL = "\n-- Git objects (blobs, trees, commits, tags)\nCREATE TABLE IF NOT EXISTS objects (sha TEXT PRIMARY KEY, type TEXT NOT NULL, size INTEGER NOT NULL, data BLOB NOT NULL, created_at INTEGER);\n\n-- Object location index for tiered storage\n-- Tracks object locations across storage tiers (hot/r2/parquet)\n-- pack_id and offset are used for R2 and Parquet tiers where objects are stored in packfiles\nCREATE TABLE IF NOT EXISTS object_index (sha TEXT PRIMARY KEY, tier TEXT NOT NULL DEFAULT 'hot', pack_id TEXT, offset INTEGER, size INTEGER, type TEXT, updated_at INTEGER);\n\n-- Hot objects cache\nCREATE TABLE IF NOT EXISTS hot_objects (sha TEXT PRIMARY KEY, type TEXT NOT NULL, data BLOB NOT NULL, accessed_at INTEGER, created_at INTEGER);\n\n-- Write-ahead log\nCREATE TABLE IF NOT EXISTS wal (id INTEGER PRIMARY KEY AUTOINCREMENT, operation TEXT NOT NULL, payload BLOB NOT NULL, created_at INTEGER, flushed INTEGER DEFAULT 0);\n\n-- Refs table\nCREATE TABLE IF NOT EXISTS refs (name TEXT PRIMARY KEY, target TEXT NOT NULL, type TEXT DEFAULT 'sha', updated_at INTEGER);\n\n-- Git repository bindings for GitModule integration\n-- Stores repository configuration and sync state\nCREATE TABLE IF NOT EXISTS git (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n repo TEXT NOT NULL UNIQUE,\n path TEXT,\n branch TEXT NOT NULL DEFAULT 'main',\n commit TEXT,\n last_sync INTEGER,\n object_prefix TEXT DEFAULT 'git/objects',\n created_at INTEGER,\n updated_at INTEGER\n);\n\n-- Git branches table for tracking branch state per repository\n-- Each repository can have multiple branches tracked\nCREATE TABLE IF NOT EXISTS git_branches (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n repo_id INTEGER NOT NULL REFERENCES git(id) ON DELETE CASCADE,\n name TEXT NOT NULL,\n head TEXT,\n upstream TEXT,\n tracking INTEGER DEFAULT 0,\n ahead INTEGER DEFAULT 0,\n behind INTEGER DEFAULT 0,\n created_at INTEGER,\n updated_at INTEGER,\n UNIQUE(repo_id, name)\n);\n\n-- Git content table for staged files awaiting commit\n-- Stores file references using integer rowid foreign key for efficient lookups\n-- file_id references the shared files table for unified filesystem integration\nCREATE TABLE IF NOT EXISTS git_content (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n repo_id INTEGER NOT NULL REFERENCES git(id) ON DELETE CASCADE,\n file_id INTEGER REFERENCES files(id) ON DELETE SET NULL,\n path TEXT NOT NULL,\n content BLOB,\n mode TEXT DEFAULT '100644',\n status TEXT NOT NULL DEFAULT 'staged',\n sha TEXT,\n created_at INTEGER,\n updated_at INTEGER,\n UNIQUE(repo_id, path)\n);\n\n-- Exec table for BashModule execution safety settings and policies\n-- Stores blocked commands, confirmation requirements, and execution policies\nCREATE TABLE IF NOT EXISTS exec (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL UNIQUE,\n blocked_commands TEXT,\n require_confirmation INTEGER DEFAULT 1,\n default_timeout INTEGER DEFAULT 30000,\n default_cwd TEXT DEFAULT '/',\n allowed_patterns TEXT,\n denied_patterns TEXT,\n max_concurrent INTEGER DEFAULT 5,\n enabled INTEGER DEFAULT 1,\n created_at INTEGER,\n updated_at INTEGER\n);\n\n-- Indexes\nCREATE INDEX IF NOT EXISTS idx_objects_type ON objects(type);\nCREATE INDEX IF NOT EXISTS idx_wal_flushed ON wal(flushed);\nCREATE INDEX IF NOT EXISTS idx_hot_objects_accessed ON hot_objects(accessed_at);\nCREATE INDEX IF NOT EXISTS idx_object_index_tier ON object_index(tier);\nCREATE INDEX IF NOT EXISTS idx_object_index_pack_id ON object_index(pack_id);\nCREATE INDEX IF NOT EXISTS idx_git_branches_repo ON git_branches(repo_id);\nCREATE INDEX IF NOT EXISTS idx_git_content_repo_path ON git_content(repo_id, path);\nCREATE INDEX IF NOT EXISTS idx_git_content_status ON git_content(status);\nCREATE INDEX IF NOT EXISTS idx_git_content_file_id ON git_content(file_id);\nCREATE INDEX IF NOT EXISTS idx_exec_name ON exec(name);\nCREATE INDEX IF NOT EXISTS idx_exec_enabled ON exec(enabled);\n";
125
+ export declare const SCHEMA_SQL = "\n-- Git objects (blobs, trees, commits, tags)\nCREATE TABLE IF NOT EXISTS objects (sha TEXT PRIMARY KEY, type TEXT NOT NULL, size INTEGER NOT NULL, data BLOB NOT NULL, created_at INTEGER);\n\n-- Object location index for tiered storage\n-- Tracks object locations across storage tiers (hot/r2/parquet)\n-- pack_id and offset are used for R2 and Parquet tiers where objects are stored in packfiles\n-- chunked and chunk_count are used for large blobs (>=2MB) stored in 2MB chunks for DO SQLite cost optimization\nCREATE TABLE IF NOT EXISTS object_index (sha TEXT PRIMARY KEY, tier TEXT NOT NULL DEFAULT 'hot', pack_id TEXT, offset INTEGER, size INTEGER, type TEXT, updated_at INTEGER, chunked INTEGER DEFAULT 0, chunk_count INTEGER DEFAULT 0);\n\n-- Hot objects cache\nCREATE TABLE IF NOT EXISTS hot_objects (sha TEXT PRIMARY KEY, type TEXT NOT NULL, data BLOB NOT NULL, accessed_at INTEGER, created_at INTEGER);\n\n-- Write-ahead log\nCREATE TABLE IF NOT EXISTS wal (id INTEGER PRIMARY KEY AUTOINCREMENT, operation TEXT NOT NULL, payload BLOB NOT NULL, created_at INTEGER, flushed INTEGER DEFAULT 0);\n\n-- Refs table\nCREATE TABLE IF NOT EXISTS refs (name TEXT PRIMARY KEY, target TEXT NOT NULL, type TEXT DEFAULT 'sha', updated_at INTEGER);\n\n-- Git repository bindings for GitModule integration\n-- Stores repository configuration and sync state\nCREATE TABLE IF NOT EXISTS git (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n repo TEXT NOT NULL UNIQUE,\n path TEXT,\n branch TEXT NOT NULL DEFAULT 'main',\n commit TEXT,\n last_sync INTEGER,\n object_prefix TEXT DEFAULT 'git/objects',\n created_at INTEGER,\n updated_at INTEGER\n);\n\n-- Git branches table for tracking branch state per repository\n-- Each repository can have multiple branches tracked\nCREATE TABLE IF NOT EXISTS git_branches (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n repo_id INTEGER NOT NULL REFERENCES git(id) ON DELETE CASCADE,\n name TEXT NOT NULL,\n head TEXT,\n upstream TEXT,\n tracking INTEGER DEFAULT 0,\n ahead INTEGER DEFAULT 0,\n behind INTEGER DEFAULT 0,\n created_at INTEGER,\n updated_at INTEGER,\n UNIQUE(repo_id, name)\n);\n\n-- Git content table for staged files awaiting commit\n-- Stores file references using integer rowid foreign key for efficient lookups\n-- file_id references the shared files table for unified filesystem integration\nCREATE TABLE IF NOT EXISTS git_content (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n repo_id INTEGER NOT NULL REFERENCES git(id) ON DELETE CASCADE,\n file_id INTEGER REFERENCES files(id) ON DELETE SET NULL,\n path TEXT NOT NULL,\n content BLOB,\n mode TEXT DEFAULT '100644',\n status TEXT NOT NULL DEFAULT 'staged',\n sha TEXT,\n created_at INTEGER,\n updated_at INTEGER,\n UNIQUE(repo_id, path)\n);\n\n-- Exec table for BashModule execution safety settings and policies\n-- Stores blocked commands, confirmation requirements, and execution policies\nCREATE TABLE IF NOT EXISTS exec (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL UNIQUE,\n blocked_commands TEXT,\n require_confirmation INTEGER DEFAULT 1,\n default_timeout INTEGER DEFAULT 30000,\n default_cwd TEXT DEFAULT '/',\n allowed_patterns TEXT,\n denied_patterns TEXT,\n max_concurrent INTEGER DEFAULT 5,\n enabled INTEGER DEFAULT 1,\n created_at INTEGER,\n updated_at INTEGER\n);\n\n-- Indexes\nCREATE INDEX IF NOT EXISTS idx_objects_type ON objects(type);\nCREATE INDEX IF NOT EXISTS idx_wal_flushed ON wal(flushed);\nCREATE INDEX IF NOT EXISTS idx_hot_objects_accessed ON hot_objects(accessed_at);\nCREATE INDEX IF NOT EXISTS idx_object_index_tier ON object_index(tier);\nCREATE INDEX IF NOT EXISTS idx_object_index_pack_id ON object_index(pack_id);\nCREATE INDEX IF NOT EXISTS idx_git_branches_repo ON git_branches(repo_id);\nCREATE INDEX IF NOT EXISTS idx_git_content_repo_path ON git_content(repo_id, path);\nCREATE INDEX IF NOT EXISTS idx_git_content_status ON git_content(status);\nCREATE INDEX IF NOT EXISTS idx_git_content_file_id ON git_content(file_id);\nCREATE INDEX IF NOT EXISTS idx_exec_name ON exec(name);\nCREATE INDEX IF NOT EXISTS idx_exec_enabled ON exec(enabled);\n";
126
126
  /**
127
127
  * Manager for database schema initialization and validation.
128
128
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/do/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAMH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,GAAG,EAAE;QACH;;;;;;;;;;;;;;;WAeG;QACH,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG;YAAE,OAAO,IAAI,OAAO,EAAE,CAAA;SAAE,CAAA;KACpE,CAAA;CACF;AAMD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,IAAI,CAAA;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,UAAU,0iIA+FtB,CAAA;AAeD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,aAAa;IAMZ,OAAO,CAAC,OAAO;IAL3B;;;;OAIG;gBACiB,OAAO,EAAE,oBAAoB;IAEjD;;;;;;;;;;;OAWG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvC;;;;;;;;;;;;;;OAcG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IAKzC;;;;;;;;;;;;;;;;;;OAkBG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;CASzC"}
@@ -16,11 +16,11 @@
16
16
  * - `git_content`: Staged file content for commits
17
17
  * - `exec`: Execution safety settings and policies for BashModule
18
18
  *
19
- * @module durable-object/schema
19
+ * @module do/schema
20
20
  *
21
21
  * @example
22
22
  * ```typescript
23
- * import { SchemaManager, DurableObjectStorage } from './durable-object/schema'
23
+ * import { SchemaManager, DurableObjectStorage } from './do/schema'
24
24
  *
25
25
  * // Initialize schema on first access
26
26
  * const schemaManager = new SchemaManager(storage)
@@ -84,7 +84,8 @@ CREATE TABLE IF NOT EXISTS objects (sha TEXT PRIMARY KEY, type TEXT NOT NULL, si
84
84
  -- Object location index for tiered storage
85
85
  -- Tracks object locations across storage tiers (hot/r2/parquet)
86
86
  -- pack_id and offset are used for R2 and Parquet tiers where objects are stored in packfiles
87
- CREATE TABLE IF NOT EXISTS object_index (sha TEXT PRIMARY KEY, tier TEXT NOT NULL DEFAULT 'hot', pack_id TEXT, offset INTEGER, size INTEGER, type TEXT, updated_at INTEGER);
87
+ -- chunked and chunk_count are used for large blobs (>=2MB) stored in 2MB chunks for DO SQLite cost optimization
88
+ CREATE TABLE IF NOT EXISTS object_index (sha TEXT PRIMARY KEY, tier TEXT NOT NULL DEFAULT 'hot', pack_id TEXT, offset INTEGER, size INTEGER, type TEXT, updated_at INTEGER, chunked INTEGER DEFAULT 0, chunk_count INTEGER DEFAULT 0);
88
89
 
89
90
  -- Hot objects cache
90
91
  CREATE TABLE IF NOT EXISTS hot_objects (sha TEXT PRIMARY KEY, type TEXT NOT NULL, data BLOB NOT NULL, accessed_at INTEGER, created_at INTEGER);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/do/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAqDH,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAA;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+FzB,CAAA;AAED;;;;;;GAMG;AACH,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,CAAC,CAAA;AAE/H,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,OAAO,aAAa;IAMJ;IALpB;;;;OAIG;IACH,YAAoB,OAA6B;QAA7B,YAAO,GAAP,OAAO,CAAsB;IAAG,CAAC;IAErD;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,gBAAgB;QACpB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACnC,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,gBAAgB;QACpB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;QAC3C,OAAO,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAA;IACrC,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,cAAc;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAClC,mDAAmD,CACpD,CAAA;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAwB,CAAA;QACrD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAE1C,OAAO,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IACnE,CAAC;CACF"}