@hraness/peopleblade 0.1.0 → 0.1.2

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/README.md CHANGED
@@ -10,10 +10,12 @@ and sync are optional.
10
10
  - macOS or Linux for the currently tested local workflows
11
11
  - Provider-specific setup only for live sources you choose to import
12
12
 
13
+ Installation includes the pinned runtime dependencies Zod 4.4.3 and Effect 3.22.1.
14
+
13
15
  ## Install
14
16
 
15
17
  ```bash
16
- bun add --global @hraness/peopleblade@0.1.0
18
+ bun add --global @hraness/peopleblade@0.1.2
17
19
  peopleblade --version
18
20
  peopleblade init
19
21
  peopleblade stats --json
@@ -41,13 +43,27 @@ The package does not install Wrench, browser automation, KB, native model runtim
41
43
  or provider credentials. Beeper, Google, and WhatsApp live sync commands delegate
42
44
  through a separately reviewed `wrench` executable on `PATH` (or the absolute
43
45
  `PEOPLEBLADE_WRENCH_EXECUTABLE` path). PeopleBlade bundles only the pinned Wrench
44
- 0.15.0 client validators needed to fence requests and receipts; it does not bundle
46
+ 0.16.8 client validators needed to fence requests and receipts; it does not bundle
45
47
  or silently download Wrench's execution runtime.
46
48
 
47
- Existing reviewed Wrench 0.15.0 environments remain supported. A fresh public
48
- Wrench setup is intentionally not prescribed here until Wrench publishes a narrow,
49
- immutable runtime graph. Archive imports, Apple Contacts, iMessage, notes, identity
50
- review, backups, and optional PeopleBlade cloud commands do not require Wrench.
49
+ PeopleBlade 0.1.2 contains the reviewed Wrench-backed Beeper, Google, and WhatsApp
50
+ live sync commands. Running them requires the separately installed public
51
+ `@hraness/wrench` 0.16.8 package. Beeper support is bounded to account-aware
52
+ `contacts.list@3` reads, `contacts.search@1`, `messaging.search@2`, and the separate
53
+ body-free interaction exporter. `contacts.search@1` executes the official Beeper
54
+ CLI 0.6.2 executable pinned by Wrench; `contacts.list@3` and `messaging.search@2`
55
+ use Wrench's bounded Desktop-loopback read paths. The exporter is macOS arm64 only
56
+ and reports lower-bound interaction counts from complete one-to-one conversations
57
+ only. See
58
+ [peopleblade.com/sources](https://peopleblade.com/sources) for the complete provider
59
+ guide. A database previously synced by PeopleBlade 0.1.1 through Wrench 0.16.7
60
+ must run `peopleblade beeper rebind --auth beeper-main --confirm --json` once after
61
+ installing Wrench 0.16.8. The command appends reviewed metadata for the same source
62
+ identity only after both complete account inventories match. Do not force-bind
63
+ Wrench unless its authenticated Desktop target changed. PeopleBlade calls no
64
+ Beeper interface directly and exposes none of Wrench's Beeper send or action
65
+ operations. Archive imports, Apple Contacts, iMessage, notes, identity review,
66
+ backups, and optional PeopleBlade cloud commands do not require Wrench.
51
67
 
52
68
  ## Privacy boundary
53
69
 
@@ -1,9 +1,9 @@
1
1
  # Third-party notices
2
2
 
3
3
  The PeopleBlade CLI bundle includes reviewed client-boundary code from
4
- `@hraness/wrench` 0.15.0 (commit
5
- `41b16fcbf9ed0e8d8a332aa380b7187642aac2e3`) and message-bundle contract code
6
- from `@hraness/message-like-me` 0.4.0. Those portions are provided under the
4
+ `@hraness/wrench` 0.16.8 (commit
5
+ `b0cf2ecbc1113fcc8ef673a824be475c3d7bbb46`) and message-bundle contract code
6
+ from `@hraness/message-like-me` 0.7.0. Those portions are provided under the
7
7
  following license. The PeopleBlade CLI package has its own MIT grant in
8
8
  `LICENSE`; this notice preserves the attribution for the bundled portions.
9
9
 
package/dist/cli.ts CHANGED
@@ -3,6 +3,7 @@
3
3
  import { accessSync, constants, realpathSync } from "node:fs";
4
4
  import { isAbsolute, resolve } from "node:path";
5
5
 
6
+ const reviewedWrenchVersion = "0.16.8";
6
7
  const configured = process.env.PEOPLEBLADE_WRENCH_EXECUTABLE;
7
8
  const executable = configured === undefined
8
9
  ? Bun.which("wrench")
@@ -32,6 +33,36 @@ if (process.argv[1] !== undefined && canonicalExecutable === realpathSync(proces
32
33
  process.exit(127);
33
34
  }
34
35
 
36
+ let versionProbe: ReturnType<typeof Bun.spawnSync> | null = null;
37
+ try {
38
+ versionProbe = Bun.spawnSync([canonicalExecutable, "--version"], {
39
+ cwd: process.cwd(),
40
+ env: process.env,
41
+ stdin: "ignore",
42
+ stdout: "pipe",
43
+ stderr: "pipe",
44
+ timeout: 5_000,
45
+ killSignal: "SIGKILL",
46
+ maxBuffer: 1_024,
47
+ });
48
+ } catch {
49
+ // Collapse process, timeout, and output-limit failures into one public error.
50
+ }
51
+ if (
52
+ versionProbe === null
53
+ || versionProbe.exitCode !== 0
54
+ || versionProbe.signalCode !== undefined
55
+ || versionProbe.exitedDueToTimeout === true
56
+ || versionProbe.exitedDueToMaxBuffer === true
57
+ || versionProbe.stdout?.toString() !== `${reviewedWrenchVersion}\n`
58
+ || versionProbe.stderr?.byteLength !== 0
59
+ ) {
60
+ console.error(
61
+ `PeopleBlade Wrench-backed sources require the exact reviewed Wrench ${reviewedWrenchVersion} executable.`,
62
+ );
63
+ process.exit(126);
64
+ }
65
+
35
66
  const child = Bun.spawn([canonicalExecutable, ...process.argv.slice(2)], {
36
67
  cwd: process.cwd(),
37
68
  env: process.env,