@velarscript/cli 0.13.0 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cli.js +58 -41
- package/dist/cli.js.map +1 -1
- package/dist/extension-metadata.d.ts.map +1 -1
- package/dist/extension-metadata.js +1 -0
- package/dist/extension-metadata.js.map +1 -1
- package/dist/node-application.d.ts +4 -8
- package/dist/node-application.d.ts.map +1 -1
- package/dist/node-application.js +40 -39
- package/dist/node-application.js.map +1 -1
- package/dist/node-runtime-dependencies.d.ts +1 -0
- package/dist/node-runtime-dependencies.d.ts.map +1 -1
- package/dist/node-runtime-dependencies.js +12 -4
- package/dist/node-runtime-dependencies.js.map +1 -1
- package/dist/official-language-server-extensions.d.ts.map +1 -1
- package/dist/official-language-server-extensions.js +13 -0
- package/dist/official-language-server-extensions.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +8 -7
- package/skill/ai-skill-node.md +28 -24
- package/skill/ai-skill-server.md +173 -0
- package/skill/ai-skill.md +1 -1
package/dist/node-application.js
CHANGED
|
@@ -6,23 +6,27 @@ import { writeFile } from "node:fs/promises";
|
|
|
6
6
|
import { formatDiagnostic } from "@velarscript/compiler";
|
|
7
7
|
import { compileProject } from "./project.js";
|
|
8
8
|
import { hostErrorMessage } from "./host-error.js";
|
|
9
|
-
import { writeWebSocketDependency } from "./node-runtime-dependencies.js";
|
|
9
|
+
import { writeServerConfigurationDependency, writeWebSocketDependency } from "./node-runtime-dependencies.js";
|
|
10
10
|
import { prepareStandardModules } from "./test-runner.js";
|
|
11
11
|
import { compiledTestModulePath, createCompiledSandbox, removeCompiledSandbox, writeCompiledTestProject, } from "./test-output.js";
|
|
12
12
|
const NODE_EXTENSION_ID = "@velarscript/node";
|
|
13
|
-
const
|
|
13
|
+
const SERVER_EXTENSION_ID = "@velarscript/server";
|
|
14
|
+
const SERVER_IDENTITY = "velar/serve#type:Server";
|
|
14
15
|
const WEBSOCKET_SERVER_IDENTITY = "velar/websocket#type:WebSocketServer";
|
|
15
16
|
const CHILD_SHUTDOWN_DEADLINE_MS = 35_000;
|
|
16
17
|
const REBUILD_DEBOUNCE_MS = 50;
|
|
17
18
|
export function nodeApplicationConfig(config) {
|
|
18
|
-
if (!config.
|
|
19
|
+
if (!config.compilerExtensions.some((extension) => extension.capabilities?.includes("node")) || config.framework)
|
|
19
20
|
return null;
|
|
21
|
+
const server = config.extensionConfig.get(SERVER_EXTENSION_ID);
|
|
22
|
+
if (server && typeof server === "object")
|
|
23
|
+
return server;
|
|
20
24
|
const value = config.extensionConfig.get(NODE_EXTENSION_ID);
|
|
21
25
|
return value && typeof value === "object" ? value : null;
|
|
22
26
|
}
|
|
23
|
-
export async function runNodeApplication(config
|
|
27
|
+
export async function runNodeApplication(config) {
|
|
24
28
|
const node = requireNodeConfig(config);
|
|
25
|
-
const prepared = await prepareNodeApplication(config, node,
|
|
29
|
+
const prepared = await prepareNodeApplication(config, node, "serve", false);
|
|
26
30
|
if (!prepared)
|
|
27
31
|
return 1;
|
|
28
32
|
try {
|
|
@@ -33,7 +37,7 @@ export async function runNodeApplication(config, overrides = {}) {
|
|
|
33
37
|
await removeCompiledSandbox(prepared.sandbox);
|
|
34
38
|
}
|
|
35
39
|
}
|
|
36
|
-
export async function runNodeDevelopment(config
|
|
40
|
+
export async function runNodeDevelopment(config) {
|
|
37
41
|
const node = requireNodeConfig(config);
|
|
38
42
|
let current = null;
|
|
39
43
|
let timer = null;
|
|
@@ -51,7 +55,7 @@ export async function runNodeDevelopment(config, overrides = {}) {
|
|
|
51
55
|
}
|
|
52
56
|
rebuilding = true;
|
|
53
57
|
try {
|
|
54
|
-
const prepared = await prepareNodeApplication(config, node,
|
|
58
|
+
const prepared = await prepareNodeApplication(config, node, "dev", true);
|
|
55
59
|
if (!prepared || closing) {
|
|
56
60
|
if (prepared)
|
|
57
61
|
await removeCompiledSandbox(prepared.sandbox);
|
|
@@ -134,7 +138,7 @@ export async function runNodeDevelopment(config, overrides = {}) {
|
|
|
134
138
|
process.once("SIGTERM", onTerminate);
|
|
135
139
|
});
|
|
136
140
|
}
|
|
137
|
-
async function prepareNodeApplication(config, node,
|
|
141
|
+
async function prepareNodeApplication(config, node, prefix, development) {
|
|
138
142
|
const project = await compileProject(config.entryPath, new Map(), {
|
|
139
143
|
sourceRoot: dirname(config.entryPath),
|
|
140
144
|
projectRoot: config.root,
|
|
@@ -167,10 +171,12 @@ async function prepareNodeApplication(config, node, overrides, prefix, developme
|
|
|
167
171
|
await prepareStandardModules(sandbox, config);
|
|
168
172
|
if (usesNodeWebSocket(project))
|
|
169
173
|
await writeWebSocketDependency(join(sandbox, "node_modules"));
|
|
174
|
+
if (usesNodeServerConfiguration(project))
|
|
175
|
+
await writeServerConfigurationDependency(join(sandbox, "node_modules"));
|
|
170
176
|
await writeCompiledTestProject(project, sandbox);
|
|
171
177
|
const launcher = join(sandbox, ".velar-node-entry.mjs");
|
|
172
178
|
const entryUrl = pathToFileURL(compiledTestModulePath(project, application.entry, sandbox)).href;
|
|
173
|
-
await writeFile(launcher, nodeApplicationLauncherSource(entryUrl, node,
|
|
179
|
+
await writeFile(launcher, nodeApplicationLauncherSource(entryUrl, node, development, application.kind), "utf8");
|
|
174
180
|
return { sandbox, launcher, projectRoot: project.projectRoot, compilation: project.stats };
|
|
175
181
|
}
|
|
176
182
|
catch (error) {
|
|
@@ -181,28 +187,24 @@ async function prepareNodeApplication(config, node, overrides, prefix, developme
|
|
|
181
187
|
export function nodeApplicationEntry(project, config) {
|
|
182
188
|
const entry = project.modules.find((module) => module.inputPath === project.entryPath);
|
|
183
189
|
const exportType = entry?.result.moduleInterface.exports.get(config.app);
|
|
184
|
-
if (entry && exportType &&
|
|
185
|
-
return { entry, kind: "
|
|
190
|
+
if (entry && exportType && isServerFactoryType(exportType))
|
|
191
|
+
return { entry, kind: "server-factory" };
|
|
186
192
|
if (entry && exportType && isWebSocketFactoryType(exportType))
|
|
187
193
|
return { entry, kind: "websocket-factory" };
|
|
188
|
-
throw new Error(`${project.entryPath}: Node application entry must export
|
|
194
|
+
throw new Error(`${project.entryPath}: Node application entry must export an async zero-argument '${config.app}' startup function returning Server or WebSocketServer (set server.app or node.app to choose another export)`);
|
|
189
195
|
}
|
|
190
|
-
export function nodeApplicationLauncherSource(entryUrl, config,
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
const runtimeImport = kind === "serve-app"
|
|
194
|
-
? `import {ServeApp, serve} from "velar/serve";\n`
|
|
196
|
+
export function nodeApplicationLauncherSource(entryUrl, config, development, kind) {
|
|
197
|
+
const runtimeImport = kind === "server-factory"
|
|
198
|
+
? `import {Server} from "velar/serve";\n`
|
|
195
199
|
: `import {WebSocketServer} from "velar/websocket";\n`;
|
|
196
|
-
const
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
+ `if (typeof start !== "function") throw new TypeError("Configured WebSocket application export is not callable");\n`
|
|
201
|
-
+ `const server = WebSocketServer.parse(await start(${JSON.stringify(host)}, ${port}, ${config.maxBodyBytes}));\n`;
|
|
200
|
+
const serverType = kind === "server-factory" ? "Server" : "WebSocketServer";
|
|
201
|
+
const start = `const start = entry[${JSON.stringify(config.app)}];\n`
|
|
202
|
+
+ `if (typeof start !== "function") throw new TypeError("Configured Node application export is not callable");\n`
|
|
203
|
+
+ `const server = ${serverType}.parse(await start());\n`;
|
|
202
204
|
return runtimeImport
|
|
203
205
|
+ `import * as entry from ${JSON.stringify(entryUrl)};\n`
|
|
204
206
|
+ start
|
|
205
|
-
+ `process.stdout.write(${JSON.stringify(`VelarScript ${development ? "development" : "production"} server
|
|
207
|
+
+ `process.stdout.write(${JSON.stringify(`VelarScript ${development ? "development" : "production"} server listening on port `)} + server.port + "\\n");\n`
|
|
206
208
|
+ `let stopping = false;\n`
|
|
207
209
|
+ `const stop = async signal => { if (stopping) return; stopping = true; try { await server.stop(); } catch (error) { console.error(error); process.exitCode = 1; } if (signal === "SIGINT" && process.exitCode == null) process.exitCode = 130; if (signal === "SIGTERM" && process.exitCode == null) process.exitCode = 143; };\n`
|
|
208
210
|
+ `process.once("SIGINT", () => void stop("SIGINT"));\n`
|
|
@@ -265,29 +267,33 @@ async function stopRunningApplication(running) {
|
|
|
265
267
|
function requireNodeConfig(config) {
|
|
266
268
|
const node = nodeApplicationConfig(config);
|
|
267
269
|
if (!node)
|
|
268
|
-
throw new Error("the project does not activate
|
|
270
|
+
throw new Error("the project does not activate a Node-capable application target such as @velarscript/server or @velarscript/node");
|
|
269
271
|
return node;
|
|
270
272
|
}
|
|
271
|
-
function
|
|
272
|
-
return type
|
|
273
|
+
function isServerFactoryType(type) {
|
|
274
|
+
return zeroArgumentServerFactory(type, SERVER_IDENTITY);
|
|
273
275
|
}
|
|
274
276
|
function isWebSocketFactoryType(type) {
|
|
277
|
+
return zeroArgumentServerFactory(type, WEBSOCKET_SERVER_IDENTITY);
|
|
278
|
+
}
|
|
279
|
+
function zeroArgumentServerFactory(type, resultIdentity) {
|
|
275
280
|
return type.kind === "function"
|
|
276
281
|
&& type.typeParameterNames === undefined
|
|
277
282
|
&& type.rest === undefined
|
|
278
|
-
&& type.requiredParameters ===
|
|
279
|
-
&& type.parameters.length ===
|
|
280
|
-
&& type.parameters[0]?.kind === "string"
|
|
281
|
-
&& type.parameters[1]?.kind === "number"
|
|
282
|
-
&& type.parameters[2]?.kind === "number"
|
|
283
|
+
&& type.requiredParameters === 0
|
|
284
|
+
&& type.parameters.length === 0
|
|
283
285
|
&& type.result.kind === "promise"
|
|
284
286
|
&& type.result.value.kind === "named"
|
|
285
|
-
&& type.result.value.identity ===
|
|
287
|
+
&& type.result.value.identity === resultIdentity;
|
|
286
288
|
}
|
|
287
289
|
function usesNodeWebSocket(project) {
|
|
288
290
|
return project.modules.some((module) => module.result.dependencies.some((dependency) => dependency.source === "velar/websocket")
|
|
289
291
|
|| module.result.runtimeModules.includes("velar/websocket"));
|
|
290
292
|
}
|
|
293
|
+
function usesNodeServerConfiguration(project) {
|
|
294
|
+
return project.modules.some((module) => module.result.dependencies.some((dependency) => dependency.source === "velar/server")
|
|
295
|
+
|| module.result.runtimeModules.includes("velar/server"));
|
|
296
|
+
}
|
|
291
297
|
function watchedProjectPath(config, input) {
|
|
292
298
|
const path = input.replaceAll("\\", "/").replace(/^\.\//u, "");
|
|
293
299
|
if (!path || path.split("/").some((segment) => segment === "node_modules" || segment === ".git" || segment === ".velar"))
|
|
@@ -296,11 +302,6 @@ function watchedProjectPath(config, input) {
|
|
|
296
302
|
const fromOutput = relative(config.outDir, absolute);
|
|
297
303
|
if (fromOutput === "" || (!fromOutput.startsWith("..") && !isAbsolute(fromOutput)))
|
|
298
304
|
return false;
|
|
299
|
-
return path.endsWith(".vel") || path.endsWith(".json");
|
|
300
|
-
}
|
|
301
|
-
function displayHost(host) {
|
|
302
|
-
if (host === "0.0.0.0" || host === "::")
|
|
303
|
-
return "127.0.0.1";
|
|
304
|
-
return host.includes(":") ? `[${host}]` : host;
|
|
305
|
+
return path.endsWith(".vel") || path.endsWith(".json") || path.endsWith(".yml") || path.endsWith(".yaml");
|
|
305
306
|
}
|
|
306
307
|
//# sourceMappingURL=node-application.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-application.js","sourceRoot":"","sources":["../src/node-application.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"node-application.js","sourceRoot":"","sources":["../src/node-application.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-runtime-dependencies.d.ts","sourceRoot":"","sources":["../src/node-runtime-dependencies.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"node-runtime-dependencies.d.ts","sourceRoot":"","sources":["../src/node-runtime-dependencies.ts"],"names":[],"mappings":"AAUA,wBAAsB,wBAAwB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErF;AAED,wBAAsB,kCAAkC,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/F"}
|
|
@@ -4,12 +4,20 @@ import { dirname, join } from "node:path";
|
|
|
4
4
|
import { isHostErrorCode } from "./host-error.js";
|
|
5
5
|
const WEBSOCKET_PACKAGE = "ws";
|
|
6
6
|
const WEBSOCKET_VERSION = "8.21.1";
|
|
7
|
+
const YAML_PACKAGE = "yaml";
|
|
8
|
+
const YAML_VERSION = "2.9.0";
|
|
7
9
|
export async function writeWebSocketDependency(nodeModulesRoot) {
|
|
8
|
-
|
|
10
|
+
await writeRuntimeDependency(nodeModulesRoot, WEBSOCKET_PACKAGE, WEBSOCKET_VERSION);
|
|
11
|
+
}
|
|
12
|
+
export async function writeServerConfigurationDependency(nodeModulesRoot) {
|
|
13
|
+
await writeRuntimeDependency(nodeModulesRoot, YAML_PACKAGE, YAML_VERSION);
|
|
14
|
+
}
|
|
15
|
+
async function writeRuntimeDependency(nodeModulesRoot, packageName, version) {
|
|
16
|
+
const target = join(nodeModulesRoot, packageName);
|
|
9
17
|
try {
|
|
10
18
|
const manifest = JSON.parse(await readFile(join(target, "package.json"), "utf8"));
|
|
11
|
-
if (manifest.name !==
|
|
12
|
-
throw new Error(`Refusing to use incompatible
|
|
19
|
+
if (manifest.name !== packageName || manifest.version !== version) {
|
|
20
|
+
throw new Error(`Refusing to use incompatible Node runtime package '${target}'`);
|
|
13
21
|
}
|
|
14
22
|
return;
|
|
15
23
|
}
|
|
@@ -18,7 +26,7 @@ export async function writeWebSocketDependency(nodeModulesRoot) {
|
|
|
18
26
|
throw error;
|
|
19
27
|
}
|
|
20
28
|
const require = createRequire(import.meta.url);
|
|
21
|
-
const source = dirname(require.resolve(`${
|
|
29
|
+
const source = dirname(require.resolve(`${packageName}/package.json`));
|
|
22
30
|
await cp(source, target, { recursive: true, errorOnExist: true });
|
|
23
31
|
}
|
|
24
32
|
//# sourceMappingURL=node-runtime-dependencies.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-runtime-dependencies.js","sourceRoot":"","sources":["../src/node-runtime-dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,iBAAiB,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"node-runtime-dependencies.js","sourceRoot":"","sources":["../src/node-runtime-dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AACnC,MAAM,YAAY,GAAG,MAAM,CAAC;AAC5B,MAAM,YAAY,GAAG,OAAO,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,eAAuB;IACpE,MAAM,sBAAsB,CAAC,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kCAAkC,CAAC,eAAuB;IAC9E,MAAM,sBAAsB,CAAC,eAAe,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;AAC5E,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,eAAuB,EAAE,WAAmB,EAAE,OAAe;IACjG,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAA4B,CAAC;QAC7G,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,sDAAsD,MAAM,GAAG,CAAC,CAAC;QACnF,CAAC;QACD,OAAO;IACT,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC;YAAE,MAAM,KAAK,CAAC;IACrD,CAAC;IACD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,WAAW,eAAe,CAAC,CAAC,CAAC;IACvE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"official-language-server-extensions.d.ts","sourceRoot":"","sources":["../src/official-language-server-extensions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"official-language-server-extensions.d.ts","sourceRoot":"","sources":["../src/official-language-server-extensions.ts"],"names":[],"mappings":"AAkBA,wBAAgB,uCAAuC,IAAI,IAAI,CAoD9D"}
|
|
@@ -4,6 +4,7 @@ import { velarCompilerExtension as desktopCompiler, velarProjectExtension as des
|
|
|
4
4
|
import { velarFrameworkHost as desktopHost } from "@velarscript/desktop/host";
|
|
5
5
|
import { VELAR_DESKTOP_API_VERSION } from "@velarscript/desktop";
|
|
6
6
|
import { VELAR_NODE_API_VERSION, velarCompilerExtension as nodeCompiler, velarProjectExtension as nodeProject, } from "@velarscript/node/compiler";
|
|
7
|
+
import { VELAR_SERVER_API_VERSION, velarCompilerExtension as serverCompiler, velarProjectExtension as serverProject, } from "@velarscript/server/compiler";
|
|
7
8
|
import { registerBundledExtension } from "./bundled-extension-registry.js";
|
|
8
9
|
import { VELAR_VERSION } from "./version.js";
|
|
9
10
|
export function installOfficialLanguageServerExtensions() {
|
|
@@ -19,6 +20,18 @@ export function installOfficialLanguageServerExtensions() {
|
|
|
19
20
|
project: nodeProject,
|
|
20
21
|
host: null,
|
|
21
22
|
});
|
|
23
|
+
registerBundledExtension({
|
|
24
|
+
name: "@velarscript/server",
|
|
25
|
+
version: VELAR_VERSION,
|
|
26
|
+
kind: "application",
|
|
27
|
+
apiVersion: VELAR_SERVER_API_VERSION,
|
|
28
|
+
manifestKey: "server",
|
|
29
|
+
extends: Object.freeze({}),
|
|
30
|
+
composes: Object.freeze({ "@velarscript/node": VELAR_NODE_API_VERSION }),
|
|
31
|
+
compiler: serverCompiler,
|
|
32
|
+
project: serverProject,
|
|
33
|
+
host: null,
|
|
34
|
+
});
|
|
22
35
|
registerBundledExtension({
|
|
23
36
|
name: "@velarscript/web",
|
|
24
37
|
version: VELAR_VERSION,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"official-language-server-extensions.js","sourceRoot":"","sources":["../src/official-language-server-extensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,IAAI,WAAW,EAAE,qBAAqB,IAAI,UAAU,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAC9I,OAAO,EAAE,kBAAkB,IAAI,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,sBAAsB,IAAI,eAAe,EAAE,qBAAqB,IAAI,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACnI,OAAO,EAAE,kBAAkB,IAAI,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EACL,sBAAsB,EACtB,sBAAsB,IAAI,YAAY,EACtC,qBAAqB,IAAI,WAAW,GACrC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,UAAU,uCAAuC;IACrD,wBAAwB,CAAC;QACvB,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,aAAa;QACtB,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,sBAAsB;QAClC,WAAW,EAAE,MAAM;QACnB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,WAAW;QACpB,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IACH,wBAAwB,CAAC;QACvB,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,aAAa;QACtB,IAAI,EAAE,aAAa;QACnB,UAAU,EAAE,qBAAqB;QACjC,WAAW,EAAE,KAAK;QAClB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,UAAU;QACnB,IAAI,EAAE,OAAO;KACd,CAAC,CAAC;IACH,wBAAwB,CAAC;QACvB,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,aAAa;QACtB,IAAI,EAAE,aAAa;QACnB,UAAU,EAAE,yBAAyB;QACrC,WAAW,EAAE,SAAS;QACtB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;YACtB,kBAAkB,EAAE,qBAAqB;YACzC,mBAAmB,EAAE,sBAAsB;SAC5C,CAAC;QACF,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE,WAAW;KAClB,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"official-language-server-extensions.js","sourceRoot":"","sources":["../src/official-language-server-extensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,IAAI,WAAW,EAAE,qBAAqB,IAAI,UAAU,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAC9I,OAAO,EAAE,kBAAkB,IAAI,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,sBAAsB,IAAI,eAAe,EAAE,qBAAqB,IAAI,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACnI,OAAO,EAAE,kBAAkB,IAAI,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EACL,sBAAsB,EACtB,sBAAsB,IAAI,YAAY,EACtC,qBAAqB,IAAI,WAAW,GACrC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,wBAAwB,EACxB,sBAAsB,IAAI,cAAc,EACxC,qBAAqB,IAAI,aAAa,GACvC,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,UAAU,uCAAuC;IACrD,wBAAwB,CAAC;QACvB,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,aAAa;QACtB,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE,sBAAsB;QAClC,WAAW,EAAE,MAAM;QACnB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,WAAW;QACpB,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IACH,wBAAwB,CAAC;QACvB,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,aAAa;QACtB,IAAI,EAAE,aAAa;QACnB,UAAU,EAAE,wBAAwB;QACpC,WAAW,EAAE,QAAQ;QACrB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAC,mBAAmB,EAAE,sBAAsB,EAAC,CAAC;QACtE,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,aAAa;QACtB,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IACH,wBAAwB,CAAC;QACvB,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,aAAa;QACtB,IAAI,EAAE,aAAa;QACnB,UAAU,EAAE,qBAAqB;QACjC,WAAW,EAAE,KAAK;QAClB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,UAAU;QACnB,IAAI,EAAE,OAAO;KACd,CAAC,CAAC;IACH,wBAAwB,CAAC;QACvB,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,aAAa;QACtB,IAAI,EAAE,aAAa;QACnB,UAAU,EAAE,yBAAyB;QACrC,WAAW,EAAE,SAAS;QACtB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;YACtB,kBAAkB,EAAE,qBAAqB;YACzC,mBAAmB,EAAE,sBAAsB;SAC5C,CAAC;QACF,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE,WAAW;KAClB,CAAC,CAAC;AACL,CAAC"}
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@velarscript/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.1",
|
|
4
4
|
"description": "The VelarScript command-line compiler, dev server, test runner, and language server.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -30,12 +30,13 @@
|
|
|
30
30
|
"velar": "./dist/cli.js"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@velarscript/compiler": "0.
|
|
34
|
-
"@velarscript/core": "0.
|
|
35
|
-
"@velarscript/desktop": "0.
|
|
36
|
-
"@velarscript/node": "0.
|
|
37
|
-
"@velarscript/
|
|
38
|
-
"
|
|
33
|
+
"@velarscript/compiler": "0.14.1",
|
|
34
|
+
"@velarscript/core": "0.14.1",
|
|
35
|
+
"@velarscript/desktop": "0.14.1",
|
|
36
|
+
"@velarscript/node": "0.14.1",
|
|
37
|
+
"@velarscript/server": "0.14.1",
|
|
38
|
+
"@velarscript/web": "0.14.1",
|
|
39
|
+
"create-velar": "0.14.1",
|
|
39
40
|
"esbuild": "^0.28.1",
|
|
40
41
|
"playwright": "^1.58.2"
|
|
41
42
|
}
|
package/skill/ai-skill-node.md
CHANGED
|
@@ -4,10 +4,17 @@ Load this after `velar skill core`. This brief contains only the Node owner’s
|
|
|
4
4
|
contract. Core does not learn server declarations, path-pattern strings, Node
|
|
5
5
|
capabilities, or application configuration.
|
|
6
6
|
|
|
7
|
-
## Ownership and application entry
|
|
7
|
+
## Ownership and low-level application entry
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
`@velarscript/node` is a capability extension. It owns route syntax,
|
|
10
|
+
path-pattern strings, Node modules, HTTP/WebSocket transport, and low-level
|
|
11
|
+
server lifecycle; it does not own convention-based application configuration.
|
|
12
|
+
An ordinary service activates `@velarscript/server` and then loads
|
|
13
|
+
`velar skill server` for root `application.*`, application assembly, and
|
|
14
|
+
connection lifecycle.
|
|
15
|
+
|
|
16
|
+
A deliberately low-level Node application may activate Node directly and name
|
|
17
|
+
one exported zero-argument async startup function:
|
|
11
18
|
|
|
12
19
|
```json
|
|
13
20
|
{
|
|
@@ -17,50 +24,47 @@ one typed WebSocket startup function:
|
|
|
17
24
|
"publicDir": "public",
|
|
18
25
|
"extensions": ["@velarscript/node"],
|
|
19
26
|
"node": {
|
|
20
|
-
"app": "
|
|
21
|
-
"host": "127.0.0.1",
|
|
22
|
-
"port": 3000,
|
|
23
|
-
"maxBodyBytes": 16777216,
|
|
27
|
+
"app": "start",
|
|
24
28
|
"build": {"sourceMaps": false}
|
|
25
29
|
}
|
|
26
30
|
}
|
|
27
31
|
```
|
|
28
32
|
|
|
29
|
-
The entry
|
|
30
|
-
or top-level `serve(...)` call:
|
|
33
|
+
The low-level entry owns its own startup arguments in code:
|
|
31
34
|
|
|
32
35
|
```velar fragment
|
|
33
|
-
import {
|
|
36
|
+
import {serve} from "velar/serve"
|
|
37
|
+
import {app} from "./app.vel"
|
|
34
38
|
|
|
35
|
-
export
|
|
39
|
+
export async def start():
|
|
40
|
+
return await serve(app, port=3000, host="127.0.0.1")
|
|
36
41
|
```
|
|
37
42
|
|
|
38
|
-
For one shared HTTP/WebSocket application port,
|
|
39
|
-
|
|
43
|
+
For one shared HTTP/WebSocket application port, the same exact zero-argument
|
|
44
|
+
shape returns `Promise<WebSocketServer>`:
|
|
40
45
|
|
|
41
46
|
```velar fragment
|
|
42
47
|
import {app as routes} from "./app.vel"
|
|
43
48
|
import {listen} from "velar/websocket"
|
|
44
49
|
|
|
45
|
-
export async def start(
|
|
50
|
+
export async def start():
|
|
46
51
|
return await listen({
|
|
47
|
-
host,
|
|
48
|
-
port,
|
|
52
|
+
host: "127.0.0.1",
|
|
53
|
+
port: 3000,
|
|
49
54
|
http: routes,
|
|
50
55
|
path: "/api/events",
|
|
51
56
|
origins: ["https://app.example.com"],
|
|
52
|
-
maxBodyBytes,
|
|
57
|
+
maxBodyBytes: 16777216,
|
|
53
58
|
})
|
|
54
59
|
```
|
|
55
60
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
the same three configured values.
|
|
61
|
+
The exact result is `Promise<WebSocketServer>`. The launcher supplies no
|
|
62
|
+
host, port, or body-limit parameters.
|
|
59
63
|
|
|
60
|
-
Use
|
|
61
|
-
|
|
62
|
-
`
|
|
63
|
-
|
|
64
|
+
Use direct Node activation for tools, embedded adapters, and tests. For an
|
|
65
|
+
application service, activate `@velarscript/server`; it provides the same
|
|
66
|
+
`velar dev`, `velar serve`, and standalone `velar build` workflow without a
|
|
67
|
+
second runtime configuration source.
|
|
64
68
|
|
|
65
69
|
`@name` keeps its one language-wide role: it qualifies a compiler-owned name
|
|
66
70
|
in the current context. In a `server` block, the available names are `@get`,
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# The VelarScript Server AI skill brief
|
|
2
|
+
|
|
3
|
+
Load this after `velar skill core` and `velar skill node`. This brief contains
|
|
4
|
+
only the convention-based Server application framework. Node still owns route
|
|
5
|
+
syntax, HTTP/WebSocket transport, filesystem, process, and the low-level
|
|
6
|
+
`velar/serve` runtime.
|
|
7
|
+
|
|
8
|
+
## Activation and ownership
|
|
9
|
+
|
|
10
|
+
A service installs and explicitly activates `@velarscript/server`, just as a
|
|
11
|
+
browser application activates `@velarscript/web`:
|
|
12
|
+
|
|
13
|
+
```json
|
|
14
|
+
{
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"@velarscript/server": "0.14.1"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"formatVersion": 2,
|
|
24
|
+
"entry": "src/main.vel",
|
|
25
|
+
"outDir": "dist",
|
|
26
|
+
"publicDir": "public",
|
|
27
|
+
"extensions": ["@velarscript/server"]
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The Server application extension composes the Node capability. Do not list both
|
|
32
|
+
extensions. Without `@velarscript/server`, `velar/server` is unavailable and
|
|
33
|
+
root application configuration is not loaded.
|
|
34
|
+
|
|
35
|
+
The conventional entry export is `start`. A different exported binding may be
|
|
36
|
+
selected with the optional `server.app` manifest field; `server.build.sourceMaps`
|
|
37
|
+
is the only build setting. Host, port, request limits, database locations, and
|
|
38
|
+
other runtime settings never belong in `velar.json`.
|
|
39
|
+
|
|
40
|
+
## Convention-based application configuration
|
|
41
|
+
|
|
42
|
+
The only conventional configuration file is root `application.yml`.
|
|
43
|
+
|
|
44
|
+
YAML and JSON enter the same checked runtime-Type boundary. Files are bounded;
|
|
45
|
+
YAML is strict, rejects duplicate keys, and limits aliases. An explicit
|
|
46
|
+
`.yml`, `.yaml`, or `.json` path is the escape hatch for deployment-specific
|
|
47
|
+
configuration; other root filenames are never discovered by convention.
|
|
48
|
+
|
|
49
|
+
The framework-owned server section is:
|
|
50
|
+
|
|
51
|
+
```yaml
|
|
52
|
+
server:
|
|
53
|
+
host: 127.0.0.1
|
|
54
|
+
port: 3000
|
|
55
|
+
maxBodyBytes: 16777216
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
All three fields are optional. Their defaults are `127.0.0.1`, `3000`, and
|
|
59
|
+
16 MiB. `application(app)` reads this section when the server starts:
|
|
60
|
+
|
|
61
|
+
```velar
|
|
62
|
+
import {application} from "velar/server"
|
|
63
|
+
|
|
64
|
+
export server routes:
|
|
65
|
+
@get(p"/health") => {status: "ready"}
|
|
66
|
+
|
|
67
|
+
export const start = application(routes)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
`velar dev`, `velar serve`, and the standalone `velar build` output use the
|
|
71
|
+
same root configuration. CLI `--host` and Node `--port` overrides are not a
|
|
72
|
+
second configuration channel. A missing conventional file uses the server
|
|
73
|
+
defaults; when application-specific settings are required, load the full file
|
|
74
|
+
with `configuration(Type)`, which requires the file to exist.
|
|
75
|
+
|
|
76
|
+
## Typed application settings
|
|
77
|
+
|
|
78
|
+
Declare the application-owned shape and load it through its Runtime Type:
|
|
79
|
+
|
|
80
|
+
```velar
|
|
81
|
+
import {configuration} from "velar/server"
|
|
82
|
+
|
|
83
|
+
type ServerSettings:
|
|
84
|
+
host: string
|
|
85
|
+
port: number
|
|
86
|
+
maxBodyBytes: number
|
|
87
|
+
|
|
88
|
+
type DatabaseSettings:
|
|
89
|
+
path: string
|
|
90
|
+
busyTimeoutMilliseconds: number
|
|
91
|
+
|
|
92
|
+
type ApplicationSettings:
|
|
93
|
+
server: ServerSettings
|
|
94
|
+
database: DatabaseSettings
|
|
95
|
+
|
|
96
|
+
export const settings = await configuration(ApplicationSettings)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
`configuration(Type, path=null, maxBytes=65536)` returns
|
|
100
|
+
`Promise<Type>`. A non-null path must end in `.yml`, `.yaml`, or `.json`.
|
|
101
|
+
The framework parses syntax; the application Runtime Type owns field names and
|
|
102
|
+
types, and application validation still owns domain ranges and invariants.
|
|
103
|
+
Environment variables may form an explicit deployment override layer, but
|
|
104
|
+
secrets do not belong in application configuration.
|
|
105
|
+
|
|
106
|
+
## Abstract database connection lifecycle
|
|
107
|
+
|
|
108
|
+
`database(connect, disconnect)` creates an eager application-scoped
|
|
109
|
+
`Provider<Connection>`. It establishes one typed connection during application
|
|
110
|
+
startup, injects that same value into routes, and disconnects it during
|
|
111
|
+
application shutdown after admitted work has drained:
|
|
112
|
+
|
|
113
|
+
```velar
|
|
114
|
+
import {database} from "velar/server"
|
|
115
|
+
import {input} from "velar/serve"
|
|
116
|
+
|
|
117
|
+
type Connection:
|
|
118
|
+
name: string
|
|
119
|
+
close: () -> Promise<null>
|
|
120
|
+
|
|
121
|
+
const connection = database(
|
|
122
|
+
connect=async () => {name: "primary", close: async () => null},
|
|
123
|
+
disconnect=async value => await value.close(),
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
export server databaseRoutes:
|
|
127
|
+
@get(p"/database", value=input.dependency(connection)) => {name: value.name}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
The framework owns only this connect/inject/disconnect lifecycle. Concrete
|
|
131
|
+
drivers, pools, database models, schemas, queries, migrations, transactions,
|
|
132
|
+
dialect behavior, retry rules, and credentials remain independently installed
|
|
133
|
+
application dependencies. Do not add SQLite, PostgreSQL, an ORM, or model
|
|
134
|
+
syntax to `@velarscript/server` or `@velarscript/node`.
|
|
135
|
+
|
|
136
|
+
## Custom shared HTTP/WebSocket startup
|
|
137
|
+
|
|
138
|
+
A service that needs one custom shared HTTP/WebSocket listener may load the same
|
|
139
|
+
typed configuration and export an exact zero-argument async startup function:
|
|
140
|
+
|
|
141
|
+
```velar fragment
|
|
142
|
+
import {configuration} from "velar/server"
|
|
143
|
+
import {listen} from "velar/websocket"
|
|
144
|
+
|
|
145
|
+
type ServerSettings:
|
|
146
|
+
host: string
|
|
147
|
+
port: number
|
|
148
|
+
maxBodyBytes: number
|
|
149
|
+
|
|
150
|
+
type Settings:
|
|
151
|
+
server: ServerSettings
|
|
152
|
+
|
|
153
|
+
const settings = await configuration(Settings)
|
|
154
|
+
|
|
155
|
+
export async def start():
|
|
156
|
+
return await listen({
|
|
157
|
+
host: settings.server.host,
|
|
158
|
+
port: settings.server.port,
|
|
159
|
+
http: routes,
|
|
160
|
+
path: "/events",
|
|
161
|
+
origins: ["https://app.example.com"],
|
|
162
|
+
maxBodyBytes: settings.server.maxBodyBytes,
|
|
163
|
+
})
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
The result must be exactly `Promise<WebSocketServer>`. The launcher supplies no
|
|
167
|
+
host, port, or body-limit arguments; the root application configuration remains
|
|
168
|
+
the single runtime authority.
|
|
169
|
+
|
|
170
|
+
Use direct `serve(app, port=0)` in tests or embedded low-level adapters. Use
|
|
171
|
+
`velar/server-test` only from `*.test.vel`. Route, provider, transport,
|
|
172
|
+
Origin-admission, resource-limit, and shutdown semantics are documented in the
|
|
173
|
+
Node brief because Node owns those primitives.
|