@vertesia/create-plugin 0.79.0 → 0.80.0-dev-20251118
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 +68 -63
- package/lib/Package.d.ts +2 -2
- package/lib/Package.d.ts.map +1 -1
- package/lib/TemplateInit.d.ts +2 -1
- package/lib/TemplateInit.d.ts.map +1 -1
- package/lib/TemplateInit.js.map +1 -1
- package/lib/ToolTemplateInit.d.ts.map +1 -1
- package/lib/ToolTemplateInit.js +17 -4
- package/lib/ToolTemplateInit.js.map +1 -1
- package/lib/WebTemplateInit.d.ts.map +1 -1
- package/lib/WebTemplateInit.js +0 -9
- package/lib/WebTemplateInit.js.map +1 -1
- package/lib/copy.d.ts +1 -1
- package/lib/copy.d.ts.map +1 -1
- package/lib/copy.js +6 -2
- package/lib/copy.js.map +1 -1
- package/lib/init.d.ts.map +1 -1
- package/lib/init.js +73 -56
- package/lib/init.js.map +1 -1
- package/lib/types.d.ts +12 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +20 -0
- package/lib/types.js.map +1 -0
- package/package.json +48 -36
- package/templates/tool/.env.example +6 -0
- package/templates/tool/.vscode/launch.json +1 -1
- package/templates/tool/README.md +179 -20
- package/templates/tool/gitignore +26 -0
- package/templates/tool/rollup.config.js +30 -0
- package/templates/tool/src/collections/example/icon.svg.ts +6 -0
- package/templates/tool/src/collections/example/index.ts +14 -0
- package/templates/tool/src/collections/example/weather/WeatherTool.ts +32 -0
- package/templates/tool/src/collections/example/weather/manifest.ts +16 -0
- package/templates/tool/src/collections/index.ts +7 -0
- package/templates/tool/src/index.ts +4 -5
- package/templates/tool/src/server.ts +68 -16
- package/templates/tool/tsconfig.json +14 -4
- package/templates/tool/vite.config.js +46 -8
- package/templates/web/README.md +153 -51
- package/templates/web/eslint.config.js +2 -1
- package/templates/web/gitignore +25 -0
- package/templates/web/src/env.ts.tmpl +5 -11
- package/templates/web/vite.config.ts.tmpl +6 -4
- package/templates/tool/src/tools/WeatherTool.ts +0 -25
- package/templates/tool/vercel.json +0 -7
package/README.md
CHANGED
|
@@ -1,100 +1,105 @@
|
|
|
1
|
-
# @vertesia/create-
|
|
1
|
+
# @vertesia/create-plugin
|
|
2
2
|
|
|
3
|
-
This package
|
|
4
|
-
Vertesia agents are used to deploy custom workflows to Vertesia cloud.
|
|
3
|
+
This package scaffolds Vertesia plugin projects. Use it to create either:
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
- **Web Application Plugins**: React-based web applications that extend Vertesia Studio
|
|
6
|
+
- **Agent Tool Server**: Custom agent tools accessible via API endpoints
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
1. docker (with buildx support) installed locally.
|
|
10
|
-
2. vertesia CLI application. The CLI will be automatically installed when initializing the agent project if you didn't installed it previously.
|
|
8
|
+
Visit <https://vertesiahq.com> for more information about Vertesia.
|
|
11
9
|
|
|
12
|
-
##
|
|
10
|
+
## What Can You Create?
|
|
13
11
|
|
|
14
|
-
|
|
12
|
+
### Web Application Plugin (UI Extensions)
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
npm init @vertesia/agent
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
Follow the instructions on screen. You need to define an organization and a name for your agent. The organization must be unique inside Vertesia and is usually the name of your Vertesia organization account. The agent name is identifying the project in your organization.
|
|
14
|
+
Vertesia web plugins are React-based web application that can be embedded into the Vertesia Studio interface. They allow you to create custom user experiences focused on specific use cases and business processes, while seamlessly leveraging all the vertesia platform features.
|
|
21
15
|
|
|
22
|
-
|
|
16
|
+
### Agent Tool Server
|
|
23
17
|
|
|
24
|
-
|
|
25
|
-
These generated files are containing a "Hello world!" workflow and activity as an example that you should remove and export your own definitions.
|
|
18
|
+
An Agent Tool Server extends the capabilities of AI agents in Vertesia. It allows you to:
|
|
26
19
|
|
|
20
|
+
- Create custom tools that agents can use
|
|
21
|
+
- Integrate with external APIs and services
|
|
22
|
+
- Organize tools into logical collections
|
|
23
|
+
- Expose tools via REST API endpoints
|
|
24
|
+
- Support authentication and context-aware execution
|
|
27
25
|
|
|
28
|
-
##
|
|
26
|
+
## Prerequisites
|
|
29
27
|
|
|
30
|
-
|
|
28
|
+
Before creating a plugin project, you need:
|
|
31
29
|
|
|
32
|
-
|
|
30
|
+
- Node.js and pnpm (or npm)
|
|
31
|
+
- Vertesia CLI
|
|
32
|
+
- An application manifest declared in Vertesia
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
### Declaring Your Web Application Plugin in Vertesia
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
2. Using `vertesia agent run` from your project root. This will run the agent worker in side the docker image you previously built. See the [Build](build-the-agent-docker-image) section.
|
|
36
|
+
Before you can develop and integrate your web application plugin with Vertesia, you must declare an application manifest in the Vertesia platform using the Vertesia CLI.
|
|
38
37
|
|
|
39
|
-
|
|
38
|
+
#### Install the Vertesia CLI
|
|
40
39
|
|
|
41
|
-
|
|
40
|
+
If not already done, install the Vertesia CLI and create a profile:
|
|
42
41
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
```bash
|
|
43
|
+
npm install -g @vertesia/cli
|
|
44
|
+
vertesia profiles create
|
|
45
|
+
```
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
### Create the App Manifest
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
The agent should be packaged as a docker image and then published to the Vertesia cloud.
|
|
49
|
+
Create the app manifest using the Vertesia CLI:
|
|
51
50
|
|
|
52
|
-
|
|
51
|
+
```bash
|
|
52
|
+
vertesia apps create --manifest '{
|
|
53
|
+
"name": "my-app",
|
|
54
|
+
"title": "My App",
|
|
55
|
+
"description": "A sample app",
|
|
56
|
+
"publisher": "your-org",
|
|
57
|
+
"private": true,
|
|
58
|
+
"status": "beta"
|
|
59
|
+
}' --install
|
|
60
|
+
```
|
|
53
61
|
|
|
54
|
-
|
|
62
|
+
The `--install` flag will automatically install the app and grant permissions to the creator.
|
|
55
63
|
|
|
56
|
-
|
|
57
|
-
This image is only useable to test locally. You cannot push it to Vertesia.
|
|
64
|
+
**Important**: The `name` field from your manifest (e.g., `my-app`) is what you'll use as your plugin name in the next step.
|
|
58
65
|
|
|
59
|
-
|
|
66
|
+
## Initialize a Plugin Project
|
|
60
67
|
|
|
61
|
-
|
|
68
|
+
Run the initialization command:
|
|
62
69
|
|
|
63
|
-
```
|
|
64
|
-
|
|
70
|
+
```bash
|
|
71
|
+
npm init @vertesia/plugin
|
|
72
|
+
# or
|
|
73
|
+
pnpm create @vertesia/plugin
|
|
65
74
|
```
|
|
66
75
|
|
|
67
|
-
|
|
68
|
-
Examples: `1.0.0`, `1.0.0-rc1`.
|
|
76
|
+
You will be prompted to choose a template and provide configuration:
|
|
69
77
|
|
|
70
|
-
|
|
78
|
+
### Prompts
|
|
71
79
|
|
|
72
|
-
|
|
80
|
+
1. **Template type**: Choose between:
|
|
81
|
+
- **Web application plugin**: For UI extensions
|
|
82
|
+
- **Agent tool server**: For custom agent tools
|
|
83
|
+
2. **Package manager**: Choose between npm or pnpm
|
|
84
|
+
3. **Plugin name**: Use kebab-case (e.g., my-plugin or my-tools)
|
|
85
|
+
4. **Plugin version**: Semantic version (e.g., 1.0.0)
|
|
86
|
+
5. **Description**: Optional description of your plugin
|
|
73
87
|
|
|
74
|
-
|
|
88
|
+
### Web Application Plugin Specific
|
|
75
89
|
|
|
76
|
-
|
|
77
|
-
vertesia agent publish <version>
|
|
78
|
-
```
|
|
90
|
+
If you select the **Web application plugin** template, you'll also be asked:
|
|
79
91
|
|
|
80
|
-
|
|
92
|
+
1. **Isolation strategy**:
|
|
93
|
+
- **Shadow DOM**: Fully isolated plugin using Shadow DOM (recommended)
|
|
94
|
+
- **CSS-only isolation**: Lighter isolation using CSS scope, but may have style conflicts
|
|
81
95
|
|
|
82
|
-
|
|
96
|
+
## Working with Plugins
|
|
83
97
|
|
|
84
|
-
|
|
85
|
-
vertesia agent publish <version> --push-only
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
The you can deploy an agent that you previously uploaded to Vertesia by using the command:
|
|
89
|
-
|
|
90
|
-
```
|
|
91
|
-
vertesia agent publish <version> --deploy-only
|
|
92
|
-
```
|
|
98
|
+
After creating your project, see the README file in the generated project for comprehensive development instructions.
|
|
93
99
|
|
|
94
|
-
##
|
|
100
|
+
## Support
|
|
95
101
|
|
|
96
|
-
|
|
102
|
+
For issues, questions, or feature requests:
|
|
97
103
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
```
|
|
104
|
+
- [GitHub Issues](https://github.com/vertesia/composableai/issues)
|
|
105
|
+
- [Documentation](https://docs.vertesiahq.com/)
|
package/lib/Package.d.ts
CHANGED
package/lib/Package.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Package.d.ts","sourceRoot":"","sources":["../src/Package.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"Package.d.ts","sourceRoot":"","sources":["../src/Package.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAC;KACxD,CAAC;CACL;AAGD,qBAAa,OAAO;IACG,IAAI,EAAE,WAAW;IAAS,IAAI,CAAC,EAAE,MAAM;gBAAvC,IAAI,EAAE,WAAW,EAAS,IAAI,CAAC,EAAE,MAAM,YAAA;IAE1D,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM;IAK5B,IAAI,IAAI,IAIO,MAAM,CAFpB;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAEpB;IAED,IAAI,OAAO,IAIU,MAAM,CAF1B;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,EAE1B;IAED,IAAI,WAAW,IAIc,MAAM,CAFlC;IAED,IAAI,WAAW,CAAC,WAAW,EAAE,MAAM,EAElC;IAED,IAAI,OAAO,IAKU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAF1C;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAE1C;IAED,IAAI;IAMJ,MAAM,CAAC,IAAI,EAAE,MAAM;IAKnB,MAAM,IAAI,WAAW;CAGxB"}
|
package/lib/TemplateInit.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { PackageJson } from "./Package.js";
|
|
2
|
+
import { TemplateType } from "./types.js";
|
|
2
3
|
export interface UserOptions {
|
|
3
4
|
pm: "npm" | "pnpm";
|
|
4
5
|
plugin_name: string;
|
|
5
6
|
plugin_version: string;
|
|
6
7
|
plugin_description?: string;
|
|
7
8
|
isolation: "shadow" | "css";
|
|
8
|
-
template:
|
|
9
|
+
template: TemplateType;
|
|
9
10
|
}
|
|
10
11
|
export declare abstract class TemplateInit {
|
|
11
12
|
options: UserOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateInit.d.ts","sourceRoot":"","sources":["../src/TemplateInit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"TemplateInit.d.ts","sourceRoot":"","sources":["../src/TemplateInit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,KAAK,GAAG,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC5B,QAAQ,EAAE,YAAY,CAAC;CAC1B;AAED,8BAAsB,YAAY;IAEX,OAAO,EAAE,WAAW;IADvC,UAAU,EAAE,UAAU,CAAC;gBACJ,OAAO,EAAE,WAAW;IAGvC,QAAQ,CAAC,cAAc,IAAI,WAAW;IAEtC,QAAQ,CAAC,kBAAkB,IAAI,MAAM,EAAE;IAEvC,QAAQ,CAAC,sBAAsB,IAAI,MAAM,EAAE;IAE3C,QAAQ,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAEvC,WAAW;CAMd;AAED,qBAAa,UAAU;IAIA,KAAK,EAAE,MAAM;IAHhC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;gBACG,KAAK,EAAE,MAAM;IAchC,IAAI,KAAK,WAKR;IACD,IAAI,UAAU,WAEb;CACJ"}
|
package/lib/TemplateInit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateInit.js","sourceRoot":"","sources":["../src/TemplateInit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"TemplateInit.js","sourceRoot":"","sources":["../src/TemplateInit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAavE,MAAM,OAAgB,YAAY;IAEX;IADnB,UAAU,CAAa;IACvB,YAAmB,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;QACnC,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,CAAC;IASD,WAAW;QACP,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAClD,sBAAsB,CAAC,EAAE,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAC9D,CAAC;CACJ;AAED,MAAM,OAAO,UAAU;IAIA;IAHnB,KAAK,CAAU;IACf,IAAI,CAAS;IACb,MAAM,CAAU;IAChB,YAAmB,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;QAC5B,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;gBACb,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YAC3C,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QAC1B,CAAC;IACL,CAAC;IACD,IAAI,KAAK;QACL,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3G,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnG,CAAC;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolTemplateInit.d.ts","sourceRoot":"","sources":["../src/ToolTemplateInit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG9D,qBAAa,gBAAiB,SAAQ,YAAY;gBAClC,OAAO,EAAE,WAAW;IAIhC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAM9B,cAAc,IAAI,WAAW;
|
|
1
|
+
{"version":3,"file":"ToolTemplateInit.d.ts","sourceRoot":"","sources":["../src/ToolTemplateInit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG9D,qBAAa,gBAAiB,SAAQ,YAAY;gBAClC,OAAO,EAAE,WAAW;IAIhC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAM9B,cAAc,IAAI,WAAW;IAsB7B,kBAAkB,IAAI,MAAM,EAAE;IAiB9B,sBAAsB,IAAI,MAAM,EAAE;CAYrC"}
|
package/lib/ToolTemplateInit.js
CHANGED
|
@@ -19,26 +19,39 @@ export class ToolTemplateInit extends TemplateInit {
|
|
|
19
19
|
"lib"
|
|
20
20
|
],
|
|
21
21
|
scripts: {
|
|
22
|
-
"dev": "vite",
|
|
23
|
-
"build": "
|
|
22
|
+
"dev": "vite --port 5174",
|
|
23
|
+
"build": "vite build && pnpm exec rollup -c",
|
|
24
|
+
"test": "vitest",
|
|
25
|
+
"test:ui": "vitest --ui",
|
|
26
|
+
"test:coverage": "vitest --coverage",
|
|
24
27
|
}
|
|
25
28
|
};
|
|
26
29
|
}
|
|
27
30
|
getDevDependencies() {
|
|
28
31
|
return [
|
|
29
32
|
"@hono/vite-dev-server",
|
|
33
|
+
"@rollup/plugin-commonjs",
|
|
34
|
+
"@rollup/plugin-json",
|
|
35
|
+
"@rollup/plugin-node-resolve",
|
|
30
36
|
"@types/node",
|
|
37
|
+
"@vitest/coverage-v8",
|
|
31
38
|
"esbuild",
|
|
39
|
+
"rollup",
|
|
40
|
+
"rollup-plugin-terser",
|
|
32
41
|
"typescript",
|
|
33
42
|
"vite",
|
|
43
|
+
"vitest",
|
|
34
44
|
];
|
|
35
45
|
}
|
|
36
46
|
getRuntimeDependencies() {
|
|
37
47
|
return [
|
|
38
|
-
"@
|
|
48
|
+
"@hono/node-server",
|
|
39
49
|
"@vertesia/client",
|
|
40
50
|
"@vertesia/common",
|
|
41
|
-
"
|
|
51
|
+
"@vertesia/tools-sdk",
|
|
52
|
+
"dotenv",
|
|
53
|
+
"hono",
|
|
54
|
+
"jose"
|
|
42
55
|
];
|
|
43
56
|
}
|
|
44
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolTemplateInit.js","sourceRoot":"","sources":["../src/ToolTemplateInit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,mBAAmB,CAAC;AAG9D,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAC9C,YAAY,OAAoB;QAC5B,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAED,OAAO;QACH,OAAO,EAEN,CAAA;IACL,CAAC;IAED,cAAc;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,OAAO;YACH,IAAI,EAAE,MAAM,CAAC,WAAW;YACxB,OAAO,EAAE,MAAM,CAAC,cAAc,IAAI,OAAO;YACzC,WAAW,EAAE,MAAM,CAAC,kBAAkB,IAAI,EAAE;YAC5C,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,sBAAsB;YAC7B,KAAK,EAAE;gBACH,KAAK;aACR;YACD,OAAO,EAAE;gBACL,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ToolTemplateInit.js","sourceRoot":"","sources":["../src/ToolTemplateInit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,mBAAmB,CAAC;AAG9D,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAC9C,YAAY,OAAoB;QAC5B,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAED,OAAO;QACH,OAAO,EAEN,CAAA;IACL,CAAC;IAED,cAAc;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,OAAO;YACH,IAAI,EAAE,MAAM,CAAC,WAAW;YACxB,OAAO,EAAE,MAAM,CAAC,cAAc,IAAI,OAAO;YACzC,WAAW,EAAE,MAAM,CAAC,kBAAkB,IAAI,EAAE;YAC5C,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,sBAAsB;YAC7B,KAAK,EAAE;gBACH,KAAK;aACR;YACD,OAAO,EAAE;gBACL,KAAK,EAAE,kBAAkB;gBACzB,OAAO,EAAE,mCAAmC;gBAC5C,MAAM,EAAE,QAAQ;gBAChB,SAAS,EAAE,aAAa;gBACxB,eAAe,EAAE,mBAAmB;aACvC;SACJ,CAAC;IACN,CAAC;IAED,kBAAkB;QACd,OAAO;YACH,uBAAuB;YACvB,yBAAyB;YACzB,qBAAqB;YACrB,6BAA6B;YAC7B,aAAa;YACb,qBAAqB;YACrB,SAAS;YACT,QAAQ;YACR,sBAAsB;YACtB,YAAY;YACZ,MAAM;YACN,QAAQ;SACX,CAAA;IACL,CAAC;IAED,sBAAsB;QAClB,OAAO;YACH,mBAAmB;YACnB,kBAAkB;YAClB,kBAAkB;YAClB,qBAAqB;YACrB,QAAQ;YACR,MAAM;YACN,MAAM;SACT,CAAA;IACL,CAAC;CAEJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebTemplateInit.d.ts","sourceRoot":"","sources":["../src/WebTemplateInit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG9D,qBAAa,eAAgB,SAAQ,YAAY;gBACjC,OAAO,EAAE,WAAW;IAIhC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAQ9B,cAAc,IAAI,WAAW;
|
|
1
|
+
{"version":3,"file":"WebTemplateInit.d.ts","sourceRoot":"","sources":["../src/WebTemplateInit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAG9D,qBAAa,eAAgB,SAAQ,YAAY;gBACjC,OAAO,EAAE,WAAW;IAIhC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAQ9B,cAAc,IAAI,WAAW;IAyB7B,kBAAkB,IAAI,MAAM,EAAE;IAyB9B,sBAAsB,IAAI,MAAM,EAAE;CAOrC"}
|
package/lib/WebTemplateInit.js
CHANGED
|
@@ -17,9 +17,6 @@ export class WebTemplateInit extends TemplateInit {
|
|
|
17
17
|
version: answer.plugin_version || '1.0.0',
|
|
18
18
|
description: answer.plugin_description || '',
|
|
19
19
|
type: 'module',
|
|
20
|
-
main: `dist/${answer.plugin_name}.js`,
|
|
21
|
-
module: `dist/${answer.plugin_name}.js`,
|
|
22
|
-
types: "dist/index.d.ts",
|
|
23
20
|
files: [
|
|
24
21
|
"dist"
|
|
25
22
|
],
|
|
@@ -35,12 +32,6 @@ export class WebTemplateInit extends TemplateInit {
|
|
|
35
32
|
"react": "^19.0.0",
|
|
36
33
|
"react-dom": "^19.0.0"
|
|
37
34
|
},
|
|
38
|
-
plugin: {
|
|
39
|
-
title: this.pluginName.title,
|
|
40
|
-
publisher: this.pluginName.scope || "vertesia",
|
|
41
|
-
external: false,
|
|
42
|
-
status: "beta",
|
|
43
|
-
}
|
|
44
35
|
};
|
|
45
36
|
}
|
|
46
37
|
getDevDependencies() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebTemplateInit.js","sourceRoot":"","sources":["../src/WebTemplateInit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,mBAAmB,CAAC;AAG9D,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC7C,YAAY,OAAoB;QAC5B,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAED,OAAO;QACH,OAAO;YACH,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;YACnC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,QAAQ;YACtD,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK;SAC9C,CAAA;IACL,CAAC;IAED,cAAc;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,OAAO;YACH,IAAI,EAAE,MAAM,CAAC,WAAW;YACxB,OAAO,EAAE,MAAM,CAAC,cAAc,IAAI,OAAO;YACzC,WAAW,EAAE,MAAM,CAAC,kBAAkB,IAAI,EAAE;YAC5C,IAAI,EAAE,QAAQ;YACd,
|
|
1
|
+
{"version":3,"file":"WebTemplateInit.js","sourceRoot":"","sources":["../src/WebTemplateInit.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAe,MAAM,mBAAmB,CAAC;AAG9D,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC7C,YAAY,OAAoB;QAC5B,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;IAED,OAAO;QACH,OAAO;YACH,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;YACnC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,QAAQ;YACtD,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK;SAC9C,CAAA;IACL,CAAC;IAED,cAAc;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,OAAO;YACH,IAAI,EAAE,MAAM,CAAC,WAAW;YACxB,OAAO,EAAE,MAAM,CAAC,cAAc,IAAI,OAAO;YACzC,WAAW,EAAE,MAAM,CAAC,kBAAkB,IAAI,EAAE;YAC5C,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE;gBACH,MAAM;aACT;YACD,OAAO,EAAE;gBACL,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,uBAAuB;gBACpC,WAAW,EAAE,uBAAuB;gBACpC,OAAO,EAAE,gDAAgD;gBACzD,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,cAAc;aAC5B;YACD,gBAAgB,EAAE;gBACd,OAAO,EAAE,SAAS;gBAClB,WAAW,EAAE,SAAS;aACzB;SACJ,CAAC;IACN,CAAC;IAED,kBAAkB;QACd,OAAO;YACH,YAAY;YACZ,0BAA0B;YAC1B,0BAA0B;YAC1B,sBAAsB;YACtB,mBAAmB;YACnB,oBAAoB;YACpB,aAAa;YACb,cAAc;YACd,kBAAkB;YAClB,QAAQ;YACR,2BAA2B;YAC3B,6BAA6B;YAC7B,SAAS;YACT,OAAO;YACP,WAAW;YACX,aAAa;YACb,YAAY;YACZ,mBAAmB;YACnB,MAAM;YACN,0BAA0B;SAC7B,CAAA;IACL,CAAC;IAED,sBAAsB;QAClB,OAAO;YACH,kBAAkB;YAClB,cAAc;SACjB,CAAA;IACL,CAAC;CAEJ"}
|
package/lib/copy.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @param sourceDir - The path to the source directory.
|
|
5
5
|
* @param targetDir - The path to the target directory.
|
|
6
|
-
* @param templateSuffix - Optional suffix to
|
|
6
|
+
* @param templateSuffix - Optional suffix to remove from file name after copying. Ex: .template, .tmpl
|
|
7
7
|
*/
|
|
8
8
|
export declare function copyTree(sourceDir: string, targetDir: string, template?: {
|
|
9
9
|
suffix?: string;
|
package/lib/copy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../src/copy.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"copy.d.ts","sourceRoot":"","sources":["../src/copy.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,CAsChB"}
|
package/lib/copy.js
CHANGED
|
@@ -6,7 +6,7 @@ import { processVarsInFile } from "./template.js";
|
|
|
6
6
|
*
|
|
7
7
|
* @param sourceDir - The path to the source directory.
|
|
8
8
|
* @param targetDir - The path to the target directory.
|
|
9
|
-
* @param templateSuffix - Optional suffix to
|
|
9
|
+
* @param templateSuffix - Optional suffix to remove from file name after copying. Ex: .template, .tmpl
|
|
10
10
|
*/
|
|
11
11
|
export async function copyTree(sourceDir, targetDir, template) {
|
|
12
12
|
// Optimize by using a queue to avoid deep recursion and potential stack overflows
|
|
@@ -19,7 +19,11 @@ export async function copyTree(sourceDir, targetDir, template) {
|
|
|
19
19
|
const items = await fs.readdir(source, { withFileTypes: true });
|
|
20
20
|
for (const item of items) {
|
|
21
21
|
const isTemplate = template?.suffix ? item.name.endsWith(template.suffix) : false;
|
|
22
|
-
|
|
22
|
+
let targetName = isTemplate ? item.name.slice(0, -template.suffix.length) : item.name;
|
|
23
|
+
// Rename gitignore to .gitignore (npm excludes .gitignore from published packages)
|
|
24
|
+
if (targetName === 'gitignore') {
|
|
25
|
+
targetName = '.gitignore';
|
|
26
|
+
}
|
|
23
27
|
const sourcePath = join(source, item.name);
|
|
24
28
|
const targetPath = join(target, targetName);
|
|
25
29
|
console.log('Generating', targetPath);
|
package/lib/copy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copy.js","sourceRoot":"","sources":["../src/copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,SAAiB,EAAE,SAAiB,EAAE,QAGpE;IACG,kFAAkF;IAClF,MAAM,KAAK,GAAyC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAE/F,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QAExC,qCAAqC;QACrC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5C,yCAAyC;QACzC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAClF,
|
|
1
|
+
{"version":3,"file":"copy.js","sourceRoot":"","sources":["../src/copy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,SAAiB,EAAE,SAAiB,EAAE,QAGpE;IACG,kFAAkF;IAClF,MAAM,KAAK,GAAyC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAE/F,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,GAAG,EAAG,CAAC;QAExC,qCAAqC;QACrC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5C,yCAAyC;QACzC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAClF,IAAI,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAS,CAAC,MAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACxF,mFAAmF;YACnF,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;gBAC7B,UAAU,GAAG,YAAY,CAAC;YAC9B,CAAC;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAE5C,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAEtC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACrB,oCAAoC;gBACpC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;YAC3D,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;gBAChD,6BAA6B;gBAC7B,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBAC1C,IAAI,UAAU,EAAE,CAAC;oBACb,iCAAiC;oBACjC,iBAAiB,CAAC,UAAU,EAAE,QAAS,CAAC,OAAO,CAAC,CAAC;gBACrD,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC"}
|
package/lib/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAcA,wBAAsB,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAcA,wBAAsB,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,iBAkHtD"}
|
package/lib/init.js
CHANGED
|
@@ -1,78 +1,95 @@
|
|
|
1
|
-
import enquirer from
|
|
2
|
-
import { mkdirSync } from
|
|
3
|
-
import { join, resolve } from
|
|
4
|
-
import { chdir } from
|
|
5
|
-
import { fileURLToPath } from
|
|
6
|
-
import { copyTree } from
|
|
7
|
-
import { hasBin } from
|
|
8
|
-
import { Package } from
|
|
9
|
-
|
|
10
|
-
import { WebTemplateInit } from
|
|
1
|
+
import enquirer from 'enquirer';
|
|
2
|
+
import { mkdirSync } from 'node:fs';
|
|
3
|
+
import { join, resolve } from 'node:path';
|
|
4
|
+
import { chdir } from 'node:process';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { copyTree } from './copy.js';
|
|
7
|
+
import { hasBin } from './hasBin.js';
|
|
8
|
+
import { Package } from './Package.js';
|
|
9
|
+
import { ToolTemplateInit } from './ToolTemplateInit.js';
|
|
10
|
+
import { WebTemplateInit } from './WebTemplateInit.js';
|
|
11
|
+
import { TemplateType, getTemplateDisplayName } from './types.js';
|
|
11
12
|
const { prompt } = enquirer;
|
|
12
13
|
export async function init(dirName) {
|
|
13
|
-
let initialPm =
|
|
14
|
+
let initialPm = 'npm';
|
|
14
15
|
const currentPmPath = process.env.npm_execpath;
|
|
15
16
|
if (!currentPmPath) {
|
|
16
|
-
initialPm = await hasBin(
|
|
17
|
+
initialPm = (await hasBin('pnpm')) ? 'pnpm' : 'npm';
|
|
17
18
|
}
|
|
18
|
-
else if (currentPmPath.endsWith(
|
|
19
|
-
initialPm =
|
|
19
|
+
else if (currentPmPath.endsWith('pnpm')) {
|
|
20
|
+
initialPm = 'pnpm';
|
|
20
21
|
}
|
|
21
|
-
else if (currentPmPath.endsWith(
|
|
22
|
-
initialPm =
|
|
22
|
+
else if (currentPmPath.endsWith('yarn')) {
|
|
23
|
+
initialPm = 'yarn';
|
|
23
24
|
}
|
|
24
|
-
const pms = [
|
|
25
|
-
const answer = await prompt([
|
|
25
|
+
const pms = ['npm', 'pnpm'];
|
|
26
|
+
const answer = await prompt([
|
|
27
|
+
{
|
|
28
|
+
name: 'template',
|
|
29
|
+
type: 'select',
|
|
30
|
+
message: 'Template to use',
|
|
31
|
+
initial: 0,
|
|
32
|
+
choices: [
|
|
33
|
+
{ message: getTemplateDisplayName(TemplateType.WEB), name: TemplateType.WEB },
|
|
34
|
+
{ message: getTemplateDisplayName(TemplateType.TOOL), name: TemplateType.TOOL },
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
{
|
|
26
38
|
name: 'pm',
|
|
27
39
|
type: 'select',
|
|
28
|
-
message:
|
|
40
|
+
message: 'Which package manager to use?',
|
|
29
41
|
initial: pms.indexOf(initialPm),
|
|
30
42
|
choices: pms,
|
|
31
|
-
},
|
|
43
|
+
},
|
|
44
|
+
{
|
|
32
45
|
name: 'plugin_name',
|
|
33
46
|
type: 'input',
|
|
34
|
-
message:
|
|
47
|
+
message: 'Plugin name (use kebab case, e.g. my-plugin)',
|
|
35
48
|
required: true,
|
|
36
49
|
validate: (input) => /[a-zA-Z_](-[a-zA-Z_0-9]+)*/g.test(input),
|
|
37
|
-
},
|
|
50
|
+
},
|
|
51
|
+
{
|
|
38
52
|
name: 'plugin_version',
|
|
39
53
|
type: 'input',
|
|
40
|
-
message:
|
|
54
|
+
message: 'PLugin version',
|
|
41
55
|
initial: '1.0.0',
|
|
42
56
|
required: true,
|
|
43
57
|
validate: (input) => /[\d]\.[\d].[\d](-[a-zA-Z0-9_]+)?/g.test(input),
|
|
44
|
-
},
|
|
58
|
+
},
|
|
59
|
+
{
|
|
45
60
|
name: 'plugin_description',
|
|
46
61
|
type: 'input',
|
|
47
62
|
required: false,
|
|
48
|
-
message:
|
|
63
|
+
message: 'Package description',
|
|
49
64
|
initial: '',
|
|
50
65
|
},
|
|
51
|
-
{
|
|
52
|
-
name: "isolation",
|
|
53
|
-
type: "select",
|
|
54
|
-
message: "Isolation strategy",
|
|
55
|
-
initial: 0,
|
|
56
|
-
choices: [
|
|
57
|
-
{ message: "Shadow DOM", name: "shadow", hint: "Shadow DOM will be used to fully isolate the plugin." },
|
|
58
|
-
{ message: "CSS-only isolation", name: "css", hint: "Injects Tailwind utilities into host DOM; not fully isolated. Lighter but may generate conflicts" }
|
|
59
|
-
]
|
|
60
|
-
}
|
|
61
|
-
// {
|
|
62
|
-
// name: 'template',
|
|
63
|
-
// type: 'select',
|
|
64
|
-
// message: "Template to use",
|
|
65
|
-
// initial: 0,
|
|
66
|
-
// choices: [
|
|
67
|
-
// { message: 'Web plugin', name: 'web' },
|
|
68
|
-
// { message: 'Agent tool', name: 'tool' },
|
|
69
|
-
// ]
|
|
70
|
-
// },
|
|
71
66
|
]);
|
|
72
|
-
//
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
67
|
+
// Add isolation question only for web template
|
|
68
|
+
if (answer.template === TemplateType.WEB) {
|
|
69
|
+
const isolationAnswer = await prompt([
|
|
70
|
+
{
|
|
71
|
+
name: 'isolation',
|
|
72
|
+
type: 'select',
|
|
73
|
+
message: 'Isolation strategy',
|
|
74
|
+
initial: 0,
|
|
75
|
+
choices: [
|
|
76
|
+
{
|
|
77
|
+
message: 'Shadow DOM',
|
|
78
|
+
name: 'shadow',
|
|
79
|
+
hint: 'Shadow DOM will be used to fully isolate the plugin.',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
message: 'CSS-only isolation',
|
|
83
|
+
name: 'css',
|
|
84
|
+
hint: 'Injects Tailwind utilities into host DOM; not fully isolated. Lighter but may generate conflicts',
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
},
|
|
88
|
+
]);
|
|
89
|
+
answer.isolation = isolationAnswer.isolation;
|
|
90
|
+
}
|
|
91
|
+
const templateName = answer.template;
|
|
92
|
+
const templateInit = templateName === TemplateType.WEB ? new WebTemplateInit(answer) : new ToolTemplateInit(answer);
|
|
76
93
|
const pluginName = templateInit.pluginName;
|
|
77
94
|
let dir;
|
|
78
95
|
if (!dirName) {
|
|
@@ -86,20 +103,20 @@ export async function init(dirName) {
|
|
|
86
103
|
chdir(dir);
|
|
87
104
|
const templateProps = {
|
|
88
105
|
suffix: '.tmpl',
|
|
89
|
-
context: templateInit.getVars()
|
|
106
|
+
context: templateInit.getVars(),
|
|
90
107
|
};
|
|
91
108
|
// copy template to current directory and process template files
|
|
92
109
|
const templateDir = resolve(fileURLToPath(import.meta.url), '../../templates');
|
|
93
|
-
if (templateName ===
|
|
94
|
-
await copyTree(join(templateDir,
|
|
110
|
+
if (templateName === TemplateType.WEB) {
|
|
111
|
+
await copyTree(join(templateDir, TemplateType.WEB), dir, templateProps);
|
|
95
112
|
}
|
|
96
|
-
else if (
|
|
97
|
-
await copyTree(join(templateDir,
|
|
113
|
+
else if (templateName === TemplateType.TOOL) {
|
|
114
|
+
await copyTree(join(templateDir, TemplateType.TOOL), dir, templateProps);
|
|
98
115
|
}
|
|
99
116
|
else {
|
|
100
|
-
throw new Error(
|
|
117
|
+
throw new Error(`Invalid template type: ${templateName}`);
|
|
101
118
|
}
|
|
102
|
-
console.log(
|
|
119
|
+
console.log('Generating package.json');
|
|
103
120
|
const pkg = new Package(templateInit.getPackageJson());
|
|
104
121
|
pkg.saveTo(`${dir}/package.json`);
|
|
105
122
|
templateInit.installDeps();
|
package/lib/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
|
package/lib/types.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Template types available for plugin creation
|
|
3
|
+
*/
|
|
4
|
+
export declare enum TemplateType {
|
|
5
|
+
WEB = "web",
|
|
6
|
+
TOOL = "tool"
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Get display name for template type
|
|
10
|
+
*/
|
|
11
|
+
export declare function getTemplateDisplayName(type: TemplateType): string;
|
|
12
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,YAAY;IACpB,GAAG,QAAQ;IACX,IAAI,SAAS;CAChB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAOjE"}
|
package/lib/types.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Template types available for plugin creation
|
|
3
|
+
*/
|
|
4
|
+
export var TemplateType;
|
|
5
|
+
(function (TemplateType) {
|
|
6
|
+
TemplateType["WEB"] = "web";
|
|
7
|
+
TemplateType["TOOL"] = "tool";
|
|
8
|
+
})(TemplateType || (TemplateType = {}));
|
|
9
|
+
/**
|
|
10
|
+
* Get display name for template type
|
|
11
|
+
*/
|
|
12
|
+
export function getTemplateDisplayName(type) {
|
|
13
|
+
switch (type) {
|
|
14
|
+
case TemplateType.WEB:
|
|
15
|
+
return 'Web Application Plugin';
|
|
16
|
+
case TemplateType.TOOL:
|
|
17
|
+
return 'Agent Tool Server';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=types.js.map
|
package/lib/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,YAGX;AAHD,WAAY,YAAY;IACpB,2BAAW,CAAA;IACX,6BAAa,CAAA;AACjB,CAAC,EAHW,YAAY,KAAZ,YAAY,QAGvB;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAkB;IACrD,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,YAAY,CAAC,GAAG;YACjB,OAAO,wBAAwB,CAAC;QACpC,KAAK,YAAY,CAAC,IAAI;YAClB,OAAO,mBAAmB,CAAC;IACnC,CAAC;AACL,CAAC"}
|