alchemylab 1.4.14 → 2.0.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.
@@ -0,0 +1,504 @@
1
+ (()=>{"use strict"
2
+ function e(t){var r=s[t]
3
+ if(void 0!==r)return r.exports
4
+ var module=s[t]={id:t,loaded:!1,exports:{}}
5
+ return o[t].call(module.exports,module,module.exports,e),module.loaded=!0,module.exports}var t,r,n,o={4703:(e,exports,t)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.LIVE_FRAME_PATH=void 0,exports.readOomKills=async function(e){const t=await(0,r.docker)(["exec",e,"cat","/sys/fs/cgroup/memory.events"],n)
6
+ if(0===t.exit){const e=/^oom_kill (\d+)/m.exec(t.stdout)
7
+ if(e)return Number(e[1])}const o=await(0,r.docker)(["exec",e,"cat","/sys/fs/cgroup/memory/memory.oom_control"],n)
8
+ if(0===o.exit){const e=/^oom_kill (\d+)/m.exec(o.stdout)
9
+ if(e)return Number(e[1])}return null},exports.probeBox=async function(e){const t=`cat /sys/fs/cgroup/memory.events 2>/dev/null || cat /sys/fs/cgroup/memory/memory.oom_control 2>/dev/null; if [ -s ${exports.LIVE_FRAME_PATH} ]; then echo __ALCHEMY_LIVE_FRAME__; fi`,o=await(0,r.docker)(["exec",e,"/bin/sh","-c",t],n),s=/^oom_kill (\d+)/m.exec(o.stdout)
10
+ return{oomKills:s?Number(s[1]):null,liveFrame:o.stdout.includes("__ALCHEMY_LIVE_FRAME__")}},exports.oomNote=function(e,t){return`[AlchemyLab] Out of memory: the kernel killed ${1===e?"a process":`${e} processes`} in this box during this command (the box's memory cap is ${t}). Exit code 137 means killed. Make the case smaller, or raise the environment's memory (resources.memory).`}
11
+ const r=t(6175),n=5e3
12
+ exports.LIVE_FRAME_PATH="/tmp/.alchemy_live.png"},6175:(e,exports,t)=>{function r(){return{...c?{"alchemy.project":c}:{},...l.getStore()??{}}}function n(e){if("create"!==e[0]&&"run"!==e[0])return e
13
+ const t=new Set
14
+ e.forEach(((r,n)=>{"--label"===e[n-1]&&t.add(r.split("=")[0])}))
15
+ const n=Object.entries(r()).filter((([e])=>!t.has(e))).flatMap((([e,t])=>["--label",`${e}=${t.replace(/[\r\n]/g," ").slice(0,200)}`]))
16
+ return n.length?[e[0],...n,...e.slice(1)]:e}function o(e,t){return new Promise((r=>{(0,s.execFile)("docker",n(e),{timeout:t,killSignal:"SIGKILL",maxBuffer:33554432,windowsHide:!0},((e,t,n)=>{if(!e)return void r({exit:0,stdout:t,stderr:n,timedOut:!1})
17
+ const o=e
18
+ if("ENOENT"===o.code)return void r({exit:-1,stdout:t??"",stderr:n??"",timedOut:!1,spawnError:"docker CLI not found on PATH"})
19
+ const s=!0===o.killed||"SIGKILL"===o.signal,a="number"==typeof o.code?o.code:-1
20
+ r({exit:a,stdout:t??"",stderr:n??"",timedOut:s})}))}))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.PULL_TIMEOUT_MS=exports.DOCKER_OP_TIMEOUT_MS=void 0,exports.setContainerProject=function(e){c=e||void 0},exports.withContainerLabels=function(e,t){const r=Object.fromEntries(Object.entries(e).filter((([,e])=>"string"==typeof e&&e.length>0)))
21
+ return l.run({...l.getStore()??{},...r},t)},exports.containerLabels=r,exports.withScopeLabels=n,exports.docker=o,exports.volumeExists=async function(e){return 0===(await o(["volume","inspect",e],exports.DOCKER_OP_TIMEOUT_MS)).exit},exports.ensureImage=async function(e){const t=(0,i.localRecipeFor)(e)
22
+ if(t)return(0,i.ensureLocalImage)(t)
23
+ const r=await o(["image","inspect",e],exports.DOCKER_OP_TIMEOUT_MS)
24
+ if(r.spawnError)return r.spawnError
25
+ if(0===r.exit)return
26
+ const n=await o(["pull",e],exports.PULL_TIMEOUT_MS)
27
+ return 0!==n.exit?`docker pull ${e} failed: ${(n.stderr||String(n.exit)).trim()}`:void 0}
28
+ const s=t(31421),a=t(16698),i=t(69968)
29
+ let c
30
+ const l=new a.AsyncLocalStorage
31
+ exports.DOCKER_OP_TIMEOUT_MS=6e4,exports.PULL_TIMEOUT_MS=3e5},7740:(e,exports,t)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.ENVIRONMENT_PRESETS=exports.OFFICE_BOX_PRESET=exports.OFFICE_BOX_RECIPE_HASH=exports.OFFICE_BOX_DOCKERFILE=exports.NOBREAK_DIGIT_HYPHEN_LUA=exports.OFFICE_RENDER_DIR=exports.OFFICE_BOX_IMAGE=exports.OFFICE_BOX_VERSION=void 0,exports.expandEnvironmentPreset=function(e,t){const r=t??{}
32
+ if(!e)return r
33
+ const n=exports.ENVIRONMENT_PRESETS[e].config
34
+ return{...n,...r,resources:{...n.resources??{},...r.resources??{}}}},exports.presetsLine=function(e){if(!e.includes(exports.OFFICE_BOX_IMAGE))return'Presets: `office` (python-docx, openpyxl, python-pptx, pandoc, LibreOffice, segno and zbarimg for QR codes; `render-pdf FILE` turns Word, Excel, PowerPoint, Markdown or HTML into PDF). Set it up with environment_verify({ preset: "office" }) then environment_create({ name: "Office", preset: "office" }), or ask environment_setup for the office preset. Needs Docker; the image is built locally on first use (a few minutes, about 900 MB). To only look at an office file, view_asset renders it without a box.'}
35
+ const r=t(76982)
36
+ exports.OFFICE_BOX_VERSION=1,exports.OFFICE_BOX_IMAGE=`alchemylab-local/office-box:v${exports.OFFICE_BOX_VERSION}`,exports.OFFICE_RENDER_DIR="/scratch/render",exports.NOBREAK_DIGIT_HYPHEN_LUA="local NBH = utf8.char(0x2011)\nfunction Str(el)\n local t = el.text\n for _ = 1, 2 do t = t:gsub('(%d)%-(%d)', '%1' .. NBH .. '%2') end\n if t ~= el.text then el.text = t end\n return el\nend\n"
37
+ const n="/usr/local/share/render-pdf/nobreak.lua",o=`#!/bin/sh\n# render-pdf FILE... : convert Word, Excel, PowerPoint, OpenDocument, Markdown or HTML to PDF.\n# Writes each PDF under \${RENDER_OUT:-${exports.OFFICE_RENDER_DIR}} and prints its path, one per line.\nset -e\nout="\${RENDER_OUT:-${exports.OFFICE_RENDER_DIR}}"\nmkdir -p "$out" /scratch/.render-work\nexport HOME="\${HOME:-/scratch}"\nif [ "$1" = "--self-test" ]; then\n cd /scratch/.render-work\n python3 -c "import docx; d = docx.Document(); d.add_heading('render-pdf self-test', 1); d.add_paragraph('ok'); d.save('self-test.docx')"\n set -- /scratch/.render-work/self-test.docx\nfi\n[ "$#" -gt 0 ] || { echo "usage: render-pdf FILE..." >&2; exit 2; }\nfor f in "$@"; do\n [ -f "$f" ] || { echo "render-pdf: no such file: $f" >&2; exit 1; }\n name=$(basename "$f"); stem="\${name%.*}"\n case "$name" in\n *.md|*.markdown) pandoc --lua-filter ${n} "$f" -o "/scratch/.render-work/$stem.docx"; src="/scratch/.render-work/$stem.docx" ;;\n *) src="$f" ;;\n esac\n soffice --headless --norestore -env:UserInstallation=file:///scratch/.render-profile --convert-to pdf --outdir "$out" "$src" >/scratch/.render-work/soffice.log 2>&1 \\\n || { echo "render-pdf: LibreOffice could not convert $f" >&2; tail -5 /scratch/.render-work/soffice.log >&2; exit 1; }\n [ -f "$out/$stem.pdf" ] || { echo "render-pdf: no PDF produced for $f" >&2; exit 1; }\n echo "$out/$stem.pdf"\ndone\n`
38
+ exports.OFFICE_BOX_DOCKERFILE=function(){const e=Buffer.from(o).toString("base64"),t=Buffer.from(exports.NOBREAK_DIGIT_HYPHEN_LUA).toString("base64")
39
+ return["FROM python:3.12-slim","ENV DEBIAN_FRONTEND=noninteractive PIP_NO_CACHE_DIR=1 PYTHONDONTWRITEBYTECODE=1","RUN apt-get update \\"," && apt-get install -y --no-install-recommends \\"," libreoffice-writer-nogui libreoffice-calc-nogui libreoffice-impress-nogui \\"," pandoc fonts-liberation fonts-dejavu-core fonts-crosextra-carlito fonts-crosextra-caladea \\"," zbar-tools poppler-utils \\"," && rm -rf /var/lib/apt/lists/*","RUN pip install python-docx openpyxl python-pptx pypdf segno",`RUN echo ${e} | base64 -d > /usr/local/bin/render-pdf && chmod 755 /usr/local/bin/render-pdf`,`RUN mkdir -p ${n.replace(/\/[^/]+$/,"")} && echo ${t} | base64 -d > ${n}`,""].join("\n")}(),exports.OFFICE_BOX_RECIPE_HASH=(0,r.createHash)("sha256").update(exports.OFFICE_BOX_DOCKERFILE).digest("hex").slice(0,16),exports.OFFICE_BOX_PRESET={name:"Office",description:'Make and render office files: python-docx, openpyxl, python-pptx, pandoc and LibreOffice in a sealed box. `render-pdf FILE` writes a PDF under /scratch/render. QR codes: `segno "URL" -o qr.png --scale 10`, read back with `zbarimg`; `pdftoppm -png` turns PDF pages into images. Word styling from Markdown: `pandoc --reference-doc`. The worktree is read-only here: make files under /scratch, record them (results record, box), then view_asset({ result }) to look at a PDF and write_file({ path, fromResult }) to put a file in the repository. Scripts you write to make a file stay in /scratch: the repository gets the finished files, and a note in the source saying how it was rendered.',smoke:"render-pdf --self-test",config:{image:exports.OFFICE_BOX_IMAGE,shellInit:"export HOME=/scratch",resources:{memory:"3g",scratchMb:1024,shmMb:256}}},exports.ENVIRONMENT_PRESETS={office:exports.OFFICE_BOX_PRESET}},9956:module=>{module.exports=require("undici")},15845:function(module,exports,e){async function t(e,t,r){const n=await(0,d.renderDocument)({bytes:Buffer.from(e),filename:`version.${t}`,to:r},{cacheDir:l.join(c.tmpdir(),"alchemylab-render-cache"),image:"present-only"})
40
+ if(!n.ok)throw new Error(n.error)
41
+ return n.bytes}async function r(e){const r=(0,u.documentKindFor)(e)
42
+ if(!r)return`(AlchemyLab: no text form for ${e.split(".").pop()} files)\n`
43
+ try{const n=await(0,u.extractDocumentText)(new Uint8Array(await(0,i.readFile)(e)),r,{convert:t})
44
+ return n.text.endsWith("\n")?n.text:`${n.text}\n`}catch(e){return`(AlchemyLab: could not read this ${r.toUpperCase()} version: ${e instanceof Error?e.message:String(e)})\n`}}module=e.nmd(module)
45
+ var n,o=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r)
46
+ var o=Object.getOwnPropertyDescriptor(t,r)
47
+ o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[]
48
+ for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r)
49
+ return t},n(e)},function(e){if(e&&e.__esModule)return e
50
+ var t={}
51
+ if(null!=e)for(var r=n(e),a=0;a<r.length;a++)"default"!==r[a]&&o(t,e,r[a])
52
+ return s(t,e),t})
53
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.textconv=r
54
+ const i=e(91943),c=a(e(70857)),l=a(e(16928)),u=e(98335),d=e(24716)
55
+ if(e.c[e.s]===module){const e=process.argv[2]
56
+ e||(process.stderr.write("usage: textconv <file>\n"),process.exit(2)),r(e).then((e=>process.stdout.write(e)),(()=>process.stdout.write("(AlchemyLab: text conversion failed)\n")))}},16603:(e,exports,t)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.RUN_ENV_VAR=exports.RUN_FROM_ENV=void 0,exports.withShellInit=function(e,t){const r=(e??"").trim()
57
+ return r?`${r} && ${t}`:t},exports.carriesOwnShellInit=function(e){return/(^|[;&|]\s*|\s-lc\s*['"]?\s*)(\.|source)\s+\S+\s*(&&|;)/.test(e)}
58
+ var r=t(52039)
59
+ Object.defineProperty(exports,"RUN_FROM_ENV",{enumerable:!0,get:function(){return r.RUN_FROM_ENV}}),Object.defineProperty(exports,"RUN_ENV_VAR",{enumerable:!0,get:function(){return r.RUN_ENV_VAR}})},16698:module=>{module.exports=require("node:async_hooks")},16928:module=>{module.exports=require("path")},24716:function(e,exports,t){function r(e,t){const r=d.extname(e).slice(1).toLowerCase()
60
+ return b[t].includes(r)}function n(e,t){const r=e=>`'${e.replace(/'/g,"'\\''")}'`,n=`/work/in/${e}`,o=e.replace(/\.[^.]+$/,"")
61
+ return"pdf"===t?`RENDER_OUT=/work/out render-pdf ${r(n)}`:"docx"===t&&/\.(md|markdown|html?)$/i.test(e)?`pandoc ${r(n)} -o ${r(`/work/out/${o}.docx`)}`:`soffice --headless --norestore -env:UserInstallation=file:///scratch/.render-profile --convert-to ${t} --outdir /work/out ${r(n)} >/dev/null`}var o,s=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r)
62
+ var o=Object.getOwnPropertyDescriptor(t,r)
63
+ o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),a=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||(o=function(e){return o=Object.getOwnPropertyNames||function(e){var t=[]
64
+ for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r)
65
+ return t},o(e)},function(e){if(e&&e.__esModule)return e
66
+ var t={}
67
+ if(null!=e)for(var r=o(e),n=0;n<r.length;n++)"default"!==r[n]&&s(t,e,r[n])
68
+ return a(t,e),t})
69
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.RENDER_MIME=exports.MAX_RENDER_INPUT_BYTES=void 0,exports.canRender=r,exports.renderDocument=async function(e,t){const o=(s=e.filename,d.basename(s).replace(/[^A-Za-z0-9._-]+/g,"_").replace(/^\.+/,"")||"document")
70
+ var s
71
+ if(!r(o,e.to))return{ok:!1,error:`${d.extname(o)||"this file"} cannot be turned into ${e.to.toUpperCase()}`}
72
+ if(e.bytes.length>exports.MAX_RENDER_INPUT_BYTES)return{ok:!1,error:`file is over ${exports.MAX_RENDER_INPUT_BYTES/1048576} MB`}
73
+ const a=(0,c.createHash)("sha256").update(m.OFFICE_BOX_RECIPE_HASH).update("\0").update(e.to).update("\0").update(d.extname(o).toLowerCase()).update("\0").update(e.bytes).digest("hex"),i=d.join(t.cacheDir,`${a}.${e.to}`)
74
+ try{return{ok:!0,bytes:await l.promises.readFile(i),cached:!0}}catch{}const b=t.image??"wait"
75
+ if("wait"!==b){const e=(0,f.localRecipeFor)(m.OFFICE_BOX_IMAGE),t=await(0,f.localImageState)(e)
76
+ if("no-docker"===t.state)return{ok:!1,error:t.error,unavailable:!0}
77
+ if("building"===t.state)return{ok:!1,error:g,preparing:!0,since:t.since}
78
+ if("failed"===t.state&&Date.now()-t.at<w)return{ok:!1,error:`building the office renderer failed: ${t.error.split("\n").slice(-3).join(" ")}`}
79
+ if("ready"!==t.state){if("present-only"===b)return{ok:!1,error:"the office renderer is not built on this machine yet",unavailable:!0}
80
+ const{since:t}=(0,f.startLocalImageBuild)(e)
81
+ return{ok:!1,error:g,preparing:!0,since:t}}}const x=await l.promises.mkdtemp(d.join(u.tmpdir(),"alchemylab-render-"))
82
+ try{await l.promises.mkdir(d.join(x,"in")),await l.promises.mkdir(d.join(x,"out")),await l.promises.chmod(x,493),await l.promises.chmod(d.join(x,"in"),493),await l.promises.chmod(d.join(x,"out"),511),await l.promises.writeFile(d.join(x,"in",o),e.bytes,{mode:420})
83
+ const r=new p.ContainerRunner({image:m.OFFICE_BOX_IMAGE,stepTimeoutMs:h,resources:{memory:"3g",shmSizeMb:256}}),s=await r.run({worktreePath:x,image:m.OFFICE_BOX_IMAGE,env:{HOME:"/scratch"},steps:[{run:n(o,e.to)}]})
84
+ if(!s.ok){const e=s.steps[0]
85
+ return{ok:!1,error:(s.error??`${(e?.stderr||e?.stdout||"").trim().split("\n").slice(-4).join(" ")}`)||"rendering failed",unavailable:!!s.error&&/docker|daemon|not found on PATH|Cannot connect/i.test(s.error)}}const a=(await l.promises.readdir(d.join(x,"out"))).find((t=>t.toLowerCase().endsWith(`.${e.to}`)))
86
+ if(!a)return{ok:!1,error:`no ${e.to.toUpperCase()} was produced`}
87
+ const c=await l.promises.readFile(d.join(x,"out",a))
88
+ return await l.promises.mkdir(t.cacheDir,{recursive:!0}),await l.promises.writeFile(i,c),{ok:!0,bytes:c,cached:!1}}finally{await l.promises.rm(x,{recursive:!0,force:!0})}}
89
+ const c=t(76982),l=t(79896),u=i(t(70857)),d=i(t(16928)),p=t(64936),f=t(69968),m=t(7740)
90
+ exports.MAX_RENDER_INPUT_BYTES=52428800
91
+ const h=18e4,b={pdf:["docx","doc","odt","rtf","xlsx","xlsm","xls","ods","csv","pptx","ppt","odp","md","markdown","html","htm"],docx:["md","markdown","html","htm","odt","rtf","doc"],xlsx:["xls","ods"],pptx:["ppt","odp"]}
92
+ exports.RENDER_MIME={pdf:"application/pdf",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",pptx:"application/vnd.openxmlformats-officedocument.presentationml.presentation"}
93
+ const w=12e4,g="the office renderer is being built on this machine (first use only, usually a few minutes)"},31421:module=>{module.exports=require("node:child_process")},35317:module=>{module.exports=require("child_process")},48161:module=>{module.exports=require("node:os")},50478:(e,exports)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.rtfToText=function(e){const o="string"==typeof e?e:Buffer.from(e).toString("latin1")
94
+ if(!/^\s*\{\s*\\rtf/i.test(o))throw new Error("not an RTF file (it does not start with {\\rtf)")
95
+ const s=[],a=[{skip:!1,skipChars:0}],i=()=>a[a.length-1],c=e=>{i().skip||s.push(e)}
96
+ for(let e=0;e<o.length;e++){const s=o[e]
97
+ if("{"===s){a.push({...i()})
98
+ continue}if("}"===s){a.length>1&&a.pop()
99
+ continue}if("\r"===s||"\n"===s)continue
100
+ if("\\"!==s){if(i().skipChars>0){i().skipChars--
101
+ continue}c(s)
102
+ continue}const u=/^\\([a-zA-Z]+)(-?\d+)? ?/.exec(o.slice(e))
103
+ if(!u){const s=o[e+1]
104
+ if("*"===s){const r=/^\\\*\\([a-zA-Z]+)/.exec(o.slice(e))
105
+ r&&!t.has(r[1])||(i().skip=!0),e+=1
106
+ continue}if("'"===s){const t=o.slice(e+2,e+4)
107
+ if(e+=3,i().skipChars>0){i().skipChars--
108
+ continue}c((l=parseInt(t,16)||0)<128?String.fromCharCode(l):n[l-128]??"")
109
+ continue}if(void 0!==s&&void 0!==r[s]){c(r[s]),e+=1
110
+ continue}e+=1
111
+ continue}const[d,p,f]=u
112
+ e+=d.length-1
113
+ const m=void 0===f?void 0:Number(f)
114
+ if(t.has(p))i().skip=!0
115
+ else if("u"!==p)"uc"!==p?"cell"!==p&&"nestcell"!==p?"row"!==p&&"nestrow"!==p?void 0===r[p]||c(r[p]):c("\n"):c(" | "):i().ucSkip=m??1
116
+ else{const e=i().skipChars>0
117
+ i().skipChars=Math.max(0,a[a.length-1].ucSkip??1),e||void 0===m||c(String.fromCodePoint(m<0?m+65536:m))}}var l
118
+ return s.join("").replace(/[ \t]+\n/g,"\n").replace(/\n{3,}/g,"\n\n").split("\n").map((e=>{const t=e.replace(/\s+$/,"").replace(/^\s*\|\s*/,"").replace(/\s*\|\s*$/,"")
119
+ return e.includes(" | ")?`| ${t} |`:t})).join("\n").trim()}
120
+ const t=new Set(["fonttbl","colortbl","stylesheet","listtable","listoverridetable","revtbl","rsidtbl","generator","info","pict","object","themedata","colorschememapping","latentstyles","datastore","xmlnstbl","filetbl","upr","fldinst","nonshppict","shppict","panose"]),r={par:"\n",line:"\n",tab:"\t",sect:"\n\n",page:"\n\n",lquote:"\u2018",rquote:"\u2019",ldblquote:"\u201c",rdblquote:"\u201d",emdash:"\u2014",endash:"\u2013",bullet:"\u2022",emspace:" ",enspace:" ",qmspace:" ","~":"\xa0","-":"",_:"-","{":"{","}":"}","\\":"\\"},n="\u20ac\x81\u201a\u0192\u201e\u2026\u2020\u2021\u02c6\u2030\u0160\u2039\u0152\x8d\u017d\x8f\x90\u2018\u2019\u201c\u201d\u2022\u2013\u2014\u02dc\u2122\u0161\u203a\u0153\x9d\u017e\u0178\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"},52039:(e,exports,t)=>{async function r(e,r={}){const{spawn:n}=await Promise.resolve().then(t.t.bind(t,35317,23))
121
+ return new Promise((t=>{const o="win32"===process.platform,s=o?n(e,{cwd:r.cwd??process.cwd(),env:r.env,shell:"cmd.exe",stdio:["pipe","pipe","pipe"],detached:!1}):n("/bin/sh",["-c",exports.RUN_FROM_ENV],{cwd:r.cwd??process.cwd(),env:{...r.env??process.env,[exports.RUN_ENV_VAR]:e},stdio:["pipe","pipe","pipe"],detached:!0}),a=[],i=[]
122
+ let c=!1,l=!1
123
+ const u=e=>{if(s.pid)try{o?s.kill(e):process.kill(-s.pid,e)}catch{}}
124
+ let d,p
125
+ r.onKillReady?.(((e="SIGTERM")=>{u(e),"SIGKILL"!==e&&setTimeout((()=>{l||u("SIGKILL")}),2e3)})),r.timeoutMs&&r.timeoutMs>0&&(p=setTimeout((()=>{c=!0,u("SIGTERM"),d=setTimeout((()=>{l||u("SIGKILL")}),2e3)}),r.timeoutMs)),s.stdout?.on("data",(e=>{a.push(e),r.onChunk?.("stdout",e)})),s.stderr?.on("data",(e=>{i.push(e),r.onChunk?.("stderr",e)}))
126
+ const f=e=>{l||(l=!0,p&&clearTimeout(p),d&&clearTimeout(d),t({stdout:Buffer.concat(a).toString("utf-8"),stderr:Buffer.concat(i).toString("utf-8"),exitCode:e,timedOut:c}))}
127
+ s.on("close",(e=>f(e??(c?124:1)))),s.on("error",(()=>f(1)))}))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.RUN_ENV_VAR=exports.RUN_FROM_ENV=exports.RUN_PARSE_FAILED_EXIT=void 0,exports.exitMeansCouldNotRun=function(e){return e===exports.RUN_PARSE_FAILED_EXIT||127===e},exports.execAsync=async function(e,t={}){return new Promise(((r,o)=>{const[s,...a]=e.split(" "),i=(0,n.spawn)(s,a,{cwd:t.cwd||process.cwd(),stdio:["pipe","pipe","pipe"]})
128
+ let c="",l=""
129
+ i.stdout?.on("data",(e=>{c+=e.toString()})),i.stderr?.on("data",(e=>{l+=e.toString()})),i.on("close",(e=>{r({stdout:c,stderr:l,exitCode:e||0})})),i.on("error",(t=>{o(new Error(`Command failed: ${e}\nError: ${t.message}`))})),t.timeout&&setTimeout((()=>{i.kill(),o(new Error(`Command timed out: ${e}`))}),t.timeout)}))},exports.runShellCommand=r,exports.runTrackedShellCommand=async function(e,n,o){const{getActionServerBaseUrl:s}=await t.e(603).then(t.bind(t,53603)),a=s(),i=(new Date).toISOString(),c=n.cwd??process.cwd()
130
+ let l
131
+ fetch(`${a}/api/commands/start`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:o.id,name:o.name,command:e,cwd:c,sessionId:o.sessionId,startedAt:i,logPath:o.logPath,timeoutMs:n.timeoutMs}),signal:AbortSignal.timeout(2e3)}).catch((()=>{}))
132
+ try{l=await r(e,n)}catch(e){throw fetch(`${a}/api/commands/end`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:o.id,exitCode:1,timedOut:!1,finishedAt:(new Date).toISOString()}),signal:AbortSignal.timeout(2e3)}).catch((()=>{})),e}return fetch(`${a}/api/commands/end`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:o.id,exitCode:l.exitCode,timedOut:l.timedOut,finishedAt:(new Date).toISOString()}),signal:AbortSignal.timeout(2e3)}).catch((()=>{})),l}
133
+ const n=t(35317)
134
+ exports.RUN_PARSE_FAILED_EXIT=125,exports.RUN_FROM_ENV=["c=$ALCHEMY_RUN_CMD; unset ALCHEMY_RUN_CMD",`if (set -o pipefail) 2>/dev/null; then set -o pipefail; sh -n -c "$c" || exit ${exports.RUN_PARSE_FAILED_EXIT}; eval "$c"`,`elif command -v bash >/dev/null 2>&1; then ALCHEMY_RUN_CMD=$c; export ALCHEMY_RUN_CMD; exec bash -o pipefail -c 'c=$ALCHEMY_RUN_CMD; unset ALCHEMY_RUN_CMD; bash -n -c "$c" || exit ${exports.RUN_PARSE_FAILED_EXIT}; eval "$c"'`,`else sh -n -c "$c" || exit ${exports.RUN_PARSE_FAILED_EXIT}; eval "$c"; fi`].join("\n"),exports.RUN_ENV_VAR="ALCHEMY_RUN_CMD"},53157:(e,exports)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.hardenedCreateArgs=function(e){return["--network",e.network,"--user",e.user,"--cap-drop","ALL",...(e.capAdds??[]).flatMap((e=>["--cap-add",e])),...Object.entries(e.sysctls??{}).flatMap((([e,t])=>["--sysctl",`${e}=${t}`])),"--security-opt","no-new-privileges","--read-only","--tmpfs","/tmp:rw,nosuid,nodev,exec,size=256m",...(e.extraTmpfs??[]).flatMap((e=>["--tmpfs",e])),"--ipc","none","--tmpfs",`/dev/shm:rw,nosuid,nodev,size=${e.shmSizeMb??64}m`,"--memory",e.memory,"--memory-swap",e.memory,"--cpus",String(e.cpus),"--pids-limit",String(e.pidsLimit),"-e","HOME=/tmp"]}},64264:(e,exports,t)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.SCRATCH_VOLUME_ARGS=void 0,exports.scratchTmpfsArg=function(e){return`/scratch:rw,nosuid,nodev,exec,size=${e}m`},exports.claimScratch=async function(e,t,n){const o=await(0,r.docker)(["run","--rm","--network","none","--user","0:0","--volumes-from",e,"--entrypoint","chown",t,n,"/scratch"],r.DOCKER_OP_TIMEOUT_MS)
135
+ return 0===o.exit?null:o.spawnError??((o.stderr||"").trim()||`chown exited ${o.exit}`)}
136
+ const r=t(6175)
137
+ exports.SCRATCH_VOLUME_ARGS=["--mount","type=volume,dst=/scratch"]},64936:(e,exports,t)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.ContainerRunner=void 0
138
+ const r=t(6175),n=t(53157),o=t(16603),s=t(64264),a=t(4703)
139
+ exports.ContainerRunner=class{constructor(e={}){this.image=e.image??"node:20-alpine",this.stepTimeoutMs=e.stepTimeoutMs??12e4,this.network=e.network??"none",this.resources=e.resources??{}}async run(e){if(!e.worktreePath)return{steps:[],ok:!1,error:"worktreePath is required"}
140
+ const t=e.image??this.image,n={}
141
+ let i=Date.now()
142
+ const c=e=>{const t=Date.now()
143
+ n[e]=(n[e]??0)+(t-i),i=t},l=await(0,r.ensureImage)(t)
144
+ if(c("image"),l)return{steps:[],ok:!1,error:l}
145
+ let u=await(0,r.docker)(this.createArgs(e,t,!0),r.DOCKER_OP_TIMEOUT_MS)
146
+ if(0!==u.exit)return{steps:[],ok:!1,error:u.spawnError??`docker create failed: ${(u.stderr||String(u.exit)).trim()}`}
147
+ let d=u.stdout.trim()
148
+ if(c("create"),await(0,s.claimScratch)(d,t,"1000:1000")){if(await(0,r.docker)(["rm","-f","-v",d],r.DOCKER_OP_TIMEOUT_MS),u=await(0,r.docker)(this.createArgs(e,t,!1),r.DOCKER_OP_TIMEOUT_MS),0!==u.exit)return{steps:[],ok:!1,error:u.spawnError??`docker create failed: ${(u.stderr||String(u.exit)).trim()}`}
149
+ d=u.stdout.trim()}c("scratch")
150
+ try{const t=await(0,r.docker)(["start",d],r.DOCKER_OP_TIMEOUT_MS)
151
+ if(c("start"),0!==t.exit)return{steps:[],ok:!1,error:`docker start failed: ${(t.stderr||String(t.exit)).trim()}`}
152
+ const s=[]
153
+ let i=await(0,a.readOomKills)(d)??0
154
+ for(const t of e.steps){const n=Date.now(),c=await(0,r.docker)(["exec","-e",`${o.RUN_ENV_VAR}=${(0,o.withShellInit)(e.shellInit,t.run)}`,d,"/bin/sh","-c",o.RUN_FROM_ENV],t.timeoutMs??this.stepTimeoutMs),l=Date.now()-n,u=await(0,a.readOomKills)(d),p=null!=u?Math.max(0,u-i):0
155
+ null!=u&&(i=u)
156
+ const f=p>0?`${c.stderr}${c.stderr&&!c.stderr.endsWith("\n")?"\n":""}${(0,a.oomNote)(p,this.resources.memory??"1g")}\n`:c.stderr
157
+ s.push({run:t.run,exit:c.exit,stdout:c.stdout,stderr:f,ms:l,timedOut:c.timedOut})}return c("commands"),{steps:s,ok:s.every((e=>0===e.exit)),phaseMs:n}}finally{const e=Date.now()
158
+ await(0,r.docker)(["rm","-f","-v",d],r.DOCKER_OP_TIMEOUT_MS),n.remove=Date.now()-e}}createArgs(e,t,r){const o=Object.entries(e.env??{}).flatMap((([e,t])=>["-e",`${e}=${t}`])),a=e.depsVolume?["-v",`${e.depsVolume}:/work/node_modules`]:[],i=(e.mounts??[]).flatMap((e=>["-v",`${e.volume}:${e.target}`])),c=(e.readOnlyBinds??[]).flatMap((e=>["-v",`${e.host}:${e.target}:ro`]))
159
+ return["create","--label","alchemy.sandbox=rung1",...(0,n.hardenedCreateArgs)({network:this.network,user:"1000:1000",...r?{}:{extraTmpfs:[(0,s.scratchTmpfsArg)(512)]},shmSizeMb:this.resources.shmSizeMb,memory:this.resources.memory??"1g",cpus:this.resources.cpus??2,pidsLimit:this.resources.pidsLimit??512}),...r?s.SCRATCH_VOLUME_ARGS:[],...o,"-v",`${e.worktreePath}:/work:rw`,...a,...i,...c,"-w","/work",t,"tail","-f","/dev/null"]}}},69968:function(e,exports,t){function r(e){const t=m.get(e.image)
160
+ if(t)return t.work
161
+ const r=(async()=>{const t=await(0,u.docker)(["image","inspect","--format",`{{ index .Config.Labels "${p}" }}`,e.image],u.DOCKER_OP_TIMEOUT_MS)
162
+ if(t.spawnError)return t.spawnError
163
+ if(0===t.exit&&t.stdout.trim()===e.recipeHash)return
164
+ const r=i.mkdtempSync(l.join(c.tmpdir(),"alchemylab-image-"))
165
+ try{i.writeFileSync(l.join(r,"Dockerfile"),e.dockerfile)
166
+ const t=await(0,u.docker)(["build","--label",`${p}=${e.recipeHash}`,"-t",e.image,r],exports.BUILD_TIMEOUT_MS)
167
+ if(0!==t.exit){const r=(t.stderr||t.stdout||"").trim().split("\n").slice(-12).join("\n")
168
+ return`building ${e.image} failed${t.timedOut?" (timed out)":""}: ${r}`}return}finally{i.rmSync(r,{recursive:!0,force:!0})}})()
169
+ return m.set(e.image,{work:r,since:Date.now()}),r.then((t=>{t?h.set(e.image,{error:t,at:Date.now()}):h.delete(e.image)}),(t=>{h.set(e.image,{error:t instanceof Error?t.message:String(t),at:Date.now()})})).finally((()=>m.delete(e.image))),r}var n,o=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r)
170
+ var o=Object.getOwnPropertyDescriptor(t,r)
171
+ o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),s=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||(n=function(e){return n=Object.getOwnPropertyNames||function(e){var t=[]
172
+ for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[t.length]=r)
173
+ return t},n(e)},function(e){if(e&&e.__esModule)return e
174
+ var t={}
175
+ if(null!=e)for(var r=n(e),a=0;a<r.length;a++)"default"!==r[a]&&o(t,e,r[a])
176
+ return s(t,e),t})
177
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.BUILD_TIMEOUT_MS=void 0,exports.localRecipeFor=function(e){return f.find((t=>t.image===e))},exports.ensureLocalImage=r,exports.localImageState=async function(e){const t=m.get(e.image)
178
+ if(t)return{state:"building",since:t.since}
179
+ const r=await(0,u.docker)(["image","inspect","--format",`{{ index .Config.Labels "${p}" }}`,e.image],u.DOCKER_OP_TIMEOUT_MS)
180
+ if(r.spawnError)return{state:"no-docker",error:"Docker is not installed on this machine (no docker command)"}
181
+ if(0===r.exit&&r.stdout.trim()===e.recipeHash)return{state:"ready"}
182
+ if(/cannot connect to the docker daemon|is the docker daemon running|error during connect/i.test(r.stderr))return{state:"no-docker",error:"Docker is not running on this machine"}
183
+ const n=h.get(e.image)
184
+ return n?{state:"failed",...n}:{state:"missing"}},exports.startLocalImageBuild=function(e){return h.delete(e.image),r(e).catch((()=>{})),{since:m.get(e.image)?.since??Date.now()}}
185
+ const i=a(t(73024)),c=a(t(48161)),l=a(t(76760)),u=t(6175),d=t(7740),p="dev.alchemylab.recipe"
186
+ exports.BUILD_TIMEOUT_MS=15e5
187
+ const f=[{image:d.OFFICE_BOX_IMAGE,dockerfile:d.OFFICE_BOX_DOCKERFILE,recipeHash:d.OFFICE_BOX_RECIPE_HASH}],m=new Map,h=new Map},70610:(e,exports)=>{Object.defineProperty(exports,"__esModule",{value:!0}),exports.DOCUMENT_FORMATS=void 0,exports.formatOfKind=function(e){return exports.DOCUMENT_FORMATS.find((t=>t.kind===e))},exports.formatFor=function(e){const r=/\.([a-z0-9]+)$/i.exec(e)
188
+ return r?t.get(r[1].toLowerCase()):void 0},exports.DOCUMENT_FORMATS=[{kind:"pdf",extensions:["pdf"],mime:"application/pdf",modelInput:"pdf",text:!0},{kind:"docx",extensions:["docx"],mime:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",text:!0,render:"office"},{kind:"xlsx",extensions:["xlsx","xlsm"],mime:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",text:!0,render:"office"},{kind:"pptx",extensions:["pptx"],mime:"application/vnd.openxmlformats-officedocument.presentationml.presentation",text:!0,render:"office"},{kind:"odt",extensions:["odt"],mime:"application/vnd.oasis.opendocument.text",text:!0,render:"office"},{kind:"ods",extensions:["ods"],mime:"application/vnd.oasis.opendocument.spreadsheet",text:!0,render:"office"},{kind:"odp",extensions:["odp"],mime:"application/vnd.oasis.opendocument.presentation",text:!0,render:"office"},{kind:"doc",extensions:["doc"],mime:"application/msword",text:!0,textVia:"docx",render:"office"},{kind:"rtf",extensions:["rtf"],mime:"application/rtf",text:!0,render:"office"},{kind:"xls",extensions:["xls"],mime:"application/vnd.ms-excel",text:!0,textVia:"xlsx",render:"office"},{kind:"ppt",extensions:["ppt"],mime:"application/vnd.ms-powerpoint",text:!0,textVia:"pptx",render:"office"}]
189
+ const t=new Map(exports.DOCUMENT_FORMATS.flatMap((e=>e.extensions.map((t=>[t,e])))))},70857:module=>{module.exports=require("os")},73024:module=>{module.exports=require("node:fs")},76760:module=>{module.exports=require("node:path")},76982:module=>{module.exports=require("crypto")},79896:module=>{module.exports=require("fs")},88194:module=>{module.exports=require("jszip")},88891:module=>{module.exports=require("unpdf")},91943:module=>{module.exports=require("fs/promises")},98335:(e,exports,t)=>{async function r(e){return(await Promise.resolve().then(t.t.bind(t,88194,23))).default.loadAsync(e)}async function n(e,t){const r=e.file(t)
190
+ return r?r.async("string"):void 0}function o(e){return e.replace(/&(#x[0-9a-f]+|#\d+|amp|lt|gt|quot|apos);/gi,((e,t)=>{const r=t.toLowerCase()
191
+ if("amp"===r)return"&"
192
+ if("lt"===r)return"<"
193
+ if("gt"===r)return">"
194
+ if("quot"===r)return'"'
195
+ if("apos"===r)return"'"
196
+ const n=r.startsWith("#x")?parseInt(r.slice(2),16):parseInt(r.slice(1),10)
197
+ return Number.isFinite(n)?String.fromCodePoint(n):e}))}function s(e,t){const r=new RegExp(`(?:^|\\s)${t.replace(":","\\:")}="([^"]*)"`).exec(e)
198
+ return r?o(r[1]):void 0}function a(e,t){const r=new Map
199
+ if(!e)return r
200
+ for(const n of e.matchAll(/<Relationship\b([^>]*)\/?>/g)){const e=s(n[1],"Id"),o=s(n[1],"Target")
201
+ e&&o&&r.set(e,o.startsWith("/")?o.slice(1):i(`${t}/${o}`))}return r}function i(e){const t=[]
202
+ for(const r of e.split("/"))r&&"."!==r&&(".."===r?t.pop():t.push(r))
203
+ return t.join("/")}function c(e){const t=e.slice(0,e.lastIndexOf("/"))
204
+ return{path:`${t}/_rels/${e.slice(e.lastIndexOf("/")+1)}.rels`,dir:t}}function l(e,t){const r=(e||t||"").replace(/\s+/g," ").trim().slice(0,200)
205
+ return r?`[image: ${r}]`:"[image]"}async function u(e,t){const r=new Map
206
+ for(const[o,s]of t){if(!/charts\/chart[^/]*\.xml$/.test(s))continue
207
+ const t=await n(e,s)
208
+ t&&r.set(o,d(t))}return r}function d(e){const t=p(e),r=[...new Set([...t.matchAll(/<(\w+Chart)\b/g)].map((e=>A[e[1]])).filter(Boolean))]
209
+ "bar"===r[0]&&/<barDir val="col"/.test(t)&&(r[0]="column")
210
+ const n=t.split("<plotArea")[0],s=/<title>([\s\S]*?)<\/title>/.exec(n)?.[1],a=s?[...s.matchAll(/<t>([\s\S]*?)<\/t>/g)].map((e=>o(e[1]))).join("").trim():"",i=[...t.matchAll(/<ser>([\s\S]*?)<\/ser>/g)].map((e=>{const t=e[1],r=/<tx>([\s\S]*?)<\/tx>/.exec(t)?.[1]??"",n=o(/<v>([\s\S]*?)<\/v>/.exec(r)?.[1]??/<f>([\s\S]*?)<\/f>/.exec(r)?.[1]??"").trim(),s=e=>{if(!e)return""
211
+ const t=/<f>([\s\S]*?)<\/f>/.exec(e)?.[1],r=[...e.matchAll(/<v>([\s\S]*?)<\/v>/g)].map((e=>o(e[1])))
212
+ return t&&/!/.test(t)?o(t):r.length?`${r.slice(0,8).join(", ")}${r.length>8?`, ... (${r.length})`:""}`:""},a=s(/<(?:val|yVal)>([\s\S]*?)<\/(?:val|yVal)>/.exec(t)?.[1]),i=s(/<(?:cat|xVal)>([\s\S]*?)<\/(?:cat|xVal)>/.exec(t)?.[1])
213
+ return`${n||"series"}${a?`: ${a}`:""}${i?` by ${i}`:""}`}))
214
+ return`[chart: ${r.join("/")||"chart"}${a?` "${a}"`:""}${i.length?`; ${i.join("; ")}`:""}]`}function p(e){return e.replace(/<(\/?)[A-Za-z][\w.-]*:/g,"<$1")}function f(e,t=new Map){const r=[],n=[]
215
+ let a=null,i="",c=!1,u=!1,d=null,p=0
216
+ const f=/<(\/?)(w:p|w:tbl|w:tr|w:tc|w:t|w:tab|w:br|w:cr|w:pStyle|w:numPr|w:drawing|wp:docPr|c:chart|v:imagedata|mc:Fallback)\b([^>]*?)(\/?)>|([^<]+)/g
217
+ for(const m of e.matchAll(f)){const[,e,f,h,b,w]=m
218
+ if("mc:Fallback"===f){b||(p+=e?-1:1)
219
+ continue}if(p>0)continue
220
+ if(void 0!==w){u&&a&&a.push(o(w))
221
+ continue}const g=n[n.length-1]
222
+ if(e)switch(f){case"w:drawing":{if(!d)break
223
+ const e=d.chart??l(d.descr,d.name)
224
+ d=null,a?a.push(` ${e} `):r.push(e)
225
+ break}case"w:t":u=!1
226
+ break
227
+ case"w:p":{const e=(a??[]).join("").trim()
228
+ if(a=null,g?.cell){e&&g.cell.push(e)
229
+ break}if(!e){r.length&&""!==r[r.length-1]&&r.push("")
230
+ break}const t=/^(?:heading|kop|\xfcberschrift|titre)\s*(\d)/i.exec(i)||(/^title$/i.test(i)?["","1"]:null)
231
+ r.push(t?`${"#".repeat(Math.min(6,Number(t[1])))} ${e}`:c?`- ${e}`:e)
232
+ break}case"w:tc":g?.cell&&g.row&&(g.row.push(g.cell.join(" ")),g.cell=null)
233
+ break
234
+ case"w:tr":g?.row&&(g.rows.push(g.row),g.row=null)
235
+ break
236
+ case"w:tbl":{const e=n.pop()
237
+ if(!e)break
238
+ const t=e.rows.map((e=>`| ${e.map((e=>e.replace(/\|/g,"\\|"))).join(" | ")} |`)),o=n[n.length-1]
239
+ o?.cell?o.cell.push(t.join(" ")):r.push(...t,"")
240
+ break}}else switch(f){case"w:drawing":b||(d={})
241
+ break
242
+ case"wp:docPr":d&&(d.name=s(h,"name"),d.descr=s(h,"descr"))
243
+ break
244
+ case"c:chart":d&&(d.chart=t.get(s(h,"r:id")??"")??"[chart]")
245
+ break
246
+ case"v:imagedata":{const e=l(s(h,"o:title"),void 0)
247
+ a?a.push(e):r.push(e)
248
+ break}case"w:p":a=[],i="",c=!1
249
+ break
250
+ case"w:pStyle":i=s(h,"w:val")??""
251
+ break
252
+ case"w:numPr":c=!0
253
+ break
254
+ case"w:t":b||(u=!0)
255
+ break
256
+ case"w:tab":a?.push("\t")
257
+ break
258
+ case"w:br":case"w:cr":a?.push("\n")
259
+ break
260
+ case"w:tbl":n.push({rows:[],row:null,cell:null})
261
+ break
262
+ case"w:tr":g&&(g.row=[])
263
+ break
264
+ case"w:tc":g&&(g.cell=[])}}return r.join("\n").replace(/\n{3,}/g,"\n\n").trim()}async function m(e,t){const r=[],o=c(t)
265
+ for(const t of a(await n(e,o.path),o.dir).values()){if(!/drawings\/drawing[^/]*\.xml$/.test(t))continue
266
+ const o=await n(e,t)
267
+ if(!o)continue
268
+ const i=p(o),d=c(t),f=await u(e,a(await n(e,d.path),d.dir))
269
+ for(const e of i.matchAll(/<(?:twoCellAnchor|oneCellAnchor|absoluteAnchor)\b[\s\S]*?<\/(?:twoCellAnchor|oneCellAnchor|absoluteAnchor)>/g)){const t=e[0],n=/<chart\b[^>]*r:id="([^"]+)"/.exec(t)?.[1],o=/<from>[\s\S]*?<col>(\d+)<\/col>[\s\S]*?<row>(\d+)<\/row>/.exec(t),a=o?` at ${w(Number(o[1]))}${Number(o[2])+1}`:""
270
+ if(n){r.push(`${(f.get(n)??"[chart]").replace(/\]$/,`${a}]`)}`)
271
+ continue}const i=/<pic>[\s\S]*?<cNvPr\b([^>]*)\/?>/.exec(t)
272
+ i&&r.push(l(s(i[1],"descr"),s(i[1],"name")).replace(/\]$/,`${a}]`))}}return r}function h(e){if(!e)return[]
273
+ const t=[]
274
+ for(const r of e.matchAll(/<si\b[^>]*>([\s\S]*?)<\/si>/g)){const e=[]
275
+ for(const t of r[1].matchAll(/<t\b[^>]*>([\s\S]*?)<\/t>/g))e.push(o(t[1]))
276
+ t.push(e.join(""))}return t}function b(e){const t=/^[A-Z]+/i.exec(e)?.[0].toUpperCase()??"A"
277
+ let r=0
278
+ for(const e of t)r=26*r+(e.charCodeAt(0)-64)
279
+ return r-1}function w(e){let t=""
280
+ for(let r=e+1;r>0;r=Math.floor((r-1)/26))t=String.fromCharCode(65+(r-1)%26)+t
281
+ return t}function g(e,t){const r=[]
282
+ let n=0,a=!1
283
+ for(const i of e.matchAll(/<row\b([^>]*?)(?:\/>|>([\s\S]*?)<\/row>)/g)){if(r.length>=T){a=!0
284
+ break}const e=i[2]??"",c=[]
285
+ let l=0
286
+ for(const r of e.matchAll(/<c\b([^>]*?)(?:\/>|>([\s\S]*?)<\/c>)/g)){const e=s(r[1],"r"),n=e?b(e):l
287
+ l=n+1
288
+ const a=s(r[1],"t"),i=r[2]??"",u=/<f\b[^>]*>([\s\S]*?)<\/f>/.exec(i)?.[1]
289
+ let d=""
290
+ if("inlineStr"===a)d=[...i.matchAll(/<t\b[^>]*>([\s\S]*?)<\/t>/g)].map((e=>o(e[1]))).join("")
291
+ else{const e=/<v\b[^>]*>([\s\S]*?)<\/v>/.exec(i)?.[1]
292
+ void 0!==e&&(d="s"===a?t[Number(e)]??"":"b"===a?"1"===e?"TRUE":"FALSE":o(e))}u&&(d=`${d}${""===d?"":" "}(=${o(u)})`),""!==d&&(c[n]=d.replace(/[\t\r\n]+/g," "))}c.length&&(n=Math.max(n,c.length),r.push({n:Number(s(i[1],"r"))||r.length+1,cells:c}))}return{text:x(r,n),truncated:a}}function x(e,t){return e.length?[["row",...Array.from({length:t},((e,t)=>w(t)))].join("\t"),...e.map((e=>[String(e.n),...Array.from({length:t},((t,r)=>e.cells[r]??""))].join("\t").replace(/\t+$/,"")))].join("\n"):""}function _(e,t){const r=[],n=p(e)
293
+ for(const e of n.matchAll(/<pic\b[^>]*>[\s\S]*?<\/pic>|<graphicFrame\b[^>]*>[\s\S]*?<\/graphicFrame>/g)){const n=e[0]
294
+ if(/^<pic\b/.test(n)){const e=/<cNvPr\b([^>]*)\/?>/.exec(n)?.[1]??""
295
+ r.push(l(s(e,"descr"),s(e,"name")))
296
+ continue}const o=/<chart\b[^>]*r:id="([^"]+)"/.exec(n)?.[1]
297
+ o&&r.push(t.get(o)??"[chart]")}return r}function E(e){const t=[]
298
+ for(const r of e.matchAll(/<a:p\b[^>]*>([\s\S]*?)<\/a:p>/g)){const e=[]
299
+ for(const t of r[1].matchAll(/<a:t\b[^>]*>([\s\S]*?)<\/a:t>|<a:br\b[^>]*\/>/g))e.push(void 0!==t[1]?o(t[1]):"\n")
300
+ const n=e.join("").trim()
301
+ n&&t.push(n)}return t}async function k(e,t,o){const s=await r(e),a=(await n(s,"mimetype"))?.trim(),i=await n(s,"content.xml")
302
+ if(!i||a&&a!==t)throw new Error(`not an OpenDocument ${o} (${i?`its mimetype is ${a}`:"content.xml is missing"})`)
303
+ const c=new Map
304
+ for(const e of Object.keys(s.files)){const t=/^(.+)\/content\.xml$/.exec(e)?.[1]
305
+ if(!t)continue
306
+ const r=await n(s,e)
307
+ r&&/<chart:chart\b/.test(r)&&c.set(t,O(r))}return{xml:i.split(/<office:body\b/)[1]??i,objects:c}}function v(e,t){return e.object?t.get((e.href??"").replace(/^\.\//,""))??`[embedded object: ${(e.desc||e.title||e.name||"unnamed").trim()}]`:e.image?l(e.desc||e.title,e.name):null}function O(e){const t=/chart:class="chart:(\w+)"/.exec(e)?.[1]??"chart",r=[...(/<chart:title\b[^>]*>([\s\S]*?)<\/chart:title>/.exec(e)?.[1]??"").matchAll(/<text:p\b[^>]*>([\s\S]*?)<\/text:p>/g)].map((e=>o(e[1].replace(/<[^>]+>/g,"")))).join(" ").trim(),n=[],a=/<table:table\b[^>]*table:name="local-table"[^>]*>([\s\S]*?)<\/table:table>/.exec(e)?.[1]
308
+ if(a)for(const e of a.matchAll(/<table:table-row\b[^>]*>([\s\S]*?)<\/table:table-row>/g)){const t=[]
309
+ for(const r of e[1].matchAll(/<table:(?:table-cell|covered-table-cell)\b([^>]*?)(?:\/>|>([\s\S]*?)<\/table:(?:table-cell|covered-table-cell)>)/g)){const e=o([...(r[2]??"").matchAll(/<text:p\b[^>]*>([\s\S]*?)<\/text:p>/g)].map((e=>e[1].replace(/<[^>]+>/g,""))).join(" ")).trim()||s(r[1],"office:value")||"",n=Math.min(Math.max(1,Number(s(r[1],"table:number-columns-repeated")??1)||1),P)
310
+ for(let r=0;r<n;r++)t.push(e)}n.push(t)}const i=e=>{const t=/^\$?([A-Z]+)\$?(\d+)$/.exec(e)
311
+ return t?{col:b(t[1]),row:Number(t[2])-1}:null},c=e=>{if(!e)return""
312
+ const t=e.split(":").map((e=>({table:e.slice(0,e.lastIndexOf(".")).replace(/^'(.*)'$/,"$1"),ref:e.slice(e.lastIndexOf(".")+1)})))
313
+ if("local-table"===t[0].table||""===t[0].table&&n.length){const e=i(t[0].ref),r=i(t[t.length-1].ref)??e
314
+ if(!e||!r)return""
315
+ const o=[]
316
+ for(let t=e.row;t<=r.row;t++)for(let s=e.col;s<=r.col;s++)o.push(n[t]?.[s]??"")
317
+ return`${o.slice(0,8).join(", ")}${o.length>8?`, ... (${o.length})`:""}`}const r=t.map((e=>e.ref.replace(/\$/g,"")))
318
+ return`${t[0].table?`${t[0].table}!`:""}${2===r.length&&r[0]===r[1]?r[0]:r.join(":")}`},l=c(/<chart:categories\b[^>]*table:cell-range-address="([^"]+)"/.exec(e)?.[1]),u=[...e.matchAll(/<chart:series\b([^>]*)>/g)].map((e=>{const t=c(s(e[1],"chart:values-cell-range-address"))
319
+ return`${c(s(e[1],"chart:label-cell-address"))||"series"}${t?`: ${t}`:""}${l?` by ${l}`:""}`}))
320
+ return`[chart: ${D[t]??t}${r?` "${r}"`:""}${u.length?`; ${u.join("; ")}`:""}]`}function $(e){return e.replace(/^[a-z]+:/i,"").replace(/^=/,"").replace(/\[([^\]]*)\]/g,((e,t)=>t.split(":").map((e=>{const t=e.lastIndexOf("."),r=e.slice(0,t).replace(/^\$/,"").replace(/^'(.*)'$/,"$1"),n=e.slice(t+1).replace(/\$/g,"")
321
+ return r?`${r}!${n}`:n})).join(":")))}function y(e,t,r){switch(e){case"text:tab":return r.push("\t"),!0
322
+ case"text:line-break":return r.push("\n"),!0
323
+ case"text:s":return r.push(" ".repeat(Math.min(100,Number(s(t,"text:c")??1)||1))),!0
324
+ default:return!1}}function M(e,t=new Map){const r=[],n=[],a=new L
325
+ let i=0,c=0,l=null,u=null
326
+ for(const d of e.matchAll(j)){const[,e,p,f,m,h]=d
327
+ if(void 0!==h){if(c)continue
328
+ u&&l?l[u]=(l[u]??"")+o(h):a.push(o(h))
329
+ continue}if(N.has(p)){m||(c+=e?-1:1)
330
+ continue}if(c)continue
331
+ const b=n[n.length-1]
332
+ if(e)switch(p){case"svg:title":case"svg:desc":u=null
333
+ break
334
+ case"draw:frame":{const e=l?v(l,t):null
335
+ if(l=null,!e)break
336
+ a.current?a.pushSpaced(e):b?.cell?b.cell.push(e):r.push(e)
337
+ break}case"text:p":case"text:h":{const e=a.close()
338
+ if(!e)break
339
+ if(b?.cell){e.plain&&b.cell.push(e.plain)
340
+ break}if(!e.line){r.length&&""!==r[r.length-1]&&r.push("")
341
+ break}r.push(e.line)
342
+ break}case"text:list-item":i=Math.max(0,i-1)
343
+ break
344
+ case"table:table-cell":case"table:covered-table-cell":b?.cell&&b.row&&(b.row.push(b.cell.join(" ")),b.cell=null)
345
+ break
346
+ case"table:table-row":b?.row&&(b.rows.push(b.row),b.row=null)
347
+ break
348
+ case"table:table":{const e=n.pop()
349
+ if(!e)break
350
+ const t=e.rows.map((e=>`| ${e.map((e=>e.replace(/\|/g,"\\|"))).join(" | ")} |`)),o=n[n.length-1]
351
+ o?.cell?o.cell.push(t.join(" ")):r.push(...t,"")
352
+ break}}else{if(y(p,f,a))continue
353
+ switch(p){case"text:p":case"text:h":m?!b?.cell&&r.length&&""!==r[r.length-1]&&r.push(""):a.open("text:h"===p?Number(s(f,"text:outline-level")??1)||1:0,i>0)
354
+ break
355
+ case"text:list-item":m||i++
356
+ break
357
+ case"table:table":m||n.push({rows:[],row:null,cell:null})
358
+ break
359
+ case"table:table-row":b&&!m&&(b.row=[])
360
+ break
361
+ case"table:table-cell":case"table:covered-table-cell":b&&(m?b.row?.push(""):b.cell=[])
362
+ break
363
+ case"draw:frame":m||(l={name:s(f,"draw:name")})
364
+ break
365
+ case"draw:image":l&&(l.image=!0)
366
+ break
367
+ case"draw:object":case"draw:object-ole":l&&(l.object=!0,l.href=s(f,"xlink:href"))
368
+ break
369
+ case"svg:title":case"svg:desc":!m&&l&&(u="svg:title"===p?"title":"desc")}}}return r.join("\n").replace(/\n{3,}/g,"\n\n").trim()}function S(e,t=new Map){const r=[]
370
+ let n=!1,a=null,i=null,c=null,l=null,u=null,d=0,p=!1
371
+ for(const f of e.matchAll(j)){const[,e,m,h,b,w]=f
372
+ if(void 0!==w){if(d)continue
373
+ u&&l?l[u]=(l[u]??"")+o(w):c&&p&&c.parts.push(o(w))
374
+ continue}if(N.has(m)){b||(d+=e?-1:1)
375
+ continue}if(d)continue
376
+ const g=()=>{if(!c||!i)return
377
+ let e=c.parts.join("").trim()||c.value||""
378
+ if(c.formula&&(e=`${e}${e?" ":""}(=${$(c.formula)})`),e)for(let t=0;t<Math.min(c.repeat,P);t++)i.cells[i.col+t]=e.replace(/[\t\r\n]+/g," ")
379
+ i.col+=c.repeat,c=null}
380
+ if(e)switch(m){case"svg:title":case"svg:desc":u=null
381
+ break
382
+ case"draw:frame":{const e=l?v(l,t):null
383
+ l=null,e&&a&&a.figures.push(e)
384
+ break}case"text:p":p=!1
385
+ break
386
+ case"table:table-cell":case"table:covered-table-cell":g()
387
+ break
388
+ case"table:table-row":if(!i||!a)break
389
+ if(i.cells.some((e=>void 0!==e))){for(let e=0;e<Math.min(i.repeat,F);e++){if(a.rows.length>=T){n=!0
390
+ break}a.rows.push({n:a.rowIndex+e+1,cells:i.cells})}a.width=Math.max(a.width,i.cells.length)}a.rowIndex+=i.repeat,i=null
391
+ break
392
+ case"table:table":if(!a)break
393
+ r.push({name:a.name,text:x(a.rows,a.width),figures:a.figures}),a=null}else switch(m){case"table:table":b||(a={name:s(h,"table:name")??`Sheet ${r.length+1}`,rows:[],width:0,figures:[],rowIndex:0})
394
+ break
395
+ case"table:table-row":{const e=Math.max(1,Number(s(h,"table:number-rows-repeated")??1)||1)
396
+ b?a&&(a.rowIndex+=e):i={cells:[],col:0,repeat:e}
397
+ break}case"table:table-cell":case"table:covered-table-cell":if(!i)break
398
+ c={parts:[],repeat:Math.max(1,Number(s(h,"table:number-columns-repeated")??1)||1),value:s(h,"office:value")??s(h,"office:date-value")??s(h,"office:time-value")??s(h,"office:boolean-value")??s(h,"office:string-value"),formula:s(h,"table:formula")},b&&g()
399
+ break
400
+ case"text:p":c&&!b&&(c.parts.length&&c.parts.push(" "),p=!0)
401
+ break
402
+ case"text:s":case"text:tab":case"text:line-break":c&&p&&c.parts.push(" ")
403
+ break
404
+ case"draw:frame":b||(l={name:s(h,"draw:name")})
405
+ break
406
+ case"draw:image":l&&(l.image=!0)
407
+ break
408
+ case"draw:object":case"draw:object-ole":l&&(l.object=!0,l.href=s(h,"xlink:href"))
409
+ break
410
+ case"svg:title":case"svg:desc":!b&&l&&(u="svg:title"===m?"title":"desc")}}return{sheets:r,truncated:n}}function I(e,t=new Map){const r=[]
411
+ let n=null
412
+ const a=new L
413
+ let i=0,c=0,l=null,u=null
414
+ for(const d of e.matchAll(j)){const[,e,p,f,m,h]=d
415
+ if(void 0===h){if(N.has(p))m||(c+=e?-1:1)
416
+ else if(!c)if(e)switch(p){case"svg:title":case"svg:desc":u=null
417
+ break
418
+ case"text:p":case"text:h":{const e=a.close()
419
+ !e?.plain||!n||i&&/^<number>$/.test(e.plain)||(i?n.notes:n.lines).push(e.plain)
420
+ break}case"draw:frame":{const e=l?v(l,t):null
421
+ l=null,e&&n&&n.lines.push(e)
422
+ break}case"presentation:notes":i=Math.max(0,i-1)
423
+ break
424
+ case"draw:page":{if(!n)break
425
+ let e=`## Slide ${r.length+1}\n${n.lines.join("\n")||"(no text)"}`
426
+ n.notes.length&&(e+=`\n\nNotes:\n${n.notes.join("\n")}`),r.push(e),n=null
427
+ break}}else{if(y(p,f,a))continue
428
+ switch(p){case"draw:page":m||(n={lines:[],notes:[]})
429
+ break
430
+ case"presentation:notes":m||i++
431
+ break
432
+ case"text:p":case"text:h":m||a.open(0,!1)
433
+ break
434
+ case"draw:frame":m||i||(l={name:s(f,"draw:name")})
435
+ break
436
+ case"draw:image":l&&(l.image=!0)
437
+ break
438
+ case"draw:object":case"draw:object-ole":l&&(l.object=!0,l.href=s(f,"xlink:href"))
439
+ break
440
+ case"svg:title":case"svg:desc":!m&&l&&(u="svg:title"===p?"title":"desc")}}}else{if(c)continue
441
+ u&&l?l[u]=(l[u]??"")+o(h):a.push(o(h))}}return r}Object.defineProperty(exports,"__esModule",{value:!0}),exports.MAX_DOCUMENT_BYTES=void 0,exports.documentKindFor=function(e){const t=(0,C.formatFor)(e)
442
+ return t?.text?t.kind:void 0},exports.extractDocumentText=async function e(o,i,c={}){if(o.byteLength>exports.MAX_DOCUMENT_BYTES)throw new Error(`file is ${(o.byteLength/1048576).toFixed(1)} MB; text extraction stops at ${exports.MAX_DOCUMENT_BYTES/1048576} MB`)
443
+ const l=(0,C.formatOfKind)(i).textVia
444
+ if(l){if(!c.convert)throw new Error(`.${i} files are read by converting them in the office box, which is not reachable from here`)
445
+ const t=await e(await c.convert(o,i,l),l)
446
+ return{...t,kind:i,note:`Converted from .${i} to .${l} in the office box first. ${t.note??""}`.trim()}}switch(i){case"pdf":return async function(e){const r=await Promise.resolve().then(t.t.bind(t,88891,23)),{getDocumentProxy:n,extractText:o}=r?.default??r,s=await n(new Uint8Array(e),{isEvalSupported:!1})
447
+ try{const{totalPages:e,text:t}=await o(s,{mergePages:!1}),r=Array.isArray(t)?t:[t],n=r.map(((t,r)=>`--- page ${r+1} of ${e} ---\n${String(t).trim()}`)).join("\n\n"),a=r.every((e=>!String(e).trim()))
448
+ return{kind:"pdf",text:n,units:e,note:a?"No text layer (probably a scan). Use view_asset with this path to look at the pages.":"Text only. For tables, figures or layout, use view_asset with this path and the page numbers."}}finally{await(s.loadingTask?.destroy?.().catch?.((()=>{})))}}(o)
449
+ case"docx":return async function(e){const t=await r(e),o=await n(t,"word/document.xml")
450
+ if(!o)throw new Error("not a Word document (word/document.xml is missing)")
451
+ return{kind:"docx",text:f(o,await u(t,a(await n(t,"word/_rels/document.xml.rels"),"word"))),note:"Text, headings, lists and tables; pictures show as [image: alt text] and charts as a one-line summary; formatting is dropped. To see the pages, view_asset this path."}}(o)
452
+ case"xlsx":return async function(e){const t=await r(e),o=await n(t,"xl/workbook.xml")
453
+ if(!o)throw new Error("not an Excel workbook (xl/workbook.xml is missing)")
454
+ const i=a(await n(t,"xl/_rels/workbook.xml.rels"),"xl"),c=h(await n(t,"xl/sharedStrings.xml")),l=[]
455
+ let u=!1,d=0
456
+ for(const e of o.matchAll(/<sheet\b([^>]*)\/?>/g)){const r=s(e[1],"name")??`Sheet ${d+1}`,o=s(e[1],"r:id"),a=o?i.get(o):void 0,p=a?await n(t,a):void 0
457
+ if(d++,!p){l.push(`## Sheet: ${r}\n(empty)`)
458
+ continue}const{text:f,truncated:h}=g(p,c)
459
+ u=u||h
460
+ const b=await m(t,a)
461
+ l.push(`## Sheet: ${r}\n${f||"(empty)"}${b.length?`\n\n${b.join("\n")}`:""}`)}return{kind:"xlsx",text:l.join("\n\n"),units:d,note:"Cell values as tab-separated rows (column letters in the header); a formula shows as its last computed value followed by (=formula). Charts and pictures are listed under their sheet. Dates show as numbers."+(u?` Sheets over ${T} rows are cut off.`:"")}}(o)
462
+ case"pptx":return async function(e){const t=await r(e),o=await n(t,"ppt/presentation.xml")
463
+ if(!o)throw new Error("not a PowerPoint deck (ppt/presentation.xml is missing)")
464
+ const i=a(await n(t,"ppt/_rels/presentation.xml.rels"),"ppt")
465
+ let c=[...o.matchAll(/<p:sldId\b([^>]*)\/?>/g)].map((e=>{const t=s(e[1],"r:id")
466
+ return t?i.get(t):void 0})).filter((e=>!!e))
467
+ c.length||(c=Object.keys(t.files).filter((e=>/^ppt\/slides\/slide\d+\.xml$/.test(e))).sort(((e,t)=>Number(/(\d+)\.xml$/.exec(e)[1])-Number(/(\d+)\.xml$/.exec(t)[1]))))
468
+ const l=[]
469
+ for(let e=0;e<c.length;e++){const r=c[e],o=await n(t,r),s=o?E(o):[],i=r.slice(0,r.lastIndexOf("/")),d=r.slice(r.lastIndexOf("/")+1),p=a(await n(t,`${i}/_rels/${d}.rels`),i)
470
+ o&&s.push(..._(o,await u(t,p)))
471
+ const f=[...p.values()].find((e=>/notesSlide\d*\.xml$/.test(e))),m=f?await n(t,f):void 0,h=m?E(m).filter((e=>!/^(\d+|<number>)$/.test(e))):[]
472
+ let b=`## Slide ${e+1}\n${s.join("\n")||"(no text)"}`
473
+ h.length&&(b+=`\n\nNotes:\n${h.join("\n")}`),l.push(b)}return{kind:"pptx",text:l.join("\n\n"),units:c.length,note:"Slide text and speaker notes; pictures show as [image: alt text] and charts as a one-line summary; layout is dropped. To see a slide, view_asset this path."}}(o)
474
+ case"odt":return async function(e){const{xml:t,objects:r}=await k(e,"application/vnd.oasis.opendocument.text","text document")
475
+ return{kind:"odt",text:M(t,r),note:"Text, headings, lists and tables; pictures show as [image: alt text] and charts as a one-line summary; notes, comments and formatting are dropped. To see the pages, view_asset this path."}}(o)
476
+ case"ods":return async function(e){const{xml:t,objects:r}=await k(e,"application/vnd.oasis.opendocument.spreadsheet","spreadsheet"),{sheets:n,truncated:o}=S(t,r)
477
+ return{kind:"ods",text:n.map((e=>`## Sheet: ${e.name}\n${e.text||"(empty)"}${e.figures.length?`\n\n${e.figures.join("\n")}`:""}`)).join("\n\n"),units:n.length,note:"Cell values as tab-separated rows (column letters in the header); a formula shows as its value followed by (=formula). Charts and pictures are listed under their sheet."+(o?` Sheets over ${T} rows are cut off.`:"")}}(o)
478
+ case"odp":return async function(e){const{xml:t,objects:r}=await k(e,"application/vnd.oasis.opendocument.presentation","presentation"),n=I(t,r)
479
+ return{kind:"odp",text:n.join("\n\n"),units:n.length,note:"Slide text and speaker notes; pictures show as [image: alt text] and charts as a one-line summary; layout is dropped. To see a slide, view_asset this path."}}(o)
480
+ case"rtf":return{kind:"rtf",text:(0,R.rtfToText)(o),note:"Text, paragraphs and table rows; styling, pictures and layout are dropped. To see the pages, view_asset this path."}
481
+ default:throw new Error(`no text form for .${i}`)}},exports.decodeXml=o,exports.figureMarker=l,exports.chartXmlSummary=d,exports.stripElementPrefixes=p,exports.docxXmlToText=f,exports.parseSharedStrings=h,exports.sheetXmlToText=g,exports.slideFigures=_,exports.drawingMlParagraphs=E,exports.odfChartSummary=O,exports.odfFormula=$,exports.odtXmlToText=M,exports.odsXmlToText=S,exports.odpXmlToText=I
482
+ const C=t(70610),R=t(50478)
483
+ exports.MAX_DOCUMENT_BYTES=52428800
484
+ const T=5e3,A={barChart:"bar",bar3DChart:"bar",lineChart:"line",line3DChart:"line",pieChart:"pie",pie3DChart:"pie",ofPieChart:"pie",doughnutChart:"doughnut",areaChart:"area",area3DChart:"area",scatterChart:"scatter",radarChart:"radar",bubbleChart:"bubble",stockChart:"stock",surfaceChart:"surface",surface3DChart:"surface"},j=/<(\/?)([A-Za-z][\w.-]*:[\w.-]+)\b([^>]*?)(\/?)>|([^<]+)/g,N=new Set(["text:note","office:annotation","text:tracked-changes","office:forms","text:sequence-decls"]),P=256,F=50,D={circle:"pie",ring:"doughnut"}
485
+ class L{constructor(){this.stack=[]}open(e,t){this.stack.push({parts:[],heading:e,listed:t})}get current(){return this.stack[this.stack.length-1]}push(e){this.current?.parts.push(e)}pushSpaced(e){const t=this.current?.parts
486
+ if(!t)return
487
+ const r=t[t.length-1]??""
488
+ t.push(`${!r||/\s$/.test(r)?"":" "}${e} `)}close(){const e=this.stack.pop()
489
+ if(!e)return null
490
+ const t=e.parts.join("").replace(/[ \t]+\n/g,"\n").trim()
491
+ return this.current?(t&&this.pushSpaced(t),null):{plain:t,line:t?e.heading?`${"#".repeat(Math.min(6,e.heading))} ${t}`:e.listed?`- ${t}`:t:""}}}}},s={}
492
+ e.m=o,e.c=s,r=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,e.t=function(n,o){if(1&o&&(n=this(n)),8&o)return n
493
+ if("object"==typeof n&&n){if(4&o&&n.__esModule)return n
494
+ if(16&o&&"function"==typeof n.then)return n}var s=Object.create(null)
495
+ e.r(s)
496
+ var a={}
497
+ t=t||[null,r({}),r([]),r(r)]
498
+ for(var i=2&o&&n;"object"==typeof i&&!~t.indexOf(i);i=r(i))Object.getOwnPropertyNames(i).forEach((e=>a[e]=()=>n[e]))
499
+ return a.default=()=>n,e.d(s,a),s},e.d=(exports,t)=>{for(var r in t)e.o(t,r)&&!e.o(exports,r)&&Object.defineProperty(exports,r,{enumerable:!0,get:t[r]})},e.f={},e.e=t=>Promise.all(Object.keys(e.f).reduce(((r,n)=>(e.f[n](t,r),r)),[])),e.u=e=>e+".js",e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e.r=exports=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(exports,"__esModule",{value:!0})},e.nmd=module=>(module.paths=[],module.children||(module.children=[]),module),n={830:1},e.f.require=t=>{n[t]||(t=>{var r=t.modules,o=t.ids,s=t.runtime
500
+ for(var a in r)e.o(r,a)&&(e.m[a]=r[a])
501
+ s&&s(e)
502
+ for(var i=0;i<o.length;i++)n[o[i]]=1})(require("./"+e.u(t)))}
503
+ var a=e(e.s=15845)
504
+ module.exports=a})()