@aigne/afs-git 1.11.0-beta.5 → 1.11.0-beta.7
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/_virtual/_@oxc-project_runtime@0.108.0/helpers/decorate.cjs +11 -0
- package/dist/_virtual/_@oxc-project_runtime@0.108.0/helpers/decorate.mjs +10 -0
- package/dist/index.cjs +1191 -307
- package/dist/index.d.cts +323 -97
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +323 -97
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1190 -308
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -3
package/dist/index.d.mts
CHANGED
|
@@ -1,76 +1,77 @@
|
|
|
1
|
+
import { AFSAccessMode, AFSEntry, AFSExecResult, AFSExplainResult, AFSListResult, AFSModuleLoadParams, AFSSearchOptions, AFSStatResult, AFSWriteEntryPayload } 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
8
|
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
+
*/
|
|
12
13
|
repoPath?: string;
|
|
13
14
|
/**
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
+
*/
|
|
20
21
|
remoteUrl?: string;
|
|
21
22
|
description?: string;
|
|
22
23
|
/**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
+
*/
|
|
29
30
|
branches?: string[];
|
|
30
31
|
/**
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
+
*/
|
|
36
37
|
accessMode?: AFSAccessMode;
|
|
37
38
|
/**
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
* Automatically commit changes after write operations
|
|
40
|
+
* @default false
|
|
41
|
+
*/
|
|
41
42
|
autoCommit?: boolean;
|
|
42
43
|
/**
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
* Author information for commits when autoCommit is enabled
|
|
45
|
+
*/
|
|
45
46
|
commitAuthor?: {
|
|
46
47
|
name: string;
|
|
47
48
|
email: string;
|
|
48
49
|
};
|
|
49
50
|
/**
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
* Clone depth for shallow clone (only used when cloning from remoteUrl)
|
|
52
|
+
* @default 1
|
|
53
|
+
*/
|
|
53
54
|
depth?: number;
|
|
54
55
|
/**
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
* Automatically clean up cloned repository on cleanup()
|
|
57
|
+
* Only applies when repository was auto-cloned to temp directory
|
|
58
|
+
* @default true
|
|
59
|
+
*/
|
|
59
60
|
autoCleanup?: boolean;
|
|
60
61
|
/**
|
|
61
|
-
|
|
62
|
-
|
|
62
|
+
* Git clone options (only used when cloning from remoteUrl)
|
|
63
|
+
*/
|
|
63
64
|
cloneOptions?: {
|
|
64
65
|
/**
|
|
65
|
-
|
|
66
|
-
|
|
66
|
+
* Authentication credentials for private repositories
|
|
67
|
+
*/
|
|
67
68
|
auth?: {
|
|
68
69
|
username?: string;
|
|
69
70
|
password?: string;
|
|
70
71
|
};
|
|
71
72
|
};
|
|
72
73
|
}
|
|
73
|
-
declare class AFSGit
|
|
74
|
+
declare class AFSGit extends AFSBaseProvider {
|
|
74
75
|
options: AFSGitOptions & {
|
|
75
76
|
cwd?: string;
|
|
76
77
|
};
|
|
@@ -204,9 +205,12 @@ declare class AFSGit implements AFSModule {
|
|
|
204
205
|
} | undefined;
|
|
205
206
|
}, any>;
|
|
206
207
|
static load({
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
}
|
|
208
|
+
basePath,
|
|
209
|
+
config
|
|
210
|
+
}?: AFSModuleLoadParams): Promise<AFSGit>;
|
|
211
|
+
readonly name: string;
|
|
212
|
+
readonly description?: string;
|
|
213
|
+
readonly accessMode: AFSAccessMode;
|
|
210
214
|
private initPromise;
|
|
211
215
|
private git;
|
|
212
216
|
private tempBase;
|
|
@@ -219,83 +223,305 @@ declare class AFSGit implements AFSModule {
|
|
|
219
223
|
cwd?: string;
|
|
220
224
|
});
|
|
221
225
|
/**
|
|
222
|
-
|
|
223
|
-
|
|
226
|
+
* Wait for async initialization to complete
|
|
227
|
+
*/
|
|
224
228
|
ready(): Promise<void>;
|
|
225
229
|
/**
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
230
|
+
* Async initialization logic (runs in constructor)
|
|
231
|
+
* Handles cloning remote repositories if needed
|
|
232
|
+
*/
|
|
229
233
|
private initialize;
|
|
230
234
|
/**
|
|
231
|
-
|
|
232
|
-
|
|
235
|
+
* Clone a remote repository to local path
|
|
236
|
+
*/
|
|
233
237
|
private static cloneRepository;
|
|
234
|
-
name: string;
|
|
235
|
-
description?: string;
|
|
236
|
-
accessMode: AFSAccessMode;
|
|
237
|
-
/**
|
|
238
|
-
* Parse AFS path into branch and file path
|
|
239
|
-
* Branch names may contain slashes and are encoded with ~ in paths
|
|
240
|
-
* Examples:
|
|
241
|
-
* "/" -> { branch: undefined, filePath: "" }
|
|
242
|
-
* "/main" -> { branch: "main", filePath: "" }
|
|
243
|
-
* "/feature~new-feature" -> { branch: "feature/new-feature", filePath: "" }
|
|
244
|
-
* "/main/src/index.ts" -> { branch: "main", filePath: "src/index.ts" }
|
|
245
|
-
*/
|
|
246
|
-
private parsePath;
|
|
247
238
|
/**
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
239
|
+
* List root (branches)
|
|
240
|
+
* Note: list() returns only children (branches), never the path itself (per new semantics)
|
|
241
|
+
*/
|
|
242
|
+
listRootHandler(ctx: RouteContext): Promise<AFSListResult & {
|
|
243
|
+
noExpand?: string[];
|
|
244
|
+
}>;
|
|
251
245
|
/**
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
246
|
+
* List branch root (matches /main, /develop, etc.)
|
|
247
|
+
*/
|
|
248
|
+
listBranchRootHandler(ctx: RouteContext<{
|
|
249
|
+
branch: string;
|
|
250
|
+
}>): Promise<AFSListResult & {
|
|
251
|
+
noExpand?: string[];
|
|
252
|
+
}>;
|
|
253
|
+
/**
|
|
254
|
+
* List files in branch with subpath (matches /main/src, /main/src/foo, etc.)
|
|
255
|
+
*/
|
|
256
|
+
listBranchHandler(ctx: RouteContext<{
|
|
257
|
+
branch: string;
|
|
258
|
+
path: string;
|
|
259
|
+
}>): Promise<AFSListResult & {
|
|
260
|
+
noExpand?: string[];
|
|
261
|
+
}>;
|
|
262
|
+
/**
|
|
263
|
+
* Read root metadata (introspection only, read-only)
|
|
264
|
+
*/
|
|
265
|
+
readRootMetaHandler(_ctx: RouteContext): Promise<AFSEntry | undefined>;
|
|
266
|
+
/**
|
|
267
|
+
* Read branch root metadata (introspection only, read-only)
|
|
268
|
+
*/
|
|
269
|
+
readBranchMetaHandler(ctx: RouteContext<{
|
|
270
|
+
branch: string;
|
|
271
|
+
}>): Promise<AFSEntry | undefined>;
|
|
272
|
+
/**
|
|
273
|
+
* Read file or directory metadata in branch (introspection only, read-only)
|
|
274
|
+
*/
|
|
275
|
+
readPathMetaHandler(ctx: RouteContext<{
|
|
276
|
+
branch: string;
|
|
277
|
+
path: string;
|
|
278
|
+
}>): Promise<AFSEntry | undefined>;
|
|
279
|
+
/**
|
|
280
|
+
* Read root
|
|
281
|
+
*/
|
|
282
|
+
readRootHandler(_ctx: RouteContext): Promise<AFSEntry | undefined>;
|
|
283
|
+
/**
|
|
284
|
+
* Read branch root
|
|
285
|
+
*/
|
|
286
|
+
readBranchRootHandler(ctx: RouteContext<{
|
|
287
|
+
branch: string;
|
|
288
|
+
}>): Promise<AFSEntry | undefined>;
|
|
289
|
+
/**
|
|
290
|
+
* Read file or directory in branch
|
|
291
|
+
*/
|
|
292
|
+
readBranchHandler(ctx: RouteContext<{
|
|
293
|
+
branch: string;
|
|
294
|
+
path: string;
|
|
295
|
+
}>): Promise<AFSEntry | undefined>;
|
|
296
|
+
/**
|
|
297
|
+
* Write to root is not allowed
|
|
298
|
+
*/
|
|
299
|
+
writeRootHandler(): Promise<never>;
|
|
300
|
+
/**
|
|
301
|
+
* Write to branch root is not allowed
|
|
302
|
+
*/
|
|
303
|
+
writeBranchRootHandler(): Promise<never>;
|
|
304
|
+
/**
|
|
305
|
+
* Write file in branch
|
|
306
|
+
*/
|
|
307
|
+
writeHandler(ctx: RouteContext<{
|
|
308
|
+
branch: string;
|
|
309
|
+
path: string;
|
|
310
|
+
}>, payload: AFSWriteEntryPayload): Promise<{
|
|
311
|
+
data: AFSEntry;
|
|
312
|
+
}>;
|
|
313
|
+
/**
|
|
314
|
+
* Delete root is not allowed
|
|
315
|
+
*/
|
|
316
|
+
deleteRootHandler(): Promise<never>;
|
|
317
|
+
/**
|
|
318
|
+
* Delete branch root is not allowed
|
|
319
|
+
*/
|
|
320
|
+
deleteBranchRootHandler(ctx: RouteContext<{
|
|
321
|
+
branch: string;
|
|
322
|
+
}>): Promise<never>;
|
|
323
|
+
/**
|
|
324
|
+
* Delete file in branch
|
|
325
|
+
*/
|
|
326
|
+
deleteHandler(ctx: RouteContext<{
|
|
327
|
+
branch: string;
|
|
328
|
+
path: string;
|
|
329
|
+
}>): Promise<{
|
|
330
|
+
message: string;
|
|
331
|
+
}>;
|
|
332
|
+
/**
|
|
333
|
+
* Rename file in branch
|
|
334
|
+
*/
|
|
335
|
+
renameHandler(ctx: RouteContext<{
|
|
336
|
+
branch: string;
|
|
337
|
+
path: string;
|
|
338
|
+
}>, newPath: string): Promise<{
|
|
339
|
+
message: string;
|
|
340
|
+
}>;
|
|
341
|
+
/**
|
|
342
|
+
* Search files in branch root
|
|
343
|
+
*/
|
|
344
|
+
searchBranchRootHandler(ctx: RouteContext<{
|
|
345
|
+
branch: string;
|
|
346
|
+
}>, query: string, options?: AFSSearchOptions): Promise<{
|
|
347
|
+
data: AFSEntry[];
|
|
348
|
+
message?: string;
|
|
349
|
+
}>;
|
|
350
|
+
/**
|
|
351
|
+
* Search files in branch path
|
|
352
|
+
*/
|
|
353
|
+
searchHandler(ctx: RouteContext<{
|
|
354
|
+
branch: string;
|
|
355
|
+
path: string;
|
|
356
|
+
}>, query: string, options?: AFSSearchOptions): Promise<{
|
|
357
|
+
data: AFSEntry[];
|
|
358
|
+
message?: string;
|
|
359
|
+
}>;
|
|
255
360
|
/**
|
|
256
|
-
|
|
257
|
-
|
|
361
|
+
* Internal search implementation
|
|
362
|
+
*/
|
|
363
|
+
private searchInBranch;
|
|
364
|
+
/**
|
|
365
|
+
* Stat root
|
|
366
|
+
*/
|
|
367
|
+
statRootHandler(_ctx: RouteContext): Promise<AFSStatResult>;
|
|
368
|
+
/**
|
|
369
|
+
* Stat branch root
|
|
370
|
+
*/
|
|
371
|
+
statBranchRootHandler(ctx: RouteContext<{
|
|
372
|
+
branch: string;
|
|
373
|
+
}>): Promise<AFSStatResult>;
|
|
374
|
+
/**
|
|
375
|
+
* Stat file or directory in branch
|
|
376
|
+
*/
|
|
377
|
+
statHandler(ctx: RouteContext<{
|
|
378
|
+
branch: string;
|
|
379
|
+
path: string;
|
|
380
|
+
}>): Promise<AFSStatResult>;
|
|
381
|
+
/**
|
|
382
|
+
* Explain root → repo info, branch list, default branch
|
|
383
|
+
*/
|
|
384
|
+
explainRootHandler(_ctx: RouteContext): Promise<AFSExplainResult>;
|
|
385
|
+
/**
|
|
386
|
+
* Explain branch → branch name, HEAD commit, file count
|
|
387
|
+
*/
|
|
388
|
+
explainBranchHandler(ctx: RouteContext<{
|
|
389
|
+
branch: string;
|
|
390
|
+
}>): Promise<AFSExplainResult>;
|
|
391
|
+
/**
|
|
392
|
+
* Explain file or directory → path, size, last modified commit
|
|
393
|
+
*/
|
|
394
|
+
explainPathHandler(ctx: RouteContext<{
|
|
395
|
+
branch: string;
|
|
396
|
+
path: string;
|
|
397
|
+
}>): Promise<AFSExplainResult>;
|
|
398
|
+
readCapabilitiesHandler(_ctx: RouteContext): Promise<AFSEntry | undefined>;
|
|
399
|
+
/**
|
|
400
|
+
* List available actions for a branch
|
|
401
|
+
*/
|
|
402
|
+
listBranchActions(ctx: RouteContext<{
|
|
403
|
+
branch: string;
|
|
404
|
+
}>): Promise<AFSListResult>;
|
|
405
|
+
/**
|
|
406
|
+
* diff action — compare two branches or refs
|
|
407
|
+
*/
|
|
408
|
+
diffAction(_ctx: RouteContext<{
|
|
409
|
+
branch: string;
|
|
410
|
+
}>, args: Record<string, unknown>): Promise<AFSExecResult>;
|
|
411
|
+
/**
|
|
412
|
+
* create-branch action — create a new branch
|
|
413
|
+
*/
|
|
414
|
+
createBranchAction(_ctx: RouteContext<{
|
|
415
|
+
branch: string;
|
|
416
|
+
}>, args: Record<string, unknown>): Promise<AFSExecResult>;
|
|
417
|
+
/**
|
|
418
|
+
* commit action — commit staged changes
|
|
419
|
+
*/
|
|
420
|
+
commitAction(_ctx: RouteContext<{
|
|
421
|
+
branch: string;
|
|
422
|
+
}>, args: Record<string, unknown>): Promise<AFSExecResult>;
|
|
423
|
+
/**
|
|
424
|
+
* merge action — merge a branch into current branch
|
|
425
|
+
*/
|
|
426
|
+
mergeAction(_ctx: RouteContext<{
|
|
427
|
+
branch: string;
|
|
428
|
+
}>, args: Record<string, unknown>): Promise<AFSExecResult>;
|
|
429
|
+
/**
|
|
430
|
+
* List .log/ → commit list with pagination
|
|
431
|
+
*/
|
|
432
|
+
listLogHandler(ctx: RouteContext<{
|
|
433
|
+
branch: string;
|
|
434
|
+
}>): Promise<AFSListResult>;
|
|
435
|
+
/**
|
|
436
|
+
* Read .log/{index} → commit diff/patch content
|
|
437
|
+
*/
|
|
438
|
+
readLogEntryHandler(ctx: RouteContext<{
|
|
439
|
+
branch: string;
|
|
440
|
+
index: string;
|
|
441
|
+
}>): Promise<AFSEntry | undefined>;
|
|
442
|
+
/**
|
|
443
|
+
* Read .log/{index}/.meta → commit metadata only (no diff)
|
|
444
|
+
*/
|
|
445
|
+
readLogEntryMetaHandler(ctx: RouteContext<{
|
|
446
|
+
branch: string;
|
|
447
|
+
index: string;
|
|
448
|
+
}>): Promise<AFSEntry | undefined>;
|
|
449
|
+
/**
|
|
450
|
+
* Decode branch name (replace ~ with /)
|
|
451
|
+
*/
|
|
452
|
+
private decodeBranchName;
|
|
453
|
+
/**
|
|
454
|
+
* Encode branch name (replace / with ~)
|
|
455
|
+
*/
|
|
456
|
+
private encodeBranchName;
|
|
457
|
+
/**
|
|
458
|
+
* Parse AFS path into branch and file path
|
|
459
|
+
* Branch names may contain slashes and are encoded with ~ in paths
|
|
460
|
+
*/
|
|
461
|
+
private parsePath;
|
|
462
|
+
/**
|
|
463
|
+
* Build AFS path with encoded branch name
|
|
464
|
+
* Branch names with slashes are encoded by replacing / with ~
|
|
465
|
+
*/
|
|
466
|
+
private buildBranchPath;
|
|
467
|
+
/**
|
|
468
|
+
* Get list of available branches
|
|
469
|
+
*/
|
|
258
470
|
private getBranches;
|
|
259
471
|
/**
|
|
260
|
-
|
|
261
|
-
|
|
472
|
+
* Check if a branch exists, throw AFSNotFoundError if not
|
|
473
|
+
*/
|
|
474
|
+
private ensureBranchExists;
|
|
475
|
+
/**
|
|
476
|
+
* Get the number of children for a tree (directory) in git
|
|
477
|
+
*/
|
|
478
|
+
private getChildrenCount;
|
|
479
|
+
/**
|
|
480
|
+
* Get the last commit on a branch
|
|
481
|
+
*/
|
|
482
|
+
private getLastCommit;
|
|
483
|
+
/**
|
|
484
|
+
* Count total files in a tree (recursively)
|
|
485
|
+
*/
|
|
486
|
+
private getTreeFileCount;
|
|
487
|
+
/**
|
|
488
|
+
* Get a list of commits on a branch with limit/offset
|
|
489
|
+
*/
|
|
490
|
+
private getCommitList;
|
|
491
|
+
/**
|
|
492
|
+
* Ensure worktree exists for a branch (lazy creation)
|
|
493
|
+
*/
|
|
262
494
|
private ensureWorktree;
|
|
263
495
|
/**
|
|
264
|
-
|
|
265
|
-
|
|
496
|
+
* List files using git ls-tree (no worktree needed)
|
|
497
|
+
* Note: list() returns only children, never the path itself (per new semantics)
|
|
498
|
+
*/
|
|
266
499
|
private listWithGitLsTree;
|
|
267
500
|
/**
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
read(path: string, _options?: AFSReadOptions): Promise<AFSReadResult>;
|
|
276
|
-
write(path: string, entry: AFSWriteEntryPayload, options?: AFSWriteOptions): Promise<AFSWriteResult>;
|
|
277
|
-
delete(path: string, options?: AFSDeleteOptions): Promise<AFSDeleteResult>;
|
|
278
|
-
rename(oldPath: string, newPath: string, options?: AFSRenameOptions): Promise<{
|
|
279
|
-
message?: string;
|
|
280
|
-
}>;
|
|
281
|
-
search(path: string, query: string, options?: AFSSearchOptions): Promise<AFSSearchResult>;
|
|
501
|
+
* Detect MIME type based on file extension
|
|
502
|
+
*/
|
|
503
|
+
private getMimeType;
|
|
504
|
+
/**
|
|
505
|
+
* Check if file is likely binary based on extension
|
|
506
|
+
*/
|
|
507
|
+
private isBinaryFile;
|
|
282
508
|
/**
|
|
283
|
-
|
|
284
|
-
|
|
509
|
+
* Fetch latest changes from remote
|
|
510
|
+
*/
|
|
285
511
|
fetch(): Promise<void>;
|
|
286
512
|
/**
|
|
287
|
-
|
|
288
|
-
|
|
513
|
+
* Pull latest changes from remote for current branch
|
|
514
|
+
*/
|
|
289
515
|
pull(): Promise<void>;
|
|
290
516
|
/**
|
|
291
|
-
|
|
292
|
-
|
|
517
|
+
* Push local changes to remote
|
|
518
|
+
*/
|
|
293
519
|
push(branch?: string): Promise<void>;
|
|
294
520
|
/**
|
|
295
|
-
|
|
296
|
-
|
|
521
|
+
* Cleanup all worktrees (useful when unmounting)
|
|
522
|
+
*/
|
|
297
523
|
cleanup(): Promise<void>;
|
|
298
524
|
}
|
|
299
525
|
//#endregion
|
|
300
|
-
export { AFSGit, AFSGitOptions };
|
|
526
|
+
export { AFSGit, AFSGit as default, AFSGitOptions };
|
|
301
527
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"mappings":"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"}
|