diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 242cefd8..924b0270 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -15,7 +15,7 @@ updates: include: "scope" - package-ecosystem: "npm" - directory: "/workspace-mcp-server" + directory: "/workspace-server" schedule: interval: "weekly" open-pull-requests-limit: 5 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cd6328f8..794f068d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,7 +34,7 @@ jobs: run: npm run lint - name: Run type checking - run: npx tsc --noEmit --project workspace-mcp-server + run: npx tsc --noEmit --project workspace-server - name: Run tests with coverage run: npm run test:ci @@ -42,7 +42,7 @@ jobs: - name: Upload coverage to Codecov uses: codecov/codecov-action@v5 with: - directory: ./workspace-mcp-server/coverage + directory: ./workspace-server/coverage flags: unittests name: codecov-umbrella fail_ci_if_error: false @@ -71,7 +71,7 @@ jobs: uses: actions/upload-artifact@v5 with: name: dist - path: workspace-mcp-server/dist/ + path: workspace-server/dist/ security: runs-on: ubuntu-latest diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e4946dfe..47f80425 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,7 +26,7 @@ jobs: run: npm ci - name: Build extension - run: npm run build --workspace=workspace-mcp-server + run: npm run build --workspace=workspace-server - name: Create release assets run: npm run release @@ -35,4 +35,4 @@ jobs: uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: - files: release/workspace-mcp-server.tar.gz \ No newline at end of file + files: release/google-workspace-extension.tar.gz \ No newline at end of file diff --git a/GEMINI.md b/GEMINI.md index 959c8bf5..b67b3918 100644 --- a/GEMINI.md +++ b/GEMINI.md @@ -3,7 +3,7 @@ This is a Gemini extension that provides tools for interacting with Google Works ### Building and Running * **Install dependencies:** `npm install` -* **Build the project:** `npm run build --prefix workspace-mcp-server` +* **Build the project:** `npm run build --prefix workspace-server` ### Development Conventions diff --git a/docs/development.md b/docs/development.md index 1413602c..90cf52c8 100644 --- a/docs/development.md +++ b/docs/development.md @@ -50,7 +50,7 @@ To execute the unit test suite for the project: npm run test ``` -This will run tests located in the `workspace-mcp-server/src/__tests__` directory. Ensure tests pass before submitting any changes. For a more comprehensive check, it is recommended to run `npm run test && npm run lint`. +This will run tests located in the `workspace-server/src/__tests__` directory. Ensure tests pass before submitting any changes. For a more comprehensive check, it is recommended to run `npm run test && npm run lint`. ### Linting and Style Checks @@ -102,7 +102,7 @@ npm run lint ### Project Structure -- `workspace-mcp-server/`: The main workspace for the MCP server. +- `workspace-server/`: The main workspace for the MCP server. - `src/`: Contains the source code for the server. - `__tests__/`: Contains all the tests. - `auth/`: Handles authentication. diff --git a/docs/release.md b/docs/release.md index 6158a86d..5c123d3a 100644 --- a/docs/release.md +++ b/docs/release.md @@ -20,7 +20,7 @@ gh release create v1.0.0 --generate-notes 1. **GitHub Actions Trigger**: The `release.yml` workflow is triggered by the new tag. 2. **Build**: The workflow builds the project using `npm run build`. -3. **Package**: It creates a `workspace-mcp-server.tar.gz` file containing the extension. +3. **Package**: It creates a `workspace-server.tar.gz` file containing the extension. 4. **Upload**: The workflow uploads the tarball to the release you just created. ## Manual Release (Alternative) diff --git a/eslint.config.js b/eslint.config.js index adbb5dc9..c4291dda 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -14,7 +14,7 @@ module.exports = [ ignores: ['**/dist/', '*.js', '**/node_modules/', '**/coverage/', '!eslint.config.js'], }, { - files: ['workspace-mcp-server/src/**/*.ts'], + files: ['workspace-server/src/**/*.ts'], ignores: ['**/*.test.ts', '**/*.spec.ts'], languageOptions: { parser: tsParser, @@ -44,7 +44,7 @@ module.exports = [ }, }, { - files: ['workspace-mcp-server/src/**/*.test.ts', 'workspace-mcp-server/src/**/*.spec.ts'], + files: ['workspace-server/src/**/*.test.ts', 'workspace-server/src/**/*.spec.ts'], languageOptions: { parser: tsParser, parserOptions: { @@ -71,7 +71,7 @@ module.exports = [ }, { files: ['./**/*.{tsx,ts,js}'], - ignores: ['workspace-mcp-server/src/index.ts'], // Has shebang which conflicts with license header + ignores: ['workspace-server/src/index.ts'], // Has shebang which conflicts with license header plugins: { 'license-header': licenseHeader, import: importPlugin, @@ -91,7 +91,7 @@ module.exports = [ }, }, { - files: ['workspace-mcp-server/src/index.ts'], + files: ['workspace-server/src/index.ts'], plugins: { import: importPlugin, }, diff --git a/gemini-extension.json b/gemini-extension.json index 48d17742..c154e3c9 100644 --- a/gemini-extension.json +++ b/gemini-extension.json @@ -1,13 +1,12 @@ { "name": "google-workspace", - "version": "0.0.1", - "contextFileName": "workspace-mcp-server${/}WORKSPACE-Context.md", + "version": "DEV", + "contextFileName": "workspace-server${/}WORKSPACE-Context.md", "mcpServers": { "google-workspace": { + "program": "./workspace-server/dist/index.js", "command": "node", - "args": [ - "scripts${/}start.js" - ], + "args": ["scripts${/}start.js"], "cwd": "${extensionPath}" } } diff --git a/jest.config.js b/jest.config.js index 2aa2d206..90da36ae 100644 --- a/jest.config.js +++ b/jest.config.js @@ -4,8 +4,8 @@ module.exports = { testEnvironment: 'node', projects: [ { - displayName: 'workspace-mcp-server', - testMatch: ['/workspace-mcp-server/src/**/*.test.ts', '/workspace-mcp-server/src/**/*.spec.ts'], + displayName: 'workspace-server', + testMatch: ['/workspace-server/src/**/*.test.ts', '/workspace-server/src/**/*.spec.ts'], transform: { '^.+\\.ts$': ['ts-jest', { tsconfig: { @@ -17,18 +17,19 @@ module.exports = { 'node_modules/(?!(marked)/)', ], moduleNameMapper: { - '^@/(.*)$': '/workspace-mcp-server/src/$1', - '\\.wasm$': '/workspace-mcp-server/src/__tests__/mocks/wasm.js', - '^marked$': '/workspace-mcp-server/src/__tests__/mocks/marked.js', - '^jsdom$': '/workspace-mcp-server/src/__tests__/mocks/jsdom.ts', + '^@/(.*)$': '/workspace-server/src/$1', + '\\.wasm$': '/workspace-server/src/__tests__/mocks/wasm.js', + '^marked$': '/workspace-server/src/__tests__/mocks/marked.js', + '^jsdom$': '/workspace-server/src/__tests__/mocks/jsdom.ts', }, - setupFilesAfterEnv: ['/workspace-mcp-server/src/__tests__/setup.ts'], + roots: ['/workspace-server/src'], + setupFilesAfterEnv: ['/workspace-server/src/__tests__/setup.ts'], collectCoverageFrom: [ - '/workspace-mcp-server/src/**/*.ts', - '!/workspace-mcp-server/src/**/*.d.ts', - '!/workspace-mcp-server/src/**/*.test.ts', - '!/workspace-mcp-server/src/**/*.spec.ts', - '!/workspace-mcp-server/src/index.ts', + '/workspace-server/src/**/*.ts', + '!/workspace-server/src/**/*.d.ts', + '!/workspace-server/src/**/*.test.ts', + '!/workspace-server/src/**/*.spec.ts', + '!/workspace-server/src/index.ts', ], coverageDirectory: '/coverage', coverageThreshold: { diff --git a/package-lock.json b/package-lock.json index 26f2de28..ac9fc9f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,16 +9,16 @@ "version": "1.0.0", "license": "Apache-2.0", "workspaces": [ - "workspace-mcp-server" + "workspace-server" ], "dependencies": { - "@google-apps/chat": "^0.19.0", + "@google-apps/chat": "^0.21.0", "@google-cloud/local-auth": "^3.0.1", - "@googleapis/docs": "^5.0.1", - "@googleapis/drive": "^15.0.0", + "@googleapis/docs": "^8.1.1", + "@googleapis/drive": "^19.2.0", "@modelcontextprotocol/sdk": "^1.17.5", "dompurify": "^3.1.6", - "google-auth-library": "^10.4.0", + "google-auth-library": "^10.5.0", "googleapis": "^166.0.0", "jsdom": "^27.2.0", "keytar": "^7.9.0", @@ -1439,9 +1439,9 @@ } }, "node_modules/@google-apps/chat": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@google-apps/chat/-/chat-0.19.1.tgz", - "integrity": "sha512-K7/bdQuWJp02QJp0AWDxPwvVfrNcdc71IYyDTAmEtt/zBmrwBJOqcPohqa8X59gF+G4y4xLqO8XjEk8c3+HyPw==", + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@google-apps/chat/-/chat-0.21.0.tgz", + "integrity": "sha512-IsccBlyuu2XDHaKGHISzBfB4Wm0efpzkydqtVyQKJSfG0Y9D33BE1REtoGcvkzL3QPw1zEJPmiHaqTNPKb+aSg==", "license": "Apache-2.0", "dependencies": { "google-gax": "^5.0.0" @@ -1577,24 +1577,24 @@ } }, "node_modules/@googleapis/docs": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@googleapis/docs/-/docs-5.0.1.tgz", - "integrity": "sha512-RvS48srbAlh0lhOI9/ng+U4gVFLMFgjervh3RU2rzMnwzrHUUikOKj6oikKRN+h16Bw3Hucz7jHP2m8u8p6VrQ==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@googleapis/docs/-/docs-8.1.1.tgz", + "integrity": "sha512-A9pC+vnFK6vBb1scrsaG/3XKrH7heXuiYt+bKVsqbYJPUYpx378aF9aeRgcyitNchzasETjCwMJDIq1U8juYgA==", "license": "Apache-2.0", "dependencies": { - "googleapis-common": "^8.0.2-rc.0" + "googleapis-common": "^8.0.0" }, "engines": { "node": ">=12.0.0" } }, "node_modules/@googleapis/drive": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@googleapis/drive/-/drive-15.0.0.tgz", - "integrity": "sha512-PGuhTZMrS8HCJnFpYRhCU92GXgWEszku6XA517rYv1ohNB3nJFrVvjdMvzr/QOD4Q8R4Kg3fFLl6ULpKewLc0A==", + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@googleapis/drive/-/drive-19.2.0.tgz", + "integrity": "sha512-XzhQ+CNwW54umLecZLzQ5Q2RborJD1+u2YzJIT/BOpne+VJfsCyxWVG0nxYQmcGdiFXJPeW5+V3sdP/A/nt3eA==", "license": "Apache-2.0", "dependencies": { - "googleapis-common": "^8.0.2-rc.0" + "googleapis-common": "^8.0.0" }, "engines": { "node": ">=12.0.0" @@ -5998,9 +5998,9 @@ } }, "node_modules/google-auth-library": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.4.1.tgz", - "integrity": "sha512-VlvZ+QDWng3aPh++0BSQlSJyjn4qgLLTmqylAR3as0dr6YwPkZpHcZAngAFr68TDVCUSQVRTkV73K/D3m7vEIg==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.5.0.tgz", + "integrity": "sha512-7ABviyMOlX5hIVD60YOfHw4/CxOfBhyduaYB+wbFWCWoni4N7SLcV46hrVRktuBbZjFC9ONyqamZITN7q3n32w==", "license": "Apache-2.0", "dependencies": { "base64-js": "^1.3.0", @@ -6059,25 +6059,9 @@ } }, "node_modules/googleapis-common": { - "version": "8.0.2-rc.0", - "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-8.0.2-rc.0.tgz", - "integrity": "sha512-JTcxRvmFa9Ec1uyfMEimEMeeKq1sHNZX3vn2qmoUMtnvixXXvcqTcbDZvEZXkEWpGlPlOf4joyep6/qs0BrLyg==", - "license": "Apache-2.0", - "dependencies": { - "extend": "^3.0.2", - "gaxios": "^7.0.0-rc.4", - "google-auth-library": "^10.0.0-rc.1", - "qs": "^6.7.0", - "url-template": "^2.0.8" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/googleapis/node_modules/googleapis-common": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-8.0.0.tgz", - "integrity": "sha512-66if47It7y+Sab3HMkwEXx1kCq9qUC9px8ZXoj1CMrmLmUw81GpbnsNlXnlyZyGbGPGcj+tDD9XsZ23m7GLaJQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-8.0.1.tgz", + "integrity": "sha512-eCzNACUXPb1PW5l0ULTzMHaL/ltPRADoPgjBlT8jWsTbxkCp6siv+qKJ/1ldaybCthGwsYFYallF7u9AkU4L+A==", "license": "Apache-2.0", "dependencies": { "extend": "^3.0.2", @@ -10992,8 +10976,8 @@ "dev": true, "license": "MIT" }, - "node_modules/workspace-mcp-server": { - "resolved": "workspace-mcp-server", + "node_modules/workspace-server": { + "resolved": "workspace-server", "link": true }, "node_modules/wrap-ansi": { @@ -11288,6 +11272,14 @@ } }, "workspace-mcp-server": { + "version": "1.0.0", + "extraneous": true, + "license": "ISC", + "devDependencies": { + "esbuild": "^0.27.0" + } + }, + "workspace-server": { "version": "1.0.0", "license": "ISC", "devDependencies": { diff --git a/package.json b/package.json index 548c83d6..360038d1 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "gemini-workspace-server": "workspace-mcp-server/dist/index.js" }, "workspaces": [ - "workspace-mcp-server" + "workspace-server" ], "scripts": { "prepare": "npm run build", @@ -17,20 +17,21 @@ "test:coverage": "npm run test:coverage --workspaces --if-present", "test:ci": "npm run test:ci --workspaces --if-present", "start": "npm run start --workspaces --if-present", - "auth-utils": "npm run build:auth-utils -w workspace-mcp-server && node scripts/auth-utils.js", - "clean": "rm -rf release && npm run clean --workspaces --if-present", + "auth-utils": "npm run build:auth-utils -w workspace-server && node scripts/auth-utils.js", + "clean": "npm run clean --workspaces --if-present && rm -rf release node_modules logs", "lint": "eslint .", "lint:fix": "eslint . --fix", - "release": "node scripts/release.js" + "release": "node scripts/release.js", + "release:dev": "npm install && npm run build && node scripts/release.js" }, "dependencies": { - "@google-apps/chat": "^0.19.0", + "@google-apps/chat": "^0.21.0", "@google-cloud/local-auth": "^3.0.1", - "@googleapis/docs": "^5.0.1", - "@googleapis/drive": "^15.0.0", + "@googleapis/docs": "^8.1.1", + "@googleapis/drive": "^19.2.0", "@modelcontextprotocol/sdk": "^1.17.5", "dompurify": "^3.1.6", - "google-auth-library": "^10.4.0", + "google-auth-library": "^10.5.0", "googleapis": "^166.0.0", "jsdom": "^27.2.0", "keytar": "^7.9.0", diff --git a/scripts/list-deps.js b/scripts/list-deps.js new file mode 100644 index 00000000..c5ef70f7 --- /dev/null +++ b/scripts/list-deps.js @@ -0,0 +1,25 @@ +/** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +const path = require('node:path'); +const { getTransitiveDependencies } = require('./utils/dependencies'); + +const root = path.join(__dirname, '..'); +const targetPackages = process.argv.slice(2); + +if (targetPackages.length === 0) { + console.log('Usage: node scripts/list-deps.js [package2...]'); + process.exit(1); +} + +console.log(`Analyzing dependencies for: ${targetPackages.join(', ')}`); + +const allDeps = getTransitiveDependencies(root, targetPackages); + +console.log('\nTransitive Dependencies:'); +Array.from(allDeps).sort().forEach(dep => { + console.log(`- ${dep}`); +}); diff --git a/scripts/release.js b/scripts/release.js index ba5d6bd5..a1280f63 100644 --- a/scripts/release.js +++ b/scripts/release.js @@ -27,7 +27,7 @@ const deleteFilesByExtension = (dir, ext) => { }; const main = async () => { - const name = 'workspace-mcp-server'; + const name = 'google-workspace-extension'; const extension = 'tar.gz'; const rootDir = path.join(__dirname, '..'); @@ -35,7 +35,7 @@ const main = async () => { fs.rmSync(releaseDir, { recursive: true, force: true }); const archiveName = `${name}.${extension}`; const archiveDir = path.join(releaseDir, name); - const workspaceMcpServerDir = path.join(rootDir, 'workspace-mcp-server'); + const workspaceMcpServerDir = path.join(rootDir, 'workspace-server'); // Create the release directory fs.mkdirSync(releaseDir, { recursive: true }); @@ -59,6 +59,21 @@ const main = async () => { fs.rmSync(path.join(distDir, 'services'), { recursive: true, force: true }); fs.rmSync(path.join(distDir, 'utils'), { recursive: true, force: true }); + // Copy native modules and dependencies (keytar, jsdom) + const nodeModulesDir = path.join(archiveDir, 'node_modules'); + fs.mkdirSync(nodeModulesDir, { recursive: true }); + + const { getTransitiveDependencies } = require('./utils/dependencies'); + const visited = getTransitiveDependencies(rootDir, ['keytar', 'jsdom']); + + visited.forEach(pkg => { + const source = path.join(rootDir, 'node_modules', pkg); + const dest = path.join(nodeModulesDir, pkg); + if (fs.existsSync(source)) { + fs.cpSync(source, dest, { recursive: true }); + } + }); + const version = process.env.GITHUB_REF_NAME || '0.0.1'; // Generate the gemini-extension.json file @@ -66,11 +81,11 @@ const main = async () => { name: 'google-workspace', version, contextFileName: 'WORKSPACE-Context.md', - cwd: '${extensionPath}', mcpServers: { 'google-workspace': { command: 'node', args: ['dist/index.js'], + cwd: '${extensionPath}', }, }, }; @@ -85,6 +100,12 @@ const main = async () => { path.join(archiveDir, 'WORKSPACE-Context.md') ); + // Copy the commands directory + const commandsDir = path.join(rootDir, 'commands'); + if (fs.existsSync(commandsDir)) { + fs.cpSync(commandsDir, path.join(archiveDir, 'commands'), { recursive: true }); + } + // Create the archive const output = fs.createWriteStream(path.join(releaseDir, archiveName)); diff --git a/scripts/start.js b/scripts/start.js index 599b8455..26f7fd85 100755 --- a/scripts/start.js +++ b/scripts/start.js @@ -34,8 +34,8 @@ async function main() { try { await runCommand('npm', ['install'], { stdio: ['ignore', 'ignore', 'pipe'] }); - const indexPath = path.join(__dirname, '..', 'workspace-mcp-server', 'dist', 'index.js'); - await runCommand('node', [indexPath, '--debug'], { stdio: 'inherit' }); + const SERVER_PATH = path.join(__dirname, '..', 'workspace-server', 'dist', 'index.js'); + await runCommand('node', [SERVER_PATH, '--debug'], { stdio: 'inherit' }); } catch (error) { console.error(error); process.exit(1); diff --git a/scripts/utils/dependencies.js b/scripts/utils/dependencies.js new file mode 100644 index 00000000..30997b0a --- /dev/null +++ b/scripts/utils/dependencies.js @@ -0,0 +1,54 @@ +/** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +const fs = require('node:fs'); +const path = require('node:path'); + +/** + * Gets the direct dependencies of a package from its package.json. + * @param {string} rootDir - The root directory containing node_modules. + * @param {string} pkgName - The name of the package. + * @returns {string[]} - A list of dependency names. + */ +function getDependencies(rootDir, pkgName) { + const pkgPath = path.join(rootDir, 'node_modules', pkgName, 'package.json'); + if (!fs.existsSync(pkgPath)) { + return []; + } + const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8')); + return Object.keys(pkg.dependencies || {}); +} + +/** + * Recursively finds all transitive dependencies for a list of packages. + * @param {string} rootDir - The root directory containing node_modules. + * @param {string[]} startPkgs - The list of initial packages to resolve. + * @returns {Set} - A set of all transitive dependencies (including startPkgs). + */ +function getTransitiveDependencies(rootDir, startPkgs) { + const visited = new Set(); + const toVisit = [...startPkgs]; + + while (toVisit.length > 0) { + const pkg = toVisit.pop(); + if (visited.has(pkg)) continue; + visited.add(pkg); + + const deps = getDependencies(rootDir, pkg); + deps.forEach(dep => { + if (!visited.has(dep)) { + toVisit.push(dep); + } + }); + } + + return visited; +} + +module.exports = { + getDependencies, + getTransitiveDependencies +}; diff --git a/tsconfig.json b/tsconfig.json index 562192dc..35cf7364 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,7 +13,7 @@ "sourceMap": true }, "include": [ - "workspace-mcp-server/src/**/*" + "workspace-server/src/**/*" ], "exclude": [ "node_modules", diff --git a/workspace-mcp-server/.github/workflows/ci.yml b/workspace-server/.github/workflows/ci.yml similarity index 100% rename from workspace-mcp-server/.github/workflows/ci.yml rename to workspace-server/.github/workflows/ci.yml diff --git a/workspace-mcp-server/.github/workflows/release.yml b/workspace-server/.github/workflows/release.yml similarity index 100% rename from workspace-mcp-server/.github/workflows/release.yml rename to workspace-server/.github/workflows/release.yml diff --git a/workspace-mcp-server/WORKSPACE-Context.md b/workspace-server/WORKSPACE-Context.md similarity index 100% rename from workspace-mcp-server/WORKSPACE-Context.md rename to workspace-server/WORKSPACE-Context.md diff --git a/workspace-mcp-server/esbuild.auth-utils.js b/workspace-server/esbuild.auth-utils.js similarity index 100% rename from workspace-mcp-server/esbuild.auth-utils.js rename to workspace-server/esbuild.auth-utils.js diff --git a/workspace-mcp-server/esbuild.config.js b/workspace-server/esbuild.config.js similarity index 100% rename from workspace-mcp-server/esbuild.config.js rename to workspace-server/esbuild.config.js diff --git a/workspace-mcp-server/jest.config.js b/workspace-server/jest.config.js similarity index 100% rename from workspace-mcp-server/jest.config.js rename to workspace-server/jest.config.js diff --git a/workspace-mcp-server/package.json b/workspace-server/package.json similarity index 90% rename from workspace-mcp-server/package.json rename to workspace-server/package.json index 7ab40d8e..7f26ec0e 100644 --- a/workspace-mcp-server/package.json +++ b/workspace-server/package.json @@ -1,5 +1,5 @@ { - "name": "workspace-mcp-server", + "name": "workspace-server", "version": "1.0.0", "description": "", "main": "dist/index.js", @@ -9,7 +9,7 @@ "test:coverage": "cd .. && node --max-old-space-size=4096 node_modules/.bin/jest --coverage", "test:ci": "cd .. && node --max-old-space-size=4096 node_modules/.bin/jest --ci --coverage --maxWorkers=2", "start": "ts-node src/index.ts", - "clean": "rm -rf dist", + "clean": "rm -rf dist node_modules", "build": "node esbuild.config.js", "build:auth-utils": "node esbuild.auth-utils.js" }, diff --git a/workspace-mcp-server/src/__tests__/auth/AuthManager.test.ts b/workspace-server/src/__tests__/auth/AuthManager.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/auth/AuthManager.test.ts rename to workspace-server/src/__tests__/auth/AuthManager.test.ts diff --git a/workspace-mcp-server/src/__tests__/auth/token-storage/base-token-storage.test.ts b/workspace-server/src/__tests__/auth/token-storage/base-token-storage.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/auth/token-storage/base-token-storage.test.ts rename to workspace-server/src/__tests__/auth/token-storage/base-token-storage.test.ts diff --git a/workspace-mcp-server/src/__tests__/auth/token-storage/file-token-storage.test.ts b/workspace-server/src/__tests__/auth/token-storage/file-token-storage.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/auth/token-storage/file-token-storage.test.ts rename to workspace-server/src/__tests__/auth/token-storage/file-token-storage.test.ts diff --git a/workspace-mcp-server/src/__tests__/auth/token-storage/hybrid-token-storage.test.ts b/workspace-server/src/__tests__/auth/token-storage/hybrid-token-storage.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/auth/token-storage/hybrid-token-storage.test.ts rename to workspace-server/src/__tests__/auth/token-storage/hybrid-token-storage.test.ts diff --git a/workspace-mcp-server/src/__tests__/auth/token-storage/keychain-token-storage.test.ts b/workspace-server/src/__tests__/auth/token-storage/keychain-token-storage.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/auth/token-storage/keychain-token-storage.test.ts rename to workspace-server/src/__tests__/auth/token-storage/keychain-token-storage.test.ts diff --git a/workspace-mcp-server/src/__tests__/auth/token-storage/oauth-credential-storage.test.ts b/workspace-server/src/__tests__/auth/token-storage/oauth-credential-storage.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/auth/token-storage/oauth-credential-storage.test.ts rename to workspace-server/src/__tests__/auth/token-storage/oauth-credential-storage.test.ts diff --git a/workspace-mcp-server/src/__tests__/mocks/jsdom.ts b/workspace-server/src/__tests__/mocks/jsdom.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/mocks/jsdom.ts rename to workspace-server/src/__tests__/mocks/jsdom.ts diff --git a/workspace-mcp-server/src/__tests__/mocks/marked.js b/workspace-server/src/__tests__/mocks/marked.js similarity index 100% rename from workspace-mcp-server/src/__tests__/mocks/marked.js rename to workspace-server/src/__tests__/mocks/marked.js diff --git a/workspace-mcp-server/src/__tests__/mocks/wasm.js b/workspace-server/src/__tests__/mocks/wasm.js similarity index 100% rename from workspace-mcp-server/src/__tests__/mocks/wasm.js rename to workspace-server/src/__tests__/mocks/wasm.js diff --git a/workspace-mcp-server/src/__tests__/services/CalendarService.test.ts b/workspace-server/src/__tests__/services/CalendarService.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/services/CalendarService.test.ts rename to workspace-server/src/__tests__/services/CalendarService.test.ts diff --git a/workspace-mcp-server/src/__tests__/services/ChatService.test.ts b/workspace-server/src/__tests__/services/ChatService.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/services/ChatService.test.ts rename to workspace-server/src/__tests__/services/ChatService.test.ts diff --git a/workspace-mcp-server/src/__tests__/services/DocsService.test.ts b/workspace-server/src/__tests__/services/DocsService.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/services/DocsService.test.ts rename to workspace-server/src/__tests__/services/DocsService.test.ts diff --git a/workspace-mcp-server/src/__tests__/services/DriveService.test.ts b/workspace-server/src/__tests__/services/DriveService.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/services/DriveService.test.ts rename to workspace-server/src/__tests__/services/DriveService.test.ts diff --git a/workspace-mcp-server/src/__tests__/services/GmailService.test.ts b/workspace-server/src/__tests__/services/GmailService.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/services/GmailService.test.ts rename to workspace-server/src/__tests__/services/GmailService.test.ts diff --git a/workspace-mcp-server/src/__tests__/services/PeopleService.test.ts b/workspace-server/src/__tests__/services/PeopleService.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/services/PeopleService.test.ts rename to workspace-server/src/__tests__/services/PeopleService.test.ts diff --git a/workspace-mcp-server/src/__tests__/services/SheetsService.test.ts b/workspace-server/src/__tests__/services/SheetsService.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/services/SheetsService.test.ts rename to workspace-server/src/__tests__/services/SheetsService.test.ts diff --git a/workspace-mcp-server/src/__tests__/services/SlidesService.test.ts b/workspace-server/src/__tests__/services/SlidesService.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/services/SlidesService.test.ts rename to workspace-server/src/__tests__/services/SlidesService.test.ts diff --git a/workspace-mcp-server/src/__tests__/services/TimeService.test.ts b/workspace-server/src/__tests__/services/TimeService.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/services/TimeService.test.ts rename to workspace-server/src/__tests__/services/TimeService.test.ts diff --git a/workspace-mcp-server/src/__tests__/setup.ts b/workspace-server/src/__tests__/setup.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/setup.ts rename to workspace-server/src/__tests__/setup.ts diff --git a/workspace-mcp-server/src/__tests__/utils/DriveQueryBuilder.test.ts b/workspace-server/src/__tests__/utils/DriveQueryBuilder.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/utils/DriveQueryBuilder.test.ts rename to workspace-server/src/__tests__/utils/DriveQueryBuilder.test.ts diff --git a/workspace-mcp-server/src/__tests__/utils/IdUtils.test.ts b/workspace-server/src/__tests__/utils/IdUtils.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/utils/IdUtils.test.ts rename to workspace-server/src/__tests__/utils/IdUtils.test.ts diff --git a/workspace-mcp-server/src/__tests__/utils/MimeHelper.test.ts b/workspace-server/src/__tests__/utils/MimeHelper.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/utils/MimeHelper.test.ts rename to workspace-server/src/__tests__/utils/MimeHelper.test.ts diff --git a/workspace-mcp-server/src/__tests__/utils/logger.test.ts b/workspace-server/src/__tests__/utils/logger.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/utils/logger.test.ts rename to workspace-server/src/__tests__/utils/logger.test.ts diff --git a/workspace-mcp-server/src/__tests__/utils/markdownToDocsRequests.test.ts b/workspace-server/src/__tests__/utils/markdownToDocsRequests.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/utils/markdownToDocsRequests.test.ts rename to workspace-server/src/__tests__/utils/markdownToDocsRequests.test.ts diff --git a/workspace-mcp-server/src/__tests__/utils/secure-browser-launcher.test.ts b/workspace-server/src/__tests__/utils/secure-browser-launcher.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/utils/secure-browser-launcher.test.ts rename to workspace-server/src/__tests__/utils/secure-browser-launcher.test.ts diff --git a/workspace-mcp-server/src/__tests__/utils/validation.test.ts b/workspace-server/src/__tests__/utils/validation.test.ts similarity index 100% rename from workspace-mcp-server/src/__tests__/utils/validation.test.ts rename to workspace-server/src/__tests__/utils/validation.test.ts diff --git a/workspace-mcp-server/src/auth/AuthManager.ts b/workspace-server/src/auth/AuthManager.ts similarity index 100% rename from workspace-mcp-server/src/auth/AuthManager.ts rename to workspace-server/src/auth/AuthManager.ts diff --git a/workspace-mcp-server/src/auth/token-storage/base-token-storage.ts b/workspace-server/src/auth/token-storage/base-token-storage.ts similarity index 100% rename from workspace-mcp-server/src/auth/token-storage/base-token-storage.ts rename to workspace-server/src/auth/token-storage/base-token-storage.ts diff --git a/workspace-mcp-server/src/auth/token-storage/file-token-storage.ts b/workspace-server/src/auth/token-storage/file-token-storage.ts similarity index 100% rename from workspace-mcp-server/src/auth/token-storage/file-token-storage.ts rename to workspace-server/src/auth/token-storage/file-token-storage.ts diff --git a/workspace-mcp-server/src/auth/token-storage/hybrid-token-storage.ts b/workspace-server/src/auth/token-storage/hybrid-token-storage.ts similarity index 100% rename from workspace-mcp-server/src/auth/token-storage/hybrid-token-storage.ts rename to workspace-server/src/auth/token-storage/hybrid-token-storage.ts diff --git a/workspace-mcp-server/src/auth/token-storage/index.ts b/workspace-server/src/auth/token-storage/index.ts similarity index 100% rename from workspace-mcp-server/src/auth/token-storage/index.ts rename to workspace-server/src/auth/token-storage/index.ts diff --git a/workspace-mcp-server/src/auth/token-storage/keychain-token-storage.ts b/workspace-server/src/auth/token-storage/keychain-token-storage.ts similarity index 100% rename from workspace-mcp-server/src/auth/token-storage/keychain-token-storage.ts rename to workspace-server/src/auth/token-storage/keychain-token-storage.ts diff --git a/workspace-mcp-server/src/auth/token-storage/oauth-credential-storage.ts b/workspace-server/src/auth/token-storage/oauth-credential-storage.ts similarity index 100% rename from workspace-mcp-server/src/auth/token-storage/oauth-credential-storage.ts rename to workspace-server/src/auth/token-storage/oauth-credential-storage.ts diff --git a/workspace-mcp-server/src/auth/token-storage/types.ts b/workspace-server/src/auth/token-storage/types.ts similarity index 100% rename from workspace-mcp-server/src/auth/token-storage/types.ts rename to workspace-server/src/auth/token-storage/types.ts diff --git a/workspace-mcp-server/src/index.ts b/workspace-server/src/index.ts similarity index 100% rename from workspace-mcp-server/src/index.ts rename to workspace-server/src/index.ts diff --git a/workspace-mcp-server/src/services/CalendarService.ts b/workspace-server/src/services/CalendarService.ts similarity index 100% rename from workspace-mcp-server/src/services/CalendarService.ts rename to workspace-server/src/services/CalendarService.ts diff --git a/workspace-mcp-server/src/services/ChatService.ts b/workspace-server/src/services/ChatService.ts similarity index 100% rename from workspace-mcp-server/src/services/ChatService.ts rename to workspace-server/src/services/ChatService.ts diff --git a/workspace-mcp-server/src/services/DocsService.ts b/workspace-server/src/services/DocsService.ts similarity index 100% rename from workspace-mcp-server/src/services/DocsService.ts rename to workspace-server/src/services/DocsService.ts diff --git a/workspace-mcp-server/src/services/DriveService.ts b/workspace-server/src/services/DriveService.ts similarity index 100% rename from workspace-mcp-server/src/services/DriveService.ts rename to workspace-server/src/services/DriveService.ts diff --git a/workspace-mcp-server/src/services/GmailService.ts b/workspace-server/src/services/GmailService.ts similarity index 100% rename from workspace-mcp-server/src/services/GmailService.ts rename to workspace-server/src/services/GmailService.ts diff --git a/workspace-mcp-server/src/services/PeopleService.ts b/workspace-server/src/services/PeopleService.ts similarity index 100% rename from workspace-mcp-server/src/services/PeopleService.ts rename to workspace-server/src/services/PeopleService.ts diff --git a/workspace-mcp-server/src/services/SheetsService.ts b/workspace-server/src/services/SheetsService.ts similarity index 100% rename from workspace-mcp-server/src/services/SheetsService.ts rename to workspace-server/src/services/SheetsService.ts diff --git a/workspace-mcp-server/src/services/SlidesService.ts b/workspace-server/src/services/SlidesService.ts similarity index 100% rename from workspace-mcp-server/src/services/SlidesService.ts rename to workspace-server/src/services/SlidesService.ts diff --git a/workspace-mcp-server/src/services/TimeService.ts b/workspace-server/src/services/TimeService.ts similarity index 100% rename from workspace-mcp-server/src/services/TimeService.ts rename to workspace-server/src/services/TimeService.ts diff --git a/workspace-mcp-server/src/utils/DriveQueryBuilder.ts b/workspace-server/src/utils/DriveQueryBuilder.ts similarity index 100% rename from workspace-mcp-server/src/utils/DriveQueryBuilder.ts rename to workspace-server/src/utils/DriveQueryBuilder.ts diff --git a/workspace-mcp-server/src/utils/GaxiosConfig.ts b/workspace-server/src/utils/GaxiosConfig.ts similarity index 100% rename from workspace-mcp-server/src/utils/GaxiosConfig.ts rename to workspace-server/src/utils/GaxiosConfig.ts diff --git a/workspace-mcp-server/src/utils/IdUtils.ts b/workspace-server/src/utils/IdUtils.ts similarity index 100% rename from workspace-mcp-server/src/utils/IdUtils.ts rename to workspace-server/src/utils/IdUtils.ts diff --git a/workspace-mcp-server/src/utils/MimeHelper.ts b/workspace-server/src/utils/MimeHelper.ts similarity index 100% rename from workspace-mcp-server/src/utils/MimeHelper.ts rename to workspace-server/src/utils/MimeHelper.ts diff --git a/workspace-mcp-server/src/utils/constants.ts b/workspace-server/src/utils/constants.ts similarity index 100% rename from workspace-mcp-server/src/utils/constants.ts rename to workspace-server/src/utils/constants.ts diff --git a/workspace-mcp-server/src/utils/logger.ts b/workspace-server/src/utils/logger.ts similarity index 100% rename from workspace-mcp-server/src/utils/logger.ts rename to workspace-server/src/utils/logger.ts diff --git a/workspace-mcp-server/src/utils/markdownToDocsRequests.ts b/workspace-server/src/utils/markdownToDocsRequests.ts similarity index 100% rename from workspace-mcp-server/src/utils/markdownToDocsRequests.ts rename to workspace-server/src/utils/markdownToDocsRequests.ts diff --git a/workspace-mcp-server/src/utils/open-wrapper.ts b/workspace-server/src/utils/open-wrapper.ts similarity index 100% rename from workspace-mcp-server/src/utils/open-wrapper.ts rename to workspace-server/src/utils/open-wrapper.ts diff --git a/workspace-mcp-server/src/utils/paths.ts b/workspace-server/src/utils/paths.ts similarity index 100% rename from workspace-mcp-server/src/utils/paths.ts rename to workspace-server/src/utils/paths.ts diff --git a/workspace-mcp-server/src/utils/secure-browser-launcher.ts b/workspace-server/src/utils/secure-browser-launcher.ts similarity index 100% rename from workspace-mcp-server/src/utils/secure-browser-launcher.ts rename to workspace-server/src/utils/secure-browser-launcher.ts diff --git a/workspace-mcp-server/src/utils/validation.ts b/workspace-server/src/utils/validation.ts similarity index 100% rename from workspace-mcp-server/src/utils/validation.ts rename to workspace-server/src/utils/validation.ts diff --git a/workspace-mcp-server/tsconfig.json b/workspace-server/tsconfig.json similarity index 100% rename from workspace-mcp-server/tsconfig.json rename to workspace-server/tsconfig.json diff --git a/workspace-mcp-server/tsconfig.test.json b/workspace-server/tsconfig.test.json similarity index 100% rename from workspace-mcp-server/tsconfig.test.json rename to workspace-server/tsconfig.test.json