@crowdedkingdoms/crowdyjs 17.8.0-test.1 → 17.10.0-dev.1
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/README.md +35 -0
- package/dist/crowdy-client.d.ts +3 -0
- package/dist/crowdy-client.d.ts.map +1 -1
- package/dist/crowdy-client.js +2 -0
- package/dist/default-origin.d.ts +6 -6
- package/dist/default-origin.d.ts.map +1 -1
- package/dist/default-origin.js +6 -6
- package/dist/domains/exec.d.ts +284 -0
- package/dist/domains/exec.d.ts.map +1 -0
- package/dist/domains/exec.js +631 -0
- package/dist/generated/graphql.d.ts +306 -0
- package/dist/generated/graphql.d.ts.map +1 -1
- package/dist/generated/graphql.js +10 -0
- package/dist/grid-scope.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/kit/npcs.d.ts.map +1 -1
- package/dist/kit/social.d.ts.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -230,6 +230,7 @@ never told about, so a native refresh without it is a re-placement.
|
|
|
230
230
|
| `client.channels`, `client.teams` | Messaging channels and app-scoped player teams (membership + roles). |
|
|
231
231
|
| `client.gameModel` | Abstract game model: containers, properties, functions (incl. model-driven `notify_*` effects), sessions, app-scoped active-session counts (`activePlayerCount`, `activePlayerCountChanged`), container-change push (`containerChanged`), flow-correlation timelines (`flow`), automations / NPCs (`upsertAutomation`, `runAutomation`, `automationRuns`, `automationStats`, …), and one-shot timers (`scheduleInvoke`, `cancelTimer`, `timers`). |
|
|
232
232
|
| `client.compute` | Compute Modules — server-side Rust/WASM logic: author + deploy source (`upsertModule`, `deployVersion`, `deployTemplate`, `waitForCompile`), triggers + policy, synchronous `invoke`, and monitoring (`moduleRuns`, `moduleStats`, `moduleLogs`, `appDiagnostics`). See [Compute Modules](https://docs.crowdedkingdoms.com/game-api/compute-modules). |
|
|
233
|
+
| `client.exec` | **ck-exec (dev-tier preview, 17.9.0):** `connect(appId, { nodeType, key })` opens a player's connection to an execution host; the `ExecConnection` it returns has `call`, `callRaw`, `subscribe`, `ping`, `onReconnect` and `close`, with MessagePack payloads, and it reconnects and renews subscriptions by itself. `deploy({ appId, root, types })` deploys an app's hubs and spokes (`manage_compute`). See [ck-exec](#ck-exec-dev-tier-preview). |
|
|
233
234
|
| `client.playerCompute` | Player-authored SERVER/CLIENT Rust/WASM bound to player-owned grids: deploy source, activate/deactivate, list modules/versions, delete self-authored modules. |
|
|
234
235
|
| `client.playerModel` | Player-owned flexible model containers and grid-confined automations (`containers`, `createContainer`, `setProperty`, `automations`, `createAutomation`, …). |
|
|
235
236
|
| `client.playerWallet` | Player spend: balance, spend caps, card setup, policy, charges. |
|
|
@@ -681,6 +682,40 @@ See the docs guides [Modeling game concepts](https://docs.crowdedkingdoms.com/ga
|
|
|
681
682
|
(the SDK surface + the simulation-tier / notify-to-pull / timer / hidden-info
|
|
682
683
|
/ anti-cheat patterns).
|
|
683
684
|
|
|
685
|
+
## ck-exec (dev-tier preview)
|
|
686
|
+
|
|
687
|
+
ck-exec runs an app's server code as **hubs** (stateful, one instance per key) and **spokes**
|
|
688
|
+
(stateless, replicated) on execution hosts, on the dev environment only for now. A player
|
|
689
|
+
connects to one host and calls any node of the app through it:
|
|
690
|
+
|
|
691
|
+
```ts
|
|
692
|
+
// The session token is the app's app-scoped token (client.portal.mintAppToken).
|
|
693
|
+
const exec = await client.exec.connect(appId, { nodeType: 'arena', key: 'm1' });
|
|
694
|
+
|
|
695
|
+
const state = await exec.call('arena', 'm1', 'state'); // MessagePack both ways
|
|
696
|
+
const stop = await exec.subscribe('arena', 'm1', 'hp', (push) => {
|
|
697
|
+
render(push.value); // decoded payload
|
|
698
|
+
});
|
|
699
|
+
exec.onReconnect((host) => console.log('moved to', host));
|
|
700
|
+
```
|
|
701
|
+
|
|
702
|
+
- `connect` asks the game API for a host (`execConnect`) and opens a WebSocket to its gateway.
|
|
703
|
+
With `nodeType` and `key`, the player lands on the host that runs that instance. On runtimes
|
|
704
|
+
without a global `WebSocket` (Node before 22), pass one: `{ WebSocket }` from the `ws` package.
|
|
705
|
+
- A refused call throws `CrowdyExecError`: `status` is the platform's (`AppError` carries the
|
|
706
|
+
handler's own message; `Busy`, `Moved`, `Unavailable` and `RateLimited` are `retryable`).
|
|
707
|
+
- When the host goes away, the connection asks for a host again, reconnects and renews every
|
|
708
|
+
subscription; a call caught by it, or answered `Moved`, is tried once more.
|
|
709
|
+
- `ExecConnection.open(gatewayUrl, token)` connects with a connect token you already have
|
|
710
|
+
(tools and tests), without reconnecting.
|
|
711
|
+
- `client.exec.deploy({ appId, root, types })` takes each node type's compiled module
|
|
712
|
+
(`wasm: Uint8Array`) with its manifest fields, sends each distinct module once, and makes
|
|
713
|
+
the version active.
|
|
714
|
+
|
|
715
|
+
Integers above 2^53 decode as `number` and lose precision unless you pass
|
|
716
|
+
`{ decode: { useBigInt64: true } }`. The wire format is in the
|
|
717
|
+
[ck-exec docs](https://docs.dev.crowdedkingdoms.com/exec/intro).
|
|
718
|
+
|
|
684
719
|
## Hosting a game on Crowdy Games
|
|
685
720
|
|
|
686
721
|
Since 17.2.0 (ck-api v2.1) a developer can publish a built static bundle to the
|
package/dist/crowdy-client.d.ts
CHANGED
|
@@ -61,6 +61,7 @@ import { TeamsAPI } from './domains/teams.js';
|
|
|
61
61
|
import { UdpAPI } from './domains/udp.js';
|
|
62
62
|
import { GameModelAPI } from './domains/gameModel.js';
|
|
63
63
|
import { ComputeAPI } from './domains/compute.js';
|
|
64
|
+
import { ExecAPI } from './domains/exec.js';
|
|
64
65
|
import { PlayerComputeAPI } from './domains/playerCompute.js';
|
|
65
66
|
import { CrowdyStudioAPI } from './domains/crowdyStudio.js';
|
|
66
67
|
import { CrowdyStudioGitHubTransport } from './crowdy-studio/github/transport.js';
|
|
@@ -289,6 +290,8 @@ export declare class CrowdyClient {
|
|
|
289
290
|
readonly gameModel: GameModelAPI;
|
|
290
291
|
/** Compute Modules: server-side Rust/WASM logic (manage, invoke, observe). */
|
|
291
292
|
readonly compute: ComputeAPI;
|
|
293
|
+
/** ck-exec (dev-tier preview): connect players to an app's hubs and spokes; deploy them. */
|
|
294
|
+
readonly exec: ExecAPI;
|
|
292
295
|
/** Player-authored Rust/WASM bound to player-owned grids. */
|
|
293
296
|
readonly playerCompute: PlayerComputeAPI;
|
|
294
297
|
/** Crowdy Studio cloud projects, libraries, and common source files. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crowdy-client.d.ts","sourceRoot":"","sources":["../src/crowdy-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"crowdy-client.d.ts","sourceRoot":"","sources":["../src/crowdy-client.ts"],"names":[],"mappings":"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"}
|
package/dist/crowdy-client.js
CHANGED
|
@@ -62,6 +62,7 @@ import { TeamsAPI } from './domains/teams.js';
|
|
|
62
62
|
import { UdpAPI } from './domains/udp.js';
|
|
63
63
|
import { GameModelAPI } from './domains/gameModel.js';
|
|
64
64
|
import { ComputeAPI } from './domains/compute.js';
|
|
65
|
+
import { ExecAPI } from './domains/exec.js';
|
|
65
66
|
import { PlayerComputeAPI } from './domains/playerCompute.js';
|
|
66
67
|
import { CrowdyStudioAPI } from './domains/crowdyStudio.js';
|
|
67
68
|
import { CrowdyStudioGitHubTransport } from './crowdy-studio/github/transport.js';
|
|
@@ -220,6 +221,7 @@ export class CrowdyClient {
|
|
|
220
221
|
getToken: () => this.session.getToken(),
|
|
221
222
|
});
|
|
222
223
|
this.compute = new ComputeAPI(this.graphql);
|
|
224
|
+
this.exec = new ExecAPI(this.graphql);
|
|
223
225
|
this.playerCompute = new PlayerComputeAPI(this.graphql);
|
|
224
226
|
this.crowdyStudio = new CrowdyStudioAPI(this.graphql);
|
|
225
227
|
this.crowdyStudioGitHub = new CrowdyStudioGitHubTransport(this.graphql);
|
package/dist/default-origin.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GENERATED — do not edit. The operator tooling's
|
|
3
|
-
* `sync-client-origins.mjs --write --tier
|
|
3
|
+
* `sync-client-origins.mjs --write --tier dev` writes this file, and
|
|
4
4
|
* `check-sdk-default-origin.mjs` refuses it when it names the wrong tier or a
|
|
5
5
|
* host that declaration does not carry. Regenerate; never hand-edit.
|
|
6
6
|
*
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
* than no default at all. Every fallback this SDK ever removed named a host that
|
|
11
11
|
* was already dead. A generated file plus a gate is what makes this one different.
|
|
12
12
|
*
|
|
13
|
-
* Source: the operator's per-tier public CK API origin declaration, tier '
|
|
13
|
+
* Source: the operator's per-tier public CK API origin declaration, tier 'dev'
|
|
14
14
|
*/
|
|
15
15
|
/** The tier this build of the SDK is published for. */
|
|
16
|
-
export declare const CROWDY_DEFAULT_TIER = "
|
|
16
|
+
export declare const CROWDY_DEFAULT_TIER = "dev";
|
|
17
17
|
/** The public CK API origin for that tier. */
|
|
18
|
-
export declare const CROWDY_DEFAULT_HTTP_ORIGIN = "https://ck.
|
|
18
|
+
export declare const CROWDY_DEFAULT_HTTP_ORIGIN = "https://ck.dev.crowdedkingdoms.com";
|
|
19
19
|
/** The same host over WebSocket. A scheme is composed; a hostname is looked up. */
|
|
20
|
-
export declare const CROWDY_DEFAULT_WS_ORIGIN = "wss://ck.
|
|
20
|
+
export declare const CROWDY_DEFAULT_WS_ORIGIN = "wss://ck.dev.crowdedkingdoms.com";
|
|
21
21
|
/** The bare hostname, for callers that need to compare rather than dial. */
|
|
22
|
-
export declare const CROWDY_DEFAULT_HOST = "ck.
|
|
22
|
+
export declare const CROWDY_DEFAULT_HOST = "ck.dev.crowdedkingdoms.com";
|
|
23
23
|
//# sourceMappingURL=default-origin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-origin.d.ts","sourceRoot":"","sources":["../src/default-origin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"default-origin.d.ts","sourceRoot":"","sources":["../src/default-origin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC,8CAA8C;AAC9C,eAAO,MAAM,0BAA0B,uCAAuC,CAAC;AAE/E,mFAAmF;AACnF,eAAO,MAAM,wBAAwB,qCAAqC,CAAC;AAE3E,4EAA4E;AAC5E,eAAO,MAAM,mBAAmB,+BAA+B,CAAC"}
|
package/dist/default-origin.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GENERATED — do not edit. The operator tooling's
|
|
3
|
-
* `sync-client-origins.mjs --write --tier
|
|
3
|
+
* `sync-client-origins.mjs --write --tier dev` writes this file, and
|
|
4
4
|
* `check-sdk-default-origin.mjs` refuses it when it names the wrong tier or a
|
|
5
5
|
* host that declaration does not carry. Regenerate; never hand-edit.
|
|
6
6
|
*
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
* than no default at all. Every fallback this SDK ever removed named a host that
|
|
11
11
|
* was already dead. A generated file plus a gate is what makes this one different.
|
|
12
12
|
*
|
|
13
|
-
* Source: the operator's per-tier public CK API origin declaration, tier '
|
|
13
|
+
* Source: the operator's per-tier public CK API origin declaration, tier 'dev'
|
|
14
14
|
*/
|
|
15
15
|
/** The tier this build of the SDK is published for. */
|
|
16
|
-
export const CROWDY_DEFAULT_TIER = '
|
|
16
|
+
export const CROWDY_DEFAULT_TIER = 'dev';
|
|
17
17
|
/** The public CK API origin for that tier. */
|
|
18
|
-
export const CROWDY_DEFAULT_HTTP_ORIGIN = 'https://ck.
|
|
18
|
+
export const CROWDY_DEFAULT_HTTP_ORIGIN = 'https://ck.dev.crowdedkingdoms.com';
|
|
19
19
|
/** The same host over WebSocket. A scheme is composed; a hostname is looked up. */
|
|
20
|
-
export const CROWDY_DEFAULT_WS_ORIGIN = 'wss://ck.
|
|
20
|
+
export const CROWDY_DEFAULT_WS_ORIGIN = 'wss://ck.dev.crowdedkingdoms.com';
|
|
21
21
|
/** The bare hostname, for callers that need to compare rather than dial. */
|
|
22
|
-
export const CROWDY_DEFAULT_HOST = 'ck.
|
|
22
|
+
export const CROWDY_DEFAULT_HOST = 'ck.dev.crowdedkingdoms.com';
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import type { DecoderOptions } from '@msgpack/msgpack';
|
|
2
|
+
import type { GraphQLClient } from '../client.js';
|
|
3
|
+
import { CrowdyError } from '../errors.js';
|
|
4
|
+
import { type ExecAppStatusFieldsFragment, type ExecInstancesQuery, type ExecLogsQuery, type ExecVersionsQuery } from '../generated/graphql.js';
|
|
5
|
+
/**
|
|
6
|
+
* ck-exec, the hub-and-spoke execution service (dev-tier preview).
|
|
7
|
+
*
|
|
8
|
+
* An app's code runs as **hubs** (stateful nodes, one per key, one handler at a
|
|
9
|
+
* time) and **spokes** (stateless, replicated) on execution hosts. A player
|
|
10
|
+
* connects to one host's gateway and calls any node of the app through it:
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* const exec = await client.exec.connect(appId, { nodeType: 'arena', key: 'm1' });
|
|
14
|
+
* const hp = await exec.call('arena', 'm1', 'state');
|
|
15
|
+
* const stop = await exec.subscribe('arena', 'm1', 'hp', (push) => render(push.value));
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* `connect` asks the game API for a host (`execConnect`, with the app-scoped token
|
|
19
|
+
* of `appId` as the session token) and opens a WebSocket to its gateway. Frames are
|
|
20
|
+
* ck-exec's client protocol (`ckx-proto/src/client.rs`); payloads are MessagePack.
|
|
21
|
+
* The connection recovers by itself: a closed socket or a `Moved` reply asks for a
|
|
22
|
+
* host again, renews every subscription, and retries the call once.
|
|
23
|
+
*/
|
|
24
|
+
/** Call statuses as the gateway sends them (`ckx_proto::Status`), by wire value. */
|
|
25
|
+
export declare const EXEC_STATUSES: readonly ["Ok", "AppError", "Busy", "Moved", "NotFound", "DeadlineExceeded", "Denied", "RateLimited", "Unavailable", "Internal", "Trapped", "BadRequest"];
|
|
26
|
+
export type ExecStatus = (typeof EXEC_STATUSES)[number] | 'Unknown';
|
|
27
|
+
/** The status name for a wire value. */
|
|
28
|
+
export declare function execStatus(value: number): ExecStatus;
|
|
29
|
+
/**
|
|
30
|
+
* A call, subscription or connection that ck-exec refused or could not complete.
|
|
31
|
+
* `status` is the platform's (`AppError` carries the handler's own message);
|
|
32
|
+
* `retryable` says whether trying again later can succeed.
|
|
33
|
+
*/
|
|
34
|
+
export declare class CrowdyExecError extends CrowdyError {
|
|
35
|
+
readonly status: ExecStatus;
|
|
36
|
+
readonly retryable: boolean;
|
|
37
|
+
constructor(status: ExecStatus, message: string, cause?: unknown);
|
|
38
|
+
}
|
|
39
|
+
/** A message from a client to a gateway. */
|
|
40
|
+
export type ExecClientFrame = {
|
|
41
|
+
kind: 'call';
|
|
42
|
+
rid: number;
|
|
43
|
+
nodeType: string;
|
|
44
|
+
key: string;
|
|
45
|
+
method: string;
|
|
46
|
+
payload: Uint8Array;
|
|
47
|
+
} | {
|
|
48
|
+
kind: 'subscribe' | 'unsubscribe';
|
|
49
|
+
rid: number;
|
|
50
|
+
nodeType: string;
|
|
51
|
+
key: string;
|
|
52
|
+
topic: string;
|
|
53
|
+
} | {
|
|
54
|
+
kind: 'ping';
|
|
55
|
+
nonce: number;
|
|
56
|
+
};
|
|
57
|
+
/** A message from a gateway to a client. */
|
|
58
|
+
export type ExecServerFrame = {
|
|
59
|
+
kind: 'reply';
|
|
60
|
+
rid: number;
|
|
61
|
+
status: number;
|
|
62
|
+
payload: Uint8Array;
|
|
63
|
+
} | {
|
|
64
|
+
kind: 'push';
|
|
65
|
+
nodeType: string;
|
|
66
|
+
key: string;
|
|
67
|
+
topic: string;
|
|
68
|
+
payload: Uint8Array;
|
|
69
|
+
} | {
|
|
70
|
+
kind: 'pong';
|
|
71
|
+
nonce: number;
|
|
72
|
+
};
|
|
73
|
+
/** Encodes a client frame, as `ckx_proto::client::ClientMsg::encode` does. */
|
|
74
|
+
export declare function encodeExecFrame(f: ExecClientFrame): Uint8Array;
|
|
75
|
+
/** Decodes a gateway frame, as `ckx_proto::client::ServerMsg::decode` does. */
|
|
76
|
+
export declare function decodeExecFrame(bytes: Uint8Array): ExecServerFrame;
|
|
77
|
+
/** A published message on a topic this connection subscribes to. */
|
|
78
|
+
export interface ExecPush<T = unknown> {
|
|
79
|
+
nodeType: string;
|
|
80
|
+
key: string;
|
|
81
|
+
topic: string;
|
|
82
|
+
/** The payload decoded from MessagePack (`undefined` when it is not MessagePack). */
|
|
83
|
+
value: T;
|
|
84
|
+
payload: Uint8Array;
|
|
85
|
+
}
|
|
86
|
+
export type ExecPushHandler<T = unknown> = (push: ExecPush<T>) => void;
|
|
87
|
+
/** What {@link ExecAPI.connect} returns for a host: where to dial and with what. */
|
|
88
|
+
export interface ExecEndpoint {
|
|
89
|
+
gatewayUrl: string;
|
|
90
|
+
token: string;
|
|
91
|
+
host: string;
|
|
92
|
+
}
|
|
93
|
+
/** A WebSocket constructor, e.g. the global one or the `ws` package's. */
|
|
94
|
+
export type ExecWebSocketCtor = new (url: string) => WebSocket;
|
|
95
|
+
export interface ExecConnectOptions {
|
|
96
|
+
/** Put the player on the host running this node type (with `key`), placing it if needed. */
|
|
97
|
+
nodeType?: string;
|
|
98
|
+
/** The instance key within `nodeType`; empty for the root hub or a spoke. */
|
|
99
|
+
key?: string;
|
|
100
|
+
/** How long a call waits for its reply, in milliseconds. Default 10 000. */
|
|
101
|
+
callTimeoutMs?: number;
|
|
102
|
+
/** Connect again when the socket closes unexpectedly. Default true. */
|
|
103
|
+
reconnect?: boolean;
|
|
104
|
+
/** A WebSocket implementation where there is no global one (older Node). */
|
|
105
|
+
WebSocket?: ExecWebSocketCtor;
|
|
106
|
+
/** MessagePack decoding options, e.g. `{ useBigInt64: true }` for 64-bit integers above 2^53. */
|
|
107
|
+
decode?: DecoderOptions;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* One player's connection to a ck-exec host. Calls go to any node of the app;
|
|
111
|
+
* the host routes them. Subscriptions survive reconnects.
|
|
112
|
+
*/
|
|
113
|
+
export declare class ExecConnection {
|
|
114
|
+
private readonly dial;
|
|
115
|
+
private readonly options;
|
|
116
|
+
private ws;
|
|
117
|
+
private endpoint;
|
|
118
|
+
private ready;
|
|
119
|
+
private readonly pending;
|
|
120
|
+
private readonly subs;
|
|
121
|
+
private nextRid;
|
|
122
|
+
private closed;
|
|
123
|
+
private backoffMs;
|
|
124
|
+
private readonly reconnectListeners;
|
|
125
|
+
private readonly WS;
|
|
126
|
+
private readonly callTimeoutMs;
|
|
127
|
+
/** @internal Use {@link ExecAPI.connect} or {@link ExecConnection.open}. */
|
|
128
|
+
constructor(dial: () => Promise<ExecEndpoint>, options?: ExecConnectOptions);
|
|
129
|
+
/**
|
|
130
|
+
* Opens a connection to a known gateway with a connect token, without the game API
|
|
131
|
+
* (tools and tests; a game uses {@link ExecAPI.connect}). It does not reconnect.
|
|
132
|
+
*/
|
|
133
|
+
static open(gatewayUrl: string, token: string, options?: Omit<ExecConnectOptions, 'reconnect'>): Promise<ExecConnection>;
|
|
134
|
+
/** The execution host this connection is on. */
|
|
135
|
+
get host(): string;
|
|
136
|
+
/** Called with the new host after every reconnect. */
|
|
137
|
+
onReconnect(listener: (host: string) => void): () => void;
|
|
138
|
+
/** @internal */
|
|
139
|
+
connect(): Promise<void>;
|
|
140
|
+
private dialOnce;
|
|
141
|
+
private onMessage;
|
|
142
|
+
private rejectPending;
|
|
143
|
+
private onClosed;
|
|
144
|
+
private reconnect;
|
|
145
|
+
/**
|
|
146
|
+
* Leaves the host `from` for the one the game API picks now, unless another
|
|
147
|
+
* caller already has. Calls still waiting on `from` fail as Unavailable.
|
|
148
|
+
*/
|
|
149
|
+
private redial;
|
|
150
|
+
private renewSubscriptions;
|
|
151
|
+
private rid;
|
|
152
|
+
/** Sends one frame and waits for the reply with its rid. */
|
|
153
|
+
private request;
|
|
154
|
+
/**
|
|
155
|
+
* Calls a node's endpoint with raw bytes and returns the reply's bytes. A call
|
|
156
|
+
* whose connection closes, or that is answered `Moved`, is tried once more on a
|
|
157
|
+
* fresh connection.
|
|
158
|
+
* @throws {CrowdyExecError} for any status but `Ok`.
|
|
159
|
+
*/
|
|
160
|
+
callRaw(nodeType: string, key: string, method: string, payload?: Uint8Array, options?: {
|
|
161
|
+
timeoutMs?: number;
|
|
162
|
+
}): Promise<Uint8Array>;
|
|
163
|
+
/**
|
|
164
|
+
* Calls a node's endpoint: `args` go as MessagePack, the reply comes back decoded.
|
|
165
|
+
* @throws {CrowdyExecError} for any status but `Ok`; `AppError` carries the handler's message.
|
|
166
|
+
*/
|
|
167
|
+
call<T = unknown>(nodeType: string, key: string, method: string, args?: unknown, options?: {
|
|
168
|
+
timeoutMs?: number;
|
|
169
|
+
}): Promise<T>;
|
|
170
|
+
/**
|
|
171
|
+
* Receives what a node publishes on `topic`. Returns a function that stops
|
|
172
|
+
* this handler (and the subscription, when it was the last one).
|
|
173
|
+
*/
|
|
174
|
+
subscribe<T = unknown>(nodeType: string, key: string, topic: string, onPush: ExecPushHandler<T>): Promise<() => Promise<void>>;
|
|
175
|
+
/** Round trip to the gateway, in milliseconds. */
|
|
176
|
+
ping(): Promise<number>;
|
|
177
|
+
/** Closes the connection; it does not reconnect. */
|
|
178
|
+
close(): void;
|
|
179
|
+
}
|
|
180
|
+
/** One node type of a deploy: its module and its manifest settings. */
|
|
181
|
+
export interface ExecNodeTypeInput {
|
|
182
|
+
kind: 'hub' | 'spoke';
|
|
183
|
+
/** The compiled module (`wasm32-unknown-unknown`, built with `ckx-sdk`). */
|
|
184
|
+
wasm: Uint8Array;
|
|
185
|
+
/** The type that owns this one; none for the root. */
|
|
186
|
+
parent?: string;
|
|
187
|
+
/** Clients may call it through the gateway. */
|
|
188
|
+
client?: boolean;
|
|
189
|
+
/** Types it may call (and subscribe to); `*` for any. */
|
|
190
|
+
calls?: string[];
|
|
191
|
+
/** Any other manifest field (`persist_every_ms`, `replicas`, `seed_b64`, ...). */
|
|
192
|
+
[field: string]: unknown;
|
|
193
|
+
}
|
|
194
|
+
export interface ExecDeployOptions {
|
|
195
|
+
appId: string;
|
|
196
|
+
/** The root hub's type name. */
|
|
197
|
+
root: string;
|
|
198
|
+
types: Record<string, ExecNodeTypeInput>;
|
|
199
|
+
}
|
|
200
|
+
/** One guest log line (`ctx.log`); `level` is 0 error, 1 warn, 2 info, 3 debug. */
|
|
201
|
+
export type ExecLogLine = Omit<ExecLogsQuery['execLogs'][number], '__typename'>;
|
|
202
|
+
/** An instance the execution manager has placed. */
|
|
203
|
+
export type ExecInstance = Omit<ExecInstancesQuery['execInstances'][number], '__typename'>;
|
|
204
|
+
/** A deployed version. */
|
|
205
|
+
export type ExecVersion = Omit<ExecVersionsQuery['execVersions'][number], '__typename'>;
|
|
206
|
+
/** An app's active version, kill switches and budget pause. */
|
|
207
|
+
export type ExecAppStatus = Omit<ExecAppStatusFieldsFragment, '__typename'>;
|
|
208
|
+
export interface ExecLogsOptions {
|
|
209
|
+
nodeType?: string;
|
|
210
|
+
key?: string;
|
|
211
|
+
/** The least severe level included: 0 errors only … 3 everything (the default). */
|
|
212
|
+
maxLevel?: number;
|
|
213
|
+
/** Only lines older than this line id, to page back. */
|
|
214
|
+
before?: string;
|
|
215
|
+
/** At most this many lines (default 100, at most 500). */
|
|
216
|
+
limit?: number;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* `client.exec`: connecting players to ck-exec, deploying an app's nodes, and operating
|
|
220
|
+
* them (logs, instances, versions, rollback, the kill switch, developer connections).
|
|
221
|
+
*/
|
|
222
|
+
export declare class ExecAPI {
|
|
223
|
+
private readonly graphql;
|
|
224
|
+
constructor(graphql: GraphQLClient);
|
|
225
|
+
/**
|
|
226
|
+
* A host and a developer connect token for `appId` (valid for about a minute). The
|
|
227
|
+
* session's calls arrive as `Caller::Developer` with your user id and may reach any
|
|
228
|
+
* node type, not only `client` ones. Requires the org `manage_compute` permission and
|
|
229
|
+
* your own session token, not an app token.
|
|
230
|
+
*/
|
|
231
|
+
developerEndpoint(appId: string, options?: {
|
|
232
|
+
nodeType?: string;
|
|
233
|
+
key?: string;
|
|
234
|
+
}): Promise<ExecEndpoint & {
|
|
235
|
+
expiresAt: string;
|
|
236
|
+
}>;
|
|
237
|
+
/**
|
|
238
|
+
* Connects as one of the app's developers, for studio tools, manual runs and admin
|
|
239
|
+
* endpoints. The same connection as {@link connect}, reconnecting with a fresh
|
|
240
|
+
* developer token.
|
|
241
|
+
*/
|
|
242
|
+
connectAsDeveloper(appId: string, options?: ExecConnectOptions): Promise<ExecConnection>;
|
|
243
|
+
/** Guest log lines, newest first, kept for 24 hours. Requires `view_compute_diagnostics`. */
|
|
244
|
+
logs(appId: string, options?: ExecLogsOptions): Promise<ExecLogLine[]>;
|
|
245
|
+
/** What the manager has placed for the app. Requires `view_compute_diagnostics`. */
|
|
246
|
+
instances(appId: string): Promise<ExecInstance[]>;
|
|
247
|
+
/** The app's versions, newest first. Requires `view_compute_diagnostics`. */
|
|
248
|
+
versions(appId: string): Promise<ExecVersion[]>;
|
|
249
|
+
/** The active version and the switches. Requires `view_compute_diagnostics`. */
|
|
250
|
+
status(appId: string): Promise<ExecAppStatus>;
|
|
251
|
+
/**
|
|
252
|
+
* Makes an earlier version active again, a rollback; instances pick it up when they
|
|
253
|
+
* next start. Requires `manage_compute`.
|
|
254
|
+
*/
|
|
255
|
+
activateVersion(appId: string, version: number): Promise<ExecAppStatus>;
|
|
256
|
+
/**
|
|
257
|
+
* The kill switch, for the whole app or one node type. Off: nothing of it is placed,
|
|
258
|
+
* what runs is persisted and stopped, and calls are refused with `Denied`. Requires
|
|
259
|
+
* `manage_compute`.
|
|
260
|
+
*/
|
|
261
|
+
setEnabled(appId: string, enabled: boolean, nodeType?: string): Promise<ExecAppStatus>;
|
|
262
|
+
/** A host for this player and its connect token (valid for about a minute). */
|
|
263
|
+
endpoint(appId: string, options?: {
|
|
264
|
+
nodeType?: string;
|
|
265
|
+
key?: string;
|
|
266
|
+
}): Promise<ExecEndpoint & {
|
|
267
|
+
expiresAt: string;
|
|
268
|
+
}>;
|
|
269
|
+
/**
|
|
270
|
+
* Connects the signed-in player to ck-exec for `appId`. The session token must be
|
|
271
|
+
* that app's app-scoped token. With `nodeType` (and `key`) the player lands on the
|
|
272
|
+
* host that runs that instance.
|
|
273
|
+
*/
|
|
274
|
+
connect(appId: string, options?: ExecConnectOptions): Promise<ExecConnection>;
|
|
275
|
+
/**
|
|
276
|
+
* Deploys a new version of the app's nodes and makes it active: the manifest, and
|
|
277
|
+
* each distinct module once. Running instances pick it up when they next start.
|
|
278
|
+
* Requires the org `manage_compute` permission.
|
|
279
|
+
*/
|
|
280
|
+
deploy(options: ExecDeployOptions): Promise<{
|
|
281
|
+
version: number;
|
|
282
|
+
}>;
|
|
283
|
+
}
|
|
284
|
+
//# sourceMappingURL=exec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/domains/exec.ts"],"names":[],"mappings":"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"}
|