tf_code/PROGRESS.md
2026-03-24 23:27:38 +11:00

3.1 KiB
Raw Blame History

tfcode Progress Summary

Goal

Build and deploy tfcode - ToothFairyAI's official AI coding agent, a fork of opencode.

Completed Tasks

  1. Implemented ToothFairyAI branding (logo, colors, strings)
  2. Created ToothFairyAI provider with dynamic model fetching
  3. Synced tools/agents/skills from ToothFairyAI workspace
  4. Filtered models to only deploymentType: "serverless"
  5. Implemented the /predictions endpoint for ToothFairyAI provider
  6. Added tfcode setup command to persist credentials
  7. Fixed npm installation flow (v1.0.4)
    • Binary now included in main npm package
    • Postinstall script checks if binary exists before downloading
    • ESM-compatible module resolution for npm fallback
    • Wrapper script fixed to look for binary in correct location

Current Status

Working: npm installation flow is now fully functional. Users can install via:

npm install @toothfairyai/tfcode

The binary is included in the main package, making installation instant without needing to download from Gitea or copy from optionalDependencies.

Next Steps

  1. Build all platform binaries (12 targets: linux/darwin/windows × arm64/x64 × baseline/musl)
  2. Test on different platforms (currently only darwin-arm64 is tested)
  3. Create Gitea releases for backup download mechanism
  4. Consider making Gitea repo public for transparency

Technical Details

npm Package Structure

The published package includes:

  • bin/tfcode - The actual binary (92MB)
  • bin/tfcode.js - Wrapper script that spawns the binary
  • postinstall.mjs - Installation script (checks for binary, downloads if missing, installs Python SDK)
  • package.json - Package metadata
  • LICENSE - MIT license

Installation Flow

  1. npm installs main package + optionalDependencies
  2. npm extracts files to node_modules/@toothfairyai/tfcode/
  3. postinstall runs:
    • Checks if binary already exists (✓ for darwin-arm64)
    • If not, tries to download from Gitea
    • If that fails, copies from optionalDependencies
    • Installs Python SDK for TF integration
  4. User can run tfcode command

Key Fixes in v1.0.4

  1. Postinstall script: Fixed duplicate variable declaration (binaryName)
  2. Postinstall script: Added early return if binary already exists
  3. Postinstall script: Fixed ESM module resolution (replaced require.resolve with import.meta.resolve)
  4. Publish script: Copy current platform binary to main package
  5. Wrapper script: Fixed binary path (removed extra bin/ directory)

Testing

# Fresh installation test
rm -rf /tmp/tfcode-test && mkdir /tmp/tfcode-test
cd /tmp/tfcode-test && npm init -y
npm install @toothfairyai/tfcode
node_modules/.bin/tfcode --version  # Should output: 1.0.4

Version History

  • 1.0.4: Fixed npm installation flow, binary included in main package
  • 1.0.3: Initial npm publication (broken installation)
  • 1.0.2: Earlier testing versions
  • 1.0.0: Initial release

Credentials (Testing Only)

  • workspace_id: 6586b7e6-683e-4ee6-a6cf-24c19729b5ff
  • api_key: EWZooLROIS57EVW3BKGu7Pv6LNe4D6m4gkDjukx3
  • region: dev