@sylphx/management 0.4.2 → 0.6.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.
- package/CHANGELOG.md +44 -2
- package/README.md +6 -6
- package/dist/auth.d.ts +7 -18
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +1 -2
- package/dist/authSettings.d.ts +7 -60
- package/dist/authSettings.d.ts.map +1 -1
- package/dist/authSettings.js +11 -19
- package/dist/backups.d.ts +7 -24
- package/dist/backups.d.ts.map +1 -1
- package/dist/backups.js +21 -7
- package/dist/client.d.ts +5 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +3 -2
- package/dist/domains.d.ts +7 -3
- package/dist/domains.d.ts.map +1 -1
- package/dist/domains.js +4 -4
- package/dist/email.d.ts +22 -29
- package/dist/email.d.ts.map +1 -1
- package/dist/email.js +52 -12
- package/dist/envVars.d.ts +7 -4
- package/dist/envVars.d.ts.map +1 -1
- package/dist/envVars.js +4 -3
- package/dist/environments.d.ts.map +1 -1
- package/dist/environments.js +16 -6
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +6 -3
- package/dist/logs.d.ts +1 -1
- package/dist/logs.d.ts.map +1 -1
- package/dist/logs.js +8 -2
- package/dist/newsletter.d.ts +32 -257
- package/dist/newsletter.d.ts.map +1 -1
- package/dist/newsletter.js +135 -95
- package/dist/oidc.d.ts +6 -27
- package/dist/oidc.d.ts.map +1 -1
- package/dist/oidc.js +16 -6
- package/dist/organizations.d.ts +3 -1
- package/dist/organizations.d.ts.map +1 -1
- package/dist/organizations.js +8 -0
- package/dist/privacy.d.ts +3 -98
- package/dist/privacy.d.ts.map +1 -1
- package/dist/privacy.js +57 -25
- package/dist/refresh.d.ts +11 -12
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +10 -2
- package/dist/runners.d.ts +7 -58
- package/dist/runners.d.ts.map +1 -1
- package/dist/runners.js +18 -17
- package/dist/search.d.ts +7 -40
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +28 -18
- package/dist/serviceTokens.d.ts +8 -44
- package/dist/serviceTokens.d.ts.map +1 -1
- package/dist/serviceTokens.js +24 -8
- package/dist/services.d.ts +4 -1
- package/dist/services.d.ts.map +1 -1
- package/dist/services.js +6 -2
- package/package.json +2 -2
package/dist/refresh.d.ts
CHANGED
|
@@ -16,13 +16,15 @@
|
|
|
16
16
|
* @see docs/adr/ADR-059-unified-credentials.md §1.1
|
|
17
17
|
* @see docs/adr/ADR-089-platform-as-first-customer-of-baas.md
|
|
18
18
|
*/
|
|
19
|
+
import { authEndpoints, type RefreshTokenResult } from '@sylphx/contract';
|
|
19
20
|
import type { Client } from './client.js';
|
|
20
|
-
export
|
|
21
|
-
|
|
22
|
-
readonly
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
21
|
+
export type RefreshResult = RefreshTokenResult;
|
|
22
|
+
type EndpointResponse<E> = E extends {
|
|
23
|
+
readonly response: {
|
|
24
|
+
readonly Type: infer T;
|
|
25
|
+
};
|
|
26
|
+
} ? T : never;
|
|
27
|
+
export type SignOutResult = EndpointResponse<typeof authEndpoints.signOut>;
|
|
26
28
|
/**
|
|
27
29
|
* Rotate a refresh token. Returns a fresh access+refresh pair; the
|
|
28
30
|
* presented refresh token is invalidated server-side (single-use
|
|
@@ -34,11 +36,8 @@ export declare const rotate: (client: Client, refreshToken: string) => Promise<R
|
|
|
34
36
|
* revoked or unknown token still returns success to prevent side-channel
|
|
35
37
|
* token-existence probing.
|
|
36
38
|
*/
|
|
37
|
-
export declare const signOut: (client: Client, refreshToken: string) => Promise<
|
|
38
|
-
success: boolean;
|
|
39
|
-
}>;
|
|
39
|
+
export declare const signOut: (client: Client, refreshToken: string) => Promise<SignOutResult>;
|
|
40
40
|
/** Backwards-compat alias used by some Console flows. */
|
|
41
|
-
export declare const revoke: (client: Client, refreshToken: string) => Promise<
|
|
42
|
-
|
|
43
|
-
}>;
|
|
41
|
+
export declare const revoke: (client: Client, refreshToken: string) => Promise<SignOutResult>;
|
|
42
|
+
export {};
|
|
44
43
|
//# sourceMappingURL=refresh.d.ts.map
|
package/dist/refresh.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../src/refresh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,
|
|
1
|
+
{"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../src/refresh.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACN,aAAa,EAEb,KAAK,kBAAkB,EAEvB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,MAAM,aAAa,GAAG,kBAAkB,CAAA;AAC9C,KAAK,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;KAAE,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAA;AAClG,MAAM,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC,CAAA;AAM1E;;;;GAIG;AACH,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC,aAAa,CAGhF,CAAA;AAEH;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,QAAQ,MAAM,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC,aAAa,CAGjF,CAAA;AAEH,yDAAyD;AACzD,eAAO,MAAM,MAAM,WANa,MAAM,gBAAgB,MAAM,KAAG,OAAO,CAAC,aAAa,CAMvD,CAAA"}
|
package/dist/refresh.js
CHANGED
|
@@ -16,18 +16,26 @@
|
|
|
16
16
|
* @see docs/adr/ADR-059-unified-credentials.md §1.1
|
|
17
17
|
* @see docs/adr/ADR-089-platform-as-first-customer-of-baas.md
|
|
18
18
|
*/
|
|
19
|
+
import { authEndpoints, refreshEndpoints, } from '@sylphx/contract';
|
|
19
20
|
import { request } from './http.js';
|
|
21
|
+
const refreshTokenBody = (refreshToken) => ({
|
|
22
|
+
refresh_token: refreshToken,
|
|
23
|
+
});
|
|
20
24
|
/**
|
|
21
25
|
* Rotate a refresh token. Returns a fresh access+refresh pair; the
|
|
22
26
|
* presented refresh token is invalidated server-side (single-use
|
|
23
27
|
* rotation per ADR-059 §1.1).
|
|
24
28
|
*/
|
|
25
|
-
export const rotate = (client, refreshToken) => request(client,
|
|
29
|
+
export const rotate = (client, refreshToken) => request(client, refreshEndpoints.refresh.method, refreshEndpoints.refresh.path, {
|
|
30
|
+
body: refreshTokenBody(refreshToken),
|
|
31
|
+
});
|
|
26
32
|
/**
|
|
27
33
|
* Revoke a refresh token (sign out). Idempotent — revoking an already-
|
|
28
34
|
* revoked or unknown token still returns success to prevent side-channel
|
|
29
35
|
* token-existence probing.
|
|
30
36
|
*/
|
|
31
|
-
export const signOut = (client, refreshToken) => request(client,
|
|
37
|
+
export const signOut = (client, refreshToken) => request(client, authEndpoints.signOut.method, authEndpoints.signOut.path, {
|
|
38
|
+
body: refreshTokenBody(refreshToken),
|
|
39
|
+
});
|
|
32
40
|
/** Backwards-compat alias used by some Console flows. */
|
|
33
41
|
export const revoke = signOut;
|
package/dist/runners.d.ts
CHANGED
|
@@ -1,60 +1,9 @@
|
|
|
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
|
-
*/
|
|
1
|
+
import { type CreateRunnerInput, type CreateRunnerResult, type DeleteRunnerResult, type ListRunnerJobsResult, type ListRunnersResult, type Runner, type RunnerArch, type RunnerJob, type RunnerPlatform } from '@sylphx/contract';
|
|
13
2
|
import type { Client } from './client.js';
|
|
14
|
-
export type
|
|
15
|
-
export type
|
|
16
|
-
export
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
-
}>;
|
|
3
|
+
export type { CreateRunnerInput as RegisterInput, CreateRunnerResult as RegisterResult, Runner, RunnerArch, RunnerJob, RunnerPlatform, };
|
|
4
|
+
export type RunnerView = Runner;
|
|
5
|
+
export declare const register: (client: Client, input: CreateRunnerInput) => Promise<CreateRunnerResult>;
|
|
6
|
+
export declare const list: (client: Client) => Promise<ListRunnersResult>;
|
|
7
|
+
export declare const listJobs: (client: Client, runnerId: string) => Promise<ListRunnerJobsResult>;
|
|
8
|
+
export declare const unregister: (client: Client, runnerId: string) => Promise<DeleteRunnerResult>;
|
|
60
9
|
//# sourceMappingURL=runners.d.ts.map
|
package/dist/runners.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runners.d.ts","sourceRoot":"","sources":["../src/runners.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"runners.d.ts","sourceRoot":"","sources":["../src/runners.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACtB,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,cAAc,EAEnB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,YAAY,EACX,iBAAiB,IAAI,aAAa,EAClC,kBAAkB,IAAI,cAAc,EACpC,MAAM,EACN,UAAU,EACV,SAAS,EACT,cAAc,GACd,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAA;AAE/B,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,EAAE,OAAO,iBAAiB,KAAG,OAAO,CAAC,kBAAkB,CAG7F,CAAA;AAED,eAAO,MAAM,IAAI,GAAI,QAAQ,MAAM,KAAG,OAAO,CAAC,iBAAiB,CAG9D,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC,oBAAoB,CAGvF,CAAA;AAED,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC,kBAAkB,CAGvF,CAAA"}
|
package/dist/runners.js
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
export const
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
import { runnersEndpoints, } from '@sylphx/contract';
|
|
2
|
+
import { interpolatePath, request } from './http.js';
|
|
3
|
+
export const register = (client, input) => {
|
|
4
|
+
const { method, path } = runnersEndpoints.create;
|
|
5
|
+
return request(client, method, path, { body: input });
|
|
6
|
+
};
|
|
7
|
+
export const list = (client) => {
|
|
8
|
+
const { method, path } = runnersEndpoints.list;
|
|
9
|
+
return request(client, method, path);
|
|
10
|
+
};
|
|
11
|
+
export const listJobs = (client, runnerId) => {
|
|
12
|
+
const { method, path } = runnersEndpoints.listJobs;
|
|
13
|
+
return request(client, method, interpolatePath(path, { runnerId }));
|
|
14
|
+
};
|
|
15
|
+
export const unregister = (client, runnerId) => {
|
|
16
|
+
const { method, path } = runnersEndpoints.delete;
|
|
17
|
+
return request(client, method, interpolatePath(path, { runnerId }));
|
|
18
|
+
};
|
package/dist/search.d.ts
CHANGED
|
@@ -9,54 +9,21 @@
|
|
|
9
9
|
* query / click) remain internal. Consumers index documents through the
|
|
10
10
|
* runtime SDK; this namespace is for operator-grade introspection.
|
|
11
11
|
*/
|
|
12
|
+
import type { SearchAnalyticsResult, SearchDocumentItem, SearchListDocumentsResult, SearchNamespaceStats, SearchStatsResult, SearchTopQuery } from '@sylphx/contract';
|
|
12
13
|
import type { Client } from './client.js';
|
|
13
|
-
export
|
|
14
|
-
|
|
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
|
-
}
|
|
14
|
+
export type TopQuery = SearchTopQuery;
|
|
15
|
+
export type SearchAnalytics = SearchAnalyticsResult;
|
|
23
16
|
export interface AnalyticsOptions {
|
|
24
17
|
readonly namespace?: string;
|
|
25
18
|
readonly dateFrom?: string;
|
|
26
19
|
readonly dateTo?: string;
|
|
27
20
|
}
|
|
28
21
|
export declare const analytics: (client: Client, projectId: string, options?: AnalyticsOptions) => Promise<SearchAnalytics>;
|
|
29
|
-
export
|
|
30
|
-
|
|
31
|
-
readonly count: number;
|
|
32
|
-
}
|
|
33
|
-
export interface SearchStats {
|
|
34
|
-
readonly totalDocuments: number;
|
|
35
|
-
readonly documentsWithEmbedding: number;
|
|
36
|
-
readonly byNamespace: readonly NamespaceStats[];
|
|
37
|
-
}
|
|
22
|
+
export type NamespaceStats = SearchNamespaceStats;
|
|
23
|
+
export type SearchStats = SearchStatsResult;
|
|
38
24
|
export declare const stats: (client: Client, projectId: string, namespace?: string) => Promise<SearchStats>;
|
|
39
|
-
export
|
|
40
|
-
|
|
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
|
-
}
|
|
25
|
+
export type SearchDocument = SearchDocumentItem;
|
|
26
|
+
export type ListDocumentsResult = SearchListDocumentsResult;
|
|
60
27
|
export interface ListDocumentsOptions {
|
|
61
28
|
readonly namespace?: string;
|
|
62
29
|
readonly limit?: number;
|
package/dist/search.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACX,qBAAqB,EACrB,kBAAkB,EAClB,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,MAAM,QAAQ,GAAG,cAAc,CAAA;AAErC,MAAM,MAAM,eAAe,GAAG,qBAAqB,CAAA;AAEnD,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,CASzB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAA;AAEjD,MAAM,MAAM,WAAW,GAAG,iBAAiB,CAAA;AAE3C,eAAO,MAAM,KAAK,GACjB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,YAAY,MAAM,KAChB,OAAO,CAAC,WAAW,CAKrB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAA;AAE/C,MAAM,MAAM,mBAAmB,GAAG,yBAAyB,CAAA;AAE3D,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,CAS7B,CAAA"}
|
package/dist/search.js
CHANGED
|
@@ -9,21 +9,31 @@
|
|
|
9
9
|
* query / click) remain internal. Consumers index documents through the
|
|
10
10
|
* runtime SDK; this namespace is for operator-grade introspection.
|
|
11
11
|
*/
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
}
|
|
12
|
+
import { searchEndpoints } from '@sylphx/contract';
|
|
13
|
+
import { interpolatePath, request } from './http.js';
|
|
14
|
+
export const analytics = (client, projectId, options) => {
|
|
15
|
+
const { method, path } = searchEndpoints.getAnalytics;
|
|
16
|
+
return request(client, method, interpolatePath(path, { projectId }), {
|
|
17
|
+
query: {
|
|
18
|
+
namespace: options?.namespace,
|
|
19
|
+
dateFrom: options?.dateFrom,
|
|
20
|
+
dateTo: options?.dateTo,
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
export const stats = (client, projectId, namespace) => {
|
|
25
|
+
const { method, path } = searchEndpoints.getStats;
|
|
26
|
+
return request(client, method, interpolatePath(path, { projectId }), {
|
|
27
|
+
query: { namespace },
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
export const listDocuments = (client, projectId, options) => {
|
|
31
|
+
const { method, path } = searchEndpoints.listDocuments;
|
|
32
|
+
return request(client, method, interpolatePath(path, { projectId }), {
|
|
33
|
+
query: {
|
|
34
|
+
namespace: options?.namespace,
|
|
35
|
+
limit: options?.limit !== undefined ? String(options.limit) : undefined,
|
|
36
|
+
offset: options?.offset !== undefined ? String(options.offset) : undefined,
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
};
|
package/dist/serviceTokens.d.ts
CHANGED
|
@@ -12,54 +12,18 @@
|
|
|
12
12
|
* The raw token value is returned ONLY at create() and rotate() time —
|
|
13
13
|
* the API stores a SHA-256 hash at rest (ADR-055 Rule A).
|
|
14
14
|
*/
|
|
15
|
+
import type { CreateServiceTokenInput, CreateServiceTokenResult, GetServiceTokenResult, ListServiceTokensResult, RevokeServiceTokenResult, RotateServiceTokenResult, ServiceTokenView } from '@sylphx/contract';
|
|
15
16
|
import type { Client } from './client.js';
|
|
16
|
-
export
|
|
17
|
-
readonly id: string;
|
|
18
|
-
readonly orgId: string;
|
|
19
|
-
readonly name: string;
|
|
20
|
-
readonly tokenPrefix: string | null;
|
|
21
|
-
readonly projectId: string | null;
|
|
22
|
-
readonly environmentId: string | null;
|
|
23
|
-
readonly scopes: readonly string[] | null;
|
|
24
|
-
readonly ipAllowlist: readonly string[] | null;
|
|
25
|
-
readonly createdBy: string | null;
|
|
26
|
-
readonly createdAt: string;
|
|
27
|
-
readonly expiresAt: string | null;
|
|
28
|
-
readonly lastUsedAt: string | null;
|
|
29
|
-
readonly revokedAt: string | null;
|
|
30
|
-
readonly revokedBy: string | null;
|
|
31
|
-
readonly useCount: number;
|
|
32
|
-
}
|
|
17
|
+
export type { ServiceTokenView };
|
|
33
18
|
export interface ListOptions {
|
|
34
19
|
readonly includeRevoked?: boolean;
|
|
35
20
|
}
|
|
36
|
-
export declare const list: (client: Client, orgId: string, options?: ListOptions) => Promise<
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
export interface CreateInput {
|
|
40
|
-
readonly name: string;
|
|
41
|
-
readonly scopes: readonly string[];
|
|
42
|
-
readonly projectId?: string | null;
|
|
43
|
-
readonly environmentId?: string | null;
|
|
44
|
-
readonly expiresInDays?: number | null;
|
|
45
|
-
readonly ipAllowlist?: readonly string[] | null;
|
|
46
|
-
}
|
|
47
|
-
export interface CreateResult {
|
|
48
|
-
/** Raw bearer token — shown ONCE; the server only keeps a hash. */
|
|
49
|
-
readonly token: string;
|
|
50
|
-
readonly view: ServiceTokenView;
|
|
51
|
-
}
|
|
21
|
+
export declare const list: (client: Client, orgId: string, options?: ListOptions) => Promise<ListServiceTokensResult>;
|
|
22
|
+
export type CreateInput = CreateServiceTokenInput;
|
|
23
|
+
export type CreateResult = CreateServiceTokenResult;
|
|
52
24
|
export declare const create: (client: Client, orgId: string, input: CreateInput) => Promise<CreateResult>;
|
|
53
|
-
export declare const get: (client: Client, orgId: string, tokenId: string) => Promise<
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
export declare const revoke: (client: Client, orgId: string, tokenId: string) => Promise<{
|
|
57
|
-
view: ServiceTokenView;
|
|
58
|
-
}>;
|
|
59
|
-
export interface RotateResult {
|
|
60
|
-
readonly token: string;
|
|
61
|
-
readonly oldView: ServiceTokenView;
|
|
62
|
-
readonly newView: ServiceTokenView;
|
|
63
|
-
}
|
|
25
|
+
export declare const get: (client: Client, orgId: string, tokenId: string) => Promise<GetServiceTokenResult>;
|
|
26
|
+
export declare const revoke: (client: Client, orgId: string, tokenId: string) => Promise<RevokeServiceTokenResult>;
|
|
27
|
+
export type RotateResult = RotateServiceTokenResult;
|
|
64
28
|
export declare const rotate: (client: Client, orgId: string, tokenId: string) => Promise<RotateResult>;
|
|
65
29
|
//# sourceMappingURL=serviceTokens.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serviceTokens.d.ts","sourceRoot":"","sources":["../src/serviceTokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"serviceTokens.d.ts","sourceRoot":"","sources":["../src/serviceTokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACX,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,wBAAwB,EACxB,gBAAgB,EAChB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,YAAY,EAAE,gBAAgB,EAAE,CAAA;AAEhC,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CACjC;AAED,eAAO,MAAM,IAAI,GAChB,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,UAAU,WAAW,KACnB,OAAO,CAAC,uBAAuB,CAKjC,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,uBAAuB,CAAA;AAEjD,MAAM,MAAM,YAAY,GAAG,wBAAwB,CAAA;AAEnD,eAAO,MAAM,MAAM,GAClB,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,OAAO,WAAW,KAChB,OAAO,CAAC,YAAY,CAGtB,CAAA;AAED,eAAO,MAAM,GAAG,GACf,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,SAAS,MAAM,KACb,OAAO,CAAC,qBAAqB,CAG/B,CAAA;AAED,eAAO,MAAM,MAAM,GAClB,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,SAAS,MAAM,KACb,OAAO,CAAC,wBAAwB,CAGlC,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,wBAAwB,CAAA;AAEnD,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,YAAY,CAG3F,CAAA"}
|
package/dist/serviceTokens.js
CHANGED
|
@@ -12,11 +12,27 @@
|
|
|
12
12
|
* The raw token value is returned ONLY at create() and rotate() time —
|
|
13
13
|
* the API stores a SHA-256 hash at rest (ADR-055 Rule A).
|
|
14
14
|
*/
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
import { serviceTokensEndpoints } from '@sylphx/contract';
|
|
16
|
+
import { interpolatePath, request } from './http.js';
|
|
17
|
+
export const list = (client, orgId, options) => {
|
|
18
|
+
const { method, path } = serviceTokensEndpoints.list;
|
|
19
|
+
return request(client, method, interpolatePath(path, { orgId }), {
|
|
20
|
+
query: { includeRevoked: options?.includeRevoked ? 'true' : undefined },
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
export const create = (client, orgId, input) => {
|
|
24
|
+
const { method, path } = serviceTokensEndpoints.create;
|
|
25
|
+
return request(client, method, interpolatePath(path, { orgId }), { body: input });
|
|
26
|
+
};
|
|
27
|
+
export const get = (client, orgId, tokenId) => {
|
|
28
|
+
const { method, path } = serviceTokensEndpoints.get;
|
|
29
|
+
return request(client, method, interpolatePath(path, { orgId, tokenId }));
|
|
30
|
+
};
|
|
31
|
+
export const revoke = (client, orgId, tokenId) => {
|
|
32
|
+
const { method, path } = serviceTokensEndpoints.revoke;
|
|
33
|
+
return request(client, method, interpolatePath(path, { orgId, tokenId }));
|
|
34
|
+
};
|
|
35
|
+
export const rotate = (client, orgId, tokenId) => {
|
|
36
|
+
const { method, path } = serviceTokensEndpoints.rotate;
|
|
37
|
+
return request(client, method, interpolatePath(path, { orgId, tokenId }));
|
|
38
|
+
};
|
package/dist/services.d.ts
CHANGED
|
@@ -4,6 +4,9 @@ import type { DeployResult, Service } from './types.js';
|
|
|
4
4
|
export interface OrgScopedRequestOptions {
|
|
5
5
|
readonly orgId?: string;
|
|
6
6
|
}
|
|
7
|
+
export interface ServiceDeployOptions extends OrgScopedRequestOptions {
|
|
8
|
+
readonly envId?: string;
|
|
9
|
+
}
|
|
7
10
|
export interface ServiceUpdateInput {
|
|
8
11
|
readonly githubRepo?: string | null;
|
|
9
12
|
readonly githubBranch?: string | null;
|
|
@@ -18,7 +21,7 @@ export declare const list: (client: Client, projectId: string, options?: OrgScop
|
|
|
18
21
|
export declare const get: (client: Client, projectId: string, name: string, options?: OrgScopedRequestOptions) => Promise<Service>;
|
|
19
22
|
export declare const update: (client: Client, projectId: string, name: string, input: ServiceUpdateInput, options?: OrgScopedRequestOptions) => Promise<Service>;
|
|
20
23
|
/** Deploy a specific service — resolves envType → environmentId first. */
|
|
21
|
-
export declare const deploy: (client: Client, projectId: string, name: string, envType: string, options?:
|
|
24
|
+
export declare const deploy: (client: Client, projectId: string, name: string, envType: string, options?: ServiceDeployOptions) => Promise<DeployResult>;
|
|
22
25
|
declare const _delete: (client: Client, projectId: string, name: string, options?: OrgScopedRequestOptions) => Promise<void>;
|
|
23
26
|
export { _delete as delete };
|
|
24
27
|
//# sourceMappingURL=services.d.ts.map
|
package/dist/services.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAIzC,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEvD,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,oBAAqB,SAAQ,uBAAuB;IACpE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,eAAO,MAAM,IAAI,GAChB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,UAAS,uBAA4B,KACnC,OAAO,CAAC,OAAO,EAAE,CAQnB,CAAA;AAED,eAAO,MAAM,GAAG,GACf,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,MAAM,MAAM,EACZ,UAAS,uBAA4B,KACnC,OAAO,CAAC,OAAO,CAMhB,CAAA;AAEF,eAAO,MAAM,MAAM,GAClB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,MAAM,MAAM,EACZ,OAAO,kBAAkB,EACzB,UAAS,uBAA4B,KACnC,OAAO,CAAC,OAAO,CAShB,CAAA;AAEF,0EAA0E;AAC1E,eAAO,MAAM,MAAM,GAClB,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,MAAM,MAAM,EACZ,SAAS,MAAM,EACf,UAAS,oBAAyB,KAChC,OAAO,CAAC,YAAY,CActB,CAAA;AAED,QAAA,MAAM,OAAO,GACZ,QAAQ,MAAM,EACd,WAAW,MAAM,EACjB,MAAM,MAAM,EACZ,UAAS,uBAA4B,KACnC,OAAO,CAAC,IAAI,CAMb,CAAA;AACF,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,CAAA"}
|
package/dist/services.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** Per-project services — list / get / update / deploy / delete. */
|
|
2
2
|
import { resolveId as resolveEnvId } from './environments.js';
|
|
3
|
+
import { ApiError } from './errors.js';
|
|
3
4
|
import { request } from './http.js';
|
|
4
5
|
export const list = async (client, projectId, options = {}) => {
|
|
5
6
|
const res = await request(client, 'GET', `/projects/${encodeURIComponent(projectId)}/services`, { headers: { 'x-preferred-org-id': options.orgId } });
|
|
@@ -12,9 +13,12 @@ export const update = (client, projectId, name, input, options = {}) => request(
|
|
|
12
13
|
});
|
|
13
14
|
/** Deploy a specific service — resolves envType → environmentId first. */
|
|
14
15
|
export const deploy = async (client, projectId, name, envType, options = {}) => {
|
|
15
|
-
const environmentId = await resolveEnvId(client, projectId, envType, options);
|
|
16
|
+
const environmentId = options.envId ?? (await resolveEnvId(client, projectId, envType, options));
|
|
17
|
+
if (!environmentId) {
|
|
18
|
+
throw new ApiError(404, `Environment '${envType}' not found`);
|
|
19
|
+
}
|
|
16
20
|
return request(client, 'POST', `/projects/${encodeURIComponent(projectId)}/services/${encodeURIComponent(name)}/deploy`, {
|
|
17
|
-
body:
|
|
21
|
+
body: { environmentId },
|
|
18
22
|
headers: { 'x-preferred-org-id': options.orgId },
|
|
19
23
|
});
|
|
20
24
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sylphx/management",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Sylphx Management SDK — pure-FP Promise client for the Sylphx Platform Management API. 55+ namespaces covering the full PaaS surface (ADR-089 Phase 4b 100% coverage), types derived from @sylphx/contract (Effect Schema SSOT).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -205,7 +205,7 @@
|
|
|
205
205
|
"prepublishOnly": "bun run build"
|
|
206
206
|
},
|
|
207
207
|
"dependencies": {
|
|
208
|
-
"@sylphx/contract": "0.
|
|
208
|
+
"@sylphx/contract": "0.8.0"
|
|
209
209
|
},
|
|
210
210
|
"files": [
|
|
211
211
|
"dist",
|