gitx.do 0.1.0 → 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 (344) 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 +15 -415
  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 -174
  20. package/dist/cli/commands/add.d.ts.map +0 -1
  21. package/dist/cli/commands/add.js +0 -131
  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/commit.d.ts +0 -182
  32. package/dist/cli/commands/commit.d.ts.map +0 -1
  33. package/dist/cli/commands/commit.js +0 -437
  34. package/dist/cli/commands/commit.js.map +0 -1
  35. package/dist/cli/commands/diff.d.ts +0 -464
  36. package/dist/cli/commands/diff.d.ts.map +0 -1
  37. package/dist/cli/commands/diff.js +0 -958
  38. package/dist/cli/commands/diff.js.map +0 -1
  39. package/dist/cli/commands/log.d.ts +0 -239
  40. package/dist/cli/commands/log.d.ts.map +0 -1
  41. package/dist/cli/commands/log.js +0 -535
  42. package/dist/cli/commands/log.js.map +0 -1
  43. package/dist/cli/commands/merge.d.ts +0 -106
  44. package/dist/cli/commands/merge.d.ts.map +0 -1
  45. package/dist/cli/commands/merge.js +0 -55
  46. package/dist/cli/commands/merge.js.map +0 -1
  47. package/dist/cli/commands/review.d.ts +0 -457
  48. package/dist/cli/commands/review.d.ts.map +0 -1
  49. package/dist/cli/commands/review.js +0 -533
  50. package/dist/cli/commands/review.js.map +0 -1
  51. package/dist/cli/commands/status.d.ts +0 -269
  52. package/dist/cli/commands/status.d.ts.map +0 -1
  53. package/dist/cli/commands/status.js +0 -493
  54. package/dist/cli/commands/status.js.map +0 -1
  55. package/dist/cli/commands/web.d.ts +0 -199
  56. package/dist/cli/commands/web.d.ts.map +0 -1
  57. package/dist/cli/commands/web.js +0 -696
  58. package/dist/cli/commands/web.js.map +0 -1
  59. package/dist/cli/fs-adapter.d.ts +0 -656
  60. package/dist/cli/fs-adapter.d.ts.map +0 -1
  61. package/dist/cli/fs-adapter.js +0 -1179
  62. package/dist/cli/fs-adapter.js.map +0 -1
  63. package/dist/cli/fsx-cli-adapter.d.ts +0 -359
  64. package/dist/cli/fsx-cli-adapter.d.ts.map +0 -1
  65. package/dist/cli/fsx-cli-adapter.js +0 -619
  66. package/dist/cli/fsx-cli-adapter.js.map +0 -1
  67. package/dist/cli/index.d.ts +0 -387
  68. package/dist/cli/index.d.ts.map +0 -1
  69. package/dist/cli/index.js +0 -523
  70. package/dist/cli/index.js.map +0 -1
  71. package/dist/cli/ui/components/DiffView.d.ts +0 -7
  72. package/dist/cli/ui/components/DiffView.d.ts.map +0 -1
  73. package/dist/cli/ui/components/DiffView.js +0 -11
  74. package/dist/cli/ui/components/DiffView.js.map +0 -1
  75. package/dist/cli/ui/components/ErrorDisplay.d.ts +0 -6
  76. package/dist/cli/ui/components/ErrorDisplay.d.ts.map +0 -1
  77. package/dist/cli/ui/components/ErrorDisplay.js +0 -11
  78. package/dist/cli/ui/components/ErrorDisplay.js.map +0 -1
  79. package/dist/cli/ui/components/FuzzySearch.d.ts +0 -9
  80. package/dist/cli/ui/components/FuzzySearch.d.ts.map +0 -1
  81. package/dist/cli/ui/components/FuzzySearch.js +0 -12
  82. package/dist/cli/ui/components/FuzzySearch.js.map +0 -1
  83. package/dist/cli/ui/components/LoadingSpinner.d.ts +0 -6
  84. package/dist/cli/ui/components/LoadingSpinner.d.ts.map +0 -1
  85. package/dist/cli/ui/components/LoadingSpinner.js +0 -10
  86. package/dist/cli/ui/components/LoadingSpinner.js.map +0 -1
  87. package/dist/cli/ui/components/NavigationList.d.ts +0 -9
  88. package/dist/cli/ui/components/NavigationList.d.ts.map +0 -1
  89. package/dist/cli/ui/components/NavigationList.js +0 -11
  90. package/dist/cli/ui/components/NavigationList.js.map +0 -1
  91. package/dist/cli/ui/components/ScrollableContent.d.ts +0 -8
  92. package/dist/cli/ui/components/ScrollableContent.d.ts.map +0 -1
  93. package/dist/cli/ui/components/ScrollableContent.js +0 -11
  94. package/dist/cli/ui/components/ScrollableContent.js.map +0 -1
  95. package/dist/cli/ui/components/index.d.ts +0 -7
  96. package/dist/cli/ui/components/index.d.ts.map +0 -1
  97. package/dist/cli/ui/components/index.js +0 -9
  98. package/dist/cli/ui/components/index.js.map +0 -1
  99. package/dist/cli/ui/terminal-ui.d.ts +0 -52
  100. package/dist/cli/ui/terminal-ui.d.ts.map +0 -1
  101. package/dist/cli/ui/terminal-ui.js +0 -121
  102. package/dist/cli/ui/terminal-ui.js.map +0 -1
  103. package/dist/do/BashModule.d.ts +0 -871
  104. package/dist/do/BashModule.d.ts.map +0 -1
  105. package/dist/do/BashModule.js +0 -1143
  106. package/dist/do/BashModule.js.map +0 -1
  107. package/dist/do/FsModule.d.ts +0 -601
  108. package/dist/do/FsModule.d.ts.map +0 -1
  109. package/dist/do/FsModule.js +0 -1120
  110. package/dist/do/FsModule.js.map +0 -1
  111. package/dist/do/GitModule.d.ts +0 -635
  112. package/dist/do/GitModule.d.ts.map +0 -1
  113. package/dist/do/GitModule.js +0 -781
  114. package/dist/do/GitModule.js.map +0 -1
  115. package/dist/do/GitRepoDO.d.ts +0 -281
  116. package/dist/do/GitRepoDO.d.ts.map +0 -1
  117. package/dist/do/GitRepoDO.js +0 -479
  118. package/dist/do/GitRepoDO.js.map +0 -1
  119. package/dist/do/bash-ast.d.ts +0 -246
  120. package/dist/do/bash-ast.d.ts.map +0 -1
  121. package/dist/do/bash-ast.js +0 -888
  122. package/dist/do/bash-ast.js.map +0 -1
  123. package/dist/do/container-executor.d.ts +0 -491
  124. package/dist/do/container-executor.d.ts.map +0 -1
  125. package/dist/do/container-executor.js +0 -730
  126. package/dist/do/container-executor.js.map +0 -1
  127. package/dist/do/index.d.ts +0 -53
  128. package/dist/do/index.d.ts.map +0 -1
  129. package/dist/do/index.js +0 -91
  130. package/dist/do/index.js.map +0 -1
  131. package/dist/do/tiered-storage.d.ts +0 -403
  132. package/dist/do/tiered-storage.d.ts.map +0 -1
  133. package/dist/do/tiered-storage.js +0 -689
  134. package/dist/do/tiered-storage.js.map +0 -1
  135. package/dist/do/withBash.d.ts +0 -231
  136. package/dist/do/withBash.d.ts.map +0 -1
  137. package/dist/do/withBash.js +0 -244
  138. package/dist/do/withBash.js.map +0 -1
  139. package/dist/do/withFs.d.ts +0 -237
  140. package/dist/do/withFs.d.ts.map +0 -1
  141. package/dist/do/withFs.js +0 -387
  142. package/dist/do/withFs.js.map +0 -1
  143. package/dist/do/withGit.d.ts +0 -180
  144. package/dist/do/withGit.d.ts.map +0 -1
  145. package/dist/do/withGit.js +0 -271
  146. package/dist/do/withGit.js.map +0 -1
  147. package/dist/durable-object/object-store.d.ts +0 -633
  148. package/dist/durable-object/object-store.d.ts.map +0 -1
  149. package/dist/durable-object/object-store.js +0 -1161
  150. package/dist/durable-object/object-store.js.map +0 -1
  151. package/dist/durable-object/schema.d.ts.map +0 -1
  152. package/dist/durable-object/schema.js.map +0 -1
  153. package/dist/durable-object/wal.d.ts +0 -416
  154. package/dist/durable-object/wal.d.ts.map +0 -1
  155. package/dist/durable-object/wal.js +0 -445
  156. package/dist/durable-object/wal.js.map +0 -1
  157. package/dist/mcp/adapter.d.ts +0 -772
  158. package/dist/mcp/adapter.d.ts.map +0 -1
  159. package/dist/mcp/adapter.js +0 -895
  160. package/dist/mcp/adapter.js.map +0 -1
  161. package/dist/mcp/sandbox/miniflare-evaluator.d.ts +0 -22
  162. package/dist/mcp/sandbox/miniflare-evaluator.d.ts.map +0 -1
  163. package/dist/mcp/sandbox/miniflare-evaluator.js +0 -140
  164. package/dist/mcp/sandbox/miniflare-evaluator.js.map +0 -1
  165. package/dist/mcp/sandbox/object-store-proxy.d.ts +0 -32
  166. package/dist/mcp/sandbox/object-store-proxy.d.ts.map +0 -1
  167. package/dist/mcp/sandbox/object-store-proxy.js +0 -30
  168. package/dist/mcp/sandbox/object-store-proxy.js.map +0 -1
  169. package/dist/mcp/sandbox/template.d.ts +0 -17
  170. package/dist/mcp/sandbox/template.d.ts.map +0 -1
  171. package/dist/mcp/sandbox/template.js +0 -71
  172. package/dist/mcp/sandbox/template.js.map +0 -1
  173. package/dist/mcp/sandbox.d.ts +0 -764
  174. package/dist/mcp/sandbox.d.ts.map +0 -1
  175. package/dist/mcp/sandbox.js +0 -1362
  176. package/dist/mcp/sandbox.js.map +0 -1
  177. package/dist/mcp/sdk-adapter.d.ts +0 -835
  178. package/dist/mcp/sdk-adapter.d.ts.map +0 -1
  179. package/dist/mcp/sdk-adapter.js +0 -974
  180. package/dist/mcp/sdk-adapter.js.map +0 -1
  181. package/dist/mcp/tools/do.d.ts +0 -32
  182. package/dist/mcp/tools/do.d.ts.map +0 -1
  183. package/dist/mcp/tools/do.js +0 -115
  184. package/dist/mcp/tools/do.js.map +0 -1
  185. package/dist/mcp/tools.d.ts +0 -548
  186. package/dist/mcp/tools.d.ts.map +0 -1
  187. package/dist/mcp/tools.js +0 -1934
  188. package/dist/mcp/tools.js.map +0 -1
  189. package/dist/ops/blame.d.ts +0 -551
  190. package/dist/ops/blame.d.ts.map +0 -1
  191. package/dist/ops/blame.js +0 -1037
  192. package/dist/ops/blame.js.map +0 -1
  193. package/dist/ops/branch.d.ts +0 -766
  194. package/dist/ops/branch.d.ts.map +0 -1
  195. package/dist/ops/branch.js +0 -950
  196. package/dist/ops/branch.js.map +0 -1
  197. package/dist/ops/commit-traversal.d.ts +0 -349
  198. package/dist/ops/commit-traversal.d.ts.map +0 -1
  199. package/dist/ops/commit-traversal.js +0 -821
  200. package/dist/ops/commit-traversal.js.map +0 -1
  201. package/dist/ops/commit.d.ts +0 -555
  202. package/dist/ops/commit.d.ts.map +0 -1
  203. package/dist/ops/commit.js +0 -826
  204. package/dist/ops/commit.js.map +0 -1
  205. package/dist/ops/merge-base.d.ts +0 -397
  206. package/dist/ops/merge-base.d.ts.map +0 -1
  207. package/dist/ops/merge-base.js +0 -691
  208. package/dist/ops/merge-base.js.map +0 -1
  209. package/dist/ops/merge.d.ts +0 -855
  210. package/dist/ops/merge.d.ts.map +0 -1
  211. package/dist/ops/merge.js +0 -1551
  212. package/dist/ops/merge.js.map +0 -1
  213. package/dist/ops/tag.d.ts +0 -247
  214. package/dist/ops/tag.d.ts.map +0 -1
  215. package/dist/ops/tag.js +0 -649
  216. package/dist/ops/tag.js.map +0 -1
  217. package/dist/ops/tree-builder.d.ts +0 -178
  218. package/dist/ops/tree-builder.d.ts.map +0 -1
  219. package/dist/ops/tree-builder.js +0 -271
  220. package/dist/ops/tree-builder.js.map +0 -1
  221. package/dist/ops/tree-diff.d.ts +0 -291
  222. package/dist/ops/tree-diff.d.ts.map +0 -1
  223. package/dist/ops/tree-diff.js +0 -705
  224. package/dist/ops/tree-diff.js.map +0 -1
  225. package/dist/pack/delta.d.ts +0 -248
  226. package/dist/pack/delta.d.ts.map +0 -1
  227. package/dist/pack/delta.js +0 -736
  228. package/dist/pack/delta.js.map +0 -1
  229. package/dist/pack/format.d.ts +0 -446
  230. package/dist/pack/format.d.ts.map +0 -1
  231. package/dist/pack/format.js +0 -572
  232. package/dist/pack/format.js.map +0 -1
  233. package/dist/pack/full-generation.d.ts +0 -612
  234. package/dist/pack/full-generation.d.ts.map +0 -1
  235. package/dist/pack/full-generation.js +0 -1378
  236. package/dist/pack/full-generation.js.map +0 -1
  237. package/dist/pack/generation.d.ts +0 -441
  238. package/dist/pack/generation.d.ts.map +0 -1
  239. package/dist/pack/generation.js +0 -707
  240. package/dist/pack/generation.js.map +0 -1
  241. package/dist/pack/index.d.ts +0 -502
  242. package/dist/pack/index.d.ts.map +0 -1
  243. package/dist/pack/index.js +0 -833
  244. package/dist/pack/index.js.map +0 -1
  245. package/dist/refs/branch.d.ts +0 -668
  246. package/dist/refs/branch.d.ts.map +0 -1
  247. package/dist/refs/branch.js +0 -897
  248. package/dist/refs/branch.js.map +0 -1
  249. package/dist/refs/storage.d.ts +0 -833
  250. package/dist/refs/storage.d.ts.map +0 -1
  251. package/dist/refs/storage.js +0 -1023
  252. package/dist/refs/storage.js.map +0 -1
  253. package/dist/refs/tag.d.ts +0 -860
  254. package/dist/refs/tag.d.ts.map +0 -1
  255. package/dist/refs/tag.js +0 -996
  256. package/dist/refs/tag.js.map +0 -1
  257. package/dist/storage/backend.d.ts +0 -425
  258. package/dist/storage/backend.d.ts.map +0 -1
  259. package/dist/storage/backend.js +0 -41
  260. package/dist/storage/backend.js.map +0 -1
  261. package/dist/storage/fsx-adapter.d.ts +0 -204
  262. package/dist/storage/fsx-adapter.d.ts.map +0 -1
  263. package/dist/storage/fsx-adapter.js +0 -470
  264. package/dist/storage/fsx-adapter.js.map +0 -1
  265. package/dist/storage/lru-cache.d.ts +0 -691
  266. package/dist/storage/lru-cache.d.ts.map +0 -1
  267. package/dist/storage/lru-cache.js +0 -813
  268. package/dist/storage/lru-cache.js.map +0 -1
  269. package/dist/storage/object-index.d.ts +0 -585
  270. package/dist/storage/object-index.d.ts.map +0 -1
  271. package/dist/storage/object-index.js +0 -532
  272. package/dist/storage/object-index.js.map +0 -1
  273. package/dist/storage/r2-pack.d.ts +0 -1257
  274. package/dist/storage/r2-pack.d.ts.map +0 -1
  275. package/dist/storage/r2-pack.js +0 -1770
  276. package/dist/storage/r2-pack.js.map +0 -1
  277. package/dist/tiered/cdc-pipeline.d.ts +0 -1888
  278. package/dist/tiered/cdc-pipeline.d.ts.map +0 -1
  279. package/dist/tiered/cdc-pipeline.js +0 -1880
  280. package/dist/tiered/cdc-pipeline.js.map +0 -1
  281. package/dist/tiered/migration.d.ts +0 -1104
  282. package/dist/tiered/migration.d.ts.map +0 -1
  283. package/dist/tiered/migration.js +0 -1214
  284. package/dist/tiered/migration.js.map +0 -1
  285. package/dist/tiered/parquet-writer.d.ts +0 -1145
  286. package/dist/tiered/parquet-writer.d.ts.map +0 -1
  287. package/dist/tiered/parquet-writer.js +0 -1183
  288. package/dist/tiered/parquet-writer.js.map +0 -1
  289. package/dist/tiered/read-path.d.ts +0 -835
  290. package/dist/tiered/read-path.d.ts.map +0 -1
  291. package/dist/tiered/read-path.js +0 -487
  292. package/dist/tiered/read-path.js.map +0 -1
  293. package/dist/types/capability.d.ts +0 -1385
  294. package/dist/types/capability.d.ts.map +0 -1
  295. package/dist/types/capability.js +0 -36
  296. package/dist/types/capability.js.map +0 -1
  297. package/dist/types/index.d.ts +0 -13
  298. package/dist/types/index.d.ts.map +0 -1
  299. package/dist/types/index.js +0 -18
  300. package/dist/types/index.js.map +0 -1
  301. package/dist/types/objects.d.ts +0 -692
  302. package/dist/types/objects.d.ts.map +0 -1
  303. package/dist/types/objects.js +0 -837
  304. package/dist/types/objects.js.map +0 -1
  305. package/dist/types/storage.d.ts +0 -603
  306. package/dist/types/storage.d.ts.map +0 -1
  307. package/dist/types/storage.js +0 -191
  308. package/dist/types/storage.js.map +0 -1
  309. package/dist/types/worker-loader.d.ts +0 -60
  310. package/dist/types/worker-loader.d.ts.map +0 -1
  311. package/dist/types/worker-loader.js +0 -62
  312. package/dist/types/worker-loader.js.map +0 -1
  313. package/dist/utils/hash.d.ts +0 -197
  314. package/dist/utils/hash.d.ts.map +0 -1
  315. package/dist/utils/hash.js +0 -268
  316. package/dist/utils/hash.js.map +0 -1
  317. package/dist/utils/sha1.d.ts +0 -290
  318. package/dist/utils/sha1.d.ts.map +0 -1
  319. package/dist/utils/sha1.js +0 -582
  320. package/dist/utils/sha1.js.map +0 -1
  321. package/dist/wire/capabilities.d.ts +0 -1044
  322. package/dist/wire/capabilities.d.ts.map +0 -1
  323. package/dist/wire/capabilities.js +0 -941
  324. package/dist/wire/capabilities.js.map +0 -1
  325. package/dist/wire/path-security.d.ts +0 -157
  326. package/dist/wire/path-security.d.ts.map +0 -1
  327. package/dist/wire/path-security.js +0 -307
  328. package/dist/wire/path-security.js.map +0 -1
  329. package/dist/wire/pkt-line.d.ts +0 -345
  330. package/dist/wire/pkt-line.d.ts.map +0 -1
  331. package/dist/wire/pkt-line.js +0 -381
  332. package/dist/wire/pkt-line.js.map +0 -1
  333. package/dist/wire/receive-pack.d.ts +0 -1059
  334. package/dist/wire/receive-pack.d.ts.map +0 -1
  335. package/dist/wire/receive-pack.js +0 -1414
  336. package/dist/wire/receive-pack.js.map +0 -1
  337. package/dist/wire/smart-http.d.ts +0 -799
  338. package/dist/wire/smart-http.d.ts.map +0 -1
  339. package/dist/wire/smart-http.js +0 -945
  340. package/dist/wire/smart-http.js.map +0 -1
  341. package/dist/wire/upload-pack.d.ts +0 -727
  342. package/dist/wire/upload-pack.d.ts.map +0 -1
  343. package/dist/wire/upload-pack.js +0 -1138
  344. 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":"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"}
@@ -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"}