@onlyworlds/sdk 4.64.0 → 4.65.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/CHANGELOG.md +12 -0
- package/README.md +2 -0
- package/dist/index.d.ts +43 -2
- package/dist/index.js +5 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,18 @@ earlier history lives in git log only.
|
|
|
5
5
|
|
|
6
6
|
## [Unreleased]
|
|
7
7
|
|
|
8
|
+
## [4.65.0] - 2026-10-23
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **`patchWorld` takes a `getWorld()` body back again** (keel #571, live 2026-10-23). keel's `GET /world` now serves `origin`, and a PATCH naming it is a 422 (an unknown key), so a world body read and sent back failed. `patchWorld` now leaves out `origin`, and `id` too: keel answers `id` with the same 422 (it is not a key PATCH takes), so the round trip 4.57.1's entry promised never held for a whole body. `owner_character` is still sent.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- **`OwWorldMeta.origin?: OwWorldOrigin`**, read-only: where the world first came from, `{ source, producer }`, both keys always present, each the folder format's provenance line (spec 4.2) as the tool that made the world from a folder gave it, or `null`. Types `OwWorldOrigin`, `OwWorldSource` (`server`, `world`, `at`) and `OwWorldProducer` (`tool`, `version`, `input`), each open to keys keel keeps as given. The origin is written as the plain keys `source` and `producer`: `patchWorld({ source, producer })` sends them as given (an object, or `null` to clear).
|
|
17
|
+
- **The World's extension keys on `OwWorldMeta`**: `x_*`, `atlas_*` and `shadow_*`, typed `unknown` by template-literal index signatures (the first is `x_names`, the names profile `typeWord` reads). `patchWorld` sends every one as given, `null` included (keel removes the key); over keel's 64 KB cap on the whole store the answer is a 422 with `param: extensions`.
|
|
18
|
+
- Tests: a full `GET /world` body sent back sends neither `origin` nor `id` and keeps `x_names`; `source`, `producer` and a key of each extension prefix pass untouched, `null` included; the published types declare `origin` and its two keys, and the documented calls (`patchWorld(await getWorld())`, `patchWorld({ source, producer, x_names })`, `typeWord(world, …)`) compile against the built `.d.ts`. Watched failing on mutants: `origin` and `id` each out of the strip list, `origin` out of `OwWorldMeta`, and a narrowed `patchWorld` parameter.
|
|
19
|
+
|
|
8
20
|
## [4.64.0] - 2026-10-23
|
|
9
21
|
|
|
10
22
|
### Changed
|
package/README.md
CHANGED
|
@@ -184,6 +184,8 @@ To poll for news cheaply, `client.changesHead()` returns `{ head, cursor, epoch,
|
|
|
184
184
|
|
|
185
185
|
Edits to the world itself (its name, calendar, `public_read`) don't appear in the change feed. Read `client.getWorld()` and compare `updated_at`.
|
|
186
186
|
|
|
187
|
+
`client.patchWorld(partial)` writes the world's own settings, and takes a `getWorld()` body back: the keys keel does not take (`id`, `origin`, `slug`, `public_page` and the owner's switches) are left out. The world's `origin` is written as the plain keys `source` and `producer` (each an object or `null`), and extension keys (`x_*`, `atlas_*`, `shadow_*`) are sent as given; `null` removes one.
|
|
188
|
+
|
|
187
189
|
### Only if unchanged
|
|
188
190
|
|
|
189
191
|
A client that edits offline, or from a copy it has held a while, can ask for an update to land only if nobody changed the element since it was read: pass the `change_seq` you read as `ifMatch`, on `patch`, `editLinks` or `delete` (since 4.61.0: a delete of an element someone changed since you read it is refused, nothing deleted).
|
package/dist/index.d.ts
CHANGED
|
@@ -1968,9 +1968,47 @@ interface OwWorldMeta {
|
|
|
1968
1968
|
* the owner on the world page; read-only on the wire, and patchWorld strips it.
|
|
1969
1969
|
*/
|
|
1970
1970
|
agent_writes_proposed?: boolean;
|
|
1971
|
+
/**
|
|
1972
|
+
* Where the world first came from (keel #571, #477): the folder format's provenance lines (spec
|
|
1973
|
+
* 4.2) as the tool that made the world from a folder gave them, both keys always present, each
|
|
1974
|
+
* null when not known. Read-only on the wire, and patchWorld strips it: write it as the plain
|
|
1975
|
+
* keys `source` and `producer` (`patchWorld({ source, producer })`, each an object or null).
|
|
1976
|
+
*/
|
|
1977
|
+
origin?: OwWorldOrigin;
|
|
1971
1978
|
created_at?: string | null;
|
|
1972
1979
|
/** Moves when the world's own fields change, not on element writes. */
|
|
1973
1980
|
updated_at?: string | null;
|
|
1981
|
+
/**
|
|
1982
|
+
* Extension keys (keel #571): a tool's own setting on the world, any JSON value, served at the
|
|
1983
|
+
* top level as an element's are (the first is `x_names`, the names profile: see `typeWord`).
|
|
1984
|
+
* patchWorld sends them as given; `null` removes one; 64 KB in all, else a 422 `param: extensions`.
|
|
1985
|
+
*/
|
|
1986
|
+
[extension: `x_${string}`]: unknown;
|
|
1987
|
+
[extension: `atlas_${string}`]: unknown;
|
|
1988
|
+
[extension: `shadow_${string}`]: unknown;
|
|
1989
|
+
[field: string]: unknown;
|
|
1990
|
+
}
|
|
1991
|
+
/**
|
|
1992
|
+
* OwWorldMeta.origin (keel #571, #477), as keel's `World` component types it: both keys always
|
|
1993
|
+
* present, each an object or null. Kept as the writer gave it; keel checks only that `source.world`
|
|
1994
|
+
* and `producer.tool` are strings when present.
|
|
1995
|
+
*/
|
|
1996
|
+
interface OwWorldOrigin {
|
|
1997
|
+
source: OwWorldSource | null;
|
|
1998
|
+
producer: OwWorldProducer | null;
|
|
1999
|
+
}
|
|
2000
|
+
/** The folder format's `source` line (spec 4.2): the server and world a folder was exported from, and when. Kept as given. */
|
|
2001
|
+
interface OwWorldSource {
|
|
2002
|
+
server?: string;
|
|
2003
|
+
world?: string;
|
|
2004
|
+
at?: string;
|
|
2005
|
+
[field: string]: unknown;
|
|
2006
|
+
}
|
|
2007
|
+
/** The folder format's `producer` line (spec 4.2): the tool that made a folder, its version, and what it made it from. Kept as given. */
|
|
2008
|
+
interface OwWorldProducer {
|
|
2009
|
+
tool?: string;
|
|
2010
|
+
version?: string;
|
|
2011
|
+
input?: string;
|
|
1974
2012
|
[field: string]: unknown;
|
|
1975
2013
|
}
|
|
1976
2014
|
/** OwWorldMeta.public_page (keel #471), as keel's `World` component types it: all six keys, always. */
|
|
@@ -3421,7 +3459,10 @@ declare class OwV2Client {
|
|
|
3421
3459
|
/**
|
|
3422
3460
|
* PATCH /world -- partial world-meta update. The element write's server-managed keys are
|
|
3423
3461
|
* stripped, and so are the world's own read-only ones (WORLD_READ_ONLY_FIELDS: `slug` and
|
|
3424
|
-
* `public_page`, keel #471; `agent_writes_proposed`, keel #519; set on the world page, not here
|
|
3462
|
+
* `public_page`, keel #471; `agent_writes_proposed`, keel #519; set on the world page, not here;
|
|
3463
|
+
* `origin`, keel #571; `id`), so a `getWorld()` body can be sent back. The world's origin is
|
|
3464
|
+
* written as `source` and `producer` (keel #571, each an object or null, served under `origin`);
|
|
3465
|
+
* extension keys (`x_*`, `atlas_*`, `shadow_*`) are sent as given, and `null` removes one.
|
|
3425
3466
|
*/
|
|
3426
3467
|
patchWorld(partial: Record<string, unknown>): Promise<OwWorldMeta>;
|
|
3427
3468
|
/**
|
|
@@ -5220,4 +5261,4 @@ declare class TokenResource {
|
|
|
5220
5261
|
getEncryptionInfo(): Promise<EncryptionInfo>;
|
|
5221
5262
|
}
|
|
5222
5263
|
|
|
5223
|
-
export { AGENT_DOORS, ASK_LIMITS, type AccessKeyResponse, CALENDAR_FIELD, CALENDAR_SUPERTYPE, type CalendarConfig, type CalendarEra, type CalendarIntercalary, type CalendarMonths, type CalendarWeek, ELEMENT_FAMILIES, ELEMENT_ICONS, ELEMENT_LABELS, ELEMENT_SECTIONS, ELEMENT_TYPES, type ElementFamily, type ElementType, type EncryptionInfo, type EraDomain, FAMILY_COLORS, FAMILY_ORDER, FIELD_ACRONYMS, FIELD_SCHEMA, FILE_EXTENSIONS, type FieldInfo, type FieldType, GameTier, type ListParams, ONLYWORLDS_VERSION, type OwAccountWorld, type OwAgentJoined, type OwAllowance, OwApiError, type OwAskAnswer, type OwAskContext, type OwAuthErrorCode, type OwBulkItem, type OwBulkItemResult, type OwBulkResponse, type OwCalendarElement, type OwChange, type OwChangeDelete, type OwChangeUpsert, type OwChangesPage, type OwClientConfig, type OwCreatedWorldLink, type OwDeleteReason, type OwDraught, type OwDraughtComponent, type OwDraughtItem, type OwDraughtPolicy, type OwElement, type OwElementBase, type OwErrorBody, type OwFileAddedBy, type OwFileDownload, type OwFileKind, type OwFileRow, type OwFileTicket, type OwFrontDoor, type OwHiddenRow, type OwJoinPreview, type OwJoined, type OwJoinedMembership, type OwKeyKind, type OwLinkEdit, type OwLookupElement, type OwLookupHit, type OwLookupLink, type OwLookupOptions, type OwLookupReason, type OwMe, type OwMediaTicket, type OwMember, type OwMemberRole, type OwMintedKey, type OwNamesMap, OwNetworkError, type OwPage, type OwPhotoOptions, type OwPhotoPlan, type OwPlayerJoined, OwPreconditionFailedError, type OwPreparedPhoto, type OwProposal, type OwProposalAccepted, type OwProposalConflict, type OwProposalList, type OwProposalQuery, type OwProposalState, type OwProposeInput, type OwProposed, OwProposedError, type OwReadWorldFile, type OwReadWorldFileOptions, type OwRemovalTicket, type OwRemovedImage, type OwRenderOptions, type OwResyncReason, type OwSeat, type OwSeatCreated, type OwSignInBegin, type OwSignInBegun, type OwSignInComplete, OwSignInError, type OwSignInReason, type OwSignInResult, type OwSignInStorage, type OwSignedIn, type OwSortAddToRow, type OwSortAnswer, type OwSortAskRow, type OwSortLinkRow, type OwSortMakeRow, type OwSortNote, type OwSortRef, type OwSortRow, OwStaleProposalError, type OwUploadedFile, type OwUploadedImage, OwV2Client, type OwWordPair, type OwWorldFileEntry, OwWorldFileError, type OwWorldFileReason, type OwWorldFileRow, type OwWorldFiles, type OwWorldIndex, type OwWorldLink, type OwWorldMeta, type OwWorldProposalQuery, type OwWorldPublicPage, type OwWriteDoor, type OwWriteWorldFileOptions, PHOTO_MAX_BYTES, PHOTO_TYPES, PUBLIC_FIELDS, type ParseError, type ParseOptions, type ParseResult, ROOM_PAIRS, type RevokeAllSessionsResponse, type RevokeSessionResponse, SPATIAL_TYPES, type SectionInfo, type StepBreakdown, type TokenConsumeParams, type TokenConsumeResponse, TokenResource, type TokenStatus, type TokenTransport, WORLD_FILE_MAX_BYTES, WORLD_FILE_MAX_ENTRIES, WORLD_FILE_MEDIA_TYPE, type WorldCalendar, absYearForEraYear, absoluteYear, approxYearLength, base64url, breakdownStep, buildAskContext, buildWorldIndex, detectKeyKind, displayYear, elementColor, eraForStep, errorFromResponse, familyOf, fieldLabel, fileKindOf, floorDiv, floorMod, formatDuration, formatMidLabel, formatStep, formatYearLabel, getElementIcon, getElementLabel, isAgentDoor, isDemoKey, isKnownOf, isLeapYear, isParseError, isRoomElement, kindCanWrite, lookupWorld, monthStartSteps, parseDate, parseErrorEnvelope, pinExpectation, pkceChallenge, planPhoto, preparePhoto, readCalendarConfig, readCalendarValue, readWorldFile, renderElement, resolveCalendarLens, resolveEraDomains, simpleCaseFold, typeWord, validateCalendarConfig, weekdayForStep, worldCalendars, writeWorldFile, yearLength, yearStartStep };
|
|
5264
|
+
export { AGENT_DOORS, ASK_LIMITS, type AccessKeyResponse, CALENDAR_FIELD, CALENDAR_SUPERTYPE, type CalendarConfig, type CalendarEra, type CalendarIntercalary, type CalendarMonths, type CalendarWeek, ELEMENT_FAMILIES, ELEMENT_ICONS, ELEMENT_LABELS, ELEMENT_SECTIONS, ELEMENT_TYPES, type ElementFamily, type ElementType, type EncryptionInfo, type EraDomain, FAMILY_COLORS, FAMILY_ORDER, FIELD_ACRONYMS, FIELD_SCHEMA, FILE_EXTENSIONS, type FieldInfo, type FieldType, GameTier, type ListParams, ONLYWORLDS_VERSION, type OwAccountWorld, type OwAgentJoined, type OwAllowance, OwApiError, type OwAskAnswer, type OwAskContext, type OwAuthErrorCode, type OwBulkItem, type OwBulkItemResult, type OwBulkResponse, type OwCalendarElement, type OwChange, type OwChangeDelete, type OwChangeUpsert, type OwChangesPage, type OwClientConfig, type OwCreatedWorldLink, type OwDeleteReason, type OwDraught, type OwDraughtComponent, type OwDraughtItem, type OwDraughtPolicy, type OwElement, type OwElementBase, type OwErrorBody, type OwFileAddedBy, type OwFileDownload, type OwFileKind, type OwFileRow, type OwFileTicket, type OwFrontDoor, type OwHiddenRow, type OwJoinPreview, type OwJoined, type OwJoinedMembership, type OwKeyKind, type OwLinkEdit, type OwLookupElement, type OwLookupHit, type OwLookupLink, type OwLookupOptions, type OwLookupReason, type OwMe, type OwMediaTicket, type OwMember, type OwMemberRole, type OwMintedKey, type OwNamesMap, OwNetworkError, type OwPage, type OwPhotoOptions, type OwPhotoPlan, type OwPlayerJoined, OwPreconditionFailedError, type OwPreparedPhoto, type OwProposal, type OwProposalAccepted, type OwProposalConflict, type OwProposalList, type OwProposalQuery, type OwProposalState, type OwProposeInput, type OwProposed, OwProposedError, type OwReadWorldFile, type OwReadWorldFileOptions, type OwRemovalTicket, type OwRemovedImage, type OwRenderOptions, type OwResyncReason, type OwSeat, type OwSeatCreated, type OwSignInBegin, type OwSignInBegun, type OwSignInComplete, OwSignInError, type OwSignInReason, type OwSignInResult, type OwSignInStorage, type OwSignedIn, type OwSortAddToRow, type OwSortAnswer, type OwSortAskRow, type OwSortLinkRow, type OwSortMakeRow, type OwSortNote, type OwSortRef, type OwSortRow, OwStaleProposalError, type OwUploadedFile, type OwUploadedImage, OwV2Client, type OwWordPair, type OwWorldFileEntry, OwWorldFileError, type OwWorldFileReason, type OwWorldFileRow, type OwWorldFiles, type OwWorldIndex, type OwWorldLink, type OwWorldMeta, type OwWorldOrigin, type OwWorldProducer, type OwWorldProposalQuery, type OwWorldPublicPage, type OwWorldSource, type OwWriteDoor, type OwWriteWorldFileOptions, PHOTO_MAX_BYTES, PHOTO_TYPES, PUBLIC_FIELDS, type ParseError, type ParseOptions, type ParseResult, ROOM_PAIRS, type RevokeAllSessionsResponse, type RevokeSessionResponse, SPATIAL_TYPES, type SectionInfo, type StepBreakdown, type TokenConsumeParams, type TokenConsumeResponse, TokenResource, type TokenStatus, type TokenTransport, WORLD_FILE_MAX_BYTES, WORLD_FILE_MAX_ENTRIES, WORLD_FILE_MEDIA_TYPE, type WorldCalendar, absYearForEraYear, absoluteYear, approxYearLength, base64url, breakdownStep, buildAskContext, buildWorldIndex, detectKeyKind, displayYear, elementColor, eraForStep, errorFromResponse, familyOf, fieldLabel, fileKindOf, floorDiv, floorMod, formatDuration, formatMidLabel, formatStep, formatYearLabel, getElementIcon, getElementLabel, isAgentDoor, isDemoKey, isKnownOf, isLeapYear, isParseError, isRoomElement, kindCanWrite, lookupWorld, monthStartSteps, parseDate, parseErrorEnvelope, pinExpectation, pkceChallenge, planPhoto, preparePhoto, readCalendarConfig, readCalendarValue, readWorldFile, renderElement, resolveCalendarLens, resolveEraDomains, simpleCaseFold, typeWord, validateCalendarConfig, weekdayForStep, worldCalendars, writeWorldFile, yearLength, yearStartStep };
|
package/dist/index.js
CHANGED
|
@@ -617,7 +617,10 @@ var OwV2Client = class {
|
|
|
617
617
|
/**
|
|
618
618
|
* PATCH /world -- partial world-meta update. The element write's server-managed keys are
|
|
619
619
|
* stripped, and so are the world's own read-only ones (WORLD_READ_ONLY_FIELDS: `slug` and
|
|
620
|
-
* `public_page`, keel #471; `agent_writes_proposed`, keel #519; set on the world page, not here
|
|
620
|
+
* `public_page`, keel #471; `agent_writes_proposed`, keel #519; set on the world page, not here;
|
|
621
|
+
* `origin`, keel #571; `id`), so a `getWorld()` body can be sent back. The world's origin is
|
|
622
|
+
* written as `source` and `producer` (keel #571, each an object or null, served under `origin`);
|
|
623
|
+
* extension keys (`x_*`, `atlas_*`, `shadow_*`) are sent as given, and `null` removes one.
|
|
621
624
|
*/
|
|
622
625
|
async patchWorld(partial) {
|
|
623
626
|
const body = sanitizePayload(partial);
|
|
@@ -1800,7 +1803,7 @@ var HeadPollState = class {
|
|
|
1800
1803
|
}
|
|
1801
1804
|
};
|
|
1802
1805
|
var READ_ONLY_FIELDS = ["world", "type", "created_at", "updated_at", "change_seq", "known_of"];
|
|
1803
|
-
var WORLD_READ_ONLY_FIELDS = ["slug", "public_page", "public_read", "agent_narrator_rule", "agent_writes_proposed"];
|
|
1806
|
+
var WORLD_READ_ONLY_FIELDS = ["id", "slug", "public_page", "public_read", "agent_narrator_rule", "agent_writes_proposed", "origin"];
|
|
1804
1807
|
function proposalsPath(type, id) {
|
|
1805
1808
|
return `/${type}/${encodeURIComponent(id)}/proposals`;
|
|
1806
1809
|
}
|