EvoX Genesis
EvoX Genesis turns a high-level software objective into a persistent recursive software world: finite-lived agents recursively develop software, while only accepted consequences persist across develop
翻譯準備中
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Isomer turns one typed Composition into React, HTML, SVG, PNG, Slack Block Kit, Markdown, and plain text. It owns the composition contract, the primitive catalog, validation, and rendering. Hosts own data, authorization, routing, and side effects.
A product answers the same question in more than one place: a page, a Slack message, an agent's reply, an image in an email. Each channel usually gets its own renderer, and they drift. Isomer moves the shared part into one document. A host, or an agent handed the pack's JSON Schema and catalog, composes the answer once from a vocabulary of primitives. Isomer validates it and renders it to every channel, degrading through Markdown and plain text so nothing silently disappears.
What is Isomer? tells the whole story: the vocabulary, the two paths a composition arrives by, what happens inside a render, and what a consumer can rely on.
The reference pack's title slide is one composition. These are its committed outputs, written by the same test on every run.
The snapshot surface, rasterized to PNG:
The markdown surface:
# Isomer
_Reference pack_
One composition, **every surface**.
- ✓ React and HTML
- ✓ Markdown and plain text
- ✓ Slack Block Kit
- ✓ SVG and PNG
_Isomer · [elastic.github.io/isomer](https://elastic.github.io/isomer)_
The text surface:
REFERENCE PACK
Isomer
One composition, every surface.
✓ React and HTML
✓ Markdown and plain text
✓ Slack Block Kit
✓ SVG and PNG
Isomer · elastic.github.io/isomer
Slack gets a header block, the eyebrow and footer as context blocks, the tagline as a section, and the list as a native rich_text list, and HTML gets a section.isomer with only the CSS the slide uses. The reference pack's worked example has the rest of its output.
The product path. Code owns the composition. A team registers a view with defineView: a stable id, the questions it answers, a Zod input schema, and a builder that fetches data and returns a composition. A host requests it by id, and the registry validates the input before the builder runs and the result after. Nothing model-authored touches this path.
The agent path. A model owns the composition. The runtime hands it the authoring context: a JSON Schema projected from the same Zod schemas the validator uses, the catalog with one example per primitive, and the registered views it may request instead. The host parses what comes back, feeds errors back for a retry, and renders only what validates.
A primitive is a schema, a catalog entry an agent reads, and one renderer per surface. A pack is a list of primitives. A runtime turns packs into surfaces.
import { definePrimitive, definePrimitivePack, z } from '@elastic/isomer-sdk';
import { createIsomerRuntime } from '@elastic/isomer-runtime';
const metric = definePrimitive({
type: 'metric',
schema: z.object({ type: z.literal('metric'), label: z.string(), value: z.string() }),
catalog: {
type: 'metric',
purpose: 'State one measured value.',
useWhen: ['A single number answers the question.'],
avoidWhen: ['Several values belong together.'],
example: { type: 'metric', label: 'Error rate', value: '0.4%' },
},
examples: [{ type: 'metric', label: 'Error rate', value: '0.4%' }],
renderers: {
react: (node) => `${node.label}: ${node.value}`,
text: (node) => `${node.label}: ${node.value}`,
markdown: (node) => `**${node.label}**: ${node.value}`,
},
});
const runtime = createIsomerRuntime({
packs: [definePrimitivePack({ id: 'ops', primitives: [metric] })],
});
const composition = {
type: 'view',
title: 'Checkout',
body: [
{ type: 'metric', label: 'Error rate', value: '0.4%' },
{ type: 'metric', label: 'P99 latency', value: '210 ms' },
],
};
runtime.validate(composition); // { valid: true, errors: [], warnings: [], composition: <its checked copy> }
runtime.surfaces.text.render(composition);
runtime.surfaces.markdown.render(composition);
runtime.surfaces.slack.render(composition).blocks;
runtime.surfaces.html.render(composition).html;
runtime.getAuthoringContext(); // { schema, primitives, views, … } for an agent
Slack gets its blocks through the Markdown fallback, because the pack wrote no Slack renderer. Supply a frame and the snapshot surface appears, ready for a rasterizer. The html surface reports validation findings on its result; text, markdown, slack, and snapshot throw on an invalid composition by default; react never validates.
| You want to | Start with |
|---|---|
| Render compositions in a host: a Kibana plugin, a Slack bot, an MCP server | @elastic/isomer-runtime, then its quick start |
| Write primitives, a theme, or a frame | @elastic/isomer-sdk, then its quick start |
| Copy a working pack | @elastic/isomer-primitives-slides, the in-repo reference pack |
| Draw charts, dashboards and placeholders | @elastic/isomer-primitives-charts |
Turn the snapshot surface into PNG, SVG, or PDF | @elastic/isomer-image-takumi |
| Score what a model composes from your pack | @elastic/isomer-evals |
| Browse, check, and publish a pack's primitives | @elastic/isomer-studio |
| Hand a runtime to an agent as tools |
The published packages ship together at one version: the two a host installs, a host-side rasterizer, and the Studio. The reference pack, the evals harness, and the agent tools stay private in the repository.
corepack enable
pnpm install
pnpm exec playwright install chromium
pnpm verify
On Linux, add --with-deps to the Playwright install. pnpm verify is the full local gate, and CI runs the same scripts across parallel jobs. CONTRIBUTING.md lists what it checks, and AGENTS.md holds the conventions and invariants, written for a human contributor and a coding agent alike.
Source available under the Elastic License 2.0 (SPDX: Elastic-2.0). See LICENSE.txt.
@elastic/isomer-agent-tools