openfork 0.2.0 → 0.4.0
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/dist/index.js +2 -2
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -3080,7 +3080,7 @@ The current year is ${new Date().getFullYear()}. Use this year when searching fo
|
|
|
3080
3080
|
`)}function Lga(){let A=Z_A();if(!A.length)return"No cron jobs configured.";return A.map((H)=>`${H.enabled?"\u2713":"\u2717"} ${H.id.slice(0,8)} | ${H.schedule.padEnd(10)} | ${H.name.padEnd(20)} | last: ${H.lastStatus??"-"}`).join(`
|
|
3081
3081
|
`)}function Pga(A){return{"0 0 * * *":"Daily at midnight","0 0 * * 1":"Every Monday","0 * * * *":"Every hour","*/5 * * * *":"Every 5 minutes","*/30 * * * *":"Every 30 minutes","0 9 * * *":"Daily at 9 AM","0 9 * * 1-5":"Weekdays at 9 AM","0 0 1 * *":"Monthly on the 1st"}[A]??`Custom schedule: ${A}`}var iga=()=>{};import{existsSync as Ega,mkdirSync as shL,readFileSync as AUL,writeFileSync as HUL}from"fs";import{join as FwH}from"path";import{homedir as _UL}from"os";function Iga(){return FwH(_UL(),".raccoon")}function ega(A){return FwH(A,".raccoon")}function Dga(A,H){let _=A==="global"?Iga():ega(H??process.cwd());return FwH(_,"memory.json")}function bwH(A,H){let _=Dga(A,H);if(!Ega(_))return{version:nga,entries:[]};try{return JSON.parse(AUL(_,"utf-8"))}catch{return{version:nga,entries:[]}}}function JUL(A,H,_){let J=Dga(H,_),a=H==="global"?Iga():ega(_??process.cwd());if(!Ega(a))shL(a,{recursive:!0});HUL(J,JSON.stringify(A,null,2))}function aUL(){return Math.random().toString(36).substring(2,10)}function Rga(A="all",H){let _=[];if(A==="global"||A==="all"){let J=bwH("global",H);_.push(...J.entries)}if(A==="project"||A==="all"){let J=bwH("project",H);_.push(...J.entries)}return _.sort((J,a)=>new Date(a.updatedAt).getTime()-new Date(J.updatedAt).getTime())}function mga(A,H,_){let J=_?.scope??"project",a=bwH(J,_?.cwd),f={id:aUL(),type:A,content:H,source:_?.source,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};if(a.entries.unshift(f),a.entries.length>rga)a.entries=a.entries.slice(0,rga);return JUL(a,J,_?.cwd),f}function dga(A,H){let _=A.slice(0,H??30);if(!_.length)return"No memory entries.";return _.map((J)=>`${J.id.slice(0,8)} | ${J.type.padEnd(12)} | ${J.content.slice(0,60)}`).join(`
|
|
3082
3082
|
`)}var nga=1,rga=200;var uga=()=>{};import{spawnSync as OwA}from"child_process";function Xga(A){try{let H=OwA("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:A,timeout:5000,encoding:"utf-8",stdio:["ignore","pipe","pipe"]});if(H.status!==0)return null;let _=H.stdout.trim(),a=OwA("git",["status","--porcelain"],{cwd:A,timeout:5000,encoding:"utf-8",stdio:["ignore","pipe","pipe"]}).stdout.trim().length>0,t=OwA("git",["log","--oneline","-5"],{cwd:A,timeout:5000,encoding:"utf-8",stdio:["ignore","pipe","pipe"]}).stdout.trim()||"No commits yet",T=OwA("git",["remote","get-url","origin"],{cwd:A,timeout:5000,encoding:"utf-8",stdio:["ignore","pipe","pipe"]}),P=T.status===0?T.stdout.trim():void 0;return{branch:_,isDirty:a,recentCommits:t,remote:P}}catch{return null}}function Mga(A){let H=[`Branch: ${A.branch}${A.isDirty?" (uncommitted changes)":""}`];if(A.remote)H.push(`Remote: ${A.remote}`);if(A.recentCommits)H.push("Recent commits:",A.recentCommits);return H.join(`
|
|
3083
|
-
`)}var cga=()=>{};import{existsSync as hga,readFileSync as Uga,appendFileSync as
|
|
3083
|
+
`)}var cga=()=>{};import{existsSync as hga,readFileSync as Uga,appendFileSync as uui,writeFileSync as Xui,mkdirSync as Mui}from"fs";import{join as GwH}from"path";import{homedir as fUL}from"os";function tUL(){return GwH(fUL(),".raccoon")}function TUL(){return GwH(tUL(),oga)}function LUL(A){return GwH(A,".raccoon",oga)}function jga(A){let H=[],_=TUL();if(hga(_))H.push("## Global memory",Uga(_,"utf-8").trim());let J=LUL(A);if(hga(J))H.push("## Project memory",Uga(J,"utf-8").trim());return H.join(`
|
|
3084
3084
|
|
|
3085
3085
|
---
|
|
3086
3086
|
|
|
@@ -3115,7 +3115,7 @@ The current year is ${new Date().getFullYear()}. Use this year when searching fo
|
|
|
3115
3115
|
${H}
|
|
3116
3116
|
</div>
|
|
3117
3117
|
</body>
|
|
3118
|
-
</html>`}var lga;var wwH=l(()=>{lga={"gpt-4":30,"gpt-4-turbo":10,"gpt-4o":2.5,"claude-3-opus":15,"claude-3-sonnet":3,"claude-3-haiku":0.25,default:1}});import{existsSync as nUL,mkdirSync as rUL,readFileSync as
|
|
3118
|
+
</html>`}var lga;var wwH=l(()=>{lga={"gpt-4":30,"gpt-4-turbo":10,"gpt-4o":2.5,"claude-3-opus":15,"claude-3-sonnet":3,"claude-3-haiku":0.25,default:1}});import{existsSync as nUL,mkdirSync as rUL,readFileSync as $ui,writeFileSync as EUL}from"fs";import{join as zwH}from"path";import{homedir as IUL}from"os";import{createServer as eUL}from"http";function Bga(){return zwH(IUL(),".raccoon")}function RUL(A){return zwH(Bga(),"shared",`${A}.raccoon-session.json`)}function WwH(A){let H=zwH(Bga(),"shared");if(!nUL(H))rUL(H,{recursive:!0});let _={version:DUL,shareId:Math.random().toString(36).substring(2,10),session:A,exportedAt:new Date().toISOString()};return EUL(RUL(_.shareId),JSON.stringify(_,null,2)),_}function ZwH(A,H=8788){if(V_A)return;V_A=eUL((_,J)=>{let a=_.url??"/";if(J.setHeader("Access-Control-Allow-Origin","*"),a==="/"||a==="/view")J.writeHead(200,{"Content-Type":"text/html"}),J.end(YwA(A.session));else if(a==="/bundle"||a==="/download")J.writeHead(200,{"Content-Type":"application/json","Content-Disposition":`attachment; filename="${A.shareId}.raccoon-session.json"`}),J.end(JSON.stringify(A,null,2));else if(a==="/meta")J.writeHead(200,{"Content-Type":"application/json"}),J.end(JSON.stringify({title:A.session.title??"Untitled",messageCount:A.session.messages?.length??0,model:A.session.modelId??"unknown",mode:A.session.agentMode??"build"}));else J.writeHead(404),J.end("Not found")}),V_A.listen(H,"0.0.0.0")}function qga(){if(V_A)V_A.close(),V_A=null}var DUL=1,V_A=null;var pga=l(()=>{wwH()});import{existsSync as mUL,readFileSync as dUL,writeFileSync as uUL}from"fs";import{homedir as XUL}from"os";function MUL(A){return`${XUL()}/.raccoon/sessions/${A}.json`}function Qga(A,H,_){let J=MUL(A);if(!mUL(J))return{keptMessages:0,removedMessages:0,undidFiles:0};let a=JSON.parse(dUL(J,"utf-8")),f=a.messages??[],t=Math.max(0,Math.min(H,f.length-1)),T=f.length-t,P=0;if(_&&T>0){let i=f.slice(t);for(let n of i)if(n.role==="assistant"&&n.content){if(n.content.match(/(?:write|edit|create)\s+(?:file\s+)?["']?([^"'\n]+)["']?/i)&&P<5)P++}}return a.messages=f.slice(0,t),uUL(J,JSON.stringify(a,null,2)),{keptMessages:t,removedMessages:T,undidFiles:P}}var vga=()=>{};import{existsSync as cUL,readdirSync as hUL,readFileSync as UUL}from"fs";import{join as oUL}from"path";import{homedir as jUL}from"os";function $UL(){return`${jUL()}/.raccoon/sessions`}function Cga(A,H){let _=$UL();if(!cUL(_))return[];let J={},a=A,f=A.match(/provider:(\S+)/);if(f)J.provider=f[1],a=a.replace(f[0],"").trim();let t=A.match(/file:"([^"]+)"/);if(t)J.file=t[1],a=a.replace(t[0],"").trim();let T=A.match(/diff:"([^"]+)"/);if(T)J.diff=T[1],a=a.replace(T[0],"").trim();let P=[],i=hUL(_).filter((n)=>n.endsWith(".json"));for(let n of i)try{let r=JSON.parse(UUL(oUL(_,n),"utf-8"));if(J.provider&&r.providerId!==J.provider)continue;let E=0,I=[],e="",D=r.messages??[];if(r.title&&a){let m=r.title.toLowerCase(),d=a.toLowerCase();if(m.includes(d))E+=10,e=r.title}for(let m of D){let d=m.content??"";if(a&&d.toLowerCase().includes(a.toLowerCase())){if(E+=m.role==="user"?3:1,!e)e=d.slice(0,200)}let X=d.match(/(?:`[^`]+\.\w+`)/g);if(X)for(let u of X){let c=u.replace(/`/g,"");if(!I.includes(c))I.push(c)}if(J.diff){let u=d.split(`
|
|
3119
3119
|
`);for(let c of u)if((c.startsWith("+")||c.startsWith("-"))&&c.includes(J.diff))E+=5}if(J.file&&d.includes(J.file))E+=2}if(E>0)P.push({sessionId:r.id,title:r.title??"Untitled",provider:r.providerId??"unknown",score:E,files:I.slice(0,5),snippet:e.slice(0,200)})}catch{}return P.sort((n,r)=>r.score-n.score),P.slice(0,H??20)}function Sga(A){if(!A.length)return"No sessions found matching query.";return A.map((H,_)=>`${_+1}. ${H.sessionId.slice(0,8)} | ${H.title} (${H.provider}) \u2014 score: ${H.score}
|
|
3120
3120
|
${H.snippet.slice(0,100)}`).join(`
|
|
3121
3121
|
`)}var Kga=()=>{};import{existsSync as kga,mkdirSync as lUL,readFileSync as gUL,writeFileSync as Oga}from"fs";import{join as Nga}from"path";import{homedir as xUL}from"os";function Yga(){return Nga(xUL(),".raccoon","goals")}function VwH(A){return Nga(Yga(),`${A}.json`)}function yga(A,H){let _=Yga();if(!kga(_))lUL(_,{recursive:!0});let J={condition:H,active:!0,setAt:new Date};Oga(VwH(A),JSON.stringify(J,null,2))}function bga(A){let H=VwH(A);if(!kga(H))return null;try{let _=JSON.parse(gUL(H,"utf-8"));return _.setAt=new Date(_.setAt),_}catch{return null}}function Fga(A){let H=bga(A);if(H)H.active=!1,Oga(VwH(A),JSON.stringify(H,null,2))}function swH(A){let H=bga(A);if(!H)return"No active goal.";return H.active?`\uD83C\uDFAF Goal (set ${H.setAt.toLocaleString()}): ${H.condition}`:`\u2713 Goal completed: ${H.condition}`}var Gga=()=>{};import{spawnSync as oMA}from"child_process";function Ny(){return oMA("which",["tailscale"],{timeout:3000,encoding:"utf-8",stdio:["ignore","pipe","pipe"]}).status===0}function AzH(A=4){let _=oMA("tailscale",["ip",A===4?"-4":"-6"],{timeout:5000,encoding:"utf-8",stdio:["ignore","pipe","pipe"]});if(_.status!==0)return;return _.stdout.trim()||void 0}function s_A(){if(!Ny())return{installed:!1,connected:!1};let H=oMA("tailscale",["status","--json"],{timeout:5000,encoding:"utf-8",stdio:["ignore","pipe","pipe"]});if(H.status!==0)return{installed:!0,connected:!1};try{let _=JSON.parse(H.stdout),J=AzH(4),a=AzH(6);return{installed:!0,connected:!0,ipv4:J,ipv6:a,hostname:_.Self?.HostName,magicDnsName:_.Self?.DNSName?.replace(/\.$/,"")}}catch{return{installed:!0,connected:!0}}}function HzH(A,H){let _=H??"/";if(oMA("tailscale",["serve","--bg","--https",A.toString(),_],{timeout:1e4,encoding:"utf-8",stdio:["ignore","pipe","pipe"]}).status===0)return{success:!0,message:`Tailscale serve configured: https://<tailnet-ip>:${A}${_}`};let a=oMA("tailscale",["serve","--bg",A.toString(),_],{timeout:1e4,encoding:"utf-8",stdio:["ignore","pipe","pipe"]});return{success:a.status===0,message:a.status===0?`Tailscale serve configured on port ${A}`:`Failed to configure Tailscale serve: ${a.stderr.trim()||"unknown error"}`}}function _zH(A,H){if(!A.installed)return"Tailscale is not installed.";if(!A.connected)return"Tailscale is installed but not connected.";let _=["Tailscale connected",` Hostname: ${A.hostname??"unknown"}`];if(A.ipv4)_.push(` IPv4: ${A.ipv4}`);if(A.ipv6)_.push(` IPv6: ${A.ipv6}`);if(A.magicDnsName)_.push(` MagicDNS: ${A.magicDnsName}`);if(_.push("","Access URLs:",` Local: http://localhost:${H}`),A.ipv4)_.push(` Tailnet: https://${A.ipv4}:${H}`);if(A.magicDnsName)_.push(` MagicDNS: https://${A.magicDnsName}:${H}`);return _.join(`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openfork",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "OpenFork — AI development CLI with Raccoon features. Monochrome terminal UI.",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
},
|
|
14
14
|
"repository": {
|
|
15
15
|
"type": "git",
|
|
16
|
-
"url": "
|
|
16
|
+
"url": "https://gitlab.com/arjunkshah/openfork"
|
|
17
17
|
},
|
|
18
18
|
"engines": {
|
|
19
19
|
"node": ">=18.0.0"
|