@fias/create-fias-plugin 1.22.0 → 1.23.0
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/package.json +1 -1
- package/templates/default/AGENTS.md +83 -25
- package/templates/default/CLAUDE.md +83 -25
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- fias-sdk-guide-version: 2.
|
|
1
|
+
<!-- fias-sdk-guide-version: 2.31.0 -->
|
|
2
2
|
|
|
3
3
|
# FIAS Plugin Development Guide
|
|
4
4
|
|
|
@@ -1697,7 +1697,7 @@ await library.create({
|
|
|
1697
1697
|
await library.update(style.itemId, { words: 'brighter', expectedVersion: style.version });
|
|
1698
1698
|
```
|
|
1699
1699
|
|
|
1700
|
-
The Creative Library holds the user's **styles** (a look: words and 1–
|
|
1700
|
+
The Creative Library holds the user's **styles** (a look: words and 1–100 reference pictures — a request sends up to three, the ones you choose with `pictures`) and **characters** (one reference picture, an appearance, and a style). They belong to the user — or, in a team workspace that approved your arche, to the workspace — not to the arche that made them: FiasWorks Studio makes most of them, and any arche the user allows can use them. Reading them is seeing their pictures, so the permission is disclosed that way. Every change writes a new version (`get(id, version)` reads an old one); pass `expectedVersion` to `update` so a change made elsewhere is never overwritten. An update may keep pictures the item already has, whoever added them; only pictures you add must be your arche's own. Keep your own fields in `extension` — you see and change only yours. In a workspace, viewers can read but not change (`WORKSPACE_VIEWER_READ_ONLY`). `pick()` shows exactly what `list()` would return, so prefer it to drawing your own chooser; it rejects with `PICKER_UNAVAILABLE` in the dev harness (use `list()` there) and `SHEET_BUSY` while another Fias sheet is open. Not available in the builder preview or the test channel. **Error codes:** `CREATIVE_ITEM_NOT_FOUND`, `CREATIVE_REFERENCE_NOT_USABLE`, `CREATIVE_STYLE_REF_INVALID`, `CREATIVE_VERSION_CONFLICT`, `CREATIVE_LIBRARY_FULL`, `CREATIVE_INVALID`; on `generate`, `STYLE_NOT_FOUND`, `STYLE_NEEDS_DESCRIPTION` and `STYLE_PICTURE_NOT_IN_STYLE`.
|
|
1701
1701
|
|
|
1702
1702
|
### `useCreateAsset()` — Game art the FiasWorks way
|
|
1703
1703
|
|
|
@@ -1985,6 +1985,33 @@ A host older than this option ignores it and pushes. If you correct paths
|
|
|
1985
1985
|
automatically as they arrive, never repeat the same correction twice in a
|
|
1986
1986
|
row, or a push-only host can trap the Back button between two URLs.
|
|
1987
1987
|
|
|
1988
|
+
### `useOpener()` — Where the person came from, and "Use in" there
|
|
1989
|
+
|
|
1990
|
+
**Permission:** None to read it or go back; `opener:send` for `send()`
|
|
1991
|
+
|
|
1992
|
+
When a Fias tool opens your arche — the forge page's or the Arche Builder's "Open FiasWorks Studio" — Fias tells you where the person came from, and lets you send them back and hand one of your files over.
|
|
1993
|
+
|
|
1994
|
+
```tsx
|
|
1995
|
+
import { useOpener } from '@fias/arche-sdk';
|
|
1996
|
+
|
|
1997
|
+
const { opener, returnTo, send } = useOpener();
|
|
1998
|
+
// opener: { kind: 'forge' | 'builder', name: 'My Arche' } — or null
|
|
1999
|
+
|
|
2000
|
+
{
|
|
2001
|
+
opener && <button onClick={returnTo}>Return to {opener.name}</button>;
|
|
2002
|
+
}
|
|
2003
|
+
{
|
|
2004
|
+
opener && (
|
|
2005
|
+
<button onClick={() => send({ fileId: picture.cutoutFileId, name: 'pumpkin.png' })}>
|
|
2006
|
+
Use in {opener.name}
|
|
2007
|
+
</button>
|
|
2008
|
+
);
|
|
2009
|
+
}
|
|
2010
|
+
// send resolves { sent: true, name } (the name it landed as) or { canceled: true }
|
|
2011
|
+
```
|
|
2012
|
+
|
|
2013
|
+
`send` offers a Vault file **your arche created** — a picture you generated, cut out or edited. Fias shows the person a sheet naming the file and where it goes, and only their Send moves it: into a forge's `public/` (Claude Code is told it arrived), or an Arche Builder arche's asset library (which needs the arche published once). You never name the destination, and nothing you did not make can be sent. Show both buttons only when `opener` is set; it is null when your arche was opened any other way, and in the dev harness. **Error codes:** `NO_OPENER`, `SHEET_BUSY`, `SEND_UNAVAILABLE`.
|
|
2014
|
+
|
|
1988
2015
|
### `useFiasChrome()` — Expand, contract and the host chrome
|
|
1989
2016
|
|
|
1990
2017
|
**Permission:** None required
|
|
@@ -2254,28 +2281,30 @@ The SDK also exports the following for advanced use cases. Most plugins don't ne
|
|
|
2254
2281
|
|
|
2255
2282
|
**Fields:**
|
|
2256
2283
|
|
|
2257
|
-
| Field | Req
|
|
2258
|
-
| --------------------- |
|
|
2259
|
-
| `name` | Yes
|
|
2260
|
-
| `version` | Yes
|
|
2261
|
-
| `description` | Yes
|
|
2262
|
-
| `expandedDescription` | No
|
|
2263
|
-
| `main` | Yes
|
|
2264
|
-
| `archeType` | Yes
|
|
2265
|
-
| `categorySlug` | No
|
|
2266
|
-
| `icon` | No
|
|
2267
|
-
| `tags` | No
|
|
2268
|
-
| `pricing` | Yes
|
|
2269
|
-
| `permissions` | Yes
|
|
2270
|
-
| `products` | No
|
|
2271
|
-
| `isPublic` | No
|
|
2272
|
-
| `isFullScreen` | No
|
|
2273
|
-
| `showSidebar` | No
|
|
2274
|
-
| `showExpandButton` | No
|
|
2275
|
-
| `isListed` | No
|
|
2276
|
-
| `
|
|
2277
|
-
| `
|
|
2278
|
-
| `
|
|
2284
|
+
| Field | Req | Description |
|
|
2285
|
+
| --------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
2286
|
+
| `name` | Yes | Plugin identifier (lowercase, hyphens) |
|
|
2287
|
+
| `version` | Yes | Semver (e.g., `"1.0.0"`) |
|
|
2288
|
+
| `description` | Yes | Short marketplace description |
|
|
2289
|
+
| `expandedDescription` | No | Long-form marketplace copy |
|
|
2290
|
+
| `main` | Yes | Entry point source file |
|
|
2291
|
+
| `archeType` | Yes | `"tool"` or `"site"` |
|
|
2292
|
+
| `categorySlug` | No | Marketplace category for discovery |
|
|
2293
|
+
| `icon` | No | Path to an icon image **under `public/`** (e.g. `public/icon.png`) — only `src/` and `public/` are packaged. Applied on every publish (local, staging and prod) and rehosted as your marketplace/store icon. PNG, JPEG, WebP or SVG, ≤5 MB; raster images must also be ≤1024×1024 px (SVG has no pixel limit). An invalid icon rejects the submission: a first-publish listing fee is refunded, but the AI review that already ran is still billed. To change it, replace the file (or the path) and republish; removing the field keeps the current icon. |
|
|
2294
|
+
| `tags` | No | Discovery tags |
|
|
2295
|
+
| `pricing` | Yes | Marketplace **listing** pricing (see "Pricing detail" below). NOT for in-arche charges — use `products` |
|
|
2296
|
+
| `permissions` | Yes | Array of permission scopes (see below) |
|
|
2297
|
+
| `products` | No | IAP product catalog for `useFiasStore()` (see "Defining IAP products" below) |
|
|
2298
|
+
| `isPublic` | No | Default `false`. Anonymous visitors can view (see "Public arches" below) |
|
|
2299
|
+
| `isFullScreen` | No | Default `false`. Renders without platform chrome — implies `archeType: "site"` |
|
|
2300
|
+
| `showSidebar` | No | Default `true`. Set `false` to keep the platform top nav and drop the suggested-arches sidebar (see "Declining the sidebar" below) |
|
|
2301
|
+
| `showExpandButton` | No | Default `true`. Set `false` if you want neither the host's floating expand button nor your own (see "Controlling the host chrome" below) |
|
|
2302
|
+
| `isListed` | No | Default `true`. Visible in marketplace store |
|
|
2303
|
+
| `isGame` | No | Default `false`. `true` lists your arche on the Games page (`/a/games`) and badges it as a game in the Arche Store. Requires `game`. Omitting it on a republish takes the arche out of Games |
|
|
2304
|
+
| `game` | With `isGame` | `{ "genres": [...] }` — 1-4 (more only where a Fias admin allowed your arche) of `action`, `rpg`, `board`, `cards`, `casual`, `crafting`, `flying`, `match`, `platform`, `puzzle`, `strategy`, `word`, `racing`, `sports`, `simulation`, `trivia`, `music`, `educational`, `cozy`, `idle`, `tower-defense` (a kind of `strategy`: its games are listed there too). Refused without `isGame: true` |
|
|
2305
|
+
| `sdk` | Yes | SDK version range |
|
|
2306
|
+
| `dependencies` | No | npm packages with **exact** versions (max 20) |
|
|
2307
|
+
| `archeIds` | Auto | Per-environment IDs written by the CLI after first publish — don't hand-edit |
|
|
2279
2308
|
|
|
2280
2309
|
**Pricing detail:**
|
|
2281
2310
|
|
|
@@ -2290,7 +2319,7 @@ The SDK also exports the following for advanced use cases. Most plugins don't ne
|
|
|
2290
2319
|
|
|
2291
2320
|
Other optional sub-fields: `currency: "usd"` (only USD supported today), `platformFeePercent` (override the default platform cut — non-standard).
|
|
2292
2321
|
|
|
2293
|
-
**Permissions:** `theme:read`, `user:profile:read`, `storage:sandbox`, `storage:local`, `data:store`, `data:search`, `data:workspace`, `entities:invoke`, `entities:client_invoke`, `entities:image_generate`, `entities:image_edit`, `entities:audio_generate`, `entities:web_search`, `store:purchase`, `vault:documents:read`, `vault:documents:write`, `vault:user-documents:read`, `vault:user-documents:write`, `vault:user-documents:edit`, `vault:workspace-documents:read`, `vault:creative:read`, `vault:creative:write`, `assets:read`, `assets:community:read`, `assets:community:publish`, `litcraft:hub`, `navigation:open_arche`, `sandbox:vendored-libraries`, `ai:actions`
|
|
2322
|
+
**Permissions:** `theme:read`, `user:profile:read`, `storage:sandbox`, `storage:local`, `data:store`, `data:search`, `data:workspace`, `entities:invoke`, `entities:client_invoke`, `entities:image_generate`, `entities:image_edit`, `entities:audio_generate`, `entities:web_search`, `store:purchase`, `vault:documents:read`, `vault:documents:write`, `vault:user-documents:read`, `vault:user-documents:write`, `vault:user-documents:edit`, `vault:workspace-documents:read`, `vault:creative:read`, `vault:creative:write`, `opener:send`, `assets:read`, `assets:community:read`, `assets:community:publish`, `litcraft:hub`, `navigation:open_arche`, `sandbox:vendored-libraries`, `ai:actions`
|
|
2294
2323
|
|
|
2295
2324
|
**Using AI:** Add `"entities:invoke"` to permissions, then use `useEntityInvocation()` with a model entity ID (or a `{ capability }` selector, or an entry from `useTextModels()`) and your own `systemPrompt`. Browse available models with `npx fias-dev entities`.
|
|
2296
2325
|
|
|
@@ -2513,6 +2542,35 @@ npx fias-dev collaborators remove <identifier> # Revoke a collaborat
|
|
|
2513
2542
|
|
|
2514
2543
|
All commands accept `--env <prod|staging|local>` (default `prod`).
|
|
2515
2544
|
|
|
2545
|
+
### Extra Store listings (games inside your arche)
|
|
2546
|
+
|
|
2547
|
+
If your arche holds several games (or pages) that people should find on their own — Flappyland's mini-games, each at its own path — give each one an **extra Store listing**: its own title, description, square icon (also its iOS Home Screen icon) and genres, opening at its path. They show in Store search, on your Store page and on the Games page. Each listing uses a slot: **$50 once** (or a free listing an admin granted you); retiring one frees its slot for another, never refunds it. Your app must handle the path (`useFiasNavigation().currentPath`).
|
|
2548
|
+
|
|
2549
|
+
Manage them on your arche's settings page ("Store listings"), or from a `store-listings.json` file:
|
|
2550
|
+
|
|
2551
|
+
```json
|
|
2552
|
+
{
|
|
2553
|
+
"listings": [
|
|
2554
|
+
{
|
|
2555
|
+
"path": "/games/wordtrace",
|
|
2556
|
+
"title": "Wordtrace",
|
|
2557
|
+
"description": "Trace as many words as you can through a grid of letters.",
|
|
2558
|
+
"isGame": true,
|
|
2559
|
+
"genres": ["word"],
|
|
2560
|
+
"icon": "store-art/wordtrace.png"
|
|
2561
|
+
}
|
|
2562
|
+
]
|
|
2563
|
+
}
|
|
2564
|
+
```
|
|
2565
|
+
|
|
2566
|
+
```bash
|
|
2567
|
+
npx fias-dev listings list --env staging # Slots, live and retired listings
|
|
2568
|
+
npx fias-dev listings push --env staging # Show the plan and the charge, then ask
|
|
2569
|
+
npx fias-dev listings push --env staging --dry-run # Plan only
|
|
2570
|
+
```
|
|
2571
|
+
|
|
2572
|
+
Icons: square PNG, JPEG or WebP, 512×512 recommended (256–1024), up to 512 KB — keep them outside `public/` so they don't ship in your bundle. Every listing passes a content check (about 1 credit) before anything is charged; a refused one costs nothing else.
|
|
2573
|
+
|
|
2516
2574
|
### Other CLI diagnostics
|
|
2517
2575
|
|
|
2518
2576
|
```bash
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- fias-sdk-guide-version: 2.
|
|
1
|
+
<!-- fias-sdk-guide-version: 2.31.0 -->
|
|
2
2
|
|
|
3
3
|
# FIAS Plugin Development Guide
|
|
4
4
|
|
|
@@ -1697,7 +1697,7 @@ await library.create({
|
|
|
1697
1697
|
await library.update(style.itemId, { words: 'brighter', expectedVersion: style.version });
|
|
1698
1698
|
```
|
|
1699
1699
|
|
|
1700
|
-
The Creative Library holds the user's **styles** (a look: words and 1–
|
|
1700
|
+
The Creative Library holds the user's **styles** (a look: words and 1–100 reference pictures — a request sends up to three, the ones you choose with `pictures`) and **characters** (one reference picture, an appearance, and a style). They belong to the user — or, in a team workspace that approved your arche, to the workspace — not to the arche that made them: FiasWorks Studio makes most of them, and any arche the user allows can use them. Reading them is seeing their pictures, so the permission is disclosed that way. Every change writes a new version (`get(id, version)` reads an old one); pass `expectedVersion` to `update` so a change made elsewhere is never overwritten. An update may keep pictures the item already has, whoever added them; only pictures you add must be your arche's own. Keep your own fields in `extension` — you see and change only yours. In a workspace, viewers can read but not change (`WORKSPACE_VIEWER_READ_ONLY`). `pick()` shows exactly what `list()` would return, so prefer it to drawing your own chooser; it rejects with `PICKER_UNAVAILABLE` in the dev harness (use `list()` there) and `SHEET_BUSY` while another Fias sheet is open. Not available in the builder preview or the test channel. **Error codes:** `CREATIVE_ITEM_NOT_FOUND`, `CREATIVE_REFERENCE_NOT_USABLE`, `CREATIVE_STYLE_REF_INVALID`, `CREATIVE_VERSION_CONFLICT`, `CREATIVE_LIBRARY_FULL`, `CREATIVE_INVALID`; on `generate`, `STYLE_NOT_FOUND`, `STYLE_NEEDS_DESCRIPTION` and `STYLE_PICTURE_NOT_IN_STYLE`.
|
|
1701
1701
|
|
|
1702
1702
|
### `useCreateAsset()` — Game art the FiasWorks way
|
|
1703
1703
|
|
|
@@ -1985,6 +1985,33 @@ A host older than this option ignores it and pushes. If you correct paths
|
|
|
1985
1985
|
automatically as they arrive, never repeat the same correction twice in a
|
|
1986
1986
|
row, or a push-only host can trap the Back button between two URLs.
|
|
1987
1987
|
|
|
1988
|
+
### `useOpener()` — Where the person came from, and "Use in" there
|
|
1989
|
+
|
|
1990
|
+
**Permission:** None to read it or go back; `opener:send` for `send()`
|
|
1991
|
+
|
|
1992
|
+
When a Fias tool opens your arche — the forge page's or the Arche Builder's "Open FiasWorks Studio" — Fias tells you where the person came from, and lets you send them back and hand one of your files over.
|
|
1993
|
+
|
|
1994
|
+
```tsx
|
|
1995
|
+
import { useOpener } from '@fias/arche-sdk';
|
|
1996
|
+
|
|
1997
|
+
const { opener, returnTo, send } = useOpener();
|
|
1998
|
+
// opener: { kind: 'forge' | 'builder', name: 'My Arche' } — or null
|
|
1999
|
+
|
|
2000
|
+
{
|
|
2001
|
+
opener && <button onClick={returnTo}>Return to {opener.name}</button>;
|
|
2002
|
+
}
|
|
2003
|
+
{
|
|
2004
|
+
opener && (
|
|
2005
|
+
<button onClick={() => send({ fileId: picture.cutoutFileId, name: 'pumpkin.png' })}>
|
|
2006
|
+
Use in {opener.name}
|
|
2007
|
+
</button>
|
|
2008
|
+
);
|
|
2009
|
+
}
|
|
2010
|
+
// send resolves { sent: true, name } (the name it landed as) or { canceled: true }
|
|
2011
|
+
```
|
|
2012
|
+
|
|
2013
|
+
`send` offers a Vault file **your arche created** — a picture you generated, cut out or edited. Fias shows the person a sheet naming the file and where it goes, and only their Send moves it: into a forge's `public/` (Claude Code is told it arrived), or an Arche Builder arche's asset library (which needs the arche published once). You never name the destination, and nothing you did not make can be sent. Show both buttons only when `opener` is set; it is null when your arche was opened any other way, and in the dev harness. **Error codes:** `NO_OPENER`, `SHEET_BUSY`, `SEND_UNAVAILABLE`.
|
|
2014
|
+
|
|
1988
2015
|
### `useFiasChrome()` — Expand, contract and the host chrome
|
|
1989
2016
|
|
|
1990
2017
|
**Permission:** None required
|
|
@@ -2254,28 +2281,30 @@ The SDK also exports the following for advanced use cases. Most plugins don't ne
|
|
|
2254
2281
|
|
|
2255
2282
|
**Fields:**
|
|
2256
2283
|
|
|
2257
|
-
| Field | Req
|
|
2258
|
-
| --------------------- |
|
|
2259
|
-
| `name` | Yes
|
|
2260
|
-
| `version` | Yes
|
|
2261
|
-
| `description` | Yes
|
|
2262
|
-
| `expandedDescription` | No
|
|
2263
|
-
| `main` | Yes
|
|
2264
|
-
| `archeType` | Yes
|
|
2265
|
-
| `categorySlug` | No
|
|
2266
|
-
| `icon` | No
|
|
2267
|
-
| `tags` | No
|
|
2268
|
-
| `pricing` | Yes
|
|
2269
|
-
| `permissions` | Yes
|
|
2270
|
-
| `products` | No
|
|
2271
|
-
| `isPublic` | No
|
|
2272
|
-
| `isFullScreen` | No
|
|
2273
|
-
| `showSidebar` | No
|
|
2274
|
-
| `showExpandButton` | No
|
|
2275
|
-
| `isListed` | No
|
|
2276
|
-
| `
|
|
2277
|
-
| `
|
|
2278
|
-
| `
|
|
2284
|
+
| Field | Req | Description |
|
|
2285
|
+
| --------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
2286
|
+
| `name` | Yes | Plugin identifier (lowercase, hyphens) |
|
|
2287
|
+
| `version` | Yes | Semver (e.g., `"1.0.0"`) |
|
|
2288
|
+
| `description` | Yes | Short marketplace description |
|
|
2289
|
+
| `expandedDescription` | No | Long-form marketplace copy |
|
|
2290
|
+
| `main` | Yes | Entry point source file |
|
|
2291
|
+
| `archeType` | Yes | `"tool"` or `"site"` |
|
|
2292
|
+
| `categorySlug` | No | Marketplace category for discovery |
|
|
2293
|
+
| `icon` | No | Path to an icon image **under `public/`** (e.g. `public/icon.png`) — only `src/` and `public/` are packaged. Applied on every publish (local, staging and prod) and rehosted as your marketplace/store icon. PNG, JPEG, WebP or SVG, ≤5 MB; raster images must also be ≤1024×1024 px (SVG has no pixel limit). An invalid icon rejects the submission: a first-publish listing fee is refunded, but the AI review that already ran is still billed. To change it, replace the file (or the path) and republish; removing the field keeps the current icon. |
|
|
2294
|
+
| `tags` | No | Discovery tags |
|
|
2295
|
+
| `pricing` | Yes | Marketplace **listing** pricing (see "Pricing detail" below). NOT for in-arche charges — use `products` |
|
|
2296
|
+
| `permissions` | Yes | Array of permission scopes (see below) |
|
|
2297
|
+
| `products` | No | IAP product catalog for `useFiasStore()` (see "Defining IAP products" below) |
|
|
2298
|
+
| `isPublic` | No | Default `false`. Anonymous visitors can view (see "Public arches" below) |
|
|
2299
|
+
| `isFullScreen` | No | Default `false`. Renders without platform chrome — implies `archeType: "site"` |
|
|
2300
|
+
| `showSidebar` | No | Default `true`. Set `false` to keep the platform top nav and drop the suggested-arches sidebar (see "Declining the sidebar" below) |
|
|
2301
|
+
| `showExpandButton` | No | Default `true`. Set `false` if you want neither the host's floating expand button nor your own (see "Controlling the host chrome" below) |
|
|
2302
|
+
| `isListed` | No | Default `true`. Visible in marketplace store |
|
|
2303
|
+
| `isGame` | No | Default `false`. `true` lists your arche on the Games page (`/a/games`) and badges it as a game in the Arche Store. Requires `game`. Omitting it on a republish takes the arche out of Games |
|
|
2304
|
+
| `game` | With `isGame` | `{ "genres": [...] }` — 1-4 (more only where a Fias admin allowed your arche) of `action`, `rpg`, `board`, `cards`, `casual`, `crafting`, `flying`, `match`, `platform`, `puzzle`, `strategy`, `word`, `racing`, `sports`, `simulation`, `trivia`, `music`, `educational`, `cozy`, `idle`, `tower-defense` (a kind of `strategy`: its games are listed there too). Refused without `isGame: true` |
|
|
2305
|
+
| `sdk` | Yes | SDK version range |
|
|
2306
|
+
| `dependencies` | No | npm packages with **exact** versions (max 20) |
|
|
2307
|
+
| `archeIds` | Auto | Per-environment IDs written by the CLI after first publish — don't hand-edit |
|
|
2279
2308
|
|
|
2280
2309
|
**Pricing detail:**
|
|
2281
2310
|
|
|
@@ -2290,7 +2319,7 @@ The SDK also exports the following for advanced use cases. Most plugins don't ne
|
|
|
2290
2319
|
|
|
2291
2320
|
Other optional sub-fields: `currency: "usd"` (only USD supported today), `platformFeePercent` (override the default platform cut — non-standard).
|
|
2292
2321
|
|
|
2293
|
-
**Permissions:** `theme:read`, `user:profile:read`, `storage:sandbox`, `storage:local`, `data:store`, `data:search`, `data:workspace`, `entities:invoke`, `entities:client_invoke`, `entities:image_generate`, `entities:image_edit`, `entities:audio_generate`, `entities:web_search`, `store:purchase`, `vault:documents:read`, `vault:documents:write`, `vault:user-documents:read`, `vault:user-documents:write`, `vault:user-documents:edit`, `vault:workspace-documents:read`, `vault:creative:read`, `vault:creative:write`, `assets:read`, `assets:community:read`, `assets:community:publish`, `litcraft:hub`, `navigation:open_arche`, `sandbox:vendored-libraries`, `ai:actions`
|
|
2322
|
+
**Permissions:** `theme:read`, `user:profile:read`, `storage:sandbox`, `storage:local`, `data:store`, `data:search`, `data:workspace`, `entities:invoke`, `entities:client_invoke`, `entities:image_generate`, `entities:image_edit`, `entities:audio_generate`, `entities:web_search`, `store:purchase`, `vault:documents:read`, `vault:documents:write`, `vault:user-documents:read`, `vault:user-documents:write`, `vault:user-documents:edit`, `vault:workspace-documents:read`, `vault:creative:read`, `vault:creative:write`, `opener:send`, `assets:read`, `assets:community:read`, `assets:community:publish`, `litcraft:hub`, `navigation:open_arche`, `sandbox:vendored-libraries`, `ai:actions`
|
|
2294
2323
|
|
|
2295
2324
|
**Using AI:** Add `"entities:invoke"` to permissions, then use `useEntityInvocation()` with a model entity ID (or a `{ capability }` selector, or an entry from `useTextModels()`) and your own `systemPrompt`. Browse available models with `npx fias-dev entities`.
|
|
2296
2325
|
|
|
@@ -2513,6 +2542,35 @@ npx fias-dev collaborators remove <identifier> # Revoke a collaborat
|
|
|
2513
2542
|
|
|
2514
2543
|
All commands accept `--env <prod|staging|local>` (default `prod`).
|
|
2515
2544
|
|
|
2545
|
+
### Extra Store listings (games inside your arche)
|
|
2546
|
+
|
|
2547
|
+
If your arche holds several games (or pages) that people should find on their own — Flappyland's mini-games, each at its own path — give each one an **extra Store listing**: its own title, description, square icon (also its iOS Home Screen icon) and genres, opening at its path. They show in Store search, on your Store page and on the Games page. Each listing uses a slot: **$50 once** (or a free listing an admin granted you); retiring one frees its slot for another, never refunds it. Your app must handle the path (`useFiasNavigation().currentPath`).
|
|
2548
|
+
|
|
2549
|
+
Manage them on your arche's settings page ("Store listings"), or from a `store-listings.json` file:
|
|
2550
|
+
|
|
2551
|
+
```json
|
|
2552
|
+
{
|
|
2553
|
+
"listings": [
|
|
2554
|
+
{
|
|
2555
|
+
"path": "/games/wordtrace",
|
|
2556
|
+
"title": "Wordtrace",
|
|
2557
|
+
"description": "Trace as many words as you can through a grid of letters.",
|
|
2558
|
+
"isGame": true,
|
|
2559
|
+
"genres": ["word"],
|
|
2560
|
+
"icon": "store-art/wordtrace.png"
|
|
2561
|
+
}
|
|
2562
|
+
]
|
|
2563
|
+
}
|
|
2564
|
+
```
|
|
2565
|
+
|
|
2566
|
+
```bash
|
|
2567
|
+
npx fias-dev listings list --env staging # Slots, live and retired listings
|
|
2568
|
+
npx fias-dev listings push --env staging # Show the plan and the charge, then ask
|
|
2569
|
+
npx fias-dev listings push --env staging --dry-run # Plan only
|
|
2570
|
+
```
|
|
2571
|
+
|
|
2572
|
+
Icons: square PNG, JPEG or WebP, 512×512 recommended (256–1024), up to 512 KB — keep them outside `public/` so they don't ship in your bundle. Every listing passes a content check (about 1 credit) before anything is charged; a refused one costs nothing else.
|
|
2573
|
+
|
|
2516
2574
|
### Other CLI diagnostics
|
|
2517
2575
|
|
|
2518
2576
|
```bash
|