{"owner":"nicotsx","repo":"zerobyte","hasSkills":true,"totalSkillsCount":7,"totalTokensCount":2461,"categories":["anthropic-skill","copilot-instructions","plugin-manifest","root-instruction"],"hasMcp":false,"mcpConfig":null,"found":["packages/contracts/package.json","packages/core/package.json","packages/core/tsconfig.json",".github/copilot-instructions.md","packages/core/README.md","AGENTS.md","packages/contracts/tsconfig.json"],"skills":{"packages/contracts/package.json":"{\n\t\"name\": \"@zerobyte/contracts\",\n\t\"private\": true,\n\t\"type\": \"module\",\n\t\"exports\": {\n\t\t\"./agent-connection\": {\n\t\t\t\"types\": \"./src/agent-connection.ts\",\n\t\t\t\"import\": \"./src/agent-connection.ts\",\n\t\t\t\"default\": \"./src/agent-connection.ts\"\n\t\t},\n\t\t\"./agent-token\": {\n\t\t\t\"types\": \"./src/agent-token.ts\",\n\t\t\t\"import\": \"./src/agent-token.ts\",\n\t\t\t\"default\": \"./src/agent-token.ts\"\n\t\t},\n\t\t\"./backup-context\": {\n\t\t\t\"types\": \"./src/backup-context.ts\",\n\t\t\t\"import\": \"./src/backup-context.ts\",\n\t\t\t\"default\": \"./src/backup-context.ts\"\n\t\t},\n\t\t\"./agent-protocol\": {\n\t\t\t\"types\": \"./src/agent-protocol.ts\",\n\t\t\t\"import\": \"./src/agent-protocol.ts\",\n\t\t\t\"default\": \"./src/agent-protocol.ts\"\n\t\t},\n\t\t\"./volumes\": {\n\t\t\t\"types\": \"./src/volumes.ts\",\n\t\t\t\"import\": \"./src/volumes.ts\",\n\t\t\t\"default\": \"./src/volumes.ts\"\n\t\t}\n\t},\n\t\"scripts\": {\n\t\t\"tsc\": \"tsc --noEmit\"\n\t},\n\t\"dependencies\": {\n\t\t\"@zerobyte/core\": \"workspace:*\",\n\t\t\"zod\": \"^4.6.7\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@types/bun\": \"latest\"\n\t},\n\t\"peerDependencies\": {\n\t\t\"typescript\": \"^7.0.2\"\n\t}\n}\n","packages/core/package.json":"{\n\t\"name\": \"@zerobyte/core\",\n\t\"private\": true,\n\t\"type\": \"module\",\n\t\"exports\": {\n\t\t\"./filesystem\": {\n\t\t\t\"types\": \"./src/filesystem/index.ts\",\n\t\t\t\"import\": \"./src/filesystem/index.ts\",\n\t\t\t\"default\": \"./src/filesystem/index.ts\"\n\t\t},\n\t\t\"./restic\": {\n\t\t\t\"types\": \"./src/restic/index.ts\",\n\t\t\t\"import\": \"./src/restic/index.ts\",\n\t\t\t\"default\": \"./src/restic/index.ts\"\n\t\t},\n\t\t\"./restic/server\": {\n\t\t\t\"types\": \"./src/restic/server.ts\",\n\t\t\t\"import\": \"./src/restic/server.ts\",\n\t\t\t\"default\": \"./src/restic/server.ts\"\n\t\t},\n\t\t\"./utils\": {\n\t\t\t\"types\": \"./src/utils/index.ts\",\n\t\t\t\"import\": \"./src/utils/index.ts\",\n\t\t\t\"default\": \"./src/utils/index.ts\"\n\t\t},\n\t\t\"./backup-hooks\": {\n\t\t\t\"types\": \"./src/backup-hooks/index.ts\",\n\t\t\t\"import\": \"./src/backup-hooks/index.ts\",\n\t\t\t\"default\": \"./src/backup-hooks/index.ts\"\n\t\t},\n\t\t\"./node\": {\n\t\t\t\"types\": \"./src/node/index.ts\",\n\t\t\t\"import\": \"./src/node/index.ts\",\n\t\t\t\"default\": \"./src/node/index.ts\"\n\t\t}\n\t},\n\t\"scripts\": {\n\t\t\"tsc\": \"tsc --noEmit\",\n\t\t\"test\": \"bunx --bun vitest run --config ./vitest.config.ts\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@types/bun\": \"^1.4.3\",\n\t\t\"fast-check\": \"^4.10.2\"\n\t},\n\t\"peerDependencies\": {\n\t\t\"typescript\": \"^5 || ^6.0.0 || ^7.0.0\"\n\t}\n}\n","packages/core/tsconfig.json":"{\n\t\"compilerOptions\": {\n\t\t\"plugins\": [{ \"name\": \"@effect/language-service\" }],\n\t\t// Environment setup & latest features\n\t\t\"lib\": [\"ESNext\"],\n\t\t\"target\": \"ESNext\",\n\t\t\"module\": \"Preserve\",\n\t\t\"moduleDetection\": \"force\",\n\t\t\"jsx\": \"react-jsx\",\n\t\t\"types\": [\"bun\", \"node\"],\n\t\t\"allowJs\": true,\n\n\t\t// Bundler mode\n\t\t\"moduleResolution\": \"bundler\",\n\t\t\"allowImportingTsExtensions\": true,\n\t\t\"verbatimModuleSyntax\": true,\n\t\t\"noEmit\": true,\n\n\t\t// Best practices\n\t\t\"strict\": true,\n\t\t\"skipLibCheck\": true,\n\t\t\"noFallthroughCasesInSwitch\": true,\n\t\t\"noUncheckedIndexedAccess\": true,\n\t\t\"noImplicitOverride\": true,\n\n\t\t// Some stricter flags (disabled by default)\n\t\t\"noUnusedLocals\": false,\n\t\t\"noUnusedParameters\": false,\n\t\t\"noPropertyAccessFromIndexSignature\": false\n\t}\n}\n",".github/copilot-instructions.md":"- This project uses the AGENTS.md file to give detailed information about the repository structure and development commands. Make sure to read this file before starting development.\n","packages/core/README.md":"# core\n\nTo install dependencies:\n\n```bash\nbun install\n```\n\nTo run:\n\n```bash\nbun run index.ts\n```\n\nThis project was created using `bun init` in bun v1.3.10. [Bun](https://bun.com) is a fast all-in-one JavaScript runtime.\n","AGENTS.md":"## Important instructions\n\n- Never create migration files manually. Always use the provided command to generate migrations\n- If you realize an automated migration is incorrect, make sure to remove all the associated entries from the `_journal.json` and the newly created files located in `app/drizzle/` before re-generating the migration\n- The dev server runs through Portless. Start it with `bun run dev`, then use `portless get zerobyte` to get the current worktree-specific URL. Do not assume a fixed port like `3000` or `4096`. Username is `admin` and password is `password`\n- The repo is https://github.com/nicotsx/zerobyte\n- If you need to run a specific restic command on a repository, you can open and use the dev panel with `Meta+Shift+D`\n\n## Project Overview\n\nZerobyte is a backup automation tool built on top of Restic that provides a web interface for scheduling, managing, and monitoring encrypted backups. It supports multiple volume backends (NFS, SMB, WebDAV, SFTP, local directories) and repository backends (S3, Azure, GCS, local, and rclone-based storage).\n\n### Development Server\n\n```bash\n# Start the dev server through Portless\nbun run dev\n\n# Get the current app URL for this worktree\nportless get zerobyte\n\n# Inspect active Portless routes if needed\nportless list\n```\n\nPortless applies git worktree prefixes automatically, so linked worktrees may return URLs like `https://branch-name.zerobyte.localhost`. Use the Portless URL for browser testing and manual verification.\n\n### Type Checking\n\n```bash\n# Run type checking and generate React Router types\nbun run tsc\n```\n\n### Testing\n\n```bash\n# Run all tests\nbun run test\n\n# Run a specific test file\nbunx dotenv run -f .env.test -- bunx --bun vitest run --project server path/to/test.ts\n```\n\n### Building\n\n```bash\n# Build for production\nbun run build\n```\n\n### Database Migrations\n\n```bash\n# Generate new migration from schema changes\nbun gen:migrations\n\n# Generate a custom empty migration\nbunx drizzle-kit generate --custom --name=fix-timestamps-to-ms\n\n```\n\n### Configuration Export Schema Changes\n\nConfiguration exports are permanent recovery artifacts. When a durable transferable field, backend, relationship, or serialized meaning changes, add a new config-transfer wire version. Do not modify a released version's schema, model, codec, fixture, or migration.\n\nFor a new version:\n\n- Add a self-contained versioned payload schema, model, and codec under `app/server/modules/system/config-transfer/vN/`. Historical schemas may reuse only immutable wire fragments, never live application schemas.\n- Add exactly one adjacent `vN-1` to `vN` model migration with concrete input and output types. Compose these functions explicitly in the version branches in `payload.ts` so every historical version reaches the current model. Keep every historical decoder and migration so old exports remain importable.\n- Make the new version current in `payload.ts`; export only the current version while retaining every import branch.\n- Add a permanent fixture and tests for wire round-tripping, migration defaults/semantic conversions, current-model import, and the clear update-required error for newer unsupported exports.\n- Keep the exact type-equality check between the current transfer model and the current encoded model so new transferable fields cannot be silently omitted.\n\nChanges that do not affect transferable meaning, such as database indexes, internal IDs, caches, UI state, and refactors that preserve the wire representation, do not require a new version.\n\n### Agent Protocol Compatibility\n\nThe server and remote agents can be upgraded independently. Their compatibility is determined by the protocol version in `packages/contracts/src/agent-protocol.ts`, not their application release versions.\n\n- Bump `AGENT_PROTOCOL_VERSION` whenever a change makes existing agents or servers incompatible. This includes removing or renaming messages or fields, changing field types or meanings, adding required fields, or sending commands that older peers cannot handle. Review both communication directions, including command responses and capabilities.\n- Internal refactors and application version changes do not require a protocol bump. Additive changes may keep the protocol version only when supported older peers safely tolerate them and newer peers handle their absence. Do not assume a schema addition is backward compatible.\n- Set `SUPPORTED_AGENT_PROTOCOL_MIN_VERSION` and `SUPPORTED_AGENT_PROTOCOL_MAX_VERSION` deliberately. Both currently reference `AGENT_PROTOCOL_VERSION`, so a bump rejects every previous protocol version. Support multiple versions only when the implementation actually handles each version's messages and behavior.\n- Preserve the startup compatibility check: incompatible agents must be rejected before being marked online or receiving operational commands. Keep the initial handshake readable enough to identify older and newer protocols and report the rejection reason.\n- Update compatibility tests alongside protocol changes. Cover rejected older/newer versions and blocked command dispatch; if retaining older protocol support, test exchanges with those older message shapes and semantics. Call out required server or agent upgrades in the release notes.\n\n### API Client Generation\n\n```bash\nbun run gen:api-client\n```\n\n### Code Quality\n\n```bash\n# Format\nbun run fmt -- <path>\n\n# Lint\nbun run lint\n```\n\n### Invalidation\n\nThe frontend has an automatic invalidation setup which runs after every mutation.\nDo not implement any invalidation logic in the frontend.\n","packages/contracts/tsconfig.json":"{\n\t\"compilerOptions\": {\n\t\t// Environment setup & latest features\n\t\t\"lib\": [\"ESNext\"],\n\t\t\"target\": \"ESNext\",\n\t\t\"module\": \"Preserve\",\n\t\t\"moduleDetection\": \"force\",\n\t\t\"jsx\": \"react-jsx\",\n\t\t\"types\": [\"bun\", \"node\"],\n\t\t\"allowJs\": true,\n\n\t\t// Bundler mode\n\t\t\"moduleResolution\": \"bundler\",\n\t\t\"allowImportingTsExtensions\": true,\n\t\t\"verbatimModuleSyntax\": true,\n\t\t\"noEmit\": true,\n\n\t\t// Best practices\n\t\t\"strict\": true,\n\t\t\"skipLibCheck\": true,\n\t\t\"noFallthroughCasesInSwitch\": true,\n\t\t\"noUncheckedIndexedAccess\": true,\n\t\t\"noImplicitOverride\": true,\n\n\t\t// Some stricter flags (disabled by default)\n\t\t\"noUnusedLocals\": false,\n\t\t\"noUnusedParameters\": false,\n\t\t\"noPropertyAccessFromIndexSignature\": false\n\t}\n}\n"},"files":{"packages/contracts/package.json":"{\n\t\"name\": \"@zerobyte/contracts\",\n\t\"private\": true,\n\t\"type\": \"module\",\n\t\"exports\": {\n\t\t\"./agent-connection\": {\n\t\t\t\"types\": \"./src/agent-connection.ts\",\n\t\t\t\"import\": \"./src/agent-connection.ts\",\n\t\t\t\"default\": \"./src/agent-connection.ts\"\n\t\t},\n\t\t\"./agent-token\": {\n\t\t\t\"types\": \"./src/agent-token.ts\",\n\t\t\t\"import\": \"./src/agent-token.ts\",\n\t\t\t\"default\": \"./src/agent-token.ts\"\n\t\t},\n\t\t\"./backup-context\": {\n\t\t\t\"types\": \"./src/backup-context.ts\",\n\t\t\t\"import\": \"./src/backup-context.ts\",\n\t\t\t\"default\": \"./src/backup-context.ts\"\n\t\t},\n\t\t\"./agent-protocol\": {\n\t\t\t\"types\": \"./src/agent-protocol.ts\",\n\t\t\t\"import\": \"./src/agent-protocol.ts\",\n\t\t\t\"default\": \"./src/agent-protocol.ts\"\n\t\t},\n\t\t\"./volumes\": {\n\t\t\t\"types\": \"./src/volumes.ts\",\n\t\t\t\"import\": \"./src/volumes.ts\",\n\t\t\t\"default\": \"./src/volumes.ts\"\n\t\t}\n\t},\n\t\"scripts\": {\n\t\t\"tsc\": \"tsc --noEmit\"\n\t},\n\t\"dependencies\": {\n\t\t\"@zerobyte/core\": \"workspace:*\",\n\t\t\"zod\": \"^4.6.7\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@types/bun\": \"latest\"\n\t},\n\t\"peerDependencies\": {\n\t\t\"typescript\": \"^7.0.2\"\n\t}\n}\n","packages/core/package.json":"{\n\t\"name\": \"@zerobyte/core\",\n\t\"private\": true,\n\t\"type\": \"module\",\n\t\"exports\": {\n\t\t\"./filesystem\": {\n\t\t\t\"types\": \"./src/filesystem/index.ts\",\n\t\t\t\"import\": \"./src/filesystem/index.ts\",\n\t\t\t\"default\": \"./src/filesystem/index.ts\"\n\t\t},\n\t\t\"./restic\": {\n\t\t\t\"types\": \"./src/restic/index.ts\",\n\t\t\t\"import\": \"./src/restic/index.ts\",\n\t\t\t\"default\": \"./src/restic/index.ts\"\n\t\t},\n\t\t\"./restic/server\": {\n\t\t\t\"types\": \"./src/restic/server.ts\",\n\t\t\t\"import\": \"./src/restic/server.ts\",\n\t\t\t\"default\": \"./src/restic/server.ts\"\n\t\t},\n\t\t\"./utils\": {\n\t\t\t\"types\": \"./src/utils/index.ts\",\n\t\t\t\"import\": \"./src/utils/index.ts\",\n\t\t\t\"default\": \"./src/utils/index.ts\"\n\t\t},\n\t\t\"./backup-hooks\": {\n\t\t\t\"types\": \"./src/backup-hooks/index.ts\",\n\t\t\t\"import\": \"./src/backup-hooks/index.ts\",\n\t\t\t\"default\": \"./src/backup-hooks/index.ts\"\n\t\t},\n\t\t\"./node\": {\n\t\t\t\"types\": \"./src/node/index.ts\",\n\t\t\t\"import\": \"./src/node/index.ts\",\n\t\t\t\"default\": \"./src/node/index.ts\"\n\t\t}\n\t},\n\t\"scripts\": {\n\t\t\"tsc\": \"tsc --noEmit\",\n\t\t\"test\": \"bunx --bun vitest run --config ./vitest.config.ts\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@types/bun\": \"^1.4.3\",\n\t\t\"fast-check\": \"^4.10.2\"\n\t},\n\t\"peerDependencies\": {\n\t\t\"typescript\": \"^5 || ^6.0.0 || ^7.0.0\"\n\t}\n}\n","packages/core/tsconfig.json":"{\n\t\"compilerOptions\": {\n\t\t\"plugins\": [{ \"name\": \"@effect/language-service\" }],\n\t\t// Environment setup & latest features\n\t\t\"lib\": [\"ESNext\"],\n\t\t\"target\": \"ESNext\",\n\t\t\"module\": \"Preserve\",\n\t\t\"moduleDetection\": \"force\",\n\t\t\"jsx\": \"react-jsx\",\n\t\t\"types\": [\"bun\", \"node\"],\n\t\t\"allowJs\": true,\n\n\t\t// Bundler mode\n\t\t\"moduleResolution\": \"bundler\",\n\t\t\"allowImportingTsExtensions\": true,\n\t\t\"verbatimModuleSyntax\": true,\n\t\t\"noEmit\": true,\n\n\t\t// Best practices\n\t\t\"strict\": true,\n\t\t\"skipLibCheck\": true,\n\t\t\"noFallthroughCasesInSwitch\": true,\n\t\t\"noUncheckedIndexedAccess\": true,\n\t\t\"noImplicitOverride\": true,\n\n\t\t// Some stricter flags (disabled by default)\n\t\t\"noUnusedLocals\": false,\n\t\t\"noUnusedParameters\": false,\n\t\t\"noPropertyAccessFromIndexSignature\": false\n\t}\n}\n",".github/copilot-instructions.md":"- This project uses the AGENTS.md file to give detailed information about the repository structure and development commands. Make sure to read this file before starting development.\n","packages/core/README.md":"# core\n\nTo install dependencies:\n\n```bash\nbun install\n```\n\nTo run:\n\n```bash\nbun run index.ts\n```\n\nThis project was created using `bun init` in bun v1.3.10. [Bun](https://bun.com) is a fast all-in-one JavaScript runtime.\n","AGENTS.md":"## Important instructions\n\n- Never create migration files manually. Always use the provided command to generate migrations\n- If you realize an automated migration is incorrect, make sure to remove all the associated entries from the `_journal.json` and the newly created files located in `app/drizzle/` before re-generating the migration\n- The dev server runs through Portless. Start it with `bun run dev`, then use `portless get zerobyte` to get the current worktree-specific URL. Do not assume a fixed port like `3000` or `4096`. Username is `admin` and password is `password`\n- The repo is https://github.com/nicotsx/zerobyte\n- If you need to run a specific restic command on a repository, you can open and use the dev panel with `Meta+Shift+D`\n\n## Project Overview\n\nZerobyte is a backup automation tool built on top of Restic that provides a web interface for scheduling, managing, and monitoring encrypted backups. It supports multiple volume backends (NFS, SMB, WebDAV, SFTP, local directories) and repository backends (S3, Azure, GCS, local, and rclone-based storage).\n\n### Development Server\n\n```bash\n# Start the dev server through Portless\nbun run dev\n\n# Get the current app URL for this worktree\nportless get zerobyte\n\n# Inspect active Portless routes if needed\nportless list\n```\n\nPortless applies git worktree prefixes automatically, so linked worktrees may return URLs like `https://branch-name.zerobyte.localhost`. Use the Portless URL for browser testing and manual verification.\n\n### Type Checking\n\n```bash\n# Run type checking and generate React Router types\nbun run tsc\n```\n\n### Testing\n\n```bash\n# Run all tests\nbun run test\n\n# Run a specific test file\nbunx dotenv run -f .env.test -- bunx --bun vitest run --project server path/to/test.ts\n```\n\n### Building\n\n```bash\n# Build for production\nbun run build\n```\n\n### Database Migrations\n\n```bash\n# Generate new migration from schema changes\nbun gen:migrations\n\n# Generate a custom empty migration\nbunx drizzle-kit generate --custom --name=fix-timestamps-to-ms\n\n```\n\n### Configuration Export Schema Changes\n\nConfiguration exports are permanent recovery artifacts. When a durable transferable field, backend, relationship, or serialized meaning changes, add a new config-transfer wire version. Do not modify a released version's schema, model, codec, fixture, or migration.\n\nFor a new version:\n\n- Add a self-contained versioned payload schema, model, and codec under `app/server/modules/system/config-transfer/vN/`. Historical schemas may reuse only immutable wire fragments, never live application schemas.\n- Add exactly one adjacent `vN-1` to `vN` model migration with concrete input and output types. Compose these functions explicitly in the version branches in `payload.ts` so every historical version reaches the current model. Keep every historical decoder and migration so old exports remain importable.\n- Make the new version current in `payload.ts`; export only the current version while retaining every import branch.\n- Add a permanent fixture and tests for wire round-tripping, migration defaults/semantic conversions, current-model import, and the clear update-required error for newer unsupported exports.\n- Keep the exact type-equality check between the current transfer model and the current encoded model so new transferable fields cannot be silently omitted.\n\nChanges that do not affect transferable meaning, such as database indexes, internal IDs, caches, UI state, and refactors that preserve the wire representation, do not require a new version.\n\n### Agent Protocol Compatibility\n\nThe server and remote agents can be upgraded independently. Their compatibility is determined by the protocol version in `packages/contracts/src/agent-protocol.ts`, not their application release versions.\n\n- Bump `AGENT_PROTOCOL_VERSION` whenever a change makes existing agents or servers incompatible. This includes removing or renaming messages or fields, changing field types or meanings, adding required fields, or sending commands that older peers cannot handle. Review both communication directions, including command responses and capabilities.\n- Internal refactors and application version changes do not require a protocol bump. Additive changes may keep the protocol version only when supported older peers safely tolerate them and newer peers handle their absence. Do not assume a schema addition is backward compatible.\n- Set `SUPPORTED_AGENT_PROTOCOL_MIN_VERSION` and `SUPPORTED_AGENT_PROTOCOL_MAX_VERSION` deliberately. Both currently reference `AGENT_PROTOCOL_VERSION`, so a bump rejects every previous protocol version. Support multiple versions only when the implementation actually handles each version's messages and behavior.\n- Preserve the startup compatibility check: incompatible agents must be rejected before being marked online or receiving operational commands. Keep the initial handshake readable enough to identify older and newer protocols and report the rejection reason.\n- Update compatibility tests alongside protocol changes. Cover rejected older/newer versions and blocked command dispatch; if retaining older protocol support, test exchanges with those older message shapes and semantics. Call out required server or agent upgrades in the release notes.\n\n### API Client Generation\n\n```bash\nbun run gen:api-client\n```\n\n### Code Quality\n\n```bash\n# Format\nbun run fmt -- <path>\n\n# Lint\nbun run lint\n```\n\n### Invalidation\n\nThe frontend has an automatic invalidation setup which runs after every mutation.\nDo not implement any invalidation logic in the frontend.\n","packages/contracts/tsconfig.json":"{\n\t\"compilerOptions\": {\n\t\t// Environment setup & latest features\n\t\t\"lib\": [\"ESNext\"],\n\t\t\"target\": \"ESNext\",\n\t\t\"module\": \"Preserve\",\n\t\t\"moduleDetection\": \"force\",\n\t\t\"jsx\": \"react-jsx\",\n\t\t\"types\": [\"bun\", \"node\"],\n\t\t\"allowJs\": true,\n\n\t\t// Bundler mode\n\t\t\"moduleResolution\": \"bundler\",\n\t\t\"allowImportingTsExtensions\": true,\n\t\t\"verbatimModuleSyntax\": true,\n\t\t\"noEmit\": true,\n\n\t\t// Best practices\n\t\t\"strict\": true,\n\t\t\"skipLibCheck\": true,\n\t\t\"noFallthroughCasesInSwitch\": true,\n\t\t\"noUncheckedIndexedAccess\": true,\n\t\t\"noImplicitOverride\": true,\n\n\t\t// Some stricter flags (disabled by default)\n\t\t\"noUnusedLocals\": false,\n\t\t\"noUnusedParameters\": false,\n\t\t\"noPropertyAccessFromIndexSignature\": false\n\t}\n}\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","rawUrl":"https://raw.githubusercontent.com/nicotsx/zerobyte/HEAD/AGENTS.md","title":"AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"## Important instructions\n\n- Never create migration files manually. Always use the provided command to generate migrations\n- If you realize an automated migration is incorrect, make sure to remove all the associated entries from the `_journal.json` and the newly created files located in `app/drizzle/` before re-generating the migration\n- The dev server runs through Portless. Start it with `bun run dev`, then use `portless get zerobyte` to get the current worktree-specific URL. Do not assume a fixed port like `3000` or `4096`. Username is `admin` and password is `password`\n- The repo is https://github.com/nicotsx/zerobyte\n- If you need to run a specific restic command on a repository, you can open and use the dev panel with `Meta+Shift+D`\n\n## Project Overview\n\nZerobyte is a backup automation tool built on top of Restic that provides a web interface for scheduling, managing, and monitoring encrypted backups. It supports multiple volume backends (NFS, SMB, WebDAV, SFTP, local directories) and repository backends (S3, Azure, GCS, local, and rclone-based storage).\n\n### Development Server\n\n```bash\n# Start the dev server through Portless\nbun run dev\n\n# Get the current app URL for this worktree\nportless get zerobyte\n\n# Inspect active Portless routes if needed\nportless list\n```\n\nPortless applies git worktree prefixes automatically, so linked worktrees may return URLs like `https://branch-name.zerobyte.localhost`. Use the Portless URL for browser testing and manual verification.\n\n### Type Checking\n\n```bash\n# Run type checking and generate React Router types\nbun run tsc\n```\n\n### Testing\n\n```bash\n# Run all tests\nbun run test\n\n# Run a specific test file\nbunx dotenv run -f .env.test -- bunx --bun vitest run --project server path/to/test.ts\n```\n\n### Building\n\n```bash\n# Build for production\nbun run build\n```\n\n### Database Migrations\n\n```bash\n# Generate new migration from schema changes\nbun gen:migrations\n\n# Generate a custom empty migration\nbunx drizzle-kit generate --custom --name=fix-timestamps-to-ms\n\n```\n\n### Configuration Export Schema Changes\n\nConfiguration exports are permanent recovery artifacts. When a durable transferable field, backend, relationship, or serialized meaning changes, add a new config-transfer wire version. Do not modify a released version's schema, model, codec, fixture, or migration.\n\nFor a new version:\n\n- Add a self-contained versioned payload schema, model, and codec under `app/server/modules/system/config-transfer/vN/`. Historical schemas may reuse only immutable wire fragments, never live application schemas.\n- Add exactly one adjacent `vN-1` to `vN` model migration with concrete input and output types. Compose these functions explicitly in the version branches in `payload.ts` so every historical version reaches the current model. Keep every historical decoder and migration so old exports remain importable.\n- Make the new version current in `payload.ts`; export only the current version while retaining every import branch.\n- Add a permanent fixture and tests for wire round-tripping, migration defaults/semantic conversions, current-model import, and the clear update-required error for newer unsupported exports.\n- Keep the exact type-equality check between the current transfer model and the current encoded model so new transferable fields cannot be silently omitted.\n\nChanges that do not affect transferable meaning, such as database indexes, internal IDs, caches, UI state, and refactors that preserve the wire representation, do not require a new version.\n\n### Agent Protocol Compatibility\n\nThe server and remote agents can be upgraded independently. Their compatibility is determined by the protocol version in `packages/contracts/src/agent-protocol.ts`, not their application release versions.\n\n- Bump `AGENT_PROTOCOL_VERSION` whenever a change makes existing agents or servers incompatible. This includes removing or renaming messages or fields, changing field types or meanings, adding required fields, or sending commands that older peers cannot handle. Review both communication directions, including command responses and capabilities.\n- Internal refactors and application version changes do not require a protocol bump. Additive changes may keep the protocol version only when supported older peers safely tolerate them and newer peers handle their absence. Do not assume a schema addition is backward compatible.\n- Set `SUPPORTED_AGENT_PROTOCOL_MIN_VERSION` and `SUPPORTED_AGENT_PROTOCOL_MAX_VERSION` deliberately. Both currently reference `AGENT_PROTOCOL_VERSION`, so a bump rejects every previous protocol version. Support multiple versions only when the implementation actually handles each version's messages and behavior.\n- Preserve the startup compatibility check: incompatible agents must be rejected before being marked online or receiving operational commands. Keep the initial handshake readable enough to identify older and newer protocols and report the rejection reason.\n- Update compatibility tests alongside protocol changes. Cover rejected older/newer versions and blocked command dispatch; if retaining older protocol support, test exchanges with those older message shapes and semantics. Call out required server or agent upgrades in the release notes.\n\n### API Client Generation\n\n```bash\nbun run gen:api-client\n```\n\n### Code Quality\n\n```bash\n# Format\nbun run fmt -- <path>\n\n# Lint\nbun run lint\n```\n\n### Invalidation\n\nThe frontend has an automatic invalidation setup which runs after every mutation.\nDo not implement any invalidation logic in the frontend.\n","isInternal":false,"tokens":1139,"sizeBytes":5556},{"name":"package.json","path":"packages/contracts/package.json","rawUrl":"https://raw.githubusercontent.com/nicotsx/zerobyte/HEAD/packages/contracts/package.json","title":"@zerobyte/contracts","category":"anthropic-skill","format":"json","content":"{\n\t\"name\": \"@zerobyte/contracts\",\n\t\"private\": true,\n\t\"type\": \"module\",\n\t\"exports\": {\n\t\t\"./agent-connection\": {\n\t\t\t\"types\": \"./src/agent-connection.ts\",\n\t\t\t\"import\": \"./src/agent-connection.ts\",\n\t\t\t\"default\": \"./src/agent-connection.ts\"\n\t\t},\n\t\t\"./agent-token\": {\n\t\t\t\"types\": \"./src/agent-token.ts\",\n\t\t\t\"import\": \"./src/agent-token.ts\",\n\t\t\t\"default\": \"./src/agent-token.ts\"\n\t\t},\n\t\t\"./backup-context\": {\n\t\t\t\"types\": \"./src/backup-context.ts\",\n\t\t\t\"import\": \"./src/backup-context.ts\",\n\t\t\t\"default\": \"./src/backup-context.ts\"\n\t\t},\n\t\t\"./agent-protocol\": {\n\t\t\t\"types\": \"./src/agent-protocol.ts\",\n\t\t\t\"import\": \"./src/agent-protocol.ts\",\n\t\t\t\"default\": \"./src/agent-protocol.ts\"\n\t\t},\n\t\t\"./volumes\": {\n\t\t\t\"types\": \"./src/volumes.ts\",\n\t\t\t\"import\": \"./src/volumes.ts\",\n\t\t\t\"default\": \"./src/volumes.ts\"\n\t\t}\n\t},\n\t\"scripts\": {\n\t\t\"tsc\": \"tsc --noEmit\"\n\t},\n\t\"dependencies\": {\n\t\t\"@zerobyte/core\": \"workspace:*\",\n\t\t\"zod\": \"^4.6.7\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@types/bun\": \"latest\"\n\t},\n\t\"peerDependencies\": {\n\t\t\"typescript\": \"^7.0.2\"\n\t}\n}\n","frontmatter":{"name":"@zerobyte/contracts","private":true,"type":"module","exports":{"./agent-connection":{"types":"./src/agent-connection.ts","import":"./src/agent-connection.ts","default":"./src/agent-connection.ts"},"./agent-token":{"types":"./src/agent-token.ts","import":"./src/agent-token.ts","default":"./src/agent-token.ts"},"./backup-context":{"types":"./src/backup-context.ts","import":"./src/backup-context.ts","default":"./src/backup-context.ts"},"./agent-protocol":{"types":"./src/agent-protocol.ts","import":"./src/agent-protocol.ts","default":"./src/agent-protocol.ts"},"./volumes":{"types":"./src/volumes.ts","import":"./src/volumes.ts","default":"./src/volumes.ts"}},"scripts":{"tsc":"tsc --noEmit"},"dependencies":{"@zerobyte/core":"workspace:*","zod":"^4.6.7"},"devDependencies":{"@types/bun":"latest"},"peerDependencies":{"typescript":"^7.0.2"}},"isInternal":false,"tokens":352,"sizeBytes":1018},{"name":"tsconfig.json","path":"packages/contracts/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/nicotsx/zerobyte/HEAD/packages/contracts/tsconfig.json","title":"Contracts Skill","category":"anthropic-skill","format":"json","content":"{\n\t\"compilerOptions\": {\n\t\t// Environment setup & latest features\n\t\t\"lib\": [\"ESNext\"],\n\t\t\"target\": \"ESNext\",\n\t\t\"module\": \"Preserve\",\n\t\t\"moduleDetection\": \"force\",\n\t\t\"jsx\": \"react-jsx\",\n\t\t\"types\": [\"bun\", \"node\"],\n\t\t\"allowJs\": true,\n\n\t\t// Bundler mode\n\t\t\"moduleResolution\": \"bundler\",\n\t\t\"allowImportingTsExtensions\": true,\n\t\t\"verbatimModuleSyntax\": true,\n\t\t\"noEmit\": true,\n\n\t\t// Best practices\n\t\t\"strict\": true,\n\t\t\"skipLibCheck\": true,\n\t\t\"noFallthroughCasesInSwitch\": true,\n\t\t\"noUncheckedIndexedAccess\": true,\n\t\t\"noImplicitOverride\": true,\n\n\t\t// Some stricter flags (disabled by default)\n\t\t\"noUnusedLocals\": false,\n\t\t\"noUnusedParameters\": false,\n\t\t\"noPropertyAccessFromIndexSignature\": false\n\t}\n}\n","isInternal":false,"tokens":226,"sizeBytes":695},{"name":"package.json","path":"packages/core/package.json","rawUrl":"https://raw.githubusercontent.com/nicotsx/zerobyte/HEAD/packages/core/package.json","title":"@zerobyte/core","category":"anthropic-skill","format":"json","content":"{\n\t\"name\": \"@zerobyte/core\",\n\t\"private\": true,\n\t\"type\": \"module\",\n\t\"exports\": {\n\t\t\"./filesystem\": {\n\t\t\t\"types\": \"./src/filesystem/index.ts\",\n\t\t\t\"import\": \"./src/filesystem/index.ts\",\n\t\t\t\"default\": \"./src/filesystem/index.ts\"\n\t\t},\n\t\t\"./restic\": {\n\t\t\t\"types\": \"./src/restic/index.ts\",\n\t\t\t\"import\": \"./src/restic/index.ts\",\n\t\t\t\"default\": \"./src/restic/index.ts\"\n\t\t},\n\t\t\"./restic/server\": {\n\t\t\t\"types\": \"./src/restic/server.ts\",\n\t\t\t\"import\": \"./src/restic/server.ts\",\n\t\t\t\"default\": \"./src/restic/server.ts\"\n\t\t},\n\t\t\"./utils\": {\n\t\t\t\"types\": \"./src/utils/index.ts\",\n\t\t\t\"import\": \"./src/utils/index.ts\",\n\t\t\t\"default\": \"./src/utils/index.ts\"\n\t\t},\n\t\t\"./backup-hooks\": {\n\t\t\t\"types\": \"./src/backup-hooks/index.ts\",\n\t\t\t\"import\": \"./src/backup-hooks/index.ts\",\n\t\t\t\"default\": \"./src/backup-hooks/index.ts\"\n\t\t},\n\t\t\"./node\": {\n\t\t\t\"types\": \"./src/node/index.ts\",\n\t\t\t\"import\": \"./src/node/index.ts\",\n\t\t\t\"default\": \"./src/node/index.ts\"\n\t\t}\n\t},\n\t\"scripts\": {\n\t\t\"tsc\": \"tsc --noEmit\",\n\t\t\"test\": \"bunx --bun vitest run --config ./vitest.config.ts\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@types/bun\": \"^1.4.3\",\n\t\t\"fast-check\": \"^4.10.2\"\n\t},\n\t\"peerDependencies\": {\n\t\t\"typescript\": \"^5 || ^6.0.0 || ^7.0.0\"\n\t}\n}\n","frontmatter":{"name":"@zerobyte/core","private":true,"type":"module","exports":{"./filesystem":{"types":"./src/filesystem/index.ts","import":"./src/filesystem/index.ts","default":"./src/filesystem/index.ts"},"./restic":{"types":"./src/restic/index.ts","import":"./src/restic/index.ts","default":"./src/restic/index.ts"},"./restic/server":{"types":"./src/restic/server.ts","import":"./src/restic/server.ts","default":"./src/restic/server.ts"},"./utils":{"types":"./src/utils/index.ts","import":"./src/utils/index.ts","default":"./src/utils/index.ts"},"./backup-hooks":{"types":"./src/backup-hooks/index.ts","import":"./src/backup-hooks/index.ts","default":"./src/backup-hooks/index.ts"},"./node":{"types":"./src/node/index.ts","import":"./src/node/index.ts","default":"./src/node/index.ts"}},"scripts":{"tsc":"tsc --noEmit","test":"bunx --bun vitest run --config ./vitest.config.ts"},"devDependencies":{"@types/bun":"^1.4.3","fast-check":"^4.10.2"},"peerDependencies":{"typescript":"^5 || ^6.0.0 || ^7.0.0"}},"isInternal":false,"tokens":404,"sizeBytes":1177},{"name":"tsconfig.json","path":"packages/core/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/nicotsx/zerobyte/HEAD/packages/core/tsconfig.json","title":"Core Skill","category":"anthropic-skill","format":"json","content":"{\n\t\"compilerOptions\": {\n\t\t\"plugins\": [{ \"name\": \"@effect/language-service\" }],\n\t\t// Environment setup & latest features\n\t\t\"lib\": [\"ESNext\"],\n\t\t\"target\": \"ESNext\",\n\t\t\"module\": \"Preserve\",\n\t\t\"moduleDetection\": \"force\",\n\t\t\"jsx\": \"react-jsx\",\n\t\t\"types\": [\"bun\", \"node\"],\n\t\t\"allowJs\": true,\n\n\t\t// Bundler mode\n\t\t\"moduleResolution\": \"bundler\",\n\t\t\"allowImportingTsExtensions\": true,\n\t\t\"verbatimModuleSyntax\": true,\n\t\t\"noEmit\": true,\n\n\t\t// Best practices\n\t\t\"strict\": true,\n\t\t\"skipLibCheck\": true,\n\t\t\"noFallthroughCasesInSwitch\": true,\n\t\t\"noUncheckedIndexedAccess\": true,\n\t\t\"noImplicitOverride\": true,\n\n\t\t// Some stricter flags (disabled by default)\n\t\t\"noUnusedLocals\": false,\n\t\t\"noUnusedParameters\": false,\n\t\t\"noPropertyAccessFromIndexSignature\": false\n\t}\n}\n","isInternal":false,"tokens":241,"sizeBytes":750},{"name":"copilot-instructions.md","path":".github/copilot-instructions.md","rawUrl":"https://raw.githubusercontent.com/nicotsx/zerobyte/HEAD/.github/copilot-instructions.md","title":"GitHub Copilot Instructions","category":"copilot-instructions","format":"markdown","content":"- This project uses the AGENTS.md file to give detailed information about the repository structure and development commands. Make sure to read this file before starting development.\n","isInternal":false,"tokens":31,"sizeBytes":182},{"name":"README.md","path":"packages/core/README.md","rawUrl":"https://raw.githubusercontent.com/nicotsx/zerobyte/HEAD/packages/core/README.md","title":"core Documentation","category":"plugin-manifest","format":"markdown","content":"# core\n\nTo install dependencies:\n\n```bash\nbun install\n```\n\nTo run:\n\n```bash\nbun run index.ts\n```\n\nThis project was created using `bun init` in bun v1.3.10. [Bun](https://bun.com) is a fast all-in-one JavaScript runtime.\n","isInternal":false,"tokens":68,"sizeBytes":220}],"systemPromptSnippet":"<yakaai_skills repo=\"nicotsx/zerobyte\">\n<!-- File: AGENTS.md (Tokens: ~1139 | Category: root-instruction) -->\n## Important instructions\n\n- Never create migration files manually. Always use the provided command to generate migrations\n- If you realize an automated migration is incorrect, make sure to remove all the associated entries from the `_journal.json` and the newly created files located in `app/drizzle/` before re-generating the migration\n- The dev server runs through Portless. Start it with `bun run dev`, then use `portless get zerobyte` to get the current worktree-specific URL. Do not assume a fixed port like `3000` or `4096`. Username is `admin` and password is `password`\n- The repo is https://github.com/nicotsx/zerobyte\n- If you need to run a specific restic command on a repository, you can open and use the dev panel with `Meta+Shift+D`\n\n## Project Overview\n\nZerobyte is a backup automation tool built on top of Restic that provides a web interface for scheduling, managing, and monitoring encrypted backups. It supports multiple volume backends (NFS, SMB, WebDAV, SFTP, local directories) and repository backends (S3, Azure, GCS, local, and rclone-based storage).\n\n### Development Server\n\n```bash\n# Start the dev server through Portless\nbun run dev\n\n# Get the current app URL for this worktree\nportless get zerobyte\n\n# Inspect active Portless routes if needed\nportless list\n```\n\nPortless applies git worktree prefixes automatically, so linked worktrees may return URLs like `https://branch-name.zerobyte.localhost`. Use the Portless URL for browser testing and manual verification.\n\n### Type Checking\n\n```bash\n# Run type checking and generate React Router types\nbun run tsc\n```\n\n### Testing\n\n```bash\n# Run all tests\nbun run test\n\n# Run a specific test file\nbunx dotenv run -f .env.test -- bunx --bun vitest run --project server path/to/test.ts\n```\n\n### Building\n\n```bash\n# Build for production\nbun run build\n```\n\n### Database Migrations\n\n```bash\n# Generate new migration from schema changes\nbun gen:migrations\n\n# Generate a custom empty migration\nbunx drizzle-kit generate --custom --name=fix-timestamps-to-ms\n\n```\n\n### Configuration Export Schema Changes\n\nConfiguration exports are permanent recovery artifacts. When a durable transferable field, backend, relationship, or serialized meaning changes, add a new config-transfer wire version. Do not modify a released version's schema, model, codec, fixture, or migration.\n\nFor a new version:\n\n- Add a self-contained versioned payload schema, model, and codec under `app/server/modules/system/config-transfer/vN/`. Historical schemas may reuse only immutable wire fragments, never live application schemas.\n- Add exactly one adjacent `vN-1` to `vN` model migration with concrete input and output types. Compose these functions explicitly in the version branches in `payload.ts` so every historical version reaches the current model. Keep every historical decoder and migration so old exports remain importable.\n- Make the new version current in `payload.ts`; export only the current version while retaining every import branch.\n- Add a permanent fixture and tests for wire round-tripping, migration defaults/semantic conversions, current-model import, and the clear update-required error for newer unsupported exports.\n- Keep the exact type-equality check between the current transfer model and the current encoded model so new transferable fields cannot be silently omitted.\n\nChanges that do not affect transferable meaning, such as database indexes, internal IDs, caches, UI state, and refactors that preserve the wire representation, do not require a new version.\n\n### Agent Protocol Compatibility\n\nThe server and remote agents can be upgraded independently. Their compatibility is determined by the protocol version in `packages/contracts/src/agent-protocol.ts`, not their application release versions.\n\n- Bump `AGENT_PROTOCOL_VERSION` whenever a change makes existing agents or servers incompatible. This includes removing or renaming messages or fields, changing field types or meanings, adding required fields, or sending commands that older peers cannot handle. Review both communication directions, including command responses and capabilities.\n- Internal refactors and application version changes do not require a protocol bump. Additive changes may keep the protocol version only when supported older peers safely tolerate them and newer peers handle their absence. Do not assume a schema addition is backward compatible.\n- Set `SUPPORTED_AGENT_PROTOCOL_MIN_VERSION` and `SUPPORTED_AGENT_PROTOCOL_MAX_VERSION` deliberately. Both currently reference `AGENT_PROTOCOL_VERSION`, so a bump rejects every previous protocol version. Support multiple versions only when the implementation actually handles each version's messages and behavior.\n- Preserve the startup compatibility check: incompatible agents must be rejected before being marked online or receiving operational commands. Keep the initial handshake readable enough to identify older and newer protocols and report the rejection reason.\n- Update compatibility tests alongside protocol changes. Cover rejected older/newer versions and blocked command dispatch; if retaining older protocol support, test exchanges with those older message shapes and semantics. Call out required server or agent upgrades in the release notes.\n\n### API Client Generation\n\n```bash\nbun run gen:api-client\n```\n\n### Code Quality\n\n```bash\n# Format\nbun run fmt -- <path>\n\n# Lint\nbun run lint\n```\n\n### Invalidation\n\nThe frontend has an automatic invalidation setup which runs after every mutation.\nDo not implement any invalidation logic in the frontend.\n\n<!-- File: packages/contracts/package.json (Tokens: ~352 | Category: anthropic-skill) -->\n{\n\t\"name\": \"@zerobyte/contracts\",\n\t\"private\": true,\n\t\"type\": \"module\",\n\t\"exports\": {\n\t\t\"./agent-connection\": {\n\t\t\t\"types\": \"./src/agent-connection.ts\",\n\t\t\t\"import\": \"./src/agent-connection.ts\",\n\t\t\t\"default\": \"./src/agent-connection.ts\"\n\t\t},\n\t\t\"./agent-token\": {\n\t\t\t\"types\": \"./src/agent-token.ts\",\n\t\t\t\"import\": \"./src/agent-token.ts\",\n\t\t\t\"default\": \"./src/agent-token.ts\"\n\t\t},\n\t\t\"./backup-context\": {\n\t\t\t\"types\": \"./src/backup-context.ts\",\n\t\t\t\"import\": \"./src/backup-context.ts\",\n\t\t\t\"default\": \"./src/backup-context.ts\"\n\t\t},\n\t\t\"./agent-protocol\": {\n\t\t\t\"types\": \"./src/agent-protocol.ts\",\n\t\t\t\"import\": \"./src/agent-protocol.ts\",\n\t\t\t\"default\": \"./src/agent-protocol.ts\"\n\t\t},\n\t\t\"./volumes\": {\n\t\t\t\"types\": \"./src/volumes.ts\",\n\t\t\t\"import\": \"./src/volumes.ts\",\n\t\t\t\"default\": \"./src/volumes.ts\"\n\t\t}\n\t},\n\t\"scripts\": {\n\t\t\"tsc\": \"tsc --noEmit\"\n\t},\n\t\"dependencies\": {\n\t\t\"@zerobyte/core\": \"workspace:*\",\n\t\t\"zod\": \"^4.6.7\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@types/bun\": \"latest\"\n\t},\n\t\"peerDependencies\": {\n\t\t\"typescript\": \"^7.0.2\"\n\t}\n}\n\n<!-- File: packages/contracts/tsconfig.json (Tokens: ~226 | Category: anthropic-skill) -->\n{\n\t\"compilerOptions\": {\n\t\t// Environment setup & latest features\n\t\t\"lib\": [\"ESNext\"],\n\t\t\"target\": \"ESNext\",\n\t\t\"module\": \"Preserve\",\n\t\t\"moduleDetection\": \"force\",\n\t\t\"jsx\": \"react-jsx\",\n\t\t\"types\": [\"bun\", \"node\"],\n\t\t\"allowJs\": true,\n\n\t\t// Bundler mode\n\t\t\"moduleResolution\": \"bundler\",\n\t\t\"allowImportingTsExtensions\": true,\n\t\t\"verbatimModuleSyntax\": true,\n\t\t\"noEmit\": true,\n\n\t\t// Best practices\n\t\t\"strict\": true,\n\t\t\"skipLibCheck\": true,\n\t\t\"noFallthroughCasesInSwitch\": true,\n\t\t\"noUncheckedIndexedAccess\": true,\n\t\t\"noImplicitOverride\": true,\n\n\t\t// Some stricter flags (disabled by default)\n\t\t\"noUnusedLocals\": false,\n\t\t\"noUnusedParameters\": false,\n\t\t\"noPropertyAccessFromIndexSignature\": false\n\t}\n}\n\n<!-- File: packages/core/package.json (Tokens: ~404 | Category: anthropic-skill) -->\n{\n\t\"name\": \"@zerobyte/core\",\n\t\"private\": true,\n\t\"type\": \"module\",\n\t\"exports\": {\n\t\t\"./filesystem\": {\n\t\t\t\"types\": \"./src/filesystem/index.ts\",\n\t\t\t\"import\": \"./src/filesystem/index.ts\",\n\t\t\t\"default\": \"./src/filesystem/index.ts\"\n\t\t},\n\t\t\"./restic\": {\n\t\t\t\"types\": \"./src/restic/index.ts\",\n\t\t\t\"import\": \"./src/restic/index.ts\",\n\t\t\t\"default\": \"./src/restic/index.ts\"\n\t\t},\n\t\t\"./restic/server\": {\n\t\t\t\"types\": \"./src/restic/server.ts\",\n\t\t\t\"import\": \"./src/restic/server.ts\",\n\t\t\t\"default\": \"./src/restic/server.ts\"\n\t\t},\n\t\t\"./utils\": {\n\t\t\t\"types\": \"./src/utils/index.ts\",\n\t\t\t\"import\": \"./src/utils/index.ts\",\n\t\t\t\"default\": \"./src/utils/index.ts\"\n\t\t},\n\t\t\"./backup-hooks\": {\n\t\t\t\"types\": \"./src/backup-hooks/index.ts\",\n\t\t\t\"import\": \"./src/backup-hooks/index.ts\",\n\t\t\t\"default\": \"./src/backup-hooks/index.ts\"\n\t\t},\n\t\t\"./node\": {\n\t\t\t\"types\": \"./src/node/index.ts\",\n\t\t\t\"import\": \"./src/node/index.ts\",\n\t\t\t\"default\": \"./src/node/index.ts\"\n\t\t}\n\t},\n\t\"scripts\": {\n\t\t\"tsc\": \"tsc --noEmit\",\n\t\t\"test\": \"bunx --bun vitest run --config ./vitest.config.ts\"\n\t},\n\t\"devDependencies\": {\n\t\t\"@types/bun\": \"^1.4.3\",\n\t\t\"fast-check\": \"^4.10.2\"\n\t},\n\t\"peerDependencies\": {\n\t\t\"typescript\": \"^5 || ^6.0.0 || ^7.0.0\"\n\t}\n}\n\n<!-- File: packages/core/tsconfig.json (Tokens: ~241 | Category: anthropic-skill) -->\n{\n\t\"compilerOptions\": {\n\t\t\"plugins\": [{ \"name\": \"@effect/language-service\" }],\n\t\t// Environment setup & latest features\n\t\t\"lib\": [\"ESNext\"],\n\t\t\"target\": \"ESNext\",\n\t\t\"module\": \"Preserve\",\n\t\t\"moduleDetection\": \"force\",\n\t\t\"jsx\": \"react-jsx\",\n\t\t\"types\": [\"bun\", \"node\"],\n\t\t\"allowJs\": true,\n\n\t\t// Bundler mode\n\t\t\"moduleResolution\": \"bundler\",\n\t\t\"allowImportingTsExtensions\": true,\n\t\t\"verbatimModuleSyntax\": true,\n\t\t\"noEmit\": true,\n\n\t\t// Best practices\n\t\t\"strict\": true,\n\t\t\"skipLibCheck\": true,\n\t\t\"noFallthroughCasesInSwitch\": true,\n\t\t\"noUncheckedIndexedAccess\": true,\n\t\t\"noImplicitOverride\": true,\n\n\t\t// Some stricter flags (disabled by default)\n\t\t\"noUnusedLocals\": false,\n\t\t\"noUnusedParameters\": false,\n\t\t\"noPropertyAccessFromIndexSignature\": false\n\t}\n}\n\n<!-- File: .github/copilot-instructions.md (Tokens: ~31 | Category: copilot-instructions) -->\n- This project uses the AGENTS.md file to give detailed information about the repository structure and development commands. Make sure to read this file before starting development.\n\n<!-- File: packages/core/README.md (Tokens: ~68 | Category: plugin-manifest) -->\n# core\n\nTo install dependencies:\n\n```bash\nbun install\n```\n\nTo run:\n\n```bash\nbun run index.ts\n```\n\nThis project was created using `bun init` in bun v1.3.10. [Bun](https://bun.com) is a fast all-in-one JavaScript runtime.\n</yakaai_skills>"}