@yaklabs-ai/plugin-sdk 0.54.0 → 0.54.1
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 +16 -5
- package/THIRD-PARTY-INVENTORY.json +1 -1
- package/dist/canonical-transcript.d.ts +66 -0
- package/dist/canonical-transcript.js +567 -3
- package/dist/disclosure.d.ts +329 -110
- package/dist/disclosure.js +1 -0
- package/dist/kay-agent-testing.d.ts +334 -111
- package/dist/kay-agent-testing.js +1 -0
- package/dist/kay-agent.d.ts +389 -87
- package/dist/kay-agent.js +19 -0
- package/dist/kay-app-session-summary.d.ts +267 -128
- package/dist/kay-app.d.ts +1527 -212
- package/dist/kay-app.js +19 -0
- package/dist/workers.d.ts +27 -0
- package/dist/workers.js +20 -0
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ it under the name your plugin code actually imports:
|
|
|
13
13
|
```json
|
|
14
14
|
{
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@bonsai/plugin-sdk": "npm:@yaklabs-ai/plugin-sdk@^0.54.
|
|
16
|
+
"@bonsai/plugin-sdk": "npm:@yaklabs-ai/plugin-sdk@^0.54.1"
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
```
|
|
@@ -62,7 +62,7 @@ Every tool the entrypoint registers is declared in the manifest too:
|
|
|
62
62
|
"description": "Greets people by name.",
|
|
63
63
|
"version": "0.1.0",
|
|
64
64
|
"namespace": "widgets",
|
|
65
|
-
"compatibility": { "sdk": "^0.54.
|
|
65
|
+
"compatibility": { "sdk": "^0.54.1" },
|
|
66
66
|
"targets": {
|
|
67
67
|
"kay": {
|
|
68
68
|
"agent": {
|
|
@@ -153,7 +153,7 @@ naming both versions, instead of loading it and finding no `activate`.
|
|
|
153
153
|
| `@bonsai/plugin-sdk/system-one` | The types and error class for `api.systemOne` / `app.systemOne`, from 0.13.8 |
|
|
154
154
|
| `@bonsai/plugin-sdk/zod` | `z` (the host's in the daemon), on an entry with no other import, from 0.13.9 |
|
|
155
155
|
|
|
156
|
-
A plugin that imports these subpaths declares the current supported SDK range (`^0.54.
|
|
156
|
+
A plugin that imports these subpaths declares the current supported SDK range (`^0.54.1`).
|
|
157
157
|
The rows record when each subpath appeared, not retained runtime compatibility. `vendored-mcp` builds the plugin's URI module (its link cards and help); hosting the
|
|
158
158
|
vendor's MCP server itself is a separate host decision: Bonsai hosts it once a person approves
|
|
159
159
|
the plugin's `mcp.host-server` grant for that server's name and URL. A server that needs an OAuth
|
|
@@ -161,7 +161,7 @@ sign-in names one of the plugin's auth services in `authService`; that service m
|
|
|
161
161
|
one `delegated` scheme, which Bonsai uses to sign the person in to the server. Bonsai declares that
|
|
162
162
|
scheme at runtime; the plugin's code must not declare it again. From 0.16.2 a plugin's code can also
|
|
163
163
|
call the server's tools through `api.vendoredMcp.port(<server>)`, typed by this subpath's
|
|
164
|
-
`VendoredMcpPort` and `VendoredMcpOutcome` (declare `^0.54.
|
|
164
|
+
`VendoredMcpPort` and `VendoredMcpOutcome` (declare `^0.54.1`).
|
|
165
165
|
|
|
166
166
|
From 0.13.10 the manifest schema carries two facts Bonsai reads for its own plugins only; another
|
|
167
167
|
plugin's are ignored, with a load diagnostic. An `external-cli` auth scheme's `cli` says how Bonsai
|
|
@@ -243,7 +243,7 @@ Provider schemas remain authoritative; declaring a dependency grants no authorit
|
|
|
243
243
|
through `app.uri`, parse returned Markdown in the consuming plugin, and retain the read's
|
|
244
244
|
revision (or `contentDigest` from `/uri`) for edits. The old `memory.read` and `memory.write`
|
|
245
245
|
grants do not authorize the replacement scheme-and-verb calls. Contracts before 0.49.0 are
|
|
246
|
-
refused; migrate and declare `^0.54.
|
|
246
|
+
refused; migrate and declare `^0.54.1`. The current host also serves the 0.49.0 resource contract.
|
|
247
247
|
|
|
248
248
|
## What this package is, and is not, at runtime
|
|
249
249
|
|
|
@@ -308,3 +308,14 @@ relative imports. Multi-file entrypoints are supported, and TypeScript syntax
|
|
|
308
308
|
that native stripping cannot execute, such as enums, namespaces, constructor
|
|
309
309
|
parameter properties, and decorators, is compiled into the bundle. The host
|
|
310
310
|
SDK remains external and is supplied by the running Bonsai app.
|
|
311
|
+
|
|
312
|
+
## Plugin workers
|
|
313
|
+
|
|
314
|
+
SDK 0.54.1 lets either backend target run a declared module in a fresh child process.
|
|
315
|
+
Declare `workers: [{ localId: "analyze", module: "./src/analyze.ts" }]` at the manifest's top
|
|
316
|
+
level, export `run(input)` from that module, and call
|
|
317
|
+
`api.workers.run("analyze", input, { timeoutMs: 10_000 })` (or `app.workers.run`). Input and
|
|
318
|
+
return values must be JSON. An optional `signal` cancels the call. The host terminates the child
|
|
319
|
+
on cancellation, timeout or plugin disposal; limits and child failures reject with
|
|
320
|
+
`PluginWorkerError`. Import the capability and error from `@bonsai/plugin-sdk/workers`.
|
|
321
|
+
Calls identify only a worker declared by this plugin and cannot supply executable paths or code.
|
|
@@ -31,6 +31,19 @@ declare type AgentSessionEvent = Exclude<HerdHarnessEvent, {
|
|
|
31
31
|
|
|
32
32
|
declare const Alpha: TAlpha;
|
|
33
33
|
|
|
34
|
+
/**
|
|
35
|
+
* The ids of the blocks that start a new answer stretch. A person's mid-turn message
|
|
36
|
+
* (`steer_message`) always does. A background input does when the agent answered both before
|
|
37
|
+
* it and after it, so the reply it wakes never turns the earlier answer into a folded middle
|
|
38
|
+
* one. An input with no answer on one side cannot fold one, so it joins the stretch it lands
|
|
39
|
+
* in: a result absorbed mid-run, or a wake the agent left unanswered, starts nothing. When
|
|
40
|
+
* several inputs arrive between two answers, the first one starts the stretch.
|
|
41
|
+
*
|
|
42
|
+
* The turn's opening (the person's message that caused it) is not a block and is never listed;
|
|
43
|
+
* the first stretch starts there.
|
|
44
|
+
*/
|
|
45
|
+
export declare function answerStretchStarts(blocks: readonly CanonicalAgentBlock[]): ReadonlySet<string>;
|
|
46
|
+
|
|
34
47
|
/** Compatibility settings for Anthropic Messages-compatible APIs. */
|
|
35
48
|
declare interface AnthropicMessagesCompat extends Static<typeof AnthropicMessagesCompatSchema> {
|
|
36
49
|
}
|
|
@@ -1343,6 +1356,16 @@ declare function DependentOptions(type: TDependent): TSchemaOptions;
|
|
|
1343
1356
|
*/
|
|
1344
1357
|
declare type DetachedWorkResultChannel = "next_turn" | "steer";
|
|
1345
1358
|
|
|
1359
|
+
declare interface DetailsAudienceRow extends TranscriptTypeRowBase {
|
|
1360
|
+
/** `undefined` when the details carry no discriminant this row can read. */
|
|
1361
|
+
readonly audience: (details: unknown) => TranscriptAudience | undefined;
|
|
1362
|
+
/**
|
|
1363
|
+
* What a surface does with a message whose audience cannot be read: hide it, show a generic
|
|
1364
|
+
* version, or show it as unrecognized.
|
|
1365
|
+
*/
|
|
1366
|
+
readonly onUndecodable: "hide" | "generic" | "unrecognized";
|
|
1367
|
+
}
|
|
1368
|
+
|
|
1346
1369
|
declare interface DiagnosticErrorInfo {
|
|
1347
1370
|
name?: string;
|
|
1348
1371
|
message: string;
|
|
@@ -1647,6 +1670,10 @@ declare interface FinalOutputCapture {
|
|
|
1647
1670
|
readonly sessionTitle?: string;
|
|
1648
1671
|
}
|
|
1649
1672
|
|
|
1673
|
+
declare interface FixedAudienceRow extends TranscriptTypeRowBase {
|
|
1674
|
+
readonly audience: TranscriptAudience;
|
|
1675
|
+
}
|
|
1676
|
+
|
|
1650
1677
|
/** Creates a Function type. */
|
|
1651
1678
|
declare function _Function_<Parameters extends TSchema[], ReturnType extends TSchema>(parameters: [...Parameters], returnType: ReturnType, options?: TSchemaOptions): TFunction<Parameters, ReturnType>;
|
|
1652
1679
|
|
|
@@ -4535,6 +4562,15 @@ declare type StaticVoid = void;
|
|
|
4535
4562
|
|
|
4536
4563
|
declare type StopReason = "pending" | "stop" | "length" | "toolUse" | "error" | "aborted" | "deferred";
|
|
4537
4564
|
|
|
4565
|
+
/**
|
|
4566
|
+
* The settled helper and command results that open the stretch starting at `blocks[start]`: the
|
|
4567
|
+
* results among the custom messages that arrived together there, before the agent's next step.
|
|
4568
|
+
* A bar whose stretch opens with any shows its background result line in place of a work
|
|
4569
|
+
* headline, so the headline writer labels no such bar. Empty for a stretch a person's message,
|
|
4570
|
+
* a bare wake or an automation starts.
|
|
4571
|
+
*/
|
|
4572
|
+
export declare function stretchOpeningResults(blocks: readonly CanonicalAgentBlock[], start: number): readonly CanonicalCustomMessageBlock[];
|
|
4573
|
+
|
|
4538
4574
|
/** Matches a literal String with the given quotes */
|
|
4539
4575
|
declare function String_2<Quotes extends string[], Input extends string>(quotes: [...Quotes], input: Input): TString<Quotes, Input>;
|
|
4540
4576
|
|
|
@@ -7229,6 +7265,36 @@ declare type TPropertyValues<Properties extends TProperties, Keys extends string
|
|
|
7229
7265
|
|
|
7230
7266
|
declare type TPropertyValuesReduce<Properties extends TProperties, Keys extends string[], Result extends TSchema[] = []> = Keys extends [infer Left extends string, ...infer Right extends string[]] ? Left extends keyof Properties ? TPropertyValuesReduce<Properties, Right, [...Result, Properties[Left]]> : TPropertyValuesReduce<Properties, Right, Result> : Result;
|
|
7231
7267
|
|
|
7268
|
+
/** Every row, keyed by `customType`. */
|
|
7269
|
+
export declare const TRANSCRIPT_TYPE_TABLE: ReadonlyMap<string, TranscriptTypeRow>;
|
|
7270
|
+
|
|
7271
|
+
/**
|
|
7272
|
+
* Who a type is written for: the person reading the transcript, the model only, or the host
|
|
7273
|
+
* alone (records the daemon or the kernel reads back and no surface shows).
|
|
7274
|
+
*/
|
|
7275
|
+
declare type TranscriptAudience = "person" | "model" | "host-only";
|
|
7276
|
+
|
|
7277
|
+
/** The kind of information a row carries; `unrecognized` is content the app cannot classify. */
|
|
7278
|
+
declare type TranscriptKind = "said" | "work" | "ask" | "result" | "context" | "notice" | "unrecognized";
|
|
7279
|
+
|
|
7280
|
+
/** The card a message answers: the `ui_render` call that drew it, and the element when known. */
|
|
7281
|
+
declare interface TranscriptTypeAnswer {
|
|
7282
|
+
readonly toolCallId: string;
|
|
7283
|
+
readonly elementId?: string;
|
|
7284
|
+
}
|
|
7285
|
+
|
|
7286
|
+
declare type TranscriptTypeRow = FixedAudienceRow | DetailsAudienceRow;
|
|
7287
|
+
|
|
7288
|
+
declare interface TranscriptTypeRowBase extends CustomMessagePlacementRow {
|
|
7289
|
+
/** Every kind this type can carry; a type whose kind depends on its details lists each. */
|
|
7290
|
+
readonly kinds: readonly [TranscriptKind, ...TranscriptKind[]];
|
|
7291
|
+
/**
|
|
7292
|
+
* Present on a type the card it answers draws (the answer, a sent-draft record), so it paints
|
|
7293
|
+
* no row of its own whatever its audience.
|
|
7294
|
+
*/
|
|
7295
|
+
readonly answers?: (details: unknown) => TranscriptTypeAnswer | undefined;
|
|
7296
|
+
}
|
|
7297
|
+
|
|
7232
7298
|
declare type TReadonly<Type extends TSchema = TSchema> = (Type & {
|
|
7233
7299
|
'~readonly': true;
|
|
7234
7300
|
});
|