@mesadev/sdk 0.42.1 → 0.44.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 (54) hide show
  1. package/dist/api/access-token.d.ts +57 -24
  2. package/dist/api/access-token.d.ts.map +1 -1
  3. package/dist/api/access-token.js +137 -19
  4. package/dist/api/access-token.js.map +1 -1
  5. package/dist/api/client.d.ts +3 -5
  6. package/dist/api/client.d.ts.map +1 -1
  7. package/dist/api/client.js +4 -19
  8. package/dist/api/client.js.map +1 -1
  9. package/dist/api/credentials.d.ts +4 -0
  10. package/dist/api/credentials.d.ts.map +1 -0
  11. package/dist/api/credentials.js +8 -0
  12. package/dist/api/credentials.js.map +1 -0
  13. package/dist/api/index.d.ts +1 -1
  14. package/dist/api/index.d.ts.map +1 -1
  15. package/dist/api/index.js.map +1 -1
  16. package/dist/api/resources.d.ts +61 -29
  17. package/dist/api/resources.d.ts.map +1 -1
  18. package/dist/api/resources.js +47 -14
  19. package/dist/api/resources.js.map +1 -1
  20. package/dist/api/signing-key.d.ts +15 -0
  21. package/dist/api/signing-key.d.ts.map +1 -0
  22. package/dist/api/signing-key.js +38 -0
  23. package/dist/api/signing-key.js.map +1 -0
  24. package/dist/fs/index.d.ts +2 -1
  25. package/dist/fs/index.d.ts.map +1 -1
  26. package/dist/fs/index.js +1 -0
  27. package/dist/fs/index.js.map +1 -1
  28. package/dist/fs/layout.d.ts +87 -0
  29. package/dist/fs/layout.d.ts.map +1 -0
  30. package/dist/fs/layout.js +78 -0
  31. package/dist/fs/layout.js.map +1 -0
  32. package/dist/fs/mesa-file-system.d.ts +41 -2
  33. package/dist/fs/mesa-file-system.d.ts.map +1 -1
  34. package/dist/fs/mesa-file-system.js +23 -5
  35. package/dist/fs/mesa-file-system.js.map +1 -1
  36. package/dist/fs/native-loader.d.ts +8 -1
  37. package/dist/fs/native-loader.d.ts.map +1 -1
  38. package/dist/fs/native-loader.js +26 -4
  39. package/dist/fs/native-loader.js.map +1 -1
  40. package/dist/index.d.ts +3 -3
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +1 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/lib/errors.d.ts +1 -1
  45. package/dist/lib/errors.d.ts.map +1 -1
  46. package/dist/lib/errors.js +5 -2
  47. package/dist/lib/errors.js.map +1 -1
  48. package/dist/mesa.d.ts +163 -23
  49. package/dist/mesa.d.ts.map +1 -1
  50. package/dist/mesa.js +302 -45
  51. package/dist/mesa.js.map +1 -1
  52. package/dist/version.d.ts +1 -1
  53. package/dist/version.js +1 -1
  54. package/package.json +5 -3
package/dist/mesa.d.ts CHANGED
@@ -1,13 +1,70 @@
1
1
  import type { WhoamiResponse } from '@mesadev/rest';
2
- import { type ApiResources } from './api/resources.js';
2
+ import { z } from 'zod';
3
+ import { type ApiResources, type FixedTokenBookmarksMergeInput, type FixedTokenChangesCreateInput, type FixedTokenChangesPatchInput, type PrivateKeyBookmarksMergeInput, type PrivateKeyChangesCreateInput, type PrivateKeyChangesPatchInput, type TokensCreateLegacyInput, type TokensCreatePrivateKeyInput, type TokensCreateResponse } from './api/resources.js';
4
+ import { type Layout, type LayoutSpec } from './fs/layout.js';
3
5
  import { MesaFileSystem, type RepoConfig, type TelemetryConfig } from './fs/mesa-file-system.js';
6
+ declare const authSchema: z.ZodUnion<readonly [z.ZodObject<{
7
+ privateKey: z.ZodString;
8
+ }, z.core.$strict>, z.ZodObject<{
9
+ accessToken: z.ZodString;
10
+ }, z.core.$strict>]>;
11
+ export type MesaAuth = z.infer<typeof authSchema>;
12
+ type PrivateKeyAuthors = NonNullable<TokensCreatePrivateKeyInput['authors']>;
13
+ type PrivateKeyMesaOptions = {
14
+ privateKey: string;
15
+ } | {
16
+ auth: {
17
+ privateKey: string;
18
+ };
19
+ };
20
+ type AccessTokenMesaOptions = {
21
+ auth: {
22
+ accessToken: string;
23
+ };
24
+ };
25
+ type ApiKeyMesaOptions = {
26
+ apiKey: string;
27
+ };
28
+ type CredentialSpecific<TOptions extends MesaOptions, TPrivateKey, TAccessToken, TApiKey, TDynamic> = [
29
+ TOptions
30
+ ] extends [PrivateKeyMesaOptions] ? TPrivateKey : [TOptions] extends [AccessTokenMesaOptions] ? TAccessToken : [TOptions] extends [ApiKeyMesaOptions] ? TApiKey : TDynamic;
31
+ type PrivateKeyTokens = {
32
+ create: (input: TokensCreatePrivateKeyInput) => Promise<TokensCreateResponse>;
33
+ };
34
+ type ApiKeyTokens = {
35
+ create: (input?: TokensCreateLegacyInput) => Promise<TokensCreateResponse>;
36
+ };
37
+ type MesaTokens<TOptions extends MesaOptions> = CredentialSpecific<TOptions, PrivateKeyTokens, Omit<ApiResources['tokens'], 'create'>, ApiKeyTokens, ApiResources['tokens']>;
38
+ type PrivateKeyBookmarks = Omit<ApiResources['bookmarks'], 'merge'> & {
39
+ merge: (input: PrivateKeyBookmarksMergeInput) => ReturnType<ApiResources['bookmarks']['merge']>;
40
+ };
41
+ type FixedTokenBookmarks = Omit<ApiResources['bookmarks'], 'merge'> & {
42
+ merge: (input: FixedTokenBookmarksMergeInput) => ReturnType<ApiResources['bookmarks']['merge']>;
43
+ };
44
+ type DynamicBookmarks = Omit<ApiResources['bookmarks'], 'merge'> & {
45
+ merge: ApiResources['bookmarks']['merge'] & PrivateKeyBookmarks['merge'];
46
+ };
47
+ type MesaBookmarks<TOptions extends MesaOptions> = CredentialSpecific<TOptions, PrivateKeyBookmarks, FixedTokenBookmarks, ApiResources['bookmarks'], DynamicBookmarks>;
48
+ type PrivateKeyChanges = Omit<ApiResources['changes'], 'create' | 'patch'> & {
49
+ create: (input: PrivateKeyChangesCreateInput) => ReturnType<ApiResources['changes']['create']>;
50
+ patch: (input: PrivateKeyChangesPatchInput) => ReturnType<ApiResources['changes']['patch']>;
51
+ };
52
+ type FixedTokenChanges = Omit<ApiResources['changes'], 'create' | 'patch'> & {
53
+ create: (input: FixedTokenChangesCreateInput) => ReturnType<ApiResources['changes']['create']>;
54
+ patch: (input: FixedTokenChangesPatchInput) => ReturnType<ApiResources['changes']['patch']>;
55
+ };
56
+ type DynamicChanges = Omit<ApiResources['changes'], 'create' | 'patch'> & {
57
+ create: ApiResources['changes']['create'] & PrivateKeyChanges['create'];
58
+ patch: ApiResources['changes']['patch'] & PrivateKeyChanges['patch'];
59
+ };
60
+ type MesaChanges<TOptions extends MesaOptions> = CredentialSpecific<TOptions, PrivateKeyChanges, FixedTokenChanges, ApiResources['changes'], DynamicChanges>;
4
61
  export interface MesaOptions {
5
- /**
6
- * Long-lived API key (`mesa_...`). The client signs short-lived access tokens
7
- * locally (no network round-trip) for filesystem mounts and requests. Required
8
- * unless `MESA_API_KEY` is set in the environment.
9
- */
62
+ /** Long-lived API key (`mesa_...`) used directly for requests and to sign short-lived access tokens locally. */
10
63
  apiKey?: string;
64
+ /** Organization-root Ed25519 private key used to sign REST request JWTs and `tokens.create()` locally. */
65
+ privateKey?: string;
66
+ /** Grouped private-key or signing-key access-token authentication. */
67
+ auth?: MesaAuth;
11
68
  apiUrl?: string;
12
69
  vcsUrl?: string;
13
70
  org?: string;
@@ -15,8 +72,7 @@ export interface MesaOptions {
15
72
  userAgent?: string;
16
73
  webhookSecret?: string;
17
74
  }
18
- export interface FsMountOptions {
19
- repos: RepoConfig[];
75
+ interface FsMountBaseOptions {
20
76
  cache?: {
21
77
  diskCache?: {
22
78
  path: string;
@@ -25,31 +81,106 @@ export interface FsMountOptions {
25
81
  };
26
82
  telemetry?: TelemetryConfig;
27
83
  /**
28
- * Lifetime of the mount, in seconds. The mount mints a single access token
29
- * with this TTL and uses it for its whole lifetime; there is no refresh, so
30
- * once the token expires the mount fails closed with auth errors. Capped at
31
- * 24h (86400) by the signer. Defaults to {@link ACCESS_TOKEN_DEFAULT_TTL_SECONDS}.
84
+ * Lifetime of the mount token, in seconds. API-key clients default to one
85
+ * hour and allow up to 24 hours. Private-key clients default to 15 minutes
86
+ * and allow up to four hours. There is no refresh; once the token expires,
87
+ * the mount fails closed.
32
88
  */
33
89
  ttl?: number;
34
90
  }
35
- export declare class Mesa {
36
- /** The API key this client was constructed with. */
37
- readonly apiKey: string;
91
+ /**
92
+ * Canonical mount profile: present exactly the listed repositories at their
93
+ * `/org/repo` paths — no custom namespace, no whole-org enumeration. Tokens
94
+ * are name-scoped and signed fully offline (no resolution round-trips
95
+ * before the mount), and per-repo `readOnly` is enforced by the daemon.
96
+ * Layouts mount through a definition instead: `mesa.fs({ layout }).mount()`.
97
+ */
98
+ export interface FsMountReposOptions extends FsMountBaseOptions {
99
+ /** Repos to mount at their canonical `/org/repo` paths. */
100
+ repos: RepoConfig[];
101
+ layout?: never;
102
+ }
103
+ /**
104
+ * A layout definition bundle produced by calling `mesa.fs({ layout, ttl })`:
105
+ * the prepared layout plus its scoped operations. The definition is the only
106
+ * way to mount a layout or mint its token; its `ttl` is the lifetime of
107
+ * every token minted from it, whether by `token()` or under the hood by
108
+ * `mount()`.
109
+ */
110
+ export interface FsLayoutDefinition {
111
+ /** The prepared layout, built from the raw path map the definition was given. */
112
+ layout(): Layout;
113
+ /**
114
+ * Mount this layout as the complete namespace, accepting the non-token
115
+ * mount options (`cache`, `telemetry`). The mount's token lifetime is the
116
+ * definition's `ttl`.
117
+ */
118
+ mount(options?: Omit<FsMountReposOptions, 'repos' | 'layout' | 'ttl'>): Promise<MesaFileSystem>;
119
+ /**
120
+ * Mint the layout-scoped, least-privilege access token: repositories
121
+ * collected from every declaration and scoped by name, `['read']` when
122
+ * every mode is `'ro'`, `['read', 'write']` otherwise, with the
123
+ * definition's `ttl`.
124
+ */
125
+ token(): Promise<TokensCreateResponse>;
126
+ }
127
+ type AccessTokenFsLayoutDefinition = Omit<FsLayoutDefinition, 'token'>;
128
+ type PrivateKeyFsMountReposOptions = FsMountReposOptions & {
129
+ authors: PrivateKeyAuthors;
130
+ };
131
+ type RuntimeFsMountReposOptions = FsMountReposOptions & {
132
+ authors?: PrivateKeyAuthors;
133
+ };
134
+ type PrivateKeyFsLayoutOptions = {
135
+ layout: LayoutSpec;
136
+ ttl?: number;
137
+ authors: PrivateKeyAuthors;
138
+ };
139
+ type RuntimeFsLayoutOptions = {
140
+ layout: LayoutSpec;
141
+ ttl?: number;
142
+ authors?: PrivateKeyAuthors;
143
+ };
144
+ type AccessTokenFsLayoutOptions = {
145
+ layout: LayoutSpec;
146
+ authors?: never;
147
+ ttl?: never;
148
+ };
149
+ type MesaFs<TOptions extends MesaOptions> = CredentialSpecific<TOptions, {
150
+ (options: PrivateKeyFsLayoutOptions): FsLayoutDefinition;
151
+ mount: (options: PrivateKeyFsMountReposOptions) => Promise<MesaFileSystem>;
152
+ }, {
153
+ (options: AccessTokenFsLayoutOptions): AccessTokenFsLayoutDefinition;
154
+ mount: (options: Omit<FsMountReposOptions, 'ttl'>) => Promise<MesaFileSystem>;
155
+ }, {
156
+ (options: {
157
+ layout: LayoutSpec;
158
+ ttl?: number;
159
+ authors?: never;
160
+ }): FsLayoutDefinition;
161
+ mount: (options: FsMountReposOptions & {
162
+ authors?: never;
163
+ }) => Promise<MesaFileSystem>;
164
+ }, {
165
+ (options: RuntimeFsLayoutOptions): FsLayoutDefinition;
166
+ mount: (options: RuntimeFsMountReposOptions) => Promise<MesaFileSystem>;
167
+ }>;
168
+ export declare class Mesa<const TOptions extends MesaOptions = MesaOptions> {
169
+ /** The API key this client was constructed with, if it is an API-key client. */
170
+ readonly apiKey: string | undefined;
38
171
  readonly apiUrl: string;
39
172
  readonly vcsUrl: string;
40
173
  readonly org: ApiResources['org'];
41
- readonly tokens: ApiResources['tokens'];
174
+ readonly tokens: MesaTokens<TOptions>;
42
175
  readonly apiKeys: ApiResources['apiKeys'];
43
176
  readonly repos: ApiResources['repos'];
44
177
  readonly content: ApiResources['content'];
45
- readonly bookmarks: ApiResources['bookmarks'];
46
- readonly changes: ApiResources['changes'];
178
+ readonly bookmarks: MesaBookmarks<TOptions>;
179
+ readonly changes: MesaChanges<TOptions>;
47
180
  readonly diffs: ApiResources['diffs'];
48
181
  readonly webhookTargets: ApiResources['webhookTargets'];
49
182
  readonly webhooks: ApiResources['webhooks'];
50
- readonly fs: {
51
- mount: (options: FsMountOptions) => Promise<MesaFileSystem>;
52
- };
183
+ readonly fs: MesaFs<TOptions>;
53
184
  private readonly credential;
54
185
  private readonly restClient;
55
186
  private readonly orgResolutionPromise;
@@ -58,8 +189,16 @@ export declare class Mesa {
58
189
  private cachedWhoAmI;
59
190
  private cachedKeyId;
60
191
  private keyIdResolutionPromise;
61
- constructor(options?: MesaOptions);
192
+ constructor(options?: TOptions);
62
193
  private createFs;
194
+ /**
195
+ * Derive the least-privilege token request for a layout: its repositories
196
+ * collected from every declaration and scoped by name (signed offline, no
197
+ * repository lookup), plus the narrowest scopes the declared modes allow.
198
+ * Shared by the definition's `mount()` and `token()` so the derivation
199
+ * exists exactly once.
200
+ */
201
+ private deriveLayoutTokenRequest;
63
202
  resolveOrg(org?: string): Promise<string>;
64
203
  whoami(): Promise<WhoamiResponse>;
65
204
  private fetchWhoAmI;
@@ -70,8 +209,9 @@ export declare class Mesa {
70
209
  * of the client.
71
210
  */
72
211
  private resolveKeyId;
73
- /** Sign an access token locally from the raw API key this client holds. */
212
+ /** Sign an access token locally from the credential this client holds. */
74
213
  private signToken;
75
214
  private resolveOrgFromWhoAmI;
76
215
  }
216
+ export {};
77
217
  //# sourceMappingURL=mesa.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mesa.d.ts","sourceRoot":"","sources":["../src/mesa.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,EAEd,KAAK,UAAU,EACf,KAAK,eAAe,EACrB,MAAM,0BAA0B,CAAC;AAmDlC,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE;QACN,SAAS,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KACrD,CAAC;IACF,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,IAAI;IACf,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC;IACxD,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,EAAE;QACX,KAAK,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;KAC7D,CAAC;IAEF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAkB;IACvD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAiC;IACzE,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,sBAAsB,CAAgC;gBAElD,OAAO,GAAE,WAAgB;IAuErC,OAAO,CAAC,QAAQ;IAaV,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYzC,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;YAazB,WAAW;IAUzB;;;;;OAKG;YACW,YAAY;IAyB1B,2EAA2E;YAC7D,SAAS;YAkBT,oBAAoB;CAWnC"}
1
+ {"version":3,"file":"mesa.d.ts","sourceRoot":"","sources":["../src/mesa.ts"],"names":[],"mappings":"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"}