xeno 0.0.1

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 (78) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +38 -0
  3. data/LICENSE +21 -0
  4. data/README.md +211 -0
  5. data/Rakefile +6 -0
  6. data/app/assets/stylesheets/xeno/application.css +15 -0
  7. data/app/controllers/xeno/api_controller.rb +68 -0
  8. data/app/controllers/xeno/application_controller.rb +4 -0
  9. data/app/controllers/xeno/dev_controller.rb +24 -0
  10. data/app/controllers/xeno/dev_ui_controller.rb +71 -0
  11. data/app/controllers/xeno/health_controller.rb +10 -0
  12. data/app/controllers/xeno/sessions_controller.rb +131 -0
  13. data/app/controllers/xeno/slack_controller.rb +48 -0
  14. data/app/controllers/xeno/streams_controller.rb +122 -0
  15. data/app/helpers/xeno/application_helper.rb +4 -0
  16. data/app/jobs/xeno/application_job.rb +4 -0
  17. data/app/jobs/xeno/reaper_job.rb +12 -0
  18. data/app/jobs/xeno/schedule_job.rb +56 -0
  19. data/app/jobs/xeno/slack_event_job.rb +20 -0
  20. data/app/jobs/xeno/turn_job.rb +16 -0
  21. data/app/mailers/xeno/application_mailer.rb +6 -0
  22. data/app/models/xeno/action.rb +26 -0
  23. data/app/models/xeno/application_record.rb +5 -0
  24. data/app/models/xeno/chat.rb +22 -0
  25. data/app/models/xeno/dedup.rb +24 -0
  26. data/app/models/xeno/event.rb +63 -0
  27. data/app/models/xeno/message.rb +5 -0
  28. data/app/models/xeno/pending_message.rb +7 -0
  29. data/app/models/xeno/session.rb +231 -0
  30. data/app/models/xeno/turn.rb +125 -0
  31. data/app/views/layouts/xeno/application.html.erb +18 -0
  32. data/app/views/xeno/dev_ui/_styles.html.erb +24 -0
  33. data/app/views/xeno/dev_ui/index.html.erb +28 -0
  34. data/app/views/xeno/dev_ui/show.html.erb +115 -0
  35. data/config/routes.rb +25 -0
  36. data/db/migrate/20260804000001_create_xeno_llm_tables.rb +70 -0
  37. data/db/migrate/20260804000002_create_xeno_orchestration_tables.rb +70 -0
  38. data/db/migrate/20260805000001_add_resumes_to_xeno_turns.rb +8 -0
  39. data/db/migrate/20260805000002_add_transcript_deferred_to_xeno_turns.rb +8 -0
  40. data/db/migrate/20260805000003_create_xeno_dedups.rb +14 -0
  41. data/db/migrate/20260805000004_add_kind_to_xeno_turns.rb +9 -0
  42. data/db/migrate/20260805000005_add_state_to_xeno_sessions.rb +8 -0
  43. data/db/migrate/20260806000001_move_transcript_support_tables_to_ruby_llm.rb +133 -0
  44. data/docs/runtime.md +275 -0
  45. data/exe/xeno +133 -0
  46. data/lib/generators/xeno/install/install_generator.rb +51 -0
  47. data/lib/generators/xeno/install/templates/agent.rb +4 -0
  48. data/lib/generators/xeno/install/templates/initializer.rb +20 -0
  49. data/lib/generators/xeno/install/templates/instructions.md +6 -0
  50. data/lib/generators/xeno/tool/templates/tool.rb.tt +16 -0
  51. data/lib/generators/xeno/tool/tool_generator.rb +13 -0
  52. data/lib/tasks/xeno_tasks.rake +24 -0
  53. data/lib/xeno/agent_config.rb +66 -0
  54. data/lib/xeno/agent_definition.rb +286 -0
  55. data/lib/xeno/approval_context.rb +4 -0
  56. data/lib/xeno/arguments.rb +62 -0
  57. data/lib/xeno/ask_question.rb +18 -0
  58. data/lib/xeno/channels/slack.rb +311 -0
  59. data/lib/xeno/channels.rb +68 -0
  60. data/lib/xeno/compaction.rb +165 -0
  61. data/lib/xeno/configuration.rb +118 -0
  62. data/lib/xeno/engine.rb +29 -0
  63. data/lib/xeno/errors.rb +40 -0
  64. data/lib/xeno/hooks.rb +37 -0
  65. data/lib/xeno/info.rb +75 -0
  66. data/lib/xeno/inputs.rb +78 -0
  67. data/lib/xeno/reaper.rb +52 -0
  68. data/lib/xeno/schedules.rb +49 -0
  69. data/lib/xeno/session_state.rb +57 -0
  70. data/lib/xeno/standalone/local_secret.rb +26 -0
  71. data/lib/xeno/standalone/model_refresh.rb +26 -0
  72. data/lib/xeno/standalone/puma.rb +17 -0
  73. data/lib/xeno/standalone.rb +136 -0
  74. data/lib/xeno/tool.rb +73 -0
  75. data/lib/xeno/turn_runner.rb +545 -0
  76. data/lib/xeno/version.rb +3 -0
  77. data/lib/xeno.rb +117 -0
  78. metadata +151 -0
metadata ADDED
@@ -0,0 +1,151 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: xeno
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Nicolas Erlichman
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: rails
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '8.0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '8.0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: ruby_llm
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '1.16'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '1.16'
40
+ description: xeno is a framework for durable AI agents built on Rails, runnable standalone
41
+ (xeno new my-agent) or inside the Rails app you already have. Sessions survive restarts
42
+ and deploys mid-turn, wait days for a human approval without holding a process,
43
+ and resume exactly where they stopped.
44
+ executables:
45
+ - xeno
46
+ extensions: []
47
+ extra_rdoc_files: []
48
+ files:
49
+ - CHANGELOG.md
50
+ - LICENSE
51
+ - README.md
52
+ - Rakefile
53
+ - app/assets/stylesheets/xeno/application.css
54
+ - app/controllers/xeno/api_controller.rb
55
+ - app/controllers/xeno/application_controller.rb
56
+ - app/controllers/xeno/dev_controller.rb
57
+ - app/controllers/xeno/dev_ui_controller.rb
58
+ - app/controllers/xeno/health_controller.rb
59
+ - app/controllers/xeno/sessions_controller.rb
60
+ - app/controllers/xeno/slack_controller.rb
61
+ - app/controllers/xeno/streams_controller.rb
62
+ - app/helpers/xeno/application_helper.rb
63
+ - app/jobs/xeno/application_job.rb
64
+ - app/jobs/xeno/reaper_job.rb
65
+ - app/jobs/xeno/schedule_job.rb
66
+ - app/jobs/xeno/slack_event_job.rb
67
+ - app/jobs/xeno/turn_job.rb
68
+ - app/mailers/xeno/application_mailer.rb
69
+ - app/models/xeno/action.rb
70
+ - app/models/xeno/application_record.rb
71
+ - app/models/xeno/chat.rb
72
+ - app/models/xeno/dedup.rb
73
+ - app/models/xeno/event.rb
74
+ - app/models/xeno/message.rb
75
+ - app/models/xeno/pending_message.rb
76
+ - app/models/xeno/session.rb
77
+ - app/models/xeno/turn.rb
78
+ - app/views/layouts/xeno/application.html.erb
79
+ - app/views/xeno/dev_ui/_styles.html.erb
80
+ - app/views/xeno/dev_ui/index.html.erb
81
+ - app/views/xeno/dev_ui/show.html.erb
82
+ - config/routes.rb
83
+ - db/migrate/20260804000001_create_xeno_llm_tables.rb
84
+ - db/migrate/20260804000002_create_xeno_orchestration_tables.rb
85
+ - db/migrate/20260805000001_add_resumes_to_xeno_turns.rb
86
+ - db/migrate/20260805000002_add_transcript_deferred_to_xeno_turns.rb
87
+ - db/migrate/20260805000003_create_xeno_dedups.rb
88
+ - db/migrate/20260805000004_add_kind_to_xeno_turns.rb
89
+ - db/migrate/20260805000005_add_state_to_xeno_sessions.rb
90
+ - db/migrate/20260806000001_move_transcript_support_tables_to_ruby_llm.rb
91
+ - docs/runtime.md
92
+ - exe/xeno
93
+ - lib/generators/xeno/install/install_generator.rb
94
+ - lib/generators/xeno/install/templates/agent.rb
95
+ - lib/generators/xeno/install/templates/initializer.rb
96
+ - lib/generators/xeno/install/templates/instructions.md
97
+ - lib/generators/xeno/tool/templates/tool.rb.tt
98
+ - lib/generators/xeno/tool/tool_generator.rb
99
+ - lib/tasks/xeno_tasks.rake
100
+ - lib/xeno.rb
101
+ - lib/xeno/agent_config.rb
102
+ - lib/xeno/agent_definition.rb
103
+ - lib/xeno/approval_context.rb
104
+ - lib/xeno/arguments.rb
105
+ - lib/xeno/ask_question.rb
106
+ - lib/xeno/channels.rb
107
+ - lib/xeno/channels/slack.rb
108
+ - lib/xeno/compaction.rb
109
+ - lib/xeno/configuration.rb
110
+ - lib/xeno/engine.rb
111
+ - lib/xeno/errors.rb
112
+ - lib/xeno/hooks.rb
113
+ - lib/xeno/info.rb
114
+ - lib/xeno/inputs.rb
115
+ - lib/xeno/reaper.rb
116
+ - lib/xeno/schedules.rb
117
+ - lib/xeno/session_state.rb
118
+ - lib/xeno/standalone.rb
119
+ - lib/xeno/standalone/local_secret.rb
120
+ - lib/xeno/standalone/model_refresh.rb
121
+ - lib/xeno/standalone/puma.rb
122
+ - lib/xeno/tool.rb
123
+ - lib/xeno/turn_runner.rb
124
+ - lib/xeno/version.rb
125
+ homepage: https://github.com/nerlichman/xeno
126
+ licenses:
127
+ - MIT
128
+ metadata:
129
+ homepage_uri: https://github.com/nerlichman/xeno
130
+ source_code_uri: https://github.com/nerlichman/xeno
131
+ changelog_uri: https://github.com/nerlichman/xeno/blob/main/CHANGELOG.md
132
+ bug_tracker_uri: https://github.com/nerlichman/xeno/issues
133
+ rubygems_mfa_required: 'true'
134
+ rdoc_options: []
135
+ require_paths:
136
+ - lib
137
+ required_ruby_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '3.2'
142
+ required_rubygems_version: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ requirements: []
148
+ rubygems_version: 4.0.13
149
+ specification_version: 4
150
+ summary: A framework for durable AI agents. Built on Rails.
151
+ test_files: []