run402 1.40.1 → 1.40.2

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 (121) hide show
  1. package/lib/sdk.mjs +1 -1
  2. package/package.json +4 -3
  3. package/sdk/core-dist/allowance-auth.js +129 -0
  4. package/sdk/core-dist/allowance.js +25 -0
  5. package/sdk/core-dist/client.js +42 -0
  6. package/sdk/core-dist/config.js +26 -0
  7. package/sdk/core-dist/keystore.js +97 -0
  8. package/sdk/core-dist/wallet-auth.js +62 -0
  9. package/sdk/core-dist/wallet.js +25 -0
  10. package/sdk/dist/credentials.d.ts +70 -0
  11. package/sdk/dist/credentials.d.ts.map +1 -0
  12. package/sdk/dist/credentials.js +19 -0
  13. package/sdk/dist/credentials.js.map +1 -0
  14. package/sdk/dist/errors.d.ts +34 -0
  15. package/sdk/dist/errors.d.ts.map +1 -0
  16. package/sdk/dist/errors.js +46 -0
  17. package/sdk/dist/errors.js.map +1 -0
  18. package/sdk/dist/index.d.ts +68 -0
  19. package/sdk/dist/index.d.ts.map +1 -0
  20. package/sdk/dist/index.js +81 -0
  21. package/sdk/dist/index.js.map +1 -0
  22. package/sdk/dist/kernel.d.ts +47 -0
  23. package/sdk/dist/kernel.d.ts.map +1 -0
  24. package/sdk/dist/kernel.js +76 -0
  25. package/sdk/dist/kernel.js.map +1 -0
  26. package/sdk/dist/namespaces/admin.d.ts +30 -0
  27. package/sdk/dist/namespaces/admin.d.ts.map +1 -0
  28. package/sdk/dist/namespaces/admin.js +36 -0
  29. package/sdk/dist/namespaces/admin.js.map +1 -0
  30. package/sdk/dist/namespaces/ai.d.ts +57 -0
  31. package/sdk/dist/namespaces/ai.d.ts.map +1 -0
  32. package/sdk/dist/namespaces/ai.js +62 -0
  33. package/sdk/dist/namespaces/ai.js.map +1 -0
  34. package/sdk/dist/namespaces/allowance.d.ts +51 -0
  35. package/sdk/dist/namespaces/allowance.d.ts.map +1 -0
  36. package/sdk/dist/namespaces/allowance.js +116 -0
  37. package/sdk/dist/namespaces/allowance.js.map +1 -0
  38. package/sdk/dist/namespaces/apps.d.ts +158 -0
  39. package/sdk/dist/namespaces/apps.d.ts.map +1 -0
  40. package/sdk/dist/namespaces/apps.js +150 -0
  41. package/sdk/dist/namespaces/apps.js.map +1 -0
  42. package/sdk/dist/namespaces/auth.d.ts +53 -0
  43. package/sdk/dist/namespaces/auth.d.ts.map +1 -0
  44. package/sdk/dist/namespaces/auth.js +106 -0
  45. package/sdk/dist/namespaces/auth.js.map +1 -0
  46. package/sdk/dist/namespaces/billing.d.ts +64 -0
  47. package/sdk/dist/namespaces/billing.d.ts.map +1 -0
  48. package/sdk/dist/namespaces/billing.js +105 -0
  49. package/sdk/dist/namespaces/billing.js.map +1 -0
  50. package/sdk/dist/namespaces/blobs.d.ts +41 -0
  51. package/sdk/dist/namespaces/blobs.d.ts.map +1 -0
  52. package/sdk/dist/namespaces/blobs.js +202 -0
  53. package/sdk/dist/namespaces/blobs.js.map +1 -0
  54. package/sdk/dist/namespaces/blobs.types.d.ts +58 -0
  55. package/sdk/dist/namespaces/blobs.types.d.ts.map +1 -0
  56. package/sdk/dist/namespaces/blobs.types.js +9 -0
  57. package/sdk/dist/namespaces/blobs.types.js.map +1 -0
  58. package/sdk/dist/namespaces/contracts.d.ts +65 -0
  59. package/sdk/dist/namespaces/contracts.d.ts.map +1 -0
  60. package/sdk/dist/namespaces/contracts.js +163 -0
  61. package/sdk/dist/namespaces/contracts.js.map +1 -0
  62. package/sdk/dist/namespaces/domains.d.ts +57 -0
  63. package/sdk/dist/namespaces/domains.d.ts.map +1 -0
  64. package/sdk/dist/namespaces/domains.js +60 -0
  65. package/sdk/dist/namespaces/domains.js.map +1 -0
  66. package/sdk/dist/namespaces/email.d.ts +131 -0
  67. package/sdk/dist/namespaces/email.d.ts.map +1 -0
  68. package/sdk/dist/namespaces/email.js +318 -0
  69. package/sdk/dist/namespaces/email.js.map +1 -0
  70. package/sdk/dist/namespaces/functions.d.ts +43 -0
  71. package/sdk/dist/namespaces/functions.d.ts.map +1 -0
  72. package/sdk/dist/namespaces/functions.js +146 -0
  73. package/sdk/dist/namespaces/functions.js.map +1 -0
  74. package/sdk/dist/namespaces/functions.types.d.ts +96 -0
  75. package/sdk/dist/namespaces/functions.types.d.ts.map +1 -0
  76. package/sdk/dist/namespaces/functions.types.js +6 -0
  77. package/sdk/dist/namespaces/functions.types.js.map +1 -0
  78. package/sdk/dist/namespaces/projects.d.ts +97 -0
  79. package/sdk/dist/namespaces/projects.d.ts.map +1 -0
  80. package/sdk/dist/namespaces/projects.js +214 -0
  81. package/sdk/dist/namespaces/projects.js.map +1 -0
  82. package/sdk/dist/namespaces/projects.types.d.ts +112 -0
  83. package/sdk/dist/namespaces/projects.types.d.ts.map +1 -0
  84. package/sdk/dist/namespaces/projects.types.js +9 -0
  85. package/sdk/dist/namespaces/projects.types.js.map +1 -0
  86. package/sdk/dist/namespaces/secrets.d.ts +23 -0
  87. package/sdk/dist/namespaces/secrets.d.ts.map +1 -0
  88. package/sdk/dist/namespaces/secrets.js +45 -0
  89. package/sdk/dist/namespaces/secrets.js.map +1 -0
  90. package/sdk/dist/namespaces/sender-domain.d.ts +40 -0
  91. package/sdk/dist/namespaces/sender-domain.d.ts.map +1 -0
  92. package/sdk/dist/namespaces/sender-domain.js +69 -0
  93. package/sdk/dist/namespaces/sender-domain.js.map +1 -0
  94. package/sdk/dist/namespaces/service.d.ts +51 -0
  95. package/sdk/dist/namespaces/service.d.ts.map +1 -0
  96. package/sdk/dist/namespaces/service.js +25 -0
  97. package/sdk/dist/namespaces/service.js.map +1 -0
  98. package/sdk/dist/namespaces/sites.d.ts +50 -0
  99. package/sdk/dist/namespaces/sites.d.ts.map +1 -0
  100. package/sdk/dist/namespaces/sites.js +38 -0
  101. package/sdk/dist/namespaces/sites.js.map +1 -0
  102. package/sdk/dist/namespaces/subdomains.d.ts +36 -0
  103. package/sdk/dist/namespaces/subdomains.d.ts.map +1 -0
  104. package/sdk/dist/namespaces/subdomains.js +54 -0
  105. package/sdk/dist/namespaces/subdomains.js.map +1 -0
  106. package/sdk/dist/namespaces/tier.d.ts +36 -0
  107. package/sdk/dist/namespaces/tier.d.ts.map +1 -0
  108. package/sdk/dist/namespaces/tier.js +31 -0
  109. package/sdk/dist/namespaces/tier.js.map +1 -0
  110. package/sdk/dist/node/credentials.d.ts +26 -0
  111. package/sdk/dist/node/credentials.d.ts.map +1 -0
  112. package/sdk/dist/node/credentials.js +69 -0
  113. package/sdk/dist/node/credentials.js.map +1 -0
  114. package/sdk/dist/node/index.d.ts +44 -0
  115. package/sdk/dist/node/index.d.ts.map +1 -0
  116. package/sdk/dist/node/index.js +43 -0
  117. package/sdk/dist/node/index.js.map +1 -0
  118. package/sdk/dist/node/paid-fetch.d.ts +22 -0
  119. package/sdk/dist/node/paid-fetch.d.ts.map +1 -0
  120. package/sdk/dist/node/paid-fetch.js +116 -0
  121. package/sdk/dist/node/paid-fetch.js.map +1 -0
@@ -0,0 +1,116 @@
1
+ /**
2
+ * `allowance` namespace — the agent's local wallet.
3
+ *
4
+ * `status`, `create`, `export` touch the local allowance file via optional
5
+ * provider methods. Sandbox providers that don't implement those throw a
6
+ * descriptive error at runtime.
7
+ *
8
+ * `faucet` is an API call (request testnet USDC) and works in any environment.
9
+ */
10
+ export class Allowance {
11
+ client;
12
+ constructor(client) {
13
+ this.client = client;
14
+ }
15
+ /** Inspect the local allowance. Returns `{configured: false}` when absent. */
16
+ async status() {
17
+ const reader = this.client.credentials.readAllowance;
18
+ if (!reader) {
19
+ return { address: "", configured: false };
20
+ }
21
+ const data = await reader.call(this.client.credentials);
22
+ if (!data)
23
+ return { address: "", configured: false };
24
+ return {
25
+ address: data.address,
26
+ created: data.created,
27
+ funded: data.funded,
28
+ lastFaucet: data.lastFaucet,
29
+ path: this.client.credentials.getAllowancePath?.call(this.client.credentials),
30
+ configured: true,
31
+ };
32
+ }
33
+ /**
34
+ * Generate a new allowance keypair and persist it. Throws when the
35
+ * provider already holds an allowance (don't overwrite silently) or
36
+ * when the provider doesn't support local allowance management.
37
+ */
38
+ async create() {
39
+ const reader = this.client.credentials.readAllowance;
40
+ const creator = this.client.credentials.createAllowance;
41
+ const saver = this.client.credentials.saveAllowance;
42
+ if (!creator || !saver) {
43
+ throw new Error("This credential provider does not support allowance creation. Use @run402/sdk/node for local allowance management.");
44
+ }
45
+ if (reader) {
46
+ const existing = await reader.call(this.client.credentials);
47
+ if (existing) {
48
+ throw new Error(`Allowance already exists at ${this.client.credentials.getAllowancePath?.call(this.client.credentials) ?? "(local path unknown)"}. Delete it manually to regenerate.`);
49
+ }
50
+ }
51
+ const data = await creator.call(this.client.credentials);
52
+ await saver.call(this.client.credentials, data);
53
+ return {
54
+ address: data.address,
55
+ created: data.created ?? new Date().toISOString(),
56
+ path: this.client.credentials.getAllowancePath?.call(this.client.credentials),
57
+ };
58
+ }
59
+ /** Return the allowance address (safe to share). Throws if none is configured. */
60
+ async export() {
61
+ const reader = this.client.credentials.readAllowance;
62
+ if (!reader) {
63
+ throw new Error("This credential provider does not expose the local allowance.");
64
+ }
65
+ const data = await reader.call(this.client.credentials);
66
+ if (!data) {
67
+ throw new Error("No agent allowance is configured.");
68
+ }
69
+ return data.address;
70
+ }
71
+ /**
72
+ * Request testnet USDC from the Run402 faucet. When `address` is omitted,
73
+ * the SDK uses the provider's local allowance address. Updates the
74
+ * allowance's `funded` flag on success.
75
+ */
76
+ async faucet(address) {
77
+ let resolvedAddress = address;
78
+ if (!resolvedAddress) {
79
+ const reader = this.client.credentials.readAllowance;
80
+ if (!reader) {
81
+ throw new Error("No address provided and no local allowance is available.");
82
+ }
83
+ const data = await reader.call(this.client.credentials);
84
+ if (!data) {
85
+ throw new Error("No address provided and no agent allowance is configured.");
86
+ }
87
+ resolvedAddress = data.address;
88
+ }
89
+ const result = await this.client.request("/faucet/v1", {
90
+ method: "POST",
91
+ body: { address: resolvedAddress },
92
+ withAuth: false,
93
+ context: "requesting faucet funds",
94
+ });
95
+ // Best-effort update of the local allowance's funded/lastFaucet fields.
96
+ const reader = this.client.credentials.readAllowance;
97
+ const saver = this.client.credentials.saveAllowance;
98
+ if (reader && saver) {
99
+ try {
100
+ const data = await reader.call(this.client.credentials);
101
+ if (data) {
102
+ await saver.call(this.client.credentials, {
103
+ ...data,
104
+ funded: true,
105
+ lastFaucet: new Date().toISOString(),
106
+ });
107
+ }
108
+ }
109
+ catch {
110
+ // non-fatal — the on-chain transfer succeeded
111
+ }
112
+ }
113
+ return result;
114
+ }
115
+ }
116
+ //# sourceMappingURL=allowance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allowance.js","sourceRoot":"","sources":["../../src/namespaces/allowance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * `apps` namespace — bundle deploy, marketplace browse/fork, and app
3
+ * version publishing.
4
+ */
5
+ import type { Client } from "../kernel.js";
6
+ import type { RlsTemplate, RlsTableSpec } from "./projects.types.js";
7
+ import type { SiteFile } from "./sites.js";
8
+ export interface BundleRlsOptions {
9
+ template: RlsTemplate;
10
+ tables: RlsTableSpec[];
11
+ i_understand_this_is_unrestricted?: boolean;
12
+ }
13
+ export interface BundleFunctionSpec {
14
+ name: string;
15
+ code: string;
16
+ config?: {
17
+ timeout?: number;
18
+ memory?: number;
19
+ };
20
+ schedule?: string;
21
+ }
22
+ export interface BundleDeployOptions {
23
+ migrations?: string;
24
+ rls?: BundleRlsOptions;
25
+ secrets?: Array<{
26
+ key: string;
27
+ value: string;
28
+ }>;
29
+ functions?: BundleFunctionSpec[];
30
+ files?: SiteFile[];
31
+ subdomain?: string;
32
+ inherit?: boolean;
33
+ }
34
+ export interface MigrationsResult {
35
+ tables_created: string[];
36
+ columns_added: string[];
37
+ status: string;
38
+ }
39
+ export interface BundleDeployResult {
40
+ project_id: string;
41
+ migrations_result?: MigrationsResult;
42
+ site_url?: string;
43
+ deployment_id?: string;
44
+ functions?: Array<{
45
+ name: string;
46
+ url: string;
47
+ schedule?: string | null;
48
+ }>;
49
+ subdomain_url?: string;
50
+ }
51
+ export interface AppSummary {
52
+ id: string;
53
+ project_name: string;
54
+ description: string | null;
55
+ tags: string[];
56
+ fork_allowed: boolean;
57
+ fork_pricing?: Record<string, string>;
58
+ created_at: string;
59
+ }
60
+ export interface BrowseAppsResult {
61
+ apps: AppSummary[];
62
+ total: number;
63
+ }
64
+ export interface ForkAppOptions {
65
+ versionId: string;
66
+ name: string;
67
+ subdomain?: string;
68
+ }
69
+ export interface ForkAppResult {
70
+ project_id: string;
71
+ anon_key: string;
72
+ service_key: string;
73
+ schema_slot: string;
74
+ site_url?: string;
75
+ subdomain_url?: string;
76
+ functions?: Array<{
77
+ name: string;
78
+ url: string;
79
+ }>;
80
+ }
81
+ export interface PublishAppOptions {
82
+ description?: string;
83
+ tags?: string[];
84
+ visibility?: "public" | "unlisted" | "private";
85
+ fork_allowed?: boolean;
86
+ }
87
+ export interface PublishedVersion {
88
+ id: string;
89
+ project_id: string;
90
+ project_name: string;
91
+ description: string | null;
92
+ tags: string[];
93
+ visibility: string;
94
+ fork_allowed: boolean;
95
+ created_at: string;
96
+ }
97
+ export interface VersionSummary {
98
+ id: string;
99
+ description: string | null;
100
+ tags: string[];
101
+ visibility: string;
102
+ fork_allowed: boolean;
103
+ created_at: string;
104
+ }
105
+ export interface ListVersionsResult {
106
+ versions: VersionSummary[];
107
+ }
108
+ export interface UpdateVersionOptions {
109
+ description?: string;
110
+ tags?: string[];
111
+ visibility?: "public" | "unlisted" | "private";
112
+ fork_allowed?: boolean;
113
+ }
114
+ export interface AppDetails {
115
+ id: string;
116
+ project_name: string;
117
+ description: string | null;
118
+ tags: string[];
119
+ fork_allowed: boolean;
120
+ min_tier: string;
121
+ table_count: number;
122
+ function_count: number;
123
+ site_file_count: number;
124
+ required_secrets: Array<{
125
+ key: string;
126
+ description: string;
127
+ }>;
128
+ created_at: string;
129
+ }
130
+ export declare class Apps {
131
+ private readonly client;
132
+ constructor(client: Client);
133
+ /**
134
+ * Deploy to an existing project: runs migrations, applies RLS, sets
135
+ * secrets, deploys functions, deploys a static site, and claims a
136
+ * subdomain. Payment flows through x402 when the project lease needs
137
+ * renewal.
138
+ */
139
+ bundleDeploy(projectId: string, opts?: BundleDeployOptions): Promise<BundleDeployResult>;
140
+ /** Browse public forkable apps. Optional `tags` filter is OR-combined. */
141
+ browse(tags?: string[]): Promise<BrowseAppsResult>;
142
+ /**
143
+ * Fork a published app into a new project. Payment flows through x402
144
+ * when the fork has a price.
145
+ */
146
+ fork(opts: ForkAppOptions): Promise<ForkAppResult>;
147
+ /** Publish a project as a forkable app version. */
148
+ publish(projectId: string, opts?: PublishAppOptions): Promise<PublishedVersion>;
149
+ /** List all published versions of a project. */
150
+ listVersions(projectId: string): Promise<ListVersionsResult>;
151
+ /** Update metadata (description/tags/visibility/fork_allowed) of a published version. */
152
+ updateVersion(projectId: string, versionId: string, opts: UpdateVersionOptions): Promise<void>;
153
+ /** Delete a published version. */
154
+ deleteVersion(projectId: string, versionId: string): Promise<void>;
155
+ /** Inspect a published app by version id. Public — no auth. */
156
+ getApp(versionId: string): Promise<AppDetails>;
157
+ }
158
+ //# sourceMappingURL=apps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../../src/namespaces/apps.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * `apps` namespace — bundle deploy, marketplace browse/fork, and app
3
+ * version publishing.
4
+ */
5
+ import { ProjectNotFound } from "../errors.js";
6
+ export class Apps {
7
+ client;
8
+ constructor(client) {
9
+ this.client = client;
10
+ }
11
+ /**
12
+ * Deploy to an existing project: runs migrations, applies RLS, sets
13
+ * secrets, deploys functions, deploys a static site, and claims a
14
+ * subdomain. Payment flows through x402 when the project lease needs
15
+ * renewal.
16
+ */
17
+ async bundleDeploy(projectId, opts = {}) {
18
+ const project = await this.client.getProject(projectId);
19
+ if (!project)
20
+ throw new ProjectNotFound(projectId, "deploying bundle");
21
+ const body = { project_id: projectId };
22
+ if (opts.migrations !== undefined)
23
+ body.migrations = opts.migrations;
24
+ if (opts.rls !== undefined)
25
+ body.rls = opts.rls;
26
+ if (opts.secrets !== undefined)
27
+ body.secrets = opts.secrets;
28
+ if (opts.functions !== undefined)
29
+ body.functions = opts.functions;
30
+ if (opts.files !== undefined)
31
+ body.files = opts.files;
32
+ if (opts.subdomain !== undefined)
33
+ body.subdomain = opts.subdomain;
34
+ if (opts.inherit)
35
+ body.inherit = true;
36
+ return this.client.request("/deploy/v1", {
37
+ method: "POST",
38
+ body,
39
+ context: "deploying bundle",
40
+ });
41
+ }
42
+ /** Browse public forkable apps. Optional `tags` filter is OR-combined. */
43
+ async browse(tags) {
44
+ const path = tags && tags.length > 0
45
+ ? `/apps/v1?${tags.map((t) => `tag=${encodeURIComponent(t)}`).join("&")}`
46
+ : "/apps/v1";
47
+ return this.client.request(path, {
48
+ context: "browsing apps",
49
+ withAuth: false,
50
+ });
51
+ }
52
+ /**
53
+ * Fork a published app into a new project. Payment flows through x402
54
+ * when the fork has a price.
55
+ */
56
+ async fork(opts) {
57
+ const result = await this.client.request("/fork/v1", {
58
+ method: "POST",
59
+ body: {
60
+ version_id: opts.versionId,
61
+ name: opts.name,
62
+ subdomain: opts.subdomain,
63
+ },
64
+ context: "forking app",
65
+ });
66
+ // Persist the new project + make it active, if the provider supports it.
67
+ const creds = this.client.credentials;
68
+ if (creds.saveProject) {
69
+ await creds.saveProject(result.project_id, {
70
+ anon_key: result.anon_key,
71
+ service_key: result.service_key,
72
+ });
73
+ }
74
+ if (creds.setActiveProject) {
75
+ await creds.setActiveProject(result.project_id);
76
+ }
77
+ return result;
78
+ }
79
+ /** Publish a project as a forkable app version. */
80
+ async publish(projectId, opts = {}) {
81
+ const project = await this.client.getProject(projectId);
82
+ if (!project)
83
+ throw new ProjectNotFound(projectId, "publishing app");
84
+ const body = {};
85
+ if (opts.description !== undefined)
86
+ body.description = opts.description;
87
+ if (opts.tags !== undefined)
88
+ body.tags = opts.tags;
89
+ if (opts.visibility !== undefined)
90
+ body.visibility = opts.visibility;
91
+ if (opts.fork_allowed !== undefined)
92
+ body.fork_allowed = opts.fork_allowed;
93
+ return this.client.request(`/projects/v1/admin/${projectId}/publish`, {
94
+ method: "POST",
95
+ headers: { Authorization: `Bearer ${project.service_key}` },
96
+ body,
97
+ context: "publishing app",
98
+ });
99
+ }
100
+ /** List all published versions of a project. */
101
+ async listVersions(projectId) {
102
+ const project = await this.client.getProject(projectId);
103
+ if (!project)
104
+ throw new ProjectNotFound(projectId, "listing versions");
105
+ return this.client.request(`/projects/v1/admin/${projectId}/versions`, {
106
+ headers: { Authorization: `Bearer ${project.service_key}` },
107
+ context: "listing versions",
108
+ });
109
+ }
110
+ /** Update metadata (description/tags/visibility/fork_allowed) of a published version. */
111
+ async updateVersion(projectId, versionId, opts) {
112
+ const project = await this.client.getProject(projectId);
113
+ if (!project)
114
+ throw new ProjectNotFound(projectId, "updating version");
115
+ const body = {};
116
+ if (opts.description !== undefined)
117
+ body.description = opts.description;
118
+ if (opts.tags !== undefined)
119
+ body.tags = opts.tags;
120
+ if (opts.visibility !== undefined)
121
+ body.visibility = opts.visibility;
122
+ if (opts.fork_allowed !== undefined)
123
+ body.fork_allowed = opts.fork_allowed;
124
+ await this.client.request(`/projects/v1/admin/${projectId}/versions/${versionId}`, {
125
+ method: "PATCH",
126
+ headers: { Authorization: `Bearer ${project.service_key}` },
127
+ body,
128
+ context: "updating version",
129
+ });
130
+ }
131
+ /** Delete a published version. */
132
+ async deleteVersion(projectId, versionId) {
133
+ const project = await this.client.getProject(projectId);
134
+ if (!project)
135
+ throw new ProjectNotFound(projectId, "deleting version");
136
+ await this.client.request(`/projects/v1/admin/${projectId}/versions/${versionId}`, {
137
+ method: "DELETE",
138
+ headers: { Authorization: `Bearer ${project.service_key}` },
139
+ context: "deleting version",
140
+ });
141
+ }
142
+ /** Inspect a published app by version id. Public — no auth. */
143
+ async getApp(versionId) {
144
+ return this.client.request(`/apps/v1/${versionId}`, {
145
+ context: "fetching app details",
146
+ withAuth: false,
147
+ });
148
+ }
149
+ }
150
+ //# sourceMappingURL=apps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/namespaces/apps.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AA6H/C,MAAM,OAAO,IAAI;IACc;IAA7B,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAAC,SAAiB,EAAE,OAA4B,EAAE;QAClE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAEvE,MAAM,IAAI,GAA4B,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QAChE,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACrE,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS;YAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAChD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5D,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAClE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACtD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAClE,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEtC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAqB,YAAY,EAAE;YAC3D,MAAM,EAAE,MAAM;YACd,IAAI;YACJ,OAAO,EAAE,kBAAkB;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,0EAA0E;IAC1E,KAAK,CAAC,MAAM,CAAC,IAAe;QAC1B,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAClC,CAAC,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACzE,CAAC,CAAC,UAAU,CAAC;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAmB,IAAI,EAAE;YACjD,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,IAAoB;QAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAgB,UAAU,EAAE;YAClE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,UAAU,EAAE,IAAI,CAAC,SAAS;gBAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B;YACD,OAAO,EAAE,aAAa;SACvB,CAAC,CAAC;QAEH,yEAAyE;QACzE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE;gBACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC3B,MAAM,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,mDAAmD;IACnD,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,OAA0B,EAAE;QAC3D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAErE,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACxE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACnD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACrE,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;YAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAE3E,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CACxB,sBAAsB,SAAS,UAAU,EACzC;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,WAAW,EAAE,EAAE;YAC3D,IAAI;YACJ,OAAO,EAAE,gBAAgB;SAC1B,CACF,CAAC;IACJ,CAAC;IAED,gDAAgD;IAChD,KAAK,CAAC,YAAY,CAAC,SAAiB;QAClC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAEvE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CACxB,sBAAsB,SAAS,WAAW,EAC1C;YACE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,WAAW,EAAE,EAAE;YAC3D,OAAO,EAAE,kBAAkB;SAC5B,CACF,CAAC;IACJ,CAAC;IAED,yFAAyF;IACzF,KAAK,CAAC,aAAa,CACjB,SAAiB,EACjB,SAAiB,EACjB,IAA0B;QAE1B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAEvE,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;YAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACxE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACnD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACrE,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;YAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAE3E,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACvB,sBAAsB,SAAS,aAAa,SAAS,EAAE,EACvD;YACE,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,WAAW,EAAE,EAAE;YAC3D,IAAI;YACJ,OAAO,EAAE,kBAAkB;SAC5B,CACF,CAAC;IACJ,CAAC;IAED,kCAAkC;IAClC,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,SAAiB;QACtD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,eAAe,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAEvE,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CACvB,sBAAsB,SAAS,aAAa,SAAS,EAAE,EACvD;YACE,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,WAAW,EAAE,EAAE;YAC3D,OAAO,EAAE,kBAAkB;SAC5B,CACF,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAa,YAAY,SAAS,EAAE,EAAE;YAC9D,OAAO,EAAE,sBAAsB;YAC/B,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * `auth` namespace — project-scoped user authentication: magic links, password
3
+ * set/change, auth settings, and admin role promotion/demotion.
4
+ *
5
+ * Magic link + password ops use the project's anon key (they represent
6
+ * end-user flows). Settings + promote/demote use the service key.
7
+ */
8
+ import type { Client } from "../kernel.js";
9
+ export interface MagicLinkOptions {
10
+ email: string;
11
+ redirectUrl: string;
12
+ }
13
+ export interface MagicLinkUser {
14
+ id: string;
15
+ email: string;
16
+ }
17
+ export interface MagicLinkVerifyResult {
18
+ access_token: string;
19
+ refresh_token: string;
20
+ token_type: string;
21
+ expires_in: number;
22
+ user: MagicLinkUser;
23
+ }
24
+ export interface SetPasswordOptions {
25
+ accessToken: string;
26
+ newPassword: string;
27
+ /** Required for password change; omit for reset (via magic link) or initial set. */
28
+ currentPassword?: string;
29
+ }
30
+ export interface AuthSettings {
31
+ allow_password_set: boolean;
32
+ }
33
+ export declare class Auth {
34
+ private readonly client;
35
+ constructor(client: Client);
36
+ /** Send a passwordless login email (magic link). 15-minute token. */
37
+ requestMagicLink(projectId: string, opts: MagicLinkOptions): Promise<void>;
38
+ /** Exchange a magic-link token for access + refresh tokens. */
39
+ verifyMagicLink(projectId: string, token: string): Promise<MagicLinkVerifyResult>;
40
+ /**
41
+ * Set / change / reset the authenticated user's password. The caller's
42
+ * `accessToken` (from `verifyMagicLink` or a prior login) is used as the
43
+ * Bearer credential.
44
+ */
45
+ setUserPassword(projectId: string, opts: SetPasswordOptions): Promise<void>;
46
+ /** Update project-level auth settings. Requires service key. */
47
+ settings(projectId: string, settings: AuthSettings): Promise<void>;
48
+ /** Promote a user (by email) to `project_admin`. Requires service key. */
49
+ promote(projectId: string, email: string): Promise<void>;
50
+ /** Demote a user (by email) from `project_admin` back to the default role. */
51
+ demote(projectId: string, email: string): Promise<void>;
52
+ }
53
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/namespaces/auth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG3C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,qBAAa,IAAI;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAE3C,qEAAqE;IAC/D,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAehF,+DAA+D;IACzD,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkBvF;;;;OAIG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBjF,gEAAgE;IAC1D,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAexE,0EAA0E;IACpE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe9D,8EAA8E;IACxE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAc9D"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * `auth` namespace — project-scoped user authentication: magic links, password
3
+ * set/change, auth settings, and admin role promotion/demotion.
4
+ *
5
+ * Magic link + password ops use the project's anon key (they represent
6
+ * end-user flows). Settings + promote/demote use the service key.
7
+ */
8
+ import { ProjectNotFound } from "../errors.js";
9
+ export class Auth {
10
+ client;
11
+ constructor(client) {
12
+ this.client = client;
13
+ }
14
+ /** Send a passwordless login email (magic link). 15-minute token. */
15
+ async requestMagicLink(projectId, opts) {
16
+ const project = await this.client.getProject(projectId);
17
+ if (!project)
18
+ throw new ProjectNotFound(projectId, "requesting magic link");
19
+ await this.client.request("/auth/v1/magic-link", {
20
+ method: "POST",
21
+ headers: {
22
+ apikey: project.anon_key,
23
+ Authorization: `Bearer ${project.anon_key}`,
24
+ },
25
+ body: { email: opts.email, redirect_url: opts.redirectUrl },
26
+ context: "requesting magic link",
27
+ });
28
+ }
29
+ /** Exchange a magic-link token for access + refresh tokens. */
30
+ async verifyMagicLink(projectId, token) {
31
+ const project = await this.client.getProject(projectId);
32
+ if (!project)
33
+ throw new ProjectNotFound(projectId, "verifying magic link");
34
+ return this.client.request("/auth/v1/token?grant_type=magic_link", {
35
+ method: "POST",
36
+ headers: {
37
+ apikey: project.anon_key,
38
+ Authorization: `Bearer ${project.anon_key}`,
39
+ },
40
+ body: { token },
41
+ context: "verifying magic link",
42
+ });
43
+ }
44
+ /**
45
+ * Set / change / reset the authenticated user's password. The caller's
46
+ * `accessToken` (from `verifyMagicLink` or a prior login) is used as the
47
+ * Bearer credential.
48
+ */
49
+ async setUserPassword(projectId, opts) {
50
+ const project = await this.client.getProject(projectId);
51
+ if (!project)
52
+ throw new ProjectNotFound(projectId, "setting user password");
53
+ const body = { new_password: opts.newPassword };
54
+ if (opts.currentPassword)
55
+ body.current_password = opts.currentPassword;
56
+ await this.client.request("/auth/v1/user/password", {
57
+ method: "PUT",
58
+ headers: {
59
+ apikey: project.anon_key,
60
+ Authorization: `Bearer ${opts.accessToken}`,
61
+ },
62
+ body,
63
+ context: "setting user password",
64
+ });
65
+ }
66
+ /** Update project-level auth settings. Requires service key. */
67
+ async settings(projectId, settings) {
68
+ const project = await this.client.getProject(projectId);
69
+ if (!project)
70
+ throw new ProjectNotFound(projectId, "updating auth settings");
71
+ await this.client.request("/auth/v1/settings", {
72
+ method: "PATCH",
73
+ headers: {
74
+ apikey: project.anon_key,
75
+ Authorization: `Bearer ${project.service_key}`,
76
+ },
77
+ body: { allow_password_set: settings.allow_password_set },
78
+ context: "updating auth settings",
79
+ });
80
+ }
81
+ /** Promote a user (by email) to `project_admin`. Requires service key. */
82
+ async promote(projectId, email) {
83
+ const project = await this.client.getProject(projectId);
84
+ if (!project)
85
+ throw new ProjectNotFound(projectId, "promoting user");
86
+ await this.client.request(`/projects/v1/admin/${projectId}/promote-user`, {
87
+ method: "POST",
88
+ headers: { Authorization: `Bearer ${project.service_key}` },
89
+ body: { email },
90
+ context: "promoting user",
91
+ });
92
+ }
93
+ /** Demote a user (by email) from `project_admin` back to the default role. */
94
+ async demote(projectId, email) {
95
+ const project = await this.client.getProject(projectId);
96
+ if (!project)
97
+ throw new ProjectNotFound(projectId, "demoting user");
98
+ await this.client.request(`/projects/v1/admin/${projectId}/demote-user`, {
99
+ method: "POST",
100
+ headers: { Authorization: `Bearer ${project.service_key}` },
101
+ body: { email },
102
+ context: "demoting user",
103
+ });
104
+ }
105
+ }
106
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/namespaces/auth.ts"],"names":[],"mappings":"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"}