@ycodium-ai/plugin-api 0.2.3236 → 0.2.3240

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 CHANGED
@@ -56,7 +56,7 @@ import { definePlugin } from "@ycodium-ai/plugin-api";
56
56
 
57
57
  export default definePlugin({
58
58
  id: "my-plugin",
59
- apiVersion: 25,
59
+ apiVersion: 26,
60
60
  activate: (ctx) => {
61
61
  ctx.log.info("hello");
62
62
 
@@ -247,19 +247,19 @@ shows up there without anyone registering it.
247
247
 
248
248
  ## THERE WILL BE COMPATIBILITY-BREAKING CHANGES
249
249
 
250
- The definition's `apiVersion` is a closed window: the host loads 25, and refuses every other
250
+ The definition's `apiVersion` is a closed window: the host loads 26, and refuses every other
251
251
  value. Declare the version your plugin targets as a literal; do not read the host's
252
- `PLUGIN_API_VERSION` to make the declaration automatically match. The current API is 25. Plugins
252
+ `PLUGIN_API_VERSION` to make the declaration automatically match. The current API is 26. Plugins
253
253
  targeting an older API are refused before activation; the message names the version the plugin
254
254
  declared and the one this Ycodium loads, and the plugin card offers an update. A plugin that
255
- declares a version newer than 25 is refused until Ycodium itself is updated, with no update button.
255
+ declares a version newer than 26 is refused until Ycodium itself is updated, with no update button.
256
256
 
257
- API 24 adds the value `"allowExplicitBreakaway"` to `PluginProcessSpawnInput.jobPolicy` (in the
258
- `ctx.process` spawn input, `@ycodium-ai/plugin-api/process-socket`). Windows only: the process still
259
- runs inside the host's Job, but a child that explicitly requests breakaway may leave it; other
260
- children are still collected when the host stops. Meant for a hub that has to leave one program
261
- (such as an emulator) running; the first-party devices plugin uses it. `"strict"` stays the default.
262
- No other public type changes.
257
+ API 26 adds an optional `memoryInjection` boolean to the output of `ctx.projects.toolkits.get`;
258
+ older machines omit it. It adds `ctx.projects.memoryInjection.set`, but only a person or the local
259
+ CLI may set it: every plugin call is refused, and there is no `invocation.asPerson` route. The
260
+ executor card's `capabilities` gains an optional `discoversRepoSkills`, set true when the CLI
261
+ discovers the repository's `.agents/skills` itself, so the host does not hand those skills over
262
+ again; absence means false. No other public type changes.
263
263
 
264
264
  API 25 adds the optional primitive `PluginIcon` to the components lent by the plugin UI host. Its
265
265
  props type, `PluginIconProps`, is exported from `@ycodium-ai/plugin-api/ui` and has the shape
@@ -268,6 +268,13 @@ decorative, scales with the font size, and renders nothing for unknown names. Th
268
268
  plugin uses it for platform icons in bot card headers in chat bridge settings. No other public
269
269
  type changes.
270
270
 
271
+ API 24 adds the value `"allowExplicitBreakaway"` to `PluginProcessSpawnInput.jobPolicy` (in the
272
+ `ctx.process` spawn input, `@ycodium-ai/plugin-api/process-socket`). Windows only: the process still
273
+ runs inside the host's Job, but a child that explicitly requests breakaway may leave it; other
274
+ children are still collected when the host stops. Meant for a hub that has to leave one program
275
+ (such as an emulator) running; the first-party devices plugin uses it. `"strict"` stays the default.
276
+ No other public type changes.
277
+
271
278
  API 23 adds two optional fields to each entry of `turnIntents` in the outputs of
272
279
  `ctx.threads.history` and `ctx.threads.execution.get`. `action` is
273
280
  `{ kind: "steer" | "interrupt", turnId, commandId, source?: "automatic" } | null` — what the
@@ -422,7 +429,7 @@ An empty page with a cursor still continues. All failures propagate unchanged, i
422
429
  `ThreadNotFoundError` when the thread is missing; use `isThreadNotFound(error)` to identify it.
423
430
  `ctx.communication.inbox.read` is gone; that port always rejected a plugin, because only the agent
424
431
  in the thread has its own inbox. Plugins targeting these earlier versions are refused on the current host;
425
- the minimum version is 25.
432
+ the minimum version is 26.
426
433
 
427
434
  API 8 changed what the UI gets for a communication record. `ConversationCommunicationRecord`
428
435
  (from the conversation host's `useCommunicationRecord`) and `CommunicationViewExchange` carry `bodyState`, and their
@@ -2264,6 +2264,7 @@ export type ProjectsToolkitsGetInput = {
2264
2264
  };
2265
2265
  export type ProjectsToolkitsGetOutput = {
2266
2266
  readonly "projectId": string;
2267
+ readonly "memoryInjection"?: boolean;
2267
2268
  readonly "toolkits": ReadonlyArray<{
2268
2269
  readonly "toolkit": "board" | "memory" | "messages";
2269
2270
  readonly "enabled": boolean;
@@ -2983,6 +2984,7 @@ export type ProvidersExecutorsListOutput = {
2983
2984
  readonly "turnSteering"?: boolean | undefined;
2984
2985
  readonly "reportsSpawnedAgents"?: boolean | undefined;
2985
2986
  readonly "handlesSkillInvocations"?: boolean | undefined;
2987
+ readonly "discoversRepoSkills"?: boolean | undefined;
2986
2988
  readonly "confirmsToolTermination"?: boolean | undefined;
2987
2989
  readonly "inlineImages"?: {
2988
2990
  readonly "maxBytes": number;
@@ -4701,6 +4703,19 @@ export type ProjectsToolkitsSetOutput = {
4701
4703
  };
4702
4704
  readonly "replayed"?: boolean;
4703
4705
  };
4706
+ export type ProjectsMemoryInjectionSetInput = {
4707
+ readonly "projectId": string;
4708
+ readonly "enabled": boolean;
4709
+ readonly "requestId"?: string;
4710
+ };
4711
+ export type ProjectsMemoryInjectionSetOutput = {
4712
+ readonly "sequence": number;
4713
+ readonly "result": {
4714
+ readonly "enabled": boolean;
4715
+ readonly "changed": boolean;
4716
+ };
4717
+ readonly "replayed"?: boolean;
4718
+ };
4704
4719
  export type ProjectsCloneStartInput = {
4705
4720
  readonly "destinationPath": string;
4706
4721
  readonly "remoteUrl": string;
@@ -5623,6 +5638,9 @@ export interface PluginDataPorts {
5623
5638
  readonly detach: (input: ProjectsFoldersDetachInput) => Promise<ProjectsFoldersDetachOutput>;
5624
5639
  readonly attach: (input: ProjectsFoldersAttachInput) => Promise<ProjectsFoldersAttachOutput>;
5625
5640
  };
5641
+ readonly memoryInjection: {
5642
+ readonly set: (input: ProjectsMemoryInjectionSetInput) => Promise<ProjectsMemoryInjectionSetOutput>;
5643
+ };
5626
5644
  readonly clone: {
5627
5645
  readonly start: (input: ProjectsCloneStartInput) => Promise<ProjectsCloneStartOutput>;
5628
5646
  readonly retry: (input: ProjectsCloneRetryInput) => Promise<ProjectsCloneRetryOutput>;