@rubytech/create-sitedesk-code 0.1.613 → 0.1.614

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.
Files changed (76) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/lib/agent-dispatch-rule/dist/index.d.ts +34 -0
  3. package/payload/platform/lib/agent-dispatch-rule/dist/index.d.ts.map +1 -1
  4. package/payload/platform/lib/agent-dispatch-rule/dist/index.js +39 -0
  5. package/payload/platform/lib/agent-dispatch-rule/dist/index.js.map +1 -1
  6. package/payload/platform/lib/agent-dispatch-rule/src/__tests__/carrier-verdict.test.ts +92 -0
  7. package/payload/platform/lib/agent-dispatch-rule/src/index.ts +59 -0
  8. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +46 -1
  9. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +6 -0
  10. package/payload/platform/plugins/docs/references/telegram-guide.md +45 -0
  11. package/payload/platform/plugins/scheduling/mcp/dist/index.js +2 -0
  12. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
  13. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch-carrier.test.d.ts +2 -0
  14. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch-carrier.test.d.ts.map +1 -0
  15. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch-carrier.test.js +72 -0
  16. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch-carrier.test.js.map +1 -0
  17. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery-reconcile.test.d.ts +2 -0
  18. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery-reconcile.test.d.ts.map +1 -0
  19. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery-reconcile.test.js +327 -0
  20. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery-reconcile.test.js.map +1 -0
  21. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery.test.d.ts +2 -0
  22. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery.test.d.ts.map +1 -0
  23. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery.test.js +130 -0
  24. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery.test.js.map +1 -0
  25. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.js +27 -58
  26. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.js.map +1 -1
  27. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts +8 -3
  28. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts.map +1 -1
  29. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js +37 -3
  30. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js.map +1 -1
  31. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-delivery.d.ts +67 -0
  32. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-delivery.d.ts.map +1 -0
  33. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-delivery.js +133 -0
  34. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-delivery.js.map +1 -0
  35. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.d.ts +67 -12
  36. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.d.ts.map +1 -1
  37. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.js +226 -72
  38. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.js.map +1 -1
  39. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js +66 -4
  40. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js.map +1 -1
  41. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/reconcile-run-controls.test.d.ts +2 -0
  42. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/reconcile-run-controls.test.d.ts.map +1 -0
  43. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/reconcile-run-controls.test.js +45 -0
  44. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/reconcile-run-controls.test.js.map +1 -0
  45. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts +3 -1
  46. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts.map +1 -1
  47. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js +32 -7
  48. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js.map +1 -1
  49. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +12 -1
  50. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
  51. package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js +15 -2
  52. package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js.map +1 -1
  53. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts +14 -0
  54. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts.map +1 -1
  55. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +4 -0
  56. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
  57. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts +3 -0
  58. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts.map +1 -1
  59. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js +2 -0
  60. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js.map +1 -1
  61. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -1
  62. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +14 -0
  63. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
  64. package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-row.test.d.ts +2 -0
  65. package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-row.test.d.ts.map +1 -0
  66. package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-row.test.js +237 -0
  67. package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-row.test.js.map +1 -0
  68. package/payload/platform/plugins/telegram/mcp/dist/lib/card-row.d.ts +96 -0
  69. package/payload/platform/plugins/telegram/mcp/dist/lib/card-row.d.ts.map +1 -0
  70. package/payload/platform/plugins/telegram/mcp/dist/lib/card-row.js +156 -0
  71. package/payload/platform/plugins/telegram/mcp/dist/lib/card-row.js.map +1 -0
  72. package/payload/platform/plugins/telegram/mcp/dist/tools/card.d.ts.map +1 -1
  73. package/payload/platform/plugins/telegram/mcp/dist/tools/card.js +53 -0
  74. package/payload/platform/plugins/telegram/mcp/dist/tools/card.js.map +1 -1
  75. package/payload/server/public/operator.html +1 -1
  76. package/payload/server/server.js +663 -620
@@ -1 +1 @@
1
- {"version":3,"file":"schedule-update.js","sourceRoot":"","sources":["../../src/tools/schedule-update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schedule-update.js","sourceRoot":"","sources":["../../src/tools/schedule-update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=card-row.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-row.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/card-row.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,237 @@
1
+ // Task 2775 — the card's own store row, written by the plugin at send time.
2
+ //
3
+ // Every assertion here runs with NO follower attached, which is the whole point:
4
+ // the row used to be written by the native file follower off the session JSONL,
5
+ // and a subagent's transcript is a file no follower opens. These tests are the
6
+ // standing proof that the row no longer depends on anything outside this
7
+ // process.
8
+ import { describe, expect, it, beforeEach, afterEach } from "vitest";
9
+ import { mkdtempSync, mkdirSync, writeFileSync, readFileSync, existsSync } from "node:fs";
10
+ import { tmpdir } from "node:os";
11
+ import { join } from "node:path";
12
+ import { telegramCard } from "../tools/card.js";
13
+ import { resolveTelegramStoreDir } from "../lib/account-write.js";
14
+ import { BUSINESS_CONNECTION_FILE } from "../lib/business-connection-store.js";
15
+ import { channelKeyToFileStem } from "../../../../../lib/telegram-reach/dist/index.js";
16
+ const ACC = "acc-1";
17
+ const BOT = "111";
18
+ const CHAT = 222;
19
+ let platformRoot;
20
+ let lines;
21
+ function install() {
22
+ const root = mkdtempSync(join(tmpdir(), "brand-"));
23
+ mkdirSync(join(root, "platform"), { recursive: true });
24
+ const dir = join(root, "data", "accounts", ACC);
25
+ mkdirSync(dir, { recursive: true });
26
+ writeFileSync(join(dir, "account.json"), JSON.stringify({ telegram: { bots: [{ id: BOT, role: "admin", token: `${BOT}:SECRET` }] } }), "utf-8");
27
+ return join(root, "platform");
28
+ }
29
+ function recorder(replies) {
30
+ const calls = [];
31
+ let i = 0;
32
+ const fetchImpl = (async (url, init) => {
33
+ calls.push({
34
+ method: String(url).split("/").pop() ?? "",
35
+ body: JSON.parse(String(init.body)),
36
+ });
37
+ return new Response(JSON.stringify(replies[i++] ?? { ok: true, result: {} }));
38
+ });
39
+ return { calls, fetchImpl };
40
+ }
41
+ const sent = (id) => ({ ok: true, result: { message_id: id } });
42
+ function deps(fetchImpl) {
43
+ return {
44
+ platformRoot,
45
+ accountId: ACC,
46
+ callId: "abcd1234",
47
+ log: (l) => lines.push(l),
48
+ fetchImpl,
49
+ };
50
+ }
51
+ /** Every row in one conversation file, in file order. `[]` when the writer
52
+ * opened no file at all, which is the assertion most of these tests make. */
53
+ function rows(channelKey) {
54
+ const resolved = resolveTelegramStoreDir(platformRoot, ACC);
55
+ if (!resolved.ok)
56
+ throw new Error(resolved.error);
57
+ const file = join(resolved.dir, `${channelKeyToFileStem(channelKey)}.jsonl`);
58
+ if (!existsSync(file))
59
+ return [];
60
+ return readFileSync(file, "utf-8")
61
+ .split("\n")
62
+ .filter((l) => l.trim())
63
+ .map((l) => JSON.parse(l));
64
+ }
65
+ const plainKey = `${BOT}:${CHAT}`;
66
+ beforeEach(() => {
67
+ platformRoot = install();
68
+ lines = [];
69
+ process.env.MAXY_DIR_OVERRIDE = mkdtempSync(join(tmpdir(), "tg-store-"));
70
+ delete process.env.SESSION_ID;
71
+ });
72
+ afterEach(() => {
73
+ delete process.env.MAXY_DIR_OVERRIDE;
74
+ delete process.env.SESSION_ID;
75
+ });
76
+ describe("the card's store row", () => {
77
+ it("writes a message row for an accepted send, with no follower attached", async () => {
78
+ const { fetchImpl } = recorder([sent(112)]);
79
+ await telegramCard({ botId: BOT, chatId: CHAT, text: "Job 4102" }, deps(fetchImpl));
80
+ const all = rows(plainKey);
81
+ expect(all).toHaveLength(1);
82
+ expect(all[0]).toMatchObject({
83
+ messageId: `telegram:${ACC}:${plainKey}:card:112`,
84
+ body: "Job 4102",
85
+ fromMe: true,
86
+ senderId: String(CHAT),
87
+ senderName: null,
88
+ chatId: String(CHAT),
89
+ channelKey: plainKey,
90
+ scope: "admin",
91
+ origin: "agent",
92
+ });
93
+ });
94
+ it("writes an update row against the same id when the card is edited", async () => {
95
+ const first = recorder([sent(112)]);
96
+ await telegramCard({ botId: BOT, chatId: CHAT, key: "j", text: "one" }, deps(first.fetchImpl));
97
+ const second = recorder([sent(112)]);
98
+ const out = await telegramCard({ botId: BOT, chatId: CHAT, key: "j", text: "two" }, deps(second.fetchImpl));
99
+ expect(out.outcome).toBe("edited");
100
+ const all = rows(plainKey);
101
+ expect(all).toHaveLength(2);
102
+ expect(all[1]).toMatchObject({
103
+ kind: "update",
104
+ targetMessageId: `telegram:${ACC}:${plainKey}:card:112`,
105
+ body: "two",
106
+ });
107
+ });
108
+ it("carries the button labels a card offered", async () => {
109
+ const { fetchImpl } = recorder([sent(112)]);
110
+ await telegramCard({
111
+ botId: BOT,
112
+ chatId: CHAT,
113
+ text: "Accept?",
114
+ buttons: [[{ text: "Yes", callbackData: "y" }], [{ text: "No", callbackData: "n" }]],
115
+ }, deps(fetchImpl));
116
+ expect(rows(plainKey)[0]?.buttons).toEqual([
117
+ { text: "Yes", data: "y" },
118
+ { text: "No", data: "n" },
119
+ ]);
120
+ });
121
+ it("records the session id when the spawn stamped one, and null when it did not", async () => {
122
+ process.env.SESSION_ID = "sess-9";
123
+ const a = recorder([sent(1)]);
124
+ await telegramCard({ botId: BOT, chatId: CHAT, text: "x" }, deps(a.fetchImpl));
125
+ expect(rows(plainKey)[0]?.sessionId).toBe("sess-9");
126
+ delete process.env.SESSION_ID;
127
+ const b = recorder([sent(2)]);
128
+ await telegramCard({ botId: BOT, chatId: CHAT, text: "y" }, deps(b.fetchImpl));
129
+ // The row is the record and the attribution is a convenience: an unstamped
130
+ // spawn still writes the row.
131
+ expect(rows(plainKey)).toHaveLength(2);
132
+ expect(rows(plainKey)[1]?.sessionId).toBeNull();
133
+ });
134
+ it("writes nothing when Telegram reports the card unchanged", async () => {
135
+ const first = recorder([sent(112)]);
136
+ await telegramCard({ botId: BOT, chatId: CHAT, key: "j", text: "same" }, deps(first.fetchImpl));
137
+ const before = rows(plainKey).length;
138
+ const second = recorder([
139
+ { ok: false, error_code: 400, description: "Bad Request: message is not modified" },
140
+ ]);
141
+ const out = await telegramCard({ botId: BOT, chatId: CHAT, key: "j", text: "same" }, deps(second.fetchImpl));
142
+ expect(out.outcome).toBe("unchanged");
143
+ expect(rows(plainKey)).toHaveLength(before);
144
+ });
145
+ it("writes nothing when Telegram refuses the send", async () => {
146
+ const { fetchImpl } = recorder([
147
+ { ok: false, error_code: 403, description: "Forbidden: bot was blocked by the user" },
148
+ ]);
149
+ const out = await telegramCard({ botId: BOT, chatId: CHAT, text: "hi" }, deps(fetchImpl));
150
+ expect(out.outcome).toBe("none");
151
+ expect(rows(plainKey)).toEqual([]);
152
+ });
153
+ it("writes nothing when the call never reached Telegram", async () => {
154
+ const fetchImpl = (async () => {
155
+ throw new Error("network down");
156
+ });
157
+ const out = await telegramCard({ botId: BOT, chatId: CHAT, text: "hi" }, deps(fetchImpl));
158
+ expect(out.outcome).toBe("none");
159
+ expect(rows(plainKey)).toEqual([]);
160
+ });
161
+ it("writes nothing when no bot is registered", async () => {
162
+ const { fetchImpl } = recorder([sent(1)]);
163
+ const out = await telegramCard({ botId: "999", chatId: CHAT, text: "hi" }, deps(fetchImpl));
164
+ expect(out.outcome).toBe("none");
165
+ expect(rows(`999:${CHAT}`)).toEqual([]);
166
+ });
167
+ it("writes nothing when the MCP holds no account", async () => {
168
+ const { fetchImpl } = recorder([sent(1)]);
169
+ const out = await telegramCard({ botId: BOT, chatId: CHAT, text: "hi" }, { ...deps(fetchImpl), accountId: undefined });
170
+ expect(out.outcome).toBe("none");
171
+ expect(rows(plainKey)).toEqual([]);
172
+ });
173
+ it("keeps the business conversation's own key rather than opening a second file", async () => {
174
+ // Task 2615's key shape. Seeding an inbound business row is what makes the
175
+ // send resolve a connection, which is the only signal the destination is the
176
+ // connected-business conversation.
177
+ const bizKey = `${BOT}:biz:${CHAT}`;
178
+ const resolved = resolveTelegramStoreDir(platformRoot, ACC);
179
+ if (!resolved.ok)
180
+ throw new Error(resolved.error);
181
+ mkdirSync(resolved.dir, { recursive: true });
182
+ writeFileSync(join(resolved.dir, `${channelKeyToFileStem(bizKey)}.jsonl`), JSON.stringify({
183
+ messageId: `telegram:${ACC}:${bizKey}:in:1`,
184
+ body: "hi",
185
+ fromMe: false,
186
+ telegramDate: Math.floor(Date.now() / 1000),
187
+ }) + "\n", "utf-8");
188
+ writeFileSync(join(platformRoot, "..", "data", "accounts", ACC, BUSINESS_CONNECTION_FILE), JSON.stringify({ [BOT]: { id: "conn-1", isEnabled: true, at: Date.now() } }), "utf-8");
189
+ const { fetchImpl } = recorder([sent(112)]);
190
+ await telegramCard({ botId: BOT, chatId: CHAT, text: "hello" }, deps(fetchImpl));
191
+ expect(rows(bizKey)).toHaveLength(2);
192
+ expect(rows(bizKey)[1]).toMatchObject({
193
+ messageId: `telegram:${ACC}:${bizKey}:card:112`,
194
+ channelKey: bizKey,
195
+ });
196
+ expect(rows(plainKey)).toEqual([]);
197
+ });
198
+ it("emits op=card-sent before the write and op=card-row on the write's verdict", async () => {
199
+ const { fetchImpl } = recorder([sent(112)]);
200
+ await telegramCard({ botId: BOT, chatId: CHAT, text: "hi" }, deps(fetchImpl));
201
+ const sentLine = lines.findIndex((l) => l.includes("op=card-sent"));
202
+ const rowLine = lines.findIndex((l) => l.includes("op=card-row"));
203
+ expect(sentLine).toBeGreaterThanOrEqual(0);
204
+ expect(rowLine).toBeGreaterThan(sentLine);
205
+ expect(lines[sentLine]).toContain(`accountId=${ACC}`);
206
+ expect(lines[sentLine]).toContain(`botId=${BOT}`);
207
+ expect(lines[sentLine]).toContain(`chatId=${CHAT}`);
208
+ expect(lines[sentLine]).toContain(`key=${plainKey}`);
209
+ expect(lines[sentLine]).toContain("messageId=112");
210
+ expect(lines[sentLine]).toContain("outcome=sent");
211
+ expect(lines[rowLine]).toContain("written=yes");
212
+ expect(lines[rowLine]).toContain("reason=-");
213
+ });
214
+ it("emits neither line on a card that never reached Telegram", async () => {
215
+ const { fetchImpl } = recorder([
216
+ { ok: false, error_code: 403, description: "Forbidden: bot was blocked by the user" },
217
+ ]);
218
+ await telegramCard({ botId: BOT, chatId: CHAT, text: "hi" }, deps(fetchImpl));
219
+ expect(lines.filter((l) => l.includes("op=card-sent"))).toHaveLength(0);
220
+ expect(lines.filter((l) => l.includes("op=card-row"))).toHaveLength(0);
221
+ });
222
+ it("is idempotent: one message id yields one row", async () => {
223
+ const first = recorder([sent(112)]);
224
+ await telegramCard({ botId: BOT, chatId: CHAT, text: "one" }, deps(first.fetchImpl));
225
+ // A second unkeyed send that Telegram answers with the SAME id — the shape a
226
+ // redelivery would take. The row identity is the message id, so the append
227
+ // must not mint a second row for it.
228
+ const second = recorder([sent(112)]);
229
+ await telegramCard({ botId: BOT, chatId: CHAT, text: "one" }, deps(second.fetchImpl));
230
+ expect(rows(plainKey)).toHaveLength(1);
231
+ // `written=no reason=duplicate` is the named shape for a card that has no
232
+ // NEW row. A silent second append would be the failure this asserts against.
233
+ expect(lines.filter((l) => l.includes("op=card-row") && l.includes("written=yes"))).toHaveLength(1);
234
+ expect(lines.join("\n")).toContain("written=no reason=duplicate");
235
+ });
236
+ });
237
+ //# sourceMappingURL=card-row.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-row.test.js","sourceRoot":"","sources":["../../src/__tests__/card-row.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Task 2775 — the card's operator-surface store row, written where the card is
3
+ * sent.
4
+ *
5
+ * Task 2677 made the native file follower the writer: card.ts encoded the
6
+ * outcome and message id into its result text and the follower parsed them off
7
+ * the session JSONL. That works for exactly one seat. A follower streams one
8
+ * session's transcript, and a subagent's records go to
9
+ * `<parent>/subagents/agent-<id>.jsonl`, a file no follower opens — so a card a
10
+ * subagent sent reached Telegram, returned success, and left no row anywhere.
11
+ * `specialist-dispatch-gate.sh` refuses the main seat any tool a specialist card
12
+ * declares, which makes the subagent seat the ORDINARY path for a specialist's
13
+ * sends rather than a corner of it.
14
+ *
15
+ * So the write moved here. `tools/card.ts` is the one place every card passes
16
+ * through — parent seat, subagent seat and pinned public spawn alike — and it
17
+ * already holds everything the row needs. The follower's writer is gone rather
18
+ * than kept behind idempotency: two writers means two places to correct the next
19
+ * time the row shape changes, and the follower's copy could only ever duplicate
20
+ * what this one already wrote.
21
+ *
22
+ * The row SHAPE is `TelegramMessageRecord` / `TelegramUpdateRecord` from
23
+ * `platform/ui/app/lib/telegram/message-store.ts`, duplicated across the process
24
+ * boundary on purpose — the plugin cannot import from `platform/ui/app`, the
25
+ * same boundary that already duplicates the card store, the business connection
26
+ * and the live-location store. The PATH is not duplicated: it resolves through
27
+ * `resolveTelegramStoreDir`, the shared `telegramStoreRoot` derivation the
28
+ * platform writer and `telegram-messages` both use, so writer and reader cannot
29
+ * name different directories. Task 2644 is what happened when they could.
30
+ */
31
+ /** The conversation this card belongs to.
32
+ *
33
+ * Task 2723's rule, stated at the one place that actually knows which it is.
34
+ * A card sent AS a connected business account belongs to that conversation,
35
+ * whose key carries the `biz` marker (Task 2615); `<botId>:<chatId>` would open
36
+ * a SECOND file for a conversation that already has one and split it in half.
37
+ * The follower had to infer this from a trailer that could not express it. */
38
+ export declare function cardChannelKey(botId: string, chatId: string | number, business: boolean): string;
39
+ /** The row's stable identity. Keyed on Telegram's own message id, so the append
40
+ * is idempotent and an edit patches the row its first send wrote. */
41
+ export declare function cardRowId(accountId: string, channelKey: string, messageId: number): string;
42
+ export interface CardRowInput {
43
+ platformRoot: string;
44
+ accountId: string;
45
+ /** The APPLIED destination pair. `runPinned` overwrites both before the tool is
46
+ * entered, so on a pinned spawn what the model asked for is already gone and
47
+ * these are where the card actually went. */
48
+ botId: string;
49
+ chatId: string | number;
50
+ /** The send resolved a business connection, so the destination is the
51
+ * connected-business conversation. */
52
+ business: boolean;
53
+ outcome: "sent" | "edited";
54
+ /** Telegram's own id for this message. Undefined only when Telegram accepted
55
+ * the call and returned no `message_id`, which has no row to write. */
56
+ messageId: number | undefined;
57
+ text: string;
58
+ /** Flattened across keyboard rows, matching what the follower wrote: the
59
+ * operator reads the wording, and which row a button sat in is not part of
60
+ * it. */
61
+ buttons: {
62
+ text: string;
63
+ data: string | null;
64
+ }[];
65
+ /** The spawning shim's `SESSION_ID`, or null when it stamped none.
66
+ *
67
+ * ATTRIBUTION ONLY. Telegram row `sessionId` is not consumed for rendering or
68
+ * routing, so a null one is never a reason to skip the row — the row is the
69
+ * record and the attribution is a convenience. */
70
+ sessionId: string | null;
71
+ /** This install's clock at send time, ISO 8601. Passed in rather than taken
72
+ * here so the line the caller logged and the row it wrote carry one instant. */
73
+ at: string;
74
+ }
75
+ export interface CardRowResult {
76
+ written: boolean;
77
+ /** `-` when written, else the one word that says why not. `written=no` with a
78
+ * named reason is the only acceptable shape for a card that has no row. */
79
+ reason: string;
80
+ channelKey: string;
81
+ }
82
+ /**
83
+ * Write one card's store row. Never throws.
84
+ *
85
+ * A throw here would take down a send Telegram has already accepted, turning a
86
+ * record that is merely absent into a card the agent believes failed. The
87
+ * failure is reported as `{ written: false, reason }` and the caller names it on
88
+ * its own line.
89
+ *
90
+ * `sent` appends the message row and `edited` appends the update row. There is
91
+ * no third case: `unchanged`, `none` and every early return in `tools/card.ts`
92
+ * never reach this function, because a card that did not go out has nothing to
93
+ * record.
94
+ */
95
+ export declare function writeCardRow(input: CardRowInput): CardRowResult;
96
+ //# sourceMappingURL=card-row.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-row.d.ts","sourceRoot":"","sources":["../../src/lib/card-row.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH;;;;;;+EAM+E;AAC/E,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,QAAQ,EAAE,OAAO,GAChB,MAAM,CAER;AAED;sEACsE;AACtE,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1F;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB;;kDAE8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB;2CACuC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B;4EACwE;IACxE,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb;;cAEU;IACV,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC;IACjD;;;;uDAImD;IACnD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;qFACiF;IACjF,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB;gFAC4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAwBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CAwE/D"}
@@ -0,0 +1,156 @@
1
+ import { appendFileSync, existsSync, mkdirSync, readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { resolveTelegramStoreDir } from "./account-write.js";
4
+ import { channelKeyToFileStem, isStorableChannelKey, } from "../../../../../lib/telegram-reach/dist/index.js";
5
+ /**
6
+ * Task 2775 — the card's operator-surface store row, written where the card is
7
+ * sent.
8
+ *
9
+ * Task 2677 made the native file follower the writer: card.ts encoded the
10
+ * outcome and message id into its result text and the follower parsed them off
11
+ * the session JSONL. That works for exactly one seat. A follower streams one
12
+ * session's transcript, and a subagent's records go to
13
+ * `<parent>/subagents/agent-<id>.jsonl`, a file no follower opens — so a card a
14
+ * subagent sent reached Telegram, returned success, and left no row anywhere.
15
+ * `specialist-dispatch-gate.sh` refuses the main seat any tool a specialist card
16
+ * declares, which makes the subagent seat the ORDINARY path for a specialist's
17
+ * sends rather than a corner of it.
18
+ *
19
+ * So the write moved here. `tools/card.ts` is the one place every card passes
20
+ * through — parent seat, subagent seat and pinned public spawn alike — and it
21
+ * already holds everything the row needs. The follower's writer is gone rather
22
+ * than kept behind idempotency: two writers means two places to correct the next
23
+ * time the row shape changes, and the follower's copy could only ever duplicate
24
+ * what this one already wrote.
25
+ *
26
+ * The row SHAPE is `TelegramMessageRecord` / `TelegramUpdateRecord` from
27
+ * `platform/ui/app/lib/telegram/message-store.ts`, duplicated across the process
28
+ * boundary on purpose — the plugin cannot import from `platform/ui/app`, the
29
+ * same boundary that already duplicates the card store, the business connection
30
+ * and the live-location store. The PATH is not duplicated: it resolves through
31
+ * `resolveTelegramStoreDir`, the shared `telegramStoreRoot` derivation the
32
+ * platform writer and `telegram-messages` both use, so writer and reader cannot
33
+ * name different directories. Task 2644 is what happened when they could.
34
+ */
35
+ /** The conversation this card belongs to.
36
+ *
37
+ * Task 2723's rule, stated at the one place that actually knows which it is.
38
+ * A card sent AS a connected business account belongs to that conversation,
39
+ * whose key carries the `biz` marker (Task 2615); `<botId>:<chatId>` would open
40
+ * a SECOND file for a conversation that already has one and split it in half.
41
+ * The follower had to infer this from a trailer that could not express it. */
42
+ export function cardChannelKey(botId, chatId, business) {
43
+ return business ? `${botId}:biz:${chatId}` : `${botId}:${chatId}`;
44
+ }
45
+ /** The row's stable identity. Keyed on Telegram's own message id, so the append
46
+ * is idempotent and an edit patches the row its first send wrote. */
47
+ export function cardRowId(accountId, channelKey, messageId) {
48
+ return `telegram:${accountId}:${channelKey}:card:${messageId}`;
49
+ }
50
+ /** Every row already in one conversation file, message rows only.
51
+ *
52
+ * An update row carries no `messageId` of its own, so it can never collide with
53
+ * a card id; testing for the literal `kind` is the whole discriminator, the same
54
+ * rule `isUpdateRecord` uses on the platform side. */
55
+ function existingMessageIds(file) {
56
+ const out = new Set();
57
+ if (!existsSync(file))
58
+ return out;
59
+ for (const line of readFileSync(file, "utf-8").split("\n")) {
60
+ if (!line.trim())
61
+ continue;
62
+ try {
63
+ const row = JSON.parse(line);
64
+ if (row.kind === "update")
65
+ continue;
66
+ if (typeof row.messageId === "string")
67
+ out.add(row.messageId);
68
+ }
69
+ catch {
70
+ // A partial write from a crash mid-append is skipped, never a reason to
71
+ // refuse the row this call is writing.
72
+ }
73
+ }
74
+ return out;
75
+ }
76
+ /**
77
+ * Write one card's store row. Never throws.
78
+ *
79
+ * A throw here would take down a send Telegram has already accepted, turning a
80
+ * record that is merely absent into a card the agent believes failed. The
81
+ * failure is reported as `{ written: false, reason }` and the caller names it on
82
+ * its own line.
83
+ *
84
+ * `sent` appends the message row and `edited` appends the update row. There is
85
+ * no third case: `unchanged`, `none` and every early return in `tools/card.ts`
86
+ * never reach this function, because a card that did not go out has nothing to
87
+ * record.
88
+ */
89
+ export function writeCardRow(input) {
90
+ const channelKey = cardChannelKey(input.botId, input.chatId, input.business);
91
+ if (input.messageId === undefined)
92
+ return { written: false, reason: "no-message-id", channelKey };
93
+ // The traversal guard, and the same one the platform writer applies. A key
94
+ // whose halves are not plain Telegram ids must not become a path segment.
95
+ if (!isStorableChannelKey(channelKey)) {
96
+ return { written: false, reason: "unstorable-channel-key", channelKey };
97
+ }
98
+ const resolved = resolveTelegramStoreDir(input.platformRoot, input.accountId);
99
+ if (!resolved.ok)
100
+ return { written: false, reason: resolved.error, channelKey };
101
+ const file = join(resolved.dir, `${channelKeyToFileStem(channelKey)}.jsonl`);
102
+ const rowId = cardRowId(input.accountId, channelKey, input.messageId);
103
+ const chatId = String(input.chatId);
104
+ // Length-guarded, not truthiness-guarded, and matching what the follower
105
+ // wrote: the reader tells "never carried a keyboard" (absent) from "an edit
106
+ // removed the one it had" (empty array), and an edit that changed only the
107
+ // text must not read as one that stripped the buttons.
108
+ const buttons = input.buttons.length > 0 ? { buttons: input.buttons } : {};
109
+ try {
110
+ mkdirSync(resolved.dir, { recursive: true });
111
+ if (input.outcome === "sent") {
112
+ if (existingMessageIds(file).has(rowId)) {
113
+ return { written: false, reason: "duplicate", channelKey };
114
+ }
115
+ appendFileSync(file, JSON.stringify({
116
+ messageId: rowId,
117
+ sessionId: input.sessionId,
118
+ dateSent: input.at,
119
+ body: input.text,
120
+ fromMe: true,
121
+ // The DESTINATION chat on both, matching every row the follower wrote:
122
+ // an outbound card has no sender to name, so the conversation's own
123
+ // subject stands in and the row sorts beside its inbound siblings.
124
+ senderId: chatId,
125
+ senderName: null,
126
+ chatId,
127
+ channelKey,
128
+ // Telegram row scope is not consumed for rendering or routing (only
129
+ // WhatsApp rows feed the operator-conversations scope counter);
130
+ // 'admin' matches the operator-surface intent of a card row.
131
+ scope: "admin",
132
+ origin: "agent",
133
+ ...buttons,
134
+ createdAt: input.at,
135
+ }) + "\n", "utf-8");
136
+ }
137
+ else {
138
+ // Not deduped, and deliberately: Telegram reuses a card's message id for
139
+ // an edit, so a card edited three times is three legitimate patches on one
140
+ // target. This is the shape `appendUpdate` already uses.
141
+ appendFileSync(file, JSON.stringify({
142
+ kind: "update",
143
+ targetMessageId: rowId,
144
+ body: input.text,
145
+ ...buttons,
146
+ createdAt: input.at,
147
+ }) + "\n", "utf-8");
148
+ }
149
+ }
150
+ catch (err) {
151
+ const reason = err instanceof Error ? err.message : String(err);
152
+ return { written: false, reason: reason.slice(0, 100), channelKey };
153
+ }
154
+ return { written: true, reason: "-", channelKey };
155
+ }
156
+ //# sourceMappingURL=card-row.js.map