diff --git a/.gitignore b/.gitignore index 5961dc0..3017d8f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ node_modules .npm-cache dist build +packages/cli-js/templates npm-debug.log # python diff --git a/packages/cli-js/package.json b/packages/cli-js/package.json index e449695..b051c14 100644 --- a/packages/cli-js/package.json +++ b/packages/cli-js/package.json @@ -1,6 +1,6 @@ { "name": "planforge", - "version": "0.1.5", + "version": "0.1.6", "type": "module", "description": "PlanForge CLI - Bring your own AI to Cursor", "keywords": ["cursor", "claude", "codex", "ai", "cli", "planning", "planforge"], @@ -14,13 +14,13 @@ "publishConfig": { "access": "public" }, - "files": ["dist", "README.md"], + "files": ["dist", "templates", "README.md"], "bin": { "planforge": "dist/index.js" }, "scripts": { "check:templates": "node scripts/check-templates.js", - "build": "pnpm run check:templates && tsc", + "build": "pnpm run check:templates && tsc && node scripts/copy-templates.js", "dev": "tsc --watch", "planforge": "node dist/index.js", "install:global": "pnpm run build && npm install -g .", diff --git a/packages/cli-js/scripts/copy-templates.js b/packages/cli-js/scripts/copy-templates.js new file mode 100644 index 0000000..b8aaed1 --- /dev/null +++ b/packages/cli-js/scripts/copy-templates.js @@ -0,0 +1,20 @@ +/** + * Copy repo-root templates into packages/cli-js/templates so the published npm package contains them. + * Run from packages/cli-js (e.g. node scripts/copy-templates.js). + */ +import { cpSync, mkdirSync, existsSync } from "fs"; +import { resolve, dirname } from "path"; +import { fileURLToPath } from "url"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const repoRoot = resolve(__dirname, "..", "..", ".."); +const src = resolve(repoRoot, "templates"); +const dest = resolve(__dirname, "..", "templates"); + +if (!existsSync(src)) { + console.error("copy-templates: repo templates not found at", src); + process.exit(1); +} +mkdirSync(dest, { recursive: true }); +cpSync(src, dest, { recursive: true }); +console.log("copy-templates: copied templates to", dest); diff --git a/packages/cli-js/src/index.ts b/packages/cli-js/src/index.ts index dc09107..1a88313 100644 --- a/packages/cli-js/src/index.ts +++ b/packages/cli-js/src/index.ts @@ -17,7 +17,7 @@ const program = new Command(); program .name("planforge") .description("Bring your own AI to Cursor. Use Claude or Codex inside Cursor Free.") - .version("0.1.0"); + .version("0.1.6"); program .command("init") diff --git a/packages/cli-js/src/utils/paths.ts b/packages/cli-js/src/utils/paths.ts index b385cb3..85aae43 100644 --- a/packages/cli-js/src/utils/paths.ts +++ b/packages/cli-js/src/utils/paths.ts @@ -64,9 +64,10 @@ export function getDatedPlansDir(projectRoot: string, date: Date = new Date()): /** * Resolve path relative to CLI package (for templates). + * From dist/utils/paths.js: two levels up = package root; templates live next to dist/ when published. */ export function getTemplatesRoot(): string { - return resolve(__dirname, "..", "..", "..", "..", "templates"); + return resolve(__dirname, "..", "..", "templates"); } /** diff --git a/packages/cli-py/planforge/__init__.py b/packages/cli-py/planforge/__init__.py index 9d92ae7..70087d0 100644 --- a/packages/cli-py/planforge/__init__.py +++ b/packages/cli-py/planforge/__init__.py @@ -1,3 +1,3 @@ """PlanForge CLI - Bring your own AI to Cursor.""" -__version__ = "0.1.0" +__version__ = "0.1.6" diff --git a/packages/cli-py/planforge/cli.py b/packages/cli-py/planforge/cli.py index d289a09..e4a35e0 100644 --- a/packages/cli-py/planforge/cli.py +++ b/packages/cli-py/planforge/cli.py @@ -11,7 +11,7 @@ @click.group() -@click.version_option(version="0.1.0") +@click.version_option(version="0.1.6") def main() -> None: """Bring your own AI to Cursor. Use Claude or Codex inside Cursor Free.""" diff --git a/packages/cli-py/pyproject.toml b/packages/cli-py/pyproject.toml index cdfc137..5f4fab9 100644 --- a/packages/cli-py/pyproject.toml +++ b/packages/cli-py/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "planforge" -version = "0.1.5" +version = "0.1.6" description = "PlanForge CLI - Bring your own AI to Cursor" requires-python = ">=3.10" dependencies = [ diff --git a/packages/core/package.json b/packages/core/package.json index f44b315..ff43fa0 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@planforge/core", - "version": "0.1.5", + "version": "0.1.6", "description": "PlanForge shared prompts", "license": "MIT", "files": ["prompts", "models.json"] diff --git a/packages/core/pyproject.toml b/packages/core/pyproject.toml index 0ec5cb7..93ec6e1 100644 --- a/packages/core/pyproject.toml +++ b/packages/core/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "planforge-core" -version = "0.1.5" +version = "0.1.6" description = "PlanForge shared prompts" requires-python = ">=3.10"