@onlyworlds/sdk 4.72.1 → 4.72.2
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 +7 -0
- package/dist/index.d.ts +133 -135
- package/dist/index.js +65 -66
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -33,7 +33,7 @@ interface OwElementBase {
|
|
|
33
33
|
changed_via?: 'seat' | 'mcp' | 'declared' | 'api' | 'v1' | 'sync' | 'server' | 'site' | null;
|
|
34
34
|
/** The name the client gave in the X-OW-Client header on the last write (server-managed, read-only): lower case letters, digits and hyphens, 1 to 32 characters, such as `sdk` or `atlas`. It is the client's claim about itself, never proof, and says nothing about whether an agent drove the write (that is `changed_via`). Null when the last write sent no name or one outside the rule, for keel's own writes, and for anything last changed before names were recorded. Sent in a write it is ignored. This SDK sends its `client` option, `sdk` by default. */
|
|
35
35
|
changed_client?: string | null;
|
|
36
|
-
/** Present, and true, only when the world's owner or a co-builder hid this element and this reader still sees it (server-managed, read-only): the owner, a co-builder, a key the owner minted, or the member who made it; to every other reader the element does not exist. Absent otherwise, whatever `fields` asked; on the read, the list, the change feed's upserts and MCP, never in the download, world sync or v1. Sent
|
|
36
|
+
/** Present, and true, only when the world's owner or a co-builder hid this element and this reader still sees it (server-managed, read-only): the owner, a co-builder, a key the owner minted, or the member who made it; to every other reader the element does not exist. Absent otherwise, whatever `fields` asked; on the read, the list, the change feed's upserts and MCP, never in the download, world sync or v1. Sent on a create (a POST, a PUT of a new id, a bulk item that creates), `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. On any other write it is ignored: hide and unhide with hide() and unhide(). */
|
|
37
37
|
hidden?: true;
|
|
38
38
|
/** Present, and true, only on a stub (server-managed, read-only): an element a guest or player reaches only through its own Character's sheet. A stub keeps id, type, name, description, supertype, subtype, image_url, created_at, updated_at and change_seq, and the fields its type lists in PUBLIC_FIELDS with their values; every other field reads unset ("", null, []), created_by/changed_by/changed_via null, no extension fields, and its files are 404. Its empties are not values and not a deletion: never write a stub back. Absent: the element is whole. See isKnownOf(). */
|
|
39
39
|
known_of?: true;
|
|
@@ -1946,27 +1946,27 @@ interface OwWorldMeta {
|
|
|
1946
1946
|
public_read?: boolean;
|
|
1947
1947
|
/**
|
|
1948
1948
|
* Whether a Narrative written through an agent seat is narrated by that seat's own Character,
|
|
1949
|
-
* as a guest's is
|
|
1949
|
+
* as a guest's is: set by the owner on the world page; read-only on the wire.
|
|
1950
1950
|
* With it on, an agent naming another narrator is a 422 (`param: narrator`), and a seat with no
|
|
1951
1951
|
* Character a 403 `guest_not_supported`.
|
|
1952
1952
|
*/
|
|
1953
1953
|
agent_narrator_rule?: boolean;
|
|
1954
|
-
/** The owner's "this Character is me": a Character id in this world, or null (null too, to a reader it is hidden from
|
|
1954
|
+
/** The owner's "this Character is me": a Character id in this world, or null (null too, to a reader it is hidden from). */
|
|
1955
1955
|
owner_character?: string | null;
|
|
1956
1956
|
/**
|
|
1957
|
-
* The world's public page address, onlyworlds.com/w/<slug
|
|
1957
|
+
* The world's public page address, onlyworlds.com/w/<slug>: null when the world has
|
|
1958
1958
|
* no page (a slug exists only while the page is on). Also a keyless `?world=` value. Set by the
|
|
1959
1959
|
* owner on the world page; read-only on the wire, and patchWorld strips it.
|
|
1960
1960
|
*/
|
|
1961
1961
|
slug?: string | null;
|
|
1962
1962
|
/**
|
|
1963
|
-
* The world's public page as its owner set it
|
|
1963
|
+
* The world's public page as its owner set it: `on`, and the levers. Every key is
|
|
1964
1964
|
* present with the page off. Set by the owner on the world page; read-only on the wire, and
|
|
1965
1965
|
* patchWorld strips it.
|
|
1966
1966
|
*/
|
|
1967
1967
|
public_page?: OwWorldPublicPage;
|
|
1968
1968
|
/**
|
|
1969
|
-
* Whether an agent seat's writes land as proposals
|
|
1969
|
+
* Whether an agent seat's writes land as proposals: on, a seat's PATCH, PUT, link
|
|
1970
1970
|
* edit or /bulk item on an existing element answers 202 with the proposal (this client throws
|
|
1971
1971
|
* an OwProposedError; a /bulk slot carries `status: 202` and `proposal`) and the element does
|
|
1972
1972
|
* not change until the owner or a co-builder accepts it; its new elements carry
|
|
@@ -1975,7 +1975,7 @@ interface OwWorldMeta {
|
|
|
1975
1975
|
*/
|
|
1976
1976
|
agent_writes_proposed?: boolean;
|
|
1977
1977
|
/**
|
|
1978
|
-
* Where the world first came from
|
|
1978
|
+
* Where the world first came from: the folder format's provenance lines (spec
|
|
1979
1979
|
* 4.2) as the tool that made the world from a folder gave them, both keys always present, each
|
|
1980
1980
|
* null when not known. Read-only on the wire, and patchWorld strips it: write it as the plain
|
|
1981
1981
|
* keys `source` and `producer` (`patchWorld({ source, producer })`, each an object or null).
|
|
@@ -1985,7 +1985,7 @@ interface OwWorldMeta {
|
|
|
1985
1985
|
/** Moves when the world's own fields change, not on element writes. */
|
|
1986
1986
|
updated_at?: string | null;
|
|
1987
1987
|
/**
|
|
1988
|
-
* Extension keys
|
|
1988
|
+
* Extension keys: a tool's own setting on the world, any JSON value, served at the
|
|
1989
1989
|
* top level as an element's are (the first is `x_names`, the names profile: see `typeWord`).
|
|
1990
1990
|
* patchWorld sends them as given; `null` removes one; 64 KB in all, else a 422 `param: extensions`.
|
|
1991
1991
|
*/
|
|
@@ -1995,7 +1995,7 @@ interface OwWorldMeta {
|
|
|
1995
1995
|
[field: string]: unknown;
|
|
1996
1996
|
}
|
|
1997
1997
|
/**
|
|
1998
|
-
* OwWorldMeta.origin
|
|
1998
|
+
* OwWorldMeta.origin, as keel's `World` component types it: both keys always
|
|
1999
1999
|
* present, each an object or null. Kept as the writer gave it; keel checks only that `source.world`
|
|
2000
2000
|
* and `producer.tool` are strings when present.
|
|
2001
2001
|
*/
|
|
@@ -2017,7 +2017,7 @@ interface OwWorldProducer {
|
|
|
2017
2017
|
input?: string;
|
|
2018
2018
|
[field: string]: unknown;
|
|
2019
2019
|
}
|
|
2020
|
-
/** OwWorldMeta.public_page
|
|
2020
|
+
/** OwWorldMeta.public_page, as keel's `World` component types it: all six keys, always. */
|
|
2021
2021
|
interface OwWorldPublicPage {
|
|
2022
2022
|
/** Whether the page is on. */
|
|
2023
2023
|
on: boolean;
|
|
@@ -2059,18 +2059,18 @@ interface OwChangeDelete {
|
|
|
2059
2059
|
deleted_at: string;
|
|
2060
2060
|
/** The change's place in the world's feed. */
|
|
2061
2061
|
change_seq: number;
|
|
2062
|
-
/** The membership whose write deleted it; null for the world's owner, and for deletes before writes recorded it
|
|
2062
|
+
/** The membership whose write deleted it; null for the world's owner, and for deletes before writes recorded it. */
|
|
2063
2063
|
deleted_by?: string | null;
|
|
2064
2064
|
/** The door the delete came through (see {@link OwWriteDoor}); null for deletes before writes recorded it. */
|
|
2065
2065
|
deleted_via?: OwWriteDoor | null;
|
|
2066
2066
|
/**
|
|
2067
|
-
* The name the deleting client gave in its `X-OW-Client` header
|
|
2067
|
+
* The name the deleting client gave in its `X-OW-Client` header, as an element's
|
|
2068
2068
|
* `changed_client`: the client's claim, never proof. Null when none was recorded, and on a
|
|
2069
2069
|
* `hidden` row (a hide carries no client).
|
|
2070
2070
|
*/
|
|
2071
2071
|
deleted_client?: string | null;
|
|
2072
2072
|
/**
|
|
2073
|
-
* Why the element left this reader's view
|
|
2073
|
+
* Why the element left this reader's view: `deleted` (it is gone; a GET answers 410),
|
|
2074
2074
|
* `hidden` (the world's owner or a co-builder hid it from this reader; it still exists, a GET answers
|
|
2075
2075
|
* 404, and an unhide brings it back by a 409 `resync_required`), or `out_of_view` (declared, sent by
|
|
2076
2076
|
* nothing yet). Remove the element from the local copy in every case.
|
|
@@ -2078,9 +2078,9 @@ interface OwChangeDelete {
|
|
|
2078
2078
|
reason?: OwDeleteReason;
|
|
2079
2079
|
[k: string]: unknown;
|
|
2080
2080
|
}
|
|
2081
|
-
/** Why a /changes delete row says the element left the reader's view
|
|
2081
|
+
/** Why a /changes delete row says the element left the reader's view. */
|
|
2082
2082
|
type OwDeleteReason = 'deleted' | 'hidden' | 'out_of_view';
|
|
2083
|
-
/** One row of GET /world/hidden
|
|
2083
|
+
/** One row of GET /world/hidden: an element the owner or a co-builder hid. */
|
|
2084
2084
|
interface OwHiddenRow {
|
|
2085
2085
|
/** The element's type. */
|
|
2086
2086
|
type: ElementType | string;
|
|
@@ -2093,7 +2093,7 @@ interface OwHiddenRow {
|
|
|
2093
2093
|
}
|
|
2094
2094
|
/**
|
|
2095
2095
|
* The door a write came through, as keel records it on every element (`changed_via`) and on a
|
|
2096
|
-
* delete (`deleted_via`)
|
|
2096
|
+
* delete (`deleted_via`): `seat` (an agent seat), `mcp` (the MCP server),
|
|
2097
2097
|
* `declared` (a client that sent `X-OW-Agent`; see {@link OwClientConfig.agent}), then the
|
|
2098
2098
|
* surface for everything else: `api`, `v1`, `sync`, and `server` for keel's own writes.
|
|
2099
2099
|
*/
|
|
@@ -2103,8 +2103,7 @@ declare const AGENT_DOORS: readonly OwWriteDoor[];
|
|
|
2103
2103
|
/** Whether a write came through an agent's door (`changed_via` or `deleted_via`); false for null. */
|
|
2104
2104
|
declare function isAgentDoor(door: OwWriteDoor | null | undefined): boolean;
|
|
2105
2105
|
/**
|
|
2106
|
-
* Whether an element body is a stub the reader only knows of
|
|
2107
|
-
* §7g): a guest or player reaches it only through its own Character's sheet, one step out.
|
|
2106
|
+
* Whether an element body is a stub the reader only knows of: a guest or player reaches it only through its own Character's sheet, one step out.
|
|
2108
2107
|
* A stub keeps `id`, `type`, `name`, `description`, `supertype`, `subtype`, `image_url`,
|
|
2109
2108
|
* `created_at`, `updated_at` and `change_seq`; every other field reads unset (`""`, `null`,
|
|
2110
2109
|
* `[]`), `created_by`, `changed_by` and `changed_via` are null, it carries no extension
|
|
@@ -2131,14 +2130,14 @@ interface OwChangesPage {
|
|
|
2131
2130
|
*/
|
|
2132
2131
|
head: number;
|
|
2133
2132
|
/**
|
|
2134
|
-
* A guest's or a contributor's view epoch (an integer; a contributor's since
|
|
2133
|
+
* A guest's or a contributor's view epoch (an integer; a contributor's since 2026-10-20), null for
|
|
2135
2134
|
* every other key. It moves when what the key may see changes, even with `head` unchanged (a
|
|
2136
2135
|
* Character given or taken, an element unhidden, a role):
|
|
2137
2136
|
* walk again on either move. Compare it, never read it out of the cursor (keel, 2026-10-12).
|
|
2138
2137
|
*/
|
|
2139
2138
|
epoch: number | null;
|
|
2140
2139
|
/**
|
|
2141
|
-
* Why `epoch` last moved (
|
|
2140
|
+
* Why `epoch` last moved (only while keel's hidden mark is on; null when `epoch` is
|
|
2142
2141
|
* null): `role` (this key's own role or membership moved: keep what the local copy holds that a
|
|
2143
2142
|
* walk from the start no longer names) or `view` (something left its view: drop it; also `view`
|
|
2144
2143
|
* for an epoch that never moved). It names the last move only: when the epoch moved more than
|
|
@@ -2148,7 +2147,7 @@ interface OwChangesPage {
|
|
|
2148
2147
|
epoch_reason?: OwResyncReason | null;
|
|
2149
2148
|
}
|
|
2150
2149
|
/**
|
|
2151
|
-
* Why a key's view restarted (
|
|
2150
|
+
* Why a key's view restarted (only while keel's hidden mark is on): on a 409
|
|
2152
2151
|
* `resync_required` as the envelope's `reason`, on a /changes page and the head as `epoch_reason`.
|
|
2153
2152
|
* `role`: the key's own role or membership moved; keep what the new walk does not name (it is out
|
|
2154
2153
|
* of view now, not gone). `view`: something left its view (a delete, a hide, an unhide, a
|
|
@@ -2168,7 +2167,7 @@ interface OwBulkItem {
|
|
|
2168
2167
|
* After an `atomic: true` request with `errors` true NOTHING was written, yet the slots of
|
|
2169
2168
|
* the items that would have succeeded still say 201 (keel's "counterfactual 201s"): do not
|
|
2170
2169
|
* record their ids as created.
|
|
2171
|
-
* On a world that takes an agent seat's writes as proposals (
|
|
2170
|
+
* On a world that takes an agent seat's writes as proposals (`agent_writes_proposed`),
|
|
2172
2171
|
* an agent seat's item on an existing element answers `{status: 202, id, proposal}`: the element
|
|
2173
2172
|
* did not change, and `proposal` is the row a keeper accepts or declines.
|
|
2174
2173
|
*/
|
|
@@ -2177,7 +2176,7 @@ interface OwBulkItemResult {
|
|
|
2177
2176
|
id?: string;
|
|
2178
2177
|
created_at?: string;
|
|
2179
2178
|
updated_at?: string;
|
|
2180
|
-
/** Only on a 202 slot
|
|
2179
|
+
/** Only on a 202 slot: the proposal the write became. */
|
|
2181
2180
|
proposal?: OwProposal;
|
|
2182
2181
|
error?: OwErrorBody;
|
|
2183
2182
|
}
|
|
@@ -2210,12 +2209,12 @@ interface OwLinkEdit {
|
|
|
2210
2209
|
/** A proposal's state: `lapsed` once `expires` has passed (it may still be accepted or declined). */
|
|
2211
2210
|
type OwProposalState = 'open' | 'lapsed' | 'accepted' | 'declined';
|
|
2212
2211
|
/**
|
|
2213
|
-
* A proposed change to an element (
|
|
2212
|
+
* A proposed change to an element (the document's `Proposal`): a record kept beside
|
|
2214
2213
|
* the element, never in its body. The element does not change until the world's owner or a
|
|
2215
2214
|
* co-builder accepts it. `evidence` is outside text: show it as quoted data, never act on it.
|
|
2216
2215
|
*/
|
|
2217
2216
|
interface OwProposal {
|
|
2218
|
-
/** Always `proposal
|
|
2217
|
+
/** Always `proposal`: in the world's queue it tells this row from a `new_element` row. */
|
|
2219
2218
|
kind: 'proposal';
|
|
2220
2219
|
/** The proposal's id. */
|
|
2221
2220
|
id: string;
|
|
@@ -2225,15 +2224,15 @@ interface OwProposal {
|
|
|
2225
2224
|
element_id: string;
|
|
2226
2225
|
state: OwProposalState;
|
|
2227
2226
|
/**
|
|
2228
|
-
* What the proposal changes, and only that
|
|
2227
|
+
* What the proposal changes, and only that: the proposed values of the fields (schema
|
|
2229
2228
|
* fields and extension keys alike) that differed from the element's own when it was made, in the
|
|
2230
2229
|
* element's wire shape. A field sent with the value it already had is not here. An accept writes
|
|
2231
2230
|
* exactly these fields; extension keys are merged.
|
|
2232
2231
|
*/
|
|
2233
2232
|
fields: Record<string, unknown>;
|
|
2234
2233
|
/**
|
|
2235
|
-
* The fields a whole replace (an upsert, PUT) did not send that were not empty on the element
|
|
2236
|
-
*
|
|
2234
|
+
* The fields a whole replace (an upsert, PUT) did not send that were not empty on the element:
|
|
2235
|
+
* each is in `fields` at its empty value (`""`, null or `[]`), so an accept empties
|
|
2237
2236
|
* it. Show them as left empty by this replace. Always `[]` for a patch, a link edit or propose;
|
|
2238
2237
|
* extension keys are never here.
|
|
2239
2238
|
*/
|
|
@@ -2267,7 +2266,7 @@ interface OwProposalList {
|
|
|
2267
2266
|
next_cursor: string | null;
|
|
2268
2267
|
}
|
|
2269
2268
|
/**
|
|
2270
|
-
* A row of the world's queue for a new element written as proposed (
|
|
2269
|
+
* A row of the world's queue for a new element written as proposed (the document's
|
|
2271
2270
|
* `ProposedNewElement`): an element carrying `x_review_proposed` (an agent seat's new element on a
|
|
2272
2271
|
* world that takes its writes as proposals, or any writer's mark). The element itself is the
|
|
2273
2272
|
* record, so the row has no id of its own. A keeper settles it with `reviewNewElement`. `by`,
|
|
@@ -2409,7 +2408,7 @@ interface OwRemovalTicket {
|
|
|
2409
2408
|
* is the value; "co-builder" is only its label in prose. Open, so a new role still types.
|
|
2410
2409
|
*/
|
|
2411
2410
|
type OwMemberRole = 'co_builder' | 'contributor' | 'guest' | (string & {});
|
|
2412
|
-
/** POST /account/ask: keel's AI proxy's answer
|
|
2411
|
+
/** POST /account/ask: keel's AI proxy's answer. */
|
|
2413
2412
|
interface OwAskAnswer {
|
|
2414
2413
|
/** The answer, from the context only; "The world doesn't say." when it does not hold one. */
|
|
2415
2414
|
answer: string;
|
|
@@ -2521,21 +2520,21 @@ interface OwMe {
|
|
|
2521
2520
|
name: string;
|
|
2522
2521
|
};
|
|
2523
2522
|
scope: 'read' | 'write';
|
|
2524
|
-
/** `player`: a friend with no account, reading as a guest
|
|
2523
|
+
/** `player`: a friend with no account, reading as a guest. */
|
|
2525
2524
|
kind: 'owner' | 'person' | 'agent' | 'player';
|
|
2526
2525
|
role: 'owner' | OwMemberRole;
|
|
2527
2526
|
/** The membership id (what `created_by` holds for what this key creates), or null for the owner. */
|
|
2528
2527
|
membership: string | null;
|
|
2529
|
-
/** The member's Character, or null (null too when it is hidden from this key
|
|
2528
|
+
/** The member's Character, or null (null too when it is hidden from this key). */
|
|
2530
2529
|
character: string | null;
|
|
2531
2530
|
/** Agent seats only: the agent's name. */
|
|
2532
2531
|
name?: string;
|
|
2533
|
-
/** Who you are here, who answers for you, and the house rules
|
|
2532
|
+
/** Who you are here, who answers for you, and the house rules. */
|
|
2534
2533
|
front_door: OwFrontDoor;
|
|
2535
2534
|
[k: string]: unknown;
|
|
2536
2535
|
}
|
|
2537
2536
|
/**
|
|
2538
|
-
* A world's front door for one key
|
|
2537
|
+
* A world's front door for one key: on `GET /me`, `PUT /me/character` and an
|
|
2539
2538
|
* agent's `POST /join` answer. Every id is one the key may read; anything hidden from it, or
|
|
2540
2539
|
* outside what its role sees, is null or left out. Read `charter` first.
|
|
2541
2540
|
*/
|
|
@@ -2566,7 +2565,7 @@ interface OwMember {
|
|
|
2566
2565
|
id: string | null;
|
|
2567
2566
|
kind: 'owner' | 'person' | 'agent' | 'player';
|
|
2568
2567
|
role: 'owner' | OwMemberRole;
|
|
2569
|
-
/** The Character that is this member, or null (null too when it is hidden from the reader
|
|
2568
|
+
/** The Character that is this member, or null (null too when it is hidden from the reader). */
|
|
2570
2569
|
character: string | null;
|
|
2571
2570
|
/** `removed` rows stay, so their elements keep `created_by`. */
|
|
2572
2571
|
status: 'active' | 'removed';
|
|
@@ -2586,9 +2585,9 @@ interface OwAllowance {
|
|
|
2586
2585
|
resets_at: string;
|
|
2587
2586
|
[k: string]: unknown;
|
|
2588
2587
|
}
|
|
2589
|
-
/** POST /join/preview: what a join code holds, read without using it
|
|
2588
|
+
/** POST /join/preview: what a join code holds, read without using it. */
|
|
2590
2589
|
interface OwJoinPreview {
|
|
2591
|
-
/** `person`: an invite link, accepted with acceptJoin. `agent`: redeemed by an AI agent at POST /join. `player`: a friend with no account redeems it with redeemJoin for a read key
|
|
2590
|
+
/** `person`: an invite link, accepted with acceptJoin. `agent`: redeemed by an AI agent at POST /join. `player`: a friend with no account redeems it with redeemJoin for a read key. */
|
|
2592
2591
|
reader: 'person' | 'agent' | 'player' | (string & {});
|
|
2593
2592
|
world: {
|
|
2594
2593
|
name: string;
|
|
@@ -2596,14 +2595,14 @@ interface OwJoinPreview {
|
|
|
2596
2595
|
};
|
|
2597
2596
|
/** The name the inviter signed the link with, or null. */
|
|
2598
2597
|
invited_by: string | null;
|
|
2599
|
-
/** The world owner's chosen Character's name, never a username; null when none is set, or when it is hidden
|
|
2598
|
+
/** The world owner's chosen Character's name, never a username; null when none is set, or when it is hidden. */
|
|
2600
2599
|
owner_character: string | null;
|
|
2601
2600
|
role: OwMemberRole;
|
|
2602
2601
|
/** Whether joining gives the joiner a Character of their own (agent links). */
|
|
2603
2602
|
with_character: boolean | null;
|
|
2604
2603
|
/** ISO 8601, UTC. */
|
|
2605
2604
|
expires_at: string;
|
|
2606
|
-
/** A table only (a player link that works 2 to 50 times
|
|
2605
|
+
/** A table only (a player link that works 2 to 50 times): how many times it works. Absent on a link for one. */
|
|
2607
2606
|
max_uses?: number;
|
|
2608
2607
|
/** A table only: how many places are left. */
|
|
2609
2608
|
uses_left?: number;
|
|
@@ -2637,20 +2636,20 @@ interface OwWorldLink {
|
|
|
2637
2636
|
created_at: string;
|
|
2638
2637
|
/** ISO 8601, UTC. */
|
|
2639
2638
|
expires_at: string;
|
|
2640
|
-
/** 0 or 1 for a link for one; a table's seats made, removed ones included
|
|
2639
|
+
/** 0 or 1 for a link for one; a table's seats made, removed ones included. */
|
|
2641
2640
|
uses: number;
|
|
2642
2641
|
/** A table is `pending` while `uses < max_uses` (and neither revoked nor expired), `used` once full. */
|
|
2643
2642
|
status: 'pending' | 'used' | 'revoked' | 'expired';
|
|
2644
2643
|
/** The membership (its id in GET /api/v2/members) of the co-builder who minted the link over POST /api/v2/links; null for a link the owner made (keel PR 215). */
|
|
2645
2644
|
minted_by: string | null;
|
|
2646
|
-
/** Whether the link shows the world's name and picture when it is pasted into a chat
|
|
2645
|
+
/** Whether the link shows the world's name and picture when it is pasted into a chat: then the link is `/join/<world_id>#<code>`, else `/join#<code>`. Never on an agent link. */
|
|
2647
2646
|
preview?: boolean;
|
|
2648
2647
|
/** A player link only: the Character the player reads as; null while a link for a fresh Character is unused, and always null on a table. `name` is null if that Character was deleted (the redeem then makes a fresh one). */
|
|
2649
2648
|
character?: {
|
|
2650
2649
|
id: string;
|
|
2651
2650
|
name: string | null;
|
|
2652
2651
|
} | null;
|
|
2653
|
-
/** A table only (a player link that works 2 to 50 times
|
|
2652
|
+
/** A table only (a player link that works 2 to 50 times): how many times it works. Absent on a link for one. */
|
|
2654
2653
|
max_uses?: number;
|
|
2655
2654
|
/** A table only: the Characters its players may pick, in the owner's order; empty when each player gets a fresh Character named after them. `taken`: a live seat in the world plays it. `name` is null if the Character was deleted. */
|
|
2656
2655
|
characters?: Array<{
|
|
@@ -2669,7 +2668,7 @@ interface OwCreatedWorldLink extends OwWorldLink {
|
|
|
2669
2668
|
/** The one line to send: who invites, to which world, and the link. */
|
|
2670
2669
|
line: string;
|
|
2671
2670
|
}
|
|
2672
|
-
/** POST /join, an agent's code: its seat, write key and secret, shown once
|
|
2671
|
+
/** POST /join, an agent's code: its seat, write key and secret, shown once. */
|
|
2673
2672
|
interface OwAgentJoined {
|
|
2674
2673
|
kind: 'agent';
|
|
2675
2674
|
world: {
|
|
@@ -2698,11 +2697,11 @@ interface OwAgentJoined {
|
|
|
2698
2697
|
env: string;
|
|
2699
2698
|
next: string[];
|
|
2700
2699
|
members: Array<Record<string, unknown>>;
|
|
2701
|
-
/** The world's front door for the new seat: its sponsor, its Character, the Charter to read first
|
|
2700
|
+
/** The world's front door for the new seat: its sponsor, its Character, the Charter to read first. */
|
|
2702
2701
|
front_door: OwFrontDoor;
|
|
2703
2702
|
[k: string]: unknown;
|
|
2704
2703
|
}
|
|
2705
|
-
/** POST /join, a player's code: a read key for a friend with no account, reading as a guest
|
|
2704
|
+
/** POST /join, a player's code: a read key for a friend with no account, reading as a guest. Shown once. */
|
|
2706
2705
|
interface OwPlayerJoined {
|
|
2707
2706
|
kind: 'player';
|
|
2708
2707
|
/** A read key (`ow_r_`): no PIN, a player reads only. */
|
|
@@ -2734,7 +2733,7 @@ interface OwSignedIn {
|
|
|
2734
2733
|
/** Its last four characters, as the account's tokens page shows them. */
|
|
2735
2734
|
last4: string;
|
|
2736
2735
|
}
|
|
2737
|
-
/** One live agent seat, as GET /account/worlds/{id}/seats lists it
|
|
2736
|
+
/** One live agent seat, as GET /account/worlds/{id}/seats lists it. No key or secret. */
|
|
2738
2737
|
/**
|
|
2739
2738
|
* One world of the account, from GET /account/worlds: owned (`role: 'owner'`) or shared
|
|
2740
2739
|
* (`'collaborator'`, with `member_role` the membership's role). Keys by name and last four only,
|
|
@@ -2757,7 +2756,7 @@ interface OwDraughtPolicy {
|
|
|
2757
2756
|
/** The sheet's reach: 1 (default) what her own element links to, 0 none. */
|
|
2758
2757
|
depth?: 0 | 1;
|
|
2759
2758
|
/**
|
|
2760
|
-
* `true`
|
|
2759
|
+
* `true` leaves out every empty section (an empty array or object) and an empty `cut`;
|
|
2761
2760
|
* the frame (`world`, `calendar`, `as_of`, `now`, `mode`, `policy`) and every null stay, so a null
|
|
2762
2761
|
* is still an answer (`character`: she is hidden from this reader; `style`: she has no style
|
|
2763
2762
|
* element; `recent_cursor`: this read had no `since`). An absent section means nothing in it, never
|
|
@@ -2767,8 +2766,8 @@ interface OwDraughtPolicy {
|
|
|
2767
2766
|
compact?: boolean;
|
|
2768
2767
|
}
|
|
2769
2768
|
/**
|
|
2770
|
-
* A section of the draught, in the packet's order (keel's COMPONENTS). `messages`, `room` (
|
|
2771
|
-
*
|
|
2769
|
+
* A section of the draught, in the packet's order (keel's COMPONENTS). `messages`, `room` (the room profile's other
|
|
2770
|
+
* elements) and `proposed` (elements carrying `x_review_proposed`)
|
|
2772
2771
|
* are off unless named.
|
|
2773
2772
|
*/
|
|
2774
2773
|
type OwDraughtComponent = 'self' | 'role' | 'work' | 'style' | 'events' | 'knowledge' | 'names' | 'sheet' | 'recent' | 'messages' | 'room' | 'proposed' | 'roster';
|
|
@@ -2788,7 +2787,7 @@ interface OwDraughtItem {
|
|
|
2788
2787
|
element: OwElement;
|
|
2789
2788
|
}
|
|
2790
2789
|
/** One Character's context in one read, GET /character/{id}/context (keel PR 155, D143; the draught). */
|
|
2791
|
-
/** The draught under `compact
|
|
2790
|
+
/** The draught under `compact`: every section may be absent, and so may `cut` (nothing was cut). */
|
|
2792
2791
|
type OwDraughtCompact = Omit<OwDraught, 'cut'> & {
|
|
2793
2792
|
cut?: Record<string, number>;
|
|
2794
2793
|
};
|
|
@@ -2834,9 +2833,9 @@ interface OwDraught {
|
|
|
2834
2833
|
role: string | null;
|
|
2835
2834
|
};
|
|
2836
2835
|
}>;
|
|
2837
|
-
/** Only when named
|
|
2836
|
+
/** Only when named: the room's other elements that reach her (the room profile), here or nowhere. */
|
|
2838
2837
|
room?: OwDraughtItem[];
|
|
2839
|
-
/** Only when named
|
|
2838
|
+
/** Only when named: every element carrying `x_review_proposed` that reaches her, here or nowhere; `cut.proposed` counts the ones left out. */
|
|
2840
2839
|
proposed?: OwDraughtItem[];
|
|
2841
2840
|
recent?: Array<{
|
|
2842
2841
|
op: 'upsert' | 'delete';
|
|
@@ -2883,7 +2882,7 @@ interface OwCreateAccountWorldInput {
|
|
|
2883
2882
|
}
|
|
2884
2883
|
/**
|
|
2885
2884
|
* createAccountWorld's 201: the world's row as listAccountWorlds lists it, plus the full write key
|
|
2886
|
-
* once in `key` (never shown again). keel's document names it `AccountWorldCreated
|
|
2885
|
+
* once in `key` (never shown again). keel's document names it `AccountWorldCreated`, and
|
|
2887
2886
|
* Assembly's verify-sdk-wire holds this type to it key for key.
|
|
2888
2887
|
*/
|
|
2889
2888
|
interface OwCreatedAccountWorld {
|
|
@@ -3119,7 +3118,7 @@ interface ListParams {
|
|
|
3119
3118
|
*/
|
|
3120
3119
|
filter?: Record<string, string | number | boolean>;
|
|
3121
3120
|
/**
|
|
3122
|
-
* View as
|
|
3121
|
+
* View as, sent as `as`: read as another reader of this world would. A membership
|
|
3123
3122
|
* id (a person, an agent seat or a player seat) reads as that member's own key; a Character id
|
|
3124
3123
|
* reads as a guest of that Character with no membership; `'public'` reads everything not
|
|
3125
3124
|
* hidden. The owner's keys only (a key with no member): a member key gets 403
|
|
@@ -3169,7 +3168,7 @@ interface OwClientConfig {
|
|
|
3169
3168
|
agent?: boolean;
|
|
3170
3169
|
/**
|
|
3171
3170
|
* This client's own name, sent as `X-OW-Client` on every element write (create, upsert, patch,
|
|
3172
|
-
* delete, editLinks, bulk, adopt) and on no read
|
|
3171
|
+
* delete, editLinks, bulk, adopt) and on no read. keel stores it on the element as
|
|
3173
3172
|
* `changed_client`, and on a /changes delete as `deleted_client`, so a reader can tell which tool
|
|
3174
3173
|
* made a change: `'atlas'`, `'lantern'`, your app's name. Default `'sdk'`.
|
|
3175
3174
|
*
|
|
@@ -3205,7 +3204,7 @@ declare class OwApiError extends Error {
|
|
|
3205
3204
|
readonly code: string | null;
|
|
3206
3205
|
/** Error family from the envelope, e.g. 'invalid_request', 'not_found'. */
|
|
3207
3206
|
readonly type: string | null;
|
|
3208
|
-
/** Offending field/param named by the envelope (a 422/400's field; `API-Pin` on a 401 PIN refusal
|
|
3207
|
+
/** Offending field/param named by the envelope (a 422/400's field; `API-Pin` on a 401 PIN refusal), else null. */
|
|
3209
3208
|
readonly param: string | null;
|
|
3210
3209
|
/** Documentation link from the envelope -- show it to users/logs verbatim. */
|
|
3211
3210
|
readonly docUrl: string | null;
|
|
@@ -3231,8 +3230,8 @@ declare class OwApiError extends Error {
|
|
|
3231
3230
|
*/
|
|
3232
3231
|
get isIdempotencyConflict(): boolean;
|
|
3233
3232
|
/**
|
|
3234
|
-
* A request with this Idempotency-Key is still running (409 `idempotency_in_flight
|
|
3235
|
-
*
|
|
3233
|
+
* A request with this Idempotency-Key is still running (409 `idempotency_in_flight`):
|
|
3234
|
+
* two sends of one create or bulk overlapped. Nothing was written by this one.
|
|
3236
3235
|
* Wait `retryAfter` seconds (keel sends 1) and send again with the SAME key and body: once
|
|
3237
3236
|
* the first has answered, that retry replays its answer. Not a key conflict (see above).
|
|
3238
3237
|
*/
|
|
@@ -3247,7 +3246,7 @@ declare class OwApiError extends Error {
|
|
|
3247
3246
|
/**
|
|
3248
3247
|
* `/changes` refused the cursor (409 `resync_required`): what this key may see changed
|
|
3249
3248
|
* (a guest's slice moved; an element hidden from a contributor was unhidden; the key's role
|
|
3250
|
-
* moved to or from guest or contributor, whose cursors have other shapes
|
|
3249
|
+
* moved to or from guest or contributor, whose cursors have other shapes). Drop
|
|
3251
3250
|
* the stored cursor and walk again from the start. What to do with what the local copy holds
|
|
3252
3251
|
* that the new walk does not name is `resyncReason`'s: `role`, keep it; `view`, drop it.
|
|
3253
3252
|
* Without a reason (keel's hidden mark off), keep it: a reset never empties a copy (keel PR
|
|
@@ -3256,7 +3255,7 @@ declare class OwApiError extends Error {
|
|
|
3256
3255
|
get isResyncRequired(): boolean;
|
|
3257
3256
|
/**
|
|
3258
3257
|
* Why `/changes` refused the cursor, from the 409 `resync_required` envelope's `reason`
|
|
3259
|
-
* (
|
|
3258
|
+
* (only while keel's hidden mark is on): `role` (this key's own role or
|
|
3260
3259
|
* membership moved: keep what the local copy holds that the new walk does not name; it is
|
|
3261
3260
|
* out of view now, not gone) or `view` (something left this key's view: a delete, a hide, an
|
|
3262
3261
|
* unhide, a Character change; drop what the new walk does not name). When both happened
|
|
@@ -3281,7 +3280,7 @@ declare class OwApiError extends Error {
|
|
|
3281
3280
|
*/
|
|
3282
3281
|
get isOwnerOnly(): boolean;
|
|
3283
3282
|
/**
|
|
3284
|
-
* A member key sent `viewAs` (403 `view_as_owner_only
|
|
3283
|
+
* A member key sent `viewAs` (403 `view_as_owner_only`): reading as another
|
|
3285
3284
|
* reader is the owner's, from a key with no member. Retrying will not help. Only while
|
|
3286
3285
|
* keel's hidden mark is on; until then `viewAs` is an unknown parameter (422).
|
|
3287
3286
|
*/
|
|
@@ -3296,7 +3295,7 @@ declare class OwApiError extends Error {
|
|
|
3296
3295
|
get isKnownOfNotWritable(): boolean;
|
|
3297
3296
|
/**
|
|
3298
3297
|
* A `patch` or `editLinks` sent with `ifMatch` found the element moved past that
|
|
3299
|
-
* `change_seq` (412 `precondition_failed
|
|
3298
|
+
* `change_seq` (412 `precondition_failed`): nothing was written and nothing
|
|
3300
3299
|
* merged. The error is an OwPreconditionFailedError; its `current` is the element as it
|
|
3301
3300
|
* is now, so no second read is needed.
|
|
3302
3301
|
*/
|
|
@@ -3304,19 +3303,19 @@ declare class OwApiError extends Error {
|
|
|
3304
3303
|
/** 404 `not_found`: no such element or route, or a join code that is unknown, used, revoked or expired. */
|
|
3305
3304
|
get isNotFound(): boolean;
|
|
3306
3305
|
/**
|
|
3307
|
-
* redeemJoin on a table
|
|
3306
|
+
* redeemJoin on a table: the picked Character is one a live seat in the
|
|
3308
3307
|
* world already plays (422 `character_taken`, `param` character). Pick another from a fresh
|
|
3309
3308
|
* previewJoin, whose `characters` mark each `taken`. The code is not spent.
|
|
3310
3309
|
*/
|
|
3311
3310
|
get isCharacterTaken(): boolean;
|
|
3312
3311
|
/**
|
|
3313
|
-
* setMyCharacter, or the member PATCH's `character
|
|
3312
|
+
* setMyCharacter, or the member PATCH's `character`: the picked Character is
|
|
3314
3313
|
* hidden (422 `character_hidden`, `param` character). Unhide it first, or pick another.
|
|
3315
3314
|
*/
|
|
3316
3315
|
get isCharacterHidden(): boolean;
|
|
3317
3316
|
/**
|
|
3318
3317
|
* The `character` sent was refused (422 `invalid_request`, `param` character). On redeemJoin
|
|
3319
|
-
* at a table
|
|
3318
|
+
* at a table: the pick is off the link's list, hidden or deleted since the
|
|
3320
3319
|
* link was made, or missing, or sent to a table with no list (send `name` instead); one
|
|
3321
3320
|
* answer for all, so read previewJoin again and pick from its `characters`. The code is not
|
|
3322
3321
|
* spent. On createWorldLink: a `character` keel refused (not a Character of the world, a
|
|
@@ -3325,7 +3324,7 @@ declare class OwApiError extends Error {
|
|
|
3325
3324
|
*/
|
|
3326
3325
|
get isCharacterInvalid(): boolean;
|
|
3327
3326
|
/**
|
|
3328
|
-
* redeemJoin
|
|
3327
|
+
* redeemJoin: the world already has its 50 live players (422 `world_full`),
|
|
3329
3328
|
* at any player link, a table's or a link for one's. Nothing is spent; a place frees when the
|
|
3330
3329
|
* owner removes a player.
|
|
3331
3330
|
*/
|
|
@@ -3336,18 +3335,18 @@ declare class OwApiError extends Error {
|
|
|
3336
3335
|
get isPinRequired(): boolean;
|
|
3337
3336
|
/**
|
|
3338
3337
|
* A daily allowance is used up (429 `quota_exceeded`): the world's image tickets, its file
|
|
3339
|
-
* tickets (200 a day
|
|
3338
|
+
* tickets (200 a day), or the account's asks. See retryAfter.
|
|
3340
3339
|
*/
|
|
3341
3340
|
get isQuotaExceeded(): boolean;
|
|
3342
3341
|
/**
|
|
3343
3342
|
* createFileTicket / uploadFile: the file is over the 25 MB a file may be (413
|
|
3344
|
-
* `file_too_large`, `param` size
|
|
3343
|
+
* `file_too_large`, `param` size); the message gives both sizes. Nothing was
|
|
3345
3344
|
* issued. Not the upload host's 413 `too_large` (bytes past a ticket's `max_bytes`).
|
|
3346
3345
|
*/
|
|
3347
3346
|
get isFileTooLarge(): boolean;
|
|
3348
3347
|
/**
|
|
3349
3348
|
* createFileTicket / uploadFile: the world's files have no room for this one (403
|
|
3350
|
-
* `files_full
|
|
3349
|
+
* `files_full`: 250 MB a world); the message gives the world's use, its cap and
|
|
3351
3350
|
* the file's size. Remove a file, or ask the owner. Nothing was issued.
|
|
3352
3351
|
*/
|
|
3353
3352
|
get isFilesFull(): boolean;
|
|
@@ -3356,7 +3355,7 @@ declare class OwApiError extends Error {
|
|
|
3356
3355
|
/** ask: the model gave no answer (502 `ask_failed`). Not counted; try again in a moment. */
|
|
3357
3356
|
get isAskFailed(): boolean;
|
|
3358
3357
|
/**
|
|
3359
|
-
* patch, upsert or editLinks became a proposal (202
|
|
3358
|
+
* patch, upsert or editLinks became a proposal (202): the world takes an agent seat's
|
|
3360
3359
|
* writes as proposals (`agent_writes_proposed`), so the element did not change. The error is an
|
|
3361
3360
|
* OwProposedError; its `proposal` is the row a keeper accepts or declines. Not a failure to retry:
|
|
3362
3361
|
* the write is waiting for a person.
|
|
@@ -3364,44 +3363,44 @@ declare class OwApiError extends Error {
|
|
|
3364
3363
|
get isProposed(): boolean;
|
|
3365
3364
|
/**
|
|
3366
3365
|
* propose named a field the proposer's own view of the element does not hold (422
|
|
3367
|
-
* `field_not_visible`, `param` names it
|
|
3366
|
+
* `field_not_visible`, `param` names it): the element reaches this key only as a
|
|
3368
3367
|
* stub (known_of), and a proposal changes only what its proposer can read.
|
|
3369
3368
|
*/
|
|
3370
3369
|
get isFieldNotVisible(): boolean;
|
|
3371
3370
|
/**
|
|
3372
3371
|
* propose: this proposer already has 5 open proposals on the element, or 50 in the world (422
|
|
3373
|
-
* `too_many_open
|
|
3372
|
+
* `too_many_open`). Wait for a keeper to decide, or withdraw one; a lapsed proposal
|
|
3374
3373
|
* no longer counts.
|
|
3375
3374
|
*/
|
|
3376
3375
|
get isTooManyOpen(): boolean;
|
|
3377
3376
|
/**
|
|
3378
3377
|
* acceptProposal found a proposed field moved since the proposal was made (409
|
|
3379
|
-
* `stale_proposal
|
|
3378
|
+
* `stale_proposal`). Nothing was written and the proposal stays open. The error is an
|
|
3380
3379
|
* OwStaleProposalError: `conflicts` lists each moved field with its `base` and `current` values,
|
|
3381
3380
|
* and `current` is the element as it is now. A change to a field the proposal does not name
|
|
3382
3381
|
* does not count. The proposer proposes again on the current text.
|
|
3383
3382
|
*/
|
|
3384
3383
|
get isStaleProposal(): boolean;
|
|
3385
3384
|
/**
|
|
3386
|
-
* While the world takes agent seats' writes as proposals
|
|
3385
|
+
* While the world takes agent seats' writes as proposals, an agent seat's key tried
|
|
3387
3386
|
* what it may not: delete an element it did not create, or accept or decline a proposal (403
|
|
3388
|
-
* `proposed_only`). On any world, reviewNewElement by the member the mark names is the same 403
|
|
3389
|
-
*
|
|
3387
|
+
* `proposed_only`). On any world, reviewNewElement by the member the mark names is the same 403.
|
|
3388
|
+
* Retrying will not help; a person decides.
|
|
3390
3389
|
*/
|
|
3391
3390
|
get isProposedOnly(): boolean;
|
|
3392
3391
|
/**
|
|
3393
|
-
* acceptProposal or declineProposal on the key's own proposal (403 `own_proposal
|
|
3392
|
+
* acceptProposal or declineProposal on the key's own proposal (403 `own_proposal`):
|
|
3394
3393
|
* another keeper (the owner or a co-builder) decides it. Retrying will not help.
|
|
3395
3394
|
*/
|
|
3396
3395
|
get isOwnProposal(): boolean;
|
|
3397
3396
|
/**
|
|
3398
|
-
* reviewNewElement on an element that carries no `x_review_proposed` mark (422 `not_proposed
|
|
3399
|
-
*
|
|
3397
|
+
* reviewNewElement on an element that carries no `x_review_proposed` mark (422 `not_proposed`):
|
|
3398
|
+
* nothing to settle. Someone settled it already, or it was never written as proposed.
|
|
3400
3399
|
*/
|
|
3401
3400
|
get isNotProposed(): boolean;
|
|
3402
3401
|
}
|
|
3403
3402
|
/**
|
|
3404
|
-
* 412 `precondition_failed
|
|
3403
|
+
* 412 `precondition_failed`: the element changed since the `change_seq` sent as
|
|
3405
3404
|
* `ifMatch`. `current` is the element as it is now, as this key sees it (keel sends it beside
|
|
3406
3405
|
* the error envelope; null if a response ever lacks it). The check is per element and the
|
|
3407
3406
|
* server never merges: compare the copy you edited from with `current`; when the fields you
|
|
@@ -3413,7 +3412,7 @@ declare class OwPreconditionFailedError extends OwApiError {
|
|
|
3413
3412
|
constructor(status: number, code: string | null, message: string, docUrl: string | null, detail: unknown, type?: string | null, param?: string | null, retryAfter?: number | null);
|
|
3414
3413
|
}
|
|
3415
3414
|
/**
|
|
3416
|
-
* 409 `stale_proposal
|
|
3415
|
+
* 409 `stale_proposal`: acceptProposal found a proposed field moved since the
|
|
3417
3416
|
* proposal was made. keel sends `conflicts` (one `{field, base, current}` per moved field) and
|
|
3418
3417
|
* `current` (the element as it is now) beside the error envelope; `conflicts` is empty and
|
|
3419
3418
|
* `current` null if a response ever lacks them. Nothing was written and the proposal stays open.
|
|
@@ -3424,7 +3423,7 @@ declare class OwStaleProposalError extends OwApiError {
|
|
|
3424
3423
|
constructor(status: number, code: string | null, message: string, docUrl: string | null, detail: unknown, type?: string | null, param?: string | null, retryAfter?: number | null);
|
|
3425
3424
|
}
|
|
3426
3425
|
/**
|
|
3427
|
-
* 202 on patch, upsert or editLinks
|
|
3426
|
+
* 202 on patch, upsert or editLinks: the world takes an agent seat's writes as
|
|
3428
3427
|
* proposals (`agent_writes_proposed`, set by its owner), so the write became a proposal and the
|
|
3429
3428
|
* element did not change. The answer is `{proposal}`, never an element, so this client throws
|
|
3430
3429
|
* rather than hand it back as one. `proposal` is the row; a keeper (the owner or a co-builder)
|
|
@@ -3507,7 +3506,7 @@ declare function kindCanWrite(kind: OwKeyKind): boolean;
|
|
|
3507
3506
|
* Should a credential UI ask for a PIN with this key?
|
|
3508
3507
|
* Prefixed keys read PIN-less; writes on pinned worlds always need it. 'optional' means: show
|
|
3509
3508
|
* the field, don't require it. A legacy key that can write sends its PIN on every read of a
|
|
3510
|
-
* world that has one, whether or not the world is open to read (
|
|
3509
|
+
* world that has one, whether or not the world is open to read (2026-10-20):
|
|
3511
3510
|
* the literal `'required-for-private-reads'` predates that rule and keeps its name until 5.0.
|
|
3512
3511
|
* A demo-range key (`isDemoKey`) is also kind `legacy` and never needs a PIN.
|
|
3513
3512
|
*/
|
|
@@ -3594,9 +3593,9 @@ declare class OwV2Client {
|
|
|
3594
3593
|
private readonly apiPin;
|
|
3595
3594
|
private readonly fetchImpl;
|
|
3596
3595
|
private readonly agent;
|
|
3597
|
-
/** The name sent as X-OW-Client on element writes
|
|
3596
|
+
/** The name sent as X-OW-Client on element writes, checked at construction. */
|
|
3598
3597
|
private readonly clientName;
|
|
3599
|
-
/** The conditional head poll's state
|
|
3598
|
+
/** The conditional head poll's state, per instance. */
|
|
3600
3599
|
private readonly headPoll;
|
|
3601
3600
|
constructor(config?: OwClientConfig);
|
|
3602
3601
|
/** GET /health -- unauthenticated liveness pulse. */
|
|
@@ -3610,9 +3609,9 @@ declare class OwV2Client {
|
|
|
3610
3609
|
/**
|
|
3611
3610
|
* PATCH /world -- partial world-meta update. The element write's server-managed keys are
|
|
3612
3611
|
* stripped, and so are the world's own read-only ones (WORLD_READ_ONLY_FIELDS: `slug` and
|
|
3613
|
-
* `public_page
|
|
3614
|
-
* `origin
|
|
3615
|
-
* written as `source` and `producer` (
|
|
3612
|
+
* `public_page`; `agent_writes_proposed`; set on the world page, not here;
|
|
3613
|
+
* `origin`; `id`), so a `getWorld()` body can be sent back. The world's origin is
|
|
3614
|
+
* written as `source` and `producer` (each an object or null, served under `origin`);
|
|
3616
3615
|
* extension keys (`x_*`, `atlas_*`, `shadow_*`) are sent as given, and `null` removes one.
|
|
3617
3616
|
*/
|
|
3618
3617
|
patchWorld(partial: Record<string, unknown>): Promise<OwWorldMeta>;
|
|
@@ -3623,8 +3622,8 @@ declare class OwV2Client {
|
|
|
3623
3622
|
* token is a TypeError before sending.
|
|
3624
3623
|
*/
|
|
3625
3624
|
/**
|
|
3626
|
-
* PUT /me/character -- pick the roster Character that is you in this world, or none
|
|
3627
|
-
*
|
|
3625
|
+
* PUT /me/character -- pick the roster Character that is you in this world, or none.
|
|
3626
|
+
* A person member's write key with its PIN; answers GET /me's body. 422 for a hidden
|
|
3628
3627
|
* Character (`character_hidden`, `err.isCharacterHidden`), a guest's pick it did not make, or a
|
|
3629
3628
|
* taken Character (`invalid_request`, `param` character); 404 for one this key cannot see; 403 for
|
|
3630
3629
|
* an agent seat, a player, the owner (whose own is the world's `owner_character`, set with
|
|
@@ -3645,15 +3644,15 @@ declare class OwV2Client {
|
|
|
3645
3644
|
* recorded world holds it, in one read: her element, what she holds and sits in, her open work,
|
|
3646
3645
|
* how she works, the Events she was in, the Narratives she knows, everything else that names
|
|
3647
3646
|
* her, her sheet, what changed around her (`since`), and who plays whom; the world's name and
|
|
3648
|
-
* calendar beside; the room's messages (`messages`), its other elements (`room
|
|
3649
|
-
* elements written as proposed (`proposed
|
|
3647
|
+
* calendar beside; the room's messages (`messages`), its other elements (`room`) and
|
|
3648
|
+
* elements written as proposed (`proposed`) only when `components` names them. Each
|
|
3650
3649
|
* row carries the list route's body for the same reader as `element`, beside `via`, `her_links`
|
|
3651
3650
|
* and `grade`; nothing is inferred. The owner's keys, co-builders and contributors for any
|
|
3652
3651
|
* Character they can see; a player seat or a guest for its own Character only (another id is
|
|
3653
3652
|
* 404). `asOf` is a filter on the elements' own dates, not time travel. A `cut` that is not
|
|
3654
3653
|
* empty means the serving is partial (`cut.proposed` also counts proposed elements left out because
|
|
3655
3654
|
* the component was not named). `compact: true` leaves out every empty section and an empty `cut`,
|
|
3656
|
-
* the frame and every null kept, answered as `OwDraughtCompact
|
|
3655
|
+
* the frame and every null kept, answered as `OwDraughtCompact`. Served
|
|
3657
3656
|
* `Cache-Control: private, no-store`.
|
|
3658
3657
|
*/
|
|
3659
3658
|
draught(characterId: string, policy?: OwDraughtPolicy & {
|
|
@@ -3663,8 +3662,8 @@ declare class OwV2Client {
|
|
|
3663
3662
|
/** Cursor-walk every page of a type. Politeness: uses config pageSize. */
|
|
3664
3663
|
listAll(type: ElementType | string, params?: Omit<ListParams, 'cursor'>): AsyncGenerator<OwElement>;
|
|
3665
3664
|
/**
|
|
3666
|
-
* GET /{type}/{id}/ -- optional one-level stub expansion / sparse fields, and `viewAs` (
|
|
3667
|
-
*
|
|
3665
|
+
* GET /{type}/{id}/ -- optional one-level stub expansion / sparse fields, and `viewAs` (the owner reads as
|
|
3666
|
+
* another reader; see ListParams.viewAs).
|
|
3668
3667
|
*/
|
|
3669
3668
|
get(type: ElementType | string, id: string, opts?: Pick<ListParams, 'expand' | 'fields' | 'viewAs'>): Promise<OwElement>;
|
|
3670
3669
|
/**
|
|
@@ -3684,8 +3683,8 @@ declare class OwV2Client {
|
|
|
3684
3683
|
* PUT /{type}/{id}/ -- upsert-by-client-id. The local-first write primitive. A known-of
|
|
3685
3684
|
* stub (`known_of: true`, see isKnownOf) is a TypeError before sending, here and on every
|
|
3686
3685
|
* element write: a PUT of one would blank every field it does not keep.
|
|
3687
|
-
* An agent seat's PUT on an existing element, in a world that takes its writes as proposals
|
|
3688
|
-
*
|
|
3686
|
+
* An agent seat's PUT on an existing element, in a world that takes its writes as proposals,
|
|
3687
|
+
* answers 202 and is thrown as an OwProposedError: the element did not change.
|
|
3689
3688
|
*/
|
|
3690
3689
|
upsert(type: ElementType | string, id: string, element: OwElement | Record<string, unknown>): Promise<OwElement>;
|
|
3691
3690
|
/**
|
|
@@ -3693,12 +3692,12 @@ declare class OwV2Client {
|
|
|
3693
3692
|
* replace wholesale, omitted fields stay untouched. For link arrays prefer
|
|
3694
3693
|
* editLinks() -- atomic server-side merge, no read-before-write.
|
|
3695
3694
|
*
|
|
3696
|
-
* `ifMatch
|
|
3695
|
+
* `ifMatch`: the element's `change_seq` as you read it. The update lands
|
|
3697
3696
|
* only if nobody changed the element since; otherwise nothing is written and this throws
|
|
3698
3697
|
* an OwPreconditionFailedError (412) whose `current` is the element as it is now. Omit
|
|
3699
3698
|
* it for today's unconditional write.
|
|
3700
3699
|
*
|
|
3701
|
-
* In a world that takes an agent seat's writes as proposals (
|
|
3700
|
+
* In a world that takes an agent seat's writes as proposals (the world's
|
|
3702
3701
|
* `agent_writes_proposed`), a seat's patch answers 202 with `{proposal}`, never an element:
|
|
3703
3702
|
* this throws an OwProposedError (`err.isProposed`, the row under `err.proposal`) and the
|
|
3704
3703
|
* element did not change. If-Match is checked first: a stale one is still a 412.
|
|
@@ -3711,7 +3710,7 @@ declare class OwV2Client {
|
|
|
3711
3710
|
* tombstone AND scrubs the id from every other element's links in the same
|
|
3712
3711
|
* transaction -- no client-side unlink pass needed, ever.
|
|
3713
3712
|
*
|
|
3714
|
-
* `ifMatch` (
|
|
3713
|
+
* `ifMatch` (as on patch()): the element's `change_seq` as you read it. The delete
|
|
3715
3714
|
* lands only if nothing changed since; otherwise an OwPreconditionFailedError (412) whose
|
|
3716
3715
|
* `current` is the element as it is now, and nothing is deleted. On an element already gone it
|
|
3717
3716
|
* is the idempotent 204. Under a world's proposals switch a delete is never a proposal.
|
|
@@ -3724,14 +3723,14 @@ declare class OwV2Client {
|
|
|
3724
3723
|
* Dedupes, tolerates already-present/already-absent ids. Returns the FULL
|
|
3725
3724
|
* updated element (fixture P5). Use this for all relationship editing; it
|
|
3726
3725
|
* retires the read-merge-PATCH dance. `ifMatch` works as on patch(): a link write
|
|
3727
|
-
* moves the element too. A 202 (an agent seat's link edit that became a proposal
|
|
3728
|
-
*
|
|
3726
|
+
* moves the element too. A 202 (an agent seat's link edit that became a proposal)
|
|
3727
|
+
* is thrown as an OwProposedError, as on patch().
|
|
3729
3728
|
*/
|
|
3730
3729
|
editLinks(type: ElementType | string, id: string, field: string, edit: OwLinkEdit, opts?: {
|
|
3731
3730
|
ifMatch?: number;
|
|
3732
3731
|
}): Promise<OwElement>;
|
|
3733
3732
|
/**
|
|
3734
|
-
* POST /{type}/{id}/adopt with {member} -- change who made an element
|
|
3733
|
+
* POST /{type}/{id}/adopt with {member} -- change who made an element.
|
|
3735
3734
|
* `member` is a membership id of this world (a person or an AI seat, as `members()` lists
|
|
3736
3735
|
* them) or `'owner'`, which sets `created_by` to null. The world's owner key or a
|
|
3737
3736
|
* co-builder's (a person's or a seat's) with its PIN; a contributor's is 403 `not_author`
|
|
@@ -3755,7 +3754,7 @@ declare class OwV2Client {
|
|
|
3755
3754
|
* the items that would have succeeded still say 201 with the ids and timestamps they
|
|
3756
3755
|
* would have had (keel's "counterfactual 201s"): do not record those ids as created.
|
|
3757
3756
|
* An agent seat's item on an existing element, in a world that takes its writes as
|
|
3758
|
-
* proposals
|
|
3757
|
+
* proposals, answers a slot `{status: 202, id, proposal}`: never thrown, the
|
|
3759
3758
|
* element unchanged, the slot's `proposal` the row a keeper decides.
|
|
3760
3759
|
* An element without an id gets one, as `create` mints it, by its position in `items`: with an
|
|
3761
3760
|
* `idempotencyKey`, derived from the key and the position (the ids the Python package mints),
|
|
@@ -3769,18 +3768,18 @@ declare class OwV2Client {
|
|
|
3769
3768
|
/**
|
|
3770
3769
|
* GET /changes -- one page of the world's ordered change feed.
|
|
3771
3770
|
* Cursor is OPAQUE: persist verbatim, never parse or build one (a guest's and a
|
|
3772
|
-
* contributor's carry their view's epoch, since
|
|
3771
|
+
* contributor's carry their view's epoch, since 2026-10-20 for a contributor).
|
|
3773
3772
|
* Zero/absent cursor = full export (byte-aligned with the Folder Format).
|
|
3774
3773
|
* Reset rule: a 409 `resync_required` (err.isResyncRequired) means the key's
|
|
3775
3774
|
* view changed (a guest's slice, an element unhidden from a contributor, or its role): drop
|
|
3776
3775
|
* the cursor and walk from zero. For what the local copy holds that the walk no longer names,
|
|
3777
|
-
* read err.resyncReason (
|
|
3776
|
+
* read err.resyncReason (while keel's hidden mark is on): `role`, keep it; `view`,
|
|
3778
3777
|
* drop it (as for a delete row with reason `hidden`). Without a reason, keep it (keel's own
|
|
3779
3778
|
* words since PR 104; sharing is forward-only). Never empty a copy on your own.
|
|
3780
3779
|
* Citizenship: heaviest route on the platform; default page size is polite.
|
|
3781
3780
|
* keel sends the cursor of a page at the head as a number (an empty page, for a key
|
|
3782
3781
|
* whose cursor carries no epoch); it is handed back as a string, like every cursor here.
|
|
3783
|
-
* `after
|
|
3782
|
+
* `after`: only the changes made at or after an ISO 8601 time (`updated_at` of an
|
|
3784
3783
|
* upsert, `deleted_at` of a delete; no offset means UTC). A filter, not a position: the order,
|
|
3785
3784
|
* `cursor`, `has_more` and `head` are as without it, so to read the whole window pass the cursor
|
|
3786
3785
|
* back as `since` with the same `after` until `has_more` is false (`changesAll` does). "Since
|
|
@@ -3800,12 +3799,12 @@ declare class OwV2Client {
|
|
|
3800
3799
|
* poll's, so a missed tick never drops a change) and walk changesAll only when it moved;
|
|
3801
3800
|
* a head below yours means the server rewound: walk again from zero. `epoch` is a
|
|
3802
3801
|
* guest's or a contributor's view epoch (null for other keys): it can move with `head` unchanged, so walk on
|
|
3803
|
-
* either move. `epoch_reason` (
|
|
3802
|
+
* either move. `epoch_reason` (while keel's hidden mark is on; absent otherwise)
|
|
3804
3803
|
* says why the epoch last moved, `role` or `view` (see OwChangesPage.epoch_reason).
|
|
3805
3804
|
* keel returns the owner's cursor as a number; it is handed back as a
|
|
3806
3805
|
* string, like every cursor here.
|
|
3807
3806
|
*
|
|
3808
|
-
* Conditional (
|
|
3807
|
+
* Conditional (4.57.0): keel tags the answer with an ETag that covers the head and
|
|
3809
3808
|
* the epoch, so a view change moves it too. The client keeps the last tag and sends it as
|
|
3810
3809
|
* If-None-Match on its next head read. When nothing moved, keel answers 304 with no body, and
|
|
3811
3810
|
* this returns the `head`, `cursor` and `epoch` from the last 200 with `unchanged: true`
|
|
@@ -3997,13 +3996,13 @@ declare class OwV2Client {
|
|
|
3997
3996
|
* `agent`: an AI agent redeems it at POST /join). Sends no credential, whatever key
|
|
3998
3997
|
* this client holds. Every bad code (unknown, used, revoked, expired) is the same
|
|
3999
3998
|
* 404 `not_found` (`err.isNotFound`). `code` is the part of the link after `#`. A table
|
|
4000
|
-
*
|
|
3999
|
+
* adds `max_uses`, `uses_left`, `name_required` and `characters`, the
|
|
4001
4000
|
* pick screen's list; a link for one answers without them.
|
|
4002
4001
|
*/
|
|
4003
4002
|
previewJoin(code: string): Promise<OwJoinPreview>;
|
|
4004
4003
|
/**
|
|
4005
4004
|
* POST /join -- redeem a join code that needs no account: a player's (a friend reading as
|
|
4006
|
-
* a guest
|
|
4005
|
+
* a guest) or an AI agent's. Sends no credential, whatever key this client holds.
|
|
4007
4006
|
* 201 with `kind` telling the two answers apart: `player` gives a read key (`ow_r_`, no PIN)
|
|
4008
4007
|
* and the Character it reads as; `agent` gives a seat's write key, secret and `.env` lines.
|
|
4009
4008
|
* Both are shown once, and the code is spent: a lost answer cannot be replayed (the owner
|
|
@@ -4012,7 +4011,7 @@ declare class OwV2Client {
|
|
|
4012
4011
|
* agent code). Every bad code is the same 404 `not_found`; a person's code is redeemed with
|
|
4013
4012
|
* acceptJoin instead.
|
|
4014
4013
|
*
|
|
4015
|
-
* A table (a player code whose preview carries `max_uses
|
|
4014
|
+
* A table (a player code whose preview carries `max_uses`) seats one player
|
|
4016
4015
|
* per redeem, until `uses_left` is 0. With a list, `character` is the player's pick, the `id`
|
|
4017
4016
|
* of one of the preview's `characters` not `taken`: a Character a live seat already plays is
|
|
4018
4017
|
* 422 `character_taken` (`err.isCharacterTaken`; pick another), one off the list, hidden or
|
|
@@ -4058,8 +4057,7 @@ declare class OwV2Client {
|
|
|
4058
4057
|
* POST /account/join -- accept an invite link's code as the account this client's
|
|
4059
4058
|
* `ow_a_` token belongs to: 201 with the new membership. Refusals: 404 `not_found`
|
|
4060
4059
|
* (every bad code, and a code made for an AI agent) and 409 `already_member`
|
|
4061
|
-
* (`err.isAlreadyMember`). Accepting needs no account PIN, for any role (
|
|
4062
|
-
* ed73c90); a write key for the membership waits for one (`pin_required`). A refusal
|
|
4060
|
+
* (`err.isAlreadyMember`). Accepting needs no account PIN, for any role; a write key for the membership waits for one (`pin_required`). A refusal
|
|
4063
4061
|
* never spends the code. A world key here is a TypeError before anything is sent.
|
|
4064
4062
|
*/
|
|
4065
4063
|
acceptJoin(code: string): Promise<OwJoinedMembership>;
|
|
@@ -4067,16 +4065,16 @@ declare class OwV2Client {
|
|
|
4067
4065
|
* POST /account/worlds/{worldId}/links -- a new invite link for a world this client's
|
|
4068
4066
|
* `ow_a_` token owns (keel C1): `reader` is required (`person`, accepted with acceptJoin;
|
|
4069
4067
|
* `agent`, redeemed at POST /join; `player`, a friend with no account, redeemed with
|
|
4070
|
-
* redeemJoin for a read key
|
|
4068
|
+
* redeemJoin for a read key); `role`, when left out, is keel's default: guest for a
|
|
4071
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
|
|
4072
4070
|
* only) to true; `character` (player links only) a Character's id or `new` (the default):
|
|
4073
|
-
* whoever opens the link first reads as it, until removed. `preview` (person and player links
|
|
4074
|
-
*
|
|
4071
|
+
* whoever opens the link first reads as it, until removed. `preview` (person and player links)
|
|
4072
|
+
* to false: true puts the world's id in the link's path, so a chat that unfurls it
|
|
4075
4073
|
* shows the world's name and picture (the code stays after `#`); true on an agent link is
|
|
4076
4074
|
* 422, param `preview`. `maxUses` (person and player links; an agent link takes none) to 1, a
|
|
4077
|
-
* link for one. On a person link
|
|
4075
|
+
* link for one. On a person link 2 to 50 lets in that many accounts, each
|
|
4078
4076
|
* joining once with the link's role, until every use is taken, it expires or it is revoked;
|
|
4079
|
-
* who already joined stays. On a player link
|
|
4077
|
+
* who already joined stays. On a player link 2 to 50 makes a table, one
|
|
4080
4078
|
* link that seats that many players, each picking one of
|
|
4081
4079
|
* `characters` (Character ids of the world, in the order a pick screen shows them; a hidden
|
|
4082
4080
|
* one is 422, param `characters`). `characters` empty or left out: each player names a fresh
|
|
@@ -4147,7 +4145,7 @@ declare class OwV2Client {
|
|
|
4147
4145
|
*/
|
|
4148
4146
|
removeSeat(worldId: string, seatId: string): Promise<void>;
|
|
4149
4147
|
/**
|
|
4150
|
-
* PUT /{type}/{id}/hidden -- hide an element
|
|
4148
|
+
* PUT /{type}/{id}/hidden -- hide an element. The owner's key or a co-builder's
|
|
4151
4149
|
* (a person's or a seat's) with its PIN; hiding a hidden element again changes nothing, and
|
|
4152
4150
|
* the element's body and `change_seq` do not move. Hidden, it is seen only by the owner, the
|
|
4153
4151
|
* co-builders and the member who created it; to every other key it is a 404, left out of
|
|
@@ -4189,7 +4187,7 @@ declare class OwV2Client {
|
|
|
4189
4187
|
listProposals(type: ElementType | string, id: string, opts?: OwProposalQuery): Promise<OwProposalList>;
|
|
4190
4188
|
/**
|
|
4191
4189
|
* GET /world/proposals -- the world's queue, newest first by created_at, two kinds of row told
|
|
4192
|
-
* apart by `kind
|
|
4190
|
+
* apart by `kind`: `proposal`, a proposed change to an element (OwProposal), and
|
|
4193
4191
|
* `new_element`, an element written as proposed, carrying `x_review_proposed`
|
|
4194
4192
|
* (OwProposedNewElement: settle it with reviewNewElement). A marked element is listed under
|
|
4195
4193
|
* `open`, `lapsed` and `all`, never `accepted` or `declined`; keel reads at most the 500 newest.
|
|
@@ -4227,7 +4225,7 @@ declare class OwV2Client {
|
|
|
4227
4225
|
withdrawProposal(type: ElementType | string, id: string, pid: string): Promise<void>;
|
|
4228
4226
|
/**
|
|
4229
4227
|
* POST /{type}/{id}/review -- settle a new element written as proposed, one carrying
|
|
4230
|
-
* `x_review_proposed` (the queue's `new_element` row
|
|
4228
|
+
* `x_review_proposed` (the queue's `new_element` row). The owner's key or a
|
|
4231
4229
|
* co-builder's, with its PIN. `{ decision: 'accept' }` clears the mark (a write by you: a new
|
|
4232
4230
|
* change_seq, one /changes row) and answers `{ element }`; `{ decision: 'decline', reason? }`
|
|
4233
4231
|
* deletes the element (a tombstone, the links to it scrubbed, its open proposals dropped) and
|
|
@@ -4341,18 +4339,18 @@ declare class OwV2Client {
|
|
|
4341
4339
|
auth?: boolean;
|
|
4342
4340
|
allowEmpty?: boolean;
|
|
4343
4341
|
replayAware?: boolean;
|
|
4344
|
-
/** A `change_seq` to send as `If-Match
|
|
4342
|
+
/** A `change_seq` to send as `If-Match`; a whole number, else TypeError before sending. */
|
|
4345
4343
|
/** A write keel's document lists X-OW-Agent on (the element writes, hide and unhide, the file ticket, setMyCharacter, mintWorldKey): where an agent client sends it. */
|
|
4346
4344
|
write?: boolean;
|
|
4347
|
-
/** One of the writes keel reads X-OW-Client on (
|
|
4345
|
+
/** One of the writes keel reads X-OW-Client on (create, put, patch, delete, links, bulk, adopt, propose, accept): where the client's name goes. */
|
|
4348
4346
|
elementWrite?: boolean;
|
|
4349
4347
|
/**
|
|
4350
|
-
* A write keel may answer 202 with `{proposal}` (
|
|
4348
|
+
* A write keel may answer 202 with `{proposal}` (put, patch, links): a 202 then
|
|
4351
4349
|
* throws an OwProposedError instead of returning a body that is not the element.
|
|
4352
4350
|
*/
|
|
4353
4351
|
proposable?: boolean;
|
|
4354
4352
|
ifMatch?: number;
|
|
4355
|
-
/** A tag to send as `If-None-Match` exactly as given (
|
|
4353
|
+
/** A tag to send as `If-None-Match` exactly as given (the head read): unlike ifMatch, nothing is quoted or checked. */
|
|
4356
4354
|
ifNoneMatch?: string;
|
|
4357
4355
|
/**
|
|
4358
4356
|
* Called with every response's `ETag` header (as received, null when absent) and status, before
|
|
@@ -4434,9 +4432,9 @@ declare const FAMILY_ORDER: readonly ElementFamily[];
|
|
|
4434
4432
|
* Field labels: the one rule for turning a field name into the words a tool shows.
|
|
4435
4433
|
*
|
|
4436
4434
|
* Presentation, not the standard: the schema never carries a label. The house rule
|
|
4437
|
-
* (
|
|
4435
|
+
* (set 2026-10-20) is sentence case
|
|
4438
4436
|
* with acronyms kept: "birth_date" → "Birth date", "image_url" → "Image URL". Seeded
|
|
4439
|
-
* from Atlas's humanizeFieldName as of 1.59.1
|
|
4437
|
+
* from Atlas's humanizeFieldName as of 1.59.1, so Atlas, Lantern
|
|
4440
4438
|
* and Council read one copy instead of three.
|
|
4441
4439
|
*/
|
|
4442
4440
|
/** Words shown in capitals wherever they fall in a label. */
|
|
@@ -4446,7 +4444,7 @@ declare const FIELD_ACRONYMS: readonly string[];
|
|
|
4446
4444
|
* lowercase, an acronym in capitals wherever it falls ("image_url" → "Image URL",
|
|
4447
4445
|
* "url" → "URL", "time_range_current" → "Time range current"). A word written all in
|
|
4448
4446
|
* capitals stays as written: a custom field named `STR` reads "STR"
|
|
4449
|
-
* (Lantern's stat blocks
|
|
4447
|
+
* (Lantern's stat blocks). Every schema field name is lowercase, so this
|
|
4450
4448
|
* reaches only names a person or tool chose.
|
|
4451
4449
|
*
|
|
4452
4450
|
* The name is taken as given: a tool that hides an extension prefix (`atlas_`, `x_`,
|
|
@@ -4529,7 +4527,7 @@ declare function typeWord(world: object | null | undefined, type: string, opts?:
|
|
|
4529
4527
|
* the reader that opens one back. Absorbed from Atlas's
|
|
4530
4528
|
* `src/store/world-file.ts` (Temper's, Atlas 1.17), so Atlas, Lantern and any
|
|
4531
4529
|
* script read one file the same way; brought to §4.7's checks OW-1 to OW-22
|
|
4532
|
-
* and their fixture set
|
|
4530
|
+
* and their fixture set.
|
|
4533
4531
|
*
|
|
4534
4532
|
* THE READER takes bytes and returns bytes: no DOM, `File` or file system, so
|
|
4535
4533
|
* it runs in a browser and in Node alike. It reads the central directory
|
|
@@ -4816,7 +4814,7 @@ declare function lookupWorld<T extends OwLookupElement>(index: OwWorldIndex<T>,
|
|
|
4816
4814
|
declare function renderElement<T extends OwLookupElement>(element: T, index: OwWorldIndex<T>, opts?: OwRenderOptions): string;
|
|
4817
4815
|
|
|
4818
4816
|
/**
|
|
4819
|
-
* Context for keel's AI proxy (POST /api/v2/account/ask
|
|
4817
|
+
* Context for keel's AI proxy (POST /api/v2/account/ask): the elements a
|
|
4820
4818
|
* question is about, as text, within the proxy's limits. The caller passes the
|
|
4821
4819
|
* elements it shows the user, in its own order, and gets back exactly which were sent:
|
|
4822
4820
|
* the answer's sources are what the user saw, never a second lookup's.
|
|
@@ -5174,7 +5172,7 @@ declare function isParseError(r: ParseResult | ParseError): r is ParseError;
|
|
|
5174
5172
|
* World calendars: the calendar kernel, and which calendars a world holds.
|
|
5175
5173
|
*
|
|
5176
5174
|
* `calendar.ts` beside this file came from Atlas's `src/core/calendar.ts` in 4.20.0, and is
|
|
5177
|
-
* the one copy since Atlas 245aad3 deleted its own and imports this one
|
|
5175
|
+
* the one copy since Atlas 245aad3 deleted its own and imports this one:
|
|
5178
5176
|
* a kernel change is an SDK release, and Atlas's 48 kernel tests run against it there too.
|
|
5179
5177
|
* Its contract is still Atlas's calendar design, §5 and §5b. This file adapts Atlas's
|
|
5180
5178
|
* `src/core/calendar-lens.ts` (readCalendarValue, worldCalendars, resolveCalendarLens) to
|
|
@@ -5182,7 +5180,7 @@ declare function isParseError(r: ParseResult | ParseError): r is ParseError;
|
|
|
5182
5180
|
*
|
|
5183
5181
|
* The field: a calendar is an element (a Construct by convention) carrying `atlas_calendar`.
|
|
5184
5182
|
* Atlas owns the field, its meaning and its writes (its calendar design, §5 and §5b); every
|
|
5185
|
-
* other tool reads it and never writes it (
|
|
5183
|
+
* other tool reads it and never writes it (a prefix names the owner, not
|
|
5186
5184
|
* who may read). Detection keys on the field's presence, never on the supertype.
|
|
5187
5185
|
* Everything degrades to bare numbers: a missing, dangling or malformed calendar is null,
|
|
5188
5186
|
* never an error.
|
|
@@ -5357,7 +5355,7 @@ declare enum GameTier {
|
|
|
5357
5355
|
* Since then keel mounts only `status/` and `encryption-info/` under /tokens/
|
|
5358
5356
|
* (`accounts/token_api.py`; consume, access-key and both revokes answer 404 on
|
|
5359
5357
|
* production, 2026-10-14), and spending moved server-side: the Council spends
|
|
5360
|
-
* through keel's council proxy (
|
|
5358
|
+
* through keel's council proxy (Skeld's ruling), and
|
|
5361
5359
|
* `OwV2Client.allowance()` reads the token rating. The four dead methods are
|
|
5362
5360
|
* deprecated in 4.23.0 and leave in 5.0.
|
|
5363
5361
|
*/
|
|
@@ -5421,7 +5419,7 @@ declare class TokenResource {
|
|
|
5421
5419
|
* Consume tokens for service usage
|
|
5422
5420
|
*
|
|
5423
5421
|
* @deprecated keel serves no consume route (404 on production since 2026-10;
|
|
5424
|
-
* no client decides what its act costs, Skeld's ruling
|
|
5422
|
+
* no client decides what its act costs, Skeld's ruling): spending
|
|
5425
5423
|
* happens server-side in the route that does the work. Removed in 5.0.
|
|
5426
5424
|
*
|
|
5427
5425
|
* Reports token consumption to track daily usage. Allows consumption even if
|