zammy 1.2.1 → 1.3.2
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 +322 -239
- package/assets/zammy.gif +0 -0
- package/dist/chunk-LLLEINP6.js +1229 -0
- package/dist/index.js +1886 -489
- package/dist/plugins.d.ts +168 -0
- package/dist/plugins.js +47 -0
- package/package.json +20 -2
- package/packages/plugins/docker/README.md +141 -0
- package/packages/plugins/docker/dist/index.d.ts +4 -0
- package/packages/plugins/docker/dist/index.d.ts.map +1 -0
- package/packages/plugins/docker/dist/index.js +402 -0
- package/packages/plugins/docker/dist/index.js.map +1 -0
- package/packages/plugins/docker/package.json +32 -0
- package/packages/plugins/docker/zammy-plugin.json +16 -0
- package/packages/plugins/faker/README.md +65 -0
- package/packages/plugins/faker/dist/index.d.ts +4 -0
- package/packages/plugins/faker/dist/index.d.ts.map +1 -0
- package/packages/plugins/faker/dist/index.js +349 -0
- package/packages/plugins/faker/dist/index.js.map +1 -0
- package/packages/plugins/faker/package.json +32 -0
- package/packages/plugins/faker/zammy-plugin.json +14 -0
- package/packages/plugins/network/README.md +126 -0
- package/packages/plugins/network/dist/index.d.ts +4 -0
- package/packages/plugins/network/dist/index.d.ts.map +1 -0
- package/packages/plugins/network/dist/index.js +405 -0
- package/packages/plugins/network/dist/index.js.map +1 -0
- package/packages/plugins/network/package.json +32 -0
- package/packages/plugins/network/zammy-plugin.json +17 -0
- package/packages/plugins/port/README.md +74 -0
- package/packages/plugins/port/dist/index.d.ts +4 -0
- package/packages/plugins/port/dist/index.d.ts.map +1 -0
- package/packages/plugins/port/dist/index.js +331 -0
- package/packages/plugins/port/dist/index.js.map +1 -0
- package/packages/plugins/port/package.json +32 -0
- package/packages/plugins/port/zammy-plugin.json +16 -0
- package/packages/plugins/tsconfig.base.json +17 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
interface Command {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
usage: string;
|
|
5
|
+
execute: (args: string[]) => Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
interface PluginManifest {
|
|
9
|
+
name: string;
|
|
10
|
+
version: string;
|
|
11
|
+
main: string;
|
|
12
|
+
commands: string[];
|
|
13
|
+
zammy: {
|
|
14
|
+
minVersion: string;
|
|
15
|
+
maxVersion?: string;
|
|
16
|
+
};
|
|
17
|
+
displayName?: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
author?: string;
|
|
20
|
+
license?: string;
|
|
21
|
+
homepage?: string;
|
|
22
|
+
repository?: string;
|
|
23
|
+
permissions?: PluginPermissions;
|
|
24
|
+
}
|
|
25
|
+
interface PluginPermissions {
|
|
26
|
+
shell?: boolean;
|
|
27
|
+
filesystem?: boolean | string[];
|
|
28
|
+
network?: boolean | string[];
|
|
29
|
+
env?: boolean | string[];
|
|
30
|
+
}
|
|
31
|
+
interface PluginAPI {
|
|
32
|
+
registerCommand(command: Command): void;
|
|
33
|
+
registerCommands(commands: Command[]): void;
|
|
34
|
+
ui: PluginUI;
|
|
35
|
+
storage: PluginStorage;
|
|
36
|
+
log: PluginLogger;
|
|
37
|
+
context: PluginContext;
|
|
38
|
+
shell?: PluginShell;
|
|
39
|
+
}
|
|
40
|
+
interface PluginUI {
|
|
41
|
+
theme: {
|
|
42
|
+
primary: (text: string) => string;
|
|
43
|
+
secondary: (text: string) => string;
|
|
44
|
+
accent: (text: string) => string;
|
|
45
|
+
success: (text: string) => string;
|
|
46
|
+
warning: (text: string) => string;
|
|
47
|
+
error: (text: string) => string;
|
|
48
|
+
info: (text: string) => string;
|
|
49
|
+
dim: (text: string) => string;
|
|
50
|
+
gradient: (text: string) => string;
|
|
51
|
+
};
|
|
52
|
+
symbols: {
|
|
53
|
+
check: string;
|
|
54
|
+
cross: string;
|
|
55
|
+
star: string;
|
|
56
|
+
arrow: string;
|
|
57
|
+
bullet: string;
|
|
58
|
+
folder: string;
|
|
59
|
+
file: string;
|
|
60
|
+
warning: string;
|
|
61
|
+
info: string;
|
|
62
|
+
rocket: string;
|
|
63
|
+
sparkles: string;
|
|
64
|
+
};
|
|
65
|
+
box: (content: string, options?: {
|
|
66
|
+
title?: string;
|
|
67
|
+
padding?: number;
|
|
68
|
+
}) => string;
|
|
69
|
+
progressBar: (current: number, total: number, width?: number) => string;
|
|
70
|
+
}
|
|
71
|
+
interface PluginStorage {
|
|
72
|
+
get<T>(key: string): T | undefined;
|
|
73
|
+
set<T>(key: string, value: T): void;
|
|
74
|
+
delete(key: string): void;
|
|
75
|
+
clear(): void;
|
|
76
|
+
getAll(): Record<string, unknown>;
|
|
77
|
+
}
|
|
78
|
+
interface PluginLogger {
|
|
79
|
+
info(message: string): void;
|
|
80
|
+
warn(message: string): void;
|
|
81
|
+
error(message: string): void;
|
|
82
|
+
debug(message: string): void;
|
|
83
|
+
}
|
|
84
|
+
interface PluginContext {
|
|
85
|
+
pluginName: string;
|
|
86
|
+
pluginVersion: string;
|
|
87
|
+
zammyVersion: string;
|
|
88
|
+
dataDir: string;
|
|
89
|
+
cwd: string;
|
|
90
|
+
}
|
|
91
|
+
interface PluginShell {
|
|
92
|
+
exec(command: string, options?: {
|
|
93
|
+
timeout?: number;
|
|
94
|
+
}): string;
|
|
95
|
+
spawn(command: string, args?: string[]): Promise<{
|
|
96
|
+
stdout: string;
|
|
97
|
+
stderr: string;
|
|
98
|
+
code: number;
|
|
99
|
+
}>;
|
|
100
|
+
}
|
|
101
|
+
interface ZammyPlugin {
|
|
102
|
+
activate(api: PluginAPI): Promise<void> | void;
|
|
103
|
+
deactivate?(): Promise<void> | void;
|
|
104
|
+
}
|
|
105
|
+
interface LoadedPlugin {
|
|
106
|
+
manifest: PluginManifest;
|
|
107
|
+
instance: ZammyPlugin;
|
|
108
|
+
path: string;
|
|
109
|
+
state: PluginState;
|
|
110
|
+
}
|
|
111
|
+
type PluginState = 'discovered' | 'loaded' | 'active' | 'error';
|
|
112
|
+
interface PluginError {
|
|
113
|
+
pluginName: string;
|
|
114
|
+
error: Error;
|
|
115
|
+
phase: 'discovery' | 'load' | 'activate' | 'execute';
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
declare function ensurePluginsDir(): void;
|
|
119
|
+
declare function getPluginsDir(): string;
|
|
120
|
+
declare function discoverPlugins(): Promise<PluginManifest[]>;
|
|
121
|
+
declare function loadPlugin(name: string): Promise<LoadedPlugin | null>;
|
|
122
|
+
declare function unloadPlugin(name: string): Promise<boolean>;
|
|
123
|
+
declare function getDiscoveredPlugins(): PluginManifest[];
|
|
124
|
+
declare function getLoadedPlugins(): LoadedPlugin[];
|
|
125
|
+
declare function isPluginLoaded(name: string): boolean;
|
|
126
|
+
declare function getPluginPath(name: string): string | undefined;
|
|
127
|
+
declare function initPluginLoader(): Promise<void>;
|
|
128
|
+
|
|
129
|
+
declare function createPluginAPI(manifest: PluginManifest, pluginPath: string): PluginAPI;
|
|
130
|
+
|
|
131
|
+
declare function createPluginStorage(pluginName: string, dataDir: string): PluginStorage;
|
|
132
|
+
|
|
133
|
+
declare function validateManifest(manifest: unknown): {
|
|
134
|
+
valid: boolean;
|
|
135
|
+
errors: string[];
|
|
136
|
+
};
|
|
137
|
+
declare function checkConflicts(manifest: PluginManifest): {
|
|
138
|
+
hasConflicts: boolean;
|
|
139
|
+
conflicts: string[];
|
|
140
|
+
};
|
|
141
|
+
declare function formatPermissions(manifest: PluginManifest): string[];
|
|
142
|
+
declare function installFromLocal(sourcePath: string): Promise<{
|
|
143
|
+
success: boolean;
|
|
144
|
+
error?: string;
|
|
145
|
+
manifest?: PluginManifest;
|
|
146
|
+
}>;
|
|
147
|
+
declare function installFromNpm(packageName: string): Promise<{
|
|
148
|
+
success: boolean;
|
|
149
|
+
error?: string;
|
|
150
|
+
manifest?: PluginManifest;
|
|
151
|
+
}>;
|
|
152
|
+
declare function installFromGithub(repo: string): Promise<{
|
|
153
|
+
success: boolean;
|
|
154
|
+
error?: string;
|
|
155
|
+
manifest?: PluginManifest;
|
|
156
|
+
}>;
|
|
157
|
+
declare function installFromGit(url: string): Promise<{
|
|
158
|
+
success: boolean;
|
|
159
|
+
error?: string;
|
|
160
|
+
manifest?: PluginManifest;
|
|
161
|
+
}>;
|
|
162
|
+
declare function removePlugin(name: string): {
|
|
163
|
+
success: boolean;
|
|
164
|
+
error?: string;
|
|
165
|
+
};
|
|
166
|
+
declare function detectSourceType(source: string): 'local' | 'npm' | 'github' | 'git' | 'unknown';
|
|
167
|
+
|
|
168
|
+
export { type LoadedPlugin, type PluginAPI, type PluginContext, type PluginError, type PluginLogger, type PluginManifest, type PluginPermissions, type PluginShell, type PluginState, type PluginStorage, type PluginUI, type ZammyPlugin, checkConflicts, createPluginAPI, createPluginStorage, detectSourceType, discoverPlugins, ensurePluginsDir, formatPermissions, getDiscoveredPlugins, getLoadedPlugins, getPluginPath, getPluginsDir, initPluginLoader, installFromGit, installFromGithub, installFromLocal, installFromNpm, isPluginLoaded, loadPlugin, removePlugin, unloadPlugin, validateManifest };
|
package/dist/plugins.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
checkConflicts,
|
|
4
|
+
createPluginAPI,
|
|
5
|
+
createPluginStorage,
|
|
6
|
+
detectSourceType,
|
|
7
|
+
discoverPlugins,
|
|
8
|
+
ensurePluginsDir,
|
|
9
|
+
formatPermissions,
|
|
10
|
+
getDiscoveredPlugins,
|
|
11
|
+
getLoadedPlugins,
|
|
12
|
+
getPluginPath,
|
|
13
|
+
getPluginsDir,
|
|
14
|
+
initPluginLoader,
|
|
15
|
+
installFromGit,
|
|
16
|
+
installFromGithub,
|
|
17
|
+
installFromLocal,
|
|
18
|
+
installFromNpm,
|
|
19
|
+
isPluginLoaded,
|
|
20
|
+
loadPlugin,
|
|
21
|
+
removePlugin,
|
|
22
|
+
unloadPlugin,
|
|
23
|
+
validateManifest
|
|
24
|
+
} from "./chunk-LLLEINP6.js";
|
|
25
|
+
export {
|
|
26
|
+
checkConflicts,
|
|
27
|
+
createPluginAPI,
|
|
28
|
+
createPluginStorage,
|
|
29
|
+
detectSourceType,
|
|
30
|
+
discoverPlugins,
|
|
31
|
+
ensurePluginsDir,
|
|
32
|
+
formatPermissions,
|
|
33
|
+
getDiscoveredPlugins,
|
|
34
|
+
getLoadedPlugins,
|
|
35
|
+
getPluginPath,
|
|
36
|
+
getPluginsDir,
|
|
37
|
+
initPluginLoader,
|
|
38
|
+
installFromGit,
|
|
39
|
+
installFromGithub,
|
|
40
|
+
installFromLocal,
|
|
41
|
+
installFromNpm,
|
|
42
|
+
isPluginLoaded,
|
|
43
|
+
loadPlugin,
|
|
44
|
+
removePlugin,
|
|
45
|
+
unloadPlugin,
|
|
46
|
+
validateManifest
|
|
47
|
+
};
|
package/package.json
CHANGED
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zammy",
|
|
3
|
-
"version": "1.2
|
|
3
|
+
"version": "1.3.2",
|
|
4
4
|
"description": "A feature-packed CLI with utilities, dev tools, and a bit of fun",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"workspaces": [
|
|
8
|
+
"packages/plugins/*"
|
|
9
|
+
],
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"import": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./plugins": {
|
|
16
|
+
"types": "./dist/plugins.d.ts",
|
|
17
|
+
"import": "./dist/plugins.js"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
6
20
|
"bin": {
|
|
7
21
|
"zammy": "./dist/index.js"
|
|
8
22
|
},
|
|
@@ -18,8 +32,12 @@
|
|
|
18
32
|
"keywords": [
|
|
19
33
|
"cli",
|
|
20
34
|
"terminal",
|
|
35
|
+
"developer-tools",
|
|
36
|
+
"productivity",
|
|
21
37
|
"ascii-art",
|
|
22
|
-
"
|
|
38
|
+
"interactive",
|
|
39
|
+
"cross-platform",
|
|
40
|
+
"utilities"
|
|
23
41
|
],
|
|
24
42
|
"author": "Aayush Adhikari",
|
|
25
43
|
"license": "MIT",
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# zammy-plugin-docker
|
|
2
|
+
|
|
3
|
+
Docker container management with pretty output.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
/plugin install zammy-plugin-docker
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Requirements
|
|
12
|
+
|
|
13
|
+
- Docker must be installed and running
|
|
14
|
+
- Docker daemon must be accessible (may require sudo on Linux)
|
|
15
|
+
|
|
16
|
+
## Commands
|
|
17
|
+
|
|
18
|
+
### `/docker ps`
|
|
19
|
+
|
|
20
|
+
List running containers. Use `-a` flag to show all containers.
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
/docker ps
|
|
24
|
+
|
|
25
|
+
RUNNING CONTAINERS
|
|
26
|
+
|
|
27
|
+
ID NAME IMAGE STATUS
|
|
28
|
+
──────────────────────────────────────────────────────────────────────
|
|
29
|
+
abc123def456 my-app node:18 ✔ Up 2 hours
|
|
30
|
+
789xyz012abc postgres postgres:15 ✔ Up 3 days
|
|
31
|
+
|
|
32
|
+
Total: 2 containers
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### `/docker images`
|
|
36
|
+
|
|
37
|
+
List all Docker images.
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
/docker images
|
|
41
|
+
|
|
42
|
+
DOCKER IMAGES
|
|
43
|
+
|
|
44
|
+
REPOSITORY TAG SIZE AGE
|
|
45
|
+
─────────────────────────────────────────────────────────────────
|
|
46
|
+
node 18 950MB 2 days ago
|
|
47
|
+
postgres 15 380MB 1 month ago
|
|
48
|
+
nginx latest 140MB 3 days ago
|
|
49
|
+
|
|
50
|
+
Total: 3 images
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### `/docker logs <container>`
|
|
54
|
+
|
|
55
|
+
View container logs (last 20 lines by default).
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
/docker logs my-app
|
|
59
|
+
|
|
60
|
+
Logs for my-app (last 20 lines)
|
|
61
|
+
──────────────────────────────────────────────
|
|
62
|
+
|
|
63
|
+
[INFO] Server starting on port 3000
|
|
64
|
+
[INFO] Database connected
|
|
65
|
+
[WARN] Cache miss for user:123
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### `/docker stats`
|
|
69
|
+
|
|
70
|
+
Show real-time resource usage for running containers.
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
/docker stats
|
|
74
|
+
|
|
75
|
+
CONTAINER STATS
|
|
76
|
+
|
|
77
|
+
NAME CPU MEMORY NET I/O
|
|
78
|
+
────────────────────────────────────────────────────────────
|
|
79
|
+
my-app 2.5% 125MiB / 8GiB 1.2MB / 500KB
|
|
80
|
+
postgres 0.8% 250MiB / 8GiB 800KB / 1.5MB
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### `/docker prune`
|
|
84
|
+
|
|
85
|
+
Clean up unused Docker resources.
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
/docker prune
|
|
89
|
+
|
|
90
|
+
✔ Cleanup complete
|
|
91
|
+
|
|
92
|
+
Space reclaimed: 2.5GB
|
|
93
|
+
|
|
94
|
+
Tip: Use /docker prune -a to remove unused images too
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Flags:
|
|
98
|
+
- `-a` or `--all` - Remove all unused images, not just dangling ones
|
|
99
|
+
- `--volumes` - Also remove unused volumes
|
|
100
|
+
|
|
101
|
+
### `/docker inspect <container>`
|
|
102
|
+
|
|
103
|
+
Show detailed information about a container.
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
/docker inspect my-app
|
|
107
|
+
|
|
108
|
+
CONTAINER DETAILS
|
|
109
|
+
|
|
110
|
+
Name: my-app
|
|
111
|
+
ID: abc123def456
|
|
112
|
+
Image: node:18
|
|
113
|
+
Status: running
|
|
114
|
+
Created: 2024-01-15T10:30:00Z
|
|
115
|
+
IP: 172.17.0.2
|
|
116
|
+
|
|
117
|
+
Ports:
|
|
118
|
+
3000/tcp → 3000
|
|
119
|
+
|
|
120
|
+
Environment: (5 vars)
|
|
121
|
+
NODE_ENV
|
|
122
|
+
PORT
|
|
123
|
+
DATABASE_URL
|
|
124
|
+
... and 2 more
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Error Handling
|
|
128
|
+
|
|
129
|
+
The plugin gracefully handles:
|
|
130
|
+
- Docker not installed
|
|
131
|
+
- Docker daemon not running
|
|
132
|
+
- Container not found
|
|
133
|
+
- Permission issues
|
|
134
|
+
|
|
135
|
+
## Permissions
|
|
136
|
+
|
|
137
|
+
This plugin requires shell access to run Docker commands.
|
|
138
|
+
|
|
139
|
+
## License
|
|
140
|
+
|
|
141
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,eAAe,CAAC;AAuN5D,QAAA,MAAM,MAAM,EAAE,WAmSb,CAAC;AAEF,eAAe,MAAM,CAAC"}
|