@onlyworlds/sdk 4.72.1 → 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 +13 -0
- package/README.md +2 -2
- package/SCHEMA.md +1 -1
- package/dist/index.d.ts +157 -159
- package/dist/index.js +71 -72
- 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,6 +5,19 @@ 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
|
+
|
|
14
|
+
## [4.72.2] - 2026-10-24
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
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.)
|
|
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`.
|
|
20
|
+
|
|
8
21
|
## [4.72.1] - 2026-10-24
|
|
9
22
|
|
|
10
23
|
### Fixed
|
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.
|