sessionkit 0.3.3__tar.gz → 0.4.0__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.4.0/PKG-INFO +162 -0
- sessionkit-0.4.0/README.md +141 -0
- {sessionkit-0.3.3 → sessionkit-0.4.0}/pyproject.toml +24 -9
- {sessionkit-0.3.3 → sessionkit-0.4.0}/pyproject.toml.orig +40 -17
- {sessionkit-0.3.3 → sessionkit-0.4.0}/src/sessionkit/cli.py +5 -2
- {sessionkit-0.3.3 → sessionkit-0.4.0}/src/sessionkit/doctor.py +13 -2
- {sessionkit-0.3.3 → sessionkit-0.4.0}/src/sessionkit/install.sh +213 -82
- sessionkit-0.4.0/src/sessionkit/phoneowner.py +194 -0
- {sessionkit-0.3.3 → sessionkit-0.4.0}/src/sessionkit/setup.py +152 -22
- sessionkit-0.3.3/PKG-INFO +0 -448
- sessionkit-0.3.3/README.md +0 -427
- {sessionkit-0.3.3 → sessionkit-0.4.0}/LICENSE +0 -0
- {sessionkit-0.3.3 → sessionkit-0.4.0}/src/sessionkit/__init__.py +0 -0
- {sessionkit-0.3.3 → sessionkit-0.4.0}/src/sessionkit/docs/what-listens.md +0 -0
- {sessionkit-0.3.3 → sessionkit-0.4.0}/src/sessionkit/launchd.py +0 -0
- {sessionkit-0.3.3 → sessionkit-0.4.0}/src/sessionkit/py.typed +0 -0
- {sessionkit-0.3.3 → sessionkit-0.4.0}/src/sessionkit/service.schema.json +0 -0
- {sessionkit-0.3.3 → sessionkit-0.4.0}/src/sessionkit/services.py +0 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: sessionkit
|
|
3
|
+
Version: 0.4.0
|
|
4
|
+
Summary: Session Kit gives your Claude Code sessions voice, mail, a phone line and a tmux sidebar, in one install.
|
|
5
|
+
Author: Mike Bailey
|
|
6
|
+
Author-email: Mike Bailey <mike@sessionkit.ai>
|
|
7
|
+
License-Expression: AGPL-3.0-or-later
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Classifier: Development Status :: 3 - Alpha
|
|
10
|
+
Requires-Dist: click>=8.1
|
|
11
|
+
Requires-Dist: sessionmail>=0.4.0
|
|
12
|
+
Requires-Dist: sessiontools>=0.4.0
|
|
13
|
+
Requires-Dist: sessionphone[media]>=0.4.0
|
|
14
|
+
Requires-Dist: sessionview>=0.4.0
|
|
15
|
+
Requires-Dist: sessionvoice[capture]>=0.4.0
|
|
16
|
+
Requires-Dist: settled[kit]>=0.1.0
|
|
17
|
+
Requires-Python: >=3.11, <3.15
|
|
18
|
+
Project-URL: Homepage, https://github.com/sessionkit/sessionkit
|
|
19
|
+
Project-URL: Repository, https://github.com/sessionkit/sessionkit
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
|
|
22
|
+
# Session Kit
|
|
23
|
+
|
|
24
|
+
Session Kit gives your Claude Code sessions a voice, a phone line and a
|
|
25
|
+
mailbox. From the people who brought you [VoiceMode][voicemode].
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
curl -fsSL https://sessionkit.ai/install.sh | bash
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
This repo is the kit's home: the installer, the [manual steps][manual]
|
|
32
|
+
and the docs.
|
|
33
|
+
|
|
34
|
+
<!-- Hero image goes here: Talk on a phone, mid-conversation. -->
|
|
35
|
+
|
|
36
|
+
## Features
|
|
37
|
+
|
|
38
|
+
- **Voice.** Your session hears the room and answers aloud.
|
|
39
|
+
- **A phone line.** Text or ring your session from Delta Chat on your phone.
|
|
40
|
+
- **Mail.** Agents mail each other, and an idle agent wakes when mail lands
|
|
41
|
+
([mail between agents][mail]).
|
|
42
|
+
- **A crew.** One agent starts another and hands it the work.
|
|
43
|
+
- **Talk.** Watch the conversation live in a browser.
|
|
44
|
+
|
|
45
|
+
## Quick start
|
|
46
|
+
|
|
47
|
+
After the install, do what its last screen lists (sign in to Claude Code
|
|
48
|
+
once), then start your first session, in whatever folder you're in:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
session start
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Ask Claude to call you. It shows a QR code: scan it with your phone and
|
|
55
|
+
follow the steps to install Delta Chat. Then you can text or ring your
|
|
56
|
+
session. Asking Claude to call you, or ringing your session, is when you
|
|
57
|
+
agree to be heard, and recorded if recording is on.
|
|
58
|
+
|
|
59
|
+
## What it installs
|
|
60
|
+
|
|
61
|
+
Session Kit installs the family in one go: five packages, each with its
|
|
62
|
+
Claude Code plugin, and the Settings page.
|
|
63
|
+
|
|
64
|
+
- [sessionmail][pkg-mail]: mail for agent memory and communication
|
|
65
|
+
([the paper][paper]).
|
|
66
|
+
- [sessiontools][pkg-tools]: your live sessions, and starting new ones.
|
|
67
|
+
- [sessionvoice][pkg-voice]: the ears hear the room; the mouth speaks.
|
|
68
|
+
- [sessionphone][pkg-phone]: a phone line to your session, over Delta Chat.
|
|
69
|
+
- [sessionview][pkg-view]: a tmux sidebar of your projects and agents.
|
|
70
|
+
- [settled][settled]: the kit's settings page, on your own Mac.
|
|
71
|
+
|
|
72
|
+
Every command answers `--help`. Commands, services and folders:
|
|
73
|
+
[components][components].
|
|
74
|
+
|
|
75
|
+
## Requirements
|
|
76
|
+
|
|
77
|
+
- [x] macOS on Apple silicon (tested on an M5 MacBook Air, 16 GB, macOS 27)
|
|
78
|
+
- [ ] Linux (preliminary testing; no install steps yet)
|
|
79
|
+
- [ ] WSL
|
|
80
|
+
- [ ] Windows
|
|
81
|
+
|
|
82
|
+
You need:
|
|
83
|
+
|
|
84
|
+
- [Homebrew][brew]
|
|
85
|
+
- [uv][uv]
|
|
86
|
+
- [Claude Code][claude-code]
|
|
87
|
+
- About 8 GB of free disk
|
|
88
|
+
|
|
89
|
+
The installer adds any of the first three that are missing.
|
|
90
|
+
|
|
91
|
+
## Installation
|
|
92
|
+
|
|
93
|
+
The one line at the top checks your Mac, lists what it will add, and asks
|
|
94
|
+
before it installs anything. Rather run each step yourself? With the
|
|
95
|
+
requirements in place (the speech server is about 4 GB):
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
brew install tmux ffmpeg notmuch
|
|
99
|
+
uv tool install --python 3.14 sessionkit
|
|
100
|
+
claude plugin marketplace add sessionkit/sessionkit
|
|
101
|
+
claude plugin install sessionkit@sessionkit
|
|
102
|
+
ears install
|
|
103
|
+
ears services install --agent claude
|
|
104
|
+
sessionkit setup
|
|
105
|
+
pager settings hooks on
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Then quit Claude Code, every window, so the plugins load. Check it with
|
|
109
|
+
`sessionkit doctor`. More detail: [step by step][install]. To remove it:
|
|
110
|
+
[uninstall][uninstall].
|
|
111
|
+
|
|
112
|
+
**Already using VoiceMode?** It keeps working. Use either one, or both side
|
|
113
|
+
by side.
|
|
114
|
+
|
|
115
|
+
## Configuration
|
|
116
|
+
|
|
117
|
+
Each package's settings: [configuration][config]. How they stack:
|
|
118
|
+
[settings][settings].
|
|
119
|
+
|
|
120
|
+
## Logs
|
|
121
|
+
|
|
122
|
+
Where each log is: [logs][logs]. Which to read for a symptom:
|
|
123
|
+
[troubleshooting][trouble]. Restarting a service: [service][service].
|
|
124
|
+
**Health:** `sessionkit doctor`.
|
|
125
|
+
|
|
126
|
+
## Development
|
|
127
|
+
|
|
128
|
+
`make install`, then `make check`. The rules: [AGENTS.md][agents].
|
|
129
|
+
|
|
130
|
+
Working across the family? With your clones of the five packages beside this
|
|
131
|
+
one, `make install-dev` installs the whole kit from them (`DRY_RUN=1` first
|
|
132
|
+
to see the command).
|
|
133
|
+
|
|
134
|
+
## Status
|
|
135
|
+
|
|
136
|
+
Alpha, 0.4.0. A new release most Sundays. [Known gaps][gaps] · Licence
|
|
137
|
+
[AGPL-3.0][licence].
|
|
138
|
+
|
|
139
|
+
[voicemode]: https://voicemode.dev
|
|
140
|
+
[brew]: https://brew.sh
|
|
141
|
+
[uv]: https://docs.astral.sh/uv/
|
|
142
|
+
[claude-code]: https://code.claude.com/docs/en/overview
|
|
143
|
+
[install]: https://github.com/sessionkit/sessionkit/blob/HEAD/INSTALL.md
|
|
144
|
+
[manual]: #installation
|
|
145
|
+
[mail]: https://github.com/sessionkit/sessionkit/blob/HEAD/INSTALL.md#mail-between-agents
|
|
146
|
+
[gaps]: https://github.com/sessionkit/sessionkit/blob/HEAD/INSTALL.md#7-known-gaps-you-will-hit
|
|
147
|
+
[uninstall]: https://github.com/sessionkit/sessionkit/blob/HEAD/INSTALL.md#8-uninstall
|
|
148
|
+
[components]: https://github.com/sessionkit/sessionkit/blob/HEAD/docs/components.md
|
|
149
|
+
[config]: https://github.com/sessionkit/sessionkit/blob/HEAD/docs/configuration.md
|
|
150
|
+
[settings]: https://github.com/sessionkit/sessionkit/blob/HEAD/docs/settings.md
|
|
151
|
+
[service]: https://github.com/sessionkit/sessionkit/blob/HEAD/docs/service.md
|
|
152
|
+
[logs]: https://github.com/sessionkit/sessionkit/blob/HEAD/docs/components.md#logs
|
|
153
|
+
[trouble]: https://github.com/sessionkit/sessionkit/blob/HEAD/docs/troubleshooting.md
|
|
154
|
+
[agents]: https://github.com/sessionkit/sessionkit/blob/HEAD/AGENTS.md
|
|
155
|
+
[licence]: https://github.com/sessionkit/sessionkit/blob/HEAD/LICENSE
|
|
156
|
+
[pkg-mail]: https://github.com/sessionkit/sessionmail
|
|
157
|
+
[paper]: https://cora7.com/blog/the-mailbox-is-the-memory/
|
|
158
|
+
[pkg-tools]: https://github.com/sessionkit/sessiontools
|
|
159
|
+
[pkg-voice]: https://github.com/sessionkit/sessionvoice
|
|
160
|
+
[pkg-phone]: https://github.com/sessionkit/sessionphone
|
|
161
|
+
[pkg-view]: https://github.com/sessionkit/sessionview
|
|
162
|
+
[settled]: https://github.com/sessionkit/settled
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# Session Kit
|
|
2
|
+
|
|
3
|
+
Session Kit gives your Claude Code sessions a voice, a phone line and a
|
|
4
|
+
mailbox. From the people who brought you [VoiceMode][voicemode].
|
|
5
|
+
|
|
6
|
+
```bash
|
|
7
|
+
curl -fsSL https://sessionkit.ai/install.sh | bash
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
This repo is the kit's home: the installer, the [manual steps][manual]
|
|
11
|
+
and the docs.
|
|
12
|
+
|
|
13
|
+
<!-- Hero image goes here: Talk on a phone, mid-conversation. -->
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- **Voice.** Your session hears the room and answers aloud.
|
|
18
|
+
- **A phone line.** Text or ring your session from Delta Chat on your phone.
|
|
19
|
+
- **Mail.** Agents mail each other, and an idle agent wakes when mail lands
|
|
20
|
+
([mail between agents][mail]).
|
|
21
|
+
- **A crew.** One agent starts another and hands it the work.
|
|
22
|
+
- **Talk.** Watch the conversation live in a browser.
|
|
23
|
+
|
|
24
|
+
## Quick start
|
|
25
|
+
|
|
26
|
+
After the install, do what its last screen lists (sign in to Claude Code
|
|
27
|
+
once), then start your first session, in whatever folder you're in:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
session start
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Ask Claude to call you. It shows a QR code: scan it with your phone and
|
|
34
|
+
follow the steps to install Delta Chat. Then you can text or ring your
|
|
35
|
+
session. Asking Claude to call you, or ringing your session, is when you
|
|
36
|
+
agree to be heard, and recorded if recording is on.
|
|
37
|
+
|
|
38
|
+
## What it installs
|
|
39
|
+
|
|
40
|
+
Session Kit installs the family in one go: five packages, each with its
|
|
41
|
+
Claude Code plugin, and the Settings page.
|
|
42
|
+
|
|
43
|
+
- [sessionmail][pkg-mail]: mail for agent memory and communication
|
|
44
|
+
([the paper][paper]).
|
|
45
|
+
- [sessiontools][pkg-tools]: your live sessions, and starting new ones.
|
|
46
|
+
- [sessionvoice][pkg-voice]: the ears hear the room; the mouth speaks.
|
|
47
|
+
- [sessionphone][pkg-phone]: a phone line to your session, over Delta Chat.
|
|
48
|
+
- [sessionview][pkg-view]: a tmux sidebar of your projects and agents.
|
|
49
|
+
- [settled][settled]: the kit's settings page, on your own Mac.
|
|
50
|
+
|
|
51
|
+
Every command answers `--help`. Commands, services and folders:
|
|
52
|
+
[components][components].
|
|
53
|
+
|
|
54
|
+
## Requirements
|
|
55
|
+
|
|
56
|
+
- [x] macOS on Apple silicon (tested on an M5 MacBook Air, 16 GB, macOS 27)
|
|
57
|
+
- [ ] Linux (preliminary testing; no install steps yet)
|
|
58
|
+
- [ ] WSL
|
|
59
|
+
- [ ] Windows
|
|
60
|
+
|
|
61
|
+
You need:
|
|
62
|
+
|
|
63
|
+
- [Homebrew][brew]
|
|
64
|
+
- [uv][uv]
|
|
65
|
+
- [Claude Code][claude-code]
|
|
66
|
+
- About 8 GB of free disk
|
|
67
|
+
|
|
68
|
+
The installer adds any of the first three that are missing.
|
|
69
|
+
|
|
70
|
+
## Installation
|
|
71
|
+
|
|
72
|
+
The one line at the top checks your Mac, lists what it will add, and asks
|
|
73
|
+
before it installs anything. Rather run each step yourself? With the
|
|
74
|
+
requirements in place (the speech server is about 4 GB):
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
brew install tmux ffmpeg notmuch
|
|
78
|
+
uv tool install --python 3.14 sessionkit
|
|
79
|
+
claude plugin marketplace add sessionkit/sessionkit
|
|
80
|
+
claude plugin install sessionkit@sessionkit
|
|
81
|
+
ears install
|
|
82
|
+
ears services install --agent claude
|
|
83
|
+
sessionkit setup
|
|
84
|
+
pager settings hooks on
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Then quit Claude Code, every window, so the plugins load. Check it with
|
|
88
|
+
`sessionkit doctor`. More detail: [step by step][install]. To remove it:
|
|
89
|
+
[uninstall][uninstall].
|
|
90
|
+
|
|
91
|
+
**Already using VoiceMode?** It keeps working. Use either one, or both side
|
|
92
|
+
by side.
|
|
93
|
+
|
|
94
|
+
## Configuration
|
|
95
|
+
|
|
96
|
+
Each package's settings: [configuration][config]. How they stack:
|
|
97
|
+
[settings][settings].
|
|
98
|
+
|
|
99
|
+
## Logs
|
|
100
|
+
|
|
101
|
+
Where each log is: [logs][logs]. Which to read for a symptom:
|
|
102
|
+
[troubleshooting][trouble]. Restarting a service: [service][service].
|
|
103
|
+
**Health:** `sessionkit doctor`.
|
|
104
|
+
|
|
105
|
+
## Development
|
|
106
|
+
|
|
107
|
+
`make install`, then `make check`. The rules: [AGENTS.md][agents].
|
|
108
|
+
|
|
109
|
+
Working across the family? With your clones of the five packages beside this
|
|
110
|
+
one, `make install-dev` installs the whole kit from them (`DRY_RUN=1` first
|
|
111
|
+
to see the command).
|
|
112
|
+
|
|
113
|
+
## Status
|
|
114
|
+
|
|
115
|
+
Alpha, 0.4.0. A new release most Sundays. [Known gaps][gaps] · Licence
|
|
116
|
+
[AGPL-3.0][licence].
|
|
117
|
+
|
|
118
|
+
[voicemode]: https://voicemode.dev
|
|
119
|
+
[brew]: https://brew.sh
|
|
120
|
+
[uv]: https://docs.astral.sh/uv/
|
|
121
|
+
[claude-code]: https://code.claude.com/docs/en/overview
|
|
122
|
+
[install]: https://github.com/sessionkit/sessionkit/blob/HEAD/INSTALL.md
|
|
123
|
+
[manual]: #installation
|
|
124
|
+
[mail]: https://github.com/sessionkit/sessionkit/blob/HEAD/INSTALL.md#mail-between-agents
|
|
125
|
+
[gaps]: https://github.com/sessionkit/sessionkit/blob/HEAD/INSTALL.md#7-known-gaps-you-will-hit
|
|
126
|
+
[uninstall]: https://github.com/sessionkit/sessionkit/blob/HEAD/INSTALL.md#8-uninstall
|
|
127
|
+
[components]: https://github.com/sessionkit/sessionkit/blob/HEAD/docs/components.md
|
|
128
|
+
[config]: https://github.com/sessionkit/sessionkit/blob/HEAD/docs/configuration.md
|
|
129
|
+
[settings]: https://github.com/sessionkit/sessionkit/blob/HEAD/docs/settings.md
|
|
130
|
+
[service]: https://github.com/sessionkit/sessionkit/blob/HEAD/docs/service.md
|
|
131
|
+
[logs]: https://github.com/sessionkit/sessionkit/blob/HEAD/docs/components.md#logs
|
|
132
|
+
[trouble]: https://github.com/sessionkit/sessionkit/blob/HEAD/docs/troubleshooting.md
|
|
133
|
+
[agents]: https://github.com/sessionkit/sessionkit/blob/HEAD/AGENTS.md
|
|
134
|
+
[licence]: https://github.com/sessionkit/sessionkit/blob/HEAD/LICENSE
|
|
135
|
+
[pkg-mail]: https://github.com/sessionkit/sessionmail
|
|
136
|
+
[paper]: https://cora7.com/blog/the-mailbox-is-the-memory/
|
|
137
|
+
[pkg-tools]: https://github.com/sessionkit/sessiontools
|
|
138
|
+
[pkg-voice]: https://github.com/sessionkit/sessionvoice
|
|
139
|
+
[pkg-phone]: https://github.com/sessionkit/sessionphone
|
|
140
|
+
[pkg-view]: https://github.com/sessionkit/sessionview
|
|
141
|
+
[settled]: https://github.com/sessionkit/settled
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sessionkit"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.4.0"
|
|
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,11 @@ classifiers = ["Development Status :: 3 - Alpha"]
|
|
|
9
9
|
requires-python = ">=3.11,<3.15"
|
|
10
10
|
dependencies = [
|
|
11
11
|
"click>=8.1",
|
|
12
|
-
"sessionmail>=0.
|
|
13
|
-
"sessiontools>=0.
|
|
14
|
-
"sessionphone[media]>=0.
|
|
15
|
-
"sessionview>=0.
|
|
16
|
-
"sessionvoice[capture]>=0.
|
|
12
|
+
"sessionmail>=0.4.0",
|
|
13
|
+
"sessiontools>=0.4.0",
|
|
14
|
+
"sessionphone[media]>=0.4.0",
|
|
15
|
+
"sessionview>=0.4.0",
|
|
16
|
+
"sessionvoice[capture]>=0.4.0",
|
|
17
17
|
"settled[kit]>=0.1.0",
|
|
18
18
|
]
|
|
19
19
|
|
|
@@ -32,14 +32,29 @@ pager = "sessionmail.pager:cli"
|
|
|
32
32
|
memory = "sessionmail.memory:cli"
|
|
33
33
|
session = "sessiontools.cli:main"
|
|
34
34
|
sessionphone = "sessionphone.cli:main"
|
|
35
|
+
dc-answer = "sessionphone.dctools:main"
|
|
36
|
+
dc-call = "sessionphone.dctools:main"
|
|
37
|
+
dc-call-mix = "sessionphone.dctools:main"
|
|
38
|
+
dc-delete = "sessionphone.dctools:main"
|
|
39
|
+
dc-dm = "sessionphone.dctools:main"
|
|
40
|
+
dc-fetch = "sessionphone.dctools:main"
|
|
41
|
+
dc-hangup = "sessionphone.dctools:main"
|
|
42
|
+
dc-invite = "sessionphone.dctools:main"
|
|
43
|
+
dc-live = "sessionphone.dctools:main"
|
|
44
|
+
dc-log = "sessionphone.dctools:main"
|
|
45
|
+
dc-log-web = "sessionphone.dctools:main"
|
|
46
|
+
dc-react = "sessionphone.dctools:main"
|
|
47
|
+
dc-ring = "sessionphone.dctools:main"
|
|
48
|
+
dc-say = "sessionphone.dctools:main"
|
|
49
|
+
dc-send-file = "sessionphone.dctools:main"
|
|
50
|
+
dc-xdc-realtime = "sessionphone.dctools:main"
|
|
51
|
+
dc-xdc-update = "sessionphone.dctools:main"
|
|
35
52
|
sessionview = "sessionview:main"
|
|
36
|
-
sessionview-config = "sessionview:main"
|
|
37
|
-
sessionview-session = "sessionview:main"
|
|
38
|
-
sessionview-messages = "sessionview:main"
|
|
39
53
|
ears = "ears.cli:main"
|
|
40
54
|
ears-serve = "ears.serve:main"
|
|
41
55
|
mouth = "mouth.__main__:main"
|
|
42
56
|
talk = "talk.cli:main"
|
|
57
|
+
sessionvoice-web = "talk.web:main"
|
|
43
58
|
settled = "settled.cli:main"
|
|
44
59
|
|
|
45
60
|
[build-system]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sessionkit"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.4.0"
|
|
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,15 +14,18 @@ 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
|
-
# Within the 0.
|
|
17
|
+
# Within the 0.4.0 floor below, `sessionkit setup` asks sessiontools for
|
|
18
18
|
# `session agent default`, and INSTALL.md describes sessionmail's one-run
|
|
19
19
|
# mail setup. Setup also asks sessiontools for the agents folder with
|
|
20
20
|
# `session path agent --config --json`.
|
|
21
|
-
# That verb ships in sessiontools 0.3.3, the floor
|
|
21
|
+
# That verb ships in sessiontools 0.3.3, below the floor; with a sessiontools
|
|
22
22
|
# that lacks it, setup writes no agent file and says so.
|
|
23
|
-
# All five are floored at 0.
|
|
24
|
-
# copy of one package beside the others splits its state between the
|
|
25
|
-
# and new folders.
|
|
23
|
+
# All five are floored at 0.4.0 or later: the family is released together, and
|
|
24
|
+
# an older copy of one package beside the others splits its state between the
|
|
25
|
+
# old and new folders.
|
|
26
|
+
# sessionview from 0.4.0 has its helpers as verbs, and the kit links
|
|
27
|
+
# `sessionview` alone. An older sessionview still types
|
|
28
|
+
# `sessionview-messages` into its messages tab, which the kit no longer links.
|
|
26
29
|
# sessionphone with its media extra: the bot, calls and `sessionphone web` need it.
|
|
27
30
|
# sessionvoice with its capture extra, so the ears can hear the room.
|
|
28
31
|
# settled, the Settings app, is required too: a hard dependency, never an
|
|
@@ -31,17 +34,17 @@ requires-python = ">=3.11,<3.15"
|
|
|
31
34
|
# its kit extra brings the kit's tool registry and jsonschema, without which
|
|
32
35
|
# it shows none of the kit's tools.
|
|
33
36
|
# That extra asks for sessiontools 0.3.3, which the sessiontools line below
|
|
34
|
-
#
|
|
37
|
+
# covers.
|
|
35
38
|
# This is the RULED list, kept in tests/_ruled_deps.py with the ruling;
|
|
36
39
|
# tests/test_dependency_gate.py fails when these lines, the built wheel or
|
|
37
40
|
# uv.lock drift from it.
|
|
38
41
|
dependencies = [
|
|
39
42
|
"click>=8.1",
|
|
40
|
-
"sessionmail>=0.
|
|
41
|
-
"sessiontools>=0.
|
|
42
|
-
"sessionphone[media]>=0.
|
|
43
|
-
"sessionview>=0.
|
|
44
|
-
"sessionvoice[capture]>=0.
|
|
43
|
+
"sessionmail>=0.4.0",
|
|
44
|
+
"sessiontools>=0.4.0",
|
|
45
|
+
"sessionphone[media]>=0.4.0",
|
|
46
|
+
"sessionview>=0.4.0",
|
|
47
|
+
"sessionvoice[capture]>=0.4.0",
|
|
45
48
|
"settled[kit]>=0.1.0",
|
|
46
49
|
]
|
|
47
50
|
|
|
@@ -59,8 +62,8 @@ Repository = "https://github.com/sessionkit/sessionkit"
|
|
|
59
62
|
# mail 8e4d9476, tools 8d089699, phone ac402a39, view 3942f119, voice ebc1b65c.
|
|
60
63
|
# settled: from the settings repo's pyproject at 1487963 and its 0.1.0
|
|
61
64
|
# wheel, sha256 d796d326 (re-measure from the staged 0.1.0 wheel, by sha256).
|
|
62
|
-
# sessionview
|
|
63
|
-
#
|
|
65
|
+
# sessionview ships one command. Its helpers are verbs of it, `sessionview
|
|
66
|
+
# config`, `sessionview session` and `sessionview messages`, never on the PATH.
|
|
64
67
|
# The kit itself still ships no `session` of its own: `session` below is
|
|
65
68
|
# sessiontools' command, re-exported, not a second implementation.
|
|
66
69
|
[project.scripts]
|
|
@@ -73,16 +76,36 @@ memory = "sessionmail.memory:cli"
|
|
|
73
76
|
session = "sessiontools.cli:main"
|
|
74
77
|
# sessionphone
|
|
75
78
|
sessionphone = "sessionphone.cli:main"
|
|
79
|
+
# sessionphone's dc-* tools: one console-script target, sessionphone.dctools:main,
|
|
80
|
+
# which runs the tool named by argv[0]. uv links only the kit's own scripts, so
|
|
81
|
+
# without these lines a kit install leaves them off PATH.
|
|
82
|
+
# dc-env (a library the tools source), bridge-check and bin/sessionphone never ship.
|
|
83
|
+
dc-answer = "sessionphone.dctools:main"
|
|
84
|
+
dc-call = "sessionphone.dctools:main"
|
|
85
|
+
dc-call-mix = "sessionphone.dctools:main"
|
|
86
|
+
dc-delete = "sessionphone.dctools:main"
|
|
87
|
+
dc-dm = "sessionphone.dctools:main"
|
|
88
|
+
dc-fetch = "sessionphone.dctools:main"
|
|
89
|
+
dc-hangup = "sessionphone.dctools:main"
|
|
90
|
+
dc-invite = "sessionphone.dctools:main"
|
|
91
|
+
dc-live = "sessionphone.dctools:main"
|
|
92
|
+
dc-log = "sessionphone.dctools:main"
|
|
93
|
+
dc-log-web = "sessionphone.dctools:main"
|
|
94
|
+
dc-react = "sessionphone.dctools:main"
|
|
95
|
+
dc-ring = "sessionphone.dctools:main"
|
|
96
|
+
dc-say = "sessionphone.dctools:main"
|
|
97
|
+
dc-send-file = "sessionphone.dctools:main"
|
|
98
|
+
dc-xdc-realtime = "sessionphone.dctools:main"
|
|
99
|
+
dc-xdc-update = "sessionphone.dctools:main"
|
|
76
100
|
# sessionview
|
|
77
101
|
sessionview = "sessionview:main"
|
|
78
|
-
sessionview-config = "sessionview:main"
|
|
79
|
-
sessionview-session = "sessionview:main"
|
|
80
|
-
sessionview-messages = "sessionview:main"
|
|
81
102
|
# sessionvoice
|
|
82
103
|
ears = "ears.cli:main"
|
|
83
104
|
ears-serve = "ears.serve:main"
|
|
84
105
|
mouth = "mouth.__main__:main"
|
|
85
106
|
talk = "talk.cli:main"
|
|
107
|
+
# the front door asks it for Talk's room: `sessionvoice-web web-room` (docs/family-web.md)
|
|
108
|
+
sessionvoice-web = "talk.web:main"
|
|
86
109
|
# settled
|
|
87
110
|
settled = "settled.cli:main"
|
|
88
111
|
|
|
@@ -86,7 +86,7 @@ def _shape(check):
|
|
|
86
86
|
metavar="NAME",
|
|
87
87
|
callback=_shape(operator_setup.check_mailbox_shape),
|
|
88
88
|
help="Your mail box: a box `message box path NAME` finds. "
|
|
89
|
-
"Default:
|
|
89
|
+
"Default: the box sessionmail names as the operator's, if it exists.",
|
|
90
90
|
)
|
|
91
91
|
@click.option(
|
|
92
92
|
"--address",
|
|
@@ -142,7 +142,10 @@ def setup(
|
|
|
142
142
|
|
|
143
143
|
Before that step it adds the wake seat with `ears wake add`: NAME when
|
|
144
144
|
--agent is given, else the default seat, so saying "hey" and its name
|
|
145
|
-
wakes it
|
|
145
|
+
wakes it once the ears' services run. It asks `ears services status`,
|
|
146
|
+
read only: unless the keeper and the mail service both run, the line
|
|
147
|
+
says "hey NAME" works once they do and names `ears services install`.
|
|
148
|
+
Without `ears` on the PATH, or when it refuses, it says one line
|
|
146
149
|
with the step to run; that line never changes the exit. It never runs
|
|
147
150
|
`ears services install`. Then it asks `ears backends`, read only. If
|
|
148
151
|
the ears' voice-activity model is missing, it says one line naming
|
|
@@ -37,6 +37,9 @@ from collections.abc import Callable, Mapping
|
|
|
37
37
|
from dataclasses import dataclass, field
|
|
38
38
|
from pathlib import Path
|
|
39
39
|
|
|
40
|
+
from sessionkit import phoneowner
|
|
41
|
+
from sessionkit.setup import REPOSITORY
|
|
42
|
+
|
|
40
43
|
# install.sh --check's exits, passed straight through.
|
|
41
44
|
EXIT_OK = 0
|
|
42
45
|
EXIT_MISSING = 1
|
|
@@ -97,7 +100,8 @@ HOOKS_ON = "pager settings hooks on"
|
|
|
97
100
|
# install.sh's HOOKS_BY_HAND, for a pager with no hooks verb: the file is
|
|
98
101
|
# sessionmail's, so the doctor names the edit and never makes it.
|
|
99
102
|
HOOKS_BY_HAND = 'set "hooks": true in {shown}, and change no other key'
|
|
100
|
-
|
|
103
|
+
# INSTALL.md ships in neither the wheel nor the sdist: the hint names the repo.
|
|
104
|
+
HOOKS_SECTION = f'INSTALL.md section 4, "Turn the mail hooks on", in {REPOSITORY}'
|
|
101
105
|
# How long the pager's help may take. A pager that does not answer in time is
|
|
102
106
|
# read as one with no verb: the hand edit works with any pager.
|
|
103
107
|
HELP_TIMEOUT = 10
|
|
@@ -170,7 +174,14 @@ def phone_row(env: Mapping[str, str]) -> Row:
|
|
|
170
174
|
"""The phone bot: optional, so it never fails the run. sessionphone names
|
|
171
175
|
the bot as its own install would, and asks launchd, read-only. Never
|
|
172
176
|
`sessionphone bot status`: that sends a clip to the job's speech URL,
|
|
173
|
-
which can be any host.
|
|
177
|
+
which can be any host. Under it, the owner's key pin, read from
|
|
178
|
+
sessionphone's callers readers (phoneowner): info, never missing."""
|
|
179
|
+
row = _bot_row(env)
|
|
180
|
+
row.under += phoneowner.doctor_lines(env)
|
|
181
|
+
return row
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
def _bot_row(env: Mapping[str, str]) -> Row:
|
|
174
185
|
what = "📞 Phone bot (optional, for calls)"
|
|
175
186
|
# The call ear is not checked: sessionphone has no read-only check for it
|
|
176
187
|
# yet. A row for it waits for the release that adds one.
|