@paigy/harness 0.3.16 → 0.3.28
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 +15 -14
- package/dist/cli.js +1222 -364
- package/dist/main.js +1173 -321
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -22,15 +22,14 @@ without a desktop app. Two things need a process that actually owns the agent:
|
|
|
22
22
|
The point isn't notifications, it's a conversation with an agent that happens to be
|
|
23
23
|
running on your laptop. Both directions close (`paigy/conversation.ts`):
|
|
24
24
|
|
|
25
|
-
- **Answering.** The agent
|
|
26
|
-
|
|
27
|
-
and
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
deliberately conservative: a false positive buzzes someone who was never asked anything.
|
|
25
|
+
- **Answering.** The agent asks through Paigy's `contact` — its only channel to you; the
|
|
26
|
+
harness never relays its terminal output (`companion.md` Part 4, one channel) → your
|
|
27
|
+
reply lands on its Goal and goes straight back into stdin as the next turn. Without this
|
|
28
|
+
the loop is one-directional and dies at the first idle.
|
|
29
|
+
- **Initiating.** You say something unprompted from your phone → it arrives on the agent's
|
|
30
|
+
Goal → same stdin. You never have to wait to be asked. A Claude agent in the middle of a task
|
|
31
|
+
sees your words right after its next tool call, and gets them again as its next turn
|
|
32
|
+
(`companion.md` Part 4, words reach a running turn).
|
|
34
33
|
|
|
35
34
|
Answers are read out of whatever shape they arrive in (`spokenText`) — a tapped option,
|
|
36
35
|
a spoken sentence, a whole call log — because the words are what the agent needs, not
|
|
@@ -63,10 +62,8 @@ silent history from "answer me now" is `urgency`, not a second store:
|
|
|
63
62
|
|
|
64
63
|
| Event | Level | Why |
|
|
65
64
|
| --- | --- | --- |
|
|
66
|
-
| a turn (agent or user) | `inbox` | lands, never buzzes; searchable, handoff-able history |
|
|
67
65
|
| a blocked action | `banner` | claims attention; escalates on its own if unanswered |
|
|
68
66
|
| a blocked **destructive** action | `call` | `rm -rf` doesn't get to wait for the escalation ladder |
|
|
69
|
-
| a turn that **asked you something** | `banner` | a question filed silently is a conversation that dies |
|
|
70
67
|
| a turn that failed | `push` | worth knowing soon, not worth a sound |
|
|
71
68
|
| our own parse failure | — | not on the rail at all; it's our problem, not yours |
|
|
72
69
|
|
|
@@ -162,7 +159,7 @@ src/harness/ events.ts the neutral HarnessEvent the driver produces
|
|
|
162
159
|
catalog.ts which harnesses exist, detection, auth probes, installs
|
|
163
160
|
session.ts spawn, line-split, lifecycle — the only impure file here
|
|
164
161
|
src/paigy/ level.ts event → NotifyLevel
|
|
165
|
-
bridge.ts
|
|
162
|
+
bridge.ts permission asks, cannot-work notices, the turn's end as Goal progress
|
|
166
163
|
conversation.ts the round trip — your words into a running agent's stdin
|
|
167
164
|
src/triage/ evidence.ts the deterministic signals; judge.ts the one model boundary
|
|
168
165
|
verdict.ts the prompt + its defensive parser; triage.ts the sweep itself
|
|
@@ -227,7 +224,9 @@ curl -fsSL https://paigy.ai/install | sh
|
|
|
227
224
|
|
|
228
225
|
Installs the npm CLI (one self-contained file — the workspace libs are bundled) and
|
|
229
226
|
runs `paigy-harness setup`: QR-pairs the machine, hatches each detected agent's
|
|
230
|
-
identity (no codes), registers the MCP
|
|
227
|
+
identity (no codes), registers the Paigy MCP in every harness it runs (`MCP_WIRES` —
|
|
228
|
+
Claude Code, Codex, Antigravity: an agent's only channel to you) + the statusline,
|
|
229
|
+
grants a workspace, installs
|
|
231
230
|
the host service. `paigy-harness service` installs a
|
|
232
231
|
macOS launchd agent so hosting survives reboots — the host loop IS the service,
|
|
233
232
|
launchd just keeps it alive (the old "no daemon" note was about the WAKE channel,
|
|
@@ -292,7 +291,9 @@ LAST, after the hooks are gone.
|
|
|
292
291
|
- **Protocol churn is the standing risk.** Neither `stream-json` nor ACP adapter
|
|
293
292
|
behavior is a stability contract. Every driver fails soft by design: an unrecognized
|
|
294
293
|
frame is skipped, never fatal. If mirroring goes quiet after a CLI update, re-verify
|
|
295
|
-
the frame names in the driver doc comments first.
|
|
294
|
+
the frame names in the driver doc comments first. An adapter can also leave a prompt
|
|
295
|
+
unanswered for good (claude-agent-acp#1145); the driver cancels one after a long quiet
|
|
296
|
+
with no tool running (`companion.md` Part 4, one way in).
|
|
296
297
|
- **Auth probes are vendor commands** (`claude auth status`, `codex login status`) and
|
|
297
298
|
can drift with CLI releases; a probe failure reads as "needs login", so drift shows
|
|
298
299
|
up as a nagging hint, not a broken start.
|