@studiometa/forge-core 0.0.1 → 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.
Files changed (254) hide show
  1. package/README.md +151 -0
  2. package/dist/constants.d.ts +13 -0
  3. package/dist/constants.d.ts.map +1 -0
  4. package/dist/context.d.ts +30 -0
  5. package/dist/context.d.ts.map +1 -0
  6. package/dist/executors/backups/create.d.ts +8 -0
  7. package/dist/executors/backups/create.d.ts.map +1 -0
  8. package/dist/executors/backups/delete.d.ts +7 -0
  9. package/dist/executors/backups/delete.d.ts.map +1 -0
  10. package/dist/executors/backups/get.d.ts +8 -0
  11. package/dist/executors/backups/get.d.ts.map +1 -0
  12. package/dist/executors/backups/index.d.ts +6 -0
  13. package/dist/executors/backups/index.d.ts.map +1 -0
  14. package/dist/executors/backups/list.d.ts +8 -0
  15. package/dist/executors/backups/list.d.ts.map +1 -0
  16. package/dist/executors/backups/types.d.ts +31 -0
  17. package/dist/executors/backups/types.d.ts.map +1 -0
  18. package/dist/executors/certificates/activate.d.ts +7 -0
  19. package/dist/executors/certificates/activate.d.ts.map +1 -0
  20. package/dist/executors/certificates/create.d.ts +8 -0
  21. package/dist/executors/certificates/create.d.ts.map +1 -0
  22. package/dist/executors/certificates/delete.d.ts +7 -0
  23. package/dist/executors/certificates/delete.d.ts.map +1 -0
  24. package/dist/executors/certificates/get.d.ts +8 -0
  25. package/dist/executors/certificates/get.d.ts.map +1 -0
  26. package/dist/executors/certificates/index.d.ts +7 -0
  27. package/dist/executors/certificates/index.d.ts.map +1 -0
  28. package/dist/executors/certificates/list.d.ts +8 -0
  29. package/dist/executors/certificates/list.d.ts.map +1 -0
  30. package/dist/executors/certificates/types.d.ts +43 -0
  31. package/dist/executors/certificates/types.d.ts.map +1 -0
  32. package/dist/executors/commands/create.d.ts +8 -0
  33. package/dist/executors/commands/create.d.ts.map +1 -0
  34. package/dist/executors/commands/get.d.ts +8 -0
  35. package/dist/executors/commands/get.d.ts.map +1 -0
  36. package/dist/executors/commands/index.d.ts +5 -0
  37. package/dist/executors/commands/index.d.ts.map +1 -0
  38. package/dist/executors/commands/list.d.ts +8 -0
  39. package/dist/executors/commands/list.d.ts.map +1 -0
  40. package/dist/executors/commands/types.d.ts +27 -0
  41. package/dist/executors/commands/types.d.ts.map +1 -0
  42. package/dist/executors/daemons/create.d.ts +8 -0
  43. package/dist/executors/daemons/create.d.ts.map +1 -0
  44. package/dist/executors/daemons/delete.d.ts +7 -0
  45. package/dist/executors/daemons/delete.d.ts.map +1 -0
  46. package/dist/executors/daemons/get.d.ts +8 -0
  47. package/dist/executors/daemons/get.d.ts.map +1 -0
  48. package/dist/executors/daemons/index.d.ts +7 -0
  49. package/dist/executors/daemons/index.d.ts.map +1 -0
  50. package/dist/executors/daemons/list.d.ts +8 -0
  51. package/dist/executors/daemons/list.d.ts.map +1 -0
  52. package/dist/executors/daemons/restart.d.ts +7 -0
  53. package/dist/executors/daemons/restart.d.ts.map +1 -0
  54. package/dist/executors/daemons/types.d.ts +38 -0
  55. package/dist/executors/daemons/types.d.ts.map +1 -0
  56. package/dist/executors/database-users/create.d.ts +8 -0
  57. package/dist/executors/database-users/create.d.ts.map +1 -0
  58. package/dist/executors/database-users/delete.d.ts +7 -0
  59. package/dist/executors/database-users/delete.d.ts.map +1 -0
  60. package/dist/executors/database-users/get.d.ts +8 -0
  61. package/dist/executors/database-users/get.d.ts.map +1 -0
  62. package/dist/executors/database-users/index.d.ts +6 -0
  63. package/dist/executors/database-users/index.d.ts.map +1 -0
  64. package/dist/executors/database-users/list.d.ts +8 -0
  65. package/dist/executors/database-users/list.d.ts.map +1 -0
  66. package/dist/executors/database-users/types.d.ts +31 -0
  67. package/dist/executors/database-users/types.d.ts.map +1 -0
  68. package/dist/executors/databases/create.d.ts +8 -0
  69. package/dist/executors/databases/create.d.ts.map +1 -0
  70. package/dist/executors/databases/delete.d.ts +7 -0
  71. package/dist/executors/databases/delete.d.ts.map +1 -0
  72. package/dist/executors/databases/get.d.ts +8 -0
  73. package/dist/executors/databases/get.d.ts.map +1 -0
  74. package/dist/executors/databases/index.d.ts +6 -0
  75. package/dist/executors/databases/index.d.ts.map +1 -0
  76. package/dist/executors/databases/list.d.ts +8 -0
  77. package/dist/executors/databases/list.d.ts.map +1 -0
  78. package/dist/executors/databases/types.d.ts +31 -0
  79. package/dist/executors/databases/types.d.ts.map +1 -0
  80. package/dist/executors/deployments/deploy-and-wait.d.ts +13 -0
  81. package/dist/executors/deployments/deploy-and-wait.d.ts.map +1 -0
  82. package/dist/executors/deployments/deploy.d.ts +7 -0
  83. package/dist/executors/deployments/deploy.d.ts.map +1 -0
  84. package/dist/executors/deployments/get-log.d.ts +7 -0
  85. package/dist/executors/deployments/get-log.d.ts.map +1 -0
  86. package/dist/executors/deployments/get-output.d.ts +7 -0
  87. package/dist/executors/deployments/get-output.d.ts.map +1 -0
  88. package/dist/executors/deployments/get-script.d.ts +7 -0
  89. package/dist/executors/deployments/get-script.d.ts.map +1 -0
  90. package/dist/executors/deployments/index.d.ts +9 -0
  91. package/dist/executors/deployments/index.d.ts.map +1 -0
  92. package/dist/executors/deployments/list.d.ts +8 -0
  93. package/dist/executors/deployments/list.d.ts.map +1 -0
  94. package/dist/executors/deployments/types.d.ts +72 -0
  95. package/dist/executors/deployments/types.d.ts.map +1 -0
  96. package/dist/executors/deployments/update-script.d.ts +7 -0
  97. package/dist/executors/deployments/update-script.d.ts.map +1 -0
  98. package/dist/executors/env/get.d.ts +7 -0
  99. package/dist/executors/env/get.d.ts.map +1 -0
  100. package/dist/executors/env/index.d.ts +4 -0
  101. package/dist/executors/env/index.d.ts.map +1 -0
  102. package/dist/executors/env/types.d.ts +19 -0
  103. package/dist/executors/env/types.d.ts.map +1 -0
  104. package/dist/executors/env/update.d.ts +7 -0
  105. package/dist/executors/env/update.d.ts.map +1 -0
  106. package/dist/executors/firewall-rules/create.d.ts +5 -0
  107. package/dist/executors/firewall-rules/create.d.ts.map +1 -0
  108. package/dist/executors/firewall-rules/delete.d.ts +4 -0
  109. package/dist/executors/firewall-rules/delete.d.ts.map +1 -0
  110. package/dist/executors/firewall-rules/get.d.ts +5 -0
  111. package/dist/executors/firewall-rules/get.d.ts.map +1 -0
  112. package/dist/executors/firewall-rules/index.d.ts +6 -0
  113. package/dist/executors/firewall-rules/index.d.ts.map +1 -0
  114. package/dist/executors/firewall-rules/list.d.ts +5 -0
  115. package/dist/executors/firewall-rules/list.d.ts.map +1 -0
  116. package/dist/executors/firewall-rules/types.d.ts +31 -0
  117. package/dist/executors/firewall-rules/types.d.ts.map +1 -0
  118. package/dist/executors/monitors/create.d.ts +5 -0
  119. package/dist/executors/monitors/create.d.ts.map +1 -0
  120. package/dist/executors/monitors/delete.d.ts +4 -0
  121. package/dist/executors/monitors/delete.d.ts.map +1 -0
  122. package/dist/executors/monitors/get.d.ts +5 -0
  123. package/dist/executors/monitors/get.d.ts.map +1 -0
  124. package/dist/executors/monitors/index.d.ts +6 -0
  125. package/dist/executors/monitors/index.d.ts.map +1 -0
  126. package/dist/executors/monitors/list.d.ts +5 -0
  127. package/dist/executors/monitors/list.d.ts.map +1 -0
  128. package/dist/executors/monitors/types.d.ts +31 -0
  129. package/dist/executors/monitors/types.d.ts.map +1 -0
  130. package/dist/executors/nginx/get.d.ts +7 -0
  131. package/dist/executors/nginx/get.d.ts.map +1 -0
  132. package/dist/executors/nginx/index.d.ts +4 -0
  133. package/dist/executors/nginx/index.d.ts.map +1 -0
  134. package/dist/executors/nginx/types.d.ts +19 -0
  135. package/dist/executors/nginx/types.d.ts.map +1 -0
  136. package/dist/executors/nginx/update.d.ts +7 -0
  137. package/dist/executors/nginx/update.d.ts.map +1 -0
  138. package/dist/executors/nginx-templates/create.d.ts +5 -0
  139. package/dist/executors/nginx-templates/create.d.ts.map +1 -0
  140. package/dist/executors/nginx-templates/delete.d.ts +4 -0
  141. package/dist/executors/nginx-templates/delete.d.ts.map +1 -0
  142. package/dist/executors/nginx-templates/get.d.ts +5 -0
  143. package/dist/executors/nginx-templates/get.d.ts.map +1 -0
  144. package/dist/executors/nginx-templates/index.d.ts +7 -0
  145. package/dist/executors/nginx-templates/index.d.ts.map +1 -0
  146. package/dist/executors/nginx-templates/list.d.ts +5 -0
  147. package/dist/executors/nginx-templates/list.d.ts.map +1 -0
  148. package/dist/executors/nginx-templates/types.d.ts +40 -0
  149. package/dist/executors/nginx-templates/types.d.ts.map +1 -0
  150. package/dist/executors/nginx-templates/update.d.ts +5 -0
  151. package/dist/executors/nginx-templates/update.d.ts.map +1 -0
  152. package/dist/executors/recipes/create.d.ts +5 -0
  153. package/dist/executors/recipes/create.d.ts.map +1 -0
  154. package/dist/executors/recipes/delete.d.ts +4 -0
  155. package/dist/executors/recipes/delete.d.ts.map +1 -0
  156. package/dist/executors/recipes/get.d.ts +5 -0
  157. package/dist/executors/recipes/get.d.ts.map +1 -0
  158. package/dist/executors/recipes/index.d.ts +7 -0
  159. package/dist/executors/recipes/index.d.ts.map +1 -0
  160. package/dist/executors/recipes/list.d.ts +5 -0
  161. package/dist/executors/recipes/list.d.ts.map +1 -0
  162. package/dist/executors/recipes/run.d.ts +7 -0
  163. package/dist/executors/recipes/run.d.ts.map +1 -0
  164. package/dist/executors/recipes/types.d.ts +34 -0
  165. package/dist/executors/recipes/types.d.ts.map +1 -0
  166. package/dist/executors/redirect-rules/create.d.ts +5 -0
  167. package/dist/executors/redirect-rules/create.d.ts.map +1 -0
  168. package/dist/executors/redirect-rules/delete.d.ts +4 -0
  169. package/dist/executors/redirect-rules/delete.d.ts.map +1 -0
  170. package/dist/executors/redirect-rules/get.d.ts +5 -0
  171. package/dist/executors/redirect-rules/get.d.ts.map +1 -0
  172. package/dist/executors/redirect-rules/index.d.ts +6 -0
  173. package/dist/executors/redirect-rules/index.d.ts.map +1 -0
  174. package/dist/executors/redirect-rules/list.d.ts +5 -0
  175. package/dist/executors/redirect-rules/list.d.ts.map +1 -0
  176. package/dist/executors/redirect-rules/types.d.ts +35 -0
  177. package/dist/executors/redirect-rules/types.d.ts.map +1 -0
  178. package/dist/executors/scheduled-jobs/create.d.ts +8 -0
  179. package/dist/executors/scheduled-jobs/create.d.ts.map +1 -0
  180. package/dist/executors/scheduled-jobs/delete.d.ts +7 -0
  181. package/dist/executors/scheduled-jobs/delete.d.ts.map +1 -0
  182. package/dist/executors/scheduled-jobs/get.d.ts +8 -0
  183. package/dist/executors/scheduled-jobs/get.d.ts.map +1 -0
  184. package/dist/executors/scheduled-jobs/index.d.ts +6 -0
  185. package/dist/executors/scheduled-jobs/index.d.ts.map +1 -0
  186. package/dist/executors/scheduled-jobs/list.d.ts +8 -0
  187. package/dist/executors/scheduled-jobs/list.d.ts.map +1 -0
  188. package/dist/executors/scheduled-jobs/types.d.ts +31 -0
  189. package/dist/executors/scheduled-jobs/types.d.ts.map +1 -0
  190. package/dist/executors/security-rules/create.d.ts +5 -0
  191. package/dist/executors/security-rules/create.d.ts.map +1 -0
  192. package/dist/executors/security-rules/delete.d.ts +4 -0
  193. package/dist/executors/security-rules/delete.d.ts.map +1 -0
  194. package/dist/executors/security-rules/get.d.ts +5 -0
  195. package/dist/executors/security-rules/get.d.ts.map +1 -0
  196. package/dist/executors/security-rules/index.d.ts +6 -0
  197. package/dist/executors/security-rules/index.d.ts.map +1 -0
  198. package/dist/executors/security-rules/list.d.ts +5 -0
  199. package/dist/executors/security-rules/list.d.ts.map +1 -0
  200. package/dist/executors/security-rules/types.d.ts +35 -0
  201. package/dist/executors/security-rules/types.d.ts.map +1 -0
  202. package/dist/executors/servers/create.d.ts +8 -0
  203. package/dist/executors/servers/create.d.ts.map +1 -0
  204. package/dist/executors/servers/delete.d.ts +7 -0
  205. package/dist/executors/servers/delete.d.ts.map +1 -0
  206. package/dist/executors/servers/get.d.ts +8 -0
  207. package/dist/executors/servers/get.d.ts.map +1 -0
  208. package/dist/executors/servers/index.d.ts +7 -0
  209. package/dist/executors/servers/index.d.ts.map +1 -0
  210. package/dist/executors/servers/list.d.ts +8 -0
  211. package/dist/executors/servers/list.d.ts.map +1 -0
  212. package/dist/executors/servers/reboot.d.ts +7 -0
  213. package/dist/executors/servers/reboot.d.ts.map +1 -0
  214. package/dist/executors/servers/types.d.ts +33 -0
  215. package/dist/executors/servers/types.d.ts.map +1 -0
  216. package/dist/executors/sites/create.d.ts +8 -0
  217. package/dist/executors/sites/create.d.ts.map +1 -0
  218. package/dist/executors/sites/delete.d.ts +7 -0
  219. package/dist/executors/sites/delete.d.ts.map +1 -0
  220. package/dist/executors/sites/get.d.ts +8 -0
  221. package/dist/executors/sites/get.d.ts.map +1 -0
  222. package/dist/executors/sites/index.d.ts +6 -0
  223. package/dist/executors/sites/index.d.ts.map +1 -0
  224. package/dist/executors/sites/list.d.ts +8 -0
  225. package/dist/executors/sites/list.d.ts.map +1 -0
  226. package/dist/executors/sites/types.d.ts +31 -0
  227. package/dist/executors/sites/types.d.ts.map +1 -0
  228. package/dist/executors/ssh-keys/create.d.ts +5 -0
  229. package/dist/executors/ssh-keys/create.d.ts.map +1 -0
  230. package/dist/executors/ssh-keys/delete.d.ts +4 -0
  231. package/dist/executors/ssh-keys/delete.d.ts.map +1 -0
  232. package/dist/executors/ssh-keys/get.d.ts +5 -0
  233. package/dist/executors/ssh-keys/get.d.ts.map +1 -0
  234. package/dist/executors/ssh-keys/index.d.ts +6 -0
  235. package/dist/executors/ssh-keys/index.d.ts.map +1 -0
  236. package/dist/executors/ssh-keys/list.d.ts +5 -0
  237. package/dist/executors/ssh-keys/list.d.ts.map +1 -0
  238. package/dist/executors/ssh-keys/types.d.ts +31 -0
  239. package/dist/executors/ssh-keys/types.d.ts.map +1 -0
  240. package/dist/executors/types.d.ts +18 -0
  241. package/dist/executors/types.d.ts.map +1 -0
  242. package/dist/executors/user/get.d.ts +8 -0
  243. package/dist/executors/user/get.d.ts.map +1 -0
  244. package/dist/executors/user/index.d.ts +3 -0
  245. package/dist/executors/user/index.d.ts.map +1 -0
  246. package/dist/executors/user/types.d.ts +9 -0
  247. package/dist/executors/user/types.d.ts.map +1 -0
  248. package/dist/index.d.ts +48 -0
  249. package/dist/index.d.ts.map +1 -0
  250. package/dist/index.js +1125 -0
  251. package/dist/index.js.map +1 -0
  252. package/dist/logger.d.ts +32 -0
  253. package/dist/logger.d.ts.map +1 -0
  254. package/package.json +34 -1
package/dist/index.js ADDED
@@ -0,0 +1,1125 @@
1
+ import { createWriteStream, mkdirSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { dirname, join } from "node:path";
4
+ var __create = Object.create;
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getProtoOf = Object.getPrototypeOf;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
13
+ key = keys[i];
14
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
15
+ get: ((k) => from[k]).bind(null, key),
16
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
+ });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
22
+ value: mod,
23
+ enumerable: true
24
+ }) : target, mod));
25
+ /**
26
+ * All supported resources.
27
+ * Single source of truth — MCP schema and handlers derive from this.
28
+ */
29
+ const RESOURCES = [
30
+ "servers",
31
+ "sites",
32
+ "deployments",
33
+ "certificates",
34
+ "databases",
35
+ "database-users",
36
+ "daemons",
37
+ "env",
38
+ "nginx",
39
+ "firewall-rules",
40
+ "ssh-keys",
41
+ "security-rules",
42
+ "redirect-rules",
43
+ "nginx-templates",
44
+ "monitors",
45
+ "recipes",
46
+ "backups",
47
+ "commands",
48
+ "scheduled-jobs",
49
+ "user"
50
+ ];
51
+ /**
52
+ * All supported actions.
53
+ * Single source of truth — MCP schema and handlers derive from this.
54
+ */
55
+ const ACTIONS = [
56
+ "list",
57
+ "get",
58
+ "create",
59
+ "update",
60
+ "delete",
61
+ "deploy",
62
+ "reboot",
63
+ "restart",
64
+ "activate",
65
+ "run",
66
+ "help",
67
+ "schema"
68
+ ];
69
+ var require_quick_format_unescaped = /* @__PURE__ */ __commonJSMin(((exports, module) => {
70
+ function tryStringify(o) {
71
+ try {
72
+ return JSON.stringify(o);
73
+ } catch (e) {
74
+ return "\"[Circular]\"";
75
+ }
76
+ }
77
+ module.exports = format;
78
+ function format(f, args, opts) {
79
+ var ss = opts && opts.stringify || tryStringify;
80
+ var offset = 1;
81
+ if (typeof f === "object" && f !== null) {
82
+ var len = args.length + offset;
83
+ if (len === 1) return f;
84
+ var objects = new Array(len);
85
+ objects[0] = ss(f);
86
+ for (var index = 1; index < len; index++) objects[index] = ss(args[index]);
87
+ return objects.join(" ");
88
+ }
89
+ if (typeof f !== "string") return f;
90
+ var argLen = args.length;
91
+ if (argLen === 0) return f;
92
+ var str = "";
93
+ var a = 1 - offset;
94
+ var lastPos = -1;
95
+ var flen = f && f.length || 0;
96
+ for (var i = 0; i < flen;) {
97
+ if (f.charCodeAt(i) === 37 && i + 1 < flen) {
98
+ lastPos = lastPos > -1 ? lastPos : 0;
99
+ switch (f.charCodeAt(i + 1)) {
100
+ case 100:
101
+ case 102:
102
+ if (a >= argLen) break;
103
+ if (args[a] == null) break;
104
+ if (lastPos < i) str += f.slice(lastPos, i);
105
+ str += Number(args[a]);
106
+ lastPos = i + 2;
107
+ i++;
108
+ break;
109
+ case 105:
110
+ if (a >= argLen) break;
111
+ if (args[a] == null) break;
112
+ if (lastPos < i) str += f.slice(lastPos, i);
113
+ str += Math.floor(Number(args[a]));
114
+ lastPos = i + 2;
115
+ i++;
116
+ break;
117
+ case 79:
118
+ case 111:
119
+ case 106:
120
+ if (a >= argLen) break;
121
+ if (args[a] === void 0) break;
122
+ if (lastPos < i) str += f.slice(lastPos, i);
123
+ var type = typeof args[a];
124
+ if (type === "string") {
125
+ str += "'" + args[a] + "'";
126
+ lastPos = i + 2;
127
+ i++;
128
+ break;
129
+ }
130
+ if (type === "function") {
131
+ str += args[a].name || "<anonymous>";
132
+ lastPos = i + 2;
133
+ i++;
134
+ break;
135
+ }
136
+ str += ss(args[a]);
137
+ lastPos = i + 2;
138
+ i++;
139
+ break;
140
+ case 115:
141
+ if (a >= argLen) break;
142
+ if (lastPos < i) str += f.slice(lastPos, i);
143
+ str += String(args[a]);
144
+ lastPos = i + 2;
145
+ i++;
146
+ break;
147
+ case 37:
148
+ if (lastPos < i) str += f.slice(lastPos, i);
149
+ str += "%";
150
+ lastPos = i + 2;
151
+ i++;
152
+ a--;
153
+ break;
154
+ }
155
+ ++a;
156
+ }
157
+ ++i;
158
+ }
159
+ if (lastPos === -1) return f;
160
+ else if (lastPos < flen) str += f.slice(lastPos);
161
+ return str;
162
+ }
163
+ }));
164
+ var import_browser = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {
165
+ var format = require_quick_format_unescaped();
166
+ module.exports = pino;
167
+ var _console = pfGlobalThisOrFallback().console || {};
168
+ var stdSerializers = {
169
+ mapHttpRequest: mock,
170
+ mapHttpResponse: mock,
171
+ wrapRequestSerializer: passthrough,
172
+ wrapResponseSerializer: passthrough,
173
+ wrapErrorSerializer: passthrough,
174
+ req: mock,
175
+ res: mock,
176
+ err: asErrValue,
177
+ errWithCause: asErrValue
178
+ };
179
+ function levelToValue(level, logger) {
180
+ return level === "silent" ? Infinity : logger.levels.values[level];
181
+ }
182
+ var baseLogFunctionSymbol = Symbol("pino.logFuncs");
183
+ var hierarchySymbol = Symbol("pino.hierarchy");
184
+ var logFallbackMap = {
185
+ error: "log",
186
+ fatal: "error",
187
+ warn: "error",
188
+ info: "log",
189
+ debug: "log",
190
+ trace: "log"
191
+ };
192
+ function appendChildLogger(parentLogger, childLogger) {
193
+ childLogger[hierarchySymbol] = {
194
+ logger: childLogger,
195
+ parent: parentLogger[hierarchySymbol]
196
+ };
197
+ }
198
+ function setupBaseLogFunctions(logger, levels, proto) {
199
+ const logFunctions = {};
200
+ levels.forEach((level) => {
201
+ logFunctions[level] = proto[level] ? proto[level] : _console[level] || _console[logFallbackMap[level] || "log"] || noop;
202
+ });
203
+ logger[baseLogFunctionSymbol] = logFunctions;
204
+ }
205
+ function shouldSerialize(serialize, serializers) {
206
+ if (Array.isArray(serialize)) return serialize.filter(function(k) {
207
+ return k !== "!stdSerializers.err";
208
+ });
209
+ else if (serialize === true) return Object.keys(serializers);
210
+ return false;
211
+ }
212
+ function pino(opts) {
213
+ opts = opts || {};
214
+ opts.browser = opts.browser || {};
215
+ const transmit = opts.browser.transmit;
216
+ if (transmit && typeof transmit.send !== "function") throw Error("pino: transmit option must have a send function");
217
+ const proto = opts.browser.write || _console;
218
+ if (opts.browser.write) opts.browser.asObject = true;
219
+ const serializers = opts.serializers || {};
220
+ const serialize = shouldSerialize(opts.browser.serialize, serializers);
221
+ let stdErrSerialize = opts.browser.serialize;
222
+ if (Array.isArray(opts.browser.serialize) && opts.browser.serialize.indexOf("!stdSerializers.err") > -1) stdErrSerialize = false;
223
+ const customLevels = Object.keys(opts.customLevels || {});
224
+ const levels = [
225
+ "error",
226
+ "fatal",
227
+ "warn",
228
+ "info",
229
+ "debug",
230
+ "trace"
231
+ ].concat(customLevels);
232
+ if (typeof proto === "function") levels.forEach(function(level) {
233
+ proto[level] = proto;
234
+ });
235
+ if (opts.enabled === false || opts.browser.disabled) opts.level = "silent";
236
+ const level = opts.level || "info";
237
+ const logger = Object.create(proto);
238
+ if (!logger.log) logger.log = noop;
239
+ setupBaseLogFunctions(logger, levels, proto);
240
+ appendChildLogger({}, logger);
241
+ Object.defineProperty(logger, "levelVal", { get: getLevelVal });
242
+ Object.defineProperty(logger, "level", {
243
+ get: getLevel,
244
+ set: setLevel
245
+ });
246
+ const setOpts = {
247
+ transmit,
248
+ serialize,
249
+ asObject: opts.browser.asObject,
250
+ asObjectBindingsOnly: opts.browser.asObjectBindingsOnly,
251
+ formatters: opts.browser.formatters,
252
+ reportCaller: opts.browser.reportCaller,
253
+ levels,
254
+ timestamp: getTimeFunction(opts),
255
+ messageKey: opts.messageKey || "msg",
256
+ onChild: opts.onChild || noop
257
+ };
258
+ logger.levels = getLevels(opts);
259
+ logger.level = level;
260
+ logger.isLevelEnabled = function(level) {
261
+ if (!this.levels.values[level]) return false;
262
+ return this.levels.values[level] >= this.levels.values[this.level];
263
+ };
264
+ logger.setMaxListeners = logger.getMaxListeners = logger.emit = logger.addListener = logger.on = logger.prependListener = logger.once = logger.prependOnceListener = logger.removeListener = logger.removeAllListeners = logger.listeners = logger.listenerCount = logger.eventNames = logger.write = logger.flush = noop;
265
+ logger.serializers = serializers;
266
+ logger._serialize = serialize;
267
+ logger._stdErrSerialize = stdErrSerialize;
268
+ logger.child = function(...args) {
269
+ return child.call(this, setOpts, ...args);
270
+ };
271
+ if (transmit) logger._logEvent = createLogEventShape();
272
+ function getLevelVal() {
273
+ return levelToValue(this.level, this);
274
+ }
275
+ function getLevel() {
276
+ return this._level;
277
+ }
278
+ function setLevel(level) {
279
+ if (level !== "silent" && !this.levels.values[level]) throw Error("unknown level " + level);
280
+ this._level = level;
281
+ set(this, setOpts, logger, "error");
282
+ set(this, setOpts, logger, "fatal");
283
+ set(this, setOpts, logger, "warn");
284
+ set(this, setOpts, logger, "info");
285
+ set(this, setOpts, logger, "debug");
286
+ set(this, setOpts, logger, "trace");
287
+ customLevels.forEach((level) => {
288
+ set(this, setOpts, logger, level);
289
+ });
290
+ }
291
+ function child(setOpts, bindings, childOptions) {
292
+ if (!bindings) throw new Error("missing bindings for child Pino");
293
+ childOptions = childOptions || {};
294
+ if (serialize && bindings.serializers) childOptions.serializers = bindings.serializers;
295
+ const childOptionsSerializers = childOptions.serializers;
296
+ if (serialize && childOptionsSerializers) {
297
+ var childSerializers = Object.assign({}, serializers, childOptionsSerializers);
298
+ var childSerialize = opts.browser.serialize === true ? Object.keys(childSerializers) : serialize;
299
+ delete bindings.serializers;
300
+ applySerializers([bindings], childSerialize, childSerializers, this._stdErrSerialize);
301
+ }
302
+ function Child(parent) {
303
+ this._childLevel = (parent._childLevel | 0) + 1;
304
+ this.bindings = bindings;
305
+ if (childSerializers) {
306
+ this.serializers = childSerializers;
307
+ this._serialize = childSerialize;
308
+ }
309
+ if (transmit) this._logEvent = createLogEventShape([].concat(parent._logEvent.bindings, bindings));
310
+ }
311
+ Child.prototype = this;
312
+ const newLogger = new Child(this);
313
+ appendChildLogger(this, newLogger);
314
+ newLogger.child = function(...args) {
315
+ return child.call(this, setOpts, ...args);
316
+ };
317
+ newLogger.level = childOptions.level || this.level;
318
+ setOpts.onChild(newLogger);
319
+ return newLogger;
320
+ }
321
+ return logger;
322
+ }
323
+ function getLevels(opts) {
324
+ const customLevels = opts.customLevels || {};
325
+ return {
326
+ values: Object.assign({}, pino.levels.values, customLevels),
327
+ labels: Object.assign({}, pino.levels.labels, invertObject(customLevels))
328
+ };
329
+ }
330
+ function invertObject(obj) {
331
+ const inverted = {};
332
+ Object.keys(obj).forEach(function(key) {
333
+ inverted[obj[key]] = key;
334
+ });
335
+ return inverted;
336
+ }
337
+ pino.levels = {
338
+ values: {
339
+ fatal: 60,
340
+ error: 50,
341
+ warn: 40,
342
+ info: 30,
343
+ debug: 20,
344
+ trace: 10
345
+ },
346
+ labels: {
347
+ 10: "trace",
348
+ 20: "debug",
349
+ 30: "info",
350
+ 40: "warn",
351
+ 50: "error",
352
+ 60: "fatal"
353
+ }
354
+ };
355
+ pino.stdSerializers = stdSerializers;
356
+ pino.stdTimeFunctions = Object.assign({}, {
357
+ nullTime,
358
+ epochTime,
359
+ unixTime,
360
+ isoTime
361
+ });
362
+ function getBindingChain(logger) {
363
+ const bindings = [];
364
+ if (logger.bindings) bindings.push(logger.bindings);
365
+ let hierarchy = logger[hierarchySymbol];
366
+ while (hierarchy.parent) {
367
+ hierarchy = hierarchy.parent;
368
+ if (hierarchy.logger.bindings) bindings.push(hierarchy.logger.bindings);
369
+ }
370
+ return bindings.reverse();
371
+ }
372
+ function set(self, opts, rootLogger, level) {
373
+ Object.defineProperty(self, level, {
374
+ value: levelToValue(self.level, rootLogger) > levelToValue(level, rootLogger) ? noop : rootLogger[baseLogFunctionSymbol][level],
375
+ writable: true,
376
+ enumerable: true,
377
+ configurable: true
378
+ });
379
+ if (self[level] === noop) {
380
+ if (!opts.transmit) return;
381
+ const transmitValue = levelToValue(opts.transmit.level || self.level, rootLogger);
382
+ if (levelToValue(level, rootLogger) < transmitValue) return;
383
+ }
384
+ self[level] = createWrap(self, opts, rootLogger, level);
385
+ const bindings = getBindingChain(self);
386
+ if (bindings.length === 0) return;
387
+ self[level] = prependBindingsInArguments(bindings, self[level]);
388
+ }
389
+ function prependBindingsInArguments(bindings, logFunc) {
390
+ return function() {
391
+ return logFunc.apply(this, [...bindings, ...arguments]);
392
+ };
393
+ }
394
+ function createWrap(self, opts, rootLogger, level) {
395
+ return (function(write) {
396
+ return function LOG() {
397
+ const ts = opts.timestamp();
398
+ const args = new Array(arguments.length);
399
+ const proto = Object.getPrototypeOf && Object.getPrototypeOf(this) === _console ? _console : this;
400
+ for (var i = 0; i < args.length; i++) args[i] = arguments[i];
401
+ var argsIsSerialized = false;
402
+ if (opts.serialize) {
403
+ applySerializers(args, this._serialize, this.serializers, this._stdErrSerialize);
404
+ argsIsSerialized = true;
405
+ }
406
+ if (opts.asObject || opts.formatters) {
407
+ const out = asObject(this, level, args, ts, opts);
408
+ if (opts.reportCaller && out && out.length > 0 && out[0] && typeof out[0] === "object") try {
409
+ const caller = getCallerLocation();
410
+ if (caller) out[0].caller = caller;
411
+ } catch (e) {}
412
+ write.call(proto, ...out);
413
+ } else {
414
+ if (opts.reportCaller) try {
415
+ const caller = getCallerLocation();
416
+ if (caller) args.push(caller);
417
+ } catch (e) {}
418
+ write.apply(proto, args);
419
+ }
420
+ if (opts.transmit) {
421
+ const transmitLevel = opts.transmit.level || self._level;
422
+ const transmitValue = levelToValue(transmitLevel, rootLogger);
423
+ const methodValue = levelToValue(level, rootLogger);
424
+ if (methodValue < transmitValue) return;
425
+ transmit(this, {
426
+ ts,
427
+ methodLevel: level,
428
+ methodValue,
429
+ transmitLevel,
430
+ transmitValue: rootLogger.levels.values[opts.transmit.level || self._level],
431
+ send: opts.transmit.send,
432
+ val: levelToValue(self._level, rootLogger)
433
+ }, args, argsIsSerialized);
434
+ }
435
+ };
436
+ })(self[baseLogFunctionSymbol][level]);
437
+ }
438
+ function asObject(logger, level, args, ts, opts) {
439
+ const { level: levelFormatter, log: logObjectFormatter = (obj) => obj } = opts.formatters || {};
440
+ const argsCloned = args.slice();
441
+ let msg = argsCloned[0];
442
+ const logObject = {};
443
+ let lvl = (logger._childLevel | 0) + 1;
444
+ if (lvl < 1) lvl = 1;
445
+ if (ts) logObject.time = ts;
446
+ if (levelFormatter) {
447
+ const formattedLevel = levelFormatter(level, logger.levels.values[level]);
448
+ Object.assign(logObject, formattedLevel);
449
+ } else logObject.level = logger.levels.values[level];
450
+ if (opts.asObjectBindingsOnly) {
451
+ if (msg !== null && typeof msg === "object") while (lvl-- && typeof argsCloned[0] === "object") Object.assign(logObject, argsCloned.shift());
452
+ return [logObjectFormatter(logObject), ...argsCloned];
453
+ } else {
454
+ if (msg !== null && typeof msg === "object") {
455
+ while (lvl-- && typeof argsCloned[0] === "object") Object.assign(logObject, argsCloned.shift());
456
+ msg = argsCloned.length ? format(argsCloned.shift(), argsCloned) : void 0;
457
+ } else if (typeof msg === "string") msg = format(argsCloned.shift(), argsCloned);
458
+ if (msg !== void 0) logObject[opts.messageKey] = msg;
459
+ return [logObjectFormatter(logObject)];
460
+ }
461
+ }
462
+ function applySerializers(args, serialize, serializers, stdErrSerialize) {
463
+ for (const i in args) if (stdErrSerialize && args[i] instanceof Error) args[i] = pino.stdSerializers.err(args[i]);
464
+ else if (typeof args[i] === "object" && !Array.isArray(args[i]) && serialize) {
465
+ for (const k in args[i]) if (serialize.indexOf(k) > -1 && k in serializers) args[i][k] = serializers[k](args[i][k]);
466
+ }
467
+ }
468
+ function transmit(logger, opts, args, argsIsSerialized = false) {
469
+ const send = opts.send;
470
+ const ts = opts.ts;
471
+ const methodLevel = opts.methodLevel;
472
+ const methodValue = opts.methodValue;
473
+ const val = opts.val;
474
+ const bindings = logger._logEvent.bindings;
475
+ if (!argsIsSerialized) applySerializers(args, logger._serialize || Object.keys(logger.serializers), logger.serializers, logger._stdErrSerialize === void 0 ? true : logger._stdErrSerialize);
476
+ logger._logEvent.ts = ts;
477
+ logger._logEvent.messages = args.filter(function(arg) {
478
+ return bindings.indexOf(arg) === -1;
479
+ });
480
+ logger._logEvent.level.label = methodLevel;
481
+ logger._logEvent.level.value = methodValue;
482
+ send(methodLevel, logger._logEvent, val);
483
+ logger._logEvent = createLogEventShape(bindings);
484
+ }
485
+ function createLogEventShape(bindings) {
486
+ return {
487
+ ts: 0,
488
+ messages: [],
489
+ bindings: bindings || [],
490
+ level: {
491
+ label: "",
492
+ value: 0
493
+ }
494
+ };
495
+ }
496
+ function asErrValue(err) {
497
+ const obj = {
498
+ type: err.constructor.name,
499
+ msg: err.message,
500
+ stack: err.stack
501
+ };
502
+ for (const key in err) if (obj[key] === void 0) obj[key] = err[key];
503
+ return obj;
504
+ }
505
+ function getTimeFunction(opts) {
506
+ if (typeof opts.timestamp === "function") return opts.timestamp;
507
+ if (opts.timestamp === false) return nullTime;
508
+ return epochTime;
509
+ }
510
+ function mock() {
511
+ return {};
512
+ }
513
+ function passthrough(a) {
514
+ return a;
515
+ }
516
+ function noop() {}
517
+ function nullTime() {
518
+ return false;
519
+ }
520
+ function epochTime() {
521
+ return Date.now();
522
+ }
523
+ function unixTime() {
524
+ return Math.round(Date.now() / 1e3);
525
+ }
526
+ function isoTime() {
527
+ return new Date(Date.now()).toISOString();
528
+ }
529
+ /* istanbul ignore next */
530
+ function pfGlobalThisOrFallback() {
531
+ function defd(o) {
532
+ return typeof o !== "undefined" && o;
533
+ }
534
+ try {
535
+ if (typeof globalThis !== "undefined") return globalThis;
536
+ Object.defineProperty(Object.prototype, "globalThis", {
537
+ get: function() {
538
+ delete Object.prototype.globalThis;
539
+ return this.globalThis = this;
540
+ },
541
+ configurable: true
542
+ });
543
+ return globalThis;
544
+ } catch (e) {
545
+ return defd(self) || defd(window) || defd(this) || {};
546
+ }
547
+ }
548
+ module.exports.default = pino;
549
+ module.exports.pino = pino;
550
+ /* istanbul ignore next */
551
+ function getCallerLocation() {
552
+ const stack = (/* @__PURE__ */ new Error()).stack;
553
+ if (!stack) return null;
554
+ const lines = stack.split("\n");
555
+ for (let i = 1; i < lines.length; i++) {
556
+ const l = lines[i].trim();
557
+ if (/(^at\s+)?(createWrap|LOG|set\s*\(|asObject|Object\.apply|Function\.apply)/.test(l)) continue;
558
+ if (l.indexOf("browser.js") !== -1) continue;
559
+ if (l.indexOf("node:internal") !== -1) continue;
560
+ if (l.indexOf("node_modules") !== -1) continue;
561
+ let m = l.match(/\((.*?):(\d+):(\d+)\)/);
562
+ if (!m) m = l.match(/at\s+(.*?):(\d+):(\d+)/);
563
+ if (m) {
564
+ const file = m[1];
565
+ const line = m[2];
566
+ const col = m[3];
567
+ return file + ":" + line + ":" + col;
568
+ }
569
+ }
570
+ return null;
571
+ }
572
+ })))(), 1);
573
+ /**
574
+ * Sensitive fields to strip from logged args.
575
+ * These are replaced with '[REDACTED]' to prevent token leakage.
576
+ */
577
+ var SENSITIVE_KEYS = [
578
+ "apiToken",
579
+ "token",
580
+ "password",
581
+ "secret",
582
+ "key",
583
+ "credentials"
584
+ ];
585
+ /**
586
+ * Return a shallow copy of `args` with sensitive keys replaced by '[REDACTED]'.
587
+ */
588
+ function sanitizeArgs(args) {
589
+ const sanitized = { ...args };
590
+ for (const k of SENSITIVE_KEYS) if (k in sanitized) sanitized[k] = "[REDACTED]";
591
+ return sanitized;
592
+ }
593
+ /**
594
+ * Resolve the audit log file path.
595
+ *
596
+ * Priority:
597
+ * 1. `FORGE_AUDIT_LOG` environment variable
598
+ * 2. `~/.config/forge-tools/audit.log` (default)
599
+ */
600
+ function getAuditLogPath() {
601
+ if (process.env.FORGE_AUDIT_LOG) return process.env.FORGE_AUDIT_LOG;
602
+ return join(homedir(), ".config", "forge-tools", "audit.log");
603
+ }
604
+ /**
605
+ * Create an audit logger that appends structured JSON lines to the audit log.
606
+ *
607
+ * Failures are always silent — logging must never interrupt the actual operation.
608
+ *
609
+ * @param source - Identifies who is logging ('mcp' or 'cli').
610
+ */
611
+ function createAuditLogger(source) {
612
+ let logger = null;
613
+ try {
614
+ const logPath = getAuditLogPath();
615
+ mkdirSync(dirname(logPath), { recursive: true });
616
+ logger = (0, import_browser.default)({ level: "info" }, createWriteStream(logPath, { flags: "a" }));
617
+ } catch {}
618
+ return { log(entry) {
619
+ try {
620
+ if (!logger) return;
621
+ logger.info({
622
+ source,
623
+ resource: entry.resource,
624
+ action: entry.action,
625
+ args: sanitizeArgs(entry.args),
626
+ status: entry.status,
627
+ ...entry.error !== void 0 ? { error: entry.error } : {}
628
+ });
629
+ } catch {}
630
+ } };
631
+ }
632
+ /**
633
+ * Create a test executor context with a mock HTTP client.
634
+ *
635
+ * @param overrides Partial overrides for the context.
636
+ */
637
+ function createTestExecutorContext(overrides = {}) {
638
+ return {
639
+ client: new Proxy({}, { get: (_target, prop) => {
640
+ return (..._args) => {
641
+ throw new Error(`HttpClient.${String(prop)}() called without mock — inject a mock client in createTestExecutorContext()`);
642
+ };
643
+ } }),
644
+ ...overrides
645
+ };
646
+ }
647
+ /**
648
+ * Create a new server.
649
+ */
650
+ async function createServer(options, ctx) {
651
+ return { data: (await ctx.client.post("/servers", options)).server };
652
+ }
653
+ /**
654
+ * Delete a server.
655
+ */
656
+ async function deleteServer(options, ctx) {
657
+ await ctx.client.delete(`/servers/${options.server_id}`);
658
+ return { data: void 0 };
659
+ }
660
+ /**
661
+ * Get a specific server by ID.
662
+ */
663
+ async function getServer(options, ctx) {
664
+ return { data: (await ctx.client.get(`/servers/${options.server_id}`)).server };
665
+ }
666
+ /**
667
+ * List all servers.
668
+ */
669
+ async function listServers(_options, ctx) {
670
+ return { data: (await ctx.client.get("/servers")).servers };
671
+ }
672
+ /**
673
+ * Reboot a server.
674
+ */
675
+ async function rebootServer(options, ctx) {
676
+ await ctx.client.post(`/servers/${options.server_id}/reboot`);
677
+ return { data: void 0 };
678
+ }
679
+ /**
680
+ * Create a new site on a server.
681
+ */
682
+ async function createSite(options, ctx) {
683
+ const { server_id, ...data } = options;
684
+ return { data: (await ctx.client.post(`/servers/${server_id}/sites`, data)).site };
685
+ }
686
+ /**
687
+ * Delete a site.
688
+ */
689
+ async function deleteSite(options, ctx) {
690
+ await ctx.client.delete(`/servers/${options.server_id}/sites/${options.site_id}`);
691
+ return { data: void 0 };
692
+ }
693
+ /**
694
+ * Get a specific site by ID.
695
+ */
696
+ async function getSite(options, ctx) {
697
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/sites/${options.site_id}`)).site };
698
+ }
699
+ /**
700
+ * List all sites on a server.
701
+ */
702
+ async function listSites(options, ctx) {
703
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/sites`)).sites };
704
+ }
705
+ /**
706
+ * Trigger a deployment for a site.
707
+ */
708
+ async function deploySite(options, ctx) {
709
+ await ctx.client.post(`/servers/${options.server_id}/sites/${options.site_id}/deployment/deploy`);
710
+ return { data: void 0 };
711
+ }
712
+ /**
713
+ * Trigger a deployment and wait for it to complete.
714
+ *
715
+ * 1. POSTs to the deploy endpoint.
716
+ * 2. Polls GET /servers/{id}/sites/{site_id} every `poll_interval_ms` ms.
717
+ * 3. When `deployment_status` becomes null the deploy is done.
718
+ * 4. Fetches the deployment log.
719
+ * 5. Checks the most recent deployment status to determine success/failure.
720
+ */
721
+ async function deploySiteAndWait(options, ctx) {
722
+ const { server_id, site_id, poll_interval_ms = 3e3, timeout_ms = 6e5, onProgress } = options;
723
+ const baseUrl = `/servers/${server_id}/sites/${site_id}`;
724
+ await ctx.client.post(`${baseUrl}/deployment/deploy`);
725
+ const startTime = Date.now();
726
+ await new Promise((resolve) => {
727
+ const tick = async () => {
728
+ const elapsed_ms = Date.now() - startTime;
729
+ if (elapsed_ms >= timeout_ms) {
730
+ resolve();
731
+ return;
732
+ }
733
+ const currentStatus = (await ctx.client.get(`/servers/${server_id}/sites/${site_id}`)).site.deployment_status;
734
+ if (onProgress) onProgress({
735
+ status: currentStatus ?? "done",
736
+ elapsed_ms
737
+ });
738
+ if (currentStatus === null) {
739
+ resolve();
740
+ return;
741
+ }
742
+ await new Promise((r) => setTimeout(r, poll_interval_ms));
743
+ await tick();
744
+ };
745
+ tick().catch(() => resolve());
746
+ });
747
+ const elapsed_ms = Date.now() - startTime;
748
+ let log = "";
749
+ try {
750
+ log = await ctx.client.get(`${baseUrl}/deployment/log`);
751
+ } catch {}
752
+ let deployStatus = "failed";
753
+ try {
754
+ const deployments = (await ctx.client.get(`${baseUrl}/deployments`)).deployments;
755
+ if (deployments.length > 0) deployStatus = deployments[0].status === "finished" ? "success" : "failed";
756
+ } catch {}
757
+ if (elapsed_ms >= timeout_ms) deployStatus = "failed";
758
+ return { data: {
759
+ status: deployStatus,
760
+ log,
761
+ elapsed_ms
762
+ } };
763
+ }
764
+ /**
765
+ * Get the deployment log for a site.
766
+ */
767
+ async function getDeploymentLog(options, ctx) {
768
+ return { data: await ctx.client.get(`/servers/${options.server_id}/sites/${options.site_id}/deployment/log`) };
769
+ }
770
+ /**
771
+ * Get the output of a deployment.
772
+ */
773
+ async function getDeploymentOutput(options, ctx) {
774
+ return { data: await ctx.client.get(`/servers/${options.server_id}/sites/${options.site_id}/deployments/${options.deployment_id}/output`) };
775
+ }
776
+ /**
777
+ * Get the deployment script for a site.
778
+ */
779
+ async function getDeploymentScript(options, ctx) {
780
+ return { data: await ctx.client.get(`/servers/${options.server_id}/sites/${options.site_id}/deployment/script`) };
781
+ }
782
+ /**
783
+ * List all deployments for a site.
784
+ */
785
+ async function listDeployments(options, ctx) {
786
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/sites/${options.site_id}/deployments`)).deployments };
787
+ }
788
+ /**
789
+ * Update the deployment script for a site.
790
+ */
791
+ async function updateDeploymentScript(options, ctx) {
792
+ await ctx.client.put(`/servers/${options.server_id}/sites/${options.site_id}/deployment/script`, { content: options.content });
793
+ return { data: void 0 };
794
+ }
795
+ /**
796
+ * Activate an SSL certificate.
797
+ */
798
+ async function activateCertificate(options, ctx) {
799
+ await ctx.client.post(`/servers/${options.server_id}/sites/${options.site_id}/certificates/${options.id}/activate`, {});
800
+ return { data: void 0 };
801
+ }
802
+ /**
803
+ * Create a new SSL certificate.
804
+ */
805
+ async function createCertificate(options, ctx) {
806
+ const { server_id, site_id, ...data } = options;
807
+ return { data: (await ctx.client.post(`/servers/${server_id}/sites/${site_id}/certificates`, data)).certificate };
808
+ }
809
+ /**
810
+ * Delete an SSL certificate.
811
+ */
812
+ async function deleteCertificate(options, ctx) {
813
+ await ctx.client.delete(`/servers/${options.server_id}/sites/${options.site_id}/certificates/${options.id}`);
814
+ return { data: void 0 };
815
+ }
816
+ /**
817
+ * Get a single SSL certificate.
818
+ */
819
+ async function getCertificate(options, ctx) {
820
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/sites/${options.site_id}/certificates/${options.id}`)).certificate };
821
+ }
822
+ /**
823
+ * List SSL certificates for a site.
824
+ */
825
+ async function listCertificates(options, ctx) {
826
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/sites/${options.site_id}/certificates`)).certificates };
827
+ }
828
+ /**
829
+ * Create a new database.
830
+ */
831
+ async function createDatabase(options, ctx) {
832
+ const { server_id, ...data } = options;
833
+ return { data: (await ctx.client.post(`/servers/${server_id}/databases`, data)).database };
834
+ }
835
+ /**
836
+ * Delete a database.
837
+ */
838
+ async function deleteDatabase(options, ctx) {
839
+ await ctx.client.delete(`/servers/${options.server_id}/databases/${options.id}`);
840
+ return { data: void 0 };
841
+ }
842
+ /**
843
+ * Get a single database.
844
+ */
845
+ async function getDatabase(options, ctx) {
846
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/databases/${options.id}`)).database };
847
+ }
848
+ /**
849
+ * List databases on a server.
850
+ */
851
+ async function listDatabases(options, ctx) {
852
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/databases`)).databases };
853
+ }
854
+ /**
855
+ * Create a new database user.
856
+ */
857
+ async function createDatabaseUser(options, ctx) {
858
+ const { server_id, ...data } = options;
859
+ return { data: (await ctx.client.post(`/servers/${server_id}/database-users`, data)).user };
860
+ }
861
+ /**
862
+ * Delete a database user.
863
+ */
864
+ async function deleteDatabaseUser(options, ctx) {
865
+ await ctx.client.delete(`/servers/${options.server_id}/database-users/${options.id}`);
866
+ return { data: void 0 };
867
+ }
868
+ /**
869
+ * Get a single database user.
870
+ */
871
+ async function getDatabaseUser(options, ctx) {
872
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/database-users/${options.id}`)).user };
873
+ }
874
+ /**
875
+ * List database users on a server.
876
+ */
877
+ async function listDatabaseUsers(options, ctx) {
878
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/database-users`)).users };
879
+ }
880
+ /**
881
+ * Create a new daemon (background process).
882
+ */
883
+ async function createDaemon(options, ctx) {
884
+ const { server_id, ...data } = options;
885
+ return { data: (await ctx.client.post(`/servers/${server_id}/daemons`, data)).daemon };
886
+ }
887
+ /**
888
+ * Delete a daemon.
889
+ */
890
+ async function deleteDaemon(options, ctx) {
891
+ await ctx.client.delete(`/servers/${options.server_id}/daemons/${options.id}`);
892
+ return { data: void 0 };
893
+ }
894
+ /**
895
+ * Get a single daemon.
896
+ */
897
+ async function getDaemon(options, ctx) {
898
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/daemons/${options.id}`)).daemon };
899
+ }
900
+ /**
901
+ * List daemons (background processes) on a server.
902
+ */
903
+ async function listDaemons(options, ctx) {
904
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/daemons`)).daemons };
905
+ }
906
+ /**
907
+ * Restart a daemon.
908
+ */
909
+ async function restartDaemon(options, ctx) {
910
+ await ctx.client.post(`/servers/${options.server_id}/daemons/${options.id}/restart`, {});
911
+ return { data: void 0 };
912
+ }
913
+ async function createFirewallRule(options, ctx) {
914
+ const { server_id, ...data } = options;
915
+ return { data: (await ctx.client.post(`/servers/${server_id}/firewall-rules`, data)).rule };
916
+ }
917
+ async function deleteFirewallRule(options, ctx) {
918
+ await ctx.client.delete(`/servers/${options.server_id}/firewall-rules/${options.id}`);
919
+ return { data: void 0 };
920
+ }
921
+ async function getFirewallRule(options, ctx) {
922
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/firewall-rules/${options.id}`)).rule };
923
+ }
924
+ async function listFirewallRules(options, ctx) {
925
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/firewall-rules`)).rules };
926
+ }
927
+ async function createSshKey(options, ctx) {
928
+ const { server_id, ...data } = options;
929
+ return { data: (await ctx.client.post(`/servers/${server_id}/keys`, data)).key };
930
+ }
931
+ async function deleteSshKey(options, ctx) {
932
+ await ctx.client.delete(`/servers/${options.server_id}/keys/${options.id}`);
933
+ return { data: void 0 };
934
+ }
935
+ async function getSshKey(options, ctx) {
936
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/keys/${options.id}`)).key };
937
+ }
938
+ async function listSshKeys(options, ctx) {
939
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/keys`)).keys };
940
+ }
941
+ async function createSecurityRule(options, ctx) {
942
+ const { server_id, site_id, ...data } = options;
943
+ return { data: (await ctx.client.post(`/servers/${server_id}/sites/${site_id}/security-rules`, data)).security_rule };
944
+ }
945
+ async function deleteSecurityRule(options, ctx) {
946
+ await ctx.client.delete(`/servers/${options.server_id}/sites/${options.site_id}/security-rules/${options.id}`);
947
+ return { data: void 0 };
948
+ }
949
+ async function getSecurityRule(options, ctx) {
950
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/sites/${options.site_id}/security-rules/${options.id}`)).security_rule };
951
+ }
952
+ async function listSecurityRules(options, ctx) {
953
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/sites/${options.site_id}/security-rules`)).security_rules };
954
+ }
955
+ async function createRedirectRule(options, ctx) {
956
+ const { server_id, site_id, ...data } = options;
957
+ return { data: (await ctx.client.post(`/servers/${server_id}/sites/${site_id}/redirect-rules`, data)).redirect_rule };
958
+ }
959
+ async function deleteRedirectRule(options, ctx) {
960
+ await ctx.client.delete(`/servers/${options.server_id}/sites/${options.site_id}/redirect-rules/${options.id}`);
961
+ return { data: void 0 };
962
+ }
963
+ async function getRedirectRule(options, ctx) {
964
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/sites/${options.site_id}/redirect-rules/${options.id}`)).redirect_rule };
965
+ }
966
+ async function listRedirectRules(options, ctx) {
967
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/sites/${options.site_id}/redirect-rules`)).redirect_rules };
968
+ }
969
+ async function createMonitor(options, ctx) {
970
+ const { server_id, ...data } = options;
971
+ return { data: (await ctx.client.post(`/servers/${server_id}/monitors`, data)).monitor };
972
+ }
973
+ async function deleteMonitor(options, ctx) {
974
+ await ctx.client.delete(`/servers/${options.server_id}/monitors/${options.id}`);
975
+ return { data: void 0 };
976
+ }
977
+ async function getMonitor(options, ctx) {
978
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/monitors/${options.id}`)).monitor };
979
+ }
980
+ async function listMonitors(options, ctx) {
981
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/monitors`)).monitors };
982
+ }
983
+ async function createNginxTemplate(options, ctx) {
984
+ const { server_id, ...data } = options;
985
+ return { data: (await ctx.client.post(`/servers/${server_id}/nginx/templates`, data)).template };
986
+ }
987
+ async function deleteNginxTemplate(options, ctx) {
988
+ await ctx.client.delete(`/servers/${options.server_id}/nginx/templates/${options.id}`);
989
+ return { data: void 0 };
990
+ }
991
+ async function getNginxTemplate(options, ctx) {
992
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/nginx/templates/${options.id}`)).template };
993
+ }
994
+ async function listNginxTemplates(options, ctx) {
995
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/nginx/templates`)).templates };
996
+ }
997
+ async function updateNginxTemplate(options, ctx) {
998
+ const { server_id, id, ...data } = options;
999
+ return { data: (await ctx.client.put(`/servers/${server_id}/nginx/templates/${id}`, data)).template };
1000
+ }
1001
+ /**
1002
+ * Get environment variables for a site.
1003
+ */
1004
+ async function getEnv(options, ctx) {
1005
+ return { data: await ctx.client.get(`/servers/${options.server_id}/sites/${options.site_id}/env`) };
1006
+ }
1007
+ /**
1008
+ * Update environment variables for a site.
1009
+ */
1010
+ async function updateEnv(options, ctx) {
1011
+ await ctx.client.put(`/servers/${options.server_id}/sites/${options.site_id}/env`, { content: options.content });
1012
+ return { data: void 0 };
1013
+ }
1014
+ /**
1015
+ * Get Nginx configuration for a site.
1016
+ */
1017
+ async function getNginxConfig(options, ctx) {
1018
+ return { data: await ctx.client.get(`/servers/${options.server_id}/sites/${options.site_id}/nginx`) };
1019
+ }
1020
+ /**
1021
+ * Update Nginx configuration for a site.
1022
+ */
1023
+ async function updateNginxConfig(options, ctx) {
1024
+ await ctx.client.put(`/servers/${options.server_id}/sites/${options.site_id}/nginx`, { content: options.content });
1025
+ return { data: void 0 };
1026
+ }
1027
+ async function createRecipe(options, ctx) {
1028
+ return { data: (await ctx.client.post("/recipes", options)).recipe };
1029
+ }
1030
+ async function deleteRecipe(options, ctx) {
1031
+ await ctx.client.delete(`/recipes/${options.id}`);
1032
+ return { data: void 0 };
1033
+ }
1034
+ async function getRecipe(options, ctx) {
1035
+ return { data: (await ctx.client.get(`/recipes/${options.id}`)).recipe };
1036
+ }
1037
+ async function listRecipes(_options, ctx) {
1038
+ return { data: (await ctx.client.get("/recipes")).recipes };
1039
+ }
1040
+ /**
1041
+ * Run a recipe on specified servers.
1042
+ */
1043
+ async function runRecipe(options, ctx) {
1044
+ await ctx.client.post(`/recipes/${options.id}/run`, { servers: options.servers });
1045
+ return { data: void 0 };
1046
+ }
1047
+ /**
1048
+ * Create a new backup configuration.
1049
+ */
1050
+ async function createBackupConfig(options, ctx) {
1051
+ const { server_id, ...data } = options;
1052
+ return { data: (await ctx.client.post(`/servers/${server_id}/backup-configs`, data)).backup };
1053
+ }
1054
+ /**
1055
+ * Delete a backup configuration.
1056
+ */
1057
+ async function deleteBackupConfig(options, ctx) {
1058
+ await ctx.client.delete(`/servers/${options.server_id}/backup-configs/${options.id}`);
1059
+ return { data: void 0 };
1060
+ }
1061
+ /**
1062
+ * Get a specific backup configuration.
1063
+ */
1064
+ async function getBackupConfig(options, ctx) {
1065
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/backup-configs/${options.id}`)).backup };
1066
+ }
1067
+ /**
1068
+ * List backup configurations for a server.
1069
+ */
1070
+ async function listBackupConfigs(options, ctx) {
1071
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/backup-configs`)).backups };
1072
+ }
1073
+ /**
1074
+ * Execute a command on a site.
1075
+ */
1076
+ async function createCommand(options, ctx) {
1077
+ return { data: (await ctx.client.post(`/servers/${options.server_id}/sites/${options.site_id}/commands`, { command: options.command })).command };
1078
+ }
1079
+ /**
1080
+ * Get a specific command.
1081
+ */
1082
+ async function getCommand(options, ctx) {
1083
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/sites/${options.site_id}/commands/${options.id}`)).command };
1084
+ }
1085
+ /**
1086
+ * List commands executed on a site.
1087
+ */
1088
+ async function listCommands(options, ctx) {
1089
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/sites/${options.site_id}/commands`)).commands };
1090
+ }
1091
+ /**
1092
+ * Create a new scheduled job (cron).
1093
+ */
1094
+ async function createScheduledJob(options, ctx) {
1095
+ const { server_id, ...data } = options;
1096
+ return { data: (await ctx.client.post(`/servers/${server_id}/jobs`, data)).job };
1097
+ }
1098
+ /**
1099
+ * Delete a scheduled job.
1100
+ */
1101
+ async function deleteScheduledJob(options, ctx) {
1102
+ await ctx.client.delete(`/servers/${options.server_id}/jobs/${options.id}`);
1103
+ return { data: void 0 };
1104
+ }
1105
+ /**
1106
+ * Get a specific scheduled job.
1107
+ */
1108
+ async function getScheduledJob(options, ctx) {
1109
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/jobs/${options.id}`)).job };
1110
+ }
1111
+ /**
1112
+ * List scheduled jobs (cron) on a server.
1113
+ */
1114
+ async function listScheduledJobs(options, ctx) {
1115
+ return { data: (await ctx.client.get(`/servers/${options.server_id}/jobs`)).jobs };
1116
+ }
1117
+ /**
1118
+ * Get the currently authenticated user.
1119
+ */
1120
+ async function getUser(_options, ctx) {
1121
+ return { data: (await ctx.client.get("/user")).user };
1122
+ }
1123
+ export { ACTIONS, RESOURCES, activateCertificate, createAuditLogger, createBackupConfig, createCertificate, createCommand, createDaemon, createDatabase, createDatabaseUser, createFirewallRule, createMonitor, createNginxTemplate, createRecipe, createRedirectRule, createScheduledJob, createSecurityRule, createServer, createSite, createSshKey, createTestExecutorContext, deleteBackupConfig, deleteCertificate, deleteDaemon, deleteDatabase, deleteDatabaseUser, deleteFirewallRule, deleteMonitor, deleteNginxTemplate, deleteRecipe, deleteRedirectRule, deleteScheduledJob, deleteSecurityRule, deleteServer, deleteSite, deleteSshKey, deploySite, deploySiteAndWait, getAuditLogPath, getBackupConfig, getCertificate, getCommand, getDaemon, getDatabase, getDatabaseUser, getDeploymentLog, getDeploymentOutput, getDeploymentScript, getEnv, getFirewallRule, getMonitor, getNginxConfig, getNginxTemplate, getRecipe, getRedirectRule, getScheduledJob, getSecurityRule, getServer, getSite, getSshKey, getUser, listBackupConfigs, listCertificates, listCommands, listDaemons, listDatabaseUsers, listDatabases, listDeployments, listFirewallRules, listMonitors, listNginxTemplates, listRecipes, listRedirectRules, listScheduledJobs, listSecurityRules, listServers, listSites, listSshKeys, rebootServer, restartDaemon, runRecipe, sanitizeArgs, updateDeploymentScript, updateEnv, updateNginxConfig, updateNginxTemplate };
1124
+
1125
+ //# sourceMappingURL=index.js.map