donobu 2.29.1 → 2.30.0
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/assets/generated/version +1 -1
- package/dist/assets/install-donobu-plugin.js +96 -0
- package/dist/esm/assets/generated/version +1 -1
- package/dist/esm/assets/install-donobu-plugin.js +96 -0
- package/dist/esm/managers/PluginLoader.js +3 -15
- package/dist/esm/managers/PluginLoader.js.map +1 -1
- package/dist/managers/PluginLoader.js +3 -15
- package/dist/managers/PluginLoader.js.map +1 -1
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
1290
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const { exec } = require('child_process');
|
|
4
|
+
const { promisify } = require('util');
|
|
5
|
+
const { access, mkdir, rm, cp, readFile } = require('fs/promises');
|
|
6
|
+
const { basename, join } = require('path');
|
|
7
|
+
const { constants } = require('fs');
|
|
8
|
+
|
|
9
|
+
const execAsync = promisify(exec);
|
|
10
|
+
|
|
11
|
+
async function getPluginName() {
|
|
12
|
+
try {
|
|
13
|
+
// First, try to read the plugin name from package.json
|
|
14
|
+
const packageJsonContent = await readFile('package.json', 'utf8');
|
|
15
|
+
const packageJson = JSON.parse(packageJsonContent);
|
|
16
|
+
|
|
17
|
+
if (packageJson.name) {
|
|
18
|
+
console.log(`Using plugin name from package.json: ${packageJson.name}`);
|
|
19
|
+
return packageJson.name;
|
|
20
|
+
}
|
|
21
|
+
} catch (error) {
|
|
22
|
+
console.warn(
|
|
23
|
+
'Could not read package.json name, falling back to git/user detection',
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Fallback to a heuristic
|
|
28
|
+
try {
|
|
29
|
+
const { stdout } = await execAsync('git rev-parse --show-toplevel');
|
|
30
|
+
const repoPath = stdout.trim();
|
|
31
|
+
const gitBasedName = `${basename(repoPath).replace(/\.git$/, '')}-custom-tools`;
|
|
32
|
+
console.log(`Using git-based plugin name: ${gitBasedName}`);
|
|
33
|
+
return gitBasedName;
|
|
34
|
+
} catch {
|
|
35
|
+
const user = process.env.USER || 'unknown-user';
|
|
36
|
+
const userBasedName = `${user}-custom-tools`;
|
|
37
|
+
console.log(`Using user-based plugin name: ${userBasedName}`);
|
|
38
|
+
return userBasedName;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async function buildPlugin() {
|
|
43
|
+
console.log('Building plugin...');
|
|
44
|
+
await execAsync('npm run build');
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
async function installPlugin() {
|
|
48
|
+
const pluginName = await getPluginName();
|
|
49
|
+
const pluginsDir = join(
|
|
50
|
+
process.env.HOME,
|
|
51
|
+
'Library/Application Support/Donobu Studio/plugins',
|
|
52
|
+
);
|
|
53
|
+
const thisPluginDir = join(pluginsDir, pluginName);
|
|
54
|
+
|
|
55
|
+
console.log(`Installing plugin: ${pluginName}`);
|
|
56
|
+
|
|
57
|
+
// Create plugins directory
|
|
58
|
+
await mkdir(pluginsDir, { recursive: true });
|
|
59
|
+
|
|
60
|
+
// Remove old plugin if exists
|
|
61
|
+
try {
|
|
62
|
+
await rm(thisPluginDir, { recursive: true, force: true });
|
|
63
|
+
} catch (err) {
|
|
64
|
+
// Ignore if directory doesn't exist
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Copy built plugin
|
|
68
|
+
await cp('dist', thisPluginDir, { recursive: true });
|
|
69
|
+
|
|
70
|
+
console.log(`Plugin installed successfully to: ${thisPluginDir}`);
|
|
71
|
+
console.log('Restart Donobu to see the new tools.');
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
async function main() {
|
|
75
|
+
try {
|
|
76
|
+
// Check if we're in a plugin directory
|
|
77
|
+
try {
|
|
78
|
+
await access('package.json', constants.F_OK);
|
|
79
|
+
await access('src', constants.F_OK);
|
|
80
|
+
} catch {
|
|
81
|
+
console.error(
|
|
82
|
+
'Error: This command must be run from a Donobu plugin directory',
|
|
83
|
+
);
|
|
84
|
+
console.error('Make sure you have package.json and src/ directory');
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
await buildPlugin();
|
|
89
|
+
await installPlugin();
|
|
90
|
+
} catch (error) {
|
|
91
|
+
console.error('Installation failed:', error.message);
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
main();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
1290
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const { exec } = require('child_process');
|
|
4
|
+
const { promisify } = require('util');
|
|
5
|
+
const { access, mkdir, rm, cp, readFile } = require('fs/promises');
|
|
6
|
+
const { basename, join } = require('path');
|
|
7
|
+
const { constants } = require('fs');
|
|
8
|
+
|
|
9
|
+
const execAsync = promisify(exec);
|
|
10
|
+
|
|
11
|
+
async function getPluginName() {
|
|
12
|
+
try {
|
|
13
|
+
// First, try to read the plugin name from package.json
|
|
14
|
+
const packageJsonContent = await readFile('package.json', 'utf8');
|
|
15
|
+
const packageJson = JSON.parse(packageJsonContent);
|
|
16
|
+
|
|
17
|
+
if (packageJson.name) {
|
|
18
|
+
console.log(`Using plugin name from package.json: ${packageJson.name}`);
|
|
19
|
+
return packageJson.name;
|
|
20
|
+
}
|
|
21
|
+
} catch (error) {
|
|
22
|
+
console.warn(
|
|
23
|
+
'Could not read package.json name, falling back to git/user detection',
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Fallback to a heuristic
|
|
28
|
+
try {
|
|
29
|
+
const { stdout } = await execAsync('git rev-parse --show-toplevel');
|
|
30
|
+
const repoPath = stdout.trim();
|
|
31
|
+
const gitBasedName = `${basename(repoPath).replace(/\.git$/, '')}-custom-tools`;
|
|
32
|
+
console.log(`Using git-based plugin name: ${gitBasedName}`);
|
|
33
|
+
return gitBasedName;
|
|
34
|
+
} catch {
|
|
35
|
+
const user = process.env.USER || 'unknown-user';
|
|
36
|
+
const userBasedName = `${user}-custom-tools`;
|
|
37
|
+
console.log(`Using user-based plugin name: ${userBasedName}`);
|
|
38
|
+
return userBasedName;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async function buildPlugin() {
|
|
43
|
+
console.log('Building plugin...');
|
|
44
|
+
await execAsync('npm run build');
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
async function installPlugin() {
|
|
48
|
+
const pluginName = await getPluginName();
|
|
49
|
+
const pluginsDir = join(
|
|
50
|
+
process.env.HOME,
|
|
51
|
+
'Library/Application Support/Donobu Studio/plugins',
|
|
52
|
+
);
|
|
53
|
+
const thisPluginDir = join(pluginsDir, pluginName);
|
|
54
|
+
|
|
55
|
+
console.log(`Installing plugin: ${pluginName}`);
|
|
56
|
+
|
|
57
|
+
// Create plugins directory
|
|
58
|
+
await mkdir(pluginsDir, { recursive: true });
|
|
59
|
+
|
|
60
|
+
// Remove old plugin if exists
|
|
61
|
+
try {
|
|
62
|
+
await rm(thisPluginDir, { recursive: true, force: true });
|
|
63
|
+
} catch (err) {
|
|
64
|
+
// Ignore if directory doesn't exist
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Copy built plugin
|
|
68
|
+
await cp('dist', thisPluginDir, { recursive: true });
|
|
69
|
+
|
|
70
|
+
console.log(`Plugin installed successfully to: ${thisPluginDir}`);
|
|
71
|
+
console.log('Restart Donobu to see the new tools.');
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
async function main() {
|
|
75
|
+
try {
|
|
76
|
+
// Check if we're in a plugin directory
|
|
77
|
+
try {
|
|
78
|
+
await access('package.json', constants.F_OK);
|
|
79
|
+
await access('src', constants.F_OK);
|
|
80
|
+
} catch {
|
|
81
|
+
console.error(
|
|
82
|
+
'Error: This command must be run from a Donobu plugin directory',
|
|
83
|
+
);
|
|
84
|
+
console.error('Make sure you have package.json and src/ directory');
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
await buildPlugin();
|
|
89
|
+
await installPlugin();
|
|
90
|
+
} catch (error) {
|
|
91
|
+
console.error('Installation failed:', error.message);
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
main();
|
|
@@ -65,7 +65,7 @@ async function loadAllCustomToolPlugins() {
|
|
|
65
65
|
const pluginName = folder.name;
|
|
66
66
|
const pluginPath = node_path_1.default.join(pluginsDir, pluginName);
|
|
67
67
|
Logger_1.appLogger.info(`↳ Loading plugin "${pluginName}" from ${pluginPath}`);
|
|
68
|
-
const entryPoint = await getPluginEntryPoint(
|
|
68
|
+
const entryPoint = await getPluginEntryPoint(pluginPath);
|
|
69
69
|
try {
|
|
70
70
|
const mod = await import((0, node_url_1.pathToFileURL)(entryPoint).href);
|
|
71
71
|
if (mod &&
|
|
@@ -86,19 +86,7 @@ async function loadAllCustomToolPlugins() {
|
|
|
86
86
|
Logger_1.appLogger.info(`Loaded ${tools.length} custom tool(s) from plugins.`);
|
|
87
87
|
return tools;
|
|
88
88
|
}
|
|
89
|
-
async function getPluginEntryPoint(
|
|
90
|
-
|
|
91
|
-
let mainFile = defaultMainFileName;
|
|
92
|
-
try {
|
|
93
|
-
const pkgJsonContent = await promises_1.default.readFile(node_path_1.default.join(pluginPath, 'package.json'), 'utf-8');
|
|
94
|
-
const pkgJson = JSON.parse(pkgJsonContent);
|
|
95
|
-
if (pkgJson.main) {
|
|
96
|
-
mainFile = pkgJson.main;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
catch (_e) {
|
|
100
|
-
Logger_1.appLogger.warn(`Plugin "${pluginName}" has no package.json or it's invalid. Falling back to ${defaultMainFileName}`);
|
|
101
|
-
}
|
|
102
|
-
return node_path_1.default.join(pluginPath, mainFile);
|
|
89
|
+
async function getPluginEntryPoint(pluginPath) {
|
|
90
|
+
return node_path_1.default.join(pluginPath, 'index.mjs');
|
|
103
91
|
}
|
|
104
92
|
//# sourceMappingURL=PluginLoader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginLoader.js","sourceRoot":"","sources":["../../../src/managers/PluginLoader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,4DAyDC;AAhFD,gEAAkC;AAClC,0DAA6B;AAC7B,uCAAyC;AAEzC,kDAA+C;AAC/C,4CAA4C;AAE5C,uDAAyC;AAgBlC,KAAK,UAAU,wBAAwB;IAG5C,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,kBAAkB,GAAuB;QAC7C,MAAM,EAAE,UAAU;QAClB,UAAU,EAAE,UAAU;KACvB,CAAC;IACF,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,qBAAS,CAAC,oBAAoB,EAAE,EAAE,SAAS,CAAC,CAAC;IAC1E,kBAAS,CAAC,IAAI,CAAC,aAAa,UAAU,kBAAkB,CAAC,CAAC;IAC1D,IAAI,UAAoB,CAAC;IAEzB,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;QACzD,UAAU,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAChE,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;QAC/B,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACrD,kBAAS,CAAC,IAAI,CAAC,qBAAqB,UAAU,UAAU,UAAU,EAAE,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"PluginLoader.js","sourceRoot":"","sources":["../../../src/managers/PluginLoader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,4DAyDC;AAhFD,gEAAkC;AAClC,0DAA6B;AAC7B,uCAAyC;AAEzC,kDAA+C;AAC/C,4CAA4C;AAE5C,uDAAyC;AAgBlC,KAAK,UAAU,wBAAwB;IAG5C,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,kBAAkB,GAAuB;QAC7C,MAAM,EAAE,UAAU;QAClB,UAAU,EAAE,UAAU;KACvB,CAAC;IACF,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,qBAAS,CAAC,oBAAoB,EAAE,EAAE,SAAS,CAAC,CAAC;IAC1E,kBAAS,CAAC,IAAI,CAAC,aAAa,UAAU,kBAAkB,CAAC,CAAC;IAC1D,IAAI,UAAoB,CAAC;IAEzB,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;QACzD,UAAU,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAChE,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;QAC/B,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACrD,kBAAS,CAAC,IAAI,CAAC,qBAAqB,UAAU,UAAU,UAAU,EAAE,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAEzD,IAAI,CAAC;YACH,MAAM,GAAG,GAAY,MAAM,MAAM,CAAC,IAAA,wBAAa,EAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;YAElE,IACE,GAAG;gBACH,OAAQ,GAA6B,CAAC,eAAe,KAAK,UAAU,EACpE,CAAC;gBACD,MAAM,WAAW,GAAG,MAAO,GAAoB,CAAC,eAAe,CAC7D,kBAAkB,CACnB,CAAC;gBACF,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;gBAC3B,kBAAS,CAAC,IAAI,CACZ,cAAc,WAAW,CAAC,MAAM,yBAAyB,UAAU,IAAI,CACxE,CAAC;gBACF,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBACxB,kBAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,kBAAS,CAAC,KAAK,CACb,WAAW,UAAU,mCAAmC,mBAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EACrF,GAAG,CACJ,CAAC;YACF,+CAA+C;QACjD,CAAC;IACH,CAAC;IAED,kBAAS,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,MAAM,+BAA+B,CAAC,CAAC;IACtE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,UAAkB;IACnD,OAAO,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -65,7 +65,7 @@ async function loadAllCustomToolPlugins() {
|
|
|
65
65
|
const pluginName = folder.name;
|
|
66
66
|
const pluginPath = node_path_1.default.join(pluginsDir, pluginName);
|
|
67
67
|
Logger_1.appLogger.info(`↳ Loading plugin "${pluginName}" from ${pluginPath}`);
|
|
68
|
-
const entryPoint = await getPluginEntryPoint(
|
|
68
|
+
const entryPoint = await getPluginEntryPoint(pluginPath);
|
|
69
69
|
try {
|
|
70
70
|
const mod = await import((0, node_url_1.pathToFileURL)(entryPoint).href);
|
|
71
71
|
if (mod &&
|
|
@@ -86,19 +86,7 @@ async function loadAllCustomToolPlugins() {
|
|
|
86
86
|
Logger_1.appLogger.info(`Loaded ${tools.length} custom tool(s) from plugins.`);
|
|
87
87
|
return tools;
|
|
88
88
|
}
|
|
89
|
-
async function getPluginEntryPoint(
|
|
90
|
-
|
|
91
|
-
let mainFile = defaultMainFileName;
|
|
92
|
-
try {
|
|
93
|
-
const pkgJsonContent = await promises_1.default.readFile(node_path_1.default.join(pluginPath, 'package.json'), 'utf-8');
|
|
94
|
-
const pkgJson = JSON.parse(pkgJsonContent);
|
|
95
|
-
if (pkgJson.main) {
|
|
96
|
-
mainFile = pkgJson.main;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
catch (_e) {
|
|
100
|
-
Logger_1.appLogger.warn(`Plugin "${pluginName}" has no package.json or it's invalid. Falling back to ${defaultMainFileName}`);
|
|
101
|
-
}
|
|
102
|
-
return node_path_1.default.join(pluginPath, mainFile);
|
|
89
|
+
async function getPluginEntryPoint(pluginPath) {
|
|
90
|
+
return node_path_1.default.join(pluginPath, 'index.mjs');
|
|
103
91
|
}
|
|
104
92
|
//# sourceMappingURL=PluginLoader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginLoader.js","sourceRoot":"","sources":["../../src/managers/PluginLoader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,4DAyDC;AAhFD,gEAAkC;AAClC,0DAA6B;AAC7B,uCAAyC;AAEzC,kDAA+C;AAC/C,4CAA4C;AAE5C,uDAAyC;AAgBlC,KAAK,UAAU,wBAAwB;IAG5C,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,kBAAkB,GAAuB;QAC7C,MAAM,EAAE,UAAU;QAClB,UAAU,EAAE,UAAU;KACvB,CAAC;IACF,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,qBAAS,CAAC,oBAAoB,EAAE,EAAE,SAAS,CAAC,CAAC;IAC1E,kBAAS,CAAC,IAAI,CAAC,aAAa,UAAU,kBAAkB,CAAC,CAAC;IAC1D,IAAI,UAAoB,CAAC;IAEzB,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;QACzD,UAAU,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAChE,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;QAC/B,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACrD,kBAAS,CAAC,IAAI,CAAC,qBAAqB,UAAU,UAAU,UAAU,EAAE,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"PluginLoader.js","sourceRoot":"","sources":["../../src/managers/PluginLoader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,4DAyDC;AAhFD,gEAAkC;AAClC,0DAA6B;AAC7B,uCAAyC;AAEzC,kDAA+C;AAC/C,4CAA4C;AAE5C,uDAAyC;AAgBlC,KAAK,UAAU,wBAAwB;IAG5C,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,kBAAkB,GAAuB;QAC7C,MAAM,EAAE,UAAU;QAClB,UAAU,EAAE,UAAU;KACvB,CAAC;IACF,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,qBAAS,CAAC,oBAAoB,EAAE,EAAE,SAAS,CAAC,CAAC;IAC1E,kBAAS,CAAC,IAAI,CAAC,aAAa,UAAU,kBAAkB,CAAC,CAAC;IAC1D,IAAI,UAAoB,CAAC;IAEzB,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;QACzD,UAAU,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAChE,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;QAC/B,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACrD,kBAAS,CAAC,IAAI,CAAC,qBAAqB,UAAU,UAAU,UAAU,EAAE,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAEzD,IAAI,CAAC;YACH,MAAM,GAAG,GAAY,MAAM,MAAM,CAAC,IAAA,wBAAa,EAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;YAElE,IACE,GAAG;gBACH,OAAQ,GAA6B,CAAC,eAAe,KAAK,UAAU,EACpE,CAAC;gBACD,MAAM,WAAW,GAAG,MAAO,GAAoB,CAAC,eAAe,CAC7D,kBAAkB,CACnB,CAAC;gBACF,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;gBAC3B,kBAAS,CAAC,IAAI,CACZ,cAAc,WAAW,CAAC,MAAM,yBAAyB,UAAU,IAAI,CACxE,CAAC;gBACF,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBACxB,kBAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,kBAAS,CAAC,KAAK,CACb,WAAW,UAAU,mCAAmC,mBAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EACrF,GAAG,CACJ,CAAC;YACF,+CAA+C;QACjD,CAAC;IACH,CAAC;IAED,kBAAS,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,MAAM,+BAA+B,CAAC,CAAC;IACtE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,UAAkB;IACnD,OAAO,mBAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAC5C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "donobu",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.30.0",
|
|
4
4
|
"description": "Create browser automations with an LLM agent and replay them as Playwright scripts.",
|
|
5
5
|
"main": "dist/main.js",
|
|
6
6
|
"module": "dist/esm/main.js",
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
},
|
|
13
13
|
"bin": {
|
|
14
14
|
"playwright-json-to-markdown": "./dist/assets/playwright-json-to-markdown.js",
|
|
15
|
-
"playwright-json-to-slack-json": "./dist/assets/playwright-json-to-slack-json.js"
|
|
15
|
+
"playwright-json-to-slack-json": "./dist/assets/playwright-json-to-slack-json.js",
|
|
16
|
+
"install-donobu-plugin": "./dist/assets/install-donobu-plugin.js"
|
|
16
17
|
},
|
|
17
18
|
"scripts": {
|
|
18
19
|
"clean": "rm -rf dist && rm -rf donobu-tool-plugins-for-docker",
|