@onlyworlds/sdk 4.72.2 → 4.72.3
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/AGENTS.md +6 -6
- package/CHANGELOG.md +7 -1
- package/README.md +2 -2
- package/SCHEMA.md +1 -1
- package/dist/index.d.ts +26 -26
- package/dist/index.js +7 -7
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# For AI agents using @onlyworlds/sdk
|
|
2
2
|
|
|
3
|
-
**Current as of**: SDK **4.x** · schema-dist **v0.33.0-dist.
|
|
3
|
+
**Current as of**: SDK **4.x** · schema-dist **v0.33.0-dist.61** (canonical 00.33.00).
|
|
4
4
|
This line is asserted by `codegen:check` in CI — if the pin moves and this file is not
|
|
5
5
|
re-read against it, the check fails rather than letting this document rot quietly.
|
|
6
6
|
|
|
@@ -27,7 +27,7 @@ against live data). The v1 surface (`OnlyWorldsClient`, the `ElementType` enum)
|
|
|
27
27
|
- Never send a `"world"` field in payloads — world identity comes from the API key (422 otherwise).
|
|
28
28
|
- v2 link fields use ONE name both directions (no `_ids` suffix — that is v1 dialect only).
|
|
29
29
|
- PATCH is destructive on sent fields; use `editLinks` (atomic add/remove) for relationships.
|
|
30
|
-
- Offline or stale edits: pass `{ ifMatch: el.change_seq }` to `patch`/`editLinks` (since 4.9.0) and `delete` (since 4.61.0
|
|
30
|
+
- Offline or stale edits: pass `{ ifMatch: el.change_seq }` to `patch`/`editLinks` (since 4.9.0) and `delete` (since 4.61.0).
|
|
31
31
|
If the element moved, nothing is written and `OwPreconditionFailedError` (412) carries
|
|
32
32
|
`current`; the server never merges, the client decides.
|
|
33
33
|
- Polling: `changesHead()` (since 4.15.0) gives `{head, cursor, epoch, unchanged}` without a
|
|
@@ -44,7 +44,7 @@ against live data). The v1 surface (`OnlyWorldsClient`, the `ElementType` enum)
|
|
|
44
44
|
- Images: `uploadImage(bytes)` returns `{ url, ... }`; set `url` as `image_url`. The bytes go
|
|
45
45
|
to the edge with a single-use ticket from keel, never with the API key. `removeImage(urlOrKey)`
|
|
46
46
|
takes one back (its uploader or the world's owner); it leaves `image_url` on elements as is.
|
|
47
|
-
- Files on elements
|
|
47
|
+
- Files on elements: `listFiles(type, id)`, `uploadFile(type, id, bytes, { name?,
|
|
48
48
|
label?, onProgress? })` (ticket from keel, bytes to the upload host; the kind from the name's
|
|
49
49
|
extension), `fileDownloadLink(type, id, fileId)` (a 5-minute link: fetch it at once, never
|
|
50
50
|
store it), `removeFile(type, id, fileId)`, `worldFiles()` (`used_bytes` of `cap_bytes`).
|
|
@@ -70,7 +70,7 @@ against live data). The v1 surface (`OnlyWorldsClient`, the `ElementType` enum)
|
|
|
70
70
|
without spending: `{ token_rating, tokens_used_today, tokens_remaining, resets_at }`.
|
|
71
71
|
- Who am I (since 4.22.0, a world key): `client.me()` is `{ world, scope, kind, role,
|
|
72
72
|
membership, character, front_door }` (`membership` is what `created_by` holds for what you
|
|
73
|
-
create; null for the owner); `front_door` (since 4.60.0
|
|
73
|
+
create; null for the owner); `front_door` (since 4.60.0) names who answers for your
|
|
74
74
|
seat (`sponsor`, `sponsor_character`), your Character, and the world's Charter with up to five
|
|
75
75
|
skill Objects: an agent reads `charter` first. `client.members()` is the roster's rows. An
|
|
76
76
|
account token is a TypeError.
|
|
@@ -135,13 +135,13 @@ against live data). The v1 surface (`OnlyWorldsClient`, the `ElementType` enum)
|
|
|
135
135
|
is lower case letters, digits and hyphens, 1 to 32 characters, else a TypeError at construction.
|
|
136
136
|
keel stores it as `changed_client` on the element and `deleted_client` on a `/changes` delete:
|
|
137
137
|
the client's claim, never proof, and null when none was sent.
|
|
138
|
-
- **Proposals
|
|
138
|
+
- **Proposals**: `propose(type, id, { fields, evidence, expires? })` suggests a change
|
|
139
139
|
without making it; any member who reads the element may, a read key included. The owner or a
|
|
140
140
|
co-builder decides: `acceptProposal(type, id, pid)` (the write is theirs; 409 `stale_proposal`,
|
|
141
141
|
an `OwStaleProposalError` with `conflicts` and `current`, when a proposed field moved since),
|
|
142
142
|
`declineProposal(type, id, pid, { reason? })`; the proposer may `withdrawProposal`. Lists:
|
|
143
143
|
`listProposals(type, id)`, `worldProposals({ state?, element? })`; the world's queue (since
|
|
144
|
-
4.66.0
|
|
144
|
+
4.66.0) also lists each new element written as proposed (`kind: 'new_element'`
|
|
145
145
|
beside `kind: 'proposal'`), which a keeper settles with `reviewNewElement(type, id, { decision:
|
|
146
146
|
'accept' | 'decline', reason? })` (decline deletes it; 422 `err.isNotProposed` when unmarked).
|
|
147
147
|
A row's `fields` holds only what differs; `omitted` names what an upsert left empty. When the world's
|
package/CHANGELOG.md
CHANGED
|
@@ -5,11 +5,17 @@ earlier history lives in git log only.
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [4.72.3] - 2026-10-24
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- **Schema repinned to schema-dist `v0.33.0-dist.61`** (from dist.59; the same canonical 00.33.00, so `ONLYWORLDS_VERSION` stays `'00.33.00'`, no schema file moved and no generated type changed). Serial 60 rules eight spine readings and adds `x_spine_retires`, the profile's thirteenth key; serial 61 gives `schema.json` the advisory minimum and maximum of the 15 integer fields that have them (this package's types and `FIELD_SCHEMA` are generated from the field list, which does not carry them), rules two more spine readings with four fixture cases, and has the folder lint name the format's version. The SDK reads no spine key; the profile pages it replays (names, room, review) moved only their ruled-when lines.
|
|
13
|
+
|
|
8
14
|
## [4.72.2] - 2026-10-24
|
|
9
15
|
|
|
10
16
|
### Fixed
|
|
11
17
|
|
|
12
|
-
- **`OwElementBase.hidden`'s doc comment says what a create does with it.** It said a write ignores the mark. Since keel PR 199 (live 2026-10-23), a create (a POST, a PUT of a new id, a `/bulk` item that creates) carrying `hidden: true` creates the element hidden, from the owner's keys or a co-builder's; any other key gets 403 `hidden_not_allowed` and nothing is created. Every other write still ignores it. The SDK already sent the mark as the element had it; only the words were wrong,
|
|
18
|
+
- **`OwElementBase.hidden`'s doc comment says what a create does with it.** It said a write ignores the mark. Since keel PR 199 (live 2026-10-23), a create (a POST, a PUT of a new id, a `/bulk` item that creates) carrying `hidden: true` creates the element hidden, from the owner's keys or a co-builder's; any other key gets 403 `hidden_not_allowed` and nothing is created. Every other write still ignores it. The SDK already sent the mark as the element had it; only the words were wrong, in the types an editor shows (`dist/index.d.ts`). (Corrected after release: the entry first said they reach the docs' TypeScript reference, which lists the methods and not this field.)
|
|
13
19
|
- Tests: `create`, `upsert` and `bulk` send `hidden` as given (it is not on the stripped list); a 403 `hidden_not_allowed` surfaces as `OwApiError.code`.
|
|
14
20
|
|
|
15
21
|
## [4.72.1] - 2026-10-24
|
package/README.md
CHANGED
|
@@ -368,7 +368,7 @@ A lore view (a list, a count, search, a graph, a link picker, a story's context)
|
|
|
368
368
|
|
|
369
369
|
### A world's own words for the types
|
|
370
370
|
|
|
371
|
-
A world may carry `x_names` on the World: its own word for a type (Character shown as *Employee* in a work world), and a finer word for a supertype inside one. `typeWord(world, type, { supertype, many })` returns that word, or `null` for the standard's name. `world` is a `getWorld()` body (keel serves `x_` keys on the World
|
|
371
|
+
A world may carry `x_names` on the World: its own word for a type (Character shown as *Employee* in a work world), and a finer word for a supertype inside one. `typeWord(world, type, { supertype, many })` returns that word, or `null` for the standard's name. `world` is a `getWorld()` body (keel serves `x_` keys on the World) or a folder's `world.json`. The API, the folder, the schema and every id keep the standard's names; the word is for display only.
|
|
372
372
|
|
|
373
373
|
```typescript
|
|
374
374
|
import { typeWord } from '@onlyworlds/sdk';
|
|
@@ -404,4 +404,4 @@ Use this SDK for known operations in your own code (CRUD, sync, bulk). To let an
|
|
|
404
404
|
|
|
405
405
|
## Licence and contributions
|
|
406
406
|
|
|
407
|
-
The code is MIT (`LICENSE`). Issues are welcome: a bug, a wrong word, a thing you could not do. Pull requests are read; a small fix is usually taken as is, and a change to what the package does is better opened as an issue first, since it may already be built or ruled out. A reply can take a few days. A vulnerability goes privately, never in an issue: `SECURITY.md`.
|
|
407
|
+
The code is MIT (`LICENSE`). Issues are welcome: a bug, a wrong word, a thing you could not do. Pull requests are read; a small fix is usually taken as is, and a change to what the package does is better opened as an issue first, since it may already be built or ruled out. A reply can take a few days. A vulnerability goes privately, never in an issue: `SECURITY.md`. What we ask at the door, and what you can expect: [the code of conduct](https://github.com/OnlyWorlds/OnlyWorlds/blob/main/CODE_OF_CONDUCT.md).
|
package/SCHEMA.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# OnlyWorlds Schema Reference
|
|
2
2
|
|
|
3
|
-
**Source**: https://github.com/OnlyWorlds/schema-dist @ **v0.33.0-dist.
|
|
3
|
+
**Source**: https://github.com/OnlyWorlds/schema-dist @ **v0.33.0-dist.61** — canonical schema **00.33.00**, published 2026-10-24.
|
|
4
4
|
|
|
5
5
|
GENERATED from the canonical schema YAML — do not hand-edit (regenerate: `python codegen/generate_types.py`).
|
|
6
6
|
Written for both humans and AI agents reading this package locally.
|
package/dist/index.d.ts
CHANGED
|
@@ -2163,7 +2163,7 @@ interface OwBulkItem {
|
|
|
2163
2163
|
* the NUMERIC HTTP status of that slot (201/400/...), success slots echo
|
|
2164
2164
|
* created_at/updated_at, error slots carry an OwErrorBody under `error`.
|
|
2165
2165
|
* A contributor's write on someone else's element fails in its slot as
|
|
2166
|
-
* `{status: 403, error: {code: 'not_author'}}
|
|
2166
|
+
* `{status: 403, error: {code: 'not_author'}}`, never as a thrown error.
|
|
2167
2167
|
* After an `atomic: true` request with `errors` true NOTHING was written, yet the slots of
|
|
2168
2168
|
* the items that would have succeeded still say 201 (keel's "counterfactual 201s"): do not
|
|
2169
2169
|
* record their ids as created.
|
|
@@ -2617,7 +2617,7 @@ interface OwJoinPreview {
|
|
|
2617
2617
|
}>;
|
|
2618
2618
|
[k: string]: unknown;
|
|
2619
2619
|
}
|
|
2620
|
-
/** One of a world's invite links, as GET /account/worlds/{id}/links lists it
|
|
2620
|
+
/** One of a world's invite links, as GET /account/worlds/{id}/links lists it. */
|
|
2621
2621
|
interface OwWorldLink {
|
|
2622
2622
|
/** The link's id: revokeWorldLink takes it. */
|
|
2623
2623
|
id: string;
|
|
@@ -2737,9 +2737,9 @@ interface OwSignedIn {
|
|
|
2737
2737
|
/**
|
|
2738
2738
|
* One world of the account, from GET /account/worlds: owned (`role: 'owner'`) or shared
|
|
2739
2739
|
* (`'collaborator'`, with `member_role` the membership's role). Keys by name and last four only,
|
|
2740
|
-
* never the key; on a shared world only the member's own keys
|
|
2740
|
+
* never the key; on a shared world only the member's own keys.
|
|
2741
2741
|
*/
|
|
2742
|
-
/** The draught's policy (keel PR 155
|
|
2742
|
+
/** The draught's policy (keel PR 155): what GET /character/{id}/context serves and how. */
|
|
2743
2743
|
interface OwDraughtPolicy {
|
|
2744
2744
|
/** Sections to serve; default every one but `messages`, `room` and `proposed`, each served only when named. */
|
|
2745
2745
|
components?: OwDraughtComponent[];
|
|
@@ -2786,7 +2786,7 @@ interface OwDraughtItem {
|
|
|
2786
2786
|
/** The element's body exactly as the list route serves it to the same reader. */
|
|
2787
2787
|
element: OwElement;
|
|
2788
2788
|
}
|
|
2789
|
-
/** One Character's context in one read, GET /character/{id}/context (keel PR 155
|
|
2789
|
+
/** One Character's context in one read, GET /character/{id}/context (keel PR 155; the draught). */
|
|
2790
2790
|
/** The draught under `compact`: every section may be absent, and so may `cut` (nothing was cut). */
|
|
2791
2791
|
type OwDraughtCompact = Omit<OwDraught, 'cut'> & {
|
|
2792
2792
|
cut?: Record<string, number>;
|
|
@@ -2883,7 +2883,7 @@ interface OwCreateAccountWorldInput {
|
|
|
2883
2883
|
/**
|
|
2884
2884
|
* createAccountWorld's 201: the world's row as listAccountWorlds lists it, plus the full write key
|
|
2885
2885
|
* once in `key` (never shown again). keel's document names it `AccountWorldCreated`, and
|
|
2886
|
-
*
|
|
2886
|
+
* the maintainers' wire check holds this type to it key for key.
|
|
2887
2887
|
*/
|
|
2888
2888
|
interface OwCreatedAccountWorld {
|
|
2889
2889
|
id: string;
|
|
@@ -2902,8 +2902,8 @@ interface OwCreatedAccountWorld {
|
|
|
2902
2902
|
}
|
|
2903
2903
|
/**
|
|
2904
2904
|
* A world key as minted by POST /account/worlds/{id}/keys: the row the account's key list shows,
|
|
2905
|
-
* plus the full key once in `key` (never shown again). A member's key carries its `member` label
|
|
2906
|
-
*
|
|
2905
|
+
* plus the full key once in `key` (never shown again). A member's key carries its `member` label;
|
|
2906
|
+
* an owner's row has no such field.
|
|
2907
2907
|
*/
|
|
2908
2908
|
interface OwMintedKey {
|
|
2909
2909
|
id: string;
|
|
@@ -3111,7 +3111,7 @@ interface ListParams {
|
|
|
3111
3111
|
/**
|
|
3112
3112
|
* Accepted: `name` (exact), `name__icontains`, `supertype`, `subtype`, and
|
|
3113
3113
|
* `characters=<id>` (contains) on every type with a `characters` link (at schema
|
|
3114
|
-
* 0.30.1: collective, construct, event, narrative, relation, title
|
|
3114
|
+
* 0.30.1: collective, construct, event, narrative, relation, title). Any other key 422s
|
|
3115
3115
|
* server-side with the list of filters in the message -- the client passes keys
|
|
3116
3116
|
* through unchecked and lets the platform say so. (`__in`, `__gte`, `__lte` and
|
|
3117
3117
|
* `__isnull` are designed in keel's spec but not built; `ordering` 422s too.)
|
|
@@ -3213,7 +3213,7 @@ declare class OwApiError extends Error {
|
|
|
3213
3213
|
/**
|
|
3214
3214
|
* Seconds to wait before retrying, from the `Retry-After` header (a delay in
|
|
3215
3215
|
* seconds or an HTTP date), else null. keel sends it on 503 `server_busy`
|
|
3216
|
-
* (admission control
|
|
3216
|
+
* (admission control) and 429 `rate_limited`. This client never retries
|
|
3217
3217
|
* on its own; the value is here so callers can back off politely.
|
|
3218
3218
|
* Readable in browsers too: keel exposes `Retry-After` over CORS and its
|
|
3219
3219
|
* admission gate's 503 carries CORS headers (keel `4949406`, 2026-09-28).
|
|
@@ -3238,7 +3238,7 @@ declare class OwApiError extends Error {
|
|
|
3238
3238
|
get isIdempotencyInFlight(): boolean;
|
|
3239
3239
|
/**
|
|
3240
3240
|
* The id is already taken (409 `id_conflict`): a create with an id that exists
|
|
3241
|
-
*
|
|
3241
|
+
* or a PUT whose id belongs to another world. Retrying will not
|
|
3242
3242
|
* help; the id is the problem. `/bulk` never throws for this: it answers 200 with a
|
|
3243
3243
|
* per-item slot `{status: 409, error: {code: 'id_conflict'}}` — check the slot.
|
|
3244
3244
|
*/
|
|
@@ -3250,7 +3250,7 @@ declare class OwApiError extends Error {
|
|
|
3250
3250
|
* the stored cursor and walk again from the start. What to do with what the local copy holds
|
|
3251
3251
|
* that the new walk does not name is `resyncReason`'s: `role`, keep it; `view`, drop it.
|
|
3252
3252
|
* Without a reason (keel's hidden mark off), keep it: a reset never empties a copy (keel PR
|
|
3253
|
-
* 104,
|
|
3253
|
+
* 104, ruled by Titus: sharing is forward-only). Never empty the copy on your own.
|
|
3254
3254
|
*/
|
|
3255
3255
|
get isResyncRequired(): boolean;
|
|
3256
3256
|
/**
|
|
@@ -3267,14 +3267,14 @@ declare class OwApiError extends Error {
|
|
|
3267
3267
|
get isBusy(): boolean;
|
|
3268
3268
|
/**
|
|
3269
3269
|
* A contributor tried to change, replace, relink or delete an element someone else
|
|
3270
|
-
* created (403 `not_author
|
|
3270
|
+
* created (403 `not_author`). Retrying will not help; the
|
|
3271
3271
|
* element is not theirs. `/bulk` never throws for this: it answers 200 with a per-item
|
|
3272
3272
|
* slot `{status: 403, error: {code: 'not_author'}}`. Owners and co-builders never see it.
|
|
3273
3273
|
*/
|
|
3274
3274
|
get isNotAuthor(): boolean;
|
|
3275
3275
|
/**
|
|
3276
3276
|
* A member key tried what only the owner may do: `patchWorld`, even with a co-builder's
|
|
3277
|
-
* key (403 `owner_only
|
|
3277
|
+
* key (403 `owner_only`; sharing's publish, republish and revoke answer
|
|
3278
3278
|
* contributors and guests with the same code). Retrying will not help. The owner's own
|
|
3279
3279
|
* key never sees it.
|
|
3280
3280
|
*/
|
|
@@ -3514,7 +3514,7 @@ declare function pinExpectation(kind: OwKeyKind): 'never' | 'optional' | 'requir
|
|
|
3514
3514
|
|
|
3515
3515
|
/**
|
|
3516
3516
|
* Sign in with OnlyWorlds: OAuth 2.1's authorization code with PKCE (S256) for public clients
|
|
3517
|
-
* (keel PR 154, live 2026-10-22
|
|
3517
|
+
* (keel PR 154, live 2026-10-22).
|
|
3518
3518
|
*
|
|
3519
3519
|
* Two calls. `beginSignIn` mints `state` and a PKCE verifier, keeps them under the client id in a
|
|
3520
3520
|
* storage the page shares with its callback (sessionStorage by default), and hands back the
|
|
@@ -3640,7 +3640,7 @@ declare class OwV2Client {
|
|
|
3640
3640
|
/** GET /{type}/ -- one cursor page. */
|
|
3641
3641
|
list(type: ElementType | string, params?: ListParams): Promise<OwPage>;
|
|
3642
3642
|
/**
|
|
3643
|
-
* GET /character/{id}/context -- the draught (keel PR 155
|
|
3643
|
+
* GET /character/{id}/context -- the draught (keel PR 155): what one Character knows, as the
|
|
3644
3644
|
* recorded world holds it, in one read: her element, what she holds and sits in, her open work,
|
|
3645
3645
|
* how she works, the Events she was in, the Narratives she knows, everything else that names
|
|
3646
3646
|
* her, her sheet, what changed around her (`since`), and who plays whom; the world's name and
|
|
@@ -4063,7 +4063,7 @@ declare class OwV2Client {
|
|
|
4063
4063
|
acceptJoin(code: string): Promise<OwJoinedMembership>;
|
|
4064
4064
|
/**
|
|
4065
4065
|
* POST /account/worlds/{worldId}/links -- a new invite link for a world this client's
|
|
4066
|
-
* `ow_a_` token owns
|
|
4066
|
+
* `ow_a_` token owns: `reader` is required (`person`, accepted with acceptJoin;
|
|
4067
4067
|
* `agent`, redeemed at POST /join; `player`, a friend with no account, redeemed with
|
|
4068
4068
|
* redeemJoin for a read key); `role`, when left out, is keel's default: guest for a
|
|
4069
4069
|
* person link, contributor for an agent link (a player link is guest, and refuses any other), `days` (1, 7 or 30) to 7; `withCharacter` (agent links
|
|
@@ -4275,7 +4275,7 @@ declare class OwV2Client {
|
|
|
4275
4275
|
* `navigate: false`). `redirectUri` is the registered return address as a string, `https:`
|
|
4276
4276
|
* only, never built from `location.origin`: a tool's registration is read at
|
|
4277
4277
|
* `GET /api/v2/auth/clients`. `resume` is small JSON handed back by `completeSignIn`. No request
|
|
4278
|
-
* is sent; any client, keyless included.
|
|
4278
|
+
* is sent; any client, keyless included.
|
|
4279
4279
|
*/
|
|
4280
4280
|
signInWithOnlyWorlds(opts: OwSignInBegin): Promise<OwSignInBegun>;
|
|
4281
4281
|
/**
|
|
@@ -4525,7 +4525,7 @@ declare function typeWord(world: object | null | undefined, type: string, opts?:
|
|
|
4525
4525
|
* The world file, `.owworld` (Folder Format spec §4.7; a `.zip` by another
|
|
4526
4526
|
* name): one archive holding one whole world as a portable copy (§4.1), and
|
|
4527
4527
|
* the reader that opens one back. Absorbed from Atlas's
|
|
4528
|
-
* `src/store/world-file.ts` (
|
|
4528
|
+
* `src/store/world-file.ts` (Atlas 1.17), so Atlas, Lantern and any
|
|
4529
4529
|
* script read one file the same way; brought to §4.7's checks OW-1 to OW-22
|
|
4530
4530
|
* and their fixture set.
|
|
4531
4531
|
*
|
|
@@ -4681,8 +4681,8 @@ declare function nfc(text: string): string;
|
|
|
4681
4681
|
|
|
4682
4682
|
/**
|
|
4683
4683
|
* World lookup: find the elements a plain-language question is about, in a
|
|
4684
|
-
* world held in memory, with no model and no network. Ported from
|
|
4685
|
-
* Lantern Ask trial (
|
|
4684
|
+
* world held in memory, with no model and no network. Ported from the
|
|
4685
|
+
* Lantern Ask trial (round 2), with the
|
|
4686
4686
|
* same ranking, so the trial's measurements on two real worlds describe this
|
|
4687
4687
|
* code. Pure: runs in a browser and in Node alike.
|
|
4688
4688
|
*
|
|
@@ -4898,7 +4898,7 @@ declare function buildAskContext<T extends OwLookupElement>(items: Array<OwLooku
|
|
|
4898
4898
|
* Photo preparation: make a picture from a phone's camera or files ready for
|
|
4899
4899
|
* `uploadImage` (webp, png, jpeg or avif, at most 15 MB), in the browser,
|
|
4900
4900
|
* before it leaves the device. Lifted from the upload page's converter
|
|
4901
|
-
* (upload.onlyworlds.com
|
|
4901
|
+
* (upload.onlyworlds.com): canvas, webp at quality 0.82, alpha kept.
|
|
4902
4902
|
*
|
|
4903
4903
|
* Two traps it handles:
|
|
4904
4904
|
* - A browser that cannot encode webp hands back a PNG instead (Safari has
|
|
@@ -4963,8 +4963,8 @@ declare function preparePhoto(input: Blob, opts?: OwPhotoOptions): Promise<OwPre
|
|
|
4963
4963
|
* Calendar kernel — pure arithmetic, formatting, and parsing over the world's
|
|
4964
4964
|
* integer time line.
|
|
4965
4965
|
*
|
|
4966
|
-
*
|
|
4967
|
-
*
|
|
4966
|
+
* The contract is the calendar design of 2026-07-14 (its §5 and §5b). The
|
|
4967
|
+
* binding rules, restated where they bite:
|
|
4968
4968
|
*
|
|
4969
4969
|
* - The number line is the only truth. A calendar names it; it never owns it.
|
|
4970
4970
|
* - Absolute year index is ZERO-based: step 0 opens absolute year 0. All
|
|
@@ -5355,7 +5355,7 @@ declare enum GameTier {
|
|
|
5355
5355
|
* Since then keel mounts only `status/` and `encryption-info/` under /tokens/
|
|
5356
5356
|
* (`accounts/token_api.py`; consume, access-key and both revokes answer 404 on
|
|
5357
5357
|
* production, 2026-10-14), and spending moved server-side: the Council spends
|
|
5358
|
-
* through keel's council proxy (
|
|
5358
|
+
* through keel's council proxy (ruled 2026-10-14), and
|
|
5359
5359
|
* `OwV2Client.allowance()` reads the token rating. The four dead methods are
|
|
5360
5360
|
* deprecated in 4.23.0 and leave in 5.0.
|
|
5361
5361
|
*/
|
|
@@ -5419,7 +5419,7 @@ declare class TokenResource {
|
|
|
5419
5419
|
* Consume tokens for service usage
|
|
5420
5420
|
*
|
|
5421
5421
|
* @deprecated keel serves no consume route (404 on production since 2026-10;
|
|
5422
|
-
* no client decides what its act costs,
|
|
5422
|
+
* no client decides what its act costs, ruled 2026-10-14): spending
|
|
5423
5423
|
* happens server-side in the route that does the work. Removed in 5.0.
|
|
5424
5424
|
*
|
|
5425
5425
|
* Reports token consumption to track daily usage. Allows consumption even if
|
package/dist/index.js
CHANGED
|
@@ -108,7 +108,7 @@ var OwApiError = class extends Error {
|
|
|
108
108
|
}
|
|
109
109
|
/**
|
|
110
110
|
* The id is already taken (409 `id_conflict`): a create with an id that exists
|
|
111
|
-
*
|
|
111
|
+
* or a PUT whose id belongs to another world. Retrying will not
|
|
112
112
|
* help; the id is the problem. `/bulk` never throws for this: it answers 200 with a
|
|
113
113
|
* per-item slot `{status: 409, error: {code: 'id_conflict'}}` — check the slot.
|
|
114
114
|
*/
|
|
@@ -122,7 +122,7 @@ var OwApiError = class extends Error {
|
|
|
122
122
|
* the stored cursor and walk again from the start. What to do with what the local copy holds
|
|
123
123
|
* that the new walk does not name is `resyncReason`'s: `role`, keep it; `view`, drop it.
|
|
124
124
|
* Without a reason (keel's hidden mark off), keep it: a reset never empties a copy (keel PR
|
|
125
|
-
* 104,
|
|
125
|
+
* 104, ruled by Titus: sharing is forward-only). Never empty the copy on your own.
|
|
126
126
|
*/
|
|
127
127
|
get isResyncRequired() {
|
|
128
128
|
return this.status === 409 && this.code === "resync_required";
|
|
@@ -149,7 +149,7 @@ var OwApiError = class extends Error {
|
|
|
149
149
|
}
|
|
150
150
|
/**
|
|
151
151
|
* A contributor tried to change, replace, relink or delete an element someone else
|
|
152
|
-
* created (403 `not_author
|
|
152
|
+
* created (403 `not_author`). Retrying will not help; the
|
|
153
153
|
* element is not theirs. `/bulk` never throws for this: it answers 200 with a per-item
|
|
154
154
|
* slot `{status: 403, error: {code: 'not_author'}}`. Owners and co-builders never see it.
|
|
155
155
|
*/
|
|
@@ -158,7 +158,7 @@ var OwApiError = class extends Error {
|
|
|
158
158
|
}
|
|
159
159
|
/**
|
|
160
160
|
* A member key tried what only the owner may do: `patchWorld`, even with a co-builder's
|
|
161
|
-
* key (403 `owner_only
|
|
161
|
+
* key (403 `owner_only`; sharing's publish, republish and revoke answer
|
|
162
162
|
* contributors and guests with the same code). Retrying will not help. The owner's own
|
|
163
163
|
* key never sees it.
|
|
164
164
|
*/
|
|
@@ -1377,7 +1377,7 @@ var OwV2Client = class {
|
|
|
1377
1377
|
}
|
|
1378
1378
|
/**
|
|
1379
1379
|
* POST /account/worlds/{worldId}/links -- a new invite link for a world this client's
|
|
1380
|
-
* `ow_a_` token owns
|
|
1380
|
+
* `ow_a_` token owns: `reader` is required (`person`, accepted with acceptJoin;
|
|
1381
1381
|
* `agent`, redeemed at POST /join; `player`, a friend with no account, redeemed with
|
|
1382
1382
|
* redeemJoin for a read key); `role`, when left out, is keel's default: guest for a
|
|
1383
1383
|
* person link, contributor for an agent link (a player link is guest, and refuses any other), `days` (1, 7 or 30) to 7; `withCharacter` (agent links
|
|
@@ -1722,7 +1722,7 @@ var OwV2Client = class {
|
|
|
1722
1722
|
* `navigate: false`). `redirectUri` is the registered return address as a string, `https:`
|
|
1723
1723
|
* only, never built from `location.origin`: a tool's registration is read at
|
|
1724
1724
|
* `GET /api/v2/auth/clients`. `resume` is small JSON handed back by `completeSignIn`. No request
|
|
1725
|
-
* is sent; any client, keyless included.
|
|
1725
|
+
* is sent; any client, keyless included.
|
|
1726
1726
|
*/
|
|
1727
1727
|
async signInWithOnlyWorlds(opts) {
|
|
1728
1728
|
only("signInWithOnlyWorlds", opts, ["clientId", "redirectUri", "resume", "storage", "navigate"]);
|
|
@@ -4780,7 +4780,7 @@ var TokenResource = class {
|
|
|
4780
4780
|
* Consume tokens for service usage
|
|
4781
4781
|
*
|
|
4782
4782
|
* @deprecated keel serves no consume route (404 on production since 2026-10;
|
|
4783
|
-
* no client decides what its act costs,
|
|
4783
|
+
* no client decides what its act costs, ruled 2026-10-14): spending
|
|
4784
4784
|
* happens server-side in the route that does the work. Removed in 5.0.
|
|
4785
4785
|
*
|
|
4786
4786
|
* Reports token consumption to track daily usage. Allows consumption even if
|