@cotal-ai/pi 0.11.3 → 0.11.4

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"}
@@ -1,108 +0,0 @@
1
- const TOMBSTONE_CAP = 4096;
2
- /**
3
- * Pi-local acknowledgement ledger over MeshAgent's public prefix-drain API.
4
- *
5
- * A provider-confirmed batch is drained only when its still-buffered ids are the current front
6
- * prefix. Missing ids are allowed only at the older edge, where MeshAgent's bounded inbox may have
7
- * force-evicted them. Anything else is tombstoned and left unacked rather than risking a positional
8
- * drain of unrelated traffic. A late duplicate is discarded only when it reaches the front.
9
- */
10
- export class InboxTurn {
11
- source;
12
- tombstones = new Set();
13
- previousTombstones = new Set();
14
- constructor(source) {
15
- this.source = source;
16
- }
17
- peek() {
18
- return this.source.peekInbox();
19
- }
20
- /** Remove already-confirmed late duplicates from the front, one exact item at a time. */
21
- discardTombstonedFront() {
22
- let discarded = 0;
23
- while (true) {
24
- const front = this.source.peekInbox()[0];
25
- if (!front || !this.hasTombstone(front.id))
26
- return discarded;
27
- this.source.drainInbox(1);
28
- discarded++;
29
- }
30
- }
31
- /** Prefix-only discard for adapter-local traffic such as own channel echoes. */
32
- discardFront(match) {
33
- let discarded = 0;
34
- while (true) {
35
- const front = this.source.peekInbox()[0];
36
- if (!front || !match(front))
37
- return discarded;
38
- this.source.drainInbox(1);
39
- discarded++;
40
- }
41
- }
42
- /**
43
- * Select the next FIFO batch after already-reserved ids. `boundary` is never skipped: a buried
44
- * echo or other local boundary waits until older reserved work reaches a terminal decision.
45
- */
46
- select(reserved, boundary, limit) {
47
- const selected = [];
48
- for (const item of this.source.peekInbox()) {
49
- if (reserved.has(item.id))
50
- continue;
51
- if (boundary(item))
52
- break;
53
- selected.push(item);
54
- if (selected.length >= limit)
55
- break;
56
- }
57
- return selected;
58
- }
59
- /**
60
- * Commit provider-confirmed ids without ever calling drainInbox(0), which means "drain all" in
61
- * MeshAgent. On an invariant mismatch, acknowledge nothing and retain tombstones for exact later
62
- * discard.
63
- */
64
- commitConfirmed(ids) {
65
- if (ids.length === 0)
66
- return { drained: 0, tombstoned: 0 };
67
- this.discardTombstonedFront();
68
- const pending = this.source.peekInbox();
69
- const pendingIds = new Set(pending.map((item) => item.id));
70
- const firstPresent = ids.findIndex((id) => pendingIds.has(id));
71
- if (firstPresent < 0) {
72
- for (const id of ids)
73
- this.addTombstone(id);
74
- return { drained: 0, tombstoned: ids.length };
75
- }
76
- const remaining = ids.slice(firstPresent);
77
- const missingAfterFront = remaining.find((id) => !pendingIds.has(id));
78
- const actualPrefix = pending.slice(0, remaining.length).map((item) => item.id);
79
- const prefixMatches = !missingAfterFront && actualPrefix.length === remaining.length && actualPrefix.every((id, i) => id === remaining[i]);
80
- if (!prefixMatches) {
81
- for (const id of ids)
82
- this.addTombstone(id);
83
- const expected = remaining.join(", ");
84
- const actual = actualPrefix.join(", ");
85
- return {
86
- drained: 0,
87
- tombstoned: ids.length,
88
- error: `confirmed inbox prefix mismatch: expected [${expected}], found [${actual}]`,
89
- };
90
- }
91
- if (remaining.length > 0)
92
- this.source.drainInbox(remaining.length);
93
- for (const id of ids.slice(0, firstPresent))
94
- this.addTombstone(id);
95
- return { drained: remaining.length, tombstoned: firstPresent };
96
- }
97
- hasTombstone(id) {
98
- return this.tombstones.has(id) || this.previousTombstones.has(id);
99
- }
100
- addTombstone(id) {
101
- this.tombstones.add(id);
102
- if (this.tombstones.size >= TOMBSTONE_CAP) {
103
- this.previousTombstones = this.tombstones;
104
- this.tombstones = new Set();
105
- }
106
- }
107
- }
108
- //# sourceMappingURL=inbox-turn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inbox-turn.js","sourceRoot":"","sources":["../src/inbox-turn.ts"],"names":[],"mappings":"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"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,CAAC,CAAC,oCAAoC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAoB,MAAM,iBAAiB,CAAC,CAAC,8CAA8C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"standalone.js","sourceRoot":"","sources":["../src/standalone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/tools.js DELETED
@@ -1,113 +0,0 @@
1
- /**
2
- * The Cotal tool surface for pi, rendered from the **shared** {@link cotalToolSpecs} (the
3
- * same source the Claude Code MCP and OpenCode connectors render) via `pi.registerTool`.
4
- * One source of truth → the cotal_* surface can't drift across adapters: a pi peer gets
5
- * the same tools (send/dm/anycast, roster, channels, status, spawn where capable).
6
- *
7
- * The one pi-specific tool is `cotal_inbox`: this connector DRIVES delivery (the loop
8
- * surfaces each batch into a turn and acks on completion), so the agent's inbox tool is
9
- * READ-ONLY — it peeks (never drains), or it would race the loop's ack.
10
- *
11
- * Schemas: the shared spec carries a Zod raw shape; pi's `registerTool` takes a TypeBox
12
- * TSchema. TypeBox schemas are plain JSON Schema, so we render Zod → JSON Schema (Zod 4's
13
- * `toJSONSchema`, the same path the Hermes connector uses) and brand it with `Type.Unsafe`.
14
- */
15
- import { z } from "zod";
16
- import { isConcreteChannel } from "@cotal-ai/core";
17
- import { cotalToolSpecs } from "@cotal-ai/connector-core";
18
- import { Type } from "typebox";
19
- const READONLY_INBOX_DESCRIPTION = "Show the peer messages currently waiting for you (incl. focus-mode recall). You don't normally " +
20
- "need this — the connector delivers peer messages into your turns automatically; use it to " +
21
- "re-check what's pending mid-task. Read-only: it never consumes them.";
22
- /** Mesh etiquette, appended to the system prompt while the send tools are active. The first
23
- * line is load-bearing: with loop-owned delivery removed, plain chat output goes nowhere —
24
- * a reply EXISTS only if the model sends it through a tool. */
25
- const SEND_GUIDELINES = [
26
- "Peer messages from the Cotal mesh arrive as user messages tagged 📨. Your chat output is NOT " +
27
- "delivered to peers — when a reply is warranted, send it with cotal_dm (back to that peer), " +
28
- "cotal_send (to a channel), or cotal_anycast (to a role).",
29
- "Reply only when a reply is actually needed — a silent acknowledgement is correct; " +
30
- '"agreed/thanks/good point" messages are noise. And @-mention a peer only when you need THAT ' +
31
- "specific peer to act: a mention wakes them, so mentioning in acknowledgements or sign-offs " +
32
- "makes peers ping-pong wake-ups in an endless loop.",
33
- ];
34
- function toParameters(schema) {
35
- if (!schema)
36
- return Type.Object({});
37
- // io:"input" — the default (output) io emits `additionalProperties: false`, and pi validates
38
- // args strictly against the schema, so a harmless stray key would fail a call that the same
39
- // Zod shape accepts (strip mode) on the Claude Code / OpenCode paths. Input io matches those.
40
- return Type.Unsafe(z.toJSONSchema(z.object(schema), { io: "input" }));
41
- }
42
- /** `<label> → <target>: <text>` for a send-tool call, so the operator SEES what the model is
43
- * sending from inside the session (pi's default extension-tool rendering shows only the label). */
44
- function sendCallLine(name, config, args) {
45
- // While the call's args are still streaming in, fields may be absent — render "…" rather
46
- // than a bogus concrete target; the settled frame paints the real one.
47
- const text = String(args.text ?? "");
48
- if (name === "cotal_dm")
49
- return `cotal_dm → ${args.to ? `"${String(args.to)}"` : "…"}: ${text}`;
50
- if (name === "cotal_anycast")
51
- return `cotal_anycast → @${String(args.role ?? "…")}: ${text}`;
52
- // Same default the tool itself applies (first CONCRETE channel) — subscribe[0] may be a
53
- // wildcard like `team.>`, which the message can never actually go to. Strip a display `#`
54
- // the model may have echoed back, as the tool's own channel normalization does.
55
- const channel = String(args.channel ?? config.subscribe.find(isConcreteChannel) ?? "general").replace(/^#+/, "");
56
- return `cotal_send → #${channel}: ${text}`;
57
- }
58
- /** Word-wrap a line to the viewport, satisfying pi-tui's structural `Component` contract
59
- * ({ render(width): string[]; invalidate(): void }) without importing pi-tui — the published
60
- * extension must add no runtime dependency on the host. Static text: invalidate is a no-op. */
61
- function wrapped(line) {
62
- return {
63
- invalidate() { },
64
- render(width) {
65
- const w = Math.max(16, width);
66
- const out = [];
67
- let rest = line.replace(/\s+/g, " ");
68
- while (rest.length > w) {
69
- const cut = rest.lastIndexOf(" ", w);
70
- const at = cut > w / 2 ? cut : w;
71
- out.push(rest.slice(0, at));
72
- rest = rest.slice(at).trimStart();
73
- }
74
- out.push(rest);
75
- return out;
76
- },
77
- };
78
- }
79
- const SEND_TOOLS = new Set(["cotal_send", "cotal_dm", "cotal_anycast"]);
80
- /** Register the full cotal_* tool set on a pi session, wired to one mesh agent. */
81
- export function registerCotalTools(pi, mesh, config) {
82
- for (const spec of cotalToolSpecs(config, "pi")) {
83
- const readonlyInbox = spec.name === "cotal_inbox";
84
- pi.registerTool({
85
- name: spec.name,
86
- label: spec.title,
87
- description: readonlyInbox ? READONLY_INBOX_DESCRIPTION : spec.description,
88
- parameters: readonlyInbox ? Type.Object({}) : toParameters(spec.schema),
89
- promptGuidelines: spec.name === "cotal_send" ? SEND_GUIDELINES : undefined,
90
- renderCall: SEND_TOOLS.has(spec.name)
91
- ? (args) => wrapped(sendCallLine(spec.name, config, (args ?? {})))
92
- : undefined,
93
- async execute(_id, params) {
94
- const args = readonlyInbox
95
- ? { peek: true }
96
- : { ...(params ?? {}) };
97
- if (spec.name === "cotal_send" && typeof args.channel === "string") {
98
- const channel = args.channel.replace(/^#+/, "");
99
- if (!isConcreteChannel(channel)) {
100
- return {
101
- content: [{ type: "text", text: `⚠ ${JSON.stringify(args.channel)} is not a concrete channel` }],
102
- details: undefined,
103
- };
104
- }
105
- args.channel = channel;
106
- }
107
- const r = await spec.run(mesh, config, args);
108
- return { content: [{ type: "text", text: r.isError ? `⚠ ${r.text}` : r.text }], details: undefined };
109
- },
110
- });
111
- }
112
- }
113
- //# sourceMappingURL=tools.js.map
package/dist/tools.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}