phlex-reactive 0.9.3 → 0.9.4

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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +197 -0
  3. data/README.md +282 -2
  4. data/app/controllers/phlex/reactive/actions_controller.rb +120 -10
  5. data/app/javascript/phlex/reactive/inspect.js +225 -0
  6. data/app/javascript/phlex/reactive/inspect.min.js +4 -0
  7. data/app/javascript/phlex/reactive/inspect.min.js.map +10 -0
  8. data/app/javascript/phlex/reactive/reactive_controller.js +534 -6
  9. data/app/javascript/phlex/reactive/reactive_controller.min.js +2 -2
  10. data/app/javascript/phlex/reactive/reactive_controller.min.js.map +3 -3
  11. data/lib/generators/phlex/reactive/claude/USAGE +15 -0
  12. data/lib/generators/phlex/reactive/claude/claude_generator.rb +86 -0
  13. data/lib/generators/phlex/reactive/install/install_generator.rb +3 -0
  14. data/lib/generators/phlex/reactive/install/templates/phlex_reactive.rb.erb +56 -0
  15. data/lib/phlex/reactive/authorization.rb +118 -0
  16. data/lib/phlex/reactive/claude/skills/phlex-reactive-debugging/SKILL.md +105 -0
  17. data/lib/phlex/reactive/component/dsl.rb +70 -0
  18. data/lib/phlex/reactive/component/helpers.rb +193 -8
  19. data/lib/phlex/reactive/component/identity.rb +10 -1
  20. data/lib/phlex/reactive/component/lazy.rb +79 -0
  21. data/lib/phlex/reactive/component/registry.rb +7 -1
  22. data/lib/phlex/reactive/component.rb +1 -0
  23. data/lib/phlex/reactive/defer.rb +363 -0
  24. data/lib/phlex/reactive/deferred_render_job.rb +116 -0
  25. data/lib/phlex/reactive/doctor.rb +79 -11
  26. data/lib/phlex/reactive/engine.rb +16 -2
  27. data/lib/phlex/reactive/inspector/report.rb +140 -0
  28. data/lib/phlex/reactive/inspector.rb +253 -0
  29. data/lib/phlex/reactive/log_subscriber.rb +10 -0
  30. data/lib/phlex/reactive/mcp/base_tool.rb +57 -0
  31. data/lib/phlex/reactive/mcp/runner.rb +24 -0
  32. data/lib/phlex/reactive/mcp/server.rb +47 -0
  33. data/lib/phlex/reactive/mcp/tools/actions_tool.rb +43 -0
  34. data/lib/phlex/reactive/mcp/tools/components_tool.rb +39 -0
  35. data/lib/phlex/reactive/mcp/tools/config_tool.rb +74 -0
  36. data/lib/phlex/reactive/mcp/tools/doctor_tool.rb +36 -0
  37. data/lib/phlex/reactive/mcp/tools/find_tool.rb +66 -0
  38. data/lib/phlex/reactive/mcp.rb +58 -0
  39. data/lib/phlex/reactive/reply.rb +18 -0
  40. data/lib/phlex/reactive/response.rb +47 -2
  41. data/lib/phlex/reactive/streamable.rb +5 -1
  42. data/lib/phlex/reactive/version.rb +1 -1
  43. data/lib/phlex/reactive.rb +253 -3
  44. data/lib/tasks/phlex_reactive.rake +28 -0
  45. metadata +22 -1
@@ -11,4 +11,32 @@ namespace :phlex_reactive do
11
11
  # gate on `bin/rails phlex_reactive:doctor`.
12
12
  abort unless Phlex::Reactive::Doctor.run
13
13
  end
14
+
15
+ desc "List every declared reactive action (component | action | params | file:line | auth); FORMAT=json for tooling"
16
+ task actions: :environment do
17
+ # eager_load! so every app component is in the Streamable registry the
18
+ # Inspector reads. Plain text by default (no ANSI, like the doctor);
19
+ # FORMAT=json emits a parseable array for tooling. Names/paths/schemas only.
20
+ Rails.application.eager_load!
21
+ format = ENV["FORMAT"].to_s.downcase == "json" ? :json : :text
22
+ puts Phlex::Reactive::Inspector::Report.actions(Phlex::Reactive::Inspector.components, format:)
23
+ end
24
+
25
+ desc "Fuzzy-find a reactive component and print its actions with method-definition source — phlex_reactive:find[query]"
26
+ task :find, [:query] => :environment do |_task, args|
27
+ Rails.application.eager_load!
28
+ query = args[:query].to_s
29
+ puts Phlex::Reactive::Inspector::Report.find(Phlex::Reactive::Inspector.find(query), query)
30
+ end
31
+
32
+ desc "Run the read-only diagnostic MCP server over stdio (needs the optional `mcp` gem) — issue #168"
33
+ task mcp: :environment do
34
+ # Lazy-load the optional mcp gem + the tool tree (a helpful error if the gem
35
+ # is missing), then drive the stdio transport. eager_load! so the tools see
36
+ # every component. NOTHING may write to stdout but the JSON-RPC frames — the
37
+ # runner documents this; keep initializers quiet on $stdout.
38
+ Phlex::Reactive::MCP.load!
39
+ Rails.application.eager_load!
40
+ Phlex::Reactive::MCP::Runner.run
41
+ end
14
42
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phlex-reactive
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3
4
+ version: 0.9.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mikael Henriksson
@@ -123,9 +123,14 @@ files:
123
123
  - app/javascript/phlex/reactive/confirm.js
124
124
  - app/javascript/phlex/reactive/confirm.min.js
125
125
  - app/javascript/phlex/reactive/confirm.min.js.map
126
+ - app/javascript/phlex/reactive/inspect.js
127
+ - app/javascript/phlex/reactive/inspect.min.js
128
+ - app/javascript/phlex/reactive/inspect.min.js.map
126
129
  - app/javascript/phlex/reactive/reactive_controller.js
127
130
  - app/javascript/phlex/reactive/reactive_controller.min.js
128
131
  - app/javascript/phlex/reactive/reactive_controller.min.js.map
132
+ - lib/generators/phlex/reactive/claude/USAGE
133
+ - lib/generators/phlex/reactive/claude/claude_generator.rb
129
134
  - lib/generators/phlex/reactive/component/USAGE
130
135
  - lib/generators/phlex/reactive/component/component_generator.rb
131
136
  - lib/generators/phlex/reactive/component/templates/component.rb.erb
@@ -135,15 +140,31 @@ files:
135
140
  - lib/generators/phlex/reactive/install/templates/phlex_reactive.rb.erb
136
141
  - lib/phlex-reactive.rb
137
142
  - lib/phlex/reactive.rb
143
+ - lib/phlex/reactive/authorization.rb
144
+ - lib/phlex/reactive/claude/skills/phlex-reactive-debugging/SKILL.md
138
145
  - lib/phlex/reactive/component.rb
139
146
  - lib/phlex/reactive/component/dsl.rb
140
147
  - lib/phlex/reactive/component/helpers.rb
141
148
  - lib/phlex/reactive/component/identity.rb
149
+ - lib/phlex/reactive/component/lazy.rb
142
150
  - lib/phlex/reactive/component/registry.rb
151
+ - lib/phlex/reactive/defer.rb
152
+ - lib/phlex/reactive/deferred_render_job.rb
143
153
  - lib/phlex/reactive/doctor.rb
144
154
  - lib/phlex/reactive/engine.rb
155
+ - lib/phlex/reactive/inspector.rb
156
+ - lib/phlex/reactive/inspector/report.rb
145
157
  - lib/phlex/reactive/js.rb
146
158
  - lib/phlex/reactive/log_subscriber.rb
159
+ - lib/phlex/reactive/mcp.rb
160
+ - lib/phlex/reactive/mcp/base_tool.rb
161
+ - lib/phlex/reactive/mcp/runner.rb
162
+ - lib/phlex/reactive/mcp/server.rb
163
+ - lib/phlex/reactive/mcp/tools/actions_tool.rb
164
+ - lib/phlex/reactive/mcp/tools/components_tool.rb
165
+ - lib/phlex/reactive/mcp/tools/config_tool.rb
166
+ - lib/phlex/reactive/mcp/tools/doctor_tool.rb
167
+ - lib/phlex/reactive/mcp/tools/find_tool.rb
147
168
  - lib/phlex/reactive/param_schema.rb
148
169
  - lib/phlex/reactive/reply.rb
149
170
  - lib/phlex/reactive/response.rb