alter-runtime 0.4.8__tar.gz → 0.4.10__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.
Files changed (65) hide show
  1. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/LICENSE +1 -1
  2. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/PKG-INFO +11 -13
  3. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/README.md +9 -11
  4. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/__init__.py +1 -1
  5. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/adapters/__init__.py +2 -2
  6. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/adapters/claude_jsonl_watcher.py +2 -2
  7. alter_runtime-0.4.10/alter_runtime/adapters/loom_verdict_exporter.py +540 -0
  8. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/adapters/worktree_watcher.py +2 -3
  9. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/cli.py +92 -1
  10. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/clients/token_usage_client.py +3 -3
  11. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/config.py +124 -19
  12. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/consent.py +43 -12
  13. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/daemon.py +40 -24
  14. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/http_auth.py +1 -1
  15. alter_runtime-0.4.10/alter_runtime/messaging.py +147 -0
  16. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/sdk/client.py +1 -1
  17. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/services/systemd/alter-runtime.service.in +6 -9
  18. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/sockets/unix.py +60 -0
  19. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/__init__.py +5 -3
  20. alter_runtime-0.4.10/alter_runtime/subscribers/doctrine_projection.py +678 -0
  21. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/inbox_writer.py +43 -2
  22. alter_runtime-0.4.10/alter_runtime/subscribers/loom_verdict_subscriber.py +340 -0
  23. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/session_presence.py +3 -3
  24. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/update_loop.py +112 -14
  25. alter_runtime-0.4.10/alter_runtime/verified_apply.py +340 -0
  26. alter_runtime-0.4.10/hatch_build.py +17 -0
  27. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/pyproject.toml +15 -9
  28. alter_runtime-0.4.8/.gitignore +0 -39
  29. alter_runtime-0.4.8/alter_runtime/adapters/weave_watcher.py +0 -546
  30. alter_runtime-0.4.8/alter_runtime/subscribers/weave_intent_writer.py +0 -608
  31. alter_runtime-0.4.8/alter_runtime/weave/__init__.py +0 -21
  32. alter_runtime-0.4.8/alter_runtime/weave/resolver.py +0 -544
  33. alter_runtime-0.4.8/alter_runtime/weave_log.py +0 -437
  34. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/adapters/contract.py +0 -0
  35. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/adapters/git_watcher.py +0 -0
  36. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/cap_cache.py +0 -0
  37. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/clients/__init__.py +0 -0
  38. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/floor_loop.py +0 -0
  39. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/floor_preflight.py +0 -0
  40. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/invocation_signing.py +0 -0
  41. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/notifiers/__init__.py +0 -0
  42. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/notifiers/desktop.py +0 -0
  43. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/sdk/__init__.py +0 -0
  44. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/service_install.py +0 -0
  45. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/services/__init__.py +0 -0
  46. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/services/launchd/com.alter.runtime.plist.in +0 -0
  47. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/sockets/__init__.py +0 -0
  48. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/sockets/dbus.py +0 -0
  49. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/active_sessions_cron_emitter.py +0 -0
  50. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/active_sessions_do_publisher.py +0 -0
  51. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/active_sessions_gc.py +0 -0
  52. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/active_sessions_writer.py +0 -0
  53. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/adapters_writer.py +0 -0
  54. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/agent_frames.py +0 -0
  55. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/attunement_refresher.py +0 -0
  56. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/bus.py +0 -0
  57. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/cache_writer.py +0 -0
  58. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/ceremony_echo.py +0 -0
  59. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/do_sse.py +0 -0
  60. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/ebpf.py +0 -0
  61. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/mcp_fallback.py +0 -0
  62. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/presence_feed_writer.py +0 -0
  63. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/presence_writer.py +0 -0
  64. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/session_refresher.py +0 -0
  65. {alter_runtime-0.4.8 → alter_runtime-0.4.10}/alter_runtime/subscribers/sse.py +0 -0
@@ -175,7 +175,7 @@
175
175
 
176
176
  END OF TERMS AND CONDITIONS
177
177
 
178
- Copyright 2026 ALTER Meridian Pty Ltd
178
+ Copyright 2026 Alter Meridian Pty Ltd
179
179
 
180
180
  Licensed under the Apache License, Version 2.0 (the "License");
181
181
  you may not use this file except in compliance with the License.
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: alter-runtime
3
- Version: 0.4.8
3
+ Version: 0.4.10
4
4
  Summary: ~Alter Identity Runtime - local daemon for the continuous identity field. Subscribes to per-~handle Cloudflare Durable Objects, exposes Unix socket + D-Bus + CLI surfaces, falls back gracefully to direct MCP polling.
5
5
  Project-URL: Homepage, https://truealter.com
6
6
  Project-URL: Documentation, https://truealter.com/docs/alter-runtime
7
7
  Project-URL: Repository, https://github.com/true-alter/alter-runtime
8
8
  Project-URL: Bug Tracker, https://github.com/true-alter/alter-runtime/issues
9
9
  Author: ~Alter
10
- Author-email: ALTER Meridian Pty Ltd <hello@truealter.com>
10
+ Author-email: Alter Meridian Pty Ltd <hello@truealter.com>
11
11
  License: Apache-2.0
12
12
  License-File: LICENSE
13
13
  Keywords: agent,ai-agents,alter,cloudflare,durable-object,identity,llm,mcp,model-context-protocol,psychometric,sovereign-identity,verifiable-credentials,x402
@@ -75,10 +75,10 @@ Description-Content-Type: text/markdown
75
75
 
76
76
  ## Alpha release - filesystem key storage
77
77
 
78
- **`0.1.0` is an alpha release.** The public API surface (CLI flags,
78
+ **This is an alpha release.** The public API surface (CLI flags,
79
79
  Unix-socket JSON schema, D-Bus interface, Python SDK signatures) may change in
80
- backwards-incompatible ways before the `0.2.0` stable cut. Pin exact versions in
81
- downstream tooling and read the CHANGELOG before upgrading.
80
+ backwards-incompatible ways before the stable release. Pin exact versions in
81
+ downstream tooling before upgrading.
82
82
 
83
83
  **Private keys are stored on the filesystem, not in an OS keychain.** On first
84
84
  `alter-runtime init`, the device Ed25519 keypair is written to
@@ -88,7 +88,7 @@ owning user and never leaves the device. This behaviour is deliberate for the
88
88
  alpha: it keeps the daemon self-contained on any POSIX host and avoids a hard
89
89
  dependency on distro-specific secret stores during early testing.
90
90
 
91
- **OS-native secret storage is deferred to `0.2.0`:** Linux `libsecret` /
91
+ **OS-native secret storage is deferred to a future release:** Linux `libsecret` /
92
92
  `kwallet`, macOS Keychain, and Windows Credential Manager integration will ship
93
93
  behind a `keystore = "native"` config knob. Filesystem storage will remain the
94
94
  documented fallback.
@@ -100,10 +100,9 @@ attestation). The filesystem-stored device key then scopes only to ambient
100
100
  signal ingestion, not to high-assurance authorisations, which require a fresh
101
101
  hardware passkey ceremony per session.
102
102
 
103
- **Reporting issues.** Security-relevant reports: please follow
104
- [SECURITY.md](./SECURITY.md) and email `security@truealter.com` rather than
105
- filing a public issue. Non-security bugs and feature requests: email
106
- `support@truealter.com`.
103
+ **Reporting issues.** Security-relevant reports: please email
104
+ `security@truealter.com` rather than filing a public issue. Non-security bugs
105
+ and feature requests: email `support@truealter.com`.
107
106
 
108
107
  ## Status
109
108
 
@@ -161,7 +160,7 @@ alter-runtime stop
161
160
  `https://api.truealter.com/api/v1/mcp` when the DO is unreachable for more than 3
162
161
  seconds. Your surfaces never know which path served them.
163
162
 
164
- 3. **Exposes three local transports:**
163
+ 3. **Exposes** three local transports:
165
164
  - **Unix socket** at `/run/user/$UID/alter.sock` (Linux) or
166
165
  `~/Library/Application Support/alter/runtime.sock` (macOS) - line-delimited JSON
167
166
  - **D-Bus** interface `org.alter.Identity1` on the session bus (Linux) - used by
@@ -245,8 +244,7 @@ asyncio.run(main())
245
244
  - **Arch Linux (AUR)** - `alter-runtime`
246
245
  - **Homebrew** - `brew install alter-runtime`
247
246
 
248
- Pin an exact version in downstream tooling during the alpha and read the
249
- CHANGELOG before upgrading.
247
+ Pin an exact version in downstream tooling during the alpha before upgrading.
250
248
 
251
249
  ## Related projects
252
250
 
@@ -7,10 +7,10 @@
7
7
 
8
8
  ## Alpha release - filesystem key storage
9
9
 
10
- **`0.1.0` is an alpha release.** The public API surface (CLI flags,
10
+ **This is an alpha release.** The public API surface (CLI flags,
11
11
  Unix-socket JSON schema, D-Bus interface, Python SDK signatures) may change in
12
- backwards-incompatible ways before the `0.2.0` stable cut. Pin exact versions in
13
- downstream tooling and read the CHANGELOG before upgrading.
12
+ backwards-incompatible ways before the stable release. Pin exact versions in
13
+ downstream tooling before upgrading.
14
14
 
15
15
  **Private keys are stored on the filesystem, not in an OS keychain.** On first
16
16
  `alter-runtime init`, the device Ed25519 keypair is written to
@@ -20,7 +20,7 @@ owning user and never leaves the device. This behaviour is deliberate for the
20
20
  alpha: it keeps the daemon self-contained on any POSIX host and avoids a hard
21
21
  dependency on distro-specific secret stores during early testing.
22
22
 
23
- **OS-native secret storage is deferred to `0.2.0`:** Linux `libsecret` /
23
+ **OS-native secret storage is deferred to a future release:** Linux `libsecret` /
24
24
  `kwallet`, macOS Keychain, and Windows Credential Manager integration will ship
25
25
  behind a `keystore = "native"` config knob. Filesystem storage will remain the
26
26
  documented fallback.
@@ -32,10 +32,9 @@ attestation). The filesystem-stored device key then scopes only to ambient
32
32
  signal ingestion, not to high-assurance authorisations, which require a fresh
33
33
  hardware passkey ceremony per session.
34
34
 
35
- **Reporting issues.** Security-relevant reports: please follow
36
- [SECURITY.md](./SECURITY.md) and email `security@truealter.com` rather than
37
- filing a public issue. Non-security bugs and feature requests: email
38
- `support@truealter.com`.
35
+ **Reporting issues.** Security-relevant reports: please email
36
+ `security@truealter.com` rather than filing a public issue. Non-security bugs
37
+ and feature requests: email `support@truealter.com`.
39
38
 
40
39
  ## Status
41
40
 
@@ -93,7 +92,7 @@ alter-runtime stop
93
92
  `https://api.truealter.com/api/v1/mcp` when the DO is unreachable for more than 3
94
93
  seconds. Your surfaces never know which path served them.
95
94
 
96
- 3. **Exposes three local transports:**
95
+ 3. **Exposes** three local transports:
97
96
  - **Unix socket** at `/run/user/$UID/alter.sock` (Linux) or
98
97
  `~/Library/Application Support/alter/runtime.sock` (macOS) - line-delimited JSON
99
98
  - **D-Bus** interface `org.alter.Identity1` on the session bus (Linux) - used by
@@ -177,8 +176,7 @@ asyncio.run(main())
177
176
  - **Arch Linux (AUR)** - `alter-runtime`
178
177
  - **Homebrew** - `brew install alter-runtime`
179
178
 
180
- Pin an exact version in downstream tooling during the alpha and read the
181
- CHANGELOG before upgrading.
179
+ Pin an exact version in downstream tooling during the alpha before upgrading.
182
180
 
183
181
  ## Related projects
184
182
 
@@ -6,5 +6,5 @@ device touches. See the package README for an overview.
6
6
 
7
7
  from alter_runtime.sdk.client import AlterClient
8
8
 
9
- __version__ = "0.4.8"
9
+ __version__ = "0.4.9"
10
10
  __all__ = ["AlterClient", "__version__"]
@@ -14,12 +14,12 @@ runtime component.
14
14
 
15
15
  from alter_runtime.adapters.claude_jsonl_watcher import ClaudeJsonlWatcher
16
16
  from alter_runtime.adapters.git_watcher import GitWatcher
17
- from alter_runtime.adapters.weave_watcher import WeaveWatcher
17
+ from alter_runtime.adapters.loom_verdict_exporter import LoomVerdictExporter
18
18
  from alter_runtime.adapters.worktree_watcher import WorktreeWatcher
19
19
 
20
20
  __all__ = [
21
21
  "ClaudeJsonlWatcher",
22
22
  "GitWatcher",
23
- "WeaveWatcher",
23
+ "LoomVerdictExporter",
24
24
  "WorktreeWatcher",
25
25
  ]
@@ -4,7 +4,7 @@ Watches the per-project ``*.jsonl`` transcript files under Claude Code's
4
4
  home projects directory with ``watchdog``.
5
5
  On modification, reads new lines from the persisted byte offset, parses each
6
6
  via the privacy-hard-stop ``parse_assistant_line`` function, and POSTs
7
- batches to the ALTER backend token-usage audit endpoint.
7
+ batches to the ~alter backend token-usage audit endpoint.
8
8
 
9
9
  Privacy guarantee
10
10
  -----------------
@@ -123,7 +123,7 @@ def parse_assistant_line(record: dict) -> Optional[dict]:
123
123
  """Parse one JSONL record and return a token-usage dict, or None.
124
124
 
125
125
  This is the privacy hard-stop between Claude Code's local transcripts
126
- and ALTER's audit database. It is a strict whitelist: the output dict is
126
+ and ~alter's audit database. It is a strict whitelist: the output dict is
127
127
  constructed key-by-key from explicitly named fields. ``record``,
128
128
  ``message``, and ``usage`` are NEVER spread. No key beyond the whitelist
129
129
  can reach the output.