Genetic tag: repo.platform.sdk.ai_app_factory.gen1
RU: AI_APPLICATION_FACTORY_ru.md
Entry: AGENTS.md
Each recipe: Task → Prerequisites → Steps → Code → Failures
Task: Publish HTML to AgentStack hosting.
import { AgentStackSDK, resolveAgentStackApiBase, validateAppManifest } from '@agentstack/sdk';
const sdk = new AgentStackSDK({ apiBase: resolveAgentStackApiBase() });
await sdk.platform.auth.login({ email: process.env.AGENTSTACK_EMAIL!, password: process.env.AGENTSTACK_PASSWORD! });
const manifest = validateAppManifest({
manifest_version: '1',
app_id: 'demo-site',
name: 'Demo',
version: '1.0.0',
routes: [{ path: '/', module_id: 'page', props: {} }],
modules: ['page'],
capabilities: [],
});
if (!manifest.success) throw manifest.error;
const result = await sdk.hosting.quickStart({
project_id: Number(process.env.PROJECT_ID),
html: '<!doctype html><html><body><h1>Hello</h1></body></html>',
bucket_name: 'demo',
publish: true,
});
console.log(result.url);Failures: hosting_gate_failed → check project tier; 401 → login.
const projects = await sdk.platform.api.getProjects();
const created = await sdk.platform.api.createProject({ name: 'AI Demo', description: 'via SDK' });DNA row (advanced): sdk.platform.dna.list('data_projects_8dna', { project_id: 0, limit: 20 }).
import { CommerceFacade } from '@agentstack/sdk';
// Prefer sdk.commerce on AgentStackSDK instance:
const offers = await sdk.commerce.discovery.listOffers({ projectId: 1 });See monorepo ../../docs/sdk/COMMERCE_SHOP_SDK.md.
const inbox = await sdk.support.getInbox({ project_id: 1 });Gene: sdk.support.gen2.
await sdk.logic.installBlueprint(projectId, 'blueprint-id', { dry_run: false });Client pure helper: @agentstack/sdk/logic/blueprints · materialize().
import { parseTaskManifest, runTaskCapability, registerTaskCapabilityPort } from '@agentstack/sdk/capability-tasks';
registerTaskCapabilityPort({
taskId: 'storage.upload',
async run(ctx) {
return { ok: true, data: {} };
},
});
await runTaskCapability('storage.upload', { sdk, projectId: 1, audience: 'developer' });Discover task ids: sdk.getModuleCatalog().tasks.