@trikhub/cli 0.2.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/LICENSE +21 -0
- package/README.md +389 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +105 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/info.d.ts +11 -0
- package/dist/commands/info.d.ts.map +1 -0
- package/dist/commands/info.js +101 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/install.d.ts +17 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +358 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/list.d.ts +11 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +96 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/login.d.ts +19 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +154 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/publish.d.ts +13 -0
- package/dist/commands/publish.d.ts.map +1 -0
- package/dist/commands/publish.js +285 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/search.d.ts +12 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +60 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/sync.d.ts +19 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +193 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/uninstall.d.ts +11 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +153 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/upgrade.d.ts +15 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +144 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/config.d.ts +79 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +202 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/registry.d.ts +90 -0
- package/dist/lib/registry.d.ts.map +1 -0
- package/dist/lib/registry.js +294 -0
- package/dist/lib/registry.js.map +1 -0
- package/dist/lib/storage.d.ts +82 -0
- package/dist/lib/storage.d.ts.map +1 -0
- package/dist/lib/storage.js +177 -0
- package/dist/lib/storage.js.map +1 -0
- package/dist/lib/validator.d.ts +24 -0
- package/dist/lib/validator.d.ts.map +1 -0
- package/dist/lib/validator.js +181 -0
- package/dist/lib/validator.js.map +1 -0
- package/dist/types.d.ts +187 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +36 -0
- package/dist/types.js.map +1 -0
- package/package.json +66 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Muffles
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
# TrikHub CLI
|
|
2
|
+
|
|
3
|
+
The official command-line tool for [TrikHub](https://trikhub.com) - install and manage AI skills (triks) for your applications.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @trikhub/cli
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# Search for triks
|
|
15
|
+
trik search article
|
|
16
|
+
|
|
17
|
+
# Install a trik
|
|
18
|
+
trik install @acme/article-search
|
|
19
|
+
|
|
20
|
+
# List installed triks
|
|
21
|
+
trik list
|
|
22
|
+
|
|
23
|
+
# Get trik info
|
|
24
|
+
trik info @acme/article-search
|
|
25
|
+
|
|
26
|
+
# Upgrade a trik
|
|
27
|
+
trik upgrade @acme/article-search
|
|
28
|
+
|
|
29
|
+
# Uninstall a trik
|
|
30
|
+
trik uninstall @acme/article-search
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Commands
|
|
34
|
+
|
|
35
|
+
### `trik install <name>`
|
|
36
|
+
|
|
37
|
+
Install a trik from the registry.
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Install latest version
|
|
41
|
+
trik install @scope/trik-name
|
|
42
|
+
|
|
43
|
+
# Install specific version
|
|
44
|
+
trik install @scope/trik-name@1.2.3
|
|
45
|
+
|
|
46
|
+
# Or use --version flag
|
|
47
|
+
trik install @scope/trik-name --version 1.2.3
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
The install process:
|
|
51
|
+
1. Resolves configuration (see [Local vs Global Configuration](#local-vs-global-configuration))
|
|
52
|
+
2. Fetches trik metadata from the registry
|
|
53
|
+
3. Downloads the tarball from GitHub Releases
|
|
54
|
+
4. Extracts to the configured triks directory
|
|
55
|
+
5. **Validates** the trik (manifest structure, security rules)
|
|
56
|
+
6. Updates the lockfile
|
|
57
|
+
|
|
58
|
+
If validation fails, the trik is removed and installation aborts.
|
|
59
|
+
|
|
60
|
+
### `trik search <query>`
|
|
61
|
+
|
|
62
|
+
Search for triks in the registry.
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
trik search article
|
|
66
|
+
trik search "web scraping"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### `trik list`
|
|
70
|
+
|
|
71
|
+
List all installed triks.
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
trik list
|
|
75
|
+
trik list --json # Output as JSON
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### `trik info <name>`
|
|
79
|
+
|
|
80
|
+
Show detailed information about a trik.
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
trik info @acme/article-search
|
|
84
|
+
trik info @acme/article-search --json # Output as JSON
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### `trik uninstall <name>`
|
|
88
|
+
|
|
89
|
+
Remove an installed trik.
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
trik uninstall @acme/article-search
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### `trik upgrade [name]`
|
|
96
|
+
|
|
97
|
+
Upgrade installed triks to their latest versions.
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# Upgrade all triks
|
|
101
|
+
trik upgrade
|
|
102
|
+
|
|
103
|
+
# Upgrade specific trik
|
|
104
|
+
trik upgrade @acme/article-search
|
|
105
|
+
|
|
106
|
+
# Force reinstall even if up to date
|
|
107
|
+
trik upgrade --force
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Authentication
|
|
111
|
+
|
|
112
|
+
### `trik login`
|
|
113
|
+
|
|
114
|
+
Authenticate with TrikHub using your GitHub account.
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
trik login
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
This starts a device authorization flow:
|
|
121
|
+
1. Opens a browser to GitHub
|
|
122
|
+
2. Displays a code to enter
|
|
123
|
+
3. After authorization, your session is saved locally
|
|
124
|
+
|
|
125
|
+
### `trik logout`
|
|
126
|
+
|
|
127
|
+
Remove saved authentication.
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
trik logout
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### `trik whoami`
|
|
134
|
+
|
|
135
|
+
Show the currently authenticated user.
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
trik whoami
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Publishing
|
|
142
|
+
|
|
143
|
+
### `trik publish`
|
|
144
|
+
|
|
145
|
+
Publish a trik to the TrikHub registry.
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
# From inside your trik directory
|
|
149
|
+
trik publish
|
|
150
|
+
|
|
151
|
+
# Or specify a directory
|
|
152
|
+
trik publish --directory /path/to/my-trik
|
|
153
|
+
|
|
154
|
+
# Publish a specific version
|
|
155
|
+
trik publish --tag 1.2.0
|
|
156
|
+
|
|
157
|
+
# Skip GitHub release creation (create it manually)
|
|
158
|
+
trik publish --skip-release
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
**Prerequisites:**
|
|
162
|
+
|
|
163
|
+
- Logged in with `trik login`
|
|
164
|
+
- GitHub CLI (`gh`) installed and authenticated
|
|
165
|
+
- Write access to the GitHub repository
|
|
166
|
+
|
|
167
|
+
### Publishing Flow
|
|
168
|
+
|
|
169
|
+
The CLI will:
|
|
170
|
+
|
|
171
|
+
1. Validate your trik structure (manifest.json, trikhub.json, dist/)
|
|
172
|
+
2. Create a tarball with required files
|
|
173
|
+
3. Compute SHA-256 hash for integrity verification
|
|
174
|
+
4. Create a GitHub Release with the tarball attached
|
|
175
|
+
5. Register the trik with the TrikHub registry
|
|
176
|
+
|
|
177
|
+
### Required Files
|
|
178
|
+
|
|
179
|
+
```
|
|
180
|
+
your-trik/
|
|
181
|
+
├── manifest.json # Trik manifest (required)
|
|
182
|
+
├── trikhub.json # Registry metadata (required)
|
|
183
|
+
├── dist/
|
|
184
|
+
│ └── graph.js # Compiled entry point (required)
|
|
185
|
+
└── README.md # Documentation (recommended)
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Manifest Requirements
|
|
189
|
+
|
|
190
|
+
Your `manifest.json` must pass validation:
|
|
191
|
+
|
|
192
|
+
- Use `enum`, `const`, or `pattern` to constrain strings in `agentDataSchema`
|
|
193
|
+
- Template mode requires `responseTemplates`
|
|
194
|
+
- Passthrough mode requires `userContentSchema`
|
|
195
|
+
|
|
196
|
+
See the [SAAAS SDK documentation](https://github.com/trikhub/saaas-sdk) for manifest schema details.
|
|
197
|
+
|
|
198
|
+
## Trik Names
|
|
199
|
+
|
|
200
|
+
Triks use scoped names similar to npm:
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
@scope/trik-name
|
|
204
|
+
@scope/trik-name@version
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
- **Scope**: Maps to a GitHub user or organization (e.g., `@acme`)
|
|
208
|
+
- **Name**: The trik name (e.g., `article-search`)
|
|
209
|
+
- **Version**: Optional semver version (e.g., `1.2.3`)
|
|
210
|
+
|
|
211
|
+
**Note:** All trik names are normalized to lowercase. `@Acme/Article-Search` becomes `@acme/article-search`.
|
|
212
|
+
|
|
213
|
+
## Local vs Global Configuration
|
|
214
|
+
|
|
215
|
+
The CLI supports both **local** (project-level) and **global** (user-level) configurations. This allows you to have project-specific trik installations or share triks across all projects.
|
|
216
|
+
|
|
217
|
+
### Configuration Resolution
|
|
218
|
+
|
|
219
|
+
When you run a command like `trik install`, the CLI resolves configuration in this order:
|
|
220
|
+
|
|
221
|
+
1. **Local config**: Checks for `.trikhub/config.json` in the current directory
|
|
222
|
+
2. **Global config**: Falls back to `~/.trikhub/config.json` in your home directory
|
|
223
|
+
3. **Setup prompt**: If neither exists, prompts you to choose where to set up
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
$ trik install @acme/article-search
|
|
227
|
+
|
|
228
|
+
No TrikHub configuration found.
|
|
229
|
+
Triks need a place to be installed.
|
|
230
|
+
|
|
231
|
+
? Where would you like to set up TrikHub?
|
|
232
|
+
❯ Global (~/.trikhub) - Available to all projects
|
|
233
|
+
Local (./.trikhub) - Project-specific configuration
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Global Configuration (Default)
|
|
237
|
+
|
|
238
|
+
Triks are installed in your home directory and available to all projects:
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
~/.trikhub/
|
|
242
|
+
├── config.json # CLI configuration
|
|
243
|
+
├── triks.lock # Lockfile tracking installed versions
|
|
244
|
+
└── triks/ # Installed triks
|
|
245
|
+
└── @scope/trik-name/
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### Local Configuration
|
|
249
|
+
|
|
250
|
+
Triks are installed in the current project directory. Useful for:
|
|
251
|
+
|
|
252
|
+
- Project-specific trik versions
|
|
253
|
+
- Sharing trik configurations with your team (commit `.trikhub/` to git)
|
|
254
|
+
- Isolated environments
|
|
255
|
+
|
|
256
|
+
```
|
|
257
|
+
./your-project/
|
|
258
|
+
└── .trikhub/
|
|
259
|
+
├── config.json # Project-specific configuration
|
|
260
|
+
├── triks.lock # Project lockfile
|
|
261
|
+
└── triks/ # Project-specific triks
|
|
262
|
+
└── @scope/trik-name/
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Switching Between Scopes
|
|
266
|
+
|
|
267
|
+
The CLI automatically detects which scope to use based on the presence of `.trikhub/config.json` in the current directory:
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
# In a project with local config
|
|
271
|
+
$ trik list
|
|
272
|
+
Installed triks (2) (local: /path/to/project/.trikhub):
|
|
273
|
+
● @acme/article-search v1.0.0
|
|
274
|
+
|
|
275
|
+
# In a directory without local config (uses global)
|
|
276
|
+
$ cd ~
|
|
277
|
+
$ trik list
|
|
278
|
+
Installed triks (5) (global):
|
|
279
|
+
● @acme/other-trik v2.0.0
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
### Initializing a Local Config
|
|
283
|
+
|
|
284
|
+
If you have a global config but want to set up a local one for a project:
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
$ trik install @scope/some-trik
|
|
288
|
+
# When prompted "Use global configuration?", select "No"
|
|
289
|
+
# This will initialize a local .trikhub/ directory
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
## File Locations
|
|
293
|
+
|
|
294
|
+
### Global (Default)
|
|
295
|
+
|
|
296
|
+
| Path | Description |
|
|
297
|
+
|------|-------------|
|
|
298
|
+
| `~/.trikhub/config.json` | CLI configuration |
|
|
299
|
+
| `~/.trikhub/triks.lock` | Lockfile tracking installed versions |
|
|
300
|
+
| `~/.trikhub/triks/` | Installed triks directory |
|
|
301
|
+
|
|
302
|
+
### Local (Project-Level)
|
|
303
|
+
|
|
304
|
+
| Path | Description |
|
|
305
|
+
|------|-------------|
|
|
306
|
+
| `./.trikhub/config.json` | Project-specific configuration |
|
|
307
|
+
| `./.trikhub/triks.lock` | Project lockfile |
|
|
308
|
+
| `./.trikhub/triks/` | Project-specific triks |
|
|
309
|
+
|
|
310
|
+
## Validation
|
|
311
|
+
|
|
312
|
+
Every installed trik is validated to ensure security:
|
|
313
|
+
|
|
314
|
+
- **Manifest structure** - Required fields, valid schemas
|
|
315
|
+
- **Privilege separation** - No unconstrained strings in `agentDataSchema`
|
|
316
|
+
- **Entry point** - Compiled code exists at specified path
|
|
317
|
+
- **Response mode compliance** - Template mode has templates, passthrough has userContentSchema
|
|
318
|
+
|
|
319
|
+
Triks that fail validation are rejected to prevent prompt injection vulnerabilities.
|
|
320
|
+
|
|
321
|
+
## Configuration
|
|
322
|
+
|
|
323
|
+
### Registry URL
|
|
324
|
+
|
|
325
|
+
By default, the CLI connects to `https://api.trikhub.com`. For development, you can override this:
|
|
326
|
+
|
|
327
|
+
```bash
|
|
328
|
+
# Environment variable (highest priority)
|
|
329
|
+
export TRIKHUB_REGISTRY=http://localhost:3000
|
|
330
|
+
|
|
331
|
+
# Or edit your config.json (local or global)
|
|
332
|
+
{
|
|
333
|
+
"registry": "http://localhost:3000"
|
|
334
|
+
}
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
### Config File
|
|
338
|
+
|
|
339
|
+
The `config.json` file (either local `.trikhub/config.json` or global `~/.trikhub/config.json`) stores:
|
|
340
|
+
|
|
341
|
+
```json
|
|
342
|
+
{
|
|
343
|
+
"registry": "https://api.trikhub.com",
|
|
344
|
+
"triksDirectory": ".trikhub/triks",
|
|
345
|
+
"analytics": true,
|
|
346
|
+
"authToken": "...",
|
|
347
|
+
"authExpiresAt": "2026-03-09T11:24:12.401Z",
|
|
348
|
+
"publisherUsername": "your-github-username"
|
|
349
|
+
}
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
| Field | Description |
|
|
353
|
+
| ----- | ----------- |
|
|
354
|
+
| `registry` | TrikHub registry URL |
|
|
355
|
+
| `triksDirectory` | Where triks are installed (relative to config location for local) |
|
|
356
|
+
| `analytics` | Whether to send anonymous download analytics |
|
|
357
|
+
| `authToken` | Authentication token (set by `trik login`) |
|
|
358
|
+
| `authExpiresAt` | Token expiration timestamp |
|
|
359
|
+
| `publisherUsername` | Authenticated GitHub username |
|
|
360
|
+
|
|
361
|
+
## Development
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
# Clone the repo
|
|
365
|
+
git clone https://github.com/trikhub/cli
|
|
366
|
+
cd cli
|
|
367
|
+
|
|
368
|
+
# Install dependencies
|
|
369
|
+
pnpm install
|
|
370
|
+
|
|
371
|
+
# Build
|
|
372
|
+
pnpm build
|
|
373
|
+
|
|
374
|
+
# Run locally
|
|
375
|
+
node dist/cli.js --help
|
|
376
|
+
|
|
377
|
+
# With local registry
|
|
378
|
+
TRIKHUB_REGISTRY=http://localhost:3000 node dist/cli.js search article
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
## Related Projects
|
|
382
|
+
|
|
383
|
+
- **[@trikhub/registry](https://github.com/trikhub/registry)** - The TrikHub registry service
|
|
384
|
+
- **[SAAAS SDK](https://github.com/trikhub/saaas-sdk)** - SDK for building AI skills
|
|
385
|
+
- **[trikhub.com](https://trikhub.com)** - Web interface for browsing triks
|
|
386
|
+
|
|
387
|
+
## License
|
|
388
|
+
|
|
389
|
+
MIT
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;GAIG"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* TrikHub CLI
|
|
4
|
+
*
|
|
5
|
+
* Command-line interface for managing AI triks.
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
import { installCommand } from './commands/install.js';
|
|
9
|
+
import { listCommand } from './commands/list.js';
|
|
10
|
+
import { searchCommand } from './commands/search.js';
|
|
11
|
+
import { infoCommand } from './commands/info.js';
|
|
12
|
+
import { uninstallCommand } from './commands/uninstall.js';
|
|
13
|
+
import { loginCommand, logoutCommand, whoamiCommand } from './commands/login.js';
|
|
14
|
+
import { publishCommand } from './commands/publish.js';
|
|
15
|
+
import { upgradeCommand, upgradeAllCommand } from './commands/upgrade.js';
|
|
16
|
+
import { syncCommand } from './commands/sync.js';
|
|
17
|
+
const program = new Command();
|
|
18
|
+
program
|
|
19
|
+
.name('trik')
|
|
20
|
+
.description('TrikHub CLI - Teaching AI new triks')
|
|
21
|
+
.version('0.1.0');
|
|
22
|
+
// Install command
|
|
23
|
+
program
|
|
24
|
+
.command('install <trik>')
|
|
25
|
+
.alias('i')
|
|
26
|
+
.description('Install a trik (e.g., trik install @acme/article-search)')
|
|
27
|
+
.option('-v, --version <version>', 'Install a specific version')
|
|
28
|
+
.action(installCommand);
|
|
29
|
+
// Uninstall command
|
|
30
|
+
program
|
|
31
|
+
.command('uninstall <trik>')
|
|
32
|
+
.alias('rm')
|
|
33
|
+
.alias('remove')
|
|
34
|
+
.description('Uninstall a trik')
|
|
35
|
+
.action(uninstallCommand);
|
|
36
|
+
// List command
|
|
37
|
+
program
|
|
38
|
+
.command('list')
|
|
39
|
+
.alias('ls')
|
|
40
|
+
.description('List installed triks')
|
|
41
|
+
.option('-j, --json', 'Output as JSON')
|
|
42
|
+
.action(listCommand);
|
|
43
|
+
// Search command
|
|
44
|
+
program
|
|
45
|
+
.command('search <query>')
|
|
46
|
+
.alias('s')
|
|
47
|
+
.description('Search for triks in the registry')
|
|
48
|
+
.option('-j, --json', 'Output as JSON')
|
|
49
|
+
.option('-l, --limit <number>', 'Limit results', '10')
|
|
50
|
+
.action(searchCommand);
|
|
51
|
+
// Info command
|
|
52
|
+
program
|
|
53
|
+
.command('info <trik>')
|
|
54
|
+
.description('Show detailed information about a trik')
|
|
55
|
+
.option('-j, --json', 'Output as JSON')
|
|
56
|
+
.action(infoCommand);
|
|
57
|
+
// Login command
|
|
58
|
+
program
|
|
59
|
+
.command('login')
|
|
60
|
+
.description('Authenticate with GitHub')
|
|
61
|
+
.action(loginCommand);
|
|
62
|
+
// Logout command
|
|
63
|
+
program
|
|
64
|
+
.command('logout')
|
|
65
|
+
.description('Remove saved authentication')
|
|
66
|
+
.action(logoutCommand);
|
|
67
|
+
// Whoami command
|
|
68
|
+
program
|
|
69
|
+
.command('whoami')
|
|
70
|
+
.description('Show current authenticated user')
|
|
71
|
+
.action(whoamiCommand);
|
|
72
|
+
// Publish command
|
|
73
|
+
program
|
|
74
|
+
.command('publish')
|
|
75
|
+
.description('Publish a trik to the registry')
|
|
76
|
+
.option('-d, --directory <path>', 'Trik directory to publish', '.')
|
|
77
|
+
.option('-t, --tag <version>', 'Version tag (default: from manifest)')
|
|
78
|
+
.option('--skip-release', 'Skip creating GitHub release (for manual upload)')
|
|
79
|
+
.action(publishCommand);
|
|
80
|
+
// Upgrade command
|
|
81
|
+
program
|
|
82
|
+
.command('upgrade [trik]')
|
|
83
|
+
.alias('up')
|
|
84
|
+
.description('Upgrade an installed trik (or all triks if none specified)')
|
|
85
|
+
.option('-f, --force', 'Force reinstall even if up to date')
|
|
86
|
+
.action(async (trik, options) => {
|
|
87
|
+
if (trik) {
|
|
88
|
+
await upgradeCommand(trik, options);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
await upgradeAllCommand(options);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
// Sync command (npm-based trik discovery)
|
|
95
|
+
program
|
|
96
|
+
.command('sync')
|
|
97
|
+
.description('Discover triks in node_modules and add to config')
|
|
98
|
+
.option('-n, --dry-run', 'Show what would be synced without modifying config')
|
|
99
|
+
.option('-j, --json', 'Output as JSON')
|
|
100
|
+
.action(syncCommand);
|
|
101
|
+
// TODO: Add more commands
|
|
102
|
+
// program.command('init').description('Initialize a new trik project');
|
|
103
|
+
// program.command('outdated').description('Check for outdated triks');
|
|
104
|
+
program.parse();
|
|
105
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* trik info command
|
|
3
|
+
*
|
|
4
|
+
* Shows detailed information about a trik.
|
|
5
|
+
*/
|
|
6
|
+
interface InfoOptions {
|
|
7
|
+
json?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function infoCommand(trikInput: string, options: InfoOptions): Promise<void>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAgGf"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* trik info command
|
|
3
|
+
*
|
|
4
|
+
* Shows detailed information about a trik.
|
|
5
|
+
*/
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import ora from 'ora';
|
|
8
|
+
import { parseTrikName } from '../types.js';
|
|
9
|
+
import { registry } from '../lib/registry.js';
|
|
10
|
+
import { isTrikInstalled, getInstalledTrik, getTrikPath } from '../lib/storage.js';
|
|
11
|
+
export async function infoCommand(trikInput, options) {
|
|
12
|
+
const spinner = ora('Fetching trik info...').start();
|
|
13
|
+
try {
|
|
14
|
+
const { fullName } = parseTrikName(trikInput);
|
|
15
|
+
const trik = await registry.getTrik(fullName);
|
|
16
|
+
spinner.stop();
|
|
17
|
+
if (!trik) {
|
|
18
|
+
console.log(chalk.red(`\nTrik ${fullName} not found in registry\n`));
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
if (options.json) {
|
|
22
|
+
console.log(JSON.stringify(trik, null, 2));
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const installed = getInstalledTrik(fullName);
|
|
26
|
+
const isInstalled = isTrikInstalled(fullName);
|
|
27
|
+
// Header
|
|
28
|
+
console.log();
|
|
29
|
+
console.log(chalk.bold.cyan(trik.fullName) +
|
|
30
|
+
(trik.verified ? chalk.blue(' ✓ Verified') : ''));
|
|
31
|
+
console.log(chalk.dim(trik.description));
|
|
32
|
+
console.log();
|
|
33
|
+
// Install status
|
|
34
|
+
if (isInstalled && installed) {
|
|
35
|
+
console.log(chalk.green(`✓ Installed`) +
|
|
36
|
+
chalk.dim(` (v${installed.version})`));
|
|
37
|
+
console.log(chalk.dim(` Path: ${getTrikPath(fullName)}`));
|
|
38
|
+
console.log();
|
|
39
|
+
}
|
|
40
|
+
// Stats
|
|
41
|
+
console.log(chalk.bold('Stats'));
|
|
42
|
+
console.log(` Latest version: ${chalk.cyan(trik.latestVersion)}`);
|
|
43
|
+
console.log(` Downloads: ${formatNumber(trik.downloads)}`);
|
|
44
|
+
console.log(` Stars: ${trik.stars}`);
|
|
45
|
+
console.log();
|
|
46
|
+
// Categories & Keywords
|
|
47
|
+
console.log(chalk.bold('Categories'));
|
|
48
|
+
console.log(` ${trik.categories.join(', ')}`);
|
|
49
|
+
console.log();
|
|
50
|
+
if (trik.keywords.length > 0) {
|
|
51
|
+
console.log(chalk.bold('Keywords'));
|
|
52
|
+
console.log(` ${trik.keywords.join(', ')}`);
|
|
53
|
+
console.log();
|
|
54
|
+
}
|
|
55
|
+
// Links
|
|
56
|
+
console.log(chalk.bold('Links'));
|
|
57
|
+
console.log(` GitHub: https://github.com/${trik.githubRepo}`);
|
|
58
|
+
if (trik.discussionsUrl) {
|
|
59
|
+
console.log(` Discussions: ${trik.discussionsUrl}`);
|
|
60
|
+
}
|
|
61
|
+
console.log();
|
|
62
|
+
// Versions
|
|
63
|
+
console.log(chalk.bold('Versions'));
|
|
64
|
+
const versionsToShow = trik.versions.slice(0, 5);
|
|
65
|
+
for (const version of versionsToShow) {
|
|
66
|
+
const date = new Date(version.publishedAt).toLocaleDateString();
|
|
67
|
+
const current = version.version === trik.latestVersion ? chalk.green(' (latest)') : '';
|
|
68
|
+
console.log(` ${chalk.cyan(version.version)}${current} - ${chalk.dim(date)} - ${formatNumber(version.downloads)} downloads`);
|
|
69
|
+
}
|
|
70
|
+
if (trik.versions.length > 5) {
|
|
71
|
+
console.log(chalk.dim(` ... and ${trik.versions.length - 5} more versions`));
|
|
72
|
+
}
|
|
73
|
+
console.log();
|
|
74
|
+
// Install command
|
|
75
|
+
if (!isInstalled) {
|
|
76
|
+
console.log(chalk.bold('Install'));
|
|
77
|
+
console.log(` ${chalk.cyan(`trik install ${trik.fullName}`)}`);
|
|
78
|
+
console.log();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
spinner.fail('Failed to fetch trik info');
|
|
83
|
+
if (error instanceof Error) {
|
|
84
|
+
console.error(chalk.red(error.message));
|
|
85
|
+
}
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Format a number with K/M suffixes
|
|
91
|
+
*/
|
|
92
|
+
function formatNumber(num) {
|
|
93
|
+
if (num >= 1_000_000) {
|
|
94
|
+
return `${(num / 1_000_000).toFixed(1)}M`;
|
|
95
|
+
}
|
|
96
|
+
if (num >= 1_000) {
|
|
97
|
+
return `${(num / 1_000).toFixed(1)}K`;
|
|
98
|
+
}
|
|
99
|
+
return num.toString();
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* trik install command
|
|
3
|
+
*
|
|
4
|
+
* Installs a trik as an npm dependency and registers it in .trikhub/config.json.
|
|
5
|
+
*
|
|
6
|
+
* Workflow:
|
|
7
|
+
* 1. Try npm registry first
|
|
8
|
+
* 2. If not found, fall back to TrikHub registry (GitHub releases)
|
|
9
|
+
* 3. Download and install
|
|
10
|
+
* 4. Update .trikhub/config.json with the trik
|
|
11
|
+
*/
|
|
12
|
+
interface InstallOptions {
|
|
13
|
+
version?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function installCommand(trikInput: string, options: InstallOptions): Promise<void>;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAgBH,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAyUD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CA0Ff"}
|