kvman 0.3.2 → 0.4.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/arguments.d.ts +2 -1
- package/dist/arguments.d.ts.map +1 -1
- package/dist/arguments.js +4 -1
- package/dist/arguments.js.map +1 -1
- package/dist/pipe/pipe-lines.d.ts +26 -0
- package/dist/pipe/pipe-lines.d.ts.map +1 -0
- package/dist/pipe/pipe-lines.js +24 -0
- package/dist/pipe/pipe-lines.js.map +1 -0
- package/dist/pipe/pipe-trust.d.ts +4 -0
- package/dist/pipe/pipe-trust.d.ts.map +1 -0
- package/dist/pipe/pipe-trust.js +13 -0
- package/dist/pipe/pipe-trust.js.map +1 -0
- package/dist/pipe/pipe.d.ts +11 -0
- package/dist/pipe/pipe.d.ts.map +1 -0
- package/dist/pipe/pipe.js +42 -0
- package/dist/pipe/pipe.js.map +1 -0
- package/dist/run-kvman.d.ts +1 -1
- package/dist/run-kvman.d.ts.map +1 -1
- package/dist/run-kvman.js +56 -19
- package/dist/run-kvman.js.map +1 -1
- package/dist/run-report.d.ts +9 -0
- package/dist/run-report.d.ts.map +1 -0
- package/dist/run-report.js +21 -0
- package/dist/run-report.js.map +1 -0
- package/dist/start-kernel.d.ts +4 -2
- package/dist/start-kernel.d.ts.map +1 -1
- package/dist/start-kernel.js +5 -9
- package/dist/start-kernel.js.map +1 -1
- package/package.json +7 -7
package/dist/arguments.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export type RunArguments = {
|
|
|
8
8
|
yes: boolean;
|
|
9
9
|
open: boolean;
|
|
10
10
|
logLevel: LogLevel;
|
|
11
|
+
pipe: boolean;
|
|
11
12
|
};
|
|
12
13
|
export type UninstallArguments = {
|
|
13
14
|
kind: 'uninstall';
|
|
@@ -20,7 +21,7 @@ export type CliArguments = {
|
|
|
20
21
|
} | {
|
|
21
22
|
kind: 'version';
|
|
22
23
|
} | RunArguments | UninstallArguments;
|
|
23
|
-
export declare const usage = "Usage:\n kvman [--mode web] [--preset coder] [--home <dir>] [--port <n>] [--yes] [--no-open] [--log-level <level>]\n kvman uninstall [--home <dir>] [--yes] [--keep-data | --delete-data]\n kvman --help | --version\n\nOptions:\n --mode <mode> How kvman runs: web (the default).\n --preset <preset> A bundled preset, <home>/presets/<name>.json, or a preset file such as ./app.json. Default: coder.\n --home <dir> kvman's home folder. Default: KVMAN_HOME, else ~/.kvman.\n --port <n> The port to listen on (0 picks a free one). Default: the kernel.port setting (3737).\n --yes Accept new extension versions without asking.\n --no-open Don't open the browser.\n --log-level <level> debug, info (the default), warn, or error.\n --help Show this help.\n --version Show kvman's version.\n\nUninstall options:\n --home <dir> The home folder whose data and running kvman are meant.\n --yes Remove kvman without asking; its data is kept unless --delete-data is given.\n --keep-data Keep kvman's data without asking.\n --delete-data Delete kvman's data without asking.\n";
|
|
24
|
+
export declare const usage = "Usage:\n kvman [--mode web] [--preset coder] [--home <dir>] [--port <n>] [--yes] [--no-open] [--log-level <level>] [--pipe]\n kvman uninstall [--home <dir>] [--yes] [--keep-data | --delete-data]\n kvman --help | --version\n\nOptions:\n --mode <mode> How kvman runs: web (the default).\n --preset <preset> A bundled preset, <home>/presets/<name>.json, or a preset file such as ./app.json. Default: coder.\n --home <dir> kvman's home folder. Default: KVMAN_HOME, else ~/.kvman.\n --port <n> The port to listen on (0 picks a free one). Default: the kernel.port setting (3737).\n --yes Accept new extension versions without asking.\n --no-open Don't open the browser.\n --log-level <level> debug, info (the default), warn, or error.\n --pipe For a program that starts kvman: JSON lines on stdout, the trust answer on stdin, and a stop when stdin closes.\n --help Show this help.\n --version Show kvman's version.\n\nUninstall options:\n --home <dir> The home folder whose data and running kvman are meant.\n --yes Remove kvman without asking; its data is kept unless --delete-data is given.\n --keep-data Keep kvman's data without asking.\n --delete-data Delete kvman's data without asking.\n";
|
|
24
25
|
export declare function parseArguments(argv: readonly string[]): CliArguments;
|
|
25
26
|
export declare function kvmanHome(flag: string | undefined, environment: NodeJS.ProcessEnv, userFolder?: string): string;
|
|
26
27
|
//# sourceMappingURL=arguments.d.ts.map
|
package/dist/arguments.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arguments.d.ts","sourceRoot":"","sources":["../src/arguments.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"arguments.d.ts","sourceRoot":"","sources":["../src/arguments.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAO9C,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAA;CAAE,CAAC;AAEhI,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG,YAAY,GAAG,kBAAkB,CAAC;AAEtG,eAAO,MAAM,KAAK,60CAsBjB,CAAC;AAkEF,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,YAAY,CAgBpE;AAGD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,GAAE,MAAqB,GAAG,MAAM,CAG7H"}
|
package/dist/arguments.js
CHANGED
|
@@ -3,7 +3,7 @@ import path from 'node:path';
|
|
|
3
3
|
import { parseArgs } from 'node:util';
|
|
4
4
|
import { ProblemError, z } from '@kvman/sdk';
|
|
5
5
|
export const usage = `Usage:
|
|
6
|
-
kvman [--mode web] [--preset coder] [--home <dir>] [--port <n>] [--yes] [--no-open] [--log-level <level>]
|
|
6
|
+
kvman [--mode web] [--preset coder] [--home <dir>] [--port <n>] [--yes] [--no-open] [--log-level <level>] [--pipe]
|
|
7
7
|
kvman uninstall [--home <dir>] [--yes] [--keep-data | --delete-data]
|
|
8
8
|
kvman --help | --version
|
|
9
9
|
|
|
@@ -15,6 +15,7 @@ Options:
|
|
|
15
15
|
--yes Accept new extension versions without asking.
|
|
16
16
|
--no-open Don't open the browser.
|
|
17
17
|
--log-level <level> debug, info (the default), warn, or error.
|
|
18
|
+
--pipe For a program that starts kvman: JSON lines on stdout, the trust answer on stdin, and a stop when stdin closes.
|
|
18
19
|
--help Show this help.
|
|
19
20
|
--version Show kvman's version.
|
|
20
21
|
|
|
@@ -32,6 +33,7 @@ const flags = {
|
|
|
32
33
|
yes: { type: 'boolean' },
|
|
33
34
|
'no-open': { type: 'boolean' },
|
|
34
35
|
'log-level': { type: 'string' },
|
|
36
|
+
pipe: { type: 'boolean' },
|
|
35
37
|
help: { type: 'boolean' },
|
|
36
38
|
version: { type: 'boolean' },
|
|
37
39
|
};
|
|
@@ -102,6 +104,7 @@ export function parseArguments(argv) {
|
|
|
102
104
|
yes: values.yes === true,
|
|
103
105
|
open: values['no-open'] !== true,
|
|
104
106
|
logLevel: parsed(logLevelSchema, values['log-level']),
|
|
107
|
+
pipe: values.pipe === true,
|
|
105
108
|
};
|
|
106
109
|
}
|
|
107
110
|
// `--home`, else `KVMAN_HOME`, else `~/.kvman` (plan 01 §1.3).
|
package/dist/arguments.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arguments.js","sourceRoot":"","sources":["../src/arguments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"arguments.js","sourceRoot":"","sources":["../src/arguments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ExtensionVersion } from '@kvman/kernel';
|
|
2
|
+
import { type Problem } from '@kvman/sdk';
|
|
3
|
+
export type PipeLine = {
|
|
4
|
+
kind: 'trust';
|
|
5
|
+
language: string;
|
|
6
|
+
versions: ExtensionVersion[];
|
|
7
|
+
} | {
|
|
8
|
+
kind: 'running';
|
|
9
|
+
url: string;
|
|
10
|
+
port: number;
|
|
11
|
+
} | {
|
|
12
|
+
kind: 'joined';
|
|
13
|
+
url: string;
|
|
14
|
+
port: number;
|
|
15
|
+
} | {
|
|
16
|
+
kind: 'restarting';
|
|
17
|
+
} | {
|
|
18
|
+
kind: 'failed';
|
|
19
|
+
language?: string;
|
|
20
|
+
problem: Problem;
|
|
21
|
+
};
|
|
22
|
+
export declare function encodeLine(line: PipeLine): string;
|
|
23
|
+
export declare function trustLine(language: string, versions: readonly ExtensionVersion[]): PipeLine;
|
|
24
|
+
export declare function failedLine(problem: Problem, language: string | undefined): PipeLine;
|
|
25
|
+
export declare function acceptsTrust(line: string): boolean;
|
|
26
|
+
//# sourceMappingURL=pipe-lines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe-lines.d.ts","sourceRoot":"","sources":["../../src/pipe/pipe-lines.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAK,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAI7C,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAE5D,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAEjD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GAAG,QAAQ,CAE3F;AAGD,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAEnF;AAKD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOlD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from '@kvman/sdk';
|
|
2
|
+
export function encodeLine(line) {
|
|
3
|
+
return `${JSON.stringify(line)}\n`;
|
|
4
|
+
}
|
|
5
|
+
export function trustLine(language, versions) {
|
|
6
|
+
return { kind: 'trust', language, versions: versions.map(({ name, version, source }) => ({ name, version, source })) };
|
|
7
|
+
}
|
|
8
|
+
// A start that fails before its preset is found has no language (ADR 0038, 18).
|
|
9
|
+
export function failedLine(problem, language) {
|
|
10
|
+
return language === undefined ? { kind: 'failed', problem } : { kind: 'failed', language, problem };
|
|
11
|
+
}
|
|
12
|
+
const answerSchema = z.strictObject({ trust: z.literal(true) });
|
|
13
|
+
// Only `{ "trust": true }` accepts; any other line declines (ADR 0038, 20).
|
|
14
|
+
export function acceptsTrust(line) {
|
|
15
|
+
try {
|
|
16
|
+
return answerSchema.safeParse(JSON.parse(line)).success;
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
if (error instanceof SyntaxError)
|
|
20
|
+
return false;
|
|
21
|
+
throw error;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=pipe-lines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe-lines.js","sourceRoot":"","sources":["../../src/pipe/pipe-lines.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAgB,MAAM,YAAY,CAAC;AAW7C,MAAM,UAAU,UAAU,CAAC,IAAc;IACvC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAgB,EAAE,QAAqC;IAC/E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;AACzH,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,UAAU,CAAC,OAAgB,EAAE,QAA4B;IACvE,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACtG,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEhE,4EAA4E;AAC5E,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW;YAAE,OAAO,KAAK,CAAC;QAC/C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe-trust.d.ts","sourceRoot":"","sources":["../../src/pipe/pipe-trust.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAMtC,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,GAAG,aAAa,CAOjG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { acceptsTrust, trustLine } from "./pipe-lines.js";
|
|
2
|
+
// The trust question of a piped run (plan 02 §2.9, plan 14 §14.2): a `trust` line, then the next line of the input as
|
|
3
|
+
// the answer. It is asked with or without a terminal, and an input that ends declines.
|
|
4
|
+
export function pipeTrustDecision(yes, pipe, language) {
|
|
5
|
+
return async (versions) => {
|
|
6
|
+
if (yes)
|
|
7
|
+
return true;
|
|
8
|
+
pipe.write(trustLine(language(), versions));
|
|
9
|
+
const answer = await pipe.nextLine();
|
|
10
|
+
return answer !== undefined && acceptsTrust(answer);
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=pipe-trust.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe-trust.js","sourceRoot":"","sources":["../../src/pipe/pipe-trust.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE1D,sHAAsH;AACtH,uFAAuF;AAEvF,MAAM,UAAU,iBAAiB,CAAC,GAAY,EAAE,IAAU,EAAE,QAAsB;IAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,EAAE;QACxB,IAAI,GAAG;YAAE,OAAO,IAAI,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrC,OAAO,MAAM,KAAK,SAAS,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Terminal } from '../trust-prompt.ts';
|
|
2
|
+
import { type PipeLine } from './pipe-lines.ts';
|
|
3
|
+
export type Pipe = {
|
|
4
|
+
write(line: PipeLine): void;
|
|
5
|
+
nextLine(): Promise<string | undefined>;
|
|
6
|
+
ended: Promise<void>;
|
|
7
|
+
hasEnded(): boolean;
|
|
8
|
+
dispose(): void;
|
|
9
|
+
};
|
|
10
|
+
export declare function openPipe(terminal: Terminal): Pipe;
|
|
11
|
+
//# sourceMappingURL=pipe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe.d.ts","sourceRoot":"","sources":["../../src/pipe/pipe.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAc,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAK5D,MAAM,MAAM,IAAI,GAAG;IACjB,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IAE5B,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAExC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,QAAQ,IAAI,OAAO,CAAC;IAEpB,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAsCjD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { createInterface } from 'node:readline';
|
|
2
|
+
import { encodeLine } from "./pipe-lines.js";
|
|
3
|
+
export function openPipe(terminal) {
|
|
4
|
+
const lines = createInterface({ input: terminal.input });
|
|
5
|
+
let ended = false;
|
|
6
|
+
let disposed = false;
|
|
7
|
+
let waiting;
|
|
8
|
+
let end = () => undefined;
|
|
9
|
+
const whenEnded = new Promise((resolve) => {
|
|
10
|
+
end = resolve;
|
|
11
|
+
});
|
|
12
|
+
const answer = (line) => {
|
|
13
|
+
const waiter = waiting;
|
|
14
|
+
waiting = undefined;
|
|
15
|
+
waiter?.(line);
|
|
16
|
+
};
|
|
17
|
+
lines.on('line', answer);
|
|
18
|
+
lines.once('close', () => {
|
|
19
|
+
if (disposed)
|
|
20
|
+
return;
|
|
21
|
+
ended = true;
|
|
22
|
+
answer(undefined);
|
|
23
|
+
end();
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
write: (line) => {
|
|
27
|
+
terminal.output.write(encodeLine(line));
|
|
28
|
+
},
|
|
29
|
+
nextLine: () => ended
|
|
30
|
+
? Promise.resolve(undefined)
|
|
31
|
+
: new Promise((resolve) => {
|
|
32
|
+
waiting = resolve;
|
|
33
|
+
}),
|
|
34
|
+
ended: whenEnded,
|
|
35
|
+
hasEnded: () => ended,
|
|
36
|
+
dispose: () => {
|
|
37
|
+
disposed = true;
|
|
38
|
+
lines.close();
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=pipe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe.js","sourceRoot":"","sources":["../../src/pipe/pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAiB,MAAM,iBAAiB,CAAC;AAgB5D,MAAM,UAAU,QAAQ,CAAC,QAAkB;IACzC,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IACzD,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,OAAyD,CAAC;IAC9D,IAAI,GAAG,GAAe,GAAG,EAAE,CAAC,SAAS,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAC9C,GAAG,GAAG,OAAO,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,CAAC,IAAwB,EAAQ,EAAE;QAChD,MAAM,MAAM,GAAG,OAAO,CAAC;QACvB,OAAO,GAAG,SAAS,CAAC;QACpB,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC;IACF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;QACvB,IAAI,QAAQ;YAAE,OAAO;QACrB,KAAK,GAAG,IAAI,CAAC;QACb,MAAM,CAAC,SAAS,CAAC,CAAC;QAClB,GAAG,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;IACH,OAAO;QACL,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;YACd,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,QAAQ,EAAE,GAAG,EAAE,CACb,KAAK;YACH,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;YAC5B,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBACtB,OAAO,GAAG,OAAO,CAAC;YACpB,CAAC,CAAC;QACR,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK;QACrB,OAAO,EAAE,GAAG,EAAE;YACZ,QAAQ,GAAG,IAAI,CAAC;YAChB,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/run-kvman.d.ts
CHANGED
package/dist/run-kvman.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-kvman.d.ts","sourceRoot":"","sources":["../src/run-kvman.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run-kvman.d.ts","sourceRoot":"","sources":["../src/run-kvman.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAY9D,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAOjE,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC;CACrC,CAAC;AAkFF,wBAAsB,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ/F"}
|
package/dist/run-kvman.js
CHANGED
|
@@ -1,26 +1,33 @@
|
|
|
1
|
-
import { discardPresetBackup, startHttp } from '@kvman/kernel';
|
|
1
|
+
import { discardPresetBackup, startHttp, storedLanguage } from '@kvman/kernel';
|
|
2
|
+
import { ProblemError } from '@kvman/sdk';
|
|
2
3
|
import { kvmanHome } from "./arguments.js";
|
|
3
4
|
import { openBrowser } from "./browser.js";
|
|
4
5
|
import { bundledPresetsFolder } from "./bundled.js";
|
|
5
6
|
import { handOver } from "./hand-over.js";
|
|
6
7
|
import { takeLock } from "./lock-file.js";
|
|
8
|
+
import { failedLine } from "./pipe/pipe-lines.js";
|
|
9
|
+
import { pipeTrustDecision } from "./pipe/pipe-trust.js";
|
|
10
|
+
import { openPipe } from "./pipe/pipe.js";
|
|
7
11
|
import { defaultPreset, editableFile, findPreset } from "./preset-lookup.js";
|
|
12
|
+
import { pipeReport, terminalReport } from "./run-report.js";
|
|
8
13
|
import { startOrUndo } from "./start-kernel.js";
|
|
9
14
|
import { listenForStop } from "./stop-signals.js";
|
|
15
|
+
import { trustDecision } from "./trust-prompt.js";
|
|
10
16
|
function workspaceUrl(port, workspaceId) {
|
|
11
17
|
return `http://127.0.0.1:${String(port)}/?workspace=${encodeURIComponent(workspaceId)}`;
|
|
12
18
|
}
|
|
13
|
-
async function joinRunning(args, lock, folders, environment) {
|
|
19
|
+
async function joinRunning(args, lock, folders, environment, report) {
|
|
14
20
|
const preset = args.preset === undefined ? undefined : findPreset(args.preset, folders).preset.name;
|
|
15
21
|
const { port, workspace } = await handOver(lock, environment.startFolder, { preset, mode: args.mode });
|
|
16
22
|
const url = workspaceUrl(port, workspace.id);
|
|
17
|
-
|
|
23
|
+
report.joined(url, port);
|
|
18
24
|
if (args.open)
|
|
19
25
|
openBrowser(environment.platform, url, (reason) => environment.errors.write(`The browser could not be opened (${reason}).\n`));
|
|
20
26
|
return 0;
|
|
21
27
|
}
|
|
22
28
|
// A good start (the port is listening) deletes the backup of the last edit (ADR 0024, 4).
|
|
23
29
|
async function serve(args, kernel, lock, environment, run) {
|
|
30
|
+
const { report, pipe } = run.talk;
|
|
24
31
|
const stop = listenForStop(() => {
|
|
25
32
|
lock.release();
|
|
26
33
|
environment.exitAtOnce(130);
|
|
@@ -33,38 +40,68 @@ async function serve(args, kernel, lock, environment, run) {
|
|
|
33
40
|
lock.setPort(http.port);
|
|
34
41
|
discardPresetBackup(run.presetFile);
|
|
35
42
|
const url = workspaceUrl(http.port, kernel.startWorkspace.id);
|
|
36
|
-
|
|
43
|
+
report.running(url, http.port);
|
|
37
44
|
if (run.open)
|
|
38
45
|
openBrowser(environment.platform, url, (reason) => kernel.web.logger.warn('The browser could not be opened.', { reason }));
|
|
39
|
-
const
|
|
46
|
+
const stopped = () => 'stopped';
|
|
47
|
+
const requested = await Promise.race([
|
|
48
|
+
stop.stopRequested.then(stopped),
|
|
49
|
+
...(pipe === undefined ? [] : [pipe.ended.then(stopped)]),
|
|
50
|
+
kernel.restartRequested.then(() => 'restart'),
|
|
51
|
+
]);
|
|
40
52
|
const closing = http.close();
|
|
41
53
|
await kernel.close();
|
|
42
54
|
await closing;
|
|
43
|
-
return stop.isRequested() ? 'stopped' : requested;
|
|
55
|
+
return stop.isRequested() || pipe?.hasEnded() === true ? 'stopped' : requested;
|
|
44
56
|
}
|
|
45
57
|
finally {
|
|
46
58
|
stop.dispose();
|
|
47
59
|
}
|
|
48
60
|
}
|
|
49
|
-
|
|
61
|
+
async function runWith(args, environment, talk) {
|
|
50
62
|
const home = kvmanHome(args.home, environment.variables, environment.userFolder);
|
|
51
63
|
const folders = { bundled: bundledPresetsFolder, home, start: environment.startFolder };
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
64
|
+
// Known once a start has found its preset; a `failed` line before that has no language (ADR 0038, 18).
|
|
65
|
+
let language;
|
|
66
|
+
const trustFor = (presetSettings) => {
|
|
67
|
+
const stored = () => storedLanguage(home, presetSettings);
|
|
68
|
+
language = stored;
|
|
69
|
+
return talk.pipe === undefined ? trustDecision(args.yes, environment.terminal) : pipeTrustDecision(args.yes, talk.pipe, stored);
|
|
70
|
+
};
|
|
58
71
|
try {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
72
|
+
const lock = takeLock(home);
|
|
73
|
+
if (lock.kind === 'held')
|
|
74
|
+
return await joinRunning(args, lock.lock, folders, environment, talk.report);
|
|
75
|
+
// A program kvman runs (kvbuilder's `kvman-docs`) finds this kvman through `<home>/kvman.lock` (plan 01 §1.2).
|
|
76
|
+
process.env['KVMAN_HOME'] = home;
|
|
77
|
+
const presetFile = editableFile(args.preset ?? defaultPreset, folders);
|
|
78
|
+
try {
|
|
79
|
+
for (let open = args.open;; open = false) {
|
|
80
|
+
const kernel = await startOrUndo(args, folders, environment, trustFor);
|
|
81
|
+
if ((await serve(args, kernel, lock, environment, { open, presetFile, talk })) === 'stopped')
|
|
82
|
+
return 0;
|
|
83
|
+
talk.report.restarting();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
lock.release();
|
|
64
88
|
}
|
|
65
89
|
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
if (talk.pipe !== undefined && error instanceof ProblemError)
|
|
92
|
+
talk.pipe.write(failedLine(error.problem, language?.()));
|
|
93
|
+
throw error;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
export async function runKvman(args, environment) {
|
|
97
|
+
if (!args.pipe)
|
|
98
|
+
return runWith(args, environment, { report: terminalReport(environment.terminal.output), pipe: undefined });
|
|
99
|
+
const pipe = openPipe(environment.terminal);
|
|
100
|
+
try {
|
|
101
|
+
return await runWith(args, environment, { report: pipeReport(pipe), pipe });
|
|
102
|
+
}
|
|
66
103
|
finally {
|
|
67
|
-
|
|
104
|
+
pipe.dispose();
|
|
68
105
|
}
|
|
69
106
|
}
|
|
70
107
|
//# sourceMappingURL=run-kvman.js.map
|
package/dist/run-kvman.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-kvman.js","sourceRoot":"","sources":["../src/run-kvman.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAe,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"run-kvman.js","sourceRoot":"","sources":["../src/run-kvman.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Pipe } from './pipe/pipe.ts';
|
|
2
|
+
export type RunReport = {
|
|
3
|
+
running(url: string, port: number): void;
|
|
4
|
+
joined(url: string, port: number): void;
|
|
5
|
+
restarting(): void;
|
|
6
|
+
};
|
|
7
|
+
export declare function terminalReport(output: NodeJS.WritableStream): RunReport;
|
|
8
|
+
export declare function pipeReport(pipe: Pipe): RunReport;
|
|
9
|
+
//# sourceMappingURL=run-report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-report.d.ts","sourceRoot":"","sources":["../src/run-report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAK3C,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,UAAU,IAAI,IAAI,CAAC;CACpB,CAAC;AAEF,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,GAAG,SAAS,CAYvE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,CAMhD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export function terminalReport(output) {
|
|
2
|
+
return {
|
|
3
|
+
running: (url) => {
|
|
4
|
+
output.write(`kvman is running at ${url}\n`);
|
|
5
|
+
},
|
|
6
|
+
joined: (url) => {
|
|
7
|
+
output.write(`kvman is already running; this folder is open at ${url}\n`);
|
|
8
|
+
},
|
|
9
|
+
restarting: () => {
|
|
10
|
+
output.write('kvman is restarting…\n');
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export function pipeReport(pipe) {
|
|
15
|
+
return {
|
|
16
|
+
running: (url, port) => pipe.write({ kind: 'running', url, port }),
|
|
17
|
+
joined: (url, port) => pipe.write({ kind: 'joined', url, port }),
|
|
18
|
+
restarting: () => pipe.write({ kind: 'restarting' }),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=run-report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-report.js","sourceRoot":"","sources":["../src/run-report.ts"],"names":[],"mappings":"AAWA,MAAM,UAAU,cAAc,CAAC,MAA6B;IAC1D,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACf,MAAM,CAAC,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;YACd,MAAM,CAAC,KAAK,CAAC,oDAAoD,GAAG,IAAI,CAAC,CAAC;QAC5E,CAAC;QACD,UAAU,EAAE,GAAG,EAAE;YACf,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACzC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAU;IACnC,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QAClE,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QAChE,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;KACrD,CAAC;AACJ,CAAC"}
|
package/dist/start-kernel.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { type Kernel } from '@kvman/kernel';
|
|
1
|
+
import { type Kernel, type TrustDecision } from '@kvman/kernel';
|
|
2
|
+
import { type Json } from '@kvman/sdk';
|
|
2
3
|
import type { RunArguments } from './arguments.ts';
|
|
3
4
|
import type { CliEnvironment } from './run-kvman.ts';
|
|
4
5
|
import { type PresetFolders } from './preset-lookup.ts';
|
|
5
|
-
export
|
|
6
|
+
export type TrustFor = (presetSettings: Readonly<Record<string, Json>>) => TrustDecision;
|
|
7
|
+
export declare function startOrUndo(args: RunArguments, folders: PresetFolders, environment: CliEnvironment, trustFor: TrustFor): Promise<Kernel>;
|
|
6
8
|
//# sourceMappingURL=start-kernel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-kernel.d.ts","sourceRoot":"","sources":["../src/start-kernel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"start-kernel.d.ts","sourceRoot":"","sources":["../src/start-kernel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAClG,OAAO,EAAgB,KAAK,IAAI,EAAgB,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAA2C,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AASjG,MAAM,MAAM,QAAQ,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,aAAa,CAAC;AAsBzF,wBAAsB,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAS9I"}
|
package/dist/start-kernel.js
CHANGED
|
@@ -3,12 +3,8 @@ import { ProblemError } from '@kvman/sdk';
|
|
|
3
3
|
import { bundledExtensions } from "./bundled.js";
|
|
4
4
|
import { defaultPreset, editableFile, findPreset } from "./preset-lookup.js";
|
|
5
5
|
import { failureLines } from "./terminal.js";
|
|
6
|
-
import { trustDecision } from "./trust-prompt.js";
|
|
7
|
-
// Starting the kernel for a run (plan 02 §2.14, ADR 0024, 5): a start that fails because of the preset, while the
|
|
8
|
-
// backup of the last edit exists, restores the preset and starts once more.
|
|
9
|
-
// The failures that a preset edit can cause; `PORT_IN_USE` and the like are not undone by restoring a file.
|
|
10
6
|
const undoable = new Set(['EXTENSION_INVALID', 'VALIDATION_FAILED']);
|
|
11
|
-
function startOnce(args, folders, environment, rolledBack) {
|
|
7
|
+
function startOnce(args, folders, environment, trustFor, rolledBack) {
|
|
12
8
|
const found = findPreset(args.preset ?? defaultPreset, folders);
|
|
13
9
|
return startKernel({
|
|
14
10
|
home: folders.home,
|
|
@@ -21,13 +17,13 @@ function startOnce(args, folders, environment, rolledBack) {
|
|
|
21
17
|
logLevel: args.logLevel,
|
|
22
18
|
terminalLog: true,
|
|
23
19
|
startFolder: environment.startFolder,
|
|
24
|
-
trust:
|
|
20
|
+
trust: trustFor(found.preset.settings ?? {}),
|
|
25
21
|
...(rolledBack === undefined ? {} : { rolledBack }),
|
|
26
22
|
});
|
|
27
23
|
}
|
|
28
|
-
export async function startOrUndo(args, folders, environment) {
|
|
24
|
+
export async function startOrUndo(args, folders, environment, trustFor) {
|
|
29
25
|
try {
|
|
30
|
-
return await startOnce(args, folders, environment, undefined);
|
|
26
|
+
return await startOnce(args, folders, environment, trustFor, undefined);
|
|
31
27
|
}
|
|
32
28
|
catch (error) {
|
|
33
29
|
if (!(error instanceof ProblemError) || !undoable.has(error.problem.code))
|
|
@@ -35,7 +31,7 @@ export async function startOrUndo(args, folders, environment) {
|
|
|
35
31
|
if (!restorePresetBackup(editableFile(args.preset ?? defaultPreset, folders)))
|
|
36
32
|
throw error;
|
|
37
33
|
environment.errors.write(`${failureLines(error.problem)}The last change to the preset was undone.\n`);
|
|
38
|
-
return startOnce(args, folders, environment, error.problem);
|
|
34
|
+
return startOnce(args, folders, environment, trustFor, error.problem);
|
|
39
35
|
}
|
|
40
36
|
}
|
|
41
37
|
//# sourceMappingURL=start-kernel.js.map
|
package/dist/start-kernel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-kernel.js","sourceRoot":"","sources":["../src/start-kernel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"start-kernel.js","sourceRoot":"","sources":["../src/start-kernel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAmC,MAAM,eAAe,CAAC;AAClG,OAAO,EAAE,YAAY,EAA2B,MAAM,YAAY,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAsB,MAAM,oBAAoB,CAAC;AACjG,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAU7C,MAAM,QAAQ,GAAwB,IAAI,GAAG,CAAC,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAE1F,SAAS,SAAS,CAAC,IAAkB,EAAE,OAAsB,EAAE,WAA2B,EAAE,QAAkB,EAAE,UAA+B;IAC7I,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,aAAa,EAAE,OAAO,CAAC,CAAC;IAChE,OAAO,WAAW,CAAC;QACjB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,WAAW,CAAC,UAAU;QAClC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,YAAY,EAAE,KAAK,CAAC,MAAM;QAC1B,OAAO,EAAE,iBAAiB,EAAE;QAC5B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK;QACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QAC5C,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;KACpD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAkB,EAAE,OAAsB,EAAE,WAA2B,EAAE,QAAkB;IAC3H,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,MAAM,KAAK,CAAC;QACvF,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,aAAa,EAAE,OAAO,CAAC,CAAC;YAAE,MAAM,KAAK,CAAC;QAC3F,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC;QACtG,OAAO,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACxE,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kvman",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "kvman, an app that works like a small operating system: a kernel runs extensions, and a preset shapes them.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -21,12 +21,12 @@
|
|
|
21
21
|
"kvman": "./dist/main.js"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@kvman/kernel": "0.
|
|
25
|
-
"@kvman/kvai": "0.1.
|
|
26
|
-
"@kvman/kvcoder": "0.1.
|
|
27
|
-
"@kvman/kvbuilder": "0.3.
|
|
28
|
-
"@kvman/kvwebui": "0.1.
|
|
29
|
-
"@kvman/sdk": "0.1.
|
|
24
|
+
"@kvman/kernel": "0.4.0",
|
|
25
|
+
"@kvman/kvai": "0.1.2",
|
|
26
|
+
"@kvman/kvcoder": "0.1.7",
|
|
27
|
+
"@kvman/kvbuilder": "0.3.1",
|
|
28
|
+
"@kvman/kvwebui": "0.1.3",
|
|
29
|
+
"@kvman/sdk": "0.1.2"
|
|
30
30
|
},
|
|
31
31
|
"scripts": {
|
|
32
32
|
"build": "tsc -p tsconfig.build.json",
|