witbitz-code 1.3.3__py3-none-any.whl → 1.3.4__py3-none-any.whl

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.
witbitz_code/__init__.py CHANGED
@@ -4,4 +4,4 @@ The Python implementation of tools/witbitz-code.mjs (docs/opencode-relay.md phas
4
4
  vectors and cross-implementation tests.
5
5
  """
6
6
 
7
- __version__ = "1.3.3"
7
+ __version__ = "1.3.4"
witbitz_code/codekeys.py CHANGED
@@ -15,7 +15,6 @@ from __future__ import annotations
15
15
  import base64
16
16
  import json
17
17
  import os
18
- import tempfile
19
18
  import time
20
19
  from email.utils import parsedate_to_datetime
21
20
  from pathlib import Path
@@ -147,17 +146,9 @@ def read_all() -> dict:
147
146
 
148
147
 
149
148
  def _write_all(doc: dict) -> None:
150
- path = keys_path()
151
- path.parent.mkdir(parents=True, exist_ok=True, mode=0o700)
152
- fd, tmp = tempfile.mkstemp(dir=str(path.parent), prefix=".account-keys.")
153
- try:
154
- os.fchmod(fd, 0o600)
155
- with os.fdopen(fd, "w", encoding="utf-8") as f:
156
- f.write(json.dumps(doc, indent=1) + "\n")
157
- os.replace(tmp, path)
158
- except BaseException:
159
- Path(tmp).unlink(missing_ok=True)
160
- raise
149
+ # pairings.write_private: 0600, atomic, and Windows-safe (Windows Python 3.12 has no os.fchmod — the owner's native
150
+ # Windows pairing died here, the real error hidden by a cleanup that could not delete the still-open temp file).
151
+ pp.write_private(keys_path(), json.dumps(doc, indent=1) + "\n")
161
152
 
162
153
 
163
154
  def for_computer(computer_id: str) -> dict | None:
witbitz_code/payers.py CHANGED
@@ -16,7 +16,6 @@ from __future__ import annotations
16
16
 
17
17
  import json
18
18
  import os
19
- import tempfile
20
19
  import threading
21
20
  from pathlib import Path
22
21
 
@@ -49,12 +48,7 @@ class SessionPayers:
49
48
  if not self._persist:
50
49
  return
51
50
  try:
52
- self._path.parent.mkdir(parents=True, exist_ok=True, mode=0o700)
53
- fd, tmp = tempfile.mkstemp(dir=str(self._path.parent), prefix=".session-payers.")
54
- os.fchmod(fd, 0o600)
55
- with os.fdopen(fd, "w", encoding="utf-8") as f:
56
- f.write(json.dumps({"v": 1, "owners": self._owner}))
57
- os.replace(tmp, self._path)
51
+ pp.write_private(self._path, json.dumps({"v": 1, "owners": self._owner})) # Windows-safe (no os.fchmod there)
58
52
  except OSError:
59
53
  pass # memory still knows; a restart forgets, and a forgotten conversation is refused, never misbilled
60
54
 
witbitz_code/uninstall.py CHANGED
@@ -170,7 +170,7 @@ def stop_process(pid: int) -> bool:
170
170
  if gone():
171
171
  return True
172
172
  try:
173
- os.kill(pid, signal.SIGKILL)
173
+ os.kill(pid, getattr(signal, "SIGKILL", signal.SIGTERM)) # Windows has no SIGKILL
174
174
  except OSError:
175
175
  pass
176
176
  time.sleep(0.3)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: witbitz-code
3
- Version: 1.3.3
3
+ Version: 1.3.4
4
4
  Summary: Reach OpenCode on this computer from the Witbitz Spaces Code section, through an end-to-end sealed relay.
5
5
  Author: Witbitz
6
6
  License-Expression: MIT
@@ -1,4 +1,4 @@
1
- witbitz_code/__init__.py,sha256=7aK1bSsIozM08lHrZns6rpTte0xCdSNVXcq8Al88b_w,290
1
+ witbitz_code/__init__.py,sha256=shM_3SZlCuzy8vtealMf0csDKgbfOWf-J4JalEfbMxU,290
2
2
  witbitz_code/__main__.py,sha256=bYt9eEaoRQWdejEHFD8REx9jxVEdZptECFsV7F49Ink,30
3
3
  witbitz_code/_js.py,sha256=56cKC97SfM1UZAcOGzGnL-SgIB4SfdAlqVDXX3Vi-N0,11458
4
4
  witbitz_code/account.py,sha256=m_tEqkN31oEaFJQ5r1fAtl6_IE1D5IApOIJreoEGvxo,6451
@@ -7,7 +7,7 @@ witbitz_code/attachments.py,sha256=1IxpI0YOTl-8x8AtPXwmXYMuxU5qip0ggoBo1I7rAS4,1
7
7
  witbitz_code/auto.py,sha256=lHwCzGOgQd42WUQTCCF4a-otEXaGQ9H4QDdPOJh1wtI,27609
8
8
  witbitz_code/auto_runner.py,sha256=PU3HP6CGFoOU4RcHVWBL5BNH1dUErKCTA8x5XAVeO1w,26521
9
9
  witbitz_code/cli.py,sha256=x0g6dWArnWBzT3bACIGgdRFZL5_v8j6IB58voUD3Blc,20300
10
- witbitz_code/codekeys.py,sha256=oSUjPKY_kkOiP_4TrHLXoNACC-S9CBEwZQtK8w9WdQo,17557
10
+ witbitz_code/codekeys.py,sha256=zl8-n8aOBzSBOLAoHXyc63bmyVMk_pI8Sxdzosx-lRs,17424
11
11
  witbitz_code/codetools.py,sha256=MAZ3CkeHhHgaNa1Mi_nmL7eIC-uOroskdnSSVgomkCI,6758
12
12
  witbitz_code/compress.py,sha256=ghZf_HTmYyHOwJDxDgJumr-7hIeohwio_SIMrzs1jtM,759
13
13
  witbitz_code/computers.py,sha256=CJccZsL2Km4anrAbwKdhkENe1ZGXqOd_ou05k-gITDU,8280
@@ -25,7 +25,7 @@ witbitz_code/offered_models.json,sha256=YJVQQfNOrrIDU5KQwzb5jMwrgmH_MD2sH7lJaMsu
25
25
  witbitz_code/outputs.py,sha256=Sibj4Gb6yNEgBQdM7DDlOXbZS93Wo0CxHz7Llzgmyvs,5808
26
26
  witbitz_code/pair.py,sha256=9h1C-3PTKTcWRGWioAa_wYGhDikw-xKgEHiYBo2ITl0,13522
27
27
  witbitz_code/pairings.py,sha256=tb9A3jfa4AHmJUsuApJGUPNlI4T8oX7oQry17BP0xcQ,9808
28
- witbitz_code/payers.py,sha256=0bxyAY6kjWBWnUEcZT0b-14oDTrAfYnJoTDJjfamK5c,4948
28
+ witbitz_code/payers.py,sha256=18mUMHLx7kd8YR6ul-2FJn0FUVnAn80wXruE--lTeHA,4682
29
29
  witbitz_code/plugins.py,sha256=c4soyUM-VSwcLSmvey2aEYNfuu8J6jrsZtAAv4YzS6I,6679
30
30
  witbitz_code/policy.py,sha256=kuvtkdKRTE-wf7_nBdwCs9PQvq_n2m-BCVqG6B7Iz1Y,2014
31
31
  witbitz_code/ports.py,sha256=rU4u2QO8xM8ndVeSOs5IS5JPKM_BEcWUOZFqrEf9z2c,3071
@@ -35,7 +35,7 @@ witbitz_code/relay.py,sha256=9pHVrqQj0c4kGGPmckHZLsIchdLtexC5zGUjm3IwWWg,34626
35
35
  witbitz_code/seen.py,sha256=ltMM6RgOu9b2mdpGOgTKWGWME_gLHUs1UxJiY7n_AyI,2182
36
36
  witbitz_code/tinfoil_read.py,sha256=xfgKhdYMGt5GW2GFqjR2ffnMXN57JKz9Nm5wGP2qDbA,6519
37
37
  witbitz_code/tools_probe.py,sha256=fELe69rzJwpB0omek9twRHN3OOolky3wrKVXFk28VFg,3404
38
- witbitz_code/uninstall.py,sha256=sv8bOfnnsiaDafeVKYZh9J5Rhcobr_Ut5LBg5ClunoQ,22245
38
+ witbitz_code/uninstall.py,sha256=z6Ab-bxqMI9o32SVHcjCZqRrZer8IjVnItseH7WbE_k,22299
39
39
  witbitz_code/winagent.py,sha256=ZepKsKb4A2-YKHH1lhEnNjFG3iFZ6vn-EyoIc5-P9Zg,6187
40
40
  witbitz_code/winconsole.py,sha256=Yr5ikHj7OS4O9W_PMFzSMdC7lXXmb5Yr532oeL1wkdI,2278
41
41
  witbitz_code/wizard.py,sha256=rCa8Ta4btTqlolk0qbCQ9T6SpwtypkNWphpFVXEcYb4,12379
@@ -43,9 +43,9 @@ witbitz_code/opencode_plugins/notes-init.md,sha256=7SkhvxSFhKY0W1EZv4DIk34Rzbpxo
43
43
  witbitz_code/opencode_plugins/witbitz-media-server.mjs,sha256=M-wEUBlDASM89txnCyYLMUYci6Ss5du14fmEx27TZvo,75529
44
44
  witbitz_code/opencode_plugins/witbitz-notes.js,sha256=M8V0WZiJdPE78hcjHT3oo1aybbD513rMWlxbcDBOdzg,26661
45
45
  witbitz_code/opencode_plugins/witbitz-progress.js,sha256=6J9B71eZqhXpWoCLm-hSBSrlTfflCmHnWHp9yhEItbQ,10349
46
- witbitz_code-1.3.3.dist-info/licenses/LICENSE,sha256=tAdpEnopN3C7_Mtwt4FpOt54tdJcytanMIPmfjWQyX8,1064
47
- witbitz_code-1.3.3.dist-info/METADATA,sha256=3GLvPlrM8uIuNgUKbX5vwx5CSzYxPOnyQOXlrs_9Px4,11862
48
- witbitz_code-1.3.3.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
49
- witbitz_code-1.3.3.dist-info/entry_points.txt,sha256=rjZTJptXZoB2fSJowQBgbsNiiTfsmJGXEwJNIYJHbu4,55
50
- witbitz_code-1.3.3.dist-info/top_level.txt,sha256=_Q9iBQXeIhv110W9Do9iSt_V4RRTbWIFBIjEhN_hq94,13
51
- witbitz_code-1.3.3.dist-info/RECORD,,
46
+ witbitz_code-1.3.4.dist-info/licenses/LICENSE,sha256=tAdpEnopN3C7_Mtwt4FpOt54tdJcytanMIPmfjWQyX8,1064
47
+ witbitz_code-1.3.4.dist-info/METADATA,sha256=8eIRuT0wmZfDO81un7IWMUYRhdRKF0LF439Gld3pbP8,11862
48
+ witbitz_code-1.3.4.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
49
+ witbitz_code-1.3.4.dist-info/entry_points.txt,sha256=rjZTJptXZoB2fSJowQBgbsNiiTfsmJGXEwJNIYJHbu4,55
50
+ witbitz_code-1.3.4.dist-info/top_level.txt,sha256=_Q9iBQXeIhv110W9Do9iSt_V4RRTbWIFBIjEhN_hq94,13
51
+ witbitz_code-1.3.4.dist-info/RECORD,,