@fnndsc/calypso 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/daemon/engine.d.ts +11 -0
- package/dist/daemon/launch.d.ts +30 -0
- package/dist/daemon/launch.js +53 -20
- package/dist/daemon/launch.js.map +1 -1
- package/dist/daemon/server.d.ts +24 -0
- package/dist/daemon/server.js +79 -5
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/static.d.ts +35 -0
- package/dist/daemon/static.js +135 -0
- package/dist/daemon/static.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/protocol/envelope.d.ts +2 -2
- package/dist/protocol/index.d.ts +16 -0
- package/dist/protocol/index.js +17 -0
- package/dist/protocol/index.js.map +1 -0
- package/dist/protocol/messages.d.ts +20 -20
- package/package.json +7 -3
package/dist/daemon/engine.d.ts
CHANGED
|
@@ -47,4 +47,15 @@ export interface HostedEngine {
|
|
|
47
47
|
* @returns The matching candidates and the prefix they complete.
|
|
48
48
|
*/
|
|
49
49
|
line_complete(linePrefix: string): Promise<CompletionResult>;
|
|
50
|
+
/**
|
|
51
|
+
* Reads one ChRIS file's raw bytes, resolved against the session's
|
|
52
|
+
* working directory. When the engine provides it, the daemon exposes a
|
|
53
|
+
* token-gated `/vfs` HTTP route so browser surfaces can render file
|
|
54
|
+
* content natively (images in a panel) instead of through the terminal
|
|
55
|
+
* stream.
|
|
56
|
+
*
|
|
57
|
+
* @param filePath - The file's path (absolute or cwd-relative).
|
|
58
|
+
* @returns The file's bytes.
|
|
59
|
+
*/
|
|
60
|
+
file_read?(filePath: string): Promise<Buffer>;
|
|
50
61
|
}
|
package/dist/daemon/launch.d.ts
CHANGED
|
@@ -1,4 +1,34 @@
|
|
|
1
|
+
import { CalypsoDaemon } from './server.js';
|
|
1
2
|
import type { BrasaEngine } from '@fnndsc/brasa';
|
|
3
|
+
import { type OutputSink } from '@fnndsc/brasa';
|
|
4
|
+
import type { ProgressEvent } from '@fnndsc/brasa';
|
|
5
|
+
import { type Surface } from '@fnndsc/brasa';
|
|
6
|
+
/** The daemon sink forwards live command output to the executing surface. */
|
|
7
|
+
export declare class DaemonSink implements OutputSink {
|
|
8
|
+
private readonly daemon;
|
|
9
|
+
constructor(daemon: CalypsoDaemon);
|
|
10
|
+
/** @inheritdoc */
|
|
11
|
+
data_write(chunk: string | Buffer): void;
|
|
12
|
+
/** @inheritdoc */
|
|
13
|
+
err_write(chunk: string | Buffer): void;
|
|
14
|
+
/** @inheritdoc */
|
|
15
|
+
status_write(text: string): void;
|
|
16
|
+
/** @inheritdoc */
|
|
17
|
+
progress_write(event: ProgressEvent): void;
|
|
18
|
+
private output_write;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Builds the surface a daemon-hosted engine talks to.
|
|
22
|
+
*
|
|
23
|
+
* Interactivity is a surface capability: prompts, pipeline segments, shell
|
|
24
|
+
* escapes, and local editing reach the surface running the command through
|
|
25
|
+
* the daemon's brokers, without knowing the transport. Nothing ever spawns
|
|
26
|
+
* on the daemon host.
|
|
27
|
+
*
|
|
28
|
+
* @param daemon - The daemon whose brokers deliver the capability requests.
|
|
29
|
+
* @returns The surface to install with `surface_set` on the daemon host.
|
|
30
|
+
*/
|
|
31
|
+
export declare function daemonSurface_create(daemon: CalypsoDaemon): Surface;
|
|
2
32
|
/**
|
|
3
33
|
* Starts the daemon over an engine and advertises it for same-user discovery.
|
|
4
34
|
*
|
package/dist/daemon/launch.js
CHANGED
|
@@ -11,8 +11,11 @@
|
|
|
11
11
|
*
|
|
12
12
|
* @module
|
|
13
13
|
*/
|
|
14
|
+
import { hostname } from 'node:os';
|
|
15
|
+
import * as path from 'node:path';
|
|
14
16
|
import chalk from 'chalk';
|
|
15
17
|
import { CalypsoDaemon } from './server.js';
|
|
18
|
+
import { webRoot_resolve } from './static.js';
|
|
16
19
|
import { token_generate } from './token.js';
|
|
17
20
|
import { sink_set } from '@fnndsc/brasa';
|
|
18
21
|
import { surface_set } from '@fnndsc/brasa';
|
|
@@ -21,7 +24,7 @@ import { welcomeLine_build, versionReport_build, versions_get, buildHash_get, fo
|
|
|
21
24
|
import { chrisContext } from '@fnndsc/cumin';
|
|
22
25
|
import { identity_forSession, berth_write, berth_read, berth_path, berthUrl_isAlive, DISCONNECTED_IDENTITY } from './berth.js';
|
|
23
26
|
/** The daemon sink forwards live command output to the executing surface. */
|
|
24
|
-
class DaemonSink {
|
|
27
|
+
export class DaemonSink {
|
|
25
28
|
daemon;
|
|
26
29
|
constructor(daemon) {
|
|
27
30
|
this.daemon = daemon;
|
|
@@ -39,6 +42,32 @@ class DaemonSink {
|
|
|
39
42
|
this.daemon.output_current(channel, text);
|
|
40
43
|
}
|
|
41
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Builds the surface a daemon-hosted engine talks to.
|
|
47
|
+
*
|
|
48
|
+
* Interactivity is a surface capability: prompts, pipeline segments, shell
|
|
49
|
+
* escapes, and local editing reach the surface running the command through
|
|
50
|
+
* the daemon's brokers, without knowing the transport. Nothing ever spawns
|
|
51
|
+
* on the daemon host.
|
|
52
|
+
*
|
|
53
|
+
* @param daemon - The daemon whose brokers deliver the capability requests.
|
|
54
|
+
* @returns The surface to install with `surface_set` on the daemon host.
|
|
55
|
+
*/
|
|
56
|
+
export function daemonSurface_create(daemon) {
|
|
57
|
+
return {
|
|
58
|
+
capabilities: {
|
|
59
|
+
hiddenInput: true,
|
|
60
|
+
localEdit: true,
|
|
61
|
+
tty: true,
|
|
62
|
+
pipeSegments: true,
|
|
63
|
+
shellCommands: true,
|
|
64
|
+
},
|
|
65
|
+
prompt: (request) => daemon.prompt_current(request.message, request.hidden ?? false),
|
|
66
|
+
pipeSegment: (command, input) => daemon.pipe_current(command, input),
|
|
67
|
+
shellCommand: (command) => daemon.shell_current(command),
|
|
68
|
+
localEdit: (request) => daemon.edit_current(request.content, request.extension),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
42
71
|
/**
|
|
43
72
|
* Starts the daemon over an engine and advertises it for same-user discovery.
|
|
44
73
|
*
|
|
@@ -75,11 +104,25 @@ export async function daemon_launch(engine, beforeListen) {
|
|
|
75
104
|
await beforeListen();
|
|
76
105
|
}
|
|
77
106
|
const token = token_generate();
|
|
107
|
+
// The web surface (argus) is served from the same port as the wire when a
|
|
108
|
+
// built bundle is found: an explicit CALYPSO_WEB_ROOT wins, and a monorepo
|
|
109
|
+
// checkout's bundle is picked up from the working directory so a dev-tree
|
|
110
|
+
// `chell --daemon` serves the surface with no configuration at all.
|
|
111
|
+
const webRoot = webRoot_resolve([
|
|
112
|
+
process.env['CALYPSO_WEB_ROOT'],
|
|
113
|
+
path.join(process.cwd(), 'apps', 'argus', 'dist'),
|
|
114
|
+
]);
|
|
115
|
+
// Loopback is the posture; CALYPSO_BIND is a deliberate, per-launch
|
|
116
|
+
// opt-out for demos on a trusted network. The attach token still gates
|
|
117
|
+
// every session, but the web bundle and the wire become reachable from
|
|
118
|
+
// any host that can route here.
|
|
119
|
+
const bindHost = process.env['CALYPSO_BIND'] ?? '127.0.0.1';
|
|
78
120
|
const daemon = new CalypsoDaemon({
|
|
79
121
|
engine,
|
|
80
122
|
token,
|
|
81
|
-
host:
|
|
123
|
+
host: bindHost,
|
|
82
124
|
port: 0,
|
|
125
|
+
...(webRoot !== null ? { webRoot } : {}),
|
|
83
126
|
// Only the daemon holds the session context, so it renders the themed
|
|
84
127
|
// prompt and pushes it to surfaces.
|
|
85
128
|
promptProvider: () => sessionPromptContext_build(),
|
|
@@ -88,24 +131,7 @@ export async function daemon_launch(engine, beforeListen) {
|
|
|
88
131
|
stack: { ...versions_get(), build: buildHash_get() },
|
|
89
132
|
});
|
|
90
133
|
sink_set(new DaemonSink(daemon));
|
|
91
|
-
|
|
92
|
-
// escapes, and local editing reach the surface running the command through
|
|
93
|
-
// the daemon's brokers, without knowing the transport. Nothing ever spawns
|
|
94
|
-
// on the daemon host.
|
|
95
|
-
const surface = {
|
|
96
|
-
capabilities: {
|
|
97
|
-
hiddenInput: true,
|
|
98
|
-
localEdit: true,
|
|
99
|
-
tty: true,
|
|
100
|
-
pipeSegments: true,
|
|
101
|
-
shellCommands: true,
|
|
102
|
-
},
|
|
103
|
-
prompt: (request) => daemon.prompt_current(request.message, request.hidden ?? false),
|
|
104
|
-
pipeSegment: (command, input) => daemon.pipe_current(command, input),
|
|
105
|
-
shellCommand: (command) => daemon.shell_current(command),
|
|
106
|
-
localEdit: (request) => daemon.edit_current(request.content, request.extension),
|
|
107
|
-
};
|
|
108
|
-
surface_set(surface);
|
|
134
|
+
surface_set(daemonSurface_create(daemon));
|
|
109
135
|
const port = await daemon.start();
|
|
110
136
|
const url = `ws://127.0.0.1:${port}`;
|
|
111
137
|
const berth = { identity, url, token };
|
|
@@ -121,5 +147,12 @@ export async function daemon_launch(engine, beforeListen) {
|
|
|
121
147
|
console.log(chalk.gray(` token: ${token}`));
|
|
122
148
|
console.log(chalk.gray(` berth: ${berth_path(identity)}`));
|
|
123
149
|
console.log(chalk.gray(` attach a surface with: chell --remote${attachHint}`));
|
|
150
|
+
if (webRoot !== null) {
|
|
151
|
+
// A wildcard bind has no routable form for a URL; name the machine so
|
|
152
|
+
// the printed address works from another host.
|
|
153
|
+
const displayHost = bindHost === '0.0.0.0' ? hostname() : bindHost;
|
|
154
|
+
console.log(chalk.green(`[+] ARGUS web surface at http://${displayHost}:${port}/?token=${token}`));
|
|
155
|
+
console.log(chalk.gray(` serving: ${webRoot}`));
|
|
156
|
+
}
|
|
124
157
|
}
|
|
125
158
|
//# sourceMappingURL=launch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/daemon/launch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,QAAQ,EAAmB,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAiF,MAAM,eAAe,CAAC;AAC3H,OAAO,EAAE,0BAA0B,EAA6B,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,qBAAqB,EAAc,MAAM,YAAY,CAAC;AAE3I,6EAA6E;AAC7E,MAAM,UAAU;
|
|
1
|
+
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../../src/daemon/launch.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/server.d.ts
CHANGED
|
@@ -36,6 +36,9 @@ export interface EditOutcome {
|
|
|
36
36
|
* which the daemon pushes to surfaces after each command and on attach; each
|
|
37
37
|
* surface renders it with its own theme. Omitted when a host does not push a
|
|
38
38
|
* prompt (e.g. tests).
|
|
39
|
+
* @property webRoot - A directory of static files (the built web surface) the
|
|
40
|
+
* daemon's HTTP side serves alongside the WebSocket contract. Omitted, plain
|
|
41
|
+
* HTTP requests receive 404 and only the WebSocket upgrade is answered.
|
|
39
42
|
*/
|
|
40
43
|
export interface DaemonOptions {
|
|
41
44
|
engine: HostedEngine;
|
|
@@ -46,6 +49,7 @@ export interface DaemonOptions {
|
|
|
46
49
|
promptProvider?: () => PromptContext | Promise<PromptContext>;
|
|
47
50
|
/** The hosting process's versions and build hash, reported on attach. */
|
|
48
51
|
stack?: DaemonStackInfo;
|
|
52
|
+
webRoot?: string;
|
|
49
53
|
}
|
|
50
54
|
/**
|
|
51
55
|
* A WebSocket daemon hosting one engine for attached surfaces, with a session
|
|
@@ -63,7 +67,9 @@ export declare class CalypsoDaemon {
|
|
|
63
67
|
private readonly sessionId;
|
|
64
68
|
private readonly surfaces;
|
|
65
69
|
private readonly scrollback;
|
|
70
|
+
private readonly webRoot;
|
|
66
71
|
private wss;
|
|
72
|
+
private httpServer;
|
|
67
73
|
/**
|
|
68
74
|
* Execution is serialized across the whole session (one foreground command
|
|
69
75
|
* at a time), so a prompt raised mid-command has one unambiguous surface to
|
|
@@ -84,6 +90,11 @@ export declare class CalypsoDaemon {
|
|
|
84
90
|
/**
|
|
85
91
|
* Starts listening.
|
|
86
92
|
*
|
|
93
|
+
* The daemon owns an explicit HTTP server: WebSocket upgrades carry the
|
|
94
|
+
* session contract, and plain requests serve the configured web root (404
|
|
95
|
+
* when none is configured), so one loopback port carries both the wire and
|
|
96
|
+
* the web surface that speaks it.
|
|
97
|
+
*
|
|
87
98
|
* @returns The bound port (useful when an ephemeral port was requested).
|
|
88
99
|
*/
|
|
89
100
|
start(): Promise<number>;
|
|
@@ -93,6 +104,19 @@ export declare class CalypsoDaemon {
|
|
|
93
104
|
* @returns A promise resolving when the server has closed.
|
|
94
105
|
*/
|
|
95
106
|
stop(): Promise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* Serves one ChRIS file's bytes over HTTP: `GET /vfs?path=...&token=...`.
|
|
109
|
+
*
|
|
110
|
+
* The route exists so browser surfaces can render file content natively
|
|
111
|
+
* (an image in a panel) instead of through the terminal stream. It is
|
|
112
|
+
* gated by the same attach token as the wire (compared in constant time)
|
|
113
|
+
* and requires the hosted engine to provide `file_read`; refusals and
|
|
114
|
+
* failures answer 404 so the response does not confirm what exists.
|
|
115
|
+
*
|
|
116
|
+
* @param request - The incoming HTTP request.
|
|
117
|
+
* @param response - The response to write.
|
|
118
|
+
*/
|
|
119
|
+
private vfs_serve;
|
|
96
120
|
/**
|
|
97
121
|
* Handles one surface connection: an attach handshake, then serialized
|
|
98
122
|
* command dispatch, with the surface removed from the bus on close.
|
package/dist/daemon/server.js
CHANGED
|
@@ -25,7 +25,9 @@
|
|
|
25
25
|
* @module
|
|
26
26
|
*/
|
|
27
27
|
import { randomBytes } from 'node:crypto';
|
|
28
|
+
import { createServer } from 'node:http';
|
|
28
29
|
import { WebSocketServer, WebSocket } from 'ws';
|
|
30
|
+
import { staticRequest_handle, contentType_forPath } from './static.js';
|
|
29
31
|
import { token_matches } from './token.js';
|
|
30
32
|
import { RequestBroker } from './broker.js';
|
|
31
33
|
import { CONTRACT_VERSION } from '../protocol/version.js';
|
|
@@ -48,7 +50,9 @@ export class CalypsoDaemon {
|
|
|
48
50
|
sessionId = randomBytes(8).toString('hex');
|
|
49
51
|
surfaces = new Set();
|
|
50
52
|
scrollback = [];
|
|
53
|
+
webRoot;
|
|
51
54
|
wss = null;
|
|
55
|
+
httpServer = null;
|
|
52
56
|
/**
|
|
53
57
|
* Execution is serialized across the whole session (one foreground command
|
|
54
58
|
* at a time), so a prompt raised mid-command has one unambiguous surface to
|
|
@@ -76,19 +80,41 @@ export class CalypsoDaemon {
|
|
|
76
80
|
this.scrollbackSize = options.scrollbackSize ?? SCROLLBACK_DEFAULT;
|
|
77
81
|
this.promptProvider = options.promptProvider;
|
|
78
82
|
this.stack = options.stack;
|
|
83
|
+
this.webRoot = options.webRoot;
|
|
79
84
|
}
|
|
80
85
|
/**
|
|
81
86
|
* Starts listening.
|
|
82
87
|
*
|
|
88
|
+
* The daemon owns an explicit HTTP server: WebSocket upgrades carry the
|
|
89
|
+
* session contract, and plain requests serve the configured web root (404
|
|
90
|
+
* when none is configured), so one loopback port carries both the wire and
|
|
91
|
+
* the web surface that speaks it.
|
|
92
|
+
*
|
|
83
93
|
* @returns The bound port (useful when an ephemeral port was requested).
|
|
84
94
|
*/
|
|
85
95
|
start() {
|
|
86
96
|
return new Promise((resolve, reject) => {
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
97
|
+
const httpServer = createServer((request, response) => {
|
|
98
|
+
const requestPath = (request.url ?? '/').split('?')[0] ?? '/';
|
|
99
|
+
if (requestPath === '/vfs') {
|
|
100
|
+
void this.vfs_serve(request, response);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
if (this.webRoot !== undefined) {
|
|
104
|
+
staticRequest_handle(this.webRoot, request, response);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
response.writeHead(404, { 'content-type': 'text/plain; charset=utf-8' });
|
|
108
|
+
response.end('not found');
|
|
109
|
+
});
|
|
110
|
+
const wss = new WebSocketServer({ server: httpServer });
|
|
90
111
|
wss.on('connection', (socket) => this.connection_handle(socket));
|
|
112
|
+
httpServer.on('error', reject);
|
|
113
|
+
httpServer.listen(this.port, this.host, () => {
|
|
114
|
+
resolve(httpServer.address().port);
|
|
115
|
+
});
|
|
91
116
|
this.wss = wss;
|
|
117
|
+
this.httpServer = httpServer;
|
|
92
118
|
});
|
|
93
119
|
}
|
|
94
120
|
/**
|
|
@@ -98,17 +124,65 @@ export class CalypsoDaemon {
|
|
|
98
124
|
*/
|
|
99
125
|
stop() {
|
|
100
126
|
return new Promise((resolve) => {
|
|
101
|
-
if (!this.wss) {
|
|
127
|
+
if (!this.wss || !this.httpServer) {
|
|
102
128
|
resolve();
|
|
103
129
|
return;
|
|
104
130
|
}
|
|
105
131
|
for (const client of this.wss.clients) {
|
|
106
132
|
client.terminate();
|
|
107
133
|
}
|
|
108
|
-
this.
|
|
134
|
+
const httpServer = this.httpServer;
|
|
135
|
+
this.wss.close(() => {
|
|
136
|
+
httpServer.close(() => resolve());
|
|
137
|
+
});
|
|
109
138
|
this.wss = null;
|
|
139
|
+
this.httpServer = null;
|
|
110
140
|
});
|
|
111
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Serves one ChRIS file's bytes over HTTP: `GET /vfs?path=...&token=...`.
|
|
144
|
+
*
|
|
145
|
+
* The route exists so browser surfaces can render file content natively
|
|
146
|
+
* (an image in a panel) instead of through the terminal stream. It is
|
|
147
|
+
* gated by the same attach token as the wire (compared in constant time)
|
|
148
|
+
* and requires the hosted engine to provide `file_read`; refusals and
|
|
149
|
+
* failures answer 404 so the response does not confirm what exists.
|
|
150
|
+
*
|
|
151
|
+
* @param request - The incoming HTTP request.
|
|
152
|
+
* @param response - The response to write.
|
|
153
|
+
*/
|
|
154
|
+
async vfs_serve(request, response) {
|
|
155
|
+
const refuse = (status, message) => {
|
|
156
|
+
response.writeHead(status, { 'content-type': 'text/plain; charset=utf-8' });
|
|
157
|
+
response.end(message);
|
|
158
|
+
};
|
|
159
|
+
if (request.method !== 'GET' && request.method !== 'HEAD') {
|
|
160
|
+
refuse(405, 'method not allowed');
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const query = new URL(request.url ?? '/', 'http://localhost').searchParams;
|
|
164
|
+
if (!token_matches(this.token, query.get('token') ?? '')) {
|
|
165
|
+
refuse(404, 'not found');
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
const filePath = query.get('path');
|
|
169
|
+
const read = this.engine.file_read?.bind(this.engine);
|
|
170
|
+
if (filePath === null || filePath.length === 0 || read === undefined) {
|
|
171
|
+
refuse(404, 'not found');
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
try {
|
|
175
|
+
const bytes = await read(filePath);
|
|
176
|
+
response.writeHead(200, {
|
|
177
|
+
'content-type': contentType_forPath(filePath),
|
|
178
|
+
'content-length': bytes.length,
|
|
179
|
+
});
|
|
180
|
+
response.end(request.method === 'HEAD' ? undefined : bytes);
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
refuse(404, 'not found');
|
|
184
|
+
}
|
|
185
|
+
}
|
|
112
186
|
/**
|
|
113
187
|
* Handles one surface connection: an attach handshake, then serialized
|
|
114
188
|
* command dispatch, with the surface removed from the bus on close.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/daemon/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
/**
|
|
3
|
+
* Resolves the content type a path's extension implies.
|
|
4
|
+
*
|
|
5
|
+
* @param filePath - The path whose extension to inspect.
|
|
6
|
+
* @returns The content type; a binary octet-stream when unrecognized.
|
|
7
|
+
*/
|
|
8
|
+
export declare function contentType_forPath(filePath: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Picks the first candidate directory that holds a servable web bundle.
|
|
11
|
+
*
|
|
12
|
+
* A candidate qualifies when it exists and contains an `index.html`; the
|
|
13
|
+
* marker distinguishes a built bundle from an arbitrary directory, so the
|
|
14
|
+
* daemon never serves a tree that merely happens to exist.
|
|
15
|
+
*
|
|
16
|
+
* @param candidates - Directories to probe, in preference order. Empty or
|
|
17
|
+
* undefined entries are skipped.
|
|
18
|
+
* @returns The absolute path of the first qualifying candidate, or null when
|
|
19
|
+
* none qualifies.
|
|
20
|
+
*/
|
|
21
|
+
export declare function webRoot_resolve(candidates: Array<string | undefined>): string | null;
|
|
22
|
+
/**
|
|
23
|
+
* Answers one plain HTTP request from the web root.
|
|
24
|
+
*
|
|
25
|
+
* Resolution: the URL path is decoded, stripped of its query, and joined to
|
|
26
|
+
* the root; `/` serves `index.html`. A resolved path escaping the root (via
|
|
27
|
+
* `..` or an absolute segment) is refused with 404 rather than 403, so the
|
|
28
|
+
* response does not confirm what exists outside the root. Methods other than
|
|
29
|
+
* GET and HEAD receive 405.
|
|
30
|
+
*
|
|
31
|
+
* @param root - The absolute web root directory to serve from.
|
|
32
|
+
* @param request - The incoming HTTP request.
|
|
33
|
+
* @param response - The response to write.
|
|
34
|
+
*/
|
|
35
|
+
export declare function staticRequest_handle(root: string, request: IncomingMessage, response: ServerResponse): void;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Static file serving for the daemon's HTTP side.
|
|
3
|
+
*
|
|
4
|
+
* The daemon's WebSocket contract rides an HTTP server; this module gives
|
|
5
|
+
* that server something to say to a plain GET. When the host configures a
|
|
6
|
+
* web root (the built argus bundle), the daemon serves it, so opening the
|
|
7
|
+
* daemon's URL in a browser yields the web surface with zero extra install.
|
|
8
|
+
* Serving is deliberately minimal: GET and HEAD only, no directory listings,
|
|
9
|
+
* no caching headers, and every resolved path is contained within the root.
|
|
10
|
+
* The daemon binds loopback only, so this is an operator-local convenience,
|
|
11
|
+
* not a hosting story.
|
|
12
|
+
*
|
|
13
|
+
* @module
|
|
14
|
+
*/
|
|
15
|
+
import { createReadStream, existsSync, statSync } from 'node:fs';
|
|
16
|
+
import * as path from 'node:path';
|
|
17
|
+
/** Content types for web-bundle assets and the file kinds `/vfs` serves. */
|
|
18
|
+
const CONTENT_TYPES = {
|
|
19
|
+
'.html': 'text/html; charset=utf-8',
|
|
20
|
+
'.js': 'text/javascript; charset=utf-8',
|
|
21
|
+
'.mjs': 'text/javascript; charset=utf-8',
|
|
22
|
+
'.css': 'text/css; charset=utf-8',
|
|
23
|
+
'.json': 'application/json; charset=utf-8',
|
|
24
|
+
'.map': 'application/json; charset=utf-8',
|
|
25
|
+
'.svg': 'image/svg+xml',
|
|
26
|
+
'.png': 'image/png',
|
|
27
|
+
'.jpg': 'image/jpeg',
|
|
28
|
+
'.jpeg': 'image/jpeg',
|
|
29
|
+
'.gif': 'image/gif',
|
|
30
|
+
'.webp': 'image/webp',
|
|
31
|
+
'.bmp': 'image/bmp',
|
|
32
|
+
'.ico': 'image/x-icon',
|
|
33
|
+
'.pdf': 'application/pdf',
|
|
34
|
+
'.ttf': 'font/ttf',
|
|
35
|
+
'.woff': 'font/woff',
|
|
36
|
+
'.woff2': 'font/woff2',
|
|
37
|
+
'.txt': 'text/plain; charset=utf-8',
|
|
38
|
+
'.wasm': 'application/wasm',
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Resolves the content type a path's extension implies.
|
|
42
|
+
*
|
|
43
|
+
* @param filePath - The path whose extension to inspect.
|
|
44
|
+
* @returns The content type; a binary octet-stream when unrecognized.
|
|
45
|
+
*/
|
|
46
|
+
export function contentType_forPath(filePath) {
|
|
47
|
+
return CONTENT_TYPES[path.extname(filePath).toLowerCase()] ?? 'application/octet-stream';
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Picks the first candidate directory that holds a servable web bundle.
|
|
51
|
+
*
|
|
52
|
+
* A candidate qualifies when it exists and contains an `index.html`; the
|
|
53
|
+
* marker distinguishes a built bundle from an arbitrary directory, so the
|
|
54
|
+
* daemon never serves a tree that merely happens to exist.
|
|
55
|
+
*
|
|
56
|
+
* @param candidates - Directories to probe, in preference order. Empty or
|
|
57
|
+
* undefined entries are skipped.
|
|
58
|
+
* @returns The absolute path of the first qualifying candidate, or null when
|
|
59
|
+
* none qualifies.
|
|
60
|
+
*/
|
|
61
|
+
export function webRoot_resolve(candidates) {
|
|
62
|
+
for (const candidate of candidates) {
|
|
63
|
+
if (!candidate) {
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
const resolved = path.resolve(candidate);
|
|
67
|
+
if (existsSync(path.join(resolved, 'index.html'))) {
|
|
68
|
+
return resolved;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Answers one plain HTTP request from the web root.
|
|
75
|
+
*
|
|
76
|
+
* Resolution: the URL path is decoded, stripped of its query, and joined to
|
|
77
|
+
* the root; `/` serves `index.html`. A resolved path escaping the root (via
|
|
78
|
+
* `..` or an absolute segment) is refused with 404 rather than 403, so the
|
|
79
|
+
* response does not confirm what exists outside the root. Methods other than
|
|
80
|
+
* GET and HEAD receive 405.
|
|
81
|
+
*
|
|
82
|
+
* @param root - The absolute web root directory to serve from.
|
|
83
|
+
* @param request - The incoming HTTP request.
|
|
84
|
+
* @param response - The response to write.
|
|
85
|
+
*/
|
|
86
|
+
export function staticRequest_handle(root, request, response) {
|
|
87
|
+
if (request.method !== 'GET' && request.method !== 'HEAD') {
|
|
88
|
+
response.writeHead(405, { 'content-type': 'text/plain; charset=utf-8' });
|
|
89
|
+
response.end('method not allowed');
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
let decodedPath;
|
|
93
|
+
try {
|
|
94
|
+
decodedPath = decodeURIComponent((request.url ?? '/').split('?')[0]);
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
notFound_send(response);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (decodedPath.includes('\0')) {
|
|
101
|
+
notFound_send(response);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const relativePath = decodedPath === '/' ? 'index.html' : decodedPath.replace(/^\/+/, '');
|
|
105
|
+
const resolvedPath = path.resolve(root, relativePath);
|
|
106
|
+
if (resolvedPath !== root && !resolvedPath.startsWith(root + path.sep)) {
|
|
107
|
+
notFound_send(response);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (!existsSync(resolvedPath) || !statSync(resolvedPath).isFile()) {
|
|
111
|
+
notFound_send(response);
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
response.writeHead(200, { 'content-type': contentType_forPath(resolvedPath) });
|
|
115
|
+
if (request.method === 'HEAD') {
|
|
116
|
+
response.end();
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const stream = createReadStream(resolvedPath);
|
|
120
|
+
stream.on('error', () => {
|
|
121
|
+
// The file vanished between stat and read; the socket gets a clean end.
|
|
122
|
+
response.destroy();
|
|
123
|
+
});
|
|
124
|
+
stream.pipe(response);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Writes a plain 404.
|
|
128
|
+
*
|
|
129
|
+
* @param response - The response to write.
|
|
130
|
+
*/
|
|
131
|
+
function notFound_send(response) {
|
|
132
|
+
response.writeHead(404, { 'content-type': 'text/plain; charset=utf-8' });
|
|
133
|
+
response.end('not found');
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=static.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static.js","sourceRoot":"","sources":["../../src/daemon/static.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -18,6 +18,6 @@ export { type HostedEngine, type CompletionResult } from './daemon/engine.js';
|
|
|
18
18
|
export { token_generate, token_writeFile, token_matches } from './daemon/token.js';
|
|
19
19
|
export { CalypsoDaemon, type DaemonOptions, type EditOutcome } from './daemon/server.js';
|
|
20
20
|
export { RequestBroker } from './daemon/broker.js';
|
|
21
|
-
export { daemon_launch } from './daemon/launch.js';
|
|
21
|
+
export { daemon_launch, daemonSurface_create, DaemonSink } from './daemon/launch.js';
|
|
22
22
|
export { discovery_read, discovery_write, discovery_path, type Discovery } from './daemon/discovery.js';
|
|
23
23
|
export { identity_normalise, identity_forSession, DISCONNECTED_IDENTITY, berthKey_compute, berthDir_path, berth_path, berth_write, berth_read, berthAll_read, berth_remove, berthUrl_isAlive, LocalBerthResolver, type Berth, type BerthResolver, type BerthLivenessProbe, } from './daemon/berth.js';
|
package/dist/index.js
CHANGED
|
@@ -17,7 +17,7 @@ export { clientMessage_parse, serverMessage_parse, clientMessage_fromJson, attac
|
|
|
17
17
|
export { token_generate, token_writeFile, token_matches } from './daemon/token.js';
|
|
18
18
|
export { CalypsoDaemon } from './daemon/server.js';
|
|
19
19
|
export { RequestBroker } from './daemon/broker.js';
|
|
20
|
-
export { daemon_launch } from './daemon/launch.js';
|
|
20
|
+
export { daemon_launch, daemonSurface_create, DaemonSink } from './daemon/launch.js';
|
|
21
21
|
export { discovery_read, discovery_write, discovery_path } from './daemon/discovery.js';
|
|
22
22
|
export { identity_normalise, identity_forSession, DISCONNECTED_IDENTITY, berthKey_compute, berthDir_path, berth_path, berth_write, berth_read, berthAll_read, berth_remove, berthUrl_isAlive, LocalBerthResolver, } from './daemon/berth.js';
|
|
23
23
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,GAEtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,GAIpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,GAEb,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAwC,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,GAEtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,GAIpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,GAEb,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAwC,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAkB,MAAM,uBAAuB,CAAC;AACxG,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,GAInB,MAAM,mBAAmB,CAAC"}
|
|
@@ -96,7 +96,7 @@ export declare const commandEnvelopeSchema: z.ZodObject<{
|
|
|
96
96
|
executed?: string | undefined;
|
|
97
97
|
}>>;
|
|
98
98
|
}, "strip", z.ZodTypeAny, {
|
|
99
|
-
status: "
|
|
99
|
+
status: "error" | "ok";
|
|
100
100
|
rendered: string;
|
|
101
101
|
renderedErr?: string | undefined;
|
|
102
102
|
model?: {
|
|
@@ -114,7 +114,7 @@ export declare const commandEnvelopeSchema: z.ZodObject<{
|
|
|
114
114
|
executed?: string | undefined;
|
|
115
115
|
} | undefined;
|
|
116
116
|
}, {
|
|
117
|
-
status: "
|
|
117
|
+
status: "error" | "ok";
|
|
118
118
|
rendered: string;
|
|
119
119
|
renderedErr?: string | undefined;
|
|
120
120
|
model?: {
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file The browser-safe protocol surface of the wire contract.
|
|
3
|
+
*
|
|
4
|
+
* This barrel exports only the protocol subtree: message schemas, envelope
|
|
5
|
+
* schema, boundary validation, and the contract version. Nothing here touches
|
|
6
|
+
* `ws`, Node builtins, or the daemon host, so a browser surface (argus) can
|
|
7
|
+
* import the published contract through the `@fnndsc/calypso/protocol`
|
|
8
|
+
* subpath without dragging server-side dependencies into its bundle. The main
|
|
9
|
+
* package index remains the daemon-side entry point.
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
export { CONTRACT_VERSION, version_isCompatible } from './version.js';
|
|
14
|
+
export { commandEnvelopeSchema, envelopeModelSchema, envelopeStatusSchema, stackMessageSchema, resolutionTraceSchema, type WireEnvelope, } from './envelope.js';
|
|
15
|
+
export { attachMessageSchema, executeMessageSchema, completeRequestSchema, cancelMessageSchema, clientMessageSchema, serverMessageSchema, attachedMessageSchema, resultMessageSchema, sessionMessageSchema, outputMessageSchema, progressMessageSchema, promptLineMessageSchema, promptContextSchema, errorMessageSchema, type ClientMessage, type ServerMessage, type PromptContext, type ProgressEvent, } from './messages.js';
|
|
16
|
+
export { clientMessage_parse, serverMessage_parse, attach_parse, type ParseResult, } from './validate.js';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file The browser-safe protocol surface of the wire contract.
|
|
3
|
+
*
|
|
4
|
+
* This barrel exports only the protocol subtree: message schemas, envelope
|
|
5
|
+
* schema, boundary validation, and the contract version. Nothing here touches
|
|
6
|
+
* `ws`, Node builtins, or the daemon host, so a browser surface (argus) can
|
|
7
|
+
* import the published contract through the `@fnndsc/calypso/protocol`
|
|
8
|
+
* subpath without dragging server-side dependencies into its bundle. The main
|
|
9
|
+
* package index remains the daemon-side entry point.
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
export { CONTRACT_VERSION, version_isCompatible } from './version.js';
|
|
14
|
+
export { commandEnvelopeSchema, envelopeModelSchema, envelopeStatusSchema, stackMessageSchema, resolutionTraceSchema, } from './envelope.js';
|
|
15
|
+
export { attachMessageSchema, executeMessageSchema, completeRequestSchema, cancelMessageSchema, clientMessageSchema, serverMessageSchema, attachedMessageSchema, resultMessageSchema, sessionMessageSchema, outputMessageSchema, progressMessageSchema, promptLineMessageSchema, promptContextSchema, errorMessageSchema, } from './messages.js';
|
|
16
|
+
export { clientMessage_parse, serverMessage_parse, attach_parse, } from './validate.js';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/protocol/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,GAEtB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,GAKnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,YAAY,GAEb,MAAM,eAAe,CAAC"}
|
|
@@ -490,7 +490,7 @@ export declare const resultMessageSchema: z.ZodObject<{
|
|
|
490
490
|
executed?: string | undefined;
|
|
491
491
|
}>>;
|
|
492
492
|
}, "strip", z.ZodTypeAny, {
|
|
493
|
-
status: "
|
|
493
|
+
status: "error" | "ok";
|
|
494
494
|
rendered: string;
|
|
495
495
|
renderedErr?: string | undefined;
|
|
496
496
|
model?: {
|
|
@@ -508,7 +508,7 @@ export declare const resultMessageSchema: z.ZodObject<{
|
|
|
508
508
|
executed?: string | undefined;
|
|
509
509
|
} | undefined;
|
|
510
510
|
}, {
|
|
511
|
-
status: "
|
|
511
|
+
status: "error" | "ok";
|
|
512
512
|
rendered: string;
|
|
513
513
|
renderedErr?: string | undefined;
|
|
514
514
|
model?: {
|
|
@@ -530,7 +530,7 @@ export declare const resultMessageSchema: z.ZodObject<{
|
|
|
530
530
|
type: "result";
|
|
531
531
|
id: string;
|
|
532
532
|
envelopes: {
|
|
533
|
-
status: "
|
|
533
|
+
status: "error" | "ok";
|
|
534
534
|
rendered: string;
|
|
535
535
|
renderedErr?: string | undefined;
|
|
536
536
|
model?: {
|
|
@@ -552,7 +552,7 @@ export declare const resultMessageSchema: z.ZodObject<{
|
|
|
552
552
|
type: "result";
|
|
553
553
|
id: string;
|
|
554
554
|
envelopes: {
|
|
555
|
-
status: "
|
|
555
|
+
status: "error" | "ok";
|
|
556
556
|
rendered: string;
|
|
557
557
|
renderedErr?: string | undefined;
|
|
558
558
|
model?: {
|
|
@@ -597,12 +597,12 @@ export declare const outputMessageSchema: z.ZodObject<{
|
|
|
597
597
|
}, "strip", z.ZodTypeAny, {
|
|
598
598
|
type: "output";
|
|
599
599
|
id: string;
|
|
600
|
-
channel: "
|
|
600
|
+
channel: "data" | "status" | "err";
|
|
601
601
|
chunk: string;
|
|
602
602
|
}, {
|
|
603
603
|
type: "output";
|
|
604
604
|
id: string;
|
|
605
|
-
channel: "
|
|
605
|
+
channel: "data" | "status" | "err";
|
|
606
606
|
chunk: string;
|
|
607
607
|
}>;
|
|
608
608
|
/** The operation producing structured progress. */
|
|
@@ -703,7 +703,7 @@ export declare const sessionMessageSchema: z.ZodObject<{
|
|
|
703
703
|
executed?: string | undefined;
|
|
704
704
|
}>>;
|
|
705
705
|
}, "strip", z.ZodTypeAny, {
|
|
706
|
-
status: "
|
|
706
|
+
status: "error" | "ok";
|
|
707
707
|
rendered: string;
|
|
708
708
|
renderedErr?: string | undefined;
|
|
709
709
|
model?: {
|
|
@@ -721,7 +721,7 @@ export declare const sessionMessageSchema: z.ZodObject<{
|
|
|
721
721
|
executed?: string | undefined;
|
|
722
722
|
} | undefined;
|
|
723
723
|
}, {
|
|
724
|
-
status: "
|
|
724
|
+
status: "error" | "ok";
|
|
725
725
|
rendered: string;
|
|
726
726
|
renderedErr?: string | undefined;
|
|
727
727
|
model?: {
|
|
@@ -743,7 +743,7 @@ export declare const sessionMessageSchema: z.ZodObject<{
|
|
|
743
743
|
type: "session";
|
|
744
744
|
surface: string;
|
|
745
745
|
envelope: {
|
|
746
|
-
status: "
|
|
746
|
+
status: "error" | "ok";
|
|
747
747
|
rendered: string;
|
|
748
748
|
renderedErr?: string | undefined;
|
|
749
749
|
model?: {
|
|
@@ -765,7 +765,7 @@ export declare const sessionMessageSchema: z.ZodObject<{
|
|
|
765
765
|
type: "session";
|
|
766
766
|
surface: string;
|
|
767
767
|
envelope: {
|
|
768
|
-
status: "
|
|
768
|
+
status: "error" | "ok";
|
|
769
769
|
rendered: string;
|
|
770
770
|
renderedErr?: string | undefined;
|
|
771
771
|
model?: {
|
|
@@ -1132,7 +1132,7 @@ export declare const serverMessageSchema: z.ZodDiscriminatedUnion<"type", [z.Zod
|
|
|
1132
1132
|
executed?: string | undefined;
|
|
1133
1133
|
}>>;
|
|
1134
1134
|
}, "strip", z.ZodTypeAny, {
|
|
1135
|
-
status: "
|
|
1135
|
+
status: "error" | "ok";
|
|
1136
1136
|
rendered: string;
|
|
1137
1137
|
renderedErr?: string | undefined;
|
|
1138
1138
|
model?: {
|
|
@@ -1150,7 +1150,7 @@ export declare const serverMessageSchema: z.ZodDiscriminatedUnion<"type", [z.Zod
|
|
|
1150
1150
|
executed?: string | undefined;
|
|
1151
1151
|
} | undefined;
|
|
1152
1152
|
}, {
|
|
1153
|
-
status: "
|
|
1153
|
+
status: "error" | "ok";
|
|
1154
1154
|
rendered: string;
|
|
1155
1155
|
renderedErr?: string | undefined;
|
|
1156
1156
|
model?: {
|
|
@@ -1172,7 +1172,7 @@ export declare const serverMessageSchema: z.ZodDiscriminatedUnion<"type", [z.Zod
|
|
|
1172
1172
|
type: "result";
|
|
1173
1173
|
id: string;
|
|
1174
1174
|
envelopes: {
|
|
1175
|
-
status: "
|
|
1175
|
+
status: "error" | "ok";
|
|
1176
1176
|
rendered: string;
|
|
1177
1177
|
renderedErr?: string | undefined;
|
|
1178
1178
|
model?: {
|
|
@@ -1194,7 +1194,7 @@ export declare const serverMessageSchema: z.ZodDiscriminatedUnion<"type", [z.Zod
|
|
|
1194
1194
|
type: "result";
|
|
1195
1195
|
id: string;
|
|
1196
1196
|
envelopes: {
|
|
1197
|
-
status: "
|
|
1197
|
+
status: "error" | "ok";
|
|
1198
1198
|
rendered: string;
|
|
1199
1199
|
renderedErr?: string | undefined;
|
|
1200
1200
|
model?: {
|
|
@@ -1235,12 +1235,12 @@ export declare const serverMessageSchema: z.ZodDiscriminatedUnion<"type", [z.Zod
|
|
|
1235
1235
|
}, "strip", z.ZodTypeAny, {
|
|
1236
1236
|
type: "output";
|
|
1237
1237
|
id: string;
|
|
1238
|
-
channel: "
|
|
1238
|
+
channel: "data" | "status" | "err";
|
|
1239
1239
|
chunk: string;
|
|
1240
1240
|
}, {
|
|
1241
1241
|
type: "output";
|
|
1242
1242
|
id: string;
|
|
1243
|
-
channel: "
|
|
1243
|
+
channel: "data" | "status" | "err";
|
|
1244
1244
|
chunk: string;
|
|
1245
1245
|
}>, z.ZodObject<{
|
|
1246
1246
|
type: z.ZodLiteral<"progress">;
|
|
@@ -1325,7 +1325,7 @@ export declare const serverMessageSchema: z.ZodDiscriminatedUnion<"type", [z.Zod
|
|
|
1325
1325
|
executed?: string | undefined;
|
|
1326
1326
|
}>>;
|
|
1327
1327
|
}, "strip", z.ZodTypeAny, {
|
|
1328
|
-
status: "
|
|
1328
|
+
status: "error" | "ok";
|
|
1329
1329
|
rendered: string;
|
|
1330
1330
|
renderedErr?: string | undefined;
|
|
1331
1331
|
model?: {
|
|
@@ -1343,7 +1343,7 @@ export declare const serverMessageSchema: z.ZodDiscriminatedUnion<"type", [z.Zod
|
|
|
1343
1343
|
executed?: string | undefined;
|
|
1344
1344
|
} | undefined;
|
|
1345
1345
|
}, {
|
|
1346
|
-
status: "
|
|
1346
|
+
status: "error" | "ok";
|
|
1347
1347
|
rendered: string;
|
|
1348
1348
|
renderedErr?: string | undefined;
|
|
1349
1349
|
model?: {
|
|
@@ -1365,7 +1365,7 @@ export declare const serverMessageSchema: z.ZodDiscriminatedUnion<"type", [z.Zod
|
|
|
1365
1365
|
type: "session";
|
|
1366
1366
|
surface: string;
|
|
1367
1367
|
envelope: {
|
|
1368
|
-
status: "
|
|
1368
|
+
status: "error" | "ok";
|
|
1369
1369
|
rendered: string;
|
|
1370
1370
|
renderedErr?: string | undefined;
|
|
1371
1371
|
model?: {
|
|
@@ -1387,7 +1387,7 @@ export declare const serverMessageSchema: z.ZodDiscriminatedUnion<"type", [z.Zod
|
|
|
1387
1387
|
type: "session";
|
|
1388
1388
|
surface: string;
|
|
1389
1389
|
envelope: {
|
|
1390
|
-
status: "
|
|
1390
|
+
status: "error" | "ok";
|
|
1391
1391
|
rendered: string;
|
|
1392
1392
|
renderedErr?: string | undefined;
|
|
1393
1393
|
model?: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fnndsc/calypso",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "The CALYPSO wire contract: typed protocol schemas and boundary validation for the ChRIS session daemon",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -26,6 +26,10 @@
|
|
|
26
26
|
"import": "./dist/index.js",
|
|
27
27
|
"types": "./dist/index.d.ts"
|
|
28
28
|
},
|
|
29
|
+
"./protocol": {
|
|
30
|
+
"import": "./dist/protocol/index.js",
|
|
31
|
+
"types": "./dist/protocol/index.d.ts"
|
|
32
|
+
},
|
|
29
33
|
"./package.json": "./package.json"
|
|
30
34
|
},
|
|
31
35
|
"scripts": {
|
|
@@ -51,8 +55,8 @@
|
|
|
51
55
|
"typescript": "^5.0.0"
|
|
52
56
|
},
|
|
53
57
|
"dependencies": {
|
|
54
|
-
"@fnndsc/brasa": "^0.
|
|
55
|
-
"@fnndsc/cumin": "^3.
|
|
58
|
+
"@fnndsc/brasa": "^0.12.0",
|
|
59
|
+
"@fnndsc/cumin": "^3.11.0",
|
|
56
60
|
"chalk": "^4.1.2",
|
|
57
61
|
"ws": "^8.18.0",
|
|
58
62
|
"zod": "^3.23.8"
|