@sylphx/management 0.4.2 → 0.5.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 (49) hide show
  1. package/CHANGELOG.md +31 -2
  2. package/README.md +6 -6
  3. package/dist/auth.d.ts +7 -18
  4. package/dist/auth.d.ts.map +1 -1
  5. package/dist/auth.js +1 -2
  6. package/dist/authSettings.d.ts +7 -60
  7. package/dist/authSettings.d.ts.map +1 -1
  8. package/dist/authSettings.js +11 -19
  9. package/dist/backups.d.ts +7 -24
  10. package/dist/backups.d.ts.map +1 -1
  11. package/dist/backups.js +21 -7
  12. package/dist/client.d.ts +5 -2
  13. package/dist/client.d.ts.map +1 -1
  14. package/dist/client.js +3 -2
  15. package/dist/domains.d.ts +1 -1
  16. package/dist/domains.d.ts.map +1 -1
  17. package/dist/domains.js +1 -1
  18. package/dist/email.d.ts +22 -29
  19. package/dist/email.d.ts.map +1 -1
  20. package/dist/email.js +52 -12
  21. package/dist/environments.d.ts.map +1 -1
  22. package/dist/environments.js +4 -1
  23. package/dist/http.d.ts.map +1 -1
  24. package/dist/http.js +6 -3
  25. package/dist/newsletter.d.ts +32 -257
  26. package/dist/newsletter.d.ts.map +1 -1
  27. package/dist/newsletter.js +135 -95
  28. package/dist/oidc.d.ts +6 -27
  29. package/dist/oidc.d.ts.map +1 -1
  30. package/dist/oidc.js +16 -6
  31. package/dist/organizations.d.ts +3 -1
  32. package/dist/organizations.d.ts.map +1 -1
  33. package/dist/organizations.js +8 -0
  34. package/dist/privacy.d.ts +3 -98
  35. package/dist/privacy.d.ts.map +1 -1
  36. package/dist/privacy.js +57 -25
  37. package/dist/refresh.d.ts +11 -12
  38. package/dist/refresh.d.ts.map +1 -1
  39. package/dist/refresh.js +10 -2
  40. package/dist/runners.d.ts +7 -58
  41. package/dist/runners.d.ts.map +1 -1
  42. package/dist/runners.js +18 -17
  43. package/dist/search.d.ts +7 -40
  44. package/dist/search.d.ts.map +1 -1
  45. package/dist/search.js +28 -18
  46. package/dist/serviceTokens.d.ts +8 -44
  47. package/dist/serviceTokens.d.ts.map +1 -1
  48. package/dist/serviceTokens.js +24 -8
  49. 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 interface RefreshResult {
21
- readonly accessToken: string;
22
- readonly refreshToken: string;
23
- readonly expiresIn: number;
24
- readonly tokenType: 'Bearer';
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
- success: boolean;
43
- }>;
41
+ export declare const revoke: (client: Client, refreshToken: string) => Promise<SignOutResult>;
42
+ export {};
44
43
  //# sourceMappingURL=refresh.d.ts.map
@@ -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,WAAW,aAAa;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAA;CAC5B;AAED;;;;GAIG;AACH,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC,aAAa,CACd,CAAA;AAErE;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,QAAQ,MAAM,EAAE,cAAc,MAAM,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CACvB,CAAA;AAEpE,yDAAyD;AACzD,eAAO,MAAM,MAAM,WAJa,MAAM,gBAAgB,MAAM,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAI9D,CAAA"}
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, 'POST', '/auth/refresh', { body: { refreshToken } });
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, 'POST', '/auth/logout', { body: { refreshToken } });
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 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
- }>;
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
@@ -1 +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"}
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
- * 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)}`);
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 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
- }
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 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
- }
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 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
- }
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;
@@ -1 +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"}
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 { 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
- });
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
+ };
@@ -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 interface ServiceTokenView {
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
- tokens: readonly ServiceTokenView[];
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
- view: ServiceTokenView;
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,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAA;IACzC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAA;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CACzB;AAED,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;IAAE,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAAE,CAG/C,CAAA;AAEH,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAA;CAC/C;AAED,MAAM,WAAW,YAAY;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAA;CAC/B;AAED,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,EAAE,OAAO,WAAW,KAAG,OAAO,CAAC,YAAY,CACD,CAAA;AAE9F,eAAO,MAAM,GAAG,GACf,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,SAAS,MAAM,KACb,OAAO,CAAC;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAKnC,CAAA;AAEF,eAAO,MAAM,MAAM,GAClB,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,SAAS,MAAM,KACb,OAAO,CAAC;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAKnC,CAAA;AAEF,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAA;IAClC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAA;CAClC;AAED,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM,EAAE,OAAO,MAAM,EAAE,SAAS,MAAM,KAAG,OAAO,CAAC,YAAY,CAK1F,CAAA"}
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"}
@@ -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 { request } from './http.js';
16
- export const list = (client, orgId, options) => request(client, 'GET', `/orgs/${encodeURIComponent(orgId)}/service-tokens`, {
17
- query: { includeRevoked: options?.includeRevoked ? 'true' : undefined },
18
- });
19
- export const create = (client, orgId, input) => request(client, 'POST', `/orgs/${encodeURIComponent(orgId)}/service-tokens`, { body: input });
20
- export const get = (client, orgId, tokenId) => request(client, 'GET', `/orgs/${encodeURIComponent(orgId)}/service-tokens/${encodeURIComponent(tokenId)}`);
21
- export const revoke = (client, orgId, tokenId) => request(client, 'DELETE', `/orgs/${encodeURIComponent(orgId)}/service-tokens/${encodeURIComponent(tokenId)}`);
22
- export const rotate = (client, orgId, tokenId) => request(client, 'POST', `/orgs/${encodeURIComponent(orgId)}/service-tokens/${encodeURIComponent(tokenId)}/rotate`);
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sylphx/management",
3
- "version": "0.4.2",
3
+ "version": "0.5.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.6.0"
208
+ "@sylphx/contract": "0.7.0"
209
209
  },
210
210
  "files": [
211
211
  "dist",