@amaster.ai/pi-dingtalk 0.1.6 → 0.1.8
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 +5 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +20 -7
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -12,7 +12,11 @@ Pi extension for [DingTalk](https://www.dingtalk.com/) workspace — calendar, d
|
|
|
12
12
|
|
|
13
13
|
## Configuration
|
|
14
14
|
|
|
15
|
-
Add to
|
|
15
|
+
Add to `~/.pi/agent/settings.json` or a trusted project's `.pi/settings.json`:
|
|
16
|
+
|
|
17
|
+
Project settings are loaded only after project trust is accepted. For
|
|
18
|
+
environment-backed credentials, use user or agent settings because project
|
|
19
|
+
settings do not expand `${ENV_VAR}`.
|
|
16
20
|
|
|
17
21
|
```json
|
|
18
22
|
{
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,
|
|
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,CAmBnE;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmBnE"}
|
package/dist/cli.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
2
|
import { existsSync, mkdirSync } from 'node:fs';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { join } from 'node:path';
|
|
@@ -7,9 +7,9 @@ const INSTALL_DIR = join(homedir(), '.dws');
|
|
|
7
7
|
const BIN_PATH = join(INSTALL_DIR, 'node_modules', '.bin', 'dws');
|
|
8
8
|
let installAttempted = false;
|
|
9
9
|
let cliAvailable;
|
|
10
|
-
function execAsync(
|
|
10
|
+
function execAsync(file, args) {
|
|
11
11
|
return new Promise((resolve, reject) => {
|
|
12
|
-
|
|
12
|
+
execFile(file, args, (error, stdout, stderr) => {
|
|
13
13
|
if (error)
|
|
14
14
|
reject(error);
|
|
15
15
|
else
|
|
@@ -26,7 +26,7 @@ export async function isDwsInstalled() {
|
|
|
26
26
|
if (cliAvailable !== undefined)
|
|
27
27
|
return cliAvailable;
|
|
28
28
|
try {
|
|
29
|
-
await execAsync(
|
|
29
|
+
await execAsync(dwsBin(), ['--version']);
|
|
30
30
|
cliAvailable = true;
|
|
31
31
|
return true;
|
|
32
32
|
}
|
|
@@ -40,7 +40,7 @@ export async function installDws() {
|
|
|
40
40
|
return;
|
|
41
41
|
installAttempted = true;
|
|
42
42
|
mkdirSync(INSTALL_DIR, { recursive: true });
|
|
43
|
-
await execAsync(
|
|
43
|
+
await execAsync('npm', ['install', '--prefix', INSTALL_DIR, `${NPM_PACKAGE}@latest`]);
|
|
44
44
|
cliAvailable = undefined;
|
|
45
45
|
}
|
|
46
46
|
export async function ensureDws() {
|
|
@@ -55,14 +55,27 @@ export async function initDws(config) {
|
|
|
55
55
|
throw new Error('clientId and clientSecret are required');
|
|
56
56
|
}
|
|
57
57
|
const bin = dwsBin();
|
|
58
|
-
|
|
58
|
+
try {
|
|
59
|
+
await execAsync(bin, [
|
|
60
|
+
'auth',
|
|
61
|
+
'login',
|
|
62
|
+
'--client-id',
|
|
63
|
+
clientId,
|
|
64
|
+
'--client-secret',
|
|
65
|
+
clientSecret,
|
|
66
|
+
'--yes',
|
|
67
|
+
]);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
throw new Error('dws auth login failed');
|
|
71
|
+
}
|
|
59
72
|
}
|
|
60
73
|
export async function getDwsSkillsDir() {
|
|
61
74
|
const localSkills = join(INSTALL_DIR, 'node_modules', 'dingtalk-workspace-cli', 'skills', 'multi');
|
|
62
75
|
if (existsSync(localSkills))
|
|
63
76
|
return localSkills;
|
|
64
77
|
try {
|
|
65
|
-
const { stdout } = await execAsync('npm root -g');
|
|
78
|
+
const { stdout } = await execAsync('npm', ['root', '-g']);
|
|
66
79
|
const skillsPath = join(stdout.trim(), 'dingtalk-workspace-cli', 'skills', 'multi');
|
|
67
80
|
if (existsSync(skillsPath))
|
|
68
81
|
return skillsPath;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ export type DingTalkConfig = {
|
|
|
2
2
|
clientId?: string;
|
|
3
3
|
clientSecret?: string;
|
|
4
4
|
};
|
|
5
|
-
export declare function loadDingTalkConfig(cwd: string): DingTalkConfig | undefined;
|
|
5
|
+
export declare function loadDingTalkConfig(cwd: string, projectTrusted?: boolean): DingTalkConfig | undefined;
|
|
6
6
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAIF,wBAAgB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAIF,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,cAAc,UAAQ,GACrB,cAAc,GAAG,SAAS,CAI5B"}
|
package/dist/config.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { loadPiSettings } from '@amaster.ai/pi-shared/settings';
|
|
2
2
|
const SETTINGS_KEY = 'pi-dingtalk';
|
|
3
|
-
export function loadDingTalkConfig(cwd) {
|
|
4
|
-
const config = loadPiSettings(SETTINGS_KEY, { cwd });
|
|
3
|
+
export function loadDingTalkConfig(cwd, projectTrusted = false) {
|
|
4
|
+
const config = loadPiSettings(SETTINGS_KEY, { cwd, projectTrusted });
|
|
5
5
|
if (!config || (!config.clientId && !config.clientSecret))
|
|
6
6
|
return undefined;
|
|
7
7
|
return config;
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAOhE,MAAM,YAAY,GAAG,aAAa,CAAC;AAEnC,MAAM,UAAU,kBAAkB,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAOhE,MAAM,YAAY,GAAG,aAAa,CAAC;AAEnC,MAAM,UAAU,kBAAkB,CAChC,GAAW,EACX,cAAc,GAAG,KAAK;IAEtB,MAAM,MAAM,GAAG,cAAc,CAAiB,YAAY,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC;IACrF,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5E,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,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,6 +1,7 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs';
|
|
2
2
|
import { dirname, join } from 'node:path';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { isProjectTrusted } from '@amaster.ai/pi-shared/settings';
|
|
4
5
|
import { ensureDws, getDwsSkillsDir, initDws } from './cli.js';
|
|
5
6
|
import { loadDingTalkConfig } from './config.js';
|
|
6
7
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
@@ -16,7 +17,7 @@ async function resolveSkillsDir() {
|
|
|
16
17
|
export default function piDingTalkExtension(pi) {
|
|
17
18
|
let skillsDir;
|
|
18
19
|
pi.on('session_start', async (_event, ctx) => {
|
|
19
|
-
const config = loadDingTalkConfig(ctx.cwd);
|
|
20
|
+
const config = loadDingTalkConfig(ctx.cwd, isProjectTrusted(ctx));
|
|
20
21
|
if (!config?.clientId || !config?.clientSecret)
|
|
21
22
|
return;
|
|
22
23
|
if (existsSync(BUNDLED_SKILLS_DIR)) {
|
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;
|
|
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;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,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,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,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.
|
|
3
|
+
"version": "0.1.8",
|
|
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",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"directory": "packages/pi-dingtalk"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
|
-
"@earendil-works/pi-coding-agent": ">=0.
|
|
46
|
+
"@earendil-works/pi-coding-agent": ">=0.79.1",
|
|
47
47
|
"typebox": "*"
|
|
48
48
|
},
|
|
49
49
|
"peerDependenciesMeta": {
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"vitest": "^4.0.0"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@amaster.ai/pi-shared": "0.1.
|
|
63
|
+
"@amaster.ai/pi-shared": "0.1.8"
|
|
64
64
|
},
|
|
65
65
|
"scripts": {
|
|
66
66
|
"fetch-skills": "node scripts/fetch-skills.mjs",
|