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
@@ -1,479 +0,0 @@
1
- /**
2
- * @fileoverview GitRepoDO - Git Repository Durable Object
3
- *
4
- * This module provides a GitRepoDO class that extends the DO base class pattern,
5
- * providing git repository functionality as a Durable Object.
6
- *
7
- * @module do/GitRepoDO
8
- *
9
- * @example
10
- * ```typescript
11
- * import { GitRepoDO, isGitRepoDO } from 'gitx.do/do'
12
- *
13
- * // GitRepoDO instances have git capability by default
14
- * const repo = new GitRepoDO(state, env)
15
- * await repo.initialize({ ns: 'https://git.do/repo/my-repo' })
16
- *
17
- * // Access workflow context
18
- * await repo.$.branch('feature')
19
- * await repo.$.checkout('main')
20
- * ```
21
- */
22
- import { Hono } from 'hono';
23
- // ============================================================================
24
- // DO Base Class Implementation
25
- // ============================================================================
26
- /**
27
- * Base DO class that GitRepoDO extends.
28
- * Provides the foundation for type hierarchy, capabilities, and lifecycle.
29
- */
30
- class DO {
31
- static $type = 'DO';
32
- state;
33
- env;
34
- _ns;
35
- _capabilities = new Set();
36
- _initialized = false;
37
- constructor(state, env) {
38
- this.state = state;
39
- this.env = env;
40
- }
41
- get $type() {
42
- return this.constructor.$type;
43
- }
44
- get ns() {
45
- return this._ns;
46
- }
47
- /**
48
- * Get the type hierarchy for this DO.
49
- */
50
- getTypeHierarchy() {
51
- const hierarchy = [];
52
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
53
- let current = this.constructor;
54
- while (current && current.$type) {
55
- hierarchy.push(current.$type);
56
- current = Object.getPrototypeOf(current);
57
- }
58
- return hierarchy;
59
- }
60
- /**
61
- * Check if this DO is an instance of a specific type.
62
- */
63
- isInstanceOfType(typeName) {
64
- return this.getTypeHierarchy().includes(typeName);
65
- }
66
- /**
67
- * Check if this DO is exactly a specific type (not a subtype).
68
- */
69
- isType(typeName) {
70
- return this.$type === typeName;
71
- }
72
- /**
73
- * Check if this DO extends a specific type.
74
- */
75
- extendsType(typeName) {
76
- return this.isInstanceOfType(typeName);
77
- }
78
- /**
79
- * Check if this DO has a specific capability.
80
- */
81
- hasCapability(capability) {
82
- return this._capabilities.has(capability);
83
- }
84
- /**
85
- * Convert to JSON representation.
86
- */
87
- toJSON() {
88
- return {
89
- $type: this.$type,
90
- ns: this._ns,
91
- capabilities: Array.from(this._capabilities),
92
- };
93
- }
94
- }
95
- // ============================================================================
96
- // GitRepoDO Class
97
- // ============================================================================
98
- /**
99
- * GitRepoDO - Git Repository Durable Object.
100
- *
101
- * Extends the DO base class with git-specific functionality including:
102
- * - Repository lifecycle management (initialize, fork, compact)
103
- * - Workflow context with git operations (branch, checkout, merge)
104
- * - Storage accessors for things, actions, events, and relationships
105
- *
106
- * @example
107
- * ```typescript
108
- * const repo = new GitRepoDO(state, env)
109
- * await repo.initialize({ ns: 'https://git.do/repo/my-repo' })
110
- *
111
- * // Use workflow context
112
- * await repo.$.branch('feature-x')
113
- * await repo.$.checkout('feature-x')
114
- *
115
- * // Access stores
116
- * await repo.things.set('file-1', { content: '...' })
117
- * ```
118
- */
119
- export class GitRepoDO extends DO {
120
- static $type = 'GitRepoDO';
121
- _router;
122
- _$;
123
- _db;
124
- _things;
125
- _rels;
126
- _actions;
127
- _events;
128
- constructor(state, env) {
129
- super(state, env);
130
- // GitRepoDO has git capability by default
131
- this._capabilities.add('git');
132
- // Initialize router
133
- this._router = new Hono();
134
- this._setupRoutes();
135
- // Initialize workflow context
136
- this._$ = this._createWorkflowContext();
137
- // Initialize store accessors
138
- this._things = this._createStoreAccessor('things');
139
- this._rels = this._createStoreAccessor('rels');
140
- this._actions = this._createStoreAccessor('actions');
141
- this._events = this._createStoreAccessor('events');
142
- // Initialize db (placeholder for Drizzle integration)
143
- this._db = { sql: state.storage.sql };
144
- }
145
- /**
146
- * Workflow context for $ API.
147
- */
148
- get $() {
149
- return this._$;
150
- }
151
- /**
152
- * Database accessor (Drizzle instance).
153
- */
154
- get db() {
155
- return this._db;
156
- }
157
- /**
158
- * Things store accessor.
159
- */
160
- get things() {
161
- return this._things;
162
- }
163
- /**
164
- * Relationships store accessor.
165
- */
166
- get rels() {
167
- return this._rels;
168
- }
169
- /**
170
- * Actions store accessor.
171
- */
172
- get actions() {
173
- return this._actions;
174
- }
175
- /**
176
- * Events store accessor.
177
- */
178
- get events() {
179
- return this._events;
180
- }
181
- // ===========================================================================
182
- // Lifecycle Methods
183
- // ===========================================================================
184
- /**
185
- * Initialize the GitRepoDO with namespace and optional parent.
186
- */
187
- async initialize(options) {
188
- // Validate namespace URL
189
- let url;
190
- try {
191
- url = new URL(options.ns);
192
- }
193
- catch {
194
- throw new Error(`Invalid namespace URL: ${options.ns}`);
195
- }
196
- this._ns = options.ns;
197
- this._initialized = true;
198
- // Persist namespace to storage
199
- await this.state.storage.put('ns', options.ns);
200
- if (options.parent) {
201
- await this.state.storage.put('parent', options.parent);
202
- }
203
- // Create initial repo state unless explicitly marked as empty
204
- // This allows repos to have initial data for compaction
205
- const repoPath = url.pathname;
206
- if (!repoPath.includes('empty')) {
207
- // Create initial root tree/commit placeholder
208
- const timestamp = Date.now();
209
- await this.state.storage.put(`things:root:${timestamp}`, {
210
- type: 'tree',
211
- entries: [],
212
- created: timestamp,
213
- });
214
- await this.state.storage.put(`actions:init:${timestamp}`, {
215
- action: 'initialize',
216
- timestamp,
217
- ns: options.ns,
218
- });
219
- await this.state.storage.put(`events:init:${timestamp}`, {
220
- event: 'repo.initialized',
221
- timestamp,
222
- ns: options.ns,
223
- });
224
- }
225
- }
226
- /**
227
- * Fork this DO to create a new instance with copied state.
228
- */
229
- async fork(options) {
230
- if (!this._initialized || !this._ns) {
231
- throw new Error('Cannot fork: DO not initialized');
232
- }
233
- // Validate target namespace URL
234
- try {
235
- new URL(options.to);
236
- }
237
- catch {
238
- throw new Error(`Invalid fork target URL: ${options.to}`);
239
- }
240
- // Create a new DO ID for the fork
241
- const doId = this.env.DO?.newUniqueId() ?? { id: crypto.randomUUID() };
242
- const doIdStr = typeof doId === 'object' && 'id' in doId ? String(doId.id) : String(doId);
243
- // If we have the DO binding, create the forked instance
244
- if (this.env.DO) {
245
- const forkedDO = this.env.DO.get(doId);
246
- await forkedDO.fetch(new Request('https://internal/fork', {
247
- method: 'POST',
248
- body: JSON.stringify({
249
- ns: options.to,
250
- parent: this._ns,
251
- branch: options.branch,
252
- }),
253
- }));
254
- }
255
- return {
256
- ns: options.to,
257
- doId: doIdStr,
258
- };
259
- }
260
- /**
261
- * Compact the DO's data, archiving old things, actions, and events.
262
- */
263
- async compact() {
264
- if (!this._initialized) {
265
- throw new Error('Cannot compact: DO not initialized');
266
- }
267
- // Check if there's anything to compact
268
- const thingsList = await this.state.storage.list({ prefix: 'things:' });
269
- const actionsList = await this.state.storage.list({ prefix: 'actions:' });
270
- const eventsList = await this.state.storage.list({ prefix: 'events:' });
271
- const totalItems = thingsList.size + actionsList.size + eventsList.size;
272
- if (totalItems === 0) {
273
- throw new Error('Nothing to compact');
274
- }
275
- // For now, return counts without actual archiving
276
- return {
277
- thingsCompacted: thingsList.size,
278
- actionsArchived: actionsList.size,
279
- eventsArchived: eventsList.size,
280
- };
281
- }
282
- // ===========================================================================
283
- // Durable Object Interface
284
- // ===========================================================================
285
- /**
286
- * Handle incoming HTTP requests.
287
- */
288
- async fetch(request) {
289
- return this._router.fetch(request);
290
- }
291
- /**
292
- * Handle alarm callbacks.
293
- */
294
- async alarm() {
295
- // Default alarm handler - can be overridden
296
- }
297
- // ===========================================================================
298
- // Public Methods
299
- // ===========================================================================
300
- /**
301
- * Get a typed collection accessor.
302
- */
303
- collection(name) {
304
- return {
305
- ...this._createStoreAccessor(`collection:${name}`),
306
- type: name,
307
- };
308
- }
309
- /**
310
- * Resolve a URL to a resource.
311
- */
312
- async resolve(url) {
313
- // Parse and resolve the URL
314
- const parsed = new URL(url);
315
- return {
316
- url,
317
- host: parsed.host,
318
- path: parsed.pathname,
319
- };
320
- }
321
- // ===========================================================================
322
- // Private Methods
323
- // ===========================================================================
324
- _setupRoutes() {
325
- // Health check endpoint
326
- this._router.get('/health', (c) => {
327
- return c.json({
328
- status: 'ok',
329
- ns: this._ns,
330
- $type: this.$type,
331
- });
332
- });
333
- // Fork endpoint (internal)
334
- this._router.post('/fork', async (c) => {
335
- const body = await c.req.json();
336
- await this.initialize({ ns: body.ns, parent: body.parent });
337
- return c.json({ success: true });
338
- });
339
- }
340
- _createWorkflowContext() {
341
- const self = this;
342
- // Create the $ proxy with all required methods
343
- const context = {
344
- // Fire-and-forget
345
- send(event, data) {
346
- // Queue event for async processing
347
- self.state.waitUntil(self.state.storage.put(`pending:${Date.now()}`, { event, data }));
348
- },
349
- // Quick attempt (blocking, non-durable)
350
- async try(action, data) {
351
- // Execute action directly
352
- return { action, data, success: true };
353
- },
354
- // Durable execution with retries
355
- async do(action, data) {
356
- // Store action for durability
357
- const actionId = `action:${Date.now()}`;
358
- await self.state.storage.put(actionId, { action, data, status: 'pending' });
359
- // Execute and update status
360
- const result = { action, data, success: true };
361
- await self.state.storage.put(actionId, { action, data, status: 'completed', result });
362
- return result;
363
- },
364
- // Event handler proxy
365
- on: new Proxy({}, {
366
- get(_target, noun) {
367
- return new Proxy({}, {
368
- get(_t, verb) {
369
- return (handler) => {
370
- // Register event handler
371
- self.state.waitUntil(self.state.storage.put(`handler:${noun}:${verb}`, { handler: String(handler) }));
372
- };
373
- },
374
- });
375
- },
376
- }),
377
- // Scheduling proxy
378
- every: new Proxy({}, {
379
- get(_target, schedule) {
380
- return {
381
- at: (time) => (handler) => {
382
- // Register scheduled handler
383
- self.state.waitUntil(self.state.storage.put(`schedule:${schedule}:${time}`, { handler: String(handler) }));
384
- },
385
- };
386
- },
387
- }),
388
- // Git-specific methods
389
- async branch(name) {
390
- await self.state.storage.put(`refs/heads/${name}`, {
391
- created: Date.now(),
392
- head: await self.state.storage.get('HEAD'),
393
- });
394
- },
395
- async checkout(ref) {
396
- await self.state.storage.put('HEAD', ref);
397
- },
398
- async merge(branch) {
399
- const branchData = await self.state.storage.get(`refs/heads/${branch}`);
400
- if (branchData) {
401
- // Simple fast-forward merge for now
402
- await self.state.storage.put('HEAD', branchData);
403
- }
404
- },
405
- };
406
- // Add domain proxy for $.Noun(id) pattern
407
- return new Proxy(context, {
408
- get(target, prop) {
409
- // Return existing properties first
410
- if (prop in target) {
411
- return target[prop];
412
- }
413
- // For capitalized names, return a domain resolver function
414
- if (prop.charAt(0) === prop.charAt(0).toUpperCase()) {
415
- return (id) => {
416
- // Return a proxy that represents the domain entity
417
- return new Proxy({}, {
418
- get(_t, method) {
419
- return async (...args) => {
420
- // This would resolve and call the method on the target DO
421
- return { domain: prop, id, method, args };
422
- };
423
- },
424
- });
425
- };
426
- }
427
- return undefined;
428
- },
429
- });
430
- }
431
- _createStoreAccessor(prefix) {
432
- const storage = this.state.storage;
433
- return {
434
- async get(id) {
435
- return storage.get(`${prefix}:${id}`);
436
- },
437
- async set(id, value) {
438
- await storage.put(`${prefix}:${id}`, value);
439
- },
440
- async delete(id) {
441
- return storage.delete(`${prefix}:${id}`);
442
- },
443
- async list(options) {
444
- const fullPrefix = options?.prefix
445
- ? `${prefix}:${options.prefix}`
446
- : `${prefix}:`;
447
- return storage.list({ prefix: fullPrefix });
448
- },
449
- };
450
- }
451
- }
452
- // ============================================================================
453
- // Type Guard
454
- // ============================================================================
455
- /**
456
- * Check if a value is a GitRepoDO instance.
457
- *
458
- * @param value - Value to check
459
- * @returns True if value is a GitRepoDO
460
- *
461
- * @example
462
- * ```typescript
463
- * if (isGitRepoDO(obj)) {
464
- * // obj is typed as GitRepoDO
465
- * await obj.initialize({ ns: '...' })
466
- * }
467
- * ```
468
- */
469
- export function isGitRepoDO(value) {
470
- if (!value || typeof value !== 'object') {
471
- return false;
472
- }
473
- // Check for GitRepoDO-specific properties and methods
474
- const candidate = value;
475
- return (candidate.$type === 'GitRepoDO' &&
476
- typeof candidate.hasCapability === 'function' &&
477
- candidate.hasCapability('git'));
478
- }
479
- //# sourceMappingURL=GitRepoDO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GitRepoDO.js","sourceRoot":"","sources":["../../src/do/GitRepoDO.ts"],"names":[],"mappings":"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"}