event_engine 0.1.0 → 0.2.0

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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +55 -0
  3. data/README.md +210 -399
  4. data/Rakefile +0 -1
  5. data/lib/event_engine/catalog_entry.rb +84 -0
  6. data/lib/event_engine/configuration.rb +9 -9
  7. data/lib/event_engine/definition_publisher.rb +22 -0
  8. data/lib/event_engine/event.rb +0 -8
  9. data/lib/event_engine/event_builder.rb +0 -8
  10. data/lib/event_engine/event_schema.rb +32 -57
  11. data/lib/event_engine/event_schema_json_loader.rb +19 -0
  12. data/lib/event_engine/handler_registry.rb +4 -4
  13. data/lib/event_engine/invalid_rules_error.rb +8 -0
  14. data/lib/event_engine/processing_rules.rb +39 -0
  15. data/lib/event_engine/processor_registry.rb +19 -0
  16. data/lib/event_engine/processor_resolver.rb +16 -0
  17. data/lib/event_engine/railtie.rb +54 -4
  18. data/lib/event_engine/rules_file.rb +14 -0
  19. data/lib/event_engine/schema_catalog_builder.rb +18 -0
  20. data/lib/event_engine/schema_registry.rb +7 -58
  21. data/lib/event_engine/unregistered_processor_error.rb +8 -0
  22. data/lib/event_engine/unroutable_event_error.rb +9 -0
  23. data/lib/event_engine/unrouted_events_error.rb +9 -0
  24. data/lib/event_engine/version.rb +1 -1
  25. data/lib/event_engine.rb +117 -123
  26. data/lib/tasks/event_engine_catalog.rake +15 -6
  27. data/lib/tasks/event_engine_rules.rake +10 -0
  28. data/the_local/agents/event_engine-develop.md +154 -0
  29. data/the_local/agents/event_engine-info.md +82 -0
  30. data/the_local/agents/event_engine-install.md +99 -0
  31. data/the_local/interface.yml +27 -0
  32. metadata +45 -48
  33. data/app/assets/config/event_engine_manifest.js +0 -1
  34. data/app/assets/stylesheets/event_engine/application.css +0 -15
  35. data/app/controllers/event_engine/application_controller.rb +0 -4
  36. data/app/helpers/event_engine/application_helper.rb +0 -4
  37. data/app/jobs/event_engine/application_job.rb +0 -4
  38. data/app/mailers/event_engine/application_mailer.rb +0 -6
  39. data/app/models/event_engine/application_record.rb +0 -5
  40. data/app/views/layouts/event_engine/application.html.erb +0 -15
  41. data/config/routes.rb +0 -2
  42. data/lib/event_engine/definition_loader.rb +0 -26
  43. data/lib/event_engine/dsl_compiler.rb +0 -50
  44. data/lib/event_engine/engine.rb +0 -56
  45. data/lib/event_engine/event_definition/inputs.rb +0 -43
  46. data/lib/event_engine/event_definition/payloads.rb +0 -47
  47. data/lib/event_engine/event_definition/schemas.rb +0 -158
  48. data/lib/event_engine/event_definition/validation.rb +0 -18
  49. data/lib/event_engine/event_definition.rb +0 -76
  50. data/lib/event_engine/event_schema_dumper.rb +0 -13
  51. data/lib/event_engine/event_schema_loader.rb +0 -37
  52. data/lib/event_engine/event_schema_merger.rb +0 -62
  53. data/lib/event_engine/event_schema_writer.rb +0 -47
  54. data/lib/event_engine/lifecycle_definition.rb +0 -86
  55. data/lib/event_engine/process_type.rb +0 -26
  56. data/lib/event_engine/reference/guide.md +0 -129
  57. data/lib/event_engine/reference.rb +0 -16
  58. data/lib/event_engine/schema_catalog.rb +0 -50
  59. data/lib/event_engine/schema_compatibility.rb +0 -50
  60. data/lib/event_engine/schema_diff.rb +0 -35
  61. data/lib/event_engine/schema_drift_guard.rb +0 -38
  62. data/lib/event_engine/subject_registry.rb +0 -40
  63. data/lib/event_engine/the_local/agents/event_engine-develop.md +0 -142
  64. data/lib/event_engine/the_local/agents/event_engine-info.md +0 -140
  65. data/lib/event_engine/the_local/agents/event_engine-install.md +0 -140
  66. data/lib/event_engine/the_local.rb +0 -55
  67. data/lib/generators/event_engine/install_generator.rb +0 -31
  68. data/lib/generators/event_engine/templates/event_schema.rb +0 -10
  69. data/lib/generators/event_engine/templates/initializer.rb +0 -4
  70. data/lib/tasks/event_engine_schema.rake +0 -82
  71. data/lib/tasks/event_engine_schema_check.rake +0 -20
  72. data/lib/tasks/event_engine_tasks.rake +0 -4
@@ -1,55 +0,0 @@
1
- require "event_engine/reference"
2
-
3
- module EventEngine
4
- module Companion
5
- def self.register!
6
- TheLocal.register("event_engine",
7
- scope: "events — defining EventEngine events, emitting, and the schema workflow",
8
- agents_dir: File.expand_path("the_local/agents", __dir__)) do |c|
9
- c.agent "info",
10
- description: "Use to learn what EventEngine offers — the event-definition DSL, " \
11
- "process_type, emitting, handlers, and the schema workflow.",
12
- tools: "Read",
13
- knowledge: Reference.content,
14
- body: <<~BODY.chomp
15
- You explain how EventEngine works and how to use it, answering only from the
16
- reference: defining events, process_type routing, emitting through the generated
17
- helpers, registering handlers, and the schema dump/check workflow. You make no
18
- changes.
19
- BODY
20
-
21
- c.agent "install",
22
- description: "Use to add EventEngine to a Rails app and set it up correctly.",
23
- tools: "Bash, Read, Edit",
24
- knowledge: Reference.content,
25
- body: <<~BODY.chomp
26
- You install EventEngine following the reference's install section exactly: add the
27
- gem, bundle, run `bin/rails g event_engine:install`, set the logger in the
28
- initializer, then dump and commit db/event_schema.rb. You do not invent steps, and
29
- you do not set up the separate delivery/store/subscribers gems unless asked.
30
- BODY
31
-
32
- c.agent "develop",
33
- description: "Use PROACTIVELY for any EventEngine work — defining events, choosing " \
34
- "process_type, emitting, and keeping the committed schema in sync. MUST BE USED " \
35
- "instead of hand-writing event plumbing.",
36
- tools: "Read, Write, Edit, Grep",
37
- knowledge: Reference.content,
38
- body: <<~BODY.chomp
39
- You build EventEngine events following the reference's conventions: one
40
- EventDefinition class per event in app/event_definitions/, payloads composed from
41
- inputs, process_type set explicitly, emitted through the generated
42
- EventEngine.<event_name> helpers. After any definition change you run
43
- `bin/rails event_engine:schema:dump` and commit db/event_schema.rb, keeping
44
- event_engine:schema_check green. You keep handlers idempotent.
45
- BODY
46
- end
47
- end
48
- end
49
- end
50
-
51
- begin
52
- require "the_local"
53
- EventEngine::Companion.register!
54
- rescue LoadError
55
- end
@@ -1,31 +0,0 @@
1
- module EventEngine
2
- module Generators
3
- class InstallGenerator < Rails::Generators::Base
4
- source_root File.expand_path("templates", __dir__)
5
-
6
- desc "Install EventEngine (schema file, initializer, migrations)"
7
-
8
- def create_event_schema
9
- template "event_schema.rb", "db/event_schema.rb"
10
- end
11
-
12
- def create_initializer
13
- template "initializer.rb", "config/initializers/event_engine.rb"
14
- end
15
-
16
- def print_next_steps
17
- say <<~MSG
18
-
19
- EventEngine installed.
20
-
21
- Next steps:
22
- 1. Define events in app/event_definitions/
23
- 2. Run: bin/rails event_engine:schema:dump
24
- 3. Commit db/event_schema.rb
25
- 4. Configure transport in config/initializers/event_engine.rb
26
-
27
- MSG
28
- end
29
- end
30
- end
31
- end
@@ -1,10 +0,0 @@
1
- # This file is authoritative in production.
2
- # It is generated from EventDefinitions via:
3
- #
4
- # bin/rails event_engine:schema:dump
5
- #
6
- # Do not edit manually.
7
-
8
- EventEngine::EventSchema.define do |schema|
9
- # schema.register(...)
10
- end
@@ -1,4 +0,0 @@
1
- EventEngine.configure do |c|
2
- # Logger for EventEngine messages (defaults to Rails.logger)
3
- # c.logger = Rails.logger
4
- end
@@ -1,82 +0,0 @@
1
- namespace :event_engine do
2
- desc "Fail if event schema DSL has drifted from db/event_schema.rb"
3
- task schema: :environment do
4
- EventEngine::DefinitionLoader.ensure_loaded!
5
-
6
- descendants = EventEngine::EventDefinition.descendants
7
-
8
- if descendants.empty?
9
- raise <<~MSG
10
- EventEngine found no EventDefinitions.
11
-
12
- Expected definitions to be loaded during eager load.
13
- Ensure they live in an eager-load path (e.g. app/event_definitions).
14
- MSG
15
- end
16
-
17
- EventEngine::SchemaDriftGuard.check!(
18
- schema_path: Rails.root.join("db/event_schema.rb"),
19
- definitions: descendants
20
- )
21
- end
22
-
23
- namespace :schema do
24
- desc "Regenerate event_schema.rb from EventDefinitions"
25
- task dump: :environment do
26
- EventEngine::DefinitionLoader.ensure_loaded!
27
-
28
- descendants = EventEngine::EventDefinition.descendants
29
-
30
- if descendants.empty?
31
- raise <<~MSG
32
- EventEngine found no EventDefinitions.
33
-
34
- Expected definitions to be loaded during eager load.
35
- Ensure they live in an eager-load path (e.g. app/event_definitions).
36
- MSG
37
- end
38
-
39
- path = Rails.root.join("db/event_schema.rb")
40
-
41
- EventEngine::EventSchemaDumper.dump!(
42
- definitions: descendants,
43
- path: path
44
- )
45
-
46
- puts "Dumping EventEngine schema to #{path}"
47
- end
48
-
49
- desc "Fail with a readable diff if definitions have drifted from db/event_schema.rb"
50
- task verify: :environment do
51
- EventEngine::DefinitionLoader.ensure_loaded!
52
-
53
- descendants = EventEngine::EventDefinition.descendants
54
-
55
- if descendants.empty?
56
- raise <<~MSG
57
- EventEngine found no EventDefinitions.
58
-
59
- Expected definitions to be loaded during eager load.
60
- Ensure they live in an eager-load path (e.g. app/event_definitions).
61
- MSG
62
- end
63
-
64
- EventEngine::SchemaDriftGuard.check!(
65
- schema_path: Rails.root.join("db/event_schema.rb"),
66
- definitions: descendants
67
- )
68
- end
69
-
70
- desc "Fail if new definitions break compatibility with the committed schema"
71
- task compatibility: :environment do
72
- EventEngine::DefinitionLoader.ensure_loaded!
73
-
74
- violations = EventEngine::SchemaCompatibility.violations(
75
- old_registry: EventEngine.file_schema_registry,
76
- new_registry: EventEngine.compiled_schema_registry
77
- )
78
-
79
- raise "Breaking schema changes:\n#{violations.join("\n")}" if violations.any?
80
- end
81
- end
82
- end
@@ -1,20 +0,0 @@
1
- namespace :event_engine do
2
- desc "Fail if event schema DSL has drifted from db/event_schema.rb"
3
- task schema_check: :environment do
4
- compiled = EventEngine.compiled_schema_registry
5
- file = EventEngine.file_schema_registry
6
-
7
- if EventEngine::EventSchemaMerger.changed?(compiled, file)
8
- raise <<~MSG
9
- Schema drift detected.
10
-
11
- The compiled EventDefinitions differ from db/event_schema.rb.
12
-
13
- Run:
14
- bin/rails event_engine:schema:dump
15
-
16
- Then commit the updated schema file.
17
- MSG
18
- end
19
- end
20
- end
@@ -1,4 +0,0 @@
1
- # desc "Explaining what the task does"
2
- # task :event_engine do
3
- # # Task goes here
4
- # end