gitx.do 0.0.3 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/README.md +319 -92
  2. package/dist/cli/commands/add.d.ts +176 -0
  3. package/dist/cli/commands/add.d.ts.map +1 -0
  4. package/dist/cli/commands/add.js +979 -0
  5. package/dist/cli/commands/add.js.map +1 -0
  6. package/dist/cli/commands/blame.d.ts +1 -1
  7. package/dist/cli/commands/blame.d.ts.map +1 -1
  8. package/dist/cli/commands/blame.js +1 -1
  9. package/dist/cli/commands/blame.js.map +1 -1
  10. package/dist/cli/commands/branch.d.ts +1 -1
  11. package/dist/cli/commands/branch.d.ts.map +1 -1
  12. package/dist/cli/commands/branch.js +2 -2
  13. package/dist/cli/commands/branch.js.map +1 -1
  14. package/dist/cli/commands/checkout.d.ts +73 -0
  15. package/dist/cli/commands/checkout.d.ts.map +1 -0
  16. package/dist/cli/commands/checkout.js +725 -0
  17. package/dist/cli/commands/checkout.js.map +1 -0
  18. package/dist/cli/commands/commit.d.ts.map +1 -1
  19. package/dist/cli/commands/commit.js +22 -2
  20. package/dist/cli/commands/commit.js.map +1 -1
  21. package/dist/cli/commands/diff.d.ts +4 -4
  22. package/dist/cli/commands/diff.d.ts.map +1 -1
  23. package/dist/cli/commands/diff.js +9 -8
  24. package/dist/cli/commands/diff.js.map +1 -1
  25. package/dist/cli/commands/log.d.ts +1 -1
  26. package/dist/cli/commands/log.d.ts.map +1 -1
  27. package/dist/cli/commands/log.js +1 -1
  28. package/dist/cli/commands/log.js.map +1 -1
  29. package/dist/cli/commands/merge.d.ts +106 -0
  30. package/dist/cli/commands/merge.d.ts.map +1 -0
  31. package/dist/cli/commands/merge.js +852 -0
  32. package/dist/cli/commands/merge.js.map +1 -0
  33. package/dist/cli/commands/review.d.ts +1 -1
  34. package/dist/cli/commands/review.d.ts.map +1 -1
  35. package/dist/cli/commands/review.js +26 -1
  36. package/dist/cli/commands/review.js.map +1 -1
  37. package/dist/cli/commands/stash.d.ts +157 -0
  38. package/dist/cli/commands/stash.d.ts.map +1 -0
  39. package/dist/cli/commands/stash.js +655 -0
  40. package/dist/cli/commands/stash.js.map +1 -0
  41. package/dist/cli/commands/status.d.ts.map +1 -1
  42. package/dist/cli/commands/status.js +1 -2
  43. package/dist/cli/commands/status.js.map +1 -1
  44. package/dist/cli/commands/web.d.ts.map +1 -1
  45. package/dist/cli/commands/web.js +3 -2
  46. package/dist/cli/commands/web.js.map +1 -1
  47. package/dist/cli/fs-adapter.d.ts.map +1 -1
  48. package/dist/cli/fs-adapter.js +3 -5
  49. package/dist/cli/fs-adapter.js.map +1 -1
  50. package/dist/cli/fsx-cli-adapter.d.ts +359 -0
  51. package/dist/cli/fsx-cli-adapter.d.ts.map +1 -0
  52. package/dist/cli/fsx-cli-adapter.js +619 -0
  53. package/dist/cli/fsx-cli-adapter.js.map +1 -0
  54. package/dist/cli/index.d.ts.map +1 -1
  55. package/dist/cli/index.js +68 -12
  56. package/dist/cli/index.js.map +1 -1
  57. package/dist/cli/ui/components/DiffView.d.ts +7 -2
  58. package/dist/cli/ui/components/DiffView.d.ts.map +1 -1
  59. package/dist/cli/ui/components/DiffView.js.map +1 -1
  60. package/dist/cli/ui/components/ErrorDisplay.d.ts +6 -2
  61. package/dist/cli/ui/components/ErrorDisplay.d.ts.map +1 -1
  62. package/dist/cli/ui/components/ErrorDisplay.js.map +1 -1
  63. package/dist/cli/ui/components/FuzzySearch.d.ts +8 -2
  64. package/dist/cli/ui/components/FuzzySearch.d.ts.map +1 -1
  65. package/dist/cli/ui/components/FuzzySearch.js.map +1 -1
  66. package/dist/cli/ui/components/LoadingSpinner.d.ts +6 -2
  67. package/dist/cli/ui/components/LoadingSpinner.d.ts.map +1 -1
  68. package/dist/cli/ui/components/LoadingSpinner.js.map +1 -1
  69. package/dist/cli/ui/components/NavigationList.d.ts +7 -2
  70. package/dist/cli/ui/components/NavigationList.d.ts.map +1 -1
  71. package/dist/cli/ui/components/NavigationList.js.map +1 -1
  72. package/dist/cli/ui/components/ScrollableContent.d.ts +7 -2
  73. package/dist/cli/ui/components/ScrollableContent.d.ts.map +1 -1
  74. package/dist/cli/ui/components/ScrollableContent.js.map +1 -1
  75. package/dist/cli/ui/terminal-ui.d.ts +42 -9
  76. package/dist/cli/ui/terminal-ui.d.ts.map +1 -1
  77. package/dist/cli/ui/terminal-ui.js.map +1 -1
  78. package/dist/do/BashModule.d.ts +871 -0
  79. package/dist/do/BashModule.d.ts.map +1 -0
  80. package/dist/do/BashModule.js +1143 -0
  81. package/dist/do/BashModule.js.map +1 -0
  82. package/dist/do/FsModule.d.ts +612 -0
  83. package/dist/do/FsModule.d.ts.map +1 -0
  84. package/dist/do/FsModule.js +1120 -0
  85. package/dist/do/FsModule.js.map +1 -0
  86. package/dist/do/GitModule.d.ts +635 -0
  87. package/dist/do/GitModule.d.ts.map +1 -0
  88. package/dist/do/GitModule.js +784 -0
  89. package/dist/do/GitModule.js.map +1 -0
  90. package/dist/do/GitRepoDO.d.ts +281 -0
  91. package/dist/do/GitRepoDO.d.ts.map +1 -0
  92. package/dist/do/GitRepoDO.js +479 -0
  93. package/dist/do/GitRepoDO.js.map +1 -0
  94. package/dist/do/bash-ast.d.ts +246 -0
  95. package/dist/do/bash-ast.d.ts.map +1 -0
  96. package/dist/do/bash-ast.js +888 -0
  97. package/dist/do/bash-ast.js.map +1 -0
  98. package/dist/do/container-executor.d.ts +491 -0
  99. package/dist/do/container-executor.d.ts.map +1 -0
  100. package/dist/do/container-executor.js +731 -0
  101. package/dist/do/container-executor.js.map +1 -0
  102. package/dist/do/index.d.ts +53 -0
  103. package/dist/do/index.d.ts.map +1 -0
  104. package/dist/do/index.js +91 -0
  105. package/dist/do/index.js.map +1 -0
  106. package/dist/do/tiered-storage.d.ts +403 -0
  107. package/dist/do/tiered-storage.d.ts.map +1 -0
  108. package/dist/do/tiered-storage.js +689 -0
  109. package/dist/do/tiered-storage.js.map +1 -0
  110. package/dist/do/withBash.d.ts +231 -0
  111. package/dist/do/withBash.d.ts.map +1 -0
  112. package/dist/do/withBash.js +244 -0
  113. package/dist/do/withBash.js.map +1 -0
  114. package/dist/do/withFs.d.ts +237 -0
  115. package/dist/do/withFs.d.ts.map +1 -0
  116. package/dist/do/withFs.js +387 -0
  117. package/dist/do/withFs.js.map +1 -0
  118. package/dist/do/withGit.d.ts +180 -0
  119. package/dist/do/withGit.d.ts.map +1 -0
  120. package/dist/do/withGit.js +271 -0
  121. package/dist/do/withGit.js.map +1 -0
  122. package/dist/durable-object/object-store.d.ts +157 -15
  123. package/dist/durable-object/object-store.d.ts.map +1 -1
  124. package/dist/durable-object/object-store.js +435 -47
  125. package/dist/durable-object/object-store.js.map +1 -1
  126. package/dist/durable-object/schema.d.ts +12 -1
  127. package/dist/durable-object/schema.d.ts.map +1 -1
  128. package/dist/durable-object/schema.js +87 -2
  129. package/dist/durable-object/schema.js.map +1 -1
  130. package/dist/index.d.ts +84 -1
  131. package/dist/index.d.ts.map +1 -1
  132. package/dist/index.js +34 -0
  133. package/dist/index.js.map +1 -1
  134. package/dist/mcp/sandbox/miniflare-evaluator.d.ts +22 -0
  135. package/dist/mcp/sandbox/miniflare-evaluator.d.ts.map +1 -0
  136. package/dist/mcp/sandbox/miniflare-evaluator.js +140 -0
  137. package/dist/mcp/sandbox/miniflare-evaluator.js.map +1 -0
  138. package/dist/mcp/sandbox/object-store-proxy.d.ts +32 -0
  139. package/dist/mcp/sandbox/object-store-proxy.d.ts.map +1 -0
  140. package/dist/mcp/sandbox/object-store-proxy.js +30 -0
  141. package/dist/mcp/sandbox/object-store-proxy.js.map +1 -0
  142. package/dist/mcp/sandbox/template.d.ts +17 -0
  143. package/dist/mcp/sandbox/template.d.ts.map +1 -0
  144. package/dist/mcp/sandbox/template.js +71 -0
  145. package/dist/mcp/sandbox/template.js.map +1 -0
  146. package/dist/mcp/sandbox.d.ts.map +1 -1
  147. package/dist/mcp/sandbox.js +16 -4
  148. package/dist/mcp/sandbox.js.map +1 -1
  149. package/dist/mcp/tools/do.d.ts +32 -0
  150. package/dist/mcp/tools/do.d.ts.map +1 -0
  151. package/dist/mcp/tools/do.js +117 -0
  152. package/dist/mcp/tools/do.js.map +1 -0
  153. package/dist/mcp/tools.d.ts.map +1 -1
  154. package/dist/mcp/tools.js +1258 -22
  155. package/dist/mcp/tools.js.map +1 -1
  156. package/dist/pack/delta.d.ts +8 -0
  157. package/dist/pack/delta.d.ts.map +1 -1
  158. package/dist/pack/delta.js +241 -30
  159. package/dist/pack/delta.js.map +1 -1
  160. package/dist/refs/branch.d.ts +38 -25
  161. package/dist/refs/branch.d.ts.map +1 -1
  162. package/dist/refs/branch.js +421 -94
  163. package/dist/refs/branch.js.map +1 -1
  164. package/dist/refs/storage.d.ts +77 -5
  165. package/dist/refs/storage.d.ts.map +1 -1
  166. package/dist/refs/storage.js +193 -43
  167. package/dist/refs/storage.js.map +1 -1
  168. package/dist/refs/tag.d.ts +44 -24
  169. package/dist/refs/tag.d.ts.map +1 -1
  170. package/dist/refs/tag.js +411 -70
  171. package/dist/refs/tag.js.map +1 -1
  172. package/dist/storage/backend.d.ts +425 -0
  173. package/dist/storage/backend.d.ts.map +1 -0
  174. package/dist/storage/backend.js +41 -0
  175. package/dist/storage/backend.js.map +1 -0
  176. package/dist/storage/fsx-adapter.d.ts +204 -0
  177. package/dist/storage/fsx-adapter.d.ts.map +1 -0
  178. package/dist/storage/fsx-adapter.js +518 -0
  179. package/dist/storage/fsx-adapter.js.map +1 -0
  180. package/dist/storage/r2-pack.d.ts.map +1 -1
  181. package/dist/storage/r2-pack.js +4 -1
  182. package/dist/storage/r2-pack.js.map +1 -1
  183. package/dist/tiered/cdc-pipeline.js +3 -3
  184. package/dist/tiered/cdc-pipeline.js.map +1 -1
  185. package/dist/tiered/migration.d.ts.map +1 -1
  186. package/dist/tiered/migration.js +4 -1
  187. package/dist/tiered/migration.js.map +1 -1
  188. package/dist/types/capability.d.ts +1385 -0
  189. package/dist/types/capability.d.ts.map +1 -0
  190. package/dist/types/capability.js +36 -0
  191. package/dist/types/capability.js.map +1 -0
  192. package/dist/types/index.d.ts +13 -0
  193. package/dist/types/index.d.ts.map +1 -0
  194. package/dist/types/index.js +18 -0
  195. package/dist/types/index.js.map +1 -0
  196. package/dist/types/interfaces.d.ts +673 -0
  197. package/dist/types/interfaces.d.ts.map +1 -0
  198. package/dist/types/interfaces.js +26 -0
  199. package/dist/types/interfaces.js.map +1 -0
  200. package/dist/types/objects.d.ts +182 -0
  201. package/dist/types/objects.d.ts.map +1 -1
  202. package/dist/types/objects.js +249 -4
  203. package/dist/types/objects.js.map +1 -1
  204. package/dist/types/storage.d.ts +114 -0
  205. package/dist/types/storage.d.ts.map +1 -1
  206. package/dist/types/storage.js +160 -1
  207. package/dist/types/storage.js.map +1 -1
  208. package/dist/types/worker-loader.d.ts +60 -0
  209. package/dist/types/worker-loader.d.ts.map +1 -0
  210. package/dist/types/worker-loader.js +62 -0
  211. package/dist/types/worker-loader.js.map +1 -0
  212. package/dist/utils/hash.d.ts +126 -80
  213. package/dist/utils/hash.d.ts.map +1 -1
  214. package/dist/utils/hash.js +191 -100
  215. package/dist/utils/hash.js.map +1 -1
  216. package/dist/utils/sha1.d.ts +206 -0
  217. package/dist/utils/sha1.d.ts.map +1 -1
  218. package/dist/utils/sha1.js +405 -0
  219. package/dist/utils/sha1.js.map +1 -1
  220. package/dist/wire/path-security.d.ts +157 -0
  221. package/dist/wire/path-security.d.ts.map +1 -0
  222. package/dist/wire/path-security.js +307 -0
  223. package/dist/wire/path-security.js.map +1 -0
  224. package/dist/wire/receive-pack.d.ts +7 -0
  225. package/dist/wire/receive-pack.d.ts.map +1 -1
  226. package/dist/wire/receive-pack.js +29 -1
  227. package/dist/wire/receive-pack.js.map +1 -1
  228. package/dist/wire/upload-pack.d.ts.map +1 -1
  229. package/dist/wire/upload-pack.js +4 -1
  230. package/dist/wire/upload-pack.js.map +1 -1
  231. package/package.json +10 -1
@@ -0,0 +1,479 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GitRepoDO.js","sourceRoot":"","sources":["../../src/do/GitRepoDO.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AA0G3B,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,EAAE;IACN,MAAM,CAAC,KAAK,GAAG,IAAI,CAAA;IAET,KAAK,CAAS;IACd,GAAG,CAAc;IACjB,GAAG,CAAS;IACZ,aAAa,GAAgB,IAAI,GAAG,EAAE,CAAA;IACtC,YAAY,GAAG,KAAK,CAAA;IAE9B,YAAY,KAAc,EAAE,GAAiB;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,IAAI,KAAK;QACP,OAAQ,IAAI,CAAC,WAAyB,CAAC,KAAK,CAAA;IAC9C,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,MAAM,SAAS,GAAa,EAAE,CAAA;QAC9B,8DAA8D;QAC9D,IAAI,OAAO,GAAQ,IAAI,CAAC,WAAW,CAAA;QAEnC,OAAO,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAChC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAC7B,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAC1C,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,QAAgB;QAC/B,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACnD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAgB;QACrB,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAA;IAChC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAgB;QAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IACxC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,UAAkB;QAC9B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAC3C,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,EAAE,EAAE,IAAI,CAAC,GAAG;YACZ,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;SAC7C,CAAA;IACH,CAAC;;AAGH,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,SAAU,SAAQ,EAAE;IAC/B,MAAM,CAAU,KAAK,GAAG,WAAW,CAAA;IAE3B,OAAO,CAAM;IACb,EAAE,CAAiB;IACnB,GAAG,CAAS;IACZ,OAAO,CAAe;IACtB,KAAK,CAAe;IACpB,QAAQ,CAAe;IACvB,OAAO,CAAe;IAE9B,YAAY,KAAc,EAAE,GAAiB;QAC3C,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAEjB,0CAA0C;QAC1C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAE7B,oBAAoB;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAA;QACzB,IAAI,CAAC,YAAY,EAAE,CAAA;QAEnB,8BAA8B;QAC9B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAEvC,6BAA6B;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAA;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;QAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;QACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAA;QAElD,sDAAsD;QACtD,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;IACvC,CAAC;IAED;;OAEG;IACH,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,EAAE,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,8EAA8E;IAC9E,oBAAoB;IACpB,8EAA8E;IAE9E;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,OAA0B;QACzC,yBAAyB;QACzB,IAAI,GAAQ,CAAA;QACZ,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;QACzD,CAAC;QAED,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE,CAAA;QACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QAExB,+BAA+B;QAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;QAE9C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QACxD,CAAC;QAED,8DAA8D;QAC9D,wDAAwD;QACxD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAA;QAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,8CAA8C;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,SAAS,EAAE,EAAE;gBACvD,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,SAAS;aACnB,CAAC,CAAA;YACF,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,EAAE,EAAE;gBACxD,MAAM,EAAE,YAAY;gBACpB,SAAS;gBACT,EAAE,EAAE,OAAO,CAAC,EAAE;aACf,CAAC,CAAA;YACF,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,SAAS,EAAE,EAAE;gBACvD,KAAK,EAAE,kBAAkB;gBACzB,SAAS;gBACT,EAAE,EAAE,OAAO,CAAC,EAAE;aACf,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,OAAoB;QAC7B,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;QACpD,CAAC;QAED,gCAAgC;QAChC,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;QAC3D,CAAC;QAED,kCAAkC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,CAAA;QACtE,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAEzF,wDAAwD;QACxD,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACtC,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,uBAAuB,EAAE;gBACxD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,MAAM,EAAE,IAAI,CAAC,GAAG;oBAChB,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB,CAAC;aACH,CAAC,CAAC,CAAA;QACL,CAAC;QAED,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO;SACd,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACvD,CAAC;QAED,uCAAuC;QACvC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;QACvE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;QACzE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;QAEvE,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAA;QACvE,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QACvC,CAAC;QAED,kDAAkD;QAClD,OAAO;YACL,eAAe,EAAE,UAAU,CAAC,IAAI;YAChC,eAAe,EAAE,WAAW,CAAC,IAAI;YACjC,cAAc,EAAE,UAAU,CAAC,IAAI;SAChC,CAAA;IACH,CAAC;IAED,8EAA8E;IAC9E,2BAA2B;IAC3B,8EAA8E;IAE9E;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,OAAgB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,4CAA4C;IAC9C,CAAC;IAED,8EAA8E;IAC9E,iBAAiB;IACjB,8EAA8E;IAE9E;;OAEG;IACH,UAAU,CAAe,IAAY;QACnC,OAAO;YACL,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,IAAI,EAAE,CAAC;YAClD,IAAI,EAAE,IAAI;SACX,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,4BAA4B;QAC5B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3B,OAAO;YACL,GAAG;YACH,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,QAAQ;SACtB,CAAA;IACH,CAAC;IAED,8EAA8E;IAC9E,kBAAkB;IAClB,8EAA8E;IAEtE,YAAY;QAClB,wBAAwB;QACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YAChC,OAAO,CAAC,CAAC,IAAI,CAAC;gBACZ,MAAM,EAAE,IAAI;gBACZ,EAAE,EAAE,IAAI,CAAC,GAAG;gBACZ,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,2BAA2B;QAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;YAC/B,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;YAC3D,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,sBAAsB;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAA;QAEjB,+CAA+C;QAC/C,MAAM,OAAO,GAAoB;YAC/B,kBAAkB;YAClB,IAAI,CAAC,KAAa,EAAE,IAAc;gBAChC,mCAAmC;gBACnC,IAAI,CAAC,KAAK,CAAC,SAAS,CAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CACjE,CAAA;YACH,CAAC;YAED,wCAAwC;YACxC,KAAK,CAAC,GAAG,CAAI,MAAc,EAAE,IAAc;gBACzC,0BAA0B;gBAC1B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAO,CAAA;YAC7C,CAAC;YAED,iCAAiC;YACjC,KAAK,CAAC,EAAE,CAAI,MAAc,EAAE,IAAc;gBACxC,8BAA8B;gBAC9B,MAAM,QAAQ,GAAG,UAAU,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;gBACvC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;gBAE3E,4BAA4B;gBAC5B,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAO,CAAA;gBACnD,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;gBAErF,OAAO,MAAM,CAAA;YACf,CAAC;YAED,sBAAsB;YACtB,EAAE,EAAE,IAAI,KAAK,CAAC,EAAgE,EAAE;gBAC9E,GAAG,CAAC,OAAO,EAAE,IAAY;oBACvB,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE;wBACnB,GAAG,CAAC,EAAE,EAAE,IAAY;4BAClB,OAAO,CAAC,OAAgB,EAAE,EAAE;gCAC1B,yBAAyB;gCACzB,IAAI,CAAC,KAAK,CAAC,SAAS,CAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAChF,CAAA;4BACH,CAAC,CAAA;wBACH,CAAC;qBACF,CAAC,CAAA;gBACJ,CAAC;aACF,CAAC;YAEF,mBAAmB;YACnB,KAAK,EAAE,IAAI,KAAK,CAAC,EAA0E,EAAE;gBAC3F,GAAG,CAAC,OAAO,EAAE,QAAgB;oBAC3B,OAAO;wBACL,EAAE,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,OAAgB,EAAE,EAAE;4BACzC,6BAA6B;4BAC7B,IAAI,CAAC,KAAK,CAAC,SAAS,CAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,IAAI,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CACrF,CAAA;wBACH,CAAC;qBACF,CAAA;gBACH,CAAC;aACF,CAAC;YAEF,uBAAuB;YACvB,KAAK,CAAC,MAAM,CAAC,IAAY;gBACvB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,EAAE;oBACjD,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;oBACnB,IAAI,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;iBAC3C,CAAC,CAAA;YACJ,CAAC;YAED,KAAK,CAAC,QAAQ,CAAC,GAAW;gBACxB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;YAC3C,CAAC;YAED,KAAK,CAAC,KAAK,CAAC,MAAc;gBACxB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,EAAE,CAAC,CAAA;gBACvE,IAAI,UAAU,EAAE,CAAC;oBACf,oCAAoC;oBACpC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;gBAClD,CAAC;YACH,CAAC;SACF,CAAA;QAED,0CAA0C;QAC1C,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;YACxB,GAAG,CAAC,MAAM,EAAE,IAAY;gBACtB,mCAAmC;gBACnC,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;oBACnB,OAAO,MAAM,CAAC,IAA6B,CAAC,CAAA;gBAC9C,CAAC;gBAED,2DAA2D;gBAC3D,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;oBACpD,OAAO,CAAC,EAAU,EAAE,EAAE;wBACpB,mDAAmD;wBACnD,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE;4BACnB,GAAG,CAAC,EAAE,EAAE,MAAc;gCACpB,OAAO,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;oCAClC,0DAA0D;oCAC1D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gCAC3C,CAAC,CAAA;4BACH,CAAC;yBACF,CAAC,CAAA;oBACJ,CAAC,CAAA;gBACH,CAAC;gBAED,OAAO,SAAS,CAAA;YAClB,CAAC;SACF,CAAC,CAAA;IACJ,CAAC;IAEO,oBAAoB,CAAC,MAAc;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAA;QAElC,OAAO;YACL,KAAK,CAAC,GAAG,CAAC,EAAU;gBAClB,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,EAAE,EAAE,CAAC,CAAA;YACvC,CAAC;YAED,KAAK,CAAC,GAAG,CAAC,EAAU,EAAE,KAAc;gBAClC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;YAC7C,CAAC;YAED,KAAK,CAAC,MAAM,CAAC,EAAU;gBACrB,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,EAAE,EAAE,CAAC,CAAA;YAC1C,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,OAA6B;gBACtC,MAAM,UAAU,GAAG,OAAO,EAAE,MAAM;oBAChC,CAAC,CAAC,GAAG,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;oBAC/B,CAAC,CAAC,GAAG,MAAM,GAAG,CAAA;gBAChB,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;YAC7C,CAAC;SACF,CAAA;IACH,CAAC;;AAGH,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,sDAAsD;IACtD,MAAM,SAAS,GAAG,KAAgC,CAAA;IAElD,OAAO,CACL,SAAS,CAAC,KAAK,KAAK,WAAW;QAC/B,OAAO,SAAS,CAAC,aAAa,KAAK,UAAU;QAC5C,SAAkC,CAAC,aAAa,CAAC,KAAK,CAAC,CACzD,CAAA;AACH,CAAC"}