@essentialai/cogent-bridge 3.14.0 → 3.15.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 (50) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/cloud/mail-credential-store.d.ts +46 -0
  3. package/dist/cloud/mail-credential-store.d.ts.map +1 -0
  4. package/dist/cloud/mail-credential-store.js +80 -0
  5. package/dist/cloud/mail-credential-store.js.map +1 -0
  6. package/dist/config.d.ts +6 -6
  7. package/dist/index.js +6 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/mail/mail-fetcher.d.ts +112 -0
  10. package/dist/mail/mail-fetcher.d.ts.map +1 -0
  11. package/dist/mail/mail-fetcher.js +186 -0
  12. package/dist/mail/mail-fetcher.js.map +1 -0
  13. package/dist/mail/mail-sender.d.ts +64 -0
  14. package/dist/mail/mail-sender.d.ts.map +1 -0
  15. package/dist/mail/mail-sender.js +68 -0
  16. package/dist/mail/mail-sender.js.map +1 -0
  17. package/dist/mail/validate.d.ts +4 -0
  18. package/dist/mail/validate.d.ts.map +1 -0
  19. package/dist/mail/validate.js +16 -0
  20. package/dist/mail/validate.js.map +1 -0
  21. package/dist/tools/fetch-mail.d.ts +16 -0
  22. package/dist/tools/fetch-mail.d.ts.map +1 -0
  23. package/dist/tools/fetch-mail.js +55 -0
  24. package/dist/tools/fetch-mail.js.map +1 -0
  25. package/dist/tools/register-peer.d.ts.map +1 -1
  26. package/dist/tools/register-peer.js +13 -0
  27. package/dist/tools/register-peer.js.map +1 -1
  28. package/dist/tools/send-mail.d.ts +16 -0
  29. package/dist/tools/send-mail.d.ts.map +1 -0
  30. package/dist/tools/send-mail.js +49 -0
  31. package/dist/tools/send-mail.js.map +1 -0
  32. package/dist/tools/setup-mail.d.ts +10 -0
  33. package/dist/tools/setup-mail.d.ts.map +1 -0
  34. package/dist/tools/setup-mail.js +47 -0
  35. package/dist/tools/setup-mail.js.map +1 -0
  36. package/dist/types.d.ts +11 -0
  37. package/dist/types.d.ts.map +1 -1
  38. package/dist/wizard/index.d.ts.map +1 -1
  39. package/dist/wizard/index.js +6 -0
  40. package/dist/wizard/index.js.map +1 -1
  41. package/dist/wizard/scaffold-real.d.ts +3 -0
  42. package/dist/wizard/scaffold-real.d.ts.map +1 -1
  43. package/dist/wizard/scaffold-real.js +6 -5
  44. package/dist/wizard/scaffold-real.js.map +1 -1
  45. package/dist/wizard/templates.d.ts +4 -2
  46. package/dist/wizard/templates.d.ts.map +1 -1
  47. package/dist/wizard/templates.js +21 -10
  48. package/dist/wizard/templates.js.map +1 -1
  49. package/package.json +3 -1
  50. package/server.json +2 -2
@@ -0,0 +1,68 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ /** In-memory sender: records what was sent. The test double the tool/service drives. */
4
+ export class InMemoryMailSender {
5
+ sent = [];
6
+ async send(mail) {
7
+ this.sent.push(mail);
8
+ return { messageId: `inmem-${this.sent.length}` };
9
+ }
10
+ }
11
+ /**
12
+ * Real SMTP sender. nodemailer is imported LAZILY (dynamic import) so it never loads on
13
+ * the bridge's cold-start path — only when the agent actually sends mail. `transportFactory`
14
+ * is an injection seam for tests (default builds a real nodemailer SMTP transport from the creds).
15
+ */
16
+ export class NodemailerMailSender {
17
+ creds;
18
+ transportFactory;
19
+ constructor(creds, transportFactory) {
20
+ this.creds = creds;
21
+ this.transportFactory = transportFactory;
22
+ }
23
+ async send(mail) {
24
+ const transport = this.transportFactory ? await this.transportFactory() : await this.defaultTransport();
25
+ const info = await transport.sendMail({
26
+ from: mail.from,
27
+ to: mail.to,
28
+ subject: mail.subject,
29
+ text: mail.text,
30
+ attachments: mail.attachments.map((a) => ({ filename: a.filename, content: a.content })),
31
+ });
32
+ return { messageId: info.messageId ?? "" };
33
+ }
34
+ async defaultTransport() {
35
+ // Variable specifier so tsc/esbuild don't statically resolve+bundle nodemailer — it loads
36
+ // lazily from node_modules only when an agent actually sends mail (off the cold-start path).
37
+ const specifier = "nodemailer";
38
+ const nodemailer = (await import(specifier));
39
+ return nodemailer.createTransport({
40
+ host: this.creds.smtpHost,
41
+ port: this.creds.smtpPort,
42
+ secure: this.creds.smtpPort === 465, // implicit TLS on 465, STARTTLS on 587
43
+ auth: { user: this.creds.address, pass: this.creds.password },
44
+ });
45
+ }
46
+ }
47
+ /**
48
+ * Compose and send a mail from the agent's mailbox: reads each attachment from its local path
49
+ * (streaming the bytes into a Buffer), builds the {@link OutgoingMail}, and sends via the port.
50
+ * A missing/unreadable attachment path fails loud (the caller surfaces it as errorResult) rather
51
+ * than silently dropping the file. Returns the message id + the sending address.
52
+ */
53
+ export async function buildAndSendMail(sender, creds, params) {
54
+ const attachments = [];
55
+ for (const p of params.attachmentPaths ?? []) {
56
+ const content = await fs.readFile(p); // throws (ENOENT/EACCES) → fail loud, not a silent drop
57
+ attachments.push({ filename: path.basename(p), content });
58
+ }
59
+ const { messageId } = await sender.send({
60
+ from: creds.address,
61
+ to: params.to,
62
+ subject: params.subject,
63
+ text: params.text,
64
+ attachments,
65
+ });
66
+ return { messageId, from: creds.address, to: params.to };
67
+ }
68
+ //# sourceMappingURL=mail-sender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-sender.js","sourceRoot":"","sources":["../../src/mail/mail-sender.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function isValidEmail(value: string): boolean;
2
+ /** Throw a BridgeError(INVALID_INPUT) unless `value` is a plausibly-valid email address. */
3
+ export declare function assertValidEmail(value: string, field: string): void;
4
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/mail/validate.ts"],"names":[],"mappings":"AAQA,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAQnE"}
@@ -0,0 +1,16 @@
1
+ import { BridgeError, BridgeErrorCode } from "../errors.js";
2
+ // Deliberately conservative: one @, non-empty local + domain, a dot in the domain, no
3
+ // whitespace. Not RFC-5322-exhaustive — enough to reject fat-finger input and give a clear
4
+ // error at the tool boundary before it reaches the SMTP recipient / credential file, rather
5
+ // than surfacing a cryptic SMTP/IMAP failure later.
6
+ const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
7
+ export function isValidEmail(value) {
8
+ return value.length <= 254 && EMAIL_RE.test(value);
9
+ }
10
+ /** Throw a BridgeError(INVALID_INPUT) unless `value` is a plausibly-valid email address. */
11
+ export function assertValidEmail(value, field) {
12
+ if (!isValidEmail(value)) {
13
+ throw new BridgeError(BridgeErrorCode.INVALID_INPUT, `${field} is not a valid email address: ${JSON.stringify(value)}`, `Provide a full address like agent-channel@mail.cogent.tools`);
14
+ }
15
+ }
16
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/mail/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE5D,sFAAsF;AACtF,2FAA2F;AAC3F,4FAA4F;AAC5F,oDAAoD;AACpD,MAAM,QAAQ,GAAG,4BAA4B,CAAC;AAE9C,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrD,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,KAAa;IAC3D,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,WAAW,CACnB,eAAe,CAAC,aAAa,EAC7B,GAAG,KAAK,kCAAkC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EACjE,6DAA6D,CAC9D,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { type PersistedMailCredentials } from "../cloud/mail-credential-store.js";
3
+ import { type MailFetcher } from "../mail/mail-fetcher.js";
4
+ /** Injection seam for tests: how a {@link MailFetcher} is built from the loaded creds. */
5
+ export interface FetchMailDeps {
6
+ fetcherFactory?: (creds: PersistedMailCredentials) => MailFetcher;
7
+ }
8
+ /**
9
+ * cogent_fetch_mail — read this agent's own mailbox (Cogent Mail M2.3). Two actions:
10
+ * - "list" (default): lightweight envelope summaries (uid/from/subject/date/unread), no bodies.
11
+ * - "fetch": download one message by uid — text body + attachments saved to a local dir.
12
+ * On-demand only (no background polling — Hybrid C). imapflow loads lazily off the cold path.
13
+ * `deps.fetcherFactory` lets tests drive a fake IMAP inbox instead of a real server.
14
+ */
15
+ export declare function registerFetchMailTool(server: McpServer, deps?: FetchMailDeps): void;
16
+ //# sourceMappingURL=fetch-mail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-mail.d.ts","sourceRoot":"","sources":["../../src/tools/fetch-mail.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAuB,KAAK,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AACvG,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAKhF,0FAA0F;AAC1F,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,WAAW,CAAC;CACnE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,GAAE,aAAkB,GAAG,IAAI,CAqDvF"}
@@ -0,0 +1,55 @@
1
+ import os from "node:os";
2
+ import path from "node:path";
3
+ import { z } from "zod";
4
+ import { BridgeError, BridgeErrorCode, successResult, errorResult } from "../errors.js";
5
+ import { loadMailCredentials } from "../cloud/mail-credential-store.js";
6
+ import { ImapflowMailFetcher } from "../mail/mail-fetcher.js";
7
+ /** Where fetched attachments land by default (per-agent download dir). */
8
+ const DEFAULT_DOWNLOAD_DIR = path.join(os.homedir(), ".cogent", "mail-downloads");
9
+ /**
10
+ * cogent_fetch_mail — read this agent's own mailbox (Cogent Mail M2.3). Two actions:
11
+ * - "list" (default): lightweight envelope summaries (uid/from/subject/date/unread), no bodies.
12
+ * - "fetch": download one message by uid — text body + attachments saved to a local dir.
13
+ * On-demand only (no background polling — Hybrid C). imapflow loads lazily off the cold path.
14
+ * `deps.fetcherFactory` lets tests drive a fake IMAP inbox instead of a real server.
15
+ */
16
+ export function registerFetchMailTool(server, deps = {}) {
17
+ const makeFetcher = deps.fetcherFactory ?? ((creds) => new ImapflowMailFetcher(creds));
18
+ server.registerTool("cogent_fetch_mail", {
19
+ title: "Read this agent's mailbox",
20
+ description: "List messages in this agent's Cogent mailbox, or fetch one message (text + attachments " +
21
+ "saved locally) by uid. Requires cogent_setup_mail to have stored the mailbox credentials.",
22
+ inputSchema: {
23
+ action: z.enum(["list", "fetch"]).optional().describe("'list' (default) or 'fetch' one message"),
24
+ uid: z.number().int().positive().optional().describe("Message uid to fetch (required when action='fetch')"),
25
+ unreadOnly: z.boolean().optional().describe("List only unread messages (default false)"),
26
+ limit: z.number().int().positive().optional().describe("Max messages to list (default 25)"),
27
+ downloadDir: z
28
+ .string()
29
+ .optional()
30
+ .describe(`Directory to save fetched attachments (default ${DEFAULT_DOWNLOAD_DIR})`),
31
+ },
32
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
33
+ }, async ({ action, uid, unreadOnly, limit, downloadDir }) => {
34
+ try {
35
+ const creds = await loadMailCredentials();
36
+ if (!creds) {
37
+ 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"));
38
+ }
39
+ const fetcher = makeFetcher(creds);
40
+ if (action === "fetch") {
41
+ if (uid === undefined) {
42
+ return errorResult(new BridgeError(BridgeErrorCode.INVALID_INPUT, "uid is required when action='fetch'", "Pass the uid from a cogent_fetch_mail list"));
43
+ }
44
+ const message = await fetcher.fetchOne(uid, downloadDir ?? DEFAULT_DOWNLOAD_DIR);
45
+ return successResult({ mailbox: creds.address, message });
46
+ }
47
+ const messages = await fetcher.list({ unreadOnly, limit: limit ?? 25 });
48
+ return successResult({ mailbox: creds.address, count: messages.length, messages });
49
+ }
50
+ catch (err) {
51
+ return errorResult(err);
52
+ }
53
+ });
54
+ }
55
+ //# sourceMappingURL=fetch-mail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-mail.js","sourceRoot":"","sources":["../../src/tools/fetch-mail.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"register-peer.d.ts","sourceRoot":"","sources":["../../src/tools/register-peer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmBpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwWhE"}
1
+ {"version":3,"file":"register-peer.d.ts","sourceRoot":"","sources":["../../src/tools/register-peer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoBpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsXhE"}
@@ -4,6 +4,7 @@ import { getConfig } from "../config.js";
4
4
  import { getBackend, isCloudEndpoint, isCloudMode } from "../backend/index.js";
5
5
  import { successResult, errorResult, BridgeError, BridgeErrorCode } from "../errors.js";
6
6
  import { saveCredentials, loadCredentials, hasJoinedInProcess, hasCloudAttemptInProcess, } from "../cloud/credential-store.js";
7
+ import { persistProvisionedMailbox } from "../cloud/mail-credential-store.js";
7
8
  import { logger } from "../logger.js";
8
9
  import { heartbeat } from "../services/heartbeat.js";
9
10
  import { autoRelay } from "../services/auto-relay.js";
@@ -195,6 +196,18 @@ export function registerRegisterPeerTool(server) {
195
196
  logger.debug(`check-on-stop: could not stamp peerId into credentials: ${err.message}`);
196
197
  }
197
198
  }
199
+ // Cogent Mail M2.7: if the relay auto-provisioned a mailbox for this peer (Team channel),
200
+ // persist the one-time credentials to the local 0600 mail store so cogent_send_mail /
201
+ // cogent_fetch_mail can use them without a manual cogent_setup_mail. Best-effort — a failure
202
+ // must never break registration — and the password value is never logged.
203
+ try {
204
+ if (await persistProvisionedMailbox(peer?.mailbox)) {
205
+ logger.info(`Cogent Mail: saved auto-provisioned mailbox ${peer.mailbox?.address}`);
206
+ }
207
+ }
208
+ catch (err) {
209
+ logger.warn(`Cogent Mail: could not save auto-provisioned mailbox creds: ${err.message}`);
210
+ }
198
211
  // Set local peer info for auto-relay (cloud mode: incoming messages trigger local execClaude).
199
212
  // Auto-detect the real local CC session ID from the filesystem — the user/agent may
200
213
  // pass the cloud session ID by mistake, which won't work with `claude --resume`.
@@ -1 +1 @@
1
- {"version":3,"file":"register-peer.js","sourceRoot":"","sources":["../../src/tools/register-peer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register-peer.js","sourceRoot":"","sources":["../../src/tools/register-peer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { type PersistedMailCredentials } from "../cloud/mail-credential-store.js";
3
+ import { type MailSender } from "../mail/mail-sender.js";
4
+ /** Injection seam for tests: how a {@link MailSender} is built from the loaded creds. */
5
+ export interface SendMailDeps {
6
+ senderFactory?: (creds: PersistedMailCredentials) => MailSender;
7
+ }
8
+ /**
9
+ * cogent_send_mail — send an email from this agent's mailbox (Cogent Mail M2.2). Reads the
10
+ * agent's own creds from the local store, composes the message with optional attachments read
11
+ * from local file paths, and submits over SMTP (as the agent — no admin). The heavy SMTP lib
12
+ * loads lazily only when this runs. Thin glue over buildAndSendMail (unit-tested in mail-sender.test).
13
+ * `deps.senderFactory` lets tests drive an in-memory sender instead of real SMTP.
14
+ */
15
+ export declare function registerSendMailTool(server: McpServer, deps?: SendMailDeps): void;
16
+ //# sourceMappingURL=send-mail.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,49 @@
1
+ import { z } from "zod";
2
+ import { BridgeError, BridgeErrorCode, successResult, errorResult } from "../errors.js";
3
+ import { loadMailCredentials } from "../cloud/mail-credential-store.js";
4
+ import { NodemailerMailSender, buildAndSendMail } from "../mail/mail-sender.js";
5
+ import { assertValidEmail } from "../mail/validate.js";
6
+ /**
7
+ * cogent_send_mail — send an email from this agent's mailbox (Cogent Mail M2.2). Reads the
8
+ * agent's own creds from the local store, composes the message with optional attachments read
9
+ * from local file paths, and submits over SMTP (as the agent — no admin). The heavy SMTP lib
10
+ * loads lazily only when this runs. Thin glue over buildAndSendMail (unit-tested in mail-sender.test).
11
+ * `deps.senderFactory` lets tests drive an in-memory sender instead of real SMTP.
12
+ */
13
+ export function registerSendMailTool(server, deps = {}) {
14
+ const makeSender = deps.senderFactory ?? ((creds) => new NodemailerMailSender(creds));
15
+ server.registerTool("cogent_send_mail", {
16
+ title: "Send an email from this agent's mailbox",
17
+ description: "Send an email (with optional file attachments) from this agent's Cogent mailbox to another " +
18
+ "address. Requires cogent_setup_mail to have stored the mailbox credentials first.",
19
+ inputSchema: {
20
+ to: z.string().describe("Recipient email address, e.g. other-agent-backend@mail.cogent.tools"),
21
+ subject: z.string().describe("Email subject"),
22
+ body: z.string().describe("Plain-text email body"),
23
+ attachments: z
24
+ .array(z.string())
25
+ .optional()
26
+ .describe("Optional local file paths to attach (each is read and attached by basename)"),
27
+ },
28
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
29
+ }, async ({ to, subject, body, attachments }) => {
30
+ try {
31
+ assertValidEmail(to, "to"); // fail fast at the tool boundary, before the SMTP sink
32
+ const creds = await loadMailCredentials();
33
+ if (!creds) {
34
+ 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"));
35
+ }
36
+ const result = await buildAndSendMail(makeSender(creds), creds, {
37
+ to: [to],
38
+ subject,
39
+ text: body,
40
+ attachmentPaths: attachments,
41
+ });
42
+ return successResult({ ...result, attachmentCount: attachments?.length ?? 0 });
43
+ }
44
+ catch (err) {
45
+ return errorResult(err);
46
+ }
47
+ });
48
+ }
49
+ //# sourceMappingURL=send-mail.js.map
@@ -0,0 +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"}
@@ -0,0 +1,10 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /**
3
+ * cogent_setup_mail — store this agent's mailbox credentials locally (Cogent Mail M2).
4
+ * The operator provisions the mailbox in the admin Mail panel (M1), which shows the
5
+ * address + password ONCE; the agent runs this tool to save them to its per-cwd 0600
6
+ * store so cogent_send_mail / cogent_fetch_mail can use them. (Auto-provision on register
7
+ * is a deferred follow-up — see the M2.7 design note.)
8
+ */
9
+ export declare function registerSetupMailTool(server: McpServer): void;
10
+ //# sourceMappingURL=setup-mail.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,47 @@
1
+ import { z } from "zod";
2
+ import { successResult, errorResult } from "../errors.js";
3
+ import { saveMailCredentials, MAIL_DEFAULT_HOST } from "../cloud/mail-credential-store.js";
4
+ import { assertValidEmail } from "../mail/validate.js";
5
+ const DEFAULT_MAIL_HOST = MAIL_DEFAULT_HOST;
6
+ /**
7
+ * cogent_setup_mail — store this agent's mailbox credentials locally (Cogent Mail M2).
8
+ * The operator provisions the mailbox in the admin Mail panel (M1), which shows the
9
+ * address + password ONCE; the agent runs this tool to save them to its per-cwd 0600
10
+ * store so cogent_send_mail / cogent_fetch_mail can use them. (Auto-provision on register
11
+ * is a deferred follow-up — see the M2.7 design note.)
12
+ */
13
+ export function registerSetupMailTool(server) {
14
+ server.registerTool("cogent_setup_mail", {
15
+ title: "Configure this agent's mailbox",
16
+ description: "Store the agent's mailbox address + password (from the admin Mail panel) locally so " +
17
+ "cogent_send_mail and cogent_fetch_mail can use them. Hosts default to mail.cogent.tools " +
18
+ "(IMAP 993 / SMTP 465).",
19
+ inputSchema: {
20
+ address: z.string().describe("Full mailbox address, e.g. claude-agent-backend@mail.cogent.tools"),
21
+ password: z.string().describe("Mailbox password (shown once in the admin Mail panel on create/rotate)"),
22
+ imapHost: z.string().optional().describe(`IMAP host (default ${DEFAULT_MAIL_HOST})`),
23
+ imapPort: z.number().int().positive().optional().describe("IMAP port (default 993)"),
24
+ smtpHost: z.string().optional().describe(`SMTP host (default ${DEFAULT_MAIL_HOST})`),
25
+ smtpPort: z.number().int().positive().optional().describe("SMTP submission port (default 465)"),
26
+ },
27
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
28
+ }, async ({ address, password, imapHost, imapPort, smtpHost, smtpPort }) => {
29
+ try {
30
+ assertValidEmail(address, "address"); // reject fat-finger creds before persisting
31
+ await saveMailCredentials({
32
+ address,
33
+ password,
34
+ imapHost: imapHost ?? DEFAULT_MAIL_HOST,
35
+ imapPort: imapPort ?? 993,
36
+ smtpHost: smtpHost ?? DEFAULT_MAIL_HOST,
37
+ smtpPort: smtpPort ?? 465,
38
+ savedAt: new Date().toISOString(),
39
+ });
40
+ return successResult({ configured: true, address });
41
+ }
42
+ catch (err) {
43
+ return errorResult(err);
44
+ }
45
+ });
46
+ }
47
+ //# sourceMappingURL=setup-mail.js.map
@@ -0,0 +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"}
package/dist/types.d.ts CHANGED
@@ -39,6 +39,17 @@ export interface PeerInfo {
39
39
  workspaceId?: string;
40
40
  /** Durable thread/conversation identifier (Slice 5 / Story 8.6). On the wire; optional. */
41
41
  threadId?: string;
42
+ /**
43
+ * Cogent Mail auto-provisioned mailbox (M2.7). Present ONLY on a cloud register RESPONSE
44
+ * for a Team channel where the relay minted (or resolved) this peer's mailbox via the
45
+ * control-plane provisioner. `password` is returned ONCE (on first create / explicit rotate)
46
+ * and is never persisted server-side — the bridge saves it to its local 0600 store and drops
47
+ * it. Absent on free channels and on re-registers that don't re-issue a password.
48
+ */
49
+ mailbox?: {
50
+ address: string;
51
+ password?: string;
52
+ };
42
53
  }
43
54
  export interface MessageRecord {
44
55
  id: string;
@@ -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;CACnB;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;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 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE3E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAwBxD;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,kBAAkB,GACzB,IAAI,CAuBN;AAYD,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAuF/C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE3E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAwBxD;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,kBAAkB,GACzB,IAAI,CAuBN;AAYD,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CA8F/C"}
@@ -120,6 +120,11 @@ export async function runWizard() {
120
120
  const idB = await ask(rl, "Peer ID for Project B:", defaultIdB);
121
121
  const defaultLabelB = "CC_" + path.basename(pathB).replace(/[^a-zA-Z0-9]/g, "_");
122
122
  const labelB = await ask(rl, "Label for Project B:", defaultLabelB);
123
+ const modeIdx = await choose(rl, "How should these agents connect?", [
124
+ "Cloud — collaborate with remote agents over cogent.tools (recommended)",
125
+ "Local — offline, this machine only (self-hosted / local-LLM / air-gapped)",
126
+ ]);
127
+ const mode = modeIdx === 1 ? "local" : "cloud";
123
128
  heading("Configuring projects");
124
129
  const result = scaffoldReal({
125
130
  projectAPath: path.resolve(pathA),
@@ -129,6 +134,7 @@ export async function runWizard() {
129
134
  projectBId: idB,
130
135
  projectBLabel: labelB,
131
136
  npxPath,
137
+ mode,
132
138
  });
133
139
  printRealNextSteps(path.resolve(pathA), idA, labelA, path.resolve(pathB), idB, labelB, result);
134
140
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wizard/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type SetupMode } from "./templates.js";
1
2
  export interface RealConfig {
2
3
  projectAPath: string;
3
4
  projectAId: string;
@@ -6,6 +7,8 @@ export interface RealConfig {
6
7
  projectBId: string;
7
8
  projectBLabel: string;
8
9
  npxPath: string;
10
+ /** Cloud (default) or local (offline) mode — written into each .mcp.json. */
11
+ mode?: SetupMode;
9
12
  }
10
13
  export interface RealScaffoldResult {
11
14
  created: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold-real.d.ts","sourceRoot":"","sources":["../../src/wizard/scaffold-real.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAkCD,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,kBAAkB,CAwCnE"}
1
+ {"version":3,"file":"scaffold-real.d.ts","sourceRoot":"","sources":["../../src/wizard/scaffold-real.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuD,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAErG,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAsCD,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,kBAAkB,CA0CnE"}
@@ -1,14 +1,14 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import { mcpJsonContent, mcpJsonMerge, claudeMdBridgeSection } from "./templates.js";
4
- function writeMcpJson(projectPath, npxPath) {
4
+ function writeMcpJson(projectPath, npxPath, mode) {
5
5
  const filePath = path.join(projectPath, ".mcp.json");
6
6
  if (fs.existsSync(filePath)) {
7
7
  const existing = fs.readFileSync(filePath, "utf-8");
8
- fs.writeFileSync(filePath, mcpJsonMerge(existing, npxPath), "utf-8");
8
+ fs.writeFileSync(filePath, mcpJsonMerge(existing, npxPath, mode), "utf-8");
9
9
  return "modified";
10
10
  }
11
- fs.writeFileSync(filePath, mcpJsonContent(npxPath), "utf-8");
11
+ fs.writeFileSync(filePath, mcpJsonContent(npxPath, mode), "utf-8");
12
12
  return "created";
13
13
  }
14
14
  function writeClaudeMd(projectPath, peerId, label, otherPeerId) {
@@ -29,8 +29,9 @@ export function scaffoldReal(config) {
29
29
  const created = [];
30
30
  const modified = [];
31
31
  const skipped = [];
32
+ const mode = config.mode ?? "cloud";
32
33
  // Project A
33
- const mcpA = writeMcpJson(config.projectAPath, config.npxPath);
34
+ const mcpA = writeMcpJson(config.projectAPath, config.npxPath, mode);
34
35
  const mcpAPath = path.join(config.projectAPath, ".mcp.json");
35
36
  if (mcpA === "created")
36
37
  created.push(mcpAPath);
@@ -45,7 +46,7 @@ export function scaffoldReal(config) {
45
46
  else
46
47
  skipped.push(claudeAPath);
47
48
  // Project B
48
- const mcpB = writeMcpJson(config.projectBPath, config.npxPath);
49
+ const mcpB = writeMcpJson(config.projectBPath, config.npxPath, mode);
49
50
  const mcpBPath = path.join(config.projectBPath, ".mcp.json");
50
51
  if (mcpB === "created")
51
52
  created.push(mcpBPath);
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold-real.js","sourceRoot":"","sources":["../../src/wizard/scaffold-real.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaffold-real.js","sourceRoot":"","sources":["../../src/wizard/scaffold-real.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
- export declare function mcpJsonContent(npxPath: string): string;
2
- export declare function mcpJsonMerge(existing: string, npxPath: string): string;
1
+ /** Cogent operating mode chosen in the init wizard. */
2
+ export type SetupMode = "cloud" | "local";
3
+ export declare function mcpJsonContent(npxPath: string, mode?: SetupMode): string;
4
+ export declare function mcpJsonMerge(existing: string, npxPath: string, mode?: SetupMode): string;
3
5
  export declare function claudeMdBridgeSection(peerId: string, label: string, otherPeerId: string): string;
4
6
  export declare function demoServerJs(): string;
5
7
  export declare function demoAppJs(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/wizard/templates.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CActD;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,MAAM,CAYR;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,MAAM,CA4BR;AAED,wBAAgB,YAAY,IAAI,MAAM,CAuCrC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAwClC;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,MAAM,CAQR;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAgB5C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAe7C"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/wizard/templates.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAmB1C,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,SAAmB,GAAG,MAAM,CAWjF;AAED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,GAAE,SAAmB,GACxB,MAAM,CASR;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,MAAM,CA4BR;AAED,wBAAgB,YAAY,IAAI,MAAM,CAuCrC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAwClC;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,MAAM,CAQR;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAgB5C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAe7C"}