@ryuhq/sdk 0.1.13 → 0.2.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.
Files changed (90) hide show
  1. package/README.md +19 -6
  2. package/dist/agent-plugin.cjs +46 -0
  3. package/dist/agent-plugin.d.cts +42 -32
  4. package/dist/agent-plugin.d.ts +42 -32
  5. package/dist/agent-plugin.js +1 -1
  6. package/dist/agent.cjs +9 -0
  7. package/dist/agent.d.cts +377 -1
  8. package/dist/agent.d.ts +377 -1
  9. package/dist/agent.js +4 -2
  10. package/dist/app-Bkw7LlCK.d.ts +129 -0
  11. package/dist/app-DNaGmLVf.d.cts +129 -0
  12. package/dist/builder.cjs +1095 -0
  13. package/dist/builder.d.cts +212 -0
  14. package/dist/builder.d.ts +212 -0
  15. package/dist/builder.js +28 -0
  16. package/dist/chunk-A3RGEPDG.js +250 -0
  17. package/dist/chunk-FZSFZOIN.js +200 -0
  18. package/dist/{chunk-ODFEUVPW.js → chunk-HACAGK65.js} +1 -18
  19. package/dist/{chunk-AO2KJRDD.js → chunk-IEUQ3CDG.js} +125 -2
  20. package/dist/chunk-IKEDLLFY.js +19 -0
  21. package/dist/chunk-IOLP5FFE.js +354 -0
  22. package/dist/{chunk-G6FLVEC4.js → chunk-JX6DDRXV.js} +46 -0
  23. package/dist/chunk-T5676WL2.js +240 -0
  24. package/dist/chunk-TLDPEGC7.js +21 -0
  25. package/dist/chunk-TXSHHZF2.js +0 -0
  26. package/dist/{chunk-MTUBUPIV.js → chunk-ULSVL7EC.js} +8 -227
  27. package/dist/chunk-VLIRNNAE.js +154 -0
  28. package/dist/chunk-W3KPP4WN.js +135 -0
  29. package/dist/cli.cjs +258 -14
  30. package/dist/cli.js +96 -16
  31. package/dist/client-D5U6ssPc.d.cts +84 -0
  32. package/dist/client-D5U6ssPc.d.ts +84 -0
  33. package/dist/index.cjs +519 -5
  34. package/dist/index.d.cts +16 -632
  35. package/dist/index.d.ts +16 -632
  36. package/dist/index.js +63 -695
  37. package/dist/manifest.cjs +129 -3
  38. package/dist/manifest.d.cts +105 -2
  39. package/dist/manifest.d.ts +105 -2
  40. package/dist/manifest.js +7 -1
  41. package/dist/mcp/client.cjs +180 -0
  42. package/dist/mcp/client.d.cts +49 -0
  43. package/dist/mcp/client.d.ts +49 -0
  44. package/dist/mcp/client.js +10 -0
  45. package/dist/mcp/server.cjs +370 -0
  46. package/dist/mcp/server.d.cts +126 -0
  47. package/dist/mcp/server.d.ts +126 -0
  48. package/dist/mcp/server.js +9 -0
  49. package/dist/mcp.cjs +376 -0
  50. package/dist/mcp.d.cts +2 -0
  51. package/dist/mcp.d.ts +2 -0
  52. package/dist/mcp.js +17 -0
  53. package/dist/model.cjs +141 -0
  54. package/dist/model.d.cts +33 -0
  55. package/dist/model.d.ts +33 -0
  56. package/dist/model.js +18 -0
  57. package/dist/plugin.cjs +46 -0
  58. package/dist/plugin.d.cts +215 -0
  59. package/dist/plugin.d.ts +215 -0
  60. package/dist/plugin.js +8 -0
  61. package/dist/runnable.cjs +1230 -0
  62. package/dist/runnable.d.cts +271 -0
  63. package/dist/runnable.d.ts +271 -0
  64. package/dist/runnable.js +28 -0
  65. package/dist/{index-B6SkaAjJ.d.ts → tool-DSx2bFx8.d.ts} +35 -458
  66. package/dist/{index-BvAB5eMk.d.cts → tool-u-VR0fLF.d.cts} +35 -458
  67. package/package.json +38 -2
  68. package/src/agent/loop.test.ts +4 -4
  69. package/src/agent/tools.ts +3 -3
  70. package/src/agent-plugin.test.ts +58 -0
  71. package/src/agent-plugin.ts +108 -35
  72. package/src/cli/dev.test.ts +26 -47
  73. package/src/cli/dev.ts +10 -2
  74. package/src/cli.ts +98 -15
  75. package/src/exports-lockstep.test.ts +92 -0
  76. package/src/generated/plugin-manifest.ts +243 -27
  77. package/src/index.ts +35 -0
  78. package/src/manifest-schema.test.ts +30 -1
  79. package/src/manifest.fixtures.test.ts +13 -3
  80. package/src/manifest.test.ts +96 -10
  81. package/src/manifest.ts +334 -187
  82. package/src/mcp/index.ts +18 -0
  83. package/src/model/index.ts +22 -0
  84. package/src/plugin/ryu-plugin.ts +82 -0
  85. package/src/runnable/app.test.ts +2 -0
  86. package/src/runnable/app.ts +5 -2
  87. package/src/runnable/index.ts +2 -0
  88. package/src/runnable/primitives.ts +57 -0
  89. package/src/runnable/tool.ts +1 -1
  90. package/src/runnable/turn-hook.ts +4 -1
@@ -0,0 +1,212 @@
1
+ import { RunnableMeta, Surface, PluginManifest, CompanionSurface } from './manifest.cjs';
2
+ import { A as AppToolSpec } from './app-DNaGmLVf.cjs';
3
+ import 'zod';
4
+
5
+ /**
6
+ * Ryu SDK typed builders — one builder per RunnableKind plus a PluginBuilder that
7
+ * assembles a complete, validated `manifest.json` manifest.
8
+ *
9
+ * Each builder follows a fluent interface: construct, chain setter calls, then
10
+ * call `.build()` to get a validated result. Invalid manifests throw a
11
+ * descriptive `Error` — never a silent fallback.
12
+ *
13
+ * Engine/model fields are typed as `string` throughout. No provider union is
14
+ * used so adding a new provider never requires an SDK change.
15
+ */
16
+
17
+ /** Base builder shared by all Runnable kinds. */
18
+ declare class RunnableBuilder {
19
+ protected _id: string;
20
+ protected _name: string;
21
+ id(value: string): this;
22
+ name(value: string): this;
23
+ }
24
+ /** Builds an Agent `RunnableMeta` entry. */
25
+ declare class AgentBuilder extends RunnableBuilder {
26
+ build(): RunnableMeta;
27
+ }
28
+ /** Builds a Workflow `RunnableMeta` entry. */
29
+ declare class WorkflowBuilder extends RunnableBuilder {
30
+ build(): RunnableMeta;
31
+ }
32
+ /** Builds a Tool `RunnableMeta` entry. */
33
+ declare class ToolBuilder extends RunnableBuilder {
34
+ build(): RunnableMeta;
35
+ }
36
+ /** Builds a Skill `RunnableMeta` entry. */
37
+ declare class SkillBuilder extends RunnableBuilder {
38
+ build(): RunnableMeta;
39
+ }
40
+ /** Create an AgentBuilder. */
41
+ declare const agent: () => AgentBuilder;
42
+ /** Create a WorkflowBuilder. */
43
+ declare const workflow: () => WorkflowBuilder;
44
+ /** Create a ToolBuilder. */
45
+ declare const tool: () => ToolBuilder;
46
+ /** Create a SkillBuilder. */
47
+ declare const skill: () => SkillBuilder;
48
+ /**
49
+ * Fluent builder for a complete `manifest.json` Plugin manifest. Produces a
50
+ * validated `PluginManifest` on `.build()` or throws a descriptive `Error`
51
+ * naming the first invalid field.
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * import { PluginBuilder, agent, tool } from "@ryuhq/sdk/builder"
56
+ *
57
+ * const manifest = new PluginBuilder()
58
+ * .id("com.example.my-plugin")
59
+ * .name("My Plugin")
60
+ * .version("1.0.0")
61
+ * .runnable(agent().id("agent-main").name("Main Agent").build())
62
+ * .runnable(tool().id("tool-search").name("Web Search").build())
63
+ * .grant("mcp:web_search")
64
+ * .companion({ label: "My Plugin", icon: "sparkles", shortcut: "ctrl+shift+m" })
65
+ * .build()
66
+ * ```
67
+ */
68
+ declare class PluginBuilder {
69
+ private _id;
70
+ private _name;
71
+ private _version;
72
+ private readonly _runnables;
73
+ private readonly _grants;
74
+ private _companion;
75
+ private readonly _dependencies;
76
+ private readonly _requiredCapabilities;
77
+ private readonly _requiredGrants;
78
+ private readonly _targets;
79
+ /** Set the reverse-domain app id (e.g. `"com.example.my-app"`). */
80
+ id(value: string): this;
81
+ /** Set the human-readable display name. */
82
+ name(value: string): this;
83
+ /** Set the semver version string (e.g. `"1.0.0"`). */
84
+ version(value: string): this;
85
+ /** Append a pre-built `RunnableMeta` (from any per-kind builder). */
86
+ runnable(meta: RunnableMeta): this;
87
+ /** Declare a permission grant (e.g. `"mcp:web_search"`). */
88
+ grant(permission: string): this;
89
+ /** Set an optional Companion surface descriptor. */
90
+ companion(surface: CompanionSurface): this;
91
+ /**
92
+ * Declare a **plugin-to-plugin dependency**: `id` must be installed and is
93
+ * auto-enabled (in dependency order) before this plugin enables.
94
+ *
95
+ * `minVersion` is a MINIMUM — a bare `"1.2.0"` means `">=1.2.0"`, so an
96
+ * installed `2.0.0` satisfies it (comparator syntax like `">=1.2, <2"` is
97
+ * honoured verbatim).
98
+ */
99
+ dependsOn(id: string, minVersion?: string): this;
100
+ /**
101
+ * Declare a permission grant implied by this plugin's dependencies
102
+ * (`requires.grants`). Declaration only — the Gateway remains the sole
103
+ * authority on what a grant allows. Use {@link PluginBuilder.grant} for the
104
+ * grants this plugin needs in its own right.
105
+ */
106
+ requiredGrant(permission: string): this;
107
+ /**
108
+ * Declare an abstract **capability** edge (`requires.capabilities`) the broker
109
+ * resolves to a bound provider at enable time — e.g. `requiresCapability("rag")`.
110
+ * Distinct from a specific-plugin dependency: a capability edge lets the
111
+ * binding registry choose the provider. `minVersion` is a MINIMUM (`"1.2.0"`
112
+ * = `">=1.2.0"`).
113
+ */
114
+ requiresCapability(capability: string, minVersion?: string): this;
115
+ /**
116
+ * Restrict this plugin to a host surface (`"desktop"`, `"island"`, …).
117
+ * Declaring NO target is the default and means **every** surface.
118
+ */
119
+ target(surface: Surface): this;
120
+ /**
121
+ * Validate and return the assembled `PluginManifest`. Throws an `Error` with
122
+ * the failing field name and message when validation fails.
123
+ */
124
+ build(): PluginManifest;
125
+ }
126
+ /**
127
+ * Fluent builder for a Ryu App — a `manifest.json` whose tools render interactive
128
+ * widgets inline in chat. Delegates to {@link defineApp} on `.build()`, so it
129
+ * derives the render-vs-companion split and validates through
130
+ * `PluginManifestSchema` (throwing a descriptive `Error` on bad input) exactly
131
+ * like the factory.
132
+ *
133
+ * @example
134
+ * ```ts
135
+ * import { app } from "@ryuhq/sdk/builder"
136
+ *
137
+ * const manifest = app()
138
+ * .id("com.example.checklist")
139
+ * .title("Checklist")
140
+ * .version("1.0.0")
141
+ * .slug("checklist")
142
+ * .uiEntry("src/checklist.tsx")
143
+ * .tool({ name: "render", description: "Render a checklist", invoking: "Building…" })
144
+ * .tool({ name: "toggle", description: "Toggle an item", accessible: true })
145
+ * .build()
146
+ * ```
147
+ */
148
+ declare class AppBuilder {
149
+ private _id;
150
+ private _title;
151
+ private _version;
152
+ private _slug;
153
+ private _server;
154
+ private _displayMode;
155
+ private _mime;
156
+ private _uiEntry;
157
+ private readonly _grants;
158
+ private readonly _activationEvents;
159
+ private readonly _tools;
160
+ private readonly _dependencies;
161
+ private readonly _requiredCapabilities;
162
+ private readonly _requiredGrants;
163
+ private readonly _targets;
164
+ /** Set the reverse-domain app id (e.g. `"com.example.checklist"`). */
165
+ id(value: string): this;
166
+ /** Set the human-readable display name. */
167
+ title(value: string): this;
168
+ /** Set the semver version string (e.g. `"1.0.0"`). */
169
+ version(value: string): this;
170
+ /** Set the app slug (drives `ui://widget/<slug>.html` and the server default). */
171
+ slug(value: string): this;
172
+ /** Override the MCP server namespace for tool ids (defaults to the slug). */
173
+ server(value: string): this;
174
+ /** Set the default widget display mode (`inline` | `fullscreen` | `pip`). */
175
+ displayMode(value: string): this;
176
+ /** Override the widget MIME dialect (defaults to `text/html+skybridge`). */
177
+ mime(value: string): this;
178
+ /** Set the widget UI source entry `ryu pack` bundles into `ui_code`. */
179
+ uiEntry(value: string): this;
180
+ /** Declare a permission grant (e.g. `"mcp:web_search"`). */
181
+ grant(permission: string): this;
182
+ /** Add a VS-Code-style activation event (empty = eager `["*"]`). */
183
+ activationEvent(event: string): this;
184
+ /** Append a tool spec (render tool unless `accessible:true`). */
185
+ tool(spec: AppToolSpec): this;
186
+ /**
187
+ * Declare a **plugin-to-plugin dependency** (auto-enabled, in dependency order,
188
+ * before this app). `minVersion` is a MINIMUM (`"1.2.0"` = `">=1.2.0"`).
189
+ */
190
+ dependsOn(id: string, minVersion?: string): this;
191
+ /** Declare a grant implied by this app's dependencies (`requires.grants`). */
192
+ requiredGrant(permission: string): this;
193
+ /**
194
+ * Declare an abstract **capability** edge (`requires.capabilities`) the broker
195
+ * resolves to a bound provider at enable time — e.g. `requiresCapability("rag")`.
196
+ * Distinct from a specific-plugin dependency: a capability edge lets the
197
+ * binding registry choose the provider. `minVersion` is a MINIMUM (`"1.2.0"`
198
+ * = `">=1.2.0"`).
199
+ */
200
+ requiresCapability(capability: string, minVersion?: string): this;
201
+ /** Restrict this app to a host surface. No target = every surface. */
202
+ target(surface: Surface): this;
203
+ /**
204
+ * Validate and return the assembled `PluginManifest`. Throws an `Error` naming
205
+ * the failing field when validation fails.
206
+ */
207
+ build(): PluginManifest;
208
+ }
209
+ /** Create an AppBuilder. */
210
+ declare const app: () => AppBuilder;
211
+
212
+ export { AgentBuilder, AppBuilder, PluginBuilder, SkillBuilder, ToolBuilder, WorkflowBuilder, agent, app, skill, tool, workflow };
@@ -0,0 +1,212 @@
1
+ import { RunnableMeta, Surface, PluginManifest, CompanionSurface } from './manifest.js';
2
+ import { A as AppToolSpec } from './app-Bkw7LlCK.js';
3
+ import 'zod';
4
+
5
+ /**
6
+ * Ryu SDK typed builders — one builder per RunnableKind plus a PluginBuilder that
7
+ * assembles a complete, validated `manifest.json` manifest.
8
+ *
9
+ * Each builder follows a fluent interface: construct, chain setter calls, then
10
+ * call `.build()` to get a validated result. Invalid manifests throw a
11
+ * descriptive `Error` — never a silent fallback.
12
+ *
13
+ * Engine/model fields are typed as `string` throughout. No provider union is
14
+ * used so adding a new provider never requires an SDK change.
15
+ */
16
+
17
+ /** Base builder shared by all Runnable kinds. */
18
+ declare class RunnableBuilder {
19
+ protected _id: string;
20
+ protected _name: string;
21
+ id(value: string): this;
22
+ name(value: string): this;
23
+ }
24
+ /** Builds an Agent `RunnableMeta` entry. */
25
+ declare class AgentBuilder extends RunnableBuilder {
26
+ build(): RunnableMeta;
27
+ }
28
+ /** Builds a Workflow `RunnableMeta` entry. */
29
+ declare class WorkflowBuilder extends RunnableBuilder {
30
+ build(): RunnableMeta;
31
+ }
32
+ /** Builds a Tool `RunnableMeta` entry. */
33
+ declare class ToolBuilder extends RunnableBuilder {
34
+ build(): RunnableMeta;
35
+ }
36
+ /** Builds a Skill `RunnableMeta` entry. */
37
+ declare class SkillBuilder extends RunnableBuilder {
38
+ build(): RunnableMeta;
39
+ }
40
+ /** Create an AgentBuilder. */
41
+ declare const agent: () => AgentBuilder;
42
+ /** Create a WorkflowBuilder. */
43
+ declare const workflow: () => WorkflowBuilder;
44
+ /** Create a ToolBuilder. */
45
+ declare const tool: () => ToolBuilder;
46
+ /** Create a SkillBuilder. */
47
+ declare const skill: () => SkillBuilder;
48
+ /**
49
+ * Fluent builder for a complete `manifest.json` Plugin manifest. Produces a
50
+ * validated `PluginManifest` on `.build()` or throws a descriptive `Error`
51
+ * naming the first invalid field.
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * import { PluginBuilder, agent, tool } from "@ryuhq/sdk/builder"
56
+ *
57
+ * const manifest = new PluginBuilder()
58
+ * .id("com.example.my-plugin")
59
+ * .name("My Plugin")
60
+ * .version("1.0.0")
61
+ * .runnable(agent().id("agent-main").name("Main Agent").build())
62
+ * .runnable(tool().id("tool-search").name("Web Search").build())
63
+ * .grant("mcp:web_search")
64
+ * .companion({ label: "My Plugin", icon: "sparkles", shortcut: "ctrl+shift+m" })
65
+ * .build()
66
+ * ```
67
+ */
68
+ declare class PluginBuilder {
69
+ private _id;
70
+ private _name;
71
+ private _version;
72
+ private readonly _runnables;
73
+ private readonly _grants;
74
+ private _companion;
75
+ private readonly _dependencies;
76
+ private readonly _requiredCapabilities;
77
+ private readonly _requiredGrants;
78
+ private readonly _targets;
79
+ /** Set the reverse-domain app id (e.g. `"com.example.my-app"`). */
80
+ id(value: string): this;
81
+ /** Set the human-readable display name. */
82
+ name(value: string): this;
83
+ /** Set the semver version string (e.g. `"1.0.0"`). */
84
+ version(value: string): this;
85
+ /** Append a pre-built `RunnableMeta` (from any per-kind builder). */
86
+ runnable(meta: RunnableMeta): this;
87
+ /** Declare a permission grant (e.g. `"mcp:web_search"`). */
88
+ grant(permission: string): this;
89
+ /** Set an optional Companion surface descriptor. */
90
+ companion(surface: CompanionSurface): this;
91
+ /**
92
+ * Declare a **plugin-to-plugin dependency**: `id` must be installed and is
93
+ * auto-enabled (in dependency order) before this plugin enables.
94
+ *
95
+ * `minVersion` is a MINIMUM — a bare `"1.2.0"` means `">=1.2.0"`, so an
96
+ * installed `2.0.0` satisfies it (comparator syntax like `">=1.2, <2"` is
97
+ * honoured verbatim).
98
+ */
99
+ dependsOn(id: string, minVersion?: string): this;
100
+ /**
101
+ * Declare a permission grant implied by this plugin's dependencies
102
+ * (`requires.grants`). Declaration only — the Gateway remains the sole
103
+ * authority on what a grant allows. Use {@link PluginBuilder.grant} for the
104
+ * grants this plugin needs in its own right.
105
+ */
106
+ requiredGrant(permission: string): this;
107
+ /**
108
+ * Declare an abstract **capability** edge (`requires.capabilities`) the broker
109
+ * resolves to a bound provider at enable time — e.g. `requiresCapability("rag")`.
110
+ * Distinct from a specific-plugin dependency: a capability edge lets the
111
+ * binding registry choose the provider. `minVersion` is a MINIMUM (`"1.2.0"`
112
+ * = `">=1.2.0"`).
113
+ */
114
+ requiresCapability(capability: string, minVersion?: string): this;
115
+ /**
116
+ * Restrict this plugin to a host surface (`"desktop"`, `"island"`, …).
117
+ * Declaring NO target is the default and means **every** surface.
118
+ */
119
+ target(surface: Surface): this;
120
+ /**
121
+ * Validate and return the assembled `PluginManifest`. Throws an `Error` with
122
+ * the failing field name and message when validation fails.
123
+ */
124
+ build(): PluginManifest;
125
+ }
126
+ /**
127
+ * Fluent builder for a Ryu App — a `manifest.json` whose tools render interactive
128
+ * widgets inline in chat. Delegates to {@link defineApp} on `.build()`, so it
129
+ * derives the render-vs-companion split and validates through
130
+ * `PluginManifestSchema` (throwing a descriptive `Error` on bad input) exactly
131
+ * like the factory.
132
+ *
133
+ * @example
134
+ * ```ts
135
+ * import { app } from "@ryuhq/sdk/builder"
136
+ *
137
+ * const manifest = app()
138
+ * .id("com.example.checklist")
139
+ * .title("Checklist")
140
+ * .version("1.0.0")
141
+ * .slug("checklist")
142
+ * .uiEntry("src/checklist.tsx")
143
+ * .tool({ name: "render", description: "Render a checklist", invoking: "Building…" })
144
+ * .tool({ name: "toggle", description: "Toggle an item", accessible: true })
145
+ * .build()
146
+ * ```
147
+ */
148
+ declare class AppBuilder {
149
+ private _id;
150
+ private _title;
151
+ private _version;
152
+ private _slug;
153
+ private _server;
154
+ private _displayMode;
155
+ private _mime;
156
+ private _uiEntry;
157
+ private readonly _grants;
158
+ private readonly _activationEvents;
159
+ private readonly _tools;
160
+ private readonly _dependencies;
161
+ private readonly _requiredCapabilities;
162
+ private readonly _requiredGrants;
163
+ private readonly _targets;
164
+ /** Set the reverse-domain app id (e.g. `"com.example.checklist"`). */
165
+ id(value: string): this;
166
+ /** Set the human-readable display name. */
167
+ title(value: string): this;
168
+ /** Set the semver version string (e.g. `"1.0.0"`). */
169
+ version(value: string): this;
170
+ /** Set the app slug (drives `ui://widget/<slug>.html` and the server default). */
171
+ slug(value: string): this;
172
+ /** Override the MCP server namespace for tool ids (defaults to the slug). */
173
+ server(value: string): this;
174
+ /** Set the default widget display mode (`inline` | `fullscreen` | `pip`). */
175
+ displayMode(value: string): this;
176
+ /** Override the widget MIME dialect (defaults to `text/html+skybridge`). */
177
+ mime(value: string): this;
178
+ /** Set the widget UI source entry `ryu pack` bundles into `ui_code`. */
179
+ uiEntry(value: string): this;
180
+ /** Declare a permission grant (e.g. `"mcp:web_search"`). */
181
+ grant(permission: string): this;
182
+ /** Add a VS-Code-style activation event (empty = eager `["*"]`). */
183
+ activationEvent(event: string): this;
184
+ /** Append a tool spec (render tool unless `accessible:true`). */
185
+ tool(spec: AppToolSpec): this;
186
+ /**
187
+ * Declare a **plugin-to-plugin dependency** (auto-enabled, in dependency order,
188
+ * before this app). `minVersion` is a MINIMUM (`"1.2.0"` = `">=1.2.0"`).
189
+ */
190
+ dependsOn(id: string, minVersion?: string): this;
191
+ /** Declare a grant implied by this app's dependencies (`requires.grants`). */
192
+ requiredGrant(permission: string): this;
193
+ /**
194
+ * Declare an abstract **capability** edge (`requires.capabilities`) the broker
195
+ * resolves to a bound provider at enable time — e.g. `requiresCapability("rag")`.
196
+ * Distinct from a specific-plugin dependency: a capability edge lets the
197
+ * binding registry choose the provider. `minVersion` is a MINIMUM (`"1.2.0"`
198
+ * = `">=1.2.0"`).
199
+ */
200
+ requiresCapability(capability: string, minVersion?: string): this;
201
+ /** Restrict this app to a host surface. No target = every surface. */
202
+ target(surface: Surface): this;
203
+ /**
204
+ * Validate and return the assembled `PluginManifest`. Throws an `Error` naming
205
+ * the failing field when validation fails.
206
+ */
207
+ build(): PluginManifest;
208
+ }
209
+ /** Create an AppBuilder. */
210
+ declare const app: () => AppBuilder;
211
+
212
+ export { AgentBuilder, AppBuilder, PluginBuilder, SkillBuilder, ToolBuilder, WorkflowBuilder, agent, app, skill, tool, workflow };
@@ -0,0 +1,28 @@
1
+ import {
2
+ AgentBuilder,
3
+ AppBuilder,
4
+ PluginBuilder,
5
+ SkillBuilder,
6
+ ToolBuilder,
7
+ WorkflowBuilder,
8
+ agent,
9
+ app,
10
+ skill,
11
+ tool,
12
+ workflow
13
+ } from "./chunk-IOLP5FFE.js";
14
+ import "./chunk-W3KPP4WN.js";
15
+ import "./chunk-IEUQ3CDG.js";
16
+ export {
17
+ AgentBuilder,
18
+ AppBuilder,
19
+ PluginBuilder,
20
+ SkillBuilder,
21
+ ToolBuilder,
22
+ WorkflowBuilder,
23
+ agent,
24
+ app,
25
+ skill,
26
+ tool,
27
+ workflow
28
+ };