sessionkit 0.3.2__tar.gz → 0.3.3__tar.gz
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.
- {sessionkit-0.3.2 → sessionkit-0.3.3}/PKG-INFO +41 -32
- {sessionkit-0.3.2 → sessionkit-0.3.3}/README.md +34 -26
- {sessionkit-0.3.2 → sessionkit-0.3.3}/pyproject.toml +8 -6
- {sessionkit-0.3.2 → sessionkit-0.3.3}/pyproject.toml.orig +25 -11
- sessionkit-0.3.3/src/sessionkit/cli.py +468 -0
- sessionkit-0.3.3/src/sessionkit/docs/what-listens.md +66 -0
- {sessionkit-0.3.2 → sessionkit-0.3.3}/src/sessionkit/doctor.py +105 -13
- {sessionkit-0.3.2 → sessionkit-0.3.3}/src/sessionkit/install.sh +97 -0
- sessionkit-0.3.3/src/sessionkit/launchd.py +228 -0
- sessionkit-0.3.3/src/sessionkit/service.schema.json +31 -0
- sessionkit-0.3.3/src/sessionkit/services.py +674 -0
- {sessionkit-0.3.2 → sessionkit-0.3.3}/src/sessionkit/setup.py +115 -27
- sessionkit-0.3.2/src/sessionkit/cli.py +0 -196
- {sessionkit-0.3.2 → sessionkit-0.3.3}/LICENSE +0 -0
- {sessionkit-0.3.2 → sessionkit-0.3.3}/src/sessionkit/__init__.py +0 -0
- {sessionkit-0.3.2 → sessionkit-0.3.3}/src/sessionkit/py.typed +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sessionkit
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
4
4
|
Summary: Session Kit gives your Claude Code sessions voice, mail, a phone line and a tmux sidebar, in one install.
|
|
5
5
|
Author: Mike Bailey
|
|
6
6
|
Author-email: Mike Bailey <mike@sessionkit.ai>
|
|
@@ -8,11 +8,12 @@ License-Expression: AGPL-3.0-or-later
|
|
|
8
8
|
License-File: LICENSE
|
|
9
9
|
Classifier: Development Status :: 3 - Alpha
|
|
10
10
|
Requires-Dist: click>=8.1
|
|
11
|
-
Requires-Dist: sessionmail>=0.3.
|
|
12
|
-
Requires-Dist: sessiontools>=0.3.
|
|
13
|
-
Requires-Dist: sessionphone[media]>=0.3.
|
|
14
|
-
Requires-Dist: sessionview>=0.3.
|
|
15
|
-
Requires-Dist: sessionvoice[capture]>=0.3.
|
|
11
|
+
Requires-Dist: sessionmail>=0.3.3
|
|
12
|
+
Requires-Dist: sessiontools>=0.3.3
|
|
13
|
+
Requires-Dist: sessionphone[media]>=0.3.3
|
|
14
|
+
Requires-Dist: sessionview>=0.3.3
|
|
15
|
+
Requires-Dist: sessionvoice[capture]>=0.3.3
|
|
16
|
+
Requires-Dist: settled[kit]>=0.1.0
|
|
16
17
|
Requires-Python: >=3.11, <3.15
|
|
17
18
|
Project-URL: Homepage, https://github.com/sessionkit/sessionkit
|
|
18
19
|
Project-URL: Repository, https://github.com/sessionkit/sessionkit
|
|
@@ -197,32 +198,28 @@ starts them ([hearing and speaking][hearing]), refuses with
|
|
|
197
198
|
`silero MISSING`. The Swift helper is built later, when those services start.
|
|
198
199
|
|
|
199
200
|
- **The mail hooks start off.** They tell an agent about new mail between
|
|
200
|
-
its tool calls.
|
|
201
|
-
`~/.sessionkit/mail/settings/mail.json`. The plugin writes that file,
|
|
202
|
-
with the hooks off, the first time a Claude Code session runs a tool,
|
|
203
|
-
and it holds other settings too, so change only that key. Never write
|
|
204
|
-
the file over: that deletes the other keys. This works whether the file
|
|
205
|
-
is there yet or not, and whether it has a `hooks` key or not:
|
|
201
|
+
its tool calls. Turn them on with sessionmail's own command:
|
|
206
202
|
|
|
207
203
|
```bash
|
|
208
|
-
|
|
209
|
-
if [ -f "$f" ]; then
|
|
210
|
-
perl -0777 -pi -e '
|
|
211
|
-
if (/"hooks"\s*:/) { s/"hooks"\s*:\s*false/"hooks": true/ }
|
|
212
|
-
elsif (/\A\s*\{\s*\}\s*\z/) { s/\{\s*\}/{"hooks": true}/ }
|
|
213
|
-
else { s/\{(\s*)/"{$1" . q("hooks": true,) . ($1 || " ")/e }
|
|
214
|
-
' "$f"
|
|
215
|
-
else
|
|
216
|
-
mkdir -p ~/.sessionkit/mail/settings
|
|
217
|
-
echo '{"version": 1, "hooks": true, "sendmail": "drop"}' > "$f"
|
|
218
|
-
fi
|
|
204
|
+
pager settings hooks on
|
|
219
205
|
```
|
|
220
206
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
207
|
+
- It sets only `"hooks": true` in
|
|
208
|
+
`~/.sessionkit/mail/settings/mail.json`, and keeps every other key in
|
|
209
|
+
that file. With no file yet, it makes one, with the hooks on.
|
|
210
|
+
- Each session's next hook reads it. A second run writes nothing.
|
|
211
|
+
- To turn them off again:
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
pager settings hooks off
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
- To see which they are, run it bare. It changes nothing, and exits 0
|
|
218
|
+
for on, 3 for off:
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
pager settings hooks
|
|
222
|
+
```
|
|
226
223
|
|
|
227
224
|
Step by step, with every step that needs you marked: [the manual
|
|
228
225
|
install][install].
|
|
@@ -252,8 +249,8 @@ The phone bot and the session key are shown, but they never fail it.
|
|
|
252
249
|
sessionkit --version
|
|
253
250
|
```
|
|
254
251
|
|
|
255
|
-
It lists the kit
|
|
256
|
-
is the version you installed:
|
|
252
|
+
It lists the kit, each family package and settled, the Settings app, each
|
|
253
|
+
with its version. Each `X.Y.Z` is the version you installed:
|
|
257
254
|
|
|
258
255
|
```text
|
|
259
256
|
sessionkit, version X.Y.Z
|
|
@@ -262,6 +259,7 @@ sessionkit, version X.Y.Z
|
|
|
262
259
|
sessionphone X.Y.Z
|
|
263
260
|
sessionview X.Y.Z
|
|
264
261
|
sessionvoice X.Y.Z
|
|
262
|
+
settled X.Y.Z
|
|
265
263
|
```
|
|
266
264
|
|
|
267
265
|
Start Claude in a project folder, not in your home folder, where a new
|
|
@@ -328,6 +326,11 @@ mouth say "the build is green"
|
|
|
328
326
|
`mouth devices` lists the others, and `--device DEVICE` picks one.
|
|
329
327
|
- **To hear you**, the ears need a speech-to-text server: [hearing and
|
|
330
328
|
speaking][hearing].
|
|
329
|
+
- **See the conversation in a browser.** Talk shows what the ears heard,
|
|
330
|
+
what the mouth said, and which seats heard it. Start it with
|
|
331
|
+
`ears services install --only talk`, then run `talk pair` in a terminal
|
|
332
|
+
on the same Mac and open the link it prints. Each browser pairs once
|
|
333
|
+
([Talk][talk]).
|
|
331
334
|
- **Your agent talks with the kit's mouth and ears.** sessionvoice's ears
|
|
332
335
|
skill sets the default:
|
|
333
336
|
|
|
@@ -377,10 +380,14 @@ Session Kit installs these together:
|
|
|
377
380
|
- [sessionview][pkg-view]: a tmux sidebar of your projects and your agents.
|
|
378
381
|
`sessionview` (said "session view").
|
|
379
382
|
|
|
383
|
+
It also installs settled, the Settings app: `settled`. It is not one of the
|
|
384
|
+
five: it has its own version, and no Claude Code plugin.
|
|
385
|
+
|
|
380
386
|
## Components
|
|
381
387
|
|
|
382
388
|
The commands, services and folders the install adds, and where each
|
|
383
|
-
package logs: [components][components].
|
|
389
|
+
package logs: [components][components]. To see the services and restart
|
|
390
|
+
one: [sessionkit service][service].
|
|
384
391
|
|
|
385
392
|
## Configuration
|
|
386
393
|
|
|
@@ -408,7 +415,7 @@ The rules for changing the kit: [AGENTS.md][agents].
|
|
|
408
415
|
|
|
409
416
|
## Status
|
|
410
417
|
|
|
411
|
-
Alpha, 0.3.
|
|
418
|
+
Alpha, 0.3.3. Tested on macOS 27 on Apple silicon; Linux and Windows are
|
|
412
419
|
untested. What you may still hit: [known gaps][gaps].
|
|
413
420
|
|
|
414
421
|
Licence: [AGPL-3.0][licence].
|
|
@@ -424,10 +431,12 @@ Licence: [AGPL-3.0][licence].
|
|
|
424
431
|
[uninstall]: INSTALL.md#8-uninstall
|
|
425
432
|
[gaps]: INSTALL.md#7-known-gaps-you-will-hit
|
|
426
433
|
[components]: docs/components.md
|
|
434
|
+
[service]: docs/service.md
|
|
427
435
|
[dependencies]: docs/dependencies.md
|
|
428
436
|
[logs]: docs/components.md#logs
|
|
429
437
|
[configuration]: docs/configuration.md
|
|
430
438
|
[settings]: docs/settings.md
|
|
439
|
+
[talk]: docs/talk.md
|
|
431
440
|
[troubleshooting]: docs/troubleshooting.md
|
|
432
441
|
[agents]: AGENTS.md
|
|
433
442
|
[licence]: LICENSE
|
|
@@ -177,32 +177,28 @@ starts them ([hearing and speaking][hearing]), refuses with
|
|
|
177
177
|
`silero MISSING`. The Swift helper is built later, when those services start.
|
|
178
178
|
|
|
179
179
|
- **The mail hooks start off.** They tell an agent about new mail between
|
|
180
|
-
its tool calls.
|
|
181
|
-
`~/.sessionkit/mail/settings/mail.json`. The plugin writes that file,
|
|
182
|
-
with the hooks off, the first time a Claude Code session runs a tool,
|
|
183
|
-
and it holds other settings too, so change only that key. Never write
|
|
184
|
-
the file over: that deletes the other keys. This works whether the file
|
|
185
|
-
is there yet or not, and whether it has a `hooks` key or not:
|
|
180
|
+
its tool calls. Turn them on with sessionmail's own command:
|
|
186
181
|
|
|
187
182
|
```bash
|
|
188
|
-
|
|
189
|
-
if [ -f "$f" ]; then
|
|
190
|
-
perl -0777 -pi -e '
|
|
191
|
-
if (/"hooks"\s*:/) { s/"hooks"\s*:\s*false/"hooks": true/ }
|
|
192
|
-
elsif (/\A\s*\{\s*\}\s*\z/) { s/\{\s*\}/{"hooks": true}/ }
|
|
193
|
-
else { s/\{(\s*)/"{$1" . q("hooks": true,) . ($1 || " ")/e }
|
|
194
|
-
' "$f"
|
|
195
|
-
else
|
|
196
|
-
mkdir -p ~/.sessionkit/mail/settings
|
|
197
|
-
echo '{"version": 1, "hooks": true, "sendmail": "drop"}' > "$f"
|
|
198
|
-
fi
|
|
183
|
+
pager settings hooks on
|
|
199
184
|
```
|
|
200
185
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
186
|
+
- It sets only `"hooks": true` in
|
|
187
|
+
`~/.sessionkit/mail/settings/mail.json`, and keeps every other key in
|
|
188
|
+
that file. With no file yet, it makes one, with the hooks on.
|
|
189
|
+
- Each session's next hook reads it. A second run writes nothing.
|
|
190
|
+
- To turn them off again:
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
pager settings hooks off
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
- To see which they are, run it bare. It changes nothing, and exits 0
|
|
197
|
+
for on, 3 for off:
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
pager settings hooks
|
|
201
|
+
```
|
|
206
202
|
|
|
207
203
|
Step by step, with every step that needs you marked: [the manual
|
|
208
204
|
install][install].
|
|
@@ -232,8 +228,8 @@ The phone bot and the session key are shown, but they never fail it.
|
|
|
232
228
|
sessionkit --version
|
|
233
229
|
```
|
|
234
230
|
|
|
235
|
-
It lists the kit
|
|
236
|
-
is the version you installed:
|
|
231
|
+
It lists the kit, each family package and settled, the Settings app, each
|
|
232
|
+
with its version. Each `X.Y.Z` is the version you installed:
|
|
237
233
|
|
|
238
234
|
```text
|
|
239
235
|
sessionkit, version X.Y.Z
|
|
@@ -242,6 +238,7 @@ sessionkit, version X.Y.Z
|
|
|
242
238
|
sessionphone X.Y.Z
|
|
243
239
|
sessionview X.Y.Z
|
|
244
240
|
sessionvoice X.Y.Z
|
|
241
|
+
settled X.Y.Z
|
|
245
242
|
```
|
|
246
243
|
|
|
247
244
|
Start Claude in a project folder, not in your home folder, where a new
|
|
@@ -308,6 +305,11 @@ mouth say "the build is green"
|
|
|
308
305
|
`mouth devices` lists the others, and `--device DEVICE` picks one.
|
|
309
306
|
- **To hear you**, the ears need a speech-to-text server: [hearing and
|
|
310
307
|
speaking][hearing].
|
|
308
|
+
- **See the conversation in a browser.** Talk shows what the ears heard,
|
|
309
|
+
what the mouth said, and which seats heard it. Start it with
|
|
310
|
+
`ears services install --only talk`, then run `talk pair` in a terminal
|
|
311
|
+
on the same Mac and open the link it prints. Each browser pairs once
|
|
312
|
+
([Talk][talk]).
|
|
311
313
|
- **Your agent talks with the kit's mouth and ears.** sessionvoice's ears
|
|
312
314
|
skill sets the default:
|
|
313
315
|
|
|
@@ -357,10 +359,14 @@ Session Kit installs these together:
|
|
|
357
359
|
- [sessionview][pkg-view]: a tmux sidebar of your projects and your agents.
|
|
358
360
|
`sessionview` (said "session view").
|
|
359
361
|
|
|
362
|
+
It also installs settled, the Settings app: `settled`. It is not one of the
|
|
363
|
+
five: it has its own version, and no Claude Code plugin.
|
|
364
|
+
|
|
360
365
|
## Components
|
|
361
366
|
|
|
362
367
|
The commands, services and folders the install adds, and where each
|
|
363
|
-
package logs: [components][components].
|
|
368
|
+
package logs: [components][components]. To see the services and restart
|
|
369
|
+
one: [sessionkit service][service].
|
|
364
370
|
|
|
365
371
|
## Configuration
|
|
366
372
|
|
|
@@ -388,7 +394,7 @@ The rules for changing the kit: [AGENTS.md][agents].
|
|
|
388
394
|
|
|
389
395
|
## Status
|
|
390
396
|
|
|
391
|
-
Alpha, 0.3.
|
|
397
|
+
Alpha, 0.3.3. Tested on macOS 27 on Apple silicon; Linux and Windows are
|
|
392
398
|
untested. What you may still hit: [known gaps][gaps].
|
|
393
399
|
|
|
394
400
|
Licence: [AGPL-3.0][licence].
|
|
@@ -404,10 +410,12 @@ Licence: [AGPL-3.0][licence].
|
|
|
404
410
|
[uninstall]: INSTALL.md#8-uninstall
|
|
405
411
|
[gaps]: INSTALL.md#7-known-gaps-you-will-hit
|
|
406
412
|
[components]: docs/components.md
|
|
413
|
+
[service]: docs/service.md
|
|
407
414
|
[dependencies]: docs/dependencies.md
|
|
408
415
|
[logs]: docs/components.md#logs
|
|
409
416
|
[configuration]: docs/configuration.md
|
|
410
417
|
[settings]: docs/settings.md
|
|
418
|
+
[talk]: docs/talk.md
|
|
411
419
|
[troubleshooting]: docs/troubleshooting.md
|
|
412
420
|
[agents]: AGENTS.md
|
|
413
421
|
[licence]: LICENSE
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sessionkit"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.3"
|
|
4
4
|
description = "Session Kit gives your Claude Code sessions voice, mail, a phone line and a tmux sidebar, in one install."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "AGPL-3.0-or-later"
|
|
@@ -9,11 +9,12 @@ classifiers = ["Development Status :: 3 - Alpha"]
|
|
|
9
9
|
requires-python = ">=3.11,<3.15"
|
|
10
10
|
dependencies = [
|
|
11
11
|
"click>=8.1",
|
|
12
|
-
"sessionmail>=0.3.
|
|
13
|
-
"sessiontools>=0.3.
|
|
14
|
-
"sessionphone[media]>=0.3.
|
|
15
|
-
"sessionview>=0.3.
|
|
16
|
-
"sessionvoice[capture]>=0.3.
|
|
12
|
+
"sessionmail>=0.3.3",
|
|
13
|
+
"sessiontools>=0.3.3",
|
|
14
|
+
"sessionphone[media]>=0.3.3",
|
|
15
|
+
"sessionview>=0.3.3",
|
|
16
|
+
"sessionvoice[capture]>=0.3.3",
|
|
17
|
+
"settled[kit]>=0.1.0",
|
|
17
18
|
]
|
|
18
19
|
|
|
19
20
|
[[project.authors]]
|
|
@@ -39,6 +40,7 @@ ears = "ears.cli:main"
|
|
|
39
40
|
ears-serve = "ears.serve:main"
|
|
40
41
|
mouth = "mouth.__main__:main"
|
|
41
42
|
talk = "talk.cli:main"
|
|
43
|
+
settled = "settled.cli:main"
|
|
42
44
|
|
|
43
45
|
[build-system]
|
|
44
46
|
requires = ["uv_build>=0.11.9,<0.12.0"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sessionkit"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.3"
|
|
4
4
|
description = "Session Kit gives your Claude Code sessions voice, mail, a phone line and a tmux sidebar, in one install."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "AGPL-3.0-or-later"
|
|
@@ -14,25 +14,35 @@ requires-python = ">=3.11,<3.15"
|
|
|
14
14
|
# with the family's 0.3.0, so it needs every family package at 0.3.0 or
|
|
15
15
|
# later, and PyPI's 0.0.1 name placeholders and the 0.1.0 alphas must never
|
|
16
16
|
# satisfy these.
|
|
17
|
-
#
|
|
18
|
-
#
|
|
19
|
-
#
|
|
20
|
-
#
|
|
21
|
-
#
|
|
17
|
+
# Within the 0.3.3 floor below, `sessionkit setup` asks sessiontools for
|
|
18
|
+
# `session agent default`, and INSTALL.md describes sessionmail's one-run
|
|
19
|
+
# mail setup. Setup also asks sessiontools for the agents folder with
|
|
20
|
+
# `session path agent --config --json`.
|
|
21
|
+
# That verb ships in sessiontools 0.3.3, the floor below; with a sessiontools
|
|
22
|
+
# that lacks it, setup writes no agent file and says so.
|
|
23
|
+
# All five are floored at 0.3.3: the family is released together, and an older
|
|
22
24
|
# copy of one package beside the others splits its state between the old
|
|
23
25
|
# and new folders.
|
|
24
26
|
# sessionphone with its media extra: the bot, calls and `sessionphone web` need it.
|
|
25
27
|
# sessionvoice with its capture extra, so the ears can hear the room.
|
|
28
|
+
# settled, the Settings app, is required too: a hard dependency, never an
|
|
29
|
+
# optional extra. It is not a family package: it has its own version line,
|
|
30
|
+
# floored at 0.1.0 so PyPI's 0.0.1 name placeholder can never satisfy it, and
|
|
31
|
+
# its kit extra brings the kit's tool registry and jsonschema, without which
|
|
32
|
+
# it shows none of the kit's tools.
|
|
33
|
+
# That extra asks for sessiontools 0.3.3, which the sessiontools line below
|
|
34
|
+
# now floors.
|
|
26
35
|
# This is the RULED list, kept in tests/_ruled_deps.py with the ruling;
|
|
27
36
|
# tests/test_dependency_gate.py fails when these lines, the built wheel or
|
|
28
37
|
# uv.lock drift from it.
|
|
29
38
|
dependencies = [
|
|
30
39
|
"click>=8.1",
|
|
31
|
-
"sessionmail>=0.3.
|
|
32
|
-
"sessiontools>=0.3.
|
|
33
|
-
"sessionphone[media]>=0.3.
|
|
34
|
-
"sessionview>=0.3.
|
|
35
|
-
"sessionvoice[capture]>=0.3.
|
|
40
|
+
"sessionmail>=0.3.3",
|
|
41
|
+
"sessiontools>=0.3.3",
|
|
42
|
+
"sessionphone[media]>=0.3.3",
|
|
43
|
+
"sessionview>=0.3.3",
|
|
44
|
+
"sessionvoice[capture]>=0.3.3",
|
|
45
|
+
"settled[kit]>=0.1.0",
|
|
36
46
|
]
|
|
37
47
|
|
|
38
48
|
[project.urls]
|
|
@@ -47,6 +57,8 @@ Repository = "https://github.com/sessionkit/sessionkit"
|
|
|
47
57
|
# at each child's HEAD whenever a child adds, renames or drops a command.
|
|
48
58
|
# Measured from each child's 0.3.0 wheel (entry_points.txt), by wheel sha256:
|
|
49
59
|
# mail 8e4d9476, tools 8d089699, phone ac402a39, view 3942f119, voice ebc1b65c.
|
|
60
|
+
# settled: from the settings repo's pyproject at 1487963 and its 0.1.0
|
|
61
|
+
# wheel, sha256 d796d326 (re-measure from the staged 0.1.0 wheel, by sha256).
|
|
50
62
|
# sessionview's four commands share one target: `sessionview:main` reads the
|
|
51
63
|
# name it was run as and runs that command.
|
|
52
64
|
# The kit itself still ships no `session` of its own: `session` below is
|
|
@@ -71,6 +83,8 @@ ears = "ears.cli:main"
|
|
|
71
83
|
ears-serve = "ears.serve:main"
|
|
72
84
|
mouth = "mouth.__main__:main"
|
|
73
85
|
talk = "talk.cli:main"
|
|
86
|
+
# settled
|
|
87
|
+
settled = "settled.cli:main"
|
|
74
88
|
|
|
75
89
|
[build-system]
|
|
76
90
|
requires = ["uv_build>=0.11.9,<0.12.0"]
|