@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.
@@ -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.11",
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:agentrouter-package && bun run check:textbutler",
83
- "check:textbutler": "bun test packages && tsc --noEmit -p packages/agentrouter/tsconfig.json && tsc --noEmit -p packages/transport/tsconfig.json && tsc --noEmit -p packages/textbutler/tsconfig.json",
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
  }