@rubytech/create-maxy-code 0.1.369 → 0.1.371
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/payload/platform/plugins/email/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/email/PLUGIN.md +4 -2
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-delete.test.js +1 -1
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-delete.test.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-status.test.js +36 -3
- package/payload/platform/plugins/email/mcp/dist/__tests__/email-status.test.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/__tests__/mailbox-resolve.test.d.ts +2 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/mailbox-resolve.test.d.ts.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/mailbox-resolve.test.js +101 -0
- package/payload/platform/plugins/email/mcp/dist/__tests__/mailbox-resolve.test.js.map +1 -0
- package/payload/platform/plugins/email/mcp/dist/index.js +29 -2
- package/payload/platform/plugins/email/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts +35 -12
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.js +90 -40
- package/payload/platform/plugins/email/mcp/dist/lib/credentials.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.d.ts +8 -8
- package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.js +0 -0
- package/payload/platform/plugins/email/mcp/dist/lib/ingest-batch.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/scripts/send-transactional.js +5 -2
- package/payload/platform/plugins/email/mcp/dist/scripts/send-transactional.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-delete.d.ts +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-delete.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-delete.js +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-delete.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.d.ts +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.js +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft-edit.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft-send.d.ts +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft-send.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft-send.js +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft-send.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft.d.ts +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft.js +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-draft.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-body.d.ts +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-body.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-body.js +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-fetch-body.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.d.ts +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.js +3 -3
- package/payload/platform/plugins/email/mcp/dist/tools/email-fetch.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.d.ts +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.js +14 -6
- package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.d.ts +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.js +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-otp-extract.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-read.d.ts +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-read.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-read.js +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-read.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-reply.d.ts +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-reply.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-reply.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-search.d.ts +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-search.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-search.js +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-search.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-send.d.ts +1 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-send.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-send.js +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-send.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js +3 -3
- package/payload/platform/plugins/email/mcp/dist/tools/email-setup.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts +7 -0
- package/payload/platform/plugins/email/mcp/dist/tools/email-status.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-status.js +38 -9
- package/payload/platform/plugins/email/mcp/dist/tools/email-status.js.map +1 -1
- package/payload/platform/plugins/email/references/email-reference.md +16 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.d.ts.map +1 -1
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js +2 -1
- package/payload/platform/plugins/workflows/mcp/dist/tools/workflow-create.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js +5 -1
- package/payload/platform/services/claude-session-manager/dist/jsonl-enumerator.js.map +1 -1
- package/payload/server/{chunk-CXEC5RWB.js → chunk-OBZE2KCK.js} +42 -0
- package/payload/server/maxy-edge.js +1 -1
- package/payload/server/public/assets/{AdminLoginScreens-B45MFjWG.js → AdminLoginScreens-zXJJq-wN.js} +1 -1
- package/payload/server/public/assets/AdminShell-BA24dbW1.js +1 -0
- package/payload/server/public/assets/{Checkbox-BPYEJJPq.js → Checkbox-BO0J7hn7.js} +1 -1
- package/payload/server/public/assets/{OperatorConversations-Civ7TETM.css → OperatorConversations-BA1bRX1_.css} +1 -1
- package/payload/server/public/assets/OperatorConversations-Cf-ejiJO.js +9 -0
- package/payload/server/public/assets/{admin-DcuJ3_xm.js → admin-B5blbG0q.js} +1 -1
- package/payload/server/public/assets/{browser-Be9LRtM2.js → browser-Cc38Ih6f.js} +1 -1
- package/payload/server/public/assets/calendar-ZY9A8F44.js +1 -0
- package/payload/server/public/assets/chat-zZuu4bcb.js +1 -0
- package/payload/server/public/assets/data-DuoDaO1z.js +1 -0
- package/payload/server/public/assets/{graph-XYK2qT5D.js → graph-CSOYoN0i.js} +3 -3
- package/payload/server/public/assets/{graph-labels-DNCXtQVn.js → graph-labels-DdiX7_Ot.js} +1 -1
- package/payload/server/public/assets/operator-Cvci_FDA.js +1 -0
- package/payload/server/public/assets/page-6HQSRX5P.js +32 -0
- package/payload/server/public/assets/{public-Bd_0QBGJ.js → public-DG-f7MFU.js} +1 -1
- package/payload/server/public/assets/{rotate-ccw-BxD1B_G-.js → rotate-ccw-Dahm1S_V.js} +1 -1
- package/payload/server/public/browser.html +4 -4
- package/payload/server/public/calendar.html +4 -4
- package/payload/server/public/chat.html +6 -6
- package/payload/server/public/data.html +4 -4
- package/payload/server/public/graph.html +7 -7
- package/payload/server/public/index.html +6 -6
- package/payload/server/public/operator.html +8 -8
- package/payload/server/public/public.html +6 -6
- package/payload/server/server.js +35 -1
- package/payload/server/public/assets/AdminShell-CyZPfbzd.js +0 -1
- package/payload/server/public/assets/OperatorConversations-D_o_59Oc.js +0 -9
- package/payload/server/public/assets/calendar-BeofvK7c.js +0 -1
- package/payload/server/public/assets/chat-BWNFeIjw.js +0 -1
- package/payload/server/public/assets/data-lTmU53k6.js +0 -1
- package/payload/server/public/assets/operator-B3hpbhNo.js +0 -1
- package/payload/server/public/assets/page-DFOoEKVK.js +0 -32
|
@@ -40,10 +40,30 @@ export declare function writePassword(email: string, password: string): void;
|
|
|
40
40
|
*/
|
|
41
41
|
export declare function removePassword(email: string): void;
|
|
42
42
|
/**
|
|
43
|
-
* Read
|
|
44
|
-
* Returns null if no
|
|
43
|
+
* Read one mailbox's EmailAccount config from the graph, keyed by
|
|
44
|
+
* (accountId, email). Returns null if no node exists for that exact mailbox.
|
|
45
45
|
*/
|
|
46
|
-
export declare function readConfig(accountId: string): Promise<EmailConfig | null>;
|
|
46
|
+
export declare function readConfig(accountId: string, email: string): Promise<EmailConfig | null>;
|
|
47
|
+
/**
|
|
48
|
+
* List every mailbox configured under one account, ordered by email for a
|
|
49
|
+
* stable surface. The active-config layer is multi-mailbox: each mailbox is its
|
|
50
|
+
* own :EmailAccount node keyed by (accountId, email).
|
|
51
|
+
*/
|
|
52
|
+
export declare function listConfigs(accountId: string): Promise<EmailConfig[]>;
|
|
53
|
+
/**
|
|
54
|
+
* Resolve which configured mailbox a call targets.
|
|
55
|
+
* Resolution order:
|
|
56
|
+
* - explicit `mailbox` → that mailbox, or a typed refusal naming the stored
|
|
57
|
+
* identities when it matches none;
|
|
58
|
+
* - no `mailbox` + exactly one configured → that one (single-mailbox back-compat);
|
|
59
|
+
* - no `mailbox` + two or more configured → a typed ambiguity refusal naming
|
|
60
|
+
* every stored identity so the agent can pick without guessing an address.
|
|
61
|
+
*/
|
|
62
|
+
export declare function resolveConfig(accountId: string, mailbox?: string): Promise<{
|
|
63
|
+
config: EmailConfig;
|
|
64
|
+
} | {
|
|
65
|
+
error: string;
|
|
66
|
+
}>;
|
|
47
67
|
/**
|
|
48
68
|
* Write or update the EmailAccount config in the graph.
|
|
49
69
|
* Uses MERGE to be idempotent — calling setup again overwrites the config.
|
|
@@ -64,44 +84,47 @@ export declare function writeConfig(accountId: string, config: EmailConfig): Pro
|
|
|
64
84
|
* re-creates it via MERGE. Email content nodes are protected separately by
|
|
65
85
|
* the `contact-erase` cascade, which this function does not touch.
|
|
66
86
|
*/
|
|
67
|
-
export declare function removeConfig(accountId: string): Promise<void>;
|
|
87
|
+
export declare function removeConfig(accountId: string, email: string): Promise<void>;
|
|
68
88
|
/**
|
|
69
89
|
* Stamp the EmailAccount node with the time of a verified IMAP connection.
|
|
70
90
|
* Called from every successful IMAP probe (email-setup, email-status) so a
|
|
71
91
|
* mailbox that has authenticated at least once is distinguishable from one that
|
|
72
92
|
* never has. No-op when no EmailAccount node exists for the account.
|
|
73
93
|
*/
|
|
74
|
-
export declare function recordSuccessfulConnect(accountId: string): Promise<void>;
|
|
94
|
+
export declare function recordSuccessfulConnect(accountId: string, email: string): Promise<void>;
|
|
75
95
|
/**
|
|
76
96
|
* Read the last verified-IMAP-connection timestamp for an account.
|
|
77
97
|
* Returns null when the account has no EmailAccount node, or one that has never
|
|
78
98
|
* recorded a successful connect (the never-connected state).
|
|
79
99
|
*/
|
|
80
|
-
export declare function readLastSuccessfulConnect(accountId: string): Promise<string | null>;
|
|
100
|
+
export declare function readLastSuccessfulConnect(accountId: string, email: string): Promise<string | null>;
|
|
81
101
|
/**
|
|
82
102
|
* Read poll state from the EmailAccount node.
|
|
83
103
|
* Returns defaults if properties are not yet set (first run).
|
|
84
104
|
*/
|
|
85
|
-
export declare function readPollState(accountId: string): Promise<PollState | null>;
|
|
105
|
+
export declare function readPollState(accountId: string, email: string): Promise<PollState | null>;
|
|
86
106
|
/**
|
|
87
107
|
* Update poll tracking state after a successful fetch cycle.
|
|
88
108
|
*/
|
|
89
|
-
export declare function updatePollState(accountId: string, lastFetchedUid: number, uidValidity: number): Promise<void>;
|
|
109
|
+
export declare function updatePollState(accountId: string, email: string, lastFetchedUid: number, uidValidity: number): Promise<void>;
|
|
90
110
|
/**
|
|
91
111
|
* Set the agentSlug and poll config on an EmailAccount.
|
|
92
112
|
* Called during email-setup to bind an agent to an email address.
|
|
93
113
|
*/
|
|
94
|
-
export declare function writeBindingConfig(accountId: string, agentSlug: string, pollIntervalMinutes: number): Promise<void>;
|
|
114
|
+
export declare function writeBindingConfig(accountId: string, email: string, agentSlug: string, pollIntervalMinutes: number): Promise<void>;
|
|
95
115
|
/**
|
|
96
116
|
* Check if an email address is already bound to a different agent.
|
|
97
117
|
* Returns the conflicting agentSlug if claimed, or null if available.
|
|
98
118
|
*/
|
|
99
119
|
export declare function checkAddressBinding(agentAddress: string, currentSlug: string): Promise<string | null>;
|
|
100
120
|
/**
|
|
101
|
-
* Load full credentials (config + password).
|
|
102
|
-
*
|
|
121
|
+
* Load full credentials (config + password) for one mailbox.
|
|
122
|
+
* `mailbox` selects which configured mailbox to act on; omit it to resolve the
|
|
123
|
+
* single configured mailbox (back-compat). Returns a typed error — naming the
|
|
124
|
+
* stored mailbox identities — on a not-configured, ambiguous, or unmatched
|
|
125
|
+
* selector, or on a missing/empty password.
|
|
103
126
|
*/
|
|
104
|
-
export declare function loadCredentials(accountId: string): Promise<{
|
|
127
|
+
export declare function loadCredentials(accountId: string, mailbox?: string): Promise<{
|
|
105
128
|
credentials: FullCredentials;
|
|
106
129
|
} | {
|
|
107
130
|
error: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/lib/credentials.ts"],"names":[],"mappings":"AAeA,mFAAmF;AACnF,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAwBD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,KAAK,GAAG,UAAU,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,KAAK,GAAG,UAAU,CAAC;CAClC;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAwClD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAInE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAMlD;
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/lib/credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -96,32 +96,79 @@ export function removePassword(email) {
|
|
|
96
96
|
writeStore(store);
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
|
+
/** Map a stored :EmailAccount node's properties to an EmailConfig. */
|
|
100
|
+
function nodeToConfig(props) {
|
|
101
|
+
return {
|
|
102
|
+
email: props.email,
|
|
103
|
+
agentAddress: props.agentAddress ?? props.email,
|
|
104
|
+
imapHost: props.imapHost,
|
|
105
|
+
imapPort: neo4j.integer.toNumber(props.imapPort),
|
|
106
|
+
imapSecurity: props.imapSecurity,
|
|
107
|
+
smtpHost: props.smtpHost,
|
|
108
|
+
smtpPort: neo4j.integer.toNumber(props.smtpPort),
|
|
109
|
+
smtpSecurity: props.smtpSecurity,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
99
112
|
/**
|
|
100
|
-
* Read
|
|
101
|
-
* Returns null if no
|
|
113
|
+
* Read one mailbox's EmailAccount config from the graph, keyed by
|
|
114
|
+
* (accountId, email). Returns null if no node exists for that exact mailbox.
|
|
102
115
|
*/
|
|
103
|
-
export async function readConfig(accountId) {
|
|
116
|
+
export async function readConfig(accountId, email) {
|
|
104
117
|
const session = getSession();
|
|
105
118
|
try {
|
|
106
|
-
const result = await session.run(`MATCH (e:EmailAccount {accountId: $accountId}) RETURN e LIMIT 1`, { accountId });
|
|
119
|
+
const result = await session.run(`MATCH (e:EmailAccount {accountId: $accountId, email: $email}) RETURN e LIMIT 1`, { accountId, email });
|
|
107
120
|
if (result.records.length === 0)
|
|
108
121
|
return null;
|
|
109
|
-
|
|
110
|
-
return {
|
|
111
|
-
email: props.email,
|
|
112
|
-
agentAddress: props.agentAddress ?? props.email,
|
|
113
|
-
imapHost: props.imapHost,
|
|
114
|
-
imapPort: neo4j.integer.toNumber(props.imapPort),
|
|
115
|
-
imapSecurity: props.imapSecurity,
|
|
116
|
-
smtpHost: props.smtpHost,
|
|
117
|
-
smtpPort: neo4j.integer.toNumber(props.smtpPort),
|
|
118
|
-
smtpSecurity: props.smtpSecurity,
|
|
119
|
-
};
|
|
122
|
+
return nodeToConfig(result.records[0].get("e").properties);
|
|
120
123
|
}
|
|
121
124
|
finally {
|
|
122
125
|
await session.close();
|
|
123
126
|
}
|
|
124
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* List every mailbox configured under one account, ordered by email for a
|
|
130
|
+
* stable surface. The active-config layer is multi-mailbox: each mailbox is its
|
|
131
|
+
* own :EmailAccount node keyed by (accountId, email).
|
|
132
|
+
*/
|
|
133
|
+
export async function listConfigs(accountId) {
|
|
134
|
+
const session = getSession();
|
|
135
|
+
try {
|
|
136
|
+
const result = await session.run(`MATCH (e:EmailAccount {accountId: $accountId}) RETURN e ORDER BY e.email`, { accountId });
|
|
137
|
+
return result.records.map((r) => nodeToConfig(r.get("e").properties));
|
|
138
|
+
}
|
|
139
|
+
finally {
|
|
140
|
+
await session.close();
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Resolve which configured mailbox a call targets.
|
|
145
|
+
* Resolution order:
|
|
146
|
+
* - explicit `mailbox` → that mailbox, or a typed refusal naming the stored
|
|
147
|
+
* identities when it matches none;
|
|
148
|
+
* - no `mailbox` + exactly one configured → that one (single-mailbox back-compat);
|
|
149
|
+
* - no `mailbox` + two or more configured → a typed ambiguity refusal naming
|
|
150
|
+
* every stored identity so the agent can pick without guessing an address.
|
|
151
|
+
*/
|
|
152
|
+
export async function resolveConfig(accountId, mailbox) {
|
|
153
|
+
const configs = await listConfigs(accountId);
|
|
154
|
+
if (configs.length === 0) {
|
|
155
|
+
return { error: "Email not configured. Run email-setup to set up a mailbox." };
|
|
156
|
+
}
|
|
157
|
+
const ids = configs.map((c) => c.email).join(", ");
|
|
158
|
+
if (mailbox) {
|
|
159
|
+
const hit = configs.find((c) => c.email === mailbox);
|
|
160
|
+
if (hit)
|
|
161
|
+
return { config: hit };
|
|
162
|
+
return {
|
|
163
|
+
error: `No mailbox ${mailbox} is configured. Stored mailbox identities: [${ids}]. Run email-setup for ${mailbox}.`,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
if (configs.length === 1)
|
|
167
|
+
return { config: configs[0] };
|
|
168
|
+
return {
|
|
169
|
+
error: `Multiple mailboxes are configured. Stored mailbox identities: [${ids}]. Pass mailbox to choose one.`,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
125
172
|
/**
|
|
126
173
|
* Write or update the EmailAccount config in the graph.
|
|
127
174
|
* Uses MERGE to be idempotent — calling setup again overwrites the config.
|
|
@@ -132,12 +179,10 @@ export async function readConfig(accountId) {
|
|
|
132
179
|
* in queries (dedup is handled separately by the messageId pre-check).
|
|
133
180
|
*/
|
|
134
181
|
export async function writeConfig(accountId, config) {
|
|
135
|
-
const oldConfig = await readConfig(accountId);
|
|
136
182
|
const session = getSession();
|
|
137
183
|
try {
|
|
138
|
-
await session.run(`MERGE (e:EmailAccount {accountId: $accountId})
|
|
139
|
-
SET e.
|
|
140
|
-
e.agentAddress = $agentAddress,
|
|
184
|
+
await session.run(`MERGE (e:EmailAccount {accountId: $accountId, email: $email})
|
|
185
|
+
SET e.agentAddress = $agentAddress,
|
|
141
186
|
e.imapHost = $imapHost,
|
|
142
187
|
e.imapPort = $imapPort,
|
|
143
188
|
e.imapSecurity = $imapSecurity,
|
|
@@ -181,10 +226,10 @@ export async function writeConfig(accountId, config) {
|
|
|
181
226
|
* re-creates it via MERGE. Email content nodes are protected separately by
|
|
182
227
|
* the `contact-erase` cascade, which this function does not touch.
|
|
183
228
|
*/
|
|
184
|
-
export async function removeConfig(accountId) {
|
|
229
|
+
export async function removeConfig(accountId, email) {
|
|
185
230
|
const session = getSession();
|
|
186
231
|
try {
|
|
187
|
-
await session.run(`MATCH (e:EmailAccount {accountId: $accountId}) DETACH DELETE e`, { accountId });
|
|
232
|
+
await session.run(`MATCH (e:EmailAccount {accountId: $accountId, email: $email}) DETACH DELETE e`, { accountId, email });
|
|
188
233
|
}
|
|
189
234
|
finally {
|
|
190
235
|
await session.close();
|
|
@@ -196,11 +241,11 @@ export async function removeConfig(accountId) {
|
|
|
196
241
|
* mailbox that has authenticated at least once is distinguishable from one that
|
|
197
242
|
* never has. No-op when no EmailAccount node exists for the account.
|
|
198
243
|
*/
|
|
199
|
-
export async function recordSuccessfulConnect(accountId) {
|
|
244
|
+
export async function recordSuccessfulConnect(accountId, email) {
|
|
200
245
|
const session = getSession();
|
|
201
246
|
try {
|
|
202
|
-
await session.run(`MATCH (e:EmailAccount {accountId: $accountId})
|
|
203
|
-
SET e.lastSuccessfulConnect = $now`, { accountId, now: new Date().toISOString() });
|
|
247
|
+
await session.run(`MATCH (e:EmailAccount {accountId: $accountId, email: $email})
|
|
248
|
+
SET e.lastSuccessfulConnect = $now`, { accountId, email, now: new Date().toISOString() });
|
|
204
249
|
}
|
|
205
250
|
finally {
|
|
206
251
|
await session.close();
|
|
@@ -211,11 +256,11 @@ export async function recordSuccessfulConnect(accountId) {
|
|
|
211
256
|
* Returns null when the account has no EmailAccount node, or one that has never
|
|
212
257
|
* recorded a successful connect (the never-connected state).
|
|
213
258
|
*/
|
|
214
|
-
export async function readLastSuccessfulConnect(accountId) {
|
|
259
|
+
export async function readLastSuccessfulConnect(accountId, email) {
|
|
215
260
|
const session = getSession();
|
|
216
261
|
try {
|
|
217
|
-
const result = await session.run(`MATCH (e:EmailAccount {accountId: $accountId})
|
|
218
|
-
RETURN e.lastSuccessfulConnect AS ts LIMIT 1`, { accountId });
|
|
262
|
+
const result = await session.run(`MATCH (e:EmailAccount {accountId: $accountId, email: $email})
|
|
263
|
+
RETURN e.lastSuccessfulConnect AS ts LIMIT 1`, { accountId, email });
|
|
219
264
|
if (result.records.length === 0)
|
|
220
265
|
return null;
|
|
221
266
|
const ts = result.records[0].get("ts");
|
|
@@ -229,10 +274,10 @@ export async function readLastSuccessfulConnect(accountId) {
|
|
|
229
274
|
* Read poll state from the EmailAccount node.
|
|
230
275
|
* Returns defaults if properties are not yet set (first run).
|
|
231
276
|
*/
|
|
232
|
-
export async function readPollState(accountId) {
|
|
277
|
+
export async function readPollState(accountId, email) {
|
|
233
278
|
const session = getSession();
|
|
234
279
|
try {
|
|
235
|
-
const result = await session.run(`MATCH (e:EmailAccount {accountId: $accountId}) RETURN e LIMIT 1`, { accountId });
|
|
280
|
+
const result = await session.run(`MATCH (e:EmailAccount {accountId: $accountId, email: $email}) RETURN e LIMIT 1`, { accountId, email });
|
|
236
281
|
if (result.records.length === 0)
|
|
237
282
|
return null;
|
|
238
283
|
const props = result.records[0].get("e").properties;
|
|
@@ -257,14 +302,15 @@ export async function readPollState(accountId) {
|
|
|
257
302
|
/**
|
|
258
303
|
* Update poll tracking state after a successful fetch cycle.
|
|
259
304
|
*/
|
|
260
|
-
export async function updatePollState(accountId, lastFetchedUid, uidValidity) {
|
|
305
|
+
export async function updatePollState(accountId, email, lastFetchedUid, uidValidity) {
|
|
261
306
|
const session = getSession();
|
|
262
307
|
try {
|
|
263
|
-
await session.run(`MATCH (e:EmailAccount {accountId: $accountId})
|
|
308
|
+
await session.run(`MATCH (e:EmailAccount {accountId: $accountId, email: $email})
|
|
264
309
|
SET e.lastFetchedUid = $lastFetchedUid,
|
|
265
310
|
e.lastPollAt = $lastPollAt,
|
|
266
311
|
e.uidValidity = $uidValidity`, {
|
|
267
312
|
accountId,
|
|
313
|
+
email,
|
|
268
314
|
lastFetchedUid: neo4j.int(lastFetchedUid),
|
|
269
315
|
lastPollAt: new Date().toISOString(),
|
|
270
316
|
uidValidity: neo4j.int(uidValidity),
|
|
@@ -278,13 +324,14 @@ export async function updatePollState(accountId, lastFetchedUid, uidValidity) {
|
|
|
278
324
|
* Set the agentSlug and poll config on an EmailAccount.
|
|
279
325
|
* Called during email-setup to bind an agent to an email address.
|
|
280
326
|
*/
|
|
281
|
-
export async function writeBindingConfig(accountId, agentSlug, pollIntervalMinutes) {
|
|
327
|
+
export async function writeBindingConfig(accountId, email, agentSlug, pollIntervalMinutes) {
|
|
282
328
|
const session = getSession();
|
|
283
329
|
try {
|
|
284
|
-
await session.run(`MATCH (e:EmailAccount {accountId: $accountId})
|
|
330
|
+
await session.run(`MATCH (e:EmailAccount {accountId: $accountId, email: $email})
|
|
285
331
|
SET e.agentSlug = $agentSlug,
|
|
286
332
|
e.pollIntervalMinutes = $pollIntervalMinutes`, {
|
|
287
333
|
accountId,
|
|
334
|
+
email,
|
|
288
335
|
agentSlug,
|
|
289
336
|
pollIntervalMinutes: neo4j.int(pollIntervalMinutes),
|
|
290
337
|
});
|
|
@@ -314,14 +361,17 @@ export async function checkAddressBinding(agentAddress, currentSlug) {
|
|
|
314
361
|
}
|
|
315
362
|
}
|
|
316
363
|
/**
|
|
317
|
-
* Load full credentials (config + password).
|
|
318
|
-
*
|
|
364
|
+
* Load full credentials (config + password) for one mailbox.
|
|
365
|
+
* `mailbox` selects which configured mailbox to act on; omit it to resolve the
|
|
366
|
+
* single configured mailbox (back-compat). Returns a typed error — naming the
|
|
367
|
+
* stored mailbox identities — on a not-configured, ambiguous, or unmatched
|
|
368
|
+
* selector, or on a missing/empty password.
|
|
319
369
|
*/
|
|
320
|
-
export async function loadCredentials(accountId) {
|
|
321
|
-
const
|
|
322
|
-
if (
|
|
323
|
-
return
|
|
324
|
-
}
|
|
370
|
+
export async function loadCredentials(accountId, mailbox) {
|
|
371
|
+
const resolved = await resolveConfig(accountId, mailbox);
|
|
372
|
+
if ("error" in resolved)
|
|
373
|
+
return resolved;
|
|
374
|
+
const { config } = resolved;
|
|
325
375
|
try {
|
|
326
376
|
const password = readPassword(config.email);
|
|
327
377
|
return { credentials: { config, password } };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/lib/credentials.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/lib/credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
* email-fetch pulls new IMAP messages and stashes them here. email-ingest
|
|
5
5
|
* reads the stash, writes only the operator-approved subset, and clears it.
|
|
6
6
|
*
|
|
7
|
-
* State is per-MCP-server-process, keyed by accountId
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* runs "check my emails" again,
|
|
11
|
-
* cadence.
|
|
7
|
+
* State is per-MCP-server-process, keyed by (accountId, mailbox email) so two
|
|
8
|
+
* mailboxes' pending batches never collide. The server runs for the lifetime of
|
|
9
|
+
* a session, so the two tools share state across turns within one conversation.
|
|
10
|
+
* Restart drops the batch — the operator just runs "check my emails" again,
|
|
11
|
+
* which is the intended human-in-the-loop cadence.
|
|
12
12
|
*/
|
|
13
13
|
import type { FetchedEmail } from "./imap.js";
|
|
14
14
|
export interface PendingBatch {
|
|
@@ -25,7 +25,7 @@ export interface PendingBatch {
|
|
|
25
25
|
recipientAddress: string;
|
|
26
26
|
messages: FetchedEmail[];
|
|
27
27
|
}
|
|
28
|
-
export declare function putBatch(accountId: string, batch: PendingBatch): void;
|
|
29
|
-
export declare function takeBatch(accountId: string): PendingBatch | null;
|
|
30
|
-
export declare function peekBatch(accountId: string): PendingBatch | null;
|
|
28
|
+
export declare function putBatch(accountId: string, email: string, batch: PendingBatch): void;
|
|
29
|
+
export declare function takeBatch(accountId: string, email: string): PendingBatch | null;
|
|
30
|
+
export declare function peekBatch(accountId: string, email: string): PendingBatch | null;
|
|
31
31
|
//# sourceMappingURL=ingest-batch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest-batch.d.ts","sourceRoot":"","sources":["../../src/lib/ingest-batch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;
|
|
1
|
+
{"version":3,"file":"ingest-batch.d.ts","sourceRoot":"","sources":["../../src/lib/ingest-batch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,YAAY,EAAE,CAAC;CAC1B;AASD,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAEpF;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAM/E;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAE/E"}
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest-batch.js","sourceRoot":"","sources":["../../src/lib/ingest-batch.ts"],"names":[],"mappings":"AA6BA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;AAEhD,MAAM,UAAU,QAAQ,CAAC,SAAiB,EAAE,KAAmB;
|
|
1
|
+
{"version":3,"file":"ingest-batch.js","sourceRoot":"","sources":["../../src/lib/ingest-batch.ts"],"names":[],"mappings":"AA6BA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;AAEhD,yCAAyC;AACzC,SAAS,QAAQ,CAAC,SAAiB,EAAE,KAAa;IAChD,OAAO,GAAG,SAAS,IAAI,KAAK,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,SAAiB,EAAE,KAAa,EAAE,KAAmB;IAC5E,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,SAAiB,EAAE,KAAa;IACxD,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACvC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,SAAiB,EAAE,KAAa;IACxD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC;AACzD,CAAC"}
|
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
* Transactional email send — one-shot script invoked by the UI server
|
|
3
3
|
* for system emails (magic-link delivery, etc.).
|
|
4
4
|
*
|
|
5
|
-
* Stdin JSON payload: { accountId, to, subject, body, html? }
|
|
5
|
+
* Stdin JSON payload: { accountId, to, subject, body, html?, mailbox? }
|
|
6
|
+
* `mailbox` names which configured mailbox to send from; omit it when the
|
|
7
|
+
* account has a single mailbox (back-compat). With two or more configured and
|
|
8
|
+
* no mailbox, loadCredentials refuses, naming the stored identities.
|
|
6
9
|
* Stdout on success: `ok messageId=<id>`
|
|
7
10
|
* Stderr on failure: error message
|
|
8
11
|
* Exit code: 0 on success, 1 on any failure.
|
|
@@ -35,7 +38,7 @@ async function main() {
|
|
|
35
38
|
throw new Error(`missing required field: ${field}`);
|
|
36
39
|
}
|
|
37
40
|
}
|
|
38
|
-
const result = await loadCredentials(payload.accountId);
|
|
41
|
+
const result = await loadCredentials(payload.accountId, payload.mailbox);
|
|
39
42
|
if ("error" in result)
|
|
40
43
|
throw new Error(result.error);
|
|
41
44
|
const { config, password } = result.credentials;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-transactional.js","sourceRoot":"","sources":["../../src/scripts/send-transactional.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"send-transactional.js","sourceRoot":"","sources":["../../src/scripts/send-transactional.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAY3C,SAAS,SAAS;IAChB,wEAAwE;IACxE,iDAAiD;IACjD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;IAC3C,KAAK,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAU,EAAE,CAAC;QACpE,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,IAAI,OAAO,IAAI,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IAEhD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE;QACtD,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,SAAS,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-delete.d.ts","sourceRoot":"","sources":["../../src/tools/email-delete.ts"],"names":[],"mappings":"AAGA,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC3B;AAOD;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,EAAE,EAAE,OAAO,EACX,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAKR;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBvE"}
|
|
1
|
+
{"version":3,"file":"email-delete.d.ts","sourceRoot":"","sources":["../../src/tools/email-delete.ts"],"names":[],"mappings":"AAGA,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC3B;AAOD;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,EAAE,EAAE,OAAO,EACX,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAKR;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBvE"}
|
|
@@ -23,7 +23,7 @@ export function deleteLine(email, folder, requested, moved, trash, ok, reason) {
|
|
|
23
23
|
* folder yields the typed error and moves nothing.
|
|
24
24
|
*/
|
|
25
25
|
export async function emailDelete(params) {
|
|
26
|
-
const result = await loadCredentials(params.accountId);
|
|
26
|
+
const result = await loadCredentials(params.accountId, params.mailbox);
|
|
27
27
|
if ("error" in result)
|
|
28
28
|
throw new Error(result.error);
|
|
29
29
|
const { config, password } = result.credentials;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-delete.js","sourceRoot":"","sources":["../../src/tools/email-delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"email-delete.js","sourceRoot":"","sources":["../../src/tools/email-delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAS7C,qDAAqD;AACrD,SAAS,cAAc,CAAC,GAAY;IAClC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAK,GAAyB,CAAC,IAAI,KAAK,iBAAiB,CAAC;AAC1G,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,KAAa,EACb,MAAc,EACd,SAAiB,EACjB,KAAa,EACb,KAAoB,EACpB,EAAW,EACX,MAAe;IAEf,IAAI,EAAE,EAAE,CAAC;QACP,OAAO,2BAA2B,KAAK,WAAW,MAAM,cAAc,SAAS,UAAU,KAAK,UAAU,KAAK,UAAU,CAAC;IAC1H,CAAC;IACD,OAAO,2BAA2B,KAAK,WAAW,MAAM,oBAAoB,MAAM,IAAI,SAAS,EAAE,CAAC;AACpG,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAoB;IACpD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACvE,IAAI,OAAO,IAAI,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IAEhD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC;IACxC,gFAAgF;IAChF,8EAA8E;IAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QACrC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrE,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7F,OAAO,SAAS,KAAK,OAAO,SAAS,kBAAkB,KAAK,GAAG,CAAC;IAClE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,GAAG,IAAI,CAAC,CAAC;QAChH,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-draft-edit.d.ts","sourceRoot":"","sources":["../../src/tools/email-draft-edit.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG1E,UAAU,UAAW,SAAQ,kBAAkB;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAkCxE"}
|
|
1
|
+
{"version":3,"file":"email-draft-edit.d.ts","sourceRoot":"","sources":["../../src/tools/email-draft-edit.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG1E,UAAU,UAAW,SAAQ,kBAAkB;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAkCxE"}
|
|
@@ -4,7 +4,7 @@ import { replaceDraft } from "../lib/imap.js";
|
|
|
4
4
|
import { composeDraft } from "../lib/compose.js";
|
|
5
5
|
import { formatAttachNote } from "../lib/attachment-resolve.js";
|
|
6
6
|
export async function emailDraftEdit(params) {
|
|
7
|
-
const result = await loadCredentials(params.accountId);
|
|
7
|
+
const result = await loadCredentials(params.accountId, params.mailbox);
|
|
8
8
|
if ("error" in result)
|
|
9
9
|
throw new Error(result.error);
|
|
10
10
|
const { config, password } = result.credentials;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-draft-edit.js","sourceRoot":"","sources":["../../src/tools/email-draft-edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAA2B,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"email-draft-edit.js","sourceRoot":"","sources":["../../src/tools/email-draft-edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAA2B,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAgBhE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAkB;IACrD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACvE,IAAI,OAAO,IAAI,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAErD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IAEhD,8EAA8E;IAC9E,4EAA4E;IAC5E,iCAAiC;IACjC,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,MAAM,YAAY,CAC/E,MAAM,EACN,QAAQ,EACR,MAAM,CAAC,SAAS,EAChB,MAAM,CACP,CAAC;IAEF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,YAAY,CACtE,MAAM,EACN,QAAQ,EACR,MAAM,CAAC,SAAS,EAChB,GAAG,EACH,MAAM,CAAC,cAAc,IAAI,IAAI,CAC9B,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC,CAAC,gCAAgC,CAAC;IAC1F,uEAAuE;IACvE,8DAA8D;IAC9D,MAAM,WAAW,GAAG,OAAO;QACzB,CAAC,CAAC,uDAAuD;QACzD,CAAC,CAAC,QAAQ;YACR,CAAC,CAAC,gBAAgB,MAAM,EAAE;YAC1B,CAAC,CAAC,iCAAiC,MAAM,yBAAyB,CAAC;IACvE,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,uBAAuB,gBAAgB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,OAAO,oBAAoB,MAAM,KAAK,WAAW,KAAK,OAAO,eAAe,cAAc,SAAS,MAAM,CAAC,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,WAAW,CAAC,GAAG,UAAU,6DAA6D,CAAC;AACjQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-draft-send.d.ts","sourceRoot":"","sources":["../../src/tools/email-draft-send.ts"],"names":[],"mappings":"AAIA,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAqD7E"}
|
|
1
|
+
{"version":3,"file":"email-draft-send.d.ts","sourceRoot":"","sources":["../../src/tools/email-draft-send.ts"],"names":[],"mappings":"AAIA,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAqD7E"}
|
|
@@ -2,7 +2,7 @@ import { loadCredentials } from "../lib/credentials.js";
|
|
|
2
2
|
import { sendRaw } from "../lib/smtp.js";
|
|
3
3
|
import { fetchDraftSource, deleteDraft } from "../lib/imap.js";
|
|
4
4
|
export async function emailDraftSend(params) {
|
|
5
|
-
const result = await loadCredentials(params.accountId);
|
|
5
|
+
const result = await loadCredentials(params.accountId, params.mailbox);
|
|
6
6
|
if ("error" in result)
|
|
7
7
|
throw new Error(result.error);
|
|
8
8
|
const { config, password } = result.credentials;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-draft-send.js","sourceRoot":"","sources":["../../src/tools/email-draft-send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"email-draft-send.js","sourceRoot":"","sources":["../../src/tools/email-draft-send.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-draft.d.ts","sourceRoot":"","sources":["../../src/tools/email-draft.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG1E,UAAU,WAAY,SAAQ,kBAAkB;IAC9C,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"email-draft.d.ts","sourceRoot":"","sources":["../../src/tools/email-draft.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG1E,UAAU,WAAY,SAAQ,kBAAkB;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBrE"}
|
|
@@ -4,7 +4,7 @@ import { appendDraft } from "../lib/imap.js";
|
|
|
4
4
|
import { composeDraft } from "../lib/compose.js";
|
|
5
5
|
import { formatAttachNote } from "../lib/attachment-resolve.js";
|
|
6
6
|
export async function emailDraft(params) {
|
|
7
|
-
const result = await loadCredentials(params.accountId);
|
|
7
|
+
const result = await loadCredentials(params.accountId, params.mailbox);
|
|
8
8
|
if ("error" in result)
|
|
9
9
|
throw new Error(result.error);
|
|
10
10
|
const { config, password } = result.credentials;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-draft.js","sourceRoot":"","sources":["../../src/tools/email-draft.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAA2B,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"email-draft.js","sourceRoot":"","sources":["../../src/tools/email-draft.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAA2B,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAOhE,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAmB;IAClD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACvE,IAAI,OAAO,IAAI,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAErD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IAEhD,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,GAAG,MAAM,YAAY,CAC/E,MAAM,EACN,QAAQ,EACR,MAAM,CAAC,SAAS,EAChB,MAAM,CACP,CAAC;IAEF,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,4BAA4B,CAAC;IAC5E,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,uBAAuB,gBAAgB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,uEAAuE;IACvE,4DAA4D;IAC5D,OAAO,wBAAwB,MAAM,QAAQ,MAAM,CAAC,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,WAAW,CAAC,GAAG,UAAU,gBAAgB,OAAO,eAAe,cAAc,yDAAyD,CAAC;AAC3P,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-fetch-body.d.ts","sourceRoot":"","sources":["../../src/tools/email-fetch-body.ts"],"names":[],"mappings":"AAGA,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB7E"}
|
|
1
|
+
{"version":3,"file":"email-fetch-body.d.ts","sourceRoot":"","sources":["../../src/tools/email-fetch-body.ts"],"names":[],"mappings":"AAGA,UAAU,eAAe;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB7E"}
|