vsm 0.0.1 → 0.1.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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/.claude/settings.local.json +17 -0
  3. data/CLAUDE.md +134 -0
  4. data/README.md +531 -17
  5. data/examples/01_echo_tool.rb +70 -0
  6. data/examples/02_openai_streaming.rb +73 -0
  7. data/examples/02b_anthropic_streaming.rb +61 -0
  8. data/examples/02c_gemini_streaming.rb +60 -0
  9. data/examples/03_openai_tools.rb +106 -0
  10. data/examples/03b_anthropic_tools.rb +96 -0
  11. data/examples/03c_gemini_tools.rb +95 -0
  12. data/lib/vsm/async_channel.rb +21 -0
  13. data/lib/vsm/capsule.rb +44 -0
  14. data/lib/vsm/drivers/anthropic/async_driver.rb +210 -0
  15. data/lib/vsm/drivers/family.rb +16 -0
  16. data/lib/vsm/drivers/gemini/async_driver.rb +149 -0
  17. data/lib/vsm/drivers/openai/async_driver.rb +202 -0
  18. data/lib/vsm/dsl.rb +50 -0
  19. data/lib/vsm/executors/fiber_executor.rb +10 -0
  20. data/lib/vsm/executors/thread_executor.rb +19 -0
  21. data/lib/vsm/homeostat.rb +19 -0
  22. data/lib/vsm/lens/event_hub.rb +73 -0
  23. data/lib/vsm/lens/server.rb +188 -0
  24. data/lib/vsm/lens/stats.rb +58 -0
  25. data/lib/vsm/lens/tui.rb +88 -0
  26. data/lib/vsm/lens.rb +79 -0
  27. data/lib/vsm/message.rb +6 -0
  28. data/lib/vsm/observability/ledger.rb +25 -0
  29. data/lib/vsm/port.rb +11 -0
  30. data/lib/vsm/roles/coordination.rb +49 -0
  31. data/lib/vsm/roles/governance.rb +9 -0
  32. data/lib/vsm/roles/identity.rb +11 -0
  33. data/lib/vsm/roles/intelligence.rb +168 -0
  34. data/lib/vsm/roles/operations.rb +33 -0
  35. data/lib/vsm/runtime.rb +18 -0
  36. data/lib/vsm/tool/acts_as_tool.rb +20 -0
  37. data/lib/vsm/tool/capsule.rb +12 -0
  38. data/lib/vsm/tool/descriptor.rb +16 -0
  39. data/lib/vsm/version.rb +1 -1
  40. data/lib/vsm.rb +33 -0
  41. data/llms.txt +322 -0
  42. metadata +67 -25
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vsm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Werner
@@ -37,6 +37,20 @@ dependencies:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
39
  version: '0.90'
40
+ - !ruby/object:Gem::Dependency
41
+ name: rack
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '3.2'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.2'
40
54
  - !ruby/object:Gem::Dependency
41
55
  name: rspec
42
56
  requirement: !ruby/object:Gem::Requirement
@@ -51,6 +65,20 @@ dependencies:
51
65
  - - "~>"
52
66
  - !ruby/object:Gem::Version
53
67
  version: '3.13'
68
+ - !ruby/object:Gem::Dependency
69
+ name: async-rspec
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.17'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.17'
54
82
  - !ruby/object:Gem::Dependency
55
83
  name: rubocop
56
84
  requirement: !ruby/object:Gem::Requirement
@@ -70,42 +98,56 @@ description: |
70
98
  Viable System Model–style architecture. It gives you Capsules: self‑contained components
71
99
  composed of five named systems (Operations, Coordination, Intelligence, Governance,
72
100
  Identity) plus an async runtime so many capsules can run concurrently.
73
-
74
- Highlights
75
- • Capsules & recursion: compose larger organisms from smaller capsules, each with its
76
- own Operations/Coordination/Intelligence/Governance/Identity.
77
- • Async runtime: fiber‑based (async gem) message bus and scheduler with “floor
78
- control” per session; great for streaming output and multi‑turn tool loops.
79
- • Tools as capsules: implement tools as first‑class capsules with JSON‑Schema
80
- descriptors, ready to expose to OpenAI‑compatible function calling; adapters for
81
- other providers (e.g., Anthropic/Gemini) fit the same interface.
82
- • Parallel execution: pluggable executors (fiber/thread today) so tool calls can run
83
- concurrently; swap in ractors/subprocess isolation later without API changes.
84
- • Observability: append‑only JSONL event ledger; simple hooks to add tracing/metrics
85
- so you can build a live “lens” UI or ship logs to your infra.
86
- • Ports (ingress/egress): clean adapters for TTY/HTTP/MCP/etc. so multiple
87
- interaction models can share the same organism.
88
-
89
- Use cases
90
- • CLI chat agents with streaming and native tool calling
91
- • Editor/CI sub‑agents (planner, tester, refactorer) composed as capsules
92
- • MCP tool hosts/clients and other integrator bots
93
-
94
- Status: early but practical. APIs may evolve as we add more provider drivers and
95
- ports, but the core Capsule/Systems abstractions should be stable.
96
101
  email:
97
102
  - scott@sublayer.com
98
103
  executables: []
99
104
  extensions: []
100
105
  extra_rdoc_files: []
101
106
  files:
107
+ - ".claude/settings.local.json"
102
108
  - ".rspec"
103
109
  - ".rubocop.yml"
110
+ - CLAUDE.md
104
111
  - LICENSE.txt
105
112
  - README.md
106
113
  - Rakefile
114
+ - examples/01_echo_tool.rb
115
+ - examples/02_openai_streaming.rb
116
+ - examples/02b_anthropic_streaming.rb
117
+ - examples/02c_gemini_streaming.rb
118
+ - examples/03_openai_tools.rb
119
+ - examples/03b_anthropic_tools.rb
120
+ - examples/03c_gemini_tools.rb
107
121
  - lib/vsm.rb
122
+ - lib/vsm/async_channel.rb
123
+ - lib/vsm/capsule.rb
124
+ - lib/vsm/drivers/anthropic/async_driver.rb
125
+ - lib/vsm/drivers/family.rb
126
+ - lib/vsm/drivers/gemini/async_driver.rb
127
+ - lib/vsm/drivers/openai/async_driver.rb
128
+ - lib/vsm/dsl.rb
129
+ - lib/vsm/executors/fiber_executor.rb
130
+ - lib/vsm/executors/thread_executor.rb
131
+ - lib/vsm/homeostat.rb
132
+ - lib/vsm/lens.rb
133
+ - lib/vsm/lens/event_hub.rb
134
+ - lib/vsm/lens/server.rb
135
+ - lib/vsm/lens/stats.rb
136
+ - lib/vsm/lens/tui.rb
137
+ - lib/vsm/message.rb
138
+ - lib/vsm/observability/ledger.rb
139
+ - lib/vsm/port.rb
140
+ - lib/vsm/roles/coordination.rb
141
+ - lib/vsm/roles/governance.rb
142
+ - lib/vsm/roles/identity.rb
143
+ - lib/vsm/roles/intelligence.rb
144
+ - lib/vsm/roles/operations.rb
145
+ - lib/vsm/runtime.rb
146
+ - lib/vsm/tool/acts_as_tool.rb
147
+ - lib/vsm/tool/capsule.rb
148
+ - lib/vsm/tool/descriptor.rb
108
149
  - lib/vsm/version.rb
150
+ - llms.txt
109
151
  - sig/vsm.rbs
110
152
  homepage: https://github.com/sublayerapp/vsm
111
153
  licenses:
@@ -120,7 +162,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
120
162
  requirements:
121
163
  - - ">="
122
164
  - !ruby/object:Gem::Version
123
- version: '3.2'
165
+ version: '3.4'
124
166
  required_rubygems_version: !ruby/object:Gem::Requirement
125
167
  requirements:
126
168
  - - ">="