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.
- checksums.yaml +4 -4
- data/.claude/settings.local.json +17 -0
- data/CLAUDE.md +134 -0
- data/README.md +531 -17
- data/examples/01_echo_tool.rb +70 -0
- data/examples/02_openai_streaming.rb +73 -0
- data/examples/02b_anthropic_streaming.rb +61 -0
- data/examples/02c_gemini_streaming.rb +60 -0
- data/examples/03_openai_tools.rb +106 -0
- data/examples/03b_anthropic_tools.rb +96 -0
- data/examples/03c_gemini_tools.rb +95 -0
- data/lib/vsm/async_channel.rb +21 -0
- data/lib/vsm/capsule.rb +44 -0
- data/lib/vsm/drivers/anthropic/async_driver.rb +210 -0
- data/lib/vsm/drivers/family.rb +16 -0
- data/lib/vsm/drivers/gemini/async_driver.rb +149 -0
- data/lib/vsm/drivers/openai/async_driver.rb +202 -0
- data/lib/vsm/dsl.rb +50 -0
- data/lib/vsm/executors/fiber_executor.rb +10 -0
- data/lib/vsm/executors/thread_executor.rb +19 -0
- data/lib/vsm/homeostat.rb +19 -0
- data/lib/vsm/lens/event_hub.rb +73 -0
- data/lib/vsm/lens/server.rb +188 -0
- data/lib/vsm/lens/stats.rb +58 -0
- data/lib/vsm/lens/tui.rb +88 -0
- data/lib/vsm/lens.rb +79 -0
- data/lib/vsm/message.rb +6 -0
- data/lib/vsm/observability/ledger.rb +25 -0
- data/lib/vsm/port.rb +11 -0
- data/lib/vsm/roles/coordination.rb +49 -0
- data/lib/vsm/roles/governance.rb +9 -0
- data/lib/vsm/roles/identity.rb +11 -0
- data/lib/vsm/roles/intelligence.rb +168 -0
- data/lib/vsm/roles/operations.rb +33 -0
- data/lib/vsm/runtime.rb +18 -0
- data/lib/vsm/tool/acts_as_tool.rb +20 -0
- data/lib/vsm/tool/capsule.rb +12 -0
- data/lib/vsm/tool/descriptor.rb +16 -0
- data/lib/vsm/version.rb +1 -1
- data/lib/vsm.rb +33 -0
- data/llms.txt +322 -0
- 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
|
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.
|
165
|
+
version: '3.4'
|
124
166
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
125
167
|
requirements:
|
126
168
|
- - ">="
|