@mastra/archil 0.0.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.
- package/dist/filesystem.d.ts +116 -0
- package/dist/filesystem.d.ts.map +1 -0
- package/dist/index.cjs +491 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +488 -0
- package/dist/index.js.map +1 -0
- package/dist/provider.d.ts +7 -0
- package/dist/provider.d.ts.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/filesystem.ts","../src/provider.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Archil Filesystem Provider\n *\n * A filesystem implementation backed by Archil — elastic, serverless\n * filesystems for AI agents. Uses the `disk` SDK's S3-compatible object\n * API for fast reads/writes and `exec` for POSIX operations.\n */\n\nimport type {\n FileContent,\n FileStat,\n FileEntry,\n ReadOptions,\n WriteOptions,\n ListOptions,\n RemoveOptions,\n CopyOptions,\n FilesystemInfo,\n FilesystemIcon,\n ProviderStatus,\n MastraFilesystemOptions,\n} from '@mastra/core/workspace';\nimport { MastraFilesystem, FileNotFoundError, FileExistsError } from '@mastra/core/workspace';\nimport { Archil } from 'disk';\nimport type {\n Disk,\n CreateDiskRequest,\n ExecResult,\n GrepOptions,\n GrepResult,\n ArchilOptions,\n ListObjectsOptions,\n ListObjectsResult,\n ObjectMetadata,\n ShareUrlOptions,\n ShareUrlResult,\n} from 'disk';\n\n// =============================================================================\n// Configuration\n// =============================================================================\n\nexport interface ArchilFilesystemOptions extends MastraFilesystemOptions {\n /** Unique identifier for this filesystem instance */\n id?: string;\n\n /** Human-friendly display name for the UI */\n displayName?: string;\n\n /** Icon identifier for the UI (defaults to 'cloud') */\n icon?: FilesystemIcon;\n\n /** Description shown in tooltips */\n description?: string;\n\n /** Mount as read-only (blocks write operations) */\n readOnly?: boolean;\n\n /**\n * Existing disk ID to attach to (e.g. \"dsk-0123456789abcdef\").\n * Mutually exclusive with `createDiskOptions`.\n */\n diskId?: string;\n\n /**\n * Options for creating a new disk on init.\n * Mutually exclusive with `diskId`.\n */\n createDiskOptions?: CreateDiskRequest;\n\n /**\n * Archil API key. Falls back to ARCHIL_API_KEY env var.\n */\n apiKey?: string;\n\n /**\n * Archil region (e.g. \"aws-us-east-1\"). Falls back to ARCHIL_REGION env var.\n */\n region?: string;\n\n /**\n * Override the Archil control-plane base URL (for testing/self-hosted).\n */\n baseUrl?: string;\n\n /**\n * Override the S3-compatible API base URL.\n * Falls back to ARCHIL_S3_BASE_URL env var.\n */\n s3BaseUrl?: string;\n}\n\n// =============================================================================\n// MIME type detection\n// =============================================================================\n\nconst MIME_TYPES: Record<string, string> = {\n '.txt': 'text/plain',\n '.md': 'text/markdown',\n '.html': 'text/html',\n '.css': 'text/css',\n '.csv': 'text/csv',\n '.xml': 'text/xml',\n '.js': 'text/javascript',\n '.mjs': 'text/javascript',\n '.ts': 'text/typescript',\n '.tsx': 'text/typescript',\n '.jsx': 'text/javascript',\n '.json': 'application/json',\n '.yaml': 'text/yaml',\n '.yml': 'text/yaml',\n '.py': 'text/x-python',\n '.sh': 'text/x-shellscript',\n '.png': 'image/png',\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.gif': 'image/gif',\n '.svg': 'image/svg+xml',\n '.webp': 'image/webp',\n '.pdf': 'application/pdf',\n '.zip': 'application/zip',\n '.gz': 'application/gzip',\n '.tar': 'application/x-tar',\n};\n\nfunction getMimeType(path: string): string {\n const ext = path.toLowerCase().match(/\\.[^.]+$/)?.[0];\n return ext ? (MIME_TYPES[ext] ?? 'application/octet-stream') : 'application/octet-stream';\n}\n\n/** Trim leading and trailing slashes. */\nfunction trimSlashes(s: string): string {\n let start = 0;\n let end = s.length;\n while (start < end && s[start] === '/') start++;\n while (end > start && s[end - 1] === '/') end--;\n return s.slice(start, end);\n}\n\n/** Normalize a workspace path to a key (no leading slash). */\nfunction toKey(path: string): string {\n return trimSlashes(path) || '';\n}\n\n/** Get the basename from a path. */\nfunction basename(path: string): string {\n const key = toKey(path);\n const idx = key.lastIndexOf('/');\n return idx === -1 ? key : key.slice(idx + 1);\n}\n\n/** Get the parent directory key (empty = root). */\nfunction dirname(path: string): string {\n const key = toKey(path);\n const idx = key.lastIndexOf('/');\n return idx === -1 ? '' : key.slice(0, idx);\n}\n\n/** Shell-escape a string for use in exec commands. */\nfunction shellEscape(s: string): string {\n return \"'\" + s.replace(/'/g, \"'\\\\''\") + \"'\";\n}\n\n// =============================================================================\n// Implementation\n// =============================================================================\n\nexport class ArchilFilesystem extends MastraFilesystem {\n readonly id: string;\n readonly name = 'ArchilFilesystem';\n readonly provider = 'archil';\n readonly readOnly?: boolean;\n\n readonly displayName?: string;\n readonly icon: FilesystemIcon;\n readonly description?: string;\n\n status: ProviderStatus = 'pending';\n\n private _disk: Disk | null = null;\n private _archil: Archil | null = null;\n private readonly _diskId?: string;\n private readonly _createDiskOptions?: CreateDiskRequest;\n private readonly _archilOptions: ArchilOptions;\n\n constructor(options: ArchilFilesystemOptions) {\n super({ ...options, name: 'ArchilFilesystem' });\n\n this.id = options.id ?? `archil-fs-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;\n this.readOnly = options.readOnly;\n this.displayName = options.displayName ?? 'Archil';\n this.icon = options.icon ?? 'cloud';\n this.description = options.description ?? 'Elastic serverless filesystem powered by Archil';\n this._diskId = options.diskId;\n this._createDiskOptions = options.createDiskOptions;\n\n this._archilOptions = {\n apiKey: options.apiKey,\n region: options.region,\n baseUrl: options.baseUrl,\n s3BaseUrl: options.s3BaseUrl,\n };\n }\n\n // ---------------------------------------------------------------------------\n // Public accessors\n // ---------------------------------------------------------------------------\n\n /** The underlying Archil Disk instance (available after init). */\n get disk(): Disk {\n if (!this._disk) {\n throw new Error('ArchilFilesystem not initialized — call init() first');\n }\n return this._disk;\n }\n\n /** The Archil SDK client instance. */\n get archil(): Archil {\n if (!this._archil) {\n this._archil = new Archil(this._archilOptions);\n }\n return this._archil;\n }\n\n // ---------------------------------------------------------------------------\n // Lifecycle\n // ---------------------------------------------------------------------------\n\n async init(): Promise<void> {\n try {\n if (this._diskId && this._createDiskOptions) {\n throw new Error('diskId and createDiskOptions are mutually exclusive');\n }\n if (this._diskId) {\n this._disk = await this.archil.disks.get(this._diskId);\n } else if (this._createDiskOptions) {\n const result = await this.archil.disks.create(this._createDiskOptions);\n this._disk = result.disk;\n } else {\n throw new Error('Either diskId or createDiskOptions must be provided');\n }\n this.status = 'ready';\n } catch (err) {\n this.status = 'error';\n this.error = err instanceof Error ? err.message : String(err);\n throw err;\n }\n }\n\n async destroy(): Promise<void> {\n this._disk = null;\n this._archil = null;\n }\n\n isReady(): boolean {\n return this.status === 'ready' && this._disk !== null;\n }\n\n getInfo(): FilesystemInfo<{ diskId: string; region: string; diskName: string }> {\n return {\n id: this.id,\n name: this.name,\n provider: this.provider,\n status: this.status,\n error: this.error,\n readOnly: this.readOnly,\n icon: this.icon,\n metadata: {\n diskId: this._disk?.id ?? '',\n region: this._disk?.region ?? '',\n diskName: this._disk?.name ?? '',\n },\n };\n }\n\n getInstructions(): string {\n const access = this.readOnly ? 'Read-only' : 'Persistent';\n const diskName = this._disk?.name ?? 'Archil disk';\n return `Archil elastic filesystem \"${diskName}\". ${access} storage — files persist across sessions. Supports serverless execution via exec().`;\n }\n\n // ---------------------------------------------------------------------------\n // Archil-specific operations\n // ---------------------------------------------------------------------------\n\n /**\n * Execute a shell command on the disk's filesystem.\n * The disk is mounted as the working directory.\n */\n async exec(command: string): Promise<ExecResult> {\n await this.ensureReady();\n this.assertWritable();\n return this.disk.exec(command);\n }\n\n /**\n * Parallel grep across files on the disk.\n */\n async grep(opts: GrepOptions): Promise<GrepResult> {\n await this.ensureReady();\n return this.disk.grep(opts);\n }\n\n /**\n * Create a signed, time-limited download URL for a file.\n */\n async share(key: string, opts?: ShareUrlOptions): Promise<ShareUrlResult> {\n await this.ensureReady();\n return this.disk.share(key, opts);\n }\n\n /**\n * List objects using the S3-compatible API directly.\n */\n async listObjects(prefix?: string, opts?: ListObjectsOptions): Promise<ListObjectsResult> {\n await this.ensureReady();\n return this.disk.listObjects(prefix, opts);\n }\n\n /**\n * Get object metadata without downloading.\n */\n async headObject(key: string): Promise<ObjectMetadata | null> {\n await this.ensureReady();\n return this.disk.headObject(key);\n }\n\n // ---------------------------------------------------------------------------\n // File Operations (WorkspaceFilesystem interface)\n // ---------------------------------------------------------------------------\n\n async readFile(path: string, options?: ReadOptions): Promise<string | Buffer> {\n await this.ensureReady();\n const key = toKey(path);\n if (!key) {\n throw new Error('Cannot read file at root path');\n }\n\n try {\n const data = await this.disk.getObject(key);\n if (options?.encoding) {\n return Buffer.from(data).toString(options.encoding);\n }\n return Buffer.from(data);\n } catch (err: unknown) {\n if (isNotFound(err)) {\n throw new FileNotFoundError(path);\n }\n throw err;\n }\n }\n\n async writeFile(path: string, content: FileContent, options?: WriteOptions): Promise<void> {\n await this.ensureReady();\n this.assertWritable();\n\n const key = toKey(path);\n if (!key) {\n throw new Error('Cannot write file at root path');\n }\n\n if (options?.overwrite === false) {\n const exists = await this.disk.objectExists(key);\n if (exists) {\n throw new FileExistsError(path);\n }\n }\n\n if (options?.recursive) {\n const dir = dirname(path);\n if (dir) {\n await this.disk.exec(`mkdir -p ${shellEscape(dir)}`);\n }\n }\n\n const body =\n typeof content === 'string' ? content : content instanceof Uint8Array ? content : new Uint8Array(content);\n const mimeType = options?.mimeType ?? getMimeType(path);\n await this.disk.putObject(key, body, mimeType);\n }\n\n async appendFile(path: string, content: FileContent): Promise<void> {\n await this.ensureReady();\n this.assertWritable();\n\n const key = toKey(path);\n if (!key) {\n throw new Error('Cannot append to root path');\n }\n\n // Use exec to append since S3 API doesn't support append\n const data = typeof content === 'string' ? content : Buffer.from(content).toString('base64');\n if (typeof content === 'string') {\n await this.disk.exec(`printf '%s' ${shellEscape(data)} >> ${shellEscape(key)}`);\n } else {\n await this.disk.exec(`printf '%s' ${shellEscape(data)} | base64 -d >> ${shellEscape(key)}`);\n }\n }\n\n async deleteFile(path: string, options?: RemoveOptions): Promise<void> {\n await this.ensureReady();\n this.assertWritable();\n\n const key = toKey(path);\n if (!key) {\n throw new Error('Cannot delete root path');\n }\n\n if (!options?.force) {\n const exists = await this.disk.objectExists(key);\n if (!exists) {\n throw new FileNotFoundError(path);\n }\n }\n\n await this.disk.deleteObject(key);\n }\n\n async copyFile(src: string, dest: string, options?: CopyOptions): Promise<void> {\n await this.ensureReady();\n this.assertWritable();\n\n const srcKey = toKey(src);\n const destKey = toKey(dest);\n\n if (!options?.overwrite) {\n const exists = await this.disk.objectExists(destKey);\n if (exists) {\n throw new FileExistsError(dest);\n }\n }\n\n const flags = options?.recursive ? '-r' : '';\n const result = await this.disk.exec(`cp ${flags} ${shellEscape(srcKey)} ${shellEscape(destKey)}`);\n if (result.exitCode !== 0) {\n if (result.stderr.includes('No such file')) {\n throw new FileNotFoundError(src);\n }\n throw new Error(`cp failed: ${result.stderr}`);\n }\n }\n\n async moveFile(src: string, dest: string, options?: CopyOptions): Promise<void> {\n await this.ensureReady();\n this.assertWritable();\n\n const srcKey = toKey(src);\n const destKey = toKey(dest);\n\n if (!options?.overwrite) {\n const exists = await this.disk.objectExists(destKey);\n if (exists) {\n throw new FileExistsError(dest);\n }\n }\n\n const result = await this.disk.exec(`mv ${shellEscape(srcKey)} ${shellEscape(destKey)}`);\n if (result.exitCode !== 0) {\n if (result.stderr.includes('No such file')) {\n throw new FileNotFoundError(src);\n }\n throw new Error(`mv failed: ${result.stderr}`);\n }\n }\n\n // ---------------------------------------------------------------------------\n // Directory Operations\n // ---------------------------------------------------------------------------\n\n async mkdir(path: string, options?: { recursive?: boolean }): Promise<void> {\n await this.ensureReady();\n this.assertWritable();\n\n const key = toKey(path);\n if (!key) return; // root always exists\n\n const flag = options?.recursive ? '-p' : '';\n const result = await this.disk.exec(`mkdir ${flag} ${shellEscape(key)}`);\n if (result.exitCode !== 0) {\n if (result.stderr.includes('File exists')) {\n throw new FileExistsError(path);\n }\n throw new Error(`mkdir failed: ${result.stderr}`);\n }\n }\n\n async rmdir(path: string, options?: RemoveOptions): Promise<void> {\n await this.ensureReady();\n this.assertWritable();\n\n const key = toKey(path);\n if (!key) {\n throw new Error('Cannot remove root directory');\n }\n\n const cmd = options?.recursive\n ? `rm -r${options?.force ? 'f' : ''} ${shellEscape(key)}`\n : `rmdir ${shellEscape(key)}`;\n const result = await this.disk.exec(options?.force ? `${cmd} 2>/dev/null; true` : cmd);\n if (result.exitCode !== 0 && !options?.force) {\n if (result.stderr.includes('No such file') || result.stderr.includes('not found')) {\n throw new FileNotFoundError(path);\n }\n throw new Error(`rmdir failed: ${result.stderr}`);\n }\n }\n\n async readdir(path: string, options?: ListOptions): Promise<FileEntry[]> {\n await this.ensureReady();\n\n const key = toKey(path);\n const prefix = key ? key + '/' : '';\n\n if (options?.recursive) {\n return this.readdirRecursive(prefix, options);\n }\n\n // Use listObjects for efficient non-recursive listing\n const result = await this.disk.listObjects(prefix, { recursive: false });\n\n const entries: FileEntry[] = [];\n\n // Files (objects at this level)\n for (const obj of result.objects) {\n const name = obj.key.slice(prefix.length);\n if (!name || name.includes('/')) continue; // skip nested or empty\n\n if (options?.extension) {\n const extensions = Array.isArray(options.extension) ? options.extension : [options.extension];\n const ext = name.match(/\\.[^.]+$/)?.[0] ?? '';\n if (!extensions.includes(ext)) continue;\n }\n\n entries.push({\n name,\n type: 'file',\n size: obj.size,\n });\n }\n\n // Directories (common prefixes)\n for (const cp of result.commonPrefixes) {\n const name = trimSlashes(cp.slice(prefix.length));\n if (!name) continue;\n entries.push({\n name,\n type: 'directory',\n });\n }\n\n return entries;\n }\n\n private async readdirRecursive(prefix: string, options?: ListOptions): Promise<FileEntry[]> {\n const result = await this.disk.listObjects(prefix, { recursive: true });\n const entries: FileEntry[] = [];\n\n for (const obj of result.objects) {\n const relativePath = obj.key.slice(prefix.length);\n if (!relativePath) continue;\n\n if (options?.maxDepth !== undefined) {\n const depth = relativePath.split('/').length - 1;\n if (depth > options.maxDepth) continue;\n }\n\n if (options?.extension) {\n const extensions = Array.isArray(options.extension) ? options.extension : [options.extension];\n const ext = relativePath.match(/\\.[^.]+$/)?.[0] ?? '';\n if (!extensions.includes(ext)) continue;\n }\n\n entries.push({\n name: relativePath,\n type: 'file',\n size: obj.size,\n });\n }\n\n return entries;\n }\n\n // ---------------------------------------------------------------------------\n // Path Operations\n // ---------------------------------------------------------------------------\n\n async exists(path: string): Promise<boolean> {\n await this.ensureReady();\n const key = toKey(path);\n if (!key) return true; // root always exists\n\n // Check as file first (faster)\n const fileExists = await this.disk.objectExists(key);\n if (fileExists) return true;\n\n // Check as directory (list with prefix)\n const result = await this.disk.listObjects(key + '/', { singlePage: true, limit: 1 });\n return result.objects.length > 0 || result.commonPrefixes.length > 0;\n }\n\n async stat(path: string): Promise<FileStat> {\n await this.ensureReady();\n const key = toKey(path);\n\n if (!key) {\n // Root directory\n return {\n name: '',\n path: '/',\n type: 'directory',\n size: 0,\n createdAt: new Date(0),\n modifiedAt: new Date(0),\n };\n }\n\n // Try as file first\n const meta = await this.disk.headObject(key);\n if (meta) {\n return {\n name: basename(path),\n path: '/' + key,\n type: 'file',\n size: meta.size,\n createdAt: meta.lastModified ?? new Date(0),\n modifiedAt: meta.lastModified ?? new Date(0),\n mimeType: meta.contentType,\n };\n }\n\n // Try as directory\n const result = await this.disk.listObjects(key + '/', { singlePage: true, limit: 1 });\n if (result.objects.length > 0 || result.commonPrefixes.length > 0) {\n return {\n name: basename(path),\n path: '/' + key,\n type: 'directory',\n size: 0,\n createdAt: new Date(0),\n modifiedAt: new Date(0),\n };\n }\n\n throw new FileNotFoundError(path);\n }\n\n // ---------------------------------------------------------------------------\n // Helpers\n // ---------------------------------------------------------------------------\n\n private assertWritable(): void {\n if (this.readOnly) {\n throw new Error('Filesystem is read-only');\n }\n }\n}\n\nfunction isNotFound(err: unknown): boolean {\n if (!err || typeof err !== 'object') return false;\n const e = err as { status?: number; code?: string };\n return e.status === 404 || e.code === 'NoSuchKey';\n}\n","/**\n * Archil filesystem provider descriptor for MastraEditor.\n */\nimport type { FilesystemProvider } from '@mastra/core/editor';\nimport { ArchilFilesystem } from './filesystem';\nimport type { ArchilFilesystemOptions } from './filesystem';\n\nexport const archilFilesystemProvider: FilesystemProvider<ArchilFilesystemOptions> = {\n id: 'archil',\n name: 'Archil',\n description: 'Elastic, serverless filesystem for AI agents (Archil)',\n configSchema: {\n type: 'object',\n oneOf: [{ required: ['diskId'] }, { required: ['createDiskOptions'] }],\n properties: {\n diskId: { type: 'string', description: 'Existing Archil disk ID (e.g. \"dsk-0123456789abcdef\")' },\n createDiskOptions: { type: 'object', description: 'Options used to create a new Archil disk on init' },\n apiKey: { type: 'string', description: 'Archil API key (falls back to ARCHIL_API_KEY env var)' },\n region: { type: 'string', description: 'Archil region (e.g. \"aws-us-east-1\")' },\n readOnly: { type: 'boolean', description: 'Mount as read-only', default: false },\n baseUrl: { type: 'string', description: 'Custom control-plane URL (for testing)' },\n s3BaseUrl: { type: 'string', description: 'Custom S3 API URL' },\n },\n },\n createFilesystem: config => new ArchilFilesystem(config),\n};\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Archil filesystem provider descriptor for MastraEditor.
|
|
3
|
+
*/
|
|
4
|
+
import type { FilesystemProvider } from '@mastra/core/editor';
|
|
5
|
+
import type { ArchilFilesystemOptions } from './filesystem.js';
|
|
6
|
+
export declare const archilFilesystemProvider: FilesystemProvider<ArchilFilesystemOptions>;
|
|
7
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE5D,eAAO,MAAM,wBAAwB,EAAE,kBAAkB,CAAC,uBAAuB,CAkBhF,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mastra/archil",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"description": "Archil filesystem provider for Mastra workspaces — elastic, serverless file systems for AI agents",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"require": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"default": "./dist/index.cjs"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"./package.json": "./package.json"
|
|
20
|
+
},
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsup --silent --config tsup.config.ts",
|
|
23
|
+
"build:lib": "pnpm build",
|
|
24
|
+
"build:watch": "pnpm build --watch",
|
|
25
|
+
"test:unit": "vitest run --exclude '**/*.integration.test.ts'",
|
|
26
|
+
"test:cloud": "vitest run --passWithNoTests ./src/**/*.integration.test.ts",
|
|
27
|
+
"test:watch": "vitest watch",
|
|
28
|
+
"test": "vitest run ./src/**/*.integration.test.ts",
|
|
29
|
+
"lint": "eslint ."
|
|
30
|
+
},
|
|
31
|
+
"license": "Apache-2.0",
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"disk": "0.8.13"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@internal/lint": "workspace:*",
|
|
37
|
+
"@internal/types-builder": "workspace:*",
|
|
38
|
+
"@mastra/core": "workspace:*",
|
|
39
|
+
"@types/node": "22.19.21",
|
|
40
|
+
"@vitest/coverage-v8": "catalog:",
|
|
41
|
+
"@vitest/ui": "catalog:",
|
|
42
|
+
"eslint": "^10.4.1",
|
|
43
|
+
"tsup": "^8.5.1",
|
|
44
|
+
"typescript": "catalog:",
|
|
45
|
+
"vitest": "catalog:"
|
|
46
|
+
},
|
|
47
|
+
"peerDependencies": {
|
|
48
|
+
"@mastra/core": ">=1.4.0-0 <2.0.0-0"
|
|
49
|
+
},
|
|
50
|
+
"files": [
|
|
51
|
+
"dist",
|
|
52
|
+
"CHANGELOG.md"
|
|
53
|
+
],
|
|
54
|
+
"homepage": "https://mastra.ai",
|
|
55
|
+
"repository": {
|
|
56
|
+
"type": "git",
|
|
57
|
+
"url": "git+https://github.com/mastra-ai/mastra.git",
|
|
58
|
+
"directory": "workspaces/archil"
|
|
59
|
+
},
|
|
60
|
+
"bugs": {
|
|
61
|
+
"url": "https://github.com/mastra-ai/mastra/issues"
|
|
62
|
+
},
|
|
63
|
+
"engines": {
|
|
64
|
+
"node": ">=22.13.0"
|
|
65
|
+
}
|
|
66
|
+
}
|