@sylphx/management 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/CHANGELOG.md +88 -0
- package/LICENSE +21 -0
- package/README.md +157 -101
- package/dist/admin.d.ts +168 -0
- package/dist/admin.d.ts.map +1 -0
- package/dist/admin.js +123 -0
- package/dist/adminBootstrap.d.ts +46 -0
- package/dist/adminBootstrap.d.ts.map +1 -0
- package/dist/adminBootstrap.js +33 -0
- package/dist/adminBuilds.d.ts +72 -0
- package/dist/adminBuilds.d.ts.map +1 -0
- package/dist/adminBuilds.js +29 -0
- package/dist/adminEnvServices.d.ts +41 -0
- package/dist/adminEnvServices.d.ts.map +1 -0
- package/dist/adminEnvServices.js +22 -0
- package/dist/adminRateLimits.d.ts +61 -0
- package/dist/adminRateLimits.d.ts.map +1 -0
- package/dist/adminRateLimits.js +44 -0
- package/dist/adminReconcile.d.ts +45 -0
- package/dist/adminReconcile.d.ts.map +1 -0
- package/dist/adminReconcile.js +20 -0
- package/dist/adminResources.d.ts +97 -0
- package/dist/adminResources.d.ts.map +1 -0
- package/dist/adminResources.js +40 -0
- package/dist/adminSecrets.d.ts +60 -0
- package/dist/adminSecrets.d.ts.map +1 -0
- package/dist/adminSecrets.js +43 -0
- package/dist/adminTenants.d.ts +41 -0
- package/dist/adminTenants.d.ts.map +1 -0
- package/dist/adminTenants.js +29 -0
- package/dist/ai.d.ts +148 -0
- package/dist/ai.d.ts.map +1 -0
- package/dist/ai.js +29 -0
- package/dist/analytics.d.ts +49 -0
- package/dist/analytics.d.ts.map +1 -0
- package/dist/analytics.js +23 -0
- package/dist/auth.d.ts +39 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +27 -0
- package/dist/authSettings.d.ts +71 -0
- package/dist/authSettings.d.ts.map +1 -0
- package/dist/authSettings.js +39 -0
- package/dist/backups.d.ts +66 -0
- package/dist/backups.d.ts.map +1 -0
- package/dist/backups.js +32 -0
- package/dist/billing.d.ts +105 -0
- package/dist/billing.d.ts.map +1 -0
- package/dist/billing.js +42 -0
- package/dist/billingSettings.d.ts +78 -0
- package/dist/billingSettings.d.ts.map +1 -0
- package/dist/billingSettings.js +54 -0
- package/dist/branchDatabases.d.ts +53 -0
- package/dist/branchDatabases.d.ts.map +1 -0
- package/dist/branchDatabases.js +38 -0
- package/dist/certs.d.ts +63 -0
- package/dist/certs.d.ts.map +1 -0
- package/dist/certs.js +28 -0
- package/dist/ciSettings.d.ts +77 -0
- package/dist/ciSettings.d.ts.map +1 -0
- package/dist/ciSettings.js +41 -0
- package/dist/client.d.ts +36 -38
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +32 -90
- package/dist/consent.d.ts +111 -0
- package/dist/consent.d.ts.map +1 -0
- package/dist/consent.js +35 -0
- package/dist/databases.d.ts +17 -0
- package/dist/databases.d.ts.map +1 -0
- package/dist/databases.js +32 -0
- package/dist/deployments.d.ts +22 -0
- package/dist/deployments.d.ts.map +1 -0
- package/dist/deployments.js +39 -0
- package/dist/domains.d.ts +26 -0
- package/dist/domains.d.ts.map +1 -0
- package/dist/domains.js +39 -0
- package/dist/edgeDeployments.d.ts +43 -0
- package/dist/edgeDeployments.d.ts.map +1 -0
- package/dist/edgeDeployments.js +32 -0
- package/dist/email.d.ts +45 -0
- package/dist/email.d.ts.map +1 -0
- package/dist/email.js +21 -0
- package/dist/engagement.d.ts +100 -0
- package/dist/engagement.d.ts.map +1 -0
- package/dist/engagement.js +28 -0
- package/dist/envVars.d.ts +17 -0
- package/dist/envVars.d.ts.map +1 -0
- package/dist/envVars.js +34 -0
- package/dist/environments.d.ts +41 -0
- package/dist/environments.d.ts.map +1 -0
- package/dist/environments.js +54 -0
- package/dist/errors.d.ts +8 -3
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +8 -2
- package/dist/experiments.d.ts +80 -0
- package/dist/experiments.d.ts.map +1 -0
- package/dist/experiments.js +23 -0
- package/dist/flags.d.ts +85 -0
- package/dist/flags.d.ts.map +1 -0
- package/dist/flags.js +25 -0
- package/dist/functions.d.ts +39 -0
- package/dist/functions.d.ts.map +1 -0
- package/dist/functions.js +40 -0
- package/dist/github.d.ts +33 -0
- package/dist/github.d.ts.map +1 -0
- package/dist/github.js +22 -0
- package/dist/http.d.ts +49 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +97 -0
- package/dist/index.d.ts +85 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +86 -20
- package/dist/kv.d.ts +66 -0
- package/dist/kv.d.ts.map +1 -0
- package/dist/kv.js +36 -0
- package/dist/logs.d.ts +14 -0
- package/dist/logs.d.ts.map +1 -0
- package/dist/logs.js +17 -0
- package/dist/management.d.ts +55 -0
- package/dist/management.d.ts.map +1 -0
- package/dist/management.js +31 -0
- package/dist/monitoring.d.ts +65 -0
- package/dist/monitoring.d.ts.map +1 -0
- package/dist/monitoring.js +29 -0
- package/dist/newsletter.d.ts +279 -0
- package/dist/newsletter.d.ts.map +1 -0
- package/dist/newsletter.js +98 -0
- package/dist/notifications.d.ts +30 -0
- package/dist/notifications.d.ts.map +1 -0
- package/dist/notifications.js +19 -0
- package/dist/oidc.d.ts +46 -0
- package/dist/oidc.d.ts.map +1 -0
- package/dist/oidc.js +25 -0
- package/dist/organizations.d.ts +24 -0
- package/dist/organizations.d.ts.map +1 -0
- package/dist/organizations.js +42 -0
- package/dist/plans.d.ts +66 -0
- package/dist/plans.d.ts.map +1 -0
- package/dist/plans.js +42 -0
- package/dist/privacy.d.ts +138 -0
- package/dist/privacy.d.ts.map +1 -0
- package/dist/privacy.js +41 -0
- package/dist/projects.d.ts +14 -0
- package/dist/projects.d.ts.map +1 -0
- package/dist/projects.js +22 -0
- package/dist/realtime.d.ts +33 -0
- package/dist/realtime.d.ts.map +1 -0
- package/dist/realtime.js +19 -0
- package/dist/referrals.d.ts +100 -0
- package/dist/referrals.d.ts.map +1 -0
- package/dist/referrals.js +33 -0
- package/dist/refresh.d.ts +44 -0
- package/dist/refresh.d.ts.map +1 -0
- package/dist/refresh.js +33 -0
- package/dist/remoteConfig.d.ts +15 -0
- package/dist/remoteConfig.d.ts.map +1 -0
- package/dist/remoteConfig.js +35 -0
- package/dist/resourceBindings.d.ts +19 -0
- package/dist/resourceBindings.d.ts.map +1 -0
- package/dist/resourceBindings.js +24 -0
- package/dist/runners.d.ts +60 -0
- package/dist/runners.d.ts.map +1 -0
- package/dist/runners.js +17 -0
- package/dist/saml.d.ts +44 -0
- package/dist/saml.d.ts.map +1 -0
- package/dist/saml.js +77 -0
- package/dist/sandboxes.d.ts +15 -0
- package/dist/sandboxes.d.ts.map +1 -0
- package/dist/sandboxes.js +18 -0
- package/dist/search.d.ts +66 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +29 -0
- package/dist/secrets.d.ts +50 -0
- package/dist/secrets.d.ts.map +1 -0
- package/dist/secrets.js +61 -0
- package/dist/security.d.ts +58 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +49 -0
- package/dist/serviceTokenRequests.d.ts +71 -0
- package/dist/serviceTokenRequests.d.ts.map +1 -0
- package/dist/serviceTokenRequests.js +43 -0
- package/dist/serviceTokens.d.ts +65 -0
- package/dist/serviceTokens.d.ts.map +1 -0
- package/dist/serviceTokens.js +22 -0
- package/dist/services.d.ts +10 -0
- package/dist/services.d.ts.map +1 -0
- package/dist/services.js +15 -0
- package/dist/sessionReplay.d.ts +116 -0
- package/dist/sessionReplay.d.ts.map +1 -0
- package/dist/sessionReplay.js +29 -0
- package/dist/storage.d.ts +12 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +10 -0
- package/dist/tasks.d.ts +29 -0
- package/dist/tasks.d.ts.map +1 -0
- package/dist/tasks.js +29 -0
- package/dist/types.d.ts +59 -155
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +17 -3
- package/dist/user.d.ts +99 -0
- package/dist/user.d.ts.map +1 -0
- package/dist/user.js +58 -0
- package/dist/users.d.ts +9 -0
- package/dist/users.d.ts.map +1 -0
- package/dist/users.js +11 -0
- package/dist/volumes.d.ts +16 -0
- package/dist/volumes.d.ts.map +1 -0
- package/dist/volumes.js +9 -0
- package/dist/webhooks.d.ts +77 -0
- package/dist/webhooks.d.ts.map +1 -0
- package/dist/webhooks.js +27 -0
- package/package.json +194 -5
- package/dist/request.d.ts +0 -5
- package/dist/request.d.ts.map +0 -1
- package/dist/request.js +0 -1
- package/dist/resources/config.d.ts +0 -30
- package/dist/resources/config.d.ts.map +0 -1
- package/dist/resources/config.js +0 -62
- package/dist/resources/databases.d.ts +0 -26
- package/dist/resources/databases.d.ts.map +0 -1
- package/dist/resources/databases.js +0 -29
- package/dist/resources/deployments.d.ts +0 -24
- package/dist/resources/deployments.d.ts.map +0 -1
- package/dist/resources/deployments.js +0 -30
- package/dist/resources/domains.d.ts +0 -30
- package/dist/resources/domains.d.ts.map +0 -1
- package/dist/resources/domains.js +0 -46
- package/dist/resources/env-vars.d.ts +0 -19
- package/dist/resources/env-vars.d.ts.map +0 -1
- package/dist/resources/env-vars.js +0 -30
- package/dist/resources/environments.d.ts +0 -16
- package/dist/resources/environments.d.ts.map +0 -1
- package/dist/resources/environments.js +0 -24
- package/dist/resources/logs.d.ts +0 -13
- package/dist/resources/logs.d.ts.map +0 -1
- package/dist/resources/logs.js +0 -20
- package/dist/resources/org.d.ts +0 -15
- package/dist/resources/org.d.ts.map +0 -1
- package/dist/resources/org.js +0 -25
- package/dist/resources/projects.d.ts +0 -19
- package/dist/resources/projects.d.ts.map +0 -1
- package/dist/resources/projects.js +0 -19
- package/dist/resources/resources.d.ts +0 -26
- package/dist/resources/resources.d.ts.map +0 -1
- package/dist/resources/resources.js +0 -32
- package/dist/resources/services.d.ts +0 -21
- package/dist/resources/services.d.ts.map +0 -1
- package/dist/resources/services.js +0 -30
- package/dist/resources/storage.d.ts +0 -21
- package/dist/resources/storage.d.ts.map +0 -1
- package/dist/resources/storage.js +0 -25
- package/dist/resources/tasks.d.ts +0 -42
- package/dist/resources/tasks.d.ts.map +0 -1
- package/dist/resources/tasks.js +0 -49
- package/dist/resources/user.d.ts +0 -9
- package/dist/resources/user.d.ts.map +0 -1
- package/dist/resources/user.js +0 -10
- package/dist/resources/volumes.d.ts +0 -20
- package/dist/resources/volumes.d.ts.map +0 -1
- package/dist/resources/volumes.js +0 -19
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remoteConfig.d.ts","sourceRoot":"","sources":["../src/remoteConfig.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAY7C,eAAO,MAAM,IAAI,GAChB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,UAAU,MAAM,KACd,OAAO,CAAC,WAAW,EAAE,CASvB,CAAA;AAED,eAAO,MAAM,GAAG,GACf,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,KAAK,MAAM,EACX,UAAU,MAAM,KACd,OAAO,CAAC,WAAW,CAQrB,CAAA;AAED,eAAO,MAAM,GAAG,GACf,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,KAAK,MAAM,EACX,OAAO,MAAM,EACb,UAAU,MAAM,KACd,OAAO,CAAC,WAAW,CAKrB,CAAA;AAED,QAAA,MAAM,OAAO,GACZ,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,KAAK,MAAM,EACX,UAAU,MAAM,KACd,OAAO,CAAC,IAAI,CAQd,CAAA;AACD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remote config — server-persisted non-secret key-value store per env.
|
|
3
|
+
*
|
|
4
|
+
* Renamed from `config.ts` in the old OOP SDK to `remoteConfig.ts` (ADR-077
|
|
5
|
+
* Rule D) — disambiguates from the CLI-side local JSON store (`config.ts`)
|
|
6
|
+
* and the billing `plan`/`subscription` surface.
|
|
7
|
+
*/
|
|
8
|
+
import { resolveId as resolveEnvId } from './environments.js';
|
|
9
|
+
import { request } from './http.js';
|
|
10
|
+
const resolveEnv = async (client, projectId, envType) => {
|
|
11
|
+
if (!envType)
|
|
12
|
+
return undefined;
|
|
13
|
+
const envId = await resolveEnvId(client, projectId, envType);
|
|
14
|
+
return envId ?? undefined;
|
|
15
|
+
};
|
|
16
|
+
export const list = async (client, projectId, envType) => {
|
|
17
|
+
const env = await resolveEnv(client, projectId, envType);
|
|
18
|
+
const res = await request(client, 'GET', `/projects/${encodeURIComponent(projectId)}/config`, { query: { env } });
|
|
19
|
+
return Array.isArray(res) ? res : (res.data ?? []);
|
|
20
|
+
};
|
|
21
|
+
export const get = async (client, projectId, key, envType) => {
|
|
22
|
+
const env = await resolveEnv(client, projectId, envType);
|
|
23
|
+
return request(client, 'GET', `/projects/${encodeURIComponent(projectId)}/config/${encodeURIComponent(key)}`, { query: { env } });
|
|
24
|
+
};
|
|
25
|
+
export const set = async (client, projectId, key, value, envType) => {
|
|
26
|
+
const environmentId = envType ? await resolveEnvId(client, projectId, envType) : null;
|
|
27
|
+
return request(client, 'POST', `/projects/${encodeURIComponent(projectId)}/config`, {
|
|
28
|
+
body: { key, value, environmentId },
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
const _delete = async (client, projectId, key, envType) => {
|
|
32
|
+
const env = await resolveEnv(client, projectId, envType);
|
|
33
|
+
return request(client, 'DELETE', `/projects/${encodeURIComponent(projectId)}/config/${encodeURIComponent(key)}`, { query: { env } });
|
|
34
|
+
};
|
|
35
|
+
export { _delete as delete };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource bindings — link a managed resource (DB / storage / volume) to a
|
|
3
|
+
* project environment.
|
|
4
|
+
*
|
|
5
|
+
* Renamed from `resources.ts` (class: `ResourceBindingsResource`) in the old
|
|
6
|
+
* OOP SDK — the module name now matches the capability (ADR-077 Rule D).
|
|
7
|
+
*/
|
|
8
|
+
import type { Client } from './client.js';
|
|
9
|
+
import type { ResourceBinding } from './types.js';
|
|
10
|
+
export declare const list: (client: Client, resourceId: string) => Promise<ResourceBinding[]>;
|
|
11
|
+
export interface BindInput {
|
|
12
|
+
readonly projectId: string;
|
|
13
|
+
readonly envType: string;
|
|
14
|
+
readonly role?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const create: (client: Client, resourceId: string, input: BindInput) => Promise<ResourceBinding>;
|
|
17
|
+
declare const _delete: (client: Client, resourceId: string, bindingId: string) => Promise<void>;
|
|
18
|
+
export { _delete as delete };
|
|
19
|
+
//# sourceMappingURL=resourceBindings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resourceBindings.d.ts","sourceRoot":"","sources":["../src/resourceBindings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,eAAO,MAAM,IAAI,GAAU,QAAQ,MAAM,EAAE,YAAY,MAAM,KAAG,OAAO,CAAC,eAAe,EAAE,CAOxF,CAAA;AAED,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,eAAO,MAAM,MAAM,GAClB,QAAQ,MAAM,EACd,YAAY,MAAM,EAClB,OAAO,SAAS,KACd,OAAO,CAAC,eAAe,CAQzB,CAAA;AAED,QAAA,MAAM,OAAO,GAAI,QAAQ,MAAM,EAAE,YAAY,MAAM,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC,IAAI,CAKnF,CAAA;AACF,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource bindings — link a managed resource (DB / storage / volume) to a
|
|
3
|
+
* project environment.
|
|
4
|
+
*
|
|
5
|
+
* Renamed from `resources.ts` (class: `ResourceBindingsResource`) in the old
|
|
6
|
+
* OOP SDK — the module name now matches the capability (ADR-077 Rule D).
|
|
7
|
+
*/
|
|
8
|
+
import { resolveId as resolveEnvId } from './environments.js';
|
|
9
|
+
import { request } from './http.js';
|
|
10
|
+
export const list = async (client, resourceId) => {
|
|
11
|
+
const res = await request(client, 'GET', `/resources/${encodeURIComponent(resourceId)}/bindings`);
|
|
12
|
+
return res.bindings ?? [];
|
|
13
|
+
};
|
|
14
|
+
export const create = async (client, resourceId, input) => {
|
|
15
|
+
const projectEnvironmentId = await resolveEnvId(client, input.projectId, input.envType);
|
|
16
|
+
if (!projectEnvironmentId) {
|
|
17
|
+
throw new Error(`Environment '${input.envType}' not found for project '${input.projectId}'`);
|
|
18
|
+
}
|
|
19
|
+
return request(client, 'POST', `/resources/${encodeURIComponent(resourceId)}/bindings`, {
|
|
20
|
+
body: { projectEnvironmentId, role: input.role ?? 'primary' },
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
const _delete = (client, resourceId, bindingId) => request(client, 'DELETE', `/resources/${encodeURIComponent(resourceId)}/bindings/${encodeURIComponent(bindingId)}`);
|
|
24
|
+
export { _delete as delete };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CI runners — self-hosted machines that execute build / deploy jobs.
|
|
3
|
+
*
|
|
4
|
+
* POST /runners — register (returns one-time install token)
|
|
5
|
+
* GET /runners — list
|
|
6
|
+
* GET /runners/:id/jobs — recent jobs for a runner
|
|
7
|
+
* DELETE /runners/:id — unregister
|
|
8
|
+
*
|
|
9
|
+
* The `registrationToken` returned by `register()` is shown ONCE — the
|
|
10
|
+
* server only keeps a hash. Runners exchange it for a long-lived
|
|
11
|
+
* credential during bootstrap.
|
|
12
|
+
*/
|
|
13
|
+
import type { Client } from './client.js';
|
|
14
|
+
export type RunnerPlatform = 'linux' | 'macos' | 'windows';
|
|
15
|
+
export type RunnerArch = 'x64' | 'arm64';
|
|
16
|
+
export interface RunnerView {
|
|
17
|
+
readonly id: string;
|
|
18
|
+
readonly name: string;
|
|
19
|
+
readonly platform: RunnerPlatform;
|
|
20
|
+
readonly arch: RunnerArch;
|
|
21
|
+
readonly version: string | null;
|
|
22
|
+
readonly status: string;
|
|
23
|
+
readonly lastSeenAt: string | null;
|
|
24
|
+
readonly createdAt: string;
|
|
25
|
+
readonly labels?: readonly string[];
|
|
26
|
+
readonly maxJobs?: number;
|
|
27
|
+
}
|
|
28
|
+
export interface RunnerJob {
|
|
29
|
+
readonly id: string;
|
|
30
|
+
readonly runnerId: string | null;
|
|
31
|
+
readonly status: string;
|
|
32
|
+
readonly gitRepo: string;
|
|
33
|
+
readonly gitBranch: string;
|
|
34
|
+
readonly gitCommit: string | null;
|
|
35
|
+
readonly startedAt: string | null;
|
|
36
|
+
readonly finishedAt: string | null;
|
|
37
|
+
}
|
|
38
|
+
export interface RegisterInput {
|
|
39
|
+
readonly name: string;
|
|
40
|
+
readonly platform: RunnerPlatform;
|
|
41
|
+
readonly arch: RunnerArch;
|
|
42
|
+
readonly labels?: readonly string[];
|
|
43
|
+
readonly maxJobs?: number;
|
|
44
|
+
}
|
|
45
|
+
export interface RegisterResult {
|
|
46
|
+
readonly runnerId: string;
|
|
47
|
+
/** One-time install token — shown ONCE. */
|
|
48
|
+
readonly registrationToken: string;
|
|
49
|
+
}
|
|
50
|
+
export declare const register: (client: Client, input: RegisterInput) => Promise<RegisterResult>;
|
|
51
|
+
export declare const list: (client: Client) => Promise<{
|
|
52
|
+
runners: readonly RunnerView[];
|
|
53
|
+
}>;
|
|
54
|
+
export declare const listJobs: (client: Client, runnerId: string) => Promise<{
|
|
55
|
+
jobs: readonly RunnerJob[];
|
|
56
|
+
}>;
|
|
57
|
+
export declare const unregister: (client: Client, runnerId: string) => Promise<{
|
|
58
|
+
success: boolean;
|
|
59
|
+
}>;
|
|
60
|
+
//# sourceMappingURL=runners.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runners.d.ts","sourceRoot":"","sources":["../src/runners.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAA;AAC1D,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,OAAO,CAAA;AAExC,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;CAClC;AAED,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,EAAE,OAAO,aAAa,KAAG,OAAO,CAAC,cAAc,CACjC,CAAA;AAErD,eAAO,MAAM,IAAI,GAAI,QAAQ,MAAM,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,CAC7C,CAAA;AAEnC,eAAO,MAAM,QAAQ,GACpB,QAAQ,MAAM,EACd,UAAU,MAAM,KACd,OAAO,CAAC;IAAE,IAAI,EAAE,SAAS,SAAS,EAAE,CAAA;CAAE,CAC+B,CAAA;AAExE,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CACpB,CAAA"}
|
package/dist/runners.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CI runners — self-hosted machines that execute build / deploy jobs.
|
|
3
|
+
*
|
|
4
|
+
* POST /runners — register (returns one-time install token)
|
|
5
|
+
* GET /runners — list
|
|
6
|
+
* GET /runners/:id/jobs — recent jobs for a runner
|
|
7
|
+
* DELETE /runners/:id — unregister
|
|
8
|
+
*
|
|
9
|
+
* The `registrationToken` returned by `register()` is shown ONCE — the
|
|
10
|
+
* server only keeps a hash. Runners exchange it for a long-lived
|
|
11
|
+
* credential during bootstrap.
|
|
12
|
+
*/
|
|
13
|
+
import { request } from './http.js';
|
|
14
|
+
export const register = (client, input) => request(client, 'POST', '/runners', { body: input });
|
|
15
|
+
export const list = (client) => request(client, 'GET', '/runners');
|
|
16
|
+
export const listJobs = (client, runnerId) => request(client, 'GET', `/runners/${encodeURIComponent(runnerId)}/jobs`);
|
|
17
|
+
export const unregister = (client, runnerId) => request(client, 'DELETE', `/runners/${encodeURIComponent(runnerId)}`);
|
package/dist/saml.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SAML SSO — enterprise Identity Provider configuration per organization.
|
|
3
|
+
*
|
|
4
|
+
* GET /saml — provider for org (null if unconfigured)
|
|
5
|
+
* POST /saml — create provider
|
|
6
|
+
* PATCH /saml — update provider
|
|
7
|
+
* POST /saml/status — enable / disable
|
|
8
|
+
* DELETE /saml — delete provider + accounts
|
|
9
|
+
* GET /saml/metadata — SP metadata XML (for IdP wiring)
|
|
10
|
+
* GET /saml/logs — authentication logs
|
|
11
|
+
* POST /saml/test — validate cert + reach SSO URL
|
|
12
|
+
* GET /saml/templates — IdP setup templates (Okta/Azure/...)
|
|
13
|
+
* GET /saml/name-id-formats — enum options + URIs
|
|
14
|
+
* GET /saml/signature-algorithms — enum options + URIs
|
|
15
|
+
*
|
|
16
|
+
* Wire shape sourced from `@sylphx/contract` (ADR-084). Paths + methods
|
|
17
|
+
* come from `samlEndpoints`; types come from the matching schemas.
|
|
18
|
+
* Hand-written types are forbidden here.
|
|
19
|
+
*
|
|
20
|
+
* Admin-only. Certificate is PEM — `create()` / `update()` accept it as-is;
|
|
21
|
+
* the server validates the chain and stores the fingerprint. The raw IdP
|
|
22
|
+
* metadata XML returned by `metadata()` is feed-ready for the IdP's
|
|
23
|
+
* "Add Service Provider" flow — no post-processing required.
|
|
24
|
+
*/
|
|
25
|
+
import type { CreateSAMLProviderInput, CreateSAMLProviderResult, DeleteSAMLProviderResult, GetSAMLLogsResult, GetSAMLMetadataResult, GetSAMLProviderResult, ListSAMLIdPTemplatesResult, ListSAMLNameIdFormatsResult, ListSAMLSignatureAlgorithmsResult, SAMLAttributeMapping, SAMLAuthLog, SAMLIdPTemplate, SAMLNameIdFormat, SAMLNameIdFormatOption, SAMLProvider, SAMLProviderStatus, SAMLProviderType, SAMLSignatureAlgorithm, SAMLSignatureAlgorithmOption, SetSAMLProviderStatusResult, TestSAMLConfigInput, TestSAMLConfigResult, UpdateSAMLProviderInput, UpdateSAMLProviderResult } from '@sylphx/contract';
|
|
26
|
+
import type { Client } from './client.js';
|
|
27
|
+
export type { CreateSAMLProviderInput, CreateSAMLProviderResult, GetSAMLMetadataResult as MetadataResult, SAMLAttributeMapping, SAMLAuthLog as AuthLog, SAMLIdPTemplate as IdPTemplate, SAMLNameIdFormat, SAMLNameIdFormatOption as NameIdFormatOption, SAMLProvider, SAMLProviderStatus, SAMLProviderType, SAMLSignatureAlgorithm, SAMLSignatureAlgorithmOption as SignatureAlgorithmOption, TestSAMLConfigInput as TestConfigInput, TestSAMLConfigResult as TestConfigResult, UpdateSAMLProviderInput, };
|
|
28
|
+
/**
|
|
29
|
+
* `Promise`-typed CRUD wrappers. Each routes through the contract endpoint
|
|
30
|
+
* descriptor so the path / method live in `@sylphx/contract` only.
|
|
31
|
+
*/
|
|
32
|
+
export declare const get: (client: Client, organizationId: string) => Promise<GetSAMLProviderResult>;
|
|
33
|
+
export declare const create: (client: Client, input: CreateSAMLProviderInput) => Promise<CreateSAMLProviderResult>;
|
|
34
|
+
export declare const update: (client: Client, input: UpdateSAMLProviderInput) => Promise<UpdateSAMLProviderResult>;
|
|
35
|
+
export declare const setStatus: (client: Client, providerId: string, enabled: boolean) => Promise<SetSAMLProviderStatusResult>;
|
|
36
|
+
declare const _delete: (client: Client, providerId: string) => Promise<DeleteSAMLProviderResult>;
|
|
37
|
+
export { _delete as delete };
|
|
38
|
+
export declare const metadata: (client: Client, organizationId: string) => Promise<GetSAMLMetadataResult>;
|
|
39
|
+
export declare const logs: (client: Client, providerId: string, limit?: number) => Promise<GetSAMLLogsResult>;
|
|
40
|
+
export declare const testConfig: (client: Client, input: TestSAMLConfigInput) => Promise<TestSAMLConfigResult>;
|
|
41
|
+
export declare const templates: (client: Client) => Promise<ListSAMLIdPTemplatesResult>;
|
|
42
|
+
export declare const nameIdFormats: (client: Client) => Promise<ListSAMLNameIdFormatsResult>;
|
|
43
|
+
export declare const signatureAlgorithms: (client: Client) => Promise<ListSAMLSignatureAlgorithmsResult>;
|
|
44
|
+
//# sourceMappingURL=saml.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"saml.d.ts","sourceRoot":"","sources":["../src/saml.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EACX,uBAAuB,EACvB,wBAAwB,EACxB,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,EAC3B,iCAAiC,EACjC,oBAAoB,EACpB,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,EAC3B,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAMzC,YAAY,EACX,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,IAAI,cAAc,EACvC,oBAAoB,EACpB,WAAW,IAAI,OAAO,EACtB,eAAe,IAAI,WAAW,EAC9B,gBAAgB,EAChB,sBAAsB,IAAI,kBAAkB,EAC5C,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,4BAA4B,IAAI,wBAAwB,EACxD,mBAAmB,IAAI,eAAe,EACtC,oBAAoB,IAAI,gBAAgB,EACxC,uBAAuB,GACvB,CAAA;AAED;;;GAGG;AAEH,eAAO,MAAM,GAAG,GAAI,QAAQ,MAAM,EAAE,gBAAgB,MAAM,KAAG,OAAO,CAAC,qBAAqB,CAGzF,CAAA;AAED,eAAO,MAAM,MAAM,GAClB,QAAQ,MAAM,EACd,OAAO,uBAAuB,KAC5B,OAAO,CAAC,wBAAwB,CAGlC,CAAA;AAED,eAAO,MAAM,MAAM,GAClB,QAAQ,MAAM,EACd,OAAO,uBAAuB,KAC5B,OAAO,CAAC,wBAAwB,CAGlC,CAAA;AAED,eAAO,MAAM,SAAS,GACrB,QAAQ,MAAM,EACd,YAAY,MAAM,EAClB,SAAS,OAAO,KACd,OAAO,CAAC,2BAA2B,CAGrC,CAAA;AAED,QAAA,MAAM,OAAO,GAAI,QAAQ,MAAM,EAAE,YAAY,MAAM,KAAG,OAAO,CAAC,wBAAwB,CAGrF,CAAA;AACD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAA;AAE5B,eAAO,MAAM,QAAQ,GACpB,QAAQ,MAAM,EACd,gBAAgB,MAAM,KACpB,OAAO,CAAC,qBAAqB,CAG/B,CAAA;AAED,eAAO,MAAM,IAAI,GAChB,QAAQ,MAAM,EACd,YAAY,MAAM,EAClB,QAAQ,MAAM,KACZ,OAAO,CAAC,iBAAiB,CAK3B,CAAA;AAED,eAAO,MAAM,UAAU,GACtB,QAAQ,MAAM,EACd,OAAO,mBAAmB,KACxB,OAAO,CAAC,oBAAoB,CAG9B,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,KAAG,OAAO,CAAC,0BAA0B,CAG5E,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,KAAG,OAAO,CAAC,2BAA2B,CAGjF,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,QAAQ,MAAM,KAAG,OAAO,CAAC,iCAAiC,CAG7F,CAAA"}
|
package/dist/saml.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SAML SSO — enterprise Identity Provider configuration per organization.
|
|
3
|
+
*
|
|
4
|
+
* GET /saml — provider for org (null if unconfigured)
|
|
5
|
+
* POST /saml — create provider
|
|
6
|
+
* PATCH /saml — update provider
|
|
7
|
+
* POST /saml/status — enable / disable
|
|
8
|
+
* DELETE /saml — delete provider + accounts
|
|
9
|
+
* GET /saml/metadata — SP metadata XML (for IdP wiring)
|
|
10
|
+
* GET /saml/logs — authentication logs
|
|
11
|
+
* POST /saml/test — validate cert + reach SSO URL
|
|
12
|
+
* GET /saml/templates — IdP setup templates (Okta/Azure/...)
|
|
13
|
+
* GET /saml/name-id-formats — enum options + URIs
|
|
14
|
+
* GET /saml/signature-algorithms — enum options + URIs
|
|
15
|
+
*
|
|
16
|
+
* Wire shape sourced from `@sylphx/contract` (ADR-084). Paths + methods
|
|
17
|
+
* come from `samlEndpoints`; types come from the matching schemas.
|
|
18
|
+
* Hand-written types are forbidden here.
|
|
19
|
+
*
|
|
20
|
+
* Admin-only. Certificate is PEM — `create()` / `update()` accept it as-is;
|
|
21
|
+
* the server validates the chain and stores the fingerprint. The raw IdP
|
|
22
|
+
* metadata XML returned by `metadata()` is feed-ready for the IdP's
|
|
23
|
+
* "Add Service Provider" flow — no post-processing required.
|
|
24
|
+
*/
|
|
25
|
+
import { samlEndpoints } from '@sylphx/contract';
|
|
26
|
+
import { request } from './http.js';
|
|
27
|
+
/**
|
|
28
|
+
* `Promise`-typed CRUD wrappers. Each routes through the contract endpoint
|
|
29
|
+
* descriptor so the path / method live in `@sylphx/contract` only.
|
|
30
|
+
*/
|
|
31
|
+
export const get = (client, organizationId) => {
|
|
32
|
+
const { method, path } = samlEndpoints.getProvider;
|
|
33
|
+
return request(client, method, path, { query: { organizationId } });
|
|
34
|
+
};
|
|
35
|
+
export const create = (client, input) => {
|
|
36
|
+
const { method, path } = samlEndpoints.createProvider;
|
|
37
|
+
return request(client, method, path, { body: input });
|
|
38
|
+
};
|
|
39
|
+
export const update = (client, input) => {
|
|
40
|
+
const { method, path } = samlEndpoints.updateProvider;
|
|
41
|
+
return request(client, method, path, { body: input });
|
|
42
|
+
};
|
|
43
|
+
export const setStatus = (client, providerId, enabled) => {
|
|
44
|
+
const { method, path } = samlEndpoints.setProviderStatus;
|
|
45
|
+
return request(client, method, path, { body: { providerId, enabled } });
|
|
46
|
+
};
|
|
47
|
+
const _delete = (client, providerId) => {
|
|
48
|
+
const { method, path } = samlEndpoints.deleteProvider;
|
|
49
|
+
return request(client, method, path, { body: { providerId } });
|
|
50
|
+
};
|
|
51
|
+
export { _delete as delete };
|
|
52
|
+
export const metadata = (client, organizationId) => {
|
|
53
|
+
const { method, path } = samlEndpoints.getMetadata;
|
|
54
|
+
return request(client, method, path, { query: { organizationId } });
|
|
55
|
+
};
|
|
56
|
+
export const logs = (client, providerId, limit) => {
|
|
57
|
+
const { method, path } = samlEndpoints.getLogs;
|
|
58
|
+
return request(client, method, path, {
|
|
59
|
+
query: { providerId, limit: limit !== undefined ? String(limit) : undefined },
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
export const testConfig = (client, input) => {
|
|
63
|
+
const { method, path } = samlEndpoints.testConfig;
|
|
64
|
+
return request(client, method, path, { body: input });
|
|
65
|
+
};
|
|
66
|
+
export const templates = (client) => {
|
|
67
|
+
const { method, path } = samlEndpoints.listTemplates;
|
|
68
|
+
return request(client, method, path);
|
|
69
|
+
};
|
|
70
|
+
export const nameIdFormats = (client) => {
|
|
71
|
+
const { method, path } = samlEndpoints.listNameIdFormats;
|
|
72
|
+
return request(client, method, path);
|
|
73
|
+
};
|
|
74
|
+
export const signatureAlgorithms = (client) => {
|
|
75
|
+
const { method, path } = samlEndpoints.listSignatureAlgorithms;
|
|
76
|
+
return request(client, method, path);
|
|
77
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ephemeral compute sandboxes (ADR-052 container_executions).
|
|
3
|
+
*
|
|
4
|
+
* POST /projects/:id/sandboxes — create (waits for pod ready)
|
|
5
|
+
* GET /projects/:id/sandboxes — list active sandboxes for a project
|
|
6
|
+
* GET /sandboxes/:id — get details
|
|
7
|
+
* DELETE /sandboxes/:id — terminate
|
|
8
|
+
*/
|
|
9
|
+
import type { Client } from './client.js';
|
|
10
|
+
import type { Sandbox, SandboxCreateResult, SandboxSummary } from './types.js';
|
|
11
|
+
export declare const create: (client: Client, projectId: string, body: Record<string, unknown>) => Promise<SandboxCreateResult>;
|
|
12
|
+
export declare const list: (client: Client, projectId: string) => Promise<SandboxSummary[]>;
|
|
13
|
+
export declare const get: (client: Client, sandboxId: string) => Promise<Sandbox>;
|
|
14
|
+
export declare const terminate: (client: Client, sandboxId: string) => Promise<void>;
|
|
15
|
+
//# sourceMappingURL=sandboxes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandboxes.d.ts","sourceRoot":"","sources":["../src/sandboxes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE9E,eAAO,MAAM,MAAM,GAClB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC3B,OAAO,CAAC,mBAAmB,CAC4D,CAAA;AAE1F,eAAO,MAAM,IAAI,GAAU,QAAQ,MAAM,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC,cAAc,EAAE,CAOtF,CAAA;AAED,eAAO,MAAM,GAAG,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC,OAAO,CACD,CAAA;AAEtE,eAAO,MAAM,SAAS,GAAU,QAAQ,MAAM,EAAE,WAAW,MAAM,KAAG,OAAO,CAAC,IAAI,CAE/E,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ephemeral compute sandboxes (ADR-052 container_executions).
|
|
3
|
+
*
|
|
4
|
+
* POST /projects/:id/sandboxes — create (waits for pod ready)
|
|
5
|
+
* GET /projects/:id/sandboxes — list active sandboxes for a project
|
|
6
|
+
* GET /sandboxes/:id — get details
|
|
7
|
+
* DELETE /sandboxes/:id — terminate
|
|
8
|
+
*/
|
|
9
|
+
import { request } from './http.js';
|
|
10
|
+
export const create = (client, projectId, body) => request(client, 'POST', `/projects/${encodeURIComponent(projectId)}/sandboxes`, { body });
|
|
11
|
+
export const list = async (client, projectId) => {
|
|
12
|
+
const res = await request(client, 'GET', `/projects/${encodeURIComponent(projectId)}/sandboxes`);
|
|
13
|
+
return Array.isArray(res) ? res : (res.sandboxes ?? []);
|
|
14
|
+
};
|
|
15
|
+
export const get = (client, sandboxId) => request(client, 'GET', `/sandboxes/${encodeURIComponent(sandboxId)}`);
|
|
16
|
+
export const terminate = async (client, sandboxId) => {
|
|
17
|
+
await request(client, 'DELETE', `/sandboxes/${encodeURIComponent(sandboxId)}`);
|
|
18
|
+
};
|
package/dist/search.d.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Indexed search — analytics, corpus stats, and document listing.
|
|
3
|
+
*
|
|
4
|
+
* GET /search/projects/:projectId/analytics — top queries, CTR, latency
|
|
5
|
+
* GET /search/projects/:projectId/stats — corpus size + namespace breakdown
|
|
6
|
+
* GET /search/projects/:projectId/documents — paginated document list
|
|
7
|
+
*
|
|
8
|
+
* Console-facing only — the SDK-level search *write* endpoints (index /
|
|
9
|
+
* query / click) remain internal. Consumers index documents through the
|
|
10
|
+
* runtime SDK; this namespace is for operator-grade introspection.
|
|
11
|
+
*/
|
|
12
|
+
import type { Client } from './client.js';
|
|
13
|
+
export interface TopQuery {
|
|
14
|
+
readonly query: string;
|
|
15
|
+
readonly count: number;
|
|
16
|
+
}
|
|
17
|
+
export interface SearchAnalytics {
|
|
18
|
+
readonly totalQueries: number;
|
|
19
|
+
readonly avgLatencyMs: number;
|
|
20
|
+
readonly clickThroughRate: number;
|
|
21
|
+
readonly topQueries: readonly TopQuery[];
|
|
22
|
+
}
|
|
23
|
+
export interface AnalyticsOptions {
|
|
24
|
+
readonly namespace?: string;
|
|
25
|
+
readonly dateFrom?: string;
|
|
26
|
+
readonly dateTo?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare const analytics: (client: Client, projectId: string, options?: AnalyticsOptions) => Promise<SearchAnalytics>;
|
|
29
|
+
export interface NamespaceStats {
|
|
30
|
+
readonly namespace: string;
|
|
31
|
+
readonly count: number;
|
|
32
|
+
}
|
|
33
|
+
export interface SearchStats {
|
|
34
|
+
readonly totalDocuments: number;
|
|
35
|
+
readonly documentsWithEmbedding: number;
|
|
36
|
+
readonly byNamespace: readonly NamespaceStats[];
|
|
37
|
+
}
|
|
38
|
+
export declare const stats: (client: Client, projectId: string, namespace?: string) => Promise<SearchStats>;
|
|
39
|
+
export interface SearchDocument {
|
|
40
|
+
readonly id: string;
|
|
41
|
+
readonly namespace: string;
|
|
42
|
+
readonly externalId: string | null;
|
|
43
|
+
readonly title: string | null;
|
|
44
|
+
readonly contentPreview: string;
|
|
45
|
+
readonly url: string | null;
|
|
46
|
+
readonly category: string | null;
|
|
47
|
+
readonly type: string | null;
|
|
48
|
+
readonly tags: readonly string[] | null;
|
|
49
|
+
readonly hasEmbedding: boolean;
|
|
50
|
+
readonly impressions: number;
|
|
51
|
+
readonly clicks: number;
|
|
52
|
+
readonly createdAt: string;
|
|
53
|
+
readonly updatedAt: string;
|
|
54
|
+
}
|
|
55
|
+
export interface ListDocumentsResult {
|
|
56
|
+
readonly documents: readonly SearchDocument[];
|
|
57
|
+
readonly total: number;
|
|
58
|
+
readonly hasMore: boolean;
|
|
59
|
+
}
|
|
60
|
+
export interface ListDocumentsOptions {
|
|
61
|
+
readonly namespace?: string;
|
|
62
|
+
readonly limit?: number;
|
|
63
|
+
readonly offset?: number;
|
|
64
|
+
}
|
|
65
|
+
export declare const listDocuments: (client: Client, projectId: string, options?: ListDocumentsOptions) => Promise<ListDocumentsResult>;
|
|
66
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,UAAU,EAAE,SAAS,QAAQ,EAAE,CAAA;CACxC;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,eAAO,MAAM,SAAS,GACrB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,UAAU,gBAAgB,KACxB,OAAO,CAAC,eAAe,CAOvB,CAAA;AAEH,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAA;IACvC,QAAQ,CAAC,WAAW,EAAE,SAAS,cAAc,EAAE,CAAA;CAC/C;AAED,eAAO,MAAM,KAAK,GACjB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,YAAY,MAAM,KAChB,OAAO,CAAC,WAAW,CAGnB,CAAA;AAEH,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAA;IACvC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,SAAS,EAAE,SAAS,cAAc,EAAE,CAAA;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,eAAO,MAAM,aAAa,GACzB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,UAAU,oBAAoB,KAC5B,OAAO,CAAC,mBAAmB,CAO3B,CAAA"}
|
package/dist/search.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Indexed search — analytics, corpus stats, and document listing.
|
|
3
|
+
*
|
|
4
|
+
* GET /search/projects/:projectId/analytics — top queries, CTR, latency
|
|
5
|
+
* GET /search/projects/:projectId/stats — corpus size + namespace breakdown
|
|
6
|
+
* GET /search/projects/:projectId/documents — paginated document list
|
|
7
|
+
*
|
|
8
|
+
* Console-facing only — the SDK-level search *write* endpoints (index /
|
|
9
|
+
* query / click) remain internal. Consumers index documents through the
|
|
10
|
+
* runtime SDK; this namespace is for operator-grade introspection.
|
|
11
|
+
*/
|
|
12
|
+
import { request } from './http.js';
|
|
13
|
+
export const analytics = (client, projectId, options) => request(client, 'GET', `/search/projects/${encodeURIComponent(projectId)}/analytics`, {
|
|
14
|
+
query: {
|
|
15
|
+
namespace: options?.namespace,
|
|
16
|
+
dateFrom: options?.dateFrom,
|
|
17
|
+
dateTo: options?.dateTo,
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
export const stats = (client, projectId, namespace) => request(client, 'GET', `/search/projects/${encodeURIComponent(projectId)}/stats`, {
|
|
21
|
+
query: { namespace },
|
|
22
|
+
});
|
|
23
|
+
export const listDocuments = (client, projectId, options) => request(client, 'GET', `/search/projects/${encodeURIComponent(projectId)}/documents`, {
|
|
24
|
+
query: {
|
|
25
|
+
namespace: options?.namespace,
|
|
26
|
+
limit: options?.limit !== undefined ? String(options.limit) : undefined,
|
|
27
|
+
offset: options?.offset !== undefined ? String(options.offset) : undefined,
|
|
28
|
+
},
|
|
29
|
+
});
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Encrypted secrets vault — AES-256-GCM at rest, env-scoped, versioned.
|
|
3
|
+
*
|
|
4
|
+
* GET /secrets — list (project + optional env)
|
|
5
|
+
* GET /secrets/detail?id=&reveal — get one (reveal opt-in only)
|
|
6
|
+
* POST /secrets — create
|
|
7
|
+
* PATCH /secrets — update (new value → new version)
|
|
8
|
+
* DELETE /secrets — delete
|
|
9
|
+
* POST /secrets/rollback — restore a past version
|
|
10
|
+
* GET /secrets/stats — per-env counts
|
|
11
|
+
*
|
|
12
|
+
* Secrets are distinct from `envVars`: envVars are plain K/V for runtime
|
|
13
|
+
* injection; secrets are a first-class vault with version history, audit
|
|
14
|
+
* trail, and on-demand decryption. Prefer secrets when the value must
|
|
15
|
+
* never leak into build logs or reach the filesystem.
|
|
16
|
+
*
|
|
17
|
+
* The `reveal` flag on `get()` MUST be passed explicitly — without it
|
|
18
|
+
* the API returns a masked string. Callers opting in accept full
|
|
19
|
+
* responsibility for shielding the plaintext.
|
|
20
|
+
*
|
|
21
|
+
* Wire shape sourced from `@sylphx/contract` (ADR-084).
|
|
22
|
+
*/
|
|
23
|
+
import type { CreateSecretInput, CreateSecretResult, RollbackSecretResult, SecretDetail, SecretListItem, UpdateSecretInput, UpdateSecretResult } from '@sylphx/contract';
|
|
24
|
+
import type { Client } from './client.js';
|
|
25
|
+
export type { CreateSecretInput as CreateInput, CreateSecretResult as CreateResult, EnvironmentRef, RollbackSecretResult as RollbackResult, SecretDetail, SecretListItem, SecretVersion, UpdateSecretInput as UpdateInput, UpdateSecretResult as UpdateResult, } from '@sylphx/contract';
|
|
26
|
+
export interface ListOptions {
|
|
27
|
+
readonly environmentId?: string;
|
|
28
|
+
readonly includeInactive?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export declare const list: (client: Client, projectId: string, options?: ListOptions) => Promise<{
|
|
31
|
+
secrets: readonly SecretListItem[];
|
|
32
|
+
}>;
|
|
33
|
+
export declare const get: (client: Client, id: string, options?: {
|
|
34
|
+
reveal?: boolean;
|
|
35
|
+
}) => Promise<SecretDetail>;
|
|
36
|
+
export declare const create: (client: Client, input: CreateSecretInput) => Promise<CreateSecretResult>;
|
|
37
|
+
export declare const update: (client: Client, input: UpdateSecretInput) => Promise<UpdateSecretResult>;
|
|
38
|
+
declare const _delete: (client: Client, id: string) => Promise<{
|
|
39
|
+
success: boolean;
|
|
40
|
+
}>;
|
|
41
|
+
export { _delete as delete };
|
|
42
|
+
export declare const rollback: (client: Client, id: string, version: string) => Promise<RollbackSecretResult>;
|
|
43
|
+
export interface EnvironmentStats {
|
|
44
|
+
readonly environmentId: string | null;
|
|
45
|
+
readonly count: number;
|
|
46
|
+
}
|
|
47
|
+
export declare const stats: (client: Client, projectId: string) => Promise<{
|
|
48
|
+
stats: readonly EnvironmentStats[];
|
|
49
|
+
}>;
|
|
50
|
+
//# sourceMappingURL=secrets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EACX,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAKzC,YAAY,EACX,iBAAiB,IAAI,WAAW,EAChC,kBAAkB,IAAI,YAAY,EAClC,cAAc,EACd,oBAAoB,IAAI,cAAc,EACtC,YAAY,EACZ,cAAc,EACd,aAAa,EACb,iBAAiB,IAAI,WAAW,EAChC,kBAAkB,IAAI,YAAY,GAClC,MAAM,kBAAkB,CAAA;AAEzB,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAClC;AAED,eAAO,MAAM,IAAI,GAChB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,UAAU,WAAW,KACnB,OAAO,CAAC;IAAE,OAAO,EAAE,SAAS,cAAc,EAAE,CAAA;CAAE,CAShD,CAAA;AAED,eAAO,MAAM,GAAG,GACf,QAAQ,MAAM,EACd,IAAI,MAAM,EACV,UAAU;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,KAC5B,OAAO,CAAC,YAAY,CAKtB,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM,EAAE,OAAO,iBAAiB,KAAG,OAAO,CAAC,kBAAkB,CAG3F,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM,EAAE,OAAO,iBAAiB,KAAG,OAAO,CAAC,kBAAkB,CAG3F,CAAA;AAED,QAAA,MAAM,OAAO,GAAI,QAAQ,MAAM,EAAE,IAAI,MAAM,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAGzE,CAAA;AACD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAA;AAE5B,eAAO,MAAM,QAAQ,GACpB,QAAQ,MAAM,EACd,IAAI,MAAM,EACV,SAAS,MAAM,KACb,OAAO,CAAC,oBAAoB,CAG9B,CAAA;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACtB;AAED,eAAO,MAAM,KAAK,GACjB,QAAQ,MAAM,EACd,WAAW,MAAM,KACf,OAAO,CAAC;IAAE,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAAE,CAGhD,CAAA"}
|
package/dist/secrets.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Encrypted secrets vault — AES-256-GCM at rest, env-scoped, versioned.
|
|
3
|
+
*
|
|
4
|
+
* GET /secrets — list (project + optional env)
|
|
5
|
+
* GET /secrets/detail?id=&reveal — get one (reveal opt-in only)
|
|
6
|
+
* POST /secrets — create
|
|
7
|
+
* PATCH /secrets — update (new value → new version)
|
|
8
|
+
* DELETE /secrets — delete
|
|
9
|
+
* POST /secrets/rollback — restore a past version
|
|
10
|
+
* GET /secrets/stats — per-env counts
|
|
11
|
+
*
|
|
12
|
+
* Secrets are distinct from `envVars`: envVars are plain K/V for runtime
|
|
13
|
+
* injection; secrets are a first-class vault with version history, audit
|
|
14
|
+
* trail, and on-demand decryption. Prefer secrets when the value must
|
|
15
|
+
* never leak into build logs or reach the filesystem.
|
|
16
|
+
*
|
|
17
|
+
* The `reveal` flag on `get()` MUST be passed explicitly — without it
|
|
18
|
+
* the API returns a masked string. Callers opting in accept full
|
|
19
|
+
* responsibility for shielding the plaintext.
|
|
20
|
+
*
|
|
21
|
+
* Wire shape sourced from `@sylphx/contract` (ADR-084).
|
|
22
|
+
*/
|
|
23
|
+
import { secretsEndpoints } from '@sylphx/contract';
|
|
24
|
+
import { request } from './http.js';
|
|
25
|
+
export const list = (client, projectId, options) => {
|
|
26
|
+
const { method, path } = secretsEndpoints.list;
|
|
27
|
+
return request(client, method, path, {
|
|
28
|
+
query: {
|
|
29
|
+
projectId,
|
|
30
|
+
environmentId: options?.environmentId,
|
|
31
|
+
includeInactive: options?.includeInactive ? 'true' : undefined,
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
export const get = (client, id, options) => {
|
|
36
|
+
const { method, path } = secretsEndpoints.get;
|
|
37
|
+
return request(client, method, path, {
|
|
38
|
+
query: { id, reveal: options?.reveal ? 'true' : undefined },
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
export const create = (client, input) => {
|
|
42
|
+
const { method, path } = secretsEndpoints.create;
|
|
43
|
+
return request(client, method, path, { body: input });
|
|
44
|
+
};
|
|
45
|
+
export const update = (client, input) => {
|
|
46
|
+
const { method, path } = secretsEndpoints.update;
|
|
47
|
+
return request(client, method, path, { body: input });
|
|
48
|
+
};
|
|
49
|
+
const _delete = (client, id) => {
|
|
50
|
+
const { method, path } = secretsEndpoints.delete;
|
|
51
|
+
return request(client, method, path, { body: { id } });
|
|
52
|
+
};
|
|
53
|
+
export { _delete as delete };
|
|
54
|
+
export const rollback = (client, id, version) => {
|
|
55
|
+
const { method, path } = secretsEndpoints.rollback;
|
|
56
|
+
return request(client, method, path, { body: { id, version } });
|
|
57
|
+
};
|
|
58
|
+
export const stats = (client, projectId) => {
|
|
59
|
+
const { method, path } = secretsEndpoints.stats;
|
|
60
|
+
return request(client, method, path, { query: { projectId } });
|
|
61
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Console — user-facing security settings (Management plane).
|
|
3
|
+
*
|
|
4
|
+
* Mirrors `apps/api/src/server/platform/routes/security/*`. Paths come
|
|
5
|
+
* from `@sylphx/contract` (`securityEndpoints`, mount `/security/*`).
|
|
6
|
+
*
|
|
7
|
+
* This is the SDK surface the CLI / Console UI use to drive the
|
|
8
|
+
* authenticated user's own security settings — distinct from
|
|
9
|
+
* `@sylphx/sdk.auth` (BaaS plane, end-user sign-in/sign-up) and from
|
|
10
|
+
* `authSettings.ts` (Management plane, project-level OAuth/SAML config).
|
|
11
|
+
*
|
|
12
|
+
* Initial scope (ADR-089 closure for P0-1 — email change). Other
|
|
13
|
+
* sub-namespaces (2FA, OAuth, password, passkeys, sessions, score,
|
|
14
|
+
* alerts) follow the same pattern as endpoints stabilise.
|
|
15
|
+
*/
|
|
16
|
+
import type { Client } from './client.js';
|
|
17
|
+
export interface EmailChangeRequestInput {
|
|
18
|
+
readonly newEmail: string;
|
|
19
|
+
}
|
|
20
|
+
export interface EmailChangeRequestResult {
|
|
21
|
+
readonly success: boolean;
|
|
22
|
+
readonly message: string;
|
|
23
|
+
readonly expiresAt: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Request a change of the authenticated user's email address.
|
|
27
|
+
*
|
|
28
|
+
* The Platform issues a 32-byte verification token, persists a pending
|
|
29
|
+
* `email_change_requests` row, and emails the verification link to the
|
|
30
|
+
* **new** address. The current address is left untouched until the user
|
|
31
|
+
* confirms via {@link confirmEmailChange}. Audit-emitted as
|
|
32
|
+
* `email_change.create` with the new address masked.
|
|
33
|
+
*
|
|
34
|
+
* Errors:
|
|
35
|
+
* - 409 — `newEmail` is already in use by another account
|
|
36
|
+
* - 404 — current user not found (should not happen for a valid session)
|
|
37
|
+
*/
|
|
38
|
+
export declare const requestEmailChange: (client: Client, body: EmailChangeRequestInput) => Promise<EmailChangeRequestResult>;
|
|
39
|
+
export interface EmailChangeConfirmInput {
|
|
40
|
+
readonly token: string;
|
|
41
|
+
}
|
|
42
|
+
export interface EmailChangeConfirmResult {
|
|
43
|
+
readonly success: boolean;
|
|
44
|
+
readonly newEmail: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Confirm a pending email change using the token delivered via email.
|
|
48
|
+
*
|
|
49
|
+
* On success the `users.email` column is updated, the pending request is
|
|
50
|
+
* deleted, a security alert is recorded, and a notification is sent to
|
|
51
|
+
* the **previous** address. Audit-emitted as `user.update` with
|
|
52
|
+
* `metadata.action = 'email_changed'`.
|
|
53
|
+
*
|
|
54
|
+
* Errors:
|
|
55
|
+
* - 422 — invalid or expired token (the row is cleaned up on expiry)
|
|
56
|
+
*/
|
|
57
|
+
export declare const confirmEmailChange: (client: Client, body: EmailChangeConfirmInput) => Promise<EmailChangeConfirmResult>;
|
|
58
|
+
//# sourceMappingURL=security.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAKzC,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC1B;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,kBAAkB,GAC9B,QAAQ,MAAM,EACd,MAAM,uBAAuB,KAC3B,OAAO,CAAC,wBAAwB,CAGlC,CAAA;AAED,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CACzB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,GAC9B,QAAQ,MAAM,EACd,MAAM,uBAAuB,KAC3B,OAAO,CAAC,wBAAwB,CAGlC,CAAA"}
|