@gobing-ai/spur 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/config/config.global.yaml +4 -2
- package/config/decisions/gates.yaml +36 -0
- package/config/decisions/history-anatomy.yaml +35 -0
- package/config/decisions/idea-pipeline.yaml +38 -0
- package/config/plugin-scripts.json +15 -0
- package/config/rules/docs/sourced-api-claims.yaml +60 -0
- package/config/rules/recommended-pre-check.yaml +8 -3
- package/config/rules/structure/scratch-evidence-pointer.yaml +35 -0
- package/config/script-placement-baseline.json +2 -2
- package/config/templates/AGENTS.md +1 -1
- package/config/workflows/feature-lifecycle.yaml +9 -2
- package/config/workflows/history-anatomy.yaml +22 -0
- package/config/workflows/idea-pipeline.yaml +75 -0
- package/config/workflows/task-pipeline.yaml +216 -57
- package/config/workflows/wrapup-pipeline.yaml +107 -14
- package/package.json +10 -10
- package/plugins/sp/README.md +12 -3
- package/plugins/sp/agents/super-planner.md +16 -6
- package/plugins/sp/agents/super-reviewer.md +14 -0
- package/plugins/sp/bunfig.toml +8 -0
- package/plugins/sp/commands/dev-brainstorm.md +29 -16
- package/plugins/sp/commands/dev-find-way.md +80 -0
- package/plugins/sp/commands/dev-idea.md +6 -0
- package/plugins/sp/commands/dev-plan.md +6 -0
- package/plugins/sp/commands/dev-review-session.md +4 -1
- package/plugins/sp/commands/dev-run.md +12 -2
- package/plugins/sp/commands/dev-runall.md +32 -15
- package/plugins/sp/hooks/context-owner.ts +56 -0
- package/plugins/sp/hooks/context-post-tool.ts +23 -0
- package/plugins/sp/hooks/context-session-start.ts +49 -27
- package/plugins/sp/hooks/context-session-stop.ts +131 -30
- package/plugins/sp/hooks/pi/guard-extension.ts +21 -8
- package/plugins/sp/lib/idea-handoff.generated.mjs +43 -5
- package/plugins/sp/lib/inline-run-app.ts +28 -0
- package/plugins/sp/lib/inline-run.generated.d.mts +5 -0
- package/plugins/sp/lib/inline-run.generated.mjs +351 -46
- package/plugins/sp/lib/plan-projection.generated.d.mts +47 -0
- package/plugins/sp/lib/plan-projection.generated.mjs +368 -0
- package/plugins/sp/lib/quality-gate.generated.d.mts +35 -1
- package/plugins/sp/lib/quality-gate.generated.mjs +30296 -71
- package/plugins/sp/lib/residual-scan.generated.d.mts +19 -0
- package/plugins/sp/lib/residual-scan.generated.mjs +66 -0
- package/plugins/sp/lib/run-summary-core.ts +561 -0
- package/plugins/sp/lib/transcript.ts +150 -7
- package/plugins/sp/plugin.json +1 -1
- package/plugins/sp/references/roles.md +1 -1
- package/plugins/sp/scripts/batch-plan.mjs +488 -0
- package/plugins/sp/scripts/batch-plan.ts +145 -0
- package/plugins/sp/scripts/batch-preflight.mjs +51 -3
- package/plugins/sp/scripts/batch-preflight.ts +72 -1
- package/plugins/sp/scripts/commit-guard.mjs +216 -0
- package/plugins/sp/scripts/commit-guard.ts +249 -0
- package/plugins/sp/scripts/inline-run-dispatch.mjs +130 -0
- package/plugins/sp/scripts/inline-run-dispatch.ts +135 -0
- package/plugins/sp/scripts/inline-run-setup.mjs +562 -80
- package/plugins/sp/scripts/inline-run-setup.ts +52 -78
- package/plugins/sp/scripts/persist-out-check.mjs +90 -41
- package/plugins/sp/scripts/persist-out-check.ts +112 -57
- package/plugins/sp/scripts/pr-reviewing.mjs +19 -5
- package/plugins/sp/scripts/pr-reviewing.ts +34 -9
- package/plugins/sp/scripts/quality-gate.mjs +30213 -61
- package/plugins/sp/scripts/quality-gate.ts +21 -5
- package/plugins/sp/scripts/residual-scan.mjs +86 -31
- package/plugins/sp/scripts/residual-scan.ts +28 -30
- package/plugins/sp/scripts/run-summary.mjs +432 -14
- package/plugins/sp/scripts/run-summary.ts +41 -177
- package/plugins/sp/scripts/session-timeline.mjs +109 -11
- package/plugins/sp/scripts/session-timeline.ts +57 -19
- package/plugins/sp/scripts/task-diffstat.mjs +32 -29
- package/plugins/sp/scripts/task-diffstat.ts +34 -34
- package/plugins/sp/scripts/wrapup-steps.mjs +150 -2
- package/plugins/sp/scripts/wrapup-steps.ts +203 -1
- package/plugins/sp/skills/brainstorm/SKILL.md +9 -47
- package/plugins/sp/skills/branch-workflow/SKILL.md +1 -0
- package/plugins/sp/skills/branch-workflow/references/worktree-patterns.md +1 -0
- package/plugins/sp/skills/code-implementation/SKILL.md +48 -1
- package/plugins/sp/skills/code-verification/SKILL.md +3 -4
- package/plugins/sp/skills/code-verification/references/secu-review.md +3 -0
- package/plugins/sp/skills/code-verification/references/verdict-schema.md +68 -0
- package/plugins/sp/skills/fleet-join/SKILL.md +1 -1
- package/plugins/sp/skills/indexed-context/SKILL.md +14 -7
- package/plugins/sp/skills/parallel-execution/SKILL.md +2 -2
- package/plugins/sp/skills/parallel-execution/references/dispatch-surface.md +1 -1
- package/plugins/sp/skills/parallel-execution/references/fan-out-patterns.md +2 -2
- package/plugins/sp/skills/pr-reviewing/SKILL.md +7 -3
- package/plugins/sp/skills/session-review/SKILL.md +40 -7
- package/plugins/sp/skills/source-driven-development/SKILL.md +5 -0
- package/plugins/sp/skills/spec-decomposition/references/decomposition.md +5 -3
- package/plugins/sp/skills/spur-cli/SKILL.md +5 -2
- package/plugins/sp/skills/spur-cli/references/agent.md +20 -15
- package/plugins/sp/skills/spur-cli/references/decision.md +16 -8
- package/plugins/sp/skills/spur-cli/references/message.md +7 -7
- package/plugins/sp/skills/spur-cli/references/projects.md +7 -5
- package/plugins/sp/skills/spur-cli/references/tasks/verbs.md +19 -3
- package/plugins/sp/skills/spur-cli/references/tasks.md +10 -7
- package/plugins/sp/skills/spur-cli/references/workflows/authoring-workflows.md +7 -0
- package/plugins/sp/skills/spur-cli/references/workflows.md +7 -2
- package/plugins/sp/skills/spur-composer/SKILL.md +1 -1
- package/plugins/sp/skills/spur-dev/SKILL.md +20 -14
- package/plugins/sp/skills/spur-dev/references/ac-style-guide.md +33 -3
- package/plugins/sp/skills/spur-dev/references/cross-cutting.md +49 -14
- package/plugins/sp/skills/spur-dev/references/dev-operations.md +37 -17
- package/plugins/sp/skills/spur-dev/references/execution-batch-continuation.md +68 -0
- package/plugins/sp/skills/spur-dev/references/execution-batch-report.md +199 -0
- package/plugins/sp/skills/spur-dev/references/execution-batch.md +156 -1024
- package/plugins/sp/skills/spur-dev/references/execution-parallel-isolation.md +133 -0
- package/plugins/sp/skills/spur-dev/references/execution-workflow.md +6 -0
- package/plugins/sp/skills/spur-dev/references/execution-worktree-landing.md +471 -0
- package/plugins/sp/skills/spur-dev/references/execution-worktree-setup.md +379 -0
- package/plugins/sp/skills/spur-dev/references/flag-glossary.md +44 -12
- package/plugins/sp/skills/spur-dev/references/glossary.md +2 -2
- package/plugins/sp/skills/spur-dev/references/inline-pipeline-driver.md +340 -165
- package/plugins/sp/skills/spur-dev/references/structured-trace-emission.md +178 -0
- package/plugins/sp/skills/wayfinder/SKILL.md +10 -14
- package/schemas/state-machine-workflow.schema.json +23 -0
- package/spur.js +42402 -26889
- package/web/_astro/{BoardApp.VeoxxLBy.js → BoardApp.B3GQZvj8.js} +1 -1
- package/web/_astro/BoardApp.BT7L2kSb.js +324 -0
- package/web/_astro/TaskDetail.Cxov1_N_.js +1 -0
- package/web/_astro/{arc.f4e0OYLg.js → arc.vaT7tPOB.js} +1 -1
- package/web/_astro/{architectureDiagram-3BPJPVTR.SSIvxi-Z.js → architectureDiagram-3BPJPVTR.DRMmTjkN.js} +1 -1
- package/web/_astro/{blockDiagram-GPEHLZMM.DSXIHOFf.js → blockDiagram-GPEHLZMM.cla0LO_q.js} +1 -1
- package/web/_astro/{c4Diagram-AAUBKEIU.DG9Ubu85.js → c4Diagram-AAUBKEIU.D4YAIBKn.js} +1 -1
- package/web/_astro/channel.D4nG9YLf.js +1 -0
- package/web/_astro/{chunk-2J33WTMH.C7QU88Qh.js → chunk-2J33WTMH.BrSJbMRZ.js} +1 -1
- package/web/_astro/{chunk-4BX2VUAB.26Z94xBj.js → chunk-4BX2VUAB.CuLMgKF5.js} +1 -1
- package/web/_astro/{chunk-55IACEB6.DYRiBkqw.js → chunk-55IACEB6.zkvgu54F.js} +1 -1
- package/web/_astro/{chunk-727SXJPM.D5Vfv5pe.js → chunk-727SXJPM.DxWkACh8.js} +1 -1
- package/web/_astro/{chunk-AQP2D5EJ.DXHV47bN.js → chunk-AQP2D5EJ.42XrmIlH.js} +1 -1
- package/web/_astro/{chunk-FMBD7UC4.D1suAfOs.js → chunk-FMBD7UC4.Bao2wMK9.js} +1 -1
- package/web/_astro/{chunk-ND2GUHAM.D6BmdHEY.js → chunk-ND2GUHAM.BhydojD1.js} +1 -1
- package/web/_astro/{chunk-QZHKN3VN.rnPU-Ak-.js → chunk-QZHKN3VN.CmZ82g-H.js} +1 -1
- package/web/_astro/{classDiagram-4FO5ZUOK.CvEfXIo1.js → classDiagram-4FO5ZUOK.Blr83Gt_.js} +1 -1
- package/web/_astro/{classDiagram-v2-Q7XG4LA2.CvEfXIo1.js → classDiagram-v2-Q7XG4LA2.Blr83Gt_.js} +1 -1
- package/web/_astro/{cose-bilkent-S5V4N54A.DkMisLSm.js → cose-bilkent-S5V4N54A.qmfv0SPn.js} +1 -1
- package/web/_astro/{cynefin-OW5HDTMX.C77Q-pF6.js → cynefin-OW5HDTMX.BtELhXPR.js} +1 -1
- package/web/_astro/{dagre-BM42HDAG.YaV8ce27.js → dagre-BM42HDAG.AWmaAvXo.js} +1 -1
- package/web/_astro/{diagram-2AECGRRQ.CUyGEKge.js → diagram-2AECGRRQ.DdH34KDi.js} +1 -1
- package/web/_astro/{diagram-5GNKFQAL.CRgd8dgj.js → diagram-5GNKFQAL.BmNPix1k.js} +1 -1
- package/web/_astro/{diagram-KO2AKTUF.Bmzys9hq.js → diagram-KO2AKTUF.BNQd_Ppo.js} +1 -1
- package/web/_astro/{diagram-LMA3HP47.BvmJY4Lw.js → diagram-LMA3HP47.BAPgDi0e.js} +1 -1
- package/web/_astro/{diagram-OG6HWLK6.0hEhD30d.js → diagram-OG6HWLK6.DZ4zyLdC.js} +1 -1
- package/web/_astro/{erDiagram-TEJ5UH35.Bjt8lrnm.js → erDiagram-TEJ5UH35.Q1TySMmw.js} +1 -1
- package/web/_astro/{flowDiagram-I6XJVG4X.CJZTjRDV.js → flowDiagram-I6XJVG4X.BXhFBicG.js} +1 -1
- package/web/_astro/{ganttDiagram-6RSMTGT7._VqoVafc.js → ganttDiagram-6RSMTGT7.vHSgcuo2.js} +1 -1
- package/web/_astro/{gitGraphDiagram-PVQCEYII.CEDb7tVo.js → gitGraphDiagram-PVQCEYII.Bi1f73C7.js} +1 -1
- package/web/_astro/index.BhSwN8yY.css +1 -0
- package/web/_astro/{infoDiagram-5YYISTIA.CgwifPpK.js → infoDiagram-5YYISTIA.DPvXZEWm.js} +1 -1
- package/web/_astro/{ishikawaDiagram-YF4QCWOH.B99wx2J1.js → ishikawaDiagram-YF4QCWOH.Cz829fsV.js} +1 -1
- package/web/_astro/{journeyDiagram-JHISSGLW.2hRwJbEo.js → journeyDiagram-JHISSGLW.enRnB9Me.js} +1 -1
- package/web/_astro/{kanban-definition-UN3LZRKU.BahJkKNC.js → kanban-definition-UN3LZRKU.DnTNk6d2.js} +1 -1
- package/web/_astro/{linear.DguUUe6V.js → linear.BzGnBwNL.js} +1 -1
- package/web/_astro/{mermaid.core.CvgfmqVr.js → mermaid.core.CSbTpIVz.js} +4 -4
- package/web/_astro/{mindmap-definition-RKZ34NQL.B3qEA3x9.js → mindmap-definition-RKZ34NQL.DGJDy8zT.js} +1 -1
- package/web/_astro/{pieDiagram-4H26LBE5.FlWA-_ru.js → pieDiagram-4H26LBE5.HSPdi5_8.js} +1 -1
- package/web/_astro/{quadrantDiagram-W4KKPZXB.9bVn35X7.js → quadrantDiagram-W4KKPZXB.6Gv8mz2Y.js} +1 -1
- package/web/_astro/{requirementDiagram-4Y6WPE33.ChykIhct.js → requirementDiagram-4Y6WPE33.CnBCtFwa.js} +1 -1
- package/web/_astro/{sankeyDiagram-5OEKKPKP.Z2Y3hkYb.js → sankeyDiagram-5OEKKPKP.5M8VWAu8.js} +1 -1
- package/web/_astro/{sequenceDiagram-3UESZ5HK.J7JsHWDt.js → sequenceDiagram-3UESZ5HK.DN41XN-U.js} +1 -1
- package/web/_astro/{stateDiagram-AJRCARHV.DAPbiCSS.js → stateDiagram-AJRCARHV.ErOO3W8j.js} +1 -1
- package/web/_astro/{stateDiagram-v2-BHNVJYJU.D2jvSi0q.js → stateDiagram-v2-BHNVJYJU.B_ZHICM-.js} +1 -1
- package/web/_astro/{timeline-definition-PNZ67QCA.psW2ci29.js → timeline-definition-PNZ67QCA.CWdosr07.js} +1 -1
- package/web/_astro/{vennDiagram-CIIHVFJN.DlILYVmg.js → vennDiagram-CIIHVFJN.BHzYjNV5.js} +1 -1
- package/web/_astro/{wardleyDiagram-YWT4CUSO.xNWwLJnn.js → wardleyDiagram-YWT4CUSO.h8x4IwPX.js} +1 -1
- package/web/_astro/{xychartDiagram-2RQKCTM6.EU_BuH7V.js → xychartDiagram-2RQKCTM6.RTapW2X8.js} +1 -1
- package/web/index.html +2 -2
- package/plugins/sp/commands/dev-parallel.md +0 -31
- package/web/_astro/BoardApp.Bzr4OXrW.js +0 -324
- package/web/_astro/TaskDetail.LAyR_Pvn.js +0 -1
- package/web/_astro/channel.CUFdtWhm.js +0 -1
- package/web/_astro/index.Dg_3bOaJ.css +0 -1
|
@@ -246,7 +246,7 @@ Instead, \`yield\` should either be called with a value, or not be called at all
|
|
|
246
246
|
if (condition) { yield value; }`)};var init_validate=__esm(()=>{init_uint_array()});import{Buffer as Buffer3}from"node:buffer";import{StringDecoder as StringDecoder2}from"node:string_decoder";var getEncodingTransformGenerator=(binary,encoding,skipped)=>{if(skipped)return;if(binary)return{transform:encodingUint8ArrayGenerator.bind(void 0,new TextEncoder)};let stringDecoder=new StringDecoder2(encoding);return{transform:encodingStringGenerator.bind(void 0,stringDecoder),final:encodingStringFinal.bind(void 0,stringDecoder)}},encodingUint8ArrayGenerator=function*(textEncoder3,chunk){if(Buffer3.isBuffer(chunk))yield bufferToUint8Array(chunk);else if(typeof chunk==="string")yield textEncoder3.encode(chunk);else yield chunk},encodingStringGenerator=function*(stringDecoder,chunk){yield isUint8Array(chunk)?stringDecoder.write(chunk):chunk},encodingStringFinal=function*(stringDecoder){let lastChunk=stringDecoder.end();if(lastChunk!=="")yield lastChunk};var init_encoding_transform=__esm(()=>{init_uint_array()});import{callbackify}from"node:util";var pushChunks,transformChunk=async function*(chunk,generators,index){if(index===generators.length){yield chunk;return}let{transform:transform2=identityGenerator}=generators[index];for await(let transformedChunk of transform2(chunk))yield*transformChunk(transformedChunk,generators,index+1)},finalChunks=async function*(generators){for(let[index,{final}]of Object.entries(generators))yield*generatorFinalChunks(final,Number(index),generators)},generatorFinalChunks=async function*(final,index,generators){if(final===void 0)return;for await(let finalChunk of final())yield*transformChunk(finalChunk,generators,index+1)},destroyTransform,identityGenerator=function*(chunk){yield chunk};var init_run_async=__esm(()=>{pushChunks=callbackify(async(getChunks,state,getChunksArguments,transformStream)=>{state.currentIterable=getChunks(...getChunksArguments);try{for await(let chunk of state.currentIterable)transformStream.push(chunk)}finally{delete state.currentIterable}}),destroyTransform=callbackify(async({currentIterable},error51)=>{if(currentIterable!==void 0){await(error51?currentIterable.throw(error51):currentIterable.return());return}if(error51)throw error51})});var pushChunksSync=(getChunksSync,getChunksArguments,transformStream,done)=>{try{for(let chunk of getChunksSync(...getChunksArguments))transformStream.push(chunk);done()}catch(error51){done(error51)}},runTransformSync=(generators,chunks)=>[...chunks.flatMap((chunk)=>[...transformChunkSync(chunk,generators,0)]),...finalChunksSync(generators)],transformChunkSync=function*(chunk,generators,index){if(index===generators.length){yield chunk;return}let{transform:transform2=identityGenerator2}=generators[index];for(let transformedChunk of transform2(chunk))yield*transformChunkSync(transformedChunk,generators,index+1)},finalChunksSync=function*(generators){for(let[index,{final}]of Object.entries(generators))yield*generatorFinalChunksSync(final,Number(index),generators)},generatorFinalChunksSync=function*(final,index,generators){if(final===void 0)return;for(let finalChunk of final())yield*transformChunkSync(finalChunk,generators,index+1)},identityGenerator2=function*(chunk){yield chunk};import{Transform,getDefaultHighWaterMark}from"node:stream";var generatorToStream=({value,value:{transform:transform2,final,writableObjectMode,readableObjectMode},optionName},{encoding})=>{let state={},generators=addInternalGenerators(value,encoding,optionName),transformAsync=isAsyncGenerator(transform2),finalAsync=isAsyncGenerator(final),transformMethod=transformAsync?pushChunks.bind(void 0,transformChunk,state):pushChunksSync.bind(void 0,transformChunkSync),finalMethod=transformAsync||finalAsync?pushChunks.bind(void 0,finalChunks,state):pushChunksSync.bind(void 0,finalChunksSync),destroyMethod=transformAsync||finalAsync?destroyTransform.bind(void 0,state):void 0;return{stream:new Transform({writableObjectMode,writableHighWaterMark:getDefaultHighWaterMark(writableObjectMode),readableObjectMode,readableHighWaterMark:getDefaultHighWaterMark(readableObjectMode),transform(chunk,encoding2,done){transformMethod([chunk,generators,0],this,done)},flush(done){finalMethod([generators],this,done)},destroy:destroyMethod})}},runGeneratorsSync=(chunks,stdioItems,encoding,isInput)=>{let generators=stdioItems.filter(({type})=>type==="generator"),reversedGenerators=isInput?generators.reverse():generators;for(let{value,optionName}of reversedGenerators){let generators2=addInternalGenerators(value,encoding,optionName);chunks=runTransformSync(generators2,chunks)}return chunks},addInternalGenerators=({transform:transform2,final,binary,writableObjectMode,readableObjectMode,preserveNewlines},encoding,optionName)=>{let state={};return[{transform:getValidateTransformInput(writableObjectMode,optionName)},getEncodingTransformGenerator(binary,encoding,writableObjectMode),getSplitLinesGenerator(binary,preserveNewlines,writableObjectMode,state),{transform:transform2,final},{transform:getValidateTransformReturn(readableObjectMode,optionName)},getAppendNewlineGenerator({binary,preserveNewlines,readableObjectMode,state})].filter(Boolean)};var init_generator=__esm(()=>{init_type();init_split();init_validate();init_encoding_transform();init_run_async()});var addInputOptionsSync=(fileDescriptors,options)=>{for(let fdNumber of getInputFdNumbers(fileDescriptors))addInputOptionSync(fileDescriptors,fdNumber,options)},getInputFdNumbers=(fileDescriptors)=>new Set(Object.entries(fileDescriptors).filter(([,{direction}])=>direction==="input").map(([fdNumber])=>Number(fdNumber))),addInputOptionSync=(fileDescriptors,fdNumber,options)=>{let{stdioItems}=fileDescriptors[fdNumber],allStdioItems=stdioItems.filter(({contents})=>contents!==void 0);if(allStdioItems.length===0)return;if(fdNumber!==0){let[{type,optionName}]=allStdioItems;throw TypeError(`Only the \`stdin\` option, not \`${optionName}\`, can be ${TYPE_TO_MESSAGE[type]} with synchronous methods.`)}let transformedContents=allStdioItems.map(({contents})=>contents).map((contents)=>applySingleInputGeneratorsSync(contents,stdioItems));options.input=joinToUint8Array(transformedContents)},applySingleInputGeneratorsSync=(contents,stdioItems)=>{let newContents=runGeneratorsSync(contents,stdioItems,"utf8",!0);return validateSerializable(newContents),joinToUint8Array(newContents)},validateSerializable=(newContents)=>{let invalidItem=newContents.find((item)=>typeof item!=="string"&&!isUint8Array(item));if(invalidItem!==void 0)throw TypeError(`The \`stdin\` option is invalid: when passing objects as input, a transform must be used to serialize them to strings or Uint8Arrays: ${invalidItem}.`)};var init_input_sync=__esm(()=>{init_generator();init_uint_array();init_type()});var shouldLogOutput=({stdioItems,encoding,verboseInfo,fdNumber})=>fdNumber!=="all"&&isFullVerbose(verboseInfo,fdNumber)&&!BINARY_ENCODINGS.has(encoding)&&fdUsesVerbose(fdNumber)&&(stdioItems.some(({type,value})=>type==="native"&&PIPED_STDIO_VALUES.has(value))||stdioItems.every(({type})=>TRANSFORM_TYPES.has(type))),fdUsesVerbose=(fdNumber)=>fdNumber===1||fdNumber===2,PIPED_STDIO_VALUES,logLines=async(linesIterable,stream,fdNumber,verboseInfo)=>{for await(let line of linesIterable)if(!isPipingStream(stream))logLine(line,fdNumber,verboseInfo)},logLinesSync=(linesArray,fdNumber,verboseInfo)=>{for(let line of linesArray)logLine(line,fdNumber,verboseInfo)},isPipingStream=(stream)=>stream._readableState.pipes.length>0,logLine=(line,fdNumber,verboseInfo)=>{let verboseMessage=serializeVerboseMessage(line);verboseLog({type:"output",verboseMessage,fdNumber,verboseInfo})};var init_output=__esm(()=>{init_encoding_option();init_type();init_log();init_values();PIPED_STDIO_VALUES=new Set(["pipe","overlapped"])});import{writeFileSync,appendFileSync}from"node:fs";var transformOutputSync=({fileDescriptors,syncResult:{output:output2},options,isMaxBuffer,verboseInfo})=>{if(output2===null)return{output:Array.from({length:3})};let state={},outputFiles=new Set([]);return{output:output2.map((result,fdNumber)=>transformOutputResultSync({result,fileDescriptors,fdNumber,state,outputFiles,isMaxBuffer,verboseInfo},options)),...state}},transformOutputResultSync=({result,fileDescriptors,fdNumber,state,outputFiles,isMaxBuffer,verboseInfo},{buffer,encoding,lines,stripFinalNewline:stripFinalNewline2,maxBuffer})=>{if(result===null)return;let truncatedResult=truncateMaxBufferSync(result,isMaxBuffer,maxBuffer),uint8ArrayResult=bufferToUint8Array(truncatedResult),{stdioItems,objectMode}=fileDescriptors[fdNumber],chunks=runOutputGeneratorsSync([uint8ArrayResult],stdioItems,encoding,state),{serializedResult,finalResult=serializedResult}=serializeChunks({chunks,objectMode,encoding,lines,stripFinalNewline:stripFinalNewline2,fdNumber});logOutputSync({serializedResult,fdNumber,state,verboseInfo,encoding,stdioItems,objectMode});let returnedResult=buffer[fdNumber]?finalResult:void 0;try{if(state.error===void 0)writeToFiles(serializedResult,stdioItems,outputFiles);return returnedResult}catch(error51){return state.error=error51,returnedResult}},runOutputGeneratorsSync=(chunks,stdioItems,encoding,state)=>{try{return runGeneratorsSync(chunks,stdioItems,encoding,!1)}catch(error51){return state.error=error51,chunks}},serializeChunks=({chunks,objectMode,encoding,lines,stripFinalNewline:stripFinalNewline2,fdNumber})=>{if(objectMode)return{serializedResult:chunks};if(encoding==="buffer")return{serializedResult:joinToUint8Array(chunks)};let serializedResult=joinToString(chunks,encoding);if(lines[fdNumber])return{serializedResult,finalResult:splitLinesSync(serializedResult,!stripFinalNewline2[fdNumber],objectMode)};return{serializedResult}},logOutputSync=({serializedResult,fdNumber,state,verboseInfo,encoding,stdioItems,objectMode})=>{if(!shouldLogOutput({stdioItems,encoding,verboseInfo,fdNumber}))return;let linesArray=splitLinesSync(serializedResult,!1,objectMode);try{logLinesSync(linesArray,fdNumber,verboseInfo)}catch(error51){state.error??=error51}},writeToFiles=(serializedResult,stdioItems,outputFiles)=>{for(let{path:path6,append}of stdioItems.filter(({type})=>FILE_TYPES.has(type))){let pathString=typeof path6==="string"?path6:path6.toString();if(append||outputFiles.has(pathString))appendFileSync(path6,serializedResult);else outputFiles.add(pathString),writeFileSync(path6,serializedResult)}};var init_output_sync=__esm(()=>{init_output();init_generator();init_split();init_uint_array();init_type();init_max_buffer()});var getAllSync=([,stdout,stderr],options)=>{if(!options.all)return;if(stdout===void 0)return stderr;if(stderr===void 0)return stdout;if(Array.isArray(stdout))return Array.isArray(stderr)?[...stdout,...stderr]:[...stdout,stripNewline(stderr,options,"all")];if(Array.isArray(stderr))return[stripNewline(stdout,options,"all"),...stderr];if(isUint8Array(stdout)&&isUint8Array(stderr))return concatUint8Arrays([stdout,stderr]);return`${stdout}${stderr}`};var init_all_sync=__esm(()=>{init_uint_array();init_strip_newline()});import{once as once4}from"node:events";var waitForExit=async(subprocess,context)=>{let[exitCode,signal]=await waitForExitOrError(subprocess);return context.isForcefullyTerminated??=!1,[exitCode,signal]},waitForExitOrError=async(subprocess)=>{let[spawnPayload,exitPayload]=await Promise.allSettled([once4(subprocess,"spawn"),once4(subprocess,"exit")]);if(spawnPayload.status==="rejected")return[];return exitPayload.status==="rejected"?waitForSubprocessExit(subprocess):exitPayload.value},waitForSubprocessExit=async(subprocess)=>{try{return await once4(subprocess,"exit")}catch{return waitForSubprocessExit(subprocess)}},waitForSuccessfulExit=async(exitPromise)=>{let[exitCode,signal]=await exitPromise;if(!isSubprocessErrorExit(exitCode,signal)&&isFailedExit(exitCode,signal))throw new DiscardedError;return[exitCode,signal]},isSubprocessErrorExit=(exitCode,signal)=>exitCode===void 0&&signal===void 0,isFailedExit=(exitCode,signal)=>exitCode!==0||signal!==null;var init_exit_async=__esm(()=>{init_final_error()});var getExitResultSync=({error:error51,status:exitCode,signal,output:output2},{maxBuffer})=>{let resultError=getResultError(error51,exitCode,signal),timedOut=resultError?.code==="ETIMEDOUT",isMaxBuffer=isMaxBufferSync(resultError,output2,maxBuffer);return{resultError,exitCode,signal,timedOut,isMaxBuffer}},getResultError=(error51,exitCode,signal)=>{if(error51!==void 0)return error51;return isFailedExit(exitCode,signal)?new DiscardedError:void 0};var init_exit_sync=__esm(()=>{init_final_error();init_max_buffer();init_exit_async()});import{spawnSync}from"node:child_process";var execaCoreSync=(rawFile,rawArguments,rawOptions)=>{let{file:file2,commandArguments,command,escapedCommand,startTime,verboseInfo,options,fileDescriptors}=handleSyncArguments(rawFile,rawArguments,rawOptions),result=spawnSubprocessSync({file:file2,commandArguments,options,command,escapedCommand,verboseInfo,fileDescriptors,startTime});return handleResult(result,verboseInfo,options)},handleSyncArguments=(rawFile,rawArguments,rawOptions)=>{let{command,escapedCommand,startTime,verboseInfo}=handleCommand(rawFile,rawArguments,rawOptions),syncOptions=normalizeSyncOptions(rawOptions),{file:file2,commandArguments,options}=normalizeOptions(rawFile,rawArguments,syncOptions);validateSyncOptions(options);let fileDescriptors=handleStdioSync(options,verboseInfo);return{file:file2,commandArguments,command,escapedCommand,startTime,verboseInfo,options,fileDescriptors}},normalizeSyncOptions=(options)=>options.node&&!options.ipc?{...options,ipc:!1}:options,validateSyncOptions=({ipc,ipcInput,detached,cancelSignal})=>{if(ipcInput)throwInvalidSyncOption("ipcInput");if(ipc)throwInvalidSyncOption("ipc: true");if(detached)throwInvalidSyncOption("detached: true");if(cancelSignal)throwInvalidSyncOption("cancelSignal")},throwInvalidSyncOption=(value)=>{throw TypeError(`The "${value}" option cannot be used with synchronous methods.`)},spawnSubprocessSync=({file:file2,commandArguments,options,command,escapedCommand,verboseInfo,fileDescriptors,startTime})=>{let syncResult=runSubprocessSync({file:file2,commandArguments,options,command,escapedCommand,fileDescriptors,startTime});if(syncResult.failed)return syncResult;let{resultError,exitCode,signal,timedOut,isMaxBuffer}=getExitResultSync(syncResult,options),{output:output2,error:error51=resultError}=transformOutputSync({fileDescriptors,syncResult,options,isMaxBuffer,verboseInfo}),stdio=output2.map((stdioOutput,fdNumber)=>stripNewline(stdioOutput,options,fdNumber)),all=stripNewline(getAllSync(output2,options),options,"all");return getSyncResult({error:error51,exitCode,signal,timedOut,isMaxBuffer,stdio,all,options,command,escapedCommand,startTime})},runSubprocessSync=({file:file2,commandArguments,options,command,escapedCommand,fileDescriptors,startTime})=>{try{addInputOptionsSync(fileDescriptors,options);let normalizedOptions=normalizeSpawnSyncOptions(options);return spawnSync(...concatenateShell(file2,commandArguments,normalizedOptions))}catch(error51){return makeEarlyError({error:error51,command,escapedCommand,fileDescriptors,options,startTime,isSync:!0})}},normalizeSpawnSyncOptions=({encoding,maxBuffer,...options})=>({...options,encoding:"buffer",maxBuffer:getMaxBufferSync(maxBuffer)}),getSyncResult=({error:error51,exitCode,signal,timedOut,isMaxBuffer,stdio,all,options,command,escapedCommand,startTime})=>error51===void 0?makeSuccessResult({command,escapedCommand,stdio,all,ipcOutput:[],options,startTime}):makeError({error:error51,command,escapedCommand,timedOut,isCanceled:!1,isGracefullyCanceled:!1,isMaxBuffer,isForcefullyTerminated:!1,exitCode,signal,stdio,all,ipcOutput:[],options,startTime,isSync:!0});var init_main_sync=__esm(()=>{init_command();init_options();init_result();init_reject();init_handle_sync();init_strip_newline();init_input_sync();init_output_sync();init_max_buffer();init_all_sync();init_exit_sync()});import{once as once5,on as on2}from"node:events";var getOneMessage=({anyProcess,channel,isSubprocess,ipc},{reference=!0,filter}={})=>{return validateIpcMethod({methodName:"getOneMessage",isSubprocess,ipc,isConnected:isConnected(anyProcess)}),getOneMessageAsync({anyProcess,channel,isSubprocess,filter,reference})},getOneMessageAsync=async({anyProcess,channel,isSubprocess,filter,reference})=>{addReference(channel,reference);let ipcEmitter=getIpcEmitter(anyProcess,channel,isSubprocess),controller=new AbortController;try{return await Promise.race([getMessage(ipcEmitter,filter,controller),throwOnDisconnect2(ipcEmitter,isSubprocess,controller),throwOnStrictError(ipcEmitter,isSubprocess,controller)])}catch(error51){throw disconnect(anyProcess),error51}finally{controller.abort(),removeReference(channel,reference)}},getMessage=async(ipcEmitter,filter,{signal})=>{if(filter===void 0){let[message]=await once5(ipcEmitter,"message",{signal});return message}for await(let[message]of on2(ipcEmitter,"message",{signal}))if(filter(message))return message},throwOnDisconnect2=async(ipcEmitter,isSubprocess,{signal})=>{await once5(ipcEmitter,"disconnect",{signal}),throwOnEarlyDisconnect(isSubprocess)},throwOnStrictError=async(ipcEmitter,isSubprocess,{signal})=>{let[error51]=await once5(ipcEmitter,"strict:error",{signal});throw getStrictResponseError(error51,isSubprocess)};var init_get_one=__esm(()=>{init_validation();init_forward()});import{once as once6,on as on3}from"node:events";var getEachMessage=({anyProcess,channel,isSubprocess,ipc},{reference=!0}={})=>loopOnMessages({anyProcess,channel,isSubprocess,ipc,shouldAwait:!isSubprocess,reference}),loopOnMessages=({anyProcess,channel,isSubprocess,ipc,shouldAwait,reference})=>{validateIpcMethod({methodName:"getEachMessage",isSubprocess,ipc,isConnected:isConnected(anyProcess)}),addReference(channel,reference);let ipcEmitter=getIpcEmitter(anyProcess,channel,isSubprocess),controller=new AbortController,state={};return stopOnDisconnect(anyProcess,ipcEmitter,controller),abortOnStrictError({ipcEmitter,isSubprocess,controller,state}),iterateOnMessages({anyProcess,channel,ipcEmitter,isSubprocess,shouldAwait,controller,state,reference})},stopOnDisconnect=async(anyProcess,ipcEmitter,controller)=>{try{await once6(ipcEmitter,"disconnect",{signal:controller.signal}),controller.abort()}catch{}},abortOnStrictError=async({ipcEmitter,isSubprocess,controller,state})=>{try{let[error51]=await once6(ipcEmitter,"strict:error",{signal:controller.signal});state.error=getStrictResponseError(error51,isSubprocess),controller.abort()}catch{}},iterateOnMessages=async function*({anyProcess,channel,ipcEmitter,isSubprocess,shouldAwait,controller,state,reference}){try{for await(let[message]of on3(ipcEmitter,"message",{signal:controller.signal}))throwIfStrictError(state),yield message}catch{throwIfStrictError(state)}finally{if(controller.abort(),removeReference(channel,reference),!isSubprocess)disconnect(anyProcess);if(shouldAwait)await anyProcess}},throwIfStrictError=({error:error51})=>{if(error51)throw error51};var init_get_each=__esm(()=>{init_validation();init_forward()});import process9 from"node:process";var addIpcMethods=(subprocess,{ipc})=>{Object.assign(subprocess,getIpcMethods(subprocess,!1,ipc))},getIpcExport=()=>{let anyProcess=process9,isSubprocess=!0,ipc=process9.channel!==void 0;return{...getIpcMethods(anyProcess,!0,ipc),getCancelSignal:getCancelSignal.bind(void 0,{anyProcess,channel:anyProcess.channel,isSubprocess:!0,ipc})}},getIpcMethods=(anyProcess,isSubprocess,ipc)=>({sendMessage:sendMessage.bind(void 0,{anyProcess,channel:anyProcess.channel,isSubprocess,ipc}),getOneMessage:getOneMessage.bind(void 0,{anyProcess,channel:anyProcess.channel,isSubprocess,ipc}),getEachMessage:getEachMessage.bind(void 0,{anyProcess,channel:anyProcess.channel,isSubprocess,ipc})});var init_methods=__esm(()=>{init_send();init_get_one();init_get_each();init_graceful()});import{ChildProcess as ChildProcess2}from"node:child_process";import{PassThrough,Readable,Writable,Duplex}from"node:stream";var handleEarlyError=({error:error51,command,escapedCommand,fileDescriptors,options,startTime,verboseInfo})=>{cleanupCustomStreams(fileDescriptors);let subprocess=new ChildProcess2;createDummyStreams(subprocess,fileDescriptors),Object.assign(subprocess,{readable,writable,duplex});let earlyError=makeEarlyError({error:error51,command,escapedCommand,fileDescriptors,options,startTime,isSync:!1}),promise2=handleDummyPromise(earlyError,verboseInfo,options);return{subprocess,promise:promise2}},createDummyStreams=(subprocess,fileDescriptors)=>{let stdin=createDummyStream(),stdout=createDummyStream(),stderr=createDummyStream(),extraStdio=Array.from({length:fileDescriptors.length-3},createDummyStream),all=createDummyStream(),stdio=[stdin,stdout,stderr,...extraStdio];Object.assign(subprocess,{stdin,stdout,stderr,all,stdio})},createDummyStream=()=>{let stream=new PassThrough;return stream.end(),stream},readable=()=>new Readable({read(){}}),writable=()=>new Writable({write(){}}),duplex=()=>new Duplex({read(){},write(){}}),handleDummyPromise=async(error51,verboseInfo,options)=>handleResult(error51,verboseInfo,options);var init_early_error=__esm(()=>{init_handle();init_result();init_reject()});import{createReadStream,createWriteStream}from"node:fs";import{Buffer as Buffer4}from"node:buffer";import{Readable as Readable2,Writable as Writable2,Duplex as Duplex2}from"node:stream";var handleStdioAsync=(options,verboseInfo)=>handleStdio(addPropertiesAsync,options,verboseInfo,!1),forbiddenIfAsync=({type,optionName})=>{throw TypeError(`The \`${optionName}\` option cannot be ${TYPE_TO_MESSAGE[type]}.`)},addProperties2,addPropertiesAsync;var init_handle_async=__esm(()=>{init_generator();init_handle();init_type();addProperties2={fileNumber:forbiddenIfAsync,generator:generatorToStream,asyncGenerator:generatorToStream,nodeStream:({value})=>({stream:value}),webTransform({value:{transform:transform2,writableObjectMode,readableObjectMode}}){let objectMode=writableObjectMode||readableObjectMode;return{stream:Duplex2.fromWeb(transform2,{objectMode})}},duplex:({value:{transform:transform2}})=>({stream:transform2}),native(){}},addPropertiesAsync={input:{...addProperties2,fileUrl:({value})=>({stream:createReadStream(value)}),filePath:({value:{file:file2}})=>({stream:createReadStream(file2)}),webStream:({value})=>({stream:Readable2.fromWeb(value)}),iterable:({value})=>({stream:Readable2.from(value)}),asyncIterable:({value})=>({stream:Readable2.from(value)}),string:({value})=>({stream:Readable2.from(value)}),uint8Array:({value})=>({stream:Readable2.from(Buffer4.from(value))})},output:{...addProperties2,fileUrl:({value})=>({stream:createWriteStream(value)}),filePath:({value:{file:file2,append}})=>({stream:createWriteStream(file2,append?{flags:"a"}:{})}),webStream:({value})=>({stream:Writable2.fromWeb(value)}),iterable:forbiddenIfAsync,asyncIterable:forbiddenIfAsync,string:forbiddenIfAsync,uint8Array:forbiddenIfAsync}}});import{on as on4,once as once7}from"node:events";import{PassThrough as PassThroughStream,getDefaultHighWaterMark as getDefaultHighWaterMark2}from"node:stream";import{finished as finished2}from"node:stream/promises";function mergeStreams(streams){if(!Array.isArray(streams))throw TypeError(`Expected an array, got \`${typeof streams}\`.`);for(let stream of streams)validateStream(stream);let objectMode=streams.some(({readableObjectMode})=>readableObjectMode),highWaterMark=getHighWaterMark(streams,objectMode),passThroughStream=new MergedStream({objectMode,writableHighWaterMark:highWaterMark,readableHighWaterMark:highWaterMark});for(let stream of streams)passThroughStream.add(stream);return passThroughStream}var getHighWaterMark=(streams,objectMode)=>{if(streams.length===0)return getDefaultHighWaterMark2(objectMode);let highWaterMarks=streams.filter(({readableObjectMode})=>readableObjectMode===objectMode).map(({readableHighWaterMark})=>readableHighWaterMark);return Math.max(...highWaterMarks)},MergedStream,onMergedStreamFinished=async(passThroughStream,streams,unpipeEvent)=>{updateMaxListeners(passThroughStream,PASSTHROUGH_LISTENERS_COUNT);let controller=new AbortController;try{await Promise.race([onMergedStreamEnd(passThroughStream,controller),onInputStreamsUnpipe(passThroughStream,streams,unpipeEvent,controller)])}finally{controller.abort(),updateMaxListeners(passThroughStream,-PASSTHROUGH_LISTENERS_COUNT)}},onMergedStreamEnd=async(passThroughStream,{signal})=>{try{await finished2(passThroughStream,{signal,cleanup:!0})}catch(error51){throw errorOrAbortStream(passThroughStream,error51),error51}},onInputStreamsUnpipe=async(passThroughStream,streams,unpipeEvent,{signal})=>{for await(let[unpipedStream]of on4(passThroughStream,"unpipe",{signal}))if(streams.has(unpipedStream))unpipedStream.emit(unpipeEvent)},validateStream=(stream)=>{if(typeof stream?.pipe!=="function")throw TypeError(`Expected a readable stream, got: \`${typeof stream}\`.`)},endWhenStreamsDone=async({passThroughStream,stream,streams,ended,aborted:aborted2,onFinished,unpipeEvent})=>{updateMaxListeners(passThroughStream,PASSTHROUGH_LISTENERS_PER_STREAM);let controller=new AbortController;try{await Promise.race([afterMergedStreamFinished(onFinished,stream,controller),onInputStreamEnd({passThroughStream,stream,streams,ended,aborted:aborted2,controller}),onInputStreamUnpipe({stream,streams,ended,aborted:aborted2,unpipeEvent,controller})])}finally{controller.abort(),updateMaxListeners(passThroughStream,-PASSTHROUGH_LISTENERS_PER_STREAM)}if(streams.size>0&&streams.size===ended.size+aborted2.size)if(ended.size===0&&aborted2.size>0)abortStream(passThroughStream);else endStream(passThroughStream)},afterMergedStreamFinished=async(onFinished,stream,{signal})=>{try{if(await onFinished,!signal.aborted)abortStream(stream)}catch(error51){if(!signal.aborted)errorOrAbortStream(stream,error51)}},onInputStreamEnd=async({passThroughStream,stream,streams,ended,aborted:aborted2,controller:{signal}})=>{try{if(await finished2(stream,{signal,cleanup:!0,readable:!0,writable:!1}),streams.has(stream))ended.add(stream)}catch(error51){if(signal.aborted||!streams.has(stream))return;if(isAbortError(error51))aborted2.add(stream);else errorStream(passThroughStream,error51)}},onInputStreamUnpipe=async({stream,streams,ended,aborted:aborted2,unpipeEvent,controller:{signal}})=>{if(await once7(stream,unpipeEvent,{signal}),!stream.readable)return once7(signal,"abort",{signal});streams.delete(stream),ended.delete(stream),aborted2.delete(stream)},endStream=(stream)=>{if(stream.writable)stream.end()},errorOrAbortStream=(stream,error51)=>{if(isAbortError(error51))abortStream(stream);else errorStream(stream,error51)},isAbortError=(error51)=>error51?.code==="ERR_STREAM_PREMATURE_CLOSE",abortStream=(stream)=>{if(stream.readable||stream.writable)stream.destroy()},errorStream=(stream,error51)=>{if(!stream.destroyed)stream.once("error",noop2),stream.destroy(error51)},noop2=()=>{},updateMaxListeners=(passThroughStream,increment2)=>{let maxListeners=passThroughStream.getMaxListeners();if(maxListeners!==0&&maxListeners!==Number.POSITIVE_INFINITY)passThroughStream.setMaxListeners(maxListeners+increment2)},PASSTHROUGH_LISTENERS_COUNT=2,PASSTHROUGH_LISTENERS_PER_STREAM=1;var init_merge_streams=__esm(()=>{MergedStream=class MergedStream extends PassThroughStream{#streams=new Set([]);#ended=new Set([]);#aborted=new Set([]);#onFinished;#unpipeEvent=Symbol("unpipe");#streamPromises=new WeakMap;add(stream){if(validateStream(stream),this.#streams.has(stream))return;this.#streams.add(stream),this.#onFinished??=onMergedStreamFinished(this,this.#streams,this.#unpipeEvent);let streamPromise=endWhenStreamsDone({passThroughStream:this,stream,streams:this.#streams,ended:this.#ended,aborted:this.#aborted,onFinished:this.#onFinished,unpipeEvent:this.#unpipeEvent});this.#streamPromises.set(stream,streamPromise),stream.pipe(this,{end:!1})}async remove(stream){if(validateStream(stream),!this.#streams.has(stream))return!1;let streamPromise=this.#streamPromises.get(stream);if(streamPromise===void 0)return!1;return this.#streamPromises.delete(stream),stream.unpipe(this),await streamPromise,!0}}});import{finished as finished3}from"node:stream/promises";var pipeStreams=(source,destination)=>{source.pipe(destination),onSourceFinish(source,destination),onDestinationFinish(source,destination)},onSourceFinish=async(source,destination)=>{if(isStandardStream(source)||isStandardStream(destination))return;try{await finished3(source,{cleanup:!0,readable:!0,writable:!1})}catch{}endDestinationStream(destination)},endDestinationStream=(destination)=>{if(destination.writable)destination.end()},onDestinationFinish=async(source,destination)=>{if(isStandardStream(source)||isStandardStream(destination))return;try{await finished3(destination,{cleanup:!0,readable:!1,writable:!0})}catch{}abortSourceStream(source)},abortSourceStream=(source)=>{if(source.readable)source.destroy()};var init_pipeline=__esm(()=>{init_standard_stream()});var pipeOutputAsync=(subprocess,fileDescriptors,controller)=>{let pipeGroups=new Map;for(let[fdNumber,{stdioItems,direction}]of Object.entries(fileDescriptors)){for(let{stream}of stdioItems.filter(({type})=>TRANSFORM_TYPES.has(type)))pipeTransform(subprocess,stream,direction,fdNumber);for(let{stream}of stdioItems.filter(({type})=>!TRANSFORM_TYPES.has(type)))pipeStdioItem({subprocess,stream,direction,fdNumber,pipeGroups,controller})}for(let[outputStream,inputStreams]of pipeGroups.entries()){let inputStream=inputStreams.length===1?inputStreams[0]:mergeStreams(inputStreams);pipeStreams(inputStream,outputStream)}},pipeTransform=(subprocess,stream,direction,fdNumber)=>{if(direction==="output")pipeStreams(subprocess.stdio[fdNumber],stream);else pipeStreams(stream,subprocess.stdio[fdNumber]);let streamProperty=SUBPROCESS_STREAM_PROPERTIES[fdNumber];if(streamProperty!==void 0)subprocess[streamProperty]=stream;subprocess.stdio[fdNumber]=stream},SUBPROCESS_STREAM_PROPERTIES,pipeStdioItem=({subprocess,stream,direction,fdNumber,pipeGroups,controller})=>{if(stream===void 0)return;setStandardStreamMaxListeners(stream,controller);let[inputStream,outputStream]=direction==="output"?[stream,subprocess.stdio[fdNumber]]:[subprocess.stdio[fdNumber],stream],outputStreams=pipeGroups.get(inputStream)??[];pipeGroups.set(inputStream,[...outputStreams,outputStream])},setStandardStreamMaxListeners=(stream,{signal})=>{if(isStandardStream(stream))incrementMaxListeners(stream,MAX_LISTENERS_INCREMENT,signal)},MAX_LISTENERS_INCREMENT=2;var init_output_async=__esm(()=>{init_merge_streams();init_standard_stream();init_max_listeners();init_type();init_pipeline();SUBPROCESS_STREAM_PROPERTIES=["stdin","stdout","stderr"]});var signals;var init_signals2=__esm(()=>{signals=[];signals.push("SIGHUP","SIGINT","SIGTERM");if(process.platform!=="win32")signals.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");if(process.platform==="linux")signals.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT")});class Emitter{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(global2[kExitEmitter])return global2[kExitEmitter];ObjectDefineProperty(global2,kExitEmitter,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(ev,fn){this.listeners[ev].push(fn)}removeListener(ev,fn){let list=this.listeners[ev],i2=list.indexOf(fn);if(i2===-1)return;if(i2===0&&list.length===1)list.length=0;else list.splice(i2,1)}emit(ev,code,signal){if(this.emitted[ev])return!1;this.emitted[ev]=!0;let ret=!1;for(let fn of this.listeners[ev])ret=fn(code,signal)===!0||ret;if(ev==="exit")ret=this.emit("afterExit",code,signal)||ret;return ret}}class SignalExitBase{}var processOk=(process10)=>!!process10&&typeof process10==="object"&&typeof process10.removeListener==="function"&&typeof process10.emit==="function"&&typeof process10.reallyExit==="function"&&typeof process10.listeners==="function"&&typeof process10.kill==="function"&&typeof process10.pid==="number"&&typeof process10.on==="function",kExitEmitter,global2,ObjectDefineProperty,signalExitWrap=(handler)=>{return{onExit(cb,opts){return handler.onExit(cb,opts)},load(){return handler.load()},unload(){return handler.unload()}}},SignalExitFallback,SignalExit,process10,onExit,load,unload;var init_mjs=__esm(()=>{init_signals2();kExitEmitter=Symbol.for("signal-exit emitter"),global2=globalThis,ObjectDefineProperty=Object.defineProperty.bind(Object);SignalExitFallback=class SignalExitFallback extends SignalExitBase{onExit(){return()=>{}}load(){}unload(){}};SignalExit=class SignalExit extends SignalExitBase{#hupSig=process10.platform==="win32"?"SIGINT":"SIGHUP";#emitter=new Emitter;#process;#originalProcessEmit;#originalProcessReallyExit;#sigListeners={};#loaded=!1;constructor(process10){super();this.#process=process10,this.#sigListeners={};for(let sig of signals)this.#sigListeners[sig]=()=>{let listeners=this.#process.listeners(sig),{count:count2}=this.#emitter,p=process10;if(typeof p.__signal_exit_emitter__==="object"&&typeof p.__signal_exit_emitter__.count==="number")count2+=p.__signal_exit_emitter__.count;if(listeners.length===count2){this.unload();let ret=this.#emitter.emit("exit",null,sig),s2=sig==="SIGHUP"?this.#hupSig:sig;if(!ret)process10.kill(process10.pid,s2)}};this.#originalProcessReallyExit=process10.reallyExit,this.#originalProcessEmit=process10.emit}onExit(cb,opts){if(!processOk(this.#process))return()=>{};if(this.#loaded===!1)this.load();let ev=opts?.alwaysLast?"afterExit":"exit";return this.#emitter.on(ev,cb),()=>{if(this.#emitter.removeListener(ev,cb),this.#emitter.listeners.exit.length===0&&this.#emitter.listeners.afterExit.length===0)this.unload()}}load(){if(this.#loaded)return;this.#loaded=!0,this.#emitter.count+=1;for(let sig of signals)try{let fn=this.#sigListeners[sig];if(fn)this.#process.on(sig,fn)}catch(_){}this.#process.emit=(ev,...a2)=>{return this.#processEmit(ev,...a2)},this.#process.reallyExit=(code)=>{return this.#processReallyExit(code)}}unload(){if(!this.#loaded)return;this.#loaded=!1,signals.forEach((sig)=>{let listener=this.#sigListeners[sig];if(!listener)throw Error("Listener not defined for signal: "+sig);try{this.#process.removeListener(sig,listener)}catch(_){}}),this.#process.emit=this.#originalProcessEmit,this.#process.reallyExit=this.#originalProcessReallyExit,this.#emitter.count-=1}#processReallyExit(code){if(!processOk(this.#process))return 0;return this.#process.exitCode=code||0,this.#emitter.emit("exit",this.#process.exitCode,null),this.#originalProcessReallyExit.call(this.#process,this.#process.exitCode)}#processEmit(ev,...args){let og=this.#originalProcessEmit;if(ev==="exit"&&processOk(this.#process)){if(typeof args[0]==="number")this.#process.exitCode=args[0];let ret=og.call(this.#process,ev,...args);return this.#emitter.emit("exit",this.#process.exitCode,null),ret}else return og.call(this.#process,ev,...args)}};process10=globalThis.process,{onExit,load,unload}=signalExitWrap(processOk(process10)?new SignalExit(process10):new SignalExitFallback)});import{addAbortListener as addAbortListener2}from"node:events";var cleanupOnExit=(subprocess,{cleanup,detached},{signal})=>{if(!cleanup||detached)return;let removeExitHandler=onExit(()=>{subprocess.kill()});addAbortListener2(signal,()=>{removeExitHandler()})};var init_cleanup=__esm(()=>{init_mjs()});var normalizePipeArguments=({source,sourcePromise,boundOptions,createNested},...pipeArguments)=>{let startTime=getStartTime(),{destination,destinationStream,destinationError,from,unpipeSignal}=getDestinationStream(boundOptions,createNested,pipeArguments),{sourceStream,sourceError}=getSourceStream(source,from),{options:sourceOptions,fileDescriptors}=SUBPROCESS_OPTIONS.get(source);return{sourcePromise,sourceStream,sourceOptions,sourceError,destination,destinationStream,destinationError,unpipeSignal,fileDescriptors,startTime}},getDestinationStream=(boundOptions,createNested,pipeArguments)=>{try{let{destination,pipeOptions:{from,to,unpipeSignal}={}}=getDestination(boundOptions,createNested,...pipeArguments),destinationStream=getToStream(destination,to);return{destination,destinationStream,from,unpipeSignal}}catch(error51){return{destinationError:error51}}},getDestination=(boundOptions,createNested,firstArgument,...pipeArguments)=>{if(Array.isArray(firstArgument))return{destination:createNested(mapDestinationArguments,boundOptions)(firstArgument,...pipeArguments),pipeOptions:boundOptions};if(typeof firstArgument==="string"||firstArgument instanceof URL||isDenoExecPath(firstArgument)){if(Object.keys(boundOptions).length>0)throw TypeError('Please use .pipe("file", ..., options) or .pipe(execa("file", ..., options)) instead of .pipe(options)("file", ...).');let[rawFile,rawArguments,rawOptions]=normalizeParameters(firstArgument,...pipeArguments);return{destination:createNested(mapDestinationArguments)(rawFile,rawArguments,rawOptions),pipeOptions:rawOptions}}if(SUBPROCESS_OPTIONS.has(firstArgument)){if(Object.keys(boundOptions).length>0)throw TypeError("Please use .pipe(options)`command` or .pipe($(options)`command`) instead of .pipe(options)($`command`).");return{destination:firstArgument,pipeOptions:pipeArguments[0]}}throw TypeError(`The first argument must be a template string, an options object, or an Execa subprocess: ${firstArgument}`)},mapDestinationArguments=({options})=>({options:{...options,stdin:"pipe",piped:!0}}),getSourceStream=(source,from)=>{try{return{sourceStream:getFromStream(source,from)}}catch(error51){return{sourceError:error51}}};var init_pipe_arguments=__esm(()=>{init_parameters();init_duration();init_fd_options();init_file_url()});var handlePipeArgumentsError=({sourceStream,sourceError,destinationStream,destinationError,fileDescriptors,sourceOptions,startTime})=>{let error51=getPipeArgumentsError({sourceStream,sourceError,destinationStream,destinationError});if(error51!==void 0)throw createNonCommandError({error:error51,fileDescriptors,sourceOptions,startTime})},getPipeArgumentsError=({sourceStream,sourceError,destinationStream,destinationError})=>{if(sourceError!==void 0&&destinationError!==void 0)return destinationError;if(destinationError!==void 0)return abortSourceStream(sourceStream),destinationError;if(sourceError!==void 0)return endDestinationStream(destinationStream),sourceError},createNonCommandError=({error:error51,fileDescriptors,sourceOptions,startTime})=>makeEarlyError({error:error51,command:PIPE_COMMAND_MESSAGE,escapedCommand:PIPE_COMMAND_MESSAGE,fileDescriptors,options:sourceOptions,startTime,isSync:!1}),PIPE_COMMAND_MESSAGE="source.pipe(destination)";var init_throw=__esm(()=>{init_result();init_pipeline()});var waitForBothSubprocesses=async(subprocessPromises)=>{let[{status:sourceStatus,reason:sourceReason,value:sourceResult=sourceReason},{status:destinationStatus,reason:destinationReason,value:destinationResult=destinationReason}]=await subprocessPromises;if(!destinationResult.pipedFrom.includes(sourceResult))destinationResult.pipedFrom.push(sourceResult);if(destinationStatus==="rejected")throw destinationResult;if(sourceStatus==="rejected")throw sourceResult;return destinationResult};import{finished as finished4}from"node:stream/promises";var pipeSubprocessStream=(sourceStream,destinationStream,maxListenersController)=>{let mergedStream=MERGED_STREAMS.has(destinationStream)?pipeMoreSubprocessStream(sourceStream,destinationStream):pipeFirstSubprocessStream(sourceStream,destinationStream);return incrementMaxListeners(sourceStream,SOURCE_LISTENERS_PER_PIPE,maxListenersController.signal),incrementMaxListeners(destinationStream,DESTINATION_LISTENERS_PER_PIPE,maxListenersController.signal),cleanupMergedStreamsMap(destinationStream),mergedStream},pipeFirstSubprocessStream=(sourceStream,destinationStream)=>{let mergedStream=mergeStreams([sourceStream]);return pipeStreams(mergedStream,destinationStream),MERGED_STREAMS.set(destinationStream,mergedStream),mergedStream},pipeMoreSubprocessStream=(sourceStream,destinationStream)=>{let mergedStream=MERGED_STREAMS.get(destinationStream);return mergedStream.add(sourceStream),mergedStream},cleanupMergedStreamsMap=async(destinationStream)=>{try{await finished4(destinationStream,{cleanup:!0,readable:!1,writable:!0})}catch{}MERGED_STREAMS.delete(destinationStream)},MERGED_STREAMS,SOURCE_LISTENERS_PER_PIPE=2,DESTINATION_LISTENERS_PER_PIPE=1;var init_streaming=__esm(()=>{init_merge_streams();init_max_listeners();init_pipeline();MERGED_STREAMS=new WeakMap});import{aborted as aborted2}from"node:util";var unpipeOnAbort=(unpipeSignal,unpipeContext)=>unpipeSignal===void 0?[]:[unpipeOnSignalAbort(unpipeSignal,unpipeContext)],unpipeOnSignalAbort=async(unpipeSignal,{sourceStream,mergedStream,fileDescriptors,sourceOptions,startTime})=>{await aborted2(unpipeSignal,sourceStream),await mergedStream.remove(sourceStream);let error51=Error("Pipe canceled by `unpipeSignal` option.");throw createNonCommandError({error:error51,fileDescriptors,sourceOptions,startTime})};var init_abort=__esm(()=>{init_throw()});var pipeToSubprocess=(sourceInfo,...pipeArguments)=>{if(isPlainObject2(pipeArguments[0]))return pipeToSubprocess.bind(void 0,{...sourceInfo,boundOptions:{...sourceInfo.boundOptions,...pipeArguments[0]}});let{destination,...normalizedInfo}=normalizePipeArguments(sourceInfo,...pipeArguments),promise2=handlePipePromise({...normalizedInfo,destination});return promise2.pipe=pipeToSubprocess.bind(void 0,{...sourceInfo,source:destination,sourcePromise:promise2,boundOptions:{}}),promise2},handlePipePromise=async({sourcePromise,sourceStream,sourceOptions,sourceError,destination,destinationStream,destinationError,unpipeSignal,fileDescriptors,startTime})=>{let subprocessPromises=getSubprocessPromises(sourcePromise,destination);handlePipeArgumentsError({sourceStream,sourceError,destinationStream,destinationError,fileDescriptors,sourceOptions,startTime});let maxListenersController=new AbortController;try{let mergedStream=pipeSubprocessStream(sourceStream,destinationStream,maxListenersController);return await Promise.race([waitForBothSubprocesses(subprocessPromises),...unpipeOnAbort(unpipeSignal,{sourceStream,mergedStream,sourceOptions,fileDescriptors,startTime})])}finally{maxListenersController.abort()}},getSubprocessPromises=(sourcePromise,destination)=>Promise.allSettled([sourcePromise,destination]);var init_setup=__esm(()=>{init_pipe_arguments();init_throw();init_streaming();init_abort()});import{on as on5}from"node:events";import{getDefaultHighWaterMark as getDefaultHighWaterMark3}from"node:stream";var iterateOnSubprocessStream=({subprocessStdout,subprocess,binary,shouldEncode,encoding,preserveNewlines})=>{let controller=new AbortController;return stopReadingOnExit(subprocess,controller),iterateOnStream({stream:subprocessStdout,controller,binary,shouldEncode:!subprocessStdout.readableObjectMode&&shouldEncode,encoding,shouldSplit:!subprocessStdout.readableObjectMode,preserveNewlines})},stopReadingOnExit=async(subprocess,controller)=>{try{await subprocess}catch{}finally{controller.abort()}},iterateForResult=({stream,onStreamEnd,lines,encoding,stripFinalNewline:stripFinalNewline2,allMixed})=>{let controller=new AbortController;stopReadingOnStreamEnd(onStreamEnd,controller,stream);let objectMode=stream.readableObjectMode&&!allMixed;return iterateOnStream({stream,controller,binary:encoding==="buffer",shouldEncode:!objectMode,encoding,shouldSplit:!objectMode&&lines,preserveNewlines:!stripFinalNewline2})},stopReadingOnStreamEnd=async(onStreamEnd,controller,stream)=>{try{await onStreamEnd}catch{stream.destroy()}finally{controller.abort()}},iterateOnStream=({stream,controller,binary,shouldEncode,encoding,shouldSplit,preserveNewlines})=>{let onStdoutChunk=on5(stream,"data",{signal:controller.signal,highWaterMark:HIGH_WATER_MARK,highWatermark:HIGH_WATER_MARK});return iterateOnData({onStdoutChunk,controller,binary,shouldEncode,encoding,shouldSplit,preserveNewlines})},DEFAULT_OBJECT_HIGH_WATER_MARK,HIGH_WATER_MARK,iterateOnData=async function*({onStdoutChunk,controller,binary,shouldEncode,encoding,shouldSplit,preserveNewlines}){let generators=getGenerators({binary,shouldEncode,encoding,shouldSplit,preserveNewlines});try{for await(let[chunk]of onStdoutChunk)yield*transformChunkSync(chunk,generators,0)}catch(error51){if(!controller.signal.aborted)throw error51}finally{yield*finalChunksSync(generators)}},getGenerators=({binary,shouldEncode,encoding,shouldSplit,preserveNewlines})=>[getEncodingTransformGenerator(binary,encoding,!shouldEncode),getSplitLinesGenerator(binary,preserveNewlines,!shouldSplit,{})].filter(Boolean);var init_iterate=__esm(()=>{init_encoding_transform();init_split();DEFAULT_OBJECT_HIGH_WATER_MARK=getDefaultHighWaterMark3(!0),HIGH_WATER_MARK=DEFAULT_OBJECT_HIGH_WATER_MARK});import{setImmediate}from"node:timers/promises";var getStreamOutput=async({stream,onStreamEnd,fdNumber,encoding,buffer,maxBuffer,lines,allMixed,stripFinalNewline:stripFinalNewline2,verboseInfo,streamInfo})=>{let logPromise=logOutputAsync({stream,onStreamEnd,fdNumber,encoding,allMixed,verboseInfo,streamInfo});if(!buffer){await Promise.all([resumeStream(stream),logPromise]);return}let stripFinalNewlineValue=getStripFinalNewline(stripFinalNewline2,fdNumber),iterable=iterateForResult({stream,onStreamEnd,lines,encoding,stripFinalNewline:stripFinalNewlineValue,allMixed}),[output2]=await Promise.all([getStreamContents2({stream,iterable,fdNumber,encoding,maxBuffer,lines}),logPromise]);return output2},logOutputAsync=async({stream,onStreamEnd,fdNumber,encoding,allMixed,verboseInfo,streamInfo:{fileDescriptors}})=>{if(!shouldLogOutput({stdioItems:fileDescriptors[fdNumber]?.stdioItems,encoding,verboseInfo,fdNumber}))return;let linesIterable=iterateForResult({stream,onStreamEnd,lines:!0,encoding,stripFinalNewline:!0,allMixed});await logLines(linesIterable,stream,fdNumber,verboseInfo)},resumeStream=async(stream)=>{if(await setImmediate(),stream.readableFlowing===null)stream.resume()},getStreamContents2=async({stream,stream:{readableObjectMode},iterable,fdNumber,encoding,maxBuffer,lines})=>{try{if(readableObjectMode||lines)return await getStreamAsArray(iterable,{maxBuffer});if(encoding==="buffer")return new Uint8Array(await getStreamAsArrayBuffer(iterable,{maxBuffer}));return await getStreamAsString(iterable,{maxBuffer})}catch(error51){return handleBufferedData(handleMaxBuffer({error:error51,stream,readableObjectMode,lines,encoding,fdNumber}))}},getBufferedData=async(streamPromise)=>{try{return await streamPromise}catch(error51){return handleBufferedData(error51)}},handleBufferedData=({bufferedData})=>isArrayBuffer(bufferedData)?new Uint8Array(bufferedData):bufferedData;var init_contents2=__esm(()=>{init_source();init_uint_array();init_output();init_iterate();init_max_buffer();init_strip_newline()});import{finished as finished5}from"node:stream/promises";var waitForStream=async(stream,fdNumber,streamInfo,{isSameDirection,stopOnExit=!1}={})=>{let state=handleStdinDestroy(stream,streamInfo),abortController=new AbortController;try{await Promise.race([...stopOnExit?[streamInfo.exitPromise]:[],finished5(stream,{cleanup:!0,signal:abortController.signal})])}catch(error51){if(!state.stdinCleanedUp)handleStreamError(error51,fdNumber,streamInfo,isSameDirection)}finally{abortController.abort()}},handleStdinDestroy=(stream,{originalStreams:[originalStdin],subprocess})=>{let state={stdinCleanedUp:!1};if(stream===originalStdin)spyOnStdinDestroy(stream,subprocess,state);return state},spyOnStdinDestroy=(subprocessStdin,subprocess,state)=>{let{_destroy}=subprocessStdin;subprocessStdin._destroy=(...destroyArguments)=>{setStdinCleanedUp(subprocess,state),_destroy.call(subprocessStdin,...destroyArguments)}},setStdinCleanedUp=({exitCode,signalCode},state)=>{if(exitCode!==null||signalCode!==null)state.stdinCleanedUp=!0},handleStreamError=(error51,fdNumber,streamInfo,isSameDirection)=>{if(!shouldIgnoreStreamError(error51,fdNumber,streamInfo,isSameDirection))throw error51},shouldIgnoreStreamError=(error51,fdNumber,streamInfo,isSameDirection=!0)=>{if(streamInfo.propagating)return isStreamEpipe(error51)||isStreamAbort(error51);return streamInfo.propagating=!0,isInputFileDescriptor(streamInfo,fdNumber)===isSameDirection?isStreamEpipe(error51):isStreamAbort(error51)},isInputFileDescriptor=({fileDescriptors},fdNumber)=>fdNumber!=="all"&&fileDescriptors[fdNumber].direction==="input",isStreamAbort=(error51)=>error51?.code==="ERR_STREAM_PREMATURE_CLOSE",isStreamEpipe=(error51)=>error51?.code==="EPIPE";var init_wait_stream=()=>{};var waitForStdioStreams=({subprocess,encoding,buffer,maxBuffer,lines,stripFinalNewline:stripFinalNewline2,verboseInfo,streamInfo})=>subprocess.stdio.map((stream,fdNumber)=>waitForSubprocessStream({stream,fdNumber,encoding,buffer:buffer[fdNumber],maxBuffer:maxBuffer[fdNumber],lines:lines[fdNumber],allMixed:!1,stripFinalNewline:stripFinalNewline2,verboseInfo,streamInfo})),waitForSubprocessStream=async({stream,fdNumber,encoding,buffer,maxBuffer,lines,allMixed,stripFinalNewline:stripFinalNewline2,verboseInfo,streamInfo})=>{if(!stream)return;let onStreamEnd=waitForStream(stream,fdNumber,streamInfo);if(isInputFileDescriptor(streamInfo,fdNumber)){await onStreamEnd;return}let[output2]=await Promise.all([getStreamOutput({stream,onStreamEnd,fdNumber,encoding,buffer,maxBuffer,lines,allMixed,stripFinalNewline:stripFinalNewline2,verboseInfo,streamInfo}),onStreamEnd]);return output2};var init_stdio=__esm(()=>{init_contents2();init_wait_stream()});var makeAllStream=({stdout,stderr},{all})=>all&&(stdout||stderr)?mergeStreams([stdout,stderr].filter(Boolean)):void 0,waitForAllStream=({subprocess,encoding,buffer,maxBuffer,lines,stripFinalNewline:stripFinalNewline2,verboseInfo,streamInfo})=>waitForSubprocessStream({...getAllStream(subprocess,buffer),fdNumber:"all",encoding,maxBuffer:maxBuffer[1]+maxBuffer[2],lines:lines[1]||lines[2],allMixed:getAllMixed(subprocess),stripFinalNewline:stripFinalNewline2,verboseInfo,streamInfo}),getAllStream=({stdout,stderr,all},[,bufferStdout,bufferStderr])=>{let buffer=bufferStdout||bufferStderr;if(!buffer)return{stream:all,buffer};if(!bufferStdout)return{stream:stderr,buffer};if(!bufferStderr)return{stream:stdout,buffer};return{stream:all,buffer}},getAllMixed=({all,stdout,stderr})=>all&&stdout&&stderr&&stdout.readableObjectMode!==stderr.readableObjectMode;var init_all_async=__esm(()=>{init_merge_streams();init_stdio()});var shouldLogIpc=(verboseInfo)=>isFullVerbose(verboseInfo,"ipc"),logIpcOutput=(message,verboseInfo)=>{let verboseMessage=serializeVerboseMessage(message);verboseLog({type:"ipc",verboseMessage,fdNumber:"ipc",verboseInfo})};var init_ipc=__esm(()=>{init_log();init_values()});var waitForIpcOutput=async({subprocess,buffer:bufferArray,maxBuffer:maxBufferArray,ipc,ipcOutput,verboseInfo})=>{if(!ipc)return ipcOutput;let isVerbose2=shouldLogIpc(verboseInfo),buffer=getFdSpecificValue(bufferArray,"ipc"),maxBuffer=getFdSpecificValue(maxBufferArray,"ipc");for await(let message of loopOnMessages({anyProcess:subprocess,channel:subprocess.channel,isSubprocess:!1,ipc,shouldAwait:!1,reference:!0})){if(buffer)checkIpcMaxBuffer(subprocess,ipcOutput,maxBuffer),ipcOutput.push(message);if(isVerbose2)logIpcOutput(message,verboseInfo)}return ipcOutput},getBufferedIpcOutput=async(ipcOutputPromise,ipcOutput)=>{return await Promise.allSettled([ipcOutputPromise]),ipcOutput};var init_buffer_messages=__esm(()=>{init_max_buffer();init_ipc();init_specific();init_get_each()});import{once as once8}from"node:events";var waitForSubprocessResult=async({subprocess,options:{encoding,buffer,maxBuffer,lines,timeoutDuration:timeout,cancelSignal,gracefulCancel,forceKillAfterDelay,stripFinalNewline:stripFinalNewline2,ipc,ipcInput},context,verboseInfo,fileDescriptors,originalStreams,onInternalError,controller})=>{let exitPromise=waitForExit(subprocess,context),streamInfo={originalStreams,fileDescriptors,subprocess,exitPromise,propagating:!1},stdioPromises=waitForStdioStreams({subprocess,encoding,buffer,maxBuffer,lines,stripFinalNewline:stripFinalNewline2,verboseInfo,streamInfo}),allPromise=waitForAllStream({subprocess,encoding,buffer,maxBuffer,lines,stripFinalNewline:stripFinalNewline2,verboseInfo,streamInfo}),ipcOutput=[],ipcOutputPromise=waitForIpcOutput({subprocess,buffer,maxBuffer,ipc,ipcOutput,verboseInfo}),originalPromises=waitForOriginalStreams(originalStreams,subprocess,streamInfo),customStreamsEndPromises=waitForCustomStreamsEnd(fileDescriptors,streamInfo);try{return await Promise.race([Promise.all([{},waitForSuccessfulExit(exitPromise),Promise.all(stdioPromises),allPromise,ipcOutputPromise,sendIpcInput(subprocess,ipcInput),...originalPromises,...customStreamsEndPromises]),onInternalError,throwOnSubprocessError(subprocess,controller),...throwOnTimeout(subprocess,timeout,context,controller),...throwOnCancel({subprocess,cancelSignal,gracefulCancel,context,controller}),...throwOnGracefulCancel({subprocess,cancelSignal,gracefulCancel,forceKillAfterDelay,context,controller})])}catch(error51){return context.terminationReason??="other",Promise.all([{error:error51},exitPromise,Promise.all(stdioPromises.map((stdioPromise)=>getBufferedData(stdioPromise))),getBufferedData(allPromise),getBufferedIpcOutput(ipcOutputPromise,ipcOutput),Promise.allSettled(originalPromises),Promise.allSettled(customStreamsEndPromises)])}},waitForOriginalStreams=(originalStreams,subprocess,streamInfo)=>originalStreams.map((stream,fdNumber)=>stream===subprocess.stdio[fdNumber]?void 0:waitForStream(stream,fdNumber,streamInfo)),waitForCustomStreamsEnd=(fileDescriptors,streamInfo)=>fileDescriptors.flatMap(({stdioItems},fdNumber)=>stdioItems.filter(({value,stream=value})=>isStream(stream,{checkOpen:!1})&&!isStandardStream(stream)).map(({type,value,stream=value})=>waitForStream(stream,fdNumber,streamInfo,{isSameDirection:TRANSFORM_TYPES.has(type),stopOnExit:type==="native"}))),throwOnSubprocessError=async(subprocess,{signal})=>{let[error51]=await once8(subprocess,"error",{signal});throw error51};var init_wait_subprocess=__esm(()=>{init_timeout();init_cancel();init_graceful2();init_standard_stream();init_type();init_contents2();init_buffer_messages();init_ipc_input();init_all_async();init_stdio();init_exit_async();init_wait_stream()});var initializeConcurrentStreams=()=>({readableDestroy:new WeakMap,writableFinal:new WeakMap,writableDestroy:new WeakMap}),addConcurrentStream=(concurrentStreams,stream,waitName)=>{let weakMap=concurrentStreams[waitName];if(!weakMap.has(stream))weakMap.set(stream,[]);let promises=weakMap.get(stream),promise2=createDeferred();return promises.push(promise2),{resolve:promise2.resolve.bind(promise2),promises}},waitForConcurrentStreams=async({resolve,promises},subprocess)=>{resolve();let[isSubprocessExit]=await Promise.race([Promise.allSettled([!0,subprocess]),Promise.all([!1,...promises])]);return!isSubprocessExit};var init_concurrent=()=>{};import{finished as finished6}from"node:stream/promises";var safeWaitForSubprocessStdin=async(subprocessStdin)=>{if(subprocessStdin===void 0)return;try{await waitForSubprocessStdin(subprocessStdin)}catch{}},safeWaitForSubprocessStdout=async(subprocessStdout)=>{if(subprocessStdout===void 0)return;try{await waitForSubprocessStdout(subprocessStdout)}catch{}},waitForSubprocessStdin=async(subprocessStdin)=>{await finished6(subprocessStdin,{cleanup:!0,readable:!1,writable:!0})},waitForSubprocessStdout=async(subprocessStdout)=>{await finished6(subprocessStdout,{cleanup:!0,readable:!0,writable:!1})},waitForSubprocess=async(subprocess,error51)=>{if(await subprocess,error51)throw error51},destroyOtherStream=(stream,isOpen,error51)=>{if(error51&&!isStreamAbort(error51))stream.destroy(error51);else if(isOpen)stream.destroy()};var init_shared=__esm(()=>{init_wait_stream()});import{Readable as Readable3}from"node:stream";import{callbackify as callbackify2}from"node:util";var createReadable=({subprocess,concurrentStreams,encoding},{from,binary:binaryOption=!0,preserveNewlines=!0}={})=>{let binary=binaryOption||BINARY_ENCODINGS.has(encoding),{subprocessStdout,waitReadableDestroy}=getSubprocessStdout(subprocess,from,concurrentStreams),{readableEncoding,readableObjectMode,readableHighWaterMark}=getReadableOptions(subprocessStdout,binary),{read,onStdoutDataDone}=getReadableMethods({subprocessStdout,subprocess,binary,encoding,preserveNewlines}),readable2=new Readable3({read,destroy:callbackify2(onReadableDestroy.bind(void 0,{subprocessStdout,subprocess,waitReadableDestroy})),highWaterMark:readableHighWaterMark,objectMode:readableObjectMode,encoding:readableEncoding});return onStdoutFinished({subprocessStdout,onStdoutDataDone,readable:readable2,subprocess}),readable2},getSubprocessStdout=(subprocess,from,concurrentStreams)=>{let subprocessStdout=getFromStream(subprocess,from),waitReadableDestroy=addConcurrentStream(concurrentStreams,subprocessStdout,"readableDestroy");return{subprocessStdout,waitReadableDestroy}},getReadableOptions=({readableEncoding,readableObjectMode,readableHighWaterMark},binary)=>binary?{readableEncoding,readableObjectMode,readableHighWaterMark}:{readableEncoding,readableObjectMode:!0,readableHighWaterMark:DEFAULT_OBJECT_HIGH_WATER_MARK},getReadableMethods=({subprocessStdout,subprocess,binary,encoding,preserveNewlines})=>{let onStdoutDataDone=createDeferred(),onStdoutData=iterateOnSubprocessStream({subprocessStdout,subprocess,binary,shouldEncode:!binary,encoding,preserveNewlines});return{read(){onRead(this,onStdoutData,onStdoutDataDone)},onStdoutDataDone}},onRead=async(readable2,onStdoutData,onStdoutDataDone)=>{try{let{value,done}=await onStdoutData.next();if(done)onStdoutDataDone.resolve();else readable2.push(value)}catch{}},onStdoutFinished=async({subprocessStdout,onStdoutDataDone,readable:readable2,subprocess,subprocessStdin})=>{try{if(await waitForSubprocessStdout(subprocessStdout),await subprocess,await safeWaitForSubprocessStdin(subprocessStdin),await onStdoutDataDone,readable2.readable)readable2.push(null)}catch(error51){await safeWaitForSubprocessStdin(subprocessStdin),destroyOtherReadable(readable2,error51)}},onReadableDestroy=async({subprocessStdout,subprocess,waitReadableDestroy},error51)=>{if(await waitForConcurrentStreams(waitReadableDestroy,subprocess))destroyOtherReadable(subprocessStdout,error51),await waitForSubprocess(subprocess,error51)},destroyOtherReadable=(stream,error51)=>{destroyOtherStream(stream,stream.readable,error51)};var init_readable=__esm(()=>{init_encoding_option();init_fd_options();init_iterate();init_concurrent();init_shared()});import{Writable as Writable3}from"node:stream";import{callbackify as callbackify3}from"node:util";var createWritable=({subprocess,concurrentStreams},{to}={})=>{let{subprocessStdin,waitWritableFinal,waitWritableDestroy}=getSubprocessStdin(subprocess,to,concurrentStreams),writable2=new Writable3({...getWritableMethods(subprocessStdin,subprocess,waitWritableFinal),destroy:callbackify3(onWritableDestroy.bind(void 0,{subprocessStdin,subprocess,waitWritableFinal,waitWritableDestroy})),highWaterMark:subprocessStdin.writableHighWaterMark,objectMode:subprocessStdin.writableObjectMode});return onStdinFinished(subprocessStdin,writable2),writable2},getSubprocessStdin=(subprocess,to,concurrentStreams)=>{let subprocessStdin=getToStream(subprocess,to),waitWritableFinal=addConcurrentStream(concurrentStreams,subprocessStdin,"writableFinal"),waitWritableDestroy=addConcurrentStream(concurrentStreams,subprocessStdin,"writableDestroy");return{subprocessStdin,waitWritableFinal,waitWritableDestroy}},getWritableMethods=(subprocessStdin,subprocess,waitWritableFinal)=>({write:onWrite.bind(void 0,subprocessStdin),final:callbackify3(onWritableFinal.bind(void 0,subprocessStdin,subprocess,waitWritableFinal))}),onWrite=(subprocessStdin,chunk,encoding,done)=>{if(subprocessStdin.write(chunk,encoding))done();else subprocessStdin.once("drain",done)},onWritableFinal=async(subprocessStdin,subprocess,waitWritableFinal)=>{if(await waitForConcurrentStreams(waitWritableFinal,subprocess)){if(subprocessStdin.writable)subprocessStdin.end();await subprocess}},onStdinFinished=async(subprocessStdin,writable2,subprocessStdout)=>{try{if(await waitForSubprocessStdin(subprocessStdin),writable2.writable)writable2.end()}catch(error51){await safeWaitForSubprocessStdout(subprocessStdout),destroyOtherWritable(writable2,error51)}},onWritableDestroy=async({subprocessStdin,subprocess,waitWritableFinal,waitWritableDestroy},error51)=>{if(await waitForConcurrentStreams(waitWritableFinal,subprocess),await waitForConcurrentStreams(waitWritableDestroy,subprocess))destroyOtherWritable(subprocessStdin,error51),await waitForSubprocess(subprocess,error51)},destroyOtherWritable=(stream,error51)=>{destroyOtherStream(stream,stream.writable,error51)};var init_writable=__esm(()=>{init_fd_options();init_concurrent();init_shared()});import{Duplex as Duplex3}from"node:stream";import{callbackify as callbackify4}from"node:util";var createDuplex=({subprocess,concurrentStreams,encoding},{from,to,binary:binaryOption=!0,preserveNewlines=!0}={})=>{let binary=binaryOption||BINARY_ENCODINGS.has(encoding),{subprocessStdout,waitReadableDestroy}=getSubprocessStdout(subprocess,from,concurrentStreams),{subprocessStdin,waitWritableFinal,waitWritableDestroy}=getSubprocessStdin(subprocess,to,concurrentStreams),{readableEncoding,readableObjectMode,readableHighWaterMark}=getReadableOptions(subprocessStdout,binary),{read,onStdoutDataDone}=getReadableMethods({subprocessStdout,subprocess,binary,encoding,preserveNewlines}),duplex2=new Duplex3({read,...getWritableMethods(subprocessStdin,subprocess,waitWritableFinal),destroy:callbackify4(onDuplexDestroy.bind(void 0,{subprocessStdout,subprocessStdin,subprocess,waitReadableDestroy,waitWritableFinal,waitWritableDestroy})),readableHighWaterMark,writableHighWaterMark:subprocessStdin.writableHighWaterMark,readableObjectMode,writableObjectMode:subprocessStdin.writableObjectMode,encoding:readableEncoding});return onStdoutFinished({subprocessStdout,onStdoutDataDone,readable:duplex2,subprocess,subprocessStdin}),onStdinFinished(subprocessStdin,duplex2,subprocessStdout),duplex2},onDuplexDestroy=async({subprocessStdout,subprocessStdin,subprocess,waitReadableDestroy,waitWritableFinal,waitWritableDestroy},error51)=>{await Promise.all([onReadableDestroy({subprocessStdout,subprocess,waitReadableDestroy},error51),onWritableDestroy({subprocessStdin,subprocess,waitWritableFinal,waitWritableDestroy},error51)])};var init_duplex=__esm(()=>{init_encoding_option();init_readable();init_writable()});var createIterable=(subprocess,encoding,{from,binary:binaryOption=!1,preserveNewlines=!1}={})=>{let binary=binaryOption||BINARY_ENCODINGS.has(encoding),subprocessStdout=getFromStream(subprocess,from),onStdoutData=iterateOnSubprocessStream({subprocessStdout,subprocess,binary,shouldEncode:!0,encoding,preserveNewlines});return iterateOnStdoutData(onStdoutData,subprocessStdout,subprocess)},iterateOnStdoutData=async function*(onStdoutData,subprocessStdout,subprocess){try{yield*onStdoutData}finally{if(subprocessStdout.readable)subprocessStdout.destroy();await subprocess}};var init_iterable=__esm(()=>{init_encoding_option();init_fd_options();init_iterate()});var addConvertedStreams=(subprocess,{encoding})=>{let concurrentStreams=initializeConcurrentStreams();subprocess.readable=createReadable.bind(void 0,{subprocess,concurrentStreams,encoding}),subprocess.writable=createWritable.bind(void 0,{subprocess,concurrentStreams}),subprocess.duplex=createDuplex.bind(void 0,{subprocess,concurrentStreams,encoding}),subprocess.iterable=createIterable.bind(void 0,subprocess,encoding),subprocess[Symbol.asyncIterator]=createIterable.bind(void 0,subprocess,encoding,{})};var init_add=__esm(()=>{init_concurrent();init_readable();init_writable();init_duplex();init_iterable()});var mergePromise=(subprocess,promise2)=>{for(let[property,descriptor]of descriptors){let value=descriptor.value.bind(promise2);Reflect.defineProperty(subprocess,property,{...descriptor,value})}},nativePromisePrototype,descriptors;var init_promise=__esm(()=>{nativePromisePrototype=(async()=>{})().constructor.prototype,descriptors=["then","catch","finally"].map((property)=>[property,Reflect.getOwnPropertyDescriptor(nativePromisePrototype,property)])});import{setMaxListeners}from"node:events";import{spawn}from"node:child_process";var execaCoreAsync=(rawFile,rawArguments,rawOptions,createNested)=>{let{file:file2,commandArguments,command,escapedCommand,startTime,verboseInfo,options,fileDescriptors}=handleAsyncArguments(rawFile,rawArguments,rawOptions),{subprocess,promise:promise2}=spawnSubprocessAsync({file:file2,commandArguments,options,startTime,verboseInfo,command,escapedCommand,fileDescriptors});return subprocess.pipe=pipeToSubprocess.bind(void 0,{source:subprocess,sourcePromise:promise2,boundOptions:{},createNested}),mergePromise(subprocess,promise2),SUBPROCESS_OPTIONS.set(subprocess,{options,fileDescriptors}),subprocess},handleAsyncArguments=(rawFile,rawArguments,rawOptions)=>{let{command,escapedCommand,startTime,verboseInfo}=handleCommand(rawFile,rawArguments,rawOptions),{file:file2,commandArguments,options:normalizedOptions}=normalizeOptions(rawFile,rawArguments,rawOptions),options=handleAsyncOptions(normalizedOptions),fileDescriptors=handleStdioAsync(options,verboseInfo);return{file:file2,commandArguments,command,escapedCommand,startTime,verboseInfo,options,fileDescriptors}},handleAsyncOptions=({timeout,signal,...options})=>{if(signal!==void 0)throw TypeError('The "signal" option has been renamed to "cancelSignal" instead.');return{...options,timeoutDuration:timeout}},spawnSubprocessAsync=({file:file2,commandArguments,options,startTime,verboseInfo,command,escapedCommand,fileDescriptors})=>{let subprocess;try{subprocess=spawn(...concatenateShell(file2,commandArguments,options))}catch(error51){return handleEarlyError({error:error51,command,escapedCommand,fileDescriptors,options,startTime,verboseInfo})}let controller=new AbortController;setMaxListeners(Number.POSITIVE_INFINITY,controller.signal);let originalStreams=[...subprocess.stdio];pipeOutputAsync(subprocess,fileDescriptors,controller),cleanupOnExit(subprocess,options,controller);let context={},onInternalError=createDeferred();subprocess.kill=subprocessKill.bind(void 0,{kill:subprocess.kill.bind(subprocess),options,onInternalError,context,controller}),subprocess.all=makeAllStream(subprocess,options),addConvertedStreams(subprocess,options),addIpcMethods(subprocess,options);let promise2=handlePromise({subprocess,options,startTime,verboseInfo,fileDescriptors,originalStreams,command,escapedCommand,context,onInternalError,controller});return{subprocess,promise:promise2}},handlePromise=async({subprocess,options,startTime,verboseInfo,fileDescriptors,originalStreams,command,escapedCommand,context,onInternalError,controller})=>{let[errorInfo,[exitCode,signal],stdioResults,allResult,ipcOutput]=await waitForSubprocessResult({subprocess,options,context,verboseInfo,fileDescriptors,originalStreams,onInternalError,controller});controller.abort(),onInternalError.resolve();let stdio=stdioResults.map((stdioResult,fdNumber)=>stripNewline(stdioResult,options,fdNumber)),all=stripNewline(allResult,options,"all"),result=getAsyncResult({errorInfo,exitCode,signal,stdio,all,ipcOutput,context,options,command,escapedCommand,startTime});return handleResult(result,verboseInfo,options)},getAsyncResult=({errorInfo,exitCode,signal,stdio,all,ipcOutput,context,options,command,escapedCommand,startTime})=>("error"in errorInfo)?makeError({error:errorInfo.error,command,escapedCommand,timedOut:context.terminationReason==="timeout",isCanceled:context.terminationReason==="cancel"||context.terminationReason==="gracefulCancel",isGracefullyCanceled:context.terminationReason==="gracefulCancel",isMaxBuffer:errorInfo.error instanceof MaxBufferError,isForcefullyTerminated:context.isForcefullyTerminated,exitCode,signal,stdio,all,ipcOutput,options,startTime,isSync:!1}):makeSuccessResult({command,escapedCommand,stdio,all,ipcOutput,options,startTime});var init_main_async=__esm(()=>{init_source();init_command();init_options();init_fd_options();init_methods();init_result();init_reject();init_early_error();init_handle_async();init_strip_newline();init_output_async();init_kill();init_cleanup();init_setup();init_all_async();init_wait_subprocess();init_add();init_promise()});var mergeOptions=(boundOptions,options)=>{let newOptions=Object.fromEntries(Object.entries(options).map(([optionName,optionValue])=>[optionName,mergeOption(optionName,boundOptions[optionName],optionValue)]));return{...boundOptions,...newOptions}},mergeOption=(optionName,boundOptionValue,optionValue)=>{if(DEEP_OPTIONS.has(optionName)&&isPlainObject2(boundOptionValue)&&isPlainObject2(optionValue))return{...boundOptionValue,...optionValue};return optionValue},DEEP_OPTIONS;var init_bind=__esm(()=>{init_specific();DEEP_OPTIONS=new Set(["env",...FD_SPECIFIC_OPTIONS])});var createExeca=(mapArguments,boundOptions,deepOptions,setBoundExeca)=>{let createNested=(mapArguments2,boundOptions2,setBoundExeca2)=>createExeca(mapArguments2,boundOptions2,deepOptions,setBoundExeca2),boundExeca=(...execaArguments)=>callBoundExeca({mapArguments,deepOptions,boundOptions,setBoundExeca,createNested},...execaArguments);if(setBoundExeca!==void 0)setBoundExeca(boundExeca,createNested,boundOptions);return boundExeca},callBoundExeca=({mapArguments,deepOptions={},boundOptions={},setBoundExeca,createNested},firstArgument,...nextArguments)=>{if(isPlainObject2(firstArgument))return createNested(mapArguments,mergeOptions(boundOptions,firstArgument),setBoundExeca);let{file:file2,commandArguments,options,isSync}=parseArguments({mapArguments,firstArgument,nextArguments,deepOptions,boundOptions});return isSync?execaCoreSync(file2,commandArguments,options):execaCoreAsync(file2,commandArguments,options,createNested)},parseArguments=({mapArguments,firstArgument,nextArguments,deepOptions,boundOptions})=>{let callArguments=isTemplateString(firstArgument)?parseTemplates(firstArgument,nextArguments):[firstArgument,...nextArguments],[initialFile,initialArguments,initialOptions]=normalizeParameters(...callArguments),mergedOptions=mergeOptions(mergeOptions(deepOptions,boundOptions),initialOptions),{file:file2=initialFile,commandArguments=initialArguments,options=mergedOptions,isSync=!1}=mapArguments({file:initialFile,commandArguments:initialArguments,options:mergedOptions});return{file:file2,commandArguments,options,isSync}};var init_create=__esm(()=>{init_parameters();init_template();init_main_sync();init_main_async();init_bind()});var mapCommandAsync=({file:file2,commandArguments})=>parseCommand(file2,commandArguments),mapCommandSync=({file:file2,commandArguments})=>({...parseCommand(file2,commandArguments),isSync:!0}),parseCommand=(command,unusedArguments)=>{if(unusedArguments.length>0)throw TypeError(`The command and its arguments must be passed as a single string: ${command} ${unusedArguments}.`);let[file2,...commandArguments]=parseCommandString(command);return{file:file2,commandArguments}},parseCommandString=(command)=>{if(typeof command!=="string")throw TypeError(`The command must be a string: ${String(command)}.`);let trimmedCommand=command.trim();if(trimmedCommand==="")return[];let tokens=[];for(let token of trimmedCommand.split(SPACES_REGEXP)){let previousToken=tokens.at(-1);if(previousToken&&previousToken.endsWith("\\"))tokens[tokens.length-1]=`${previousToken.slice(0,-1)} ${token}`;else tokens.push(token)}return tokens},SPACES_REGEXP;var init_command2=__esm(()=>{SPACES_REGEXP=/ +/g});var setScriptSync=(boundExeca,createNested,boundOptions)=>{boundExeca.sync=createNested(mapScriptSync,boundOptions),boundExeca.s=boundExeca.sync},mapScriptAsync=({options})=>getScriptOptions(options),mapScriptSync=({options})=>({...getScriptOptions(options),isSync:!0}),getScriptOptions=(options)=>({options:{...getScriptStdinOption(options),...options}}),getScriptStdinOption=({input,inputFile,stdio})=>input===void 0&&inputFile===void 0&&stdio===void 0?{stdin:"inherit"}:{},deepScriptOptions;var init_script=__esm(()=>{deepScriptOptions={preferLocal:!0}});var execa,execaSync,execaCommand,execaCommandSync,execaNode,$,sendMessage2,getOneMessage2,getEachMessage2,getCancelSignal2;var init_execa=__esm(()=>{init_create();init_command2();init_node2();init_script();init_methods();execa=createExeca(()=>({})),execaSync=createExeca(()=>({isSync:!0})),execaCommand=createExeca(mapCommandAsync),execaCommandSync=createExeca(mapCommandSync),execaNode=createExeca(mapNode),$=createExeca(mapScriptAsync,{},deepScriptOptions,setScriptSync),{sendMessage:sendMessage2,getOneMessage:getOneMessage2,getEachMessage:getEachMessage2,getCancelSignal:getCancelSignal2}=getIpcExport()});function nowTimestamp(){return Date.now()}function buildStandardColumns(){return{createdAt:integer2("created_at").notNull().$defaultFn(nowTimestamp).default(0),updatedAt:integer2("updated_at").notNull().$defaultFn(nowTimestamp).default(0)}}function buildStandardColumnsWithSoftDelete(){return{...buildStandardColumns(),inUsed:integer2("in_used").notNull().default(1)}}function buildAppendOnlyColumns(){return{createdAt:integer2("created_at").notNull().$defaultFn(nowTimestamp).default(0)}}var standardColumns,standardColumnsWithSoftDelete,appendOnlyColumns;var init_common3=__esm(()=>{init_sqlite_core();standardColumns=buildStandardColumns();standardColumnsWithSoftDelete=buildStandardColumnsWithSoftDelete();appendOnlyColumns=buildAppendOnlyColumns()});function sqlExpressionToText(value){if(typeof value!=="object"||value===null||!("queryChunks"in value))return;let chunks=value.queryChunks;if(!chunks)return;return chunks.map((chunk)=>{if("value"in chunk&&typeof chunk.value==="string")return chunk.value;if("input"in chunk&&chunk.input!==void 0)return String(chunk.input);return String(chunk.value??"?")}).join("")}function getDrizzleTableName(table3){return String(table3[Symbol.for("drizzle:Name")])}function quoteIdent(name){return`"${name.replace(/"/g,'""')}"`}function defaultToSql(value){if(value==null)return value===null?"NULL":void 0;if(typeof value==="number")return String(value);if(typeof value==="string")return`'${value.replace(/'/g,"''")}'`;if(typeof value==="boolean")return value?"1":"0";return sqlExpressionToText(value)??String(value)}function generateCreateTableSql(table3){let config2=getTableConfig(table3),columnDefs=[],tableConstraints=[],compositeUniqueCols=new Set;for(let uc of config2.uniqueConstraints)if(uc.columns.length>1)for(let col of uc.columns)compositeUniqueCols.add(col.name);let compositePkCols=new Set;for(let pk of config2.primaryKeys)if(pk.columns.length>1)for(let col of pk.columns)compositePkCols.add(col.name);for(let col of config2.columns){let parts=[quoteIdent(col.name),col.getSQLType()];if(col.primary&&!compositePkCols.has(col.name))parts.push("PRIMARY KEY");if(col.notNull)parts.push("NOT NULL");if(col.hasDefault&&col.default!==void 0){let sqlDefault=defaultToSql(col.default);if(sqlDefault!==void 0)parts.push(`DEFAULT ${sqlDefault}`)}if(col.isUnique&&!compositeUniqueCols.has(col.name))parts.push("UNIQUE");columnDefs.push(parts.join(" "))}for(let pk of config2.primaryKeys)if(pk.columns.length>1){let pkCols=pk.columns.map((c3)=>quoteIdent(c3.name)).join(", ");tableConstraints.push(`PRIMARY KEY (${pkCols})`)}for(let uc of config2.uniqueConstraints)if(uc.columns.length>1){let cols=uc.columns.map((c3)=>quoteIdent(c3.name)).join(", ");tableConstraints.push(`UNIQUE (${cols})`)}for(let fk of config2.foreignKeys){let ref=fk.reference(),localCols=ref.columns.map((c3)=>quoteIdent(c3.name)).join(", "),foreignCols=ref.foreignColumns.map((c3)=>quoteIdent(c3.name)).join(", "),foreignTableName=getDrizzleTableName(ref.foreignTable),constraint=`FOREIGN KEY (${localCols}) REFERENCES ${quoteIdent(foreignTableName)} (${foreignCols})`;if(fk.onDelete)constraint+=` ON DELETE ${fk.onDelete}`;if(fk.onUpdate)constraint+=` ON UPDATE ${fk.onUpdate}`;tableConstraints.push(constraint)}let allDefs=[...columnDefs,...tableConstraints];return`CREATE TABLE IF NOT EXISTS ${quoteIdent(config2.name)} (
|
|
247
247
|
${allDefs.join(`,
|
|
248
248
|
`)}
|
|
249
|
-
)`}var init_ddl=__esm(()=>{init_sqlite_core()});var init_classic=__esm(()=>{init_external();init_external()});var init_v4=__esm(()=>{init_classic()});function isColumnType(column2,columnTypes){return columnTypes.includes(column2.columnType)}function isWithEnum(column2){return"enumValues"in column2&&Array.isArray(column2.enumValues)&&column2.enumValues.length>0}function columnToSchema(column2,factory){let z$1=factory?.zodInstance??exports_external,coerce=factory?.coerce??{},schema;if(isWithEnum(column2))schema=column2.enumValues.length?z$1.enum(column2.enumValues):z$1.string();if(!schema){if(isColumnType(column2,["PgGeometry","PgPointTuple"]))schema=z$1.tuple([z$1.number(),z$1.number()]);else if(isColumnType(column2,["PgGeometryObject","PgPointObject"]))schema=z$1.object({x:z$1.number(),y:z$1.number()});else if(isColumnType(column2,["PgHalfVector","PgVector"]))schema=z$1.array(z$1.number()),schema=column2.dimensions?schema.length(column2.dimensions):schema;else if(isColumnType(column2,["PgLine"]))schema=z$1.tuple([z$1.number(),z$1.number(),z$1.number()]);else if(isColumnType(column2,["PgLineABC"]))schema=z$1.object({a:z$1.number(),b:z$1.number(),c:z$1.number()});else if(isColumnType(column2,["PgArray"]))schema=z$1.array(columnToSchema(column2.baseColumn,factory)),schema=column2.size?schema.length(column2.size):schema;else if(column2.dataType==="array")schema=z$1.array(z$1.any());else if(column2.dataType==="number")schema=numberColumnToSchema(column2,z$1,coerce);else if(column2.dataType==="bigint")schema=bigintColumnToSchema(column2,z$1,coerce);else if(column2.dataType==="boolean")schema=coerce===!0||coerce.boolean?z$1.coerce.boolean():z$1.boolean();else if(column2.dataType==="date")schema=coerce===!0||coerce.date?z$1.coerce.date():z$1.date();else if(column2.dataType==="string")schema=stringColumnToSchema(column2,z$1,coerce);else if(column2.dataType==="json")schema=jsonSchema;else if(column2.dataType==="custom")schema=z$1.any();else if(column2.dataType==="buffer")schema=bufferSchema}if(!schema)schema=z$1.any();return schema}function numberColumnToSchema(column2,z2,coerce){let unsigned=column2.getSQLType().includes("unsigned"),min,max,integer4=!1;if(isColumnType(column2,["MySqlTinyInt","SingleStoreTinyInt"]))min=unsigned?0:CONSTANTS.INT8_MIN,max=unsigned?CONSTANTS.INT8_UNSIGNED_MAX:CONSTANTS.INT8_MAX,integer4=!0;else if(isColumnType(column2,["PgSmallInt","PgSmallSerial","MySqlSmallInt","SingleStoreSmallInt"]))min=unsigned?0:CONSTANTS.INT16_MIN,max=unsigned?CONSTANTS.INT16_UNSIGNED_MAX:CONSTANTS.INT16_MAX,integer4=!0;else if(isColumnType(column2,["PgReal","MySqlFloat","MySqlMediumInt","SingleStoreMediumInt","SingleStoreFloat"]))min=unsigned?0:CONSTANTS.INT24_MIN,max=unsigned?CONSTANTS.INT24_UNSIGNED_MAX:CONSTANTS.INT24_MAX,integer4=isColumnType(column2,["MySqlMediumInt","SingleStoreMediumInt"]);else if(isColumnType(column2,["PgInteger","PgSerial","MySqlInt","SingleStoreInt"]))min=unsigned?0:CONSTANTS.INT32_MIN,max=unsigned?CONSTANTS.INT32_UNSIGNED_MAX:CONSTANTS.INT32_MAX,integer4=!0;else if(isColumnType(column2,["PgDoublePrecision","MySqlReal","MySqlDouble","SingleStoreReal","SingleStoreDouble","SQLiteReal"]))min=unsigned?0:CONSTANTS.INT48_MIN,max=unsigned?CONSTANTS.INT48_UNSIGNED_MAX:CONSTANTS.INT48_MAX;else if(isColumnType(column2,["PgBigInt53","PgBigSerial53","MySqlBigInt53","MySqlSerial","SingleStoreBigInt53","SingleStoreSerial","SQLiteInteger"]))unsigned=unsigned||isColumnType(column2,["MySqlSerial","SingleStoreSerial"]),min=unsigned?0:Number.MIN_SAFE_INTEGER,max=Number.MAX_SAFE_INTEGER,integer4=!0;else if(isColumnType(column2,["MySqlYear","SingleStoreYear"]))min=1901,max=2155,integer4=!0;else min=Number.MIN_SAFE_INTEGER,max=Number.MAX_SAFE_INTEGER;let schema=coerce===!0||coerce?.number?integer4?z2.coerce.number():z2.coerce.number().int():integer4?z2.int():z2.number();return schema=schema.gte(min).lte(max),schema}function bigintColumnToSchema(column2,z2,coerce){let unsigned=column2.getSQLType().includes("unsigned"),min=unsigned?0n:CONSTANTS.INT64_MIN,max=unsigned?CONSTANTS.INT64_UNSIGNED_MAX:CONSTANTS.INT64_MAX;return(coerce===!0||coerce?.bigint?z2.coerce.bigint():z2.bigint()).gte(min).lte(max)}function stringColumnToSchema(column2,z2,coerce){if(isColumnType(column2,["PgUUID"]))return z2.uuid();let max,regex,fixed=!1;if(isColumnType(column2,["PgVarchar","SQLiteText"]))max=column2.length;else if(isColumnType(column2,["MySqlVarChar","SingleStoreVarChar"]))max=column2.length??CONSTANTS.INT16_UNSIGNED_MAX;else if(isColumnType(column2,["MySqlText","SingleStoreText"]))if(column2.textType==="longtext")max=CONSTANTS.INT32_UNSIGNED_MAX;else if(column2.textType==="mediumtext")max=CONSTANTS.INT24_UNSIGNED_MAX;else if(column2.textType==="text")max=CONSTANTS.INT16_UNSIGNED_MAX;else max=CONSTANTS.INT8_UNSIGNED_MAX;if(isColumnType(column2,["PgChar","MySqlChar","SingleStoreChar"]))max=column2.length,fixed=!0;if(isColumnType(column2,["PgBinaryVector"]))regex=/^[01]+$/,max=column2.dimensions;let schema=coerce===!0||coerce?.string?z2.coerce.string():z2.string();return schema=regex?schema.regex(regex):schema,max&&fixed?schema.length(max):max?schema.max(max):schema}function getColumns(tableLike){return isTable(tableLike)?getTableColumns(tableLike):getViewSelectedFields(tableLike)}function handleColumns(columns2,refinements,conditions2,factory){let columnSchemas={};for(let[key,selected]of Object.entries(columns2)){if(!is(selected,Column)&&!is(selected,SQL)&&!is(selected,SQL.Aliased)&&typeof selected==="object"){let columns3=isTable(selected)||isView(selected)?getColumns(selected):selected;columnSchemas[key]=handleColumns(columns3,refinements[key]??{},conditions2,factory);continue}let refinement=refinements[key];if(refinement!==void 0&&typeof refinement!=="function"){columnSchemas[key]=refinement;continue}let column2=is(selected,Column)?selected:void 0,schema=column2?columnToSchema(column2,factory):exports_external.any(),refined=typeof refinement==="function"?refinement(schema):schema;if(conditions2.never(column2))continue;else columnSchemas[key]=refined;if(column2){if(conditions2.nullable(column2))columnSchemas[key]=columnSchemas[key].nullable();if(conditions2.optional(column2))columnSchemas[key]=columnSchemas[key].optional()}}return exports_external.object(columnSchemas)}function handleEnum(enum_,factory){return(factory?.zodInstance??exports_external).enum(enum_.enumValues)}var CONSTANTS,isPgEnum2,literalSchema,jsonSchema,bufferSchema,selectConditions,insertConditions,createSelectSchema=(entity2,refine2)=>{if(isPgEnum2(entity2))return handleEnum(entity2);let columns2=getColumns(entity2);return handleColumns(columns2,refine2??{},selectConditions)},createInsertSchema=(entity2,refine2)=>{let columns2=getColumns(entity2);return handleColumns(columns2,refine2??{},insertConditions)};var init_drizzle_zod=__esm(()=>{init_v4();init_drizzle_orm();CONSTANTS={INT8_MIN:-128,INT8_MAX:127,INT8_UNSIGNED_MAX:255,INT16_MIN:-32768,INT16_MAX:32767,INT16_UNSIGNED_MAX:65535,INT24_MIN:-8388608,INT24_MAX:8388607,INT24_UNSIGNED_MAX:16777215,INT32_MIN:-2147483648,INT32_MAX:2147483647,INT32_UNSIGNED_MAX:4294967295,INT48_MIN:-140737488355328,INT48_MAX:140737488355327,INT48_UNSIGNED_MAX:281474976710655,INT64_MIN:-9223372036854775808n,INT64_MAX:9223372036854775807n,INT64_UNSIGNED_MAX:18446744073709551615n};isPgEnum2=isWithEnum,literalSchema=exports_external.union([exports_external.string(),exports_external.number(),exports_external.boolean(),exports_external.null()]),jsonSchema=exports_external.union([literalSchema,exports_external.record(exports_external.string(),exports_external.any()),exports_external.array(exports_external.any())]),bufferSchema=exports_external.custom((v)=>v instanceof Buffer);selectConditions={never:()=>!1,optional:()=>!1,nullable:(column2)=>!column2.notNull},insertConditions={never:(column2)=>column2?.generated?.type==="always"||column2?.generatedIdentity?.type==="always",optional:(column2)=>!column2.notNull||column2.notNull&&column2.hasDefault,nullable:(column2)=>!column2.notNull}});function defineTable(name,columns2){let table3=sqliteTable(name,columns2),insert2,select3,ddl;return{table:table3,get insertSchema(){if(insert2===void 0)insert2=createInsertSchema(table3);return insert2},get selectSchema(){if(select3===void 0)select3=createSelectSchema(table3);return select3},get createTableSql(){if(ddl===void 0)ddl=generateCreateTableSql(table3);return ddl}}}var init_define_table=__esm(()=>{init_sqlite_core();init_drizzle_zod();init_ddl()});var init_schema=__esm(()=>{init_sqlite_core();init_define_table();init_common3()});function getProcessEnv(){return getEnvVars()}var configSchema2;var init_config=__esm(()=>{init_dist();init_dist2();init_zod();configSchema2=exports_external.object({app:exports_external.object({name:exports_external.string().default("app"),env:exports_external.enum(["development","staging","production","test"]).default("development"),port:exports_external.number().int().positive().default(3000)}).default({name:"app",env:"development",port:3000}),database:exports_external.object({url:exports_external.string().default(":memory:")}).default({url:":memory:"}),logging:exports_external.object({level:exports_external.enum(["trace","debug","info","warn","error","fatal"]).default("info"),console:exports_external.boolean().default(!0),file:exports_external.boolean().default(!1),filePath:exports_external.string().optional(),json:exports_external.boolean().default(!1)}).default({level:"info",console:!0,file:!1,json:!1})})});import{appendFileSync as appendFileSync2,cpSync,createReadStream as createReadStream2,createWriteStream as createWriteStream2,existsSync,mkdirSync,readdirSync,readFileSync as readFileSync3,realpathSync,renameSync,rmSync,statSync as statSync2,writeFileSync as writeFileSync2}from"node:fs";import{dirname,resolve as resolvePath}from"node:path";function createNodeFileSystem(root,paths){let projectRoot=root??findProjectRoot(paths?.cwd??process.cwd());return{getProjectRoot:()=>projectRoot,resolve:(...segments)=>resolvePath(projectRoot,...segments),exists:(path6)=>existsSync(path6),readFile:(path6)=>readFileSync3(path6,"utf-8"),readFileStream:async function*(path6){let stream=createReadStream2(path6,{encoding:"utf-8"}),buffer="";for await(let chunk of stream){buffer+=chunk;let lines=buffer.split(/\r?\n/);buffer=lines.pop()??"";for(let line of lines)yield line}if(buffer.length>0)yield buffer},writeFile:(path6,content)=>{ensureParentDir(path6),writeFileSync2(path6,content,"utf-8")},appendFile:(path6,content)=>{ensureParentDir(path6),appendFileSync2(path6,content,"utf-8")},ensureDir:(path6)=>{mkdirSync(path6,{recursive:!0})},readDir:(path6)=>readdirSync(path6),deleteFile:(path6)=>{rmSync(path6,{recursive:!0,force:!0})},rename:(src,dest)=>{renameSync(src,dest)},copy:(src,dest)=>{cpSync(src,dest,{recursive:!0})},createWriteStream:(path6)=>{return ensureParentDir(path6),createWriteStream2(path6,{flags:"a"})},stat:(path6)=>{try{let s2=statSync2(path6);return{isFile:()=>s2.isFile(),isDirectory:()=>s2.isDirectory(),size:s2.size,mtimeMs:s2.mtimeMs}}catch{return null}},realPath:(path6)=>realpathSync(path6)}}function ensureParentDir(filePath){let dir=dirname(filePath);if(!existsSync(dir))mkdirSync(dir,{recursive:!0})}function findProjectRoot(startDir){let dir=resolvePath(startDir),root=resolvePath("/");while(dir!==root){if(existsSync(resolvePath(dir,"bun.lock"))||existsSync(resolvePath(dir,"package.json")))return dir;let parent=resolvePath(dir,"..");if(parent===dir)break;dir=parent}return startDir}var init_file_system_node=()=>{};function resolveDeadline(optionTimeout,defaultTimeout){if(optionTimeout===null)return null;let candidate=optionTimeout===void 0?defaultTimeout:optionTimeout;if(candidate===void 0||candidate===null)return candidate;if(!Number.isInteger(candidate)||candidate<=0||candidate>2147483647)throw TypeError(`Process timeout must be a positive integer within the native timer range (1-2147483647 ms), got ${String(candidate)}`);return candidate}function resolveKillGraceMs(optionGraceMs){if(optionGraceMs===void 0)return 5000;if(!Number.isInteger(optionGraceMs)||optionGraceMs<0||optionGraceMs>2147483647)throw TypeError(`Process killGraceMs must be a non-negative integer within the native timer range (0-2147483647 ms), got ${String(optionGraceMs)}`);return optionGraceMs}function groupExists(pid){try{return process.kill(-pid,0),!0}catch(error51){return error51.code==="EPERM"}}function signalGroup(pid,signal){try{return process.kill(-pid,signal),!0}catch{return!1}}async function waitForGroupExit(pid,budgetMs){let giveUpAt=Date.now()+budgetMs;while(groupExists(pid)){if(Date.now()>=giveUpAt)return!1;await new Promise((resolve)=>setTimeout(resolve,25))}return!0}async function reapProcessGroup(pid,graceMs){if(!signalGroup(pid,"SIGTERM"))return!1;if(await waitForGroupExit(pid,graceMs))return!0;return signalGroup(pid,"SIGKILL"),await waitForGroupExit(pid,2000),!0}function ownProcessGroupLifecycle(ownership){let{pid,graceMs}=ownership,trigger,termination,timer,initiate=(reason)=>{if(trigger!==void 0)return;trigger=reason,termination=reapProcessGroup(pid,graceMs)};if(ownership.deadlineMs!==void 0)timer=setTimeout(()=>initiate("timeout"),ownership.deadlineMs);let onAbort=()=>initiate("cancelled");if(ownership.signal!==void 0)if(ownership.signal.aborted)onAbort();else ownership.signal.addEventListener("abort",onAbort,{once:!0});return{finish:async()=>{if(trigger===void 0){await reapProcessGroup(pid,graceMs);return}return await termination?trigger:void 0},stop:()=>{if(timer!==void 0)clearTimeout(timer);ownership.signal?.removeEventListener("abort",onAbort)}}}import{isatty}from"node:tty";function processEventSeverity(reason,exitCode){if(reason==="error")return"error";if(reason==="timeout"||reason==="cancelled")return"warning";if(exitCode!==null&&exitCode!==0)return"warning";return"info"}function resolveChildEnv(env2,envMode){if(envMode==="replace")return env2;let merged={};for(let[key,value]of Object.entries(getProcessEnv()))if(value!==void 0)merged[key]=value;return{...merged,...env2}}class NodeProcessExecutor{config;constructor(config2={}){this.config=config2}async run(options){return this.trace("process.run",()=>this.runUntraced(options))}async runUntraced(options){let args=options.args??[],deadline=resolveDeadline(options.timeout,this.config.defaultTimeout),killGraceMs=resolveKillGraceMs(options.killGraceMs),groupOwned=process.platform!=="win32"&&(typeof deadline==="number"||options.signal!==void 0),execaOptions=buildExecaOptions({cwd:options.cwd??this.config.paths?.cwd,env:options.env,timeout:typeof deadline==="number"?deadline:void 0,maxOutput:options.maxOutput??this.config.defaultMaxOutput,rejectOnError:options.rejectOnError??!1,outputPolicy:this.config.output,forceBuffered:options.forceBuffered??!1,signal:options.signal,groupOwned}),startedAt=Date.now(),startedIso=new Date(startedAt).toISOString(),registryId=this.beginRegistry(options.command,args,{label:options.label,source:options.source??"one-shot",teamId:options.teamId,agentId:options.agentId,startedAt:startedIso});this.emitProcessEvent("process.started",{command:options.command,args,exitCode:null,durationMs:0,reason:"exit",timestamp:startedIso,severity:"info",...options.label!==void 0?{label:options.label}:{}});let ownership;try{let subprocess=execa(options.command,args,execaOptions);if(groupOwned&&subprocess.pid!==void 0)ownership=ownProcessGroupLifecycle({pid:subprocess.pid,deadlineMs:typeof deadline==="number"?deadline:void 0,signal:options.signal,graceMs:killGraceMs});if(subprocess.pid!==void 0){if(this.config.registry?.update(registryId,{pid:subprocess.pid}),options.onSpawn!==void 0)try{options.onSpawn(subprocess.pid)}catch{}}let stopOwnedTermination=()=>ownership?.stop();observeOutput(subprocess.stdout,"stdout",options.onOutput),observeOutput(subprocess.stderr,"stderr",options.onOutput);let result=await subprocess.finally(stopOwnedTermination),ownedOutcome=ownership!==void 0?await ownership.finish():void 0,processResult={command:options.command,args,exitCode:result.exitCode??null,stdout:asString(result.stdout),stderr:asString(result.stderr),...result.signalDescription!==void 0?{signal:result.signalDescription}:{},durationMs:result.durationMs,outcome:ownedOutcome??(result.signalDescription!==void 0?"signal":"exit")};return this.completeRegistry(registryId,processResult.exitCode),this.emitExitedFromResult(options,processResult,result),processResult}catch(error51){let failed=error51,ownedOutcome=ownership!==void 0?await ownership.finish():void 0,processResult={command:options.command,args,exitCode:failed.exitCode??null,stdout:asString(failed.stdout),stderr:asString(failed.stderr),...failed.signalDescription!==void 0?{signal:failed.signalDescription}:failed.signal!==void 0?{signal:failed.signal}:{},durationMs:failed.durationMs??Date.now()-startedAt,outcome:ownedOutcome??classifyFailedCompletion(failed)};if(this.completeRegistry(registryId,processResult.exitCode),this.emitExitedFromResult(options,processResult,error51,error51),options.rejectOnError)throw error51;return processResult}}runStreaming(options){let args=options.args??[],startedAt=Date.now(),startedIso=new Date(startedAt).toISOString(),registryId=this.beginRegistry(options.command,args,{label:options.label,source:options.source??"other",teamId:options.teamId,agentId:options.agentId,startedAt:startedIso});try{this.emitProcessEvent("process.started",{command:options.command,args,exitCode:null,durationMs:0,reason:"exit",timestamp:startedIso,severity:"info",...options.label!==void 0?{label:options.label}:{}});let subprocess=Bun.spawn({cmd:[options.command,...args],stdin:"pipe",stdout:"pipe",stderr:"pipe",...options.cwd!==void 0?{cwd:options.cwd}:{},...options.env!==void 0?{env:resolveChildEnv(options.env,options.envMode)}:{}}),pipe2=new BunPipeProcess(subprocess);if(pipe2.pid!==null)this.config.registry?.update(registryId,{pid:pipe2.pid});return new ObservedPipeProcess(pipe2,this.config.events,{command:options.command,args,startedAt,registry:this.config.registry,registryId,...options.label!==void 0?{label:options.label}:{}})}catch(error51){throw this.completeRegistry(registryId,null),this.emitProcessEvent("process.exited",{command:options.command,args,exitCode:null,durationMs:0,reason:"error",timestamp:new Date().toISOString(),severity:processEventSeverity("error",null),...options.label!==void 0?{label:options.label}:{},error:errorMessage(error51)}),error51}}async trace(name,fn){if(this.config.tracer===void 0)return await fn();return await this.config.tracer.traceAsync(name,async()=>await fn())}beginRegistry(command,args,meta3){let registry2=this.config.registry;if(!registry2)return"";return registry2.begin({command,args,source:meta3.source,startedAt:meta3.startedAt,...meta3.label!==void 0?{label:meta3.label}:{},...meta3.teamId!==void 0?{teamId:meta3.teamId}:{},...meta3.agentId!==void 0?{agentId:meta3.agentId}:{}})}completeRegistry(id,exitCode,pid){if(!id||!this.config.registry)return;this.config.registry.complete(id,{exitCode,...pid!==void 0?{pid}:{}})}emitExitedFromResult(options,result,completion,error51){let reason=result.outcome??(isTimedOut(completion)?"timeout":result.signal!==void 0?"signal":error51?"error":"exit");this.emitProcessEvent("process.exited",{command:result.command,args:result.args,exitCode:result.exitCode,...result.signal!==void 0?{signal:result.signal}:{},durationMs:result.durationMs,reason,timestamp:new Date().toISOString(),severity:processEventSeverity(reason,result.exitCode),...options.label!==void 0?{label:options.label}:{},...error51!==void 0?{error:errorMessage(error51)}:{}})}emitProcessEvent(event,detail){this.config.events?.emit(event,detail)}}class ObservedPipeProcess{inner;killedWith;exited;constructor(inner,events,context){this.inner=inner,this.exited=inner.exited.then((exitCode)=>{if(context.registry&&context.registryId)context.registry.complete(context.registryId,{exitCode,...inner.pid!==null?{pid:inner.pid}:{}});return events?.emit("process.exited",{command:context.command,args:context.args,exitCode,...this.killedWith!==void 0?{signal:String(this.killedWith)}:{},durationMs:Date.now()-context.startedAt,reason:this.killedWith!==void 0?"signal":"exit",timestamp:new Date().toISOString(),severity:processEventSeverity(this.killedWith!==void 0?"signal":"exit",exitCode),...context.label!==void 0?{label:context.label}:{}}),exitCode})}get pid(){return this.inner.pid}get stdout(){return this.inner.stdout}get stderr(){return this.inner.stderr}writeStdin(input){this.inner.writeStdin(input)}endStdin(){this.inner.endStdin()}kill(signal){this.killedWith=signal,this.inner.kill(signal)}}class BunPipeProcess{subprocess;writer;constructor(subprocess){this.subprocess=subprocess,this.writer=subprocess.stdin}get pid(){return this.subprocess.pid??null}get stdout(){return isReadableStream3(this.subprocess.stdout)?this.subprocess.stdout:null}get stderr(){return isReadableStream3(this.subprocess.stderr)?this.subprocess.stderr:null}get exited(){return this.subprocess.exited}writeStdin(input){this.writer.write(input),this.writer.flush?.()}endStdin(){this.writer.end?.()}kill(signal){this.subprocess.kill(signal)}}function buildExecaOptions(opts){let mode=opts.forceBuffered?"buffered":opts.outputPolicy?.mode??"buffered",streamToTerminal=mode==="stream"&&(opts.outputPolicy?.mode==="stream"?opts.outputPolicy.isTTY??process.stdout.isTTY??isatty(1):!1);return{reject:opts.rejectOnError,stdin:"ignore",stripFinalNewline:!0,...mode==="pipe"?{stdout:"pipe",stderr:"pipe"}:streamToTerminal?{stdout:["inherit","pipe"],stderr:["inherit","pipe"]}:{all:!0},...opts.cwd!==void 0?{cwd:opts.cwd}:{},...opts.env!==void 0?{env:opts.env}:{},...opts.timeout!==void 0&&!opts.groupOwned?{timeout:opts.timeout}:{},...opts.maxOutput!==void 0?{maxBuffer:opts.maxOutput}:{},...opts.groupOwned?{detached:!0}:{},...opts.signal!==void 0&&!opts.groupOwned?{cancelSignal:opts.signal}:{}}}function classifyFailedCompletion(error51){if(error51.timedOut===!0)return"timeout";if(error51.isCanceled===!0)return"cancelled";if(error51.isTerminated===!0||error51.signalDescription!==void 0||error51.signal!==void 0)return"signal";return"error"}function observeOutput(stream,name,observer){if(!stream||!observer)return;let decoder=new TextDecoder,emit=(chunk)=>{try{observer({stream:name,chunk,timestamp:new Date().toISOString()})}catch{}};stream.on("data",(chunk)=>{emit(typeof chunk==="string"?chunk:decoder.decode(chunk,{stream:!0}))}),stream.on("end",()=>{let tail=decoder.decode();if(tail.length>0)emit(tail)})}function asString(value){if(typeof value==="string")return value;if(value instanceof Uint8Array)return new TextDecoder().decode(value);if(Array.isArray(value))return value.map(String).join("");return""}function isReadableStream3(value){return value instanceof ReadableStream}function isTimedOut(error51){return typeof error51==="object"&&error51!==null&&"timedOut"in error51&&error51.timedOut===!0}function errorMessage(error51){return error51 instanceof Error?error51.message:String(error51)}var init_process_executor=__esm(()=>{init_execa();init_config()});var init_context=()=>{};var SEP;var init_path=__esm(()=>{SEP=globalThis.process?.platform==="win32"?"\\":"/"});var init_schema_validation=__esm(()=>{init_dist2()});var init_types=()=>{};var init_dist3=__esm(()=>{init_file_system_node();init_process_executor();init_config();init_context();init_path();init_schema_validation();init_types()});init_zod();init_zod();var BOARD_MODULE_ID_PATTERN=/^[a-z][a-z0-9-]*$/;function isSafeFrameUrl(value){let parsed;try{parsed=new URL(value)}catch{return!1}if(parsed.protocol!=="http:"&&parsed.protocol!=="https:")return!1;return parsed.username===""&&parsed.password===""}var sharedDeclarationFields={id:exports_external.string().regex(BOARD_MODULE_ID_PATTERN,"module id must match ^[a-z][a-z0-9-]*$"),name:exports_external.string().min(1,"module name must not be empty"),icon:exports_external.string().min(1,"module icon must not be empty"),sidebarLabel:exports_external.string().optional(),description:exports_external.string().optional(),order:exports_external.number().refine((value)=>Number.isFinite(value),{message:"module order must be a finite number"}).optional(),enabled:exports_external.boolean().optional().default(!0)},boardModuleDeclarationSchema=exports_external.discriminatedUnion("type",[exports_external.object({...sharedDeclarationFields,type:exports_external.literal("react"),directory:exports_external.string().min(1),entry:exports_external.string().min(1),styles:exports_external.array(exports_external.string().min(1)).optional().default(()=>[])}).strict(),exports_external.object({...sharedDeclarationFields,type:exports_external.literal("iframe"),url:exports_external.string().refine(isSafeFrameUrl,{message:"iframe url must be an absolute http(s) URL without embedded credentials (relative URLs and other schemes are rejected)"})}).strict()]),boardModuleDeclarationsSchema=exports_external.array(boardModuleDeclarationSchema);var RFC3339_PATTERN=/^\d{4}-\d{2}-\d{2}[Tt]\d{2}:\d{2}:\d{2}(\.\d+)?([Zz]|[+-]\d{2}:\d{2})$/;function isRfc3339Timestamp(value){return RFC3339_PATTERN.test(value)&&Number.isFinite(Date.parse(value))}var ALL_FINDING_CODES=["L1.markdown-parse","L1.schema-validation","L2.missing-required-section","L2.forbidden-section","L2.disallowed-section","L2.heading-level","L2.section-order","L2.unclosed-code-fence","L3.requirements-format","L3.requirements-checkbox","L3.requirements-empty","L3.ac-empty","L3.ac-requirement-coverage","L3.solution-file-line","L3.review-priority-table","L3.required-section-placeholder","L3.plan-format","L3.unchecked-checklist","L3.ac-checklist-text","L3.ac-bdd-error","L3.ac-bdd-warning","L3.ac-bdd-invalid","L3.scope-delineation","L3.one-active-goal","L3.children-limit","L3.review-testing-contradiction","L4.design-placeholder","L4.feature-not-found","L4.feature-terminal","L4.missing-feature-id","L4.parent-not-found","L4.dependency-not-found","L4.rollup-subtasks-open","L4.rollup-parent-open","L4.rollup-missing-roster","L4.rollup-roster-not-declared-dependency","L4.readiness-blocked","L4.prose-prerequisite-unlisted","L4.prerequisite-cycle","L4.prerequisite-not-done","L4.gate-language","L4.linked-task-parse-failed","L4.orphan-scenarios","L4.uncovered-task-scenario","L4.uncovered-feature-scenario","L4.verdict-rows-match-no-scenario","L4.verifying-incomplete-tasks","L4.dogfood-missing","L4.stale-line-anchor","L4.anchor-unresolved","L4.anchor-subject-mismatch","L4.malformed-verdict-artifact","L4.scenario-unverified","L4.testing-verdict-stub","L4.evidence-not-recoverable","L4.feature-receipt-missing","L4.feature-receipt-malformed","L4.feature-receipt-cross-feature","L4.feature-receipt-divergent","L4.feature-receipt-failed","L4.feature-receipt-run","L4.feature-receipt-stale","L4.feature-receipt-contract","precheck-size","precheck-evidence","inventory-coverage"];function isFindingCode(code){return ALL_FINDING_CODES.includes(code)}init_zod();var projectEntrySchema=exports_external.object({name:exports_external.string().min(1),path:exports_external.string().min(1),port:exports_external.number().int().nonnegative().default(0)}),projectsFileSchema=exports_external.object({schema_version:exports_external.literal(1).default(1),projects:exports_external.array(projectEntrySchema).default([])});init_zod();var slashCommandCategorySchema=exports_external.enum(["git","dev","sys","harness"]),slashCommandItemSchema=exports_external.object({name:exports_external.string().min(1),description:exports_external.string().min(1),category:slashCommandCategorySchema.default("dev"),argumentHint:exports_external.string().optional(),tags:exports_external.array(exports_external.string()).default([]),role:exports_external.string().optional(),source:exports_external.string().optional()}),slashCommandsFileSchema=exports_external.object({version:exports_external.number().int().default(1),updatedAt:exports_external.string().optional(),commands:exports_external.array(slashCommandItemSchema).default([])});var SPUR_LOG_LEVELS=["debug","info","warn","error"],DEFAULT_TASKS_DIR="docs/tasks",DEFAULT_FEATURES_DIR="docs/features",DEFAULT_DATABASE_URL=".spur/spur.db";var folderConfigSchema=exports_external.object({baseCounter:exports_external.number().int().nonnegative().default(0),label:exports_external.string().optional()});function folderPathWithDefault(defaultPath){return exports_external.preprocess((v)=>v==null?void 0:v,exports_external.string().default(defaultPath))}var tasksConfigSchema=exports_external.object({folders:exports_external.record(exports_external.string(),folderConfigSchema).default({}),active:folderPathWithDefault(DEFAULT_TASKS_DIR),severity:exports_external.record(exports_external.string(),exports_external.enum(["error","warning","off"])).optional()}).superRefine((data,ctx)=>{if(data.severity){for(let code of Object.keys(data.severity))if(!isFindingCode(code))ctx.addIssue({code:exports_external.ZodIssueCode.custom,path:["severity",code],message:`Unknown finding code "${code}" in severity overrides map`})}}),featuresConfigSchema=exports_external.object({dir:folderPathWithDefault(DEFAULT_FEATURES_DIR)}),EXECUTOR_CAPABILITY_TIERS=["cheap","standard","capable-1","capable-2","capable-3"];function normalizeExecutorTier(value){return value==="capable"?"capable-1":value}var executorCapabilityTierSchema=exports_external.preprocess((value)=>{if(value===void 0||value===null)return;return typeof value==="string"?normalizeExecutorTier(value):value},exports_external.enum(EXECUTOR_CAPABILITY_TIERS).optional()),AGENT_ROLE_NAMES=["scribe","coder","reviewer","planner"];var EXECUTION_CAPABILITY_AXES=["fsRead","fsWrite","networkEgress","processSpawn","externalMutationApproval"],SESSION_CAPABILITY_AXES=["resumeById","sessionDir","persistentStdin","structuredOutput"],AGENT_RUN_CAPABILITY_AXES=[...EXECUTION_CAPABILITY_AXES,...SESSION_CAPABILITY_AXES],EXECUTION_CAPABILITY_STATES=["enforced","available","unavailable","unknown"],EXECUTION_CAPABILITY_PROVENANCES=["native-known","operator-configured","unattested"],ExecutionCapabilityAttestationSchema=exports_external.object({state:exports_external.enum(EXECUTION_CAPABILITY_STATES),provenance:exports_external.enum(EXECUTION_CAPABILITY_PROVENANCES)}),ExecutionCapabilitiesSchema=exports_external.object({version:exports_external.literal(1),axes:exports_external.partialRecord(exports_external.enum(EXECUTION_CAPABILITY_AXES),ExecutionCapabilityAttestationSchema)}),EXECUTION_CAPABILITY_REQUIREMENTS=["available","enforced"],RequiresCapabilitiesSchema=exports_external.partialRecord(exports_external.enum(AGENT_RUN_CAPABILITY_AXES),exports_external.enum(EXECUTION_CAPABILITY_REQUIREMENTS)),executorAvailabilityOwnerSchema=exports_external.enum(["operator","quota","probe"]),executorDisabledObjectSchema=exports_external.object({owner:executorAvailabilityOwnerSchema,since:exports_external.string().refine(isRfc3339Timestamp,{message:"since must be an RFC 3339 timestamp"}),reason:exports_external.string().min(1)}),AgentExecutorConfigSchema=exports_external.object({name:exports_external.string().min(1),agent:exports_external.string().min(1),model:exports_external.string().min(1).optional(),tier:executorCapabilityTierSchema.optional(),executionCapabilities:ExecutionCapabilitiesSchema.optional(),disabled:exports_external.union([exports_external.boolean(),executorDisabledObjectSchema]).default(!1)});var AgentRoleConfigSchema=exports_external.object({tier:exports_external.enum(EXECUTOR_CAPABILITY_TIERS).optional(),stages:exports_external.array(exports_external.string().min(1)).min(1).optional()});var FleetMemberSchema=exports_external.object({id:exports_external.string().min(1).optional(),role:exports_external.enum(AGENT_ROLE_NAMES,{error:(issue2)=>Error(`Unknown role "${issue2.input}" — expected one of: ${AGENT_ROLE_NAMES.join(", ")}`)}).optional(),executor:exports_external.string().min(1).optional(),purpose:exports_external.string().optional(),enabled:exports_external.boolean().optional()}),FLEET_STRATEGIES=["rest","gtd"],FleetMemberEntrySchema=FleetMemberSchema.superRefine((member,ctx)=>{if(member.role===void 0&&member.executor===void 0)ctx.addIssue({code:exports_external.ZodIssueCode.custom,message:"must declare a role or an executor — at least one is required"})}),AgentFleetSchema=exports_external.object({enabled:exports_external.boolean().default(!1),strategy:exports_external.enum(FLEET_STRATEGIES).default("rest"),orchestrator:exports_external.string().min(1).optional(),members:exports_external.array(FleetMemberEntrySchema).default([])});var AgentOutputConfigSchema=exports_external.object({"max-bytes":exports_external.number().int().positive().optional(),"max-lines":exports_external.number().int().positive().optional()}),AgentConfigSchema=exports_external.object({default:exports_external.string().optional(),executors:exports_external.array(AgentExecutorConfigSchema).optional(),roles:exports_external.record(exports_external.string(),AgentRoleConfigSchema).optional(),output:AgentOutputConfigSchema.optional(),sessionAffinity:exports_external.boolean().optional(),fleet:AgentFleetSchema.optional()}).superRefine((value,ctx)=>{for(let key of Object.keys(value.roles??{}))if(!AGENT_ROLE_NAMES.includes(key))ctx.addIssue({code:exports_external.ZodIssueCode.custom,path:["roles",key],message:`Unknown role "${key}" — expected one of: ${AGENT_ROLE_NAMES.join(", ")}`});let executors=value.executors,executorNames=new Set;if(executors!==void 0){let seen=new Set;for(let[index,executor]of executors.entries()){if(seen.has(executor.name))ctx.addIssue({code:exports_external.ZodIssueCode.custom,message:`Duplicate executor name: ${executor.name}`,path:["executors",index,"name"]});if(executor.name==="inline"||executor.name==="auto")ctx.addIssue({code:exports_external.ZodIssueCode.custom,message:`Executor name "${executor.name}" is reserved (the --agent selector value '${executor.name}' has fixed semantics); rename executor at index ${index}.`,path:["executors",index,"name"]});if(AGENT_ROLE_NAMES.includes(executor.name))ctx.addIssue({code:exports_external.ZodIssueCode.custom,message:`Executor name "${executor.name}" collides with the role selector namespace ("${executor.name}"); rename executor at index ${index}.`,path:["executors",index,"name"]});seen.add(executor.name),executorNames.add(executor.name)}}}),RulesConfigSchema=exports_external.object({paths:exports_external.array(exports_external.string()).optional()}),WorkflowsConfigSchema=exports_external.object({paths:exports_external.array(exports_external.string()).optional()}),DecisionsConfigSchema=exports_external.object({paths:exports_external.array(exports_external.string()).optional(),maker:exports_external.string().optional(),makers:exports_external.record(exports_external.string(),exports_external.string()).optional()}),WorkflowConfigSchema=exports_external.object({hitlDecisionMaker:exports_external.boolean().optional(),decideDecisionMaker:exports_external.boolean().optional(),logRetentionDays:exports_external.number().int().positive().default(30)}),RedactionConfigSchema=exports_external.object({enabled:exports_external.boolean().optional()}),HistoryRefreshConfigSchema=exports_external.object({on_completion:exports_external.boolean().default(!1),debounce_ms:exports_external.number().int().min(1000).default(600000)}),HistoryConfigSchema=exports_external.object({refresh:HistoryRefreshConfigSchema.optional()}),VersionCarrierEntrySchema=exports_external.looseObject({type:exports_external.string().min(1)}),BuilderBumpVerConfigSchema=exports_external.object({tagVersionSeparator:exports_external.string().min(1).default("-v"),aggregatePackage:exports_external.string().min(1).optional(),publishWorkflow:exports_external.string().min(1).default("publish.yml"),releaseCommitType:exports_external.string().min(1).default("chore"),releaseCommitScope:exports_external.string().min(1).default("release"),ghRunListLimit:exports_external.number().int().positive().default(5),versionCarriers:exports_external.array(VersionCarrierEntrySchema).default([])}),BuilderConfigSchema=exports_external.object({"bump-ver":BuilderBumpVerConfigSchema.optional()});var bootstrapOptionsSchema=exports_external.object({options:exports_external.record(exports_external.string(),exports_external.unknown()).optional()}),bootstrapSectionSchema=bootstrapOptionsSchema.extend({modules:boardModuleDeclarationsSchema.optional()}),spurConfigSchema=exports_external.object({version:exports_external.string().optional(),name:exports_external.string().optional(),bootstrap:bootstrapSectionSchema.optional(),agent:AgentConfigSchema.optional(),rules:RulesConfigSchema.optional(),workflows:WorkflowsConfigSchema.optional(),decisions:DecisionsConfigSchema.optional(),workflow:WorkflowConfigSchema.optional(),redaction:RedactionConfigSchema.optional(),history:HistoryConfigSchema.optional(),builder:BuilderConfigSchema.optional(),tasks:tasksConfigSchema.optional(),features:featuresConfigSchema.optional()});var configSchema=exports_external.object({database:exports_external.object({url:exports_external.string().default(DEFAULT_DATABASE_URL)}).default({url:DEFAULT_DATABASE_URL}),server:exports_external.object({port:exports_external.coerce.number().int().positive().default(3000),host:exports_external.string().default("localhost"),openBrowser:exports_external.boolean().default(!0),webDistPath:exports_external.string().nullable().default(null)}).default({port:3000,host:"localhost",openBrowser:!0,webDistPath:null}),telemetry:exports_external.object({enabled:exports_external.boolean().default(!1),endpoint:exports_external.string().optional()}).default({enabled:!1}),logging:exports_external.object({level:exports_external.enum(SPUR_LOG_LEVELS).default("info")}).default({level:"info"})});init_dist();import{resolve}from"node:path";var ARTIFACT_ARRAY_CLASSIFICATION={byTool:"ranked",bySession:"ranked",topStepsByTokens:"ranked",topStepsByDuration:"ranked",topSteps:"ranked",bottlenecks:"ranked",coverage:"set",daily:"set",loops:"set",warnings:"set",pairings:"set",ladderSnapshot:"set",stepSupport:"set",phases:"set",tools:"set",skills:"set",sources:"set",models:"set"},RANKED_ARTIFACT_KEYS=new Set(Object.entries(ARTIFACT_ARRAY_CLASSIFICATION).filter(([,kind])=>kind==="ranked").map(([key])=>key));var RESOLVED_TOOL_NAME_SQL=`CASE
|
|
249
|
+
)`}var init_ddl=__esm(()=>{init_sqlite_core()});var init_classic=__esm(()=>{init_external();init_external()});var init_v4=__esm(()=>{init_classic()});function isColumnType(column2,columnTypes){return columnTypes.includes(column2.columnType)}function isWithEnum(column2){return"enumValues"in column2&&Array.isArray(column2.enumValues)&&column2.enumValues.length>0}function columnToSchema(column2,factory){let z$1=factory?.zodInstance??exports_external,coerce=factory?.coerce??{},schema;if(isWithEnum(column2))schema=column2.enumValues.length?z$1.enum(column2.enumValues):z$1.string();if(!schema){if(isColumnType(column2,["PgGeometry","PgPointTuple"]))schema=z$1.tuple([z$1.number(),z$1.number()]);else if(isColumnType(column2,["PgGeometryObject","PgPointObject"]))schema=z$1.object({x:z$1.number(),y:z$1.number()});else if(isColumnType(column2,["PgHalfVector","PgVector"]))schema=z$1.array(z$1.number()),schema=column2.dimensions?schema.length(column2.dimensions):schema;else if(isColumnType(column2,["PgLine"]))schema=z$1.tuple([z$1.number(),z$1.number(),z$1.number()]);else if(isColumnType(column2,["PgLineABC"]))schema=z$1.object({a:z$1.number(),b:z$1.number(),c:z$1.number()});else if(isColumnType(column2,["PgArray"]))schema=z$1.array(columnToSchema(column2.baseColumn,factory)),schema=column2.size?schema.length(column2.size):schema;else if(column2.dataType==="array")schema=z$1.array(z$1.any());else if(column2.dataType==="number")schema=numberColumnToSchema(column2,z$1,coerce);else if(column2.dataType==="bigint")schema=bigintColumnToSchema(column2,z$1,coerce);else if(column2.dataType==="boolean")schema=coerce===!0||coerce.boolean?z$1.coerce.boolean():z$1.boolean();else if(column2.dataType==="date")schema=coerce===!0||coerce.date?z$1.coerce.date():z$1.date();else if(column2.dataType==="string")schema=stringColumnToSchema(column2,z$1,coerce);else if(column2.dataType==="json")schema=jsonSchema;else if(column2.dataType==="custom")schema=z$1.any();else if(column2.dataType==="buffer")schema=bufferSchema}if(!schema)schema=z$1.any();return schema}function numberColumnToSchema(column2,z2,coerce){let unsigned=column2.getSQLType().includes("unsigned"),min,max,integer4=!1;if(isColumnType(column2,["MySqlTinyInt","SingleStoreTinyInt"]))min=unsigned?0:CONSTANTS.INT8_MIN,max=unsigned?CONSTANTS.INT8_UNSIGNED_MAX:CONSTANTS.INT8_MAX,integer4=!0;else if(isColumnType(column2,["PgSmallInt","PgSmallSerial","MySqlSmallInt","SingleStoreSmallInt"]))min=unsigned?0:CONSTANTS.INT16_MIN,max=unsigned?CONSTANTS.INT16_UNSIGNED_MAX:CONSTANTS.INT16_MAX,integer4=!0;else if(isColumnType(column2,["PgReal","MySqlFloat","MySqlMediumInt","SingleStoreMediumInt","SingleStoreFloat"]))min=unsigned?0:CONSTANTS.INT24_MIN,max=unsigned?CONSTANTS.INT24_UNSIGNED_MAX:CONSTANTS.INT24_MAX,integer4=isColumnType(column2,["MySqlMediumInt","SingleStoreMediumInt"]);else if(isColumnType(column2,["PgInteger","PgSerial","MySqlInt","SingleStoreInt"]))min=unsigned?0:CONSTANTS.INT32_MIN,max=unsigned?CONSTANTS.INT32_UNSIGNED_MAX:CONSTANTS.INT32_MAX,integer4=!0;else if(isColumnType(column2,["PgDoublePrecision","MySqlReal","MySqlDouble","SingleStoreReal","SingleStoreDouble","SQLiteReal"]))min=unsigned?0:CONSTANTS.INT48_MIN,max=unsigned?CONSTANTS.INT48_UNSIGNED_MAX:CONSTANTS.INT48_MAX;else if(isColumnType(column2,["PgBigInt53","PgBigSerial53","MySqlBigInt53","MySqlSerial","SingleStoreBigInt53","SingleStoreSerial","SQLiteInteger"]))unsigned=unsigned||isColumnType(column2,["MySqlSerial","SingleStoreSerial"]),min=unsigned?0:Number.MIN_SAFE_INTEGER,max=Number.MAX_SAFE_INTEGER,integer4=!0;else if(isColumnType(column2,["MySqlYear","SingleStoreYear"]))min=1901,max=2155,integer4=!0;else min=Number.MIN_SAFE_INTEGER,max=Number.MAX_SAFE_INTEGER;let schema=coerce===!0||coerce?.number?integer4?z2.coerce.number():z2.coerce.number().int():integer4?z2.int():z2.number();return schema=schema.gte(min).lte(max),schema}function bigintColumnToSchema(column2,z2,coerce){let unsigned=column2.getSQLType().includes("unsigned"),min=unsigned?0n:CONSTANTS.INT64_MIN,max=unsigned?CONSTANTS.INT64_UNSIGNED_MAX:CONSTANTS.INT64_MAX;return(coerce===!0||coerce?.bigint?z2.coerce.bigint():z2.bigint()).gte(min).lte(max)}function stringColumnToSchema(column2,z2,coerce){if(isColumnType(column2,["PgUUID"]))return z2.uuid();let max,regex,fixed=!1;if(isColumnType(column2,["PgVarchar","SQLiteText"]))max=column2.length;else if(isColumnType(column2,["MySqlVarChar","SingleStoreVarChar"]))max=column2.length??CONSTANTS.INT16_UNSIGNED_MAX;else if(isColumnType(column2,["MySqlText","SingleStoreText"]))if(column2.textType==="longtext")max=CONSTANTS.INT32_UNSIGNED_MAX;else if(column2.textType==="mediumtext")max=CONSTANTS.INT24_UNSIGNED_MAX;else if(column2.textType==="text")max=CONSTANTS.INT16_UNSIGNED_MAX;else max=CONSTANTS.INT8_UNSIGNED_MAX;if(isColumnType(column2,["PgChar","MySqlChar","SingleStoreChar"]))max=column2.length,fixed=!0;if(isColumnType(column2,["PgBinaryVector"]))regex=/^[01]+$/,max=column2.dimensions;let schema=coerce===!0||coerce?.string?z2.coerce.string():z2.string();return schema=regex?schema.regex(regex):schema,max&&fixed?schema.length(max):max?schema.max(max):schema}function getColumns(tableLike){return isTable(tableLike)?getTableColumns(tableLike):getViewSelectedFields(tableLike)}function handleColumns(columns2,refinements,conditions2,factory){let columnSchemas={};for(let[key,selected]of Object.entries(columns2)){if(!is(selected,Column)&&!is(selected,SQL)&&!is(selected,SQL.Aliased)&&typeof selected==="object"){let columns3=isTable(selected)||isView(selected)?getColumns(selected):selected;columnSchemas[key]=handleColumns(columns3,refinements[key]??{},conditions2,factory);continue}let refinement=refinements[key];if(refinement!==void 0&&typeof refinement!=="function"){columnSchemas[key]=refinement;continue}let column2=is(selected,Column)?selected:void 0,schema=column2?columnToSchema(column2,factory):exports_external.any(),refined=typeof refinement==="function"?refinement(schema):schema;if(conditions2.never(column2))continue;else columnSchemas[key]=refined;if(column2){if(conditions2.nullable(column2))columnSchemas[key]=columnSchemas[key].nullable();if(conditions2.optional(column2))columnSchemas[key]=columnSchemas[key].optional()}}return exports_external.object(columnSchemas)}function handleEnum(enum_,factory){return(factory?.zodInstance??exports_external).enum(enum_.enumValues)}var CONSTANTS,isPgEnum2,literalSchema,jsonSchema,bufferSchema,selectConditions,insertConditions,createSelectSchema=(entity2,refine2)=>{if(isPgEnum2(entity2))return handleEnum(entity2);let columns2=getColumns(entity2);return handleColumns(columns2,refine2??{},selectConditions)},createInsertSchema=(entity2,refine2)=>{let columns2=getColumns(entity2);return handleColumns(columns2,refine2??{},insertConditions)};var init_drizzle_zod=__esm(()=>{init_v4();init_drizzle_orm();CONSTANTS={INT8_MIN:-128,INT8_MAX:127,INT8_UNSIGNED_MAX:255,INT16_MIN:-32768,INT16_MAX:32767,INT16_UNSIGNED_MAX:65535,INT24_MIN:-8388608,INT24_MAX:8388607,INT24_UNSIGNED_MAX:16777215,INT32_MIN:-2147483648,INT32_MAX:2147483647,INT32_UNSIGNED_MAX:4294967295,INT48_MIN:-140737488355328,INT48_MAX:140737488355327,INT48_UNSIGNED_MAX:281474976710655,INT64_MIN:-9223372036854775808n,INT64_MAX:9223372036854775807n,INT64_UNSIGNED_MAX:18446744073709551615n};isPgEnum2=isWithEnum,literalSchema=exports_external.union([exports_external.string(),exports_external.number(),exports_external.boolean(),exports_external.null()]),jsonSchema=exports_external.union([literalSchema,exports_external.record(exports_external.string(),exports_external.any()),exports_external.array(exports_external.any())]),bufferSchema=exports_external.custom((v)=>v instanceof Buffer);selectConditions={never:()=>!1,optional:()=>!1,nullable:(column2)=>!column2.notNull},insertConditions={never:(column2)=>column2?.generated?.type==="always"||column2?.generatedIdentity?.type==="always",optional:(column2)=>!column2.notNull||column2.notNull&&column2.hasDefault,nullable:(column2)=>!column2.notNull}});function defineTable(name,columns2){let table3=sqliteTable(name,columns2),insert2,select3,ddl;return{table:table3,get insertSchema(){if(insert2===void 0)insert2=createInsertSchema(table3);return insert2},get selectSchema(){if(select3===void 0)select3=createSelectSchema(table3);return select3},get createTableSql(){if(ddl===void 0)ddl=generateCreateTableSql(table3);return ddl}}}var init_define_table=__esm(()=>{init_sqlite_core();init_drizzle_zod();init_ddl()});var init_schema=__esm(()=>{init_sqlite_core();init_define_table();init_common3()});function getProcessEnv(){return getEnvVars()}var configSchema2;var init_config=__esm(()=>{init_dist();init_dist2();init_zod();configSchema2=exports_external.object({app:exports_external.object({name:exports_external.string().default("app"),env:exports_external.enum(["development","staging","production","test"]).default("development"),port:exports_external.number().int().positive().default(3000)}).default({name:"app",env:"development",port:3000}),database:exports_external.object({url:exports_external.string().default(":memory:")}).default({url:":memory:"}),logging:exports_external.object({level:exports_external.enum(["trace","debug","info","warn","error","fatal"]).default("info"),console:exports_external.boolean().default(!0),file:exports_external.boolean().default(!1),filePath:exports_external.string().optional(),json:exports_external.boolean().default(!1)}).default({level:"info",console:!0,file:!1,json:!1})})});import{appendFileSync as appendFileSync2,cpSync,createReadStream as createReadStream2,createWriteStream as createWriteStream2,existsSync,mkdirSync,readdirSync,readFileSync as readFileSync3,realpathSync,renameSync,rmSync,statSync as statSync2,writeFileSync as writeFileSync2}from"node:fs";import{dirname,resolve as resolvePath}from"node:path";function createNodeFileSystem(root,paths){let projectRoot=root??findProjectRoot(paths?.cwd??process.cwd());return{getProjectRoot:()=>projectRoot,resolve:(...segments)=>resolvePath(projectRoot,...segments),exists:(path6)=>existsSync(path6),readFile:(path6)=>readFileSync3(path6,"utf-8"),readFileStream:async function*(path6){let stream=createReadStream2(path6,{encoding:"utf-8"}),buffer="";for await(let chunk of stream){buffer+=chunk;let lines=buffer.split(/\r?\n/);buffer=lines.pop()??"";for(let line of lines)yield line}if(buffer.length>0)yield buffer},writeFile:(path6,content)=>{ensureParentDir(path6),writeFileSync2(path6,content,"utf-8")},appendFile:(path6,content)=>{ensureParentDir(path6),appendFileSync2(path6,content,"utf-8")},ensureDir:(path6)=>{mkdirSync(path6,{recursive:!0})},readDir:(path6)=>readdirSync(path6),deleteFile:(path6)=>{rmSync(path6,{recursive:!0,force:!0})},rename:(src,dest)=>{renameSync(src,dest)},copy:(src,dest)=>{cpSync(src,dest,{recursive:!0})},createWriteStream:(path6)=>{return ensureParentDir(path6),createWriteStream2(path6,{flags:"a"})},stat:(path6)=>{try{let s2=statSync2(path6);return{isFile:()=>s2.isFile(),isDirectory:()=>s2.isDirectory(),size:s2.size,mtimeMs:s2.mtimeMs}}catch{return null}},realPath:(path6)=>realpathSync(path6)}}function ensureParentDir(filePath){let dir=dirname(filePath);if(!existsSync(dir))mkdirSync(dir,{recursive:!0})}function findProjectRoot(startDir){let dir=resolvePath(startDir),root=resolvePath("/");while(dir!==root){if(existsSync(resolvePath(dir,"bun.lock"))||existsSync(resolvePath(dir,"package.json")))return dir;let parent=resolvePath(dir,"..");if(parent===dir)break;dir=parent}return startDir}var init_file_system_node=()=>{};function resolveDeadline(optionTimeout,defaultTimeout){if(optionTimeout===null)return null;let candidate=optionTimeout===void 0?defaultTimeout:optionTimeout;if(candidate===void 0||candidate===null)return candidate;if(!Number.isInteger(candidate)||candidate<=0||candidate>2147483647)throw TypeError(`Process timeout must be a positive integer within the native timer range (1-2147483647 ms), got ${String(candidate)}`);return candidate}function resolveKillGraceMs(optionGraceMs){if(optionGraceMs===void 0)return 5000;if(!Number.isInteger(optionGraceMs)||optionGraceMs<0||optionGraceMs>2147483647)throw TypeError(`Process killGraceMs must be a non-negative integer within the native timer range (0-2147483647 ms), got ${String(optionGraceMs)}`);return optionGraceMs}function groupExists(pid){try{return process.kill(-pid,0),!0}catch(error51){return error51.code==="EPERM"}}function signalGroup(pid,signal){try{return process.kill(-pid,signal),!0}catch{return!1}}async function waitForGroupExit(pid,budgetMs){let giveUpAt=Date.now()+budgetMs;while(groupExists(pid)){if(Date.now()>=giveUpAt)return!1;await new Promise((resolve)=>setTimeout(resolve,25))}return!0}async function reapProcessGroup(pid,graceMs){if(!signalGroup(pid,"SIGTERM"))return!1;if(await waitForGroupExit(pid,graceMs))return!0;return signalGroup(pid,"SIGKILL"),await waitForGroupExit(pid,2000),!0}function ownProcessGroupLifecycle(ownership){let{pid,graceMs}=ownership,trigger,termination,timer,initiate=(reason)=>{if(trigger!==void 0)return;trigger=reason,termination=reapProcessGroup(pid,graceMs)};if(ownership.deadlineMs!==void 0)timer=setTimeout(()=>initiate("timeout"),ownership.deadlineMs);let onAbort=()=>initiate("cancelled");if(ownership.signal!==void 0)if(ownership.signal.aborted)onAbort();else ownership.signal.addEventListener("abort",onAbort,{once:!0});return{finish:async()=>{if(trigger===void 0){await reapProcessGroup(pid,graceMs);return}return await termination?trigger:void 0},stop:()=>{if(timer!==void 0)clearTimeout(timer);ownership.signal?.removeEventListener("abort",onAbort)}}}import{isatty}from"node:tty";function processEventSeverity(reason,exitCode){if(reason==="error")return"error";if(reason==="timeout"||reason==="cancelled")return"warning";if(exitCode!==null&&exitCode!==0)return"warning";return"info"}function resolveChildEnv(env2,envMode){if(envMode==="replace")return env2;let merged={};for(let[key,value]of Object.entries(getProcessEnv()))if(value!==void 0)merged[key]=value;return{...merged,...env2}}class NodeProcessExecutor{config;constructor(config2={}){this.config=config2}async run(options){return this.trace("process.run",()=>this.runUntraced(options))}async runUntraced(options){let args=options.args??[],deadline=resolveDeadline(options.timeout,this.config.defaultTimeout),killGraceMs=resolveKillGraceMs(options.killGraceMs),groupOwned=process.platform!=="win32"&&(typeof deadline==="number"||options.signal!==void 0),execaOptions=buildExecaOptions({cwd:options.cwd??this.config.paths?.cwd,env:options.env,timeout:typeof deadline==="number"?deadline:void 0,maxOutput:options.maxOutput??this.config.defaultMaxOutput,rejectOnError:options.rejectOnError??!1,outputPolicy:this.config.output,forceBuffered:options.forceBuffered??!1,signal:options.signal,groupOwned}),startedAt=Date.now(),startedIso=new Date(startedAt).toISOString(),registryId=this.beginRegistry(options.command,args,{label:options.label,source:options.source??"one-shot",teamId:options.teamId,agentId:options.agentId,startedAt:startedIso});this.emitProcessEvent("process.started",{command:options.command,args,exitCode:null,durationMs:0,reason:"exit",timestamp:startedIso,severity:"info",...options.label!==void 0?{label:options.label}:{}});let ownership;try{let subprocess=execa(options.command,args,execaOptions);if(groupOwned&&subprocess.pid!==void 0)ownership=ownProcessGroupLifecycle({pid:subprocess.pid,deadlineMs:typeof deadline==="number"?deadline:void 0,signal:options.signal,graceMs:killGraceMs});if(subprocess.pid!==void 0){if(this.config.registry?.update(registryId,{pid:subprocess.pid}),options.onSpawn!==void 0)try{options.onSpawn(subprocess.pid)}catch{}}let stopOwnedTermination=()=>ownership?.stop();observeOutput(subprocess.stdout,"stdout",options.onOutput),observeOutput(subprocess.stderr,"stderr",options.onOutput);let result=await subprocess.finally(stopOwnedTermination),ownedOutcome=ownership!==void 0?await ownership.finish():void 0,processResult={command:options.command,args,exitCode:result.exitCode??null,stdout:asString(result.stdout),stderr:asString(result.stderr),...result.signalDescription!==void 0?{signal:result.signalDescription}:{},durationMs:result.durationMs,outcome:ownedOutcome??(result.signalDescription!==void 0?"signal":"exit")};return this.completeRegistry(registryId,processResult.exitCode),this.emitExitedFromResult(options,processResult,result),processResult}catch(error51){let failed=error51,ownedOutcome=ownership!==void 0?await ownership.finish():void 0,processResult={command:options.command,args,exitCode:failed.exitCode??null,stdout:asString(failed.stdout),stderr:asString(failed.stderr),...failed.signalDescription!==void 0?{signal:failed.signalDescription}:failed.signal!==void 0?{signal:failed.signal}:{},durationMs:failed.durationMs??Date.now()-startedAt,outcome:ownedOutcome??classifyFailedCompletion(failed)};if(this.completeRegistry(registryId,processResult.exitCode),this.emitExitedFromResult(options,processResult,error51,error51),options.rejectOnError)throw error51;return processResult}}runStreaming(options){let args=options.args??[],startedAt=Date.now(),startedIso=new Date(startedAt).toISOString(),registryId=this.beginRegistry(options.command,args,{label:options.label,source:options.source??"other",teamId:options.teamId,agentId:options.agentId,startedAt:startedIso});try{this.emitProcessEvent("process.started",{command:options.command,args,exitCode:null,durationMs:0,reason:"exit",timestamp:startedIso,severity:"info",...options.label!==void 0?{label:options.label}:{}});let subprocess=Bun.spawn({cmd:[options.command,...args],stdin:"pipe",stdout:"pipe",stderr:"pipe",...options.cwd!==void 0?{cwd:options.cwd}:{},...options.env!==void 0?{env:resolveChildEnv(options.env,options.envMode)}:{}}),pipe2=new BunPipeProcess(subprocess);if(pipe2.pid!==null)this.config.registry?.update(registryId,{pid:pipe2.pid});return new ObservedPipeProcess(pipe2,this.config.events,{command:options.command,args,startedAt,registry:this.config.registry,registryId,...options.label!==void 0?{label:options.label}:{}})}catch(error51){throw this.completeRegistry(registryId,null),this.emitProcessEvent("process.exited",{command:options.command,args,exitCode:null,durationMs:0,reason:"error",timestamp:new Date().toISOString(),severity:processEventSeverity("error",null),...options.label!==void 0?{label:options.label}:{},error:errorMessage(error51)}),error51}}async trace(name,fn){if(this.config.tracer===void 0)return await fn();return await this.config.tracer.traceAsync(name,async()=>await fn())}beginRegistry(command,args,meta3){let registry2=this.config.registry;if(!registry2)return"";return registry2.begin({command,args,source:meta3.source,startedAt:meta3.startedAt,...meta3.label!==void 0?{label:meta3.label}:{},...meta3.teamId!==void 0?{teamId:meta3.teamId}:{},...meta3.agentId!==void 0?{agentId:meta3.agentId}:{}})}completeRegistry(id,exitCode,pid){if(!id||!this.config.registry)return;this.config.registry.complete(id,{exitCode,...pid!==void 0?{pid}:{}})}emitExitedFromResult(options,result,completion,error51){let reason=result.outcome??(isTimedOut(completion)?"timeout":result.signal!==void 0?"signal":error51?"error":"exit");this.emitProcessEvent("process.exited",{command:result.command,args:result.args,exitCode:result.exitCode,...result.signal!==void 0?{signal:result.signal}:{},durationMs:result.durationMs,reason,timestamp:new Date().toISOString(),severity:processEventSeverity(reason,result.exitCode),...options.label!==void 0?{label:options.label}:{},...error51!==void 0?{error:errorMessage(error51)}:{}})}emitProcessEvent(event,detail){this.config.events?.emit(event,detail)}}class ObservedPipeProcess{inner;killedWith;exited;constructor(inner,events,context){this.inner=inner,this.exited=inner.exited.then((exitCode)=>{if(context.registry&&context.registryId)context.registry.complete(context.registryId,{exitCode,...inner.pid!==null?{pid:inner.pid}:{}});return events?.emit("process.exited",{command:context.command,args:context.args,exitCode,...this.killedWith!==void 0?{signal:String(this.killedWith)}:{},durationMs:Date.now()-context.startedAt,reason:this.killedWith!==void 0?"signal":"exit",timestamp:new Date().toISOString(),severity:processEventSeverity(this.killedWith!==void 0?"signal":"exit",exitCode),...context.label!==void 0?{label:context.label}:{}}),exitCode})}get pid(){return this.inner.pid}get stdout(){return this.inner.stdout}get stderr(){return this.inner.stderr}writeStdin(input){this.inner.writeStdin(input)}endStdin(){this.inner.endStdin()}kill(signal){this.killedWith=signal,this.inner.kill(signal)}}class BunPipeProcess{subprocess;writer;constructor(subprocess){this.subprocess=subprocess,this.writer=subprocess.stdin}get pid(){return this.subprocess.pid??null}get stdout(){return isReadableStream3(this.subprocess.stdout)?this.subprocess.stdout:null}get stderr(){return isReadableStream3(this.subprocess.stderr)?this.subprocess.stderr:null}get exited(){return this.subprocess.exited}writeStdin(input){this.writer.write(input),this.writer.flush?.()}endStdin(){this.writer.end?.()}kill(signal){this.subprocess.kill(signal)}}function buildExecaOptions(opts){let mode=opts.forceBuffered?"buffered":opts.outputPolicy?.mode??"buffered",streamToTerminal=mode==="stream"&&(opts.outputPolicy?.mode==="stream"?opts.outputPolicy.isTTY??process.stdout.isTTY??isatty(1):!1);return{reject:opts.rejectOnError,stdin:"ignore",stripFinalNewline:!0,...mode==="pipe"?{stdout:"pipe",stderr:"pipe"}:streamToTerminal?{stdout:["inherit","pipe"],stderr:["inherit","pipe"]}:{all:!0},...opts.cwd!==void 0?{cwd:opts.cwd}:{},...opts.env!==void 0?{env:opts.env}:{},...opts.timeout!==void 0&&!opts.groupOwned?{timeout:opts.timeout}:{},...opts.maxOutput!==void 0?{maxBuffer:opts.maxOutput}:{},...opts.groupOwned?{detached:!0}:{},...opts.signal!==void 0&&!opts.groupOwned?{cancelSignal:opts.signal}:{}}}function classifyFailedCompletion(error51){if(error51.timedOut===!0)return"timeout";if(error51.isCanceled===!0)return"cancelled";if(error51.isTerminated===!0||error51.signalDescription!==void 0||error51.signal!==void 0)return"signal";return"error"}function observeOutput(stream,name,observer){if(!stream||!observer)return;let decoder=new TextDecoder,emit=(chunk)=>{try{observer({stream:name,chunk,timestamp:new Date().toISOString()})}catch{}};stream.on("data",(chunk)=>{emit(typeof chunk==="string"?chunk:decoder.decode(chunk,{stream:!0}))}),stream.on("end",()=>{let tail=decoder.decode();if(tail.length>0)emit(tail)})}function asString(value){if(typeof value==="string")return value;if(value instanceof Uint8Array)return new TextDecoder().decode(value);if(Array.isArray(value))return value.map(String).join("");return""}function isReadableStream3(value){return value instanceof ReadableStream}function isTimedOut(error51){return typeof error51==="object"&&error51!==null&&"timedOut"in error51&&error51.timedOut===!0}function errorMessage(error51){return error51 instanceof Error?error51.message:String(error51)}var init_process_executor=__esm(()=>{init_execa();init_config()});var init_context=()=>{};var SEP;var init_path=__esm(()=>{SEP=globalThis.process?.platform==="win32"?"\\":"/"});var init_schema_validation=__esm(()=>{init_dist2()});var init_types=()=>{};var init_dist3=__esm(()=>{init_file_system_node();init_process_executor();init_config();init_context();init_path();init_schema_validation();init_types()});init_zod();init_zod();var BOARD_MODULE_ID_PATTERN=/^[a-z][a-z0-9-]*$/;function isSafeFrameUrl(value){let parsed;try{parsed=new URL(value)}catch{return!1}if(parsed.protocol!=="http:"&&parsed.protocol!=="https:")return!1;return parsed.username===""&&parsed.password===""}var sharedDeclarationFields={id:exports_external.string().regex(BOARD_MODULE_ID_PATTERN,"module id must match ^[a-z][a-z0-9-]*$"),name:exports_external.string().min(1,"module name must not be empty"),icon:exports_external.string().min(1,"module icon must not be empty"),sidebarLabel:exports_external.string().optional(),description:exports_external.string().optional(),order:exports_external.number().refine((value)=>Number.isFinite(value),{message:"module order must be a finite number"}).optional(),enabled:exports_external.boolean().optional().default(!0)},boardModuleDeclarationSchema=exports_external.discriminatedUnion("type",[exports_external.object({...sharedDeclarationFields,type:exports_external.literal("react"),directory:exports_external.string().min(1),entry:exports_external.string().min(1),styles:exports_external.array(exports_external.string().min(1)).optional().default(()=>[])}).strict(),exports_external.object({...sharedDeclarationFields,type:exports_external.literal("iframe"),url:exports_external.string().refine(isSafeFrameUrl,{message:"iframe url must be an absolute http(s) URL without embedded credentials (relative URLs and other schemes are rejected)"})}).strict()]),boardModuleDeclarationsSchema=exports_external.array(boardModuleDeclarationSchema);var RFC3339_PATTERN=/^\d{4}-\d{2}-\d{2}[Tt]\d{2}:\d{2}:\d{2}(\.\d+)?([Zz]|[+-]\d{2}:\d{2})$/;function isRfc3339Timestamp(value){return RFC3339_PATTERN.test(value)&&Number.isFinite(Date.parse(value))}var ALL_FINDING_CODES=["L1.markdown-parse","L1.schema-validation","L2.missing-required-section","L2.forbidden-section","L2.disallowed-section","L2.heading-level","L2.section-order","L2.unclosed-code-fence","L3.requirements-format","L3.requirements-checkbox","L3.requirements-empty","L3.ac-empty","L3.ac-requirement-coverage","L3.solution-file-line","L3.review-priority-table","L3.required-section-placeholder","L3.plan-format","L3.unchecked-checklist","L3.ac-checklist-text","L3.ac-bdd-error","L3.ac-bdd-warning","L3.ac-bdd-invalid","L3.scope-delineation","L3.one-active-goal","L3.children-limit","L3.review-testing-contradiction","L4.design-placeholder","L4.feature-not-found","L4.feature-terminal","L4.missing-feature-id","L4.parent-not-found","L4.dependency-not-found","L4.rollup-subtasks-open","L4.rollup-parent-open","L4.rollup-missing-roster","L4.rollup-roster-not-declared-dependency","L4.readiness-blocked","L4.prose-prerequisite-unlisted","L4.prerequisite-cycle","L4.prerequisite-not-done","L4.gate-language","L4.linked-task-parse-failed","L4.orphan-scenarios","L4.uncovered-task-scenario","L4.uncovered-feature-scenario","L4.verdict-rows-match-no-scenario","L4.verifying-incomplete-tasks","L4.dogfood-missing","L4.stale-line-anchor","L4.anchor-unresolved","L4.anchor-subject-mismatch","L4.malformed-verdict-artifact","L4.scenario-unverified","L4.testing-verdict-stub","L4.evidence-not-recoverable","L4.feature-receipt-missing","L4.feature-receipt-malformed","L4.feature-receipt-cross-feature","L4.feature-receipt-divergent","L4.feature-receipt-failed","L4.feature-receipt-run","L4.feature-receipt-stale","L4.feature-receipt-contract","precheck-size","precheck-evidence","inventory-coverage","feature-reopen-unavailable"];function isFindingCode(code){return ALL_FINDING_CODES.includes(code)}init_zod();var projectEntrySchema=exports_external.object({name:exports_external.string().min(1),path:exports_external.string().min(1),port:exports_external.number().int().nonnegative().default(0)}),projectsFileSchema=exports_external.object({schema_version:exports_external.literal(1).default(1),projects:exports_external.array(projectEntrySchema).default([])});init_zod();var slashCommandCategorySchema=exports_external.enum(["git","dev","sys","harness"]),slashCommandItemSchema=exports_external.object({name:exports_external.string().min(1),description:exports_external.string().min(1),category:slashCommandCategorySchema.default("dev"),argumentHint:exports_external.string().optional(),tags:exports_external.array(exports_external.string()).default([]),role:exports_external.string().optional(),source:exports_external.string().optional()}),slashCommandsFileSchema=exports_external.object({version:exports_external.number().int().default(1),updatedAt:exports_external.string().optional(),commands:exports_external.array(slashCommandItemSchema).default([])});var SPUR_LOG_LEVELS=["debug","info","warn","error"],DEFAULT_TASKS_DIR="docs/tasks",DEFAULT_FEATURES_DIR="docs/features",DEFAULT_DATABASE_URL=".spur/spur.db";var folderConfigSchema=exports_external.object({baseCounter:exports_external.number().int().nonnegative().default(0),label:exports_external.string().optional()});function folderPathWithDefault(defaultPath){return exports_external.preprocess((v)=>v==null?void 0:v,exports_external.string().default(defaultPath))}var tasksConfigSchema=exports_external.object({folders:exports_external.record(exports_external.string(),folderConfigSchema).default({}),active:folderPathWithDefault(DEFAULT_TASKS_DIR),severity:exports_external.record(exports_external.string(),exports_external.enum(["error","warning","off"])).optional()}).superRefine((data,ctx)=>{if(data.severity){for(let code of Object.keys(data.severity))if(!isFindingCode(code))ctx.addIssue({code:exports_external.ZodIssueCode.custom,path:["severity",code],message:`Unknown finding code "${code}" in severity overrides map`})}}),featuresConfigSchema=exports_external.object({dir:folderPathWithDefault(DEFAULT_FEATURES_DIR)}),EXECUTOR_CAPABILITY_TIERS=["cheap","standard","capable-1","capable-2","capable-3"];function normalizeExecutorTier(value){return value==="capable"?"capable-1":value}var executorCapabilityTierSchema=exports_external.preprocess((value)=>{if(value===void 0||value===null)return;return typeof value==="string"?normalizeExecutorTier(value):value},exports_external.enum(EXECUTOR_CAPABILITY_TIERS).optional()),AGENT_ROLE_NAMES=["scribe","coder","reviewer","planner"];var EXECUTION_CAPABILITY_AXES=["fsRead","fsWrite","networkEgress","processSpawn","externalMutationApproval"],SESSION_CAPABILITY_AXES=["resumeById","sessionDir","persistentStdin","structuredOutput"],AGENT_RUN_CAPABILITY_AXES=[...EXECUTION_CAPABILITY_AXES,...SESSION_CAPABILITY_AXES],EXECUTION_CAPABILITY_STATES=["enforced","available","unavailable","unknown"],EXECUTION_CAPABILITY_PROVENANCES=["native-known","operator-configured","unattested"],ExecutionCapabilityAttestationSchema=exports_external.object({state:exports_external.enum(EXECUTION_CAPABILITY_STATES),provenance:exports_external.enum(EXECUTION_CAPABILITY_PROVENANCES)}),ExecutionCapabilitiesSchema=exports_external.object({version:exports_external.literal(1),axes:exports_external.partialRecord(exports_external.enum(EXECUTION_CAPABILITY_AXES),ExecutionCapabilityAttestationSchema)}),EXECUTION_CAPABILITY_REQUIREMENTS=["available","enforced"],RequiresCapabilitiesSchema=exports_external.partialRecord(exports_external.enum(AGENT_RUN_CAPABILITY_AXES),exports_external.enum(EXECUTION_CAPABILITY_REQUIREMENTS)),executorAvailabilityOwnerSchema=exports_external.enum(["operator","quota","probe"]),executorDisabledObjectSchema=exports_external.object({owner:executorAvailabilityOwnerSchema,since:exports_external.string().refine(isRfc3339Timestamp,{message:"since must be an RFC 3339 timestamp"}),reason:exports_external.string().min(1)}),AgentExecutorConfigSchema=exports_external.object({name:exports_external.string().min(1),agent:exports_external.string().min(1),model:exports_external.string().min(1).optional(),tier:executorCapabilityTierSchema.optional(),executionCapabilities:ExecutionCapabilitiesSchema.optional(),disabled:exports_external.union([exports_external.boolean(),executorDisabledObjectSchema]).default(!1)});var AgentRoleConfigSchema=exports_external.object({tier:exports_external.enum(EXECUTOR_CAPABILITY_TIERS).optional(),stages:exports_external.array(exports_external.string().min(1)).min(1).optional()});var FleetMemberSchema=exports_external.object({id:exports_external.string().min(1).optional(),role:exports_external.enum(AGENT_ROLE_NAMES,{error:(issue2)=>Error(`Unknown role "${issue2.input}" — expected one of: ${AGENT_ROLE_NAMES.join(", ")}`)}).optional(),executor:exports_external.string().min(1).optional(),purpose:exports_external.string().optional(),enabled:exports_external.boolean().optional()}),FLEET_STRATEGIES=["rest","gtd"],FleetMemberEntrySchema=FleetMemberSchema.superRefine((member,ctx)=>{if(member.role===void 0&&member.executor===void 0)ctx.addIssue({code:exports_external.ZodIssueCode.custom,message:"must declare a role or an executor — at least one is required"})}),AgentFleetSchema=exports_external.object({enabled:exports_external.boolean().default(!1),strategy:exports_external.enum(FLEET_STRATEGIES).default("rest"),orchestrator:exports_external.string().min(1).optional(),members:exports_external.array(FleetMemberEntrySchema).default([])});var AgentOutputConfigSchema=exports_external.object({"max-bytes":exports_external.number().int().positive().optional(),"max-lines":exports_external.number().int().positive().optional()}),AgentConfigSchema=exports_external.object({default:exports_external.string().optional(),executors:exports_external.array(AgentExecutorConfigSchema).optional(),roles:exports_external.record(exports_external.string(),AgentRoleConfigSchema).optional(),output:AgentOutputConfigSchema.optional(),sessionAffinity:exports_external.boolean().optional(),fleet:AgentFleetSchema.optional()}).superRefine((value,ctx)=>{for(let key of Object.keys(value.roles??{}))if(!AGENT_ROLE_NAMES.includes(key))ctx.addIssue({code:exports_external.ZodIssueCode.custom,path:["roles",key],message:`Unknown role "${key}" — expected one of: ${AGENT_ROLE_NAMES.join(", ")}`});let executors=value.executors,executorNames=new Set;if(executors!==void 0){let seen=new Set;for(let[index,executor]of executors.entries()){if(seen.has(executor.name))ctx.addIssue({code:exports_external.ZodIssueCode.custom,message:`Duplicate executor name: ${executor.name}`,path:["executors",index,"name"]});if(executor.name==="inline"||executor.name==="auto")ctx.addIssue({code:exports_external.ZodIssueCode.custom,message:`Executor name "${executor.name}" is reserved (the --agent selector value '${executor.name}' has fixed semantics); rename executor at index ${index}.`,path:["executors",index,"name"]});if(AGENT_ROLE_NAMES.includes(executor.name))ctx.addIssue({code:exports_external.ZodIssueCode.custom,message:`Executor name "${executor.name}" collides with the role selector namespace ("${executor.name}"); rename executor at index ${index}.`,path:["executors",index,"name"]});seen.add(executor.name),executorNames.add(executor.name)}}}),RulesConfigSchema=exports_external.object({paths:exports_external.array(exports_external.string()).optional()}),WorkflowsConfigSchema=exports_external.object({paths:exports_external.array(exports_external.string()).optional(),hitlDecisionMaker:exports_external.boolean().optional(),decideDecisionMaker:exports_external.boolean().optional(),logRetentionDays:exports_external.number().int().positive().default(30)}),DecisionsConfigSchema=exports_external.object({paths:exports_external.array(exports_external.string()).optional(),maker:exports_external.string().optional(),makers:exports_external.record(exports_external.string(),exports_external.string()).optional(),log:exports_external.enum(["full","metadata","off"]).optional()}),RedactionConfigSchema=exports_external.object({enabled:exports_external.boolean().optional()}),HistoryRefreshConfigSchema=exports_external.object({on_completion:exports_external.boolean().default(!1),debounce_ms:exports_external.number().int().min(1000).default(600000)}),HistoryConfigSchema=exports_external.object({refresh:HistoryRefreshConfigSchema.optional()}),VersionCarrierEntrySchema=exports_external.looseObject({type:exports_external.string().min(1)}),BuilderBumpVerConfigSchema=exports_external.object({tagVersionSeparator:exports_external.string().min(1).default("-v"),aggregatePackage:exports_external.string().min(1).optional(),publishWorkflow:exports_external.string().min(1).default("publish.yml"),releaseCommitType:exports_external.string().min(1).default("chore"),releaseCommitScope:exports_external.string().min(1).default("release"),ghRunListLimit:exports_external.number().int().positive().default(5),versionCarriers:exports_external.array(VersionCarrierEntrySchema).default([])}),BuilderConfigSchema=exports_external.object({"bump-ver":BuilderBumpVerConfigSchema.optional()});var bootstrapOptionsSchema=exports_external.object({options:exports_external.record(exports_external.string(),exports_external.unknown()).optional()}),bootstrapSectionSchema=bootstrapOptionsSchema.extend({modules:boardModuleDeclarationsSchema.optional()}),spurConfigSchema=exports_external.object({version:exports_external.string().optional(),name:exports_external.string().optional(),bootstrap:bootstrapSectionSchema.optional(),agent:AgentConfigSchema.optional(),rules:RulesConfigSchema.optional(),workflows:WorkflowsConfigSchema.optional(),decisions:DecisionsConfigSchema.optional(),redaction:RedactionConfigSchema.optional(),history:HistoryConfigSchema.optional(),builder:BuilderConfigSchema.optional(),tasks:tasksConfigSchema.optional(),features:featuresConfigSchema.optional()});var configSchema=exports_external.object({database:exports_external.object({url:exports_external.string().default(DEFAULT_DATABASE_URL)}).default({url:DEFAULT_DATABASE_URL}),server:exports_external.object({port:exports_external.coerce.number().int().positive().default(3000),host:exports_external.string().default("localhost"),openBrowser:exports_external.boolean().default(!0),webDistPath:exports_external.string().nullable().default(null)}).default({port:3000,host:"localhost",openBrowser:!0,webDistPath:null}),telemetry:exports_external.object({enabled:exports_external.boolean().default(!1),endpoint:exports_external.string().optional()}).default({enabled:!1}),logging:exports_external.object({level:exports_external.enum(SPUR_LOG_LEVELS).default("info")}).default({level:"info"})});init_dist();import{resolve}from"node:path";var ARTIFACT_ARRAY_CLASSIFICATION={byTool:"ranked",bySession:"ranked",topStepsByTokens:"ranked",topStepsByDuration:"ranked",topSteps:"ranked",bottlenecks:"ranked",coverage:"set",daily:"set",loops:"set",warnings:"set",pairings:"set",ladderSnapshot:"set",stepSupport:"set",phases:"set",tools:"set",skills:"set",sources:"set",models:"set"},RANKED_ARTIFACT_KEYS=new Set(Object.entries(ARTIFACT_ARRAY_CLASSIFICATION).filter(([,kind])=>kind==="ranked").map(([key])=>key));var RESOLVED_TOOL_NAME_SQL=`CASE
|
|
250
250
|
WHEN tc.effective_tool_name IS NOT NULL AND tc.effective_tool_name != '' AND tc.effective_tool_name != 'unknown'
|
|
251
251
|
THEN tc.effective_tool_name
|
|
252
252
|
ELSE CASE
|
|
@@ -322,7 +322,7 @@ END`;var MEASURE_COLS="messages, tool_calls, skill_calls, fresh_input_tokens, ca
|
|
|
322
322
|
''
|
|
323
323
|
)
|
|
324
324
|
ELSE ''
|
|
325
|
-
END`;var POST_WATERMARK_TABLES=[...KEYED_ROLLUP_TABLES,...GLOBAL_RANKED_ROLLUP_TABLES,"history_daily_stats","history_board_source_daily"];var HISTORY_IMPORT_SCHEMA_VERSION="0.5.
|
|
325
|
+
END`;var POST_WATERMARK_TABLES=[...KEYED_ROLLUP_TABLES,...GLOBAL_RANKED_ROLLUP_TABLES,"history_daily_stats","history_board_source_daily"];var HISTORY_IMPORT_SCHEMA_VERSION="0.5.22",HISTORY_IMPORT_SCHEMA_SQL=`
|
|
326
326
|
CREATE TABLE IF NOT EXISTS history_import_checkpoint (
|
|
327
327
|
source TEXT NOT NULL,
|
|
328
328
|
source_file TEXT NOT NULL,
|
|
@@ -448,11 +448,11 @@ CREATE INDEX IF NOT EXISTS idx_history_skill_call_invocation_kind
|
|
|
448
448
|
ON history_skill_call(invocation_kind);
|
|
449
449
|
`.trim();init_zod();init_zod();import{createHash}from"node:crypto";function stableJson(value){if(Array.isArray(value))return`[${value.map((entry)=>entry===void 0?"null":stableJson(entry)).join(",")}]`;if(value!==null&&typeof value==="object"){let record2=value;return`{${Object.keys(record2).filter((key)=>record2[key]!==void 0).sort().map((key)=>`${JSON.stringify(key)}:${stableJson(record2[key])}`).join(",")}}`}return JSON.stringify(value)??"null"}function sha256(value){return createHash("sha256").update(stableJson(value)).digest("hex")}function sha256Text(text){return createHash("sha256").update(text,"utf8").digest("hex")}function matchCapabilityOrigin(origins,source,canonicalName,observable){let candidates=origins.filter((origin2)=>origin2.source===source&&origin2.skillName===canonicalName);if(candidates.length===0)return{origin:void 0,conflict:null};if(observable.skillPath!=null&&observable.skillPath!==""){let byPath=candidates.filter((origin2)=>origin2.skillPath!==void 0&&origin2.skillPath===observable.skillPath);if(byPath.length>0)candidates=byPath}if(observable.artifactDigest!=null&&observable.artifactDigest!==""){let byDigest=candidates.filter((origin2)=>origin2.artifactDigest===observable.artifactDigest);if(byDigest.length===1)return{origin:byDigest[0],conflict:null};if(byDigest.length>1)return{origin:void 0,conflict:`capabilityOrigins: ${byDigest.length} origins agree on digest for '${canonicalName}'.`};return{origin:void 0,conflict:`capabilityOrigins: observed artifact digest does not match the supplied origin for '${canonicalName}'.`}}if(candidates.length===1)return{origin:candidates[0],conflict:null};return{origin:void 0,conflict:`capabilityOrigins: ${candidates.length} origins match '${canonicalName}' without distinguishing evidence.`}}function capabilityInvocationId(parts){return sha256Text(JSON.stringify({domain:"capability-invocation",v:1,source:parts.source,sessionId:parts.sessionId,kind:parts.kind,id:parts.id??null,ordinal:parts.ordinal??null,file:parts.file??null,line:parts.line??null},Object.keys({domain:0,v:0,source:0,sessionId:0,kind:0,id:0,ordinal:0,file:0,line:0}).sort()))}function scanShellSegment(segment){let tokens=[],current="",quote=null,dynamic=!1;for(let i=0;i<segment.length;i+=1){let ch=segment[i];if(quote==="'"){if(ch==="'")quote=null;else current+=ch;continue}if(quote==='"'){if(ch==='"')quote=null;else if(ch==="$"||ch==="`")dynamic=!0;else current+=ch;continue}if(ch==="'"||ch==='"'){quote=ch;continue}if(ch==="\\"||ch==="$"||ch==="`"){dynamic=!0;continue}if(ch===" "||ch==="\t"||ch===`
|
|
450
450
|
`){if(current!=="")tokens.push(current);current="";continue}current+=ch}if(quote!==null)dynamic=!0;if(current!=="")tokens.push(current);return{tokens,dynamic}}function splitShellSegments(command){let segments=[],current="",quote=null;for(let i=0;i<command.length;i+=1){let ch=command[i];if(quote!==null){if(current+=ch,ch===quote)quote=null;continue}if(ch==="'"||ch==='"'){quote=ch,current+=ch;continue}if(ch===";"){segments.push(current),current="";continue}if(ch==="|"||ch==="&"){if(command[i+1]===ch){segments.push(current),current="",i+=1;continue}segments.push(current),current="";continue}current+=ch}return segments.push(current),segments}function lastPathSegment(path){let trimmed=path.replace(/\/+$/,""),idx=trimmed.lastIndexOf("/");return idx===-1?trimmed:trimmed.slice(idx+1)}function isSedPrintRange(token){return/^\$?[0-9]+(\s*,\s*(\$|[0-9]+))?p$/.test(token)||/^\$p$/.test(token)}function hasRedirection(segment){let quote=null;for(let i=0;i<segment.length;i+=1){let ch=segment[i];if(quote!==null){if(ch===quote)quote=null;continue}if(ch==="'"||ch==='"'){quote=ch;continue}if(ch===">"||ch==="<")return!0}return!1}function parseLiteralReadTargets(command){if(typeof command!=="string"||command.trim()==="")return[];let targets=[];for(let segment of splitShellSegments(command)){if(segment.trim()===""||hasRedirection(segment))continue;let trimmed=segment.trim();if(trimmed.startsWith("#"))continue;let scan=scanShellSegment(trimmed);if(scan.dynamic||scan.tokens.length===0)continue;let[cmd,...args]=scan.tokens;if(cmd==="cat"){for(let arg of args){if(arg==="--")continue;if(arg.startsWith("-"))continue;if(lastPathSegment(arg)==="SKILL.md")targets.push(arg)}continue}if(cmd==="sed"){let sawNoPrint=!1,rangeArgs=[];for(let arg of args){if(arg==="--")continue;if(arg==="-n"||arg==="--quiet"||arg==="--silent"){sawNoPrint=!0;continue}if(arg.startsWith("-")){sawNoPrint=!1;break}if(isSedPrintRange(arg)){rangeArgs.push(arg);continue}if(rangeArgs.length===0){sawNoPrint=!1;break}if(sawNoPrint&&lastPathSegment(arg)==="SKILL.md")targets.push(arg);break}if(!sawNoPrint)continue}}return targets}function extractNestedExecCommandLiterals(payloadText){if(typeof payloadText!=="string"||payloadText.trim()==="")return[];let literals=[],shape=/tools\.exec_command\(\s*\{\s*cmd:\s*("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')((?:\s*,\s*[A-Za-z_][A-Za-z0-9_]*\s*:\s*(?:"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|[-0-9.eE+]+|true|false|null))*)\s*\}\s*\)/g,inBlockComment=!1;for(let rawLine of payloadText.split(/\r?\n/)){let line=rawLine;if(inBlockComment){let end=line.indexOf("*/");if(end===-1)continue;line=line.slice(end+2),inBlockComment=!1}if(line.trimStart().startsWith("//"))continue;let blockStart=line.indexOf("/*");if(blockStart!==-1){let end=line.indexOf("*/",blockStart+2);if(line=end===-1?line.slice(0,blockStart):line.slice(0,blockStart)+line.slice(end+2),end===-1)inBlockComment=!0}let statementStart=/(?:^|[{};])\s*$/;shape.lastIndex=0;let match=shape.exec(line);while(match!==null){let before=line.slice(0,match.index);if(statementStart.test(before)){let literal2=match[1]??"",quote=literal2[0]??'"',body=literal2.slice(1,-1).replaceAll(`\\${quote}`,quote).replaceAll("\\\\","\\").replaceAll("\\n",`
|
|
451
|
-
`).replaceAll("\\t","\t");literals.push(body)}match=shape.exec(line)}}return literals}var MESSAGE_MAPPER_KEYS=["_codexUsageCarrier","session_id","seq","turn_index","role","record_type","disposition","ts","duration_ms","model","input_tokens","output_tokens","cache_read_tokens","cache_write_tokens","cost_usd","content_text","cwd","provenance","run_id","task_wbs","request_id"],TOOL_CALL_MAPPER_KEYS=["_messageSplitIndex","session_id","seq","tool_name","call_id","args_digest","args_raw","status","started_at","completed_at","duration_ms","result_bytes","error_text"],SKILL_CALL_MAPPER_KEYS=["_messageSplitIndex","session_id","seq","skill_name","invocation_kind","skill_path","args_raw","args_digest","call_id","status","started_at","completed_at","duration_ms","capability_kind","evidence_kind","invocation_id","origin_identity","_capabilityConflict"];function identityFieldMap(keys){let map2={};for(let key of keys)map2[key]=key;return map2}var HARNESS_SKILL_PACKAGES=new Set(["sp","rd3"]);function canonicalizeSkillName(raw){let name=raw.trim();if(name.startsWith("/")||name.startsWith("$"))name=name.slice(1);if(name.startsWith("skill:"))name=name.slice(6);let canonical=name.match(/^([a-z][a-z0-9]*):([a-z0-9-]+)$/);if(canonical!==null&&HARNESS_SKILL_PACKAGES.has(canonical[1]??""))return name;let dialect=name.match(/^([a-z][a-z0-9]*)-([a-z0-9-]+)$/);if(dialect!==null&&HARNESS_SKILL_PACKAGES.has(dialect[1]??""))return`${dialect[1]}:${dialect[2]}`;return name}function extractSkillCalls(raw,context,identity){switch(context?.source){case"claude":return detectClaudeSkillCalls(raw,identity,context);case"pi":return detectPiSkillCalls(raw,identity,context);case"omp":return detectOmpSkillCalls(raw,identity,context);case"codex":return detectCodexSkillCalls(raw,identity,context);case"agy":return detectAgySkillCalls(raw,identity,context);case"gemini":return detectGeminiSkillCalls(raw,identity,context);case"grok":return detectGrokSkillCalls(raw,identity,context);default:return[]}}function skillCallEntry(record2){return{targetTable:"history_skill_call",record:record2}}function skillRecord(identity,skillName,invocationKind,extra={}){return{_messageSplitIndex:identity.messageSplitIndex,session_id:identity.sessionId,seq:identity.seq,skill_name:canonicalizeSkillName(skillName),invocation_kind:invocationKind,skill_path:null,args_raw:null,args_digest:null,call_id:null,status:"unknown",started_at:null,completed_at:null,duration_ms:null,capability_kind:null,evidence_kind:null,invocation_id:null,origin_identity:null,...extra}}function createOrdinalAllocator(){let ordinals=new Map;return(key)=>{let existing=ordinals.get(key);if(existing!==void 0)return existing;let ordinal=ordinals.size;return ordinals.set(key,ordinal),ordinal}}function originFields(context,canonicalName,observable){let origins=context?.capabilityOrigins;if(origins===void 0||origins.length===0)return{capability_kind:null,origin_identity:null,_capabilityConflict:void 0};let match=matchCapabilityOrigin(origins,context?.source??"",canonicalName,observable);return{capability_kind:match.origin?.capabilityKind??null,origin_identity:match.origin?.originIdentity??null,_capabilityConflict:match.conflict??void 0}}function invocationIdFor(context,sessionId,ref){let source=context?.source??"unknown";if(ref.invocationId!==void 0)return capabilityInvocationId({source,sessionId,kind:"invocation",id:ref.invocationId});if(ref.callId!==void 0)return capabilityInvocationId({source,sessionId,kind:"call",id:ref.callId,ordinal:ref.ordinal>0?ref.ordinal:void 0});if(ref.recordId!==void 0)return capabilityInvocationId({source,sessionId,kind:"record",id:ref.recordId,ordinal:ref.ordinal});return capabilityInvocationId({source,sessionId,kind:"line",file:context?.sourceFile??"",line:context?.sourceLine??0,ordinal:ref.ordinal})}function skillNameFromPath(path){let normalized=path.replace(/\\/g,"/"),bySkillsSegment=normalized.match(/\/skills\/([^/]+)\/SKILL\.md$/i);if(bySkillsSegment!==null)return bySkillsSegment[1]??"";let stem=normalized.slice(0,normalized.length-9);return stem.split("/").pop()??stem}function detectClaudeSkillCalls(raw,identity,context){let contentBlocks=raw.content??o(raw.message).content;if(!Array.isArray(contentBlocks))return[];let rows=[],role=mapRole(raw.type??o(raw.message).role),recordId=s(raw.uuid,raw.id,raw.requestId),ts=timestampOf(raw.timestamp,raw.ts,o(raw.message).timestamp)??null,ordinal=createOrdinalAllocator();for(let block of contentBlocks){if(typeof block!=="object"||block===null)continue;let b=block;if(b.type!=="tool_use")continue;let input=b.input??{},callId=s(b.id),invocation=callId!==void 0?{callId,ordinal:0}:{recordId,ordinal:ordinal(`tool:${rows.length}`)};if(b.name==="Skill"){let skill=s(input.skill);if(skill===void 0)continue;let canonical=canonicalizeSkillName(skill);rows.push(skillRecord(identity,skill,s(o(b.caller).type)==="direct"?"user":"model",{args_raw:maybeArgsRaw("claude","Skill",input)??null,args_digest:argsDigest(input),call_id:callId??null,started_at:ts,evidence_kind:"load",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,invocation),...originFields(context,canonical,{})}));continue}if(b.name==="Task"){let subagent=s(input.subagent_type,input.agent_type,input.agent)??"subagent";rows.push(skillRecord(identity,subagent,"model",{args_raw:maybeArgsRaw("claude","Task",input)??null,args_digest:argsDigest(input),call_id:callId??null,started_at:ts,...originFields(context,canonicalizeSkillName(subagent),{}),capability_kind:"subagent",evidence_kind:"delegation",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,invocation)}));continue}if(b.name==="Read"){let filePath=s(input.file_path,input.path);if(filePath===void 0||lastPathSegmentNorm(filePath)!=="SKILL.md")continue;let canonical=canonicalizeSkillName(skillNameFromPath(filePath));rows.push(skillRecord(identity,skillNameFromPath(filePath),"model",{skill_path:filePath,args_raw:maybeArgsRaw("claude","Read",input)??null,args_digest:argsDigest(input),call_id:callId??null,started_at:ts,evidence_kind:"load",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,invocation),...originFields(context,canonical,{skillPath:filePath})}));continue}if(b.name==="Bash"){let command=s(input.command);if(command===void 0)continue;let targets=parseLiteralReadTargets(command);for(let i=0;i<targets.length;i+=1){let target=targets[i]??"",canonical=canonicalizeSkillName(skillNameFromPath(target));rows.push(skillRecord(identity,skillNameFromPath(target),"model",{skill_path:target,args_raw:maybeArgsRaw("claude","Bash",input)??null,args_digest:argsDigest(input),call_id:callId??null,started_at:ts,evidence_kind:"load",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{...invocation,ordinal:i}),...originFields(context,canonical,{skillPath:target})}))}}}if(role==="user"){let text=extractUserTextClaude(contentBlocks);if(text!==void 0){let rawName=leadingInjectionMatch(text,CLAUDE_COMMAND_NAME_ANCHORED)?.[1]??"";if(rawName.length>0){let canonical=canonicalizeSkillName(rawName);if(canonical.length>0)rows.push(skillRecord(identity,canonical,"user",{args_raw:text.match(CLAUDE_COMMAND_ARGS)?.[1]?.trim()||null,started_at:ts,capability_kind:"command",evidence_kind:"request",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{recordId,ordinal:ordinal(`cmd:${canonical}`)})}))}}}return rows}var CLAUDE_COMMAND_NAME_ANCHORED=/^<command-name>([^<]+)<\/command-name>/,CLAUDE_COMMAND_ARGS=/<command-args>([\s\S]*?)<\/command-args>/;function extractUserTextClaude(contentBlocks){let parts=[];for(let block of contentBlocks){if(typeof block!=="object"||block===null)continue;let b=block;if(b.type==="tool_result")continue;if(typeof b.text==="string")parts.push(b.text)}return parts.length>0?parts.join(`
|
|
451
|
+
`).replaceAll("\\t","\t");literals.push(body)}match=shape.exec(line)}}return literals}var DEFAULT_REDACTION_RULES=[{name:"api-key",pattern:/\b(?:(?:sk|pk|ghp|github_pat|xox[baprs])-[-_a-zA-Z0-9]{12,}|(?:sk|pk|rk)_(?:live|test)_[A-Za-z0-9]{10,})\b/g,replacement:"[REDACTED:token]"},{name:"github-token",pattern:/\b(?:gh[pousr]_[A-Za-z0-9]{20,}|github_pat_[A-Za-z0-9_]{20,})\b/g,replacement:"[REDACTED:token]"},{name:"assignment-secret",pattern:/\b(?:api[_-]?key|token|secret|password)\s*[:=]\s*["']?[^"',\s}]+/gi,replacement:"[REDACTED:secret]"},{name:"email",pattern:/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/gi,replacement:"[REDACTED:email]"},{name:"xai-key",pattern:/\bxai-[A-Za-z0-9_-]{12,}\b/g,replacement:"[REDACTED:token]"},{name:"aws-access-key-id",pattern:/\bAKIA[0-9A-Z]{16}\b/g,replacement:"[REDACTED:aws-key]"},{name:"bearer-token",pattern:/\bBearer\s+[A-Za-z0-9._\-=]+\b/g,replacement:"[REDACTED:bearer]"}];function applyRules(value,rules=DEFAULT_REDACTION_RULES){return rules.reduce((current,rule)=>current.replace(rule.pattern,rule.replacement),value)}var MESSAGE_MAPPER_KEYS=["_codexUsageCarrier","session_id","seq","turn_index","role","record_type","disposition","ts","duration_ms","model","input_tokens","output_tokens","cache_read_tokens","cache_write_tokens","cost_usd","content_text","cwd","provenance","run_id","task_wbs","request_id"],TOOL_CALL_MAPPER_KEYS=["_messageSplitIndex","session_id","seq","tool_name","call_id","args_digest","args_raw","status","started_at","completed_at","duration_ms","result_bytes","error_text"],SKILL_CALL_MAPPER_KEYS=["_messageSplitIndex","session_id","seq","skill_name","invocation_kind","skill_path","args_raw","args_digest","call_id","status","started_at","completed_at","duration_ms","capability_kind","evidence_kind","invocation_id","origin_identity","_capabilityConflict"];function identityFieldMap(keys){let map2={};for(let key of keys)map2[key]=key;return map2}var HARNESS_SKILL_PACKAGES=new Set(["sp","rd3"]);function canonicalizeSkillName(raw){let name=raw.trim();if(name.startsWith("/")||name.startsWith("$"))name=name.slice(1);if(name.startsWith("skill:"))name=name.slice(6);let canonical=name.match(/^([a-z][a-z0-9]*):([a-z0-9-]+)$/);if(canonical!==null&&HARNESS_SKILL_PACKAGES.has(canonical[1]??""))return name;let dialect=name.match(/^([a-z][a-z0-9]*)-([a-z0-9-]+)$/);if(dialect!==null&&HARNESS_SKILL_PACKAGES.has(dialect[1]??""))return`${dialect[1]}:${dialect[2]}`;return name}function extractSkillCalls(raw,context,identity){switch(context?.source){case"claude":return detectClaudeSkillCalls(raw,identity,context);case"pi":return detectPiSkillCalls(raw,identity,context);case"omp":return detectOmpSkillCalls(raw,identity,context);case"codex":return detectCodexSkillCalls(raw,identity,context);case"agy":return detectAgySkillCalls(raw,identity,context);case"gemini":return detectGeminiSkillCalls(raw,identity,context);case"grok":return detectGrokSkillCalls(raw,identity,context);default:return[]}}function skillCallEntry(record2){return{targetTable:"history_skill_call",record:record2}}function skillRecord(identity,skillName,invocationKind,extra={}){return{_messageSplitIndex:identity.messageSplitIndex,session_id:identity.sessionId,seq:identity.seq,skill_name:canonicalizeSkillName(skillName),invocation_kind:invocationKind,skill_path:null,args_raw:null,args_digest:null,call_id:null,status:"unknown",started_at:null,completed_at:null,duration_ms:null,capability_kind:null,evidence_kind:null,invocation_id:null,origin_identity:null,...extra}}function createOrdinalAllocator(){let ordinals=new Map;return(key)=>{let existing=ordinals.get(key);if(existing!==void 0)return existing;let ordinal=ordinals.size;return ordinals.set(key,ordinal),ordinal}}function originFields(context,canonicalName,observable){let origins=context?.capabilityOrigins;if(origins===void 0||origins.length===0)return{capability_kind:null,origin_identity:null,_capabilityConflict:void 0};let match=matchCapabilityOrigin(origins,context?.source??"",canonicalName,observable);return{capability_kind:match.origin?.capabilityKind??null,origin_identity:match.origin?.originIdentity??null,_capabilityConflict:match.conflict??void 0}}function invocationIdFor(context,sessionId,ref){let source=context?.source??"unknown";if(ref.invocationId!==void 0)return capabilityInvocationId({source,sessionId,kind:"invocation",id:ref.invocationId});if(ref.callId!==void 0)return capabilityInvocationId({source,sessionId,kind:"call",id:ref.callId,ordinal:ref.ordinal>0?ref.ordinal:void 0});if(ref.recordId!==void 0)return capabilityInvocationId({source,sessionId,kind:"record",id:ref.recordId,ordinal:ref.ordinal});return capabilityInvocationId({source,sessionId,kind:"line",file:context?.sourceFile??"",line:context?.sourceLine??0,ordinal:ref.ordinal})}function skillNameFromPath(path){let normalized=path.replace(/\\/g,"/"),bySkillsSegment=normalized.match(/\/skills\/([^/]+)\/SKILL\.md$/i);if(bySkillsSegment!==null)return bySkillsSegment[1]??"";let stem=normalized.slice(0,normalized.length-9);return stem.split("/").pop()??stem}function detectClaudeSkillCalls(raw,identity,context){let contentBlocks=raw.content??o(raw.message).content;if(!Array.isArray(contentBlocks))return[];let rows=[],role=mapRole(raw.type??o(raw.message).role),recordId=s(raw.uuid,raw.id,raw.requestId),ts=timestampOf(raw.timestamp,raw.ts,o(raw.message).timestamp)??null,ordinal=createOrdinalAllocator();for(let block of contentBlocks){if(typeof block!=="object"||block===null)continue;let b=block;if(b.type!=="tool_use")continue;let input=b.input??{},callId=s(b.id),invocation=callId!==void 0?{callId,ordinal:0}:{recordId,ordinal:ordinal(`tool:${rows.length}`)};if(b.name==="Skill"){let skill=s(input.skill);if(skill===void 0)continue;let canonical=canonicalizeSkillName(skill);rows.push(skillRecord(identity,skill,s(o(b.caller).type)==="direct"?"user":"model",{args_raw:maybeArgsRaw("claude","Skill",input)??null,args_digest:argsDigest(input),call_id:callId??null,started_at:ts,evidence_kind:"load",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,invocation),...originFields(context,canonical,{})}));continue}if(b.name==="Task"){let subagent=s(input.subagent_type,input.agent_type,input.agent)??"subagent";rows.push(skillRecord(identity,subagent,"model",{args_raw:maybeArgsRaw("claude","Task",input)??null,args_digest:argsDigest(input),call_id:callId??null,started_at:ts,...originFields(context,canonicalizeSkillName(subagent),{}),capability_kind:"subagent",evidence_kind:"delegation",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,invocation)}));continue}if(b.name==="Read"){let filePath=s(input.file_path,input.path);if(filePath===void 0||lastPathSegmentNorm(filePath)!=="SKILL.md")continue;let canonical=canonicalizeSkillName(skillNameFromPath(filePath));rows.push(skillRecord(identity,skillNameFromPath(filePath),"model",{skill_path:filePath,args_raw:maybeArgsRaw("claude","Read",input)??null,args_digest:argsDigest(input),call_id:callId??null,started_at:ts,evidence_kind:"load",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,invocation),...originFields(context,canonical,{skillPath:filePath})}));continue}if(b.name==="Bash"){let command=s(input.command);if(command===void 0)continue;let targets=parseLiteralReadTargets(command);for(let i=0;i<targets.length;i+=1){let target=targets[i]??"",canonical=canonicalizeSkillName(skillNameFromPath(target));rows.push(skillRecord(identity,skillNameFromPath(target),"model",{skill_path:target,args_raw:maybeArgsRaw("claude","Bash",input)??null,args_digest:argsDigest(input),call_id:callId??null,started_at:ts,evidence_kind:"load",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{...invocation,ordinal:i}),...originFields(context,canonical,{skillPath:target})}))}}}if(role==="user"){let text=extractUserTextClaude(contentBlocks);if(text!==void 0){let rawName=leadingInjectionMatch(text,CLAUDE_COMMAND_NAME_ANCHORED)?.[1]??"";if(rawName.length>0){let canonical=canonicalizeSkillName(rawName);if(canonical.length>0)rows.push(skillRecord(identity,canonical,"user",{args_raw:text.match(CLAUDE_COMMAND_ARGS)?.[1]?.trim()||null,started_at:ts,capability_kind:"command",evidence_kind:"request",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{recordId,ordinal:ordinal(`cmd:${canonical}`)})}))}}}return rows}var CLAUDE_COMMAND_NAME_ANCHORED=/^<command-name>([^<]+)<\/command-name>/,CLAUDE_COMMAND_ARGS=/<command-args>([\s\S]*?)<\/command-args>/;function extractUserTextClaude(contentBlocks){let parts=[];for(let block of contentBlocks){if(typeof block!=="object"||block===null)continue;let b=block;if(b.type==="tool_result")continue;if(typeof b.text==="string")parts.push(b.text)}return parts.length>0?parts.join(`
|
|
452
452
|
`):void 0}function lastPathSegmentNorm(path){let normalized=path.replace(/\\/g,"/"),idx=normalized.lastIndexOf("/");return idx===-1?normalized:normalized.slice(idx+1)}function isQuotedSignatureContext(text,matchIndex){let lineStart=text.lastIndexOf(`
|
|
453
453
|
`,matchIndex-1)+1;if(text.slice(lineStart,matchIndex).trim().length>0)return!0;let openFence="";for(let line of text.slice(0,lineStart).split(`
|
|
454
454
|
`)){let fence=/^\s{0,3}(`{3,}|~{3,})/.exec(line);if(fence===null)continue;let run=fence[1]??"";if(openFence==="")openFence=run;else if(run[0]===openFence[0]&&run.length>=openFence.length)openFence=""}return openFence!==""}function isCodexMarkerLine(line){let trimmed=line.trim();return CODEX_DOLLAR_MARKER.test(trimmed)||CODEX_SLASH_MARKER.test(trimmed)||/^-\s+skill:\s*\S+/.test(trimmed)}function isCodexWrapperLeadPosition(text,matchIndex,chainStart){let before=text.slice(0,matchIndex);if(before.trim().length===0)return!0;if(chainStart!==void 0&&text.slice(chainStart,matchIndex).trim().length===0)return!0;let lines=before.split(`
|
|
455
|
-
`);if((lines[lines.length-1]??"").trim().length>0)return!1;if(lines.length<2)return!1;return isCodexMarkerLine(lines[lines.length-2]??"")}function leadingInjectionMatch(text,pattern){let trimmed=text.trimStart(),offset=text.length-trimmed.length,match=trimmed.match(pattern);if(match===null||match.index===void 0)return null;if(isQuotedSignatureContext(text,offset+match.index))return null;return match}var PI_SKILL_WRAPPER_ANCHORED=/^<skill\s+name="([^"]+)"(?:\s+location="([^"]*)")?\s*>/,READ_FAMILY_TOOLS=new Set(["read","read_file","view"]);function detectPiSkillCalls(raw,identity,context){let msg=raw.message,role=piRole(msg?.role??raw.role??raw.recordType??raw.type),recordId=s(raw.id,raw.uuid,raw.requestId),ts=timestampOf(raw.timestamp,raw.ts,o(msg).timestamp)??null,rows=[];if(role==="user"){let text=extractContentText(msg?.content??raw.content);if(text===void 0)return[];let ordinal=createOrdinalAllocator(),wrapper=leadingInjectionMatch(text,PI_SKILL_WRAPPER_ANCHORED);if(wrapper!==null){let skillPath=wrapper[2]||null,canonical=canonicalizeSkillName(wrapper[1]??"");if(canonical.length>0)rows.push(skillRecord(identity,canonical,"user",{skill_path:skillPath,started_at:ts,evidence_kind:"load",status:"ok",invocation_id:invocationIdFor(context,identity.sessionId,{recordId,ordinal:ordinal(`skill:${canonical}`)}),...originFields(context,canonical,{skillPath})}))}return rows}if(role==="assistant"){let contentBlocks=msg?.content??raw.content;if(!Array.isArray(contentBlocks))return[];for(let block of contentBlocks){if(typeof block!=="object"||block===null)continue;let call=normalizeOmpToolCall(block);if(call===null||!READ_FAMILY_TOOLS.has(String(call.name??"")))continue;let args=call.input??call.arguments??{},filePath=s(args.filePath,args.file_path,args.path,args.target_file);if(filePath===void 0||lastPathSegmentNorm(filePath)!=="SKILL.md")continue;let callId=s(call.id),canonical=canonicalizeSkillName(skillNameFromPath(filePath));rows.push(skillRecord(identity,canonical,"model",{skill_path:filePath,args_raw:maybeArgsRaw("pi",String(call.name??"read"),args)??null,args_digest:argsDigest(args),call_id:callId??null,started_at:ts,evidence_kind:"load",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{callId,recordId:callId===void 0?recordId:void 0,ordinal:rows.length}),...originFields(context,canonical,{skillPath:filePath})}))}}return rows}function detectOmpSkillCalls(raw,identity,context){let msg=raw.message,role=mapRole(msg?.role??raw.type??raw.role),recordId=s(raw.id,raw.uuid,raw.requestId),ts=timestampOf(raw.timestamp,raw.ts,o(msg).timestamp)??null,rows=[];if(role==="assistant"){let contentBlocks=msg?.content??raw.content;if(!Array.isArray(contentBlocks))return[];for(let block of contentBlocks){let call=normalizeOmpToolCall(block);if(call===null)continue;let input=call.input??call.arguments;if(call.name==="Skill"){let skill=s(input?.skill);if(skill===void 0)continue;let callId=s(call.id);rows.push(skillRecord(identity,skill,"model",{args_raw:maybeArgsRaw("omp","Skill",input)??null,args_digest:argsDigest(input),call_id:callId??null,started_at:ts,evidence_kind:"load",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{callId,recordId:callId===void 0?recordId:void 0,ordinal:rows.length}),...originFields(context,canonicalizeSkillName(skill),{})}));continue}if(READ_FAMILY_TOOLS.has(String(call.name??""))){let args=input??{},filePath=s(args.filePath,args.file_path,args.path,args.target_file);if(filePath===void 0||lastPathSegmentNorm(filePath)!=="SKILL.md")continue;let callId=s(call.id),canonical=canonicalizeSkillName(skillNameFromPath(filePath));rows.push(skillRecord(identity,canonical,"model",{skill_path:filePath,args_raw:maybeArgsRaw("omp",String(call.name??"read"),args)??null,args_digest:argsDigest(args),call_id:callId??null,started_at:ts,evidence_kind:"load",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{callId,recordId:callId===void 0?recordId:void 0,ordinal:rows.length}),...originFields(context,canonical,{skillPath:filePath})}))}}return rows}if(role==="user"){let text=extractContentText(msg?.content??raw.content);if(text===void 0)return[];let ordinal=createOrdinalAllocator(),wrapper=leadingInjectionMatch(text,PI_SKILL_WRAPPER_ANCHORED);if(wrapper!==null){let skillPath=wrapper[2]||null,canonical=canonicalizeSkillName(wrapper[1]??"");if(canonical.length>0)rows.push(skillRecord(identity,canonical,"user",{skill_path:skillPath,started_at:ts,evidence_kind:"load",status:"ok",invocation_id:invocationIdFor(context,identity.sessionId,{recordId,ordinal:ordinal(`skill:${canonical}`)}),...originFields(context,canonical,{skillPath})}))}}return rows}var CODEX_SKILL_BLOCK=/<skill>\s*<name>([^<]+)<\/name>\s*<path>([^<]+)<\/path>([\s\S]*?)<\/skill>/g,CODEX_DOLLAR_MARKER=/^\$([a-z][a-z0-9]*(?:-[a-z0-9]+)*)(?![\w./:])/,CODEX_SLASH_MARKER=/^\/([a-z][a-z0-9]*(?:-[a-z0-9]+)*)(?![\w./:])/,CODEX_SHELL_TOOLS=new Set(["shell","exec_command","exec"]);function detectCodexSkillCalls(raw,identity,context){let payload=raw.payload??raw,recordType=String(raw.type??""),payloadType=String(payload.type??""),role;if(recordType==="response_item")role=payloadType==="message"?mapRole(payload.role):payloadType==="agent_message"?"assistant":payloadType==="function_call"||payloadType==="custom_tool_call"?"tool":"meta";else if(recordType==="user"||recordType==="assistant")role=mapRole(recordType);else if(recordType==="message")role=mapRole(raw.role??payload.role);else return[];if(role==="tool"){let toolName=String(payload.name??"");if(!CODEX_SHELL_TOOLS.has(toolName)&&!toolName.endsWith(".exec"))return[];let callId=s(payload.call_id,payload.id),argsText=s(payload.arguments,payload.input);if(argsText===void 0)return[];let rows2=[],ts2=timestampOf(raw.timestamp,raw.ts,payload.created_at)??null,command=null;try{let parsed=JSON.parse(argsText);if(typeof parsed==="object"&&parsed!==null){let cmd=parsed.command;if(typeof cmd==="string")command=cmd;else if(Array.isArray(cmd))command=cmd.filter((c)=>typeof c==="string").join(" ")}}catch{command=null}let pushRead=(target,ordinal2)=>{let canonical=canonicalizeSkillName(skillNameFromPath(target));rows2.push(skillRecord(identity,canonical,"model",{skill_path:target,args_raw:argsText,args_digest:sha256Text(argsText),call_id:callId??null,started_at:ts2,evidence_kind:"load",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{callId:callId??recordIdFallback(raw),ordinal:ordinal2}),...originFields(context,canonical,{skillPath:target})}))};if(command!==null)for(let i=0;i<parseLiteralReadTargets(command).length;i+=1)pushRead(parseLiteralReadTargets(command)[i]??"",i);let nestedLiterals=extractNestedExecCommandLiterals(argsText),nestedOrdinal=0;for(let literal2 of nestedLiterals)for(let target of parseLiteralReadTargets(literal2))pushRead(target,1000+nestedOrdinal),nestedOrdinal+=1;return rows2}if(role!=="user")return[];let text=extractContentText(payload.content??raw.content)??s(payload.text,raw.text);if(text===void 0)return[];let rows=[],recordId=s(raw.id,payload.id,raw.uuid),ts=timestampOf(raw.timestamp,raw.ts)??null,ordinal=createOrdinalAllocator(),wrappers=[],acceptedWrapperEnd;for(let match of text.matchAll(CODEX_SKILL_BLOCK)){let start=match.index??0;if(isQuotedSignatureContext(text,start))continue;if(!isCodexWrapperLeadPosition(text,start,acceptedWrapperEnd))continue;acceptedWrapperEnd=start+match[0].length;let body=(match[3]??"").trim(),skillPath=match[2]||null;wrappers.push({name:canonicalizeSkillName(match[1]??""),path:skillPath,digest:body.length>0?sha256Text(body):null})}let wrapperOccurrences=new Map;for(let wrapper of wrappers){let occurrence=(wrapperOccurrences.get(wrapper.name)??0)+1;wrapperOccurrences.set(wrapper.name,occurrence);let ordinalKey=occurrence===1?`skill:${wrapper.name}`:`skill:${wrapper.name}#${occurrence}`;rows.push(skillRecord(identity,wrapper.name,"user",{skill_path:wrapper.path,args_digest:wrapper.digest,started_at:ts,evidence_kind:"load",status:"ok",invocation_id:invocationIdFor(context,identity.sessionId,{recordId,ordinal:ordinal(ordinalKey)}),...originFields(context,wrapper.name,{skillPath:wrapper.path,artifactDigest:wrapper.digest})}))}let leadingMarker=text.match(CODEX_DOLLAR_MARKER)??text.match(CODEX_SLASH_MARKER);if(leadingMarker!==null){let markerName=canonicalizeSkillName(leadingMarker[1]??"");rows.push(skillRecord(identity,markerName,"user",{started_at:ts,evidence_kind:"request",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{recordId,ordinal:ordinal(`skill:${markerName}`)}),...originFields(context,markerName,{})}))}return rows}function recordIdFallback(raw){return s(raw.id,raw.uuid)??"codex-record"}function detectAgySkillCalls(raw,identity,context){let recordType=String(raw.type??""),recordId=s(raw.id,raw.event_id,raw.request_id),ts=timestampOf(raw.created_at,raw.timestamp,raw.ts)??null,rows=[];if(recordType==="PLANNER_RESPONSE"&&Array.isArray(raw.tool_calls))for(let tc of raw.tool_calls){let tool=s(tc.name,tc.tool_name);if(tool==="view_file"){let args=tc.args??tc.arguments??{};if(args.toolAction!=="Viewing skill file")continue;let path=s(args.AbsolutePath,args.absolute_path);if(path===void 0||lastPathSegmentNorm(path)!=="SKILL.md")continue;let skillName=s(args.toolSummary)?.match(/SKILL\.md for (.+)$/)?.[1]??skillNameFromPath(path),canonical=canonicalizeSkillName(skillName),callId=s(tc.id,tc.call_id);rows.push(skillRecord(identity,canonical,"model",{skill_path:path,args_raw:maybeArgsRaw("agy","view_file",args)??null,args_digest:argsDigest(args),call_id:callId??null,started_at:ts,evidence_kind:"load",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{callId,recordId:callId===void 0?recordId:void 0,ordinal:rows.length}),...originFields(context,canonical,{skillPath:path})}));continue}if(tool==="INVOKE_SUBAGENT"){let args=tc.args??tc.arguments??{},subagent=s(args.subagent_type,args.subagent,args.agent_name,args.agent,args.name)??"subagent",callId=s(tc.id,tc.call_id);rows.push(skillRecord(identity,subagent,"model",{args_raw:maybeArgsRaw("agy","INVOKE_SUBAGENT",args)??null,args_digest:argsDigest(args),call_id:callId??null,started_at:ts,...originFields(context,canonicalizeSkillName(subagent),{}),capability_kind:"subagent",evidence_kind:"delegation",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{callId,recordId:callId===void 0?recordId:void 0,ordinal:rows.length})}))}}if(recordType==="slash_command"){let display=s(raw.display);if(display!==void 0){let commandName=s(raw.command,raw.name)??display.match(/(?:^|\s)\/([a-z][a-z0-9:-]*)/)?.[1];if(commandName!==void 0)rows.push(skillRecord(identity,canonicalizeSkillName(commandName),"user",{started_at:ts,capability_kind:"command",evidence_kind:"request",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{recordId,ordinal:0})}))}}return rows}var GEMINI_L0_PREFIX=/^\s*\/((?:sp|rd3)-[a-z0-9-]+)/;function detectGeminiSkillCalls(raw,identity,context){if(String(raw.type??"")!=="user")return[];let content=geminiContent(raw);if(content===null)return[];let match=content.match(GEMINI_L0_PREFIX);if(match===null)return[];let canonical=canonicalizeSkillName(match[1]??""),recordId=s(raw.id,raw.uuid),ts=timestampOf(raw.timestamp,raw.ts)??null;return[skillRecord(identity,canonical,"user",{started_at:ts,evidence_kind:"request",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{recordId,ordinal:0}),...originFields(context,canonical,{})})]}function detectGrokSkillCalls(raw,identity,context){let n=normalizeGrokRecord(raw);if(n.recordType!=="tool_call"||n.toolName!=="read_file")return[];let meta3=n.body._meta??raw._meta??{};if(o(meta3["x.ai/tool"]).namespace!=="grok_build")return[];let targetFile=s(o(n.toolArgs).target_file);if(targetFile===void 0||lastPathSegmentNorm(targetFile)!=="SKILL.md")return[];let canonical=canonicalizeSkillName(skillNameFromPath(targetFile)),recordId=s(n.body.id,raw.id,raw.uuid),callId=s(n.body.call_id,n.body.itemId,recordId),status=grokOutcomeStatus(typeof n.body.status==="string"?n.body.status:void 0);return[skillRecord(identity,canonical,"model",{skill_path:targetFile,args_raw:maybeArgsRaw("grok","read_file",n.toolArgs)??null,args_digest:argsDigest(n.toolArgs),call_id:callId??null,started_at:n.ts??null,status,evidence_kind:"load",invocation_id:invocationIdFor(context,identity.sessionId,{callId,ordinal:0}),...originFields(context,canonical,{skillPath:targetFile})})]}function grokOutcomeStatus(toolStatus){let value=String(toolStatus??"").toLowerCase();if(value==="ok"||value==="success"||value==="done"||value==="completed")return"ok";if(value==="error"||value==="failed")return"error";return"unknown"}function argsDigest(args){let redacted=redactArgs(args);return sha256(redacted)}function redactArgs(args){if(typeof args==="string"){if(args.length>80)return"[REDACTED:long]";if(/[A-Za-z0-9+/]{40,}=*|[A-Za-z0-9_-]{20,}/.test(args))return"[REDACTED:secret]";return args}if(Array.isArray(args))return args.map(redactArgs);if(args!==null&&typeof args==="object"){let result={};for(let[key,value]of Object.entries(args))result[key]=redactArgs(value);return result}return args}var BASH_COMMAND_MAX_CHARS=8192,GENERIC_ARGS_MAX_CHARS=8192;function bashCommandOf(args){if(args===null||typeof args!=="object")return;let rec=args,command=rec.command??rec.CommandLine??rec.cmd??rec.script;if(typeof command==="string")return command;if(Array.isArray(command))return command.map(String).join(" ");return}var BULKY_PAYLOAD_KEYS=new Set(["content","codecontent","replacementcontent","targetcontent","filedata","buffer","blob","image","imagebase64"]);function normalizeKey(key){return key.toLowerCase().replace(/[^a-z0-9]/g,"")}function isShellTool(toolName){return/^(?:bash|shell|cmd|command|exec|execcommand|executecommand|runcommand|shellcommand|runshellcommand)$/.test(normalizeKey(toolName))}function sanitizeValue(value){if(typeof value==="string")return value.length>1000?`${value.slice(0,1000)}[truncated ${value.length} chars]`:value;if(Array.isArray(value))return value.map(sanitizeValue);if(value!==null&&typeof value==="object"){let out={};for(let[key,entry]of Object.entries(value))out[key]=typeof entry==="string"&&entry.length>120&&BULKY_PAYLOAD_KEYS.has(normalizeKey(key))?`[omitted ${entry.length} chars]`:sanitizeValue(entry);return out}return value}function serializeBounded(value){let serialized=JSON.stringify(sanitizeValue(value));if(serialized.length<=GENERIC_ARGS_MAX_CHARS)return serialized;let preview=serialized;for(;;){let wrapper=JSON.stringify({_truncated:!0,omittedChars:serialized.length-preview.length,preview});if(wrapper.length<=GENERIC_ARGS_MAX_CHARS)return wrapper;preview=preview.slice(0,preview.length-(wrapper.length-GENERIC_ARGS_MAX_CHARS))}}function maybeArgsRaw(_source,toolName,args){if(args===void 0||args===null)return;let value=args;if(typeof args==="string")try{value=JSON.parse(args)}catch{return args.length>BASH_COMMAND_MAX_CHARS?args.slice(0,BASH_COMMAND_MAX_CHARS):args}if(value!==null&&typeof value==="object"){let cmd=bashCommandOf(value);if(cmd!==void 0&&isShellTool(toolName))return cmd.length>BASH_COMMAND_MAX_CHARS?cmd.slice(0,BASH_COMMAND_MAX_CHARS):cmd;return serializeBounded(value)}return JSON.stringify(value)}function claudeSplit(raw,context){let entries=[],sessionId=s(raw.sessionId,raw.conversation_uuid)??"unknown",seq=typeof raw.seq==="number"?raw.seq:typeof raw.messageIndex==="number"?raw.messageIndex:0,ts=timestampOf(raw.ts,raw.timestamp,raw.createdAt),role=mapRole(raw.type??raw.role),recordType=String(raw.type??""),model=s(raw.model,o(raw.message).model),cwd=s(raw.cwd,raw.dir);if(raw.subtype==="turn_duration"&&typeof raw.durationMs==="number")return entries.push({targetTable:"history_message",record:{session_id:sessionId,seq,role:"system",record_type:"turn_duration",disposition:"meta",ts,duration_ms:raw.durationMs,content_text:null,provenance:"ambient"}}),entries;if(recordType==="attachment"||recordType.startsWith("file-history"))return entries.push({targetTable:"history_message",record:{session_id:sessionId,seq,role:"meta",record_type:recordType,disposition:"meta",ts,provenance:"ambient"}}),entries;let usage=typeof raw.usage==="object"&&raw.usage!==null?raw.usage:o(raw.message).usage,inputTokens=raw.inputTokens??usage?.input_tokens,outputTokens=raw.outputTokens??usage?.output_tokens,cacheRead=usage?.cacheReadTokens??usage?.cache_read_tokens??usage?.cache_read_input_tokens,cacheWrite=usage?.cacheWriteTokens??usage?.cache_write_tokens??usage?.cache_creation_input_tokens,costUsd=computeCost(inputTokens,outputTokens,model),contentBlocks=raw.content??o(raw.message).content,contentText=extractContentText(contentBlocks),messageSplitIndex=entries.length;if(entries.push({targetTable:"history_message",record:{session_id:sessionId,seq,turn_index:typeof raw.turnIndex==="number"?raw.turnIndex:void 0,role,record_type:recordType,disposition:"keep",ts,duration_ms:void 0,model:model??null,input_tokens:inputTokens??null,output_tokens:outputTokens??null,cache_read_tokens:cacheRead??null,cache_write_tokens:cacheWrite??null,cost_usd:costUsd??null,content_text:contentText??null,cwd:cwd??null,provenance:"ambient",request_id:s(raw.requestId)??null}}),Array.isArray(contentBlocks)&&role==="assistant")for(let block of contentBlocks){if(typeof block!=="object"||block===null)continue;let b=block;if(b.type==="tool_use")entries.push({targetTable:"history_tool_call",record:{_messageSplitIndex:messageSplitIndex,session_id:sessionId,seq,call_id:s(b.id),tool_name:String(b.name??""),args_digest:argsDigest(b.input),args_raw:maybeArgsRaw("claude",String(b.name??""),b.input),status:"ok",started_at:void 0,completed_at:void 0,duration_ms:void 0,result_bytes:void 0,error_text:void 0}})}for(let record2 of extractSkillCalls(raw,context,{sessionId,seq,messageSplitIndex}))entries.push(skillCallEntry(record2));return entries}function piSplit(raw,context){let msg=raw.message,recordType=String(raw.type??raw.recordType??""),sessionId=sessionIdFromContext(context,raw),seq=context?.sourceLine??(typeof raw.seq==="number"?raw.seq:0),ts=timestampOf(raw.timestamp,raw.createdAt,raw.ts);if(recordType==="title"||recordType==="title_change"||recordType==="service_tier_change"||recordType==="session_info"||recordType==="ttsr_injection"||recordType==="session_init"||recordType==="session"||recordType==="model_change"||recordType==="thinking_level_change"||recordType==="compaction"||recordType==="custom"||recordType==="custom_message"||recordType.startsWith("custom."))return[{targetTable:"history_message",record:{session_id:sessionId,seq,role:"meta",record_type:recordType,disposition:"meta",ts,provenance:"ambient"}}];let entries=[],role=piRole(msg?.role??raw.role??recordType),model=s(raw.model,o(msg).model),cwd=s(raw.cwd,raw.dir),usage=msg?.usage??raw.usage,inputTokens=usage?.input??usage?.input_tokens??void 0,outputTokens=usage?.output??usage?.output_tokens??void 0,cacheRead=usage?.cacheRead??usage?.cache_read_tokens??void 0,cacheWrite=usage?.cacheWrite??usage?.cache_write_tokens??void 0,costObj=msg?.cost??raw.cost,costUsd=typeof costObj?.total==="number"?costObj.total:computeCost(inputTokens,outputTokens,model),contentBlocks=msg?.content??raw.content,durationMs=typeof msg?.duration==="number"&&Number.isFinite(msg.duration)?msg.duration:void 0,messageSplitIndex=entries.length;if(entries.push({targetTable:"history_message",record:{session_id:sessionId,seq,role,record_type:recordType,disposition:"keep",ts,duration_ms:durationMs,model:model??null,input_tokens:inputTokens??null,output_tokens:outputTokens??null,cache_read_tokens:cacheRead??null,cache_write_tokens:cacheWrite??null,cost_usd:costUsd??null,content_text:extractContentText(contentBlocks)??s(raw.content,raw.text,msg?.content)??null,cwd:cwd??null,provenance:"ambient"}}),Array.isArray(contentBlocks)&&role==="assistant")for(let block of contentBlocks){let call=normalizeOmpToolCall(block);if(call===null)continue;entries.push({targetTable:"history_tool_call",record:{_messageSplitIndex:messageSplitIndex,session_id:sessionId,seq,tool_name:String(call.name??""),call_id:s(call.id),args_digest:argsDigest(call.input??call.arguments),args_raw:maybeArgsRaw("pi",String(call.name??""),call.input??call.arguments),status:"ok",started_at:void 0,completed_at:void 0,duration_ms:void 0,result_bytes:void 0,error_text:void 0}})}for(let record2 of extractSkillCalls(raw,context,{sessionId,seq,messageSplitIndex}))entries.push(skillCallEntry(record2));return entries}function piRole(type){let t=String(type??"").toLowerCase();if(t==="toolresult"||t==="tool_result"||t==="bashexecution"||t==="tool")return"user";let mapped=mapRole(t);if(mapped==="user"||mapped==="assistant"||mapped==="system")return mapped;return"unknown"}function ompSplit(raw,context){let msg=raw.message,recordType=String(raw.type??""),sessionId=sessionIdFromContext(context,raw),seq=context?.sourceLine??(typeof raw.seq==="number"?raw.seq:0),ts=timestampOf(raw.ts,raw.timestamp,raw.createdAt);if(recordType==="title"||recordType==="title_change"||recordType==="service_tier_change"||recordType==="ttsr_injection"||recordType==="session_init"||recordType==="session"||recordType==="model_change"||recordType==="thinking_level_change"||recordType==="compaction"||recordType==="custom"||recordType==="custom_message"||recordType.startsWith("custom."))return[{targetTable:"history_message",record:{session_id:sessionId,seq,role:"meta",record_type:recordType,disposition:"meta",ts,provenance:"ambient"}}];let entries=[],role=mapRole(msg?.role??raw.type??raw.role),model=s(raw.model,o(msg).model),cwd=s(raw.cwd,raw.dir),usage=msg?.usage??raw.usage,inputTokens=usage?.input??usage?.input_tokens??void 0,outputTokens=usage?.output??usage?.output_tokens??void 0,cacheRead=usage?.cacheRead??usage?.cache_read_tokens??void 0,cacheWrite=usage?.cacheWrite??usage?.cache_write_tokens??void 0,costObj=msg?.cost??raw.cost,costUsd=typeof costObj?.total==="number"?costObj.total:computeCost(inputTokens,outputTokens,model),contentBlocks=msg?.content??raw.content,durationMs=typeof msg?.duration==="number"&&Number.isFinite(msg.duration)?msg.duration:void 0,messageSplitIndex=entries.length;if(entries.push({targetTable:"history_message",record:{session_id:sessionId,seq,role,record_type:recordType,disposition:"keep",ts,duration_ms:durationMs,model:model??null,input_tokens:inputTokens??null,output_tokens:outputTokens??null,cache_read_tokens:cacheRead??null,cache_write_tokens:cacheWrite??null,cost_usd:costUsd??null,content_text:extractContentText(contentBlocks)??s(raw.content,raw.text,msg?.content)??null,cwd:cwd??null,provenance:"ambient"}}),Array.isArray(contentBlocks)&&role==="assistant")for(let block of contentBlocks){let call=normalizeOmpToolCall(block);if(call===null)continue;entries.push({targetTable:"history_tool_call",record:{_messageSplitIndex:messageSplitIndex,session_id:sessionId,seq,tool_name:String(call.name??""),call_id:s(call.id),args_digest:argsDigest(call.input??call.arguments),args_raw:maybeArgsRaw("omp",String(call.name??""),call.input??call.arguments),status:"ok",started_at:void 0,completed_at:void 0,duration_ms:void 0,result_bytes:void 0,error_text:void 0}})}for(let record2 of extractSkillCalls(raw,context,{sessionId,seq,messageSplitIndex}))entries.push(skillCallEntry(record2));return entries}function normalizeOmpToolCall(block){if(typeof block!=="object"||block===null)return null;let nested=o(block.toolCall);if(Object.keys(nested).length>0)return nested;if(block.type==="toolCall")return block;return null}function codexSplit(raw,context){let entries=[],payload=raw.payload??raw,seq=typeof raw.seq==="number"?raw.seq:0,ts=timestampOf(raw.timestamp,raw.ts,payload.ts),recordType=String(raw.type??""),payloadType=String(payload.type??""),isShortFormat=recordType===""&&raw.id!==void 0&&raw.timestamp!==void 0&&raw.instructions!==void 0,explicitSessionId=s(raw.session_id,o(raw.session_meta).id);if(explicitSessionId===void 0&&recordType==="session_meta")explicitSessionId=s(payload.id,o(raw.payload).id);if(explicitSessionId===void 0&&isShortFormat)explicitSessionId=s(raw.id);let pathSessionId=context?.sourceFile?sessionIdFromSourcePath("codex",context.sourceFile):void 0,sessionId=explicitSessionId??pathSessionId??"unknown";if(isShortFormat)return[{targetTable:"history_message",record:{session_id:sessionId,seq,role:"meta",record_type:"short_format",disposition:"meta",ts,provenance:"ambient"}}];let role,disposition,contentText,usage;if(recordType==="response_item")if(payloadType==="message")role=mapRole(payload.role),disposition="keep",contentText=extractContentText(payload.content)??s(payload.text)??null;else if(payloadType==="agent_message")role="assistant",disposition="keep",contentText=extractContentText(payload.content)??s(payload.text,payload.message)??null;else if(payloadType==="reasoning")role="assistant",disposition="keep",contentText=extractContentText(payload.summary)??s(payload.text)??null;else if(payloadType==="function_call"||payloadType==="custom_tool_call")role="tool",disposition="keep",contentText=null;else role="meta",disposition="meta",contentText=s(payload.text)??null;else if(recordType==="user"||recordType==="assistant")role=mapRole(recordType),disposition="keep",contentText=extractContentText(payload.content)??s(raw.content,payload.text)??null;else if(recordType==="message")role=mapRole(raw.role??payload.role),disposition="keep",contentText=extractContentText(payload.content??raw.content)??s(payload.text,raw.text)??null;else if(recordType==="event_msg")role="meta",disposition="meta",contentText=s(payload.message,payload.text)??null,usage=o(o(payload.info).last_token_usage);else role="meta",disposition="meta",contentText=s(payload.text,raw.instructions)??null;let model=s(raw.model,payload.model,o(o(raw.turn_context).payload).model),cwd=s(raw.cwd,raw.dir),tokenCount=payload.token_count,usageInput=usage?.input_tokens??tokenCount?.input??tokenCount?.input_tokens??void 0,usageOutput=usage?.output_tokens??tokenCount?.output??tokenCount?.output_tokens??void 0,cacheRead=usage?.cached_input_tokens??void 0,turnPayload=raw.turn_context?.payload,turnInputTokens=turnPayload?.input_tokens,turnOutputTokens=turnPayload?.output_tokens,finalInput=usageInput!==void 0?usageInput:turnInputTokens,finalOutput=usageOutput!==void 0?usageOutput:turnOutputTokens,costUsd=computeCost(finalInput,finalOutput,model),usageCarrier=finalInput!==void 0||finalOutput!==void 0?{input:finalInput??null,output:finalOutput??null,cacheRead:cacheRead??null}:void 0,stripUsage=role==="meta"&&usageCarrier!==void 0,messageSplitIndex=entries.length;entries.push({targetTable:"history_message",record:{session_id:sessionId,seq,role,record_type:recordType,disposition,ts,duration_ms:void 0,model:model??null,input_tokens:stripUsage?null:finalInput??null,output_tokens:stripUsage?null:finalOutput??null,cache_read_tokens:stripUsage?null:cacheRead??null,...usageCarrier!==void 0?{_codexUsageCarrier:usageCarrier}:{},cache_write_tokens:null,cost_usd:costUsd??null,content_text:contentText,cwd:cwd??null,provenance:"ambient"}});let toolItems=[];if((recordType==="response_item"||recordType==="function_call"||recordType==="custom_tool_call")&&(payloadType==="function_call"||payloadType==="custom_tool_call"))toolItems.push(payload);else if(payload.response_item)toolItems.push(payload.response_item);else if(Array.isArray(payload.response_items))toolItems.push(...payload.response_items);for(let item of toolItems){let fc=item.function_call??item,toolName=s(fc.name)??"",args=fc.arguments??fc.input;entries.push({targetTable:"history_tool_call",record:{_messageSplitIndex:messageSplitIndex,session_id:sessionId,seq,tool_name:toolName,call_id:s(fc.call_id),args_digest:argsDigest(args),args_raw:maybeArgsRaw("codex",toolName,args),status:"ok",started_at:void 0,completed_at:void 0,duration_ms:void 0,result_bytes:void 0,error_text:void 0}})}for(let record2 of extractSkillCalls(raw,context,{sessionId,seq,messageSplitIndex}))entries.push(skillCallEntry(record2));return entries}function agySplit(raw,context){let entries=[],recordType=String(raw.type??""),explicitSessionId=s(raw.session_id,raw.conversation_id,raw.conversationId),pathSessionId=context?.sourceFile?sessionIdFromSourcePath("agy",context.sourceFile):void 0,sessionId=explicitSessionId??pathSessionId??"unknown",seq=typeof raw.seq==="number"?raw.seq:typeof raw.step_index==="number"?raw.step_index:context?.sourceLine??0,ts=timestampOf(raw.created_at,raw.timestamp,raw.ts),role,disposition,contentText=null,messageRecordType=recordType;if(raw.display!==void 0)role="user",disposition="keep",contentText=s(raw.display)??null,messageRecordType=recordType.length>0?recordType:"USER_INPUT";else switch(recordType){case"USER_INPUT":case"ASK_QUESTION":role="user",disposition="keep",contentText=s(raw.content,raw.text,raw.message)??null;break;case"PLANNER_RESPONSE":role="assistant",disposition="keep",contentText=s(raw.content,raw.text,raw.message,raw.plan)??null;break;case"ERROR_MESSAGE":role="system",disposition="keep",contentText=s(raw.content,raw.text,raw.message)??null;break;case"RUN_COMMAND":case"VIEW_FILE":case"GREP_SEARCH":case"LIST_DIRECTORY":case"READ_URL_CONTENT":role="tool",disposition="keep",contentText=s(raw.content,raw.command,raw.file_path,raw.pattern)??null;break;case"CODE_ACTION":case"INVOKE_SUBAGENT":role="tool",disposition="keep",contentText=s(raw.content,raw.text)??null;break;case"CONVERSATION_HISTORY":case"CHECKPOINT":case"GENERIC":role="meta",disposition="meta",contentText=s(raw.content,raw.text)??null;break;default:if(recordType.length===0)role="unknown",disposition="unknown";else role="meta",disposition="meta",contentText=s(raw.content,raw.text)??null;break}let messageSplitIndex=entries.length;if(entries.push({targetTable:"history_message",record:{session_id:sessionId,seq,role,record_type:messageRecordType,disposition,ts,duration_ms:void 0,model:null,input_tokens:null,output_tokens:null,cache_read_tokens:null,cache_write_tokens:null,cost_usd:null,content_text:contentText,cwd:s(raw.workspace,raw.cwd)??null,provenance:"ambient"}}),recordType==="PLANNER_RESPONSE"&&Array.isArray(raw.tool_calls))for(let tc of raw.tool_calls)entries.push({targetTable:"history_tool_call",record:{_messageSplitIndex:messageSplitIndex,session_id:sessionId,seq:typeof tc.step_index==="number"?tc.step_index:seq,tool_name:String(tc.name??tc.tool_name??""),args_digest:argsDigest(tc.input??tc.arguments),args_raw:maybeArgsRaw("agy",String(tc.name??tc.tool_name??""),tc.input??tc.arguments),status:"ok",started_at:void 0,completed_at:void 0,duration_ms:void 0,result_bytes:void 0,error_text:void 0}});for(let record2 of extractSkillCalls(raw,context,{sessionId,seq,messageSplitIndex}))entries.push(skillCallEntry(record2));return entries}function geminiSplit(raw,context){let recordType=String(raw.type??(raw.kind!==void 0?"session":raw.$set!==void 0?"state":"")),state=o(raw.$set),sessionId=sessionIdFromContext(context,raw),seq=context?.sourceLine??0,ts=timestampOf(raw.timestamp,raw.startTime,raw.lastUpdated,state.lastUpdated);if(recordType==="session"||recordType==="state")return[{targetTable:"history_message",record:{session_id:sessionId,seq,role:"meta",record_type:recordType,disposition:"meta",ts,content_text:s(state.summary)??null,provenance:"ambient"}}];let role=recordType==="gemini"?"assistant":recordType==="user"?"user":"system",tokens=o(raw.tokens),content=geminiContent(raw),entries=[{targetTable:"history_message",record:{session_id:sessionId,seq,role,record_type:recordType,disposition:"keep",ts,duration_ms:null,model:s(raw.model)??null,input_tokens:numberOrNull(tokens.input),output_tokens:numberOrNull(tokens.output),cache_read_tokens:numberOrNull(tokens.cached),cache_write_tokens:null,cost_usd:null,content_text:content,cwd:null,provenance:"ambient"}}];if(Array.isArray(raw.toolCalls))for(let value of raw.toolCalls){if(value===null||typeof value!=="object"||Array.isArray(value))continue;let tool=value,status=s(tool.status)??"unknown",timestamp=s(tool.timestamp),result=tool.result??tool.resultDisplay;entries.push({targetTable:"history_tool_call",record:{_messageSplitIndex:0,session_id:sessionId,seq,tool_name:s(tool.name,tool.displayName)??"unknown",args_digest:argsDigest(tool.args),args_raw:maybeArgsRaw("gemini",s(tool.name,tool.displayName)??"",tool.args),status,started_at:timestamp,completed_at:timestamp,duration_ms:null,result_bytes:result===void 0?null:new TextEncoder().encode(JSON.stringify(result)).byteLength,error_text:status==="error"?s(tool.resultDisplay,tool.result)??null:null}})}for(let record2 of extractSkillCalls(raw,context,{sessionId,seq,messageSplitIndex:0}))entries.push(skillCallEntry(record2));return entries}function dshSplit(raw,context){let recordType=String(raw.type??"");if(recordType==="session")return[{targetTable:"history_message",record:{session_id:s(raw.id)??sessionIdFromSourcePath("deepseek",context?.sourceFile??"")??"unknown",seq:0,role:"meta",record_type:"session",disposition:"meta",ts:timestampOf(raw.createdAt),cwd:s(raw.cwd)??null,content_text:null,provenance:"ambient"}}];if(recordType!=="user/message"&&recordType!=="assistant/message")return[];let data=o(raw.data),msg=o(data.message),seq=typeof raw.seq==="number"?raw.seq:context?.sourceLine??0,sessionId=sessionIdFromSourcePath("deepseek",context?.sourceFile??"")??"unknown",role=recordType==="user/message"?"user":"assistant",source=o(data.source??msg.source),model=s(source.model,o(data.model??msg.model).model),usage=data.usage??msg.usage,messageId=s(msg.id,data.id);return[{targetTable:"history_message",record:{session_id:sessionId,seq,role,record_type:recordType,disposition:"keep",...messageId!==void 0?{source_record_id:messageId}:{},ts:timestampOf(raw.time,data.time,msg.time),duration_ms:null,model:model??null,input_tokens:numberOrNull(usage?.input_tokens??usage?.input)??null,output_tokens:numberOrNull(usage?.output_tokens??usage?.output)??null,cache_read_tokens:null,cache_write_tokens:null,cost_usd:null,content_text:extractContentText(data.content??msg.content)??s(data.text,msg.text)??null,cwd:null,provenance:"ambient"}}]}var UUID_PATTERN="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}",AGY_BRAIN_REGEX=new RegExp(`(?:^|\\/)brain\\/(${UUID_PATTERN})(?:\\/|$)`,"i"),DSH_SESSION_REGEX=new RegExp(`(?:^|\\/)session-(${UUID_PATTERN})(?:\\/|$)`,"i"),CODEX_ROLLOUT_REGEX=new RegExp(`(?:^|-|_)(${UUID_PATTERN})$`,"i");function sessionIdFromSourcePath(source,sourceFile){let normalized=sourceFile.replace(/\\/g,"/"),sLower=source.toLowerCase();if(sLower==="agy"||sLower==="antigravity")return normalized.match(AGY_BRAIN_REGEX)?.[1];if(sLower==="deepseek")return normalized.match(DSH_SESSION_REGEX)?.[1];if(sLower==="codex"){let basename=normalized.split("/").at(-1)??"";if(basename.startsWith("rollout-")&&basename.endsWith(".jsonl"))return basename.slice(0,-6).match(CODEX_ROLLOUT_REGEX)?.[1]}return}function sessionIdFromContext(context,raw){if(context!==void 0){let file2=context.sourceFile.split("/").at(-1);if(file2!==void 0)return file2.replace(/\.jsonl$/,"")}return s(raw.sessionId,raw.id)??"unknown"}function geminiContent(raw){let content=extractContentText(raw.content)??s(raw.text),thoughts=Array.isArray(raw.thoughts)?raw.thoughts.map((value)=>value!==null&&typeof value==="object"?s(o(value).description):void 0).filter((value)=>value!==void 0).join(`
|
|
455
|
+
`);if((lines[lines.length-1]??"").trim().length>0)return!1;if(lines.length<2)return!1;return isCodexMarkerLine(lines[lines.length-2]??"")}function leadingInjectionMatch(text,pattern){let trimmed=text.trimStart(),offset=text.length-trimmed.length,match=trimmed.match(pattern);if(match===null||match.index===void 0)return null;if(isQuotedSignatureContext(text,offset+match.index))return null;return match}var PI_SKILL_WRAPPER_ANCHORED=/^<skill\s+name="([^"]+)"(?:\s+location="([^"]*)")?\s*>/,READ_FAMILY_TOOLS=new Set(["read","read_file","view"]);function detectPiSkillCalls(raw,identity,context){let msg=raw.message,role=piRole(msg?.role??raw.role??raw.recordType??raw.type),recordId=s(raw.id,raw.uuid,raw.requestId),ts=timestampOf(raw.timestamp,raw.ts,o(msg).timestamp)??null,rows=[];if(role==="user"){let text=extractContentText(msg?.content??raw.content);if(text===void 0)return[];let ordinal=createOrdinalAllocator(),wrapper=leadingInjectionMatch(text,PI_SKILL_WRAPPER_ANCHORED);if(wrapper!==null){let skillPath=wrapper[2]||null,canonical=canonicalizeSkillName(wrapper[1]??"");if(canonical.length>0)rows.push(skillRecord(identity,canonical,"user",{skill_path:skillPath,started_at:ts,evidence_kind:"load",status:"ok",invocation_id:invocationIdFor(context,identity.sessionId,{recordId,ordinal:ordinal(`skill:${canonical}`)}),...originFields(context,canonical,{skillPath})}))}return rows}if(role==="assistant"){let contentBlocks=msg?.content??raw.content;if(!Array.isArray(contentBlocks))return[];for(let block of contentBlocks){if(typeof block!=="object"||block===null)continue;let call=normalizeOmpToolCall(block);if(call===null||!READ_FAMILY_TOOLS.has(String(call.name??"")))continue;let args=call.input??call.arguments??{},filePath=s(args.filePath,args.file_path,args.path,args.target_file);if(filePath===void 0||lastPathSegmentNorm(filePath)!=="SKILL.md")continue;let callId=s(call.id),canonical=canonicalizeSkillName(skillNameFromPath(filePath));rows.push(skillRecord(identity,canonical,"model",{skill_path:filePath,args_raw:maybeArgsRaw("pi",String(call.name??"read"),args)??null,args_digest:argsDigest(args),call_id:callId??null,started_at:ts,evidence_kind:"load",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{callId,recordId:callId===void 0?recordId:void 0,ordinal:rows.length}),...originFields(context,canonical,{skillPath:filePath})}))}}return rows}function detectOmpSkillCalls(raw,identity,context){let msg=raw.message,role=mapRole(msg?.role??raw.type??raw.role),recordId=s(raw.id,raw.uuid,raw.requestId),ts=timestampOf(raw.timestamp,raw.ts,o(msg).timestamp)??null,rows=[];if(role==="assistant"){let contentBlocks=msg?.content??raw.content;if(!Array.isArray(contentBlocks))return[];for(let block of contentBlocks){let call=normalizeOmpToolCall(block);if(call===null)continue;let input=call.input??call.arguments;if(call.name==="Skill"){let skill=s(input?.skill);if(skill===void 0)continue;let callId=s(call.id);rows.push(skillRecord(identity,skill,"model",{args_raw:maybeArgsRaw("omp","Skill",input)??null,args_digest:argsDigest(input),call_id:callId??null,started_at:ts,evidence_kind:"load",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{callId,recordId:callId===void 0?recordId:void 0,ordinal:rows.length}),...originFields(context,canonicalizeSkillName(skill),{})}));continue}if(READ_FAMILY_TOOLS.has(String(call.name??""))){let args=input??{},filePath=s(args.filePath,args.file_path,args.path,args.target_file);if(filePath===void 0||lastPathSegmentNorm(filePath)!=="SKILL.md")continue;let callId=s(call.id),canonical=canonicalizeSkillName(skillNameFromPath(filePath));rows.push(skillRecord(identity,canonical,"model",{skill_path:filePath,args_raw:maybeArgsRaw("omp",String(call.name??"read"),args)??null,args_digest:argsDigest(args),call_id:callId??null,started_at:ts,evidence_kind:"load",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{callId,recordId:callId===void 0?recordId:void 0,ordinal:rows.length}),...originFields(context,canonical,{skillPath:filePath})}))}}return rows}if(role==="user"){let text=extractContentText(msg?.content??raw.content);if(text===void 0)return[];let ordinal=createOrdinalAllocator(),wrapper=leadingInjectionMatch(text,PI_SKILL_WRAPPER_ANCHORED);if(wrapper!==null){let skillPath=wrapper[2]||null,canonical=canonicalizeSkillName(wrapper[1]??"");if(canonical.length>0)rows.push(skillRecord(identity,canonical,"user",{skill_path:skillPath,started_at:ts,evidence_kind:"load",status:"ok",invocation_id:invocationIdFor(context,identity.sessionId,{recordId,ordinal:ordinal(`skill:${canonical}`)}),...originFields(context,canonical,{skillPath})}))}}return rows}var CODEX_SKILL_BLOCK=/<skill>\s*<name>([^<]+)<\/name>\s*<path>([^<]+)<\/path>([\s\S]*?)<\/skill>/g,CODEX_DOLLAR_MARKER=/^\$([a-z][a-z0-9]*(?:-[a-z0-9]+)*)(?![\w./:])/,CODEX_SLASH_MARKER=/^\/([a-z][a-z0-9]*(?:-[a-z0-9]+)*)(?![\w./:])/,CODEX_SHELL_TOOLS=new Set(["shell","exec_command","exec"]);function detectCodexSkillCalls(raw,identity,context){let payload=raw.payload??raw,recordType=String(raw.type??""),payloadType=String(payload.type??""),role;if(recordType==="response_item")role=payloadType==="message"?mapRole(payload.role):payloadType==="agent_message"?"assistant":payloadType==="function_call"||payloadType==="custom_tool_call"?"tool":"meta";else if(recordType==="user"||recordType==="assistant")role=mapRole(recordType);else if(recordType==="message")role=mapRole(raw.role??payload.role);else return[];if(role==="tool"){let toolName=String(payload.name??"");if(!CODEX_SHELL_TOOLS.has(toolName)&&!toolName.endsWith(".exec"))return[];let callId=s(payload.call_id,payload.id),argsText=s(payload.arguments,payload.input);if(argsText===void 0)return[];let rows2=[],ts2=timestampOf(raw.timestamp,raw.ts,payload.created_at)??null,command=null;try{let parsed=JSON.parse(argsText);if(typeof parsed==="object"&&parsed!==null){let cmd=parsed.command;if(typeof cmd==="string")command=cmd;else if(Array.isArray(cmd))command=cmd.filter((c)=>typeof c==="string").join(" ")}}catch{command=null}let pushRead=(target,ordinal2)=>{let canonical=canonicalizeSkillName(skillNameFromPath(target));rows2.push(skillRecord(identity,canonical,"model",{skill_path:target,args_raw:argsText,args_digest:sha256Text(argsText),call_id:callId??null,started_at:ts2,evidence_kind:"load",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{callId:callId??recordIdFallback(raw),ordinal:ordinal2}),...originFields(context,canonical,{skillPath:target})}))};if(command!==null)for(let i=0;i<parseLiteralReadTargets(command).length;i+=1)pushRead(parseLiteralReadTargets(command)[i]??"",i);let nestedLiterals=extractNestedExecCommandLiterals(argsText),nestedOrdinal=0;for(let literal2 of nestedLiterals)for(let target of parseLiteralReadTargets(literal2))pushRead(target,1000+nestedOrdinal),nestedOrdinal+=1;return rows2}if(role!=="user")return[];let text=extractContentText(payload.content??raw.content)??s(payload.text,raw.text);if(text===void 0)return[];let rows=[],recordId=s(raw.id,payload.id,raw.uuid),ts=timestampOf(raw.timestamp,raw.ts)??null,ordinal=createOrdinalAllocator(),wrappers=[],acceptedWrapperEnd;for(let match of text.matchAll(CODEX_SKILL_BLOCK)){let start=match.index??0;if(isQuotedSignatureContext(text,start))continue;if(!isCodexWrapperLeadPosition(text,start,acceptedWrapperEnd))continue;acceptedWrapperEnd=start+match[0].length;let body=(match[3]??"").trim(),skillPath=match[2]||null;wrappers.push({name:canonicalizeSkillName(match[1]??""),path:skillPath,digest:body.length>0?sha256Text(body):null})}let wrapperOccurrences=new Map;for(let wrapper of wrappers){let occurrence=(wrapperOccurrences.get(wrapper.name)??0)+1;wrapperOccurrences.set(wrapper.name,occurrence);let ordinalKey=occurrence===1?`skill:${wrapper.name}`:`skill:${wrapper.name}#${occurrence}`;rows.push(skillRecord(identity,wrapper.name,"user",{skill_path:wrapper.path,args_digest:wrapper.digest,started_at:ts,evidence_kind:"load",status:"ok",invocation_id:invocationIdFor(context,identity.sessionId,{recordId,ordinal:ordinal(ordinalKey)}),...originFields(context,wrapper.name,{skillPath:wrapper.path,artifactDigest:wrapper.digest})}))}let leadingMarker=text.match(CODEX_DOLLAR_MARKER)??text.match(CODEX_SLASH_MARKER);if(leadingMarker!==null){let markerName=canonicalizeSkillName(leadingMarker[1]??"");rows.push(skillRecord(identity,markerName,"user",{started_at:ts,evidence_kind:"request",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{recordId,ordinal:ordinal(`skill:${markerName}`)}),...originFields(context,markerName,{})}))}return rows}function recordIdFallback(raw){return s(raw.id,raw.uuid)??"codex-record"}function detectAgySkillCalls(raw,identity,context){let recordType=String(raw.type??""),recordId=s(raw.id,raw.event_id,raw.request_id),ts=timestampOf(raw.created_at,raw.timestamp,raw.ts)??null,rows=[];if(recordType==="PLANNER_RESPONSE"&&Array.isArray(raw.tool_calls))for(let tc of raw.tool_calls){let tool=s(tc.name,tc.tool_name);if(tool==="view_file"){let args=tc.args??tc.arguments??{};if(args.toolAction!=="Viewing skill file")continue;let path=s(args.AbsolutePath,args.absolute_path);if(path===void 0||lastPathSegmentNorm(path)!=="SKILL.md")continue;let skillName=s(args.toolSummary)?.match(/SKILL\.md for (.+)$/)?.[1]??skillNameFromPath(path),canonical=canonicalizeSkillName(skillName),callId=s(tc.id,tc.call_id);rows.push(skillRecord(identity,canonical,"model",{skill_path:path,args_raw:maybeArgsRaw("agy","view_file",args)??null,args_digest:argsDigest(args),call_id:callId??null,started_at:ts,evidence_kind:"load",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{callId,recordId:callId===void 0?recordId:void 0,ordinal:rows.length}),...originFields(context,canonical,{skillPath:path})}));continue}if(tool==="INVOKE_SUBAGENT"){let args=tc.args??tc.arguments??{},subagent=s(args.subagent_type,args.subagent,args.agent_name,args.agent,args.name)??"subagent",callId=s(tc.id,tc.call_id);rows.push(skillRecord(identity,subagent,"model",{args_raw:maybeArgsRaw("agy","INVOKE_SUBAGENT",args)??null,args_digest:argsDigest(args),call_id:callId??null,started_at:ts,...originFields(context,canonicalizeSkillName(subagent),{}),capability_kind:"subagent",evidence_kind:"delegation",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{callId,recordId:callId===void 0?recordId:void 0,ordinal:rows.length})}))}}if(recordType==="slash_command"){let display=s(raw.display);if(display!==void 0){let commandName=s(raw.command,raw.name)??display.match(/(?:^|\s)\/([a-z][a-z0-9:-]*)/)?.[1];if(commandName!==void 0)rows.push(skillRecord(identity,canonicalizeSkillName(commandName),"user",{started_at:ts,capability_kind:"command",evidence_kind:"request",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{recordId,ordinal:0})}))}}return rows}var GEMINI_L0_PREFIX=/^\s*\/((?:sp|rd3)-[a-z0-9-]+)/;function detectGeminiSkillCalls(raw,identity,context){if(String(raw.type??"")!=="user")return[];let content=geminiContent(raw);if(content===null)return[];let match=content.match(GEMINI_L0_PREFIX);if(match===null)return[];let canonical=canonicalizeSkillName(match[1]??""),recordId=s(raw.id,raw.uuid),ts=timestampOf(raw.timestamp,raw.ts)??null;return[skillRecord(identity,canonical,"user",{started_at:ts,evidence_kind:"request",status:"unknown",invocation_id:invocationIdFor(context,identity.sessionId,{recordId,ordinal:0}),...originFields(context,canonical,{})})]}function detectGrokSkillCalls(raw,identity,context){let n=normalizeGrokRecord(raw);if(n.recordType!=="tool_call"||n.toolName!=="read_file")return[];let meta3=n.body._meta??raw._meta??{};if(o(meta3["x.ai/tool"]).namespace!=="grok_build")return[];let targetFile=s(o(n.toolArgs).target_file);if(targetFile===void 0||lastPathSegmentNorm(targetFile)!=="SKILL.md")return[];let canonical=canonicalizeSkillName(skillNameFromPath(targetFile)),recordId=s(n.body.id,raw.id,raw.uuid),callId=s(n.body.call_id,n.body.itemId,recordId),status=grokOutcomeStatus(typeof n.body.status==="string"?n.body.status:void 0);return[skillRecord(identity,canonical,"model",{skill_path:targetFile,args_raw:maybeArgsRaw("grok","read_file",n.toolArgs)??null,args_digest:argsDigest(n.toolArgs),call_id:callId??null,started_at:n.ts??null,status,evidence_kind:"load",invocation_id:invocationIdFor(context,identity.sessionId,{callId,ordinal:0}),...originFields(context,canonical,{skillPath:targetFile})})]}function grokOutcomeStatus(toolStatus){let value=String(toolStatus??"").toLowerCase();if(value==="ok"||value==="success"||value==="done"||value==="completed")return"ok";if(value==="error"||value==="failed")return"error";return"unknown"}function argsDigest(args){let redacted=redactArgs(args);return sha256(redacted)}function redactArgs(args){if(typeof args==="string")return applyRules(args);if(Array.isArray(args))return args.map(redactArgs);if(args!==null&&typeof args==="object"){let result={};for(let[key,value]of Object.entries(args))result[key]=redactArgs(value);return result}return args}var BASH_COMMAND_MAX_CHARS=8192,GENERIC_ARGS_MAX_CHARS=8192;function bashCommandOf(args){if(args===null||typeof args!=="object")return;let rec=args,command=rec.command??rec.CommandLine??rec.cmd??rec.script;if(typeof command==="string")return command;if(Array.isArray(command))return command.map(String).join(" ");return}var BULKY_PAYLOAD_KEYS=new Set(["content","codecontent","replacementcontent","targetcontent","filedata","buffer","blob","image","imagebase64"]);function normalizeKey(key){return key.toLowerCase().replace(/[^a-z0-9]/g,"")}function isShellTool(toolName){return/^(?:bash|shell|cmd|command|exec|execcommand|executecommand|runcommand|shellcommand|runshellcommand)$/.test(normalizeKey(toolName))}function sanitizeValue(value){if(typeof value==="string")return value.length>1000?`${value.slice(0,1000)}[truncated ${value.length} chars]`:value;if(Array.isArray(value))return value.map(sanitizeValue);if(value!==null&&typeof value==="object"){let out={};for(let[key,entry]of Object.entries(value))out[key]=typeof entry==="string"&&entry.length>120&&BULKY_PAYLOAD_KEYS.has(normalizeKey(key))?`[omitted ${entry.length} chars]`:sanitizeValue(entry);return out}return value}function serializeBounded(value){let serialized=JSON.stringify(sanitizeValue(value));if(serialized.length<=GENERIC_ARGS_MAX_CHARS)return serialized;let preview=serialized;for(;;){let wrapper=JSON.stringify({_truncated:!0,omittedChars:serialized.length-preview.length,preview});if(wrapper.length<=GENERIC_ARGS_MAX_CHARS)return wrapper;preview=preview.slice(0,preview.length-(wrapper.length-GENERIC_ARGS_MAX_CHARS))}}function maybeArgsRaw(_source,toolName,args){if(args===void 0||args===null)return;let value=args;if(typeof args==="string")try{value=JSON.parse(args)}catch{return args.length>BASH_COMMAND_MAX_CHARS?args.slice(0,BASH_COMMAND_MAX_CHARS):args}if(value!==null&&typeof value==="object"){let cmd=bashCommandOf(value);if(cmd!==void 0&&isShellTool(toolName))return cmd.length>BASH_COMMAND_MAX_CHARS?cmd.slice(0,BASH_COMMAND_MAX_CHARS):cmd;return serializeBounded(value)}return JSON.stringify(value)}function claudeSplit(raw,context){let entries=[],sessionId=s(raw.sessionId,raw.conversation_uuid)??"unknown",seq=typeof raw.seq==="number"?raw.seq:typeof raw.messageIndex==="number"?raw.messageIndex:0,ts=timestampOf(raw.ts,raw.timestamp,raw.createdAt),role=mapRole(raw.type??raw.role),recordType=String(raw.type??""),model=s(raw.model,o(raw.message).model),cwd=s(raw.cwd,raw.dir);if(raw.subtype==="turn_duration"&&typeof raw.durationMs==="number")return entries.push({targetTable:"history_message",record:{session_id:sessionId,seq,role:"system",record_type:"turn_duration",disposition:"meta",ts,duration_ms:raw.durationMs,content_text:null,provenance:"ambient"}}),entries;if(recordType==="attachment"||recordType.startsWith("file-history"))return entries.push({targetTable:"history_message",record:{session_id:sessionId,seq,role:"meta",record_type:recordType,disposition:"meta",ts,provenance:"ambient"}}),entries;let usage=typeof raw.usage==="object"&&raw.usage!==null?raw.usage:o(raw.message).usage,inputTokens=raw.inputTokens??usage?.input_tokens,outputTokens=raw.outputTokens??usage?.output_tokens,cacheRead=usage?.cacheReadTokens??usage?.cache_read_tokens??usage?.cache_read_input_tokens,cacheWrite=usage?.cacheWriteTokens??usage?.cache_write_tokens??usage?.cache_creation_input_tokens,costUsd=computeCost(inputTokens,outputTokens,model),contentBlocks=raw.content??o(raw.message).content,contentText=extractContentText(contentBlocks),messageSplitIndex=entries.length;if(entries.push({targetTable:"history_message",record:{session_id:sessionId,seq,turn_index:typeof raw.turnIndex==="number"?raw.turnIndex:void 0,role,record_type:recordType,disposition:"keep",ts,duration_ms:void 0,model:model??null,input_tokens:inputTokens??null,output_tokens:outputTokens??null,cache_read_tokens:cacheRead??null,cache_write_tokens:cacheWrite??null,cost_usd:costUsd??null,content_text:contentText??null,cwd:cwd??null,provenance:"ambient",request_id:s(raw.requestId)??null}}),Array.isArray(contentBlocks)&&role==="assistant")for(let block of contentBlocks){if(typeof block!=="object"||block===null)continue;let b=block;if(b.type==="tool_use")entries.push({targetTable:"history_tool_call",record:{_messageSplitIndex:messageSplitIndex,session_id:sessionId,seq,call_id:s(b.id),tool_name:String(b.name??""),args_digest:argsDigest(b.input),args_raw:maybeArgsRaw("claude",String(b.name??""),b.input),status:"ok",started_at:void 0,completed_at:void 0,duration_ms:void 0,result_bytes:void 0,error_text:void 0}})}for(let record2 of extractSkillCalls(raw,context,{sessionId,seq,messageSplitIndex}))entries.push(skillCallEntry(record2));return entries}function piSplit(raw,context){let msg=raw.message,recordType=String(raw.type??raw.recordType??""),sessionId=sessionIdFromContext(context,raw),seq=context?.sourceLine??(typeof raw.seq==="number"?raw.seq:0),ts=timestampOf(raw.timestamp,raw.createdAt,raw.ts);if(recordType==="title"||recordType==="title_change"||recordType==="service_tier_change"||recordType==="session_info"||recordType==="ttsr_injection"||recordType==="session_init"||recordType==="session"||recordType==="model_change"||recordType==="thinking_level_change"||recordType==="compaction"||recordType==="custom"||recordType==="custom_message"||recordType.startsWith("custom."))return[{targetTable:"history_message",record:{session_id:sessionId,seq,role:"meta",record_type:recordType,disposition:"meta",ts,provenance:"ambient"}}];let entries=[],role=piRole(msg?.role??raw.role??recordType),model=s(raw.model,o(msg).model),cwd=s(raw.cwd,raw.dir),usage=msg?.usage??raw.usage,inputTokens=usage?.input??usage?.input_tokens??void 0,outputTokens=usage?.output??usage?.output_tokens??void 0,cacheRead=usage?.cacheRead??usage?.cache_read_tokens??void 0,cacheWrite=usage?.cacheWrite??usage?.cache_write_tokens??void 0,costObj=msg?.cost??raw.cost,costUsd=typeof costObj?.total==="number"?costObj.total:computeCost(inputTokens,outputTokens,model),contentBlocks=msg?.content??raw.content,durationMs=typeof msg?.duration==="number"&&Number.isFinite(msg.duration)?msg.duration:void 0,messageSplitIndex=entries.length;if(entries.push({targetTable:"history_message",record:{session_id:sessionId,seq,role,record_type:recordType,disposition:"keep",ts,duration_ms:durationMs,model:model??null,input_tokens:inputTokens??null,output_tokens:outputTokens??null,cache_read_tokens:cacheRead??null,cache_write_tokens:cacheWrite??null,cost_usd:costUsd??null,content_text:extractContentText(contentBlocks)??s(raw.content,raw.text,msg?.content)??null,cwd:cwd??null,provenance:"ambient"}}),Array.isArray(contentBlocks)&&role==="assistant")for(let block of contentBlocks){let call=normalizeOmpToolCall(block);if(call===null)continue;entries.push({targetTable:"history_tool_call",record:{_messageSplitIndex:messageSplitIndex,session_id:sessionId,seq,tool_name:String(call.name??""),call_id:s(call.id),args_digest:argsDigest(call.input??call.arguments),args_raw:maybeArgsRaw("pi",String(call.name??""),call.input??call.arguments),status:"ok",started_at:void 0,completed_at:void 0,duration_ms:void 0,result_bytes:void 0,error_text:void 0}})}for(let record2 of extractSkillCalls(raw,context,{sessionId,seq,messageSplitIndex}))entries.push(skillCallEntry(record2));return entries}function piRole(type){let t=String(type??"").toLowerCase();if(t==="toolresult"||t==="tool_result"||t==="bashexecution"||t==="tool")return"user";let mapped=mapRole(t);if(mapped==="user"||mapped==="assistant"||mapped==="system")return mapped;return"unknown"}function ompSplit(raw,context){let msg=raw.message,recordType=String(raw.type??""),sessionId=sessionIdFromContext(context,raw),seq=context?.sourceLine??(typeof raw.seq==="number"?raw.seq:0),ts=timestampOf(raw.ts,raw.timestamp,raw.createdAt);if(recordType==="title"||recordType==="title_change"||recordType==="service_tier_change"||recordType==="ttsr_injection"||recordType==="session_init"||recordType==="session"||recordType==="model_change"||recordType==="thinking_level_change"||recordType==="compaction"||recordType==="custom"||recordType==="custom_message"||recordType.startsWith("custom."))return[{targetTable:"history_message",record:{session_id:sessionId,seq,role:"meta",record_type:recordType,disposition:"meta",ts,provenance:"ambient"}}];let entries=[],role=mapRole(msg?.role??raw.type??raw.role),model=s(raw.model,o(msg).model),cwd=s(raw.cwd,raw.dir),usage=msg?.usage??raw.usage,inputTokens=usage?.input??usage?.input_tokens??void 0,outputTokens=usage?.output??usage?.output_tokens??void 0,cacheRead=usage?.cacheRead??usage?.cache_read_tokens??void 0,cacheWrite=usage?.cacheWrite??usage?.cache_write_tokens??void 0,costObj=msg?.cost??raw.cost,costUsd=typeof costObj?.total==="number"?costObj.total:computeCost(inputTokens,outputTokens,model),contentBlocks=msg?.content??raw.content,durationMs=typeof msg?.duration==="number"&&Number.isFinite(msg.duration)?msg.duration:void 0,messageSplitIndex=entries.length;if(entries.push({targetTable:"history_message",record:{session_id:sessionId,seq,role,record_type:recordType,disposition:"keep",ts,duration_ms:durationMs,model:model??null,input_tokens:inputTokens??null,output_tokens:outputTokens??null,cache_read_tokens:cacheRead??null,cache_write_tokens:cacheWrite??null,cost_usd:costUsd??null,content_text:extractContentText(contentBlocks)??s(raw.content,raw.text,msg?.content)??null,cwd:cwd??null,provenance:"ambient"}}),Array.isArray(contentBlocks)&&role==="assistant")for(let block of contentBlocks){let call=normalizeOmpToolCall(block);if(call===null)continue;entries.push({targetTable:"history_tool_call",record:{_messageSplitIndex:messageSplitIndex,session_id:sessionId,seq,tool_name:String(call.name??""),call_id:s(call.id),args_digest:argsDigest(call.input??call.arguments),args_raw:maybeArgsRaw("omp",String(call.name??""),call.input??call.arguments),status:"ok",started_at:void 0,completed_at:void 0,duration_ms:void 0,result_bytes:void 0,error_text:void 0}})}for(let record2 of extractSkillCalls(raw,context,{sessionId,seq,messageSplitIndex}))entries.push(skillCallEntry(record2));return entries}function normalizeOmpToolCall(block){if(typeof block!=="object"||block===null)return null;let nested=o(block.toolCall);if(Object.keys(nested).length>0)return nested;if(block.type==="toolCall")return block;return null}function codexSplit(raw,context){let entries=[],payload=raw.payload??raw,seq=typeof raw.seq==="number"?raw.seq:0,ts=timestampOf(raw.timestamp,raw.ts,payload.ts),recordType=String(raw.type??""),payloadType=String(payload.type??""),isShortFormat=recordType===""&&raw.id!==void 0&&raw.timestamp!==void 0&&raw.instructions!==void 0,explicitSessionId=s(raw.session_id,o(raw.session_meta).id);if(explicitSessionId===void 0&&recordType==="session_meta")explicitSessionId=s(payload.id,o(raw.payload).id);if(explicitSessionId===void 0&&isShortFormat)explicitSessionId=s(raw.id);let pathSessionId=context?.sourceFile?sessionIdFromSourcePath("codex",context.sourceFile):void 0,sessionId=explicitSessionId??pathSessionId??"unknown";if(isShortFormat)return[{targetTable:"history_message",record:{session_id:sessionId,seq,role:"meta",record_type:"short_format",disposition:"meta",ts,provenance:"ambient"}}];let role,disposition,contentText,usage;if(recordType==="response_item")if(payloadType==="message")role=mapRole(payload.role),disposition="keep",contentText=extractContentText(payload.content)??s(payload.text)??null;else if(payloadType==="agent_message")role="assistant",disposition="keep",contentText=extractContentText(payload.content)??s(payload.text,payload.message)??null;else if(payloadType==="reasoning")role="assistant",disposition="keep",contentText=extractContentText(payload.summary)??s(payload.text)??null;else if(payloadType==="function_call"||payloadType==="custom_tool_call")role="tool",disposition="keep",contentText=null;else role="meta",disposition="meta",contentText=s(payload.text)??null;else if(recordType==="user"||recordType==="assistant")role=mapRole(recordType),disposition="keep",contentText=extractContentText(payload.content)??s(raw.content,payload.text)??null;else if(recordType==="message")role=mapRole(raw.role??payload.role),disposition="keep",contentText=extractContentText(payload.content??raw.content)??s(payload.text,raw.text)??null;else if(recordType==="event_msg")role="meta",disposition="meta",contentText=s(payload.message,payload.text)??null,usage=o(o(payload.info).last_token_usage);else role="meta",disposition="meta",contentText=s(payload.text,raw.instructions)??null;let model=s(raw.model,payload.model,o(o(raw.turn_context).payload).model),cwd=s(raw.cwd,raw.dir),tokenCount=payload.token_count,usageInput=usage?.input_tokens??tokenCount?.input??tokenCount?.input_tokens??void 0,usageOutput=usage?.output_tokens??tokenCount?.output??tokenCount?.output_tokens??void 0,cacheRead=usage?.cached_input_tokens??void 0,turnPayload=raw.turn_context?.payload,turnInputTokens=turnPayload?.input_tokens,turnOutputTokens=turnPayload?.output_tokens,finalInput=usageInput!==void 0?usageInput:turnInputTokens,finalOutput=usageOutput!==void 0?usageOutput:turnOutputTokens,costUsd=computeCost(finalInput,finalOutput,model),usageCarrier=finalInput!==void 0||finalOutput!==void 0?{input:finalInput??null,output:finalOutput??null,cacheRead:cacheRead??null}:void 0,stripUsage=role==="meta"&&usageCarrier!==void 0,messageSplitIndex=entries.length;entries.push({targetTable:"history_message",record:{session_id:sessionId,seq,role,record_type:recordType,disposition,ts,duration_ms:void 0,model:model??null,input_tokens:stripUsage?null:finalInput??null,output_tokens:stripUsage?null:finalOutput??null,cache_read_tokens:stripUsage?null:cacheRead??null,...usageCarrier!==void 0?{_codexUsageCarrier:usageCarrier}:{},cache_write_tokens:null,cost_usd:costUsd??null,content_text:contentText,cwd:cwd??null,provenance:"ambient"}});let toolItems=[];if((recordType==="response_item"||recordType==="function_call"||recordType==="custom_tool_call")&&(payloadType==="function_call"||payloadType==="custom_tool_call"))toolItems.push(payload);else if(payload.response_item)toolItems.push(payload.response_item);else if(Array.isArray(payload.response_items))toolItems.push(...payload.response_items);for(let item of toolItems){let fc=item.function_call??item,toolName=s(fc.name)??"",args=fc.arguments??fc.input;entries.push({targetTable:"history_tool_call",record:{_messageSplitIndex:messageSplitIndex,session_id:sessionId,seq,tool_name:toolName,call_id:s(fc.call_id),args_digest:argsDigest(args),args_raw:maybeArgsRaw("codex",toolName,args),status:"ok",started_at:void 0,completed_at:void 0,duration_ms:void 0,result_bytes:void 0,error_text:void 0}})}for(let record2 of extractSkillCalls(raw,context,{sessionId,seq,messageSplitIndex}))entries.push(skillCallEntry(record2));return entries}function agySplit(raw,context){let entries=[],recordType=String(raw.type??""),explicitSessionId=s(raw.session_id,raw.conversation_id,raw.conversationId),pathSessionId=context?.sourceFile?sessionIdFromSourcePath("agy",context.sourceFile):void 0,sessionId=explicitSessionId??pathSessionId??"unknown",seq=typeof raw.seq==="number"?raw.seq:typeof raw.step_index==="number"?raw.step_index:context?.sourceLine??0,ts=timestampOf(raw.created_at,raw.timestamp,raw.ts),role,disposition,contentText=null,messageRecordType=recordType;if(raw.display!==void 0)role="user",disposition="keep",contentText=s(raw.display)??null,messageRecordType=recordType.length>0?recordType:"USER_INPUT";else switch(recordType){case"USER_INPUT":case"ASK_QUESTION":role="user",disposition="keep",contentText=s(raw.content,raw.text,raw.message)??null;break;case"PLANNER_RESPONSE":role="assistant",disposition="keep",contentText=s(raw.content,raw.text,raw.message,raw.plan)??null;break;case"ERROR_MESSAGE":role="system",disposition="keep",contentText=s(raw.content,raw.text,raw.message)??null;break;case"RUN_COMMAND":case"VIEW_FILE":case"GREP_SEARCH":case"LIST_DIRECTORY":case"READ_URL_CONTENT":role="tool",disposition="keep",contentText=s(raw.content,raw.command,raw.file_path,raw.pattern)??null;break;case"CODE_ACTION":case"INVOKE_SUBAGENT":role="tool",disposition="keep",contentText=s(raw.content,raw.text)??null;break;case"CONVERSATION_HISTORY":case"CHECKPOINT":case"GENERIC":role="meta",disposition="meta",contentText=s(raw.content,raw.text)??null;break;default:if(recordType.length===0)role="unknown",disposition="unknown";else role="meta",disposition="meta",contentText=s(raw.content,raw.text)??null;break}let messageSplitIndex=entries.length;if(entries.push({targetTable:"history_message",record:{session_id:sessionId,seq,role,record_type:messageRecordType,disposition,ts,duration_ms:void 0,model:null,input_tokens:null,output_tokens:null,cache_read_tokens:null,cache_write_tokens:null,cost_usd:null,content_text:contentText,cwd:s(raw.workspace,raw.cwd)??null,provenance:"ambient"}}),recordType==="PLANNER_RESPONSE"&&Array.isArray(raw.tool_calls))for(let tc of raw.tool_calls)entries.push({targetTable:"history_tool_call",record:{_messageSplitIndex:messageSplitIndex,session_id:sessionId,seq:typeof tc.step_index==="number"?tc.step_index:seq,tool_name:String(tc.name??tc.tool_name??""),args_digest:argsDigest(tc.input??tc.arguments),args_raw:maybeArgsRaw("agy",String(tc.name??tc.tool_name??""),tc.input??tc.arguments),status:"ok",started_at:void 0,completed_at:void 0,duration_ms:void 0,result_bytes:void 0,error_text:void 0}});for(let record2 of extractSkillCalls(raw,context,{sessionId,seq,messageSplitIndex}))entries.push(skillCallEntry(record2));return entries}function geminiSplit(raw,context){let recordType=String(raw.type??(raw.kind!==void 0?"session":raw.$set!==void 0?"state":"")),state=o(raw.$set),sessionId=sessionIdFromContext(context,raw),seq=context?.sourceLine??0,ts=timestampOf(raw.timestamp,raw.startTime,raw.lastUpdated,state.lastUpdated);if(recordType==="session"||recordType==="state")return[{targetTable:"history_message",record:{session_id:sessionId,seq,role:"meta",record_type:recordType,disposition:"meta",ts,content_text:s(state.summary)??null,provenance:"ambient"}}];let role=recordType==="gemini"?"assistant":recordType==="user"?"user":"system",tokens=o(raw.tokens),content=geminiContent(raw),entries=[{targetTable:"history_message",record:{session_id:sessionId,seq,role,record_type:recordType,disposition:"keep",ts,duration_ms:null,model:s(raw.model)??null,input_tokens:numberOrNull(tokens.input),output_tokens:numberOrNull(tokens.output),cache_read_tokens:numberOrNull(tokens.cached),cache_write_tokens:null,cost_usd:null,content_text:content,cwd:null,provenance:"ambient"}}];if(Array.isArray(raw.toolCalls))for(let value of raw.toolCalls){if(value===null||typeof value!=="object"||Array.isArray(value))continue;let tool=value,status=s(tool.status)??"unknown",timestamp=s(tool.timestamp),result=tool.result??tool.resultDisplay;entries.push({targetTable:"history_tool_call",record:{_messageSplitIndex:0,session_id:sessionId,seq,tool_name:s(tool.name,tool.displayName)??"unknown",args_digest:argsDigest(tool.args),args_raw:maybeArgsRaw("gemini",s(tool.name,tool.displayName)??"",tool.args),status,started_at:timestamp,completed_at:timestamp,duration_ms:null,result_bytes:result===void 0?null:new TextEncoder().encode(JSON.stringify(result)).byteLength,error_text:status==="error"?s(tool.resultDisplay,tool.result)??null:null}})}for(let record2 of extractSkillCalls(raw,context,{sessionId,seq,messageSplitIndex:0}))entries.push(skillCallEntry(record2));return entries}function dshSplit(raw,context){let recordType=String(raw.type??"");if(recordType==="session")return[{targetTable:"history_message",record:{session_id:s(raw.id)??sessionIdFromSourcePath("deepseek",context?.sourceFile??"")??"unknown",seq:0,role:"meta",record_type:"session",disposition:"meta",ts:timestampOf(raw.createdAt),cwd:s(raw.cwd)??null,content_text:null,provenance:"ambient"}}];if(recordType!=="user/message"&&recordType!=="assistant/message")return[];let data=o(raw.data),msg=o(data.message),seq=typeof raw.seq==="number"?raw.seq:context?.sourceLine??0,sessionId=sessionIdFromSourcePath("deepseek",context?.sourceFile??"")??"unknown",role=recordType==="user/message"?"user":"assistant",source=o(data.source??msg.source),model=s(source.model,o(data.model??msg.model).model),usage=data.usage??msg.usage,messageId=s(msg.id,data.id);return[{targetTable:"history_message",record:{session_id:sessionId,seq,role,record_type:recordType,disposition:"keep",...messageId!==void 0?{source_record_id:messageId}:{},ts:timestampOf(raw.time,data.time,msg.time),duration_ms:null,model:model??null,input_tokens:numberOrNull(usage?.input_tokens??usage?.input)??null,output_tokens:numberOrNull(usage?.output_tokens??usage?.output)??null,cache_read_tokens:null,cache_write_tokens:null,cost_usd:null,content_text:extractContentText(data.content??msg.content)??s(data.text,msg.text)??null,cwd:null,provenance:"ambient"}}]}var UUID_PATTERN="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}",AGY_BRAIN_REGEX=new RegExp(`(?:^|\\/)brain\\/(${UUID_PATTERN})(?:\\/|$)`,"i"),DSH_SESSION_REGEX=new RegExp(`(?:^|\\/)session-(${UUID_PATTERN})(?:\\/|$)`,"i"),CODEX_ROLLOUT_REGEX=new RegExp(`(?:^|-|_)(${UUID_PATTERN})$`,"i");function sessionIdFromSourcePath(source,sourceFile){let normalized=sourceFile.replace(/\\/g,"/"),sLower=source.toLowerCase();if(sLower==="agy"||sLower==="antigravity")return normalized.match(AGY_BRAIN_REGEX)?.[1];if(sLower==="deepseek")return normalized.match(DSH_SESSION_REGEX)?.[1];if(sLower==="codex"){let basename=normalized.split("/").at(-1)??"";if(basename.startsWith("rollout-")&&basename.endsWith(".jsonl"))return basename.slice(0,-6).match(CODEX_ROLLOUT_REGEX)?.[1]}return}function sessionIdFromContext(context,raw){if(context!==void 0){let file2=context.sourceFile.split("/").at(-1);if(file2!==void 0)return file2.replace(/\.jsonl$/,"")}return s(raw.sessionId,raw.id)??"unknown"}function geminiContent(raw){let content=extractContentText(raw.content)??s(raw.text),thoughts=Array.isArray(raw.thoughts)?raw.thoughts.map((value)=>value!==null&&typeof value==="object"?s(o(value).description):void 0).filter((value)=>value!==void 0).join(`
|
|
456
456
|
`):"";return[content,thoughts].filter((value)=>value!==void 0&&value.length>0).join(`
|
|
457
457
|
`)||null}function numberOrNull(value){return typeof value==="number"&&Number.isFinite(value)?value:null}function normalizeGrokRecord(raw){let params=raw.params,update=params?.update,isUpdatesShape=typeof raw.method==="string"&¶ms!==void 0&&update!==void 0,body=isUpdatesShape?update:raw,recordType=String((isUpdatesShape?update?.sessionUpdate:raw.type)??raw.sessionUpdate??raw.eventType??(raw.file_snapshots!==void 0||raw.after_snapshots!==void 0?"file_snapshot":raw.prompt!==void 0?"user_message":raw.answer!==void 0||raw.question!==void 0?"assistant":"")),sessionId=s(params?.sessionId,raw.session_id,raw.sessionId,raw.parentSessionId,raw.btwSessionId,raw.params?.sessionId)??"unknown",ts=normalizeTs(raw.ts??raw.timestamp??raw.created_at??raw.askedAt??body.ts??body.timestamp),seq=typeof raw.seq==="number"?raw.seq:typeof body.seq==="number"?body.seq:0,meta3=body._meta??params?._meta??raw._meta,model=s(meta3?.modelId,body.model,raw.model),contentText=extractGrokContent(body.content??body.text??raw.content??raw.text??raw.prompt??(raw.answer!==void 0||raw.question!==void 0?[raw.question,raw.answer].filter((value)=>typeof value==="string").join(`
|
|
458
458
|
`):void 0)),usage=body.usage??raw.usage,toolMeta=meta3?.["x.ai/tool"],titleFallback=s(body.title)?.split("`")[0]?.trim(),toolName=s(toolMeta?.name,body.kind,body.tool_name,body.name,raw.tool_name,raw.name)??(titleFallback!==void 0&&titleFallback.length>0&&titleFallback.length<=40?titleFallback:""),toolArgs=body.rawInput??body.input??body.arguments??toolMeta?.input??raw.input??raw.arguments,toolStatus=s(body.status,raw.outcome,raw.status)??"ok",durationMs=typeof body.duration_ms==="number"?body.duration_ms:typeof raw.duration_ms==="number"?raw.duration_ms:typeof usage?.apiDurationMs==="number"?usage.apiDurationMs:void 0,errorText=body.error!==void 0?String(body.error):raw.error!==void 0?String(raw.error):void 0,hasTypeDiscriminator=recordType.length>0||isUpdatesShape;return{recordType,sessionId,ts,seq,body,model,contentText,usage,toolName,toolArgs,toolStatus,durationMs,errorText,hasTypeDiscriminator}}function normalizeTs(value){return timestampOf(value)}function extractGrokContent(content){if(typeof content==="string")return content;if(content!==null&&typeof content==="object"&&!Array.isArray(content)){let c=content;if(typeof c.text==="string")return c.text;if(typeof c.content==="string")return c.content}if(Array.isArray(content)){let parts=[];for(let block of content)if(typeof block==="string")parts.push(block);else if(block!==null&&typeof block==="object"){let b=block;if(typeof b.text==="string")parts.push(b.text)}return parts.length>0?parts.join(`
|
|
@@ -625,6 +625,8 @@ CREATE UNIQUE INDEX IF NOT EXISTS idx_inbox_messages_request_key ON inbox_messag
|
|
|
625
625
|
`,INBOX_MESSAGES_REQUEST_KEY_SCHEMA_SQL=`
|
|
626
626
|
ALTER TABLE inbox_messages ADD COLUMN request_key TEXT;
|
|
627
627
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_inbox_messages_request_key ON inbox_messages (request_key) WHERE request_key IS NOT NULL;
|
|
628
|
+
`,INBOX_MESSAGES_READ_AT_SCHEMA_SQL=`
|
|
629
|
+
ALTER TABLE inbox_messages ADD COLUMN read_at INTEGER;
|
|
628
630
|
`,QUEUE_JOBS_SCHEMA_SQL=`
|
|
629
631
|
CREATE TABLE IF NOT EXISTS queue_jobs (
|
|
630
632
|
id TEXT PRIMARY KEY,
|
|
@@ -711,6 +713,42 @@ CREATE INDEX IF NOT EXISTS idx_coordination_runs_task ON coordination_runs (task
|
|
|
711
713
|
`,COORDINATION_RUNS_PARENT_SCHEMA_SQL=`
|
|
712
714
|
ALTER TABLE coordination_runs ADD COLUMN parent_run_id TEXT;
|
|
713
715
|
CREATE INDEX IF NOT EXISTS idx_coordination_runs_parent ON coordination_runs (parent_run_id);
|
|
716
|
+
`,DECISION_LOGS_SCHEMA_SQL=`
|
|
717
|
+
CREATE TABLE IF NOT EXISTS decision_logs (
|
|
718
|
+
id TEXT PRIMARY KEY,
|
|
719
|
+
decision_id TEXT NOT NULL,
|
|
720
|
+
decision_type TEXT,
|
|
721
|
+
caller TEXT NOT NULL,
|
|
722
|
+
run_id TEXT,
|
|
723
|
+
workflow_name TEXT,
|
|
724
|
+
node_id TEXT,
|
|
725
|
+
wbs TEXT,
|
|
726
|
+
maker_name TEXT,
|
|
727
|
+
maker_source TEXT,
|
|
728
|
+
catalog_layer TEXT,
|
|
729
|
+
catalog_source TEXT,
|
|
730
|
+
min_confidence REAL,
|
|
731
|
+
question TEXT,
|
|
732
|
+
input_json TEXT,
|
|
733
|
+
input_keys_json TEXT NOT NULL DEFAULT '[]',
|
|
734
|
+
evidence_digest TEXT,
|
|
735
|
+
outcome TEXT NOT NULL,
|
|
736
|
+
value TEXT,
|
|
737
|
+
fallback_value TEXT,
|
|
738
|
+
source TEXT,
|
|
739
|
+
reason TEXT,
|
|
740
|
+
confidence REAL,
|
|
741
|
+
error TEXT,
|
|
742
|
+
started_at TEXT NOT NULL,
|
|
743
|
+
ended_at TEXT NOT NULL,
|
|
744
|
+
duration_ms INTEGER NOT NULL,
|
|
745
|
+
phases_json TEXT NOT NULL DEFAULT '[]',
|
|
746
|
+
schema_version INTEGER NOT NULL DEFAULT 1
|
|
747
|
+
);
|
|
748
|
+
CREATE INDEX IF NOT EXISTS idx_decision_logs_started_at ON decision_logs (started_at);
|
|
749
|
+
CREATE INDEX IF NOT EXISTS idx_decision_logs_decision_started ON decision_logs (decision_id, started_at);
|
|
750
|
+
CREATE INDEX IF NOT EXISTS idx_decision_logs_maker_started ON decision_logs (maker_name, started_at);
|
|
751
|
+
CREATE INDEX IF NOT EXISTS idx_decision_logs_run ON decision_logs (run_id);
|
|
714
752
|
`,HISTORY_RUN_SESSION_SCHEMA_SQL=`
|
|
715
753
|
CREATE TABLE IF NOT EXISTS history_run_session (
|
|
716
754
|
run_id TEXT NOT NULL,
|
|
@@ -1368,7 +1406,7 @@ ALTER TABLE queue_jobs ADD COLUMN timeout_ms INTEGER;
|
|
|
1368
1406
|
ALTER TABLE queue_jobs ADD COLUMN timeout_unlimited INTEGER NOT NULL DEFAULT 0;
|
|
1369
1407
|
ALTER TABLE queue_jobs ADD COLUMN attempt_token TEXT;
|
|
1370
1408
|
ALTER TABLE queue_jobs ADD COLUMN lease_expires_at INTEGER;
|
|
1371
|
-
`,CLI_MIGRATIONS=[{id:"0000_spur_cli_foundation",sql:CLI_SCHEMA_SQL},{id:"0001_spur_cli_team_inbox",sql:INBOX_MESSAGES_SCHEMA_SQL},{id:"0002_spur_cli_rule_history",sql:RULE_ENGINE_SCHEMA_SQL},{id:"0003_spur_cli_planning",sql:PLANNING_SCHEMA_SQL},{id:"0004_spur_cli_queue_jobs",sql:QUEUE_JOBS_SCHEMA_SQL},{id:"0005_spur_cli_run_pid",sql:RUN_PID_COLUMN_SCHEMA_SQL,addColumnIfMissing:{table:"runs",column:"pid"}},{id:"0006_spur_cli_system_events",sql:SYSTEM_EVENTS_SCHEMA_SQL},{id:"0007_spur_cli_runs_external_key",sql:RUNS_EXTERNAL_KEY_COLUMN_SCHEMA_SQL,addColumnIfMissing:{table:"runs",column:"external_key"}},{id:"0008_spur_cli_system_events_correlation",sql:SYSTEM_EVENTS_CORRELATION_COLUMNS_SCHEMA_SQL,addColumnIfMissing:{table:"system_events",column:"sequence"}},{id:"0009_spur_cli_history_message_run_idx",sql:HISTORY_MESSAGE_RUN_INDEX_SCHEMA_SQL},{id:"0010_spur_cli_coordination_runs",sql:COORDINATION_RUNS_SCHEMA_SQL},{id:"0011_spur_cli_system_events_sequence_idx",sql:SYSTEM_EVENTS_SEQUENCE_INDEX_SCHEMA_SQL},{id:"0012_spur_cli_history_tool_call_args_raw",sql:HISTORY_TOOL_CALL_ARGS_RAW_SCHEMA_SQL,addColumnIfMissing:{table:"history_tool_call",column:"args_raw"}},{id:"0013_spur_cli_history_run_session",sql:HISTORY_RUN_SESSION_SCHEMA_SQL},{id:"0014_spur_cli_system_events_name_occurred_idx",sql:SYSTEM_EVENTS_NAME_OCCURRED_INDEX_SCHEMA_SQL},{id:"0015_spur_cli_history_tool_call_call_id",sql:HISTORY_TOOL_CALL_CALL_ID_SCHEMA_SQL,addColumnIfMissing:{table:"history_tool_call",column:"call_id"}},{id:"0016_spur_cli_history_message_ts_nullable",sql:HISTORY_MESSAGE_TS_NULLABLE_SCHEMA_SQL},{id:"0017_spur_cli_runs_status_completed_to_done",sql:"UPDATE runs SET status = 'done' WHERE status = 'completed'"},{id:"0018_spur_cli_history_message_request_id",sql:HISTORY_MESSAGE_REQUEST_ID_SCHEMA_SQL,addColumnIfMissing:{table:"history_message",column:"request_id"}},{id:"0019_spur_cli_history_etl_tables_drop",sql:HISTORY_ETL_TABLES_DROP_SCHEMA_SQL},{id:"0020_spur_cli_history_board_query_indexes",sql:HISTORY_BOARD_QUERY_INDEXES_SCHEMA_SQL},{id:"0021_spur_cli_history_board_rollups",sql:HISTORY_BOARD_ROLLUPS_SCHEMA_SQL},{id:"0022_spur_cli_history_performance_indexes",sql:HISTORY_PERFORMANCE_INDEXES_SCHEMA_SQL},{id:"0023_spur_cli_history_message_request_id_idx",sql:HISTORY_MESSAGE_REQUEST_ID_INDEX_SCHEMA_SQL},{id:"0024_spur_cli_history_checkpoint_identity",sql:"ALTER TABLE history_import_checkpoint ADD COLUMN source_size INTEGER",addColumnIfMissing:{table:"history_import_checkpoint",column:"source_size"}},{id:"0025_spur_cli_history_checkpoint_identity_mtime",sql:"ALTER TABLE history_import_checkpoint ADD COLUMN source_mtime_ms REAL",addColumnIfMissing:{table:"history_import_checkpoint",column:"source_mtime_ms"}},{id:"0026_spur_cli_history_message_duration_source",sql:"ALTER TABLE history_message ADD COLUMN duration_source TEXT",addColumnIfMissing:{table:"history_message",column:"duration_source"}},{id:"0027_spur_cli_history_refresh_active_unique",sql:HISTORY_REFRESH_ACTIVE_UNIQUE_SCHEMA_SQL},{id:"0028_spur_cli_history_task_session",sql:HISTORY_TASK_SESSION_SCHEMA_SQL},{id:"0029_spur_cli_history_tool_call_indexes",sql:HISTORY_TOOL_CALL_INDEXES_SCHEMA_SQL},{id:"0030_spur_cli_history_board_covering_indexes",sql:HISTORY_BOARD_COVERING_INDEXES_SCHEMA_SQL},{id:"0031_spur_cli_history_board_tool_stats_columns",sql:HISTORY_BOARD_TOOL_STATS_COLUMNS_SCHEMA_SQL},{id:"0032_spur_cli_history_board_skill_5m",sql:HISTORY_BOARD_SKILL_5M_SCHEMA_SQL},{id:"0033_spur_cli_importer_schema_version",sql:`INSERT OR REPLACE INTO "__spur_cli_migrations" (id, applied_at) VALUES ('${IMPORTER_SCHEMA_LEDGER_PREFIX}${HISTORY_IMPORT_SCHEMA_VERSION}', strftime('%s', 'now') * 1000);`},{id:"0034_spur_cli_history_tool_identity",sql:HISTORY_TOOL_IDENTITY_SCHEMA_SQL},{id:"0035_spur_cli_history_measure_vector",sql:HISTORY_MEASURE_VECTOR_SCHEMA_SQL},{id:"0036_spur_cli_history_rollup_watermark",sql:HISTORY_ROLLUP_WATERMARK_SCHEMA_SQL},{id:"0037_spur_cli_history_dimension_marts",sql:HISTORY_DIMENSION_MARTS_SCHEMA_SQL},{id:"0038_spur_cli_retention_compaction_meta",sql:RETENTION_COMPACTION_META_SCHEMA_SQL},{id:"0039_spur_cli_bounded_rollup_derivations",sql:BOUNDED_ROLLUP_DERIVATIONS_SCHEMA_SQL,addColumnIfMissing:{table:"history_board_source_daily",column:"raw_messages"}},{id:"0040_spur_cli_agent_executor_updates",sql:AGENT_EXECUTOR_UPDATES_SCHEMA_SQL},{id:"0041_spur_cli_queue_jobs_deadline_lease_columns",sql:QUEUE_JOBS_DEADLINE_LEASE_COLUMNS_SCHEMA_SQL,addColumnIfMissing:{table:"queue_jobs",column:"timeout_ms"}},{id:"0042_spur_cli_history_model_fallback_index",sql:HISTORY_MESSAGE_MODEL_FALLBACK_INDEX_SCHEMA_SQL},{id:"0043_spur_cli_inbox_messages_request_key",sql:INBOX_MESSAGES_REQUEST_KEY_SCHEMA_SQL,addColumnIfMissing:{table:"inbox_messages",column:"request_key"}},{id:"0044_spur_cli_coordination_runs_receipt_columns",sql:COORDINATION_RUNS_RECEIPT_COLUMNS_SCHEMA_SQL,addColumnIfMissing:{table:"coordination_runs",column:"message_ids_json"}},{id:"0045_spur_cli_project_claims",sql:PROJECT_CLAIMS_SCHEMA_SQL},{id:"0046_spur_cli_project_strategy",sql:PROJECT_STRATEGY_SCHEMA_SQL},{id:"0047_spur_cli_scheduler_custom_active_unique",sql:SCHEDULER_CUSTOM_ACTIVE_UNIQUE_SCHEMA_SQL},{id:"0048_spur_cli_agent_executor_updates_owner_columns",sql:AGENT_EXECUTOR_UPDATES_OWNER_COLUMNS_SCHEMA_SQL,addColumnIfMissing:{table:"agent_executor_updates",column:"owner"}},{id:"0049_spur_cli_runs_terminal_reason",sql:CLI_RUNS_TERMINAL_REASON_SCHEMA_SQL,addColumnIfMissing:{table:"runs",column:"terminal_reason"}},{id:"0050_spur_cli_history_board_skill_5m_capability_grain",sql:HISTORY_BOARD_SKILL_5M_CAPABILITY_GRAIN_SCHEMA_SQL},{id:"0051_spur_cli_coordination_runs_parent",sql:COORDINATION_RUNS_PARENT_SCHEMA_SQL,addColumnIfMissing:{table:"coordination_runs",column:"parent_run_id"}}];init_zod();init_zod();var STAGE_REGISTRY_SCHEMA_VERSION={major:1,minor:3},stageSchemaVersionSchema=exports_external.object({major:exports_external.number().int().nonnegative(),minor:exports_external.number().int().nonnegative()}).strict();var MUTATION_CLASSES=["none","corpus","code","tests","verdict","learnings","driver","irreversible"];var inlineExecutionSchema=exports_external.object({kind:exports_external.literal("inline"),current_agent_allowed:exports_external.literal(!0),may_reuse_captured_layers:exports_external.boolean().optional()}).strict(),subprocessExecutionSchema=exports_external.object({kind:exports_external.literal("subprocess"),current_agent_allowed:exports_external.literal(!1),via:exports_external.literal("spur-agent-run")}).strict(),deterministicExecutionSchema=exports_external.object({kind:exports_external.literal("deterministic"),current_agent_allowed:exports_external.literal(!1),executor:exports_external.enum(["cli","script"])}).strict(),hitlExecutionSchema=exports_external.object({kind:exports_external.literal("hitl"),current_agent_allowed:exports_external.literal(!0),gate_timing:exports_external.enum(["pre","post","both"])}).strict(),irreversibleExecutionSchema=exports_external.object({kind:exports_external.literal("irreversible"),requires_operator_intent:exports_external.literal(!0),current_agent_allowed:exports_external.boolean(),rollback_disclaimer:exports_external.string().min(1)}).strict(),executionKindSchema=exports_external.discriminatedUnion("kind",[inlineExecutionSchema,subprocessExecutionSchema,deterministicExecutionSchema,hitlExecutionSchema,irreversibleExecutionSchema]),ARTIFACT_DIRECTIONS=["input","output"],stageArtifactSchema=exports_external.object({kind:exports_external.string().min(1),direction:exports_external.enum(ARTIFACT_DIRECTIONS),identity:exports_external.string().optional(),description:exports_external.string().optional(),required:exports_external.boolean().optional().default(!0)}).strict(),stageGateSchema=exports_external.object({name:exports_external.string().min(1),timing:exports_external.enum(["pre","post","transition"]),min_verdict:exports_external.enum(["pass","partial","fail"]).optional(),description:exports_external.string().optional()}).strict(),stageRetryPolicySchema=exports_external.object({max_attempts:exports_external.number().int().min(1),terminal_stop:exports_external.enum(["block","escalate","fail"]),timeout_seconds:exports_external.number().int().positive().optional()}).strict(),CAPABILITY_TIERS=["cheap","standard","capable-1","capable-2","capable-3"],LEGACY_CAPABLE_ALIAS="capable";function normalizeCapabilityTier(value){return value===LEGACY_CAPABLE_ALIAS?"capable-1":value}var capabilityTierSchema=exports_external.preprocess(normalizeCapabilityTier,exports_external.enum(CAPABILITY_TIERS)),objectiveEscalationTriggerSchema=exports_external.enum(["gate-fail","timeout","insufficient-evidence","retry-exhausted","resource-exhaustion","auth"]),stageModelPolicySchema=exports_external.object({min_tier:capabilityTierSchema,fallback:exports_external.array(exports_external.object({tier:capabilityTierSchema,trigger:objectiveEscalationTriggerSchema}).strict()),override_key:exports_external.string().optional()}).strict();var CONTEXT_LAYER_NAMES=["harness-policy","project-authority","stage-contract","task-state","indexed-evidence","run-state","tool-observations"],stageContextLayerSchema=exports_external.object({layer:exports_external.enum(CONTEXT_LAYER_NAMES),required:exports_external.literal(!0)}).strict(),stageEventSchema=exports_external.object({name:exports_external.string().min(1),description:exports_external.string().optional()}).strict(),STAGE_ID_PATTERN=/^[a-z][a-z0-9-]*$/,stageRecordSchema=exports_external.object({schema_version:stageSchemaVersionSchema,id:exports_external.string().regex(STAGE_ID_PATTERN,{message:"stage id must be lowercase kebab-case"}),aliases:exports_external.array(exports_external.string().min(1)).optional().default([]),description:exports_external.string().min(1),artifacts:exports_external.array(stageArtifactSchema).min(1),reasoning_skill:exports_external.string().min(1),required_references:exports_external.array(exports_external.string().min(1)).optional().default([]),gates:exports_external.array(stageGateSchema).optional().default([]),mutation_class:exports_external.enum(MUTATION_CLASSES),retry:stageRetryPolicySchema,model_policy:stageModelPolicySchema,context_layers:exports_external.array(stageContextLayerSchema).optional().default([]),observability:exports_external.array(stageEventSchema).optional().default([]),execution:executionKindSchema}).strict();var REGISTERED_CANONICAL_STAGES=[{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"refine",aliases:["dev-refine"],description:"dev-refine: Q&A refinement, section filling, AC tightening",artifacts:[{kind:"task-section",direction:"input",required:!0,description:"Background/Requirements sections"},{kind:"task-section",direction:"output",required:!0,description:"Q&A/Design/Plan/AC sections"}],reasoning_skill:"sp:spur-dev",required_references:[],gates:[],mutation_class:"corpus",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[{tier:"capable-2",trigger:"gate-fail"},{tier:"capable-2",trigger:"auth"},{tier:"capable-2",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"plan",aliases:["dev-plan"],description:"dev-plan: feature intake -> AC generation -> decomposition",artifacts:[{kind:"feature-frontmatter",direction:"input",required:!0},{kind:"task-batch",direction:"output",required:!0}],reasoning_skill:"sp:spur-dev",required_references:[],gates:[{name:"feature-check",timing:"post",min_verdict:"pass"},{name:"batch-create",timing:"post",min_verdict:"pass"}],mutation_class:"corpus",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{min_tier:"capable-2",fallback:[{tier:"capable-3",trigger:"gate-fail"},{tier:"capable-3",trigger:"auth"},{tier:"capable-3",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"implement",aliases:["dev-run"],description:"dev-run --mode implement: code edits in worktree",artifacts:[{kind:"worktree-diff",direction:"output",required:!0},{kind:"task-section",direction:"output",required:!0,identity:"Solution"}],reasoning_skill:"sp:code-implementation",required_references:[],gates:[],mutation_class:"code",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[{tier:"capable-1",trigger:"gate-fail"},{tier:"capable-1",trigger:"timeout"},{tier:"capable-1",trigger:"auth"},{tier:"capable-1",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"test",aliases:["dev-unit","dev-fixall"],description:"dev-unit: generate/extend tests to coverage target",artifacts:[{kind:"test-file",direction:"output",required:!0},{kind:"coverage-report",direction:"output",required:!1}],reasoning_skill:"sp:code-testing",required_references:[],gates:[],mutation_class:"tests",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{fallback:[{tier:"capable-1",trigger:"gate-fail"},{tier:"capable-1",trigger:"auth"},{tier:"capable-1",trigger:"resource-exhaustion"}],min_tier:"standard"},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"verify",aliases:["dev-verify"],description:"dev-verify: SECUA review + requirements traceability",artifacts:[{kind:"worktree-diff",direction:"input",required:!0},{kind:"verdict-artifact",direction:"output",required:!0,identity:"<wbs>-verdict.json"}],reasoning_skill:"sp:code-verification",required_references:[],gates:[{name:"verdict-artifact",timing:"post",min_verdict:"pass"},{name:"strict-core",timing:"post",min_verdict:"pass"}],mutation_class:"verdict",retry:{max_attempts:2,terminal_stop:"escalate"},model_policy:{min_tier:"capable-1",fallback:[{tier:"capable-2",trigger:"auth"},{tier:"capable-2",trigger:"resource-exhaustion"},{tier:"capable-2",trigger:"gate-fail"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"wrap",aliases:["dev-wrap"],description:"dev-wrap: learnings/doc-sync/feature transition",artifacts:[{kind:"learning-entry",direction:"output",required:!0}],reasoning_skill:"sp:spur-dev",required_references:[],gates:[{name:"task-check",timing:"pre",min_verdict:"pass"}],mutation_class:"learnings",retry:{max_attempts:2,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[{tier:"capable-1",trigger:"gate-fail"},{tier:"capable-1",trigger:"auth"},{tier:"capable-1",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"hitl",current_agent_allowed:!0,gate_timing:"both"}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"review",aliases:["dev-review"],description:"dev-review: multi-dimensional code review (coordinator writes the combined Review)",artifacts:[{kind:"review-findings",direction:"output",required:!0,identity:"Review"}],reasoning_skill:"sp:code-verification",required_references:[],gates:[],mutation_class:"verdict",retry:{max_attempts:2,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[{tier:"capable-1",trigger:"gate-fail"},{tier:"capable-1",trigger:"auth"},{tier:"capable-1",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"record",aliases:["dev-record"],description:"record: deterministic Testing write-back from the verdict artifact; bare-Review fallback only",artifacts:[{kind:"verdict-artifact",direction:"input",required:!0,identity:"<wbs>-verdict.json"},{kind:"task-section",direction:"output",required:!0,identity:"Testing"},{kind:"task-section",direction:"output",required:!1,identity:"Review",description:"fallback-only: backfills Review only when the section is bare; never overwrites authored Review"}],reasoning_skill:"inline",required_references:[],gates:[],mutation_class:"corpus",retry:{max_attempts:1,terminal_stop:"block"},model_policy:{min_tier:"cheap",fallback:[]},context_layers:[],observability:[],execution:{kind:"deterministic",current_agent_allowed:!1,executor:"cli"}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"dogfood",aliases:["dev-dogfood"],description:"dev-dogfood: end-to-end driver test",artifacts:[{kind:"dogfood-report",direction:"output",required:!0},{kind:"monitor-ledger",direction:"output",required:!1}],reasoning_skill:"sp:dogfood-testing",required_references:[],gates:[],mutation_class:"driver",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{min_tier:"capable-1",fallback:[{tier:"capable-2",trigger:"auth"},{tier:"capable-2",trigger:"resource-exhaustion"},{tier:"capable-2",trigger:"gate-fail"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"brainstorm",aliases:["dev-brainstorm"],description:"dev-brainstorm: structured ideation",artifacts:[{kind:"brainstorm-outline",direction:"output",required:!0}],reasoning_skill:"sp:brainstorm",required_references:[],gates:[],mutation_class:"corpus",retry:{max_attempts:2,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"changelog",aliases:["dev-changelog"],description:"dev-changelog: generate changelog from git commits",artifacts:[{kind:"changelog-entry",direction:"output",required:!0}],reasoning_skill:"inline",required_references:[],gates:[],mutation_class:"none",retry:{max_attempts:1,terminal_stop:"block"},model_policy:{min_tier:"cheap",fallback:[]},context_layers:[],observability:[],execution:{kind:"deterministic",current_agent_allowed:!1,executor:"cli"}}],CANONICAL_STAGE_BY_KEY=new Map;for(let s2 of REGISTERED_CANONICAL_STAGES){CANONICAL_STAGE_BY_KEY.set(s2.id,s2);for(let a2 of s2.aliases??[])CANONICAL_STAGE_BY_KEY.set(a2,s2)}var CACHEABILITY_CLASSES=["stable-prefix-eligible","volatile"],SENSITIVITY_CLASSES=["public","internal","confidential"],envelopeProvenanceSchema=exports_external.object({owner:exports_external.string().min(1),schema_version:exports_external.string().min(1),source_revision:exports_external.string().nullable().optional(),generated_at:exports_external.string().datetime()}).strict(),envelopeSizeBudgetSchema=exports_external.object({max_bytes:exports_external.number().int().positive()}).strict(),envelopeLayerSchema=exports_external.object({layer:exports_external.enum(CONTEXT_LAYER_NAMES),content:exports_external.string(),size_bytes:exports_external.number().int().nonnegative(),content_hash:exports_external.string().length(64),provenance:envelopeProvenanceSchema,cacheability:exports_external.enum(CACHEABILITY_CLASSES),sensitivity:exports_external.enum(SENSITIVITY_CLASSES).default("internal"),size_budget:envelopeSizeBudgetSchema.optional(),disclosure_handle:exports_external.string().optional()}).strict(),STABLE_LAYER_NAMES=["harness-policy","project-authority","stage-contract","task-state","indexed-evidence"],VOLATILE_LAYER_NAMES=["run-state","tool-observations"];var envelopeSchema=exports_external.object({schema_version:exports_external.string().default("1.0"),layers:exports_external.array(envelopeLayerSchema).min(1),stage_id:exports_external.string().optional(),run_id:exports_external.string().optional(),assembled_at:exports_external.string().datetime(),total_size_bytes:exports_external.number().int().nonnegative()}).strict(),projectSnapshotSchema=exports_external.object({name:exports_external.string(),version:exports_external.string(),task_counts:exports_external.object({backlog:exports_external.number().int().nonnegative(),todo:exports_external.number().int().nonnegative(),wip:exports_external.number().int().nonnegative(),testing:exports_external.number().int().nonnegative(),done:exports_external.number().int().nonnegative(),blocked:exports_external.number().int().nonnegative(),cancelled:exports_external.number().int().nonnegative()}).strict(),feature_counts:exports_external.object({backlog:exports_external.number().int().nonnegative(),active:exports_external.number().int().nonnegative(),verifying:exports_external.number().int().nonnegative(),done:exports_external.number().int().nonnegative(),blocked:exports_external.number().int().nonnegative(),cancelled:exports_external.number().int().nonnegative()}).strict(),active_features:exports_external.array(exports_external.string()),content_hash:exports_external.string().length(64).optional()}).strict(),taskSnapshotSchema=exports_external.object({wbs:exports_external.string().regex(/^\d{4}$/),name:exports_external.string(),status:exports_external.string(),priority:exports_external.string().optional(),feature_id:exports_external.string().optional(),acceptance_criteria:exports_external.string().optional(),locked_qa:exports_external.array(exports_external.string()).optional(),solution:exports_external.string().optional(),content_hash:exports_external.string().length(64).optional()}).strict(),featureSnapshotSchema=exports_external.object({id:exports_external.string(),name:exports_external.string(),status:exports_external.string(),priority:exports_external.string().optional(),scenarios:exports_external.array(exports_external.string()).optional(),content_hash:exports_external.string().length(64).optional()}).strict();var ALL_LAYER_NAMES=[...STABLE_LAYER_NAMES,...VOLATILE_LAYER_NAMES],LAYER_ORDER={};ALL_LAYER_NAMES.forEach((name,idx)=>{LAYER_ORDER[name]=idx});init_dist2();var TASK_CANONICAL_SECTIONS=["Background","Requirements","Acceptance Criteria","Q&A","Design","Plan","Root Cause","Solution","Testing","Review","References","History"],FEATURE_CANONICAL_SECTIONS=["Goal","Scope","Acceptance Criteria","Tasks","Notes","History"],UNIVERSAL_SECTIONS=["History","References","Notes"],HEADING_LEVELS={task:3,feature:2},START_MARKER="<!-- AUTO-GENERATED by spur feature refresh -->",END_MARKER="<!-- END AUTO-GENERATED -->",MARKER_START_RE=/<!--[ \t]*AUTO-GENERATED.*?-->/,MARKER_END_RE=/<!--[ \t]*END[ \t]*AUTO-GENERATED.*?-->/;function findHeadings(body,hashes){let hits=[],prefix=`${hashes} `,inCodeBlock=!1,lineStart=0;for(let i2=0;i2<=body.length;i2++){if(i2!==body.length&&body[i2]!==`
|
|
1409
|
+
`,CLI_MIGRATIONS=[{id:"0000_spur_cli_foundation",sql:CLI_SCHEMA_SQL},{id:"0001_spur_cli_team_inbox",sql:INBOX_MESSAGES_SCHEMA_SQL},{id:"0002_spur_cli_rule_history",sql:RULE_ENGINE_SCHEMA_SQL},{id:"0003_spur_cli_planning",sql:PLANNING_SCHEMA_SQL},{id:"0004_spur_cli_queue_jobs",sql:QUEUE_JOBS_SCHEMA_SQL},{id:"0005_spur_cli_run_pid",sql:RUN_PID_COLUMN_SCHEMA_SQL,addColumnIfMissing:{table:"runs",column:"pid"}},{id:"0006_spur_cli_system_events",sql:SYSTEM_EVENTS_SCHEMA_SQL},{id:"0007_spur_cli_runs_external_key",sql:RUNS_EXTERNAL_KEY_COLUMN_SCHEMA_SQL,addColumnIfMissing:{table:"runs",column:"external_key"}},{id:"0008_spur_cli_system_events_correlation",sql:SYSTEM_EVENTS_CORRELATION_COLUMNS_SCHEMA_SQL,addColumnIfMissing:{table:"system_events",column:"sequence"}},{id:"0009_spur_cli_history_message_run_idx",sql:HISTORY_MESSAGE_RUN_INDEX_SCHEMA_SQL},{id:"0010_spur_cli_coordination_runs",sql:COORDINATION_RUNS_SCHEMA_SQL},{id:"0011_spur_cli_system_events_sequence_idx",sql:SYSTEM_EVENTS_SEQUENCE_INDEX_SCHEMA_SQL},{id:"0012_spur_cli_history_tool_call_args_raw",sql:HISTORY_TOOL_CALL_ARGS_RAW_SCHEMA_SQL,addColumnIfMissing:{table:"history_tool_call",column:"args_raw"}},{id:"0013_spur_cli_history_run_session",sql:HISTORY_RUN_SESSION_SCHEMA_SQL},{id:"0014_spur_cli_system_events_name_occurred_idx",sql:SYSTEM_EVENTS_NAME_OCCURRED_INDEX_SCHEMA_SQL},{id:"0015_spur_cli_history_tool_call_call_id",sql:HISTORY_TOOL_CALL_CALL_ID_SCHEMA_SQL,addColumnIfMissing:{table:"history_tool_call",column:"call_id"}},{id:"0016_spur_cli_history_message_ts_nullable",sql:HISTORY_MESSAGE_TS_NULLABLE_SCHEMA_SQL},{id:"0017_spur_cli_runs_status_completed_to_done",sql:"UPDATE runs SET status = 'done' WHERE status = 'completed'"},{id:"0018_spur_cli_history_message_request_id",sql:HISTORY_MESSAGE_REQUEST_ID_SCHEMA_SQL,addColumnIfMissing:{table:"history_message",column:"request_id"}},{id:"0019_spur_cli_history_etl_tables_drop",sql:HISTORY_ETL_TABLES_DROP_SCHEMA_SQL},{id:"0020_spur_cli_history_board_query_indexes",sql:HISTORY_BOARD_QUERY_INDEXES_SCHEMA_SQL},{id:"0021_spur_cli_history_board_rollups",sql:HISTORY_BOARD_ROLLUPS_SCHEMA_SQL},{id:"0022_spur_cli_history_performance_indexes",sql:HISTORY_PERFORMANCE_INDEXES_SCHEMA_SQL},{id:"0023_spur_cli_history_message_request_id_idx",sql:HISTORY_MESSAGE_REQUEST_ID_INDEX_SCHEMA_SQL},{id:"0024_spur_cli_history_checkpoint_identity",sql:"ALTER TABLE history_import_checkpoint ADD COLUMN source_size INTEGER",addColumnIfMissing:{table:"history_import_checkpoint",column:"source_size"}},{id:"0025_spur_cli_history_checkpoint_identity_mtime",sql:"ALTER TABLE history_import_checkpoint ADD COLUMN source_mtime_ms REAL",addColumnIfMissing:{table:"history_import_checkpoint",column:"source_mtime_ms"}},{id:"0026_spur_cli_history_message_duration_source",sql:"ALTER TABLE history_message ADD COLUMN duration_source TEXT",addColumnIfMissing:{table:"history_message",column:"duration_source"}},{id:"0027_spur_cli_history_refresh_active_unique",sql:HISTORY_REFRESH_ACTIVE_UNIQUE_SCHEMA_SQL},{id:"0028_spur_cli_history_task_session",sql:HISTORY_TASK_SESSION_SCHEMA_SQL},{id:"0029_spur_cli_history_tool_call_indexes",sql:HISTORY_TOOL_CALL_INDEXES_SCHEMA_SQL},{id:"0030_spur_cli_history_board_covering_indexes",sql:HISTORY_BOARD_COVERING_INDEXES_SCHEMA_SQL},{id:"0031_spur_cli_history_board_tool_stats_columns",sql:HISTORY_BOARD_TOOL_STATS_COLUMNS_SCHEMA_SQL},{id:"0032_spur_cli_history_board_skill_5m",sql:HISTORY_BOARD_SKILL_5M_SCHEMA_SQL},{id:"0033_spur_cli_importer_schema_version",sql:`INSERT OR REPLACE INTO "__spur_cli_migrations" (id, applied_at) VALUES ('${IMPORTER_SCHEMA_LEDGER_PREFIX}${HISTORY_IMPORT_SCHEMA_VERSION}', strftime('%s', 'now') * 1000);`},{id:"0034_spur_cli_history_tool_identity",sql:HISTORY_TOOL_IDENTITY_SCHEMA_SQL},{id:"0035_spur_cli_history_measure_vector",sql:HISTORY_MEASURE_VECTOR_SCHEMA_SQL},{id:"0036_spur_cli_history_rollup_watermark",sql:HISTORY_ROLLUP_WATERMARK_SCHEMA_SQL},{id:"0037_spur_cli_history_dimension_marts",sql:HISTORY_DIMENSION_MARTS_SCHEMA_SQL},{id:"0038_spur_cli_retention_compaction_meta",sql:RETENTION_COMPACTION_META_SCHEMA_SQL},{id:"0039_spur_cli_bounded_rollup_derivations",sql:BOUNDED_ROLLUP_DERIVATIONS_SCHEMA_SQL,addColumnIfMissing:{table:"history_board_source_daily",column:"raw_messages"}},{id:"0040_spur_cli_agent_executor_updates",sql:AGENT_EXECUTOR_UPDATES_SCHEMA_SQL},{id:"0041_spur_cli_queue_jobs_deadline_lease_columns",sql:QUEUE_JOBS_DEADLINE_LEASE_COLUMNS_SCHEMA_SQL,addColumnIfMissing:{table:"queue_jobs",column:"timeout_ms"}},{id:"0042_spur_cli_history_model_fallback_index",sql:HISTORY_MESSAGE_MODEL_FALLBACK_INDEX_SCHEMA_SQL},{id:"0043_spur_cli_inbox_messages_request_key",sql:INBOX_MESSAGES_REQUEST_KEY_SCHEMA_SQL,addColumnIfMissing:{table:"inbox_messages",column:"request_key"}},{id:"0044_spur_cli_coordination_runs_receipt_columns",sql:COORDINATION_RUNS_RECEIPT_COLUMNS_SCHEMA_SQL,addColumnIfMissing:{table:"coordination_runs",column:"message_ids_json"}},{id:"0045_spur_cli_project_claims",sql:PROJECT_CLAIMS_SCHEMA_SQL},{id:"0046_spur_cli_project_strategy",sql:PROJECT_STRATEGY_SCHEMA_SQL},{id:"0047_spur_cli_scheduler_custom_active_unique",sql:SCHEDULER_CUSTOM_ACTIVE_UNIQUE_SCHEMA_SQL},{id:"0048_spur_cli_agent_executor_updates_owner_columns",sql:AGENT_EXECUTOR_UPDATES_OWNER_COLUMNS_SCHEMA_SQL,addColumnIfMissing:{table:"agent_executor_updates",column:"owner"}},{id:"0049_spur_cli_runs_terminal_reason",sql:CLI_RUNS_TERMINAL_REASON_SCHEMA_SQL,addColumnIfMissing:{table:"runs",column:"terminal_reason"}},{id:"0050_spur_cli_history_board_skill_5m_capability_grain",sql:HISTORY_BOARD_SKILL_5M_CAPABILITY_GRAIN_SCHEMA_SQL},{id:"0051_spur_cli_coordination_runs_parent",sql:COORDINATION_RUNS_PARENT_SCHEMA_SQL,addColumnIfMissing:{table:"coordination_runs",column:"parent_run_id"}},{id:"0052_spur_cli_decision_logs",sql:DECISION_LOGS_SCHEMA_SQL},{id:"0053_spur_cli_inbox_messages_read_at",sql:INBOX_MESSAGES_READ_AT_SCHEMA_SQL,addColumnIfMissing:{table:"inbox_messages",column:"read_at"}}];init_zod();init_zod();var STAGE_REGISTRY_SCHEMA_VERSION={major:1,minor:3},stageSchemaVersionSchema=exports_external.object({major:exports_external.number().int().nonnegative(),minor:exports_external.number().int().nonnegative()}).strict();var MUTATION_CLASSES=["none","corpus","code","tests","verdict","learnings","driver","irreversible"];var inlineExecutionSchema=exports_external.object({kind:exports_external.literal("inline"),current_agent_allowed:exports_external.literal(!0),may_reuse_captured_layers:exports_external.boolean().optional()}).strict(),subprocessExecutionSchema=exports_external.object({kind:exports_external.literal("subprocess"),current_agent_allowed:exports_external.literal(!1),via:exports_external.literal("spur-agent-run")}).strict(),deterministicExecutionSchema=exports_external.object({kind:exports_external.literal("deterministic"),current_agent_allowed:exports_external.literal(!1),executor:exports_external.enum(["cli","script"])}).strict(),hitlExecutionSchema=exports_external.object({kind:exports_external.literal("hitl"),current_agent_allowed:exports_external.literal(!0),gate_timing:exports_external.enum(["pre","post","both"])}).strict(),irreversibleExecutionSchema=exports_external.object({kind:exports_external.literal("irreversible"),requires_operator_intent:exports_external.literal(!0),current_agent_allowed:exports_external.boolean(),rollback_disclaimer:exports_external.string().min(1)}).strict(),executionKindSchema=exports_external.discriminatedUnion("kind",[inlineExecutionSchema,subprocessExecutionSchema,deterministicExecutionSchema,hitlExecutionSchema,irreversibleExecutionSchema]),ARTIFACT_DIRECTIONS=["input","output"],stageArtifactSchema=exports_external.object({kind:exports_external.string().min(1),direction:exports_external.enum(ARTIFACT_DIRECTIONS),identity:exports_external.string().optional(),description:exports_external.string().optional(),required:exports_external.boolean().optional().default(!0)}).strict(),stageGateSchema=exports_external.object({name:exports_external.string().min(1),timing:exports_external.enum(["pre","post","transition"]),min_verdict:exports_external.enum(["pass","partial","fail"]).optional(),description:exports_external.string().optional()}).strict(),stageRetryPolicySchema=exports_external.object({max_attempts:exports_external.number().int().min(1),terminal_stop:exports_external.enum(["block","escalate","fail"]),timeout_seconds:exports_external.number().int().positive().optional()}).strict(),CAPABILITY_TIERS=["cheap","standard","capable-1","capable-2","capable-3"],LEGACY_CAPABLE_ALIAS="capable";function normalizeCapabilityTier(value){return value===LEGACY_CAPABLE_ALIAS?"capable-1":value}var capabilityTierSchema=exports_external.preprocess(normalizeCapabilityTier,exports_external.enum(CAPABILITY_TIERS)),objectiveEscalationTriggerSchema=exports_external.enum(["gate-fail","timeout","insufficient-evidence","retry-exhausted","resource-exhaustion","auth"]),stageModelPolicySchema=exports_external.object({min_tier:capabilityTierSchema,fallback:exports_external.array(exports_external.object({tier:capabilityTierSchema,trigger:objectiveEscalationTriggerSchema}).strict()),override_key:exports_external.string().optional()}).strict();var CONTEXT_LAYER_NAMES=["harness-policy","project-authority","stage-contract","task-state","indexed-evidence","run-state","tool-observations"],stageContextLayerSchema=exports_external.object({layer:exports_external.enum(CONTEXT_LAYER_NAMES),required:exports_external.literal(!0)}).strict(),stageEventSchema=exports_external.object({name:exports_external.string().min(1),description:exports_external.string().optional()}).strict(),STAGE_ID_PATTERN=/^[a-z][a-z0-9-]*$/,stageRecordSchema=exports_external.object({schema_version:stageSchemaVersionSchema,id:exports_external.string().regex(STAGE_ID_PATTERN,{message:"stage id must be lowercase kebab-case"}),aliases:exports_external.array(exports_external.string().min(1)).optional().default([]),description:exports_external.string().min(1),artifacts:exports_external.array(stageArtifactSchema).min(1),reasoning_skill:exports_external.string().min(1),required_references:exports_external.array(exports_external.string().min(1)).optional().default([]),gates:exports_external.array(stageGateSchema).optional().default([]),mutation_class:exports_external.enum(MUTATION_CLASSES),retry:stageRetryPolicySchema,model_policy:stageModelPolicySchema,context_layers:exports_external.array(stageContextLayerSchema).optional().default([]),observability:exports_external.array(stageEventSchema).optional().default([]),execution:executionKindSchema}).strict();var REGISTERED_CANONICAL_STAGES=[{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"refine",aliases:["dev-refine"],description:"dev-refine: Q&A refinement, section filling, AC tightening",artifacts:[{kind:"task-section",direction:"input",required:!0,description:"Background/Requirements sections"},{kind:"task-section",direction:"output",required:!0,description:"Q&A/Design/Plan/AC sections"}],reasoning_skill:"sp:spur-dev",required_references:[],gates:[],mutation_class:"corpus",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[{tier:"capable-2",trigger:"gate-fail"},{tier:"capable-2",trigger:"auth"},{tier:"capable-2",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"plan",aliases:["dev-plan"],description:"dev-plan: feature intake -> AC generation -> decomposition",artifacts:[{kind:"feature-frontmatter",direction:"input",required:!0},{kind:"task-batch",direction:"output",required:!0}],reasoning_skill:"sp:spur-dev",required_references:[],gates:[{name:"feature-check",timing:"post",min_verdict:"pass"},{name:"batch-create",timing:"post",min_verdict:"pass"}],mutation_class:"corpus",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{min_tier:"capable-2",fallback:[{tier:"capable-3",trigger:"gate-fail"},{tier:"capable-3",trigger:"auth"},{tier:"capable-3",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"implement",aliases:["dev-run"],description:"dev-run --mode implement: code edits in worktree",artifacts:[{kind:"worktree-diff",direction:"output",required:!0},{kind:"task-section",direction:"output",required:!0,identity:"Solution"}],reasoning_skill:"sp:code-implementation",required_references:[],gates:[],mutation_class:"code",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[{tier:"capable-1",trigger:"gate-fail"},{tier:"capable-1",trigger:"timeout"},{tier:"capable-1",trigger:"auth"},{tier:"capable-1",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"test",aliases:["dev-unit","dev-fixall"],description:"dev-unit: generate/extend tests to coverage target",artifacts:[{kind:"test-file",direction:"output",required:!0},{kind:"coverage-report",direction:"output",required:!1}],reasoning_skill:"sp:code-testing",required_references:[],gates:[],mutation_class:"tests",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{fallback:[{tier:"capable-1",trigger:"gate-fail"},{tier:"capable-1",trigger:"auth"},{tier:"capable-1",trigger:"resource-exhaustion"}],min_tier:"standard"},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"verify",aliases:["dev-verify"],description:"dev-verify: SECUA review + requirements traceability",artifacts:[{kind:"worktree-diff",direction:"input",required:!0},{kind:"verdict-artifact",direction:"output",required:!0,identity:"<wbs>-verdict.json"}],reasoning_skill:"sp:code-verification",required_references:[],gates:[{name:"verdict-artifact",timing:"post",min_verdict:"pass"},{name:"strict-core",timing:"post",min_verdict:"pass"}],mutation_class:"verdict",retry:{max_attempts:2,terminal_stop:"escalate"},model_policy:{min_tier:"capable-1",fallback:[{tier:"capable-2",trigger:"auth"},{tier:"capable-2",trigger:"resource-exhaustion"},{tier:"capable-2",trigger:"gate-fail"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"wrap",aliases:["dev-wrap"],description:"dev-wrap: learnings/doc-sync/feature transition",artifacts:[{kind:"learning-entry",direction:"output",required:!0}],reasoning_skill:"sp:spur-dev",required_references:[],gates:[{name:"task-check",timing:"pre",min_verdict:"pass"}],mutation_class:"learnings",retry:{max_attempts:2,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[{tier:"capable-1",trigger:"gate-fail"},{tier:"capable-1",trigger:"auth"},{tier:"capable-1",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"hitl",current_agent_allowed:!0,gate_timing:"both"}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"review",aliases:["dev-review"],description:"dev-review: multi-dimensional code review (coordinator writes the combined Review)",artifacts:[{kind:"review-findings",direction:"output",required:!0,identity:"Review"}],reasoning_skill:"sp:code-verification",required_references:[],gates:[],mutation_class:"verdict",retry:{max_attempts:2,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[{tier:"capable-1",trigger:"gate-fail"},{tier:"capable-1",trigger:"auth"},{tier:"capable-1",trigger:"resource-exhaustion"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"record",aliases:["dev-record"],description:"record: deterministic Testing write-back from the verdict artifact; bare-Review fallback only",artifacts:[{kind:"verdict-artifact",direction:"input",required:!0,identity:"<wbs>-verdict.json"},{kind:"task-section",direction:"output",required:!0,identity:"Testing"},{kind:"task-section",direction:"output",required:!1,identity:"Review",description:"fallback-only: backfills Review only when the section is bare; never overwrites authored Review"}],reasoning_skill:"inline",required_references:[],gates:[],mutation_class:"corpus",retry:{max_attempts:1,terminal_stop:"block"},model_policy:{min_tier:"cheap",fallback:[]},context_layers:[],observability:[],execution:{kind:"deterministic",current_agent_allowed:!1,executor:"cli"}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"dogfood",aliases:["dev-dogfood"],description:"dev-dogfood: end-to-end driver test",artifacts:[{kind:"dogfood-report",direction:"output",required:!0},{kind:"monitor-ledger",direction:"output",required:!1}],reasoning_skill:"sp:dogfood-testing",required_references:[],gates:[],mutation_class:"driver",retry:{max_attempts:3,terminal_stop:"block"},model_policy:{min_tier:"capable-1",fallback:[{tier:"capable-2",trigger:"auth"},{tier:"capable-2",trigger:"resource-exhaustion"},{tier:"capable-2",trigger:"gate-fail"}]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"brainstorm",aliases:["dev-brainstorm"],description:"dev-brainstorm: structured ideation",artifacts:[{kind:"brainstorm-outline",direction:"output",required:!0}],reasoning_skill:"sp:brainstorm",required_references:[],gates:[],mutation_class:"corpus",retry:{max_attempts:2,terminal_stop:"block"},model_policy:{min_tier:"standard",fallback:[]},context_layers:[],observability:[],execution:{kind:"inline",current_agent_allowed:!0}},{schema_version:STAGE_REGISTRY_SCHEMA_VERSION,id:"changelog",aliases:["dev-changelog"],description:"dev-changelog: generate changelog from git commits",artifacts:[{kind:"changelog-entry",direction:"output",required:!0}],reasoning_skill:"inline",required_references:[],gates:[],mutation_class:"none",retry:{max_attempts:1,terminal_stop:"block"},model_policy:{min_tier:"cheap",fallback:[]},context_layers:[],observability:[],execution:{kind:"deterministic",current_agent_allowed:!1,executor:"cli"}}],CANONICAL_STAGE_BY_KEY=new Map;for(let s2 of REGISTERED_CANONICAL_STAGES){CANONICAL_STAGE_BY_KEY.set(s2.id,s2);for(let a2 of s2.aliases??[])CANONICAL_STAGE_BY_KEY.set(a2,s2)}var CACHEABILITY_CLASSES=["stable-prefix-eligible","volatile"],SENSITIVITY_CLASSES=["public","internal","confidential"],envelopeProvenanceSchema=exports_external.object({owner:exports_external.string().min(1),schema_version:exports_external.string().min(1),source_revision:exports_external.string().nullable().optional(),generated_at:exports_external.string().datetime()}).strict(),envelopeSizeBudgetSchema=exports_external.object({max_bytes:exports_external.number().int().positive()}).strict(),envelopeLayerSchema=exports_external.object({layer:exports_external.enum(CONTEXT_LAYER_NAMES),content:exports_external.string(),size_bytes:exports_external.number().int().nonnegative(),content_hash:exports_external.string().length(64),provenance:envelopeProvenanceSchema,cacheability:exports_external.enum(CACHEABILITY_CLASSES),sensitivity:exports_external.enum(SENSITIVITY_CLASSES).default("internal"),size_budget:envelopeSizeBudgetSchema.optional(),disclosure_handle:exports_external.string().optional()}).strict(),STABLE_LAYER_NAMES=["harness-policy","project-authority","stage-contract","task-state","indexed-evidence"],VOLATILE_LAYER_NAMES=["run-state","tool-observations"];var envelopeSchema=exports_external.object({schema_version:exports_external.string().default("1.0"),layers:exports_external.array(envelopeLayerSchema).min(1),stage_id:exports_external.string().optional(),run_id:exports_external.string().optional(),assembled_at:exports_external.string().datetime(),total_size_bytes:exports_external.number().int().nonnegative()}).strict(),projectSnapshotSchema=exports_external.object({name:exports_external.string(),version:exports_external.string(),task_counts:exports_external.object({backlog:exports_external.number().int().nonnegative(),todo:exports_external.number().int().nonnegative(),wip:exports_external.number().int().nonnegative(),testing:exports_external.number().int().nonnegative(),done:exports_external.number().int().nonnegative(),blocked:exports_external.number().int().nonnegative(),cancelled:exports_external.number().int().nonnegative()}).strict(),feature_counts:exports_external.object({backlog:exports_external.number().int().nonnegative(),active:exports_external.number().int().nonnegative(),verifying:exports_external.number().int().nonnegative(),done:exports_external.number().int().nonnegative(),blocked:exports_external.number().int().nonnegative(),cancelled:exports_external.number().int().nonnegative()}).strict(),active_features:exports_external.array(exports_external.string()),content_hash:exports_external.string().length(64).optional()}).strict(),taskSnapshotSchema=exports_external.object({wbs:exports_external.string().regex(/^\d{4}$/),name:exports_external.string(),status:exports_external.string(),priority:exports_external.string().optional(),feature_id:exports_external.string().optional(),acceptance_criteria:exports_external.string().optional(),locked_qa:exports_external.array(exports_external.string()).optional(),solution:exports_external.string().optional(),content_hash:exports_external.string().length(64).optional()}).strict(),featureSnapshotSchema=exports_external.object({id:exports_external.string(),name:exports_external.string(),status:exports_external.string(),priority:exports_external.string().optional(),scenarios:exports_external.array(exports_external.string()).optional(),content_hash:exports_external.string().length(64).optional()}).strict();var ALL_LAYER_NAMES=[...STABLE_LAYER_NAMES,...VOLATILE_LAYER_NAMES],LAYER_ORDER={};ALL_LAYER_NAMES.forEach((name,idx)=>{LAYER_ORDER[name]=idx});init_dist2();var TASK_CANONICAL_SECTIONS=["Background","Requirements","Acceptance Criteria","Q&A","Design","Plan","Root Cause","Solution","Testing","Review","References","History"],FEATURE_CANONICAL_SECTIONS=["Goal","Scope","Acceptance Criteria","Tasks","Notes","History"],UNIVERSAL_SECTIONS=["History","References","Notes"],HEADING_LEVELS={task:3,feature:2},START_MARKER="<!-- AUTO-GENERATED by spur feature refresh -->",END_MARKER="<!-- END AUTO-GENERATED -->",MARKER_START_RE=/<!--[ \t]*AUTO-GENERATED.*?-->/,MARKER_END_RE=/<!--[ \t]*END[ \t]*AUTO-GENERATED.*?-->/;function findHeadings(body,hashes){let hits=[],prefix=`${hashes} `,inCodeBlock=!1,lineStart=0;for(let i2=0;i2<=body.length;i2++){if(i2!==body.length&&body[i2]!==`
|
|
1372
1410
|
`)continue;let line=body.slice(lineStart,i2);if(line.startsWith("```"))inCodeBlock=!inCodeBlock;else if(!inCodeBlock&&line.startsWith(prefix)){let name=line.slice(prefix.length).trim();hits.push({index:lineStart,headingLine:line,name})}lineStart=i2+1}return hits}function findUnclosedFenceLine(text3){let inCodeBlock=!1,openLine=0,lineNo=0,lineStart=0;for(let i2=0;i2<=text3.length;i2++){if(i2!==text3.length&&text3[i2]!==`
|
|
1373
1411
|
`)continue;let line=text3.slice(lineStart,i2);if(lineNo++,line.startsWith("```"))if(inCodeBlock)inCodeBlock=!1;else inCodeBlock=!0,openLine=lineNo;lineStart=i2+1}return inCodeBlock?openLine:null}function normalizeYamlScalars(data){let out={};for(let[key,value]of Object.entries(data))if(value instanceof Date)out[key]=value.toISOString();else if(value!==null&&typeof value==="object"&&!Array.isArray(value))out[key]=normalizeYamlScalars(value);else out[key]=value;return out}class MarkdownDocument{_domain;_frontmatterBlock;_frontmatter;_preamble;_sections;_demotedHeadings=[];_duplicateSectionNames=[];_unclosedFenceLine;constructor(domain2,frontmatterBlock,frontmatter,preamble,sections,unclosedFenceLine){this._domain=domain2,this._frontmatterBlock=frontmatterBlock,this._frontmatter=frontmatter,this._preamble=preamble,this._sections=sections,this._unclosedFenceLine=unclosedFenceLine}static parse(content,domain2){let level=HEADING_LEVELS[domain2],hashes="#".repeat(level),frontmatterBlock="",frontmatter=null,body=content,fmMatch=/^---\r?\n([\s\S]*?)\r?\n---\r?\n?/.exec(content);if(fmMatch&&fmMatch.index===0){let raw=fmMatch[1]??"",data={};try{let parsed=$parse(raw);if(parsed!==null&&typeof parsed==="object"&&!Array.isArray(parsed))data=normalizeYamlScalars(parsed)}catch{}frontmatter={raw,data},frontmatterBlock=fmMatch[0],body=content.slice(fmMatch[0].length)}let bodyUnclosedFenceLine=findUnclosedFenceLine(body),unclosedFenceLine=bodyUnclosedFenceLine===null?null:bodyUnclosedFenceLine+(frontmatterBlock.match(/\n/g)??[]).length,hits=findHeadings(body,hashes),first=hits[0],preamble=first!==void 0?body.slice(0,first.index):body,allSections=hits.map((hit,idx)=>{let next=hits[idx+1],end=next!==void 0?next.index:body.length;return{name:hit.name,headingLine:hit.headingLine,originalText:body.slice(hit.index,end),modifiedText:null}}),seen=new Set,sections=[],duplicateNames=[];for(let s2 of allSections)if(seen.has(s2.name))duplicateNames.push(s2.name);else seen.add(s2.name),sections.push(s2);let doc2=new MarkdownDocument(domain2,frontmatterBlock,frontmatter,preamble,sections,unclosedFenceLine);return doc2._duplicateSectionNames.push(...duplicateNames),doc2}get domain(){return this._domain}replacePreamble(newBody){this._preamble=newBody}get frontmatter(){return this._frontmatter}get frontmatterRaw(){return this._frontmatter?.raw??null}get frontmatterData(){return this._frontmatter?.data??null}get bodyWithoutFrontmatter(){let result=this._preamble;for(let section of this._sections)result+=section.modifiedText??section.originalText;return result}get sectionNames(){return this._sections.map((s2)=>s2.name)}get demotedHeadings(){return this._demotedHeadings}get duplicateSectionNames(){return this._duplicateSectionNames}unclosedFenceLine(){return this._unclosedFenceLine}assertFenceBalance(name,body){let docFenceLine=this._unclosedFenceLine;if(docFenceLine!==null)throw Error(`Cannot write section "${name}": the document has an unclosed code fence at line ${docFenceLine}; later sections are hidden and would be dropped by this write. Close the fence and re-parse.`);if(this._duplicateSectionNames.length>0){let names=this._duplicateSectionNames.map((n2)=>`"${n2}"`).join(", ");throw Error(`Cannot write section "${name}": the document has duplicate top-level sections (${names}); the serialized result would have fewer sections than the input and the duplicates would be dropped. Merge or remove the duplicates and re-parse.`)}let bodyFenceLine=findUnclosedFenceLine(body);if(bodyFenceLine!==null)throw Error(`Cannot write section "${name}": the new body has an unclosed code fence (opening at body line ${bodyFenceLine}); writing it would leave the document inside an open fence and hide later sections.`)}get canonicalSections(){let base2=this._domain==="task"?TASK_CANONICAL_SECTIONS:FEATURE_CANONICAL_SECTIONS,extra=UNIVERSAL_SECTIONS.filter((s2)=>!base2.includes(s2));return[...base2,...extra]}validateSectionName(name){if(!this.canonicalSections.includes(name))throw Error(`Unknown section "${name}" for domain "${this._domain}". Canonical sections: ${this.canonicalSections.join(", ")}.`)}findSection(name){return this._sections.find((s2)=>s2.name===name)}hasSection(name){return this.findSection(name)!==void 0}getSection(name){this.validateSectionName(name);let section=this.findSection(name);if(section===void 0)return null;let text3=section.modifiedText??section.originalText,newlineIdx=text3.indexOf(`
|
|
1374
1412
|
`);return newlineIdx===-1?"":text3.slice(newlineIdx+1)}replaceSection(name,body){this.validateSectionName(name),this.assertFenceBalance(name,body);let cleaned=this.stripSameLevelHeadings(body),section=this.findSection(name);if(section!==void 0){let trimmed=cleaned.trim();section.modifiedText=trimmed.length>0?`${section.headingLine}
|