@av-pi-studio/server 0.0.56 → 0.0.57
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/.tsbuildinfo +1 -1
- package/dist/files/download-token-store.d.ts.map +1 -1
- package/dist/files/download-token-store.js +1 -1
- package/dist/files/download-token-store.js.map +1 -1
- package/dist/files/file-transfer.d.ts +7 -2
- package/dist/files/file-transfer.d.ts.map +1 -1
- package/dist/files/file-transfer.js +24 -5
- package/dist/files/file-transfer.js.map +1 -1
- package/dist/terminal/terminal-manager.d.ts +10 -2
- package/dist/terminal/terminal-manager.d.ts.map +1 -1
- package/dist/terminal/terminal-manager.js +31 -6
- package/dist/terminal/terminal-manager.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download-token-store.d.ts","sourceRoot":"","sources":["../../src/files/download-token-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"download-token-store.d.ts","sourceRoot":"","sources":["../../src/files/download-token-store.ts"],"names":[],"mappings":"AA+BA,qBAAa,kBAAkB;IAI3B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAJtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IAEtD,YACmB,KAAK,SAAc,EACnB,GAAG,GAAE,MAAM,MAAyB,EACrD,SAAS,SAAS,EAGnB;IAED,2CAA2C;IAC3C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAKxD;IAED,6FAA6F;IAC7F,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUpC;CACF"}
|
|
@@ -4,7 +4,7 @@ export class DownloadTokenStore {
|
|
|
4
4
|
ttlMs;
|
|
5
5
|
now;
|
|
6
6
|
tokens;
|
|
7
|
-
constructor(ttlMs = 60_000, now = () => Date.now(), maxTokens = 10_000) {
|
|
7
|
+
constructor(ttlMs = 10 * 60_000, now = () => Date.now(), maxTokens = 10_000) {
|
|
8
8
|
this.ttlMs = ttlMs;
|
|
9
9
|
this.now = now;
|
|
10
10
|
this.tokens = new LRUCache({ max: maxTokens });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download-token-store.js","sourceRoot":"","sources":["../../src/files/download-token-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"download-token-store.js","sourceRoot":"","sources":["../../src/files/download-token-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AA6BrC,MAAM,OAAO,kBAAkB;IAIV,KAAK;IACL,GAAG;IAJL,MAAM,CAA+B;IAEtD,YACmB,KAAK,GAAG,EAAE,GAAG,MAAM,EACnB,GAAG,GAAiB,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,EACrD,SAAS,GAAG,MAAM;qBAFD,KAAK;mBACL,GAAG;QAGpB,IAAI,CAAC,MAAM,GAAG,IAAI,QAAQ,CAAqB,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,2CAA2C;IAC3C,KAAK,CAAC,IAAY;QAChB,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACzD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC9B,CAAC;IAED,6FAA6F;IAC7F,OAAO,CAAC,KAAa;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa;QACxC,OAAO,KAAK,CAAC,IAAI,CAAC;IACpB,CAAC;CACF"}
|
|
@@ -7,13 +7,18 @@ export interface FileTransferDeps {
|
|
|
7
7
|
export declare class FileTransferService {
|
|
8
8
|
readonly tokenStore: DownloadTokenStore;
|
|
9
9
|
private readonly chunkBytes;
|
|
10
|
-
/** Pending uploads keyed by stream
|
|
10
|
+
/** Pending uploads keyed by stream id. */
|
|
11
11
|
private readonly uploads;
|
|
12
|
-
|
|
12
|
+
/** Rotating hand-out point in the one-byte stream id space (see `nextFreeSlot`). */
|
|
13
|
+
private streamCursor;
|
|
13
14
|
constructor(deps?: FileTransferDeps);
|
|
14
15
|
/** Issue a download token for a resolved path (also used by the file explorer for binary files). */
|
|
15
16
|
issueDownloadToken: (resolvedPath: string) => string;
|
|
16
17
|
registerHandlers(registry: HandlerRegistry): void;
|
|
18
|
+
/** Hand out the next stream id for a transfer this service does not track (a download the
|
|
19
|
+
* client didn't number itself). Rotates through the one-byte space instead of counting past
|
|
20
|
+
* 255, which `encodeFileTransferFrame` rejects outright. */
|
|
21
|
+
private takeStream;
|
|
17
22
|
/**
|
|
18
23
|
* Validate + consume the token, then stream the file as `Begin → Chunk* → End` binary frames.
|
|
19
24
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-transfer.d.ts","sourceRoot":"","sources":["../../src/files/file-transfer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file-transfer.d.ts","sourceRoot":"","sources":["../../src/files/file-transfer.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAY/D,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAWD,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAC5D,oFAAoF;IACpF,OAAO,CAAC,YAAY,CAAK;IAEzB,YAAY,IAAI,GAAE,gBAAqB,EAGtC;IAED,oGAAoG;IACpG,kBAAkB,iBAAkB,MAAM,KAAG,MAAM,CAA8C;IAEjG,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAiDhD;IAED;;iEAE6D;IAC7D,OAAO,CAAC,UAAU;IAMlB;;OAEG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAChC,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CA2B/D;IAED;oFACgF;IAChF,aAAa,IAAI,aAAa,CAQ7B;YAEa,iBAAiB;CA6BhC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createReadStream } from "node:fs";
|
|
2
2
|
import { mkdir, open, realpath } from "node:fs/promises";
|
|
3
3
|
import { basename, dirname } from "node:path";
|
|
4
|
-
import { encodeFileTransferFrame, tryDecodeFileTransferFrame, } from "@av-pi-studio/protocol";
|
|
4
|
+
import { encodeFileTransferFrame, nextFreeSlot, SLOT_SPACE, tryDecodeFileTransferFrame, } from "@av-pi-studio/protocol";
|
|
5
5
|
import { DownloadTokenStore } from "./download-token-store.js";
|
|
6
6
|
import { mimeHintForFile } from "./file-explorer.js";
|
|
7
7
|
import { expandHome } from "./resolve-path.js";
|
|
@@ -14,9 +14,10 @@ const DEFAULT_CHUNK_BYTES = 32 * 1024;
|
|
|
14
14
|
export class FileTransferService {
|
|
15
15
|
tokenStore;
|
|
16
16
|
chunkBytes;
|
|
17
|
-
/** Pending uploads keyed by stream
|
|
17
|
+
/** Pending uploads keyed by stream id. */
|
|
18
18
|
uploads = new Map();
|
|
19
|
-
|
|
19
|
+
/** Rotating hand-out point in the one-byte stream id space (see `nextFreeSlot`). */
|
|
20
|
+
streamCursor = 1;
|
|
20
21
|
constructor(deps = {}) {
|
|
21
22
|
this.tokenStore = deps.tokenStore ?? new DownloadTokenStore();
|
|
22
23
|
this.chunkBytes = deps.chunkBytes ?? DEFAULT_CHUNK_BYTES;
|
|
@@ -38,7 +39,13 @@ export class FileTransferService {
|
|
|
38
39
|
});
|
|
39
40
|
registry.register("file_download_request", async (ctx) => {
|
|
40
41
|
const token = String(ctx.message.token ?? "");
|
|
41
|
-
const stream =
|
|
42
|
+
const stream = ctx.message.stream === undefined ? this.takeStream() : Number(ctx.message.stream);
|
|
43
|
+
// Range-checked BEFORE the token is consumed: an out-of-range stream used to burn the
|
|
44
|
+
// single-use token and only then throw out of `encodeFileTransferFrame`, leaving the
|
|
45
|
+
// client's retry nothing to redeem.
|
|
46
|
+
if (!Number.isInteger(stream) || stream < 0 || stream >= SLOT_SPACE) {
|
|
47
|
+
return { type: "file_download_response", stream, ok: false, error: "invalid_stream" };
|
|
48
|
+
}
|
|
42
49
|
const result = await this.startDownload(token, stream, (frame) => ctx.session.sendBinary(frame));
|
|
43
50
|
return { type: "file_download_response", stream, ...result };
|
|
44
51
|
});
|
|
@@ -48,7 +55,11 @@ export class FileTransferService {
|
|
|
48
55
|
if (!targetPath || !transferId) {
|
|
49
56
|
return { type: "file_upload_response", ok: false, error: "missing_fields" };
|
|
50
57
|
}
|
|
51
|
-
const stream = this.
|
|
58
|
+
const stream = nextFreeSlot(this.uploads, this.streamCursor);
|
|
59
|
+
if (stream === null) {
|
|
60
|
+
return { type: "file_upload_response", ok: false, error: "no_free_stream" };
|
|
61
|
+
}
|
|
62
|
+
this.streamCursor = (stream + 1) % SLOT_SPACE;
|
|
52
63
|
this.uploads.set(stream, {
|
|
53
64
|
transferId,
|
|
54
65
|
targetPath,
|
|
@@ -59,6 +70,14 @@ export class FileTransferService {
|
|
|
59
70
|
return { type: "file_upload_response", ok: true, stream };
|
|
60
71
|
});
|
|
61
72
|
}
|
|
73
|
+
/** Hand out the next stream id for a transfer this service does not track (a download the
|
|
74
|
+
* client didn't number itself). Rotates through the one-byte space instead of counting past
|
|
75
|
+
* 255, which `encodeFileTransferFrame` rejects outright. */
|
|
76
|
+
takeStream() {
|
|
77
|
+
const stream = this.streamCursor;
|
|
78
|
+
this.streamCursor = (stream + 1) % SLOT_SPACE;
|
|
79
|
+
return stream;
|
|
80
|
+
}
|
|
62
81
|
/**
|
|
63
82
|
* Validate + consume the token, then stream the file as `Begin → Chunk* → End` binary frames.
|
|
64
83
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-transfer.js","sourceRoot":"","sources":["../../src/files/file-transfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE9C,OAAO,EACL,uBAAuB,EAEvB,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAIhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C;;;;GAIG;AAEH,MAAM,mBAAmB,GAAG,EAAE,GAAG,IAAI,CAAC;AAgBtC,MAAM,OAAO,mBAAmB;IACrB,UAAU,CAAqB;IACvB,UAAU,CAAS;IACpC,
|
|
1
|
+
{"version":3,"file":"file-transfer.js","sourceRoot":"","sources":["../../src/files/file-transfer.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,12 +52,20 @@ export declare class TerminalManager {
|
|
|
52
52
|
private readonly defaultShell;
|
|
53
53
|
private readonly terminals;
|
|
54
54
|
private readonly logger?;
|
|
55
|
-
|
|
55
|
+
/** Rotating hand-out point in the one-byte slot space (see `nextFreeSlot`). */
|
|
56
|
+
private slotCursor;
|
|
56
57
|
constructor(options?: TerminalManagerOptions);
|
|
57
58
|
/** All live terminal runtime entries. */
|
|
58
59
|
list(): TerminalRuntimeEntry[];
|
|
59
60
|
get(slot: number): TerminalRuntimeEntry | undefined;
|
|
60
|
-
/**
|
|
61
|
+
/**
|
|
62
|
+
* Spawn a PTY in the backend, assign a slot, and track the runtime entry.
|
|
63
|
+
*
|
|
64
|
+
* Slots are a pool, not a counter: the terminal frame header spends one byte on the slot, so
|
|
65
|
+
* the 256th terminal ever opened by a long-lived daemon used to be handed slot 256 and every
|
|
66
|
+
* `encodeTerminalFrame` for it threw, killing terminals until restart. Ids of exited terminals
|
|
67
|
+
* are reused (rotating, so a just-closed slot is the last one handed back out).
|
|
68
|
+
*/
|
|
61
69
|
createTerminal(options: CreateTerminalOptions): TerminalRuntimeEntry;
|
|
62
70
|
/**
|
|
63
71
|
* Subscribe to a slot: emit a Snapshot frame (current screen) immediately, then live Output frames.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-manager.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAEL,KAAK,UAAU,EAGhB,MAAM,kBAAkB,CAAC;AAG1B;;;;;;;;GAQG;AAEH,uEAAuE;AACvE,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;AAE5D,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,sFAAsF;IACtF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAeD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsC;IAChE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"terminal-manager.d.ts","sourceRoot":"","sources":["../../src/terminal/terminal-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { encodeTerminalFrame } from "@av-pi-studio/protocol";
|
|
1
|
+
import { encodeTerminalFrame, nextFreeSlot, SLOT_SPACE } from "@av-pi-studio/protocol";
|
|
2
2
|
import { createDefaultPtyBackend, resolveExecutable, } from "./pty-backend.js";
|
|
3
3
|
import { ScreenBuffer } from "./screen-buffer.js";
|
|
4
4
|
export class TerminalManager {
|
|
@@ -8,7 +8,8 @@ export class TerminalManager {
|
|
|
8
8
|
defaultShell;
|
|
9
9
|
terminals = new Map();
|
|
10
10
|
logger;
|
|
11
|
-
|
|
11
|
+
/** Rotating hand-out point in the one-byte slot space (see `nextFreeSlot`). */
|
|
12
|
+
slotCursor = 1;
|
|
12
13
|
constructor(options = {}) {
|
|
13
14
|
this.backend = options.backend ?? createDefaultPtyBackend();
|
|
14
15
|
this.coalesceMs = options.coalesceMs ?? 4;
|
|
@@ -23,9 +24,19 @@ export class TerminalManager {
|
|
|
23
24
|
get(slot) {
|
|
24
25
|
return this.terminals.get(slot)?.entry;
|
|
25
26
|
}
|
|
26
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Spawn a PTY in the backend, assign a slot, and track the runtime entry.
|
|
29
|
+
*
|
|
30
|
+
* Slots are a pool, not a counter: the terminal frame header spends one byte on the slot, so
|
|
31
|
+
* the 256th terminal ever opened by a long-lived daemon used to be handed slot 256 and every
|
|
32
|
+
* `encodeTerminalFrame` for it threw, killing terminals until restart. Ids of exited terminals
|
|
33
|
+
* are reused (rotating, so a just-closed slot is the last one handed back out).
|
|
34
|
+
*/
|
|
27
35
|
createTerminal(options) {
|
|
28
|
-
const slot = this.
|
|
36
|
+
const slot = nextFreeSlot(this.terminals, this.slotCursor);
|
|
37
|
+
if (slot === null)
|
|
38
|
+
throw new Error("no free terminal slot (256 terminals already open)");
|
|
39
|
+
this.slotCursor = (slot + 1) % SLOT_SPACE;
|
|
29
40
|
const cols = options.cols ?? 80;
|
|
30
41
|
const rows = options.rows ?? 24;
|
|
31
42
|
const shell = options.shell ?? this.defaultShell;
|
|
@@ -41,10 +52,24 @@ export class TerminalManager {
|
|
|
41
52
|
});
|
|
42
53
|
}
|
|
43
54
|
catch (error) {
|
|
44
|
-
this.logger?.error({
|
|
55
|
+
this.logger?.error({
|
|
56
|
+
slot,
|
|
57
|
+
workspaceId: options.workspaceId,
|
|
58
|
+
shell,
|
|
59
|
+
cwd: options.cwd,
|
|
60
|
+
err: error?.message ?? String(error),
|
|
61
|
+
}, "terminal spawn failed");
|
|
45
62
|
throw error;
|
|
46
63
|
}
|
|
47
|
-
this.logger?.info({
|
|
64
|
+
this.logger?.info({
|
|
65
|
+
slot,
|
|
66
|
+
workspaceId: options.workspaceId,
|
|
67
|
+
shell,
|
|
68
|
+
cwd: options.cwd,
|
|
69
|
+
cols,
|
|
70
|
+
rows,
|
|
71
|
+
service: options.service === true ? true : undefined,
|
|
72
|
+
}, "terminal opened");
|
|
48
73
|
const entry = {
|
|
49
74
|
slot,
|
|
50
75
|
workspaceId: options.workspaceId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-manager.js","sourceRoot":"","sources":["../../src/terminal/terminal-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"terminal-manager.js","sourceRoot":"","sources":["../../src/terminal/terminal-manager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@av-pi-studio/server",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.57",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
"clean": "rm -rf dist *.tsbuildinfo"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@av-pi-studio/highlight": "^0.0.
|
|
26
|
-
"@av-pi-studio/protocol": "^0.0.
|
|
27
|
-
"@av-pi-studio/relay": "^0.0.
|
|
25
|
+
"@av-pi-studio/highlight": "^0.0.57",
|
|
26
|
+
"@av-pi-studio/protocol": "^0.0.57",
|
|
27
|
+
"@av-pi-studio/relay": "^0.0.57",
|
|
28
28
|
"@earendil-works/pi-coding-agent": "^0.83.0",
|
|
29
29
|
"@xterm/headless": "^6.0.0",
|
|
30
30
|
"bcryptjs": "^3.0.3",
|