@vention/vention-skills 0.9.15 → 0.9.16

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vention",
3
- "version": "0.9.15",
3
+ "version": "0.9.16",
4
4
  "description": "Vention skills for coding agents: write MachineLogic applications, build machine designs, and diagnose deployed machines.",
5
5
  "author": {
6
6
  "name": "Vention"
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Vention skills
2
2
 
3
- Version 0.9.15. Skills for coding agents that work with Vention machines, packaged as one plugin, `vention`, in the `vention-skills` marketplace.
3
+ Version 0.9.16. Skills for coding agents that work with Vention machines, packaged as one plugin, `vention`, in the `vention-skills` marketplace.
4
4
 
5
5
  | Skill | What it does |
6
6
  | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vention/vention-skills",
3
- "version": "0.9.15",
3
+ "version": "0.9.16",
4
4
  "description": "Vention skills for coding agents: write MachineLogic applications, build machine designs, and diagnose deployed machines.",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/plugin.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "vention",
4
- "version": "0.9.15",
4
+ "version": "0.9.16",
5
5
  "description": "Vention skills for coding agents: write MachineLogic applications, build machine designs, and diagnose deployed machines.",
6
6
  "author": {
7
7
  "name": "Vention"
@@ -3,7 +3,7 @@ name: vention-design
3
3
  description: Create, build and edit Vention machine designs and design graphs for agentic layout. Use when the user wants to start a new design, lay out an automation cell, add or reposition components in a Vention design, generate a machine layout from a description, add or place a floor plan image under a design, list a design's versions, or inspect an existing design graph. Trigger on MachineBuilder designs, design graphs, assembly graphs, extrusions, actuators, robot mounting, cell footprints, floor plans, or a machine-builder URL.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.9.15"
6
+ version: "0.9.16"
7
7
  author: Vention
8
8
  ---
9
9
 
@@ -3,7 +3,7 @@ name: vention-machine-logic
3
3
  description: Write, edit, validate, and deploy MachineLogic Python applications for Vention machines with the machine-logic-sdk and the Vention CLI. Load it before writing or changing any Python that talks to a Vention machine, however short, since device names and version-specific SDK calls come from here. Use to program a Vention machine or MachineMotion controller, drive actuators, conveyors, robots, pneumatics, or digital I/O, change an existing application, build a state machine, debug from logs, or pull, push, or link with the Vention CLI (vention or vn). Trigger on MachineLogic, machine-logic-sdk, MachineMotion, MachineBuilder applications, the Vention CLI, or a directory holding .machine-code-app-directory-info.json. Printing what the machine or robot holds now (positions, taught targets, calibration, I/O) is a program: files on disk hold only as-designed values. Not for explaining an existing machine or its configuration in words when no program is asked for, nor for Python that never touches the machine.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.9.15"
6
+ version: "0.9.16"
7
7
  machine-logic-sdk: ">=3.0,<4"
8
8
  author: Vention
9
9
  ---
@@ -3,7 +3,7 @@ name: vention-machine-logic-hmi
3
3
  description: Build or edit the custom operator HMI of a MachineLogic application, the React touch screen in customui/ that runs in MachineBuilder and on the MachineMotion pendant, wired to the application's Python process through vention-communication. Use when the user asks for an operator screen, a custom HMI or UI, a touch panel, start and stop buttons, live machine state on screen, or recipes an operator picks, for a Vention machine or inside a directory holding .machine-code-app-directory-info.json. Uses @vention/machine-ui, @vention/machine-apps-components and @vention/machine-logic-ui-sdk. Do not use for the no-code HMI Builder, or for the Python motion logic alone (that is vention-machine-logic).
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.9.15"
6
+ version: "0.9.16"
7
7
  author: Vention
8
8
  ---
9
9
 
@@ -151,6 +151,8 @@ The machine-apps-components README is behind its code: `NavigationBar` takes `Na
151
151
  ## Design rules
152
152
 
153
153
  - Wrap the app in `machineUiHmiTheme`.
154
+ - Give the app an Operate page at `/`, any setup pages it needs (such as Recipes), and a Logs page: a `LogsPanel` fed by the Events stream, as the example's `logs-page.tsx` does, where the operator finds out why a cycle faulted. Nav labels name the page and never echo a top-bar action, and their icons don't suggest one. Never "Run", "Start" or a play icon: beside the top bar's Start, the operator reads it as a second Start button.
155
+ - The Operate page is what the operator watches during a run, so it reads from across the cell. Copy the example's `operate-page.tsx` and adapt it rather than starting from a blank page. Top to bottom: a heading saying what the station is doing or the recipe running, the run's segmented progress bar, the settings for the next run (disabled while one runs), and one short paragraph on what Start and Stop do. Lay it out with `Box` or `Stack` gaps, each readout a label above its value in theme text variants. Never set `fontSize` or `lineHeight`: a value sized by hand overlaps its label.
154
156
  - Show each piece of information in one place only. The `StatusTopBar` already shows the state, so a page never repeats it, not even as a status indicator or an alert titled with the same word. A page adds only what the bar cannot say: the cause of a fault, what happens next, what to do.
155
157
  - The screen fits the pendant without scrolling: keep `body { margin: 0 }` from the example's `index.html`, or the full-viewport root overflows it. Only the page area between the two bars scrolls.
156
158
  - Exactly one way back to Control Center: the `NavigationBar`'s own button, which confirms before leaving. Keep `ui.showDefaultBackToControlCenterButton` `false` in `project.json`, or the pendant lays a second one over the screen.
@@ -179,7 +181,7 @@ The HMI drives physical machinery that can injure someone.
179
181
  - Start never fires on page load, on reconnect, or from a stream message. Only an operator's tap, confirmed in a modal, starts motion.
180
182
  - Start and Stop live in the `StatusTopBar`, so they are on every page. Do not repeat them on a page. Raise the bar above `theme.zIndex.modal`, as the example's `app.tsx` does, or an open `VentionModal` covers Stop.
181
183
  - Stop stays enabled unless the station is known to be ready or already stopping. That includes while the stream is disconnected: a dropped stream may hide a moving machine. Every other command is disabled while disconnected.
182
- - A tap on Stop shows at once. While the station stops, the Stop button reads "Stopping…", the Run page's progress bar marks where the run now ends (the cycle in progress amber, the cancelled ones hatched and struck through), and a line by the heading says the emergency stop halts at once. Say it on the screen the operator already watches rather than in a separate alert.
184
+ - A tap on Stop shows at once. While the station stops, the Stop button reads "Stopping…", the Operate page's progress bar marks where the run now ends (the cycle in progress amber, the cancelled ones hatched and struck through), and a line by the heading says the emergency stop halts at once. Say it on the screen the operator already watches rather than in a separate alert.
183
185
  - Send Start with a `timeoutMs` and an abort signal, and abort it when the stream drops. A Start the operator can no longer see must not land later; say it was not confirmed and to check the station.
184
186
  - The HMI never offers a way around an emergency stop, safety interlock, light curtain or guard, not even a hidden one for testing.
185
187
  - The confirmation for anything that starts motion says what will move. The button itself can just say Start.
@@ -196,7 +198,7 @@ The HMI drives physical machinery that can injure someone.
196
198
  - `customui/src/client.ts`, `customui/src/use-stream.ts`: the generated client and the stream hook.
197
199
  - `customui/src/station.ts`: state labels and colors, and when Start and Stop are enabled.
198
200
  - `customui/src/app.tsx`, `customui/src/main.tsx`: the shell with Start, Stop and the Start confirmation, the theme, the router and the keyboard.
199
- - `customui/src/pages/`: the Run, Recipes and Logs pages.
201
+ - `customui/src/pages/`: the Operate, Recipes and Logs pages.
200
202
 
201
203
  ## Common mistakes
202
204
 
@@ -1,5 +1,5 @@
1
1
  import { Box } from "@mui/material"
2
- import { IconBook, IconHistory, IconPlayerPlay, IconPlayerPlayFilled, IconPlayerStopFilled } from "@tabler/icons-react"
2
+ import { IconBook, IconHistory, IconLayoutDashboard, IconPlayerPlayFilled, IconPlayerStopFilled } from "@tabler/icons-react"
3
3
  import { NavigationBar, StatusTopBar } from "@vention/machine-apps-components"
4
4
  import type { LogEntry, LogType } from "@vention/machine-apps-components"
5
5
  import { COLORS, VentionAlert, VentionModal } from "@vention/machine-ui"
@@ -9,7 +9,7 @@ import { client, openEvents, openStatus, STATUS_STALL_MS } from "./client"
9
9
  import type { Event, Recipe } from "./gen/app_pb"
10
10
  import { LogsPage } from "./pages/logs-page"
11
11
  import { RecipesPage } from "./pages/recipes-page"
12
- import { RunPage } from "./pages/run-page"
12
+ import { OperatePage } from "./pages/operate-page"
13
13
  import { canStart, canStop, describeState, errorText, isStopping } from "./station"
14
14
  import { useStream } from "./use-stream"
15
15
 
@@ -125,7 +125,9 @@ export function App() {
125
125
  <Routes>
126
126
  <Route
127
127
  path="/"
128
- element={<RunPage status={status} connected={connected} recipe={recipe} onRecipeChange={setRecipe} onError={setCommandError} />}
128
+ element={
129
+ <OperatePage status={status} connected={connected} recipe={recipe} onRecipeChange={setRecipe} onError={setCommandError} />
130
+ }
129
131
  />
130
132
  <Route path="/recipes" element={<RecipesPage connected={connected} onError={setCommandError} />} />
131
133
  <Route path="/logs" element={<LogsPage entries={logEntries} />} />
@@ -133,7 +135,7 @@ export function App() {
133
135
  </Routes>
134
136
  </Box>
135
137
  <NavigationBar variant="flex">
136
- <NavigationBar.Item id="run" label="Run" path="/" icon={<IconPlayerPlay size={NAV_ICON_SIZE} color="white" />} />
138
+ <NavigationBar.Item id="operate" label="Operate" path="/" icon={<IconLayoutDashboard size={NAV_ICON_SIZE} color="white" />} />
137
139
  <NavigationBar.Item id="recipes" label="Recipes" path="/recipes" icon={<IconBook size={NAV_ICON_SIZE} color="white" />} />
138
140
  <NavigationBar.Item id="logs" label="Logs" path="/logs" icon={<IconHistory size={NAV_ICON_SIZE} color="white" />} />
139
141
  </NavigationBar>
@@ -5,7 +5,7 @@ import { client } from "../client"
5
5
  import type { Recipe, StationStatus } from "../gen/app_pb"
6
6
  import { canStart, errorText, isStopping } from "../station"
7
7
 
8
- interface RunPageProps {
8
+ interface OperatePageProps {
9
9
  status: StationStatus | undefined
10
10
  connected: boolean
11
11
  recipe: Recipe | undefined
@@ -34,7 +34,7 @@ function CycleProgress({ cycle, cycleCount, stopping }: { cycle: number; cycleCo
34
34
  )
35
35
  }
36
36
 
37
- export function RunPage({ status, connected, recipe, onRecipeChange, onError }: RunPageProps) {
37
+ export function OperatePage({ status, connected, recipe, onRecipeChange, onError }: OperatePageProps) {
38
38
  const [recipes, setRecipes] = useState<Recipe[]>([])
39
39
  const stopping = isStopping(status, connected)
40
40
 
@@ -83,6 +83,10 @@ export function RunPage({ status, connected, recipe, onRecipeChange, onError }:
83
83
  onChange={event => onRecipeChange(recipes.find(candidate => candidate.id === Number(event.target.value)))}
84
84
  menuItems={recipes.map(candidate => ({ value: candidate.id, displayText: candidate.name }))}
85
85
  />
86
+ <Typography variant="paragraph18Medium">
87
+ Start indexes a part, clamps it, dwells and releases it, once for each cycle of the recipe. Stop finishes the move in progress, then
88
+ opens the clamp. The emergency stop halts everything at once.
89
+ </Typography>
86
90
  </Box>
87
91
  )
88
92
  }
@@ -181,7 +181,7 @@ class IndexingStation(StateMachine):
181
181
  except Exception as error:
182
182
  await self.release_safely()
183
183
  self.fault_message = f"cycle {self.cycle}: {error}"
184
- await publish_event("error", f"Cycle {self.cycle} faulted", f"{error}. Clear the cause, then press Reset on the Run page.")
184
+ await publish_event("error", f"Cycle {self.cycle} faulted", f"{error}. Clear the cause, then press Reset on the Operate page.")
185
185
  self.trigger(BaseTriggers.TO_FAULT.value)
186
186
 
187
187
 
@@ -3,7 +3,7 @@ name: vention-monitoring
3
3
  description: Diagnose deployed Vention machines from controller state, history, health, and activity data. Use when the user reports a machine that is down, faulted, offline, slow, or underperforming, asks why a cycle time regressed, wants to interpret MachineMotion event data or drive and brake status, asks about OEE or uptime, or wants to know which machine in a fleet needs attention. Trigger on a MachineMotion serial number plus any complaint.
4
4
  license: MIT
5
5
  metadata:
6
- version: "0.9.15"
6
+ version: "0.9.16"
7
7
  author: Vention
8
8
  ---
9
9