@hraness/peopleblade 0.1.1 → 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.1
18
+ bun add --global @hraness/peopleblade@0.1.2
17
19
  peopleblade --version
18
20
  peopleblade init
19
21
  peopleblade stats --json
@@ -41,12 +43,12 @@ 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.16.7 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
- PeopleBlade 0.1.1 contains the reviewed Wrench-backed Beeper, Google, and WhatsApp
49
+ PeopleBlade 0.1.2 contains the reviewed Wrench-backed Beeper, Google, and WhatsApp
48
50
  live sync commands. Running them requires the separately installed public
49
- `@hraness/wrench` 0.16.7 package. Beeper support is bounded to account-aware
51
+ `@hraness/wrench` 0.16.8 package. Beeper support is bounded to account-aware
50
52
  `contacts.list@3` reads, `contacts.search@1`, `messaging.search@2`, and the separate
51
53
  body-free interaction exporter. `contacts.search@1` executes the official Beeper
52
54
  CLI 0.6.2 executable pinned by Wrench; `contacts.list@3` and `messaging.search@2`
@@ -54,7 +56,11 @@ use Wrench's bounded Desktop-loopback read paths. The exporter is macOS arm64 on
54
56
  and reports lower-bound interaction counts from complete one-to-one conversations
55
57
  only. See
56
58
  [peopleblade.com/sources](https://peopleblade.com/sources) for the complete provider
57
- guide. PeopleBlade calls no
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
58
64
  Beeper interface directly and exposes none of Wrench's Beeper send or action
59
65
  operations. Archive imports, Apple Contacts, iMessage, notes, identity review,
60
66
  backups, and optional PeopleBlade cloud commands do not require Wrench.
@@ -1,8 +1,8 @@
1
1
  # Third-party notices
2
2
 
3
3
  The PeopleBlade CLI bundle includes reviewed client-boundary code from
4
- `@hraness/wrench` 0.16.7 (commit
5
- `a2b321081335ac28e5df0ccbb67ebea0424d49f5`) and message-bundle contract code
4
+ `@hraness/wrench` 0.16.8 (commit
5
+ `b0cf2ecbc1113fcc8ef673a824be475c3d7bbb46`) and message-bundle contract code
6
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.
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,