@burdenoff/vibe-agent 1.3.2 → 2.1.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/app-31chs2a1.js +17180 -0
- package/dist/app-31chs2a1.js.map +170 -0
- package/dist/chunk-pm1hna8x-473akrq0.js +16826 -0
- package/dist/chunk-pm1hna8x-473akrq0.js.map +11 -0
- package/dist/cli.js +4686 -1146
- package/dist/cli.js.map +51 -1
- package/dist/highlights-eq9cgrbb.scm +604 -0
- package/dist/highlights-ghv9g403.scm +205 -0
- package/dist/highlights-hk7bwhj4.scm +284 -0
- package/dist/highlights-r812a2qc.scm +150 -0
- package/dist/highlights-x6tmsnaa.scm +115 -0
- package/dist/index-5xngv42g.js +2546 -0
- package/dist/index-5xngv42g.js.map +26 -0
- package/dist/index-6aq4nc58.js +11429 -0
- package/dist/index-6aq4nc58.js.map +21 -0
- package/dist/index-ac2ebaf8.js +4 -0
- package/dist/index-ac2ebaf8.js.map +9 -0
- package/dist/index-g8dczzvv.js +33 -0
- package/dist/index-g8dczzvv.js.map +9 -0
- package/dist/index-gmz54dkc.js +28402 -0
- package/dist/index-gmz54dkc.js.map +11 -0
- package/dist/index-t06ktmx9.js +216 -0
- package/dist/index-t06ktmx9.js.map +11 -0
- package/dist/index.js +69 -87
- package/dist/index.js.map +10 -1
- package/dist/injections-73j83es3.scm +27 -0
- package/dist/package-0158fp3w.js +136 -0
- package/dist/package-0158fp3w.js.map +9 -0
- package/dist/plugin-system-bg1pzjj9.js +453 -0
- package/dist/plugin-system-bg1pzjj9.js.map +11 -0
- package/dist/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
- package/dist/tree-sitter-markdown-411r6y9b.wasm +0 -0
- package/dist/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
- package/dist/tree-sitter-typescript-zxjzwt75.wasm +0 -0
- package/dist/tree-sitter-zig-e78zbjpm.wasm +0 -0
- package/package.json +33 -44
- package/dist/app.d.ts +0 -15
- package/dist/app.d.ts.map +0 -1
- package/dist/app.js +0 -600
- package/dist/app.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/db/schema.d.ts +0 -121
- package/dist/db/schema.d.ts.map +0 -1
- package/dist/db/schema.js +0 -473
- package/dist/db/schema.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +0 -1
- package/dist/middleware/ModuleAuth.d.ts +0 -61
- package/dist/middleware/ModuleAuth.d.ts.map +0 -1
- package/dist/middleware/ModuleAuth.js +0 -223
- package/dist/middleware/ModuleAuth.js.map +0 -1
- package/dist/middleware/auth.d.ts +0 -3
- package/dist/middleware/auth.d.ts.map +0 -1
- package/dist/middleware/auth.js +0 -11
- package/dist/middleware/auth.js.map +0 -1
- package/dist/migrations/remove-notes-prompts.d.ts +0 -13
- package/dist/migrations/remove-notes-prompts.d.ts.map +0 -1
- package/dist/migrations/remove-notes-prompts.js +0 -148
- package/dist/migrations/remove-notes-prompts.js.map +0 -1
- package/dist/routes/bookmarks.d.ts +0 -3
- package/dist/routes/bookmarks.d.ts.map +0 -1
- package/dist/routes/bookmarks.js +0 -195
- package/dist/routes/bookmarks.js.map +0 -1
- package/dist/routes/config.d.ts +0 -3
- package/dist/routes/config.d.ts.map +0 -1
- package/dist/routes/config.js +0 -106
- package/dist/routes/config.js.map +0 -1
- package/dist/routes/files.d.ts +0 -3
- package/dist/routes/files.d.ts.map +0 -1
- package/dist/routes/files.js +0 -313
- package/dist/routes/files.js.map +0 -1
- package/dist/routes/git.d.ts +0 -3
- package/dist/routes/git.d.ts.map +0 -1
- package/dist/routes/git.js +0 -427
- package/dist/routes/git.js.map +0 -1
- package/dist/routes/logs.d.ts +0 -9
- package/dist/routes/logs.d.ts.map +0 -1
- package/dist/routes/logs.js +0 -107
- package/dist/routes/logs.js.map +0 -1
- package/dist/routes/moduleRegistry.d.ts +0 -41
- package/dist/routes/moduleRegistry.d.ts.map +0 -1
- package/dist/routes/moduleRegistry.js +0 -356
- package/dist/routes/moduleRegistry.js.map +0 -1
- package/dist/routes/notifications.d.ts +0 -3
- package/dist/routes/notifications.d.ts.map +0 -1
- package/dist/routes/notifications.js +0 -255
- package/dist/routes/notifications.js.map +0 -1
- package/dist/routes/plugin-state.d.ts +0 -19
- package/dist/routes/plugin-state.d.ts.map +0 -1
- package/dist/routes/plugin-state.js +0 -139
- package/dist/routes/plugin-state.js.map +0 -1
- package/dist/routes/plugins.d.ts +0 -3
- package/dist/routes/plugins.d.ts.map +0 -1
- package/dist/routes/plugins.js +0 -118
- package/dist/routes/plugins.js.map +0 -1
- package/dist/routes/projects.d.ts +0 -3
- package/dist/routes/projects.d.ts.map +0 -1
- package/dist/routes/projects.js +0 -456
- package/dist/routes/projects.js.map +0 -1
- package/dist/routes/tasks.d.ts +0 -3
- package/dist/routes/tasks.d.ts.map +0 -1
- package/dist/routes/tasks.js +0 -187
- package/dist/routes/tasks.js.map +0 -1
- package/dist/routes/tmux.d.ts +0 -3
- package/dist/routes/tmux.d.ts.map +0 -1
- package/dist/routes/tmux.js +0 -1287
- package/dist/routes/tmux.js.map +0 -1
- package/dist/routes/tunnel.d.ts +0 -25
- package/dist/routes/tunnel.d.ts.map +0 -1
- package/dist/routes/tunnel.js +0 -498
- package/dist/routes/tunnel.js.map +0 -1
- package/dist/services/ModulePermissions.d.ts +0 -100
- package/dist/services/ModulePermissions.d.ts.map +0 -1
- package/dist/services/ModulePermissions.js +0 -322
- package/dist/services/ModulePermissions.js.map +0 -1
- package/dist/services/ModuleRegistryService.d.ts +0 -152
- package/dist/services/ModuleRegistryService.d.ts.map +0 -1
- package/dist/services/ModuleRegistryService.js +0 -547
- package/dist/services/ModuleRegistryService.js.map +0 -1
- package/dist/services/agent.service.d.ts +0 -19
- package/dist/services/agent.service.d.ts.map +0 -1
- package/dist/services/agent.service.js +0 -91
- package/dist/services/agent.service.js.map +0 -1
- package/dist/services/bootstrap.d.ts +0 -22
- package/dist/services/bootstrap.d.ts.map +0 -1
- package/dist/services/bootstrap.js +0 -283
- package/dist/services/bootstrap.js.map +0 -1
- package/dist/services/completion.d.ts +0 -46
- package/dist/services/completion.d.ts.map +0 -1
- package/dist/services/completion.js +0 -317
- package/dist/services/completion.js.map +0 -1
- package/dist/services/gateway-client.d.ts +0 -61
- package/dist/services/gateway-client.d.ts.map +0 -1
- package/dist/services/gateway-client.js +0 -147
- package/dist/services/gateway-client.js.map +0 -1
- package/dist/services/logger.d.ts +0 -61
- package/dist/services/logger.d.ts.map +0 -1
- package/dist/services/logger.js +0 -223
- package/dist/services/logger.js.map +0 -1
- package/dist/services/plugin-manager.d.ts +0 -105
- package/dist/services/plugin-manager.d.ts.map +0 -1
- package/dist/services/plugin-manager.js +0 -250
- package/dist/services/plugin-manager.js.map +0 -1
- package/dist/services/plugin-state-backend.d.ts +0 -22
- package/dist/services/plugin-state-backend.d.ts.map +0 -1
- package/dist/services/plugin-state-backend.js +0 -103
- package/dist/services/plugin-state-backend.js.map +0 -1
- package/dist/services/plugin-state-external.d.ts +0 -36
- package/dist/services/plugin-state-external.d.ts.map +0 -1
- package/dist/services/plugin-state-external.js +0 -144
- package/dist/services/plugin-state-external.js.map +0 -1
- package/dist/services/plugin-state-router.d.ts +0 -40
- package/dist/services/plugin-state-router.d.ts.map +0 -1
- package/dist/services/plugin-state-router.js +0 -82
- package/dist/services/plugin-state-router.js.map +0 -1
- package/dist/services/port-utils.d.ts +0 -11
- package/dist/services/port-utils.d.ts.map +0 -1
- package/dist/services/port-utils.js +0 -39
- package/dist/services/port-utils.js.map +0 -1
- package/dist/services/service-manager.d.ts +0 -50
- package/dist/services/service-manager.d.ts.map +0 -1
- package/dist/services/service-manager.js +0 -389
- package/dist/services/service-manager.js.map +0 -1
package/dist/services/logger.js
DELETED
|
@@ -1,223 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Structured Logger with Rotation for VibeControls Agent
|
|
3
|
-
*
|
|
4
|
-
* Features:
|
|
5
|
-
* - JSON-structured log entries written to ~/.vibecontrols/logs/agent.log
|
|
6
|
-
* - Dual rotation: daily OR 10MB (whichever comes first)
|
|
7
|
-
* - Keeps 7 rotated files (agent.log.1 … agent.log.7)
|
|
8
|
-
* - Log levels: debug, info, warn, error
|
|
9
|
-
* - Each entry: { timestamp, level, source, message, metadata? }
|
|
10
|
-
* - SSE-compatible: exposes a tailable event stream for real-time consumption
|
|
11
|
-
* - Also mirrors to console (with color) in development mode
|
|
12
|
-
*/
|
|
13
|
-
import { existsSync, mkdirSync, statSync, renameSync, unlinkSync, createWriteStream, createReadStream, } from "node:fs";
|
|
14
|
-
import { join } from "node:path";
|
|
15
|
-
import os from "node:os";
|
|
16
|
-
import { EventEmitter } from "node:events";
|
|
17
|
-
import { createInterface } from "node:readline";
|
|
18
|
-
// ── Constants ────────────────────────────────────────────────────────────
|
|
19
|
-
const LOG_DIR = join(os.homedir(), ".vibecontrols", "logs");
|
|
20
|
-
const LOG_FILE = join(LOG_DIR, "agent.log");
|
|
21
|
-
const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10 MB
|
|
22
|
-
const MAX_ROTATED_FILES = 7;
|
|
23
|
-
const LEVEL_PRIORITY = {
|
|
24
|
-
debug: 0,
|
|
25
|
-
info: 1,
|
|
26
|
-
warn: 2,
|
|
27
|
-
error: 3,
|
|
28
|
-
};
|
|
29
|
-
// Console colors (ANSI)
|
|
30
|
-
const COLORS = {
|
|
31
|
-
debug: "\x1b[90m", // gray
|
|
32
|
-
info: "\x1b[36m", // cyan
|
|
33
|
-
warn: "\x1b[33m", // yellow
|
|
34
|
-
error: "\x1b[31m", // red
|
|
35
|
-
};
|
|
36
|
-
const RESET = "\x1b[0m";
|
|
37
|
-
// ── Logger Class ─────────────────────────────────────────────────────────
|
|
38
|
-
class AgentLogger extends EventEmitter {
|
|
39
|
-
writeStream = null;
|
|
40
|
-
currentDay = "";
|
|
41
|
-
minLevel;
|
|
42
|
-
consoleOutput;
|
|
43
|
-
constructor() {
|
|
44
|
-
super();
|
|
45
|
-
this.setMaxListeners(100); // Allow many SSE clients
|
|
46
|
-
this.minLevel = process.env.LOG_LEVEL ?? "info";
|
|
47
|
-
this.consoleOutput =
|
|
48
|
-
process.env.NODE_ENV === "development" ||
|
|
49
|
-
process.env.LOG_CONSOLE === "true";
|
|
50
|
-
this.ensureLogDir();
|
|
51
|
-
this.openStream();
|
|
52
|
-
}
|
|
53
|
-
// ── Public API ─────────────────────────────────────────────────────
|
|
54
|
-
debug(source, message, metadata) {
|
|
55
|
-
this.log("debug", source, message, metadata);
|
|
56
|
-
}
|
|
57
|
-
info(source, message, metadata) {
|
|
58
|
-
this.log("info", source, message, metadata);
|
|
59
|
-
}
|
|
60
|
-
warn(source, message, metadata) {
|
|
61
|
-
this.log("warn", source, message, metadata);
|
|
62
|
-
}
|
|
63
|
-
error(source, message, metadata) {
|
|
64
|
-
this.log("error", source, message, metadata);
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Set the minimum log level at runtime.
|
|
68
|
-
*/
|
|
69
|
-
setLevel(level) {
|
|
70
|
-
this.minLevel = level;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Read historical log entries from the current log file.
|
|
74
|
-
*/
|
|
75
|
-
async readHistory(options) {
|
|
76
|
-
const { level, source, from, to, limit = 200, offset = 0 } = options ?? {};
|
|
77
|
-
const entries = [];
|
|
78
|
-
if (!existsSync(LOG_FILE))
|
|
79
|
-
return entries;
|
|
80
|
-
return new Promise((resolve) => {
|
|
81
|
-
const rl = createInterface({ input: createReadStream(LOG_FILE, "utf8") });
|
|
82
|
-
let skipped = 0;
|
|
83
|
-
rl.on("line", (line) => {
|
|
84
|
-
if (entries.length >= limit) {
|
|
85
|
-
rl.close();
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
try {
|
|
89
|
-
const entry = JSON.parse(line);
|
|
90
|
-
// Apply filters
|
|
91
|
-
if (level && LEVEL_PRIORITY[entry.level] < LEVEL_PRIORITY[level])
|
|
92
|
-
return;
|
|
93
|
-
if (source && !entry.source.includes(source))
|
|
94
|
-
return;
|
|
95
|
-
if (from && entry.timestamp < from)
|
|
96
|
-
return;
|
|
97
|
-
if (to && entry.timestamp > to)
|
|
98
|
-
return;
|
|
99
|
-
if (skipped < offset) {
|
|
100
|
-
skipped++;
|
|
101
|
-
return;
|
|
102
|
-
}
|
|
103
|
-
entries.push(entry);
|
|
104
|
-
}
|
|
105
|
-
catch {
|
|
106
|
-
// Skip malformed lines
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
rl.on("close", () => resolve(entries));
|
|
110
|
-
rl.on("error", () => resolve(entries));
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Gracefully close the write stream.
|
|
115
|
-
*/
|
|
116
|
-
close() {
|
|
117
|
-
if (this.writeStream) {
|
|
118
|
-
this.writeStream.end();
|
|
119
|
-
this.writeStream = null;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
// ── Internal ───────────────────────────────────────────────────────
|
|
123
|
-
log(level, source, message, metadata) {
|
|
124
|
-
if (LEVEL_PRIORITY[level] < LEVEL_PRIORITY[this.minLevel])
|
|
125
|
-
return;
|
|
126
|
-
const entry = {
|
|
127
|
-
timestamp: new Date().toISOString(),
|
|
128
|
-
level,
|
|
129
|
-
source,
|
|
130
|
-
message,
|
|
131
|
-
...(metadata && Object.keys(metadata).length > 0 ? { metadata } : {}),
|
|
132
|
-
};
|
|
133
|
-
// Write to file
|
|
134
|
-
this.writeToFile(entry);
|
|
135
|
-
// Emit for SSE listeners
|
|
136
|
-
this.emit("log", entry);
|
|
137
|
-
// Console output (development mode)
|
|
138
|
-
if (this.consoleOutput) {
|
|
139
|
-
const color = COLORS[level];
|
|
140
|
-
const levelTag = level.toUpperCase().padEnd(5);
|
|
141
|
-
const sourceTag = source ? ` [${source}]` : "";
|
|
142
|
-
const metaStr = metadata && Object.keys(metadata).length > 0
|
|
143
|
-
? ` ${JSON.stringify(metadata)}`
|
|
144
|
-
: "";
|
|
145
|
-
const ts = entry.timestamp.split("T")[1]?.slice(0, 12) ?? entry.timestamp;
|
|
146
|
-
process.stdout.write(`${color}${ts} ${levelTag}${RESET}${sourceTag} ${message}${metaStr}\n`);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
writeToFile(entry) {
|
|
150
|
-
this.checkRotation();
|
|
151
|
-
if (!this.writeStream) {
|
|
152
|
-
this.openStream();
|
|
153
|
-
}
|
|
154
|
-
const line = JSON.stringify(entry) + "\n";
|
|
155
|
-
this.writeStream?.write(line);
|
|
156
|
-
}
|
|
157
|
-
checkRotation() {
|
|
158
|
-
const today = new Date().toISOString().split("T")[0];
|
|
159
|
-
// Daily rotation
|
|
160
|
-
if (this.currentDay && this.currentDay !== today) {
|
|
161
|
-
this.rotate();
|
|
162
|
-
this.currentDay = today;
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
this.currentDay = today;
|
|
166
|
-
// Size rotation
|
|
167
|
-
try {
|
|
168
|
-
if (existsSync(LOG_FILE)) {
|
|
169
|
-
const stats = statSync(LOG_FILE);
|
|
170
|
-
if (stats.size >= MAX_FILE_SIZE) {
|
|
171
|
-
this.rotate();
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
catch {
|
|
176
|
-
// stat failed — skip
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
rotate() {
|
|
180
|
-
this.closeStream();
|
|
181
|
-
// Shift existing rotated files: agent.log.6 → agent.log.7, ..., agent.log.1 → agent.log.2
|
|
182
|
-
for (let i = MAX_ROTATED_FILES; i >= 1; i--) {
|
|
183
|
-
const from = i === 1 ? LOG_FILE : `${LOG_FILE}.${i - 1}`;
|
|
184
|
-
const to = `${LOG_FILE}.${i}`;
|
|
185
|
-
try {
|
|
186
|
-
if (existsSync(from)) {
|
|
187
|
-
if (i === MAX_ROTATED_FILES && existsSync(to)) {
|
|
188
|
-
// Delete the oldest rotated file
|
|
189
|
-
unlinkSync(to);
|
|
190
|
-
}
|
|
191
|
-
renameSync(from, to);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
catch {
|
|
195
|
-
// Best-effort rotation
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
this.openStream();
|
|
199
|
-
}
|
|
200
|
-
ensureLogDir() {
|
|
201
|
-
if (!existsSync(LOG_DIR)) {
|
|
202
|
-
mkdirSync(LOG_DIR, { recursive: true });
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
openStream() {
|
|
206
|
-
this.ensureLogDir();
|
|
207
|
-
this.writeStream = createWriteStream(LOG_FILE, {
|
|
208
|
-
flags: "a",
|
|
209
|
-
encoding: "utf8",
|
|
210
|
-
});
|
|
211
|
-
this.currentDay = new Date().toISOString().split("T")[0];
|
|
212
|
-
}
|
|
213
|
-
closeStream() {
|
|
214
|
-
if (this.writeStream) {
|
|
215
|
-
this.writeStream.end();
|
|
216
|
-
this.writeStream = null;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
// ── Singleton Export ──────────────────────────────────────────────────────
|
|
221
|
-
export const logger = new AgentLogger();
|
|
222
|
-
export default logger;
|
|
223
|
-
//# sourceMappingURL=logger.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/services/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import type { FastifyInstance } from "fastify";
|
|
2
|
-
import type { Command } from "commander";
|
|
3
|
-
/**
|
|
4
|
-
* A vibe plugin can extend the CLI (commands), the server (routes), or both.
|
|
5
|
-
* Plugins are npm packages that export a `vibePlugin` object conforming to
|
|
6
|
-
* this interface.
|
|
7
|
-
*/
|
|
8
|
-
export interface VibePlugin {
|
|
9
|
-
/** Unique plugin name (e.g. "ssh", "ai") */
|
|
10
|
-
name: string;
|
|
11
|
-
/** Semver version string */
|
|
12
|
-
version: string;
|
|
13
|
-
/** Short description */
|
|
14
|
-
description?: string;
|
|
15
|
-
/**
|
|
16
|
-
* Called when the CLI is being set up (before `program.parse()`).
|
|
17
|
-
* Plugins can register additional commands here.
|
|
18
|
-
*/
|
|
19
|
-
onCliSetup?: (program: Command) => void | Promise<void>;
|
|
20
|
-
/**
|
|
21
|
-
* Called after the Fastify server is created but before it starts listening.
|
|
22
|
-
* Plugins can register routes, hooks, and decorations here.
|
|
23
|
-
*/
|
|
24
|
-
onServerStart?: (app: FastifyInstance) => void | Promise<void>;
|
|
25
|
-
/**
|
|
26
|
-
* Called when the server is shutting down (Fastify `onClose` hook).
|
|
27
|
-
*/
|
|
28
|
-
onServerStop?: (app: FastifyInstance) => void | Promise<void>;
|
|
29
|
-
}
|
|
30
|
-
export interface PluginEntry {
|
|
31
|
-
/** npm package name (e.g. "@burdenoff/vibe-plugin-ssh") */
|
|
32
|
-
packageName: string;
|
|
33
|
-
/** Installed version */
|
|
34
|
-
version: string;
|
|
35
|
-
/** Resolved plugin name from the plugin's `name` field */
|
|
36
|
-
pluginName: string;
|
|
37
|
-
/** When the plugin was installed */
|
|
38
|
-
installedAt: string;
|
|
39
|
-
}
|
|
40
|
-
export declare class PluginManager {
|
|
41
|
-
private configDir;
|
|
42
|
-
private registryPath;
|
|
43
|
-
private plugins;
|
|
44
|
-
constructor();
|
|
45
|
-
loadRegistry(): PluginEntry[];
|
|
46
|
-
private saveRegistry;
|
|
47
|
-
install(packageName: string): Promise<PluginEntry>;
|
|
48
|
-
remove(packageName: string): Promise<void>;
|
|
49
|
-
/**
|
|
50
|
-
* Install a plugin by package name and immediately load it into the
|
|
51
|
-
* running server without restarting. Calls `onServerStart` on the new plugin.
|
|
52
|
-
*/
|
|
53
|
-
installAndLoad(packageName: string, app?: FastifyInstance): Promise<PluginEntry>;
|
|
54
|
-
/**
|
|
55
|
-
* Remove a plugin and unload it from the running server.
|
|
56
|
-
* Calls `onServerStop` before removal.
|
|
57
|
-
*/
|
|
58
|
-
removeAndUnload(packageName: string, app?: FastifyInstance): Promise<void>;
|
|
59
|
-
/**
|
|
60
|
-
* Reload all plugins. Calls onServerStop on current plugins, clears them,
|
|
61
|
-
* reloads from registry, and calls onServerStart on newly loaded plugins.
|
|
62
|
-
*/
|
|
63
|
-
reloadAll(app?: FastifyInstance): Promise<void>;
|
|
64
|
-
/**
|
|
65
|
-
* Get detailed information about all plugins (registry + loaded state).
|
|
66
|
-
*/
|
|
67
|
-
getPluginDetails(): Array<{
|
|
68
|
-
packageName: string;
|
|
69
|
-
pluginName: string;
|
|
70
|
-
version: string;
|
|
71
|
-
installedAt: string;
|
|
72
|
-
loaded: boolean;
|
|
73
|
-
description?: string;
|
|
74
|
-
hasCliSetup: boolean;
|
|
75
|
-
hasServerStart: boolean;
|
|
76
|
-
hasServerStop: boolean;
|
|
77
|
-
}>;
|
|
78
|
-
/**
|
|
79
|
-
* Load a plugin from an npm package name. Returns null if the package
|
|
80
|
-
* doesn't export a valid `vibePlugin`.
|
|
81
|
-
*/
|
|
82
|
-
private loadPluginFromPackage;
|
|
83
|
-
/**
|
|
84
|
-
* Load all registered plugins. Silently skips plugins that fail to load.
|
|
85
|
-
*/
|
|
86
|
-
loadAll(): Promise<void>;
|
|
87
|
-
/**
|
|
88
|
-
* Get all loaded plugins.
|
|
89
|
-
*/
|
|
90
|
-
getLoadedPlugins(): VibePlugin[];
|
|
91
|
-
/**
|
|
92
|
-
* Call `onCliSetup` on all loaded plugins.
|
|
93
|
-
*/
|
|
94
|
-
dispatchCliSetup(program: Command): Promise<void>;
|
|
95
|
-
/**
|
|
96
|
-
* Call `onServerStart` on all loaded plugins.
|
|
97
|
-
*/
|
|
98
|
-
dispatchServerStart(app: FastifyInstance): Promise<void>;
|
|
99
|
-
/**
|
|
100
|
-
* Call `onServerStop` on all loaded plugins.
|
|
101
|
-
*/
|
|
102
|
-
dispatchServerStop(app: FastifyInstance): Promise<void>;
|
|
103
|
-
}
|
|
104
|
-
export declare const pluginManager: PluginManager;
|
|
105
|
-
//# sourceMappingURL=plugin-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-manager.d.ts","sourceRoot":"","sources":["../../src/services/plugin-manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExD;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/D;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAID,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;CACrB;AAID,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAsC;;IAUrD,YAAY,IAAI,WAAW,EAAE;IAS7B,OAAO,CAAC,YAAY;IAMd,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAuClD,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBhD;;;OAGG;IACG,cAAc,CAClB,WAAW,EAAE,MAAM,EACnB,GAAG,CAAC,EAAE,eAAe,GACpB,OAAO,CAAC,WAAW,CAAC;IAgBvB;;;OAGG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,GAAG,CAAC,EAAE,eAAe,GACpB,OAAO,CAAC,IAAI,CAAC;IAwBhB;;;OAGG;IACG,SAAS,CAAC,GAAG,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrD;;OAEG;IACH,gBAAgB,IAAI,KAAK,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,OAAO,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,OAAO,CAAC;QACrB,cAAc,EAAE,OAAO,CAAC;QACxB,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IAoBF;;;OAGG;YACW,qBAAqB;IAiBnC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB9B;;OAEG;IACH,gBAAgB,IAAI,UAAU,EAAE;IAMhC;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAcvD;;OAEG;IACG,mBAAmB,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9D;;OAEG;IACG,kBAAkB,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CAa9D;AAGD,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "fs";
|
|
2
|
-
import { join } from "path";
|
|
3
|
-
import { homedir } from "os";
|
|
4
|
-
import logger from "./logger.js";
|
|
5
|
-
// ── Plugin Manager ───────────────────────────────────────────────────────────
|
|
6
|
-
export class PluginManager {
|
|
7
|
-
configDir;
|
|
8
|
-
registryPath;
|
|
9
|
-
plugins = new Map();
|
|
10
|
-
constructor() {
|
|
11
|
-
this.configDir = join(homedir(), ".vibecontrols");
|
|
12
|
-
this.registryPath = join(this.configDir, "plugins.json");
|
|
13
|
-
mkdirSync(this.configDir, { recursive: true });
|
|
14
|
-
}
|
|
15
|
-
// ── Registry Persistence ─────────────────────────────────────────────
|
|
16
|
-
loadRegistry() {
|
|
17
|
-
if (!existsSync(this.registryPath))
|
|
18
|
-
return [];
|
|
19
|
-
try {
|
|
20
|
-
return JSON.parse(readFileSync(this.registryPath, "utf8"));
|
|
21
|
-
}
|
|
22
|
-
catch {
|
|
23
|
-
return [];
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
saveRegistry(entries) {
|
|
27
|
-
writeFileSync(this.registryPath, JSON.stringify(entries, null, 2));
|
|
28
|
-
}
|
|
29
|
-
// ── Install / Remove ─────────────────────────────────────────────────
|
|
30
|
-
async install(packageName) {
|
|
31
|
-
const { execSync } = await import("child_process");
|
|
32
|
-
// Install the package globally alongside vibe-agent
|
|
33
|
-
logger.info("plugin", `Installing ${packageName}`, { packageName });
|
|
34
|
-
try {
|
|
35
|
-
execSync(`npm install -g ${packageName}`, {
|
|
36
|
-
stdio: "inherit",
|
|
37
|
-
timeout: 120000,
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
catch {
|
|
41
|
-
throw new Error(`Failed to install ${packageName}`);
|
|
42
|
-
}
|
|
43
|
-
// Try to load the plugin to get its metadata
|
|
44
|
-
const plugin = await this.loadPluginFromPackage(packageName);
|
|
45
|
-
if (!plugin) {
|
|
46
|
-
throw new Error(`${packageName} does not export a valid vibePlugin object`);
|
|
47
|
-
}
|
|
48
|
-
// Save to registry
|
|
49
|
-
const entry = {
|
|
50
|
-
packageName,
|
|
51
|
-
version: plugin.version,
|
|
52
|
-
pluginName: plugin.name,
|
|
53
|
-
installedAt: new Date().toISOString(),
|
|
54
|
-
};
|
|
55
|
-
const registry = this.loadRegistry().filter((e) => e.packageName !== packageName);
|
|
56
|
-
registry.push(entry);
|
|
57
|
-
this.saveRegistry(registry);
|
|
58
|
-
return entry;
|
|
59
|
-
}
|
|
60
|
-
async remove(packageName) {
|
|
61
|
-
const { execSync } = await import("child_process");
|
|
62
|
-
// Uninstall the package
|
|
63
|
-
logger.info("plugin", `Removing ${packageName}`, { packageName });
|
|
64
|
-
try {
|
|
65
|
-
execSync(`npm uninstall -g ${packageName}`, {
|
|
66
|
-
stdio: "inherit",
|
|
67
|
-
timeout: 60000,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
// May already be uninstalled — continue to clean registry
|
|
72
|
-
}
|
|
73
|
-
// Remove from registry
|
|
74
|
-
const registry = this.loadRegistry().filter((e) => e.packageName !== packageName);
|
|
75
|
-
this.saveRegistry(registry);
|
|
76
|
-
}
|
|
77
|
-
// ── Install & Load (Hot-reload single plugin) ───────────────────────
|
|
78
|
-
/**
|
|
79
|
-
* Install a plugin by package name and immediately load it into the
|
|
80
|
-
* running server without restarting. Calls `onServerStart` on the new plugin.
|
|
81
|
-
*/
|
|
82
|
-
async installAndLoad(packageName, app) {
|
|
83
|
-
const entry = await this.install(packageName);
|
|
84
|
-
// Load the plugin into memory
|
|
85
|
-
const plugin = await this.loadPluginFromPackage(packageName);
|
|
86
|
-
if (plugin) {
|
|
87
|
-
this.plugins.set(plugin.name, plugin);
|
|
88
|
-
// Dispatch server lifecycle if app is provided
|
|
89
|
-
if (app && plugin.onServerStart) {
|
|
90
|
-
await plugin.onServerStart(app);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return entry;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Remove a plugin and unload it from the running server.
|
|
97
|
-
* Calls `onServerStop` before removal.
|
|
98
|
-
*/
|
|
99
|
-
async removeAndUnload(packageName, app) {
|
|
100
|
-
// Find the loaded plugin by package name
|
|
101
|
-
const registry = this.loadRegistry();
|
|
102
|
-
const entry = registry.find((e) => e.packageName === packageName);
|
|
103
|
-
if (entry) {
|
|
104
|
-
const plugin = this.plugins.get(entry.pluginName);
|
|
105
|
-
if (plugin && app && plugin.onServerStop) {
|
|
106
|
-
try {
|
|
107
|
-
await plugin.onServerStop(app);
|
|
108
|
-
}
|
|
109
|
-
catch (err) {
|
|
110
|
-
console.warn(` ⚠ Plugin '${plugin.name}' onServerStop error during unload: ${err instanceof Error ? err.message : err}`);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
if (plugin) {
|
|
114
|
-
this.plugins.delete(plugin.name);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
await this.remove(packageName);
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Reload all plugins. Calls onServerStop on current plugins, clears them,
|
|
121
|
-
* reloads from registry, and calls onServerStart on newly loaded plugins.
|
|
122
|
-
*/
|
|
123
|
-
async reloadAll(app) {
|
|
124
|
-
// Stop all current plugins
|
|
125
|
-
if (app) {
|
|
126
|
-
await this.dispatchServerStop(app);
|
|
127
|
-
}
|
|
128
|
-
// Clear in-memory plugins
|
|
129
|
-
this.plugins.clear();
|
|
130
|
-
// Reload from registry
|
|
131
|
-
await this.loadAll();
|
|
132
|
-
// Start all newly loaded plugins
|
|
133
|
-
if (app) {
|
|
134
|
-
await this.dispatchServerStart(app);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Get detailed information about all plugins (registry + loaded state).
|
|
139
|
-
*/
|
|
140
|
-
getPluginDetails() {
|
|
141
|
-
const registry = this.loadRegistry();
|
|
142
|
-
return registry.map((entry) => {
|
|
143
|
-
const loaded = this.plugins.get(entry.pluginName);
|
|
144
|
-
return {
|
|
145
|
-
packageName: entry.packageName,
|
|
146
|
-
pluginName: entry.pluginName,
|
|
147
|
-
version: entry.version,
|
|
148
|
-
installedAt: entry.installedAt,
|
|
149
|
-
loaded: !!loaded,
|
|
150
|
-
description: loaded?.description,
|
|
151
|
-
hasCliSetup: !!loaded?.onCliSetup,
|
|
152
|
-
hasServerStart: !!loaded?.onServerStart,
|
|
153
|
-
hasServerStop: !!loaded?.onServerStop,
|
|
154
|
-
};
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
// ── Plugin Loading ───────────────────────────────────────────────────
|
|
158
|
-
/**
|
|
159
|
-
* Load a plugin from an npm package name. Returns null if the package
|
|
160
|
-
* doesn't export a valid `vibePlugin`.
|
|
161
|
-
*/
|
|
162
|
-
async loadPluginFromPackage(packageName) {
|
|
163
|
-
try {
|
|
164
|
-
const mod = await import(packageName);
|
|
165
|
-
const plugin = mod.vibePlugin || mod.default?.vibePlugin || mod.default;
|
|
166
|
-
if (plugin && typeof plugin.name === "string" && plugin.version) {
|
|
167
|
-
return plugin;
|
|
168
|
-
}
|
|
169
|
-
return null;
|
|
170
|
-
}
|
|
171
|
-
catch {
|
|
172
|
-
return null;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Load all registered plugins. Silently skips plugins that fail to load.
|
|
177
|
-
*/
|
|
178
|
-
async loadAll() {
|
|
179
|
-
const registry = this.loadRegistry();
|
|
180
|
-
for (const entry of registry) {
|
|
181
|
-
try {
|
|
182
|
-
const plugin = await this.loadPluginFromPackage(entry.packageName);
|
|
183
|
-
if (plugin) {
|
|
184
|
-
this.plugins.set(plugin.name, plugin);
|
|
185
|
-
}
|
|
186
|
-
else {
|
|
187
|
-
console.warn(` ⚠ Plugin ${entry.packageName} could not be loaded (missing or invalid)`);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
catch (err) {
|
|
191
|
-
console.warn(` ⚠ Plugin ${entry.packageName} failed to load: ${err instanceof Error ? err.message : err}`);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Get all loaded plugins.
|
|
197
|
-
*/
|
|
198
|
-
getLoadedPlugins() {
|
|
199
|
-
return Array.from(this.plugins.values());
|
|
200
|
-
}
|
|
201
|
-
// ── Lifecycle Dispatch ───────────────────────────────────────────────
|
|
202
|
-
/**
|
|
203
|
-
* Call `onCliSetup` on all loaded plugins.
|
|
204
|
-
*/
|
|
205
|
-
async dispatchCliSetup(program) {
|
|
206
|
-
for (const plugin of this.plugins.values()) {
|
|
207
|
-
if (plugin.onCliSetup) {
|
|
208
|
-
try {
|
|
209
|
-
await plugin.onCliSetup(program);
|
|
210
|
-
}
|
|
211
|
-
catch (err) {
|
|
212
|
-
console.warn(` ⚠ Plugin '${plugin.name}' onCliSetup error: ${err instanceof Error ? err.message : err}`);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Call `onServerStart` on all loaded plugins.
|
|
219
|
-
*/
|
|
220
|
-
async dispatchServerStart(app) {
|
|
221
|
-
for (const plugin of this.plugins.values()) {
|
|
222
|
-
if (plugin.onServerStart) {
|
|
223
|
-
try {
|
|
224
|
-
await plugin.onServerStart(app);
|
|
225
|
-
}
|
|
226
|
-
catch (err) {
|
|
227
|
-
console.warn(` ⚠ Plugin '${plugin.name}' onServerStart error: ${err instanceof Error ? err.message : err}`);
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Call `onServerStop` on all loaded plugins.
|
|
234
|
-
*/
|
|
235
|
-
async dispatchServerStop(app) {
|
|
236
|
-
for (const plugin of this.plugins.values()) {
|
|
237
|
-
if (plugin.onServerStop) {
|
|
238
|
-
try {
|
|
239
|
-
await plugin.onServerStop(app);
|
|
240
|
-
}
|
|
241
|
-
catch (err) {
|
|
242
|
-
console.warn(` ⚠ Plugin '${plugin.name}' onServerStop error: ${err instanceof Error ? err.message : err}`);
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
// Singleton instance
|
|
249
|
-
export const pluginManager = new PluginManager();
|
|
250
|
-
//# sourceMappingURL=plugin-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-manager.js","sourceRoot":"","sources":["../../src/services/plugin-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Remote Plugin State Backend — stores state in the vibecontrols backend
|
|
3
|
-
* via the workspace GraphQL gateway using the Configuration module.
|
|
4
|
-
*
|
|
5
|
-
* Keys are namespaced: `pluginState:{pluginName}:{key}`
|
|
6
|
-
* Scope: AGENT, scopeId: agent's machine hostname or configured agentId.
|
|
7
|
-
*/
|
|
8
|
-
export interface PluginStateEntry {
|
|
9
|
-
key: string;
|
|
10
|
-
value: string;
|
|
11
|
-
}
|
|
12
|
-
export declare class RemotePluginStateBackend {
|
|
13
|
-
private agentId;
|
|
14
|
-
constructor(agentId: string);
|
|
15
|
-
private configKey;
|
|
16
|
-
getAll(pluginName: string): Promise<PluginStateEntry[]>;
|
|
17
|
-
get(pluginName: string, key: string): Promise<string | undefined>;
|
|
18
|
-
set(pluginName: string, key: string, value: string): Promise<void>;
|
|
19
|
-
delete(pluginName: string, key: string): Promise<boolean>;
|
|
20
|
-
deleteAll(pluginName: string): Promise<number>;
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=plugin-state-backend.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-state-backend.d.ts","sourceRoot":"","sources":["../../src/services/plugin-state-backend.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAID,qBAAa,wBAAwB;IACnC,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM;IAI3B,OAAO,CAAC,SAAS;IAIX,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAuCvD,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAwBjE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBlE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBzD,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CASrD"}
|