@aigne/afs-git 1.11.0-beta → 1.11.0-beta.10

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.
package/dist/index.d.mts CHANGED
@@ -1,148 +1,446 @@
1
+ import { AFSAccessMode, AFSEntry, AFSExecResult, AFSExplainResult, AFSListResult, AFSModuleLoadParams, AFSSearchOptions, AFSStatResult, AFSWriteEntryPayload, ProviderManifest } from "@aigne/afs";
2
+ import { AFSBaseProvider, RouteContext } from "@aigne/afs/provider";
1
3
  import { z } from "zod";
2
- import { AFSAccessMode, AFSDeleteOptions, AFSDeleteResult, AFSListOptions, AFSListResult, AFSModule, AFSModuleLoadParams, AFSReadOptions, AFSReadResult, AFSRenameOptions, AFSSearchOptions, AFSSearchResult, AFSWriteEntryPayload, AFSWriteOptions, AFSWriteResult } from "@aigne/afs";
3
4
 
4
5
  //#region src/index.d.ts
5
6
  interface AFSGitOptions {
6
7
  name?: string;
7
- repoPath: string;
8
+ /**
9
+ * Local path to git repository.
10
+ * If remoteUrl is provided and repoPath doesn't exist, will clone to this path.
11
+ * If remoteUrl is provided and repoPath is not specified, clones to temp directory.
12
+ */
13
+ repoPath?: string;
14
+ /**
15
+ * Remote repository URL (https or git protocol).
16
+ * If provided, will clone the repository if repoPath doesn't exist.
17
+ * Examples:
18
+ * - https://github.com/user/repo.git
19
+ * - git@github.com:user/repo.git
20
+ */
21
+ remoteUrl?: string;
8
22
  description?: string;
23
+ /**
24
+ * List of branches to expose/access.
25
+ * Also used for clone optimization when cloning from remoteUrl:
26
+ * - Single branch (e.g., ['main']): Uses --single-branch for faster clone
27
+ * - Multiple branches: Clones all branches, filters access to specified ones
28
+ * - Not specified: All branches are accessible
29
+ */
9
30
  branches?: string[];
10
31
  /**
11
- * Access mode for this module.
12
- * - "readonly": Only read operations are allowed, uses git commands (no worktree)
13
- * - "readwrite": All operations are allowed, creates worktrees as needed
14
- * @default "readonly"
15
- */
32
+ * Access mode for this module.
33
+ * - "readonly": Only read operations are allowed, uses git commands (no worktree)
34
+ * - "readwrite": All operations are allowed, creates worktrees as needed
35
+ * @default "readonly"
36
+ */
16
37
  accessMode?: AFSAccessMode;
17
38
  /**
18
- * Automatically commit changes after write operations
19
- * @default false
20
- */
39
+ * Automatically commit changes after write operations
40
+ * @default false
41
+ */
21
42
  autoCommit?: boolean;
22
43
  /**
23
- * Author information for commits when autoCommit is enabled
24
- */
44
+ * Author information for commits when autoCommit is enabled
45
+ */
25
46
  commitAuthor?: {
26
47
  name: string;
27
48
  email: string;
28
49
  };
50
+ /**
51
+ * Clone depth for shallow clone (only used when cloning from remoteUrl)
52
+ * @default 1
53
+ */
54
+ depth?: number;
55
+ /**
56
+ * Automatically clean up cloned repository on cleanup()
57
+ * Only applies when repository was auto-cloned to temp directory
58
+ * @default true
59
+ */
60
+ autoCleanup?: boolean;
61
+ /**
62
+ * Git clone options (only used when cloning from remoteUrl)
63
+ */
64
+ cloneOptions?: {
65
+ /**
66
+ * Authentication credentials for private repositories
67
+ */
68
+ auth?: {
69
+ username?: string;
70
+ password?: string;
71
+ };
72
+ };
29
73
  }
30
- declare class AFSGit implements AFSModule {
74
+ declare class AFSGit extends AFSBaseProvider {
31
75
  options: AFSGitOptions & {
32
76
  cwd?: string;
77
+ localPath?: string;
78
+ branch?: string;
79
+ uri?: string;
33
80
  };
34
- static schema(): z.ZodEffects<z.ZodObject<{
35
- name: z.ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
36
- repoPath: z.ZodString;
37
- description: z.ZodType<string | undefined, z.ZodTypeDef, string | undefined>;
38
- branches: z.ZodType<string[] | undefined, z.ZodTypeDef, string[] | undefined>;
39
- accessMode: z.ZodType<"readonly" | "readwrite" | undefined, z.ZodTypeDef, "readonly" | "readwrite" | undefined>;
40
- autoCommit: z.ZodType<boolean | undefined, z.ZodTypeDef, boolean | undefined>;
41
- commitAuthor: z.ZodType<{
42
- name: string;
43
- email: string;
44
- } | undefined, z.ZodTypeDef, {
45
- name: string;
46
- email: string;
47
- } | undefined>;
48
- }, "strip", z.ZodTypeAny, {
49
- repoPath: string;
50
- name?: string | undefined;
51
- description?: string | undefined;
52
- branches?: string[] | undefined;
53
- accessMode?: "readonly" | "readwrite" | undefined;
54
- autoCommit?: boolean | undefined;
55
- commitAuthor?: {
81
+ static schema(): z.ZodType<{
82
+ name: string | undefined;
83
+ repoPath: string | undefined;
84
+ remoteUrl: string | undefined;
85
+ description: string | undefined;
86
+ branches: string[] | undefined;
87
+ accessMode: "readonly" | "readwrite" | undefined;
88
+ autoCommit: boolean | undefined;
89
+ commitAuthor: {
56
90
  name: string;
57
91
  email: string;
58
92
  } | undefined;
59
- }, {
60
- repoPath: string;
61
- name?: string | undefined;
62
- description?: string | undefined;
63
- branches?: string[] | undefined;
64
- accessMode?: "readonly" | "readwrite" | undefined;
65
- autoCommit?: boolean | undefined;
66
- commitAuthor?: {
67
- name: string;
68
- email: string;
93
+ depth: number | undefined;
94
+ autoCleanup: boolean | undefined;
95
+ cloneOptions: {
96
+ auth: {
97
+ username: string | undefined;
98
+ password: string | undefined;
99
+ } | undefined;
69
100
  } | undefined;
70
- }>, {
71
- repoPath: string;
72
- name?: string | undefined;
73
- description?: string | undefined;
74
- branches?: string[] | undefined;
75
- accessMode?: "readonly" | "readwrite" | undefined;
76
- autoCommit?: boolean | undefined;
77
- commitAuthor?: {
101
+ }, unknown, z.core.$ZodTypeInternals<{
102
+ name: string | undefined;
103
+ repoPath: string | undefined;
104
+ remoteUrl: string | undefined;
105
+ description: string | undefined;
106
+ branches: string[] | undefined;
107
+ accessMode: "readonly" | "readwrite" | undefined;
108
+ autoCommit: boolean | undefined;
109
+ commitAuthor: {
78
110
  name: string;
79
111
  email: string;
80
112
  } | undefined;
81
- }, any>;
113
+ depth: number | undefined;
114
+ autoCleanup: boolean | undefined;
115
+ cloneOptions: {
116
+ auth: {
117
+ username: string | undefined;
118
+ password: string | undefined;
119
+ } | undefined;
120
+ } | undefined;
121
+ }, unknown>>;
122
+ static manifest(): ProviderManifest;
82
123
  static load({
83
- filepath,
84
- parsed
85
- }: AFSModuleLoadParams): Promise<AFSGit>;
124
+ basePath,
125
+ config
126
+ }?: AFSModuleLoadParams): Promise<AFSGit>;
127
+ readonly name: string;
128
+ readonly description?: string;
129
+ readonly accessMode: AFSAccessMode;
130
+ private initPromise;
86
131
  private git;
87
132
  private tempBase;
88
133
  private worktrees;
89
134
  private repoHash;
135
+ private isAutoCloned;
136
+ private clonedPath?;
137
+ private repoPath;
90
138
  constructor(options: AFSGitOptions & {
91
139
  cwd?: string;
140
+ localPath?: string;
141
+ branch?: string;
142
+ uri?: string;
92
143
  });
93
- name: string;
94
- description?: string;
95
- accessMode: AFSAccessMode;
96
- /**
97
- * Parse AFS path into branch and file path
98
- * Branch names may contain slashes and are encoded with ~ in paths
99
- * Examples:
100
- * "/" -> { branch: undefined, filePath: "" }
101
- * "/main" -> { branch: "main", filePath: "" }
102
- * "/feature~new-feature" -> { branch: "feature/new-feature", filePath: "" }
103
- * "/main/src/index.ts" -> { branch: "main", filePath: "src/index.ts" }
104
- */
105
- private parsePath;
106
144
  /**
107
- * Detect MIME type based on file extension
108
- */
109
- private getMimeType;
145
+ * Wait for async initialization to complete
146
+ */
147
+ ready(): Promise<void>;
110
148
  /**
111
- * Check if file is likely binary based on extension
112
- */
113
- private isBinaryFile;
149
+ * Async initialization logic (runs in constructor)
150
+ * Handles cloning remote repositories if needed
151
+ */
152
+ private initialize;
153
+ /**
154
+ * Clone a remote repository to local path
155
+ */
156
+ private static cloneRepository;
157
+ /**
158
+ * List root (branches)
159
+ * Note: list() returns only children (branches), never the path itself (per new semantics)
160
+ */
161
+ listRootHandler(ctx: RouteContext): Promise<AFSListResult & {
162
+ noExpand?: string[];
163
+ }>;
164
+ /**
165
+ * List branch root (matches /main, /develop, etc.)
166
+ */
167
+ listBranchRootHandler(ctx: RouteContext<{
168
+ branch: string;
169
+ }>): Promise<AFSListResult & {
170
+ noExpand?: string[];
171
+ }>;
172
+ /**
173
+ * List files in branch with subpath (matches /main/src, /main/src/foo, etc.)
174
+ */
175
+ listBranchHandler(ctx: RouteContext<{
176
+ branch: string;
177
+ path: string;
178
+ }>): Promise<AFSListResult & {
179
+ noExpand?: string[];
180
+ }>;
181
+ /**
182
+ * Read root metadata (introspection only, read-only)
183
+ */
184
+ readRootMetaHandler(_ctx: RouteContext): Promise<AFSEntry | undefined>;
185
+ /**
186
+ * Read branch root metadata (introspection only, read-only)
187
+ */
188
+ readBranchMetaHandler(ctx: RouteContext<{
189
+ branch: string;
190
+ }>): Promise<AFSEntry | undefined>;
191
+ /**
192
+ * Read file or directory metadata in branch (introspection only, read-only)
193
+ */
194
+ readPathMetaHandler(ctx: RouteContext<{
195
+ branch: string;
196
+ path: string;
197
+ }>): Promise<AFSEntry | undefined>;
198
+ /**
199
+ * Read root
200
+ */
201
+ readRootHandler(_ctx: RouteContext): Promise<AFSEntry | undefined>;
202
+ /**
203
+ * Read branch root
204
+ */
205
+ readBranchRootHandler(ctx: RouteContext<{
206
+ branch: string;
207
+ }>): Promise<AFSEntry | undefined>;
208
+ /**
209
+ * Read file or directory in branch
210
+ */
211
+ readBranchHandler(ctx: RouteContext<{
212
+ branch: string;
213
+ path: string;
214
+ }>): Promise<AFSEntry | undefined>;
215
+ /**
216
+ * Write to root is not allowed
217
+ */
218
+ writeRootHandler(): Promise<never>;
219
+ /**
220
+ * Write to branch root is not allowed
221
+ */
222
+ writeBranchRootHandler(): Promise<never>;
223
+ /**
224
+ * Write file in branch
225
+ */
226
+ writeHandler(ctx: RouteContext<{
227
+ branch: string;
228
+ path: string;
229
+ }>, payload: AFSWriteEntryPayload): Promise<{
230
+ data: AFSEntry;
231
+ }>;
232
+ /**
233
+ * Delete root is not allowed
234
+ */
235
+ deleteRootHandler(): Promise<never>;
236
+ /**
237
+ * Delete branch root is not allowed
238
+ */
239
+ deleteBranchRootHandler(ctx: RouteContext<{
240
+ branch: string;
241
+ }>): Promise<never>;
242
+ /**
243
+ * Delete file in branch
244
+ */
245
+ deleteHandler(ctx: RouteContext<{
246
+ branch: string;
247
+ path: string;
248
+ }>): Promise<{
249
+ message: string;
250
+ }>;
251
+ /**
252
+ * Rename file in branch
253
+ */
254
+ renameHandler(ctx: RouteContext<{
255
+ branch: string;
256
+ path: string;
257
+ }>, newPath: string): Promise<{
258
+ message: string;
259
+ }>;
260
+ /**
261
+ * Search files in branch root
262
+ */
263
+ searchBranchRootHandler(ctx: RouteContext<{
264
+ branch: string;
265
+ }>, query: string, options?: AFSSearchOptions): Promise<{
266
+ data: AFSEntry[];
267
+ message?: string;
268
+ }>;
269
+ /**
270
+ * Search files in branch path
271
+ */
272
+ searchHandler(ctx: RouteContext<{
273
+ branch: string;
274
+ path: string;
275
+ }>, query: string, options?: AFSSearchOptions): Promise<{
276
+ data: AFSEntry[];
277
+ message?: string;
278
+ }>;
279
+ /**
280
+ * Internal search implementation
281
+ */
282
+ private searchInBranch;
283
+ /**
284
+ * Stat root
285
+ */
286
+ statRootHandler(_ctx: RouteContext): Promise<AFSStatResult>;
287
+ /**
288
+ * Stat branch root
289
+ */
290
+ statBranchRootHandler(ctx: RouteContext<{
291
+ branch: string;
292
+ }>): Promise<AFSStatResult>;
293
+ /**
294
+ * Stat file or directory in branch
295
+ */
296
+ statHandler(ctx: RouteContext<{
297
+ branch: string;
298
+ path: string;
299
+ }>): Promise<AFSStatResult>;
300
+ /**
301
+ * Explain root → repo info, branch list, default branch
302
+ */
303
+ explainRootHandler(_ctx: RouteContext): Promise<AFSExplainResult>;
304
+ /**
305
+ * Explain branch → branch name, HEAD commit, file count
306
+ */
307
+ explainBranchHandler(ctx: RouteContext<{
308
+ branch: string;
309
+ }>): Promise<AFSExplainResult>;
310
+ /**
311
+ * Explain file or directory → path, size, last modified commit
312
+ */
313
+ explainPathHandler(ctx: RouteContext<{
314
+ branch: string;
315
+ path: string;
316
+ }>): Promise<AFSExplainResult>;
317
+ readCapabilitiesHandler(_ctx: RouteContext): Promise<AFSEntry | undefined>;
318
+ /**
319
+ * List available actions for a branch
320
+ */
321
+ listBranchActions(ctx: RouteContext<{
322
+ branch: string;
323
+ }>): Promise<AFSListResult>;
324
+ /**
325
+ * diff action — compare two branches or refs
326
+ */
327
+ diffAction(_ctx: RouteContext<{
328
+ branch: string;
329
+ }>, args: Record<string, unknown>): Promise<AFSExecResult>;
330
+ /**
331
+ * create-branch action — create a new branch
332
+ */
333
+ createBranchAction(_ctx: RouteContext<{
334
+ branch: string;
335
+ }>, args: Record<string, unknown>): Promise<AFSExecResult>;
336
+ /**
337
+ * commit action — commit staged changes
338
+ */
339
+ commitAction(_ctx: RouteContext<{
340
+ branch: string;
341
+ }>, args: Record<string, unknown>): Promise<AFSExecResult>;
342
+ /**
343
+ * merge action — merge a branch into current branch
344
+ */
345
+ mergeAction(_ctx: RouteContext<{
346
+ branch: string;
347
+ }>, args: Record<string, unknown>): Promise<AFSExecResult>;
348
+ /**
349
+ * List .log/ → commit list with pagination
350
+ */
351
+ listLogHandler(ctx: RouteContext<{
352
+ branch: string;
353
+ }>): Promise<AFSListResult>;
114
354
  /**
115
- * Get list of available branches
116
- */
355
+ * Read .log/{index} commit diff/patch content
356
+ */
357
+ readLogEntryHandler(ctx: RouteContext<{
358
+ branch: string;
359
+ index: string;
360
+ }>): Promise<AFSEntry | undefined>;
361
+ /**
362
+ * Read .log/{index}/.meta → commit metadata only (no diff)
363
+ */
364
+ readLogEntryMetaHandler(ctx: RouteContext<{
365
+ branch: string;
366
+ index: string;
367
+ }>): Promise<AFSEntry | undefined>;
368
+ /**
369
+ * Decode branch name (replace ~ with /)
370
+ */
371
+ private decodeBranchName;
372
+ /**
373
+ * Encode branch name (replace / with ~)
374
+ */
375
+ private encodeBranchName;
376
+ /**
377
+ * Parse AFS path into branch and file path
378
+ * Branch names may contain slashes and are encoded with ~ in paths
379
+ */
380
+ private parsePath;
381
+ /**
382
+ * Build AFS path with encoded branch name
383
+ * Branch names with slashes are encoded by replacing / with ~
384
+ */
385
+ private buildBranchPath;
386
+ /**
387
+ * Get list of available branches
388
+ */
117
389
  private getBranches;
118
390
  /**
119
- * Ensure worktree exists for a branch (lazy creation)
120
- */
391
+ * Check if a branch exists, throw AFSNotFoundError if not
392
+ */
393
+ private ensureBranchExists;
394
+ /**
395
+ * Get the number of children for a tree (directory) in git
396
+ */
397
+ private getChildrenCount;
398
+ /**
399
+ * Get the last commit on a branch
400
+ */
401
+ private getLastCommit;
402
+ /**
403
+ * Count total files in a tree (recursively)
404
+ */
405
+ private getTreeFileCount;
406
+ /**
407
+ * Get a list of commits on a branch with limit/offset
408
+ */
409
+ private getCommitList;
410
+ /**
411
+ * Ensure worktree exists for a branch (lazy creation)
412
+ */
121
413
  private ensureWorktree;
122
414
  /**
123
- * List files using git ls-tree (no worktree needed)
124
- */
415
+ * List files using git ls-tree (no worktree needed)
416
+ * Note: list() returns only children, never the path itself (per new semantics)
417
+ */
125
418
  private listWithGitLsTree;
126
419
  /**
127
- * Build AFS path with encoded branch name
128
- * Branch names with slashes are encoded by replacing / with ~
129
- * @param branch Branch name (may contain slashes)
130
- * @param filePath File path within branch
131
- */
132
- private buildPath;
133
- list(path: string, options?: AFSListOptions): Promise<AFSListResult>;
134
- read(path: string, _options?: AFSReadOptions): Promise<AFSReadResult>;
135
- write(path: string, entry: AFSWriteEntryPayload, options?: AFSWriteOptions): Promise<AFSWriteResult>;
136
- delete(path: string, options?: AFSDeleteOptions): Promise<AFSDeleteResult>;
137
- rename(oldPath: string, newPath: string, options?: AFSRenameOptions): Promise<{
138
- message?: string;
139
- }>;
140
- search(path: string, query: string, options?: AFSSearchOptions): Promise<AFSSearchResult>;
420
+ * Detect MIME type based on file extension
421
+ */
422
+ private getMimeType;
423
+ /**
424
+ * Check if file is likely binary based on extension
425
+ */
426
+ private isBinaryFile;
427
+ /**
428
+ * Fetch latest changes from remote
429
+ */
430
+ fetch(): Promise<void>;
431
+ /**
432
+ * Pull latest changes from remote for current branch
433
+ */
434
+ pull(): Promise<void>;
435
+ /**
436
+ * Push local changes to remote
437
+ */
438
+ push(branch?: string): Promise<void>;
141
439
  /**
142
- * Cleanup all worktrees (useful when unmounting)
143
- */
440
+ * Cleanup all worktrees (useful when unmounting)
441
+ */
144
442
  cleanup(): Promise<void>;
145
443
  }
146
444
  //#endregion
147
- export { AFSGit, AFSGitOptions };
445
+ export { AFSGit, AFSGit as default, AFSGitOptions };
148
446
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"mappings":";;;;UAkCiB,aAAA;EAAA,IAAA;EAAA,QAAA;EAAA,WAAA;EAAA,QAAA;EAAA;AA+CjB;;;;;EA/CiB,UAAA,GAWF,aAAA;EAAA;AAoCf;;;EApCe,UAAA;EAAA;AAoCf;;EApCe,YAAA;IAAA,IAAA;IAAA,KAAA;EAAA;AAAA;AAAA,cAoCF,MAAA,YAAkB,SAAA;EAAA,OAAA,EAeD,aAAA;IAAA,GAAA;EAAA;EAAA,OAAA,OAAA,GAdf,CAAA,CAAA,UAAA,CAAA,CAAA,CAAA,SAAA;IAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAI2B,mBAAA,GAAmB,OAAA,CAAA,MAAA;EAAA,QAAA,GAAA;EAAA,QAAA,QAAA;EAAA,QAAA,SAAA;EAAA,QAAA,QAAA;EAAA,YAAA,OAAA,EAU/B,aAAA;IAAA,GAAA;EAAA;EAAA,IAAA;EAAA,WAAA;EAAA,UAAA,EAwBhB,aAAA;EAAA;;;;;;;;;EAAA,QAAA,SAAA;EAAA;;;EAAA,QAAA,WAAA;EAAA;;;EAAA,QAAA,YAAA;EAAA;;;EAAA,QAAA,WAAA;EAAA;;;EAAA,QAAA,cAAA;EAAA;;;EAAA,QAAA,iBAAA;EAAA;;;;;;EAAA,QAAA,SAAA;EAAA,KAAA,IAAA,UAAA,OAAA,GA8PuB,cAAA,GAAiB,OAAA,CAAQ,aAAA;EAAA,KAAA,IAAA,UAAA,QAAA,GAwBxB,cAAA,GAAiB,OAAA,CAAQ,aAAA;EAAA,MAAA,IAAA,UAAA,KAAA,EA+FpD,oBAAA,EAAA,OAAA,GACG,eAAA,GACT,OAAA,CAAQ,cAAA;EAAA,OAAA,IAAA,UAAA,OAAA,GA6E0B,gBAAA,GAAmB,OAAA,CAAQ,eAAA;EAAA,OAAA,OAAA,UAAA,OAAA,UAAA,OAAA,GAmDpD,gBAAA,GACT,OAAA;IAAA,OAAA;EAAA;EAAA,OAAA,IAAA,UAAA,KAAA,UAAA,OAAA,GAwEiD,gBAAA,GAAmB,OAAA,CAAQ,eAAA;EAAA;;;EAAA,QAAA,GAsF9D,OAAA;AAAA"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"mappings":"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"}