From 52683dafc360c431874d85ee9e516c13c96f055f Mon Sep 17 00:00:00 2001 From: Brandon Keiji Date: Fri, 18 Apr 2025 14:37:02 -0700 Subject: infra: add multipackage support (#34) --- packages/cli/package.json | 5 +++-- packages/cli/src/gemini.ts | 4 ++++ packages/cli/tsconfig.json | 14 ++++++++++---- packages/server/README.md | 6 ++++++ packages/server/package.json | 24 ++++++++++++++++++++++++ packages/server/src/index.ts | 3 +++ packages/server/tsconfig.json | 13 +++++++++++++ 7 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 packages/server/README.md create mode 100644 packages/server/package.json create mode 100644 packages/server/src/index.ts create mode 100644 packages/server/tsconfig.json (limited to 'packages') diff --git a/packages/cli/package.json b/packages/cli/package.json index 053aeabc..248dd9e3 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,9 +1,9 @@ { - "name": "@google/gemini-code", + "name": "@gemini-code/cli", "version": "1.0.0", "description": "Gemini Code CLI", "type": "module", - "main": "gemini.js", + "main": "src/gemini.js", "scripts": { "build": "tsc && cp package.json README.md ../../LICENSE dist/ && touch dist/.last_build", "start": "node dist/gemini.js", @@ -16,6 +16,7 @@ ], "dependencies": { "@google/genai": "^0.8.0", + "@gemini-code/server": "1.0.0", "diff": "^7.0.0", "dotenv": "^16.4.7", "fast-glob": "^3.3.3", diff --git a/packages/cli/src/gemini.ts b/packages/cli/src/gemini.ts index f6de65c3..6c4fe3ae 100644 --- a/packages/cli/src/gemini.ts +++ b/packages/cli/src/gemini.ts @@ -12,6 +12,10 @@ import { WriteFileTool } from './tools/write-file.tool.js'; import { WebFetchTool } from './tools/web-fetch.tool.js'; import { globalConfig } from './config/config.js'; +// TODO(b/411707095): remove. left here as an example of how to pull in inter-package deps +import { helloServer } from '@gemini-code/server' +helloServer(); + async function main() { // Configure tools registerTools(globalConfig.getTargetDir()); diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index 0ef2b74f..1571716d 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -1,13 +1,19 @@ { "extends": "../../tsconfig.json", "compilerOptions": { - "outDir": "./dist", - "rootDir": "./src", + "outDir": "dist", + "rootDir": ".", "jsx": "react", "lib": ["DOM", "DOM.Iterable", "ES2020"], "module": "Node16", - "target": "ES2020" + "target": "ES2020", + "paths": { + "@gemini-code/*": ["./packages/*"] + } }, "exclude": ["node_modules", "dist"], - "include": ["src"] + "include": ["src"], + "references": [ + { "path": "../server" }, + ] } diff --git a/packages/server/README.md b/packages/server/README.md new file mode 100644 index 00000000..6e962f2a --- /dev/null +++ b/packages/server/README.md @@ -0,0 +1,6 @@ +Nested package template. Either fill this out with "backend" functionality or create similar packages that you want built separate from the CLI. + +To use this package from another dependent package in this monorepo: + +1. add `"@gemini-code/server"` to the dependent package's `package.json` +1. import in a dependenant by calling `import { } from "@gemini-code/server"` diff --git a/packages/server/package.json b/packages/server/package.json new file mode 100644 index 00000000..4e227105 --- /dev/null +++ b/packages/server/package.json @@ -0,0 +1,24 @@ +{ + "name": "@gemini-code/server", + "version": "1.0.0", + "description": "Gemini Code Server", + "type": "module", + "main": "src/index.js", + "scripts": { + "build": "tsc && cp package.json dist/", + "clean": "rm -rf dist", + "lint": "eslint . --ext .ts,.tsx", + "format": "prettier --write ." + }, + "files": [ + "dist" + ], + "dependencies": {}, + "devDependencies": { + "typescript": "^5.3.3" + }, + "engines": { + "node": ">=18" + } + } + \ No newline at end of file diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts new file mode 100644 index 00000000..16b131d8 --- /dev/null +++ b/packages/server/src/index.ts @@ -0,0 +1,3 @@ +export function helloServer() { + // TODO: add more things in this package +} \ No newline at end of file diff --git a/packages/server/tsconfig.json b/packages/server/tsconfig.json new file mode 100644 index 00000000..addfdb11 --- /dev/null +++ b/packages/server/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": ".", + "lib": ["DOM", "DOM.Iterable", "ES2020"], + "module": "Node16", + "target": "ES2022", + "composite": true, + }, + "exclude": ["node_modules", "dist"], +} + \ No newline at end of file -- cgit v1.2.3