@ycodium-ai/plugin-api 0.2.3831 → 0.2.3904

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
@@ -61,7 +61,7 @@ import { definePlugin } from "@ycodium-ai/plugin-api";
61
61
 
62
62
  export default definePlugin({
63
63
  id: "my-plugin",
64
- apiVersion: 60,
64
+ apiVersion: 66,
65
65
  activate: (ctx) => {
66
66
  ctx.log.info("hello");
67
67
 
@@ -290,12 +290,56 @@ sessions continue using the streaming process interface.
290
290
 
291
291
  ## THERE WILL BE COMPATIBILITY-BREAKING CHANGES
292
292
 
293
- The definition's `apiVersion` is a closed window: the host loads 60, and refuses every other
293
+ The definition's `apiVersion` is a closed window: the host loads 66, and refuses every other
294
294
  value. Declare the version your plugin targets as a literal; do not read the host's
295
- `PLUGIN_API_VERSION` to make the declaration automatically match. The current API is 60. Plugins
295
+ `PLUGIN_API_VERSION` to make the declaration automatically match. The current API is 66. Plugins
296
296
  targeting an older API are refused before activation; the message names the version the plugin
297
297
  declared and the one this Ycodium loads, and the plugin card offers an update. A plugin that
298
- declares a version newer than 60 is refused until Ycodium itself is updated, with no update button.
298
+ declares a version newer than 66 is refused until Ycodium itself is updated, with no update button.
299
+
300
+ API 66 adds an optional `reasonCode` to machine task failures. Every change is additive.
301
+
302
+ - `MachineTaskFailure.reasonCode` is one of `git-missing`, `project-folder-missing` or `git-probe-failed`
303
+ when the built-in `project.sync` could not inspect the project folder; clients translate a coded reason
304
+ and show the English `reason` otherwise.
305
+ - Every machine whose project folder is a Git checkout lists `project.sync` even without a tasks table; a
306
+ `sync` entry in `ycodium.json` replaces it. The action catalog allows 64 machine actions plus 33 project
307
+ entries.
308
+
309
+ API 65 lets a thread annotation mark a conversation's tab: set `placement: "tab"` and `icon: "monitor"` on a
310
+ `ui.threadAnnotations.command` row, and the tab gets the `tone` as a tinted background plus the icon, with `labelKey` as
311
+ its name. Such a row stays out of the text badges in the sidebar and conversation header. Every change is additive.
312
+
313
+ API 64 adds the command action for machine tasks. Every change is additive.
314
+
315
+ - `MachineActionKind` gains `command`. A machine that declares the capability lists the action
316
+ `runtime.command`; machines that do not declare it do not list it.
317
+ - `ctx.work.machineTasks.create` accepts `runtime.command` with `command`, optional `args`, optional `cwd`
318
+ (a path inside the project folder) and optional `timeoutSeconds`. The command runs with the executing
319
+ user's environment. A task for another machine still needs that machine's owner until same-account
320
+ trust (ADR-0041) lands.
321
+
322
+ API 63 adds execution-machine consent for machine tasks. A local agent can run on its own machine
323
+ without approval. Cross-machine tasks require the executing owner's explicit policy or a task-bound,
324
+ single-use approval receipt. Human-only machineSettings.machineTasks.approve issues the receipt on
325
+ the executing machine; work.machineTasks.respond carries optional approval and rememberProject.
326
+ Project trust is optional machineTaskConfirmation.remoteProjectTrust, bound to both the home machine
327
+ and project. Cross-machine same-account inference awaits ADR-0041.
328
+
329
+ Machine-task failures may include optional `reasonCode` (`git-missing`, `project-folder-missing` or
330
+ `git-probe-failed`) for localized UI text. `reason` remains the English fallback when no code is present;
331
+ raw Git diagnostics stay in the log comment.
332
+
333
+ API 62 adds `ctx.schedules.list` and `ctx.schedules.runs.list`, reads of a project's schedules, and an optional `repeat`
334
+ on scheduled wake-up reads. Plugins cannot create or change schedules.
335
+
336
+ API 61 lets a client admit the machines it is connected to in the background, without the Machines settings
337
+ section being open. Every change is additive.
338
+
339
+ - `projects.machines.list` output gains an optional `removedEnvironmentIds`: machines a person removed from the
340
+ project, which automatic admission skips.
341
+ - `projects.machines.joinCode.create` input gains an optional `automaticEnvironmentId`: the code is bound to that
342
+ machine and cannot undo a person's removal. Omit it for an explicit invitation.
299
343
 
300
344
  API 60 registers this machine's runtime, proxy and provider maintenance in the data capability table. Every
301
345
  change is additive.
@@ -312,8 +356,7 @@ change is additive.
312
356
  - Machine actions add `runtime.restart` and `runtime.upgrade` (`MachineActionKind` gains `restart` and `upgrade`),
313
357
  and the action input takes an optional `targetVersion`. Action lists drop entries this build does not recognise
314
358
  instead of failing.
315
-
316
- API 60 also adds the skill directory. Every change is additive.
359
+ API 60 also adds the skill directory. Every change is additive.
317
360
 
318
361
  - `ctx.plugins.skillDirectory.search({ query, limit? })` searches skills.sh; each result names the GitHub
319
362
  `repository` it installs from, or `null`.
@@ -1125,7 +1168,7 @@ An empty page with a cursor still continues. All failures propagate unchanged, i
1125
1168
  `ThreadNotFoundError` when the thread is missing; use `isThreadNotFound(error)` to identify it.
1126
1169
  `ctx.communication.inbox.read` is gone; that port always rejected a plugin, because only the agent
1127
1170
  in the thread has its own inbox. Plugins targeting these earlier versions are refused on the current host;
1128
- the minimum version is 60.
1171
+ the minimum version is 66.
1129
1172
 
1130
1173
  API 8 changed what the UI gets for a communication record. `ConversationCommunicationRecord`
1131
1174
  (from the conversation host's `useCommunicationRecord`) and `CommunicationViewExchange` carry `bodyState`, and their