Commit Graph

3 Commits

Author SHA1 Message Date
df01387124 Code review actions: rename version file, drop Gemfile conditional, tighten gemspec, switch URLs to GitHub
Three tightly-coupled cleanups from the Tobi+Sandi review:

1. Rename lib/opencode/rails/version.rb -> lib/opencode/rails_version.rb
   (Sandi S1: file path was lying about its contents — the file defines
   Opencode::RAILS_VERSION, NOT Opencode::Rails::VERSION). Updated the
   require_relative in opencode-rails.gemspec and lib/opencode-rails.rb
   to match. Removed the now-empty lib/opencode/rails/ directory.

2. Drop the 'if File.exist?(...) gem opencode-ruby, path: ...' Gemfile
   conditional (Tobi T2 / Sandi S4: Bundler behavior must not depend on
   filesystem state). The dev-time sibling-repo override is now
   documented in CONTRIBUTING.md as the standard 'bundle config
   local.opencode-ruby <path>' pattern, which is what Bundler ships
   for this use case.

3. Tighten opencode-ruby runtime dep from '~> 0.0.1.alpha1' to
   '= 0.0.1.alpha1' (Tobi T1: ~> during alpha is aspirational; pin
   exactly until the public API stabilizes).

Same commit also switches all forward-looking URLs (gemspec homepage,
metadata, README link to opencode-ruby) from Gitea to GitHub since the
gems will eventually publish there. Functional 'git:' URL in
ajent-rails' Gemfile stays on Gitea — that's where the gems actually
are right now; ajent-rails Gemfile flips to GitHub when the user does
the actual remote setup.

Test assertion in loading_test was tightened to match either an
installed-gem path ('gems/opencode-X-VERSION/') or a sibling-repo
checkout ('/opencode-X/'), via a small GEM_PATH_PATTERN helper.

15 tests, 50 assertions, 0 failures.
2026-05-20 06:35:58 -07:00
69cfff55b2 Port lib/opencode/rails/ source files; strip Rails.event/Rails.error
Eleven source files moved from ajent-rails:lib/opencode/rails/ to
opencode-rails:lib/opencode/ (flat layout — modules are Opencode::*, not
Opencode::Rails::*; matches opencode-ruby).

  artifact.rb           63 LOC
  exchange.rb           77 LOC
  impostor.rb           48 LOC
  message_artifacts.rb 133 LOC
  sandbox_file.rb       81 LOC
  sandbox.rb            71 LOC
  session.rb           168 LOC
  tool_display.rb      423 LOC
  transform.rb          77 LOC
  turn.rb              642 LOC
  uploaded_files_prompt.rb 85 LOC
  ----
  total              1,868 LOC

Surgical Rails strips:

  exchange.rb:
    Rails.event.notify(name, payload)
      -> Opencode::Instrumentation.instrument(name, payload) { }

  message_artifacts.rb (1 call), turn.rb (6 calls):
    Rails.error.report(error, **opts)
      -> Opencode::ErrorReporter.report(error, **opts)

Comments/docstrings referencing Rails.error.report / Rails.event left
in place — they document how to wire the host adapter.

ActiveSupport core_ext requires expanded in lib/opencode-rails.rb to
cover Numeric#seconds, Hash#deep_stringify_keys, String#squish/truncate,
String#demodulize. Bundle install + smoke load confirms all 12
gem-provided constants resolve cleanly.
2026-05-20 05:14:00 -07:00
49f1ac7b9d Scaffold opencode-rails gem structure
- opencode-rails.gemspec (Ruby >= 3.2, MIT)
  - runtime: opencode-ruby ~> 0.0.1.alpha1
  - runtime: activerecord/activestorage/activesupport >= 7.1, < 9.0
    Per-sublibrary deps (not the rails umbrella) so host apps don't
    pull in ActionMailer/ActionCable/ActionView just to use this gem.
- lib/opencode-rails.rb (umbrella; requires opencode-ruby then leaves
  then session/turn)
- lib/opencode/rails/version.rb (Opencode::Rails::VERSION = 0.0.1.alpha1)
- Gemfile (sibling-path pull of opencode-ruby for local dev)
- Rakefile, .gitignore

Source files will be ported in the next commit.
2026-05-20 05:09:48 -07:00