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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sessionkit
3
- Version: 0.3.2
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.2
12
- Requires-Dist: sessiontools>=0.3.2
13
- Requires-Dist: sessionphone[media]>=0.3.2
14
- Requires-Dist: sessionview>=0.3.2
15
- Requires-Dist: sessionvoice[capture]>=0.3.2
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. To turn them on, set `"hooks": true` in
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
- f=~/.sessionkit/mail/settings/mail.json
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
- A `"hooks": false` becomes `true`. A file with no `hooks` key gets
222
- `"hooks": true` as its first key, and its other keys stay as they were.
223
- If the file is not there yet, this writes what the plugin would have
224
- written, with the hooks on. The plugin never replaces a file that is
225
- already there.
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 and each family package, with its version. Each `X.Y.Z`
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.2. Tested on macOS 27 on Apple silicon; Linux and Windows are
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. To turn them on, set `"hooks": true` in
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
- f=~/.sessionkit/mail/settings/mail.json
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
- A `"hooks": false` becomes `true`. A file with no `hooks` key gets
202
- `"hooks": true` as its first key, and its other keys stay as they were.
203
- If the file is not there yet, this writes what the plugin would have
204
- written, with the hooks on. The plugin never replaces a file that is
205
- already there.
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 and each family package, with its version. Each `X.Y.Z`
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.2. Tested on macOS 27 on Apple silicon; Linux and Windows are
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.2"
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.2",
13
- "sessiontools>=0.3.2",
14
- "sessionphone[media]>=0.3.2",
15
- "sessionview>=0.3.2",
16
- "sessionvoice[capture]>=0.3.2",
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.2"
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
- # sessiontools and sessionmail are floored at 0.3.1, for what the kit's code
18
- # and docs call on: `sessionkit setup` asks sessiontools 0.3.1's
19
- # `session agent default`, and INSTALL.md describes sessionmail 0.3.1's
20
- # one-run mail setup.
21
- # All five are floored at 0.3.2: the family is released together, and an older
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.2",
32
- "sessiontools>=0.3.2",
33
- "sessionphone[media]>=0.3.2",
34
- "sessionview>=0.3.2",
35
- "sessionvoice[capture]>=0.3.2",
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"]