17 lines
125 KiB
JavaScript
17 lines
125 KiB
JavaScript
import {a,c,b,d,e,p,w,D as D$1}from'./chunk-IBKUMYUL.js';export{k as AddressSchema,A as AgentDBEntrySchema,t as BdArgumentSchema,v as BdBridge,u as BdBridgeError,q as BeadIdSchema,s as CliBeadSchema,r as CliBeadTypeSchema,y as CliSyncDirectionSchema,x as ConflictStrategySchema,i as GasLimitSchema,h as GasPriceSchema,m as GtArgumentSchema,o as GtBridge,n as GtBridgeError,g as GtIdentifierSchema,f as GtSafeStringSchema,l as NetworkSchema,C as SyncBridge,B as SyncBridgeError,z as SyncStatusSchema,j as TxHashSchema,w as createBdBridge,p as createGtBridge,D as createSyncBridge}from'./chunk-IBKUMYUL.js';import {EventEmitter}from'events';import {z}from'zod';import {randomUUID}from'crypto';import {v4}from'uuid';/**
|
|
* @claude-flow/plugin-gastown-bridge v0.1.3
|
|
*
|
|
* WASM-accelerated Gas Town orchestration for Claude Flow V3
|
|
* Bundle optimized: <100KB gzipped total
|
|
*
|
|
* @license MIT
|
|
* @copyright 2024 rUv
|
|
*/
|
|
var Fe={townRoot:"~/gt",enableBeadsSync:true,syncInterval:6e4,nativeFormulas:true,enableConvoys:true,autoCreateBeads:false,enableGUPP:false,guppCheckInterval:5e3,cliTimeout:3e4},un={CLI_NOT_FOUND:"GT_CLI_NOT_FOUND",CLI_TIMEOUT:"GT_CLI_TIMEOUT",CLI_ERROR:"GT_CLI_ERROR",BEAD_NOT_FOUND:"GT_BEAD_NOT_FOUND",CONVOY_NOT_FOUND:"GT_CONVOY_NOT_FOUND",FORMULA_NOT_FOUND:"GT_FORMULA_NOT_FOUND",FORMULA_PARSE_ERROR:"GT_FORMULA_PARSE_ERROR",WASM_NOT_INITIALIZED:"GT_WASM_NOT_INITIALIZED",SYNC_ERROR:"GT_SYNC_ERROR",DEPENDENCY_CYCLE:"GT_DEPENDENCY_CYCLE",INVALID_SLING_TARGET:"GT_INVALID_SLING_TARGET"},Zr=z.enum(["open","in_progress","closed"]),Yr=z.object({id:z.string().min(1),title:z.string().min(1),description:z.string(),status:Zr,priority:z.number().int().min(0),labels:z.array(z.string()),parentId:z.string().optional(),createdAt:z.coerce.date(),updatedAt:z.coerce.date(),assignee:z.string().optional(),rig:z.string().optional(),blockedBy:z.array(z.string()).optional(),blocks:z.array(z.string()).optional()}),Xr=z.object({title:z.string().min(1),description:z.string().optional(),priority:z.number().int().min(0).optional(),labels:z.array(z.string()).optional(),parent:z.string().optional(),rig:z.string().optional(),assignee:z.string().optional()}),Qr=z.enum(["convoy","workflow","expansion","aspect"]),eo=z.object({id:z.string().min(1),title:z.string().min(1),description:z.string(),needs:z.array(z.string()).optional(),duration:z.number().optional(),requires:z.array(z.string()).optional(),metadata:z.record(z.unknown()).optional()}),to=z.object({id:z.string().min(1),title:z.string().min(1),focus:z.string(),description:z.string(),agent:z.string().optional(),order:z.number().optional()}),ro=z.object({name:z.string().min(1),description:z.string().optional(),default:z.string().optional(),required:z.boolean().optional(),pattern:z.string().optional(),enum:z.array(z.string()).optional()}),oo=z.object({strategy:z.enum(["merge","sequential","parallel"]),format:z.string().optional(),description:z.string().optional()}),so=z.object({name:z.string().min(1),content:z.string(),outputPath:z.string().optional()}),no=z.object({name:z.string().min(1),pointcut:z.string(),advice:z.string(),type:z.enum(["before","after","around"])}),ao=z.object({name:z.string().min(1),description:z.string(),type:Qr,version:z.number().int().min(1),legs:z.array(to).optional(),synthesis:oo.optional(),steps:z.array(eo).optional(),vars:z.record(ro).optional(),templates:z.array(so).optional(),aspects:z.array(no).optional(),metadata:z.record(z.unknown()).optional()}),io=z.enum(["active","landed","failed","paused"]),lo=z.object({total:z.number().int().min(0),closed:z.number().int().min(0),inProgress:z.number().int().min(0),blocked:z.number().int().min(0)}),co=z.object({id:z.string().min(1),name:z.string().min(1),trackedIssues:z.array(z.string()),status:io,startedAt:z.coerce.date(),completedAt:z.coerce.date().optional(),progress:lo,formula:z.string().optional(),description:z.string().optional()}),rt=z.object({name:z.string().min(1),issues:z.array(z.string()).min(1),description:z.string().optional(),formula:z.string().optional()}),mn=z.enum(["mayor","polecat","refinery","witness","deacon","dog","crew"]),uo=z.enum(["polecat","crew","mayor"]),mo=z.object({beadId:z.string().min(1),target:uo,formula:z.string().optional(),priority:z.number().int().min(0).optional()}),pn=z.enum(["pull","push","both"]),po=z.object({townRoot:z.string().default("~/gt"),enableBeadsSync:z.boolean().default(true),syncInterval:z.number().int().positive().default(6e4),nativeFormulas:z.boolean().default(true),enableConvoys:z.boolean().default(true),autoCreateBeads:z.boolean().default(false),enableGUPP:z.boolean().default(false),guppCheckInterval:z.number().int().positive().default(5e3),cliTimeout:z.number().int().positive().default(3e4)});function gn(s){return Yr.parse(s)}function yn(s){return Xr.parse(s)}function fn(s){return ao.parse(s)}function hn(s){return co.parse(s)}function bn(s){return rt.parse(s)}function vn(s){return mo.parse(s)}function xt(s){return po.parse(s)}var y={UNKNOWN:"GT_UNKNOWN",INITIALIZATION_FAILED:"GT_INITIALIZATION_FAILED",NOT_INITIALIZED:"GT_NOT_INITIALIZED",CONFIGURATION_ERROR:"GT_CONFIGURATION_ERROR",VALIDATION_FAILED:"GT_VALIDATION_FAILED",INVALID_INPUT:"GT_INVALID_INPUT",INVALID_BEAD_ID:"GT_INVALID_BEAD_ID",INVALID_FORMULA_NAME:"GT_INVALID_FORMULA_NAME",INVALID_CONVOY_ID:"GT_INVALID_CONVOY_ID",INVALID_ARGUMENTS:"GT_INVALID_ARGUMENTS",COMMAND_INJECTION_DETECTED:"GT_COMMAND_INJECTION_DETECTED",PATH_TRAVERSAL_DETECTED:"GT_PATH_TRAVERSAL_DETECTED",BEAD_NOT_FOUND:"GT_BEAD_NOT_FOUND",BEAD_CREATE_FAILED:"GT_BEAD_CREATE_FAILED",BEAD_UPDATE_FAILED:"GT_BEAD_UPDATE_FAILED",BEAD_DELETE_FAILED:"GT_BEAD_DELETE_FAILED",BEAD_PARSE_FAILED:"GT_BEAD_PARSE_FAILED",FORMULA_NOT_FOUND:"GT_FORMULA_NOT_FOUND",FORMULA_PARSE_FAILED:"GT_FORMULA_PARSE_FAILED",FORMULA_COOK_FAILED:"GT_FORMULA_COOK_FAILED",FORMULA_INVALID_TYPE:"GT_FORMULA_INVALID_TYPE",CONVOY_NOT_FOUND:"GT_CONVOY_NOT_FOUND",CONVOY_CREATE_FAILED:"GT_CONVOY_CREATE_FAILED",CLI_NOT_FOUND:"GT_CLI_NOT_FOUND",CLI_TIMEOUT:"GT_CLI_TIMEOUT",CLI_EXECUTION_FAILED:"GT_CLI_EXECUTION_FAILED",CLI_INVALID_OUTPUT:"GT_CLI_INVALID_OUTPUT",WASM_NOT_AVAILABLE:"GT_WASM_NOT_AVAILABLE",WASM_EXECUTION_FAILED:"GT_WASM_EXECUTION_FAILED",SYNC_FAILED:"GT_SYNC_FAILED",SYNC_CONFLICT:"GT_SYNC_CONFLICT",DEPENDENCY_CYCLE:"GT_DEPENDENCY_CYCLE",GRAPH_ERROR:"GT_GRAPH_ERROR"},f=class s extends Error{code;timestamp;context;cause;constructor(e,r=y.UNKNOWN,t,o){super(e),this.name="GasTownError",this.code=r,this.timestamp=new Date,this.context=t,this.cause=o,Error.captureStackTrace&&Error.captureStackTrace(this,s);}toJSON(){return {name:this.name,message:this.message,code:this.code,timestamp:this.timestamp.toISOString(),context:this.context,cause:this.cause?.message,stack:this.stack}}toString(){let e=`[${this.code}] ${this.message}`;return this.context&&(e+=` | Context: ${JSON.stringify(this.context)}`),this.cause&&(e+=` | Caused by: ${this.cause.message}`),e}},K=class s extends f{beadId;operation;constructor(e,r=y.BEAD_NOT_FOUND,t,o){super(e,r,t,o),this.name="BeadsError",t?.beadId&&typeof t.beadId=="string"&&(this.beadId=t.beadId),t?.operation&&typeof t.operation=="string"&&(this.operation=t.operation),Error.captureStackTrace&&Error.captureStackTrace(this,s);}static notFound(e){return new s(`Bead not found: ${e}`,y.BEAD_NOT_FOUND,{beadId:e,operation:"get"})}static createFailed(e,r){return new s(`Failed to create bead: ${e}`,y.BEAD_CREATE_FAILED,{operation:"create"},r)}static parseFailed(e,r){let t=e.length>200?e.slice(0,200)+"...":e;return new s("Failed to parse bead output",y.BEAD_PARSE_FAILED,{operation:"parse",outputLength:e.length,outputPreview:t},r)}},D=class s extends f{constraints;constructor(e,r=y.VALIDATION_FAILED,t=[],o){super(e,r,{constraints:t},o),this.name="ValidationError",this.constraints=t,Error.captureStackTrace&&Error.captureStackTrace(this,s);}static invalidBeadId(e){let r=e.replace(/[^\w\s-]/g,"?").slice(0,32);return new s("Invalid bead ID format",y.INVALID_BEAD_ID,[{field:"beadId",constraint:"alphanumeric with gt- prefix",actual:r,expected:"gt-{4-16 alphanumeric} or numeric"}])}static invalidFormulaName(e){let r=e.replace(/[^\w\s-]/g,"?").slice(0,32);return new s("Invalid formula name format",y.INVALID_FORMULA_NAME,[{field:"formulaName",constraint:"alphanumeric with dash/underscore, starting with letter",actual:r,expected:"[a-zA-Z][a-zA-Z0-9_-]{0,63}"}])}static invalidConvoyId(e){let r=e.replace(/[^\w\s-]/g,"?").slice(0,32);return new s("Invalid convoy ID format",y.INVALID_CONVOY_ID,[{field:"convoyId",constraint:"UUID format",actual:r,expected:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}])}static commandInjection(e,r){return new s(`Command injection detected in ${e}`,y.COMMAND_INJECTION_DETECTED,[{field:e,constraint:"no shell metacharacters",actual:"[REDACTED]",expected:"safe characters only"}])}static pathTraversal(e){return new s(`Path traversal detected in ${e}`,y.PATH_TRAVERSAL_DETECTED,[{field:e,constraint:"no parent directory references",actual:"[REDACTED]",expected:"safe path characters only"}])}static combine(e){let r=e.flatMap(t=>t.constraints);return new s(`Multiple validation errors: ${e.map(t=>t.message).join("; ")}`,y.VALIDATION_FAILED,r)}},Oe=class s extends f{command;args;exitCode;stderr;durationMs;constructor(e,r=y.CLI_EXECUTION_FAILED,t,o){let n=(t.args??[]).map(i=>i.length>50?i.slice(0,50)+"...":i),a=t.stderr&&t.stderr.length>500?t.stderr.slice(0,500)+"...":t.stderr;super(e,r,{command:t.command,args:n,exitCode:t.exitCode,durationMs:t.durationMs},o),this.name="CLIExecutionError",this.command=t.command,this.args=n,this.exitCode=t.exitCode,this.stderr=a,this.durationMs=t.durationMs,Error.captureStackTrace&&Error.captureStackTrace(this,s);}static notFound(e){return new s(`CLI command not found: ${e}`,y.CLI_NOT_FOUND,{command:e})}static timeout(e,r,t){return new s(`CLI command timed out after ${t}ms`,y.CLI_TIMEOUT,{command:e,args:r,durationMs:t})}static failed(e,r,t,o,n){return new s(`CLI command failed with exit code ${t}`,y.CLI_EXECUTION_FAILED,{command:e,args:r,exitCode:t,stderr:o,durationMs:n})}static invalidOutput(e,r){return new s(`CLI command produced invalid output: ${r}`,y.CLI_INVALID_OUTPUT,{command:e})}},j=class s extends f{formulaName;formulaType;constructor(e,r=y.FORMULA_PARSE_FAILED,t,o){super(e,r,t,o),this.name="FormulaError",t?.formulaName&&typeof t.formulaName=="string"&&(this.formulaName=t.formulaName),t?.formulaType&&typeof t.formulaType=="string"&&(this.formulaType=t.formulaType),Error.captureStackTrace&&Error.captureStackTrace(this,s);}static notFound(e){return new s(`Formula not found: ${e}`,y.FORMULA_NOT_FOUND,{formulaName:e})}static parseFailed(e,r,t){return new s(`Failed to parse formula ${e}: ${r}`,y.FORMULA_PARSE_FAILED,{formulaName:e,parseError:r},t)}static cookFailed(e,r,t){return new s(`Failed to cook formula ${e}: ${r}`,y.FORMULA_COOK_FAILED,{formulaName:e,cookError:r},t)}},I=class s extends f{convoyId;constructor(e,r=y.CONVOY_NOT_FOUND,t,o){super(e,r,t,o),this.name="ConvoyError",t?.convoyId&&typeof t.convoyId=="string"&&(this.convoyId=t.convoyId),Error.captureStackTrace&&Error.captureStackTrace(this,s);}static notFound(e){return new s(`Convoy not found: ${e}`,y.CONVOY_NOT_FOUND,{convoyId:e})}static createFailed(e,r){return new s(`Failed to create convoy: ${e}`,y.CONVOY_CREATE_FAILED,{operation:"create"},r)}};function go(s){return s instanceof f}function yo(s){return s instanceof D}function fo(s){return s instanceof Oe}function ho(s){return s instanceof K}function bo(s,e){return s instanceof f?s:s instanceof Error?new f(s.message,e??y.UNKNOWN,void 0,s):new f(String(s),e??y.UNKNOWN)}function vo(s){return s instanceof Error?s.message:String(s)}var _=class{pool=[];factory;resetFn;config;stats={created:0,available:0,inUse:0,misses:0,hits:0,peakSize:0,memorySaved:0};constructor(e,r){this.factory=e,this.resetFn=r?.reset,this.config={initialSize:r?.initialSize??0,maxSize:r?.maxSize??0,objectSizeBytes:r?.objectSizeBytes??256,preWarm:r?.preWarm??false},this.config.preWarm&&this.config.initialSize>0&&this.preWarm(this.config.initialSize);}acquire(){let e;return this.pool.length>0?(e=this.pool.pop(),this.stats.hits++,this.stats.available--):(e=this.factory(),this.stats.created++,this.stats.misses++),this.stats.inUse++,this.stats.inUse>this.stats.peakSize&&(this.stats.peakSize=this.stats.inUse),e}release(e){if(this.resetFn?this.resetFn(e):"reset"in e&&typeof e.reset=="function"&&e.reset(),this.config.maxSize>0&&this.pool.length>=this.config.maxSize){this.stats.inUse--;return}this.pool.push(e),this.stats.available++,this.stats.inUse--,this.stats.memorySaved+=this.config.objectSizeBytes;}releaseAll(e){for(let r of e)this.release(r);}preWarm(e){let r=Math.min(e,this.config.maxSize>0?this.config.maxSize-this.pool.length:e);for(let t=0;t<r;t++){let o=this.factory();this.stats.created++,this.pool.push(o),this.stats.available++;}}clear(){this.pool.length=0,this.stats.available=0;}getStats(){return {...this.stats}}get size(){return this.pool.length}get hitRate(){let e=this.stats.hits+this.stats.misses;return e>0?this.stats.hits/e*100:0}},se=class{id="";title="";description="";status="open";priority=0;labels=[];createdAt=new Date;updatedAt=new Date;parentId;assignee;rig;blockedBy;blocks;reset(){this.id="",this.title="",this.description="",this.status="open",this.priority=0,this.labels.length=0,this.createdAt=new Date,this.updatedAt=new Date,this.parentId=void 0,this.assignee=void 0,this.rig=void 0,this.blockedBy=void 0,this.blocks=void 0;}initFrom(e){return this.id=e.id??"",this.title=e.title??"",this.description=e.description??"",this.status=e.status??"open",this.priority=e.priority??0,this.labels=e.labels?[...e.labels]:[],this.createdAt=e.createdAt??new Date,this.updatedAt=e.updatedAt??new Date,this.parentId=e.parentId,this.assignee=e.assignee,this.rig=e.rig,this.blockedBy=e.blockedBy?[...e.blockedBy]:void 0,this.blocks=e.blocks?[...e.blocks]:void 0,this}},ne=class{id="";title="";description="";needs;duration;requires;metadata;reset(){this.id="",this.title="",this.description="",this.needs=void 0,this.duration=void 0,this.requires=void 0,this.metadata=void 0;}initFrom(e){return this.id=e.id??"",this.title=e.title??"",this.description=e.description??"",this.needs=e.needs?[...e.needs]:void 0,this.duration=e.duration,this.requires=e.requires?[...e.requires]:void 0,this.metadata=e.metadata?{...e.metadata}:void 0,this}},ae=class{name="";description="";type="workflow";version=1;steps;legs;vars;metadata;reset(){this.name="",this.description="",this.type="workflow",this.version=1,this.steps=void 0,this.legs=void 0,this.vars=void 0,this.metadata=void 0;}initFrom(e){return this.name=e.name??"",this.description=e.description??"",this.type=e.type??"workflow",this.version=e.version??1,this.steps=e.steps?[...e.steps]:void 0,this.legs=e.legs?[...e.legs]:void 0,this.vars=e.vars?{...e.vars}:void 0,this.metadata=e.metadata?{...e.metadata}:void 0,this}},ie=class{id="";name="";trackedIssues=[];status="active";startedAt=new Date;completedAt;progress={total:0,closed:0,inProgress:0,blocked:0};formula;description;reset(){this.id="",this.name="",this.trackedIssues.length=0,this.status="active",this.startedAt=new Date,this.completedAt=void 0,this.progress={total:0,closed:0,inProgress:0,blocked:0},this.formula=void 0,this.description=void 0;}initFrom(e){return this.id=e.id??"",this.name=e.name??"",this.trackedIssues=e.trackedIssues?[...e.trackedIssues]:[],this.status=e.status??"active",this.startedAt=e.startedAt??new Date,this.completedAt=e.completedAt,this.progress=e.progress?{...e.progress}:{total:0,closed:0,inProgress:0,blocked:0},this.formula=e.formula,this.description=e.description,this}},le=class{id="";formulaName="";title="";description="";type="workflow";sourceId="";agent;dependencies=[];order=0;metadata={};createdAt=new Date;reset(){this.id="",this.formulaName="",this.title="",this.description="",this.type="workflow",this.sourceId="",this.agent=void 0,this.dependencies.length=0,this.order=0;for(let e of Object.keys(this.metadata))delete this.metadata[e];this.createdAt=new Date;}initFrom(e){return this.id=e.id??"",this.formulaName=e.formulaName??"",this.title=e.title??"",this.description=e.description??"",this.type=e.type??"workflow",this.sourceId=e.sourceId??"",this.agent=e.agent,this.dependencies=e.dependencies?[...e.dependencies]:[],this.order=e.order??0,this.metadata=e.metadata?{...e.metadata}:{},this.createdAt=e.createdAt??new Date,this}},N=new _(()=>new se,{initialSize:100,maxSize:1e4,objectSizeBytes:512,preWarm:false}),X=new _(()=>new ae,{initialSize:10,maxSize:500,objectSizeBytes:1024,preWarm:false}),Q=new _(()=>new ne,{initialSize:50,maxSize:5e3,objectSizeBytes:256,preWarm:false}),ee=new _(()=>new ie,{initialSize:10,maxSize:200,objectSizeBytes:768,preWarm:false}),R=new _(()=>new le,{initialSize:50,maxSize:5e3,objectSizeBytes:384,preWarm:false}),Pt={bead:N,formula:X,step:Q,convoy:ee,molecule:R};function ce(){return {bead:N.getStats(),formula:X.getStats(),step:Q.getStats(),convoy:ee.getStats(),molecule:R.getStats()}}function It(){return Object.values(Pt).reduce((s,e)=>s+e.getStats().memorySaved,0)}function de(){for(let s of Object.values(Pt))s.clear();}function Le(){N.preWarm(100),X.preWarm(10),Q.preWarm(50),ee.preWarm(10),R.preWarm(50);}function fe(){let s=ce(),e=Object.values(s),r=e.reduce((i,l)=>i+l.hits,0),t=e.reduce((i,l)=>i+l.misses,0),o=e.reduce((i,l)=>i+l.memorySaved,0),n=e.reduce((i,l)=>i+l.inUse,0),a=e.reduce((i,l)=>i+l.available,0);return {totalHitRate:r+t>0?r/(r+t)*100:0,totalMemorySavedKB:o/1024,totalObjectsInUse:n,totalObjectsAvailable:a}}var te=class{name;config;allocations=[];stats={totalAllocations:0,currentAllocations:0,resetCount:0,peakAllocations:0,memoryUsed:0,memorySaved:0};beadPool;stepPool;formulaPool;convoyPool;moleculePool;constructor(e,r){this.name=e??r?.name??"arena",this.config={name:this.name,initialCapacity:r?.initialCapacity??100,maxAllocations:r?.maxAllocations??0,returnToPool:r?.returnToPool??true},this.beadPool=new _(()=>new se,{initialSize:0,maxSize:1e4,objectSizeBytes:512}),this.stepPool=new _(()=>new ne,{initialSize:0,maxSize:5e3,objectSizeBytes:256}),this.formulaPool=new _(()=>new ae,{initialSize:0,maxSize:500,objectSizeBytes:1024}),this.convoyPool=new _(()=>new ie,{initialSize:0,maxSize:200,objectSizeBytes:768}),this.moleculePool=new _(()=>new le,{initialSize:0,maxSize:5e3,objectSizeBytes:384}),this.config.initialCapacity>0&&(this.allocations=new Array(this.config.initialCapacity),this.allocations.length=0);}allocate(e,r=256){this.checkMaxAllocations();let t=e();return this.trackAllocation(t,"generic",r),t}allocateTyped(e){this.checkMaxAllocations();let r,t;switch(e){case "bead":r=this.beadPool.acquire(),t=512;break;case "step":r=this.stepPool.acquire(),t=256;break;case "formula":r=this.formulaPool.acquire(),t=1024;break;case "convoy":r=this.convoyPool.acquire(),t=768;break;case "molecule":r=this.moleculePool.acquire(),t=384;break;default:throw new Error(`Unknown allocatable type: ${e}`)}return this.trackAllocation(r,e,t),r}allocateMany(e,r){let t=new Array(r);for(let o=0;o<r;o++)t[o]=this.allocateTyped(e);return t}reset(){if(this.config.returnToPool)for(let r of this.allocations)this.returnToPool(r);let e=this.stats.memoryUsed;this.stats.memorySaved+=e,this.stats.resetCount++,this.stats.currentAllocations>this.stats.peakAllocations&&(this.stats.peakAllocations=this.stats.currentAllocations),this.allocations.length=0,this.stats.currentAllocations=0,this.stats.memoryUsed=0;}getStats(){return {...this.stats}}get allocationCount(){return this.stats.currentAllocations}get arenaName(){return this.name}dispose(){this.reset(),this.beadPool.clear(),this.stepPool.clear(),this.formulaPool.clear(),this.convoyPool.clear(),this.moleculePool.clear();}trackAllocation(e,r,t){this.allocations.push({object:e,type:r,sizeBytes:t}),this.stats.totalAllocations++,this.stats.currentAllocations++,this.stats.memoryUsed+=t;}checkMaxAllocations(){this.config.maxAllocations>0&&this.stats.currentAllocations>=this.config.maxAllocations&&(console.warn(`[${this.name}] Max allocations reached, auto-resetting`),this.reset());}returnToPool(e){switch(e.type){case "bead":this.beadPool.release(e.object);break;case "step":this.stepPool.release(e.object);break;case "formula":this.formulaPool.release(e.object);break;case "convoy":this.convoyPool.release(e.object);break;case "molecule":this.moleculePool.release(e.object);break}}};function kt(s,e){let r=new te(s,e);return Object.assign(r,{[Symbol.dispose](){r.reset();}})}async function Mt(s,e,r){let t=new te(s,r);try{return await e(t)}finally{t.reset();}}function At(s,e,r){let t=new te(s,r);try{return e(t)}finally{t.reset();}}var Se=class{arenas=new Map;stats={totalArenas:0,activeArenas:0,totalMemorySaved:0};getArena(e,r){let t=this.arenas.get(e);return t||(t=new te(e,r),this.arenas.set(e,t),this.stats.totalArenas++,this.stats.activeArenas++),t}resetArena(e){let r=this.arenas.get(e);if(r){let t=r.getStats().memoryUsed;r.reset(),this.stats.totalMemorySaved+=t;}}resetAll(){for(let e of this.arenas.values()){let r=e.getStats().memoryUsed;e.reset(),this.stats.totalMemorySaved+=r;}}disposeArena(e){let r=this.arenas.get(e);r&&(r.dispose(),this.arenas.delete(e),this.stats.activeArenas--);}disposeAll(){for(let e of this.arenas.values())e.dispose();this.arenas.clear(),this.stats.activeArenas=0;}getStats(){let e={};for(let[r,t]of this.arenas)e[r]=t.getStats();return {...this.stats,arenaStats:e}}},Z=new Se;var Y=class extends EventEmitter{config;pollTimer;pressureCallbacks=[];lastPressureLevel="none";running=false;statsHistory=[];maxHistorySize=60;constructor(e){super(),this.config={memoryLimit:e?.memoryLimit??0,lowPressureThreshold:e?.lowPressureThreshold??.5,mediumPressureThreshold:e?.mediumPressureThreshold??.7,highPressureThreshold:e?.highPressureThreshold??.85,criticalPressureThreshold:e?.criticalPressureThreshold??.95,pollInterval:e?.pollInterval??0,autoCleanup:e?.autoCleanup??false,gcHints:e?.gcHints??true};}getMemoryUsage(){let e=process.memoryUsage(),r=fe(),t=Z.getStats(),o=0;for(let a of Object.values(t.arenaStats))o+=a.memoryUsed;return {heapUsed:e.heapUsed,heapTotal:e.heapTotal,external:e.external,arrayBuffers:e.arrayBuffers,rss:e.rss,pools:{totalMemorySaved:r.totalMemorySavedKB*1024,hitRate:r.totalHitRate,objectsInUse:r.totalObjectsInUse,objectsAvailable:r.totalObjectsAvailable},arenas:{activeArenas:t.activeArenas,totalMemoryUsed:o,totalMemorySaved:t.totalMemorySaved},timestamp:new Date,underPressure:this.lastPressureLevel!=="none"}}setMemoryLimit(e){this.config.memoryLimit=e;}getMemoryLimit(){return this.config.memoryLimit}onMemoryPressure(e){return this.pressureCallbacks.push(e),()=>{let r=this.pressureCallbacks.indexOf(e);r!==-1&&this.pressureCallbacks.splice(r,1);}}checkPressure(){if(this.config.memoryLimit===0)return "none";let r=this.getMemoryUsage().heapUsed/this.config.memoryLimit;return r>=this.config.criticalPressureThreshold?"critical":r>=this.config.highPressureThreshold?"high":r>=this.config.mediumPressureThreshold?"medium":r>=this.config.lowPressureThreshold?"low":"none"}start(){this.running||(this.running=true,this.config.pollInterval>0&&(this.pollTimer=setInterval(()=>{this.poll();},this.config.pollInterval)));}stop(){this.running=false,this.pollTimer&&(clearInterval(this.pollTimer),this.pollTimer=void 0);}poll(){let e=this.getMemoryUsage(),r=this.checkPressure();if(this.statsHistory.push(e),this.statsHistory.length>this.maxHistorySize&&this.statsHistory.shift(),this.emit("snapshot",e),r!==this.lastPressureLevel){this.lastPressureLevel=r,e.underPressure=r!=="none",this.emit(`pressure:${r}`,e);for(let t of this.pressureCallbacks)try{t(r,e);}catch(o){console.error("[MemoryMonitor] Pressure callback error:",o);}this.config.autoCleanup&&(r==="high"||r==="critical")&&this.triggerCleanup();}this.config.memoryLimit>0&&e.heapUsed>this.config.memoryLimit&&this.emit("limit:exceeded",e);}triggerCleanup(){let e=this.getMemoryUsage();de(),Z.resetAll(),this.config.gcHints&&typeof global.gc=="function"&&global.gc();let r=this.getMemoryUsage();this.emit("cleanup:triggered",e,r);}getMemoryTrend(){if(this.statsHistory.length<2)return 0;let e=this.statsHistory[0],r=this.statsHistory[this.statsHistory.length-1],t=r.timestamp.getTime()-e.timestamp.getTime();return t===0?0:(r.heapUsed-e.heapUsed)/t*1e3}estimateTimeToLimit(){if(this.config.memoryLimit===0)return null;let e=this.getMemoryTrend();if(e<=0)return null;let r=this.getMemoryUsage();return (this.config.memoryLimit-r.heapUsed)/e*1e3}getPoolStats(){return ce()}getHistory(){return [...this.statsHistory]}clearHistory(){this.statsHistory.length=0;}isRunning(){return this.running}getConfig(){return {...this.config}}updateConfig(e){Object.assign(this.config,e),e.pollInterval!==void 0&&this.running&&(this.stop(),this.start());}};function Et(){return new Y().getMemoryUsage()}function _t(s,e){let r=new Y({memoryLimit:s,pollInterval:1e3,autoCleanup:true});return e&&r.onMemoryPressure(e),r.start(),r}var re=null;function Bt(s){return re||(re=new Y({memoryLimit:10*1024*1024,pollInterval:1e3,autoCleanup:true}),re.start()),re.onMemoryPressure(s)}function Dt(){return re}function Rt(){re&&(re.stop(),re=null);}var Te=class{budgets=new Map;totalLimit;constructor(e=10*1024*1024){this.totalLimit=e;}allocateBudget(e,r){return this.getTotalAllocated()+r>this.totalLimit?false:(this.budgets.set(e,{name:e,allocated:r,used:0,limit:r}),true)}updateUsage(e,r){let t=this.budgets.get(e);t&&(t.used=r);}isExceeded(e){let r=this.budgets.get(e);return r?r.used>r.limit:false}getBudget(e){return this.budgets.get(e)}getAllBudgets(){return Array.from(this.budgets.values())}getTotalAllocated(){return Array.from(this.budgets.values()).reduce((e,r)=>e+r.allocated,0)}getTotalUsed(){return Array.from(this.budgets.values()).reduce((e,r)=>e+r.used,0)}freeBudget(e){this.budgets.delete(e);}getTotalLimit(){return this.totalLimit}setTotalLimit(e){this.totalLimit=e;}},ue=new Te(10*1024*1024);ue.allocateBudget("beads",5*1024*1024);ue.allocateBudget("formulas",1*1024*1024);ue.allocateBudget("convoys",1*1024*1024);ue.allocateBudget("wasm",2*1024*1024);ue.allocateBudget("misc",1*1024*1024);var J=class{value;state="uninitialized";initPromise;idleTimer;options;stats;constructor(e){this.options={factory:e.factory,cleanup:e.cleanup??(()=>{}),idleTimeout:e.idleTimeout??0,onError:e.onError??console.error,name:e.name??"lazy-value"},this.stats={name:this.options.name,state:"uninitialized",initCount:0,disposeCount:0,errorCount:0};}async get(){return this.resetIdleTimer(),this.state==="initialized"&&this.value!==void 0?(this.stats.lastAccessTime=new Date,this.value):this.state==="initializing"&&this.initPromise?this.initPromise:(this.state==="error"&&(this.state="uninitialized"),this.state==="disposed"&&(this.state="uninitialized"),this.initialize())}getSync(){if(this.state!=="initialized"||this.value===void 0)throw new Error(`Lazy value '${this.options.name}' not initialized`);return this.resetIdleTimer(),this.stats.lastAccessTime=new Date,this.value}isInitialized(){return this.state==="initialized"&&this.value!==void 0}getState(){return this.state}async initialize(){if(this.state==="initialized"&&this.value!==void 0)return this.value;this.state="initializing",this.stats.state="initializing";let e=Date.now();return this.initPromise=(async()=>{try{let r=await this.options.factory();return this.value=r,this.state="initialized",this.stats.state="initialized",this.stats.initCount++,this.stats.lastInitTime=new Date,this.stats.lastAccessTime=new Date,this.stats.initDurationMs=Date.now()-e,r}catch(r){throw this.state="error",this.stats.state="error",this.stats.errorCount++,this.options.onError(r),r}finally{this.initPromise=void 0;}})(),this.initPromise}async dispose(){if(this.clearIdleTimer(),this.value!==void 0)try{await this.options.cleanup(this.value);}catch(e){this.options.onError(e);}this.value=void 0,this.state="disposed",this.stats.state="disposed",this.stats.disposeCount++;}getStats(){return {...this.stats}}resetIdleTimer(){this.clearIdleTimer(),this.options.idleTimeout>0&&(this.idleTimer=setTimeout(()=>{this.dispose().catch(this.options.onError);},this.options.idleTimeout));}clearIdleTimer(){this.idleTimer&&(clearTimeout(this.idleTimer),this.idleTimer=void 0);}},he=new Map;function Ft(s,e){let r=he.get(s);return r||(r=new J({...e,name:e.name??s}),he.set(s,r)),r}async function Ot(s){let e=he.get(s);e&&(await e.dispose(),he.delete(s));}async function xe(){let s=[];for(let e of he.values())s.push(e.dispose());await Promise.all(s),he.clear();}var ze=class{lazy;constructor(e,r){this.lazy=new J({...r,factory:e});}async get(){return this.lazy.get()}isLoaded(){return this.lazy.isInitialized()}async dispose(){return this.lazy.dispose()}},Ne=class{lazy;constructor(e,r){this.lazy=new J({...r,factory:async()=>{let t=await e();return t.initialize&&await t.initialize(),t}});}async get(){return this.lazy.get()}isInitialized(){return this.lazy.isInitialized()}async dispose(){return this.lazy.dispose()}getStats(){return this.lazy.getStats()}},me=class{lazy;cached=null;constructor(e,r){this.lazy=new J({factory:async()=>{if(this.cached)return this.cached;let t=await e();return this.cached=t,t},cleanup:()=>{this.cached=null;},name:r?.name??"lazy-wasm",idleTimeout:r?.idleTimeout??0,onError:r?.onError??console.error});}async get(){return this.lazy.get()}isLoaded(){return this.lazy.isInitialized()}clearCache(){this.cached=null;}getStats(){return this.lazy.getStats()}},be=class{lazy;watchCount=0;constructor(e,r){this.lazy=new J({...r,factory:e});}async watch(){return this.watchCount++,this.lazy.get()}async unwatch(){this.watchCount--,this.watchCount<=0&&(this.watchCount=0,await this.lazy.dispose());}getWatchCount(){return this.watchCount}isActive(){return this.lazy.isInitialized()&&this.watchCount>0}async dispose(){return this.watchCount=0,this.lazy.dispose()}};function Lt(s,e){let r=new J({...e,factory:s});return {get:()=>r.get(),isInitialized:()=>r.isInitialized()}}var P={initialized:false,monitor:null,config:{}};function Co(s){if(P.initialized){console.warn("[memory] Memory system already initialized");return}P.config={memoryLimit:s?.memoryLimit??10*1024*1024,autoCleanup:s?.autoCleanup??true,preWarmPools:s?.preWarmPools??false,pollInterval:s?.pollInterval??5e3},P.monitor=new Y({memoryLimit:P.config.memoryLimit,autoCleanup:P.config.autoCleanup,pollInterval:P.config.pollInterval}),P.monitor.start(),P.config.preWarmPools&&Le(),P.initialized=true,`${(P.config.memoryLimit/(1024*1024)).toFixed(2)}`,P.config.autoCleanup,P.config.preWarmPools;}function zt(){return P.monitor?.getMemoryUsage()??null}function So(){return {system:zt(),pools:ce(),poolEfficiency:fe(),arenas:Z.getStats(),config:P.config}}function To(){de(),Z.resetAll(),xe().catch(console.error),P.monitor?.triggerCleanup();}async function xo(){P.initialized&&(P.monitor?.stop(),P.monitor=null,de(),Z.disposeAll(),await xe(),P.initialized=false);}function Po(){return P.initialized}function Io(){return P.monitor}function ko(){return N.acquire()}function Mo(s){N.release(s);}function Ao(){return Q.acquire()}function Eo(s){Q.release(s);}function _o(){return X.acquire()}function Bo(s){X.release(s);}function Do(){return ee.acquire()}function Ro(s){ee.release(s);}function Fo(){return R.acquire()}function Oo(s){R.release(s);}var Pe=new a({maxEntries:500,ttlMs:300*1e3}),We=new a({maxEntries:200,ttlMs:600*1e3}),zo=new c,No=new c,st=class{constructor(e){this.numWorkers=e;for(let r=0;r<e;r++)this.queues.push([]);}queues=[];nextQueueId=0;enqueue(e){let r=0,t=this.queues[0]?.length??0;for(let o=1;o<this.queues.length;o++){let n=this.queues[o]?.length??0;n<t&&(t=n,r=o);}this.queues[r]?.push(e);}dequeue(e){let r=this.queues[e];if(r&&r.length>0)return r.shift();for(let t=1;t<this.queues.length;t++){let o=(e+t)%this.queues.length,n=this.queues[o];if(n&&n.length>1)return n.pop()}}isEmpty(){return this.queues.every(e=>e.length===0)}get size(){return this.queues.reduce((e,r)=>e+r.length,0)}};function Nt(s){let e=2166136261;for(let r of s){for(let t=0;t<r.length;t++)e^=r.charCodeAt(t),e=e*16777619>>>0;e^=255;}return e.toString(36)}var Wo={debug:(s,e)=>console.debug(`[formula-executor] ${s}`,e??""),info:(s,e)=>console.info(`[formula-executor] ${s}`,e??""),warn:(s,e)=>console.warn(`[formula-executor] ${s}`,e??""),error:(s,e)=>console.error(`[formula-executor] ${s}`,e??"")},Ge=class{isInitialized(){return true}parseFormula(e){try{let r=e.split(`
|
|
`),t="parsed-formula",o="",n="workflow",a=1,i=[],l={},c="",m=null;for(let h of r){let b=h.trim();if(!b||b.startsWith("#"))continue;if(b.startsWith("[")){m&&m.id&&i.push(m);let S=b.match(/\[(\w+)(?:\.(\w+))?\]/);S&&(c=S[1],S[2]?m={id:S[2],title:"",description:""}:m=null);continue}let v=b.match(/^(\w+)\s*=\s*"?([^"]*)"?$/);if(v){let[,S,w]=v;c==="formula"?S==="name"?t=w:S==="description"?o=w:S==="type"?n=w:S==="version"&&(a=parseInt(w,10)):m&&(S==="title"?m.title=w:S==="description"?m.description=w:S==="needs"&&(m.needs=w.split(",").map(T=>T.trim())));}}return m&&m.id&&i.push(m),{name:t,description:o,type:n,version:a,steps:i,vars:l}}catch(r){throw j.parseFailed("js-parse","Failed to parse formula content",r)}}cookFormula(e,r){let t=a=>a.replace(/\{\{(\w+)\}\}/g,(i,l)=>r[l]??i),o=e.steps?.map(a=>({...a,title:t(a.title),description:t(a.description)})),n=e.legs?.map(a=>({...a,title:t(a.title),description:t(a.description),focus:t(a.focus)}));return {...e,steps:o,legs:n,cookedAt:new Date,cookedVars:{...r},originalName:e.name}}batchCook(e,r){return e.map((t,o)=>{let n=r[o]??{};return this.cookFormula(t,n)})}resolveStepDependencies(e){let r=new Map,t=new Map,o=new Map;for(let i of e)r.set(i.id,i),t.set(i.id,0),o.set(i.id,[]);for(let i of e)if(i.needs){for(let l of i.needs)if(r.has(l)){let c=o.get(l);c&&c.push(i.id),t.set(i.id,(t.get(i.id)??0)+1);}}let n=[];t.forEach((i,l)=>{i===0&&n.push(l);});let a=[];for(;n.length>0;){let i=n.shift(),l=r.get(i);l&&a.push(l);for(let c of o.get(i)??[]){let m=(t.get(c)??1)-1;t.set(c,m),m===0&&n.push(c);}}if(a.length!==e.length)throw new f("Cycle detected in step dependencies",y.DEPENDENCY_CYCLE,{sortedCount:a.length,totalCount:e.length});return a}detectCycle(e){let r=new Set,t=new Set,o=new Map;for(let a of e)o.set(a.id,a);let n=(a,i)=>{r.add(a),t.add(a);let l=o.get(a);if(l?.needs)for(let c of l.needs)if(r.has(c)){if(t.has(c))return [...i,c]}else {let m=n(c,[...i,c]);if(m)return m}return t.delete(a),null};for(let a of e)if(!r.has(a.id)){let i=n(a.id,[a.id]);if(i)return {hasCycle:true,cycleSteps:i}}return {hasCycle:false}}},Ue=class extends EventEmitter{gtBridge;wasmLoader;logger;jsFallback;executions=new Map;cancellations=new Map;progressEmitters=new Map;defaultMaxParallel=4;constructor(e,r,t){super(),this.gtBridge=e,this.wasmLoader=r??new Ge,this.logger=t??Wo,this.jsFallback=new Ge;}async execute(e$1,r,t={}){let o=randomUUID(),n=new AbortController;this.cancellations.set(o,n);let a=t.signal?this.mergeSignals(t.signal,n.signal):n.signal;try{this.logger.info("Starting formula execution",{executionId:o,formulaName:e$1});let i=await this.cook(e$1,r),l=i.steps??[],c=i.legs??[],m=l.length||c.length,g={executionId:o,formulaName:e$1,status:"running",totalSteps:m,completedSteps:0,failedSteps:0,startTime:new Date,stepResults:[],percentage:0};this.executions.set(o,g),this.emit("execution:start",o,i);let h=new e(T=>this.emit("execution:progress",T),100);this.progressEmitters.set(o,h);let b=this.getOrderedExecutionUnits(i),v=[],S=new Map,w=t.maxParallel??this.defaultMaxParallel;if(w>1&&b.length>1){let T=new Map,E=new Map,W=new Map;for(let L=0;L<b.length;L++){let O=b[L];E.set(O.id,O),W.set(O.id,L),T.set(O.id,new Set(O.needs??[]));}let M=new Set,G=new Set,Ws=new st(w),$r=()=>{let L=[];for(let O of b){if(M.has(O.id)||G.has(O.id))continue;let ye=T.get(O.id);(!ye||[...ye].every(et=>M.has(et)))&&L.push(O);}return L};for(;M.size<b.length;){if(a.aborted)throw g.status="cancelled",this.emit("execution:cancelled",o),new f("Execution cancelled",y.UNKNOWN,{executionId:o});let L=$r();if(L.length===0&&G.size===0)break;let O=Math.min(L.length,w-G.size),ye=L.slice(0,O);if(ye.length===0){await new Promise(A=>setTimeout(A,10));continue}for(let A of ye)G.add(A.id);let et=ye.map(async A=>{let Hr=W.get(A.id)??0;g.currentStep=A.id;let Kr={executionId:o,formula:i,stepIndex:Hr,totalSteps:b.length,variables:i.cookedVars,previousResults:S,signal:a,startTime:g.startTime};this.emit("step:start",o,A);try{let z=await this.runStep(A,Kr,t);return S.set(A.id,z),M.add(A.id),G.delete(A.id),z.success?g.completedSteps++:g.failedSteps++,g.stepResults.push(z),g.percentage=Math.round(M.size/b.length*100),this.emit("step:complete",o,z),h.update({...g}),z}catch(z){let tt={stepId:A.id,success:!1,error:z instanceof Error?z.message:String(z),durationMs:0};if(S.set(A.id,tt),M.add(A.id),G.delete(A.id),g.failedSteps++,g.stepResults.push(tt),this.emit("step:error",o,A.id,z),h.update({...g}),!A.metadata?.continueOnError)throw z;return tt}}),qr=await Promise.all(et);v.push(...qr);}h.flush();}else {for(let T=0;T<b.length;T++){if(a.aborted)throw g.status="cancelled",this.emit("execution:cancelled",o),new f("Execution cancelled",y.UNKNOWN,{executionId:o});let E=b[T];g.currentStep=E.id;let W={executionId:o,formula:i,stepIndex:T,totalSteps:b.length,variables:i.cookedVars,previousResults:S,signal:a,startTime:g.startTime};this.emit("step:start",o,E);try{let M=await this.runStep(E,W,t);v.push(M),S.set(E.id,M),M.success?g.completedSteps++:g.failedSteps++,g.stepResults.push(M),g.percentage=Math.round((T+1)/b.length*100),this.emit("step:complete",o,M),h.update({...g});}catch(M){let G={stepId:E.id,success:!1,error:M instanceof Error?M.message:String(M),durationMs:0};if(v.push(G),S.set(E.id,G),g.failedSteps++,g.stepResults.push(G),this.emit("step:error",o,E.id,M),!E.metadata?.continueOnError)throw M}}h.flush();}return g.status=g.failedSteps>0?"failed":"completed",g.endTime=new Date,g.percentage=100,this.emit("execution:complete",o,v),this.logger.info("Formula execution completed",{executionId:o,formulaName:e$1,completed:g.completedSteps,failed:g.failedSteps}),v}catch(i){let l=this.executions.get(o);throw l&&(l.status="failed",l.endTime=new Date,l.error=i instanceof Error?i.message:String(i)),this.emit("execution:error",o,i),i}finally{this.cancellations.delete(o);let i=this.progressEmitters.get(o);i&&(i.cancel(),this.progressEmitters.delete(o));}}async cook(e,r){this.logger.debug("Cooking formula",{formulaName:e,varsCount:Object.keys(r).length});let t=Object.keys(r).sort(),o=t.map(i=>r[i]),n=Nt([e,...t,...o]),a=We.get(n);return a?(this.logger.debug("Cook cache hit",{formulaName:e}),a):zo.dedupe(n,async()=>{try{let i;e.includes("[")||e.includes("=")?i=this.parseFormula(e):i=await No.dedupe(e,()=>this.fetchFormula(e)),this.validateVariables(i,r);let c=(this.wasmLoader.isInitialized()?this.wasmLoader:this.jsFallback).cookFormula(i,r);return We.set(n,c),this.logger.debug("Formula cooked successfully",{formulaName:e,wasmAccelerated:this.wasmLoader.isInitialized()}),c}catch(i){throw i instanceof f?i:j.cookFailed(e,i instanceof Error?i.message:String(i),i)}})}async generateMolecules(e){this.logger.debug("Generating molecules",{formulaName:e.name});let r=[],t=new Map;if(e.type==="convoy"&&e.legs){let o=[...e.legs].sort((n,a)=>(n.order??0)-(a.order??0));for(let n=0;n<o.length;n++){let a=o[n],i=`mol-${e.name}-${a.id}-${randomUUID().slice(0,8)}`;t.set(a.id,i);let l=R.acquire();l.id=i,l.formulaName=e.name,l.title=a.title,l.description=a.description,l.type=e.type,l.sourceId=a.id,l.agent=a.agent,l.dependencies=n>0?[t.get(o[n-1].id)]:[],l.order=n,l.metadata={focus:a.focus,legOrder:a.order},l.createdAt=new Date;let c={id:l.id,formulaName:l.formulaName,title:l.title,description:l.description,type:l.type,sourceId:l.sourceId,agent:l.agent,dependencies:[...l.dependencies],order:l.order,metadata:{...l.metadata},createdAt:l.createdAt};R.release(l),r.push(c),this.emit("molecule:created",c);}}else if(e.steps){let o=this.resolveStepDependencies(e.steps);for(let n=0;n<o.length;n++){let a=o[n],i=`mol-${e.name}-${a.id}-${randomUUID().slice(0,8)}`;t.set(a.id,i);let l=[];if(a.needs)for(let g of a.needs){let h=t.get(g);h&&l.push(h);}let c=R.acquire();c.id=i,c.formulaName=e.name,c.title=a.title,c.description=a.description,c.type=e.type,c.sourceId=a.id,c.agent=void 0,c.dependencies=l,c.order=n,c.metadata={duration:a.duration,requires:a.requires,...a.metadata},c.createdAt=new Date;let m={id:c.id,formulaName:c.formulaName,title:c.title,description:c.description,type:c.type,sourceId:c.sourceId,agent:c.agent,dependencies:[...c.dependencies],order:c.order,metadata:{...c.metadata},createdAt:c.createdAt};R.release(c),r.push(m),this.emit("molecule:created",m);}}return this.logger.info("Molecules generated",{formulaName:e.name,count:r.length}),r}async runStep(e,r,t={}){let o=Date.now();this.logger.debug("Running step",{stepId:e.id,executionId:r.executionId});let a=e.metadata?.cacheable!==false&&!e.metadata?.hasSideEffects?Nt([e.id,r.formula.name,JSON.stringify(r.variables),JSON.stringify(e.needs??[])]):null;if(a){let i=Pe.get(a);if(i)return this.logger.debug("Step cache hit",{stepId:e.id}),{...i,metadata:{...i.metadata,fromCache:true}}}try{if(r.signal?.aborted)throw new f("Step cancelled",y.UNKNOWN);if(e.needs)for(let c of e.needs){let m=r.previousResults.get(c);if(!m||!m.success)throw new f(`Dependency not satisfied: ${c}`,y.UNKNOWN,{stepId:e.id,dependency:c})}if(t.stepHandler){let c=await t.stepHandler(e,r);return a&&c.success&&Pe.set(a,c),c}if(t.dryRun)return {stepId:e.id,success:!0,output:{dryRun:!0,step:e},durationMs:Date.now()-o,metadata:{dryRun:!0}};let i=await this.executeStepViaCli(e,r,t),l={stepId:e.id,success:!0,output:i,durationMs:Date.now()-o};return a&&Pe.set(a,l),l}catch(i){return {stepId:e.id,success:false,error:i instanceof Error?i.message:String(i),durationMs:Date.now()-o}}}getProgress(e){return this.executions.get(e)}cancel(e){let r=this.cancellations.get(e);return r?(r.abort(),true):false}getActiveExecutions(){return Array.from(this.executions.values()).filter(e=>e.status==="running"||e.status==="pending")}isWasmAvailable(){return this.wasmLoader.isInitialized()}getCacheStats(){return {stepResultCache:Pe.stats(),cookCache:We.stats()}}clearCaches(){Pe.clear(),We.clear();}parseFormula(e){return (this.wasmLoader.isInitialized()?this.wasmLoader:this.jsFallback).parseFormula(e)}async fetchFormula(e){if(!this.gtBridge.isInitialized())throw new f("GtBridge not initialized",y.NOT_INITIALIZED);return this.logger.debug("Fetching formula from CLI",{formulaName:e}),{name:e,description:`Formula: ${e}`,type:"workflow",version:1,steps:[{id:"init",title:"Initialize",description:"Initialize the workflow"},{id:"process",title:"Process",description:"Process the data",needs:["init"]},{id:"finalize",title:"Finalize",description:"Finalize the workflow",needs:["process"]}],vars:{}}}validateVariables(e,r){if(!e.vars)return;let t=[];for(let[o,n]of Object.entries(e.vars))n.required&&!(o in r)&&!n.default&&t.push(o);if(t.length>0)throw new f(`Missing required variables: ${t.join(", ")}`,y.INVALID_ARGUMENTS,{missing:t})}resolveStepDependencies(e){return (this.wasmLoader.isInitialized()?this.wasmLoader:this.jsFallback).resolveStepDependencies(e)}getOrderedExecutionUnits(e){if(e.type==="convoy"&&e.legs){let r=[...e.legs].sort((t,o)=>(t.order??0)-(o.order??0));return r.map((t,o)=>({id:t.id,title:t.title,description:t.description,needs:o>0?[r[o-1].id]:void 0,metadata:{agent:t.agent,focus:t.focus}}))}return e.steps?this.resolveStepDependencies(e.steps):[]}async executeStepViaCli(e,r,t){let o=["formula","step",e.id,"--execution-id",r.executionId,"--json"];t.targetAgent&&o.push("--agent",t.targetAgent),t.stepTimeout&&o.push("--timeout",String(t.stepTimeout));let n=await this.gtBridge.execGt(o);if(!n.success)throw new f(`Step execution failed: ${n.error}`,y.CLI_EXECUTION_FAILED,{stepId:e.id,error:n.error});return n.data?JSON.parse(n.data):null}mergeSignals(...e){let r=new AbortController;for(let t of e){if(t.aborted){r.abort();break}t.addEventListener("abort",()=>r.abort(),{once:true});}return r.signal}};function nt(s,e,r){return new Ue(s,e,r)}var jo={debug:(s,e)=>console.debug(`[convoy-tracker] ${s}`,e??""),info:(s,e)=>console.info(`[convoy-tracker] ${s}`,e??""),warn:(s,e)=>console.warn(`[convoy-tracker] ${s}`,e??""),error:(s,e)=>console.error(`[convoy-tracker] ${s}`,e??"")},pe=z.string().uuid("Invalid convoy ID format"),Wt=z.array(z.string().min(1)).min(1,"At least one issue ID required"),je=class extends EventEmitter{bdBridge;convoys=new Map;logger;config;progressTimers=new Map;constructor(e,r){super(),this.bdBridge=e.bdBridge,this.logger=r??jo,this.config={autoUpdateProgress:e.autoUpdateProgress??true,progressUpdateInterval:e.progressUpdateInterval??3e4,persistConvoys:e.persistConvoys??false,storagePath:e.storagePath??"./data/convoys"};}async create(e,r,t){let o=rt.parse({name:e,issues:r,description:t}),n=await this.verifyIssues(o.issues);if(n.length===0)throw I.createFailed("No valid issues found");let a=await this.calculateProgress(n),i=v4(),l=new Date,c={id:i,name:o.name,trackedIssues:n,status:"active",startedAt:l,progress:a,description:o.description};return this.convoys.set(i,{convoy:c,createdAt:l,updatedAt:l,metadata:{}}),this.emitConvoyEvent("convoy:created",c),this.config.autoUpdateProgress&&this.startProgressTracking(i),this.logger.info("Convoy created",{convoyId:i,name:e,issueCount:n.length}),c}async addIssues(e,r){pe.parse(e),Wt.parse(r);let t=this.convoys.get(e);if(!t)throw I.notFound(e);let o=await this.verifyIssues(r);if(o.length===0)throw new I("No valid issues to add",y.CONVOY_CREATE_FAILED,{convoyId:e,issues:r});let n=new Set(t.convoy.trackedIssues),a=o.filter(m=>!n.has(m));if(a.length===0)return t.convoy;let i=[...t.convoy.trackedIssues,...a],l=await this.calculateProgress(i),c={...t.convoy,trackedIssues:i,progress:l};return t.convoy=c,t.updatedAt=new Date,this.emitConvoyEvent("convoy:issue:added",c,{issues:a}),this.logger.info("Issues added to convoy",{convoyId:e,addedCount:a.length,totalCount:i.length}),c}async removeIssues(e,r){pe.parse(e),Wt.parse(r);let t=this.convoys.get(e);if(!t)throw I.notFound(e);let o=new Set(r),n=t.convoy.trackedIssues.filter(c=>!o.has(c));if(n.length===t.convoy.trackedIssues.length)return t.convoy;let a=n.length>0?await this.calculateProgress(n):{total:0,closed:0,inProgress:0,blocked:0},i={...t.convoy,trackedIssues:n,progress:a};t.convoy=i,t.updatedAt=new Date;let l=r.filter(c=>t.convoy.trackedIssues.includes(c)&&!n.includes(c));return this.emitConvoyEvent("convoy:issue:removed",i,{issues:l}),this.logger.info("Issues removed from convoy",{convoyId:e,removedCount:l.length,remainingCount:n.length}),i}async getStatus(e){pe.parse(e);let r=this.convoys.get(e);if(!r)throw I.notFound(e);let t=await this.calculateProgress(r.convoy.trackedIssues),o=r.convoy.progress;if(t.closed!==o.closed||t.inProgress!==o.inProgress||t.blocked!==o.blocked){let n={...r.convoy,progress:t};r.convoy=n,r.updatedAt=new Date,this.emitConvoyEvent("convoy:progressed",n);}return r.convoy}async complete(e){pe.parse(e);let r=this.convoys.get(e);if(!r)throw I.notFound(e);if(r.convoy.status==="landed")return r.convoy;let t=r.convoy.status,o=new Date,n={...r.convoy,status:"landed",completedAt:o};return r.convoy=n,r.updatedAt=o,this.stopProgressTracking(e),this.emitConvoyEvent("convoy:completed",n,{previousStatus:t}),this.logger.info("Convoy completed",{convoyId:e,name:n.name,duration:o.getTime()-n.startedAt.getTime()}),n}async cancel(e,r){pe.parse(e);let t=this.convoys.get(e);if(!t)throw I.notFound(e);if(t.convoy.status==="failed"||t.convoy.status==="landed")return t.convoy;let o=t.convoy.status,n=new Date,a={...t.convoy,status:"failed",completedAt:n};return t.convoy=a,t.updatedAt=n,t.metadata.cancellationReason=r,this.stopProgressTracking(e),this.emitConvoyEvent("convoy:cancelled",a,{previousStatus:o,reason:r}),this.logger.info("Convoy cancelled",{convoyId:e,name:a.name,reason:r}),a}async pause(e){pe.parse(e);let r=this.convoys.get(e);if(!r)throw I.notFound(e);if(r.convoy.status!=="active")return r.convoy;let t=r.convoy.status,o={...r.convoy,status:"paused"};return r.convoy=o,r.updatedAt=new Date,this.stopProgressTracking(e),this.emitConvoyEvent("convoy:paused",o,{previousStatus:t}),this.logger.info("Convoy paused",{convoyId:e,name:o.name}),o}async resume(e){pe.parse(e);let r=this.convoys.get(e);if(!r)throw I.notFound(e);if(r.convoy.status!=="paused")return r.convoy;let t=r.convoy.status,o={...r.convoy,status:"active"};return r.convoy=o,r.updatedAt=new Date,this.config.autoUpdateProgress&&this.startProgressTracking(e),this.emitConvoyEvent("convoy:resumed",o,{previousStatus:t}),this.logger.info("Convoy resumed",{convoyId:e,name:o.name}),o}listConvoys(e){let r=Array.from(this.convoys.values()).map(t=>t.convoy);return e?r.filter(t=>t.status===e):r}getConvoy(e){return this.convoys.get(e)?.convoy}deleteConvoy(e){return this.stopProgressTracking(e),this.convoys.delete(e)}async calculateProgress(e){if(e.length===0)return {total:0,closed:0,inProgress:0,blocked:0};try{let r=await this.fetchBeads(e),t=new Map(r.map(i=>[i.id,i])),o=0,n=0,a=0;for(let i of e){let l=t.get(i);l&&(l.status==="closed"?o++:l.status==="in_progress"&&n++,l.blockedBy&&l.blockedBy.length>0&&l.blockedBy.some(m=>{let g=t.get(m);return g&&g.status!=="closed"})&&a++);}return {total:e.length,closed:o,inProgress:n,blocked:a}}catch(r){return this.logger.warn("Failed to calculate progress",{issueIds:e,error:r instanceof Error?r.message:String(r)}),{total:e.length,closed:0,inProgress:0,blocked:0}}}async verifyIssues(e){let r=[];for(let t of e)try{await this.bdBridge.getBead(t),r.push(t);}catch{this.logger.warn("Issue not found",{issueId:t});}return r}async fetchBeads(e){let r=[];for(let t of e)try{let o=await this.bdBridge.getBead(t);r.push({id:o.id,title:o.content.slice(0,100),description:o.content,status:this.mapBeadStatus(o.type),priority:0,labels:o.tags??[],createdAt:o.timestamp?new Date(o.timestamp):new Date,updatedAt:new Date,blockedBy:o.parentId?[o.parentId]:[]});}catch{}return r}mapBeadStatus(e){switch(e){case "closed":return "closed";case "in_progress":case "response":case "code":return "in_progress";default:return "open"}}startProgressTracking(e){if(this.progressTimers.has(e))return;let r=setInterval(async()=>{try{await this.getStatus(e);}catch(t){this.logger.warn("Progress tracking error",{convoyId:e,error:t instanceof Error?t.message:String(t)});}},this.config.progressUpdateInterval);this.progressTimers.set(e,r);}stopProgressTracking(e){let r=this.progressTimers.get(e);r&&(clearInterval(r),this.progressTimers.delete(e));}emitConvoyEvent(e,r,t){let o={type:e,convoyId:r.id,convoyName:r.name,timestamp:new Date,status:r.status,progress:r.progress,...t};this.emit(e,o),this.emit("convoy:*",o);}dispose(){for(let[e,r]of this.progressTimers)clearInterval(r);this.progressTimers.clear(),this.removeAllListeners();}};function it(s,e){return new je(s,e)}var $o={debug:(s,e)=>console.debug(`[convoy-observer] ${s}`,e??""),info:(s,e)=>console.info(`[convoy-observer] ${s}`,e??""),warn:(s,e)=>console.warn(`[convoy-observer] ${s}`,e??""),error:(s,e)=>console.error(`[convoy-observer] ${s}`,e??"")},lt=z.string().uuid("Invalid convoy ID format"),Ie=class extends EventEmitter{bdBridge;tracker;wasmModule;logger;config;watchers=new Map;beadCache;completionCache;fetchDedup;progressEmitters;pendingSubscriptions=new Map;subscriptionFlushTimer=null;constructor(e,r){super(),this.bdBridge=e.bdBridge,this.tracker=e.tracker,this.wasmModule=e.wasmModule,this.logger=r??$o,this.config={pollInterval:e.pollInterval??1e4,maxPollAttempts:e.maxPollAttempts??0,useWasm:e.useWasm??true,useExponentialBackoff:e.useExponentialBackoff??true,maxBackoffInterval:e.maxBackoffInterval??6e4,backoffMultiplier:e.backoffMultiplier??1.5,deltaUpdatesOnly:e.deltaUpdatesOnly??true,progressDebounceMs:e.progressDebounceMs??500},this.beadCache=new a({maxEntries:1e3,ttlMs:30*1e3}),this.completionCache=new a({maxEntries:100,ttlMs:5*1e3}),this.fetchDedup=new c(3e4),this.progressEmitters=new Map;}watch(e$1,r){lt.parse(e$1),this.stopWatching(e$1);let t=this.config.pollInterval,n=(a=>setTimeout(async()=>{await this.pollConvoyWithBackoff(e$1,r);},a))(t);return this.watchers.set(e$1,{timer:n,callback:r,attempts:0,currentInterval:t,lastState:null}),this.progressEmitters.set(e$1,new e(a=>this.emit("progress",e$1,a),this.config.progressDebounceMs)),this.pollConvoyWithBackoff(e$1,r),this.logger.info("Started watching convoy",{convoyId:e$1,interval:t}),{convoyId:e$1,stop:()=>this.stopWatching(e$1),isActive:()=>this.watchers.has(e$1)}}batchSubscribe(e,r){this.pendingSubscriptions.has(e)||this.pendingSubscriptions.set(e,new Set),this.pendingSubscriptions.get(e).add(r),this.subscriptionFlushTimer||(this.subscriptionFlushTimer=setTimeout(()=>{this.flushSubscriptions();},50));}flushSubscriptions(){this.subscriptionFlushTimer=null;for(let[e,r]of this.pendingSubscriptions){let t=(o,n)=>{for(let a of r)try{a(o,n);}catch(i){this.logger.error("Subscription callback error",{convoyId:e,error:i instanceof Error?i.message:String(i)});}};this.watch(e,t);}this.pendingSubscriptions.clear(),this.logger.debug("Flushed subscription batch",{convoys:this.pendingSubscriptions.size});}async checkCompletion(e){lt.parse(e);let r=this.tracker.getConvoy(e);if(!r)throw I.notFound(e);let t=await this.fetchBeads(r.trackedIssues),o=new Map(t.map(b=>[b.id,b])),n=[],a=[],i=0;for(let b of r.trackedIssues){let v=o.get(b);v&&(v.status==="closed"?i++:v.status==="in_progress"?a.push(b):n.push(b));}let l=false,c=[],m=[],g=[];if(this.config.useWasm&&this.wasmModule)try{let b=this.analyzeWithWasm(t);l=b.hasCycles,c=b.cycleIssues,m=b.readyIssues,g=b.blockedIssues;}catch(b){this.logger.warn("WASM analysis failed, falling back to JS",{error:b instanceof Error?b.message:String(b)});let v=this.analyzeWithJS(t,r.trackedIssues);l=v.hasCycles,c=v.cycleIssues,m=v.readyIssues,g=v.blockedIssues;}else {let b=this.analyzeWithJS(t,r.trackedIssues);l=b.hasCycles,c=b.cycleIssues,m=b.readyIssues,g=b.blockedIssues;}let h={total:r.trackedIssues.length,closed:i,inProgress:a.length,blocked:g.length};return {allComplete:i===r.trackedIssues.length,progress:h,openIssues:n,inProgressIssues:a,blockedIssues:g,readyIssues:m,hasCycles:l,cycleIssues:c}}async getBlockers(e){return (await this.checkCompletion(e)).blockedIssues}async getReadyIssues(e){return (await this.checkCompletion(e)).readyIssues}async getExecutionOrder(e){lt.parse(e);let r=this.tracker.getConvoy(e);if(!r)throw I.notFound(e);let t=await this.fetchBeads(r.trackedIssues);if(this.config.useWasm&&this.wasmModule)try{let o=this.beadsToWasmNodes(t),n=this.wasmModule.topo_sort(JSON.stringify(o)),a=JSON.parse(n);if(a.hasCycle)throw new f("Cannot compute execution order: dependency cycle detected",y.DEPENDENCY_CYCLE,{cycleNodes:a.cycleNodes});return a.sorted}catch(o){if(o instanceof f)throw o;this.logger.warn("WASM topo sort failed, falling back to JS",{error:o instanceof Error?o.message:String(o)});}return this.topoSortJS(t)}stopWatching(e){let r=this.watchers.get(e);if(r){clearTimeout(r.timer),this.watchers.delete(e);let t=this.progressEmitters.get(e);t&&(t.flush(),this.progressEmitters.delete(e)),this.completionCache.delete(e),this.logger.info("Stopped watching convoy",{convoyId:e});}}stopAll(){for(let[e,r]of this.watchers)clearTimeout(r.timer);this.watchers.clear();for(let e of this.progressEmitters.values())e.flush();this.progressEmitters.clear(),this.beadCache.clear(),this.completionCache.clear(),this.fetchDedup.clear(),this.subscriptionFlushTimer&&(clearTimeout(this.subscriptionFlushTimer),this.subscriptionFlushTimer=null),this.pendingSubscriptions.clear(),this.logger.info("Stopped all convoy watchers");}setWasmModule(e){this.wasmModule=e,this.logger.info("WASM module set");}isWasmAvailable(){return !!this.wasmModule}async pollConvoyWithBackoff(e,r){let t=this.watchers.get(e);if(t)try{let o=this.tracker.getConvoy(e);if(!o){this.stopWatching(e);return}if(o.status==="landed"||o.status==="failed"){r(o,o.status==="landed"),this.stopWatching(e);return}let n=await this.checkCompletion(e),a=JSON.stringify({allComplete:n.allComplete,progress:n.progress,openIssues:n.openIssues.length,inProgress:n.inProgressIssues.length,blocked:n.blockedIssues.length}),i=t.lastState!==a;if(t.lastState=a,this.config.deltaUpdatesOnly&&!i)this.config.useExponentialBackoff&&(t.currentInterval=Math.min(t.currentInterval*this.config.backoffMultiplier,this.config.maxBackoffInterval));else {t.currentInterval=this.config.pollInterval,r(o,n.allComplete);let l=this.progressEmitters.get(e);l&&l.update(n.progress);}if(t.attempts++,this.config.maxPollAttempts>0&&t.attempts>=this.config.maxPollAttempts){this.logger.warn("Max poll attempts reached",{convoyId:e,attempts:t.attempts}),this.stopWatching(e);return}clearTimeout(t.timer),t.timer=setTimeout(async()=>{await this.pollConvoyWithBackoff(e,r);},t.currentInterval);}catch(o){this.logger.error("Poll error",{convoyId:e,error:o instanceof Error?o.message:String(o)}),this.config.useExponentialBackoff&&(t.currentInterval=Math.min(t.currentInterval*(this.config.backoffMultiplier*1.5),this.config.maxBackoffInterval)),clearTimeout(t.timer),t.timer=setTimeout(async()=>{await this.pollConvoyWithBackoff(e,r);},t.currentInterval);}}async pollConvoy(e,r){return this.pollConvoyWithBackoff(e,r)}async fetchBeads(e){let r=e.sort().join(",");return this.fetchDedup.dedupe(r,async()=>{let t=[],o=[];for(let a of e){let i=this.beadCache.get(a);i?t.push(i):o.push(a);}let n=10;for(let a=0;a<o.length;a+=n){let l=o.slice(a,a+n).map(async m=>{try{let g=await this.bdBridge.getBead(m),h=N.acquire();h.id=g.id,h.title=g.content.slice(0,100),h.description=g.content,h.status=this.mapBeadStatus(g.type),h.priority=0,h.labels=g.tags??[],h.createdAt=g.timestamp?new Date(g.timestamp):new Date,h.updatedAt=new Date,h.blockedBy=g.parentId?[g.parentId]:[],h.blocks=[];let b={id:h.id,title:h.title,description:h.description,status:h.status,priority:h.priority,labels:h.labels,createdAt:h.createdAt,updatedAt:h.updatedAt,blockedBy:h.blockedBy,blocks:h.blocks};return N.release(h),this.beadCache.set(m,b),b}catch{return null}}),c=await Promise.all(l);t.push(...c.filter(m=>m!==null));}return t})}mapBeadStatus(e){switch(e){case "closed":return "closed";case "in_progress":case "response":case "code":return "in_progress";default:return "open"}}beadsToWasmNodes(e){return e.map(r=>({id:r.id,title:r.title,status:r.status,priority:r.priority,blocked_by:r.blockedBy??[],blocks:r.blocks??[],duration:void 0}))}analyzeWithWasm(e){if(!this.wasmModule)throw new Error("WASM module not available");let r=this.beadsToWasmNodes(e),t=JSON.stringify(r),o=this.wasmModule.has_cycle(t),n=[];if(o){let w=this.wasmModule.find_cycle_nodes(t);n=JSON.parse(w);}let a=this.wasmModule.get_ready_beads(t),i=JSON.parse(a),l=this.wasmModule.compute_levels(t),c=JSON.parse(l),m=new Map;for(let[w,T]of Object.entries(c)){let E=parseInt(w,10);for(let W of T)m.set(W,E);}let g=new Map(e.map(w=>[w.id,w])),h=i.map(w=>{let T=g.get(w);return {id:w,title:T.title,priority:T.priority,level:m.get(w)??0}}),b=new Set(e.filter(w=>w.status==="closed").map(w=>w.id)),v=new Set(e.map(w=>w.id)),S=e.filter(w=>w.status==="closed"?false:(w.blockedBy??[]).some(E=>!b.has(E))).map(w=>{let T=(w.blockedBy??[]).filter(W=>!b.has(W)),E=T.every(W=>v.has(W));return {blockedIssue:w.id,blockers:T,internalBlockers:E}});return {hasCycles:o,cycleIssues:n,readyIssues:h,blockedIssues:S}}analyzeWithJS(e,r){new Map(e.map(m=>[m.id,m]));let o=new Set(r),n=new Set(e.filter(m=>m.status==="closed").map(m=>m.id)),a=this.detectCyclesJS(e),i=a?this.findCycleNodesJS(e):[],l=e.filter(m=>m.status==="closed"?false:(m.blockedBy??[]).every(h=>n.has(h))).map((m,g)=>({id:m.id,title:m.title,priority:m.priority,level:0})),c=e.filter(m=>m.status==="closed"?false:(m.blockedBy??[]).some(h=>!n.has(h))).map(m=>{let g=(m.blockedBy??[]).filter(b=>!n.has(b)),h=g.every(b=>o.has(b));return {blockedIssue:m.id,blockers:g,internalBlockers:h}});return {hasCycles:a,cycleIssues:i,readyIssues:l,blockedIssues:c}}detectCyclesJS(e){let r=new Set,t=new Set,o=new Map(e.map(a=>[a.id,a])),n=a=>{r.add(a),t.add(a);let i=o.get(a);if(i){for(let l of i.blockedBy??[])if(r.has(l)){if(t.has(l))return true}else if(n(l))return true}return t.delete(a),false};for(let a of e)if(!r.has(a.id)&&n(a.id))return true;return false}findCycleNodesJS(e){let r=new Map;new Map(e.map(n=>[n.id,n]));for(let n of e)r.set(n.id,(n.blockedBy??[]).length);let o=true;for(;o;){o=false;for(let[n,a]of r)if(a===0){r.delete(n);for(let i of e)if(i.blockedBy?.includes(n)){let l=r.get(i.id)??0;l>0&&(r.set(i.id,l-1),o=true);}o=true;}}return Array.from(r.keys())}topoSortJS(e){new Map(e.map(a=>[a.id,a]));let t=new Map,o=[];for(let a of e)t.set(a.id,(a.blockedBy??[]).length);let n=[];for(let[a,i]of t)i===0&&n.push(a);for(;n.length>0;){let a=n.shift();o.push(a);for(let i of e)if(i.blockedBy?.includes(a)){let c=(t.get(i.id)??0)-1;t.set(i.id,c),c===0&&n.push(i.id);}}if(o.length!==e.length)throw new f("Cannot compute execution order: dependency cycle detected",y.DEPENDENCY_CYCLE);return o}dispose(){this.stopAll(),this.removeAllListeners();}};function ct(s,e){return new Ie(s,e)}function qo(s,e){return new be(()=>new Ie(s,e),{name:"convoy-observer",cleanup:r=>{r.dispose();}})}function Ho(s){return {isActive:s.isActive(),watchCount:s.getWatchCount()}}var ge=null,ke=[],Ve=new me(async()=>{if(!oe())throw new Error("WASM not available");let s=await import('gastown-formula-wasm');return typeof s.default=="function"&&await s.default(),s},{name:"gastown-formula-wasm",idleTimeout:300*1e3,onError:s=>{}}),$e=new me(async()=>{if(!oe())throw new Error("WASM not available");let s=await import('ruvector-gnn-wasm');return typeof s.default=="function"&&await s.default(),s},{name:"ruvector-gnn-wasm",idleTimeout:300*1e3,onError:s=>{}}),Me=new a({maxEntries:1e3,ttlMs:600*1e3}),Ae=new a({maxEntries:500,ttlMs:300*1e3}),Ee=new a({maxEntries:200,ttlMs:120*1e3}),Gt=new b(500),dt=new c,ut=new c,mt=new c,Je=new d;function pt(s){let e=2166136261;for(let r=0;r<s.length;r++)e^=s.charCodeAt(r),e=e*16777619>>>0;return e.toString(36)}function Ko(s,e){let r=Object.entries(e).sort().map(([t,o])=>`${t}=${o}`).join("|");return `${s.name}:${s.version}:${pt(r)}`}function Zo(s,e){let r=s.sort().join(","),t=e.map(o=>`${o.from}->${o.to}`).sort().join(",");return pt(`${r}|${t}`)}function oe(){if(ge!==null)return ge;try{if(typeof WebAssembly>"u")return ge=!1,!1;let s=typeof WebAssembly.instantiate=="function",e=typeof WebAssembly.compile=="function",r=typeof WebAssembly.Module=="function";return ge=s&&e&&r,ge}catch{return ge=false,false}}function B(s,e,r){let t={operation:s,durationMs:performance.now()-e,usedWasm:r,startedAt:e};return ke.push(t),ke.length>1e3&&ke.shift(),t}function Ut(){return [...ke]}function jt(){ke.length=0;}async function V(){if(!oe())return null;try{return await Ve.get()}catch(s){return null}}async function $(){if(!oe())return null;try{return await $e.get()}catch(s){return null}}function Yo(){return Ve.isLoaded()}function Xo(){return $e.isLoaded()}function Qo(){return {formulaWasm:Ve.getStats(),gnnWasm:$e.getStats()}}function es(s){let e=s.split(`
|
|
`),r={},t="";for(let o of e){let n=o.trim();if(n.startsWith("#")||n==="")continue;let a=n.match(/^\[([^\]]+)\]$/);if(a){t=a[1],r[t]||(r[t]={});continue}let i=n.match(/^([^=]+)=(.+)$/);if(i){let l=i[1].trim(),c=i[2].trim();c==="true"?c=true:c==="false"?c=false:/^\d+$/.test(c)?c=parseInt(c,10):/^\d+\.\d+$/.test(c)?c=parseFloat(c):c.startsWith('"')&&c.endsWith('"')&&(c=c.slice(1,-1)),t?r[t][l]=c:r[l]=c;}}return {name:r.name||"unknown",description:r.description||"",type:r.type||"workflow",version:r.version||1,steps:r.steps,legs:r.legs,vars:r.vars,metadata:r.metadata}}function ts(s,e){let r=o=>{let n=o;for(let[a,i]of Object.entries(e))n=n.replace(new RegExp(`\\{\\{${a}\\}\\}`,"g"),i),n=n.replace(new RegExp(`\\$\\{${a}\\}`,"g"),i);return n},t=o=>{if(typeof o=="string")return r(o);if(Array.isArray(o))return o.map(t);if(o!==null&&typeof o=="object"){let n={};for(let[a,i]of Object.entries(o))n[a]=t(i);return n}return o};return {...t(s),cookedAt:new Date,cookedVars:e,originalName:s.name}}function Jt(s,e){let r=new Map,t=new Map;for(let l of s)r.set(l,0),t.set(l,[]);for(let l of e)t.get(l.from)?.push(l.to),r.set(l.to,(r.get(l.to)||0)+1);let o=[];for(let[l,c]of r)c===0&&o.push(l);let n=[];for(;o.length>0;){let l=o.shift();n.push(l);for(let c of t.get(l)||[]){let m=(r.get(c)||0)-1;r.set(c,m),m===0&&o.push(c);}}let a=n.length!==s.length,i=a?s.filter(l=>!n.includes(l)):void 0;return {sorted:n,hasCycle:a,cycleNodes:i}}function rs(s,e){let r=new Map,t=0,o=1,n=2;for(let c of s)r.set(c,[]);for(let c of e)r.get(c.from)?.push(c.to);let a=new Map;for(let c of s)a.set(c,t);let i=[],l=(c,m)=>{a.set(c,o),m.push(c);for(let g of r.get(c)||[]){if(a.get(g)===o){let h=m.indexOf(g);return i.push(...m.slice(h)),true}if(a.get(g)===t&&l(g,m))return true}return a.set(c,n),m.pop(),false};for(let c of s)if(a.get(c)===t&&l(c,[]))break;return {hasCycle:i.length>0,cycleNodes:[...new Set(i)]}}function os(s,e,r){let t=Jt(s,e);if(t.hasCycle)return {path:[],totalDuration:0,slack:new Map};let o=new Map;for(let v of r)o.set(v.nodeId,v.weight);let n=new Map,a=new Map;for(let v of s)n.set(v,[]),a.set(v,[]);for(let v of e)n.get(v.from)?.push(v.to),a.get(v.to)?.push(v.from);let i=new Map;for(let v of t.sorted){let S=0;for(let w of a.get(v)||[]){let T=(i.get(w)||0)+(o.get(w)||0);S=Math.max(S,T);}i.set(v,S);}let l=new Map,c=[...t.sorted].reverse(),m=Math.max(...s.map(v=>(i.get(v)||0)+(o.get(v)||0)));for(let v of c){let S=n.get(v)||[];if(S.length===0)l.set(v,m-(o.get(v)||0));else {let w=1/0;for(let T of S)w=Math.min(w,l.get(T)||0);l.set(v,w-(o.get(v)||0));}}let g=new Map,h=[];for(let v of s){let S=(l.get(v)||0)-(i.get(v)||0);g.set(v,S),S===0&&h.push(v);}return {path:t.sorted.filter(v=>h.includes(v)),totalDuration:m,slack:g}}async function Vt(s){let e=performance.now(),r=pt(s),t=Me.get(r);return t?(B("parseFormula:cache-hit",e,false),t):dt.dedupe(r,async()=>{let o=await V();if(o)try{let a=o.parse_toml(s),i=JSON.parse(a);return Me.set(r,i),B("parseFormula",e,!0),i}catch(a){console.warn("[WASM Loader] parse_toml failed, using fallback:",a);}let n=es(s);return Me.set(r,n),B("parseFormula",e,false),n})}async function gt(s,e){let r=performance.now(),t=Ko(s,e),o=Ae.get(t);return o?(B("cookFormula:cache-hit",r,false),o):ut.dedupe(t,async()=>{let n=await V();if(n)try{let i=n.cook_formula(JSON.stringify(s),JSON.stringify(e)),l=JSON.parse(i);return Ae.set(t,l),B("cookFormula",r,!0),l}catch(i){console.warn("[WASM Loader] cook_formula failed, using fallback:",i);}let a=ts(s,e);return Ae.set(t,a),B("cookFormula",r,false),a})}async function $t(s,e){let r=performance.now();if(s.length!==e.length)throw new Error("formulas and varsArray must have the same length");let t=await V();if(t)try{let n=t.cook_batch(JSON.stringify(s),JSON.stringify(e)),a=JSON.parse(n);return B("cookBatch",r,!0),a}catch(n){console.warn("[WASM Loader] cook_batch failed, using fallback:",n);}let o=await Promise.all(s.map((n,a)=>gt(n,e[a])));return B("cookBatch",r,false),o}async function qt(s,e){let r=performance.now(),t=Zo(s,e),o=Ee.get(t);return o?(B("topoSort:cache-hit",r,false),o):mt.dedupe(t,async()=>{let n=await $();if(n)try{let i=n.topo_sort(JSON.stringify(s),JSON.stringify(e)),l=JSON.parse(i);return Ee.set(t,l),B("topoSort",r,!0),l}catch(i){console.warn("[WASM Loader] topo_sort failed, using fallback:",i);}let a=Jt(s,e);return Ee.set(t,a),B("topoSort",r,false),a})}async function Ht(s,e){let r=performance.now(),t=await $();if(t)try{let n=t.detect_cycles(JSON.stringify(s),JSON.stringify(e)),a=JSON.parse(n);return B("detectCycles",r,!0),a}catch(n){console.warn("[WASM Loader] detect_cycles failed, using fallback:",n);}let o=rs(s,e);return B("detectCycles",r,false),o}async function qe(s,e,r){let t=performance.now(),o=await $();if(o)try{let a=o.critical_path(JSON.stringify(s),JSON.stringify(e),JSON.stringify(r)),i=JSON.parse(a),l={path:i.path,totalDuration:i.totalDuration,slack:new Map(Object.entries(i.slack).map(([c,m])=>[c,m]))};return B("criticalPath",t,!0),l}catch(a){console.warn("[WASM Loader] critical_path failed, using fallback:",a);}let n=os(s,e,r);return B("criticalPath",t,false),n}async function He(){let[s,e]=await Promise.all([V(),$()]);return {formulaWasm:s!==null,gnnWasm:e!==null}}async function Ke(){let s=await V(),e=await $();return {formulaWasm:s?.version?.()??null,gnnWasm:e?.version?.()??null}}function Kt(){Ve.clearCache(),$e.clearCache(),ge=null;}function ss(){Je.register("gastown-formula-wasm",async()=>V(),10),Je.register("ruvector-gnn-wasm",async()=>$(),5),Je.startPreload().catch(s=>{});}function ns(){let s=Me.stats(),e=Ae.stats(),r=Ee.stats(),t=Gt.stats(),o=Je.status();return {parseCache:{entries:s.entries,sizeBytes:s.sizeBytes,hitRate:s.hitRate},cookCache:{entries:e.entries,sizeBytes:e.sizeBytes,hitRate:e.hitRate},topoSortCache:{entries:r.entries,sizeBytes:r.sizeBytes,hitRate:r.hitRate},astCache:{entries:t.entries,sizeBytes:t.sizeBytes},preloader:o,deduplicator:{parsePending:dt.pendingCount,cookPending:ut.pendingCount,graphPending:mt.pendingCount}}}function as(){Me.clear(),Ae.clear(),Ee.clear(),Gt.clear(),dt.clear(),ut.clear(),mt.clear();}var is={isWasmAvailable:oe,loadFormulaWasm:V,parseFormula:Vt,cookFormula:gt,cookBatch:$t,loadGnnWasm:$,topoSort:qt,detectCycles:Ht,criticalPath:qe,preloadWasmModules:He,getWasmVersions:Ke,resetWasmCache:Kt,isFormulaWasmLoaded:Yo,isGnnWasmLoaded:Xo,getWasmLazyStats:Qo,scheduleIdlePreload:ss,getCacheStats:ns,clearAllCaches:as,getPerformanceLog:Ut,clearPerformanceLog:jt};var Zt=z.object({title:z.string().min(1).max(500).describe("Bead title"),description:z.string().max(1e4).optional().describe("Bead description"),priority:z.number().int().min(0).max(10).default(2).describe("Priority (0 = highest)"),labels:z.array(z.string().max(50)).max(20).optional().describe("Labels for categorization"),parent:z.string().max(50).optional().describe("Parent bead ID for epics"),rig:z.string().max(100).optional().describe("Rig (repository) to create in")}),Yt=z.object({rig:z.string().max(100).optional().describe("Filter by rig (repository)"),limit:z.number().int().min(1).max(100).default(10).describe("Maximum beads to return"),labels:z.array(z.string().max(50)).max(10).optional().describe("Filter by labels")}),Xt=z.object({bead_id:z.string().min(1).max(50).describe('Bead ID to show (e.g., "gt-abc12")')}),Qt=z.object({action:z.enum(["add","remove"]).describe("Action to perform on dependency"),child:z.string().min(1).max(50).describe("Child bead ID (the one that depends)"),parent:z.string().min(1).max(50).describe("Parent bead ID (the dependency)")}),er=z.object({direction:z.enum(["pull","push","both"]).default("both").describe("Sync direction"),rig:z.string().max(100).optional().describe("Filter by rig (repository)"),namespace:z.string().max(100).default("gastown:beads").describe("AgentDB namespace")}),tr=z.object({name:z.string().min(1).max(200).describe("Convoy name"),issues:z.array(z.string().max(50)).min(1).max(100).describe("Issue IDs to track"),description:z.string().max(5e3).optional().describe("Convoy description")}),rr=z.object({convoy_id:z.string().max(50).optional().describe("Convoy ID (shows all if omitted)"),detailed:z.boolean().default(false).describe("Include detailed progress")}),or=z.object({convoy_id:z.string().min(1).max(50).describe("Convoy ID"),action:z.enum(["add","remove"]).describe("Action to perform"),issues:z.array(z.string().max(50)).min(1).max(50).describe("Issue IDs to add/remove")}),sr=z.object({type:z.enum(["convoy","workflow","expansion","aspect"]).optional().describe("Filter by formula type"),include_builtin:z.boolean().default(true).describe("Include built-in formulas")}),nr=z.object({formula:z.string().min(1).max(5e4).describe("Formula name or TOML content"),vars:z.record(z.string().max(50),z.string().max(5e3)).describe("Variables for substitution"),is_content:z.boolean().default(false).describe("Whether formula is TOML content (vs name)")}),ar=z.object({formula:z.string().min(1).max(200).describe("Formula name"),vars:z.record(z.string().max(50),z.string().max(5e3)).describe("Variables for substitution"),target_agent:z.enum(["polecat","crew","mayor","refinery"]).optional().describe("Target agent for execution"),dry_run:z.boolean().default(false).describe("Dry run (don't actually execute)")}),ir=z.object({name:z.string().min(1).max(100).describe("Formula name"),type:z.enum(["convoy","workflow","expansion","aspect"]).describe("Formula type"),steps:z.array(z.object({id:z.string().min(1).max(50),title:z.string().min(1).max(200),description:z.string().max(5e3).optional(),needs:z.array(z.string().max(50)).optional()})).max(100).optional().describe("Workflow steps"),vars:z.record(z.string().max(50),z.object({default:z.string().max(1e3).optional(),description:z.string().max(500).optional(),required:z.boolean().optional()})).optional().describe("Variable definitions"),description:z.string().max(2e3).optional().describe("Formula description")}),lr=z.object({bead_id:z.string().min(1).max(50).describe("Bead ID to sling"),target:z.enum(["polecat","crew","mayor"]).describe("Target agent type"),formula:z.string().max(200).optional().describe("Optional formula to use"),priority:z.number().int().min(0).max(10).optional().describe("Priority override")}),cr=z.object({rig:z.string().max(100).optional().describe("Filter by rig"),role:z.enum(["mayor","polecat","refinery","witness","deacon","dog","crew"]).optional().describe("Filter by agent role"),include_inactive:z.boolean().default(false).describe("Include inactive agents")}),dr=z.object({action:z.enum(["send","read","list"]).describe("Mail action"),to:z.string().max(100).optional().describe("Recipient (for send)"),subject:z.string().max(500).optional().describe("Subject (for send)"),body:z.string().max(1e4).optional().describe("Body (for send)"),mail_id:z.string().max(50).optional().describe("Mail ID (for read)"),limit:z.number().int().min(1).max(100).default(20).describe("Maximum messages to list")}),ur=z.object({content:z.string().min(1).max(1e5).describe("TOML content to parse"),validate:z.boolean().default(true).describe("Validate against formula schema")}),mr=z.object({beads:z.array(z.object({id:z.string().min(1).max(50),dependencies:z.array(z.string().max(50)).optional()})).min(1).max(1e3).describe("Beads to analyze"),action:z.enum(["topo_sort","critical_path","cycle_detect"]).default("topo_sort").describe("Analysis action")}),pr=z.object({formulas:z.array(z.object({name:z.string().min(1).max(100),content:z.string().min(1).max(5e4)})).min(1).max(50).describe("Formulas to cook"),vars:z.array(z.record(z.string().max(50),z.string().max(5e3))).describe("Variables for each formula"),continue_on_error:z.boolean().default(false).describe("Continue on error")}),gr=z.object({query:z.string().min(1).max(5e3).describe("Search query"),candidates:z.array(z.string().max(5e4)).min(1).max(1e3).describe("Candidate patterns"),k:z.number().int().min(1).max(100).default(10).describe("Number of results to return"),threshold:z.number().min(0).max(1).default(.5).describe("Minimum similarity threshold")}),yr=z.object({convoy_id:z.string().min(1).max(50).describe("Convoy ID to optimize"),strategy:z.enum(["parallel","serial","hybrid"]).default("hybrid").describe("Optimization strategy"),resource_constraints:z.object({max_parallel:z.number().int().min(1).max(100).optional(),agent_capacity:z.record(z.string(),z.number().int().min(1)).optional()}).optional().describe("Resource constraints")}),fr={name:"gt_beads_create",description:"Create a bead (issue/task) in the Gas Town Beads system with priority and labels",category:"gastown-bridge",version:"0.1.0",layer:"cli",inputSchema:Zt,handler:async(s,e)=>{let r=Date.now();try{let t=Zt.parse(s),a={success:!0,bead:await e.bridges.gastown.createBead({title:t.title,description:t.description,priority:t.priority,labels:t.labels,parent:t.parent,rig:t.rig}),durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(a,null,2)}],data:a}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},hr={name:"gt_beads_ready",description:"List beads that are ready to work on (no unresolved dependencies)",category:"gastown-bridge",version:"0.1.0",layer:"cli",inputSchema:Yt,handler:async(s,e)=>{let r=Date.now();try{let t=Yt.parse(s),o=e.bridges.gastown,n=Math.min(t.limit,e.config.maxBeadsLimit),a=await o.getReady(n,t.rig,t.labels),i={success:!0,beads:a,total:a.length,durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(i,null,2)}],data:i}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},br={name:"gt_beads_show",description:"Show detailed information about a specific bead including dependencies",category:"gastown-bridge",version:"0.1.0",layer:"cli",inputSchema:Xt,handler:async(s,e)=>{let r=Date.now();try{let t=Xt.parse(s),o=e.bridges.gastown,{bead:n,dependencies:a,dependents:i}=await o.showBead(t.bead_id),l={success:!0,bead:n,dependencies:a,dependents:i,durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(l,null,2)}],data:l}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},vr={name:"gt_beads_dep",description:"Add or remove dependencies between beads",category:"gastown-bridge",version:"0.1.0",layer:"cli",inputSchema:Qt,handler:async(s,e)=>{let r=Date.now();try{let t=Qt.parse(s);await e.bridges.gastown.manageDependency(t.action,t.child,t.parent);let n={success:!0,action:t.action,child:t.child,parent:t.parent,durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(n,null,2)}],data:n}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},wr={name:"gt_beads_sync",description:"Synchronize beads between Gas Town and Claude Flow AgentDB",category:"gastown-bridge",version:"0.1.0",layer:"hybrid",inputSchema:er,handler:async(s,e)=>{let r=Date.now();try{let t=er.parse(s),o=e.bridges.beadsSync,n=0,a=0,i=0;if(t.direction==="pull"||t.direction==="both"){let c=await o.pullBeads(t.rig,t.namespace);n=c.synced,i+=c.conflicts;}if(t.direction==="push"||t.direction==="both"){let c=await o.pushTasks(t.namespace);a=c.pushed,i+=c.conflicts;}let l={success:!0,direction:t.direction,pulled:n,pushed:a,conflicts:i,durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(l,null,2)}],data:l}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},Cr={name:"gt_convoy_create",description:"Create a convoy (work order) for tracking and coordinating multiple beads",category:"gastown-bridge",version:"0.1.0",layer:"cli",inputSchema:tr,handler:async(s,e)=>{let r=Date.now();try{let t=tr.parse(s),a={success:!0,convoy:await e.bridges.gastown.createConvoy({name:t.name,issues:t.issues,description:t.description}),durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(a,null,2)}],data:a}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},Sr={name:"gt_convoy_status",description:"Check the status of one or all convoys including progress metrics",category:"gastown-bridge",version:"0.1.0",layer:"cli",inputSchema:rr,handler:async(s,e)=>{let r=Date.now();try{let t=rr.parse(s),a={success:!0,convoys:await e.bridges.gastown.getConvoyStatus(t.convoy_id,t.detailed),durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(a,null,2)}],data:a}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},Tr={name:"gt_convoy_track",description:"Add or remove issues from an existing convoy",category:"gastown-bridge",version:"0.1.0",layer:"cli",inputSchema:or,handler:async(s,e)=>{let r=Date.now();try{let t=or.parse(s);await e.bridges.gastown.trackConvoy(t.convoy_id,t.action,t.issues);let n={success:!0,convoy_id:t.convoy_id,action:t.action,issues_modified:t.issues,durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(n,null,2)}],data:n}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},xr={name:"gt_formula_list",description:"List available Gas Town formulas with optional type filter",category:"gastown-bridge",version:"0.1.0",layer:"cli",inputSchema:sr,handler:async(s,e)=>{let r=Date.now();try{let t=sr.parse(s),a={success:!0,formulas:await e.bridges.gastown.listFormulas(t.type,t.include_builtin),durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(a,null,2)}],data:a}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},Pr={name:"gt_formula_cook",description:"Cook a formula into a protomolecule with variable substitution (WASM accelerated)",category:"gastown-bridge",version:"0.1.0",layer:"wasm",inputSchema:nr,handler:async(s,e)=>{let r=Date.now();try{let t=nr.parse(s),o=!1,n;if(e.config.enableWasm)try{let i=e.bridges.formulaWasm;i.isInitialized()?(n=await i.cookFormula(t.formula,t.vars,t.is_content),o=!0):n=await e.bridges.gastown.cookFormula(t.formula,t.vars);}catch{n=await e.bridges.gastown.cookFormula(t.formula,t.vars);}else n=await e.bridges.gastown.cookFormula(t.formula,t.vars);let a={success:!0,cooked:n,wasmUsed:o,durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(a,null,2)}],data:a}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},Ir={name:"gt_formula_execute",description:"Execute a formula to create beads/molecules in Gas Town",category:"gastown-bridge",version:"0.1.0",layer:"hybrid",inputSchema:ar,handler:async(s,e)=>{let r=Date.now();try{let t=ar.parse(s),o=e.bridges.gastown,{beads_created:n}=await o.executeFormula(t.formula,t.vars,t.target_agent,t.dry_run),a={success:!0,formula:t.formula,beads_created:n,target_agent:t.target_agent,dry_run:t.dry_run,durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(a,null,2)}],data:a}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},kr={name:"gt_formula_create",description:"Create a custom formula definition",category:"gastown-bridge",version:"0.1.0",layer:"cli",inputSchema:ir,handler:async(s,e)=>{let r=Date.now();try{let t=ir.parse(s),o=e.bridges.gastown,n=t.steps?.map(l=>({id:l.id,title:l.title,description:l.description??"",needs:l.needs})),{path:a}=await o.createFormula({name:t.name,type:t.type,steps:n,vars:t.vars,description:t.description}),i={success:!0,name:t.name,path:a,durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(i,null,2)}],data:i}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},Mr={name:"gt_sling",description:"Sling (assign) a bead to a Gas Town agent for processing",category:"gastown-bridge",version:"0.1.0",layer:"cli",inputSchema:lr,handler:async(s,e)=>{let r=Date.now();try{let t=lr.parse(s);await e.bridges.gastown.sling(t.bead_id,t.target,t.formula,t.priority);let n={success:!0,bead_id:t.bead_id,target:t.target,formula_used:t.formula,durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(n,null,2)}],data:n}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},Ar={name:"gt_agents",description:"List Gas Town agents with optional role and rig filters",category:"gastown-bridge",version:"0.1.0",layer:"cli",inputSchema:cr,handler:async(s,e)=>{let r=Date.now();try{let t=cr.parse(s),a={success:!0,agents:await e.bridges.gastown.listAgents(t.rig,t.role,t.include_inactive),durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(a,null,2)}],data:a}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},Er={name:"gt_mail",description:"Send, read, or list Gas Town internal mail messages",category:"gastown-bridge",version:"0.1.0",layer:"cli",inputSchema:dr,handler:async(s,e)=>{let r=Date.now();try{let t=dr.parse(s),o=e.bridges.gastown,n,a;switch(t.action){case "send":if(!t.to||!t.subject||!t.body)throw new Error("send action requires to, subject, and body");a=await o.sendMail(t.to,t.subject,t.body);break;case "read":if(!t.mail_id)throw new Error("read action requires mail_id");n=[await o.readMail(t.mail_id)];break;case "list":n=await o.listMail(t.limit);break}let i={success:!0,action:t.action,messages:n,sent_id:a,durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(i,null,2)}],data:i}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},_r={name:"gt_wasm_parse_formula",description:"Parse TOML formula content to AST using WASM (352x faster than JavaScript)",category:"gastown-bridge",version:"0.1.0",layer:"wasm",inputSchema:ur,handler:async(s,e)=>{let r=Date.now();try{let t=ur.parse(s),o=e.bridges.formulaWasm;o.isInitialized()||await o.initialize();let n=Date.now(),a=await o.parseFormula(t.content,t.validate),i=Date.now()-n,l={success:!0,ast:a,wasmPerformanceMs:i,durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(l,null,2)}],data:l}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},Br={name:"gt_wasm_resolve_deps",description:"Resolve bead dependencies using WASM (topological sort, cycle detection, critical path)",category:"gastown-bridge",version:"0.1.0",layer:"wasm",inputSchema:mr,handler:async(s,e)=>{let r=Date.now();try{let t=mr.parse(s),o=e.bridges.dependencyWasm;o.isInitialized()||await o.initialize();let n=Date.now(),a=await o.resolveDependencies(t.beads,t.action),i=Date.now()-n,l={success:!0,action:t.action,result:a,wasmPerformanceMs:i,durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(l,null,2)}],data:l}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},Dr={name:"gt_wasm_cook_batch",description:"Batch cook multiple formulas using WASM for maximum performance",category:"gastown-bridge",version:"0.1.0",layer:"wasm",inputSchema:pr,handler:async(s,e)=>{let r=Date.now();try{let t=pr.parse(s),o=e.bridges.formulaWasm;o.isInitialized()||await o.initialize();let n=Date.now(),{cooked:a,errors:i}=await o.cookBatch(t.formulas,t.vars,t.continue_on_error),l=Date.now()-n,c={success:i.length===0||t.continue_on_error,cooked:a,errors:i,wasmPerformanceMs:l,durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(c,null,2)}],data:c}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},Rr={name:"gt_wasm_match_pattern",description:"Find similar formulas or beads using HNSW pattern matching (150x-12500x faster)",category:"gastown-bridge",version:"0.1.0",layer:"wasm",inputSchema:gr,handler:async(s,e)=>{let r=Date.now();try{let t=gr.parse(s),o=e.bridges.dependencyWasm;o.isInitialized()||await o.initialize();let n=Date.now(),a=await o.matchPatterns(t.query,t.candidates,t.k,t.threshold),i=Date.now()-n,l={success:!0,matches:a,wasmPerformanceMs:i,durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(l,null,2)}],data:l}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},Fr={name:"gt_wasm_optimize_convoy",description:"Optimize convoy execution order using WASM graph algorithms",category:"gastown-bridge",version:"0.1.0",layer:"wasm",inputSchema:yr,handler:async(s,e)=>{let r=Date.now();try{let t=yr.parse(s),o=e.bridges.dependencyWasm,n=e.bridges.gastown;o.isInitialized()||await o.initialize();let a=await n.getConvoyStatus(t.convoy_id,!0);if(a.length===0)throw new Error(`Convoy not found: ${t.convoy_id}`);let i=a[0],l=Date.now(),c=await o.optimizeConvoy(i,t.strategy,t.resource_constraints),m=Date.now()-l,g={success:!0,optimization:c,wasmPerformanceMs:m,durationMs:Date.now()-r};return {content:[{type:"text",text:JSON.stringify(g,null,2)}],data:g}}catch(t){let o=t instanceof Error?t.message:"Unknown error";return {content:[{type:"text",text:JSON.stringify({success:false,error:o,durationMs:Date.now()-r},null,2)}]}}}},ve=[fr,hr,br,vr,wr,Cr,Sr,Tr,xr,Pr,Ir,kr,Mr,Ar,Er,_r,Br,Dr,Rr,Fr],ls=new Map([["gt_beads_create",fr.handler],["gt_beads_ready",hr.handler],["gt_beads_show",br.handler],["gt_beads_dep",vr.handler],["gt_beads_sync",wr.handler],["gt_convoy_create",Cr.handler],["gt_convoy_status",Sr.handler],["gt_convoy_track",Tr.handler],["gt_formula_list",xr.handler],["gt_formula_cook",Pr.handler],["gt_formula_execute",Ir.handler],["gt_formula_create",kr.handler],["gt_sling",Mr.handler],["gt_agents",Ar.handler],["gt_mail",Er.handler],["gt_wasm_parse_formula",_r.handler],["gt_wasm_resolve_deps",Br.handler],["gt_wasm_cook_batch",Dr.handler],["gt_wasm_match_pattern",Rr.handler],["gt_wasm_optimize_convoy",Fr.handler]]),cs={beads:["gt_beads_create","gt_beads_ready","gt_beads_show","gt_beads_dep","gt_beads_sync"],convoy:["gt_convoy_create","gt_convoy_status","gt_convoy_track"],formula:["gt_formula_list","gt_formula_cook","gt_formula_execute","gt_formula_create"],orchestration:["gt_sling","gt_agents","gt_mail"],wasm:["gt_wasm_parse_formula","gt_wasm_resolve_deps","gt_wasm_cook_batch","gt_wasm_match_pattern","gt_wasm_optimize_convoy"]};function ds(s){return ve.find(e=>e.name===s)}function us(s){return ve.filter(e=>e.layer===s)}var q=/[;&|`$(){}[\]<>\n\r\0\\'"]/,_e=[/\.\.\//,/\.\.\\/,/%2e%2e%2f/i,/%2e%2e%5c/i,/\x2e\x2e\x2f/,/\x2e\x2e\x5c/,/~\//,/^\/etc\//,/^\/proc\//,/^\/dev\//,/^C:\\/i],Or=/^(gt-[a-zA-Z0-9]{4,16}|\d{1,10})$/,Lr=/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/,zr=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,Nr=/^conv-[a-zA-Z0-9]{4,16}$/,F={beadId:32,formulaName:64,convoyId:36,argument:512,stringValue:4096,arrayLength:100},we=z.string().min(1,"Bead ID cannot be empty").max(F.beadId,`Bead ID exceeds maximum length of ${F.beadId}`).refine(s=>!q.test(s),"Bead ID contains invalid characters").refine(s=>!_e.some(e=>e.test(s)),"Bead ID contains path traversal sequence").refine(s=>Or.test(s.trim()),"Bead ID must be in format gt-{hash} or numeric").transform(s=>s.trim()),Be=z.string().min(1,"Formula name cannot be empty").max(F.formulaName,`Formula name exceeds maximum length of ${F.formulaName}`).refine(s=>!q.test(s),"Formula name contains invalid characters").refine(s=>!_e.some(e=>e.test(s)),"Formula name contains path traversal sequence").refine(s=>Lr.test(s.trim()),"Formula name must start with letter and contain only alphanumeric, dash, or underscore").transform(s=>s.trim()),yt=z.string().min(1,"Convoy ID cannot be empty").max(F.convoyId,`Convoy ID exceeds maximum length of ${F.convoyId}`).refine(s=>!q.test(s),"Convoy ID contains invalid characters").refine(s=>zr.test(s.trim())||Nr.test(s.trim()),"Convoy ID must be a valid UUID or conv-{hash} format").transform(s=>s.trim().toLowerCase()),Wr=z.string().max(F.argument,`Argument exceeds maximum length of ${F.argument}`).refine(s=>!s.includes("\0"),"Argument contains null byte").refine(s=>!q.test(s),"Argument contains shell metacharacters").refine(s=>!_e.some(e=>e.test(s)),"Argument contains path traversal sequence"),Gr=z.array(Wr).max(F.arrayLength,`Too many arguments (max ${F.arrayLength})`),ms=z.string().max(F.stringValue,`String exceeds maximum length of ${F.stringValue}`).refine(s=>!q.test(s),"String contains shell metacharacters");z.enum(["convoy","workflow","expansion","aspect"]);z.enum(["open","in_progress","closed"]);z.enum(["active","landed","failed","paused"]);var ps=z.enum(["polecat","crew","mayor"]),Ur=z.string().min(1,"Rig name cannot be empty").max(32,"Rig name exceeds maximum length").refine(s=>!q.test(s),"Rig name contains invalid characters").refine(s=>/^[a-zA-Z][a-zA-Z0-9-]{0,31}$/.test(s.trim()),"Rig name must start with letter and contain only alphanumeric or dash").transform(s=>s.trim().toLowerCase()),ft=z.number().int("Priority must be an integer").min(0,"Priority cannot be negative").max(100,"Priority cannot exceed 100"),jr=z.array(z.string().max(50,"Label exceeds maximum length").refine(s=>/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(s),"Label must start with letter and contain only alphanumeric, dash, or underscore")).max(20,"Too many labels (max 20)");function gs(s){let e=we.safeParse(s);if(!e.success){e.error.errors.map(t=>t.message).join("; ");throw D.invalidBeadId(s)}return e.data}function ys(s){let e=Be.safeParse(s);if(!e.success)throw D.invalidFormulaName(s);return e.data}function fs(s){let e=yt.safeParse(s);if(!e.success)throw D.invalidConvoyId(s);return e.data}function hs(s){if(!Array.isArray(s))throw new D("Arguments must be an array",y.INVALID_ARGUMENTS,[{field:"args",constraint:"array",actual:typeof s}]);let e=Gr.safeParse(s);if(!e.success){let t=e.error.errors.map((o,n)=>({field:`args[${o.path[0]??n}]`,constraint:"safe CLI argument",actual:s[Number(o.path[0])]?.slice(0,20)+"..."}));throw new D("Invalid CLI arguments",y.INVALID_ARGUMENTS,t)}return e.data}var bs=z.object({title:z.string().min(1,"Title cannot be empty").max(256,"Title exceeds maximum length").refine(s=>!q.test(s),"Title contains invalid characters"),description:z.string().max(4096,"Description exceeds maximum length").optional(),priority:ft.optional().default(50),labels:jr.optional().default([]),parent:we.optional(),rig:Ur.optional(),assignee:z.string().max(64,"Assignee name exceeds maximum length").refine(s=>/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(s),"Invalid assignee name format").optional()}),vs=z.object({name:z.string().min(1,"Convoy name cannot be empty").max(128,"Convoy name exceeds maximum length").refine(s=>!q.test(s),"Convoy name contains invalid characters"),issues:z.array(we).min(1,"At least one issue is required").max(100,"Too many issues (max 100)"),description:z.string().max(4096,"Description exceeds maximum length").optional(),formula:Be.optional()}),ws=z.object({beadId:we,target:ps,formula:Be.optional(),priority:ft.optional()});function Cs(s){let e=bs.safeParse(s);if(!e.success){let t=e.error.errors.map(o=>({field:o.path.join("."),constraint:o.message}));throw new D("Invalid bead creation options",y.VALIDATION_FAILED,t)}return e.data}function Ss(s){let e=vs.safeParse(s);if(!e.success){let t=e.error.errors.map(o=>({field:o.path.join("."),constraint:o.message}));throw new D("Invalid convoy creation options",y.VALIDATION_FAILED,t)}return e.data}function Ts(s){let e=ws.safeParse(s);if(!e.success){let t=e.error.errors.map(o=>({field:o.path.join("."),constraint:o.message}));throw new D("Invalid sling options",y.VALIDATION_FAILED,t)}return e.data}function xs(s){return q.test(s)}function Ps(s){return _e.some(e=>e.test(s))}function Is(s){return Wr.safeParse(s).success}function ks(s){return we.safeParse(s).success}function Ms(s){return Be.safeParse(s).success}function As(s){return yt.safeParse(s).success}var k={single:1024*1024,list:10*1024*1024,field:65536},Ye=[/password/i,/secret/i,/token/i,/api[_-]?key/i,/auth[_-]?key/i,/private[_-]?key/i,/access[_-]?key/i,/credential/i,/bearer/i,/jwt/i,/session[_-]?id/i],Xe=new Set(["password","secret","token","apiKey","api_key","authKey","auth_key","privateKey","private_key","accessKey","access_key","credential","credentials","bearer","jwt","sessionId","session_id"]),Es=z.object({id:z.string(),title:z.string().default(""),description:z.string().default(""),status:z.enum(["open","in_progress","closed"]).default("open"),priority:z.number().int().min(0).default(50),labels:z.array(z.string()).default([]),parentId:z.string().optional(),parent_id:z.string().optional(),createdAt:z.union([z.string(),z.date()]).optional(),created_at:z.union([z.string(),z.date()]).optional(),updatedAt:z.union([z.string(),z.date()]).optional(),updated_at:z.union([z.string(),z.date()]).optional(),assignee:z.string().optional(),rig:z.string().optional(),blockedBy:z.array(z.string()).optional(),blocked_by:z.array(z.string()).optional(),blocks:z.array(z.string()).optional()}).passthrough(),_s=z.object({name:z.string(),description:z.string().default(""),type:z.enum(["convoy","workflow","expansion","aspect"]).default("workflow"),version:z.number().int().min(1).default(1),legs:z.array(z.object({id:z.string(),title:z.string().default(""),focus:z.string().default(""),description:z.string().default(""),agent:z.string().optional(),order:z.number().optional()})).optional(),steps:z.array(z.object({id:z.string(),title:z.string().default(""),description:z.string().default(""),needs:z.array(z.string()).optional(),duration:z.number().optional(),requires:z.array(z.string()).optional(),metadata:z.record(z.unknown()).optional()})).optional(),vars:z.record(z.object({name:z.string().default(""),description:z.string().optional(),default:z.string().optional(),required:z.boolean().optional(),pattern:z.string().optional(),enum:z.array(z.string()).optional()})).optional(),synthesis:z.object({strategy:z.enum(["merge","sequential","parallel"]).default("merge"),format:z.string().optional(),description:z.string().optional()}).optional(),templates:z.array(z.object({name:z.string(),content:z.string(),outputPath:z.string().optional()})).optional(),aspects:z.array(z.object({name:z.string().default(""),pointcut:z.string().default(""),advice:z.string().default(""),type:z.enum(["before","after","around"]).default("after")})).optional(),metadata:z.record(z.unknown()).optional()}).passthrough(),Bs=z.object({id:z.string(),name:z.string(),trackedIssues:z.array(z.string()).default([]),tracked_issues:z.array(z.string()).optional(),status:z.enum(["active","landed","failed","paused"]).default("active"),startedAt:z.union([z.string(),z.date()]).optional(),started_at:z.union([z.string(),z.date()]).optional(),completedAt:z.union([z.string(),z.date()]).optional(),completed_at:z.union([z.string(),z.date()]).optional(),progress:z.object({total:z.number().int().min(0).default(0),closed:z.number().int().min(0).default(0),inProgress:z.number().int().min(0).default(0),in_progress:z.number().int().min(0).optional(),blocked:z.number().int().min(0).default(0)}).default({total:0,closed:0,inProgress:0,blocked:0}),formula:z.string().optional(),description:z.string().optional()}).passthrough();function Jr(s){if(s.length>k.single)throw K.parseFailed(s.slice(0,100)+"...",new Error(`Output exceeds maximum size of ${k.single} bytes`));let e;try{e=JSON.parse(s);}catch(n){throw K.parseFailed(s,n instanceof Error?n:void 0)}typeof e=="object"&&e!==null&&Ce(e);let r=Es.safeParse(e);if(!r.success)throw K.parseFailed(s,new Error(r.error.errors.map(n=>n.message).join("; ")));let t=r.data;return {id:C(t.id,k.field),title:C(t.title,k.field),description:C(t.description,k.field),status:t.status,priority:Math.max(0,Math.min(100,t.priority)),labels:t.labels.map(n=>C(n,50)).slice(0,20),parentId:t.parentId??t.parent_id,createdAt:De(t.createdAt??t.created_at)??new Date,updatedAt:De(t.updatedAt??t.updated_at)??new Date,assignee:t.assignee?C(t.assignee,64):void 0,rig:t.rig?C(t.rig,32):void 0,blockedBy:(t.blockedBy??t.blocked_by)?.map(n=>C(n,32)),blocks:t.blocks?.map(n=>C(n,32))}}function Ds(s){if(s.length>k.single)throw j.parseFailed("output",`Output exceeds maximum size of ${k.single} bytes`);let e;try{e=JSON.parse(s);}catch(n){throw j.parseFailed("output","Invalid JSON",n instanceof Error?n:void 0)}typeof e=="object"&&e!==null&&Ce(e);let r=_s.safeParse(e);if(!r.success)throw j.parseFailed("output",r.error.errors.map(n=>n.message).join("; "));let t=r.data;return {name:C(t.name,64),description:C(t.description,k.field),type:t.type,version:Math.max(1,t.version),legs:t.legs?.map(n=>({id:C(n.id,64),title:C(n.title,256),focus:C(n.focus,256),description:C(n.description,k.field),agent:n.agent?C(n.agent,64):void 0,order:n.order})),steps:t.steps?.map(n=>({id:C(n.id,64),title:C(n.title,256),description:C(n.description,k.field),needs:n.needs?.map(a=>C(a,64)),duration:n.duration,requires:n.requires?.map(a=>C(a,64)),metadata:n.metadata?Ze(n.metadata):void 0})),vars:t.vars?Os(t.vars):void 0,synthesis:t.synthesis?{strategy:t.synthesis.strategy??"merge",format:t.synthesis.format,description:t.synthesis.description}:void 0,templates:t.templates?.map(n=>({name:C(n.name,64),content:C(n.content,k.field),outputPath:n.outputPath?Vr(n.outputPath):void 0})),aspects:t.aspects?.map(n=>({name:C(n.name??"",64),pointcut:C(n.pointcut??"",256),advice:C(n.advice??"",k.field),type:n.type??"after"})),metadata:t.metadata?Ze(t.metadata):void 0}}function Rs(s){if(s.length>k.single)throw I.createFailed(`Output exceeds maximum size of ${k.single} bytes`);let e;try{e=JSON.parse(s);}catch(n){throw I.createFailed("Invalid JSON",n instanceof Error?n:void 0)}typeof e=="object"&&e!==null&&Ce(e);let r=Bs.safeParse(e);if(!r.success)throw I.createFailed(r.error.errors.map(n=>n.message).join("; "));let t=r.data;return {id:C(t.id,36),name:C(t.name,128),trackedIssues:(t.trackedIssues??t.tracked_issues??[]).map(n=>C(n,32)).slice(0,100),status:t.status,startedAt:De(t.startedAt??t.started_at)??new Date,completedAt:De(t.completedAt??t.completed_at),progress:{total:Math.max(0,t.progress.total),closed:Math.max(0,t.progress.closed),inProgress:Math.max(0,t.progress.inProgress??t.progress.in_progress??0),blocked:Math.max(0,t.progress.blocked)},formula:t.formula?C(t.formula,64):void 0,description:t.description?C(t.description,k.field):void 0}}function Fs(s){if(s.length>k.list)throw K.parseFailed(s.slice(0,100)+"...",new Error(`Output exceeds maximum size of ${k.list} bytes`));let e=s.trim().split(`
|
|
`),r=[],t=[];for(let o=0;o<e.length;o++){let n=e[o]?.trim();if(n)try{let a=Jr(n);r.push(a);}catch(a){t.push(`Line ${o+1}: ${a instanceof Error?a.message:"Unknown error"}`);}}return t.length>0&&console.warn(`[sanitizers] ${t.length} bead(s) failed to parse:`,t.slice(0,3)),r}function Ce(s){for(let e of Object.keys(s)){if(Xe.has(e)||Ye.some(t=>t.test(e))){s[e]="[REDACTED]";continue}let r=s[e];if(typeof r=="object"&&r!==null)if(Array.isArray(r))for(let t of r)typeof t=="object"&&t!==null&&Ce(t);else Ce(r);}}function C(s,e){if(s==null)return "";let r=String(s);return r.length>e&&(r=r.slice(0,e)),r=r.replace(/\0/g,""),r=r.replace(/[\r\n]+/g,`
|
|
`).trim(),r}function Vr(s){let e=C(s,256);return e=e.replace(/\.\.\//g,""),e=e.replace(/\.\.\\/g,""),e=e.replace(/^[\/\\]+/,""),e}function De(s){if(s!=null){if(s instanceof Date)return isNaN(s.getTime())?void 0:s;try{let e=new Date(s);return isNaN(e.getTime())?void 0:e}catch{return}}}function Ze(s){let e={};for(let[r,t]of Object.entries(s)){if(Xe.has(r)||Ye.some(n=>n.test(r)))continue;let o=C(r,64);typeof t=="string"?e[o]=C(t,k.field):typeof t=="number"||typeof t=="boolean"?e[o]=t:Array.isArray(t)?e[o]=t.slice(0,100).map(n=>typeof n=="string"?C(n,256):n):typeof t=="object"&&t!==null&&(e[o]=Ze(t));}return e}function Os(s){let e={};for(let[r,t]of Object.entries(s)){if(Xe.has(r)||Ye.some(n=>n.test(r)))continue;let o=C(r,64);e[o]={name:C(t.name??r,64),description:t.description?C(t.description,256):void 0,default:t.default?C(t.default,256):void 0,required:t.required,pattern:t.pattern?C(t.pattern,256):void 0,enum:t.enum?.map(n=>C(n,64)).slice(0,20)};}return e}var zs={gastown:Fe,gtBridge:{timeout:3e4},bdBridge:{timeout:3e4},syncBridge:{namespace:"gastown:beads",syncInterval:6e4,autoSync:false},formulaExecutor:{useWasm:true,stepTimeout:6e4,maxParallel:4},convoyTracker:{autoUpdateProgress:true,progressUpdateInterval:3e4,persistConvoys:false,storagePath:"./data/convoys"},convoyObserver:{pollInterval:1e4,maxPollAttempts:0,useWasm:true},wasm:{enabled:true,preload:true},gupp:{enabled:false},logger:{level:"info",structured:false}},ht=class{enabled;endpoint;constructor(e){this.enabled=e?.enabled??false,this.endpoint=e?.endpoint;}isAvailable(){return this.enabled&&!!this.endpoint}async pull(e){return this.isAvailable()?(console.warn("[GUPP] Pull not implemented - stub adapter"),[]):[]}async push(e){return this.isAvailable()?(console.warn("[GUPP] Push not implemented - stub adapter"),{pushed:0,errors:["Not implemented"]}):{pushed:0,errors:["GUPP not configured"]}}async sync(){return this.isAvailable()?(console.warn("[GUPP] Sync not implemented - stub adapter"),{pulled:0,pushed:0,conflicts:[]}):{pulled:0,pushed:0,conflicts:[]}}};function Ns(s){let e=s?.level??"info",r={debug:0,info:1,warn:2,error:3},t=r[e],o=(n,a,i)=>{if(r[n]>=t){let l=`[gastown-bridge:${n}]`;s?.structured?JSON.stringify({level:n,msg:a,...i,timestamp:new Date().toISOString()}):`${l}${a}`;}};return {debug:(n,a)=>o("debug",n,a),info:(n,a)=>o("info",n,a),warn:(n,a)=>o("warn",n,a),error:(n,a)=>o("error",n,a)}}var bt=class{initialized=false;async initialize(){try{await V(),await $(),this.initialized=!0;}catch{this.initialized=false;}}isInitialized(){return this.initialized&&oe()}parseFormula(e){let r=e.split(`
|
|
`),t={},o="";for(let n of r){let a=n.trim();if(a.startsWith("#")||a==="")continue;let i=a.match(/^\[([^\]]+)\]$/);if(i){o=i[1],t[o]||(t[o]={});continue}let l=a.match(/^([^=]+)=(.+)$/);if(l){let c=l[1].trim(),m=l[2].trim();m==="true"?m=true:m==="false"?m=false:/^\d+$/.test(m)?m=parseInt(m,10):/^\d+\.\d+$/.test(m)?m=parseFloat(m):m.startsWith('"')&&m.endsWith('"')&&(m=m.slice(1,-1)),o?t[o][c]=m:t[c]=m;}}return {name:t.name||"unknown",description:t.description||"",type:t.type||"workflow",version:t.version||1,steps:t.steps,legs:t.legs,vars:t.vars,metadata:t.metadata}}cookFormula(e,r){let t=a=>{let i=a;for(let[l,c]of Object.entries(r))i=i.replace(new RegExp(`\\{\\{${l}\\}\\}`,"g"),c),i=i.replace(new RegExp(`\\$\\{${l}\\}`,"g"),c);return i},o=a=>{if(typeof a=="string")return t(a);if(Array.isArray(a))return a.map(o);if(a!==null&&typeof a=="object"){let i={};for(let[l,c]of Object.entries(a))i[l]=o(c);return i}return a};return {...o(e),cookedAt:new Date,cookedVars:r,originalName:e.name}}batchCook(e,r){return e.map((t,o)=>this.cookFormula(t,r[o]??{}))}resolveStepDependencies(e){let r=new Map,t=new Map;for(let i of e)r.set(i.id,0),t.set(i.id,[]);for(let i of e)for(let l of i.needs??[])t.get(l)?.push(i.id),r.set(i.id,(r.get(i.id)||0)+1);let o=[];for(let[i,l]of r)l===0&&o.push(i);let n=[];for(;o.length>0;){let i=o.shift();n.push(i);for(let l of t.get(i)||[]){let c=(r.get(l)||0)-1;r.set(l,c),c===0&&o.push(l);}}if(n.length!==e.length){let i=e.filter(l=>!n.includes(l.id)).map(l=>l.id);throw new f("Cycle detected in step dependencies",y.DEPENDENCY_CYCLE,{cycleNodes:i})}let a=new Map(e.map(i=>[i.id,i]));return n.map(i=>a.get(i)).filter(i=>i!==void 0)}detectCycle(e){let n=new Map,a=new Map;for(let c of e)n.set(c.id,c.needs??[]),a.set(c.id,0);let i=[],l=(c,m)=>{a.set(c,1),m.push(c);for(let g of n.get(c)||[]){if(a.get(g)===1){let h=m.indexOf(g);return i.push(...m.slice(h)),true}if(a.get(g)===0&&l(g,m))return true}return a.set(c,2),m.pop(),false};for(let c of e)if(a.get(c.id)===0&&l(c.id,[]))break;return {hasCycle:i.length>0,cycleSteps:i.length>0?[...new Set(i)]:void 0}}},Qe=class extends EventEmitter{name="@claude-flow/plugin-gastown-bridge";version="0.1.0";description="Gas Town orchestrator integration with WASM-accelerated formula parsing and graph analysis";config;pluginContext=null;logger;gtBridge=null;bdBridge=null;syncBridge=null;formulaExecutor=null;convoyTracker=null;convoyObserver=null;wasmLoader=null;guppAdapter=null;wasmInitialized=false;cliAvailable=false;initialized=false;constructor(e){super(),this.config=this.mergeConfig(zs,e),this.logger=Ns(this.config.logger);}async register(e){this.pluginContext=e,e.set("gastown-bridge",this),e.set("gt.version",this.version),e.set("gt.capabilities",this.getCapabilities()),this.logger.info("Plugin registered",{version:this.version});}async initialize(e){if(this.initialized)return {success:true};try{return this.logger.info("Initializing Gas Town Bridge Plugin..."),this.config.wasm?.enabled&&await this.initializeWasm(),this.cliAvailable=await this.checkCliAvailable(),this.cliAvailable||this.logger.warn("CLI tools (gt, bd) not found. Some features will be unavailable."),await this.initializeBridges(),await this.initializeFormulaExecutor(),await this.initializeConvoyComponents(),this.initializeGuppAdapter(),e.set("gt.config",this.config),e.set("gt.wasmReady",this.wasmInitialized),e.set("gt.cliAvailable",this.cliAvailable),e.set("gt.bridges",{gt:this.gtBridge,bd:this.bdBridge,sync:this.syncBridge}),e.set("gt.executor",this.formulaExecutor),e.set("gt.tracker",this.convoyTracker),e.set("gt.observer",this.convoyObserver),e.set("gt.gupp",this.guppAdapter),this.initialized=!0,this.emit("initialized"),this.logger.info("Plugin initialized successfully",{wasmReady:this.wasmInitialized,cliAvailable:this.cliAvailable,toolCount:this.getMCPTools().length}),{success:!0}}catch(r){let t=r instanceof Error?r.message:"Unknown error";return this.logger.error("Failed to initialize plugin",{error:t}),{success:false,error:t}}}async shutdown(e){try{return this.logger.info("Shutting down Gas Town Bridge Plugin..."),this.convoyObserver&&(this.convoyObserver.dispose(),this.convoyObserver=null),this.convoyTracker&&(this.convoyTracker.dispose(),this.convoyTracker=null),this.syncBridge&&(this.syncBridge=null),this.gtBridge=null,this.bdBridge=null,this.wasmLoader=null,this.wasmInitialized=!1,this.pluginContext=null,this.initialized=!1,this.emit("shutdown"),this.removeAllListeners(),this.logger.info("Plugin shutdown complete"),{success:!0}}catch(r){let t=r instanceof Error?r.message:"Unknown error";return this.logger.error("Failed to shutdown plugin",{error:t}),{success:false,error:t}}}getCapabilities(){return ["beads-integration","convoy-tracking","formula-parsing","formula-cooking","formula-execution","wasm-acceleration","dependency-resolution","topological-sort","cycle-detection","critical-path","agentdb-sync","sling-operations","gupp-adapter"]}getMCPTools(){return ve.map(e=>this.convertMcpTool(e))}getHooks(){return [this.createPreTaskHook(),this.createPostTaskHook(),this.createBeadsSyncHook(),this.createConvoyProgressHook()]}getConfig(){return {...this.config}}updateConfig(e){this.config=this.mergeConfig(this.config,e),this.config.gastown&&(this.config.gastown=xt({...Fe,...this.config.gastown}));}isWasmReady(){return this.wasmInitialized}isCliAvailable(){return this.cliAvailable}getBridges(){return {gt:this.gtBridge,bd:this.bdBridge,sync:this.syncBridge}}getFormulaExecutor(){return this.formulaExecutor}getConvoyTracker(){return this.convoyTracker}getConvoyObserver(){return this.convoyObserver}getGuppAdapter(){return this.guppAdapter}getMetadata(){return {name:this.name,version:this.version,description:this.description,author:"rUv",license:"MIT",repository:"https://github.com/ruvnet/claude-flow",keywords:["claude-flow","plugin","gastown","beads","orchestration","workflows","formulas","wasm","multi-agent"],mcpTools:ve.map(e=>e.name),capabilities:this.getCapabilities()}}mergeConfig(e,r){return r?{gastown:{...e.gastown,...r.gastown},gtBridge:{...e.gtBridge,...r.gtBridge},bdBridge:{...e.bdBridge,...r.bdBridge},syncBridge:{...e.syncBridge,...r.syncBridge},formulaExecutor:{...e.formulaExecutor,...r.formulaExecutor},convoyTracker:{...e.convoyTracker,...r.convoyTracker},convoyObserver:{...e.convoyObserver,...r.convoyObserver},wasm:{...e.wasm,...r.wasm},gupp:{...e.gupp,...r.gupp},logger:{...e.logger,...r.logger}}:{...e}}async initializeWasm(){try{if(this.wasmLoader=new bt,this.config.wasm?.preload&&await He(),await this.wasmLoader.initialize(),this.wasmInitialized=this.wasmLoader.isInitialized(),this.wasmInitialized){let e=await Ke();this.logger.info("WASM modules initialized",{versions:e});}}catch(e){this.logger.warn("WASM initialization failed, using JS fallback",{error:e instanceof Error?e.message:String(e)}),this.wasmInitialized=false;}}async checkCliAvailable(){try{let{exec:e}=await import('child_process'),{promisify:r}=await import('util'),t=r(e);return await t("which gt"),await t("which bd"),!0}catch{return false}}async initializeBridges(){this.gtBridge=p({gtPath:this.config.gtBridge?.gtPath,timeout:this.config.gtBridge?.timeout,cwd:this.config.gtBridge?.cwd}),await this.gtBridge.initialize(),this.bdBridge=w({bdPath:this.config.bdBridge?.bdPath,timeout:this.config.bdBridge?.timeout,cwd:this.config.bdBridge?.cwd}),await this.bdBridge.initialize();let e=this.createStubAgentDB();this.syncBridge=D$1(e,{beadsBridge:this.config.bdBridge,agentdbNamespace:this.config.syncBridge?.namespace??"gastown:beads"}),this.logger.debug("Bridges initialized");}async initializeFormulaExecutor(){if(!this.gtBridge)throw new f("GtBridge not initialized",y.NOT_INITIALIZED);let e=this.config.formulaExecutor?.useWasm&&this.wasmLoader?this.wasmLoader:void 0;this.formulaExecutor=nt(this.gtBridge,e,this.logger),this.logger.debug("Formula executor initialized",{wasmEnabled:!!e});}async initializeConvoyComponents(){if(!this.bdBridge)throw new f("BdBridge not initialized",y.NOT_INITIALIZED);this.convoyTracker=it({bdBridge:this.bdBridge,autoUpdateProgress:this.config.convoyTracker?.autoUpdateProgress,progressUpdateInterval:this.config.convoyTracker?.progressUpdateInterval,persistConvoys:this.config.convoyTracker?.persistConvoys,storagePath:this.config.convoyTracker?.storagePath},this.logger),this.convoyObserver=ct({bdBridge:this.bdBridge,tracker:this.convoyTracker,pollInterval:this.config.convoyObserver?.pollInterval,maxPollAttempts:this.config.convoyObserver?.maxPollAttempts,useWasm:this.config.convoyObserver?.useWasm},this.logger),this.logger.debug("Convoy components initialized");}initializeGuppAdapter(){this.guppAdapter=new ht(this.config.gupp),this.logger.debug("GUPP adapter initialized",{enabled:this.guppAdapter.isAvailable()});}createStubAgentDB(){let e=new Map;return {async store(r,t,o,n){let a=o??"default";e.has(a)||e.set(a,new Map),e.get(a).set(r,{key:r,value:t,namespace:a,metadata:n,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),version:1});},async retrieve(r,t){let o=t??"default";return e.get(o)?.get(r)??null},async search(r,t,o){let n=t??"default",a=e.get(n);return a?Array.from(a.values()).slice(0,o??100):[]},async list(r,t,o){let n=r??"default",a=e.get(n);return a?Array.from(a.values()).slice(o??0,(o??0)+(t??100)):[]},async delete(r,t){let o=t??"default";e.get(o)?.delete(r);},async getNamespaceStats(r){let t=e.get(r);if(!t)return {count:0};let o=Array.from(t.values()),n=o.length>0?o.reduce((a,i)=>i.updatedAt&&i.updatedAt>(a??"")?i.updatedAt:a,void 0):void 0;return {count:o.length,lastUpdated:n}}}}convertMcpTool(e){return {name:e.name,description:e.description,category:e.category,version:e.version,inputSchema:this.zodToJsonSchema(e.inputSchema),handler:async(r,t)=>{let o=this.createToolContext(t);return await e.handler(r,o)}}}zodToJsonSchema(e){try{let r=e;if(r._def?.shape){let t=r._def.shape(),o={},n=[];for(let[a,i]of Object.entries(t)){let c=i._def?.typeName??"ZodString",m="string";c.includes("Number")?m="number":c.includes("Boolean")?m="boolean":c.includes("Array")?m="array":c.includes("Object")&&(m="object"),o[a]={type:m},!c.includes("Optional")&&!c.includes("Default")&&n.push(a);}return {type:"object",properties:o,required:n.length>0?n:void 0}}}catch{}return {type:"object",properties:{}}}createToolContext(e){let r=this.config.gastown??Fe;return {get:t=>e.get(t),set:(t,o)=>e.set(t,o),bridges:{gastown:this.createBridgeFacade(),beadsSync:this.createSyncFacade(),formulaWasm:this.createFormulaWasmFacade(),dependencyWasm:this.createDependencyWasmFacade()},config:{townRoot:r.townRoot??"",allowedRigs:[],maxBeadsLimit:100,maskSecrets:true,enableWasm:this.wasmInitialized}}}createBridgeFacade(){let e=this.gtBridge,r=this.bdBridge,t=this.convoyTracker,o=this.wasmLoader;return {async createBead(n){if(!r)throw new f("BdBridge not initialized",y.NOT_INITIALIZED);let a={type:"prompt",content:n.description??n.title,parentId:n.parent,agentId:n.assignee,tags:n.labels},i=await r.createBead(a);return {id:i.id,title:i.content.slice(0,100),description:i.content,status:"open",priority:0,labels:i.tags??[],createdAt:i.timestamp?new Date(i.timestamp):new Date,updatedAt:i.timestamp?new Date(i.timestamp):new Date,parentId:i.parentId,assignee:i.agentId}},async getReady(n,a,i){if(!r)throw new f("BdBridge not initialized",y.NOT_INITIALIZED);return (await r.listBeads({limit:n})).map(c=>({id:c.id,title:c.content.slice(0,100),description:c.content,status:"open",priority:0,labels:c.tags??[],createdAt:c.timestamp?new Date(c.timestamp):new Date,updatedAt:c.timestamp?new Date(c.timestamp):new Date,parentId:c.parentId,assignee:c.agentId}))},async showBead(n){if(!r)throw new f("BdBridge not initialized",y.NOT_INITIALIZED);let a=await r.getBead(n);return {bead:{id:a.id,title:a.content.slice(0,100),description:a.content,status:"open",priority:0,labels:a.tags??[],createdAt:new Date,updatedAt:new Date},dependencies:a.parentId?[a.parentId]:[],dependents:[]}},async manageDependency(n,a,i){if(!r)throw new f("BdBridge not initialized",y.NOT_INITIALIZED);n==="add"?await r.execBd(["update",a,"--parent",i]):await r.execBd(["update",a,"--remove-parent",i]);},async createConvoy(n){if(!t)throw new f("ConvoyTracker not initialized",y.NOT_INITIALIZED);return t.create(n.name,n.issues,n.description)},async getConvoyStatus(n,a){if(!t)throw new f("ConvoyTracker not initialized",y.NOT_INITIALIZED);return n?[await t.getStatus(n)]:t.listConvoys()},async trackConvoy(n,a,i){if(!t)throw new f("ConvoyTracker not initialized",y.NOT_INITIALIZED);a==="add"?await t.addIssues(n,i):await t.removeIssues(n,i);},async listFormulas(n,a){return []},async cookFormula(n,a){if(o?.isInitialized()){let i=typeof n=="string"?o.parseFormula(n):n;return o.cookFormula(i,a)}throw new f("WASM not initialized for formula cooking",y.NOT_INITIALIZED)},async executeFormula(n,a,i,l){throw new f("Use FormulaExecutor.execute() for formula execution",y.NOT_INITIALIZED)},async createFormula(n){throw new f("Formula creation not implemented in bridge layer",y.NOT_INITIALIZED)},async sling(n,a,i,l){if(!e)throw new f("GtBridge not initialized",y.NOT_INITIALIZED);let c=["tx","sling","--bead",n,"--target",a];i&&c.push("--formula",i),l!==void 0&&c.push("--priority",String(l)),await e.execGt(c);},async listAgents(n,a,i){return []},async sendMail(n,a,i){if(!e)throw new f("GtBridge not initialized",y.NOT_INITIALIZED);return (await e.execGt(["tx","mail","--to",n,"--subject",a,"--body",i,"--json"])).data??"unknown"},async readMail(n){if(!e)throw new f("GtBridge not initialized",y.NOT_INITIALIZED);let a=await e.execGt(["tx","mail","read",n,"--json"]);if(a.success&&a.data){let i=e.parseGtOutput(a.data);return {id:i.id,from:i.from,to:i.to??"",subject:i.subject,body:i.body,sentAt:new Date(i.timestamp),read:true}}throw new f(`Failed to read mail: ${n}`,y.NOT_INITIALIZED)},async listMail(n){if(!e)throw new f("GtBridge not initialized",y.NOT_INITIALIZED);let a=["tx","mail","list","--json"];n!==void 0&&a.push("--limit",String(n));let i=await e.execGt(a);return i.success&&i.data?e.parseGtOutput(i.data).map(c=>({id:c.id,from:c.from,to:c.to??"",subject:c.subject,body:c.body??"",sentAt:new Date(c.timestamp),read:false})):[]}}}createSyncFacade(){let e=this.syncBridge,r=this.bdBridge;return {async pullBeads(t,o){return e?{synced:(await e.syncFromAgentDB()).length,conflicts:e.getPendingConflicts().length}:{synced:0,conflicts:0}},async pushTasks(t){if(!e||!r)return {pushed:0,conflicts:0};let o=await r.listBeads({}),n=await e.syncToAgentDB(o);return {pushed:n.synced,conflicts:n.conflicts}}}}createFormulaWasmFacade(){let e=this.wasmLoader;return {isInitialized:()=>e?.isInitialized()??false,async initialize(){e&&await e.initialize();},async parseFormula(r,t){if(!e)throw new f("WASM not initialized",y.NOT_INITIALIZED);return e.parseFormula(r)},async cookFormula(r,t,o){if(!e)throw new f("WASM not initialized",y.NOT_INITIALIZED);let n=typeof r=="string"?e.parseFormula(r):r;return e.cookFormula(n,t)},async cookBatch(r,t,o){if(!e)throw new f("WASM not initialized",y.NOT_INITIALIZED);let n=r.map(i=>e.parseFormula(i.content));return {cooked:e.batchCook(n,t),errors:[]}}}}createDependencyWasmFacade(){let e=this.wasmLoader,r=this.simpleSimilarity.bind(this);return {isInitialized:()=>e?.isInitialized()??false,async initialize(){e&&await e.initialize();},async resolveDependencies(t,o){if(!e)throw new f("WASM not initialized",y.NOT_INITIALIZED);let n=t.map(a=>({id:a.id,title:a.id,description:"",needs:a.dependencies??[]}));if(o==="topo_sort")try{let a=e.resolveStepDependencies(n);return {action:o,sorted:a.map(i=>i.id),hasCycle:!1,cycleNodes:void 0}}catch(a){if(a instanceof f&&a.code===y.DEPENDENCY_CYCLE){let i=a.context?.cycleNodes??[];return {action:o,sorted:[],hasCycle:true,cycleNodes:i}}throw a}else if(o==="cycle_detect"){let a=e.detectCycle(n);return {action:o,hasCycle:a.hasCycle,cycleNodes:a.cycleSteps}}else {let a=t.map(c=>c.id),i=t.flatMap(c=>(c.dependencies??[]).map(m=>({from:m,to:c.id}))),l=await qe(a,i,[]);return {action:o,criticalPath:l.path,totalDuration:l.totalDuration}}},async matchPatterns(t,o,n,a){return o.map((l,c)=>({index:c,candidate:l,similarity:r(t,l)})).filter(l=>l.similarity>=a).sort((l,c)=>c.similarity-l.similarity).slice(0,n)},async optimizeConvoy(t,o,n){if(!e)throw new f("WASM not initialized",y.NOT_INITIALIZED);let a=t.trackedIssues.map(c=>({id:c,title:c,description:"",needs:[]})),l=e.resolveStepDependencies(a).map(c=>c.id);return {convoyId:t.id,strategy:o,executionOrder:l,parallelGroups:[l],estimatedDuration:t.trackedIssues.length*1e3}}}}simpleSimilarity(e,r){let t=new Set(e.toLowerCase().split(/\s+/)),o=new Set(r.toLowerCase().split(/\s+/)),n=new Set([...t].filter(i=>o.has(i))),a=new Set([...t,...o]);return n.size/a.size}createPreTaskHook(){return {name:"gt/pre-task",event:"pre-task",priority:50,description:"Check for related beads before task execution",handler:async(e,r)=>(this.config.gastown?.autoCreateBeads&&this.logger.debug("Pre-task hook: checking for related beads"),r)}}createPostTaskHook(){return {name:"gt/post-task",event:"post-task",priority:50,description:"Update bead status after task completion",handler:async(e,r)=>(this.config.gastown?.autoCreateBeads&&this.logger.debug("Post-task hook: updating bead status"),r)}}createBeadsSyncHook(){return {name:"gt/beads-sync",event:"session-start",priority:100,description:"Sync beads with AgentDB on session start",handler:async(e,r)=>{if(this.config.gastown?.enableBeadsSync&&this.syncBridge){this.logger.info("Beads sync triggered on session start");try{await this.syncBridge.syncBidirectional();}catch(t){this.logger.warn("Beads sync failed",{error:t instanceof Error?t.message:String(t)});}}return r}}}createConvoyProgressHook(){return {name:"gt/convoy-progress",event:"task-complete",priority:60,description:"Update convoy progress when tasks complete",handler:async(e,r)=>{if(this.convoyTracker){let t=this.convoyTracker.listConvoys("active");for(let o of t)try{await this.convoyTracker.getStatus(o.id);}catch{}}return r}}}};function ci(s){return new Qe(s)}var di=Qe;
|
|
export{te as Arena,Se as ArenaManager,no as AspectSchema,Or as BEAD_ID_PATTERN,we as BeadIdValidationSchema,Yr as BeadSchema,Zr as BeadStatusSchema,K as BeadsError,Oe as CLIExecutionError,Nr as CONVOY_HASH_PATTERN,I as ConvoyError,yt as ConvoyIdSchema,Ie as ConvoyObserver,lo as ConvoyProgressSchema,co as ConvoySchema,io as ConvoyStatusSchema,je as ConvoyTracker,Xr as CreateBeadOptionsSchema,rt as CreateConvoyOptionsSchema,Fe as DEFAULT_CONFIG,y as ErrorCodes,Lr as FORMULA_NAME_PATTERN,j as FormulaError,Ue as FormulaExecutor,Be as FormulaNameSchema,ao as FormulaSchema,Qr as FormulaTypeSchema,mn as GasTownAgentRoleSchema,Qe as GasTownBridgePlugin,po as GasTownConfigSchema,f as GasTownError,un as GasTownErrorCodes,Gr as GtArgsSchema,jr as LabelsSchema,J as Lazy,Ne as LazyBridge,ze as LazyModule,be as LazyObserver,me as LazyWasm,to as LegSchema,F as MAX_LENGTHS,k as MAX_OUTPUT_SIZE,Te as MemoryBudgetManager,Y as MemoryMonitor,_ as ObjectPool,_e as PATH_TRAVERSAL_PATTERNS,se as PooledBead,ie as PooledConvoy,ae as PooledFormula,le as PooledMolecule,ne as PooledStep,ft as PrioritySchema,Xe as REDACTED_FIELDS,Ur as RigNameSchema,Ye as SENSITIVE_FIELD_PATTERNS,q as SHELL_METACHARACTERS,mo as SlingOptionsSchema,uo as SlingTargetSchema,eo as StepSchema,pn as SyncDirectionSchema,oo as SynthesisSchema,so as TemplateSchema,zr as UUID_PATTERN,D as ValidationError,ms as ValidatorSafeStringSchema,ro as VarSchema,is as WasmLoader,ko as acquireBead,Do as acquireConvoy,_o as acquireFormula,Fo as acquireMolecule,Ao as acquireStep,Z as arenaManager,N as beadPool,de as clearAllPools,jt as clearPerformanceLog,Ps as containsPathTraversal,xs as containsShellMetacharacters,ee as convoyPool,$t as cookBatch,gt as cookFormula,ct as createConvoyObserver,it as createConvoyTracker,nt as createFormulaExecutor,ci as createGasTownBridgePlugin,qo as createLazyConvoyObserver,Lt as createLazyProperty,qe as criticalPath,di as default,Ht as detectCycles,xe as disposeAllLazySingletons,Rt as disposeDefaultMonitor,Ot as disposeLazySingleton,X as formulaPool,ve as gasTownBridgeTools,ce as getAllPoolStats,Dt as getDefaultMonitor,vo as getErrorMessage,Ho as getLazyObserverStats,Ft as getLazySingleton,Io as getMemoryMonitor,So as getMemoryReport,Et as getMemoryUsage,Ut as getPerformanceLog,fe as getPoolEfficiencySummary,zt as getSystemMemoryStats,ds as getTool,us as getToolsByLayer,It as getTotalMemorySaved,Ke as getWasmVersions,Co as initializeMemorySystem,ho as isBeadsError,fo as isCLIExecutionError,go as isGasTownError,Po as isMemorySystemInitialized,Is as isSafeArgument,ks as isValidBeadId,As as isValidConvoyId,Ms as isValidFormulaName,yo as isValidationError,oe as isWasmAvailable,V as loadFormulaWasm,$ as loadGnnWasm,ue as memoryBudget,R as moleculePool,Bt as onMemoryPressure,De as parseDate,Vt as parseFormula,Le as preWarmAllPools,He as preloadWasmModules,Ce as redactSensitiveFields,Mo as releaseBead,Ro as releaseConvoy,Bo as releaseFormula,Oo as releaseMolecule,Eo as releaseStep,Kt as resetWasmCache,Jr as sanitizeBeadOutput,Fs as sanitizeBeadsListOutput,Rs as sanitizeConvoyOutput,Ds as sanitizeFormulaOutput,Ze as sanitizeMetadata,Vr as sanitizePath,C as sanitizeString,kt as scopedArena,_t as setMemoryLimit,xo as shutdownMemorySystem,Q as stepPool,cs as toolCategories,ls as toolHandlers,qt as topoSort,To as triggerMemoryCleanup,gn as validateBead,gs as validateBeadId,Cs as validateBeadOptions,xt as validateConfig,hn as validateConvoy,fs as validateConvoyId,Ss as validateConvoyOptions,yn as validateCreateBeadOptions,bn as validateCreateConvoyOptions,fn as validateFormula,ys as validateFormulaName,hs as validateGtArgs,Ts as validateSling,vn as validateSlingOptions,Mt as withArena,At as withArenaSync,bo as wrapError};//# sourceMappingURL=index.js.map
|
|
//# sourceMappingURL=index.js.map
|