Purpose
Add two-phase build (tsc for TUI + Bun.build for server), update package.json exports, register TUI component, and update documentation.
Scope
Build (scripts/build.ts)
- Phase 1:
bunx tsc — compiles TUI files with JSX preserved → dist/tui.jsx + .d.ts
- Phase 2:
Bun.build() — bundles server entry point → dist/four-opencode-token-budget-guard.js
- Adapt from deepseek-meter's build.ts pattern
package.json
- Add dependencies:
@opentui/solid, solid-js, @four-bytes/opencode-plugin-lib
- Add exports map:
{
"exports": {
"./server": { "types": "./dist/four-opencode-token-budget-guard.d.ts", "import": "./dist/four-opencode-token-budget-guard.js" },
"./tui": { "types": "./dist/tui.d.ts", "import": "./dist/tui.jsx" }
}
}
- Update build script:
"build": "bun run scripts/build.ts"
tsconfig.json
- Add:
"jsx": "preserve", "jsxImportSource": "@opentui/solid"
TUI registration
- Document in README: add
file:// path to tui.json
- opencode plugin -g for npm installs
README update
- Document token_meter_status tool
- Document TUI sidebar (screenshot placeholder, configuration, tui.json entry)
- Follow README_TEMPLATE.md conventions
Files
- scripts/build.ts (new)
- package.json (modify)
- tsconfig.json (modify)
- README.md (modify)
Acceptance
bun run build produces correct dist/ files
- TUI component loads in opencode sidebar
- No JSX transform errors
- README documents all changes
Purpose
Add two-phase build (tsc for TUI + Bun.build for server), update package.json exports, register TUI component, and update documentation.
Scope
Build (scripts/build.ts)
bunx tsc— compiles TUI files with JSX preserved → dist/tui.jsx + .d.tsBun.build()— bundles server entry point → dist/four-opencode-token-budget-guard.jspackage.json
@opentui/solid,solid-js,@four-bytes/opencode-plugin-lib{ "exports": { "./server": { "types": "./dist/four-opencode-token-budget-guard.d.ts", "import": "./dist/four-opencode-token-budget-guard.js" }, "./tui": { "types": "./dist/tui.d.ts", "import": "./dist/tui.jsx" } } }"build": "bun run scripts/build.ts"tsconfig.json
"jsx": "preserve","jsxImportSource": "@opentui/solid"TUI registration
file://path to tui.jsonREADME update
Files
Acceptance
bun run buildproduces correct dist/ files