trak_flow 0.1.3 → 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.
- checksums.yaml +4 -4
- data/.fasterer.yml +10 -0
- data/.loki +33 -0
- data/.reek.yml +161 -0
- data/.rubocop.yml +187 -0
- data/Archspec.rb +45 -0
- data/CHANGELOG.md +52 -1
- data/Gemfile +12 -0
- data/Gemfile.lock +124 -93
- data/README.md +15 -2
- data/_typos.toml +17 -0
- data/docs/api/ruby-library.md +2 -2
- data/docs/cli/admin-commands.md +3 -3
- data/docs/core-concepts/overview.md +2 -2
- data/docs/getting-started/configuration.md +2 -2
- data/docs/getting-started/installation.md +22 -5
- data/docs/index.md +2 -2
- data/docs/mcp/integration.md +11 -8
- data/docs/mcp/overview.md +29 -8
- data/examples/cli_demo.sh +1 -1
- data/examples/mcp/Gemfile.lock +147 -61
- data/lib/trak_flow/cli/admin_commands.rb +77 -59
- data/lib/trak_flow/cli/config_commands.rb +9 -14
- data/lib/trak_flow/cli/dep_commands.rb +3 -3
- data/lib/trak_flow/cli/label_commands.rb +3 -3
- data/lib/trak_flow/cli/main_commands.rb +127 -94
- data/lib/trak_flow/cli/plan_commands.rb +32 -25
- data/lib/trak_flow/cli/workflow_commands.rb +5 -4
- data/lib/trak_flow/cli.rb +2 -2
- data/lib/trak_flow/config/defaults.yml +5 -1
- data/lib/trak_flow/config/section.rb +3 -5
- data/lib/trak_flow/config.rb +20 -34
- data/lib/trak_flow/graph/dependency_graph.rb +72 -69
- data/lib/trak_flow/mcp/resources/dependency_graph.rb +13 -9
- data/lib/trak_flow/mcp/resources/task_by_id.rb +4 -3
- data/lib/trak_flow/mcp/server.rb +77 -76
- data/lib/trak_flow/mcp/tools/task_create.rb +17 -17
- data/lib/trak_flow/models/task.rb +21 -17
- data/lib/trak_flow/storage/database.rb +26 -16
- data/lib/trak_flow/storage/jsonl.rb +60 -62
- data/lib/trak_flow/version.rb +1 -1
- data/lib/trak_flow.rb +0 -1
- data/trak_flow.gemspec +57 -0
- metadata +11 -31
data/Gemfile.lock
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
trak_flow (0.
|
|
4
|
+
trak_flow (0.2.0)
|
|
5
5
|
anyway_config (~> 2.0)
|
|
6
6
|
debug_me
|
|
7
7
|
fast-mcp
|
|
8
8
|
oj (~> 3.16)
|
|
9
9
|
pastel (~> 0.8)
|
|
10
|
-
puma (~> 6.0)
|
|
11
|
-
rackup (~> 2.0)
|
|
12
10
|
sequel (~> 5.0)
|
|
13
11
|
sqlite3 (~> 2.0)
|
|
14
12
|
thor (~> 1.3)
|
|
@@ -18,55 +16,55 @@ PATH
|
|
|
18
16
|
GEM
|
|
19
17
|
remote: https://rubygems.org/
|
|
20
18
|
specs:
|
|
21
|
-
addressable (2.
|
|
19
|
+
addressable (2.9.0)
|
|
22
20
|
public_suffix (>= 2.0.2, < 8.0)
|
|
23
|
-
ansi (1.
|
|
24
|
-
anyway_config (2.
|
|
21
|
+
ansi (1.6.0)
|
|
22
|
+
anyway_config (2.8.1)
|
|
25
23
|
ruby-next-core (~> 1.0)
|
|
26
24
|
ast (2.4.3)
|
|
27
25
|
base64 (0.3.0)
|
|
28
|
-
bigdecimal (
|
|
26
|
+
bigdecimal (4.1.2)
|
|
29
27
|
builder (3.3.0)
|
|
30
|
-
concurrent-ruby (1.3.
|
|
28
|
+
concurrent-ruby (1.3.8)
|
|
31
29
|
debug_me (1.1.3)
|
|
32
30
|
docile (1.4.1)
|
|
33
|
-
dry-configurable (1.
|
|
34
|
-
dry-core (~> 1.
|
|
31
|
+
dry-configurable (1.4.0)
|
|
32
|
+
dry-core (~> 1.0)
|
|
35
33
|
zeitwerk (~> 2.6)
|
|
36
34
|
dry-core (1.2.0)
|
|
37
35
|
concurrent-ruby (~> 1.0)
|
|
38
36
|
logger
|
|
39
37
|
zeitwerk (~> 2.6)
|
|
40
|
-
dry-inflector (1.
|
|
38
|
+
dry-inflector (1.3.1)
|
|
41
39
|
dry-initializer (3.2.0)
|
|
42
40
|
dry-logic (1.6.0)
|
|
43
41
|
bigdecimal
|
|
44
42
|
concurrent-ruby (~> 1.0)
|
|
45
43
|
dry-core (~> 1.1)
|
|
46
44
|
zeitwerk (~> 2.6)
|
|
47
|
-
dry-schema (1.
|
|
45
|
+
dry-schema (1.16.0)
|
|
48
46
|
concurrent-ruby (~> 1.0)
|
|
49
47
|
dry-configurable (~> 1.0, >= 1.0.1)
|
|
50
48
|
dry-core (~> 1.1)
|
|
51
49
|
dry-initializer (~> 3.2)
|
|
52
|
-
dry-logic (~> 1.
|
|
53
|
-
dry-types (~> 1.
|
|
50
|
+
dry-logic (~> 1.6)
|
|
51
|
+
dry-types (~> 1.9, >= 1.9.1)
|
|
54
52
|
zeitwerk (~> 2.6)
|
|
55
|
-
dry-types (1.
|
|
56
|
-
bigdecimal (
|
|
53
|
+
dry-types (1.9.1)
|
|
54
|
+
bigdecimal (>= 3.0)
|
|
57
55
|
concurrent-ruby (~> 1.0)
|
|
58
56
|
dry-core (~> 1.0)
|
|
59
57
|
dry-inflector (~> 1.0)
|
|
60
58
|
dry-logic (~> 1.4)
|
|
61
59
|
zeitwerk (~> 2.6)
|
|
62
60
|
event_stream_parser (1.0.0)
|
|
63
|
-
faraday (2.14.
|
|
61
|
+
faraday (2.14.3)
|
|
64
62
|
faraday-net_http (>= 2.0, < 3.5)
|
|
65
63
|
json
|
|
66
64
|
logger
|
|
67
65
|
faraday-multipart (1.2.0)
|
|
68
66
|
multipart-post (~> 2.0)
|
|
69
|
-
faraday-net_http (3.4.
|
|
67
|
+
faraday-net_http (3.4.4)
|
|
70
68
|
net-http (~> 0.5)
|
|
71
69
|
faraday-retry (2.4.0)
|
|
72
70
|
faraday (~> 2.0)
|
|
@@ -77,99 +75,120 @@ GEM
|
|
|
77
75
|
json (~> 2.0)
|
|
78
76
|
mime-types (~> 3.4)
|
|
79
77
|
rack (>= 2.0, < 4.0)
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
78
|
+
fasterer (0.11.0)
|
|
79
|
+
ruby_parser (>= 3.19.1)
|
|
80
|
+
hana (1.3.7)
|
|
81
|
+
http-2 (1.2.2)
|
|
82
|
+
httpx (1.8.3)
|
|
83
|
+
http-2 (>= 1.2.0)
|
|
84
|
+
json (2.21.2)
|
|
85
|
+
json-schema (6.2.0)
|
|
85
86
|
addressable (~> 2.8)
|
|
86
|
-
bigdecimal (
|
|
87
|
-
|
|
87
|
+
bigdecimal (>= 3.1, < 5)
|
|
88
|
+
json_schemer (2.5.0)
|
|
89
|
+
bigdecimal
|
|
90
|
+
hana (~> 1.3)
|
|
91
|
+
regexp_parser (~> 2.0)
|
|
92
|
+
simpleidn (~> 0.2)
|
|
93
|
+
language_server-protocol (3.17.0.6)
|
|
88
94
|
lint_roller (1.1.0)
|
|
89
95
|
logger (1.7.0)
|
|
90
|
-
marcel (1.1
|
|
96
|
+
marcel (1.2.1)
|
|
91
97
|
mime-types (3.7.0)
|
|
92
98
|
logger
|
|
93
99
|
mime-types-data (~> 3.2025, >= 3.2025.0507)
|
|
94
|
-
mime-types-data (3.
|
|
100
|
+
mime-types-data (3.2026.0701)
|
|
95
101
|
minitest (5.27.0)
|
|
96
|
-
minitest-reporters (1.
|
|
102
|
+
minitest-reporters (1.8.0)
|
|
97
103
|
ansi
|
|
98
104
|
builder
|
|
99
|
-
minitest (>= 5.0)
|
|
105
|
+
minitest (>= 5.0, < 7)
|
|
100
106
|
ruby-progressbar
|
|
101
107
|
multipart-post (2.4.1)
|
|
102
108
|
net-http (0.9.1)
|
|
103
109
|
uri (>= 0.11.1)
|
|
104
110
|
nio4r (2.7.5)
|
|
105
|
-
oj (3.
|
|
111
|
+
oj (3.17.6)
|
|
106
112
|
bigdecimal (>= 3.0)
|
|
107
113
|
ostruct (>= 0.2)
|
|
108
114
|
ostruct (0.6.3)
|
|
109
|
-
parallel (
|
|
110
|
-
parser (3.3.
|
|
115
|
+
parallel (2.2.0)
|
|
116
|
+
parser (3.3.12.0)
|
|
111
117
|
ast (~> 2.4.1)
|
|
112
118
|
racc
|
|
113
119
|
pastel (0.8.0)
|
|
114
120
|
tty-color (~> 0.5)
|
|
115
|
-
prism (1.
|
|
116
|
-
public_suffix (7.0.
|
|
117
|
-
puma (
|
|
121
|
+
prism (1.9.0)
|
|
122
|
+
public_suffix (7.0.5)
|
|
123
|
+
puma (8.0.2)
|
|
118
124
|
nio4r (~> 2.0)
|
|
119
125
|
racc (1.8.1)
|
|
120
|
-
rack (3.2.
|
|
126
|
+
rack (3.2.7)
|
|
121
127
|
rackup (2.3.1)
|
|
122
128
|
rack (>= 3)
|
|
123
129
|
rainbow (3.1.1)
|
|
124
|
-
rake (13.
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
130
|
+
rake (13.4.2)
|
|
131
|
+
reek (6.5.0)
|
|
132
|
+
dry-schema (~> 1.13)
|
|
133
|
+
logger (~> 1.6)
|
|
134
|
+
parser (~> 3.3.0)
|
|
135
|
+
rainbow (>= 2.0, < 4.0)
|
|
136
|
+
rexml (~> 3.1)
|
|
137
|
+
regexp_parser (2.12.0)
|
|
138
|
+
rexml (3.4.4)
|
|
139
|
+
rubocop (1.90.0)
|
|
140
|
+
json (>= 2.3)
|
|
128
141
|
language_server-protocol (~> 3.17.0.2)
|
|
129
142
|
lint_roller (~> 1.1.0)
|
|
130
|
-
parallel (
|
|
143
|
+
parallel (>= 1.10)
|
|
131
144
|
parser (>= 3.3.0.2)
|
|
132
145
|
rainbow (>= 2.2.2, < 4.0)
|
|
133
146
|
regexp_parser (>= 2.9.3, < 3.0)
|
|
134
|
-
rubocop-ast (>= 1.
|
|
147
|
+
rubocop-ast (>= 1.49.0, < 2.0)
|
|
135
148
|
ruby-progressbar (~> 1.7)
|
|
136
149
|
unicode-display_width (>= 2.4.0, < 4.0)
|
|
137
|
-
rubocop-ast (1.
|
|
150
|
+
rubocop-ast (1.50.0)
|
|
138
151
|
parser (>= 3.3.7.2)
|
|
139
152
|
prism (~> 1.7)
|
|
140
|
-
ruby-next-core (1.1
|
|
153
|
+
ruby-next-core (1.2.1)
|
|
141
154
|
ruby-progressbar (1.13.0)
|
|
142
|
-
ruby_llm (1.
|
|
155
|
+
ruby_llm (1.16.0)
|
|
143
156
|
base64
|
|
144
157
|
event_stream_parser (~> 1)
|
|
145
158
|
faraday (>= 1.10.0)
|
|
146
159
|
faraday-multipart (>= 1)
|
|
147
160
|
faraday-net_http (>= 1)
|
|
148
161
|
faraday-retry (>= 1)
|
|
149
|
-
marcel (~> 1
|
|
150
|
-
ruby_llm-schema (~> 0
|
|
162
|
+
marcel (~> 1)
|
|
163
|
+
ruby_llm-schema (~> 0)
|
|
151
164
|
zeitwerk (~> 2)
|
|
152
|
-
ruby_llm-mcp (0.
|
|
165
|
+
ruby_llm-mcp (1.0.1)
|
|
153
166
|
httpx (~> 1.4)
|
|
154
|
-
json-schema (
|
|
167
|
+
json-schema (>= 5.0, < 7)
|
|
168
|
+
json_schemer (~> 2.4)
|
|
155
169
|
ruby_llm (~> 1.9)
|
|
156
170
|
zeitwerk (~> 2)
|
|
157
|
-
ruby_llm-schema (0.
|
|
158
|
-
|
|
171
|
+
ruby_llm-schema (0.4.0)
|
|
172
|
+
ruby_parser (3.22.0)
|
|
173
|
+
racc (~> 1.5)
|
|
174
|
+
sexp_processor (~> 4.16)
|
|
175
|
+
sequel (5.108.0)
|
|
159
176
|
bigdecimal
|
|
177
|
+
sexp_processor (4.17.5)
|
|
160
178
|
simplecov (0.22.0)
|
|
161
179
|
docile (~> 1.1)
|
|
162
180
|
simplecov-html (~> 0.11)
|
|
163
181
|
simplecov_json_formatter (~> 0.1)
|
|
164
182
|
simplecov-html (0.13.2)
|
|
165
183
|
simplecov_json_formatter (0.1.4)
|
|
166
|
-
|
|
184
|
+
simpleidn (0.3.0)
|
|
185
|
+
sqlite3 (2.9.6-arm64-darwin)
|
|
167
186
|
strings (0.2.1)
|
|
168
187
|
strings-ansi (~> 0.2)
|
|
169
188
|
unicode-display_width (>= 1.5, < 3.0)
|
|
170
189
|
unicode_utils (~> 1.4)
|
|
171
190
|
strings-ansi (0.2.0)
|
|
172
|
-
thor (1.
|
|
191
|
+
thor (1.5.0)
|
|
173
192
|
tty-color (0.6.0)
|
|
174
193
|
tty-cursor (0.7.1)
|
|
175
194
|
tty-screen (0.8.2)
|
|
@@ -182,16 +201,20 @@ GEM
|
|
|
182
201
|
unicode-display_width (2.6.0)
|
|
183
202
|
unicode_utils (1.4.0)
|
|
184
203
|
uri (1.1.1)
|
|
185
|
-
zeitwerk (2.
|
|
204
|
+
zeitwerk (2.8.3)
|
|
186
205
|
|
|
187
206
|
PLATFORMS
|
|
188
207
|
arm64-darwin
|
|
189
208
|
|
|
190
209
|
DEPENDENCIES
|
|
191
210
|
bundler
|
|
211
|
+
fasterer
|
|
192
212
|
minitest (~> 5.0)
|
|
193
213
|
minitest-reporters (~> 1.6)
|
|
214
|
+
puma (>= 7.2.1)
|
|
215
|
+
rackup
|
|
194
216
|
rake (~> 13.0)
|
|
217
|
+
reek
|
|
195
218
|
rubocop (~> 1.0)
|
|
196
219
|
ruby_llm
|
|
197
220
|
ruby_llm-mcp
|
|
@@ -199,74 +222,82 @@ DEPENDENCIES
|
|
|
199
222
|
trak_flow!
|
|
200
223
|
|
|
201
224
|
CHECKSUMS
|
|
202
|
-
addressable (2.
|
|
203
|
-
ansi (1.
|
|
204
|
-
anyway_config (2.
|
|
225
|
+
addressable (2.9.0) sha256=7fdf6ac3660f7f4e867a0838be3f6cf722ace541dd97767fa42bc6cfa980c7af
|
|
226
|
+
ansi (1.6.0) sha256=ac9ea0c0ea8d32fb4e271348e609963ac78882f34b73836c2a02b3622e666658
|
|
227
|
+
anyway_config (2.8.1) sha256=541842b25117fac3e277670c32dc09d3b715b20404826a6538ac35527583624f
|
|
205
228
|
ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
|
|
206
229
|
base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
|
|
207
|
-
bigdecimal (
|
|
230
|
+
bigdecimal (4.1.2) sha256=53d217666027eab4280346fba98e7d5b66baaae1b9c3c1c0ffe89d48188a3fbd
|
|
208
231
|
builder (3.3.0) sha256=497918d2f9dca528fdca4b88d84e4ef4387256d984b8154e9d5d3fe5a9c8835f
|
|
209
|
-
concurrent-ruby (1.3.
|
|
232
|
+
concurrent-ruby (1.3.8) sha256=b2f1be836e968ccc78ccfce277ea79c72a88633f22306782c16ff23fb415d1e1
|
|
210
233
|
debug_me (1.1.3) sha256=ae8cf61993350d9b3cbe337a7f9a0f595be5b4976c10891a4e1eacc63d09f717
|
|
211
234
|
docile (1.4.1) sha256=96159be799bfa73cdb721b840e9802126e4e03dfc26863db73647204c727f21e
|
|
212
|
-
dry-configurable (1.
|
|
235
|
+
dry-configurable (1.4.0) sha256=e35d1b5f3c081753ef361f564919db79000f32cfa6f20ee3a3ba5921b41b73ce
|
|
213
236
|
dry-core (1.2.0) sha256=0cc5a7da88df397f153947eeeae42e876e999c1e30900f3c536fb173854e96a1
|
|
214
|
-
dry-inflector (1.
|
|
237
|
+
dry-inflector (1.3.1) sha256=7fb0c2bb04f67638f25c52e7ba39ab435d922a3a5c3cd196120f63accb682dcc
|
|
215
238
|
dry-initializer (3.2.0) sha256=37d59798f912dc0a1efe14a4db4a9306989007b302dcd5f25d0a2a20c166c4e3
|
|
216
239
|
dry-logic (1.6.0) sha256=da6fedbc0f90fc41f9b0cc7e6f05f5d529d1efaef6c8dcc8e0733f685745cea2
|
|
217
|
-
dry-schema (1.
|
|
218
|
-
dry-types (1.
|
|
240
|
+
dry-schema (1.16.0) sha256=cd3aaeabc0f1af66ec82a29096d4c4fb92a0a58b9dae29a22b1bbceb78985727
|
|
241
|
+
dry-types (1.9.1) sha256=baebeecdb9f8395d6c9d227b62011279440943e3ef2468fe8ccc1ba11467f178
|
|
219
242
|
event_stream_parser (1.0.0) sha256=a2683bab70126286f8184dc88f7968ffc4028f813161fb073ec90d171f7de3c8
|
|
220
|
-
faraday (2.14.
|
|
243
|
+
faraday (2.14.3) sha256=1882247e6766615c8220b4392bf1d27f6ebb63d8e28267587cef1fb0bf37f278
|
|
221
244
|
faraday-multipart (1.2.0) sha256=7d89a949693714176f612323ca13746a2ded204031a6ba528adee788694ef757
|
|
222
|
-
faraday-net_http (3.4.
|
|
245
|
+
faraday-net_http (3.4.4) sha256=0e78af151747ed1b00f33e25973b4bc220d7f16c00c39676817c8b12331eb588
|
|
223
246
|
faraday-retry (2.4.0) sha256=7b79c48fb7e56526faf247b12d94a680071ff40c9fda7cf1ec1549439ad11ebe
|
|
224
247
|
fast-mcp (1.6.0) sha256=d68abb45d2daab9e7ae2934417460e4bf9ac87493c585dc5bb626f1afb7d12c4
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
248
|
+
fasterer (0.11.0) sha256=9c38b77583584f3339a729eb077fd8f2856a317abe747528f6563d7c23e9dda8
|
|
249
|
+
hana (1.3.7) sha256=5425db42d651fea08859811c29d20446f16af196308162894db208cac5ce9b0d
|
|
250
|
+
http-2 (1.2.2) sha256=81b5d45f50fd4cd5f8c5d09651184bec9401e3ef169c3eb3e5b003d5614a92b9
|
|
251
|
+
httpx (1.8.3) sha256=cb88f2285c4ef17164d803a640dc393d28722cba7f282ad0e7f9f926cd02dc47
|
|
252
|
+
json (2.21.2) sha256=1f1d3b7cf2b3ba1a69beca0bb6db13d5438b80bff3cd54cdaaa620b9b07c1c6a
|
|
253
|
+
json-schema (6.2.0) sha256=e8bff46ed845a22c1ab2bd0d7eccf831c01fe23bb3920caa4c74db4306813666
|
|
254
|
+
json_schemer (2.5.0) sha256=2f01fb4cce721a4e08dd068fc2030cffd0702a7f333f1ea2be6e8991f00ae396
|
|
255
|
+
language_server-protocol (3.17.0.6) sha256=5ef2c0c138f8267e1bc631d3328347d354f96724b0af22f2c79516120443b7f0
|
|
230
256
|
lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
|
|
231
257
|
logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
|
|
232
|
-
marcel (1.1
|
|
258
|
+
marcel (1.2.1) sha256=1678e9360e32f9eafa917c80029e2f6d10b2715c66a4b87b6d0da9b9cd1f859f
|
|
233
259
|
mime-types (3.7.0) sha256=dcebf61c246f08e15a4de34e386ebe8233791e868564a470c3fe77c00eed5e56
|
|
234
|
-
mime-types-data (3.
|
|
260
|
+
mime-types-data (3.2026.0701) sha256=cd8811e1fb89d836499ba0582368a10ee74cef929ba956d1d5ddca045e6a730f
|
|
235
261
|
minitest (5.27.0) sha256=2d3b17f8a36fe7801c1adcffdbc38233b938eb0b4966e97a6739055a45fa77d5
|
|
236
|
-
minitest-reporters (1.
|
|
262
|
+
minitest-reporters (1.8.0) sha256=8ce5280fb73ad3178ae525454df169b6f28c1b38b1d088ea91815d3a370ba384
|
|
237
263
|
multipart-post (2.4.1) sha256=9872d03a8e552020ca096adadbf5e3cb1cd1cdd6acd3c161136b8a5737cdb4a8
|
|
238
264
|
net-http (0.9.1) sha256=25ba0b67c63e89df626ed8fac771d0ad24ad151a858af2cc8e6a716ca4336996
|
|
239
265
|
nio4r (2.7.5) sha256=6c90168e48fb5f8e768419c93abb94ba2b892a1d0602cb06eef16d8b7df1dca1
|
|
240
|
-
oj (3.
|
|
266
|
+
oj (3.17.6) sha256=f511257e01a12030c3ceb8023cd2e96fca924ea9c741f57ea366816f1fd8e68c
|
|
241
267
|
ostruct (0.6.3) sha256=95a2ed4a4bd1d190784e666b47b2d3f078e4a9efda2fccf18f84ddc6538ed912
|
|
242
|
-
parallel (
|
|
243
|
-
parser (3.3.
|
|
268
|
+
parallel (2.2.0) sha256=e1059c5fd7b649558a0aec38a769f06a42942bdb40503d005a59c352fe011cd8
|
|
269
|
+
parser (3.3.12.0) sha256=21a6d7f755d5a24dfbdc6e6b772e4e879a52e7631a88bc5a3a134606052c9828
|
|
244
270
|
pastel (0.8.0) sha256=481da9fb7d2f6e6b1a08faf11fa10363172dc40fd47848f096ae21209f805a75
|
|
245
|
-
prism (1.
|
|
246
|
-
public_suffix (7.0.
|
|
247
|
-
puma (
|
|
271
|
+
prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
|
|
272
|
+
public_suffix (7.0.5) sha256=1a8bb08f1bbea19228d3bed6e5ed908d1cb4f7c2726d18bd9cadf60bc676f623
|
|
273
|
+
puma (8.0.2) sha256=c8ed871dfbbe66448ea9ffd46692342d9804d4071522b52b5331b7b6e7b686fb
|
|
248
274
|
racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
|
|
249
|
-
rack (3.2.
|
|
275
|
+
rack (3.2.7) sha256=93e13e1c24f93556671d85d2d79fa228c3485815c50d7e2f265b5330c6528fb7
|
|
250
276
|
rackup (2.3.1) sha256=6c79c26753778e90983761d677a48937ee3192b3ffef6bc963c0950f94688868
|
|
251
277
|
rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
|
|
252
|
-
rake (13.
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
278
|
+
rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701
|
|
279
|
+
reek (6.5.0) sha256=d26d3a492773b2bbc228888067a21afe33ac07954a17dbd64cdeae42c4c69be1
|
|
280
|
+
regexp_parser (2.12.0) sha256=35a916a1d63190ab5c9009457136ae5f3c0c7512d60291d0d1378ba18ce08ebb
|
|
281
|
+
rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142
|
|
282
|
+
rubocop (1.90.0) sha256=9eb4c065b5c5154e4ef554c547972f3905a9eb6b53e657e580b6796b54bf8242
|
|
283
|
+
rubocop-ast (1.50.0) sha256=b9ca88300da0803ee222ad20cdb30494c0a784eed06fdc35d254b06d662788db
|
|
284
|
+
ruby-next-core (1.2.1) sha256=ddba3e986e127143299a26bde8bdbeedd4bc738a1a765e499f9634f361551f79
|
|
257
285
|
ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
|
|
258
|
-
ruby_llm (1.
|
|
259
|
-
ruby_llm-mcp (0.
|
|
260
|
-
ruby_llm-schema (0.
|
|
261
|
-
|
|
286
|
+
ruby_llm (1.16.0) sha256=26bd5310cf2ce55f74a60f8aae0b0d0327b586ff4532c84828103c3b2b905a18
|
|
287
|
+
ruby_llm-mcp (1.0.1) sha256=22121bfdea1874935debdd9cee0235d02473885ce8347cf745a323f0707fd248
|
|
288
|
+
ruby_llm-schema (0.4.0) sha256=e930f5a5316f9301bff3fb7fe572e44727d05bb8e50621001bbb49a47d63b8da
|
|
289
|
+
ruby_parser (3.22.0) sha256=1eb4937cd9eb220aa2d194e352a24dba90aef00751e24c8dfffdb14000f15d23
|
|
290
|
+
sequel (5.108.0) sha256=ae5996d1196775427916a2fa36e02f99762ead9affb8ea9b1aec2c0b16bdb3a3
|
|
291
|
+
sexp_processor (4.17.5) sha256=ae2b48ba98353d5d465ce8759836b7a05f2e12c5879fcd14d7815b026de32f0e
|
|
262
292
|
simplecov (0.22.0) sha256=fe2622c7834ff23b98066bb0a854284b2729a569ac659f82621fc22ef36213a5
|
|
263
293
|
simplecov-html (0.13.2) sha256=bd0b8e54e7c2d7685927e8d6286466359b6f16b18cb0df47b508e8d73c777246
|
|
264
294
|
simplecov_json_formatter (0.1.4) sha256=529418fbe8de1713ac2b2d612aa3daa56d316975d307244399fa4838c601b428
|
|
265
|
-
|
|
295
|
+
simpleidn (0.3.0) sha256=12ca730bed2f3db04d11e9bfd1bca3e11fb37f55b21eb2e9793fb5814bf54d03
|
|
296
|
+
sqlite3 (2.9.6-arm64-darwin) sha256=849b5d7f795e60fe25076d62c72dd722beb45b3850b516ad978d60ee848ec15b
|
|
266
297
|
strings (0.2.1) sha256=933293b3c95cf85b81eb44b3cf673e3087661ba739bbadfeadf442083158d6fb
|
|
267
298
|
strings-ansi (0.2.0) sha256=90262d760ea4a94cc2ae8d58205277a343409c288cbe7c29416b1826bd511c88
|
|
268
|
-
thor (1.
|
|
269
|
-
trak_flow (0.
|
|
299
|
+
thor (1.5.0) sha256=e3a9e55fe857e44859ce104a84675ab6e8cd59c650a49106a05f55f136425e73
|
|
300
|
+
trak_flow (0.2.0)
|
|
270
301
|
tty-color (0.6.0) sha256=6f9c37ca3a4e2367fb2e6d09722762647d6f455c111f05b59f35730eeb24332a
|
|
271
302
|
tty-cursor (0.7.1) sha256=79534185e6a777888d88628b14b6a1fdf5154a603f285f80b1753e1908e0bf48
|
|
272
303
|
tty-screen (0.8.2) sha256=c090652115beae764336c28802d633f204fb84da93c6a968aa5d8e319e819b50
|
|
@@ -275,7 +306,7 @@ CHECKSUMS
|
|
|
275
306
|
unicode-display_width (2.6.0) sha256=12279874bba6d5e4d2728cef814b19197dbb10d7a7837a869bab65da943b7f5a
|
|
276
307
|
unicode_utils (1.4.0) sha256=b922d0cf2313b6b7136ada6645ce7154ffc86418ca07d53b058efe9eb72f2a40
|
|
277
308
|
uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6
|
|
278
|
-
zeitwerk (2.
|
|
309
|
+
zeitwerk (2.8.3) sha256=2c85125a8467ce069e20123d1e709a08955c9d29c118c25b46b7b7fafdbb92e5
|
|
279
310
|
|
|
280
311
|
BUNDLED WITH
|
|
281
312
|
4.0.3
|
data/README.md
CHANGED
|
@@ -357,8 +357,21 @@ TrakFlow includes a Model Context Protocol (MCP) server that exposes task manage
|
|
|
357
357
|
# STDIO transport (for local development and IDE integrations)
|
|
358
358
|
tf_mcp
|
|
359
359
|
|
|
360
|
-
# HTTP/SSE transport (for remote access and web applications)
|
|
361
|
-
|
|
360
|
+
# HTTP/SSE transport (for remote access and web applications).
|
|
361
|
+
# Needs the optional rackup gem plus a Rack server (puma, falcon, ...)
|
|
362
|
+
# in the bundle — TrakFlow uses whichever one it finds, or the one named
|
|
363
|
+
# in config (mcp.handler / TF_MCP__HANDLER).
|
|
364
|
+
tf_mcp --http 3333
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
Embedding in an app that already runs a Rack server? Skip `tf_mcp --http`
|
|
368
|
+
and mount the transport into the server you have:
|
|
369
|
+
|
|
370
|
+
```ruby
|
|
371
|
+
# config.ru
|
|
372
|
+
map "/mcp" do
|
|
373
|
+
run TrakFlow::Mcp::Server.new.rack_app
|
|
374
|
+
end
|
|
362
375
|
```
|
|
363
376
|
|
|
364
377
|
### Available Tools
|
data/_typos.toml
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# typos-cli configuration — https://github.com/crate-ci/typos
|
|
2
|
+
|
|
3
|
+
[default.extend-words]
|
|
4
|
+
# The gem's name is "trak_flow" — "trak" is intentional, not a typo.
|
|
5
|
+
trak = "trak"
|
|
6
|
+
|
|
7
|
+
[files]
|
|
8
|
+
# Generated artifacts are not spell-checked: mkdocs output, SimpleCov
|
|
9
|
+
# reports, built .gem packages, and the asgard quality gates' own
|
|
10
|
+
# *_output.txt report files.
|
|
11
|
+
extend-exclude = [
|
|
12
|
+
"site/",
|
|
13
|
+
"coverage/",
|
|
14
|
+
"pkg/",
|
|
15
|
+
"Gemfile.lock",
|
|
16
|
+
"*_output.txt",
|
|
17
|
+
]
|
data/docs/api/ruby-library.md
CHANGED
|
@@ -58,7 +58,7 @@ trak = TrakFlow.new(
|
|
|
58
58
|
### Configuration from File
|
|
59
59
|
|
|
60
60
|
```ruby
|
|
61
|
-
trak = TrakFlow.from_config("/path/to/config.
|
|
61
|
+
trak = TrakFlow.from_config("/path/to/config.yml")
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
## Core Classes
|
|
@@ -183,7 +183,7 @@ db.dependencies_for(task_id)
|
|
|
183
183
|
JSONL file storage.
|
|
184
184
|
|
|
185
185
|
```ruby
|
|
186
|
-
jsonl = TrakFlow::Storage::Jsonl.new("/path/to/
|
|
186
|
+
jsonl = TrakFlow::Storage::Jsonl.new("/path/to/tasks.jsonl")
|
|
187
187
|
|
|
188
188
|
# Load all tasks
|
|
189
189
|
tasks = jsonl.load_all
|
data/docs/cli/admin-commands.md
CHANGED
|
@@ -34,9 +34,9 @@ tf admin init --force
|
|
|
34
34
|
|
|
35
35
|
```
|
|
36
36
|
.trak_flow/
|
|
37
|
-
├──
|
|
37
|
+
├── tasks.jsonl # Task data
|
|
38
38
|
├── trak_flow.db # SQLite cache
|
|
39
|
-
└── config.
|
|
39
|
+
└── config.yml # Configuration
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
## Export Data
|
|
@@ -365,5 +365,5 @@ Add to your git workflow:
|
|
|
365
365
|
```bash
|
|
366
366
|
# .git/hooks/pre-commit
|
|
367
367
|
#!/bin/bash
|
|
368
|
-
cp .trak_flow/
|
|
368
|
+
cp .trak_flow/tasks.jsonl .trak_flow/tasks.jsonl.bak
|
|
369
369
|
```
|
|
@@ -135,9 +135,9 @@ TrakFlow uses a dual-storage approach:
|
|
|
135
135
|
|
|
136
136
|
```
|
|
137
137
|
.trak_flow/
|
|
138
|
-
├──
|
|
138
|
+
├── tasks.jsonl # Source of truth (git-tracked)
|
|
139
139
|
├── trak_flow.db # Fast cache (gitignored)
|
|
140
|
-
└── config.
|
|
140
|
+
└── config.yml # Settings (git-tracked)
|
|
141
141
|
```
|
|
142
142
|
|
|
143
143
|
### JSONL Format
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Configuration
|
|
2
2
|
|
|
3
|
-
TrakFlow stores configuration in `.trak_flow/config.
|
|
3
|
+
TrakFlow stores configuration in `.trak_flow/config.yml`.
|
|
4
4
|
|
|
5
5
|
## View Current Configuration
|
|
6
6
|
|
|
@@ -102,7 +102,7 @@ Some settings can be overridden via environment variables:
|
|
|
102
102
|
Delete the config file to reset:
|
|
103
103
|
|
|
104
104
|
```bash
|
|
105
|
-
rm .trak_flow/config.
|
|
105
|
+
rm .trak_flow/config.yml
|
|
106
106
|
tf init # Recreates with defaults
|
|
107
107
|
```
|
|
108
108
|
|
|
@@ -54,9 +54,9 @@ tf init
|
|
|
54
54
|
|
|
55
55
|
This creates a `.trak_flow/` directory with:
|
|
56
56
|
|
|
57
|
-
- `
|
|
57
|
+
- `tasks.jsonl` - Git-tracked task storage
|
|
58
58
|
- `trak_flow.db` - SQLite cache (gitignored)
|
|
59
|
-
- `config.
|
|
59
|
+
- `config.yml` - Project configuration
|
|
60
60
|
- `.gitignore` - Ignores the database file
|
|
61
61
|
|
|
62
62
|
## Dependencies
|
|
@@ -66,12 +66,29 @@ TrakFlow depends on these gems (installed automatically):
|
|
|
66
66
|
| Gem | Purpose |
|
|
67
67
|
|-----|---------|
|
|
68
68
|
| `thor` | CLI framework |
|
|
69
|
+
| `sequel` | Database toolkit |
|
|
69
70
|
| `sqlite3` | Local database |
|
|
70
71
|
| `oj` | Fast JSON parsing |
|
|
72
|
+
| `anyway_config` | Configuration management |
|
|
71
73
|
| `pastel` | Terminal colors |
|
|
72
|
-
| `tty-table` |
|
|
73
|
-
| `
|
|
74
|
-
| `
|
|
74
|
+
| `tty-table` / `tty-spinner` | Terminal formatting |
|
|
75
|
+
| `fast-mcp` | MCP server support |
|
|
76
|
+
| `debug_me` | Debug output |
|
|
77
|
+
|
|
78
|
+
### Optional: MCP HTTP transport
|
|
79
|
+
|
|
80
|
+
The MCP server's HTTP/SSE transport is opt-in — TrakFlow does not bundle a
|
|
81
|
+
web server. Add the `rackup` gem plus any Rack server that supports
|
|
82
|
+
`rack.hijack` (Puma, Falcon, WEBrick, ...) to your Gemfile:
|
|
83
|
+
|
|
84
|
+
```ruby
|
|
85
|
+
gem "rackup"
|
|
86
|
+
gem "puma" # or falcon, webrick, ... — skip if your app already has one
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
If your application already runs its own Rack server, you don't need any of
|
|
90
|
+
this: mount `TrakFlow::Mcp::Server.new.rack_app` into it instead. The STDIO
|
|
91
|
+
transport (the default) needs nothing extra.
|
|
75
92
|
|
|
76
93
|
## Next Steps
|
|
77
94
|
|
data/docs/index.md
CHANGED
|
@@ -129,8 +129,8 @@ tf_mcp --http --port 3333
|
|
|
129
129
|
```
|
|
130
130
|
.trak_flow/
|
|
131
131
|
├── trak_flow.db # SQLite database (gitignored)
|
|
132
|
-
├──
|
|
133
|
-
├── config.
|
|
132
|
+
├── tasks.jsonl # Git-tracked source of truth
|
|
133
|
+
├── config.yml # Project configuration
|
|
134
134
|
└── .gitignore
|
|
135
135
|
```
|
|
136
136
|
|
data/docs/mcp/integration.md
CHANGED
|
@@ -110,7 +110,7 @@ require 'ruby_llm/mcp'
|
|
|
110
110
|
# Connect via HTTP/SSE
|
|
111
111
|
client = RubyLLM::MCP::Client.new(
|
|
112
112
|
transport_type: :sse,
|
|
113
|
-
url: "http://localhost:
|
|
113
|
+
url: "http://localhost:3333/mcp/sse"
|
|
114
114
|
)
|
|
115
115
|
|
|
116
116
|
# Same API as STDIO
|
|
@@ -191,27 +191,30 @@ console.log('Created:', result);
|
|
|
191
191
|
|
|
192
192
|
## HTTP API (Direct)
|
|
193
193
|
|
|
194
|
-
For applications that can't use MCP directly, start the HTTP server
|
|
194
|
+
For applications that can't use MCP directly, start the HTTP server
|
|
195
|
+
(requires the optional `rackup` gem plus a Rack server such as Puma in
|
|
196
|
+
the bundle — or mount `TrakFlow::Mcp::Server.new.rack_app` into your
|
|
197
|
+
app's existing Rack server):
|
|
195
198
|
|
|
196
199
|
```bash
|
|
197
|
-
|
|
200
|
+
tf_mcp --http 3333
|
|
198
201
|
```
|
|
199
202
|
|
|
200
203
|
### Endpoints
|
|
201
204
|
|
|
202
205
|
| Endpoint | Method | Description |
|
|
203
206
|
|----------|--------|-------------|
|
|
204
|
-
| `/sse` | GET | SSE connection for MCP messages |
|
|
205
|
-
| `/messages` | POST | Send MCP request |
|
|
207
|
+
| `/mcp/sse` | GET | SSE connection for MCP messages |
|
|
208
|
+
| `/mcp/messages` | POST | Send MCP request |
|
|
206
209
|
|
|
207
210
|
### Example with curl
|
|
208
211
|
|
|
209
212
|
```bash
|
|
210
213
|
# Initialize session (returns session ID in SSE stream)
|
|
211
|
-
curl -N http://localhost:
|
|
214
|
+
curl -N http://localhost:3333/mcp/sse &
|
|
212
215
|
|
|
213
216
|
# Send a tool call
|
|
214
|
-
curl -X POST http://localhost:
|
|
217
|
+
curl -X POST http://localhost:3333/mcp/messages \
|
|
215
218
|
-H "Content-Type: application/json" \
|
|
216
219
|
-d '{
|
|
217
220
|
"method": "tools/call",
|
|
@@ -232,7 +235,7 @@ require 'trak_flow/mcp'
|
|
|
232
235
|
# Create server with custom configuration
|
|
233
236
|
server = TrakFlow::Mcp::Server.new(
|
|
234
237
|
db_path: "/custom/path/trak_flow.db",
|
|
235
|
-
jsonl_path: "/custom/path/
|
|
238
|
+
jsonl_path: "/custom/path/tasks.jsonl"
|
|
236
239
|
)
|
|
237
240
|
|
|
238
241
|
# STDIO mode
|