@run402/sdk 4.87.0 → 4.88.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/dist/credentials.d.ts +8 -0
- package/dist/credentials.d.ts.map +1 -1
- package/dist/namespaces/ai.d.ts +18 -4
- package/dist/namespaces/ai.d.ts.map +1 -1
- package/dist/namespaces/ai.js +129 -9
- package/dist/namespaces/ai.js.map +1 -1
- package/dist/namespaces/deploy.d.ts.map +1 -1
- package/dist/namespaces/deploy.js +45 -5
- package/dist/namespaces/deploy.js.map +1 -1
- package/dist/namespaces/deploy.types.d.ts +34 -0
- package/dist/namespaces/deploy.types.d.ts.map +1 -1
- package/dist/namespaces/deploy.types.js.map +1 -1
- package/dist/node/credentials.d.ts +8 -0
- package/dist/node/credentials.d.ts.map +1 -1
- package/dist/node/credentials.js +13 -1
- package/dist/node/credentials.js.map +1 -1
- package/dist/node/deploy-manifest.d.ts +9 -1
- package/dist/node/deploy-manifest.d.ts.map +1 -1
- package/dist/node/deploy-manifest.js +26 -4
- package/dist/node/deploy-manifest.js.map +1 -1
- package/dist/type-contract.d.ts.map +1 -1
- package/dist/type-contract.js +5 -0
- package/dist/type-contract.js.map +1 -1
- package/package.json +1 -1
package/dist/credentials.d.ts
CHANGED
|
@@ -125,6 +125,14 @@ export interface CredentialsProvider {
|
|
|
125
125
|
setActiveProject?(id: string): Promise<void>;
|
|
126
126
|
/** Get the active/default project id from local state. Optional. */
|
|
127
127
|
getActiveProject?(): Promise<string | null>;
|
|
128
|
+
/**
|
|
129
|
+
* Get the active/current organization id from local state (the CLI's
|
|
130
|
+
* `run402 org use`). Optional. Read by the SDK only to disambiguate a
|
|
131
|
+
* gateway `ORGANIZATION_SELECTION_REQUIRED` answer (the MPP Lightning
|
|
132
|
+
* rail's paying organization when the principal belongs to several); it
|
|
133
|
+
* is never sent unprompted and never an authorization input.
|
|
134
|
+
*/
|
|
135
|
+
getActiveOrg?(): Promise<string | null>;
|
|
128
136
|
/** Read the local allowance (wallet). Optional — sandbox providers may omit. */
|
|
129
137
|
readAllowance?(): Promise<AllowanceData | null>;
|
|
130
138
|
/** Persist the local allowance. Optional. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
|
package/dist/namespaces/ai.d.ts
CHANGED
|
@@ -34,11 +34,23 @@ export interface GenerateImageOptions {
|
|
|
34
34
|
aspect?: ImageAspect;
|
|
35
35
|
/**
|
|
36
36
|
* The paying organization. Needed only on the MPP Lightning rail when the
|
|
37
|
-
* calling principal belongs to more than one organization
|
|
38
|
-
*
|
|
37
|
+
* calling principal belongs to more than one organization; x402 ignores it.
|
|
38
|
+
*
|
|
39
|
+
* When omitted and the gateway answers `ORGANIZATION_SELECTION_REQUIRED`,
|
|
40
|
+
* the SDK retries ONCE with the one candidate from
|
|
41
|
+
* `details.organization_ids` that matches a local context — the
|
|
42
|
+
* provider's active organization (`run402 org use`) or the active
|
|
43
|
+
* project's cached owning org, else any locally stored project's owning
|
|
44
|
+
* org. Zero or several matches surface the error with the candidate ids
|
|
45
|
+
* and a next action naming `--org` / `orgId`. Nothing is ever inferred
|
|
46
|
+
* from membership count alone.
|
|
39
47
|
*/
|
|
40
48
|
orgId?: string;
|
|
41
49
|
}
|
|
50
|
+
/** The gateway's answer when a multi-org principal names no paying org on the Lightning rail. */
|
|
51
|
+
export declare const ORGANIZATION_SELECTION_REQUIRED = "ORGANIZATION_SELECTION_REQUIRED";
|
|
52
|
+
/** `details.organization_ids` off an `ORGANIZATION_SELECTION_REQUIRED` error, else `[]`. */
|
|
53
|
+
export declare function organizationCandidatesFromError(err: unknown): string[];
|
|
42
54
|
export interface GenerateImageResult {
|
|
43
55
|
/** Base64-encoded bytes. */
|
|
44
56
|
image: string;
|
|
@@ -65,8 +77,10 @@ export declare class Ai {
|
|
|
65
77
|
/** Get AI translation usage for the current billing cycle. */
|
|
66
78
|
usage(projectId: string): Promise<AiUsageResult>;
|
|
67
79
|
/**
|
|
68
|
-
* Generate an image from a text prompt. Costs $0.03
|
|
69
|
-
* No project scope — payment flows through the
|
|
80
|
+
* Generate an image from a text prompt. Costs $0.03 via x402, MPP on
|
|
81
|
+
* Tempo, or MPP Lightning. No project scope — payment flows through the
|
|
82
|
+
* allowance-based fetch. See {@link GenerateImageOptions.orgId} for how a
|
|
83
|
+
* multi-org principal's paying organization is chosen on Lightning.
|
|
70
84
|
*/
|
|
71
85
|
generateImage(opts: GenerateImageOptions): Promise<GenerateImageResult>;
|
|
72
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/namespaces/ai.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/namespaces/ai.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAK9D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE;QACX,MAAM,EAAE,OAAO,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAC;AAG9D,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,iGAAiG;AACjG,eAAO,MAAM,+BAA+B,oCAAoC,CAAC;AAEjF,4FAA4F;AAC5F,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAOtE;AAED,MAAM,WAAW,mBAAmB;IAClC,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACnC;AAED,qBAAa,EAAE;IACD,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAE3C,yEAAyE;IACnE,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAepF,mFAAmF;IAC7E,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAWxE,8DAA8D;IACxD,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAStD;;;;;OAKG;IACG,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAoB9E"}
|
package/dist/namespaces/ai.js
CHANGED
|
@@ -2,9 +2,21 @@
|
|
|
2
2
|
* `ai` namespace — project-scoped AI add-ons (translation, moderation) and
|
|
3
3
|
* wallet-scoped image generation.
|
|
4
4
|
*/
|
|
5
|
-
import { LocalError } from "../errors.js";
|
|
5
|
+
import { ApiError, LocalError, isRun402Error } from "../errors.js";
|
|
6
6
|
import { requireProjectCredentials } from "../project-credentials.js";
|
|
7
7
|
const IMAGE_ASPECTS = ["square", "landscape", "portrait"];
|
|
8
|
+
/** The gateway's answer when a multi-org principal names no paying org on the Lightning rail. */
|
|
9
|
+
export const ORGANIZATION_SELECTION_REQUIRED = "ORGANIZATION_SELECTION_REQUIRED";
|
|
10
|
+
/** `details.organization_ids` off an `ORGANIZATION_SELECTION_REQUIRED` error, else `[]`. */
|
|
11
|
+
export function organizationCandidatesFromError(err) {
|
|
12
|
+
if (!isRun402Error(err) || err.code !== ORGANIZATION_SELECTION_REQUIRED)
|
|
13
|
+
return [];
|
|
14
|
+
const details = err.details;
|
|
15
|
+
const ids = details && typeof details === "object" && !Array.isArray(details)
|
|
16
|
+
? details.organization_ids
|
|
17
|
+
: undefined;
|
|
18
|
+
return Array.isArray(ids) ? ids.filter((id) => typeof id === "string" && id.length > 0) : [];
|
|
19
|
+
}
|
|
8
20
|
export class Ai {
|
|
9
21
|
client;
|
|
10
22
|
constructor(client) {
|
|
@@ -44,20 +56,128 @@ export class Ai {
|
|
|
44
56
|
});
|
|
45
57
|
}
|
|
46
58
|
/**
|
|
47
|
-
* Generate an image from a text prompt. Costs $0.03
|
|
48
|
-
* No project scope — payment flows through the
|
|
59
|
+
* Generate an image from a text prompt. Costs $0.03 via x402, MPP on
|
|
60
|
+
* Tempo, or MPP Lightning. No project scope — payment flows through the
|
|
61
|
+
* allowance-based fetch. See {@link GenerateImageOptions.orgId} for how a
|
|
62
|
+
* multi-org principal's paying organization is chosen on Lightning.
|
|
49
63
|
*/
|
|
50
64
|
async generateImage(opts) {
|
|
51
65
|
const aspect = opts.aspect ?? "square";
|
|
52
66
|
if (!IMAGE_ASPECTS.includes(aspect)) {
|
|
53
67
|
throw new LocalError(`aspect must be one of: ${IMAGE_ASPECTS.join(", ")}`, "generating image");
|
|
54
68
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
69
|
+
try {
|
|
70
|
+
return await postGenerateImage(this.client, opts.prompt, aspect, opts.orgId);
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
// Only an UNNAMED org is disambiguated: a caller-named org that the
|
|
74
|
+
// gateway still refuses is the caller's answer to keep.
|
|
75
|
+
const candidates = opts.orgId ? [] : organizationCandidatesFromError(err);
|
|
76
|
+
if (candidates.length === 0)
|
|
77
|
+
throw err;
|
|
78
|
+
const matched = await matchKnownOrganization(this.client, candidates);
|
|
79
|
+
if (matched.chosen)
|
|
80
|
+
return postGenerateImage(this.client, opts.prompt, aspect, matched.chosen);
|
|
81
|
+
throw organizationSelectionError(err, candidates, matched.matches);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Module-level, not class-private: `ScopedRun402`'s drift test enumerates
|
|
86
|
+
// every runtime method on a namespace, and a TypeScript `private` is public
|
|
87
|
+
// at runtime.
|
|
88
|
+
async function postGenerateImage(client, prompt, aspect, orgId) {
|
|
89
|
+
// requestWithResponse, not request: the settlement receipt rides the
|
|
90
|
+
// RESPONSE, and `request` discards everything but the body — which is
|
|
91
|
+
// exactly how a caller could buy an image with no way to learn which
|
|
92
|
+
// network the money moved on.
|
|
93
|
+
const res = await client.requestWithResponse("/generate-image/v1", { method: "POST", body: { prompt, aspect, ...(orgId ? { org_id: orgId } : {}) }, context: "generating image" });
|
|
94
|
+
return { ...res.body, payment: res.settlement ?? null };
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Intersect the gateway's candidates with what this machine already knows,
|
|
98
|
+
* most deliberate context first: the SELECTED pair (active org, active
|
|
99
|
+
* project's cached owning org) decides when exactly one candidate matches
|
|
100
|
+
* it; only when it names nothing do the STORED projects' owning orgs get a
|
|
101
|
+
* say, again only when exactly one candidate matches. Every read is local
|
|
102
|
+
* and best-effort — a provider without the optional methods, or a read that
|
|
103
|
+
* throws, contributes nothing rather than failing the purchase.
|
|
104
|
+
*/
|
|
105
|
+
async function matchKnownOrganization(client, candidates) {
|
|
106
|
+
const creds = client.credentials;
|
|
107
|
+
const selected = new Set();
|
|
108
|
+
const activeOrg = await optionalRead(() => creds.getActiveOrg?.call(creds));
|
|
109
|
+
if (activeOrg)
|
|
110
|
+
selected.add(activeOrg);
|
|
111
|
+
const activeProject = await optionalRead(() => creds.getActiveProject?.call(creds));
|
|
112
|
+
if (activeProject) {
|
|
113
|
+
const owning = orgIdOf(await optionalRead(() => client.getProjectCredentials(activeProject)));
|
|
114
|
+
if (owning)
|
|
115
|
+
selected.add(owning);
|
|
61
116
|
}
|
|
117
|
+
const stored = new Set();
|
|
118
|
+
const listed = await optionalRead(() => creds.listProjectCredentials?.call(creds));
|
|
119
|
+
for (const entry of Object.values(listed ?? {})) {
|
|
120
|
+
const owning = orgIdOf(entry);
|
|
121
|
+
if (owning)
|
|
122
|
+
stored.add(owning);
|
|
123
|
+
}
|
|
124
|
+
const inSelected = candidates.filter((id) => selected.has(id));
|
|
125
|
+
if (inSelected.length === 1)
|
|
126
|
+
return { chosen: inSelected[0], matches: inSelected };
|
|
127
|
+
if (inSelected.length > 1)
|
|
128
|
+
return { chosen: null, matches: inSelected };
|
|
129
|
+
const inStored = candidates.filter((id) => stored.has(id));
|
|
130
|
+
return { chosen: inStored.length === 1 ? inStored[0] : null, matches: inStored };
|
|
131
|
+
}
|
|
132
|
+
async function optionalRead(read) {
|
|
133
|
+
try {
|
|
134
|
+
const value = await read();
|
|
135
|
+
return value === undefined ? null : value;
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function orgIdOf(entry) {
|
|
142
|
+
const orgId = entry && typeof entry === "object" ? entry.org_id : undefined;
|
|
143
|
+
return typeof orgId === "string" && orgId.length > 0 ? orgId : null;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* The gateway's `ORGANIZATION_SELECTION_REQUIRED` answer, re-thrown with the
|
|
147
|
+
* candidates named in the message and a next action that says how to name
|
|
148
|
+
* the paying organization. Status, code, and the raw envelope are kept.
|
|
149
|
+
*/
|
|
150
|
+
function organizationSelectionError(err, candidates, matches) {
|
|
151
|
+
const envelope = err.body && typeof err.body === "object" && !Array.isArray(err.body)
|
|
152
|
+
? err.body
|
|
153
|
+
: {};
|
|
154
|
+
const details = envelope.details && typeof envelope.details === "object" && !Array.isArray(envelope.details)
|
|
155
|
+
? envelope.details
|
|
156
|
+
: {};
|
|
157
|
+
const reason = matches.length > 1
|
|
158
|
+
? `${matches.length} of them (${matches.join(", ")}) match this machine's local context, so none was chosen`
|
|
159
|
+
: "none of them matches this machine's local context (run402 org use, the active project, or a stored project)";
|
|
160
|
+
const message = `The paying organization is required: this principal belongs to ${candidates.length} organizations ` +
|
|
161
|
+
`(${candidates.join(", ")}) and ${reason}; name one with orgId (CLI: --org <org_id>) while generating image (HTTP ${err.status ?? 400})`;
|
|
162
|
+
const nextActions = [
|
|
163
|
+
{
|
|
164
|
+
type: "edit_request",
|
|
165
|
+
command: "run402 image generate \"<prompt>\" --org <org_id>",
|
|
166
|
+
why: "Name the paying organization on this call (SDK: generateImage({ orgId })). Candidates are in details.organization_ids.",
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
type: "edit_request",
|
|
170
|
+
command: "run402 org use <org_id>",
|
|
171
|
+
why: "Select a current organization for this profile so every later call inherits it.",
|
|
172
|
+
},
|
|
173
|
+
...(Array.isArray(envelope.next_actions) ? envelope.next_actions : []),
|
|
174
|
+
];
|
|
175
|
+
return new ApiError(message, err.status, {
|
|
176
|
+
...envelope,
|
|
177
|
+
message,
|
|
178
|
+
code: ORGANIZATION_SELECTION_REQUIRED,
|
|
179
|
+
details: { ...details, organization_ids: candidates, matched_organization_ids: matches },
|
|
180
|
+
next_actions: nextActions,
|
|
181
|
+
}, "generating image");
|
|
62
182
|
}
|
|
63
183
|
//# sourceMappingURL=ai.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/namespaces/ai.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/namespaces/ai.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAgCtE,MAAM,aAAa,GAA2B,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AAqBlF,iGAAiG;AACjG,MAAM,CAAC,MAAM,+BAA+B,GAAG,iCAAiC,CAAC;AAEjF,4FAA4F;AAC5F,MAAM,UAAU,+BAA+B,CAAC,GAAY;IAC1D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,+BAA+B;QAAE,OAAO,EAAE,CAAC;IACnF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAC5B,MAAM,GAAG,GAAG,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAC3E,CAAC,CAAE,OAA0C,CAAC,gBAAgB;QAC9D,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7G,CAAC;AAmBD,MAAM,OAAO,EAAE;IACgB;IAA7B,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C,yEAAyE;IACzE,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,IAAsB;QACvD,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC;QAE5F,MAAM,IAAI,GAA2B,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;QACtE,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrC,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE9C,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAkB,kBAAkB,EAAE;YAC9D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,WAAW,EAAE,EAAE;YAC3D,IAAI;YACJ,OAAO,EAAE,kBAAkB;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,mFAAmF;IACnF,KAAK,CAAC,QAAQ,CAAC,SAAiB,EAAE,IAAY;QAC5C,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAE9F,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAiB,iBAAiB,EAAE;YAC5D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,WAAW,EAAE,EAAE;YAC3D,IAAI,EAAE,EAAE,IAAI,EAAE;YACd,OAAO,EAAE,oBAAoB;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,8DAA8D;IAC9D,KAAK,CAAC,KAAK,CAAC,SAAiB;QAC3B,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAE7F,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAgB,cAAc,EAAE;YACxD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,WAAW,EAAE,EAAE;YAC3D,OAAO,EAAE,mBAAmB;SAC7B,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,IAA0B;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,UAAU,CAClB,0BAA0B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACpD,kBAAkB,CACnB,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,OAAO,MAAM,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,oEAAoE;YACpE,wDAAwD;YACxD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC;YAC1E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,GAAG,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACtE,IAAI,OAAO,CAAC,MAAM;gBAAE,OAAO,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAC/F,MAAM,0BAA0B,CAAC,GAAkB,EAAE,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;CACF;AAED,0EAA0E;AAC1E,4EAA4E;AAC5E,cAAc;AAEd,KAAK,UAAU,iBAAiB,CAC9B,MAAc,EACd,MAAc,EACd,MAAmB,EACnB,KAAyB;IAEzB,qEAAqE;IACrE,sEAAsE;IACtE,qEAAqE;IACrE,8BAA8B;IAC9B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAC1C,oBAAoB,EACpB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAC/G,CAAC;IACF,OAAO,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;AAC1D,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,sBAAsB,CACnC,MAAc,EACd,UAAoB;IAEpB,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5E,IAAI,SAAS;QAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACpF,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,YAAY,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC9F,IAAI,MAAM;YAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACnF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACpF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACxE,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpF,CAAC;AAED,KAAK,UAAU,YAAY,CAAI,IAAsC;IACnE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,EAAE,CAAC;QAC3B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,KAAc;IAC7B,MAAM,KAAK,GAAG,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,KAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACtG,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,SAAS,0BAA0B,CAAC,GAAgB,EAAE,UAAoB,EAAE,OAAiB;IAC3F,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACnF,CAAC,CAAE,GAAG,CAAC,IAAgC;QACvC,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC1G,CAAC,CAAE,QAAQ,CAAC,OAAmC;QAC/C,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;QAC/B,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,aAAa,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,0DAA0D;QAC5G,CAAC,CAAC,6GAA6G,CAAC;IAClH,MAAM,OAAO,GACX,kEAAkE,UAAU,CAAC,MAAM,iBAAiB;QACpG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,MAAM,4EAA4E,GAAG,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC;IAC3I,MAAM,WAAW,GAAiB;QAChC;YACE,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,mDAAmD;YAC5D,GAAG,EAAE,wHAAwH;SAC9H;QACD;YACE,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,yBAAyB;YAClC,GAAG,EAAE,iFAAiF;SACvF;QACD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAE,QAAQ,CAAC,YAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;KACzF,CAAC;IACF,OAAO,IAAI,QAAQ,CACjB,OAAO,EACP,GAAG,CAAC,MAAM,EACV;QACE,GAAG,QAAQ;QACX,OAAO;QACP,IAAI,EAAE,+BAA+B;QACrC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,wBAAwB,EAAE,OAAO,EAAE;QACxF,YAAY,EAAE,WAAW;KAC1B,EACD,kBAAkB,CACnB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/namespaces/deploy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/namespaces/deploy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1068,13 +1068,19 @@ function siteToCoreSpec(site) {
|
|
|
1068
1068
|
...(site.public_paths ? { public_paths: site.public_paths } : {}),
|
|
1069
1069
|
};
|
|
1070
1070
|
}
|
|
1071
|
-
|
|
1071
|
+
// tenant-site-embedding never reaches core: the catalog is gateway-owned and
|
|
1072
|
+
// core validates site keys against its own list.
|
|
1073
|
+
return site.public_paths ? { public_paths: site.public_paths } : {};
|
|
1072
1074
|
}
|
|
1073
1075
|
function siteToWire(site) {
|
|
1076
|
+
// tenant-site-embedding: `null` is a meaningful value on the wire (clear), so
|
|
1077
|
+
// it is carried whenever the key is present, unlike public_paths.
|
|
1078
|
+
const embedding = "embedding" in site && site.embedding !== undefined ? { embedding: site.embedding } : {};
|
|
1074
1079
|
if ("replace" in site && site.replace) {
|
|
1075
1080
|
return {
|
|
1076
1081
|
replace: fileSetToWire(site.replace),
|
|
1077
1082
|
...(site.public_paths ? { public_paths: site.public_paths } : {}),
|
|
1083
|
+
...embedding,
|
|
1078
1084
|
};
|
|
1079
1085
|
}
|
|
1080
1086
|
if ("patch" in site && site.patch) {
|
|
@@ -1084,9 +1090,13 @@ function siteToWire(site) {
|
|
|
1084
1090
|
...(site.patch.delete ? { delete: site.patch.delete } : {}),
|
|
1085
1091
|
},
|
|
1086
1092
|
...(site.public_paths ? { public_paths: site.public_paths } : {}),
|
|
1093
|
+
...embedding,
|
|
1087
1094
|
};
|
|
1088
1095
|
}
|
|
1089
|
-
return {
|
|
1096
|
+
return {
|
|
1097
|
+
...(site.public_paths ? { public_paths: site.public_paths } : {}),
|
|
1098
|
+
...embedding,
|
|
1099
|
+
};
|
|
1090
1100
|
}
|
|
1091
1101
|
function i18nToWire(i18n) {
|
|
1092
1102
|
return {
|
|
@@ -2231,7 +2241,7 @@ const FUNCTION_SPEC_FIELDS = new Set([
|
|
|
2231
2241
|
const FUNCTION_CONFIG_FIELDS = new Set(["timeoutSeconds", "memoryMb"]);
|
|
2232
2242
|
const FUNCTION_TRIGGER_FIELDS = new Set(["id", "type", "cron", "timezone", "misfire_policy", "overlap_policy", "mailbox", "events", "run"]);
|
|
2233
2243
|
const FUNCTION_TRIGGER_RUN_FIELDS = new Set(["event_type", "payload", "retry", "expires_after_seconds"]);
|
|
2234
|
-
const SITE_SPEC_FIELDS = new Set(["replace", "patch", "public_paths"]);
|
|
2244
|
+
const SITE_SPEC_FIELDS = new Set(["replace", "patch", "public_paths", "embedding"]);
|
|
2235
2245
|
const SITE_PATCH_FIELDS = new Set(["put", "delete"]);
|
|
2236
2246
|
const SITE_PUBLIC_PATHS_FIELDS = new Set(["mode", "replace"]);
|
|
2237
2247
|
const PUBLIC_STATIC_PATH_FIELDS = new Set(["asset", "cache_class"]);
|
|
@@ -2565,6 +2575,22 @@ function validateSiteSpec(site) {
|
|
|
2565
2575
|
if (obj.public_paths !== undefined) {
|
|
2566
2576
|
validateSitePublicPathsSpec(obj.public_paths, "site.public_paths");
|
|
2567
2577
|
}
|
|
2578
|
+
if (obj.embedding !== undefined) {
|
|
2579
|
+
validateSiteEmbeddingSpec(obj.embedding, "site.embedding");
|
|
2580
|
+
}
|
|
2581
|
+
}
|
|
2582
|
+
/** tenant-site-embedding. Structural check only: the catalog is the gateway's
|
|
2583
|
+
* (it names the valid keys in INVALID_SPEC), so a new key never needs an SDK
|
|
2584
|
+
* release. `null` clears; omitted carries forward. */
|
|
2585
|
+
function validateSiteEmbeddingSpec(value, resource) {
|
|
2586
|
+
if (value === null)
|
|
2587
|
+
return;
|
|
2588
|
+
const obj = requireObject(value, resource);
|
|
2589
|
+
validateKnownFields(obj, resource, new Set(["frame_ancestors"]));
|
|
2590
|
+
if (!Array.isArray(obj.frame_ancestors) || obj.frame_ancestors.length === 0) {
|
|
2591
|
+
throw invalidSpec(`ReleaseSpec.${resource}.frame_ancestors must be a non-empty array of embedding catalog keys (e.g. ["localhost"]); omit ${resource} to carry the previous declaration forward or send null to deny`, `${resource}.frame_ancestors`);
|
|
2592
|
+
}
|
|
2593
|
+
validateStringArray(obj.frame_ancestors, `${resource}.frame_ancestors`);
|
|
2568
2594
|
}
|
|
2569
2595
|
function validateSitePublicPathsSpec(value, resource) {
|
|
2570
2596
|
const obj = requireObject(value, resource);
|
|
@@ -2917,6 +2943,11 @@ function hasDatabaseContent(database) {
|
|
|
2917
2943
|
return hasArrayEntries(database.migrations) || hasRecordEntries(database.expose);
|
|
2918
2944
|
}
|
|
2919
2945
|
function hasSiteContent(site) {
|
|
2946
|
+
// tenant-site-embedding: a declaration (or an explicit null that clears one)
|
|
2947
|
+
// is deploy content on its own, like a public_paths-only site.
|
|
2948
|
+
if (site && typeof site === "object" && "embedding" in site && site.embedding !== undefined) {
|
|
2949
|
+
return true;
|
|
2950
|
+
}
|
|
2920
2951
|
if (!isRecord(site))
|
|
2921
2952
|
return false;
|
|
2922
2953
|
if (hasRecordEntries(site.replace))
|
|
@@ -3366,6 +3397,10 @@ async function normalizeReleaseSpec(client, spec, opts = {}) {
|
|
|
3366
3397
|
}
|
|
3367
3398
|
if (spec.site) {
|
|
3368
3399
|
const publicPaths = "public_paths" in spec.site ? spec.site.public_paths : undefined;
|
|
3400
|
+
// tenant-site-embedding: present (object or null) travels as-is.
|
|
3401
|
+
const embedding = "embedding" in spec.site && spec.site.embedding !== undefined
|
|
3402
|
+
? { embedding: spec.site.embedding }
|
|
3403
|
+
: {};
|
|
3369
3404
|
if ("replace" in spec.site && spec.site.replace) {
|
|
3370
3405
|
const map = await normalizeFileSet(spec.site.replace, rememberRelease);
|
|
3371
3406
|
// Re-check post-expansion so `dir("dist")` (a LocalDirRef whose keys are
|
|
@@ -3374,6 +3409,7 @@ async function normalizeReleaseSpec(client, spec, opts = {}) {
|
|
|
3374
3409
|
normalized.site = {
|
|
3375
3410
|
replace: map,
|
|
3376
3411
|
...(publicPaths ? { public_paths: publicPaths } : {}),
|
|
3412
|
+
...embedding,
|
|
3377
3413
|
};
|
|
3378
3414
|
}
|
|
3379
3415
|
else if ("patch" in spec.site && spec.site.patch) {
|
|
@@ -3387,10 +3423,14 @@ async function normalizeReleaseSpec(client, spec, opts = {}) {
|
|
|
3387
3423
|
normalized.site = {
|
|
3388
3424
|
patch,
|
|
3389
3425
|
...(publicPaths ? { public_paths: publicPaths } : {}),
|
|
3426
|
+
...embedding,
|
|
3390
3427
|
};
|
|
3391
3428
|
}
|
|
3392
|
-
else if (publicPaths) {
|
|
3393
|
-
normalized.site = {
|
|
3429
|
+
else if (publicPaths || "embedding" in embedding) {
|
|
3430
|
+
normalized.site = {
|
|
3431
|
+
...(publicPaths ? { public_paths: publicPaths } : {}),
|
|
3432
|
+
...embedding,
|
|
3433
|
+
};
|
|
3394
3434
|
}
|
|
3395
3435
|
}
|
|
3396
3436
|
// v1.48 unified-apply: asset slice normalization. Mirrors the site
|