@studiometa/forge-core 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -56,6 +56,8 @@ import { RESOURCES, ACTIONS } from "@studiometa/forge-core";
56
56
 
57
57
  - `listDeployments({ server_id, site_id }, ctx)` — List deployments
58
58
  - `deploySite({ server_id, site_id }, ctx)` — Trigger deployment
59
+ - `deploySiteAndWait({ server_id, site_id, timeout_ms?, poll_interval_ms? }, ctx)` — Deploy and poll until complete, returns `DeployResult` with status, log, and elapsed time
60
+ - `getDeploymentLog({ server_id, site_id }, ctx)` — Get the latest deployment log
59
61
  - `getDeploymentOutput({ server_id, site_id, deployment_id }, ctx)` — Get output
60
62
  - `getDeploymentScript({ server_id, site_id }, ctx)` — Get deploy script
61
63
  - `updateDeploymentScript({ server_id, site_id, content }, ctx)` — Update script
@@ -100,6 +102,34 @@ import { RESOURCES, ACTIONS } from "@studiometa/forge-core";
100
102
 
101
103
  - `listRecipes`, `getRecipe`, `createRecipe`, `deleteRecipe`, `runRecipe`
102
104
 
105
+ ## Audit Logging
106
+
107
+ A shared audit logger for tracking write operations across MCP and CLI:
108
+
109
+ ```typescript
110
+ import { createAuditLogger } from "@studiometa/forge-core";
111
+
112
+ const logger = createAuditLogger("mcp"); // or 'cli'
113
+
114
+ logger.log({
115
+ source: "mcp",
116
+ resource: "servers",
117
+ action: "reboot",
118
+ args: { id: "123" },
119
+ status: "success",
120
+ });
121
+ ```
122
+
123
+ - Logs JSON lines via [pino](https://github.com/pinojs/pino) to `~/.config/forge-tools/audit.log`
124
+ - Override path with `FORGE_AUDIT_LOG` environment variable
125
+ - Sensitive fields (`apiToken`, `token`, `password`, `secret`, `key`, `credentials`) are automatically redacted
126
+ - Silent no-op on failure — never interrupts the actual operation
127
+
128
+ ### Utilities
129
+
130
+ - `sanitizeArgs(args)` — Strip sensitive fields from an args object
131
+ - `getAuditLogPath()` — Resolve the audit log file path
132
+
103
133
  ## Testing
104
134
 
105
135
  ```typescript
@@ -0,0 +1,13 @@
1
+ import type { ExecutorContext, ExecutorResult } from "../../context.ts";
2
+ import type { DeploySiteAndWaitOptions, DeployResult } from "./types.ts";
3
+ /**
4
+ * Trigger a deployment and wait for it to complete.
5
+ *
6
+ * 1. POSTs to the deploy endpoint.
7
+ * 2. Polls GET /servers/{id}/sites/{site_id} every `poll_interval_ms` ms.
8
+ * 3. When `deployment_status` becomes null the deploy is done.
9
+ * 4. Fetches the deployment log.
10
+ * 5. Checks the most recent deployment status to determine success/failure.
11
+ */
12
+ export declare function deploySiteAndWait(options: DeploySiteAndWaitOptions, ctx: ExecutorContext): Promise<ExecutorResult<DeployResult>>;
13
+ //# sourceMappingURL=deploy-and-wait.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-and-wait.d.ts","sourceRoot":"","sources":["../../../src/executors/deployments/deploy-and-wait.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,KAAK,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEzE;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,EACjC,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CA2EvC"}
@@ -0,0 +1,7 @@
1
+ import type { ExecutorContext, ExecutorResult } from "../../context.ts";
2
+ import type { GetDeploymentLogOptions } from "./types.ts";
3
+ /**
4
+ * Get the deployment log for a site.
5
+ */
6
+ export declare function getDeploymentLog(options: GetDeploymentLogOptions, ctx: ExecutorContext): Promise<ExecutorResult<string>>;
7
+ //# sourceMappingURL=get-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-log.d.ts","sourceRoot":"","sources":["../../../src/executors/deployments/get-log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,EAChC,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAKjC"}
@@ -1,7 +1,9 @@
1
1
  export { deploySite } from "./deploy.ts";
2
+ export { deploySiteAndWait } from "./deploy-and-wait.ts";
3
+ export { getDeploymentLog } from "./get-log.ts";
2
4
  export { getDeploymentOutput } from "./get-output.ts";
3
5
  export { getDeploymentScript } from "./get-script.ts";
4
6
  export { listDeployments } from "./list.ts";
5
7
  export { updateDeploymentScript } from "./update-script.ts";
6
- export type { DeploySiteOptions, GetDeploymentOutputOptions, GetDeploymentScriptOptions, ListDeploymentsOptions, UpdateDeploymentScriptOptions, } from "./types.ts";
8
+ export type { DeployResult, DeploySiteAndWaitOptions, DeploySiteOptions, GetDeploymentLogOptions, GetDeploymentOutputOptions, GetDeploymentScriptOptions, ListDeploymentsOptions, UpdateDeploymentScriptOptions, } from "./types.ts";
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/executors/deployments/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EACV,iBAAiB,EACjB,0BAA0B,EAC1B,0BAA0B,EAC1B,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/executors/deployments/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EACV,YAAY,EACZ,wBAAwB,EACxB,iBAAiB,EACjB,uBAAuB,EACvB,0BAA0B,EAC1B,0BAA0B,EAC1B,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,YAAY,CAAC"}
@@ -38,4 +38,35 @@ export interface UpdateDeploymentScriptOptions {
38
38
  site_id: string;
39
39
  content: string;
40
40
  }
41
+ /**
42
+ * Options for getting the deployment log.
43
+ */
44
+ export interface GetDeploymentLogOptions {
45
+ server_id: string;
46
+ site_id: string;
47
+ }
48
+ /**
49
+ * Options for deploying a site and waiting for completion.
50
+ */
51
+ export interface DeploySiteAndWaitOptions {
52
+ server_id: string;
53
+ site_id: string;
54
+ /** Polling interval in milliseconds. Default: 3000 */
55
+ poll_interval_ms?: number;
56
+ /** Timeout in milliseconds. Default: 600000 (10 min) */
57
+ timeout_ms?: number;
58
+ /** Called on each poll iteration with current status and elapsed time. */
59
+ onProgress?: (update: {
60
+ status: string;
61
+ elapsed_ms: number;
62
+ }) => void;
63
+ }
64
+ /**
65
+ * Result of the deploySiteAndWait executor.
66
+ */
67
+ export interface DeployResult {
68
+ status: "success" | "failed";
69
+ log: string;
70
+ elapsed_ms: number;
71
+ }
41
72
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/executors/deployments/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/executors/deployments/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACvE;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export { ACTIONS, RESOURCES } from "./constants.ts";
2
2
  export type { Action, Resource } from "./constants.ts";
3
+ export { createAuditLogger, sanitizeArgs, getAuditLogPath } from "./logger.ts";
4
+ export type { AuditLogger, AuditLogEntry } from "./logger.ts";
3
5
  export { createTestExecutorContext } from "./context.ts";
4
6
  export type { ExecutorContext, ExecutorResult } from "./context.ts";
5
7
  export type { Executor } from "./executors/types.ts";
@@ -7,8 +9,8 @@ export { createServer, deleteServer, getServer, listServers, rebootServer, } fro
7
9
  export type { CreateServerOptions, DeleteServerOptions, GetServerOptions, ListServersOptions, RebootServerOptions, } from "./executors/servers/index.ts";
8
10
  export { createSite, deleteSite, getSite, listSites } from "./executors/sites/index.ts";
9
11
  export type { CreateSiteOptions, DeleteSiteOptions, GetSiteOptions, ListSitesOptions, } from "./executors/sites/index.ts";
10
- export { deploySite, getDeploymentOutput, getDeploymentScript, listDeployments, updateDeploymentScript, } from "./executors/deployments/index.ts";
11
- export type { DeploySiteOptions, GetDeploymentOutputOptions, GetDeploymentScriptOptions, ListDeploymentsOptions, UpdateDeploymentScriptOptions, } from "./executors/deployments/index.ts";
12
+ export { deploySite, deploySiteAndWait, getDeploymentLog, getDeploymentOutput, getDeploymentScript, listDeployments, updateDeploymentScript, } from "./executors/deployments/index.ts";
13
+ export type { DeployResult, DeploySiteAndWaitOptions, DeploySiteOptions, GetDeploymentLogOptions, GetDeploymentOutputOptions, GetDeploymentScriptOptions, ListDeploymentsOptions, UpdateDeploymentScriptOptions, } from "./executors/deployments/index.ts";
12
14
  export { activateCertificate, createCertificate, deleteCertificate, getCertificate, listCertificates, } from "./executors/certificates/index.ts";
13
15
  export type { ActivateCertificateOptions, CreateCertificateOptions, DeleteCertificateOptions, GetCertificateOptions, ListCertificatesOptions, } from "./executors/certificates/index.ts";
14
16
  export { createDatabase, deleteDatabase, getDatabase, listDatabases, } from "./executors/databases/index.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}