@zaflun/lumio-agent-skill 0.6.2 → 0.6.5
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/CHANGELOG.md +126 -0
- package/dist/bin/lumio-skills.js +1 -1
- package/dist/{chunk-XJZ7H56F.js → chunk-LKWF2Y7K.js} +7 -3
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -1
- package/package.json +5 -4
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `@zaflun/lumio-agent-skill` are documented here.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## 0.6.5
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **`CHANGELOG.md` in the package** — the npm tarball ships this changelog.
|
|
13
|
+
- **Shopify events** — `SKILL.md` lists `shopify:order`,
|
|
14
|
+
`shopify:order_paid` and `shopify:product` (65 event types in total) and
|
|
15
|
+
describes their payloads: the store in `shop { domain, label }`, order
|
|
16
|
+
totals and line items only as the store's settings allow, and
|
|
17
|
+
`customer_display` only with the buyer's consent, to be rendered as text,
|
|
18
|
+
never as HTML.
|
|
19
|
+
- **Which URLs the host loads** — `components.md` explains that `<Image>`,
|
|
20
|
+
`<img src>` and `<a href>` load only from an `https` host in
|
|
21
|
+
`egress.allowHosts`, a `data:image/*` URL, the Lumio page, the extension's
|
|
22
|
+
runtime origin, or a platform avatar or emote URL served by Lumio's image
|
|
23
|
+
proxy. Any other URL renders an empty placeholder, and `style` values with
|
|
24
|
+
`url()` are dropped.
|
|
25
|
+
|
|
26
|
+
## 0.6.2
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- **No `interactive` surface** — the skill files describe two surfaces,
|
|
31
|
+
editor and layer. Viewer input (votes, games) goes through chat commands
|
|
32
|
+
and channel point rewards handled by a bot module, which writes `ctx.db`
|
|
33
|
+
and calls `ctx.realtime.push`; the layer and editor receive it with
|
|
34
|
+
`useRealtime(topic, cb)`. The `interactive` template and target are gone
|
|
35
|
+
from the CLI and auth docs.
|
|
36
|
+
- **`useExtensionStorage(key, initialValue)`** — every example uses the
|
|
37
|
+
one-key-per-call signature instead of a whole-storage object with spread
|
|
38
|
+
updates.
|
|
39
|
+
- **Server functions** — they run in a V8 isolate on the Bot Module Worker
|
|
40
|
+
with a 5-second limit per call. `ctx.realtime.push` and `useRealtime` are
|
|
41
|
+
documented, `ctx.fetch` refuses every host in server functions, and
|
|
42
|
+
`secret()` works only in `action()` handlers. `lumio build` writes
|
|
43
|
+
`dist/functions.json` from `server/functions.ts`; declarative queries take
|
|
44
|
+
`orderBy`, `orderDir`, `limit` and `offset`.
|
|
45
|
+
- **`lumio env` replaces `lumio secrets`** — set, list and delete extension
|
|
46
|
+
secrets, with the key and value rules. Bot-module handlers read them with
|
|
47
|
+
`await ctx.secrets.get("KEY")`; server functions and automation nodes get
|
|
48
|
+
`null`.
|
|
49
|
+
- **Event list** — 62 event types: `twitch:gift_sub` is `twitch:gift`, and
|
|
50
|
+
`twitch:reward_status`, `twitch:reward_add`, `twitch:reward_update` and
|
|
51
|
+
`twitch:reward_remove` are added. `useLumioEvent()` examples show the typed
|
|
52
|
+
payload.
|
|
53
|
+
- **Developer limits link** — points to
|
|
54
|
+
`/dashboard/settings/developer/limits`.
|
|
55
|
+
|
|
56
|
+
## 0.5.3
|
|
57
|
+
|
|
58
|
+
### Added
|
|
59
|
+
|
|
60
|
+
- **Bundled sounds** — the `sounds` array in `lumio.config.json`, supported
|
|
61
|
+
formats and default limits.
|
|
62
|
+
|
|
63
|
+
### Changed
|
|
64
|
+
|
|
65
|
+
- **Per-extension runtime origin** — the skill files describe the Extension
|
|
66
|
+
Runtime on `<label>.runtime.ext.lumio.vision` (one origin per extension)
|
|
67
|
+
and the Supervisor on `supervisor.ext.lumio.vision`.
|
|
68
|
+
- **Extension actions** — the action list matches what the Lumio API
|
|
69
|
+
dispatches: chat send and delete, the OBS scene, source and stream
|
|
70
|
+
actions, `events:emit` and `overlay:update_layer`, each with its own
|
|
71
|
+
permission. Example parameters use the snake_case payloads
|
|
72
|
+
(`scene_name`, `event_type`, `layer_id`, …).
|
|
73
|
+
- **Event list** — 58 event types, including Kick resubs, KICKs, rewards and
|
|
74
|
+
stream updates, Twitch end and lock events, `streamelements:tip` and
|
|
75
|
+
`chat:message`.
|
|
76
|
+
- **`lumio build`** — documents the JS bundles, the bot-module server bundle,
|
|
77
|
+
Tailwind compilation and the pre-flight checks before upload.
|
|
78
|
+
|
|
79
|
+
## 0.5.0
|
|
80
|
+
|
|
81
|
+
### Added
|
|
82
|
+
|
|
83
|
+
- **Automation nodes** — `defineAutomationAction`, `defineAutomationTrigger`
|
|
84
|
+
and `defineAutomationLogic` handlers, the `lumio init` automation templates
|
|
85
|
+
and the `lumio dev` automation simulator.
|
|
86
|
+
- **Editor and picker components** — the 14 `Editor*` components with
|
|
87
|
+
`useEditorAction`, and `IconPicker`, `IconDisplay` and `useIconPicker`.
|
|
88
|
+
- **Config schema field types** — the extended field types, `visible_when`,
|
|
89
|
+
groups, and `designer_schema` for the full-page designer.
|
|
90
|
+
|
|
91
|
+
## 0.4.0
|
|
92
|
+
|
|
93
|
+
### Added
|
|
94
|
+
|
|
95
|
+
- **Bot modules** — the `command`, `keyword`, `pattern`, `event`, `timer`
|
|
96
|
+
and `moderate` handlers, their return actions and permissions, the handler
|
|
97
|
+
context (`ctx.user`, `ctx.cache`, `ctx.defer()`), and best practices for
|
|
98
|
+
rate limits, moderation escalation, overridable triggers and exempt roles.
|
|
99
|
+
|
|
100
|
+
### Changed
|
|
101
|
+
|
|
102
|
+
- **OBS wording** — the layer is described as running in a Browser Source,
|
|
103
|
+
not specifically OBS.
|
|
104
|
+
|
|
105
|
+
## 0.2.0
|
|
106
|
+
|
|
107
|
+
### Changed
|
|
108
|
+
|
|
109
|
+
- **`config_schema` is an array** of fields with `default_value` and
|
|
110
|
+
`required` in every example, and the config example uses the
|
|
111
|
+
`https://lumio.vision/schemas/lumio.config.schema.json` schema URL.
|
|
112
|
+
- **`useLumioAction(action)`** — examples drop the second argument; the
|
|
113
|
+
action list adds `chat:delete` and the OBS source and stream actions.
|
|
114
|
+
- **`instance` storage scope** — filtered by install as well as account and
|
|
115
|
+
overlay.
|
|
116
|
+
|
|
117
|
+
## 0.1.0
|
|
118
|
+
|
|
119
|
+
### Added
|
|
120
|
+
|
|
121
|
+
- **Initial release** — `npx lumio-skills add` writes eight skill files to
|
|
122
|
+
`.lumio/skills/` (`SKILL.md`, components, server functions, CLI workflows,
|
|
123
|
+
auth, runtime scopes, best practices, troubleshooting) and pointer files
|
|
124
|
+
for AI assistants (`AGENTS.md`, `GEMINI.md`, `.windsurfrules`,
|
|
125
|
+
`.github/copilot-instructions.md`). `installSkillFiles`, `SKILL_FILES` and
|
|
126
|
+
`ROOT_FILES` are exported for programmatic use.
|
package/dist/bin/lumio-skills.js
CHANGED
|
@@ -373,13 +373,13 @@ return <Text content={text} />;
|
|
|
373
373
|
|
|
374
374
|
### Live events
|
|
375
375
|
\`\`\`tsx
|
|
376
|
-
// eventType is LumioEventType \u2014 autocomplete shows all
|
|
376
|
+
// eventType is LumioEventType \u2014 autocomplete shows all 65 valid event strings
|
|
377
377
|
const event = useLumioEvent("twitch:cheer");
|
|
378
378
|
// event updates automatically when a new cheer arrives; it is typed
|
|
379
379
|
// LumioEventPayloadMap["twitch:cheer"] | null, so event?.bits is a number
|
|
380
380
|
\`\`\`
|
|
381
381
|
|
|
382
|
-
**All
|
|
382
|
+
**All 65 event types** (\`LumioEventType\`):
|
|
383
383
|
|
|
384
384
|
Twitch (27): \`twitch:follower\`, \`twitch:subscribe\`, \`twitch:gift\`, \`twitch:resub\`, \`twitch:cheer\`, \`twitch:raid\`, \`twitch:reward\`, \`twitch:reward_status\`, \`twitch:reward_add\`, \`twitch:reward_update\`, \`twitch:reward_remove\`, \`twitch:hype_train\`, \`twitch:hype_train_end\`, \`twitch:poll\`, \`twitch:poll_end\`, \`twitch:prediction\`, \`twitch:prediction_lock\`, \`twitch:prediction_end\`, \`twitch:goal\`, \`twitch:goal_end\`, \`twitch:ad_break\`, \`twitch:ban\`, \`twitch:unban\`, \`twitch:stream_online\`, \`twitch:stream_offline\`, \`twitch:stream_update\`, \`twitch:chat\`
|
|
385
385
|
|
|
@@ -391,9 +391,11 @@ Spotify (12): \`spotify:track\`, \`spotify:play\`, \`spotify:pause\`, \`spotify:
|
|
|
391
391
|
|
|
392
392
|
StreamElements (1): \`streamelements:tip\`
|
|
393
393
|
|
|
394
|
+
Shopify (3): \`shopify:order\`, \`shopify:order_paid\`, \`shopify:product\`
|
|
395
|
+
|
|
394
396
|
Cross-platform chat (1, fires for every platform): \`chat:message\`
|
|
395
397
|
|
|
396
|
-
Kick events carry canonical top-level fields (\`user_id\`, \`user_login\`, \`user_name\`, \`avatarUrl\`, \`is_anonymous\`) plus the original Kick payload. \`kick:kicks\` has \`kicks\` (amount, like Twitch \`bits\`) and \`message\`; \`kick:reward\` / \`kick:reward_status\` have \`status\`, \`user_input\` and \`reward { id, title, cost, prompt }\`; \`kick:resub\` has \`cumulative_months\`. \`twitch:reward_status\` has the \`twitch:reward\` shape with \`status\` \`fulfilled\` / \`canceled\`. \`twitch:reward_add\` / \`_update\` / \`_remove\` carry the Twitch reward (\`id\`, \`title\`, \`cost\`, \`prompt\`, \`is_enabled\`, \`is_paused\`, \u2026); these three arrive live only (\`broadcast_only\`), never from the event history.
|
|
398
|
+
Kick events carry canonical top-level fields (\`user_id\`, \`user_login\`, \`user_name\`, \`avatarUrl\`, \`is_anonymous\`) plus the original Kick payload. \`kick:kicks\` has \`kicks\` (amount, like Twitch \`bits\`) and \`message\`; \`kick:reward\` / \`kick:reward_status\` have \`status\`, \`user_input\` and \`reward { id, title, cost, prompt }\`; \`kick:resub\` has \`cumulative_months\`. \`twitch:reward_status\` has the \`twitch:reward\` shape with \`status\` \`fulfilled\` / \`canceled\`. \`twitch:reward_add\` / \`_update\` / \`_remove\` carry the Twitch reward (\`id\`, \`title\`, \`cost\`, \`prompt\`, \`is_enabled\`, \`is_paused\`, \u2026); these three arrive live only (\`broadcast_only\`), never from the event history. Every \`shopify:*\` event names its store in \`shop { domain, label }\` (absent on events stored before stores carried it). \`shopify:order\` / \`shopify:order_paid\` carry \`order_number\`, \`name\`, \`financial_status\`, \`line_items\` and \`total_price\` / \`currency\` only as the store's settings allow, and \`customer_display\` only with the buyer's consent \u2014 untrusted buyer text, render it with \`<Text>\`, never as HTML. \`shopify:product\` has \`title\`, \`vendor\`, \`product_type\`, \`handle\`, \`image_url\`.
|
|
397
399
|
|
|
398
400
|
### Server queries
|
|
399
401
|
\`\`\`tsx
|
|
@@ -622,6 +624,8 @@ import { Image } from "@zaflun/lumio-sdk";
|
|
|
622
624
|
- \`height?: number | string\`
|
|
623
625
|
- \`style?: VisionStyle\`
|
|
624
626
|
|
|
627
|
+
The host loads \`src\` only from an \`https\` host listed in \`egress.allowHosts\` (default port), a \`data:image/*\` URL, the Lumio page itself, the extension's runtime origin, or a Twitch/7TV/BTTV/FFZ/YouTube/Discord/Kick avatar or emote URL that Lumio's image proxy serves. Any other URL renders an empty placeholder. The same applies to \`<img src>\` and \`<a href>\`; \`style\` values with \`url()\` are dropped.
|
|
628
|
+
|
|
625
629
|
## Input Components
|
|
626
630
|
|
|
627
631
|
**Important:** On the layer surface, all input components become read-only. Buttons are hidden, toggles show "On"/"Off" text, dropdowns show the selected value.
|
package/dist/index.d.ts
CHANGED
|
@@ -13,4 +13,5 @@ declare const ROOT_FILES: SkillFile[];
|
|
|
13
13
|
*/
|
|
14
14
|
declare function installSkillFiles(targetDir: string): void;
|
|
15
15
|
|
|
16
|
-
export { ROOT_FILES, SKILL_FILES,
|
|
16
|
+
export { ROOT_FILES, SKILL_FILES, installSkillFiles };
|
|
17
|
+
export type { SkillFile };
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zaflun/lumio-agent-skill",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.5",
|
|
4
4
|
"description": "AI agent skill files for building Lumio Extensions",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"lumio-skills": "dist/bin/lumio-skills.js"
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
|
-
"dist"
|
|
12
|
+
"dist",
|
|
13
|
+
"CHANGELOG.md"
|
|
13
14
|
],
|
|
14
15
|
"keywords": [
|
|
15
16
|
"lumio",
|
|
@@ -28,9 +29,9 @@
|
|
|
28
29
|
"license": "MIT",
|
|
29
30
|
"devDependencies": {
|
|
30
31
|
"@types/node": "^26.1.2",
|
|
31
|
-
"tsup": "^
|
|
32
|
+
"tsup": "^9.0.0",
|
|
32
33
|
"typescript": "^6.0.3",
|
|
33
|
-
"vitest": "^
|
|
34
|
+
"vitest": "^5.0.5"
|
|
34
35
|
},
|
|
35
36
|
"repository": {
|
|
36
37
|
"type": "git",
|