@kamilio/wire 0.1.12 → 0.1.14
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/README.md +13 -0
- package/dist/adapters/root.d.ts +2 -2
- package/dist/adapters/root.d.ts.map +1 -1
- package/dist/adapters/root.js +25 -6
- package/dist/adapters/root.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +9 -5
- package/dist/cli.js.map +1 -1
- package/dist/executable.d.ts.map +1 -1
- package/dist/executable.js +3 -2
- package/dist/executable.js.map +1 -1
- package/node_modules/provider-notion/dist/index.d.ts +1 -0
- package/node_modules/provider-notion/dist/index.d.ts.map +1 -1
- package/node_modules/provider-notion/dist/index.js +1 -0
- package/node_modules/provider-notion/dist/index.js.map +1 -1
- package/node_modules/provider-notion/dist/notion-sync.d.ts +3 -1
- package/node_modules/provider-notion/dist/notion-sync.d.ts.map +1 -1
- package/node_modules/provider-notion/dist/notion-sync.js +99 -26
- package/node_modules/provider-notion/dist/notion-sync.js.map +1 -1
- package/node_modules/provider-notion/src/index.ts +2 -0
- package/node_modules/provider-notion/src/notion-sync.ts +86 -25
- package/node_modules/provider-slack/dist/index.d.ts +1 -1
- package/node_modules/provider-slack/dist/index.d.ts.map +1 -1
- package/node_modules/provider-slack/dist/index.js +1 -1
- package/node_modules/provider-slack/dist/index.js.map +1 -1
- package/node_modules/provider-slack/dist/slack.d.ts +3 -0
- package/node_modules/provider-slack/dist/slack.d.ts.map +1 -1
- package/node_modules/provider-slack/dist/slack.js +111 -20
- package/node_modules/provider-slack/dist/slack.js.map +1 -1
- package/node_modules/provider-slack/src/index.ts +1 -1
- package/node_modules/provider-slack/src/slack.ts +101 -19
- package/package.json +1 -1
- package/src/adapters/root.ts +26 -7
- package/src/cli.ts +5 -3
- package/src/executable.ts +4 -2
|
@@ -11,6 +11,7 @@ export type NotionOperation = Readonly<{ pointer: JsonObject; path: readonly Jso
|
|
|
11
11
|
export type NotionSidecarBlock = Readonly<{ id: string; path: readonly number[]; type: string; hash: string; snapshot: JsonObject }>;
|
|
12
12
|
export type NotionDiffSummary = Readonly<{ inserted: number; updated: number; deleted: number; moved: number }>;
|
|
13
13
|
type UserMentions = Readonly<Record<string, string>>;
|
|
14
|
+
type EmailMentions = Record<string, string>;
|
|
14
15
|
|
|
15
16
|
function object(value: JsonValue): JsonObject { return value as JsonObject; }
|
|
16
17
|
function array(value: JsonValue): JsonValue[] { return value as JsonValue[]; }
|
|
@@ -250,8 +251,8 @@ function baseUserMentions(base: JsonObject): UserMentions | undefined {
|
|
|
250
251
|
return base["user_mentions"] as UserMentions | undefined;
|
|
251
252
|
}
|
|
252
253
|
|
|
253
|
-
function notionData(pageId: string, markdown: string, tree: NotionTree, mentions: UserMentions | undefined): JsonObject {
|
|
254
|
-
return
|
|
254
|
+
function notionData(pageId: string, markdown: string, tree: NotionTree, mentions: UserMentions | undefined, emailMentions: EmailMentions = {}): JsonObject {
|
|
255
|
+
return { page_id: pageId, markdown, blocks: sidecarBlocksFromNotionTree(tree), ...(mentions === undefined ? {} : { user_mentions: mentions }), ...(Object.keys(emailMentions).length === 0 ? {} : { email_mentions: emailMentions }) };
|
|
255
256
|
}
|
|
256
257
|
|
|
257
258
|
function lineIndent(line: string): number { return Math.floor(line.match(/^ */)![0].length / 2); }
|
|
@@ -830,14 +831,15 @@ function renderNode(tree: NotionTree, indent: number, parentType = ""): string[]
|
|
|
830
831
|
return title.split("\n").map((line) => `${prefix}${escapeBlockMarkdownLine(line)}`);
|
|
831
832
|
}
|
|
832
833
|
|
|
833
|
-
export function renderNotionTreeToMarkdown(tree: NotionTree, mentions?: UserMentions): string {
|
|
834
|
+
export function renderNotionTreeToMarkdown(tree: NotionTree, mentions?: UserMentions, emailMentions: EmailMentions = {}): string {
|
|
834
835
|
const title = renderRichText(object(tree.block["properties"]!)["title"]!);
|
|
835
836
|
const compactTypes = new Set(["bulleted_list", "numbered_list", "to_do"]);
|
|
836
837
|
const body = tree.children.flatMap((child, index) => [
|
|
837
838
|
...(index === 0 || (tree.children[index - 1]!.block["type"] === child.block["type"] && compactTypes.has(child.block["type"] as string)) ? [] : [""]),
|
|
838
839
|
...renderNode(child, 0),
|
|
839
840
|
]);
|
|
840
|
-
|
|
841
|
+
let markdown = [`# ${title}`, ...body.length === 0 ? [] : ["", ...body]].join("\n").trim();
|
|
842
|
+
for (const [id, link] of Object.entries(emailMentions)) markdown = markdown.replace(new RegExp(`<span data-notion-mention="u" data-notion-id="${escapeRegExp(escapeHtml(id))}">.*?</span>`, "g"), () => link);
|
|
841
843
|
return mentions === undefined ? markdown : renderUserMentions(markdown, mentions);
|
|
842
844
|
}
|
|
843
845
|
|
|
@@ -847,6 +849,67 @@ async function notionPost(runtime: RuntimeCapabilities, path: string, cookie: st
|
|
|
847
849
|
return await response.json() as JsonObject;
|
|
848
850
|
}
|
|
849
851
|
|
|
852
|
+
async function findNotionUsers(runtime: RuntimeCapabilities, query: string, cookie: string, spaceId: string, headers: HeadersInit): Promise<readonly JsonObject[]> {
|
|
853
|
+
query = query.trim();
|
|
854
|
+
if (query === "") throw new Error("Notion user lookup requires an email or name");
|
|
855
|
+
const response = await notionPost(runtime, "getVisibleUsers", cookie, { spaceId }, headers);
|
|
856
|
+
const users = response["users"] as readonly JsonObject[];
|
|
857
|
+
if (/^[^@\s]+@[^@\s]+$/.test(query)) return users.filter((user) => (user["aliases"] as readonly string[] | undefined)?.some((email) => email.toLowerCase() === query.toLowerCase()));
|
|
858
|
+
if (users.length === 0) return [];
|
|
859
|
+
const records = await notionPost(runtime, "getRecordValues", cookie, { requests: users.map((user) => ({ table: "notion_user", id: user["userId"]! })) }, headers);
|
|
860
|
+
const results = records["results"] as readonly JsonObject[];
|
|
861
|
+
return users.flatMap((user, index) => {
|
|
862
|
+
const profile = results[index]?.["value"] as JsonObject | undefined;
|
|
863
|
+
const name = profile?.["name"] as string | undefined ?? "";
|
|
864
|
+
const names = [name, ...(user["aliases"] as readonly string[] | undefined ?? [])];
|
|
865
|
+
return query.toLowerCase().split(/\s+/).every((word) => names.some((value) => value.toLowerCase().includes(word))) ? [{ ...user, name }] : [];
|
|
866
|
+
});
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
export async function lookupNotionUsers(runtime: RuntimeCapabilities, query: string): Promise<readonly JsonObject[]> {
|
|
870
|
+
const cookies = await runtime.cookies.loadSaved("notion");
|
|
871
|
+
if (cookies === null) throw notionAuthError();
|
|
872
|
+
const cookie = cookies.map((value) => `${value.name}=${value.value}`).join("; ");
|
|
873
|
+
const userId = cookies.find((value) => value.name === "notion_user_id")!.value;
|
|
874
|
+
const spaces = await notionPost(runtime, "getSpaces", cookie, {}, {});
|
|
875
|
+
const spaceView = object(object(spaces[userId]!)["space_view"]!);
|
|
876
|
+
const ids = [...new Set(Object.values(spaceView).map((value) => object(value)["spaceId"] as string))];
|
|
877
|
+
const users: JsonObject[] = [];
|
|
878
|
+
for (const spaceId of ids) users.push(...await findNotionUsers(runtime, query, cookie, spaceId, { "x-notion-active-user-header": userId, "x-notion-space-id": spaceId }));
|
|
879
|
+
return [...new Map(users.map((user) => [user["userId"], user])).values()];
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
async function resolveNotionEmailMentions(runtime: RuntimeCapabilities, blocks: readonly NotionBlock[], cookie: string, spaceId: string, headers: HeadersInit, mentions: EmailMentions): Promise<void> {
|
|
883
|
+
const segments: NotionRichText = [];
|
|
884
|
+
const visit = (value: JsonValue): void => {
|
|
885
|
+
if (Array.isArray(value)) {
|
|
886
|
+
if (typeof value[0] === "string" && value[0].startsWith("@") && Array.isArray(value[1]) && value[1].some((mark) => Array.isArray(mark) && mark[0] === "a" && typeof mark[1] === "string" && mark[1].startsWith("mailto:"))) segments.push(value);
|
|
887
|
+
else for (const child of value) visit(child);
|
|
888
|
+
} else if (value !== null && typeof value === "object") for (const child of Object.values(value)) visit(child);
|
|
889
|
+
};
|
|
890
|
+
for (const block of blocks) {
|
|
891
|
+
if (block.type === "code" || block.properties["notion_opaque"] !== undefined) continue;
|
|
892
|
+
visit(block.rich_text);
|
|
893
|
+
visit(block.properties);
|
|
894
|
+
}
|
|
895
|
+
if (segments.length === 0) return;
|
|
896
|
+
const response = await notionPost(runtime, "getVisibleUsers", cookie, { spaceId }, headers);
|
|
897
|
+
const users = response["users"] as readonly JsonObject[];
|
|
898
|
+
for (const segment of segments) {
|
|
899
|
+
const marks = segment[1] as JsonValue[][];
|
|
900
|
+
const link = marks.find((mark) => mark[0] === "a" && (mark[1] as string).startsWith("mailto:"))!;
|
|
901
|
+
const email = decodeURIComponent((link[1] as string).slice(7));
|
|
902
|
+
if (!/^[^@\s?]+@[^@\s?]+$/.test(email)) throw new Error(`Invalid mention email: ${email}`);
|
|
903
|
+
const matches = users.filter((user) => (user["aliases"] as readonly string[] | undefined)?.some((alias) => alias.toLowerCase() === email.toLowerCase()));
|
|
904
|
+
if (matches.length !== 1) throw new Error(`Expected one Notion user for ${email}, found ${matches.length}`);
|
|
905
|
+
const id = matches[0]!["userId"] as string;
|
|
906
|
+
mentions[id] = `[${escapeInlineMarkdown(segment[0] as string)}](mailto:${email})`;
|
|
907
|
+
segment[0] = "‣";
|
|
908
|
+
link[0] = "u";
|
|
909
|
+
link[1] = id;
|
|
910
|
+
}
|
|
911
|
+
}
|
|
912
|
+
|
|
850
913
|
async function fetchTree(runtime: RuntimeCapabilities, url: string, source: Source): Promise<Readonly<{ tree: NotionTree; userId: string; spaceId: string; cookie: string; headers: HeadersInit }>> {
|
|
851
914
|
const cookies = await runtime.cookies.loadSaved("notion");
|
|
852
915
|
if (cookies === null) throw notionAuthError();
|
|
@@ -859,16 +922,9 @@ async function fetchTree(runtime: RuntimeCapabilities, url: string, source: Sour
|
|
|
859
922
|
const initialSpaceId = object(spaceView[Object.keys(spaceView)[0]!]!)["spaceId"] as string;
|
|
860
923
|
const pageId = formatBlockId(source.identifier);
|
|
861
924
|
let headers = { "x-notion-active-user-header": userId, "x-notion-space-id": initialSpaceId, referer: url, ...(csrf === undefined ? {} : { "x-csrf-token": csrf }) };
|
|
862
|
-
const
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
do {
|
|
866
|
-
const data = await notionPost(runtime, "loadCachedPageChunkV2", cookie, { page: { id: pageId }, limit: 100, cursor: { stack }, chunkNumber, verticalColumns: false }, headers);
|
|
867
|
-
for (const [blockId, wrapper] of Object.entries(object(object(data["recordMap"]!)["block"]!))) blocks.set(blockId, object(object(object(wrapper)["value"]!)["value"]!));
|
|
868
|
-
const cursors = data["cursors"] as readonly JsonObject[];
|
|
869
|
-
stack = cursors.length === 0 ? [] : cursors[0]!["stack"] as JsonValue[];
|
|
870
|
-
chunkNumber += 1;
|
|
871
|
-
} while (stack.length > 0);
|
|
925
|
+
const pageData = await notionPost(runtime, "getRecordValues", cookie, { requests: [{ table: "block", id: pageId }] }, headers);
|
|
926
|
+
const page = object((pageData["results"] as readonly JsonObject[])[0]!["value"]!);
|
|
927
|
+
const blocks = new Map<string, JsonObject>([[pageId, page]]);
|
|
872
928
|
const spaceId = blocks.get(pageId)!["space_id"] as string;
|
|
873
929
|
headers = { ...headers, "x-notion-space-id": spaceId };
|
|
874
930
|
while (true) {
|
|
@@ -947,6 +1003,8 @@ export async function uploadNotionDocument(runtime: RuntimeCapabilities, markdow
|
|
|
947
1003
|
},
|
|
948
1004
|
};
|
|
949
1005
|
const localBlocks = parseNotionMarkdown(split.body);
|
|
1006
|
+
const emailMentions: EmailMentions = {};
|
|
1007
|
+
await resolveNotionEmailMentions(runtime, localBlocks, cookie, spaceId, headers, emailMentions);
|
|
950
1008
|
const operations = [pageOperation, ...buildNotionCreateOperations(localBlocks, pageId, spaceId, userId, currentTime).operations];
|
|
951
1009
|
await notionPost(runtime, "saveTransactionsFanout", cookie, { requestId: randomUUID(), transactions: [{ id: randomUUID(), spaceId, operations }] }, headers);
|
|
952
1010
|
const pageTree: NotionTree = {
|
|
@@ -954,8 +1012,8 @@ export async function uploadNotionDocument(runtime: RuntimeCapabilities, markdow
|
|
|
954
1012
|
block: pageOperation.args as JsonObject,
|
|
955
1013
|
children: localTree(localBlocks).map((node) => outputNode(node, undefined, pageId, { spaceId, userId }, currentTime)),
|
|
956
1014
|
};
|
|
957
|
-
const output = renderNotionTreeToMarkdown(pageTree);
|
|
958
|
-
return { url: `https://www.notion.so/${compactPageId}`, title: split.title, markdown: output, data: notionData(compactPageId, output, pageTree, undefined) };
|
|
1015
|
+
const output = renderNotionTreeToMarkdown(pageTree, undefined, emailMentions);
|
|
1016
|
+
return { url: `https://www.notion.so/${compactPageId}`, title: split.title, markdown: output, data: notionData(compactPageId, output, pageTree, undefined, emailMentions) };
|
|
959
1017
|
}
|
|
960
1018
|
|
|
961
1019
|
function splitTitle(markdown: string): Readonly<{ title: string; body: string }> {
|
|
@@ -970,7 +1028,8 @@ export async function synchronizeNotionDocument(runtime: RuntimeCapabilities, ur
|
|
|
970
1028
|
const remote = await fetchTree(runtime, url, source);
|
|
971
1029
|
const baseObject = object(base);
|
|
972
1030
|
const mentions = baseUserMentions(baseObject);
|
|
973
|
-
const
|
|
1031
|
+
const emailMentions = { ...(baseObject["email_mentions"] as EmailMentions | undefined) };
|
|
1032
|
+
const currentMarkdown = renderNotionTreeToMarkdown(remote.tree, mentions, emailMentions);
|
|
974
1033
|
const baseMarkdown = baseObject["markdown"] as string | undefined;
|
|
975
1034
|
let split = splitTitle(markdown);
|
|
976
1035
|
const currentSplit = splitTitle(currentMarkdown);
|
|
@@ -981,6 +1040,7 @@ export async function synchronizeNotionDocument(runtime: RuntimeCapabilities, ur
|
|
|
981
1040
|
const remoteTitleChanged = baseSplit.title !== currentSplit.title;
|
|
982
1041
|
const localBodyChanged = baseSplit.body !== split.body;
|
|
983
1042
|
const remoteBodyChanged = baseSplit.body !== currentSplit.body;
|
|
1043
|
+
if (localTitleChanged && remoteTitleChanged && split.title !== "" && split.title !== currentSplit.title || localBodyChanged && remoteBodyChanged && split.body !== currentSplit.body) throw new Error("Markdown and Notion changed since last sync");
|
|
984
1044
|
if ((localTitleChanged || localBodyChanged) && (remoteTitleChanged || remoteBodyChanged)) {
|
|
985
1045
|
split = { title: localTitleChanged ? split.title : currentSplit.title, body: localBodyChanged ? split.body : currentSplit.body };
|
|
986
1046
|
fieldMerged = true;
|
|
@@ -991,26 +1051,27 @@ export async function synchronizeNotionDocument(runtime: RuntimeCapabilities, ur
|
|
|
991
1051
|
if (baseSplit !== undefined) {
|
|
992
1052
|
const localTitleChanged = baseSplit.title !== split.title;
|
|
993
1053
|
const remoteTitleChanged = baseSplit.title !== currentSplit.title;
|
|
994
|
-
if (!localTitleChanged && remoteTitleChanged) return { title: currentSplit.title, markdown: currentMarkdown, data: notionData(remote.tree.id, currentMarkdown, remote.tree, mentions) };
|
|
1054
|
+
if (!localTitleChanged && remoteTitleChanged) return { title: currentSplit.title, markdown: currentMarkdown, data: notionData(remote.tree.id, currentMarkdown, remote.tree, mentions, emailMentions) };
|
|
995
1055
|
if (localTitleChanged && remoteTitleChanged && split.title !== currentSplit.title) throw new Error("Markdown and Notion changed since last sync");
|
|
996
|
-
if (localTitleChanged && remoteTitleChanged) return { title: currentSplit.title, markdown: currentMarkdown, data: notionData(remote.tree.id, currentMarkdown, remote.tree, mentions) };
|
|
1056
|
+
if (localTitleChanged && remoteTitleChanged) return { title: currentSplit.title, markdown: currentMarkdown, data: notionData(remote.tree.id, currentMarkdown, remote.tree, mentions, emailMentions) };
|
|
997
1057
|
}
|
|
998
1058
|
const titleRich = split.title === "" ? object(remote.tree.block["properties"]!)["title"]! as NotionRichText : titleRichText(split.title);
|
|
999
1059
|
const titleChanged = split.title !== "" && compact(object(remote.tree.block["properties"]!)["title"]!) !== compact(titleRich);
|
|
1000
1060
|
if (titleChanged) await notionPost(runtime, "saveTransactionsFanout", remote.cookie, { requestId: randomUUID(), transactions: [{ id: randomUUID(), spaceId: remote.spaceId, operations: [{ pointer: pointer(remote.tree.id, remote.spaceId), path: ["properties", "title"], command: "updateBlockPropertyValue", args: { primitiveOp: { command: "set", args: titleRich } } }, { pointer: pointer(remote.tree.id, remote.spaceId), path: ["last_edited_time"], command: "set", args: runtime.clock.now().getTime() }] }] }, remote.headers);
|
|
1001
1061
|
const outputTree: NotionTree = { ...remote.tree, block: { ...remote.tree.block, properties: { ...object(remote.tree.block["properties"]!), title: titleRich } } };
|
|
1002
|
-
const output = renderNotionTreeToMarkdown(outputTree, mentions);
|
|
1003
|
-
return { title: output.split("\n")[0]!.replace(/^# */, ""), markdown: output, data: notionData(remote.tree.id, output, outputTree, mentions) };
|
|
1062
|
+
const output = renderNotionTreeToMarkdown(outputTree, mentions, emailMentions);
|
|
1063
|
+
return { title: output.split("\n")[0]!.replace(/^# */, ""), markdown: output, data: notionData(remote.tree.id, output, outputTree, mentions, emailMentions) };
|
|
1004
1064
|
}
|
|
1005
1065
|
if (baseMarkdown !== undefined) {
|
|
1006
1066
|
const localChanged = baseMarkdown !== targetMarkdown;
|
|
1007
1067
|
const remoteChanged = baseMarkdown !== currentMarkdown;
|
|
1008
|
-
if (!localChanged && remoteChanged) return { title: currentMarkdown.split("\n")[0]!.replace(/^# */, ""), markdown: currentMarkdown, data: notionData(remote.tree.id, currentMarkdown, remote.tree, mentions) };
|
|
1068
|
+
if (!localChanged && remoteChanged) return { title: currentMarkdown.split("\n")[0]!.replace(/^# */, ""), markdown: currentMarkdown, data: notionData(remote.tree.id, currentMarkdown, remote.tree, mentions, emailMentions) };
|
|
1009
1069
|
if (localChanged && remoteChanged && targetMarkdown !== currentMarkdown && !fieldMerged) throw new Error("Markdown and Notion changed since last sync");
|
|
1010
|
-
if (localChanged && remoteChanged && targetMarkdown === currentMarkdown) return { title: currentMarkdown.split("\n")[0]!.replace(/^# */, ""), markdown: currentMarkdown, data: notionData(remote.tree.id, currentMarkdown, remote.tree, mentions) };
|
|
1070
|
+
if (localChanged && remoteChanged && targetMarkdown === currentMarkdown) return { title: currentMarkdown.split("\n")[0]!.replace(/^# */, ""), markdown: currentMarkdown, data: notionData(remote.tree.id, currentMarkdown, remote.tree, mentions, emailMentions) };
|
|
1011
1071
|
}
|
|
1012
1072
|
const localBody = mentions === undefined ? split.body : hydrateUserMentions(split.body, mentions);
|
|
1013
1073
|
const localBlocks = parseNotionMarkdown(localBody);
|
|
1074
|
+
await resolveNotionEmailMentions(runtime, localBlocks, remote.cookie, remote.spaceId, remote.headers, emailMentions);
|
|
1014
1075
|
const ambient = { spaceId: remote.spaceId, userId: remote.userId, currentTime: runtime.clock.now().getTime() };
|
|
1015
1076
|
const diffResult = diffNotionBlockTrees(remote.tree, localBlocks, sidecarBlocksFromNotionTree(remote.tree), ambient);
|
|
1016
1077
|
const operations = [...diffResult.operations];
|
|
@@ -1018,6 +1079,6 @@ export async function synchronizeNotionDocument(runtime: RuntimeCapabilities, ur
|
|
|
1018
1079
|
if (split.title !== "" && compact(object(remote.tree.block["properties"]!)["title"]!) !== compact(titleRich)) operations.unshift({ pointer: pointer(remote.tree.id, remote.spaceId), path: ["properties", "title"], command: "updateBlockPropertyValue", args: { primitiveOp: { command: "set", args: titleRich } } });
|
|
1019
1080
|
if (operations.length > 0) await notionPost(runtime, "saveTransactionsFanout", remote.cookie, { requestId: randomUUID(), transactions: [{ id: randomUUID(), spaceId: remote.spaceId, operations }] }, remote.headers);
|
|
1020
1081
|
const outputTree: NotionTree = { id: remote.tree.id, block: { ...remote.tree.block, properties: { ...object(remote.tree.block["properties"]!), title: titleRich } }, children: localTree(localBlocks).map((node, index) => outputNode(node, remote.tree.children[index], remote.tree.id, remote, ambient.currentTime)) };
|
|
1021
|
-
const output = renderNotionTreeToMarkdown(outputTree, mentions);
|
|
1022
|
-
return { title: output.split("\n")[0]!.replace(/^# */, ""), markdown: output, data: notionData(remote.tree.id, output, outputTree, mentions) };
|
|
1082
|
+
const output = renderNotionTreeToMarkdown(outputTree, mentions, emailMentions);
|
|
1083
|
+
return { title: output.split("\n")[0]!.replace(/^# */, ""), markdown: output, data: notionData(remote.tree.id, output, outputTree, mentions, emailMentions) };
|
|
1023
1084
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { slackService, markdownToSlackBlocks, slackBlocksToMarkdown, sendSlackMessage, type SlackSentMessage } from "./slack.js";
|
|
1
|
+
export { slackService, markdownToSlackBlocks, slackBlocksToMarkdown, sendSlackMessage, editSlackMessage, lookupSlackUsers, type SlackSentMessage } from "./slack.js";
|
|
2
2
|
export declare const slackProvider: Readonly<{
|
|
3
3
|
services: readonly [Readonly<{
|
|
4
4
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACrK,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAExB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { slackService } from "./slack.js";
|
|
2
|
-
export { slackService, markdownToSlackBlocks, slackBlocksToMarkdown, sendSlackMessage } from "./slack.js";
|
|
2
|
+
export { slackService, markdownToSlackBlocks, slackBlocksToMarkdown, sendSlackMessage, editSlackMessage, lookupSlackUsers } from "./slack.js";
|
|
3
3
|
export const slackProvider = Object.freeze({
|
|
4
4
|
services: [slackService],
|
|
5
5
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,gBAAgB,EAAyB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAyB,MAAM,YAAY,CAAC;AACrK,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,YAAY,CAAU;CAClC,CAAC,CAAC"}
|
|
@@ -2,13 +2,16 @@ import type { JsonObject } from "wire-core";
|
|
|
2
2
|
import type { RuntimeCapabilities } from "wire-core";
|
|
3
3
|
export declare function markdownToSlackBlocks(markdown: string): readonly JsonObject[];
|
|
4
4
|
export declare function slackBlocksToMarkdown(blocks: readonly JsonObject[], users: ReadonlyMap<string, string>): string;
|
|
5
|
+
export declare function lookupSlackUsers(runtime: RuntimeCapabilities, query: string): Promise<readonly JsonObject[]>;
|
|
5
6
|
export type SlackSentMessage = Readonly<{
|
|
6
7
|
channel: string;
|
|
7
8
|
ts: string;
|
|
8
9
|
url: string;
|
|
9
10
|
thread_ts?: string;
|
|
11
|
+
replies?: readonly SlackSentMessage[];
|
|
10
12
|
}>;
|
|
11
13
|
export declare function sendSlackMessage(runtime: RuntimeCapabilities, destination: string, markdown: string): Promise<SlackSentMessage>;
|
|
14
|
+
export declare function editSlackMessage(runtime: RuntimeCapabilities, url: string, markdown: string): Promise<SlackSentMessage>;
|
|
12
15
|
export declare const slackService: Readonly<{
|
|
13
16
|
name: string;
|
|
14
17
|
matches(url: URL): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../src/slack.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../src/slack.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAwIrD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,UAAU,EAAE,CAO7E;AAsCD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAmC/G;AA+CD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAmBlH;AA2CD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAAE,CAAC,CAAC;AAEjJ,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAE/H;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAEvH;AAoED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwGvB,CAAC"}
|
|
@@ -39,6 +39,8 @@ function inlinePlain(nodes) {
|
|
|
39
39
|
return node.alt;
|
|
40
40
|
if (node.type === "break")
|
|
41
41
|
return "\n";
|
|
42
|
+
if (node.type === "thematicBreak")
|
|
43
|
+
return "──────────";
|
|
42
44
|
if (node.type === "footnoteReference")
|
|
43
45
|
return `[${node.label}]`;
|
|
44
46
|
throw new Error(`Unsupported Slack inline node: ${node.type}`);
|
|
@@ -313,12 +315,95 @@ async function slackSession(runtime) {
|
|
|
313
315
|
const metadata = await runtime.cookies.metadata("slack");
|
|
314
316
|
return { origin: metadata["origin"], token: metadata["token"], cookie: cookies.map((value) => `${value.name}=${value.value}`).join("; ") };
|
|
315
317
|
}
|
|
316
|
-
export async function
|
|
317
|
-
|
|
318
|
+
export async function lookupSlackUsers(runtime, query) {
|
|
319
|
+
query = query.trim();
|
|
320
|
+
if (query === "")
|
|
321
|
+
throw new Error("Slack user lookup requires an email or name");
|
|
322
|
+
const session = await slackSession(runtime);
|
|
323
|
+
const request = (method, parameters) => api(runtime, session.origin, session.token, session.cookie, method, parameters);
|
|
324
|
+
const email = /^[^@\s]+@[^@\s]+$/.test(query);
|
|
325
|
+
const found = [];
|
|
326
|
+
let cursor;
|
|
327
|
+
do {
|
|
328
|
+
const response = await request("users.list", { limit: "200", ...(cursor === undefined ? {} : { cursor }) });
|
|
329
|
+
for (const member of response["members"]) {
|
|
330
|
+
if (member["deleted"] === true)
|
|
331
|
+
continue;
|
|
332
|
+
const profile = member["profile"];
|
|
333
|
+
const names = [member["name"], member["real_name"], profile?.["display_name"], profile?.["real_name"], profile?.["email"]].filter((value) => typeof value === "string");
|
|
334
|
+
if (email ? profile?.["email"]?.toLowerCase() === query.toLowerCase() : query.startsWith("@") ? member["name"] === query.slice(1) : query.toLowerCase().split(/\s+/).every((word) => names.some((name) => name.toLowerCase().includes(word))))
|
|
335
|
+
found.push(member);
|
|
336
|
+
}
|
|
337
|
+
cursor = response["response_metadata"]?.["next_cursor"];
|
|
338
|
+
} while (cursor !== undefined && cursor !== "");
|
|
339
|
+
return found;
|
|
340
|
+
}
|
|
341
|
+
function slackMessageParts(markdown) {
|
|
342
|
+
const ast = parse(markdown).ast;
|
|
343
|
+
if (ast.type !== "root")
|
|
344
|
+
throw new Error("Expected Markdown document");
|
|
345
|
+
const bytes = Buffer.from(markdown);
|
|
346
|
+
const parts = [];
|
|
347
|
+
let start = 0;
|
|
348
|
+
for (const node of ast.children) {
|
|
349
|
+
if (node.type !== "thematicBreak" || bytes.subarray(node.range.start, node.range.end).toString().trim() !== "---")
|
|
350
|
+
continue;
|
|
351
|
+
parts.push(bytes.subarray(start, node.range.start).toString().trim());
|
|
352
|
+
start = node.range.end;
|
|
353
|
+
}
|
|
354
|
+
parts.push(bytes.subarray(start).toString().trim());
|
|
355
|
+
if (parts.some((part) => part === ""))
|
|
356
|
+
throw new Error("Slack thread sections must not be empty");
|
|
357
|
+
return parts;
|
|
358
|
+
}
|
|
359
|
+
async function resolveSlackEmailMentions(runtime, blocks, users) {
|
|
360
|
+
const resolve = async (element) => {
|
|
361
|
+
if (element["type"] === "link" && typeof element["text"] === "string" && element["text"].startsWith("@") && typeof element["url"] === "string" && element["url"].startsWith("mailto:")) {
|
|
362
|
+
const email = decodeURIComponent(element["url"].slice(7));
|
|
363
|
+
if (!/^[^@\s?]+@[^@\s?]+$/.test(email))
|
|
364
|
+
throw new Error(`Invalid mention email: ${email}`);
|
|
365
|
+
const key = email.toLowerCase();
|
|
366
|
+
if (!users.has(key)) {
|
|
367
|
+
const matches = await lookupSlackUsers(runtime, email);
|
|
368
|
+
if (matches.length !== 1)
|
|
369
|
+
throw new Error(`Expected one Slack user for ${email}, found ${matches.length}`);
|
|
370
|
+
users.set(key, matches[0]["id"]);
|
|
371
|
+
}
|
|
372
|
+
return { type: "user", user_id: users.get(key), ...(element["style"] === undefined ? {} : { style: element["style"] }) };
|
|
373
|
+
}
|
|
374
|
+
if (Array.isArray(element["elements"])) {
|
|
375
|
+
const elements = [];
|
|
376
|
+
for (const child of element["elements"])
|
|
377
|
+
elements.push(await resolve(child));
|
|
378
|
+
return { ...element, elements };
|
|
379
|
+
}
|
|
380
|
+
return element;
|
|
381
|
+
};
|
|
382
|
+
const result = [];
|
|
383
|
+
for (const block of blocks)
|
|
384
|
+
result.push(await resolve(block));
|
|
385
|
+
return result;
|
|
386
|
+
}
|
|
387
|
+
export function sendSlackMessage(runtime, destination, markdown) {
|
|
388
|
+
return writeSlackMessage(runtime, destination, markdown, false);
|
|
389
|
+
}
|
|
390
|
+
export function editSlackMessage(runtime, url, markdown) {
|
|
391
|
+
return writeSlackMessage(runtime, url, markdown, true);
|
|
392
|
+
}
|
|
393
|
+
async function writeSlackMessage(runtime, destination, markdown, edit) {
|
|
394
|
+
markdown = markdown.replace(/\r\n?/g, "\n");
|
|
395
|
+
const parts = slackMessageParts(markdown);
|
|
396
|
+
const blocks = parts.map(markdownToSlackBlocks);
|
|
397
|
+
const users = new Map();
|
|
398
|
+
for (const [index, value] of blocks.entries())
|
|
399
|
+
blocks[index] = await resolveSlackEmailMentions(runtime, value, users);
|
|
400
|
+
if (edit && (!destination.startsWith("https://") || messageParts(new URL(destination)) === undefined))
|
|
401
|
+
throw new Error("Slack edit requires a message URL");
|
|
318
402
|
const session = await slackSession(runtime);
|
|
319
403
|
const request = (method, parameters) => api(runtime, session.origin, session.token, session.cookie, method, parameters);
|
|
320
404
|
let channel;
|
|
321
405
|
let thread;
|
|
406
|
+
let editTimestamp;
|
|
322
407
|
if (destination.startsWith("https://")) {
|
|
323
408
|
const url = new URL(destination);
|
|
324
409
|
const message = messageParts(url);
|
|
@@ -327,6 +412,8 @@ export async function sendSlackMessage(runtime, destination, markdown) {
|
|
|
327
412
|
throw new Error(`Unsupported Slack destination: ${destination}`);
|
|
328
413
|
if (message !== undefined) {
|
|
329
414
|
channel = message.channel;
|
|
415
|
+
if (edit)
|
|
416
|
+
editTimestamp = slackTimestamp(message.rawTimestamp);
|
|
330
417
|
thread = url.searchParams.has("thread_ts") ? url.searchParams.get("thread_ts") : slackTimestamp(message.rawTimestamp);
|
|
331
418
|
const response = await request("conversations.replies", { channel, ts: thread, limit: "1" });
|
|
332
419
|
const selected = response["messages"][0];
|
|
@@ -338,22 +425,13 @@ export async function sendSlackMessage(runtime, destination, markdown) {
|
|
|
338
425
|
}
|
|
339
426
|
else if (/^[CDG][A-Z0-9]+$/.test(destination))
|
|
340
427
|
channel = destination;
|
|
341
|
-
else if (/^[UW][A-Z0-9]+$/.test(destination) || destination.startsWith("@")) {
|
|
428
|
+
else if (/^[UW][A-Z0-9]+$/.test(destination) || destination.startsWith("@") || /^[^@\s]+@[^@\s]+$/.test(destination)) {
|
|
342
429
|
let user = destination;
|
|
343
|
-
if (destination
|
|
344
|
-
const
|
|
345
|
-
const found = [];
|
|
346
|
-
let cursor;
|
|
347
|
-
do {
|
|
348
|
-
const response = await request("users.list", { limit: "200", ...(cursor === undefined ? {} : { cursor }) });
|
|
349
|
-
for (const member of response["members"])
|
|
350
|
-
if (member["name"] === name && member["deleted"] !== true)
|
|
351
|
-
found.push(member["id"]);
|
|
352
|
-
cursor = response["response_metadata"]?.["next_cursor"];
|
|
353
|
-
} while (cursor !== undefined && cursor !== "");
|
|
430
|
+
if (!/^[UW][A-Z0-9]+$/.test(destination)) {
|
|
431
|
+
const found = await lookupSlackUsers(runtime, destination);
|
|
354
432
|
if (found.length !== 1)
|
|
355
|
-
throw new Error(`Expected one Slack user
|
|
356
|
-
user = found[0];
|
|
433
|
+
throw new Error(`Expected one Slack user for ${destination}, found ${found.length}; use an email or user ID`);
|
|
434
|
+
user = found[0]["id"];
|
|
357
435
|
}
|
|
358
436
|
const opened = await request("conversations.open", { users: user });
|
|
359
437
|
channel = opened["channel"]["id"];
|
|
@@ -375,10 +453,23 @@ export async function sendSlackMessage(runtime, destination, markdown) {
|
|
|
375
453
|
throw new Error(`Expected one Slack channel named #${name}, found ${found.length}; use a channel ID or URL`);
|
|
376
454
|
channel = found[0];
|
|
377
455
|
}
|
|
378
|
-
const
|
|
379
|
-
const
|
|
380
|
-
|
|
381
|
-
|
|
456
|
+
const sent = [];
|
|
457
|
+
for (const [index, part] of parts.entries()) {
|
|
458
|
+
try {
|
|
459
|
+
const updating = index === 0 && edit;
|
|
460
|
+
const posted = await request(updating ? "chat.update" : "chat.postMessage", { channel, text: part, blocks: JSON.stringify(blocks[index]), unfurl_links: "false", unfurl_media: "false", parse: "none", mrkdwn: "false", ...(updating ? { ts: editTimestamp } : thread === undefined ? {} : { thread_ts: thread }) });
|
|
461
|
+
const ts = posted["ts"];
|
|
462
|
+
const url = `${session.origin}/archives/${posted["channel"]}/p${ts.replace(".", "")}${thread === undefined ? "" : `?thread_ts=${thread}`}`;
|
|
463
|
+
sent.push({ channel: posted["channel"], ts, url, ...(thread === undefined ? {} : { thread_ts: thread }) });
|
|
464
|
+
thread ??= ts;
|
|
465
|
+
}
|
|
466
|
+
catch (error) {
|
|
467
|
+
if (sent.length === 0)
|
|
468
|
+
throw error;
|
|
469
|
+
throw new Error(`Slack thread stopped after ${sent.length} message(s): ${sent.map((message) => message.url).join(", ")}. ${error instanceof Error ? error.message : String(error)}`);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
return { ...sent[0], ...(sent.length === 1 ? {} : { replies: sent.slice(1) }) };
|
|
382
473
|
}
|
|
383
474
|
export const slackService = defineService({
|
|
384
475
|
name: "slack",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../src/slack.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slack.js","sourceRoot":"","sources":["../src/slack.ts"],"names":[],"mappings":"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"}
|