@essentialai/cogent-bridge 3.16.0 → 3.18.0

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 (64) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/backend/file-backend.d.ts +2 -2
  3. package/dist/backend/file-backend.d.ts.map +1 -1
  4. package/dist/backend/file-backend.js +3 -2
  5. package/dist/backend/file-backend.js.map +1 -1
  6. package/dist/backend/http-backend.d.ts +6 -3
  7. package/dist/backend/http-backend.d.ts.map +1 -1
  8. package/dist/backend/http-backend.js +20 -4
  9. package/dist/backend/http-backend.js.map +1 -1
  10. package/dist/backend/storage-backend.d.ts +11 -1
  11. package/dist/backend/storage-backend.d.ts.map +1 -1
  12. package/dist/cloud/http-client.d.ts +4 -2
  13. package/dist/cloud/http-client.d.ts.map +1 -1
  14. package/dist/cloud/http-client.js +4 -1
  15. package/dist/cloud/http-client.js.map +1 -1
  16. package/dist/config.d.ts +3 -0
  17. package/dist/config.d.ts.map +1 -1
  18. package/dist/config.js +6 -0
  19. package/dist/config.js.map +1 -1
  20. package/dist/index.js +2 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/mail/auth-error.d.ts +22 -0
  23. package/dist/mail/auth-error.d.ts.map +1 -0
  24. package/dist/mail/auth-error.js +43 -0
  25. package/dist/mail/auth-error.js.map +1 -0
  26. package/dist/mail/validate.d.ts +17 -0
  27. package/dist/mail/validate.d.ts.map +1 -1
  28. package/dist/mail/validate.js +37 -0
  29. package/dist/mail/validate.js.map +1 -1
  30. package/dist/services/agent-config.d.ts +34 -0
  31. package/dist/services/agent-config.d.ts.map +1 -0
  32. package/dist/services/agent-config.js +46 -0
  33. package/dist/services/agent-config.js.map +1 -0
  34. package/dist/services/auto-relay.d.ts.map +1 -1
  35. package/dist/services/auto-relay.js +29 -9
  36. package/dist/services/auto-relay.js.map +1 -1
  37. package/dist/services/cc-cli.d.ts +2 -1
  38. package/dist/services/cc-cli.d.ts.map +1 -1
  39. package/dist/services/cc-cli.js +10 -7
  40. package/dist/services/cc-cli.js.map +1 -1
  41. package/dist/services/codex-cli.d.ts.map +1 -1
  42. package/dist/services/codex-cli.js +6 -4
  43. package/dist/services/codex-cli.js.map +1 -1
  44. package/dist/tools/deregister-peer.d.ts.map +1 -1
  45. package/dist/tools/deregister-peer.js +15 -1
  46. package/dist/tools/deregister-peer.js.map +1 -1
  47. package/dist/tools/fetch-mail.d.ts.map +1 -1
  48. package/dist/tools/fetch-mail.js +13 -0
  49. package/dist/tools/fetch-mail.js.map +1 -1
  50. package/dist/tools/rotate-mail-creds.d.ts +15 -0
  51. package/dist/tools/rotate-mail-creds.d.ts.map +1 -0
  52. package/dist/tools/rotate-mail-creds.js +83 -0
  53. package/dist/tools/rotate-mail-creds.js.map +1 -0
  54. package/dist/tools/send-mail.d.ts.map +1 -1
  55. package/dist/tools/send-mail.js +11 -1
  56. package/dist/tools/send-mail.js.map +1 -1
  57. package/dist/tools/setup-mail.d.ts.map +1 -1
  58. package/dist/tools/setup-mail.js +2 -1
  59. package/dist/tools/setup-mail.js.map +1 -1
  60. package/dist/types.d.ts +15 -0
  61. package/dist/types.d.ts.map +1 -1
  62. package/dist/wizard/templates.js +1 -1
  63. package/package.json +1 -1
  64. package/server.json +2 -2
@@ -0,0 +1,15 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /**
3
+ * cogent_rotate_mail_creds — self-service mailbox password rotation (Cogent Mail M2.4).
4
+ *
5
+ * Re-keys THIS agent's Team mailbox: the bridge asks the relay (authenticated by the per-cwd cloud
6
+ * session token) to rotate on the mail server; the relay derives orgScope + channel label from the
7
+ * session (never client input) so the box is targeted deterministically. On success the fresh
8
+ * password is returned ONCE and written to the per-cwd 0600 mail-credential store, so subsequent
9
+ * cogent_send_mail / cogent_fetch_mail keep working. Use it if a mailbox password may be compromised.
10
+ *
11
+ * Cloud + Team only: it needs cloud credentials (endpoint/session/token/peerId) and a CP-provisioned
12
+ * mailbox. A free/local session gets a clear "rotation isn't available for this channel" error.
13
+ */
14
+ export declare function registerRotateMailCredsTool(server: McpServer): void;
15
+ //# sourceMappingURL=rotate-mail-creds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotate-mail-creds.d.ts","sourceRoot":"","sources":["../../src/tools/rotate-mail-creds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYpE;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqFnE"}
@@ -0,0 +1,83 @@
1
+ import { successResult, errorResult, BridgeError, BridgeErrorCode } from "../errors.js";
2
+ import { loadCredentials } from "../cloud/credential-store.js";
3
+ import { loadMailCredentials, saveMailCredentials, MAIL_DEFAULT_HOST, } from "../cloud/mail-credential-store.js";
4
+ /** Total budget for the relay round-trip. */
5
+ const ROTATE_TIMEOUT_MS = 8000;
6
+ /**
7
+ * cogent_rotate_mail_creds — self-service mailbox password rotation (Cogent Mail M2.4).
8
+ *
9
+ * Re-keys THIS agent's Team mailbox: the bridge asks the relay (authenticated by the per-cwd cloud
10
+ * session token) to rotate on the mail server; the relay derives orgScope + channel label from the
11
+ * session (never client input) so the box is targeted deterministically. On success the fresh
12
+ * password is returned ONCE and written to the per-cwd 0600 mail-credential store, so subsequent
13
+ * cogent_send_mail / cogent_fetch_mail keep working. Use it if a mailbox password may be compromised.
14
+ *
15
+ * Cloud + Team only: it needs cloud credentials (endpoint/session/token/peerId) and a CP-provisioned
16
+ * mailbox. A free/local session gets a clear "rotation isn't available for this channel" error.
17
+ */
18
+ export function registerRotateMailCredsTool(server) {
19
+ server.registerTool("cogent_rotate_mail_creds", {
20
+ title: "Rotate this agent's mailbox password",
21
+ description: "Rotate (re-key) this agent's Team mailbox password on the mail server and update the local " +
22
+ "credential store, so cogent_send_mail / cogent_fetch_mail keep working with the fresh secret. " +
23
+ "Use it if the mailbox password may be compromised. Team channels only.",
24
+ inputSchema: {},
25
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
26
+ }, async () => {
27
+ try {
28
+ const creds = await loadCredentials();
29
+ if (!creds || !creds.endpoint || !creds.sessionId || !creds.token) {
30
+ throw new BridgeError(BridgeErrorCode.INVALID_INPUT, "Not registered in cloud mode", "Rotation applies to a cloud Team channel — register the peer first");
31
+ }
32
+ if (!creds.peerId) {
33
+ throw new BridgeError(BridgeErrorCode.INVALID_INPUT, "Cannot identify this peer", "Re-register the peer so its peerId is stored, then rotate");
34
+ }
35
+ const url = `${creds.endpoint.replace(/\/+$/, "")}/api/sessions/${encodeURIComponent(creds.sessionId)}` +
36
+ `/peers/${encodeURIComponent(creds.peerId)}/mail/rotate`;
37
+ let res;
38
+ try {
39
+ res = await fetch(url, {
40
+ method: "POST",
41
+ headers: { "content-type": "application/json", authorization: `Bearer ${creds.token}` },
42
+ body: "{}",
43
+ signal: AbortSignal.timeout(ROTATE_TIMEOUT_MS),
44
+ });
45
+ }
46
+ catch {
47
+ throw new BridgeError(BridgeErrorCode.NETWORK_TIMEOUT, "Could not reach the relay to rotate the mailbox", "Check connectivity and try again");
48
+ }
49
+ if (!res.ok) {
50
+ // The relay maps a non-Team / no-rotator channel to a 400 with a clear message.
51
+ const detail = await res.text().catch(() => "");
52
+ throw new BridgeError(BridgeErrorCode.INVALID_INPUT, `Mailbox rotation was rejected (HTTP ${res.status})`, detail.slice(0, 200) || "Rotation applies to Team channels with a provisioned mailbox");
53
+ }
54
+ const data = (await res.json().catch(() => null));
55
+ if (!data || data.success !== true) {
56
+ throw new BridgeError(BridgeErrorCode.NETWORK_TIMEOUT, "Mailbox rotation failed", "The relay returned an unexpected response");
57
+ }
58
+ if (!data.rotated) {
59
+ // Clean "nothing to rotate" (no mailbox) — do NOT touch the local creds.
60
+ return successResult({ rotated: false, reason: data.reason ?? "no_mailbox" });
61
+ }
62
+ if (!data.address || !data.password) {
63
+ throw new BridgeError(BridgeErrorCode.NETWORK_TIMEOUT, "Rotation returned no new password", "Try again; the mailbox password was not updated locally");
64
+ }
65
+ // Persist the fresh secret, preserving the existing host/port config where present.
66
+ const existing = await loadMailCredentials();
67
+ await saveMailCredentials({
68
+ address: data.address,
69
+ password: data.password,
70
+ imapHost: existing?.imapHost ?? MAIL_DEFAULT_HOST,
71
+ imapPort: existing?.imapPort ?? 993,
72
+ smtpHost: existing?.smtpHost ?? MAIL_DEFAULT_HOST,
73
+ smtpPort: existing?.smtpPort ?? 465,
74
+ savedAt: new Date().toISOString(),
75
+ });
76
+ return successResult({ rotated: true, address: data.address });
77
+ }
78
+ catch (err) {
79
+ return errorResult(err);
80
+ }
81
+ });
82
+ }
83
+ //# sourceMappingURL=rotate-mail-creds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotate-mail-creds.js","sourceRoot":"","sources":["../../src/tools/rotate-mail-creds.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"send-mail.d.ts","sourceRoot":"","sources":["../../src/tools/send-mail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAuB,KAAK,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AACvG,OAAO,EAA0C,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGjG,yFAAyF;AACzF,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,UAAU,CAAC;CACjE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,GAAE,YAAiB,GAAG,IAAI,CA6CrF"}
1
+ {"version":3,"file":"send-mail.d.ts","sourceRoot":"","sources":["../../src/tools/send-mail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAuB,KAAK,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AACvG,OAAO,EAA0C,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAIjG,yFAAyF;AACzF,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,UAAU,CAAC;CACjE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,GAAE,YAAiB,GAAG,IAAI,CAsDrF"}
@@ -2,7 +2,8 @@ import { z } from "zod";
2
2
  import { BridgeError, BridgeErrorCode, successResult, errorResult } from "../errors.js";
3
3
  import { loadMailCredentials } from "../cloud/mail-credential-store.js";
4
4
  import { NodemailerMailSender, buildAndSendMail } from "../mail/mail-sender.js";
5
- import { assertValidEmail } from "../mail/validate.js";
5
+ import { assertValidEmail, assertAllowedMailDomain } from "../mail/validate.js";
6
+ import { isMailAuthError, mailAuthErrorHint } from "../mail/auth-error.js";
6
7
  /**
7
8
  * cogent_send_mail — send an email from this agent's mailbox (Cogent Mail M2.2). Reads the
8
9
  * agent's own creds from the local store, composes the message with optional attachments read
@@ -29,6 +30,7 @@ export function registerSendMailTool(server, deps = {}) {
29
30
  }, async ({ to, subject, body, attachments }) => {
30
31
  try {
31
32
  assertValidEmail(to, "to"); // fail fast at the tool boundary, before the SMTP sink
33
+ assertAllowedMailDomain(to, "to"); // F4: org-only mail — no sending to external domains
32
34
  const creds = await loadMailCredentials();
33
35
  if (!creds) {
34
36
  return errorResult(new BridgeError(BridgeErrorCode.INVALID_INPUT, "No mailbox is configured for this agent", "Run cogent_setup_mail with the address + password from the admin Mail panel first"));
@@ -42,6 +44,14 @@ export function registerSendMailTool(server, deps = {}) {
42
44
  return successResult({ ...result, attachmentCount: attachments?.length ?? 0 });
43
45
  }
44
46
  catch (err) {
47
+ // Cogent Mail F3: on an SMTP AUTH failure, do NOT clear the local creds — a temporary admin
48
+ // SUSPEND is wire-indistinguishable from a reap-delete, and wiping still-valid creds would
49
+ // permanently lock the agent out after the box is resumed. A genuine reap already clears creds
50
+ // via the deregister deprovision-header path; here we just surface an actionable hint.
51
+ if (isMailAuthError(err)) {
52
+ const detail = err instanceof Error ? err.message : String(err);
53
+ return errorResult(new BridgeError(BridgeErrorCode.INVALID_INPUT, `Mailbox login was refused: ${detail}`, mailAuthErrorHint()));
54
+ }
45
55
  return errorResult(err);
46
56
  }
47
57
  });
@@ -1 +1 @@
1
- {"version":3,"file":"send-mail.js","sourceRoot":"","sources":["../../src/tools/send-mail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAiC,MAAM,mCAAmC,CAAC;AACvG,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAmB,MAAM,wBAAwB,CAAC;AACjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAOvD;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,OAAqB,EAAE;IAC7E,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,KAA+B,EAAE,EAAE,CAAC,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;IAChH,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,yCAAyC;QAChD,WAAW,EACT,6FAA6F;YAC7F,mFAAmF;QACrF,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;YAC9F,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAClD,WAAW,EAAE,CAAC;iBACX,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,6EAA6E,CAAC;SAC3F;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;KACzG,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3C,IAAI,CAAC;YACH,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,uDAAuD;YACnF,MAAM,KAAK,GAAG,MAAM,mBAAmB,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,WAAW,CAChB,IAAI,WAAW,CACb,eAAe,CAAC,aAAa,EAC7B,yCAAyC,EACzC,mFAAmF,CACpF,CACF,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE;gBAC9D,EAAE,EAAE,CAAC,EAAE,CAAC;gBACR,OAAO;gBACP,IAAI,EAAE,IAAI;gBACV,eAAe,EAAE,WAAW;aAC7B,CAAC,CAAC;YACH,OAAO,aAAa,CAAC,EAAE,GAAG,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;QACjF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"send-mail.js","sourceRoot":"","sources":["../../src/tools/send-mail.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup-mail.d.ts","sourceRoot":"","sources":["../../src/tools/setup-mail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQpE;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqC7D"}
1
+ {"version":3,"file":"setup-mail.d.ts","sourceRoot":"","sources":["../../src/tools/setup-mail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQpE;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsC7D"}
@@ -1,7 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { successResult, errorResult } from "../errors.js";
3
3
  import { saveMailCredentials, MAIL_DEFAULT_HOST } from "../cloud/mail-credential-store.js";
4
- import { assertValidEmail } from "../mail/validate.js";
4
+ import { assertValidEmail, assertAllowedMailDomain } from "../mail/validate.js";
5
5
  const DEFAULT_MAIL_HOST = MAIL_DEFAULT_HOST;
6
6
  /**
7
7
  * cogent_setup_mail — store this agent's mailbox credentials locally (Cogent Mail M2).
@@ -28,6 +28,7 @@ export function registerSetupMailTool(server) {
28
28
  }, async ({ address, password, imapHost, imapPort, smtpHost, smtpPort }) => {
29
29
  try {
30
30
  assertValidEmail(address, "address"); // reject fat-finger creds before persisting
31
+ assertAllowedMailDomain(address, "address"); // F4: org-only — block BYO external mailboxes
31
32
  await saveMailCredentials({
32
33
  address,
33
34
  password,
@@ -1 +1 @@
1
- {"version":3,"file":"setup-mail.js","sourceRoot":"","sources":["../../src/tools/setup-mail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,gCAAgC;QACvC,WAAW,EACT,sFAAsF;YACtF,0FAA0F;YAC1F,wBAAwB;QAC1B,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;YACjG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wEAAwE,CAAC;YACvG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,iBAAiB,GAAG,CAAC;YACpF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YACpF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,iBAAiB,GAAG,CAAC;YACpF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;SAChG;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KACzG,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;QACtE,IAAI,CAAC;YACH,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,4CAA4C;YAClF,MAAM,mBAAmB,CAAC;gBACxB,OAAO;gBACP,QAAQ;gBACR,QAAQ,EAAE,QAAQ,IAAI,iBAAiB;gBACvC,QAAQ,EAAE,QAAQ,IAAI,GAAG;gBACzB,QAAQ,EAAE,QAAQ,IAAI,iBAAiB;gBACvC,QAAQ,EAAE,QAAQ,IAAI,GAAG;gBACzB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC,CAAC,CAAC;YACH,OAAO,aAAa,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"setup-mail.js","sourceRoot":"","sources":["../../src/tools/setup-mail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,gCAAgC;QACvC,WAAW,EACT,sFAAsF;YACtF,0FAA0F;YAC1F,wBAAwB;QAC1B,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;YACjG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wEAAwE,CAAC;YACvG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,iBAAiB,GAAG,CAAC;YACpF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YACpF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,iBAAiB,GAAG,CAAC;YACpF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;SAChG;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;KACzG,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;QACtE,IAAI,CAAC;YACH,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,4CAA4C;YAClF,uBAAuB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,8CAA8C;YAC3F,MAAM,mBAAmB,CAAC;gBACxB,OAAO;gBACP,QAAQ;gBACR,QAAQ,EAAE,QAAQ,IAAI,iBAAiB;gBACvC,QAAQ,EAAE,QAAQ,IAAI,GAAG;gBACzB,QAAQ,EAAE,QAAQ,IAAI,iBAAiB;gBACvC,QAAQ,EAAE,QAAQ,IAAI,GAAG;gBACzB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAClC,CAAC,CAAC;YACH,OAAO,aAAa,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
package/dist/types.d.ts CHANGED
@@ -92,6 +92,21 @@ export interface MessageRecord {
92
92
  * Absent on older records → treated as agent-origin (safe default).
93
93
  */
94
94
  originPlatform?: "cc" | "codex" | "slack" | "gchat" | "web";
95
+ /**
96
+ * Cogent Mail M2.5 — file REFERENCES carried alongside the message (the byte transport
97
+ * is email; this is the reference layer). Either a public `url` or a `mailMessageId` the
98
+ * recipient fetches with `cogent_fetch_mail`. Optional/additive → no-attachment messages
99
+ * are unchanged. Mirrors @essentialai/cogent `Attachment`.
100
+ */
101
+ attachments?: Attachment[];
102
+ }
103
+ /** Cogent Mail M2.5 attachment reference (mirrors @essentialai/cogent `Attachment`). */
104
+ export interface Attachment {
105
+ url?: string;
106
+ mailMessageId?: string;
107
+ name?: string;
108
+ mimeType?: string;
109
+ size?: number;
95
110
  }
96
111
  export interface SendMessageResult {
97
112
  success: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IAC5B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;CAC7D;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,cAAc,GAAG,eAAe,CAAC;IACnD,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;IAC5B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;IAC5D;;;;;OAKG;IACH,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED,wFAAwF;AACxF,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,cAAc,GAAG,eAAe,CAAC;IACnD,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B"}
@@ -48,7 +48,7 @@ Your peer identity: **peerId=\`${peerId}\`**, **label=\`${label}\`**
48
48
  ### On Session Start
49
49
  1. Find your Claude Code session ID:
50
50
  \`\`\`bash
51
- ls -t ~/.claude/projects/$(pwd | sed 's/[^a-zA-Z0-9-]/-/g')/*.jsonl 2>/dev/null | head -1 | xargs -I{} basename {} .jsonl
51
+ ls -t "\${CLAUDE_CONFIG_DIR:-$HOME/.claude}"/projects/$(pwd | sed 's/[^a-zA-Z0-9-]/-/g')/*.jsonl 2>/dev/null | head -1 | xargs -I{} basename {} .jsonl
52
52
  \`\`\`
53
53
  2. Register yourself on the bridge:
54
54
  - Use \`cogent_register_peer\` with peerId="${peerId}", label="${label}"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@essentialai/cogent-bridge",
3
- "version": "3.16.0",
3
+ "version": "3.18.0",
4
4
  "description": "MCP server for inter-Claude-Code session communication bridge",
5
5
  "type": "module",
6
6
  "workspaces": [
package/server.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "name": "io.github.eaisdevelopment/cogent",
4
4
  "title": "Cogent Bridge from Essential AI Solutions (essentialai.uk)",
5
5
  "description": "MCP bridge for inter-session communication between Claude Code instances",
6
- "version": "3.16.0",
6
+ "version": "3.18.0",
7
7
  "repository": {
8
8
  "url": "https://github.com/eaisdevelopment/cogent",
9
9
  "source": "github"
@@ -12,7 +12,7 @@
12
12
  {
13
13
  "registryType": "npm",
14
14
  "identifier": "@essentialai/cogent-bridge",
15
- "version": "3.16.0",
15
+ "version": "3.18.0",
16
16
  "runtimeHint": "npx",
17
17
  "transport": {
18
18
  "type": "stdio"