@astrosheep/square 0.3.84 → 0.3.85
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/guides/claude-native.md +11 -10
- package/package.json +1 -1
- package/plugins/claude/.claude-plugin/plugin.json +1 -1
- package/plugins/codex/.codex-plugin/plugin.json +1 -1
- package/plugins/paseo/OVERVIEW.md +4 -7
- package/plugins/paseo/README.md +6 -30
- package/plugins/paseo/package.json +3 -3
- package/plugins/paseo/paseo-plugin.json +1 -1
- package/plugins/paseo/index.server.ts +0 -10
- package/plugins/paseo/server/record-delivery.ts +0 -28
package/guides/claude-native.md
CHANGED
|
@@ -37,19 +37,20 @@ changes `crossSessionInbound`. After bytes may have been sent, `unknown` remains
|
|
|
37
37
|
attention-wide and prevents another send through Paseo, even if routes later change.
|
|
38
38
|
|
|
39
39
|
Each native send persists a message ID before writing; the wire `uuid` and
|
|
40
|
-
`msg_id` carry that ID.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
`msg_id` carry that ID. Square records no native custody telemetry from Paseo:
|
|
41
|
+
official Paseo exposes no delivery-status lifecycle event, so a held message stays
|
|
42
|
+
`unknown` with `native_admission_unconfirmed`. Recording a `held`, `released` or
|
|
43
|
+
`dropped` observation would require a Paseo-provided event; Square does not patch
|
|
44
|
+
Paseo to invent one. Even when such an observation exists, the event ID is
|
|
45
|
+
deduplicated and the native reason and observation time remain diagnostic only.
|
|
46
|
+
Neither a release nor a drop is a queue receipt, proof of consumption or retry
|
|
47
|
+
authorization.
|
|
46
48
|
|
|
47
49
|
`square harness doctor delivery` shows native custody separately from pending
|
|
48
50
|
attention, including after the activity is seen or the participant leaves. Paseo
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
when policy allows it, or a visible reason without bypass/replay when policy holds it.
|
|
51
|
+
presents the `peer_message_hold` state in its own timeline. Acceptance means normal
|
|
52
|
+
delivery when the receiver allows it, or a visible reason without bypass/replay when
|
|
53
|
+
policy holds it.
|
|
53
54
|
|
|
54
55
|
## MCP tools and call identity
|
|
55
56
|
|
package/package.json
CHANGED
|
@@ -5,13 +5,10 @@ who reached you and where. Expand it to see the original custom-message content,
|
|
|
5
5
|
select text, or copy it in full. The card follows the active Paseo theme on
|
|
6
6
|
desktop and mobile.
|
|
7
7
|
|
|
8
|
-
Requires
|
|
9
|
-
which add `agent.delivery_status` to official 0.12.0. Square
|
|
8
|
+
Requires Paseo 0.11.2 or newer with custom-message tool rows (#6090). Square
|
|
10
9
|
0.3.69 or newer supplies structured card headings. Older messages and joining
|
|
11
10
|
context use a neutral “Square context” heading.
|
|
12
11
|
|
|
13
|
-
The
|
|
14
|
-
context.
|
|
15
|
-
|
|
16
|
-
held/released/dropped diagnostics on Square's original wake attempt. It does not
|
|
17
|
-
change admission policy, confirm consumption, or resend notifications.
|
|
12
|
+
The plugin changes presentation only. It does not send prompts or alter model
|
|
13
|
+
context. If Square clipped a body before delivery, expansion shows that same
|
|
14
|
+
preview and the command for reading the rest, not an additional fetch.
|
package/plugins/paseo/README.md
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# Square for Paseo
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
notification, marks an activity seen, or alters model context.
|
|
3
|
+
A client-only presentation plugin for Square custom messages. No daemon restart,
|
|
4
|
+
backend entry, extra notifications, or model-context changes.
|
|
6
5
|
|
|
7
6
|
## Install from GitHub
|
|
8
7
|
|
|
@@ -16,13 +15,9 @@ directory. Square tags up to v0.3.69 do not contain it.
|
|
|
16
15
|
Paseo supplies all runtime modules. No Git preparation step is needed. Plugins
|
|
17
16
|
are trusted, unsandboxed code running inside the Paseo app.
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
support for an unpatched or hypothetical future official release. The client
|
|
23
|
-
card uses custom-message tool rows (#6090).
|
|
24
|
-
Square 0.3.69+ provides `details.items` for the collapsed heading. Messages without
|
|
25
|
-
those details still expand to their original content.
|
|
18
|
+
Requires Paseo >=0.11.2 with custom-message tool rows (#6090). Square 0.3.69+
|
|
19
|
+
provides `details.items` for the collapsed heading. Messages without those
|
|
20
|
+
details still expand to their original content.
|
|
26
21
|
|
|
27
22
|
## Display
|
|
28
23
|
|
|
@@ -45,29 +40,11 @@ and compact layout on narrow displays. Expansion starts at the top-right arrow;
|
|
|
45
40
|
collapse returns from the arrow below the expanded content. Removing the plugin restores Paseo's
|
|
46
41
|
ordinary custom-message row.
|
|
47
42
|
|
|
48
|
-
## Native custody evidence
|
|
49
|
-
|
|
50
|
-
Paseo renders Claude `peer_message_hold` events as timeline notifications. The
|
|
51
|
-
server entry forwards socket observations (original event ID, native session and
|
|
52
|
-
message ID, held/released/dropped state, reason and observation time) to
|
|
53
|
-
`square claude-mod` over JSON stdin in the agent's working directory. Square
|
|
54
|
-
matches a message ID persisted before sending and appends the observation to the
|
|
55
|
-
original wake attempt. Unknown message IDs create no evidence. Failures surface
|
|
56
|
-
as plugin hook errors; forwarding is bounded to five seconds and honors hook
|
|
57
|
-
cancellation.
|
|
58
|
-
|
|
59
|
-
`held`, `released` and `dropped` are not queue receipts or proof of consumption.
|
|
60
|
-
They never turn `unknown` into `accepted` or authorize a replay. `square harness
|
|
61
|
-
doctor delivery` shows the native state and reason, including after the activity is seen.
|
|
62
|
-
The `square` executable must resolve to the matching Square release on the daemon's PATH.
|
|
63
|
-
|
|
64
43
|
## Develop
|
|
65
44
|
|
|
66
45
|
```bash
|
|
67
46
|
cd plugins/paseo
|
|
68
47
|
npm ci
|
|
69
|
-
# Link the SDK from the built Paseo 0.12.1-square.1 source checkout:
|
|
70
|
-
npm link --no-save /path/to/paseo/packages/plugin
|
|
71
48
|
npm run typecheck
|
|
72
49
|
npm test
|
|
73
50
|
paseo plugin install "$PWD"
|
|
@@ -79,5 +56,4 @@ After editing an installed directory source:
|
|
|
79
56
|
paseo plugin reload square
|
|
80
57
|
```
|
|
81
58
|
|
|
82
|
-
|
|
83
|
-
API. Reloading a plugin cannot add that API to an older daemon. The plugin ID is `square`.
|
|
59
|
+
No Paseo restart is needed. The plugin ID is `square`.
|
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
"test": "node --experimental-strip-types --test test/*.test.ts"
|
|
9
9
|
},
|
|
10
10
|
"devDependencies": {
|
|
11
|
-
"@getpaseo/plugin": "0.
|
|
12
|
-
"@types/node": "^22",
|
|
11
|
+
"@getpaseo/plugin": "0.11.2",
|
|
13
12
|
"@types/react": "~19.2.0",
|
|
13
|
+
"@types/node": "^22",
|
|
14
14
|
"react": "19.1.0",
|
|
15
15
|
"react-native": "0.81.5",
|
|
16
16
|
"typescript": "^5.9.3",
|
|
17
|
-
"zod": "4.4.3"
|
|
17
|
+
"zod": "^4.4.3"
|
|
18
18
|
}
|
|
19
19
|
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { PluginServerContext } from "@getpaseo/plugin/server";
|
|
2
|
-
import { recordDeliveryStatus } from "./server/record-delivery.ts";
|
|
3
|
-
|
|
4
|
-
export default function contribute(server: Pick<PluginServerContext, "on">) {
|
|
5
|
-
return server.on("agent.delivery_status", async ({ agent, observation }, { signal }) => {
|
|
6
|
-
// Agent providers can wrap Claude (for example yescode); the observation identifies the native producer.
|
|
7
|
-
if (observation.provider !== "claude" || observation.lane !== "socket" || !observation.eventId) return;
|
|
8
|
-
await recordDeliveryStatus(agent.cwd, observation, signal);
|
|
9
|
-
});
|
|
10
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { spawnProcess, type AgentDeliveryObservation } from "@getpaseo/plugin/server";
|
|
2
|
-
|
|
3
|
-
/** Forward native facts only. Square matches its pre-persisted message ID; no text parsing. */
|
|
4
|
-
export async function recordDeliveryStatus(
|
|
5
|
-
cwd: string,
|
|
6
|
-
observation: AgentDeliveryObservation,
|
|
7
|
-
signal: AbortSignal,
|
|
8
|
-
): Promise<void> {
|
|
9
|
-
const child = spawnProcess("square", ["claude-mod"], {
|
|
10
|
-
cwd, env: process.env, stdio: "pipe", signal, timeout: 5_000,
|
|
11
|
-
});
|
|
12
|
-
await new Promise<void>((resolve, reject) => {
|
|
13
|
-
child.once("error", reject);
|
|
14
|
-
child.stdin.once("error", reject);
|
|
15
|
-
// Output contains no user-facing content. Drain both pipes; the bridge exit is authoritative.
|
|
16
|
-
child.stdout.resume();
|
|
17
|
-
child.stderr.resume();
|
|
18
|
-
child.once("close", (code, killedBy) => {
|
|
19
|
-
if (code === 0) resolve();
|
|
20
|
-
else reject(new Error(`Square native status recorder failed (${killedBy ?? code}).`));
|
|
21
|
-
});
|
|
22
|
-
const { provider, sessionId, messageId, eventId, state, reason, observedAt } = observation;
|
|
23
|
-
child.stdin.end(JSON.stringify({ operation: "status", cwd, sessionId, status: {
|
|
24
|
-
provider, sessionId, messageId, eventId, state, observedAt,
|
|
25
|
-
...(reason === null ? {} : { reason }),
|
|
26
|
-
} }));
|
|
27
|
-
});
|
|
28
|
-
}
|