acrylblends 1.1.0 → 1.3.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/README.md +9 -0
- package/dist/index.d.ts +47 -2
- package/dist/index.js +2017 -32
- package/dist/index.js.map +1 -1
- package/docs/framework/agents/index.md +1 -1
- package/docs/framework/getting-started/desktop.md +23 -4
- package/docs/framework/guides/create-acrylblends.md +5 -3
- package/docs/framework/workshop/README.md +139 -153
- package/docs/framework/workshop/facilitator.md +69 -101
- package/legacy/README.md +9 -0
- package/legacy/agent/157ce3db1112/src/app.ts +98 -0
- package/legacy/agent/157ce3db1112/src/routes.ts +63 -0
- package/legacy/agent/24c681a00fca/src/app.ts +160 -0
- package/legacy/agent/24c681a00fca/src/routes.ts +83 -0
- package/legacy/agent/2e790da977b2/src/app.ts +98 -0
- package/legacy/agent/2e790da977b2/src/routes.ts +63 -0
- package/legacy/agent/6307045545dc/src/app.ts +168 -0
- package/legacy/agent/6307045545dc/src/routes.ts +83 -0
- package/legacy/agent/6a5fb9c15c53/src/app.ts +158 -0
- package/legacy/agent/6a5fb9c15c53/src/routes.ts +83 -0
- package/legacy/agent/71fb54a5a942/src/app.ts +111 -0
- package/legacy/agent/71fb54a5a942/src/routes.ts +63 -0
- package/legacy/agent/74ece148269c/src/app.ts +168 -0
- package/legacy/agent/74ece148269c/src/routes.ts +93 -0
- package/legacy/agent/855359304707/src/app.ts +168 -0
- package/legacy/agent/855359304707/src/routes.ts +126 -0
- package/legacy/agent/b5ef3c786ae4/src/app.ts +127 -0
- package/legacy/agent/b5ef3c786ae4/src/routes.ts +76 -0
- package/legacy/agent/c2f30958043b/src/app.ts +98 -0
- package/legacy/agent/c2f30958043b/src/routes.ts +53 -0
- package/legacy/blank/5a91c558af22/src/routes.ts +18 -0
- package/legacy/blank/9c650cf52bf3/src/routes.ts +14 -0
- package/legacy/blank/aea589283445/src/routes.ts +16 -0
- package/legacy/blank/b2cbb759c889/src/routes.ts +16 -0
- package/legacy/blank/d6d371c9a65e/src/routes.ts +18 -0
- package/legacy/chat/7076cc821e2c/src/app.ts +72 -0
- package/legacy/chat/7076cc821e2c/src/routes.ts +13 -0
- package/legacy/chat/7dbe6d5170df/src/app.ts +107 -0
- package/legacy/chat/7dbe6d5170df/src/routes.ts +19 -0
- package/legacy/chat/a9a9ab44c58e/src/app.ts +107 -0
- package/legacy/chat/a9a9ab44c58e/src/routes.ts +15 -0
- package/legacy/chat/f20ad9a51b06/src/app.ts +106 -0
- package/legacy/chat/f20ad9a51b06/src/routes.ts +15 -0
- package/legacy/layouts.json +524 -0
- package/legacy/nodejs/1d477f37aaf4/src/app.ts +92 -0
- package/legacy/nodejs/1d477f37aaf4/src/routes.ts +40 -0
- package/legacy/nodejs/b1bd9462496c/src/app.ts +61 -0
- package/legacy/nodejs/b1bd9462496c/src/routes.ts +37 -0
- package/legacy/nodejs/d5bab75076ef/src/app.ts +95 -0
- package/legacy/nodejs/d5bab75076ef/src/routes.ts +40 -0
- package/legacy/notes/4edc36949c15/src/app.ts +107 -0
- package/legacy/notes/4edc36949c15/src/routes.ts +14 -0
- package/legacy/notes/6cab2d09747c/src/app.ts +72 -0
- package/legacy/notes/6cab2d09747c/src/routes.ts +12 -0
- package/legacy/notes/7ca2dfed623a/src/app.ts +106 -0
- package/legacy/notes/7ca2dfed623a/src/routes.ts +14 -0
- package/legacy/todo/02e613b3625c/src/app.ts +71 -0
- package/legacy/todo/02e613b3625c/src/todo.ts +123 -0
- package/legacy/todo/45694a8d9e15/src/app.ts +71 -0
- package/legacy/todo/45694a8d9e15/src/todo.ts +96 -0
- package/legacy/todo/5923d3a6099f/src/app.ts +71 -0
- package/legacy/todo/5923d3a6099f/src/todo.ts +125 -0
- package/legacy/todo/849a18d66dc1/src/app.ts +91 -0
- package/legacy/todo/849a18d66dc1/src/todo.ts +125 -0
- package/legacy/todo/8e64211312f3/src/app.ts +71 -0
- package/legacy/todo/8e64211312f3/src/todo.ts +125 -0
- package/legacy/todo/b79078a87565/src/app.ts +71 -0
- package/legacy/todo/b79078a87565/src/todo.ts +125 -0
- package/lib/{audit-BFpULBCj.d.ts → audit-Bok_UNCn.d.ts} +26 -3
- package/lib/{client-modules-drj4mjhj.js → client-modules-Bkdr83jO.js} +1 -1
- package/lib/cordis/door.d.ts +87 -9
- package/lib/cordis/door.js +324 -60
- package/lib/cordis/inspect.js +1 -1
- package/lib/cordis/node-server.d.ts +101 -3
- package/lib/cordis/node-server.js +3 -3
- package/lib/cordis/router-http.d.ts +7 -1
- package/lib/cordis/router-http.js +44 -3
- package/lib/cordis/router.d.ts +1 -1
- package/lib/cordis/router.js +1 -1
- package/lib/cordis/state.js +1 -1
- package/lib/door/host.d.ts +2 -2
- package/lib/door/host.js +1 -1
- package/lib/door/page.d.ts +10 -1
- package/lib/door/page.js +46 -7
- package/lib/door/protocol.d.ts +1 -1
- package/lib/drivers.d.ts +10 -1
- package/lib/{index-DMOtA-NJ.d.ts → index-DGq7H0lb.d.ts} +11 -1
- package/lib/node-server.d.ts +7 -1
- package/lib/node-server.js +2 -2
- package/lib/{protocol-a2aqrp2X.d.ts → protocol-BeIYCgTo.d.ts} +4 -0
- package/lib/{snapshot-text-BwM6T2nG.js → snapshot-text-CXTnjxGx.js} +87 -7
- package/lib/src-CtkIX_Gg.js +427 -0
- package/lib/{src-BTBm4OPD.js → src-iBJ2ysV9.js} +77 -14
- package/lib/{test-websocket-BLeEvybj.js → test-websocket-CQOSvBth.js} +17 -7
- package/lib/{test-websocket-DyeS50Tr.d.ts → test-websocket-GUTAkFQT.d.ts} +3 -1
- package/package.json +2 -1
- package/plugins/acryl-door/plugin.json +3 -0
- package/plugins/acryl-door/src/cli/acryl.ts +63 -6
- package/plugins/acryl-door/src/host/channel.ts +86 -9
- package/plugins/acryl-door/src/host/chat-tools.ts +8 -6
- package/plugins/acryl-door/src/host/door-file.ts +7 -2
- package/plugins/acryl-door/src/host/door.ts +128 -24
- package/plugins/acryl-door/src/host/operator-routes.ts +21 -1
- package/plugins/acryl-door/src/host/page-routes.ts +3 -1
- package/plugins/acryl-door/src/host/page-socket.ts +18 -8
- package/plugins/acryl-door/src/host/verbs.ts +14 -1
- package/plugins/acryl-door/src/index.ts +168 -30
- package/plugins/acryl-door/src/page/base.ts +32 -0
- package/plugins/acryl-door/src/page/channel.ts +3 -1
- package/plugins/acryl-door/src/page/driver/accessibility.ts +11 -0
- package/plugins/acryl-door/src/page/driver/actions.ts +4 -0
- package/plugins/acryl-door/src/page/driver/driver.ts +32 -4
- package/plugins/acryl-door/src/page/driver/snapshot.ts +5 -2
- package/plugins/acryl-door/src/page/index.ts +41 -2
- package/plugins/acryl-door/src/page/outline.ts +56 -0
- package/plugins/acryl-door/src/page/protocol.ts +4 -0
- package/plugins/acryl-door/src/page/snapshot-text.ts +2 -1
- package/plugins/acryl-node-server/src/adapter/listener.ts +4 -0
- package/plugins/acryl-node-server/src/adapter/raw.ts +18 -0
- package/plugins/acryl-node-server/src/adapter/websocket.ts +15 -9
- package/plugins/acryl-node-server/src/client-modules.ts +7 -1
- package/plugins/acryl-node-server/src/index.ts +304 -16
- package/plugins/acryl-node-server/src/upgrade-hub.ts +2 -2
- package/plugins/acryl-page/plugin.json +12 -0
- package/plugins/acryl-page/src/index.ts +163 -0
- package/plugins/acryl-router/src/service.ts +77 -14
- package/plugins/acryl-router-http/src/index.ts +15 -1
- package/plugins/acryl-router-http/src/serve.ts +31 -0
- package/plugins/acryl-web-server/plugin.json +14 -0
- package/plugins/acryl-web-server/src/index.ts +164 -0
- package/plugins/agent/agent.ts +38 -7
- package/plugins/agent/index.ts +1 -1
- package/plugins/agent/model.ts +10 -2
- package/plugins/agent/tools.ts +9 -3
- package/plugins/agent-panel/client/describe.ts +57 -0
- package/plugins/agent-panel/client/driver-pick.ts +22 -0
- package/plugins/agent-panel/client/frame.ts +51 -0
- package/plugins/agent-panel/client/main.ts +238 -26
- package/plugins/agent-panel/drivers.ts +7 -2
- package/plugins/agent-panel/headless.ts +5 -2
- package/plugins/agent-panel/index.ts +146 -57
- package/plugins/agent-panel/mount.ts +27 -0
- package/plugins/agent-panel/visitors.ts +231 -0
- package/plugins/builder/index.ts +13 -35
- package/plugins/builder/package.ts +186 -0
- package/plugins/builder/plugin.json +3 -1
- package/plugins/desktop/frame.ts +231 -0
- package/plugins/desktop/launch.ts +44 -9
- package/plugins/desktop/main.ts +100 -32
- package/plugins/desktop/window.ts +21 -4
- package/plugins/driver-pty/client/terminal.ts +4 -1
- package/plugins/driver-pty/index.ts +38 -11
- package/plugins/driver-pty/spawn.ts +38 -0
- package/plugins/driver-pty/terminal.ts +2 -0
- package/plugins/extensions/index.ts +47 -18
- package/plugins/extensions/plugin-store.ts +27 -0
- package/plugins/extensions/plugin.json +1 -1
- package/plugins/extensions/resolve.ts +13 -0
- package/plugins/extensions/stage.ts +15 -5
- package/plugins/feedback/client.d.ts +22 -0
- package/plugins/feedback/client.js +471 -0
- package/plugins/feedback/index.ts +143 -0
- package/plugins/feedback/plugin.json +11 -0
- package/plugins/feedback/store.ts +307 -0
- package/plugins/home/index.ts +122 -0
- package/plugins/home/plugin.json +11 -0
- package/plugins/instance/index.ts +6 -0
- package/plugins/manifest/app-plugins.ts +86 -0
- package/plugins/manifest/index.ts +12 -2
- package/plugins/manifest/plugin.json +1 -1
- package/plugins/manifest/snapshot.ts +275 -0
- package/plugins/openai/index.ts +64 -5
- package/plugins/openai/prompt.ts +23 -0
- package/plugins/plugin-share/README.md +51 -0
- package/plugins/plugin-share/index.ts +467 -0
- package/plugins/plugin-share/plugin.json +15 -0
- package/plugins/plugin-share/publish.ts +65 -0
- package/plugins/plugin-share/pull-check.ts +129 -0
- package/plugins/plugin-share/pulled-records.ts +70 -0
- package/shared/AGENTS.core.md +36 -16
- package/shared/skills/acryl-add-ui/SKILL.md +19 -0
- package/shared/skills/acryl-app/SKILL.md +13 -0
- package/shared/skills/acryl-build-plugin/SKILL.md +22 -0
- package/shared/skills/acryl-change-plugin/SKILL.md +14 -0
- package/shared/skills/acryl-diagnose-plugin/SKILL.md +13 -0
- package/shared/skills/acryl-fix-plugin/SKILL.md +13 -0
- package/shared/skills/acryl-remove-plugin/SKILL.md +12 -0
- package/shared/skills/acryl-share-plugin/SKILL.md +16 -0
- package/shared/skills/cordis-plugin/SKILL.md +26 -0
- package/templates/agent/.gitattributes +2 -0
- package/templates/agent/AGENTS.md +1 -1
- package/templates/agent/blend.yaml +6 -0
- package/templates/agent/gitignore +1 -0
- package/templates/agent/package.json +1 -0
- package/templates/agent/src/app.ts +154 -33
- package/templates/agent/src/frame.ts +17 -0
- package/templates/agent/src/main.ts +5 -3
- package/templates/agent/src/routes.ts +38 -19
- package/templates/agent/template.json +3 -0
- package/templates/agent/test/app.test.ts +45 -3
- package/templates/blank/.gitattributes +2 -0
- package/templates/blank/AGENTS.md +3 -2
- package/templates/blank/blend.yaml +11 -0
- package/templates/blank/gitignore +1 -0
- package/templates/blank/package.json +1 -0
- package/templates/blank/src/app.ts +100 -29
- package/templates/blank/src/door.ts +7 -0
- package/templates/blank/src/first-page.ts +5 -0
- package/templates/blank/src/frame.ts +17 -0
- package/templates/blank/src/routes.ts +65 -8
- package/templates/blank/template.json +14 -1
- package/templates/blank/test/app.test.ts +103 -16
- package/templates/chat/.gitattributes +2 -0
- package/templates/chat/blend.yaml +2 -1
- package/templates/chat/gitignore +1 -0
- package/templates/chat/package.json +1 -0
- package/templates/chat/src/app.ts +72 -22
- package/templates/chat/src/chat-app.ts +11 -2
- package/templates/chat/src/client/chat.tsx +4 -2
- package/templates/chat/src/frame.ts +17 -0
- package/templates/chat/src/page.tsx +6 -4
- package/templates/chat/src/routes.ts +14 -4
- package/templates/chat/src/runtime.ts +9 -3
- package/templates/chat/template.json +3 -1
- package/templates/chat/test/chat.test.ts +46 -1
- package/templates/chat/test/server.test.ts +17 -3
- package/templates/nodejs/.gitattributes +2 -0
- package/templates/nodejs/blend.yaml +2 -1
- package/templates/nodejs/gitignore +1 -0
- package/templates/nodejs/package.json +1 -0
- package/templates/nodejs/src/app.ts +76 -21
- package/templates/nodejs/src/frame.ts +17 -0
- package/templates/nodejs/src/page.tsx +3 -3
- package/templates/nodejs/src/routes.ts +32 -13
- package/templates/nodejs/template.json +3 -1
- package/templates/nodejs/test/app.test.ts +38 -3
- package/templates/nodejs/test/server.test.ts +17 -3
- package/templates/notes/.gitattributes +2 -0
- package/templates/notes/blend.yaml +2 -1
- package/templates/notes/gitignore +1 -0
- package/templates/notes/package.json +1 -0
- package/templates/notes/src/app.ts +72 -22
- package/templates/notes/src/frame.ts +17 -0
- package/templates/notes/src/notes-app.ts +24 -17
- package/templates/notes/src/routes.ts +11 -4
- package/templates/notes/src/runtime.ts +9 -3
- package/templates/notes/src/views.tsx +26 -17
- package/templates/notes/template.json +3 -1
- package/templates/notes/test/notes.test.ts +39 -1
- package/templates/notes/test/server.test.ts +17 -3
- package/templates/todo/.gitattributes +2 -0
- package/templates/todo/blend.yaml +3 -0
- package/templates/todo/gitignore +1 -0
- package/templates/todo/package.json +1 -0
- package/templates/todo/src/app.ts +81 -27
- package/templates/todo/src/door.ts +7 -0
- package/templates/todo/src/frame.ts +17 -0
- package/templates/todo/src/page.ts +13 -6
- package/templates/todo/src/todo.ts +18 -6
- package/templates/todo/template.json +11 -1
- package/templates/todo/test/todo.test.ts +67 -9
- package/lib/src-LX0E4ec4.js +0 -117
- package/shared/SKILL.md +0 -14
package/lib/cordis/door.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { f as UiActionResult, y as UiSnapshot } from "../protocol-
|
|
2
|
-
import { i as UiChannel, r as PageStream, t as AuditLog } from "../audit-
|
|
1
|
+
import { f as UiActionResult, y as UiSnapshot } from "../protocol-BeIYCgTo.js";
|
|
2
|
+
import { i as UiChannel, r as PageStream, t as AuditLog } from "../audit-Bok_UNCn.js";
|
|
3
3
|
import { Context } from "@deepseek-ai/cordis";
|
|
4
4
|
import z from "@deepseek-ai/schemastery";
|
|
5
5
|
|
|
@@ -84,7 +84,7 @@ declare class ShellChannel {
|
|
|
84
84
|
}
|
|
85
85
|
//#endregion
|
|
86
86
|
//#region ../../plugins/acryl-door/src/host/door.d.ts
|
|
87
|
-
type DoorErrorCode = 'invalid' | 'unknown-verb' | 'unavailable' | 'not-exposed' | 'outside-app' | 'failed' | ShellErrorCode;
|
|
87
|
+
type DoorErrorCode = 'invalid' | 'unknown-verb' | 'unavailable' | 'not-exposed' | 'outside-app' | 'failed' | 'refused' | ShellErrorCode;
|
|
88
88
|
declare class DoorError extends Error {
|
|
89
89
|
readonly code: DoorErrorCode;
|
|
90
90
|
constructor(code: DoorErrorCode, message: string);
|
|
@@ -96,13 +96,51 @@ interface ExtensionsPort {
|
|
|
96
96
|
reload(): Promise<unknown>;
|
|
97
97
|
list(): readonly unknown[];
|
|
98
98
|
}
|
|
99
|
+
/** The slice of acrylblends' `pluginShare` service the pull verb uses. */
|
|
100
|
+
interface PluginSharePort {
|
|
101
|
+
pull(source: string): Promise<{
|
|
102
|
+
readonly ok: boolean;
|
|
103
|
+
readonly action?: string;
|
|
104
|
+
readonly reason?: string;
|
|
105
|
+
readonly next?: string;
|
|
106
|
+
}>;
|
|
107
|
+
planPublish(name: string, options?: PublishOptionsView): Promise<PublishPlanView | {
|
|
108
|
+
readonly ok: false;
|
|
109
|
+
readonly reason: string;
|
|
110
|
+
readonly next: string;
|
|
111
|
+
}>;
|
|
112
|
+
publish(name: string, confirmed: PublishPlanView, options?: PublishOptionsView): Promise<{
|
|
113
|
+
readonly ok: boolean;
|
|
114
|
+
readonly reason?: string;
|
|
115
|
+
}>;
|
|
116
|
+
}
|
|
117
|
+
/** Who a plan publishes as, and under which license; the service's defaults when absent. */
|
|
118
|
+
interface PublishOptionsView {
|
|
119
|
+
readonly owner?: string;
|
|
120
|
+
readonly license?: string;
|
|
121
|
+
}
|
|
122
|
+
/** A plan as the door shows it. The service owns it; the door passes it back unchanged. */
|
|
123
|
+
interface PublishPlanView {
|
|
124
|
+
readonly owner: string;
|
|
125
|
+
readonly repo: string;
|
|
126
|
+
readonly version: string;
|
|
127
|
+
readonly visibility: string;
|
|
128
|
+
readonly license: string;
|
|
129
|
+
readonly createsRepository: boolean;
|
|
130
|
+
readonly files: readonly string[];
|
|
131
|
+
readonly digest: string;
|
|
132
|
+
readonly pullLine: string;
|
|
133
|
+
}
|
|
99
134
|
/** The slice of acrylblends' `tools` registry (the `agent` plugin's) the tool verbs use, and where the built-in chat finds the verbs. */
|
|
100
135
|
interface ToolsPort {
|
|
101
136
|
/** @returns the function that removes the tool. @throws when the name is taken. */
|
|
102
137
|
register(name: string, tool: {
|
|
103
138
|
readonly description: string;
|
|
104
139
|
readonly parameters?: Readonly<Record<string, unknown>>;
|
|
105
|
-
run(input: unknown
|
|
140
|
+
run(input: unknown, options?: {
|
|
141
|
+
signal?: AbortSignal;
|
|
142
|
+
page?: string;
|
|
143
|
+
}): unknown;
|
|
106
144
|
}): () => void;
|
|
107
145
|
list(): ReadonlyArray<{
|
|
108
146
|
readonly name: string;
|
|
@@ -121,8 +159,12 @@ interface DoorDeps {
|
|
|
121
159
|
readonly root: string;
|
|
122
160
|
readonly url?: string | undefined;
|
|
123
161
|
};
|
|
162
|
+
/** The prefix the app's pages answer under (the frame's canvas, `/app`); absent on the app's own server, at the root. */
|
|
163
|
+
readonly appBase?: string | undefined;
|
|
124
164
|
/** Read at each call: the services may come and go while the door runs. */
|
|
125
165
|
readonly extensions: () => ExtensionsPort | undefined;
|
|
166
|
+
/** Read at each call, as `extensions` is; absent where the app has no plugin-share row. */
|
|
167
|
+
readonly pluginShare?: () => PluginSharePort | undefined;
|
|
126
168
|
readonly tools: () => ToolsPort | undefined;
|
|
127
169
|
/** The app tools the door offers; anything else is refused before it reaches the registry. */
|
|
128
170
|
readonly expose: readonly string[];
|
|
@@ -131,6 +173,10 @@ interface DoorDeps {
|
|
|
131
173
|
/** How long a reload or a move may take before the new page has connected again (tests shorten it). Default 15 s. */
|
|
132
174
|
readonly pageBackMs?: number;
|
|
133
175
|
}
|
|
176
|
+
/** Who a verb runs for: `page`, the door's id of the page a run was asked from; its look and act go to that page alone (followed into its tab), never to another one. */
|
|
177
|
+
interface VerbScope {
|
|
178
|
+
readonly page?: string;
|
|
179
|
+
}
|
|
134
180
|
/** What one verb answered: the value for `--json` and programs, the text for an agent reading a terminal. */
|
|
135
181
|
interface VerbAnswer {
|
|
136
182
|
readonly value: unknown;
|
|
@@ -142,10 +188,10 @@ declare class Door {
|
|
|
142
188
|
/** A run asked for from the panel of this page is going: its verbs that name no window are for that page. @returns the function to call when the run ends. */
|
|
143
189
|
driveFor(windowId: string): () => void;
|
|
144
190
|
/** Run one verb. @throws DoorError or UiControlError. */
|
|
145
|
-
run(verb: string, args: unknown, signal: AbortSignal): Promise<VerbAnswer>;
|
|
191
|
+
run(verb: string, args: unknown, signal: AbortSignal, scope?: VerbScope): Promise<VerbAnswer>;
|
|
146
192
|
brief(): VerbAnswer;
|
|
147
|
-
look(input: Record<string, unknown>, signal: AbortSignal): Promise<UiSnapshot>;
|
|
148
|
-
act(input: Record<string, unknown>, signal: AbortSignal): Promise<UiActionResult>;
|
|
193
|
+
look(input: Record<string, unknown>, signal: AbortSignal, scope?: VerbScope): Promise<UiSnapshot>;
|
|
194
|
+
act(input: Record<string, unknown>, signal: AbortSignal, scope?: VerbScope): Promise<UiActionResult>;
|
|
149
195
|
/**
|
|
150
196
|
* What the app answers at a path the page was sent to, so an agent that mistyped one is told ("404 at /nope") and not left to find out from a page it did not expect.
|
|
151
197
|
* A second GET of the same path (a page is read-only); nothing when the app has no address or does not answer in time.
|
|
@@ -162,6 +208,12 @@ declare class Door {
|
|
|
162
208
|
/** Run one call on the page and record it. The audit holds which control was touched and how it ended, never what was typed. */
|
|
163
209
|
private callPage;
|
|
164
210
|
private plugin;
|
|
211
|
+
private share;
|
|
212
|
+
/** Only a plan: no argument of any verb can publish, so an agent never says yes for a person. */
|
|
213
|
+
private planPublish;
|
|
214
|
+
/** The person's yes, from their own terminal. Not a verb: MCP and the chat do not have it. */
|
|
215
|
+
publishConfirmed(name: string, confirmed: PublishPlanView, options: PublishOptionsView): Promise<unknown>;
|
|
216
|
+
private pull;
|
|
165
217
|
/** A folder named by an agent, resolved from the app folder; it must be inside the app. */
|
|
166
218
|
private insideApp;
|
|
167
219
|
private offeredTools;
|
|
@@ -174,7 +226,9 @@ declare class Door {
|
|
|
174
226
|
* MCP (`tools/list`) and the built-in chat (the `tools` registry). A verb added here is in all three, or the comparison test fails.
|
|
175
227
|
*/
|
|
176
228
|
/** Every verb, in the order `brief` lists them. */
|
|
177
|
-
|
|
229
|
+
/** The verbs that only use the page: what a page-only door (a production assistant) offers. */
|
|
230
|
+
declare const PAGE_VERBS: readonly ["look", "act"];
|
|
231
|
+
declare const VERBS: readonly ["brief", "look", "act", "plugin-list", "plugin-add", "plugin-pull", "plugin-publish", "plugin-remove", "plugin-reload", "tool-list", "tool-call", "window-list", "window-open", "window-focus", "window-close", "window-resize", "menu-list", "menu-click"];
|
|
178
232
|
type Verb = (typeof VERBS)[number];
|
|
179
233
|
/** The JSON Schema of a verb's arguments, as MCP lists it. */
|
|
180
234
|
interface ArgumentsSchema {
|
|
@@ -229,6 +283,12 @@ interface DoorFile {
|
|
|
229
283
|
declare function doorFilePath(appRoot: string): string;
|
|
230
284
|
/** The connection file as written, or undefined when there is none or it does not parse. */
|
|
231
285
|
declare function readDoorFile(appRoot: string): DoorFile | undefined;
|
|
286
|
+
/**
|
|
287
|
+
* Write this run's connection file, replacing a stale one.
|
|
288
|
+
* @throws when another live process already serves this folder's door: two apps from one folder would race for one file.
|
|
289
|
+
*/
|
|
290
|
+
/** @throws when another live process already serves this folder's door: two apps from one folder would race for one file. */
|
|
291
|
+
declare function assertDoorIsFree(appRoot: string): void;
|
|
232
292
|
//#endregion
|
|
233
293
|
//#region ../../plugins/acryl-door/src/host/operator-routes.d.ts
|
|
234
294
|
type CallResponse = {
|
|
@@ -259,12 +319,30 @@ interface Config {
|
|
|
259
319
|
* run it in production (a packaged desktop app whose user drives it with an agent) says so here; `ACRYL_DOOR=off` still wins.
|
|
260
320
|
*/
|
|
261
321
|
allowInProduction?: boolean;
|
|
322
|
+
/**
|
|
323
|
+
* Page only, for a production assistant: the page channel and two chat tools, `door_look` and `door_act`, and nothing else - no operator routes, no MCP, no desktop
|
|
324
|
+
* shell channel, no `.acryl/` file, no plugin, tool or window verbs. The app's agent can then use the page for a visitor and cannot change the app. Runs in production
|
|
325
|
+
* without `allowInProduction`; `ACRYL_DOOR=off` still wins.
|
|
326
|
+
*/
|
|
327
|
+
pageOnly?: boolean;
|
|
262
328
|
/** Reload the open pages after a live plugin change, so an agent that built a feature sees it on the page it has open. Default: true. */
|
|
263
329
|
reloadOnChange?: boolean;
|
|
330
|
+
/**
|
|
331
|
+
* Put the page script in the host's own index page (DSH's web UI) too, so an agent can drive that UI. Default: true. A host whose index is a frame
|
|
332
|
+
* around the app (the ACRYL Blends frame, whose centre shows the app's page) turns it off: the door then drives the app's page in the canvas, and an
|
|
333
|
+
* agent's `act navigate` or a reload after a plugin change never takes the person's tab out of the frame.
|
|
334
|
+
*/
|
|
335
|
+
hostIndex?: boolean;
|
|
336
|
+
/**
|
|
337
|
+
* The host prefix the app's pages are served under (the frame's canvas, `/app`); absent on the app's own server, where they are at the root. The
|
|
338
|
+
* door puts it on every page as `<meta name="acryl-app-base">`, and `act navigate` with an app path goes under it: a page the app serves at
|
|
339
|
+
* `/board` is reached at `/app/board` in the frame and at `/board` in production, and the same verb works in both.
|
|
340
|
+
*/
|
|
341
|
+
appBase?: string;
|
|
264
342
|
}
|
|
265
343
|
declare const Config: z<Config>;
|
|
266
344
|
/** The page of a path the app does not serve, development only: what is missing, a way back, and the door's script. */
|
|
267
345
|
declare function notFoundPage(path: string, scriptTag: string): string;
|
|
268
346
|
declare function apply(ctx: Context, rawConfig?: Config): void;
|
|
269
347
|
//#endregion
|
|
270
|
-
export { type CallResponse, Config, DOOR_PREFIX, Door, DoorError, type DoorFile, STATE_DIR, VERBS, VERB_SPECS, type Verb, type VerbAnswer, type VerbSpec, apply, chatToolName, doorFilePath, inject, mcpTools, name, notFoundPage, readDoorFile };
|
|
348
|
+
export { type CallResponse, Config, DOOR_PREFIX, Door, DoorError, type DoorFile, PAGE_VERBS, STATE_DIR, VERBS, VERB_SPECS, type Verb, type VerbAnswer, type VerbSpec, apply, assertDoorIsFree, chatToolName, doorFilePath, inject, mcpTools, name, notFoundPage, readDoorFile };
|