Skip to content

GCP.CES reference

Source: src/GCP/CES/App.ts

A Customer Engagement Suite (CES) app — the top-level container for agents, tools, toolsets, guardrails, examples, versions, and deployments.

App create and delete are long-running operations. Location and app id are immutable. CES apps have no labels API, so Alchemy stamps ownership into metadata and description so list / nuke can find them.

Generated name

const app = yield* GCP.CES.App("Support", {
displayName: "support",
});

Named app with a time zone and model

const app = yield* GCP.CES.App("Support", {
appId: "support-desk",
location: "us-central1",
displayName: "Support desk",
timeZone: "America/Los_Angeles",
model: "gemini-2.0-flash",
});

Source: src/GCP/CES/AppsAgent.ts

A Customer Engagement Suite agent inside an app. Agents give the LLM instructions, tools, and transfer rules for a task.

Agents have no labels field, and the description reaches the model, so Alchemy writes no ownership marker: a generated agent id identifies the agent, and read reports an explicit id it has no state for as unowned. Parent app, location, and agent id are immutable.

const agent = yield* GCP.CES.AppsAgent("Greeter", {
app: app.name,
displayName: "greeter",
instruction: "Greet the user and offer help.",
});

Source: src/GCP/CES/AppsDeployment.ts

A Customer Engagement Suite deployment — an immutable, queryable channel binding of an app version.

Deployments have no labels or description field — Alchemy stamps ownership into displayName so list / nuke can find them. Parent app, location, and deployment id are immutable.

const version = yield* GCP.CES.AppsVersion("V1", { app: app.name });
const deployment = yield* GCP.CES.AppsDeployment("Prod", {
app: app.name,
appVersion: version.name,
displayName: "prod",
channelProfile: { channelType: "API", profileId: "api" },
});

Source: src/GCP/CES/AppsExample.ts

A Customer Engagement Suite few-shot example conversation inside an app.

Examples have no labels field — Alchemy stamps ownership into description so list / nuke can find them. Parent app, location, and example id are immutable.

const example = yield* GCP.CES.AppsExample("Hello", {
app: app.name,
displayName: "hello",
messages: [
{ role: "user", chunks: [{ text: "Hi" }] },
{ role: "agent", chunks: [{ text: "Hello! How can I help?" }] },
],
});

Source: src/GCP/CES/AppsGuardrail.ts

A Customer Engagement Suite guardrail — content filter, LLM policy, model safety, or callback checks attached to an app or agent.

Guardrails have no labels field — Alchemy stamps ownership into description so list / nuke can find them. Parent app, location, and guardrail id are immutable.

const guardrail = yield* GCP.CES.AppsGuardrail("Safety", {
app: app.name,
displayName: "safety",
contentFilter: {
matchType: "SIMPLE_STRING_MATCH",
bannedContents: ["forbidden"],
},
});

Source: src/GCP/CES/AppsTool.ts

A Customer Engagement Suite tool inside an app (client function, Python, OpenAPI, Google Search, widget, and related variants).

Tools have no labels field, and a tool’s description tells the model when to call it, so Alchemy writes no ownership marker: a generated tool id identifies the tool, and read reports an explicit id it has no state for as unowned. Parent app, location, tool id, and tool kind are immutable.

const tool = yield* GCP.CES.AppsTool("Lookup", {
app: app.name,
clientFunction: {
name: "lookup_order",
description: "Look up an order by id.",
parameters: {
type: "OBJECT",
properties: { orderId: { type: "STRING" } },
},
},
});

Source: src/GCP/CES/AppsToolset.ts

A Customer Engagement Suite toolset — a dynamically managed group of tools defined by OpenAPI, MCP, or Integration Connectors.

Toolsets have no labels field, and the description reaches the model, so Alchemy writes no ownership marker: a generated toolset id identifies the toolset, and read reports an explicit id it has no state for as unowned. Parent app, location, toolset id, and toolset kind are immutable.

const toolset = yield* GCP.CES.AppsToolset("Ping", {
app: app.name,
displayName: "ping",
openApiToolset: {
openApiSchema: JSON.stringify({
openapi: "3.0.0",
info: { title: "Ping", version: "1.0.0" },
paths: {
"/ping": {
get: {
operationId: "ping",
responses: { "200": { description: "ok" } },
},
},
},
}),
},
});

Source: src/GCP/CES/AppsVersion.ts

A Customer Engagement Suite app version — an immutable snapshot of an app at a point in time.

Versions have no labels field and no patch RPC. Alchemy stamps ownership into description so list / nuke can find them. Reconcile is observe-ensure: if the snapshot is missing it is created; later description edits are ignored.

const version = yield* GCP.CES.AppsVersion("v1", {
app: app.name,
displayName: "v1",
description: "initial",
});