@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.
Files changed (164) hide show
  1. package/dist/app-31chs2a1.js +17180 -0
  2. package/dist/app-31chs2a1.js.map +170 -0
  3. package/dist/chunk-pm1hna8x-473akrq0.js +16826 -0
  4. package/dist/chunk-pm1hna8x-473akrq0.js.map +11 -0
  5. package/dist/cli.js +4686 -1146
  6. package/dist/cli.js.map +51 -1
  7. package/dist/highlights-eq9cgrbb.scm +604 -0
  8. package/dist/highlights-ghv9g403.scm +205 -0
  9. package/dist/highlights-hk7bwhj4.scm +284 -0
  10. package/dist/highlights-r812a2qc.scm +150 -0
  11. package/dist/highlights-x6tmsnaa.scm +115 -0
  12. package/dist/index-5xngv42g.js +2546 -0
  13. package/dist/index-5xngv42g.js.map +26 -0
  14. package/dist/index-6aq4nc58.js +11429 -0
  15. package/dist/index-6aq4nc58.js.map +21 -0
  16. package/dist/index-ac2ebaf8.js +4 -0
  17. package/dist/index-ac2ebaf8.js.map +9 -0
  18. package/dist/index-g8dczzvv.js +33 -0
  19. package/dist/index-g8dczzvv.js.map +9 -0
  20. package/dist/index-gmz54dkc.js +28402 -0
  21. package/dist/index-gmz54dkc.js.map +11 -0
  22. package/dist/index-t06ktmx9.js +216 -0
  23. package/dist/index-t06ktmx9.js.map +11 -0
  24. package/dist/index.js +69 -87
  25. package/dist/index.js.map +10 -1
  26. package/dist/injections-73j83es3.scm +27 -0
  27. package/dist/package-0158fp3w.js +136 -0
  28. package/dist/package-0158fp3w.js.map +9 -0
  29. package/dist/plugin-system-bg1pzjj9.js +453 -0
  30. package/dist/plugin-system-bg1pzjj9.js.map +11 -0
  31. package/dist/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
  32. package/dist/tree-sitter-markdown-411r6y9b.wasm +0 -0
  33. package/dist/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
  34. package/dist/tree-sitter-typescript-zxjzwt75.wasm +0 -0
  35. package/dist/tree-sitter-zig-e78zbjpm.wasm +0 -0
  36. package/package.json +33 -44
  37. package/dist/app.d.ts +0 -15
  38. package/dist/app.d.ts.map +0 -1
  39. package/dist/app.js +0 -600
  40. package/dist/app.js.map +0 -1
  41. package/dist/cli.d.ts +0 -3
  42. package/dist/cli.d.ts.map +0 -1
  43. package/dist/db/schema.d.ts +0 -121
  44. package/dist/db/schema.d.ts.map +0 -1
  45. package/dist/db/schema.js +0 -473
  46. package/dist/db/schema.js.map +0 -1
  47. package/dist/index.d.ts +0 -2
  48. package/dist/index.d.ts.map +0 -1
  49. package/dist/middleware/ModuleAuth.d.ts +0 -61
  50. package/dist/middleware/ModuleAuth.d.ts.map +0 -1
  51. package/dist/middleware/ModuleAuth.js +0 -223
  52. package/dist/middleware/ModuleAuth.js.map +0 -1
  53. package/dist/middleware/auth.d.ts +0 -3
  54. package/dist/middleware/auth.d.ts.map +0 -1
  55. package/dist/middleware/auth.js +0 -11
  56. package/dist/middleware/auth.js.map +0 -1
  57. package/dist/migrations/remove-notes-prompts.d.ts +0 -13
  58. package/dist/migrations/remove-notes-prompts.d.ts.map +0 -1
  59. package/dist/migrations/remove-notes-prompts.js +0 -148
  60. package/dist/migrations/remove-notes-prompts.js.map +0 -1
  61. package/dist/routes/bookmarks.d.ts +0 -3
  62. package/dist/routes/bookmarks.d.ts.map +0 -1
  63. package/dist/routes/bookmarks.js +0 -195
  64. package/dist/routes/bookmarks.js.map +0 -1
  65. package/dist/routes/config.d.ts +0 -3
  66. package/dist/routes/config.d.ts.map +0 -1
  67. package/dist/routes/config.js +0 -106
  68. package/dist/routes/config.js.map +0 -1
  69. package/dist/routes/files.d.ts +0 -3
  70. package/dist/routes/files.d.ts.map +0 -1
  71. package/dist/routes/files.js +0 -313
  72. package/dist/routes/files.js.map +0 -1
  73. package/dist/routes/git.d.ts +0 -3
  74. package/dist/routes/git.d.ts.map +0 -1
  75. package/dist/routes/git.js +0 -427
  76. package/dist/routes/git.js.map +0 -1
  77. package/dist/routes/logs.d.ts +0 -9
  78. package/dist/routes/logs.d.ts.map +0 -1
  79. package/dist/routes/logs.js +0 -107
  80. package/dist/routes/logs.js.map +0 -1
  81. package/dist/routes/moduleRegistry.d.ts +0 -41
  82. package/dist/routes/moduleRegistry.d.ts.map +0 -1
  83. package/dist/routes/moduleRegistry.js +0 -356
  84. package/dist/routes/moduleRegistry.js.map +0 -1
  85. package/dist/routes/notifications.d.ts +0 -3
  86. package/dist/routes/notifications.d.ts.map +0 -1
  87. package/dist/routes/notifications.js +0 -255
  88. package/dist/routes/notifications.js.map +0 -1
  89. package/dist/routes/plugin-state.d.ts +0 -19
  90. package/dist/routes/plugin-state.d.ts.map +0 -1
  91. package/dist/routes/plugin-state.js +0 -139
  92. package/dist/routes/plugin-state.js.map +0 -1
  93. package/dist/routes/plugins.d.ts +0 -3
  94. package/dist/routes/plugins.d.ts.map +0 -1
  95. package/dist/routes/plugins.js +0 -118
  96. package/dist/routes/plugins.js.map +0 -1
  97. package/dist/routes/projects.d.ts +0 -3
  98. package/dist/routes/projects.d.ts.map +0 -1
  99. package/dist/routes/projects.js +0 -456
  100. package/dist/routes/projects.js.map +0 -1
  101. package/dist/routes/tasks.d.ts +0 -3
  102. package/dist/routes/tasks.d.ts.map +0 -1
  103. package/dist/routes/tasks.js +0 -187
  104. package/dist/routes/tasks.js.map +0 -1
  105. package/dist/routes/tmux.d.ts +0 -3
  106. package/dist/routes/tmux.d.ts.map +0 -1
  107. package/dist/routes/tmux.js +0 -1287
  108. package/dist/routes/tmux.js.map +0 -1
  109. package/dist/routes/tunnel.d.ts +0 -25
  110. package/dist/routes/tunnel.d.ts.map +0 -1
  111. package/dist/routes/tunnel.js +0 -498
  112. package/dist/routes/tunnel.js.map +0 -1
  113. package/dist/services/ModulePermissions.d.ts +0 -100
  114. package/dist/services/ModulePermissions.d.ts.map +0 -1
  115. package/dist/services/ModulePermissions.js +0 -322
  116. package/dist/services/ModulePermissions.js.map +0 -1
  117. package/dist/services/ModuleRegistryService.d.ts +0 -152
  118. package/dist/services/ModuleRegistryService.d.ts.map +0 -1
  119. package/dist/services/ModuleRegistryService.js +0 -547
  120. package/dist/services/ModuleRegistryService.js.map +0 -1
  121. package/dist/services/agent.service.d.ts +0 -19
  122. package/dist/services/agent.service.d.ts.map +0 -1
  123. package/dist/services/agent.service.js +0 -91
  124. package/dist/services/agent.service.js.map +0 -1
  125. package/dist/services/bootstrap.d.ts +0 -22
  126. package/dist/services/bootstrap.d.ts.map +0 -1
  127. package/dist/services/bootstrap.js +0 -283
  128. package/dist/services/bootstrap.js.map +0 -1
  129. package/dist/services/completion.d.ts +0 -46
  130. package/dist/services/completion.d.ts.map +0 -1
  131. package/dist/services/completion.js +0 -317
  132. package/dist/services/completion.js.map +0 -1
  133. package/dist/services/gateway-client.d.ts +0 -61
  134. package/dist/services/gateway-client.d.ts.map +0 -1
  135. package/dist/services/gateway-client.js +0 -147
  136. package/dist/services/gateway-client.js.map +0 -1
  137. package/dist/services/logger.d.ts +0 -61
  138. package/dist/services/logger.d.ts.map +0 -1
  139. package/dist/services/logger.js +0 -223
  140. package/dist/services/logger.js.map +0 -1
  141. package/dist/services/plugin-manager.d.ts +0 -105
  142. package/dist/services/plugin-manager.d.ts.map +0 -1
  143. package/dist/services/plugin-manager.js +0 -250
  144. package/dist/services/plugin-manager.js.map +0 -1
  145. package/dist/services/plugin-state-backend.d.ts +0 -22
  146. package/dist/services/plugin-state-backend.d.ts.map +0 -1
  147. package/dist/services/plugin-state-backend.js +0 -103
  148. package/dist/services/plugin-state-backend.js.map +0 -1
  149. package/dist/services/plugin-state-external.d.ts +0 -36
  150. package/dist/services/plugin-state-external.d.ts.map +0 -1
  151. package/dist/services/plugin-state-external.js +0 -144
  152. package/dist/services/plugin-state-external.js.map +0 -1
  153. package/dist/services/plugin-state-router.d.ts +0 -40
  154. package/dist/services/plugin-state-router.d.ts.map +0 -1
  155. package/dist/services/plugin-state-router.js +0 -82
  156. package/dist/services/plugin-state-router.js.map +0 -1
  157. package/dist/services/port-utils.d.ts +0 -11
  158. package/dist/services/port-utils.d.ts.map +0 -1
  159. package/dist/services/port-utils.js +0 -39
  160. package/dist/services/port-utils.js.map +0 -1
  161. package/dist/services/service-manager.d.ts +0 -50
  162. package/dist/services/service-manager.d.ts.map +0 -1
  163. package/dist/services/service-manager.js +0 -389
  164. package/dist/services/service-manager.js.map +0 -1
@@ -1,103 +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
- import gatewayClient from "./gateway-client.js";
9
- import logger from "./logger.js";
10
- // ── Remote Backend ───────────────────────────────────────────────────────
11
- export class RemotePluginStateBackend {
12
- agentId;
13
- constructor(agentId) {
14
- this.agentId = agentId;
15
- }
16
- configKey(pluginName, key) {
17
- return `pluginState:${pluginName}:${key}`;
18
- }
19
- async getAll(pluginName) {
20
- if (!gatewayClient.isConfigured()) {
21
- throw new Error("Gateway client not configured");
22
- }
23
- const result = await gatewayClient.workspaceQuery(`query ListPluginState($filter: VibecontrolsConfigurationFilterInput) {
24
- vibecontrolsConfigurations(filter: $filter) {
25
- key
26
- value
27
- }
28
- }`, {
29
- filter: {
30
- scope: "AGENT",
31
- scopeId: this.agentId,
32
- keyPrefix: `pluginState:${pluginName}:`,
33
- },
34
- });
35
- if (result.errors?.length || !result.data) {
36
- logger.warn("plugin-state-remote", "Failed to list plugin state", {
37
- errors: result.errors?.map((e) => e.message),
38
- });
39
- return [];
40
- }
41
- const prefix = `pluginState:${pluginName}:`;
42
- return result.data.vibecontrolsConfigurations
43
- .filter((c) => c.key.startsWith(prefix))
44
- .map((c) => ({
45
- key: c.key.slice(prefix.length),
46
- value: typeof c.value === "string" ? c.value : JSON.stringify(c.value),
47
- }));
48
- }
49
- async get(pluginName, key) {
50
- if (!gatewayClient.isConfigured()) {
51
- throw new Error("Gateway client not configured");
52
- }
53
- const configKey = this.configKey(pluginName, key);
54
- const result = await gatewayClient.workspaceQuery(`query GetPluginState($scope: ConfigScope!, $scopeId: String, $key: String!) {
55
- vibecontrolsConfigurationByKey(scope: $scope, scopeId: $scopeId, key: $key) {
56
- value
57
- }
58
- }`, { scope: "AGENT", scopeId: this.agentId, key: configKey });
59
- const config = result.data?.vibecontrolsConfigurationByKey;
60
- if (!config)
61
- return undefined;
62
- return typeof config.value === "string"
63
- ? config.value
64
- : JSON.stringify(config.value);
65
- }
66
- async set(pluginName, key, value) {
67
- if (!gatewayClient.isConfigured()) {
68
- throw new Error("Gateway client not configured");
69
- }
70
- const configKey = this.configKey(pluginName, key);
71
- await gatewayClient.workspaceQuery(`mutation SetPluginState($input: CreateVibecontrolsConfigurationInput!) {
72
- upsertVibecontrolsConfiguration(input: $input) { id }
73
- }`, {
74
- input: {
75
- scope: "AGENT",
76
- scopeId: this.agentId,
77
- key: configKey,
78
- value: { _raw: value },
79
- },
80
- });
81
- }
82
- async delete(pluginName, key) {
83
- if (!gatewayClient.isConfigured()) {
84
- throw new Error("Gateway client not configured");
85
- }
86
- const configKey = this.configKey(pluginName, key);
87
- const result = await gatewayClient.workspaceQuery(`mutation DeletePluginState($scope: ConfigScope!, $scopeId: String, $key: String!) {
88
- deleteVibecontrolsConfigurationByKey(scope: $scope, scopeId: $scopeId, key: $key)
89
- }`, { scope: "AGENT", scopeId: this.agentId, key: configKey });
90
- return result.data?.deleteVibecontrolsConfigurationByKey ?? false;
91
- }
92
- async deleteAll(pluginName) {
93
- const entries = await this.getAll(pluginName);
94
- let count = 0;
95
- for (const entry of entries) {
96
- const deleted = await this.delete(pluginName, entry.key);
97
- if (deleted)
98
- count++;
99
- }
100
- return count;
101
- }
102
- }
103
- //# sourceMappingURL=plugin-state-backend.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-state-backend.js","sourceRoot":"","sources":["../../src/services/plugin-state-backend.ts"],"names":[],"mappings":"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"}
@@ -1,36 +0,0 @@
1
- /**
2
- * External Plugin State Backend — stores state in a custom REST API.
3
- *
4
- * Expected API contract:
5
- * GET {baseUrl}/{pluginName} → { entries: [{ key, value }] }
6
- * GET {baseUrl}/{pluginName}/{key} → { value: string }
7
- * PUT {baseUrl}/{pluginName}/{key} → body: { value: string }
8
- * DELETE {baseUrl}/{pluginName}/{key} → { deleted: boolean }
9
- * DELETE {baseUrl}/{pluginName} → { deletedCount: number }
10
- */
11
- export interface ExternalStoreConfig {
12
- /** Base URL of the external store API */
13
- baseUrl: string;
14
- /** Authentication type: none, bearer, basic, header */
15
- authType: "none" | "bearer" | "basic" | "header";
16
- /** Token for bearer auth, or base64 for basic, or value for custom header */
17
- authValue?: string;
18
- /** Custom header name (when authType is "header") */
19
- authHeaderName?: string;
20
- }
21
- export interface PluginStateEntry {
22
- key: string;
23
- value: string;
24
- }
25
- export declare class ExternalPluginStateBackend {
26
- private config;
27
- constructor(config: ExternalStoreConfig);
28
- private headers;
29
- private url;
30
- getAll(pluginName: string): Promise<PluginStateEntry[]>;
31
- get(pluginName: string, key: string): Promise<string | undefined>;
32
- set(pluginName: string, key: string, value: string): Promise<void>;
33
- delete(pluginName: string, key: string): Promise<boolean>;
34
- deleteAll(pluginName: string): Promise<number>;
35
- }
36
- //# sourceMappingURL=plugin-state-external.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-state-external.d.ts","sourceRoot":"","sources":["../../src/services/plugin-state-external.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IACjD,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAID,qBAAa,0BAA0B;IACrC,OAAO,CAAC,MAAM,CAAsB;gBAExB,MAAM,EAAE,mBAAmB;IAIvC,OAAO,CAAC,OAAO;IAsBf,OAAO,CAAC,GAAG;IAOL,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAkBvD,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAmBjE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBlE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBzD,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAkBrD"}
@@ -1,144 +0,0 @@
1
- /**
2
- * External Plugin State Backend — stores state in a custom REST API.
3
- *
4
- * Expected API contract:
5
- * GET {baseUrl}/{pluginName} → { entries: [{ key, value }] }
6
- * GET {baseUrl}/{pluginName}/{key} → { value: string }
7
- * PUT {baseUrl}/{pluginName}/{key} → body: { value: string }
8
- * DELETE {baseUrl}/{pluginName}/{key} → { deleted: boolean }
9
- * DELETE {baseUrl}/{pluginName} → { deletedCount: number }
10
- */
11
- import logger from "./logger.js";
12
- // ── External Backend ─────────────────────────────────────────────────────
13
- export class ExternalPluginStateBackend {
14
- config;
15
- constructor(config) {
16
- this.config = config;
17
- }
18
- headers(withBody = false) {
19
- const h = {};
20
- if (withBody)
21
- h["Content-Type"] = "application/json";
22
- switch (this.config.authType) {
23
- case "bearer":
24
- if (this.config.authValue)
25
- h["Authorization"] = `Bearer ${this.config.authValue}`;
26
- break;
27
- case "basic":
28
- if (this.config.authValue)
29
- h["Authorization"] = `Basic ${this.config.authValue}`;
30
- break;
31
- case "header":
32
- if (this.config.authHeaderName && this.config.authValue) {
33
- h[this.config.authHeaderName] = this.config.authValue;
34
- }
35
- break;
36
- }
37
- return h;
38
- }
39
- url(pluginName, key) {
40
- const base = this.config.baseUrl.replace(/\/$/, "");
41
- return key
42
- ? `${base}/${encodeURIComponent(pluginName)}/${encodeURIComponent(key)}`
43
- : `${base}/${encodeURIComponent(pluginName)}`;
44
- }
45
- async getAll(pluginName) {
46
- try {
47
- const res = await fetch(this.url(pluginName), {
48
- headers: this.headers(),
49
- signal: AbortSignal.timeout(10_000),
50
- });
51
- if (!res.ok)
52
- return [];
53
- const data = (await res.json());
54
- return data.entries ?? [];
55
- }
56
- catch (err) {
57
- logger.warn("plugin-state-external", "getAll failed", {
58
- pluginName,
59
- error: err instanceof Error ? err.message : String(err),
60
- });
61
- return [];
62
- }
63
- }
64
- async get(pluginName, key) {
65
- try {
66
- const res = await fetch(this.url(pluginName, key), {
67
- headers: this.headers(),
68
- signal: AbortSignal.timeout(10_000),
69
- });
70
- if (!res.ok)
71
- return undefined;
72
- const data = (await res.json());
73
- return data.value;
74
- }
75
- catch (err) {
76
- logger.warn("plugin-state-external", "get failed", {
77
- pluginName,
78
- key,
79
- error: err instanceof Error ? err.message : String(err),
80
- });
81
- return undefined;
82
- }
83
- }
84
- async set(pluginName, key, value) {
85
- try {
86
- await fetch(this.url(pluginName, key), {
87
- method: "PUT",
88
- headers: this.headers(true),
89
- body: JSON.stringify({ value }),
90
- signal: AbortSignal.timeout(10_000),
91
- });
92
- }
93
- catch (err) {
94
- logger.error("plugin-state-external", "set failed", {
95
- pluginName,
96
- key,
97
- error: err instanceof Error ? err.message : String(err),
98
- });
99
- throw err;
100
- }
101
- }
102
- async delete(pluginName, key) {
103
- try {
104
- const res = await fetch(this.url(pluginName, key), {
105
- method: "DELETE",
106
- headers: this.headers(),
107
- signal: AbortSignal.timeout(10_000),
108
- });
109
- if (!res.ok)
110
- return false;
111
- const data = (await res.json());
112
- return data.deleted ?? true;
113
- }
114
- catch (err) {
115
- logger.warn("plugin-state-external", "delete failed", {
116
- pluginName,
117
- key,
118
- error: err instanceof Error ? err.message : String(err),
119
- });
120
- return false;
121
- }
122
- }
123
- async deleteAll(pluginName) {
124
- try {
125
- const res = await fetch(this.url(pluginName), {
126
- method: "DELETE",
127
- headers: this.headers(),
128
- signal: AbortSignal.timeout(10_000),
129
- });
130
- if (!res.ok)
131
- return 0;
132
- const data = (await res.json());
133
- return data.deletedCount ?? 0;
134
- }
135
- catch (err) {
136
- logger.warn("plugin-state-external", "deleteAll failed", {
137
- pluginName,
138
- error: err instanceof Error ? err.message : String(err),
139
- });
140
- return 0;
141
- }
142
- }
143
- }
144
- //# sourceMappingURL=plugin-state-external.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-state-external.js","sourceRoot":"","sources":["../../src/services/plugin-state-external.ts"],"names":[],"mappings":"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"}
@@ -1,40 +0,0 @@
1
- /**
2
- * Plugin State Router — dispatches to local/remote/external backend.
3
- *
4
- * - **local**: Agent's own SQLite database (default, always available)
5
- * - **remote**: vibecontrols backend via workspace GraphQL gateway
6
- * - **external**: Custom REST API with configurable auth
7
- */
8
- import type { FastifyInstance } from "fastify";
9
- import { type ExternalStoreConfig } from "./plugin-state-external.js";
10
- export type BackendType = "local" | "remote" | "external";
11
- interface PluginStateAdapter {
12
- getAll(pluginName: string): Promise<Array<{
13
- key: string;
14
- value: string;
15
- }>>;
16
- get(pluginName: string, key: string): Promise<string | undefined>;
17
- set(pluginName: string, key: string, value: string): Promise<void>;
18
- delete(pluginName: string, key: string): Promise<boolean>;
19
- deleteAll(pluginName: string): Promise<number>;
20
- }
21
- /**
22
- * Plugin State Router — dispatches to local/remote/external backend.
23
- */
24
- export declare class PluginStateRouter {
25
- private local;
26
- private remote;
27
- private external;
28
- constructor(db: FastifyInstance["db"], agentId?: string);
29
- /**
30
- * Configure the external backend.
31
- */
32
- configureExternal(config: ExternalStoreConfig): void;
33
- /**
34
- * Resolve the backend adapter for a given type.
35
- * Falls back to local if the requested backend is not configured.
36
- */
37
- resolve(backend?: BackendType): PluginStateAdapter;
38
- }
39
- export {};
40
- //# sourceMappingURL=plugin-state-router.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-state-router.d.ts","sourceRoot":"","sources":["../../src/services/plugin-state-router.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,4BAA4B,CAAC;AAKpC,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE1D,UAAU,kBAAkB;IAC1B,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAC3E,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAClE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAChD;AAqCD;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,QAAQ,CAA2C;gBAE/C,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM;IAOvD;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAOpD;;;OAGG;IACH,OAAO,CAAC,OAAO,GAAE,WAAqB,GAAG,kBAAkB;CAwB5D"}
@@ -1,82 +0,0 @@
1
- /**
2
- * Plugin State Router — dispatches to local/remote/external backend.
3
- *
4
- * - **local**: Agent's own SQLite database (default, always available)
5
- * - **remote**: vibecontrols backend via workspace GraphQL gateway
6
- * - **external**: Custom REST API with configurable auth
7
- */
8
- import { RemotePluginStateBackend } from "./plugin-state-backend.js";
9
- import { ExternalPluginStateBackend, } from "./plugin-state-external.js";
10
- import logger from "./logger.js";
11
- // ── Local Backend (SQLite) ───────────────────────────────────────────────
12
- /**
13
- * Local SQLite adapter wrapping the agent's database.
14
- */
15
- class LocalPluginStateBackend {
16
- db;
17
- constructor(db) {
18
- this.db = db;
19
- }
20
- async getAll(pluginName) {
21
- return this.db.getAllPluginState(pluginName);
22
- }
23
- async get(pluginName, key) {
24
- return this.db.getPluginState(pluginName, key);
25
- }
26
- async set(pluginName, key, value) {
27
- this.db.setPluginState(pluginName, key, value);
28
- }
29
- async delete(pluginName, key) {
30
- return this.db.deletePluginState(pluginName, key);
31
- }
32
- async deleteAll(pluginName) {
33
- return this.db.deleteAllPluginState(pluginName);
34
- }
35
- }
36
- // ── Router ───────────────────────────────────────────────────────────────
37
- /**
38
- * Plugin State Router — dispatches to local/remote/external backend.
39
- */
40
- export class PluginStateRouter {
41
- local;
42
- remote = null;
43
- external = null;
44
- constructor(db, agentId) {
45
- this.local = new LocalPluginStateBackend(db);
46
- if (agentId) {
47
- this.remote = new RemotePluginStateBackend(agentId);
48
- }
49
- }
50
- /**
51
- * Configure the external backend.
52
- */
53
- configureExternal(config) {
54
- this.external = new ExternalPluginStateBackend(config);
55
- logger.info("plugin-state-router", "External backend configured", {
56
- baseUrl: config.baseUrl,
57
- });
58
- }
59
- /**
60
- * Resolve the backend adapter for a given type.
61
- * Falls back to local if the requested backend is not configured.
62
- */
63
- resolve(backend = "local") {
64
- switch (backend) {
65
- case "remote":
66
- if (!this.remote) {
67
- logger.warn("plugin-state-router", "Remote backend not configured, falling back to local");
68
- return this.local;
69
- }
70
- return this.remote;
71
- case "external":
72
- if (!this.external) {
73
- logger.warn("plugin-state-router", "External backend not configured, falling back to local");
74
- return this.local;
75
- }
76
- return this.external;
77
- default:
78
- return this.local;
79
- }
80
- }
81
- }
82
- //# sourceMappingURL=plugin-state-router.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-state-router.js","sourceRoot":"","sources":["../../src/services/plugin-state-router.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EACL,0BAA0B,GAE3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,MAAM,MAAM,aAAa,CAAC;AAcjC,4EAA4E;AAE5E;;GAEG;AACH,MAAM,uBAAuB;IACnB,EAAE,CAAwB;IAElC,YAAY,EAAyB;QACnC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,UAAkB;QAC7B,OAAO,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,UAAkB,EAAE,GAAW;QACvC,OAAO,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,UAAkB,EAAE,GAAW,EAAE,KAAa;QACtD,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,UAAkB,EAAE,GAAW;QAC1C,OAAO,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,UAAkB;QAChC,OAAO,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;CACF;AAED,4EAA4E;AAE5E;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACpB,KAAK,CAA0B;IAC/B,MAAM,GAAoC,IAAI,CAAC;IAC/C,QAAQ,GAAsC,IAAI,CAAC;IAE3D,YAAY,EAAyB,EAAE,OAAgB;QACrD,IAAI,CAAC,KAAK,GAAG,IAAI,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC7C,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,GAAG,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,MAA2B;QAC3C,IAAI,CAAC,QAAQ,GAAG,IAAI,0BAA0B,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,6BAA6B,EAAE;YAChE,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,UAAuB,OAAO;QACpC,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,QAAQ;gBACX,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjB,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,sDAAsD,CACvD,CAAC;oBACF,OAAO,IAAI,CAAC,KAAK,CAAC;gBACpB,CAAC;gBACD,OAAO,IAAI,CAAC,MAAM,CAAC;YACrB,KAAK,UAAU;gBACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,wDAAwD,CACzD,CAAC;oBACF,OAAO,IAAI,CAAC,KAAK,CAAC;gBACpB,CAAC;gBACD,OAAO,IAAI,CAAC,QAAQ,CAAC;YACvB;gBACE,OAAO,IAAI,CAAC,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;CACF"}
@@ -1,11 +0,0 @@
1
- /**
2
- * Check if a TCP port is available on the given host.
3
- */
4
- export declare function isPortAvailable(port: number, host?: string): Promise<boolean>;
5
- /**
6
- * Find the next available port starting from `startPort`.
7
- * Tries up to `maxAttempts` consecutive ports.
8
- * Returns the first available port or null if none found.
9
- */
10
- export declare function findAvailablePort(startPort: number, host?: string, maxAttempts?: number): Promise<number | null>;
11
- //# sourceMappingURL=port-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"port-utils.d.ts","sourceRoot":"","sources":["../../src/services/port-utils.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,SAAY,GACf,OAAO,CAAC,OAAO,CAAC,CAmBlB;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,IAAI,SAAY,EAChB,WAAW,SAAK,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CASxB"}
@@ -1,39 +0,0 @@
1
- import { createServer } from "net";
2
- /**
3
- * Check if a TCP port is available on the given host.
4
- */
5
- export function isPortAvailable(port, host = "0.0.0.0") {
6
- return new Promise((resolve) => {
7
- const server = createServer();
8
- server.once("error", (err) => {
9
- if (err.code === "EADDRINUSE") {
10
- resolve(false);
11
- }
12
- else {
13
- // Other errors (e.g. EACCES) — treat as unavailable
14
- resolve(false);
15
- }
16
- });
17
- server.once("listening", () => {
18
- server.close(() => resolve(true));
19
- });
20
- server.listen(port, host);
21
- });
22
- }
23
- /**
24
- * Find the next available port starting from `startPort`.
25
- * Tries up to `maxAttempts` consecutive ports.
26
- * Returns the first available port or null if none found.
27
- */
28
- export async function findAvailablePort(startPort, host = "0.0.0.0", maxAttempts = 20) {
29
- for (let i = 0; i < maxAttempts; i++) {
30
- const port = startPort + i;
31
- if (port > 65535)
32
- break;
33
- if (await isPortAvailable(port, host)) {
34
- return port;
35
- }
36
- }
37
- return null;
38
- }
39
- //# sourceMappingURL=port-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"port-utils.js","sourceRoot":"","sources":["../../src/services/port-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,KAAK,CAAC;AAEnC;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,IAAI,GAAG,SAAS;IAEhB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;QAE9B,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;YAClD,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC9B,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,oDAAoD;gBACpD,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;YAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAAiB,EACjB,IAAI,GAAG,SAAS,EAChB,WAAW,GAAG,EAAE;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,SAAS,GAAG,CAAC,CAAC;QAC3B,IAAI,IAAI,GAAG,KAAK;YAAE,MAAM;QACxB,IAAI,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,50 +0,0 @@
1
- import { AgentConfig } from "./agent.service.js";
2
- export interface ProcessInfo {
3
- name: string;
4
- pid: number;
5
- port: number;
6
- config: AgentConfig;
7
- startTime: string;
8
- status: "running" | "stopped" | "unknown";
9
- }
10
- export interface LogOptions {
11
- follow: boolean;
12
- tail: number;
13
- }
14
- export declare class ServiceManager {
15
- private registryPath;
16
- private logsDir;
17
- constructor();
18
- startDaemon(config: AgentConfig): Promise<void>;
19
- stop(name: string): Promise<void>;
20
- restart(name: string, config: AgentConfig): Promise<void>;
21
- stopAll(): Promise<void>;
22
- kill(name: string): Promise<void>;
23
- killAll(): Promise<void>;
24
- getStatus(name: string): Promise<ProcessInfo | null>;
25
- getStatusAll(): Promise<ProcessInfo[]>;
26
- listInstances(): Promise<ProcessInfo[]>;
27
- showLogs(name: string, options: LogOptions): Promise<void>;
28
- checkHealth(name: string): Promise<{
29
- healthy: boolean;
30
- details: any;
31
- }>;
32
- checkHealthAll(): Promise<{
33
- [name: string]: {
34
- healthy: boolean;
35
- details: any;
36
- };
37
- }>;
38
- setConfig(key: string, value: string): Promise<void>;
39
- getConfig(key?: string): Promise<any>;
40
- private loadRegistry;
41
- private saveRegistry;
42
- private saveProcessInfo;
43
- private updateProcessStatus;
44
- private findProcessByName;
45
- private getRunningProcesses;
46
- private isProcessRunning;
47
- private killProcessTree;
48
- private appendToLog;
49
- }
50
- //# sourceMappingURL=service-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service-manager.d.ts","sourceRoot":"","sources":["../../src/services/service-manager.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAQjD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAS;;IAYlB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAmE/C,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCjC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBzD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBxB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBjC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBxB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAKpD,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAetC,aAAa,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAIvC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA4C1D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,CAAC;IA2BtE,cAAc,IAAI,OAAO,CAAC;QAC9B,CAAC,IAAI,EAAE,MAAM,GAAG;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,OAAO,EAAE,GAAG,CAAA;SAAE,CAAC;KACpD,CAAC;IAWI,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAapD,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;YAY7B,YAAY;YAcZ,YAAY;YAIZ,eAAe;YAwBf,mBAAmB;YAanB,iBAAiB;YAejB,mBAAmB;YAKnB,gBAAgB;YAUhB,eAAe;IAoB7B,OAAO,CAAC,WAAW;CASpB"}