prjct-cli 2.63.0 → 2.63.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [2.63.1] - 2026-06-23
6
+
7
+ ### Bug Fixes
8
+
9
+ - harden prjct eval workflow inputs
10
+
11
+
5
12
  ## [2.63.0] - 2026-06-23
6
13
 
7
14
  ### Added
@@ -1923,7 +1923,7 @@ ${Fs.dim("Providers:")}`}var xW,gw=h(()=>{"use strict";xW={ready:Fs.green("\u271
1923
1923
  ${s.dim("Run 'prjct start' to configure global/runtime adapters")}
1924
1924
  ${s.dim("Run 'prjct init' or 'prjct sync' to refresh AGENTS.md and project-level rules")}
1925
1925
  ${s.cyan("https://prjct.app")}
1926
- `)}else return!1;return!0}var e_=h(()=>{"use strict";a(PW,"runBinCommand")});var t_=m_((hfe,AW)=>{AW.exports={name:"prjct-cli",version:"2.63.0",description:"Project memory and workflow context for AI coding agents.",main:"dist/bin/prjct.mjs",bin:{prjct:"bin/prjct.cjs"},publishConfig:{access:"public",registry:"https://registry.npmjs.org"},scripts:{build:"node scripts/build.js","build:node":"node scripts/build.js",release:"node scripts/release.js","release:patch":"node scripts/release.js patch","release:minor":"node scripts/release.js minor","release:major":"node scripts/release.js major",prepare:"lefthook install","update-commands":`bun -e "const installer = require('./core/infrastructure/command-installer'); installer.syncCommands().then(r => console.log('Commands updated:', r)).catch(e => console.error('Error:', e.message))"`,"install-global":"./scripts/install.sh",update:"./scripts/update.sh",test:"bun test","test:watch":"bun test --watch","test:coverage":"bun test --coverage",typecheck:"tsc --noEmit -p core/tsconfig.json","typecheck:watch":"tsc --noEmit -p core/tsconfig.json --watch",validate:"bun scripts/validate-commands.js",lint:"biome lint .","lint:fix":"biome lint --write .",knip:"knip","lint:meta":"bun core/cli/lint-meta-commentary.ts",format:"biome format --write .","format:check":"biome format .",check:"biome check .","check:fix":"biome check --write .","test:e2e":"bun test core/__tests__/e2e/"},keywords:["claude-code","gemini-cli","ai-agents","context-layer","developer-tools","ai-assistant","productivity","mcp","llm","coding-agents"],author:"prjct.app",license:"MIT",dependencies:{"@clack/prompts":"1.0.0","@modelcontextprotocol/sdk":"1.29.0",chalk:"4.1.2",chokidar:"5.0.0","jsonc-parser":"3.3.1",zod:"3.25.76"},overrides:{"path-to-regexp":"8.4.0","brace-expansion":"5.0.5","fast-uri":">=3.1.2",hono:">=4.12.18","ip-address":">=10.1.1"},devDependencies:{"@biomejs/biome":"2.3.13","@types/bun":"latest","@types/chokidar":"2.1.7","@types/node":"^22",esbuild:"0.28.1",knip:"6.3.1",lefthook:"2.1.0",typescript:"5.9.3"},repository:{type:"git",url:"git+https://github.com/jlopezlira/prjct-cli.git"},bugs:{url:"https://github.com/jlopezlira/prjct-cli/issues"},homepage:"https://cli.prjct.app",packageManager:"bun@1.2.23",engines:{bun:">=1.0.0",node:">=22.5.0"},files:["assets/","bin/prjct","bin/prjct.cjs","dist/","templates/","scripts/install.sh","LICENSE","README.md","CHANGELOG.md"],prepublishOnly:"node scripts/build.js"}});var MW={};import n_ from"node:os";import sd from"node:path";import Hs from"chalk";async function jW(){let[n,...e]=process.argv.slice(2);if(["-v","--version","version"].includes(n)){let r=await Promise.resolve().then(()=>f_(t_()));await IW(r.version),process.exit(0)}if(["-h","--help",void 0].includes(n)&&(DW(),process.exit(0)),n&&Yu(n)&&!ze.getByName(n)){let r=Ku[n];r&&(g.failWithHint({message:`'prjct ${n}' was removed in v2. ${r.note}`,hint:`Use: ${r.replacement}`}),process.exit(1))}if(n&&!ze.getByName(n)&&!(e.length===0&&Aa(n)!==null)){let s=[n,...e.filter(i=>!i.startsWith("-"))].join(" "),o=e.filter(i=>i.startsWith("-"));n="capture",e=[s,...o]}let t=e.includes("--md");t||g.start();try{let r=ze.getByName(n);if(!r){let m=Aa(n),f=m?`Did you mean 'prjct ${m}'? Run 'prjct --help' for all commands`:"Run 'prjct --help' to see available commands";g.failWithHint(ui("UNKNOWN_COMMAND",{message:`Unknown command: ${n}`,hint:f})),t||g.end(),process.exit(1)}if(r.deprecated){let m=r.replacedBy?`Use 'prjct ${r.replacedBy}' instead`:"Run 'prjct --help' to see available commands";g.failWithHint({message:`Command '${n}' is deprecated`,hint:m}),t||g.end(),process.exit(1)}r.implemented||(g.failWithHint({message:`Command '${n}' is not yet implemented`,hint:"Run 'prjct --help' to see available commands",docs:"https://github.com/jlopezlira/prjct-cli"}),t||g.end(),process.exit(1));let{parsedArgs:s,options:o}=$W(r,e),i=!process.stdin.isTTY||o.md===!0||o.json===!0;r.requiresLlm&&!i&&(g.failWithHint({message:`'prjct ${n}' requires an AI agent to process its output`,hint:`Use 'p. ${n}' inside Claude/Cursor, or add --md flag`}),t||g.end(),process.exit(1));let c=_W(r,s);c&&(g.failWithHint(c),t||g.end(),process.exit(1));let l=null,u=Date.now();try{l=await R.getProjectId(process.cwd()),l&&(await fa.expireIfStale(l),await fa.touch(l))}catch{}let d=new Ds,p;if(n==="analyze")p=await d.analyze(o);else if(n==="setup")p=await d.setup(o);else if(n==="update"||n==="upgrade")p=await d.update(o);else{let m=s.join(" ")||null,f=o.md===!0,y=ze.getByName(n);if(y?.optionSchema)p=await ze.executeWithOptions(n,m,process.cwd(),zu(o,y.optionSchema));else{let k={spec:a(v=>Qu(d,(v??"").trim().split(/\s+/).filter(Boolean),o,process.cwd()),"spec"),"audit-spec":a(v=>v?d.specAudit(v,process.cwd(),{md:f,lenses:o.lenses?String(o.lenses):void 0}):Promise.resolve({success:!1,error:"audit-spec requires a spec id"}),"audit-spec"),init:a(v=>d.init({idea:v,yes:o.yes===!0,pack:o.pack?String(o.pack):void 0,persona:o.persona?String(o.persona):void 0}),"init"),sync:a(()=>d.sync(process.cwd(),{preview:o.preview===!0||o["dry-run"]===!0,yes:o.yes===!0,json:o.json===!0,md:f,package:o.package?String(o.package):void 0,full:o.full===!0}),"sync"),"analysis-save-llm":a(v=>v?d.saveLlmAnalysis(v,process.cwd(),{md:f}):Promise.resolve({success:!1,error:"analysis-save-llm requires analysis text, JSON, or a file path"}),"analysis-save-llm"),regen:a(()=>d.regenVault(process.cwd(),{md:f}),"regen"),start:a(()=>d.start(),"start"),login:a(()=>d.login({md:f,url:o.url?String(o.url):void 0}),"login"),logout:a(()=>d.logout(),"logout"),auth:a(v=>d.auth(v,{md:f}),"auth")}[n];if(k)p=await k(m);else throw new Error(`Command '${n}' has no handler`)}}if(l){let m=Date.now()-u;try{await fa.trackCommand(l,n,m)}catch{}try{await ga.recordTiming(l,"command_duration",m,{command:n});let f=globalThis.__perfStartNs;if(f){let y=Number(process.hrtime.bigint()-f)/1e6;await ga.recordTiming(l,"startup_time",y)}await ga.recordMemory(l,{command:n})}catch{}}p?.message&&console.log(p.message),t||g.end(),process.exit(p?.success?0:1)}catch(r){console.error("Error:",w(r)),process.env.DEBUG&&console.error(hd(r)),t||g.end(),process.exit(1)}}function _W(n,e){if(!n.params)return null;let t=n.params.match(/<[^>]+>/g);if(!t||t.length===0)return null;if(e.length<t.length){let r=t.map(o=>o.slice(1,-1)).join(", "),s=n.usage.terminal||`prjct ${n.name} ${n.params}`;return ui("MISSING_PARAM",{message:`Missing required parameter: ${r}`,hint:`Usage: ${s}`})}return null}function $W(n,e){let t=[],r={};for(let s=0;s<e.length;s++){let o=e[s];if(o.startsWith("--")){let i=o.slice(2);s+1<e.length&&!e[s+1].startsWith("--")?r[i]=e[++s]:r[i]=!0}else t.push(o)}return{parsedArgs:t,options:r}}async function IW(n){let e=await is(),t=sd.join(n_.homedir(),".claude","commands","p.md"),r=sd.join(n_.homedir(),".gemini","commands","p.toml"),[s,o,i,c]=await Promise.all([E(t),E(r),E(sd.join(process.cwd(),".cursor","commands","sync.md")),E(sd.join(process.cwd(),".cursor"))]),l=await mi();console.log(fw(n)),console.log(Zo("Claude Code",e.claude.installed?s?"ready":"installed":"missing",e.claude.version?Hs.dim(` (v${e.claude.version})`):"")),console.log(Zo("Gemini CLI",e.gemini.installed?o?"ready":"installed":"missing",e.gemini.version?Hs.dim(` (v${e.gemini.version})`):"")),console.log(Zo("Antigravity",l.installed?l.skillInstalled?"ready":"detected":"missing",l.installed&&!l.skillInstalled?` ${Hs.dim("(run prjct start)")}`:"")),console.log(Zo("Cursor IDE",i?"ready":c?"detected":"missing",i?` ${Hs.dim("(use /sync, /task)")}`:c?` ${Hs.dim("(run prjct init)")}`:"","\u25CB no .cursor/ folder")),console.log(`
1926
+ `)}else return!1;return!0}var e_=h(()=>{"use strict";a(PW,"runBinCommand")});var t_=m_((hfe,AW)=>{AW.exports={name:"prjct-cli",version:"2.63.1",description:"Project memory and workflow context for AI coding agents.",main:"dist/bin/prjct.mjs",bin:{prjct:"bin/prjct.cjs"},publishConfig:{access:"public",registry:"https://registry.npmjs.org"},scripts:{build:"node scripts/build.js","build:node":"node scripts/build.js",release:"node scripts/release.js","release:patch":"node scripts/release.js patch","release:minor":"node scripts/release.js minor","release:major":"node scripts/release.js major",prepare:"lefthook install","update-commands":`bun -e "const installer = require('./core/infrastructure/command-installer'); installer.syncCommands().then(r => console.log('Commands updated:', r)).catch(e => console.error('Error:', e.message))"`,"install-global":"./scripts/install.sh",update:"./scripts/update.sh",test:"bun test","test:watch":"bun test --watch","test:coverage":"bun test --coverage",typecheck:"tsc --noEmit -p core/tsconfig.json","typecheck:watch":"tsc --noEmit -p core/tsconfig.json --watch",validate:"bun scripts/validate-commands.js",lint:"biome lint .","lint:fix":"biome lint --write .",knip:"knip","lint:meta":"bun core/cli/lint-meta-commentary.ts",format:"biome format --write .","format:check":"biome format .",check:"biome check .","check:fix":"biome check --write .","test:e2e":"bun test core/__tests__/e2e/"},keywords:["claude-code","gemini-cli","ai-agents","context-layer","developer-tools","ai-assistant","productivity","mcp","llm","coding-agents"],author:"prjct.app",license:"MIT",dependencies:{"@clack/prompts":"1.0.0","@modelcontextprotocol/sdk":"1.29.0",chalk:"4.1.2",chokidar:"5.0.0","jsonc-parser":"3.3.1",zod:"3.25.76"},overrides:{"path-to-regexp":"8.4.0","brace-expansion":"5.0.5","fast-uri":">=3.1.2",hono:">=4.12.18","ip-address":">=10.1.1"},devDependencies:{"@biomejs/biome":"2.3.13","@types/bun":"latest","@types/chokidar":"2.1.7","@types/node":"^22",esbuild:"0.28.1",knip:"6.3.1",lefthook:"2.1.0",typescript:"5.9.3"},repository:{type:"git",url:"git+https://github.com/jlopezlira/prjct-cli.git"},bugs:{url:"https://github.com/jlopezlira/prjct-cli/issues"},homepage:"https://cli.prjct.app",packageManager:"bun@1.2.23",engines:{bun:">=1.0.0",node:">=22.5.0"},files:["assets/","bin/prjct","bin/prjct.cjs","dist/","templates/","scripts/install.sh","LICENSE","README.md","CHANGELOG.md"],prepublishOnly:"node scripts/build.js"}});var MW={};import n_ from"node:os";import sd from"node:path";import Hs from"chalk";async function jW(){let[n,...e]=process.argv.slice(2);if(["-v","--version","version"].includes(n)){let r=await Promise.resolve().then(()=>f_(t_()));await IW(r.version),process.exit(0)}if(["-h","--help",void 0].includes(n)&&(DW(),process.exit(0)),n&&Yu(n)&&!ze.getByName(n)){let r=Ku[n];r&&(g.failWithHint({message:`'prjct ${n}' was removed in v2. ${r.note}`,hint:`Use: ${r.replacement}`}),process.exit(1))}if(n&&!ze.getByName(n)&&!(e.length===0&&Aa(n)!==null)){let s=[n,...e.filter(i=>!i.startsWith("-"))].join(" "),o=e.filter(i=>i.startsWith("-"));n="capture",e=[s,...o]}let t=e.includes("--md");t||g.start();try{let r=ze.getByName(n);if(!r){let m=Aa(n),f=m?`Did you mean 'prjct ${m}'? Run 'prjct --help' for all commands`:"Run 'prjct --help' to see available commands";g.failWithHint(ui("UNKNOWN_COMMAND",{message:`Unknown command: ${n}`,hint:f})),t||g.end(),process.exit(1)}if(r.deprecated){let m=r.replacedBy?`Use 'prjct ${r.replacedBy}' instead`:"Run 'prjct --help' to see available commands";g.failWithHint({message:`Command '${n}' is deprecated`,hint:m}),t||g.end(),process.exit(1)}r.implemented||(g.failWithHint({message:`Command '${n}' is not yet implemented`,hint:"Run 'prjct --help' to see available commands",docs:"https://github.com/jlopezlira/prjct-cli"}),t||g.end(),process.exit(1));let{parsedArgs:s,options:o}=$W(r,e),i=!process.stdin.isTTY||o.md===!0||o.json===!0;r.requiresLlm&&!i&&(g.failWithHint({message:`'prjct ${n}' requires an AI agent to process its output`,hint:`Use 'p. ${n}' inside Claude/Cursor, or add --md flag`}),t||g.end(),process.exit(1));let c=_W(r,s);c&&(g.failWithHint(c),t||g.end(),process.exit(1));let l=null,u=Date.now();try{l=await R.getProjectId(process.cwd()),l&&(await fa.expireIfStale(l),await fa.touch(l))}catch{}let d=new Ds,p;if(n==="analyze")p=await d.analyze(o);else if(n==="setup")p=await d.setup(o);else if(n==="update"||n==="upgrade")p=await d.update(o);else{let m=s.join(" ")||null,f=o.md===!0,y=ze.getByName(n);if(y?.optionSchema)p=await ze.executeWithOptions(n,m,process.cwd(),zu(o,y.optionSchema));else{let k={spec:a(v=>Qu(d,(v??"").trim().split(/\s+/).filter(Boolean),o,process.cwd()),"spec"),"audit-spec":a(v=>v?d.specAudit(v,process.cwd(),{md:f,lenses:o.lenses?String(o.lenses):void 0}):Promise.resolve({success:!1,error:"audit-spec requires a spec id"}),"audit-spec"),init:a(v=>d.init({idea:v,yes:o.yes===!0,pack:o.pack?String(o.pack):void 0,persona:o.persona?String(o.persona):void 0}),"init"),sync:a(()=>d.sync(process.cwd(),{preview:o.preview===!0||o["dry-run"]===!0,yes:o.yes===!0,json:o.json===!0,md:f,package:o.package?String(o.package):void 0,full:o.full===!0}),"sync"),"analysis-save-llm":a(v=>v?d.saveLlmAnalysis(v,process.cwd(),{md:f}):Promise.resolve({success:!1,error:"analysis-save-llm requires analysis text, JSON, or a file path"}),"analysis-save-llm"),regen:a(()=>d.regenVault(process.cwd(),{md:f}),"regen"),start:a(()=>d.start(),"start"),login:a(()=>d.login({md:f,url:o.url?String(o.url):void 0}),"login"),logout:a(()=>d.logout(),"logout"),auth:a(v=>d.auth(v,{md:f}),"auth")}[n];if(k)p=await k(m);else throw new Error(`Command '${n}' has no handler`)}}if(l){let m=Date.now()-u;try{await fa.trackCommand(l,n,m)}catch{}try{await ga.recordTiming(l,"command_duration",m,{command:n});let f=globalThis.__perfStartNs;if(f){let y=Number(process.hrtime.bigint()-f)/1e6;await ga.recordTiming(l,"startup_time",y)}await ga.recordMemory(l,{command:n})}catch{}}p?.message&&console.log(p.message),t||g.end(),process.exit(p?.success?0:1)}catch(r){console.error("Error:",w(r)),process.env.DEBUG&&console.error(hd(r)),t||g.end(),process.exit(1)}}function _W(n,e){if(!n.params)return null;let t=n.params.match(/<[^>]+>/g);if(!t||t.length===0)return null;if(e.length<t.length){let r=t.map(o=>o.slice(1,-1)).join(", "),s=n.usage.terminal||`prjct ${n.name} ${n.params}`;return ui("MISSING_PARAM",{message:`Missing required parameter: ${r}`,hint:`Usage: ${s}`})}return null}function $W(n,e){let t=[],r={};for(let s=0;s<e.length;s++){let o=e[s];if(o.startsWith("--")){let i=o.slice(2);s+1<e.length&&!e[s+1].startsWith("--")?r[i]=e[++s]:r[i]=!0}else t.push(o)}return{parsedArgs:t,options:r}}async function IW(n){let e=await is(),t=sd.join(n_.homedir(),".claude","commands","p.md"),r=sd.join(n_.homedir(),".gemini","commands","p.toml"),[s,o,i,c]=await Promise.all([E(t),E(r),E(sd.join(process.cwd(),".cursor","commands","sync.md")),E(sd.join(process.cwd(),".cursor"))]),l=await mi();console.log(fw(n)),console.log(Zo("Claude Code",e.claude.installed?s?"ready":"installed":"missing",e.claude.version?Hs.dim(` (v${e.claude.version})`):"")),console.log(Zo("Gemini CLI",e.gemini.installed?o?"ready":"installed":"missing",e.gemini.version?Hs.dim(` (v${e.gemini.version})`):"")),console.log(Zo("Antigravity",l.installed?l.skillInstalled?"ready":"detected":"missing",l.installed&&!l.skillInstalled?` ${Hs.dim("(run prjct start)")}`:"")),console.log(Zo("Cursor IDE",i?"ready":c?"detected":"missing",i?` ${Hs.dim("(use /sync, /task)")}`:c?` ${Hs.dim("(run prjct init)")}`:"","\u25CB no .cursor/ folder")),console.log(`
1927
1927
  ${Hs.dim("Run 'prjct start' for Claude/Gemini, 'prjct init' for Cursor")}
1928
1928
  ${Hs.cyan("https://prjct.app")}
1929
1929
  `)}function DW(){console.log(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prjct-cli",
3
- "version": "2.63.0",
3
+ "version": "2.63.1",
4
4
  "description": "Project memory and workflow context for AI coding agents.",
5
5
  "main": "dist/bin/prjct.mjs",
6
6
  "bin": {