mirror of
https://github.com/hanzoai/cdn.git
synced 2026-10-30 15:06:53 +00:00
The Market read plane is files and nothing else. This makes that actually true
and actually deployable.
Catalog: was 10 mock "zoo-eco-agent" placeholders + 5 mock tools, which every
app would have shown to every user. Now generated from the curated flatfile
catalog (hanzoai/store data/{agents,tools}) -> 23 agents + 179 tools, each with
its own detail document. Drops purchases.json: per-user state has no business
on a public CDN. Strips upstream icon URLs, which are expired presigned R2 links
that carry an AWS credential + signature in the query string.
Versioning: index.json gains `schema` (breaking-shape gate, so a client that
does not recognise it keeps its bundle) and a `version` that is a content digest
over every served document. It changes iff what we serve changes, which is what
makes a deploy checkable rather than hopeful.
One writer: gen-market.py -> market.py with `gen` and `check`. It emits the CDN
documents AND each app's offline bundle, so the two cannot disagree about the
schema; `check` re-derives the digest and validates counts, ids, dangling
featured references and per-tool details, with no network and no other checkout.
Deploy: upload, then purge the Cloudflare edge for exactly the URLs written,
then verify the live manifest matches the repo and fail if it does not. Also
resolves wrangler once instead of re-resolving it per object.
CI: hanzo.yml + a 7-line cicd.yml importing hanzoai/ci. Static assets, so no
images:/deploy: — test: is the gate.
Co-authored-by: Hanzo Dev <[email protected]>
48 lines
2.0 KiB
JSON
48 lines
2.0 KiB
JSON
{
|
|
"author": "hanzo.ai",
|
|
"category": {
|
|
"description": "",
|
|
"examples": "",
|
|
"id": "utilities",
|
|
"name": "Utilities"
|
|
},
|
|
"changelog": "",
|
|
"created_at": "2025-04-30T15:52:29.009Z",
|
|
"description": "Opens a configurable dialog with options to select from, and outputs the choice made by the user.\n\nUse it inside tools and workflows as a human-in-the-loop component.\n\nYou can configure the :\n- title of the dialog\n- text of the dialog\n- labels of the options buttons.\n\nWhen included inside another tool using Hanzo's AI tool building assistant, the LLM should be able to automatically adapt the title, the text, the number of options and the buttons of the dialog, as well as use the choice made by the user to trigger the appropriate next step in your tool flow.\n\nIf the options are generated together by a prompt processing, make sure to force the LLM to format things well (options titles and separator) so that options splitting and then processing are done correctly.\n\nIf you want to add a Custom option button for which the user can then add information, on top of proposed options, create a Custom button option that triggers the tool Clarification Dialog - Human In The Loop.",
|
|
"downloads": 12,
|
|
"icon_url": "",
|
|
"id": "options-selection-human-in-the-loop",
|
|
"install_command": "",
|
|
"license": "MIT",
|
|
"mcp_config": {
|
|
"args": [
|
|
"local:::__gilles_test2_sep_shinkai:::options_selection___human_in_the_loop"
|
|
],
|
|
"command": "any",
|
|
"env": {}
|
|
},
|
|
"name": "Options Selection \u2013 Human In The Loop",
|
|
"operating_system": [
|
|
"linux",
|
|
"macos",
|
|
"windows"
|
|
],
|
|
"path": "/tools/options-selection-human-in-the-loop",
|
|
"price": 0,
|
|
"readme": "",
|
|
"repository": "github.com/hanzoai/tools",
|
|
"router_key": "@hanzo/options-selection---human-in-the-loop",
|
|
"runner": "any",
|
|
"screenshots": [],
|
|
"tags": [
|
|
"option",
|
|
"options selection",
|
|
"choice",
|
|
"human",
|
|
"select"
|
|
],
|
|
"type": "Tool",
|
|
"updated_at": "2025-04-30T15:52:29.009Z",
|
|
"version": "1.0.0"
|
|
}
|