@sylphx/management 0.1.0 → 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 (259) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/LICENSE +21 -0
  3. package/README.md +157 -101
  4. package/dist/admin.d.ts +141 -0
  5. package/dist/admin.d.ts.map +1 -0
  6. package/dist/admin.js +96 -0
  7. package/dist/adminBootstrap.d.ts +46 -0
  8. package/dist/adminBootstrap.d.ts.map +1 -0
  9. package/dist/adminBootstrap.js +33 -0
  10. package/dist/adminBuilds.d.ts +72 -0
  11. package/dist/adminBuilds.d.ts.map +1 -0
  12. package/dist/adminBuilds.js +29 -0
  13. package/dist/adminEnvServices.d.ts +41 -0
  14. package/dist/adminEnvServices.d.ts.map +1 -0
  15. package/dist/adminEnvServices.js +22 -0
  16. package/dist/adminRateLimits.d.ts +61 -0
  17. package/dist/adminRateLimits.d.ts.map +1 -0
  18. package/dist/adminRateLimits.js +44 -0
  19. package/dist/adminReconcile.d.ts +45 -0
  20. package/dist/adminReconcile.d.ts.map +1 -0
  21. package/dist/adminReconcile.js +20 -0
  22. package/dist/adminResources.d.ts +97 -0
  23. package/dist/adminResources.d.ts.map +1 -0
  24. package/dist/adminResources.js +40 -0
  25. package/dist/adminSecrets.d.ts +60 -0
  26. package/dist/adminSecrets.d.ts.map +1 -0
  27. package/dist/adminSecrets.js +43 -0
  28. package/dist/adminTenants.d.ts +41 -0
  29. package/dist/adminTenants.d.ts.map +1 -0
  30. package/dist/adminTenants.js +29 -0
  31. package/dist/ai.d.ts +148 -0
  32. package/dist/ai.d.ts.map +1 -0
  33. package/dist/ai.js +29 -0
  34. package/dist/analytics.d.ts +49 -0
  35. package/dist/analytics.d.ts.map +1 -0
  36. package/dist/analytics.js +23 -0
  37. package/dist/auth.d.ts +39 -0
  38. package/dist/auth.d.ts.map +1 -0
  39. package/dist/auth.js +27 -0
  40. package/dist/authSettings.d.ts +71 -0
  41. package/dist/authSettings.d.ts.map +1 -0
  42. package/dist/authSettings.js +39 -0
  43. package/dist/backups.d.ts +66 -0
  44. package/dist/backups.d.ts.map +1 -0
  45. package/dist/backups.js +32 -0
  46. package/dist/billing.d.ts +105 -0
  47. package/dist/billing.d.ts.map +1 -0
  48. package/dist/billing.js +42 -0
  49. package/dist/billingSettings.d.ts +78 -0
  50. package/dist/billingSettings.d.ts.map +1 -0
  51. package/dist/billingSettings.js +54 -0
  52. package/dist/branchDatabases.d.ts +53 -0
  53. package/dist/branchDatabases.d.ts.map +1 -0
  54. package/dist/branchDatabases.js +38 -0
  55. package/dist/certs.d.ts +63 -0
  56. package/dist/certs.d.ts.map +1 -0
  57. package/dist/certs.js +28 -0
  58. package/dist/ciSettings.d.ts +77 -0
  59. package/dist/ciSettings.d.ts.map +1 -0
  60. package/dist/ciSettings.js +41 -0
  61. package/dist/client.d.ts +36 -38
  62. package/dist/client.d.ts.map +1 -1
  63. package/dist/client.js +32 -90
  64. package/dist/consent.d.ts +111 -0
  65. package/dist/consent.d.ts.map +1 -0
  66. package/dist/consent.js +35 -0
  67. package/dist/databases.d.ts +17 -0
  68. package/dist/databases.d.ts.map +1 -0
  69. package/dist/databases.js +32 -0
  70. package/dist/deployments.d.ts +22 -0
  71. package/dist/deployments.d.ts.map +1 -0
  72. package/dist/deployments.js +39 -0
  73. package/dist/domains.d.ts +26 -0
  74. package/dist/domains.d.ts.map +1 -0
  75. package/dist/domains.js +39 -0
  76. package/dist/edgeDeployments.d.ts +43 -0
  77. package/dist/edgeDeployments.d.ts.map +1 -0
  78. package/dist/edgeDeployments.js +32 -0
  79. package/dist/email.d.ts +45 -0
  80. package/dist/email.d.ts.map +1 -0
  81. package/dist/email.js +21 -0
  82. package/dist/engagement.d.ts +100 -0
  83. package/dist/engagement.d.ts.map +1 -0
  84. package/dist/engagement.js +28 -0
  85. package/dist/envVars.d.ts +17 -0
  86. package/dist/envVars.d.ts.map +1 -0
  87. package/dist/envVars.js +34 -0
  88. package/dist/environments.d.ts +41 -0
  89. package/dist/environments.d.ts.map +1 -0
  90. package/dist/environments.js +54 -0
  91. package/dist/errors.d.ts +8 -3
  92. package/dist/errors.d.ts.map +1 -1
  93. package/dist/errors.js +8 -2
  94. package/dist/experiments.d.ts +80 -0
  95. package/dist/experiments.d.ts.map +1 -0
  96. package/dist/experiments.js +23 -0
  97. package/dist/flags.d.ts +85 -0
  98. package/dist/flags.d.ts.map +1 -0
  99. package/dist/flags.js +25 -0
  100. package/dist/functions.d.ts +39 -0
  101. package/dist/functions.d.ts.map +1 -0
  102. package/dist/functions.js +40 -0
  103. package/dist/github.d.ts +33 -0
  104. package/dist/github.d.ts.map +1 -0
  105. package/dist/github.js +22 -0
  106. package/dist/http.d.ts +28 -0
  107. package/dist/http.d.ts.map +1 -0
  108. package/dist/http.js +71 -0
  109. package/dist/index.d.ts +85 -20
  110. package/dist/index.d.ts.map +1 -1
  111. package/dist/index.js +86 -20
  112. package/dist/kv.d.ts +66 -0
  113. package/dist/kv.d.ts.map +1 -0
  114. package/dist/kv.js +36 -0
  115. package/dist/logs.d.ts +14 -0
  116. package/dist/logs.d.ts.map +1 -0
  117. package/dist/logs.js +17 -0
  118. package/dist/management.d.ts +55 -0
  119. package/dist/management.d.ts.map +1 -0
  120. package/dist/management.js +31 -0
  121. package/dist/monitoring.d.ts +65 -0
  122. package/dist/monitoring.d.ts.map +1 -0
  123. package/dist/monitoring.js +29 -0
  124. package/dist/newsletter.d.ts +279 -0
  125. package/dist/newsletter.d.ts.map +1 -0
  126. package/dist/newsletter.js +98 -0
  127. package/dist/notifications.d.ts +30 -0
  128. package/dist/notifications.d.ts.map +1 -0
  129. package/dist/notifications.js +19 -0
  130. package/dist/oidc.d.ts +46 -0
  131. package/dist/oidc.d.ts.map +1 -0
  132. package/dist/oidc.js +25 -0
  133. package/dist/organizations.d.ts +24 -0
  134. package/dist/organizations.d.ts.map +1 -0
  135. package/dist/organizations.js +42 -0
  136. package/dist/plans.d.ts +66 -0
  137. package/dist/plans.d.ts.map +1 -0
  138. package/dist/plans.js +42 -0
  139. package/dist/privacy.d.ts +138 -0
  140. package/dist/privacy.d.ts.map +1 -0
  141. package/dist/privacy.js +41 -0
  142. package/dist/projects.d.ts +14 -0
  143. package/dist/projects.d.ts.map +1 -0
  144. package/dist/projects.js +22 -0
  145. package/dist/realtime.d.ts +33 -0
  146. package/dist/realtime.d.ts.map +1 -0
  147. package/dist/realtime.js +19 -0
  148. package/dist/referrals.d.ts +100 -0
  149. package/dist/referrals.d.ts.map +1 -0
  150. package/dist/referrals.js +33 -0
  151. package/dist/refresh.d.ts +44 -0
  152. package/dist/refresh.d.ts.map +1 -0
  153. package/dist/refresh.js +33 -0
  154. package/dist/remoteConfig.d.ts +15 -0
  155. package/dist/remoteConfig.d.ts.map +1 -0
  156. package/dist/remoteConfig.js +35 -0
  157. package/dist/resourceBindings.d.ts +19 -0
  158. package/dist/resourceBindings.d.ts.map +1 -0
  159. package/dist/resourceBindings.js +24 -0
  160. package/dist/runners.d.ts +60 -0
  161. package/dist/runners.d.ts.map +1 -0
  162. package/dist/runners.js +17 -0
  163. package/dist/saml.d.ts +44 -0
  164. package/dist/saml.d.ts.map +1 -0
  165. package/dist/saml.js +77 -0
  166. package/dist/sandboxes.d.ts +15 -0
  167. package/dist/sandboxes.d.ts.map +1 -0
  168. package/dist/sandboxes.js +18 -0
  169. package/dist/search.d.ts +66 -0
  170. package/dist/search.d.ts.map +1 -0
  171. package/dist/search.js +29 -0
  172. package/dist/secrets.d.ts +50 -0
  173. package/dist/secrets.d.ts.map +1 -0
  174. package/dist/secrets.js +61 -0
  175. package/dist/security.d.ts +58 -0
  176. package/dist/security.d.ts.map +1 -0
  177. package/dist/security.js +49 -0
  178. package/dist/serviceTokenRequests.d.ts +71 -0
  179. package/dist/serviceTokenRequests.d.ts.map +1 -0
  180. package/dist/serviceTokenRequests.js +43 -0
  181. package/dist/serviceTokens.d.ts +65 -0
  182. package/dist/serviceTokens.d.ts.map +1 -0
  183. package/dist/serviceTokens.js +22 -0
  184. package/dist/services.d.ts +10 -0
  185. package/dist/services.d.ts.map +1 -0
  186. package/dist/services.js +15 -0
  187. package/dist/sessionReplay.d.ts +116 -0
  188. package/dist/sessionReplay.d.ts.map +1 -0
  189. package/dist/sessionReplay.js +29 -0
  190. package/dist/storage.d.ts +12 -0
  191. package/dist/storage.d.ts.map +1 -0
  192. package/dist/storage.js +10 -0
  193. package/dist/tasks.d.ts +29 -0
  194. package/dist/tasks.d.ts.map +1 -0
  195. package/dist/tasks.js +29 -0
  196. package/dist/types.d.ts +59 -155
  197. package/dist/types.d.ts.map +1 -1
  198. package/dist/types.js +17 -3
  199. package/dist/user.d.ts +99 -0
  200. package/dist/user.d.ts.map +1 -0
  201. package/dist/user.js +58 -0
  202. package/dist/users.d.ts +9 -0
  203. package/dist/users.d.ts.map +1 -0
  204. package/dist/users.js +11 -0
  205. package/dist/volumes.d.ts +16 -0
  206. package/dist/volumes.d.ts.map +1 -0
  207. package/dist/volumes.js +9 -0
  208. package/dist/webhooks.d.ts +77 -0
  209. package/dist/webhooks.d.ts.map +1 -0
  210. package/dist/webhooks.js +27 -0
  211. package/package.json +194 -5
  212. package/dist/request.d.ts +0 -5
  213. package/dist/request.d.ts.map +0 -1
  214. package/dist/request.js +0 -1
  215. package/dist/resources/config.d.ts +0 -30
  216. package/dist/resources/config.d.ts.map +0 -1
  217. package/dist/resources/config.js +0 -62
  218. package/dist/resources/databases.d.ts +0 -26
  219. package/dist/resources/databases.d.ts.map +0 -1
  220. package/dist/resources/databases.js +0 -29
  221. package/dist/resources/deployments.d.ts +0 -24
  222. package/dist/resources/deployments.d.ts.map +0 -1
  223. package/dist/resources/deployments.js +0 -30
  224. package/dist/resources/domains.d.ts +0 -30
  225. package/dist/resources/domains.d.ts.map +0 -1
  226. package/dist/resources/domains.js +0 -46
  227. package/dist/resources/env-vars.d.ts +0 -19
  228. package/dist/resources/env-vars.d.ts.map +0 -1
  229. package/dist/resources/env-vars.js +0 -30
  230. package/dist/resources/environments.d.ts +0 -16
  231. package/dist/resources/environments.d.ts.map +0 -1
  232. package/dist/resources/environments.js +0 -24
  233. package/dist/resources/logs.d.ts +0 -13
  234. package/dist/resources/logs.d.ts.map +0 -1
  235. package/dist/resources/logs.js +0 -20
  236. package/dist/resources/org.d.ts +0 -15
  237. package/dist/resources/org.d.ts.map +0 -1
  238. package/dist/resources/org.js +0 -25
  239. package/dist/resources/projects.d.ts +0 -19
  240. package/dist/resources/projects.d.ts.map +0 -1
  241. package/dist/resources/projects.js +0 -19
  242. package/dist/resources/resources.d.ts +0 -26
  243. package/dist/resources/resources.d.ts.map +0 -1
  244. package/dist/resources/resources.js +0 -32
  245. package/dist/resources/services.d.ts +0 -21
  246. package/dist/resources/services.d.ts.map +0 -1
  247. package/dist/resources/services.js +0 -30
  248. package/dist/resources/storage.d.ts +0 -21
  249. package/dist/resources/storage.d.ts.map +0 -1
  250. package/dist/resources/storage.js +0 -25
  251. package/dist/resources/tasks.d.ts +0 -42
  252. package/dist/resources/tasks.d.ts.map +0 -1
  253. package/dist/resources/tasks.js +0 -49
  254. package/dist/resources/user.d.ts +0 -9
  255. package/dist/resources/user.d.ts.map +0 -1
  256. package/dist/resources/user.js +0 -10
  257. package/dist/resources/volumes.d.ts +0 -20
  258. package/dist/resources/volumes.d.ts.map +0 -1
  259. package/dist/resources/volumes.js +0 -19
@@ -0,0 +1 @@
1
+ {"version":3,"file":"experiments.d.ts","sourceRoot":"","sources":["../src/experiments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * A/B experiments — variants, traffic split, lifecycle, Bayesian results.
3
+ *
4
+ * GET /experiments?projectId=&status=
5
+ * POST /experiments
6
+ * POST /experiments/projects/:p/experiments/:id/start
7
+ * POST /experiments/projects/:p/experiments/:id/pause
8
+ * POST /experiments/projects/:p/experiments/:id/conclude
9
+ * GET /experiments/projects/:p/experiments/:id/results
10
+ *
11
+ * The results endpoint returns a winner only when statistical confidence
12
+ * clears the server-configured threshold (default P(best) ≥ 0.95).
13
+ */
14
+ import { request } from './http.js';
15
+ export const list = (client, projectId, options) => request(client, 'GET', '/experiments', {
16
+ query: { projectId, status: options?.status },
17
+ });
18
+ export const create = (client, input) => request(client, 'POST', '/experiments', { body: input });
19
+ const lifecycle = (client, projectId, experimentId, action) => request(client, 'POST', `/experiments/projects/${encodeURIComponent(projectId)}/experiments/${encodeURIComponent(experimentId)}/${action}`, { body: {} });
20
+ export const start = (client, projectId, experimentId) => lifecycle(client, projectId, experimentId, 'start');
21
+ export const pause = (client, projectId, experimentId) => lifecycle(client, projectId, experimentId, 'pause');
22
+ export const conclude = (client, projectId, experimentId) => lifecycle(client, projectId, experimentId, 'conclude');
23
+ export const results = (client, projectId, experimentId) => request(client, 'GET', `/experiments/projects/${encodeURIComponent(projectId)}/experiments/${encodeURIComponent(experimentId)}/results`);
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Feature flags — per-project, optionally scoped to an environment.
3
+ *
4
+ * GET /flags?projectId=&environmentId=&limit=&offset=
5
+ * POST /flags — create
6
+ * PATCH /flags — update (body carries id)
7
+ * DELETE /flags — delete (body carries id)
8
+ *
9
+ * The API intentionally uses body-carried ids (instead of path params)
10
+ * so callers can target a flag with a single round-trip regardless of
11
+ * which environment it's bound to.
12
+ */
13
+ import type { Client } from './client.js';
14
+ export interface Flag {
15
+ readonly id: string;
16
+ readonly key: string;
17
+ readonly name: string;
18
+ readonly description: string | null;
19
+ readonly enabled: boolean;
20
+ readonly rolloutPercentage: number;
21
+ readonly targetPremiumOnly: boolean;
22
+ readonly targetAdminOnly: boolean;
23
+ readonly sortOrder: number;
24
+ readonly environmentId: string | null;
25
+ readonly createdAt: string;
26
+ readonly updatedAt: string | null;
27
+ }
28
+ export interface ListOptions {
29
+ readonly environmentId?: string;
30
+ readonly limit?: number;
31
+ readonly offset?: number;
32
+ }
33
+ export interface ListResult {
34
+ readonly flags: readonly Flag[];
35
+ readonly total: number;
36
+ }
37
+ export declare const list: (client: Client, projectId: string, options?: ListOptions) => Promise<ListResult>;
38
+ export interface CreateInput {
39
+ readonly projectId: string;
40
+ readonly environmentId?: string;
41
+ readonly key: string;
42
+ readonly name: string;
43
+ readonly description?: string;
44
+ readonly enabled?: boolean;
45
+ readonly rolloutPercentage?: number;
46
+ readonly targetPremiumOnly?: boolean;
47
+ readonly targetAdminOnly?: boolean;
48
+ }
49
+ export interface CreatedFlag {
50
+ readonly id: string;
51
+ readonly key: string;
52
+ readonly name: string;
53
+ readonly enabled: boolean;
54
+ readonly rolloutPercentage: number;
55
+ readonly environmentId: string | null;
56
+ }
57
+ export declare const create: (client: Client, input: CreateInput) => Promise<CreatedFlag>;
58
+ export interface UpdateInput {
59
+ readonly projectId: string;
60
+ readonly environmentId?: string;
61
+ readonly key: string;
62
+ readonly name?: string;
63
+ readonly description?: string | null;
64
+ readonly enabled?: boolean;
65
+ readonly rolloutPercentage?: number;
66
+ readonly targetPremiumOnly?: boolean;
67
+ readonly targetAdminOnly?: boolean;
68
+ readonly expectedVersion?: string;
69
+ }
70
+ export interface UpdatedFlag {
71
+ readonly id: string;
72
+ readonly key: string;
73
+ readonly name: string;
74
+ readonly enabled: boolean;
75
+ readonly rolloutPercentage: number;
76
+ }
77
+ export declare const update: (client: Client, input: UpdateInput) => Promise<UpdatedFlag>;
78
+ declare const _delete: (client: Client, input: {
79
+ readonly id: string;
80
+ readonly projectId: string;
81
+ }) => Promise<{
82
+ success: boolean;
83
+ }>;
84
+ export { _delete as delete };
85
+ //# sourceMappingURL=flags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../src/flags.ts"],"names":[],"mappings":"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"}
package/dist/flags.js ADDED
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Feature flags — per-project, optionally scoped to an environment.
3
+ *
4
+ * GET /flags?projectId=&environmentId=&limit=&offset=
5
+ * POST /flags — create
6
+ * PATCH /flags — update (body carries id)
7
+ * DELETE /flags — delete (body carries id)
8
+ *
9
+ * The API intentionally uses body-carried ids (instead of path params)
10
+ * so callers can target a flag with a single round-trip regardless of
11
+ * which environment it's bound to.
12
+ */
13
+ import { request } from './http.js';
14
+ export const list = (client, projectId, options) => request(client, 'GET', '/flags', {
15
+ query: {
16
+ projectId,
17
+ environmentId: options?.environmentId,
18
+ limit: options?.limit !== undefined ? String(options.limit) : undefined,
19
+ offset: options?.offset !== undefined ? String(options.offset) : undefined,
20
+ },
21
+ });
22
+ export const create = (client, input) => request(client, 'POST', '/flags', { body: input });
23
+ export const update = (client, input) => request(client, 'PATCH', '/flags', { body: input });
24
+ const _delete = (client, input) => request(client, 'DELETE', '/flags', { body: input });
25
+ export { _delete as delete };
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Serverless functions (ADR-043).
3
+ *
4
+ * POST /projects/:id/functions — deploy (create or update)
5
+ * GET /projects/:id/functions — list
6
+ * GET /projects/:id/functions/:name — get
7
+ * DELETE /projects/:id/functions/:name — delete
8
+ * POST /projects/:id/functions/:name/invoke — invoke
9
+ * GET /projects/:id/functions/:name/logs — invocation logs
10
+ */
11
+ import type { Client } from './client.js';
12
+ import type { SylphxFunction, SylphxFunctionDeployResult, SylphxFunctionInvocation, SylphxFunctionSummary } from './types.js';
13
+ export interface ListOptions {
14
+ readonly limit?: number;
15
+ readonly status?: string;
16
+ }
17
+ export interface DeployInput {
18
+ readonly name: string;
19
+ readonly code: string;
20
+ readonly description?: string;
21
+ readonly memoryMb?: number;
22
+ readonly timeoutSeconds?: number;
23
+ readonly requireAuth?: boolean;
24
+ readonly envVars?: Readonly<Record<string, string>>;
25
+ }
26
+ export interface LogsOptions {
27
+ readonly limit?: number;
28
+ readonly errorsOnly?: boolean;
29
+ /** ISO-8601 timestamp. */
30
+ readonly since?: string;
31
+ }
32
+ export declare const list: (client: Client, projectId: string, options?: ListOptions) => Promise<SylphxFunctionSummary[]>;
33
+ export declare const get: (client: Client, projectId: string, name: string) => Promise<SylphxFunction>;
34
+ export declare const deploy: (client: Client, projectId: string, input: DeployInput) => Promise<SylphxFunctionDeployResult>;
35
+ declare const _delete: (client: Client, projectId: string, name: string) => Promise<void>;
36
+ export { _delete as delete };
37
+ export declare const invoke: (client: Client, projectId: string, name: string, body: unknown) => Promise<unknown>;
38
+ export declare const logs: (client: Client, projectId: string, name: string, options?: LogsOptions) => Promise<SylphxFunctionInvocation[]>;
39
+ //# sourceMappingURL=functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../src/functions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EACX,cAAc,EACd,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACrB,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACnD;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,0BAA0B;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,eAAO,MAAM,IAAI,GAChB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,UAAU,WAAW,KACnB,OAAO,CAAC,qBAAqB,EAAE,CAWjC,CAAA;AAED,eAAO,MAAM,GAAG,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,cAAc,CAK1F,CAAA;AAEF,eAAO,MAAM,MAAM,GAClB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,OAAO,WAAW,KAChB,OAAO,CAAC,0BAA0B,CAGlC,CAAA;AAEH,QAAA,MAAM,OAAO,GAAU,QAAQ,MAAM,EAAE,WAAW,MAAM,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAMpF,CAAA;AACD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAA;AAE5B,eAAO,MAAM,MAAM,GAClB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,MAAM,MAAM,EACZ,MAAM,OAAO,KACX,OAAO,CAAC,OAAO,CAMhB,CAAA;AAEF,eAAO,MAAM,IAAI,GAChB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,MAAM,MAAM,EACZ,UAAU,WAAW,KACnB,OAAO,CAAC,wBAAwB,EAAE,CAYpC,CAAA"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Serverless functions (ADR-043).
3
+ *
4
+ * POST /projects/:id/functions — deploy (create or update)
5
+ * GET /projects/:id/functions — list
6
+ * GET /projects/:id/functions/:name — get
7
+ * DELETE /projects/:id/functions/:name — delete
8
+ * POST /projects/:id/functions/:name/invoke — invoke
9
+ * GET /projects/:id/functions/:name/logs — invocation logs
10
+ */
11
+ import { request } from './http.js';
12
+ export const list = async (client, projectId, options) => {
13
+ const query = {};
14
+ if (options?.limit !== undefined)
15
+ query.limit = String(options.limit);
16
+ if (options?.status)
17
+ query.status = options.status;
18
+ const res = await request(client, 'GET', `/projects/${encodeURIComponent(projectId)}/functions`, { query });
19
+ return Array.isArray(res) ? res : (res.functions ?? []);
20
+ };
21
+ export const get = (client, projectId, name) => request(client, 'GET', `/projects/${encodeURIComponent(projectId)}/functions/${encodeURIComponent(name)}`);
22
+ export const deploy = (client, projectId, input) => request(client, 'POST', `/projects/${encodeURIComponent(projectId)}/functions`, {
23
+ body: input,
24
+ });
25
+ const _delete = async (client, projectId, name) => {
26
+ await request(client, 'DELETE', `/projects/${encodeURIComponent(projectId)}/functions/${encodeURIComponent(name)}`);
27
+ };
28
+ export { _delete as delete };
29
+ export const invoke = (client, projectId, name, body) => request(client, 'POST', `/projects/${encodeURIComponent(projectId)}/functions/${encodeURIComponent(name)}/invoke`, { body });
30
+ export const logs = async (client, projectId, name, options) => {
31
+ const query = {};
32
+ if (options?.limit !== undefined)
33
+ query.limit = String(options.limit);
34
+ if (options?.errorsOnly)
35
+ query.errors_only = '1';
36
+ if (options?.since)
37
+ query.since = options.since;
38
+ const res = await request(client, 'GET', `/projects/${encodeURIComponent(projectId)}/functions/${encodeURIComponent(name)}/logs`, { query });
39
+ return Array.isArray(res) ? res : (res.logs ?? []);
40
+ };
@@ -0,0 +1,33 @@
1
+ /**
2
+ * GitHub app connection — link / inspect / unlink the platform's GitHub
3
+ * app installation for a given environment.
4
+ *
5
+ * POST /github/connect — start OAuth / install flow
6
+ * GET /github/connect/:envId — connection state
7
+ * DELETE /github/connect/:envId — unlink
8
+ */
9
+ import type { Client } from './client.js';
10
+ export interface GithubConnection {
11
+ readonly envId: string;
12
+ readonly installationId: string | null;
13
+ readonly repoFullName: string | null;
14
+ readonly branch: string | null;
15
+ readonly connectedAt: string | null;
16
+ readonly connectedBy: string | null;
17
+ }
18
+ export interface ConnectInput {
19
+ readonly envId: string;
20
+ readonly installationId: string;
21
+ readonly repoFullName: string;
22
+ readonly branch?: string;
23
+ }
24
+ export declare const connect: (client: Client, body: ConnectInput) => Promise<{
25
+ connection: GithubConnection;
26
+ }>;
27
+ export declare const getConnection: (client: Client, envId: string) => Promise<{
28
+ connection: GithubConnection | null;
29
+ }>;
30
+ export declare const disconnect: (client: Client, envId: string) => Promise<{
31
+ success: boolean;
32
+ }>;
33
+ //# sourceMappingURL=github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../src/github.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CACnC;AAED,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,eAAO,MAAM,OAAO,GACnB,QAAQ,MAAM,EACd,MAAM,YAAY,KAChB,OAAO,CAAC;IAAE,UAAU,EAAE,gBAAgB,CAAA;CAAE,CAG1C,CAAA;AAED,eAAO,MAAM,aAAa,GACzB,QAAQ,MAAM,EACd,OAAO,MAAM,KACX,OAAO,CAAC;IAAE,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAAE,CAGjD,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAGtF,CAAA"}
package/dist/github.js ADDED
@@ -0,0 +1,22 @@
1
+ /**
2
+ * GitHub app connection — link / inspect / unlink the platform's GitHub
3
+ * app installation for a given environment.
4
+ *
5
+ * POST /github/connect — start OAuth / install flow
6
+ * GET /github/connect/:envId — connection state
7
+ * DELETE /github/connect/:envId — unlink
8
+ */
9
+ import { githubEndpoints } from '@sylphx/contract';
10
+ import { interpolatePath, request } from './http.js';
11
+ export const connect = (client, body) => {
12
+ const { method, path } = githubEndpoints.connect;
13
+ return request(client, method, path, { body });
14
+ };
15
+ export const getConnection = (client, envId) => {
16
+ const { method, path } = githubEndpoints.getConnection;
17
+ return request(client, method, interpolatePath(path, { envId }));
18
+ };
19
+ export const disconnect = (client, envId) => {
20
+ const { method, path } = githubEndpoints.disconnect;
21
+ return request(client, method, interpolatePath(path, { envId }));
22
+ };
package/dist/http.d.ts ADDED
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Internal HTTP transport. The only function in the SDK that touches
3
+ * `fetch`. Every capability module calls this; consumers never see it
4
+ * (not re-exported from `index.ts`).
5
+ *
6
+ * Contract:
7
+ * - Throws `ApiError(status, message, body?)` on any non-2xx response.
8
+ * The body is the server's JSON error envelope when parseable, else
9
+ * the raw text.
10
+ * - Returns `undefined` for 204 No Content.
11
+ * - Accepts optional `body` (JSON-stringified) and `query` (URL-encoded).
12
+ */
13
+ import type { Client } from './client.js';
14
+ export interface RequestOptions {
15
+ readonly body?: unknown;
16
+ readonly query?: Readonly<Record<string, string | undefined>>;
17
+ }
18
+ /**
19
+ * Substitute `:param` tokens in a contract-sourced path with URL-encoded
20
+ * values. Throws if any token is missing from `params` — the SDK should
21
+ * never ship a request with an unfilled placeholder.
22
+ *
23
+ * interpolatePath('/projects/:id/domains/:domainId', { id: 'p', domainId: 'd' })
24
+ * → '/projects/p/domains/d'
25
+ */
26
+ export declare function interpolatePath(path: string, params: Readonly<Record<string, string>>): string;
27
+ export declare function request<T>(client: Client, method: string, path: string, opts?: RequestOptions): Promise<T>;
28
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;CAC7D;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAO9F;AAED,wBAAsB,OAAO,CAAC,CAAC,EAC9B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,cAAc,GACnB,OAAO,CAAC,CAAC,CAAC,CA6CZ"}
package/dist/http.js ADDED
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Internal HTTP transport. The only function in the SDK that touches
3
+ * `fetch`. Every capability module calls this; consumers never see it
4
+ * (not re-exported from `index.ts`).
5
+ *
6
+ * Contract:
7
+ * - Throws `ApiError(status, message, body?)` on any non-2xx response.
8
+ * The body is the server's JSON error envelope when parseable, else
9
+ * the raw text.
10
+ * - Returns `undefined` for 204 No Content.
11
+ * - Accepts optional `body` (JSON-stringified) and `query` (URL-encoded).
12
+ */
13
+ import { ApiError } from './errors.js';
14
+ /**
15
+ * Substitute `:param` tokens in a contract-sourced path with URL-encoded
16
+ * values. Throws if any token is missing from `params` — the SDK should
17
+ * never ship a request with an unfilled placeholder.
18
+ *
19
+ * interpolatePath('/projects/:id/domains/:domainId', { id: 'p', domainId: 'd' })
20
+ * → '/projects/p/domains/d'
21
+ */
22
+ export function interpolatePath(path, params) {
23
+ return path.replace(/:(\w+)/g, (_match, key) => {
24
+ if (!(key in params)) {
25
+ throw new Error(`Missing path param :${key} for ${path}`);
26
+ }
27
+ return encodeURIComponent(params[key]);
28
+ });
29
+ }
30
+ export async function request(client, method, path, opts) {
31
+ let url = `${client.apiBase}${path}`;
32
+ if (opts?.query) {
33
+ const entries = Object.entries(opts.query).filter(([, v]) => v !== undefined);
34
+ if (entries.length > 0) {
35
+ url += `?${new URLSearchParams(entries).toString()}`;
36
+ }
37
+ }
38
+ const hasBody = opts?.body !== undefined;
39
+ const headers = {
40
+ Authorization: `Bearer ${client.token}`,
41
+ Accept: 'application/json',
42
+ 'User-Agent': client.userAgent,
43
+ };
44
+ // Only send Content-Type when we actually have a body to describe.
45
+ // Some strict proxies (Cloudflare in non-standard modes, certain
46
+ // WAFs) reject GET / DELETE requests carrying a bodyless Content-Type.
47
+ if (hasBody)
48
+ headers['Content-Type'] = 'application/json';
49
+ const res = await fetch(url, {
50
+ method,
51
+ headers,
52
+ body: hasBody ? JSON.stringify(opts.body) : undefined,
53
+ });
54
+ if (!res.ok) {
55
+ const text = await res.text();
56
+ let parsed = text;
57
+ try {
58
+ parsed = JSON.parse(text);
59
+ }
60
+ catch {
61
+ // raw text body — keep as-is
62
+ }
63
+ const message = typeof parsed === 'object' && parsed !== null && 'message' in parsed
64
+ ? String(parsed.message)
65
+ : `HTTP ${res.status}`;
66
+ throw new ApiError(res.status, message, parsed);
67
+ }
68
+ if (res.status === 204)
69
+ return undefined;
70
+ return res.json();
71
+ }
package/dist/index.d.ts CHANGED
@@ -1,21 +1,86 @@
1
- export type { SylphxManagementOptions } from './client.js';
2
- export { SylphxManagement } from './client.js';
3
- export { ApiError, ManagementApiError } from './errors.js';
4
- export type { RequestFn } from './request.js';
5
- export { ConfigResource } from './resources/config.js';
6
- export { DatabasesResource } from './resources/databases.js';
7
- export { DeploymentsResource } from './resources/deployments.js';
8
- export { DomainsResource } from './resources/domains.js';
9
- export { EnvVarsResource } from './resources/env-vars.js';
10
- export { EnvironmentsResource } from './resources/environments.js';
11
- export { LogsResource } from './resources/logs.js';
12
- export { OrgResource } from './resources/org.js';
13
- export { ProjectsResource } from './resources/projects.js';
14
- export { ResourceBindingsResource } from './resources/resources.js';
15
- export { ServicesResource } from './resources/services.js';
16
- export { StoragesResource } from './resources/storage.js';
17
- export { TasksResource } from './resources/tasks.js';
18
- export { UserResource } from './resources/user.js';
19
- export { VolumesResource } from './resources/volumes.js';
20
- export type { App, ConfigEntry, Database, DeploymentStatus, DeploymentStatusEnv, DeployResult, DnsRecord, Domain, DomainEmailBinding, DomainHostname, DomainResult, Environment, EnvVar, HostnameInstruction, LogEntry, LogStream, Org, OrgMember, Project, PromoteResult, ResourceBinding, Service, StorageResource, Task, Volume, WhoAmI, } from './types.js';
1
+ /**
2
+ * @sylphx/management Pure-FP SDK for the Sylphx Platform Management API.
3
+ *
4
+ * ADR-077: SDK is a thin Promise-returning transport over the Management API.
5
+ * No business logic, no classes, no mutable state. Consumers create an immutable
6
+ * `Client` via `createClient()` and pass it to free functions grouped by
7
+ * capability namespace.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { createClient } from '@sylphx/management'
12
+ * import * as projects from '@sylphx/management/projects'
13
+ *
14
+ * const client = createClient({ token: process.env.SYLPHX_TOKEN! })
15
+ * const list = await projects.list(client)
16
+ * ```
17
+ */
18
+ export * as admin from './admin.js';
19
+ export * as adminBootstrap from './adminBootstrap.js';
20
+ export * as adminBuilds from './adminBuilds.js';
21
+ export * as adminEnvServices from './adminEnvServices.js';
22
+ export * as adminRateLimits from './adminRateLimits.js';
23
+ export * as adminReconcile from './adminReconcile.js';
24
+ export * as adminResources from './adminResources.js';
25
+ export * as adminSecrets from './adminSecrets.js';
26
+ export * as adminTenants from './adminTenants.js';
27
+ export * as ai from './ai.js';
28
+ export * as analytics from './analytics.js';
29
+ export * as auth from './auth.js';
30
+ export * as authSettings from './authSettings.js';
31
+ export * as backups from './backups.js';
32
+ export * as billing from './billing.js';
33
+ export * as billingSettings from './billingSettings.js';
34
+ export * as branchDatabases from './branchDatabases.js';
35
+ export * as certs from './certs.js';
36
+ export * as ciSettings from './ciSettings.js';
37
+ export type { Client, ClientOptions } from './client.js';
38
+ export { createClient } from './client.js';
39
+ export * as consent from './consent.js';
40
+ export * as databases from './databases.js';
41
+ export * as deployments from './deployments.js';
42
+ export * as domains from './domains.js';
43
+ export * as edgeDeployments from './edgeDeployments.js';
44
+ export * as email from './email.js';
45
+ export * as engagement from './engagement.js';
46
+ export * as environments from './environments.js';
47
+ export * as envVars from './envVars.js';
48
+ export { ApiError } from './errors.js';
49
+ export * as experiments from './experiments.js';
50
+ export * as flags from './flags.js';
51
+ export * as functions from './functions.js';
52
+ export * as github from './github.js';
53
+ export * as kv from './kv.js';
54
+ export * as logs from './logs.js';
55
+ export * as management from './management.js';
56
+ export * as monitoring from './monitoring.js';
57
+ export * as newsletter from './newsletter.js';
58
+ export * as notifications from './notifications.js';
59
+ export * as oidc from './oidc.js';
60
+ export * as organizations from './organizations.js';
61
+ export * as plans from './plans.js';
62
+ export * as privacy from './privacy.js';
63
+ export * as projects from './projects.js';
64
+ export * as realtime from './realtime.js';
65
+ export * as referrals from './referrals.js';
66
+ export * as refresh from './refresh.js';
67
+ export * as remoteConfig from './remoteConfig.js';
68
+ export * as resourceBindings from './resourceBindings.js';
69
+ export * as runners from './runners.js';
70
+ export * as saml from './saml.js';
71
+ export * as sandboxes from './sandboxes.js';
72
+ export * as search from './search.js';
73
+ export * as secrets from './secrets.js';
74
+ export * as security from './security.js';
75
+ export * as services from './services.js';
76
+ export * as serviceTokenRequests from './serviceTokenRequests.js';
77
+ export * as serviceTokens from './serviceTokens.js';
78
+ export * as sessionReplay from './sessionReplay.js';
79
+ export * as storage from './storage.js';
80
+ export * as tasks from './tasks.js';
81
+ export type { App, ConfigEntry, Database, DeploymentStatus, DeploymentStatusEnv, DeployResult, DnsRecord, Domain, DomainEmailBinding, DomainHostname, DomainResult, Environment, EnvVar, HostnameInstruction, LogEntry, LogStream, Org, OrgMember, Project, PromoteResult, ResourceBinding, Sandbox, SandboxCreateResult, SandboxSummary, Service, StorageResource, SylphxFunction, SylphxFunctionDeployResult, SylphxFunctionInvocation, SylphxFunctionSummary, Task, Volume, WhoAmI, } from './types.js';
82
+ export * as user from './user.js';
83
+ export * as users from './users.js';
84
+ export * as volumes from './volumes.js';
85
+ export * as webhooks from './webhooks.js';
21
86
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAG9C,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAG1D,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,YAAY,EACX,GAAG,EACH,WAAW,EACX,QAAQ,EACR,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,MAAM,EACN,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,MAAM,EACN,mBAAmB,EACnB,QAAQ,EACR,SAAS,EACT,GAAG,EACH,SAAS,EACT,OAAO,EACP,aAAa,EACb,eAAe,EACf,OAAO,EACP,eAAe,EACf,IAAI,EACJ,MAAM,EACN,MAAM,GACN,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,20 +1,86 @@
1
- // Main client
2
- export { SylphxManagement } from './client.js';
3
- // Error class
4
- export { ApiError, ManagementApiError } from './errors.js';
5
- // Resource classes (for extensibility / type augmentation)
6
- export { ConfigResource } from './resources/config.js';
7
- export { DatabasesResource } from './resources/databases.js';
8
- export { DeploymentsResource } from './resources/deployments.js';
9
- export { DomainsResource } from './resources/domains.js';
10
- export { EnvVarsResource } from './resources/env-vars.js';
11
- export { EnvironmentsResource } from './resources/environments.js';
12
- export { LogsResource } from './resources/logs.js';
13
- export { OrgResource } from './resources/org.js';
14
- export { ProjectsResource } from './resources/projects.js';
15
- export { ResourceBindingsResource } from './resources/resources.js';
16
- export { ServicesResource } from './resources/services.js';
17
- export { StoragesResource } from './resources/storage.js';
18
- export { TasksResource } from './resources/tasks.js';
19
- export { UserResource } from './resources/user.js';
20
- export { VolumesResource } from './resources/volumes.js';
1
+ /**
2
+ * @sylphx/management Pure-FP SDK for the Sylphx Platform Management API.
3
+ *
4
+ * ADR-077: SDK is a thin Promise-returning transport over the Management API.
5
+ * No business logic, no classes, no mutable state. Consumers create an immutable
6
+ * `Client` via `createClient()` and pass it to free functions grouped by
7
+ * capability namespace.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { createClient } from '@sylphx/management'
12
+ * import * as projects from '@sylphx/management/projects'
13
+ *
14
+ * const client = createClient({ token: process.env.SYLPHX_TOKEN! })
15
+ * const list = await projects.list(client)
16
+ * ```
17
+ */
18
+ // Capability namespaces tree-shakable when consumers use subpath imports
19
+ export * as admin from './admin.js';
20
+ export * as adminBootstrap from './adminBootstrap.js';
21
+ export * as adminBuilds from './adminBuilds.js';
22
+ export * as adminEnvServices from './adminEnvServices.js';
23
+ export * as adminRateLimits from './adminRateLimits.js';
24
+ export * as adminReconcile from './adminReconcile.js';
25
+ export * as adminResources from './adminResources.js';
26
+ export * as adminSecrets from './adminSecrets.js';
27
+ export * as adminTenants from './adminTenants.js';
28
+ export * as ai from './ai.js';
29
+ export * as analytics from './analytics.js';
30
+ export * as auth from './auth.js';
31
+ export * as authSettings from './authSettings.js';
32
+ export * as backups from './backups.js';
33
+ export * as billing from './billing.js';
34
+ export * as billingSettings from './billingSettings.js';
35
+ export * as branchDatabases from './branchDatabases.js';
36
+ export * as certs from './certs.js';
37
+ export * as ciSettings from './ciSettings.js';
38
+ // Client factory + immutable value
39
+ export { createClient } from './client.js';
40
+ export * as consent from './consent.js';
41
+ export * as databases from './databases.js';
42
+ export * as deployments from './deployments.js';
43
+ export * as domains from './domains.js';
44
+ export * as edgeDeployments from './edgeDeployments.js';
45
+ export * as email from './email.js';
46
+ export * as engagement from './engagement.js';
47
+ export * as environments from './environments.js';
48
+ export * as envVars from './envVars.js';
49
+ // Error type
50
+ export { ApiError } from './errors.js';
51
+ export * as experiments from './experiments.js';
52
+ export * as flags from './flags.js';
53
+ export * as functions from './functions.js';
54
+ export * as github from './github.js';
55
+ export * as kv from './kv.js';
56
+ export * as logs from './logs.js';
57
+ export * as management from './management.js';
58
+ export * as monitoring from './monitoring.js';
59
+ export * as newsletter from './newsletter.js';
60
+ export * as notifications from './notifications.js';
61
+ export * as oidc from './oidc.js';
62
+ export * as organizations from './organizations.js';
63
+ export * as plans from './plans.js';
64
+ export * as privacy from './privacy.js';
65
+ export * as projects from './projects.js';
66
+ export * as realtime from './realtime.js';
67
+ export * as referrals from './referrals.js';
68
+ export * as refresh from './refresh.js';
69
+ export * as remoteConfig from './remoteConfig.js';
70
+ export * as resourceBindings from './resourceBindings.js';
71
+ export * as runners from './runners.js';
72
+ export * as saml from './saml.js';
73
+ export * as sandboxes from './sandboxes.js';
74
+ export * as search from './search.js';
75
+ export * as secrets from './secrets.js';
76
+ export * as security from './security.js';
77
+ export * as services from './services.js';
78
+ export * as serviceTokenRequests from './serviceTokenRequests.js';
79
+ export * as serviceTokens from './serviceTokens.js';
80
+ export * as sessionReplay from './sessionReplay.js';
81
+ export * as storage from './storage.js';
82
+ export * as tasks from './tasks.js';
83
+ export * as user from './user.js';
84
+ export * as users from './users.js';
85
+ export * as volumes from './volumes.js';
86
+ export * as webhooks from './webhooks.js';