@hraness/message-like-me 0.8.11 → 0.8.12
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.
- package/CHANGELOG.md +9 -0
- package/README.md +99 -43
- package/dist/cli.js +3399 -3088
- package/docs/publishing.md +23 -32
- package/docs/textbutler/agent-cli.md +123 -0
- package/docs/textbutler/architecture.md +71 -24
- package/docs/textbutler/getting-started.md +277 -0
- package/docs/textbutler/ghostget-contract.md +18 -6
- package/docs/textbutler/local-data.md +50 -0
- package/docs/textbutler/messaging-apps.md +121 -0
- package/docs/textbutler/native-process-plan.md +12 -11
- package/docs/textbutler/native-subscription.md +111 -0
- package/docs/textbutler/readiness.md +78 -0
- package/package.json +12 -5
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Textbutler readiness
|
|
2
|
+
|
|
3
|
+
Textbutler currently supports a local, owner-controlled pilot. Its terminal and
|
|
4
|
+
menu can connect configured messaging accounts, select direct conversations,
|
|
5
|
+
show the reply inbox and manage contacts. An owner can write a reply, review its
|
|
6
|
+
complete disclosed text and explicitly send it. Installation starts no service,
|
|
7
|
+
connects no account and enables no automatic replies.
|
|
8
|
+
|
|
9
|
+
This is not yet an unattended production assistant. The following boundaries
|
|
10
|
+
remain visible in setup and must be resolved before that claim is made.
|
|
11
|
+
|
|
12
|
+
| Area | Current state | Remaining acceptance evidence |
|
|
13
|
+
| --- | --- | --- |
|
|
14
|
+
| First use | Guided terminal, actionable readiness, additive configuration, paused defaults | First-run testing with real owner-selected accounts and permissions |
|
|
15
|
+
| Menu bar | Shared native Rust runner; setup, connections, contact controls, bounded menus and recoverable jobs | Confirm native lifecycle on each supported macOS release |
|
|
16
|
+
| Reply review | Complete ordered action review, recipient/context digest, attachment byte verification; typed preview revision checks | Agreed-recipient live delivery and takeover tests |
|
|
17
|
+
| Agent execution | Verified bundle requires reviewed Textbutler composition admission; [external xcb subscription connection](native-subscription.md), with an explicit executable pin, private state, account and model; no default account or automatic activation | Exact xcb build/provider admission, both classifier and reply checks, and authenticated live inference on the selected account; Claude API still requires separate trusted runtime admission |
|
|
18
|
+
| iMessage | Existing native Ghostget connection | Current account permissions and live transport qualification |
|
|
19
|
+
| WhatsApp | Existing Ghostget linked-device connection and explicit sync | Current linked-device identity, sync and live transport qualification |
|
|
20
|
+
| Beeper | Direct text conversations through Ghostget 0.18.14+; independent connection checks | Current Desktop API/account setup, canonical pending-send reconciliation, and edit/delete observation coverage |
|
|
21
|
+
| Uncertain sends | Journal preserves intent and blocks further sends | Owner reconciliation using durable upstream run/message identity; no blind retry |
|
|
22
|
+
| Distribution | Local integrity-checked bundle and inert installer; `external-xcb` capability keeps provider execution in separately configured xcb | Signed/public release provenance, upgrade qualification and provider-specific admission; artifact hashes do not attest providers |
|
|
23
|
+
|
|
24
|
+
## Interface direction
|
|
25
|
+
|
|
26
|
+
XCB is a useful interaction reference: a clear status view, filtered pickers,
|
|
27
|
+
contextual choices, complete review and clean cancellation. Textbutler follows
|
|
28
|
+
that separation with a thin terminal client over its owner control protocol.
|
|
29
|
+
All permission, account, contact, grant and dispatch checks remain in the daemon.
|
|
30
|
+
|
|
31
|
+
The native menu already uses the shared Rust desktop foundation. A new Rust
|
|
32
|
+
runtime is not required to make these controls usable. If the terminal grows
|
|
33
|
+
into a full-screen workspace, XCB's Ratatui/Crossterm interface is an appropriate
|
|
34
|
+
reference. The subscription connection uses xcb's dedicated zero-tool `generate`
|
|
35
|
+
contract. It does not use the workspace coding command or inherit its tools and
|
|
36
|
+
sessions.
|
|
37
|
+
|
|
38
|
+
## Agent execution direction
|
|
39
|
+
|
|
40
|
+
The verified bundle connects to an explicitly selected xcb installation after
|
|
41
|
+
its build checks reviewed composition evidence against current source bytes and
|
|
42
|
+
both contact profiles. A source daemon has no embedded admission and keeps
|
|
43
|
+
subscription inference unavailable. xcb handles
|
|
44
|
+
Claude Code or Codex subscription authentication, confinement and provider
|
|
45
|
+
custody. Textbutler uses zero-tool generation, parses one operation proposal at
|
|
46
|
+
a time and applies its contact-scoped broker policy before any effect.
|
|
47
|
+
|
|
48
|
+
Accounts are unavailable until configured and checked; contacts remain disabled
|
|
49
|
+
until explicitly enabled. No provider qualification is manufactured by setup,
|
|
50
|
+
the installer or a matching hash. The [subscription guide](native-subscription.md)
|
|
51
|
+
explains this reusable application contract and its separate runtime and live
|
|
52
|
+
acceptance requirements. Textbutler's MIT source serves as an xcb reference
|
|
53
|
+
application; publication does not establish unattended operational readiness.
|
|
54
|
+
|
|
55
|
+
## Messaging expansion
|
|
56
|
+
|
|
57
|
+
Use Beeper for linked Signal, Telegram and Instagram conversations while
|
|
58
|
+
retaining native iMessage and WhatsApp. Current Beeper automation is text-only;
|
|
59
|
+
capability labels must not promise attachments, reactions, polls or delivery
|
|
60
|
+
confirmation that its adapter does not supply.
|
|
61
|
+
|
|
62
|
+
A native Telegram client, an owner-linked Signal adapter and an Instagram
|
|
63
|
+
professional-account integration have different account models and operating
|
|
64
|
+
requirements. They should enter through Ghostget's scoped transport contract,
|
|
65
|
+
with explicit capabilities and live acceptance criteria. Business/bot APIs are
|
|
66
|
+
not substitutes for a personal inbox. See [messaging app support](messaging-apps.md)
|
|
67
|
+
for current primary sources and the limits of each approach.
|
|
68
|
+
|
|
69
|
+
## Operational checks
|
|
70
|
+
|
|
71
|
+
Before enabling automatic replies, verify the exact installed artifact, model
|
|
72
|
+
account, messaging identity and selected recipient. Exercise pause, owner
|
|
73
|
+
activity during composition, cancellation just before dispatch, transport loss,
|
|
74
|
+
restart during an uncertain send and grant expiry. A passing synthetic suite is
|
|
75
|
+
source evidence; it does not prove real delivery or native agent isolation.
|
|
76
|
+
|
|
77
|
+
Retain failed or uncertain custody records. Reinstallation, restart and setup
|
|
78
|
+
must not delete them to make an account appear ready.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hraness/message-like-me",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.12",
|
|
4
4
|
"description": "A local-first CLI and Agent Skill for studying private messaging history and drafting messages that sound like you.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -77,16 +77,22 @@
|
|
|
77
77
|
"check:standalone": "bun scripts/check-standalone.ts",
|
|
78
78
|
"check:dist": "bun scripts/check-dist.ts",
|
|
79
79
|
"check:package": "bun scripts/package-smoke.ts",
|
|
80
|
-
"check:agentrouter-package": "bun scripts/agentrouter-package-smoke.ts",
|
|
81
80
|
"check:cost-surfaces": "bun ./scripts/check-cost-surfaces.mjs",
|
|
82
|
-
"check": "bun run check:cost-surfaces && bun run typecheck && bun run check:effect && bun run test && bun run check:skill && bun run check:standalone && bun run build && bun run check:public-graphs && bun run check:dist && bun run check:package && bun run check:
|
|
83
|
-
"check:textbutler": "bun test packages && tsc --noEmit -p packages/
|
|
81
|
+
"check": "bun run check:cost-surfaces && bun run typecheck && bun run check:effect && bun run test && bun run check:skill && bun run check:standalone && bun run build && bun run check:public-graphs && bun run check:dist && bun run check:package && bun run check:textbutler",
|
|
82
|
+
"check:textbutler": "bun test packages && tsc --noEmit -p packages/transport/tsconfig.json && tsc --noEmit -p packages/textbutler/tsconfig.json",
|
|
84
83
|
"textbutler": "bun packages/textbutler/src/cli.ts",
|
|
84
|
+
"textbutler:build": "bun scripts/build-textbutler.ts",
|
|
85
|
+
"textbutler:install": "bun scripts/install-textbutler.ts",
|
|
86
|
+
"textbutler:app": "bun scripts/macos-textbutler-app.ts",
|
|
85
87
|
"prepack": "bun run check",
|
|
86
88
|
"check:effect": "bun scripts/check-effect-architecture.ts",
|
|
87
89
|
"check:public-graphs": "bun scripts/check-public-graphs.ts"
|
|
88
90
|
},
|
|
91
|
+
"dependencies": {
|
|
92
|
+
"@hraness/oh": "https://github.com/hraness/oh/releases/download/v0.10.8/hraness-oh-0.10.8.tgz"
|
|
93
|
+
},
|
|
89
94
|
"devDependencies": {
|
|
95
|
+
"@hraness/agentmixer": "https://github.com/hraness/agentmixer/releases/download/v0.1.1/hraness-agentmixer-0.1.1.tgz",
|
|
90
96
|
"@anthropic-ai/claude-agent-sdk": "0.3.268",
|
|
91
97
|
"@hraness/desktop-foundation": "https://github.com/hraness/desktop-foundation/releases/download/v0.7.0/hraness-desktop-foundation-0.7.0.tgz",
|
|
92
98
|
"@anthropic-ai/sdk": "0.125.0",
|
|
@@ -97,6 +103,7 @@
|
|
|
97
103
|
"sigstore": "4.1.1",
|
|
98
104
|
"typescript": "6.0.3",
|
|
99
105
|
"zod": "4.6.2",
|
|
100
|
-
"@hraness/support-foundation": "github:hraness/support-foundation#2d034b357680353574411217d68b02b6755b07ed"
|
|
106
|
+
"@hraness/support-foundation": "github:hraness/support-foundation#2d034b357680353574411217d68b02b6755b07ed",
|
|
107
|
+
"@hraness/local-custody": "github:hraness/local-custody#v0.4.0"
|
|
101
108
|
}
|
|
102
109
|
}
|