summer-engine 3.7.0 → 3.8.0
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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +4 -2
- package/.codex-plugin/plugin.json +5 -3
- package/.cursor-plugin/plugin.json +4 -2
- package/.factory-plugin/plugin.json +4 -2
- package/CHANGELOG.md +16 -0
- package/README.md +11 -1
- package/commands/summer.md +2 -1
- package/dist/core/capabilities/apps.d.ts +318 -0
- package/dist/core/capabilities/apps.js +340 -0
- package/dist/core/capabilities/enable-plugin.d.ts +27 -0
- package/dist/core/capabilities/enable-plugin.js +75 -0
- package/dist/core/capabilities/tool-dispatch.js +49 -0
- package/dist/core/capability-skew.js +4 -0
- package/dist/mcp/hosted-mount.js +13 -1
- package/dist/mcp/server.js +2 -0
- package/dist/mcp/tools/app-tools.d.ts +2 -0
- package/dist/mcp/tools/app-tools.js +64 -0
- package/dist/mcp/tools/generate-tools.js +3 -3
- package/gemini-extension.json +3 -1
- package/library/references/mcp-tools-reference/mcp-tools-reference.md +23 -1
- package/library/skills/README.md +10 -2
- package/library/skills/sound-effect/SKILL.md +2 -0
- package/library/skills/summer-apps/SKILL.md +152 -0
- package/library/skills/summer-apps/manifest.md +57 -0
- package/library/skills/summer-apps/minimal-app.md +183 -0
- package/library/skills/summer-apps/resource.yaml +36 -0
- package/library/skills/summer-apps/sdk-reference.md +135 -0
- package/library/skills/summer-apps-design/SKILL.md +197 -0
- package/library/skills/summer-apps-design/resource.yaml +23 -0
- package/library/skills/using-summer/SKILL.md +1 -0
- package/library/tools/app-call/resource.yaml +59 -0
- package/library/tools/app-create/resource.yaml +67 -0
- package/library/tools/app-data/resource.yaml +74 -0
- package/library/tools/app-dock/resource.yaml +59 -0
- package/library/tools/app-events/resource.yaml +68 -0
- package/library/tools/app-get/resource.yaml +46 -0
- package/library/tools/app-guide/resource.yaml +55 -0
- package/library/tools/app-list/resource.yaml +48 -0
- package/library/tools/app-page/resource.yaml +74 -0
- package/library/tools/app-publish/resource.yaml +90 -0
- package/library/tools/app-report-gap/resource.yaml +58 -0
- package/library/tools/app-screenshot/resource.yaml +85 -0
- package/library/tools/app-tools/resource.yaml +46 -0
- package/library/tools/app-update/resource.yaml +68 -0
- package/library/tools/enable-plugin/resource.yaml +53 -0
- package/package.json +1 -1
- package/registry/generated/aliases.json +15 -0
- package/registry/generated/counts.json +3 -3
- package/registry/generated/gemini-extension.json +3 -1
- package/registry/generated/index.json +656 -3
- package/registry/generated/marketplace.claude.json +2 -2
- package/registry/generated/plugin.claude.json +4 -2
- package/registry/generated/plugin.codex.json +5 -3
- package/registry/generated/plugin.cursor.json +4 -2
- package/registry/generated/plugin.factory.json +4 -2
- package/registry/generated/skills-index.md +10 -2
- package/registry/generated/skills-registry.json +27 -0
- package/registry/schemas/allowed-hosts.json +4 -2
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
{
|
|
12
12
|
"name": "summer",
|
|
13
13
|
"source": "./",
|
|
14
|
-
"version": "3.
|
|
15
|
-
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a
|
|
14
|
+
"version": "3.8.0",
|
|
15
|
+
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 119-tool MCP bridge to the local desktop app.",
|
|
16
16
|
"author": {
|
|
17
17
|
"name": "Summer Engine",
|
|
18
18
|
"email": "founders@summerengine.com"
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
3
|
"_generated": "GENERATED from integrations/claude — do not edit; npm run generate:registry",
|
|
4
4
|
"name": "summer",
|
|
5
|
-
"version": "3.
|
|
6
|
-
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a
|
|
5
|
+
"version": "3.8.0",
|
|
6
|
+
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 119-tool MCP bridge to the local desktop app.",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "Summer Engine",
|
|
9
9
|
"email": "founders@summerengine.com",
|
|
@@ -116,6 +116,8 @@
|
|
|
116
116
|
"./library/skills/store-art/",
|
|
117
117
|
"./library/skills/store-listing/",
|
|
118
118
|
"./library/skills/summer-analytics/",
|
|
119
|
+
"./library/skills/summer-apps/",
|
|
120
|
+
"./library/skills/summer-apps-design/",
|
|
119
121
|
"./library/skills/summer-friends/",
|
|
120
122
|
"./library/skills/summer-leaderboards/",
|
|
121
123
|
"./library/skills/summer-match-results/",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_generated": "GENERATED from integrations/codex — do not edit; npm run generate:registry",
|
|
3
3
|
"name": "summer",
|
|
4
|
-
"version": "3.
|
|
5
|
-
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a
|
|
4
|
+
"version": "3.8.0",
|
|
5
|
+
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 119-tool MCP bridge. Build games by talking.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Summer Engine",
|
|
8
8
|
"email": "founders@summerengine.com",
|
|
@@ -111,6 +111,8 @@
|
|
|
111
111
|
"./library/skills/store-art/",
|
|
112
112
|
"./library/skills/store-listing/",
|
|
113
113
|
"./library/skills/summer-analytics/",
|
|
114
|
+
"./library/skills/summer-apps/",
|
|
115
|
+
"./library/skills/summer-apps-design/",
|
|
114
116
|
"./library/skills/summer-friends/",
|
|
115
117
|
"./library/skills/summer-leaderboards/",
|
|
116
118
|
"./library/skills/summer-match-results/",
|
|
@@ -151,7 +153,7 @@
|
|
|
151
153
|
"interface": {
|
|
152
154
|
"displayName": "Summer",
|
|
153
155
|
"shortDescription": "Superpowers for AI game dev. Build games by talking.",
|
|
154
|
-
"longDescription": "Summer turns Codex into a game-dev studio for Summer Engine. Users make Summer games with the Summer SDK and GDScript. The plugin adds game-dev skills, lifecycle hooks, and a
|
|
156
|
+
"longDescription": "Summer turns Codex into a game-dev studio for Summer Engine. Users make Summer games with the Summer SDK and GDScript. The plugin adds game-dev skills, lifecycle hooks, and a 119-tool MCP bridge for guarded project files, scene editing, asset import, play mode, diagnostics, generation, and creator workflows. Git, shell, and grep stay with the host agent. Summer follows its upstream technical base continuously; version-sensitive work uses the bundled compatibility reference instead of a fixed onboarding version. Session-start orients the session. Pre-commit doctor (opt-in) blocks bad commits.",
|
|
155
157
|
"developerName": "Summer Engine",
|
|
156
158
|
"category": "Coding",
|
|
157
159
|
"capabilities": [
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"_generated": "GENERATED from integrations/cursor — do not edit; npm run generate:registry",
|
|
4
4
|
"name": "summer",
|
|
5
5
|
"displayName": "Summer",
|
|
6
|
-
"version": "3.
|
|
7
|
-
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a
|
|
6
|
+
"version": "3.8.0",
|
|
7
|
+
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 119-tool MCP bridge to the local desktop app.",
|
|
8
8
|
"author": {
|
|
9
9
|
"name": "Summer Engine",
|
|
10
10
|
"email": "founders@summerengine.com"
|
|
@@ -123,6 +123,8 @@
|
|
|
123
123
|
"./library/skills/store-art/",
|
|
124
124
|
"./library/skills/store-listing/",
|
|
125
125
|
"./library/skills/summer-analytics/",
|
|
126
|
+
"./library/skills/summer-apps/",
|
|
127
|
+
"./library/skills/summer-apps-design/",
|
|
126
128
|
"./library/skills/summer-friends/",
|
|
127
129
|
"./library/skills/summer-leaderboards/",
|
|
128
130
|
"./library/skills/summer-match-results/",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_generated": "GENERATED from integrations/factory — do not edit; npm run generate:registry",
|
|
3
3
|
"name": "summer",
|
|
4
|
-
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a
|
|
5
|
-
"version": "3.
|
|
4
|
+
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 119-tool MCP bridge to the local desktop app.",
|
|
5
|
+
"version": "3.8.0",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Summer Engine",
|
|
8
8
|
"email": "founders@summerengine.com",
|
|
@@ -108,6 +108,8 @@
|
|
|
108
108
|
"./library/skills/store-art/",
|
|
109
109
|
"./library/skills/store-listing/",
|
|
110
110
|
"./library/skills/summer-analytics/",
|
|
111
|
+
"./library/skills/summer-apps/",
|
|
112
|
+
"./library/skills/summer-apps-design/",
|
|
111
113
|
"./library/skills/summer-friends/",
|
|
112
114
|
"./library/skills/summer-leaderboards/",
|
|
113
115
|
"./library/skills/summer-match-results/",
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to summer-engine will be documented here. Following [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and [Semantic Versioning](https://semver.org/).
|
|
4
4
|
|
|
5
|
+
## [3.8.0] - 2026-10-13
|
|
6
|
+
|
|
7
|
+
Agents build Summer Apps, team tools inside Summer Studio, and asset-only requests skip the engine.
|
|
8
|
+
|
|
9
|
+
- **Summer Apps tools.** A Summer App is a tool your team uses inside Summer Studio: a balance table, a quest editor, an asset tracker, a pick-one grid. Your agent builds it and it works on the team's data. New tools: `summer_app_guide` (the build guide), `summer_app_list`, `summer_app_create`, `summer_app_publish` (from a local folder, files or a layout), `summer_app_get`, `summer_app_events` (what the app sends to agents), `summer_app_page` (fill the app's fields and press its buttons), `summer_app_data` (read and write the app's shared data; `as: "seed"` for starter data), `summer_app_tools` and `summer_app_call` (the agent tools an app declares), `summer_app_dock` (dock an app as a panel in the editor) and `summer_app_report_gap` (tell Summer what the app needed and did not have). All but `summer_app_dock` work without the engine; they need `summer login`. If Summer Apps is not open for your account yet, they answer `not_found`.
|
|
10
|
+
- **Two new skills: `summer-apps` and `summer-apps-design`.** `summer-apps` is the build loop, Layout or code, the manifest, the SDK, data and agent tools, with a complete working app. `summer-apps-design` is how an app should look: page layout, the Summer UI kit components, tables, charts, states, and a check before you publish.
|
|
11
|
+
- **`summer_app_screenshot`: see your Summer App without opening Studio.** Summer renders the app's published version with your data and returns the picture plus what to fix: console lines, uncaught errors, calls it refused, whether the SDK connected, and the fields and buttons the app declared. It is read-only: writes, sends and paid calls are refused, so nothing changes. `width: 390` shows the phone layout, `theme: "dark"` the dark theme, `fullPage` the whole scroll; `out` also saves the PNG (`summer tool app-screenshot` saves it to `./summer-app-screenshot.png`). The `summer-apps` skill now looks at every publish this way.
|
|
12
|
+
- `summer_app_create` without `workspaceId` puts the app in the person's team: the one their Studio tab is on, else their latest team, else their personal workspace. The result says which.
|
|
13
|
+
- `summer_app_events` waits up to `timeoutSeconds`, the same argument name as the hosted tool.
|
|
14
|
+
- `summer_app_guide` has section `types`: the SDK's exact TypeScript types. Keep that file one folder above the app; a `dir` publish also skips `.d.ts` files.
|
|
15
|
+
- **`summer_app_update`** renames a Summer App or sets it kept, archived or back to scratch, so agents archive the throwaway apps they made.
|
|
16
|
+
- **`summer_enable_plugin` enables an editor plugin (`res://addons/<name>/`) and reports what really happened.** On engines that wait for the plugin, it answers `enabled` with the plugin's autoloads, or the failure code with a hint. Older engines only queue the enable; the tool then answers `queued: true` and `enabled: null` with a note, and does not claim success.
|
|
17
|
+
- Hosted tools such as `summer_studio_page` no longer fail with "Tool not found" when an agent calls them right after it connects, before it lists the tools. The call now waits for the hosted tools to finish loading, then runs.
|
|
18
|
+
- **Assets only: no engine, no brainstorm, one sign-in.** If you only want assets (a sound, an image, a model), the README has a prompt to paste that skips the engine download and the starter project, and runs setup with `--no-games` so you sign in once. `/summer` sends an asset request such as "make me a sword clash sound" straight to its asset skill instead of a game brainstorm, and `sound-effect` stops after you approve the clips when there is no project to import into.
|
|
19
|
+
- Out of credits, a generation tool now gives one link: the Add credits step in Summer Studio (`https://summerengine.com/studio/credits`). Pick an amount and pay once; no plan needed.
|
|
20
|
+
|
|
5
21
|
## [3.7.0] - 2026-10-13
|
|
6
22
|
|
|
7
23
|
Sound-effect choices open in your Studio tab right away, agents act on Summer's review feedback, and the legacy creator path is gone.
|
package/README.md
CHANGED
|
@@ -61,12 +61,22 @@ In most agents (Claude Code, Codex, Cursor, GitHub Copilot (VS Code, CLI, JetBra
|
|
|
61
61
|
|
|
62
62
|
Then ask the agent to build something.
|
|
63
63
|
|
|
64
|
+
### Only want assets?
|
|
65
|
+
|
|
66
|
+
Sound effects, music, voices, images, 3D models and video are made on Summer's servers, so you do not need the Summer Engine app for them. Paste this instead:
|
|
67
|
+
|
|
68
|
+
> Connect Summer to this agent so I can make game assets. Read github.com/summerengine/summer, connect yourself to Summer and log me in. Skip the Summer Engine app and the starter project, I only want assets.
|
|
69
|
+
|
|
70
|
+
The agent installs the skills and the MCP config and signs you in. It does not download the engine. Each asset lands in your Summer library, so a game project (in Summer Engine or anywhere else) can use it later.
|
|
71
|
+
|
|
64
72
|
---
|
|
65
73
|
|
|
66
74
|
## AGENTS READING THIS: install playbook
|
|
67
75
|
|
|
68
76
|
You are an AI coding agent. The user told you to install Summer Engine. **Run this playbook via your shell**: Bash on macOS/Linux or PowerShell on Windows. Detection first, then only install what's missing. (Once installed, your working guide is [`AGENTS.md`](AGENTS.md).)
|
|
69
77
|
|
|
78
|
+
**Assets only.** If the user only wants assets (sound effects, music, voices, images, 3D models, video), not a game built in Summer Engine, or tells you to skip the engine: run Step -1, Step 0, Step 1 with `--no-games` added (Summer Games is for playing with friends, and leaving it out saves a second sign-in), and Step 3, then stop installing. Skip Step 2 (the engine download), Step 5 and Step 6. On this path the doctor warnings for `engine-install` and `local-api` are expected; leave them. The asset tools (`summer_generate_audio`, `summer_generate_sfx_choices`, `summer_generate_image`, `summer_generate_3d`, `summer_generate_video`, `summer_search_assets`) run on Summer's servers and need only the login. Most agents load a new MCP server only after a restart. Until then, call the same tool from the shell: `npx -y summer-engine@latest tool <slug> --args '<json>'` (`summer tool --list` prints the slugs). For example, three versions of one sound for the user to pick from: `npx -y summer-engine@latest tool generate-sfx-choices --args '{"text":"sword clash"}'`. Each asset lands in the user's Summer library.
|
|
79
|
+
|
|
70
80
|
**Windows PowerShell: type `npx.cmd` wherever this playbook says `npx`.** Plain `npx` in PowerShell runs `npx.ps1`, which Windows blocks by default ("running scripts is disabled on this system"). `npx.cmd` is the same command without that block. Never change the execution policy or turn off Windows Defender to work around it. Bash (including Git Bash on Windows) can use plain `npx`.
|
|
71
81
|
|
|
72
82
|
### Step -1: Verify Node.js is on PATH
|
|
@@ -207,7 +217,7 @@ Only skip brainstorm if the user explicitly said "skip brainstorm" or "just buil
|
|
|
207
217
|
- **Don't run `npm install -g summer-engine`.** Use `npx -y summer-engine@latest ...` instead. `-g` requires `sudo` on most Mac/Linux setups, so the user will get permission errors and you'll get stuck. `npx` works without root and the MCP config we ship already points at `npx summer-engine mcp`.
|
|
208
218
|
- **Don't install Node.js without asking, and don't use anything but winget for it.** On Windows, Step -1 installs Node LTS with winget after the user says yes. On macOS/Linux, point them at https://nodejs.org and stop.
|
|
209
219
|
- **Don't run plain `npx` in Windows PowerShell, and don't change the execution policy or Defender to make it work.** Use `npx.cmd`.
|
|
210
|
-
- **Don't ask the user "do you want the engine too?" or "do you also want the CLI?"** This playbook installs all of it.
|
|
220
|
+
- **Don't ask the user "do you want the engine too?" or "do you also want the CLI?"** This playbook installs all of it. The one exception is an assets-only request (see **Assets only** at the top of this playbook).
|
|
211
221
|
- **Don't double-download.** Always run `npx -y summer-engine@latest doctor --json` first and skip the engine download and the browser login when their checks are `status: "ok"`. Step 1 (`setup`) is the exception: run it every time — it is idempotent, and doctor's top-level `ok` cannot tell you whether skills or the MCP config are installed.
|
|
212
222
|
- **Don't run `summer install` or `summer login` in the background.** They print user-facing output (engine download progress, browser-opening notice). Run them in the foreground so the user sees what's happening.
|
|
213
223
|
- **Don't skip the `--json` flag on `summer doctor`.** Text output is fragile to parse and changes per version.
|
package/commands/summer.md
CHANGED
|
@@ -25,7 +25,7 @@ You speak game-dev shorthand (PCs, NPCs, juice, hit-stop, root motion, blendspac
|
|
|
25
25
|
## What to do
|
|
26
26
|
|
|
27
27
|
1. Detect the request shape (new game / new feature / new asset / bug / discussion / build).
|
|
28
|
-
2. Confirm Summer Engine context. Call `summer_get_project_context` if available. If it returns nothing
|
|
28
|
+
2. Confirm Summer Engine context. Call `summer_get_project_context` if available. If it returns nothing and the user wants a game, they are not in a Summer project yet — route to the `brainstorm-game` skill. An asset-only request (a sound, music, a voice line, an image, a model) needs no project, no engine and no brainstorm: go straight to its asset skill. The asset tools run on Summer's servers.
|
|
29
29
|
3. Invoke the right Summer skill with the `Skill` tool. Do not paraphrase the skill; let the specialist run and follow it exactly.
|
|
30
30
|
4. Before any generation call, say what you will generate and roughly how long it takes, and wait for an OK.
|
|
31
31
|
|
|
@@ -40,6 +40,7 @@ Skills are invoked by their bare slug, such as `brainstorm-game`. There is no `s
|
|
|
40
40
|
| make me a game from scratch | `make-game` |
|
|
41
41
|
| add a [character / enemy / NPC / prop / vehicle] | `asset-strategy` |
|
|
42
42
|
| add a sound for [event] | `sound-effect` |
|
|
43
|
+
| make me a [sound / track / voice line / image / model], no game yet | `sound-effect`, `music-track`, `voice-line`, `concept-art`, `prop-model` (no project needed) |
|
|
43
44
|
| add ambient music | `music-track` |
|
|
44
45
|
| make me fire / smoke / lightning / muzzle flash / magic glow / hit spark / dissolve / water ripple | `vfx-fire`, `vfx-smoke`, `vfx-lightning`, `vfx-muzzle-flash`, `vfx-magic-glow`, `vfx-hit-spark`, `vfx-dissolve`, `vfx-water-ripple` |
|
|
45
46
|
| build the FPS controller | `fps-controller` |
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Summer Apps (summer_app_*): tools a game team uses inside Summer Studio,
|
|
4
|
+
* built by agents. Every cloud tool here calls the Summer web API under
|
|
5
|
+
* /api/mcp/apps with the signed-in Summer account; summer_app_dock asks the
|
|
6
|
+
* running editor to dock an app (engine ops OpenAppDock / CloseAppDock /
|
|
7
|
+
* ListAppDocks).
|
|
8
|
+
*
|
|
9
|
+
* One implementation for both faces: the MCP tools (src/mcp/tools/app-tools.ts)
|
|
10
|
+
* and `summer tool app-*` (tool-dispatch.ts) share the schemas and functions
|
|
11
|
+
* here and pass their own client surface.
|
|
12
|
+
*/
|
|
13
|
+
export declare const APPS_ENDPOINT = "/api/mcp/apps";
|
|
14
|
+
/** The server's long-poll ceiling for summer_app_events. */
|
|
15
|
+
export declare const MAX_APP_EVENTS_WAIT_SECONDS = 50;
|
|
16
|
+
export declare const APP_GUIDE_SECTIONS: readonly ["all", "overview", "manifest", "sdk", "kit", "layout", "design", "examples", "types"];
|
|
17
|
+
export declare const APP_DOCK_SLOTS: readonly ["left", "right", "bottom"];
|
|
18
|
+
export declare const appGuideArgsSchema: z.ZodObject<{
|
|
19
|
+
section: z.ZodDefault<z.ZodEnum<["all", "overview", "manifest", "sdk", "kit", "layout", "design", "examples", "types"]>>;
|
|
20
|
+
}, "strip", z.ZodTypeAny, {
|
|
21
|
+
section: "all" | "kit" | "layout" | "examples" | "manifest" | "overview" | "sdk" | "design" | "types";
|
|
22
|
+
}, {
|
|
23
|
+
section?: "all" | "kit" | "layout" | "examples" | "manifest" | "overview" | "sdk" | "design" | "types" | undefined;
|
|
24
|
+
}>;
|
|
25
|
+
export declare const appListArgsSchema: z.ZodObject<{
|
|
26
|
+
workspaceId: z.ZodOptional<z.ZodString>;
|
|
27
|
+
q: z.ZodOptional<z.ZodString>;
|
|
28
|
+
}, "strip", z.ZodTypeAny, {
|
|
29
|
+
workspaceId?: string | undefined;
|
|
30
|
+
q?: string | undefined;
|
|
31
|
+
}, {
|
|
32
|
+
workspaceId?: string | undefined;
|
|
33
|
+
q?: string | undefined;
|
|
34
|
+
}>;
|
|
35
|
+
export declare const appCreateArgsSchema: z.ZodObject<{
|
|
36
|
+
name: z.ZodString;
|
|
37
|
+
purpose: z.ZodOptional<z.ZodString>;
|
|
38
|
+
format: z.ZodDefault<z.ZodEnum<["code", "layout"]>>;
|
|
39
|
+
workspaceId: z.ZodOptional<z.ZodString>;
|
|
40
|
+
folder: z.ZodOptional<z.ZodString>;
|
|
41
|
+
}, "strip", z.ZodTypeAny, {
|
|
42
|
+
name: string;
|
|
43
|
+
format: "code" | "layout";
|
|
44
|
+
folder?: string | undefined;
|
|
45
|
+
workspaceId?: string | undefined;
|
|
46
|
+
purpose?: string | undefined;
|
|
47
|
+
}, {
|
|
48
|
+
name: string;
|
|
49
|
+
format?: "code" | "layout" | undefined;
|
|
50
|
+
folder?: string | undefined;
|
|
51
|
+
workspaceId?: string | undefined;
|
|
52
|
+
purpose?: string | undefined;
|
|
53
|
+
}>;
|
|
54
|
+
export declare const appPublishArgsSchema: z.ZodObject<{
|
|
55
|
+
appId: z.ZodString;
|
|
56
|
+
dir: z.ZodOptional<z.ZodString>;
|
|
57
|
+
files: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
58
|
+
path: z.ZodString;
|
|
59
|
+
content: z.ZodString;
|
|
60
|
+
encoding: z.ZodDefault<z.ZodEnum<["utf8", "base64"]>>;
|
|
61
|
+
}, "strip", z.ZodTypeAny, {
|
|
62
|
+
encoding: "utf8" | "base64";
|
|
63
|
+
path: string;
|
|
64
|
+
content: string;
|
|
65
|
+
}, {
|
|
66
|
+
path: string;
|
|
67
|
+
content: string;
|
|
68
|
+
encoding?: "utf8" | "base64" | undefined;
|
|
69
|
+
}>, "many">>;
|
|
70
|
+
layout: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
71
|
+
manifest: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
72
|
+
note: z.ZodOptional<z.ZodString>;
|
|
73
|
+
idempotencyKey: z.ZodOptional<z.ZodString>;
|
|
74
|
+
}, "strip", z.ZodTypeAny, {
|
|
75
|
+
manifest: Record<string, unknown>;
|
|
76
|
+
appId: string;
|
|
77
|
+
note?: string | undefined;
|
|
78
|
+
files?: {
|
|
79
|
+
encoding: "utf8" | "base64";
|
|
80
|
+
path: string;
|
|
81
|
+
content: string;
|
|
82
|
+
}[] | undefined;
|
|
83
|
+
idempotencyKey?: string | undefined;
|
|
84
|
+
dir?: string | undefined;
|
|
85
|
+
layout?: Record<string, unknown> | undefined;
|
|
86
|
+
}, {
|
|
87
|
+
manifest: Record<string, unknown>;
|
|
88
|
+
appId: string;
|
|
89
|
+
note?: string | undefined;
|
|
90
|
+
files?: {
|
|
91
|
+
path: string;
|
|
92
|
+
content: string;
|
|
93
|
+
encoding?: "utf8" | "base64" | undefined;
|
|
94
|
+
}[] | undefined;
|
|
95
|
+
idempotencyKey?: string | undefined;
|
|
96
|
+
dir?: string | undefined;
|
|
97
|
+
layout?: Record<string, unknown> | undefined;
|
|
98
|
+
}>;
|
|
99
|
+
export declare const appGetArgsSchema: z.ZodObject<{
|
|
100
|
+
appId: z.ZodString;
|
|
101
|
+
}, "strip", z.ZodTypeAny, {
|
|
102
|
+
appId: string;
|
|
103
|
+
}, {
|
|
104
|
+
appId: string;
|
|
105
|
+
}>;
|
|
106
|
+
export declare const appEventsArgsSchema: z.ZodObject<{
|
|
107
|
+
appId: z.ZodString;
|
|
108
|
+
after: z.ZodDefault<z.ZodNumber>;
|
|
109
|
+
timeoutSeconds: z.ZodDefault<z.ZodNumber>;
|
|
110
|
+
kinds: z.ZodOptional<z.ZodArray<z.ZodEnum<["agent", "error", "feedback", "tool"]>, "many">>;
|
|
111
|
+
}, "strip", z.ZodTypeAny, {
|
|
112
|
+
timeoutSeconds: number;
|
|
113
|
+
after: number;
|
|
114
|
+
appId: string;
|
|
115
|
+
kinds?: ("error" | "agent" | "tool" | "feedback")[] | undefined;
|
|
116
|
+
}, {
|
|
117
|
+
appId: string;
|
|
118
|
+
kinds?: ("error" | "agent" | "tool" | "feedback")[] | undefined;
|
|
119
|
+
timeoutSeconds?: number | undefined;
|
|
120
|
+
after?: number | undefined;
|
|
121
|
+
}>;
|
|
122
|
+
export declare const appPageArgsSchema: z.ZodObject<{
|
|
123
|
+
appId: z.ZodString;
|
|
124
|
+
fill: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
125
|
+
field: z.ZodString;
|
|
126
|
+
value: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>;
|
|
127
|
+
}, "strip", z.ZodTypeAny, {
|
|
128
|
+
value: string | number | boolean;
|
|
129
|
+
field: string;
|
|
130
|
+
}, {
|
|
131
|
+
value: string | number | boolean;
|
|
132
|
+
field: string;
|
|
133
|
+
}>, "many">>;
|
|
134
|
+
press: z.ZodOptional<z.ZodString>;
|
|
135
|
+
}, "strip", z.ZodTypeAny, {
|
|
136
|
+
appId: string;
|
|
137
|
+
fill?: {
|
|
138
|
+
value: string | number | boolean;
|
|
139
|
+
field: string;
|
|
140
|
+
}[] | undefined;
|
|
141
|
+
press?: string | undefined;
|
|
142
|
+
}, {
|
|
143
|
+
appId: string;
|
|
144
|
+
fill?: {
|
|
145
|
+
value: string | number | boolean;
|
|
146
|
+
field: string;
|
|
147
|
+
}[] | undefined;
|
|
148
|
+
press?: string | undefined;
|
|
149
|
+
}>;
|
|
150
|
+
export declare const appUpdateArgsSchema: z.ZodObject<{
|
|
151
|
+
appId: z.ZodString;
|
|
152
|
+
name: z.ZodOptional<z.ZodString>;
|
|
153
|
+
purpose: z.ZodOptional<z.ZodString>;
|
|
154
|
+
status: z.ZodOptional<z.ZodEnum<["scratch", "kept", "archived"]>>;
|
|
155
|
+
folder: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
156
|
+
}, "strip", z.ZodTypeAny, {
|
|
157
|
+
appId: string;
|
|
158
|
+
status?: "scratch" | "kept" | "archived" | undefined;
|
|
159
|
+
name?: string | undefined;
|
|
160
|
+
folder?: string | null | undefined;
|
|
161
|
+
purpose?: string | undefined;
|
|
162
|
+
}, {
|
|
163
|
+
appId: string;
|
|
164
|
+
status?: "scratch" | "kept" | "archived" | undefined;
|
|
165
|
+
name?: string | undefined;
|
|
166
|
+
folder?: string | null | undefined;
|
|
167
|
+
purpose?: string | undefined;
|
|
168
|
+
}>;
|
|
169
|
+
export declare const appScreenshotArgsSchema: z.ZodObject<{
|
|
170
|
+
appId: z.ZodString;
|
|
171
|
+
version: z.ZodOptional<z.ZodNumber>;
|
|
172
|
+
width: z.ZodDefault<z.ZodNumber>;
|
|
173
|
+
height: z.ZodDefault<z.ZodNumber>;
|
|
174
|
+
theme: z.ZodDefault<z.ZodEnum<["light", "dark"]>>;
|
|
175
|
+
fullPage: z.ZodDefault<z.ZodBoolean>;
|
|
176
|
+
params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
177
|
+
out: z.ZodOptional<z.ZodString>;
|
|
178
|
+
}, "strip", z.ZodTypeAny, {
|
|
179
|
+
width: number;
|
|
180
|
+
height: number;
|
|
181
|
+
theme: "light" | "dark";
|
|
182
|
+
appId: string;
|
|
183
|
+
fullPage: boolean;
|
|
184
|
+
version?: number | undefined;
|
|
185
|
+
params?: Record<string, string> | undefined;
|
|
186
|
+
out?: string | undefined;
|
|
187
|
+
}, {
|
|
188
|
+
appId: string;
|
|
189
|
+
version?: number | undefined;
|
|
190
|
+
width?: number | undefined;
|
|
191
|
+
height?: number | undefined;
|
|
192
|
+
params?: Record<string, string> | undefined;
|
|
193
|
+
out?: string | undefined;
|
|
194
|
+
theme?: "light" | "dark" | undefined;
|
|
195
|
+
fullPage?: boolean | undefined;
|
|
196
|
+
}>;
|
|
197
|
+
export declare const appDataArgsSchema: z.ZodObject<{
|
|
198
|
+
appId: z.ZodString;
|
|
199
|
+
collection: z.ZodOptional<z.ZodString>;
|
|
200
|
+
after: z.ZodOptional<z.ZodString>;
|
|
201
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
202
|
+
ops: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">>;
|
|
203
|
+
as: z.ZodOptional<z.ZodEnum<["agent", "seed"]>>;
|
|
204
|
+
}, "strip", z.ZodTypeAny, {
|
|
205
|
+
limit: number;
|
|
206
|
+
appId: string;
|
|
207
|
+
ops?: Record<string, unknown>[] | undefined;
|
|
208
|
+
after?: string | undefined;
|
|
209
|
+
as?: "seed" | "agent" | undefined;
|
|
210
|
+
collection?: string | undefined;
|
|
211
|
+
}, {
|
|
212
|
+
appId: string;
|
|
213
|
+
ops?: Record<string, unknown>[] | undefined;
|
|
214
|
+
limit?: number | undefined;
|
|
215
|
+
after?: string | undefined;
|
|
216
|
+
as?: "seed" | "agent" | undefined;
|
|
217
|
+
collection?: string | undefined;
|
|
218
|
+
}>;
|
|
219
|
+
export declare const appToolsArgsSchema: z.ZodObject<{
|
|
220
|
+
appId: z.ZodString;
|
|
221
|
+
}, "strip", z.ZodTypeAny, {
|
|
222
|
+
appId: string;
|
|
223
|
+
}, {
|
|
224
|
+
appId: string;
|
|
225
|
+
}>;
|
|
226
|
+
export declare const appCallArgsSchema: z.ZodObject<{
|
|
227
|
+
appId: z.ZodString;
|
|
228
|
+
tool: z.ZodString;
|
|
229
|
+
input: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
230
|
+
}, "strip", z.ZodTypeAny, {
|
|
231
|
+
input: Record<string, unknown>;
|
|
232
|
+
tool: string;
|
|
233
|
+
appId: string;
|
|
234
|
+
}, {
|
|
235
|
+
tool: string;
|
|
236
|
+
appId: string;
|
|
237
|
+
input?: Record<string, unknown> | undefined;
|
|
238
|
+
}>;
|
|
239
|
+
export declare const appReportGapArgsSchema: z.ZodObject<{
|
|
240
|
+
capability: z.ZodString;
|
|
241
|
+
detail: z.ZodOptional<z.ZodString>;
|
|
242
|
+
method: z.ZodOptional<z.ZodString>;
|
|
243
|
+
appId: z.ZodOptional<z.ZodString>;
|
|
244
|
+
}, "strip", z.ZodTypeAny, {
|
|
245
|
+
capability: string;
|
|
246
|
+
method?: string | undefined;
|
|
247
|
+
detail?: string | undefined;
|
|
248
|
+
appId?: string | undefined;
|
|
249
|
+
}, {
|
|
250
|
+
capability: string;
|
|
251
|
+
method?: string | undefined;
|
|
252
|
+
detail?: string | undefined;
|
|
253
|
+
appId?: string | undefined;
|
|
254
|
+
}>;
|
|
255
|
+
export declare const appDockArgsSchema: z.ZodObject<{
|
|
256
|
+
action: z.ZodDefault<z.ZodEnum<["open", "close", "list"]>>;
|
|
257
|
+
appId: z.ZodOptional<z.ZodString>;
|
|
258
|
+
slot: z.ZodDefault<z.ZodEnum<["left", "right", "bottom"]>>;
|
|
259
|
+
}, "strip", z.ZodTypeAny, {
|
|
260
|
+
action: "close" | "open" | "list";
|
|
261
|
+
slot: "left" | "right" | "bottom";
|
|
262
|
+
appId?: string | undefined;
|
|
263
|
+
}, {
|
|
264
|
+
action?: "close" | "open" | "list" | undefined;
|
|
265
|
+
appId?: string | undefined;
|
|
266
|
+
slot?: "left" | "right" | "bottom" | undefined;
|
|
267
|
+
}>;
|
|
268
|
+
export interface AppsReply {
|
|
269
|
+
ok: boolean;
|
|
270
|
+
status: number;
|
|
271
|
+
data: Record<string, unknown>;
|
|
272
|
+
}
|
|
273
|
+
export interface AppsDeps {
|
|
274
|
+
request(method: "GET" | "POST", endpoint: string, init: {
|
|
275
|
+
query?: URLSearchParams;
|
|
276
|
+
body?: unknown;
|
|
277
|
+
timeoutMs: number;
|
|
278
|
+
}): Promise<AppsReply>;
|
|
279
|
+
readDir?: (dir: string) => Promise<Array<{
|
|
280
|
+
path: string;
|
|
281
|
+
content: string;
|
|
282
|
+
encoding: "utf8" | "base64";
|
|
283
|
+
}>>;
|
|
284
|
+
}
|
|
285
|
+
/** Fetch with the Summer account token; errors come back as replies, never throws. */
|
|
286
|
+
export declare function appsGateway(surface: "mcp" | "cli", tool: string): AppsDeps["request"];
|
|
287
|
+
export declare function appGuide(args: z.output<typeof appGuideArgsSchema>, deps: AppsDeps): Promise<Record<string, unknown>>;
|
|
288
|
+
export declare function appList(args: z.output<typeof appListArgsSchema>, deps: AppsDeps): Promise<Record<string, unknown>>;
|
|
289
|
+
export declare function appCreate(args: z.output<typeof appCreateArgsSchema>, deps: AppsDeps): Promise<Record<string, unknown>>;
|
|
290
|
+
/** Every file under dir (dotfiles, node_modules and .d.ts type files skipped), as publish files. */
|
|
291
|
+
export declare function readAppDir(dir: string): Promise<Array<{
|
|
292
|
+
path: string;
|
|
293
|
+
content: string;
|
|
294
|
+
encoding: "utf8" | "base64";
|
|
295
|
+
}>>;
|
|
296
|
+
export declare function appPublish(args: z.output<typeof appPublishArgsSchema>, deps: AppsDeps): Promise<Record<string, unknown>>;
|
|
297
|
+
export declare function appGet(args: z.output<typeof appGetArgsSchema>, deps: AppsDeps): Promise<Record<string, unknown>>;
|
|
298
|
+
export declare function appEvents(args: z.output<typeof appEventsArgsSchema>, deps: AppsDeps): Promise<Record<string, unknown>>;
|
|
299
|
+
export declare function appPage(args: z.output<typeof appPageArgsSchema>, deps: AppsDeps): Promise<Record<string, unknown>>;
|
|
300
|
+
export declare function appUpdate(args: z.output<typeof appUpdateArgsSchema>, deps: AppsDeps): Promise<Record<string, unknown>>;
|
|
301
|
+
/**
|
|
302
|
+
* summer_app_screenshot: the server renders the app headless and read-only as the
|
|
303
|
+
* person and answers the PNG (base64) with its console, errors and declared page.
|
|
304
|
+
* The image moves to `image`; `out` also writes it to disk.
|
|
305
|
+
*/
|
|
306
|
+
export declare function appScreenshot(args: z.output<typeof appScreenshotArgsSchema>, deps: AppsDeps & {
|
|
307
|
+
writeFile?: (file: string, data: Buffer) => Promise<void>;
|
|
308
|
+
}): Promise<Record<string, unknown>>;
|
|
309
|
+
export declare function appData(args: z.output<typeof appDataArgsSchema>, deps: AppsDeps): Promise<Record<string, unknown>>;
|
|
310
|
+
export declare function appTools(args: z.output<typeof appToolsArgsSchema>, deps: AppsDeps): Promise<Record<string, unknown>>;
|
|
311
|
+
export declare function appCall(args: z.output<typeof appCallArgsSchema>, deps: AppsDeps): Promise<Record<string, unknown>>;
|
|
312
|
+
export declare function appReportGap(args: z.output<typeof appReportGapArgsSchema>, deps: AppsDeps): Promise<Record<string, unknown>>;
|
|
313
|
+
export declare const APP_DOCK_FALLBACK = "This engine build cannot dock apps yet. Open the app in the Summer Studio tab instead (summer_studio_open with /studio/apps/<appId>), or update Summer Engine.";
|
|
314
|
+
/** The engine op for one dock action. */
|
|
315
|
+
export declare function appDockOp(args: z.output<typeof appDockArgsSchema>): {
|
|
316
|
+
op: string;
|
|
317
|
+
[key: string]: unknown;
|
|
318
|
+
};
|