This document defines the runtime file layout that AutoAgent expects across:
- development workspace runs
dist/runs- Electron packaged runs via
electron-builder - Debian package runs
The source of truth for runtime lookup behavior is:
- src/runtime-paths.ts
- Runtime resolution must prefer app-local resources before falling back to system tools.
- Windows and non-Windows binaries use platform-appropriate names.
- Development,
dist, and packaged layouts should share the same logical resource names whenever possible. - Lookup rules should be centralized in
runtime-paths.ts, not duplicated across unrelated modules.
Used for Claude Desktop / Autowork prompt assembly.
Canonical relative location:
autowork/assets/upstream/
Expected files:
desktop-system-prompts-extracted.mdclaude-desktop-artifacts-mechanism.mdclaude-desktop-ui-generation.mdclaude-code-internal-mcp-servers.md
Resolver:
resolvePromptAssetsDir()
Used by OpenCC search tools and Glob/Grep behavior.
Canonical runtime filename:
- Windows:
rg.exe - Linux/macOS:
rg
Resolver:
resolveRipgrepBinaryPath()
Used when constructing a self-contained default OpenCC command.
Canonical runtime filename:
- Windows:
bun_runtime.exe - Linux/macOS:
bun
Resolver:
resolveBundledBunBinaryPath()
Used by the default claudeCommand value.
Canonical runtime location in packaged app:
opencc-dist/cli.js
Resolver:
resolveOpenccCliEntryPath()resolveDefaultOpenccCommandValue()
Used when opening standalone artifact windows.
Canonical runtime filename:
artifact-preload.cjs
Resolver:
resolveArtifactPreloadPath()
Canonical runtime filenames:
- Windows shortcut/taskbar icon:
icon.ico - App/window icon:
icon.png
Resolver:
resolveRuntimeAssetPath(name)
This is the layout when running from the repository checkout.
Important locations:
- app code:
src/ - built desktop output:
dist/ - OpenCC CLI output:
packages/opencc/dist/cli.js - prompt assets source:
src/autowork/assets/upstream/ - prompt assets build output:
dist/autowork/assets/upstream/ - local runtime binaries:
build-resources/
Typical resolved paths in dev:
- prompt assets:
src/autowork/assets/upstream/ordist/autowork/assets/upstream/ - ripgrep:
build-resources/rg.exeordist/rg.exeon Windows,build-resources/rgordist/rgon non-Windows - bun runtime:
build-resources/bun_runtime.exeordist/bun_runtime.exeon Windows,build-resources/bunordist/bunon non-Windows - OpenCC command:
- Windows prefers
packages/opencc/opencc.bat - otherwise resolves to bundled bun +
packages/opencc/dist/cli.js
- Windows prefers
This is the local desktop build output used by bun run dev / bun run start.
Important locations:
dist/main.jsdist/preload.cjsdist/artifact-preload.cjsdist/client/dist/autowork/assets/upstream/dist/icon.pngdist/icon.icodist/rg.exeordist/rgdist/bun_runtime.exeordist/bun
This layout exists so runtime resolution works even before full packaging.
Current repository configuration is primarily oriented around Windows packaging.
Relevant package config:
- package.json
Expected packaged runtime structure:
- app JS bundle inside
resources/app.asar/dist/ - extra resources under
resources/ - OpenCC CLI bundle under
resources/opencc-dist/ - icons under
resources/icon.icoandresources/icon.png - ripgrep under
resources/rg.exeon Windows - bun runtime under
resources/bun_runtime.exeon Windows
Important note:
runtime-paths.tschecks bothresources/...andresources/app.asar/dist/...style locations.
Debian packaging uses a different filesystem contract from Electron Builder.
Relevant script:
- scripts/build-deb.sh
Installed layout:
- launcher:
/usr/bin/autoagent - app home:
/usr/lib/autoagent - desktop main:
/usr/lib/autoagent/main.js - preload:
/usr/lib/autoagent/preload.cjs - artifact preload:
/usr/lib/autoagent/artifact-preload.cjsif copied in future builds - OpenCC CLI:
/usr/lib/autoagent/cli.js - bun runtime:
/usr/lib/autoagent/bun - ripgrep:
/usr/lib/autoagent/rg - icons:
/usr/lib/autoagent/icon.png
Current runtime-paths support includes explicit Debian lookups for:
/usr/lib/autoagent/cli.js/usr/lib/autoagent/bun
Ripgrep resolution on Debian is also compatible because OpenCC has its own internal app-local lookup behavior for /usr/lib/autoagent/rg.
Desktop build script:
- scripts/build-desktop.mjs
Current staging behavior:
- copies prompt assets to
dist/autowork/assets/ - copies icons to
dist/ - stages bun runtime to:
build-resources/bun_runtime.exeanddist/bun_runtime.exeon Windowsbuild-resources/bunanddist/bunon non-Windows
- stages ripgrep to:
build-resources/rg.exeanddist/rg.exeon Windowsbuild-resources/rganddist/rgon non-Windows when available
These names are intentionally aligned with runtime-paths.ts.
resolveRipgrepBinaryPath() prefers:
AUTOAGENT_RG_PATHRG_BINRIPGREP_BIN- packaged
resources/ - local module directory
dist/build-resources/
resolvePromptAssetsDir() prefers:
- module-adjacent built assets
- source assets under
src/autowork/assets/upstream/ - built assets under
dist/autowork/assets/upstream/ - packaged
app.asar/dist/autowork/assets/upstream/
resolveDefaultOpenccCommandValue() prefers:
AUTOAGENT_CLAUDE_COMMANDAUTOAGENT_OPENCC_COMMAND- Windows batch wrapper in dev
- bundled bun + resolved OpenCC CLI entry
bun run <cli.js>on non-Windows dev fallback- raw
opencc
When adding a new runtime resource:
- Add its canonical name and lookup rule to
runtime-paths.ts. - Stage it in
scripts/build-desktop.mjsif it is needed in dev ordist. - Update packaging scripts if packaged layouts also need it.
- Update this document.
When changing a runtime filename:
- Update
runtime-paths.ts - Update
build-desktop.mjs - Update package/installer scripts
- Re-test:
bun run build:desktopbun run dev- packaged app launch
- artifact window launch
- prompt asset loading
- Glob/Grep tool behavior