@clowder-ai/connector-feishu 0.0.0-stage → 0.1.0-alpha.5
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.en.md +54 -0
- package/README.md +25 -2
- package/assets/icon.svg +3 -0
- package/dist/FeishuAdapter.d.ts +250 -0
- package/dist/FeishuAdapter.d.ts.map +1 -0
- package/dist/FeishuAdapter.js +845 -0
- package/dist/FeishuAdapter.js.map +1 -0
- package/dist/FeishuQrBindClient.d.ts +23 -0
- package/dist/FeishuQrBindClient.d.ts.map +1 -0
- package/dist/FeishuQrBindClient.js +97 -0
- package/dist/FeishuQrBindClient.js.map +1 -0
- package/dist/FeishuTokenManager.d.ts +15 -0
- package/dist/FeishuTokenManager.d.ts.map +1 -0
- package/dist/FeishuTokenManager.js +35 -0
- package/dist/FeishuTokenManager.js.map +1 -0
- package/dist/command-ingress.d.ts +10 -0
- package/dist/command-ingress.d.ts.map +1 -0
- package/dist/command-ingress.js +15 -0
- package/dist/command-ingress.js.map +1 -0
- package/dist/execution-status.d.ts +27 -0
- package/dist/execution-status.d.ts.map +1 -0
- package/dist/execution-status.js +48 -0
- package/dist/execution-status.js.map +1 -0
- package/dist/feishu-card-formatter.d.ts +18 -0
- package/dist/feishu-card-formatter.d.ts.map +1 -0
- package/dist/feishu-card-formatter.js +58 -0
- package/dist/feishu-card-formatter.js.map +1 -0
- package/dist/inbound-download.d.ts +13 -0
- package/dist/inbound-download.d.ts.map +1 -0
- package/dist/inbound-download.js +70 -0
- package/dist/inbound-download.js.map +1 -0
- package/dist/inbound-media-source.d.ts +25 -0
- package/dist/inbound-media-source.d.ts.map +1 -0
- package/dist/inbound-media-source.js +111 -0
- package/dist/inbound-media-source.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/lifecycle-action.d.ts +30 -0
- package/dist/lifecycle-action.d.ts.map +1 -0
- package/dist/lifecycle-action.js +457 -0
- package/dist/lifecycle-action.js.map +1 -0
- package/dist/materialize-media.d.ts +7 -0
- package/dist/materialize-media.d.ts.map +1 -0
- package/dist/materialize-media.js +35 -0
- package/dist/materialize-media.js.map +1 -0
- package/dist/media-notice.d.ts +6 -0
- package/dist/media-notice.d.ts.map +1 -0
- package/dist/media-notice.js +50 -0
- package/dist/media-notice.js.map +1 -0
- package/dist/plugin-entrypoint.d.ts +9 -0
- package/dist/plugin-entrypoint.d.ts.map +1 -0
- package/dist/plugin-entrypoint.js +347 -0
- package/dist/plugin-entrypoint.js.map +1 -0
- package/dist/reply-sender-map.d.ts +10 -0
- package/dist/reply-sender-map.d.ts.map +1 -0
- package/dist/reply-sender-map.js +123 -0
- package/dist/reply-sender-map.js.map +1 -0
- package/dist/runtime.d.ts +190 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +580 -0
- package/dist/runtime.js.map +1 -0
- package/dist/settings.d.ts +20 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +35 -0
- package/dist/settings.js.map +1 -0
- package/dist/thread-mappings.d.ts +46 -0
- package/dist/thread-mappings.d.ts.map +1 -0
- package/dist/thread-mappings.js +62 -0
- package/dist/thread-mappings.js.map +1 -0
- package/dist/types.d.ts +54 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/npm-shrinkwrap.json +979 -0
- package/package.json +58 -4
- package/plugin.yaml +118 -0
package/dist/settings.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const current = async (call) => { call?.signal?.throwIfAborted(); await call?.assertCurrent(); call?.signal?.throwIfAborted(); };
|
|
2
|
+
const QR_SESSION_KEY = 'feishu.qr-session.v1';
|
|
3
|
+
export function createFeishuSettings(host, client) {
|
|
4
|
+
return { actions: {
|
|
5
|
+
'feishu.qr-generate': async (_params, _action, call) => {
|
|
6
|
+
await current(call);
|
|
7
|
+
const result = await client.create();
|
|
8
|
+
await current(call);
|
|
9
|
+
await host.storage.set(QR_SESSION_KEY, { qrPayload: result.qrPayload });
|
|
10
|
+
return { render: 'img', data: { url: result.qrUrl } };
|
|
11
|
+
},
|
|
12
|
+
'feishu.qr-status': async (_params, _action, call) => {
|
|
13
|
+
await current(call);
|
|
14
|
+
const value = (await host.storage.get(QR_SESSION_KEY))?.value;
|
|
15
|
+
const qrPayload = typeof value?.qrPayload === 'string' ? value.qrPayload : undefined;
|
|
16
|
+
if (!qrPayload)
|
|
17
|
+
return { render: 'polling', data: { status: 'error', message: 'No QR payload — generate first' }, advance: false };
|
|
18
|
+
const status = await client.poll(qrPayload);
|
|
19
|
+
await current(call);
|
|
20
|
+
if (status.status === 'confirmed') {
|
|
21
|
+
if (!status.appId || !status.appSecret)
|
|
22
|
+
return { render: 'polling', data: { status: 'error', message: 'confirmed but no credentials' }, advance: false };
|
|
23
|
+
await host.storage.set(QR_SESSION_KEY, null);
|
|
24
|
+
return { render: 'status', data: { status: 'confirmed' }, label: '已授权', targetValues: { appId: status.appId, appSecret: status.appSecret, connectionMode: 'websocket' } };
|
|
25
|
+
}
|
|
26
|
+
return { render: 'polling', data: { status: status.status, ...(status.error === undefined ? {} : { message: status.error }) }, advance: false };
|
|
27
|
+
},
|
|
28
|
+
'feishu.disconnect': async (_params, _action, call) => {
|
|
29
|
+
await current(call);
|
|
30
|
+
await host.storage.set(QR_SESSION_KEY, null);
|
|
31
|
+
return { render: 'status', data: { status: 'disconnected' }, label: '已断开', targetValues: { appId: '', appSecret: '' } };
|
|
32
|
+
},
|
|
33
|
+
} };
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { FeatureContext } from '@clowder-ai/plugin-sdk';
|
|
2
|
+
type Mapping = {
|
|
3
|
+
readonly key: string;
|
|
4
|
+
readonly threadId: string;
|
|
5
|
+
readonly createdAt: number;
|
|
6
|
+
};
|
|
7
|
+
type Creation = {
|
|
8
|
+
readonly title: string;
|
|
9
|
+
readonly parentThreadId?: string;
|
|
10
|
+
readonly participants?: readonly string[];
|
|
11
|
+
};
|
|
12
|
+
export declare function threadMappings(context: FeatureContext): {
|
|
13
|
+
findByKey: (name: string) => Promise<import("@clowder-ai/plugin-sdk").PluginThreadSummary | null>;
|
|
14
|
+
bind: (name: string, threadId: string) => Promise<boolean | Mapping>;
|
|
15
|
+
unbind: (name: string) => Promise<boolean | Mapping>;
|
|
16
|
+
listBindings: () => Promise<Mapping[]>;
|
|
17
|
+
ensureByKey: (name: string, input: Creation) => Promise<import("@clowder-ai/plugin-sdk").PluginThreadSummary>;
|
|
18
|
+
ensureSystemThread: () => Promise<import("@clowder-ai/plugin-sdk").PluginThreadSummary>;
|
|
19
|
+
get(threadId: string): Promise<import("@clowder-ai/plugin-sdk").PluginThreadSummary | null>;
|
|
20
|
+
list(options?: {
|
|
21
|
+
readonly limit?: number;
|
|
22
|
+
readonly before?: {
|
|
23
|
+
readonly lastActiveAt: number;
|
|
24
|
+
readonly id: string;
|
|
25
|
+
};
|
|
26
|
+
}): Promise<readonly import("@clowder-ai/plugin-sdk").PluginThreadSummary[]>;
|
|
27
|
+
readMessages(threadId: string, options: {
|
|
28
|
+
readonly before?: {
|
|
29
|
+
readonly timestamp: number;
|
|
30
|
+
readonly id: string;
|
|
31
|
+
};
|
|
32
|
+
readonly limit: number;
|
|
33
|
+
}): Promise<readonly import("@clowder-ai/plugin-sdk").PluginThreadMessage[]>;
|
|
34
|
+
getCats(threadId: string): Promise<import("@clowder-ai/plugin-sdk").PluginThreadCats>;
|
|
35
|
+
addParticipants(input: {
|
|
36
|
+
readonly threadId: string;
|
|
37
|
+
readonly catIds: readonly string[];
|
|
38
|
+
}): Promise<import("@clowder-ai/plugin-sdk").PluginThreadSummary>;
|
|
39
|
+
create(input: import("@clowder-ai/plugin-sdk").PluginThreadCreateInput): Promise<import("@clowder-ai/plugin-sdk").PluginThreadSummary>;
|
|
40
|
+
update(threadId: string, patch: {
|
|
41
|
+
readonly title?: string;
|
|
42
|
+
readonly preferredCats?: readonly string[];
|
|
43
|
+
}): Promise<import("@clowder-ai/plugin-sdk").PluginThreadSummary>;
|
|
44
|
+
};
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=thread-mappings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread-mappings.d.ts","sourceRoot":"","sources":["../src/thread-mappings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,KAAK,OAAO,GAAG;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAC/F,KAAK,QAAQ,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AA+CxH,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc;sBA/B1B,MAAM;iBAwBjB,MAAM,YAAY,MAAM;mBACtB,MAAM;;wBAVD,MAAM,SAAS,QAAQ;;;;sBAkBT,CAAC;uBAAiC,CAAC;;;;;;uBAG2M,CAAC;;;;;;;;;;;;;sBAA2f,CAAC;8BAAwC,CAAC;;EADzzB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
const contexts = new WeakMap();
|
|
2
|
+
/** Package-owned external-conversation mapping. Host receives ordinary thread calls only. */
|
|
3
|
+
function createMappings(context) {
|
|
4
|
+
const key = 'thread-mappings.v1';
|
|
5
|
+
let tail = Promise.resolve();
|
|
6
|
+
const serialize = (run) => {
|
|
7
|
+
const next = tail.then(run, run);
|
|
8
|
+
tail = next.catch(() => { });
|
|
9
|
+
return next;
|
|
10
|
+
};
|
|
11
|
+
const read = async () => {
|
|
12
|
+
const stored = await context.storage.get(key);
|
|
13
|
+
const rows = stored?.value ?? [];
|
|
14
|
+
if (!Array.isArray(rows) || rows.some(row => !row || typeof row.key !== 'string' || typeof row.threadId !== 'string' || typeof row.createdAt !== 'number'))
|
|
15
|
+
throw new Error('Invalid plugin thread mappings');
|
|
16
|
+
return { stored, rows: rows };
|
|
17
|
+
};
|
|
18
|
+
const find = async (name) => {
|
|
19
|
+
const { rows } = await read();
|
|
20
|
+
const row = rows.find(row => row.key === name);
|
|
21
|
+
return row ? context.threads.get(row.threadId) : null;
|
|
22
|
+
};
|
|
23
|
+
const save = async (name, threadId) => {
|
|
24
|
+
const { stored, rows } = await read();
|
|
25
|
+
const next = rows.filter(row => row.key !== name);
|
|
26
|
+
if (threadId !== null) {
|
|
27
|
+
if (!await context.threads.get(threadId))
|
|
28
|
+
throw new Error('Thread unavailable');
|
|
29
|
+
next.push({ key: name, threadId, createdAt: Date.now() });
|
|
30
|
+
}
|
|
31
|
+
const result = await context.storage.compareAndSet(key, stored?.revision ?? null, next);
|
|
32
|
+
if (!result.applied)
|
|
33
|
+
throw new Error('Plugin thread mappings changed concurrently');
|
|
34
|
+
return threadId === null ? rows.length !== next.length : next.find(row => row.key === name);
|
|
35
|
+
};
|
|
36
|
+
const ensure = (name, input) => serialize(async () => {
|
|
37
|
+
const existing = await find(name);
|
|
38
|
+
if (existing)
|
|
39
|
+
return existing;
|
|
40
|
+
const thread = await context.threads.create(input);
|
|
41
|
+
await save(name, thread.id);
|
|
42
|
+
return thread;
|
|
43
|
+
});
|
|
44
|
+
return {
|
|
45
|
+
...context.threads,
|
|
46
|
+
findByKey: find,
|
|
47
|
+
bind: (name, threadId) => serialize(() => save(name, threadId)),
|
|
48
|
+
unbind: (name) => serialize(() => save(name, null)),
|
|
49
|
+
listBindings: async () => (await read()).rows,
|
|
50
|
+
ensureByKey: ensure,
|
|
51
|
+
ensureSystemThread: () => ensure('command-audit', { title: '连接器命令记录' }),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export function threadMappings(context) {
|
|
55
|
+
let value = contexts.get(context);
|
|
56
|
+
if (!value) {
|
|
57
|
+
value = createMappings(context);
|
|
58
|
+
contexts.set(context, value);
|
|
59
|
+
}
|
|
60
|
+
return value;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=thread-mappings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread-mappings.js","sourceRoot":"","sources":["../src/thread-mappings.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export type ConnectorLogMethod = (...args: readonly unknown[]) => void;
|
|
2
|
+
export interface ConnectorLogger {
|
|
3
|
+
info: ConnectorLogMethod;
|
|
4
|
+
warn: ConnectorLogMethod;
|
|
5
|
+
error: ConnectorLogMethod;
|
|
6
|
+
debug: ConnectorLogMethod;
|
|
7
|
+
}
|
|
8
|
+
export type RichBlock = Readonly<{
|
|
9
|
+
kind: 'card';
|
|
10
|
+
title?: string;
|
|
11
|
+
tone?: string;
|
|
12
|
+
bodyMarkdown?: string;
|
|
13
|
+
fields?: ReadonlyArray<Readonly<{
|
|
14
|
+
label: string;
|
|
15
|
+
value: string;
|
|
16
|
+
}>>;
|
|
17
|
+
}> | Readonly<{
|
|
18
|
+
kind: 'checklist';
|
|
19
|
+
title?: string;
|
|
20
|
+
items: ReadonlyArray<Readonly<{
|
|
21
|
+
checked?: boolean;
|
|
22
|
+
text: string;
|
|
23
|
+
}>>;
|
|
24
|
+
}> | Readonly<{
|
|
25
|
+
kind: 'diff';
|
|
26
|
+
filePath: string;
|
|
27
|
+
languageHint?: string;
|
|
28
|
+
diff: string;
|
|
29
|
+
}> | Readonly<{
|
|
30
|
+
kind: 'audio';
|
|
31
|
+
text?: string;
|
|
32
|
+
}> | Readonly<{
|
|
33
|
+
kind: 'media_gallery';
|
|
34
|
+
title?: string;
|
|
35
|
+
items: ReadonlyArray<Readonly<{
|
|
36
|
+
caption?: string;
|
|
37
|
+
alt?: string;
|
|
38
|
+
url: string;
|
|
39
|
+
}>>;
|
|
40
|
+
}>;
|
|
41
|
+
export interface CardAction {
|
|
42
|
+
readonly label: string;
|
|
43
|
+
readonly value: Record<string, unknown>;
|
|
44
|
+
}
|
|
45
|
+
export interface MessageEnvelope {
|
|
46
|
+
readonly header: string;
|
|
47
|
+
readonly subtitle: string;
|
|
48
|
+
readonly body: string;
|
|
49
|
+
readonly footer: string;
|
|
50
|
+
readonly origin?: 'callback' | 'agent' | 'system';
|
|
51
|
+
readonly cardActions?: readonly CardAction[];
|
|
52
|
+
}
|
|
53
|
+
export declare const DEFAULT_QUICK_ACTIONS: readonly CardAction[];
|
|
54
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,IAAI,EAAE,SAAS,OAAO,EAAE,KAAK,IAAI,CAAC;AAEvE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,kBAAkB,CAAC;IACzB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,KAAK,EAAE,kBAAkB,CAAC;CAC3B;AAED,MAAM,MAAM,SAAS,GACjB,QAAQ,CAAC;IACP,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CACpE,CAAC,GACF,QAAQ,CAAC;IACP,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CACrE,CAAC,GACF,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GACjF,QAAQ,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC1C,QAAQ,CAAC;IACP,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CACjF,CAAC,CAAC;AAEP,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;IAClD,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;CAC9C;AAED,eAAO,MAAM,qBAAqB,EAAE,SAAS,UAAU,EAKtD,CAAC"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export const DEFAULT_QUICK_ACTIONS = [
|
|
2
|
+
{ label: '➕ 新建', value: { cmd: '/new' } },
|
|
3
|
+
{ label: '📋 选择会话', value: { cmd: '/threads' } },
|
|
4
|
+
{ label: '📜 历史', value: { cmd: '/history', args: 'pick' } },
|
|
5
|
+
{ label: '❓ 帮助', value: { cmd: '/commands' } },
|
|
6
|
+
];
|
|
7
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA4CA,MAAM,CAAC,MAAM,qBAAqB,GAA0B;IAC1D,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;IACzC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE;IAChD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;IAC5D,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE;CAC/C,CAAC"}
|