import { $APP, shadow$provide } from "./shared.js";
const shadow_esm_import = function(x) { return import(x) };
import*as esm_import$node_fs from"node:fs";import*as esm_import$node_path from"node:path";$APP.ardegazu.train.episodes={};$APP.ardegazu.train.episodes.EpisodeWriter=class{constructor(a){this.dir=esm_import$node_path.join(a,"episodes");this.buf=[]}};$APP.ardegazu.train.episodes.EpisodeWriter.prototype.add=function(a){this.buf.push(a)};
$APP.ardegazu.train.episodes.EpisodeWriter.prototype.flush=function(){if(this.buf.length>0){var a=""+$APP.cljs.core.str.cljs$core$IFn$_invoke$arity$1(this.buf.map(function(d){return JSON.stringify(d)}).join("\n"))+"\n",b=(new Date).toISOString().slice(0,7),c=this.buf[0].g;this.buf=[];try{esm_import$node_fs.mkdirSync(this.dir,{recursive:!0}),esm_import$node_fs.appendFileSync(esm_import$node_path.join(this.dir,""+$APP.cljs.core.str.cljs$core$IFn$_invoke$arity$1(c)+"-"+$APP.cljs.core.str.cljs$core$IFn$_invoke$arity$1(b)+
".jsonl"),a)}catch(d){}}};Object.defineProperty($APP.ardegazu.train.episodes.EpisodeWriter.prototype,"pending",{get:function(){return this.buf.length},configurable:!0});
$APP.ardegazu.train.episodes.read_new_transitions=function(a,b,c){for(var d=[],e=c.offsets,f=""+$APP.cljs.core.str.cljs$core$IFn$_invoke$arity$1(b)+"-",g=a.length,h=0;;)if(h<g){var k=a[h];c=function(){try{return esm_import$node_fs.readdirSync(k).filter(function(S,Y,u,w,x,y){return function(A){var B=A.startsWith(y);return $APP.cljs.core.truth_(B)?A.endsWith(".jsonl"):B}}(h,k,g,d,e,f))}catch(S){return null}}();if(c!=null)for(var l=c.length,m=0;;)if(m<l){var n=esm_import$node_path.join(k,c[m]),p=function(){var S=
e[n];return S==null?0:S}();try{var q=esm_import$node_fs.statSync(n).size}catch(S){q=null}if(q!=null&&q>p){try{var r=esm_import$node_fs.readFileSync(n,"utf8").slice(p)}catch(S){r=null}if(r!=null){var t=r.lastIndexOf("\n");if(t>=0){for(var v=r.slice(0,t).split("\n"),z=v.length,F=0;;)if(F<z){var K=v[F];if(K.length>0)try{var P=JSON.parse(K);P.g===b&&d.push(P)}catch(S){}F+=1}else break;e[n]=p+t+1}}}m+=1}else break;h+=1}else break;return d};export const EpisodeWriter=$APP.ardegazu.train.episodes.EpisodeWriter;export const readNewTransitions=$APP.ardegazu.train.episodes.read_new_transitions;