@stage-labs/metro 0.1.0-beta.245 → 0.1.0-beta.246
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/package.json +1 -1
- package/runtime/marketplace/plugin/.claude-plugin/plugin.json +1 -1
- package/runtime/marketplace/plugin/STAGE.md +1 -1
- package/runtime/node_modules/@metro-labs/daemon/src/claude/setup.ts +1 -0
- package/runtime/node_modules/@metro-labs/daemon/src/mcp/tool-schemas.ts +4 -3
- package/runtime/runtime.json +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "metro",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.246",
|
|
4
4
|
"description": "Metro for Claude Code, installed by the metro daemon on this machine: every connector the agent holds as its own MCP server relayed through the daemon, the orchestrator-only guard on the main thread, and the standing rules loaded at each session start. No vendor credential ever sits in a config file.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Bonustrack",
|
|
@@ -41,7 +41,7 @@ Move it from Backlog or To-do to In progress, then In review, then Done. Use Blo
|
|
|
41
41
|
- Poll: `ask {"line": "…", "question": "Ship today?", "options": ["Yes", "No"]}`.
|
|
42
42
|
- File: `create_upload {"name": "report.pdf"}`, run the `curl` line it returns in a shell, then `send {"line": "…", "attachments": [{"upload": "<upload_id>"}]}`. Files that are not images are refused over about 190 KiB.
|
|
43
43
|
|
|
44
|
-
**Frames.** A frame is a small interactive view: a report, a choice, a form. Stage shows
|
|
44
|
+
**Frames.** A frame is a small interactive view: a report, a choice, a form. Stage shows the frame itself in the chat (its `start` screen when it has screens), at image size, at most 400 x 400, clipped with a fade when taller. A tap opens it full screen. Its buttons do nothing in the chat: they work in the full view.
|
|
45
45
|
- Send: `send {"line": "…", "frame": {"title": "Deploy", "description": "Version 2.4 is ready", "widget": {…}}}`. A frame goes with `send`, like a file: there is no separate tool. `title` and `description` are optional: they come from the first `Title` and text in the widget when missing. With `text` as well, the text goes first, and the `message_id` you get back is the frame's.
|
|
46
46
|
- `widget` is OpenAI ChatKit widget JSON, with ChatKit's names and props (https://openai.github.io/chatkit-js/): a `Card`, `ListView` or `Basic` root, with `Row`, `Col`, `Box`, `Text`, `Title`, `Caption`, `Markdown`, `Badge`, `Icon`, `Image`, `Button`, `Divider`, `Spacer`, `Form`, `Input`, `Textarea`, `Select`, `DatePicker`, `Checkbox`, `RadioGroup` and `Table`. Images must be `https://`. Number spacing is in steps of 4px. At most 64K characters, 16 levels deep and 500 nodes. Stage shows a small notice for anything it does not know.
|
|
47
47
|
- Example, the arguments of one `send`:
|
|
@@ -165,6 +165,7 @@ const PRIOR_STAGE: ReadonlySet<string> = new Set([
|
|
|
165
165
|
'47439ecbe661ca70471a6839ab30a963714c296ad8c14ca23c6eebc3929038cc',
|
|
166
166
|
'e3b8f9bbdb205311bc643aaf91d9d903a91204fd5b55ca949b85cdfa6fd00136',
|
|
167
167
|
'08a30f5cd5cf8013ab70c1fa9e1109018c0337552296a8efe5c0cf543b284991',
|
|
168
|
+
'f87e9494ea6151d140b742c1b88b4f435ae653559be641fddc2160cd24dd4e1b',
|
|
168
169
|
]);
|
|
169
170
|
const PRIOR_MEMORY: ReadonlySet<string> = new Set(['08795399635c8cdec2b50cb4e336f89ae880f3997ae52560ef647a9cdc8f1b08']);
|
|
170
171
|
|
|
@@ -70,10 +70,11 @@ export const COMMON_TOOLS: ToolDef[] = [
|
|
|
70
70
|
frame: {
|
|
71
71
|
type: 'object',
|
|
72
72
|
description:
|
|
73
|
-
'Stage (XMTP) only: a frame, a small interactive view
|
|
74
|
-
'
|
|
73
|
+
'Stage (XMTP) only: a frame, a small interactive view. Stage shows it in the chat at image size ' +
|
|
74
|
+
'(400 x 400 at most, its start screen, clipped with a fade) and opens it full screen on a tap; its ' +
|
|
75
|
+
'buttons work only there. `widget` is OpenAI ChatKit widget JSON (a Card, ListView ' +
|
|
75
76
|
'or Basic root, 64K characters at most); a missing `title` or `description` is taken from the ' +
|
|
76
|
-
'widget. Or give `screens` instead of `widget` for several screens in one frame. A tap comes back ' +
|
|
77
|
+
'widget. Or give `screens` instead of `widget` for several screens in one frame. A tap there comes back ' +
|
|
77
78
|
'to you as a reply to the frame: "Frame action: <type> <payload ' +
|
|
78
79
|
"JSON>\". It is sent after the text, and the message_id returned is the frame's. The stage " +
|
|
79
80
|
'skill lists the widget nodes, with an example.',
|
package/runtime/runtime.json
CHANGED