@mesadev/sdk 0.3.2 → 0.4.0

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 (105) hide show
  1. package/README.md +53 -13
  2. package/dist/api/client.d.ts +26 -0
  3. package/dist/api/client.d.ts.map +1 -0
  4. package/dist/api/client.js +40 -0
  5. package/dist/api/client.js.map +1 -0
  6. package/dist/api/index.d.ts +2 -0
  7. package/dist/api/index.d.ts.map +1 -0
  8. package/dist/api/index.js +2 -0
  9. package/dist/api/index.js.map +1 -0
  10. package/dist/api/resources.d.ts +134 -0
  11. package/dist/api/resources.d.ts.map +1 -0
  12. package/dist/api/resources.js +151 -0
  13. package/dist/api/resources.js.map +1 -0
  14. package/dist/fs/index.d.ts +2 -0
  15. package/dist/fs/index.d.ts.map +1 -0
  16. package/dist/fs/index.js +2 -0
  17. package/dist/fs/index.js.map +1 -0
  18. package/dist/fs/key-cleanup.d.ts +7 -0
  19. package/dist/fs/key-cleanup.d.ts.map +1 -0
  20. package/dist/fs/key-cleanup.js +70 -0
  21. package/dist/fs/key-cleanup.js.map +1 -0
  22. package/dist/fs/mesa-file-system.d.ts +65 -0
  23. package/dist/fs/mesa-file-system.d.ts.map +1 -0
  24. package/dist/fs/mesa-file-system.js +135 -0
  25. package/dist/fs/mesa-file-system.js.map +1 -0
  26. package/dist/fs/native-loader.d.ts +61 -0
  27. package/dist/fs/native-loader.d.ts.map +1 -0
  28. package/dist/fs/native-loader.js +94 -0
  29. package/dist/fs/native-loader.js.map +1 -0
  30. package/dist/git/index.d.ts +2 -0
  31. package/dist/git/index.d.ts.map +1 -0
  32. package/dist/git/index.js +2 -0
  33. package/dist/git/index.js.map +1 -0
  34. package/dist/git/path-utils.d.ts +4 -0
  35. package/dist/git/path-utils.d.ts.map +1 -0
  36. package/dist/git/path-utils.js +47 -0
  37. package/dist/git/path-utils.js.map +1 -0
  38. package/dist/git/service.d.ts +3 -0
  39. package/dist/git/service.d.ts.map +1 -0
  40. package/dist/git/service.js +308 -0
  41. package/dist/git/service.js.map +1 -0
  42. package/dist/git/types.d.ts +30 -0
  43. package/dist/git/types.d.ts.map +1 -0
  44. package/dist/git/types.js +2 -0
  45. package/dist/git/types.js.map +1 -0
  46. package/dist/index.d.ts +7 -1
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +5 -2
  49. package/dist/index.js.map +1 -0
  50. package/dist/lib/errors.d.ts +15 -0
  51. package/dist/lib/errors.d.ts.map +1 -0
  52. package/dist/lib/errors.js +27 -0
  53. package/dist/lib/errors.js.map +1 -0
  54. package/dist/mesa.d.ts +54 -0
  55. package/dist/mesa.d.ts.map +1 -0
  56. package/dist/mesa.js +155 -0
  57. package/dist/mesa.js.map +1 -0
  58. package/package.json +51 -20
  59. package/LICENSE +0 -201
  60. package/dist/client/client.gen.d.ts +0 -2
  61. package/dist/client/client.gen.js +0 -234
  62. package/dist/client/index.d.ts +0 -8
  63. package/dist/client/index.js +0 -6
  64. package/dist/client/types.gen.d.ts +0 -117
  65. package/dist/client/types.gen.js +0 -2
  66. package/dist/client/utils.gen.d.ts +0 -33
  67. package/dist/client/utils.gen.js +0 -228
  68. package/dist/client.gen.d.ts +0 -12
  69. package/dist/client.gen.js +0 -3
  70. package/dist/core/auth.gen.d.ts +0 -18
  71. package/dist/core/auth.gen.js +0 -14
  72. package/dist/core/bodySerializer.gen.d.ts +0 -25
  73. package/dist/core/bodySerializer.gen.js +0 -57
  74. package/dist/core/params.gen.d.ts +0 -43
  75. package/dist/core/params.gen.js +0 -100
  76. package/dist/core/pathSerializer.gen.d.ts +0 -33
  77. package/dist/core/pathSerializer.gen.js +0 -106
  78. package/dist/core/queryKeySerializer.gen.d.ts +0 -18
  79. package/dist/core/queryKeySerializer.gen.js +0 -92
  80. package/dist/core/serverSentEvents.gen.d.ts +0 -71
  81. package/dist/core/serverSentEvents.gen.js +0 -133
  82. package/dist/core/types.gen.d.ts +0 -78
  83. package/dist/core/types.gen.js +0 -2
  84. package/dist/core/utils.gen.d.ts +0 -19
  85. package/dist/core/utils.gen.js +0 -87
  86. package/dist/sdk.gen.d.ts +0 -123
  87. package/dist/sdk.gen.js +0 -202
  88. package/dist/types.gen.d.ts +0 -2285
  89. package/dist/types.gen.js +0 -2
  90. package/src/client/client.gen.ts +0 -288
  91. package/src/client/index.ts +0 -25
  92. package/src/client/types.gen.ts +0 -214
  93. package/src/client/utils.gen.ts +0 -316
  94. package/src/client.gen.ts +0 -16
  95. package/src/core/auth.gen.ts +0 -41
  96. package/src/core/bodySerializer.gen.ts +0 -84
  97. package/src/core/params.gen.ts +0 -169
  98. package/src/core/pathSerializer.gen.ts +0 -171
  99. package/src/core/queryKeySerializer.gen.ts +0 -117
  100. package/src/core/serverSentEvents.gen.ts +0 -243
  101. package/src/core/types.gen.ts +0 -104
  102. package/src/core/utils.gen.ts +0 -140
  103. package/src/index.ts +0 -2
  104. package/src/sdk.gen.ts +0 -237
  105. package/src/types.gen.ts +0 -2377
@@ -0,0 +1,65 @@
1
+ import { Bash, type BashOptions, type BufferEncoding, type CpOptions, type FileContent, type FsStat, type IFileSystem, type MkdirOptions, type RmOptions } from 'just-bash';
2
+ export type MesaBashOptions = Pick<BashOptions, 'env' | 'cwd' | 'executionLimits' | 'fetch' | 'network' | 'python' | 'javascript' | 'commands' | 'customCommands' | 'logger'>;
3
+ export interface MesaFileSystemConfig {
4
+ org: string;
5
+ apiKey: string;
6
+ repos: Array<{
7
+ name: string;
8
+ desiredBookmark?: string;
9
+ }>;
10
+ mode?: 'read-only' | 'read-write';
11
+ cache?: {
12
+ diskCache?: {
13
+ path: string;
14
+ maxSizeBytes?: number;
15
+ };
16
+ };
17
+ apiBaseUrl?: string;
18
+ vcsUrl?: string;
19
+ }
20
+ /**
21
+ * MesaFS-backed implementation of the just-bash IFileSystem interface.
22
+ *
23
+ * Uses native Rust code via NAPI to provide a high-performance filesystem
24
+ * backed by Mesa's cloud storage. The native addon is loaded lazily on the
25
+ * first call to `MesaFileSystem.create()`.
26
+ */
27
+ export declare class MesaFileSystem implements IFileSystem {
28
+ private native;
29
+ private constructor();
30
+ static create(config: MesaFileSystemConfig): MesaFileSystem;
31
+ readFile(path: string, options?: {
32
+ encoding?: BufferEncoding | null;
33
+ } | BufferEncoding): Promise<string>;
34
+ readFileBuffer(path: string): Promise<Uint8Array>;
35
+ writeFile(path: string, content: FileContent, options?: {
36
+ encoding?: BufferEncoding;
37
+ } | BufferEncoding): Promise<void>;
38
+ appendFile(path: string, content: FileContent, options?: {
39
+ encoding?: BufferEncoding;
40
+ } | BufferEncoding): Promise<void>;
41
+ exists(path: string): Promise<boolean>;
42
+ stat(path: string): Promise<FsStat>;
43
+ lstat(path: string): Promise<FsStat>;
44
+ mkdir(path: string, options?: MkdirOptions): Promise<void>;
45
+ readdir(path: string): Promise<string[]>;
46
+ readdirWithFileTypes(path: string): Promise<Array<{
47
+ name: string;
48
+ isFile: boolean;
49
+ isDirectory: boolean;
50
+ isSymbolicLink: boolean;
51
+ }>>;
52
+ rm(path: string, options?: RmOptions): Promise<void>;
53
+ cp(src: string, dest: string, options?: CpOptions): Promise<void>;
54
+ mv(src: string, dest: string): Promise<void>;
55
+ resolvePath(base: string, path: string): string;
56
+ getAllPaths(): string[];
57
+ chmod(path: string, mode: number): Promise<void>;
58
+ symlink(target: string, linkPath: string): Promise<void>;
59
+ link(existingPath: string, newPath: string): Promise<void>;
60
+ readlink(path: string): Promise<string>;
61
+ realpath(path: string): Promise<string>;
62
+ utimes(path: string, atime: Date, mtime: Date): Promise<void>;
63
+ bash(options?: MesaBashOptions): Bash;
64
+ }
65
+ //# sourceMappingURL=mesa-file-system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mesa-file-system.d.ts","sourceRoot":"","sources":["../../src/fs/mesa-file-system.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ import { Bash, } from 'just-bash';
2
+ import { loadNativeAddon } from './native-loader.js';
3
+ let nativeModule = null;
4
+ function getEncoding(options) {
5
+ if (options === null || options === undefined)
6
+ return undefined;
7
+ if (typeof options === 'string')
8
+ return options;
9
+ return options.encoding ?? undefined;
10
+ }
11
+ // "binary" isn't a real encoding — it's a Node.js/just-bash convention where each
12
+ // byte is represented as the corresponding latin1 character (U+0000–U+00FF). We
13
+ // intercept it in the TS layer and convert between raw bytes and latin1 strings,
14
+ // bypassing the Rust text encoding path. This matches just-bash's fromBuffer/toBuffer:
15
+ // https://github.com/vercel-labs/just-bash/blob/main/src/fs/encoding.ts
16
+ function isBinaryEncoding(encoding) {
17
+ return encoding === 'binary';
18
+ }
19
+ function binaryStringToBytes(content) {
20
+ return Buffer.from(content, 'latin1');
21
+ }
22
+ function bytesToBinaryString(content) {
23
+ return Buffer.from(content).toString('latin1');
24
+ }
25
+ /**
26
+ * MesaFS-backed implementation of the just-bash IFileSystem interface.
27
+ *
28
+ * Uses native Rust code via NAPI to provide a high-performance filesystem
29
+ * backed by Mesa's cloud storage. The native addon is loaded lazily on the
30
+ * first call to `MesaFileSystem.create()`.
31
+ */
32
+ export class MesaFileSystem {
33
+ native;
34
+ constructor(nativeInstance) {
35
+ this.native = nativeInstance;
36
+ }
37
+ static create(config) {
38
+ nativeModule ??= loadNativeAddon();
39
+ const nativeInstance = new nativeModule.MesaFileSystem(config);
40
+ return new MesaFileSystem(nativeInstance);
41
+ }
42
+ async readFile(path, options) {
43
+ const encoding = getEncoding(options);
44
+ if (isBinaryEncoding(encoding)) {
45
+ return bytesToBinaryString(await this.native.readBytes(path));
46
+ }
47
+ return this.native.readText(path, encoding);
48
+ }
49
+ async readFileBuffer(path) {
50
+ return this.native.readBytes(path);
51
+ }
52
+ async writeFile(path, content, options) {
53
+ const encoding = getEncoding(options);
54
+ if (typeof content === 'string') {
55
+ if (isBinaryEncoding(encoding)) {
56
+ return this.native.writeBytes(path, binaryStringToBytes(content));
57
+ }
58
+ return this.native.writeText(path, content, encoding);
59
+ }
60
+ return this.native.writeBytes(path, content);
61
+ }
62
+ async appendFile(path, content, options) {
63
+ const encoding = getEncoding(options);
64
+ if (typeof content === 'string') {
65
+ if (isBinaryEncoding(encoding)) {
66
+ return this.native.appendBytes(path, binaryStringToBytes(content));
67
+ }
68
+ return this.native.appendText(path, content, encoding);
69
+ }
70
+ return this.native.appendBytes(path, content);
71
+ }
72
+ async exists(path) {
73
+ return this.native.exists(path);
74
+ }
75
+ async stat(path) {
76
+ const s = await this.native.stat(path);
77
+ return {
78
+ ...s,
79
+ mtime: new Date(s.mtime),
80
+ };
81
+ }
82
+ async lstat(path) {
83
+ const s = await this.native.lstat(path);
84
+ return {
85
+ ...s,
86
+ mtime: new Date(s.mtime),
87
+ };
88
+ }
89
+ async mkdir(path, options) {
90
+ return this.native.mkdir(path, options?.recursive);
91
+ }
92
+ async readdir(path) {
93
+ return this.native.readdir(path);
94
+ }
95
+ async readdirWithFileTypes(path) {
96
+ return this.native.readdirWithFileTypes(path);
97
+ }
98
+ async rm(path, options) {
99
+ return this.native.rm(path, options?.recursive, options?.force);
100
+ }
101
+ async cp(src, dest, options) {
102
+ return this.native.cp(src, dest, options?.recursive);
103
+ }
104
+ async mv(src, dest) {
105
+ return this.native.mv(src, dest);
106
+ }
107
+ resolvePath(base, path) {
108
+ return this.native.resolvePath(base, path);
109
+ }
110
+ getAllPaths() {
111
+ return this.native.getAllPaths();
112
+ }
113
+ async chmod(path, mode) {
114
+ return this.native.chmod(path, mode);
115
+ }
116
+ async symlink(target, linkPath) {
117
+ return this.native.symlink(target, linkPath);
118
+ }
119
+ async link(existingPath, newPath) {
120
+ return this.native.link(existingPath, newPath);
121
+ }
122
+ async readlink(path) {
123
+ return this.native.readlink(path);
124
+ }
125
+ async realpath(path) {
126
+ return this.native.realpath(path);
127
+ }
128
+ async utimes(path, atime, mtime) {
129
+ return this.native.utimes(path, atime.getTime(), mtime.getTime());
130
+ }
131
+ bash(options) {
132
+ return new Bash({ ...options, fs: this });
133
+ }
134
+ }
135
+ //# sourceMappingURL=mesa-file-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mesa-file-system.js","sourceRoot":"","sources":["../../src/fs/mesa-file-system.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ export interface NativeConfig {
2
+ org: string;
3
+ apiKey: string;
4
+ repos: Array<{
5
+ name: string;
6
+ desiredBookmark?: string;
7
+ }>;
8
+ mode?: string;
9
+ cache?: {
10
+ diskCache?: {
11
+ path: string;
12
+ maxSizeBytes?: number;
13
+ };
14
+ };
15
+ apiBaseUrl?: string;
16
+ vcsUrl?: string;
17
+ }
18
+ export interface NativeStat {
19
+ isFile: boolean;
20
+ isDirectory: boolean;
21
+ isSymbolicLink: boolean;
22
+ mode: number;
23
+ size: number;
24
+ mtime: number;
25
+ }
26
+ export interface NativeDirentEntry {
27
+ name: string;
28
+ isFile: boolean;
29
+ isDirectory: boolean;
30
+ isSymbolicLink: boolean;
31
+ }
32
+ export interface NativeMesaFileSystem {
33
+ readText(path: string, encoding?: string): Promise<string>;
34
+ readBytes(path: string): Promise<Uint8Array>;
35
+ writeText(path: string, content: string, encoding?: string): Promise<void>;
36
+ writeBytes(path: string, content: Uint8Array): Promise<void>;
37
+ appendText(path: string, content: string, encoding?: string): Promise<void>;
38
+ appendBytes(path: string, content: Uint8Array): Promise<void>;
39
+ exists(path: string): Promise<boolean>;
40
+ stat(path: string): Promise<NativeStat>;
41
+ lstat(path: string): Promise<NativeStat>;
42
+ mkdir(path: string, recursive?: boolean): Promise<void>;
43
+ readdir(path: string): Promise<string[]>;
44
+ readdirWithFileTypes(path: string): Promise<NativeDirentEntry[]>;
45
+ rm(path: string, recursive?: boolean, force?: boolean): Promise<void>;
46
+ cp(src: string, dest: string, recursive?: boolean): Promise<void>;
47
+ mv(src: string, dest: string): Promise<void>;
48
+ resolvePath(base: string, path: string): string;
49
+ getAllPaths(): string[];
50
+ chmod(path: string, mode: number): Promise<void>;
51
+ symlink(target: string, linkPath: string): Promise<void>;
52
+ link(existingPath: string, newPath: string): Promise<void>;
53
+ readlink(path: string): Promise<string>;
54
+ realpath(path: string): Promise<string>;
55
+ utimes(path: string, atime: number, mtime: number): Promise<void>;
56
+ }
57
+ export interface NativeModule {
58
+ MesaFileSystem: new (config: NativeConfig) => NativeMesaFileSystem;
59
+ }
60
+ export declare function loadNativeAddon(): NativeModule;
61
+ //# sourceMappingURL=native-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-loader.d.ts","sourceRoot":"","sources":["../../src/fs/native-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import { createRequire } from 'node:module';
2
+ function isRecoverableNativeLoadError(error) {
3
+ return error instanceof Error && error.code === 'ERR_DLOPEN_FAILED';
4
+ }
5
+ function detectLinuxLibc() {
6
+ const report = process.report?.getReport?.();
7
+ const header = report && typeof report === 'object' && 'header' in report ? report.header : undefined;
8
+ if (header && typeof header === 'object' && 'glibcVersionRuntime' in header) {
9
+ if (typeof header.glibcVersionRuntime === 'string' && header.glibcVersionRuntime.length > 0) {
10
+ return 'gnu';
11
+ }
12
+ }
13
+ const sharedObjects = report && typeof report === 'object' && 'sharedObjects' in report ? report.sharedObjects : undefined;
14
+ if (Array.isArray(sharedObjects)) {
15
+ if (sharedObjects.some((sharedObject) => sharedObject.includes('musl'))) {
16
+ return 'musl';
17
+ }
18
+ if (sharedObjects.some((sharedObject) => sharedObject.includes('glibc') || sharedObject.includes('ld-linux'))) {
19
+ return 'gnu';
20
+ }
21
+ }
22
+ return null;
23
+ }
24
+ function getPackageSuffix() {
25
+ const { platform, arch } = process;
26
+ if (platform === 'darwin' && (arch === 'x64' || arch === 'arm64')) {
27
+ return { suffix: `darwin-${arch}` };
28
+ }
29
+ if (platform !== 'linux') {
30
+ throw new Error(`Unsupported mesafs-napi runtime: platform=${platform} arch=${arch}`);
31
+ }
32
+ const libc = detectLinuxLibc();
33
+ if (!libc) {
34
+ throw new Error('Unable to determine Linux libc for mesafs-napi runtime selection.');
35
+ }
36
+ if (arch === 'x64') {
37
+ return { suffix: `linux-x64-${libc}`, libc };
38
+ }
39
+ if (arch === 'arm64') {
40
+ return { suffix: 'linux-arm64-musl', libc };
41
+ }
42
+ throw new Error(`Unsupported mesafs-napi runtime: platform=${platform} arch=${arch} libc=${libc}`);
43
+ }
44
+ function getRuntimeTarget() {
45
+ const { suffix, libc } = getPackageSuffix();
46
+ return {
47
+ arch: process.arch,
48
+ libc,
49
+ packageName: `@mesadev/mesafs-napi-${suffix}`,
50
+ platform: process.platform,
51
+ };
52
+ }
53
+ function createMissingNativeAddonError(target) {
54
+ return new Error(`Unable to load mesafs-napi native addon. ` +
55
+ `Install the package for your platform: npm install ${target.packageName} ` +
56
+ `or set MESAFS_NAPI_PATH to a local .node file.`);
57
+ }
58
+ function loadFromEnvPath(require) {
59
+ const envPath = process.env.MESAFS_NAPI_PATH;
60
+ if (!envPath) {
61
+ return null;
62
+ }
63
+ try {
64
+ return require(envPath);
65
+ }
66
+ catch (error) {
67
+ if (isRecoverableNativeLoadError(error)) {
68
+ return null;
69
+ }
70
+ throw error;
71
+ }
72
+ }
73
+ function loadInstalledNativeAddon(require, target) {
74
+ let resolvedPath;
75
+ try {
76
+ resolvedPath = require.resolve(target.packageName);
77
+ }
78
+ catch (error) {
79
+ if (error.code === 'MODULE_NOT_FOUND') {
80
+ throw createMissingNativeAddonError(target);
81
+ }
82
+ throw error;
83
+ }
84
+ return require(resolvedPath);
85
+ }
86
+ export function loadNativeAddon() {
87
+ const require = createRequire(import.meta.url);
88
+ const envAddon = loadFromEnvPath(require);
89
+ if (envAddon) {
90
+ return envAddon;
91
+ }
92
+ return loadInstalledNativeAddon(require, getRuntimeTarget());
93
+ }
94
+ //# sourceMappingURL=native-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-loader.js","sourceRoot":"","sources":["../../src/fs/native-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export type { GitClient, GitCommitResponse, GitFileStatus, GitStatus, ListBranchResponse } from './types.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,aAAa,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export declare function resolveGitPath(inputPath: string): string;
2
+ export declare function assertGitRepository(dir: string): Promise<void>;
3
+ export declare function normalizeFilepath(repoDir: string, filepath: string): string;
4
+ //# sourceMappingURL=path-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-utils.d.ts","sourceRoot":"","sources":["../../src/git/path-utils.ts"],"names":[],"mappings":"AAIA,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAmBxD;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYpE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAe3E"}
@@ -0,0 +1,47 @@
1
+ import { access } from 'node:fs/promises';
2
+ import { homedir } from 'node:os';
3
+ import { isAbsolute, join, normalize, relative, resolve } from 'node:path';
4
+ export function resolveGitPath(inputPath) {
5
+ const trimmedPath = inputPath.trim();
6
+ if (!trimmedPath) {
7
+ throw new Error('Path is required');
8
+ }
9
+ if (trimmedPath === '~') {
10
+ return homedir();
11
+ }
12
+ if (trimmedPath.startsWith('~/')) {
13
+ return normalize(join(homedir(), trimmedPath.slice(2)));
14
+ }
15
+ if (isAbsolute(trimmedPath)) {
16
+ return normalize(trimmedPath);
17
+ }
18
+ return normalize(resolve(process.cwd(), trimmedPath));
19
+ }
20
+ export async function assertGitRepository(dir) {
21
+ try {
22
+ await access(dir);
23
+ }
24
+ catch {
25
+ throw new Error(`Repository path does not exist: ${dir}`);
26
+ }
27
+ try {
28
+ await access(join(dir, '.git'));
29
+ }
30
+ catch {
31
+ throw new Error(`Path is not a git repository: ${dir}`);
32
+ }
33
+ }
34
+ export function normalizeFilepath(repoDir, filepath) {
35
+ if (filepath === '.') {
36
+ return filepath;
37
+ }
38
+ if (!isAbsolute(filepath)) {
39
+ return filepath.replace(/\\/g, '/');
40
+ }
41
+ const relativePath = relative(repoDir, filepath).replace(/\\/g, '/');
42
+ if (relativePath.startsWith('..') || relativePath === '') {
43
+ throw new Error(`File path '${filepath}' must be inside repository '${repoDir}'`);
44
+ }
45
+ return relativePath;
46
+ }
47
+ //# sourceMappingURL=path-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-utils.js","sourceRoot":"","sources":["../../src/git/path-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE3E,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;IACrC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;QACxB,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW;IACnD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,QAAgB;IACjE,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QACrB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACrE,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,YAAY,KAAK,EAAE,EAAE,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,cAAc,QAAQ,gCAAgC,OAAO,GAAG,CAAC,CAAC;IACpF,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { GitClient } from './types.js';
2
+ export declare const nodeGitClient: GitClient;
3
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/git/service.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAmE,MAAM,YAAY,CAAC;AAiJ7G,eAAO,MAAM,aAAa,EAAE,SAwN3B,CAAC"}