@amaster.ai/pi-dingtalk 0.1.2-beta.29 → 0.1.2-beta.31
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/dist/cli.d.ts +3 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +45 -24
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -23
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/cli.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { DingTalkConfig } from './config.js';
|
|
2
|
-
export declare function isDwsInstalled(): boolean
|
|
2
|
+
export declare function isDwsInstalled(): Promise<boolean>;
|
|
3
3
|
export declare function installDws(): Promise<void>;
|
|
4
4
|
export declare function ensureDws(): Promise<boolean>;
|
|
5
|
-
export declare function initDws(config: DingTalkConfig): void
|
|
6
|
-
export declare function getDwsSkillsDir(): string | undefined
|
|
5
|
+
export declare function initDws(config: DingTalkConfig): Promise<void>;
|
|
6
|
+
export declare function getDwsSkillsDir(): Promise<string | undefined>;
|
|
7
7
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAuBlD,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAUvD;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAMhD;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAIlD;AAED,wBAAsB,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CASnE;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmBnE"}
|
package/dist/cli.js
CHANGED
|
@@ -1,48 +1,69 @@
|
|
|
1
|
-
import { exec
|
|
2
|
-
import { existsSync } from 'node:fs';
|
|
1
|
+
import { exec } from 'node:child_process';
|
|
2
|
+
import { existsSync, mkdirSync } from 'node:fs';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
3
4
|
import { join } from 'node:path';
|
|
4
5
|
const NPM_PACKAGE = 'dingtalk-workspace-cli';
|
|
5
|
-
|
|
6
|
+
const INSTALL_DIR = join(homedir(), '.dws');
|
|
7
|
+
const BIN_PATH = join(INSTALL_DIR, 'node_modules', '.bin', 'dws');
|
|
8
|
+
let installAttempted = false;
|
|
9
|
+
let cliAvailable;
|
|
10
|
+
function execAsync(command) {
|
|
11
|
+
return new Promise((resolve, reject) => {
|
|
12
|
+
exec(command, (error, stdout, stderr) => {
|
|
13
|
+
if (error)
|
|
14
|
+
reject(error);
|
|
15
|
+
else
|
|
16
|
+
resolve({ stdout, stderr });
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
function dwsBin() {
|
|
21
|
+
if (existsSync(BIN_PATH))
|
|
22
|
+
return BIN_PATH;
|
|
23
|
+
return 'dws';
|
|
24
|
+
}
|
|
25
|
+
export async function isDwsInstalled() {
|
|
26
|
+
if (cliAvailable !== undefined)
|
|
27
|
+
return cliAvailable;
|
|
6
28
|
try {
|
|
7
|
-
|
|
29
|
+
await execAsync(`"${dwsBin()}" --version`);
|
|
30
|
+
cliAvailable = true;
|
|
8
31
|
return true;
|
|
9
32
|
}
|
|
10
33
|
catch {
|
|
34
|
+
cliAvailable = false;
|
|
11
35
|
return false;
|
|
12
36
|
}
|
|
13
37
|
}
|
|
14
|
-
export function installDws() {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
});
|
|
22
|
-
});
|
|
38
|
+
export async function installDws() {
|
|
39
|
+
if (installAttempted)
|
|
40
|
+
return;
|
|
41
|
+
installAttempted = true;
|
|
42
|
+
mkdirSync(INSTALL_DIR, { recursive: true });
|
|
43
|
+
await execAsync(`npm install --prefix "${INSTALL_DIR}" ${NPM_PACKAGE}@latest`);
|
|
44
|
+
cliAvailable = undefined;
|
|
23
45
|
}
|
|
24
46
|
export async function ensureDws() {
|
|
25
|
-
if (isDwsInstalled())
|
|
47
|
+
if (await isDwsInstalled())
|
|
26
48
|
return true;
|
|
27
49
|
await installDws();
|
|
28
50
|
return isDwsInstalled();
|
|
29
51
|
}
|
|
30
|
-
export function initDws(config) {
|
|
52
|
+
export async function initDws(config) {
|
|
31
53
|
const { clientId, clientSecret } = config;
|
|
32
54
|
if (!clientId || !clientSecret) {
|
|
33
55
|
throw new Error('clientId and clientSecret are required');
|
|
34
56
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
});
|
|
57
|
+
const bin = dwsBin();
|
|
58
|
+
await execAsync(`"${bin}" auth login --client-id "${clientId}" --client-secret "${clientSecret}" --yes`);
|
|
38
59
|
}
|
|
39
|
-
export function getDwsSkillsDir() {
|
|
60
|
+
export async function getDwsSkillsDir() {
|
|
61
|
+
const localSkills = join(INSTALL_DIR, 'node_modules', 'dingtalk-workspace-cli', 'skills', 'multi');
|
|
62
|
+
if (existsSync(localSkills))
|
|
63
|
+
return localSkills;
|
|
40
64
|
try {
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
stdio: ['pipe', 'pipe', 'ignore'],
|
|
44
|
-
}).trim();
|
|
45
|
-
const skillsPath = join(npmRoot, 'dingtalk-workspace-cli', 'skills', 'multi');
|
|
65
|
+
const { stdout } = await execAsync('npm root -g');
|
|
66
|
+
const skillsPath = join(stdout.trim(), 'dingtalk-workspace-cli', 'skills', 'multi');
|
|
46
67
|
if (existsSync(skillsPath))
|
|
47
68
|
return skillsPath;
|
|
48
69
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAElE,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAC7B,IAAI,YAAiC,CAAC;AAEtC,SAAS,SAAS,CAAC,OAAe;IAChC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACtC,IAAI,KAAK;gBAAE,MAAM,CAAC,KAAK,CAAC,CAAC;;gBACpB,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,MAAM;IACb,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,IAAI,MAAM,EAAE,aAAa,CAAC,CAAC;QAC3C,YAAY,GAAG,IAAI,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,YAAY,GAAG,KAAK,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,gBAAgB;QAAE,OAAO;IAC7B,gBAAgB,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,SAAS,CAAC,yBAAyB,WAAW,KAAK,WAAW,SAAS,CAAC,CAAC;IAC/E,YAAY,GAAG,SAAS,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,IAAI,MAAM,cAAc,EAAE;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,UAAU,EAAE,CAAC;IACnB,OAAO,cAAc,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAsB;IAClD,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IAC1C,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,SAAS,CACb,IAAI,GAAG,6BAA6B,QAAQ,sBAAsB,YAAY,SAAS,CACxF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,WAAW,GAAG,IAAI,CACtB,WAAW,EACX,cAAc,EACd,wBAAwB,EACxB,QAAQ,EACR,OAAO,CACR,CAAC;IACF,IAAI,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,wBAAwB,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpF,IAAI,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,UAAU,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,iCAAiC,CAAC;AActF,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,iCAAiC,CAAC;AActF,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAoClE"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs';
|
|
2
2
|
import { dirname, join } from 'node:path';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
|
-
import { ensureDws, getDwsSkillsDir, initDws
|
|
4
|
+
import { ensureDws, getDwsSkillsDir, initDws } from './cli.js';
|
|
5
5
|
import { loadDingTalkConfig } from './config.js';
|
|
6
6
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
7
|
const BUNDLED_SKILLS_DIR = join(__dirname, '..', 'skills');
|
|
8
|
-
function resolveSkillsDir() {
|
|
9
|
-
const cliSkills = getDwsSkillsDir();
|
|
8
|
+
async function resolveSkillsDir() {
|
|
9
|
+
const cliSkills = await getDwsSkillsDir();
|
|
10
10
|
if (cliSkills)
|
|
11
11
|
return cliSkills;
|
|
12
12
|
if (existsSync(BUNDLED_SKILLS_DIR))
|
|
@@ -22,29 +22,16 @@ export default function piDingTalkExtension(pi) {
|
|
|
22
22
|
if (existsSync(BUNDLED_SKILLS_DIR)) {
|
|
23
23
|
skillsDir = BUNDLED_SKILLS_DIR;
|
|
24
24
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
try {
|
|
26
|
+
const installed = await ensureDws();
|
|
27
|
+
if (installed) {
|
|
28
|
+
await initDws(config);
|
|
29
|
+
skillsDir = await resolveSkillsDir();
|
|
29
30
|
ctx.ui.setStatus?.('pi-dingtalk', 'dws: ready');
|
|
30
31
|
}
|
|
31
|
-
catch (err) {
|
|
32
|
-
ctx.ui.notify(`pi-dingtalk: 初始化失败 — ${err instanceof Error ? err.message : String(err)}`, 'warning');
|
|
33
|
-
}
|
|
34
32
|
}
|
|
35
|
-
|
|
36
|
-
ctx.ui.
|
|
37
|
-
ensureDws()
|
|
38
|
-
.then((installed) => {
|
|
39
|
-
if (installed) {
|
|
40
|
-
initDws(config);
|
|
41
|
-
skillsDir = resolveSkillsDir();
|
|
42
|
-
ctx.ui.setStatus?.('pi-dingtalk', 'dws: ready');
|
|
43
|
-
}
|
|
44
|
-
})
|
|
45
|
-
.catch((err) => {
|
|
46
|
-
ctx.ui.notify(`pi-dingtalk: 安装失败 — ${err instanceof Error ? err.message : String(err)}`, 'warning');
|
|
47
|
-
});
|
|
33
|
+
catch (err) {
|
|
34
|
+
ctx.ui.notify(`pi-dingtalk: 初始化失败 — ${err instanceof Error ? err.message : String(err)}`, 'warning');
|
|
48
35
|
}
|
|
49
36
|
});
|
|
50
37
|
pi.on('resources_discover', () => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAE3D,KAAK,UAAU,gBAAgB;IAC7B,MAAM,SAAS,GAAG,MAAM,eAAe,EAAE,CAAC;IAC1C,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,UAAU,CAAC,kBAAkB,CAAC;QAAE,OAAO,kBAAkB,CAAC;IAC9D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAAgB;IAC1D,IAAI,SAA6B,CAAC;IAElC,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAe,EAAE,GAAqB,EAAE,EAAE;QACtE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,CAAC,MAAM,EAAE,YAAY;YAAE,OAAO;QAEvD,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACnC,SAAS,GAAG,kBAAkB,CAAC;QACjC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,SAAS,EAAE,CAAC;YACpC,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;gBACtB,SAAS,GAAG,MAAM,gBAAgB,EAAE,CAAC;gBACrC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,wBAAwB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC1E,SAAS,CACV,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC/B,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QACnC,SAAS,GAAG,SAAS,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@amaster.ai/pi-dingtalk",
|
|
3
|
-
"version": "0.1.2-beta.
|
|
3
|
+
"version": "0.1.2-beta.31",
|
|
4
4
|
"description": "Pi extension for DingTalk workspace — calendar, docs, chat, todo, sheets, mail and more via dws CLI.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"vitest": "^4.0.0"
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@amaster.ai/pi-shared": "0.1.2-beta.
|
|
60
|
+
"@amaster.ai/pi-shared": "0.1.2-beta.31"
|
|
61
61
|
},
|
|
62
62
|
"scripts": {
|
|
63
63
|
"fetch-skills": "node scripts/fetch-skills.mjs",
|