@velarscript/cli 0.11.1 → 0.12.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.
Files changed (74) hide show
  1. package/README.md +15 -10
  2. package/dist/cli.js +138 -40
  3. package/dist/cli.js.map +1 -1
  4. package/dist/deployment-verifier.d.ts.map +1 -1
  5. package/dist/deployment-verifier.js +1 -3
  6. package/dist/deployment-verifier.js.map +1 -1
  7. package/dist/extension-metadata.d.ts.map +1 -1
  8. package/dist/extension-metadata.js +1 -0
  9. package/dist/extension-metadata.js.map +1 -1
  10. package/dist/language-server-tool.d.ts +0 -1
  11. package/dist/language-server-tool.d.ts.map +1 -1
  12. package/dist/language-server-tool.js +0 -4
  13. package/dist/language-server-tool.js.map +1 -1
  14. package/dist/node-application.d.ts +13 -0
  15. package/dist/node-application.d.ts.map +1 -0
  16. package/dist/node-application.js +276 -0
  17. package/dist/node-application.js.map +1 -0
  18. package/dist/official-language-server-extensions.d.ts.map +1 -1
  19. package/dist/official-language-server-extensions.js +13 -1
  20. package/dist/official-language-server-extensions.js.map +1 -1
  21. package/dist/production-build.d.ts +1 -1
  22. package/dist/production-build.d.ts.map +1 -1
  23. package/dist/production-build.js +0 -2
  24. package/dist/production-build.js.map +1 -1
  25. package/dist/production-verifier.js +1 -17
  26. package/dist/production-verifier.js.map +1 -1
  27. package/dist/project-format.d.ts +1 -1
  28. package/dist/project-format.d.ts.map +1 -1
  29. package/dist/project-format.js +1 -1
  30. package/dist/project-format.js.map +1 -1
  31. package/dist/project.d.ts +3 -0
  32. package/dist/project.d.ts.map +1 -1
  33. package/dist/project.js +64 -0
  34. package/dist/project.js.map +1 -1
  35. package/dist/standard-modules.d.ts +3 -12
  36. package/dist/standard-modules.d.ts.map +1 -1
  37. package/dist/standard-modules.js +13 -3045
  38. package/dist/standard-modules.js.map +1 -1
  39. package/dist/static-deployment.d.ts +1 -8
  40. package/dist/static-deployment.d.ts.map +1 -1
  41. package/dist/static-deployment.js +3 -28
  42. package/dist/static-deployment.js.map +1 -1
  43. package/dist/test-output.d.ts +1 -1
  44. package/dist/test-output.d.ts.map +1 -1
  45. package/dist/test-output.js.map +1 -1
  46. package/dist/version.d.ts +2 -2
  47. package/dist/version.d.ts.map +1 -1
  48. package/dist/version.js +2 -2
  49. package/dist/version.js.map +1 -1
  50. package/package.json +9 -11
  51. package/skill/ai-skill-desktop.md +84 -0
  52. package/skill/ai-skill-node.md +287 -0
  53. package/skill/ai-skill-web.md +150 -0
  54. package/skill/ai-skill.md +36 -263
  55. package/dist/build-engine-tool.d.ts +0 -3
  56. package/dist/build-engine-tool.d.ts.map +0 -1
  57. package/dist/build-engine-tool.js +0 -34
  58. package/dist/build-engine-tool.js.map +0 -1
  59. package/dist/packaged-official-tool.d.ts +0 -8
  60. package/dist/packaged-official-tool.d.ts.map +0 -1
  61. package/dist/packaged-official-tool.js +0 -32
  62. package/dist/packaged-official-tool.js.map +0 -1
  63. package/dist/project-task-bundle-entry.d.ts +0 -2
  64. package/dist/project-task-bundle-entry.d.ts.map +0 -1
  65. package/dist/project-task-bundle-entry.js +0 -18
  66. package/dist/project-task-bundle-entry.js.map +0 -1
  67. package/dist/project-task-invocation.d.ts +0 -16
  68. package/dist/project-task-invocation.d.ts.map +0 -1
  69. package/dist/project-task-invocation.js +0 -72
  70. package/dist/project-task-invocation.js.map +0 -1
  71. package/dist/project-task-tool.d.ts +0 -3
  72. package/dist/project-task-tool.d.ts.map +0 -1
  73. package/dist/project-task-tool.js +0 -61
  74. package/dist/project-task-tool.js.map +0 -1
@@ -1,72 +0,0 @@
1
- import { tmpdir } from "node:os";
2
- import { basename, dirname, isAbsolute, relative } from "node:path";
3
- export const projectTaskCommands = [
4
- "check",
5
- "test",
6
- "browserTest",
7
- "build",
8
- "fix",
9
- "package",
10
- "run",
11
- ];
12
- export const projectTaskBrowserWorkerEnvironment = "VELAR_BROWSER_TEST_WORKER_V1";
13
- const supportedProjectTaskCommands = new Set(projectTaskCommands);
14
- const isProjectTaskCommand = (value) => typeof value === "string" && supportedProjectTaskCommands.has(value);
15
- /**
16
- * Translates Desktop's closed task vocabulary into the exact public CLI
17
- * invocation. The host never accepts arbitrary CLI options; adding a task is
18
- * an explicit capability change here and in velar/desktop.
19
- */
20
- export function projectTaskCliArguments(arguments_) {
21
- const [command, projectRoot, separator, ...programArguments] = arguments_;
22
- if (!isProjectTaskCommand(command) || typeof projectRoot !== "string"
23
- || !isAbsolute(projectRoot) || projectRoot.length > 4096 || projectRoot.includes("\0")) {
24
- return "invalid package-owned task invocation";
25
- }
26
- if (command === "run") {
27
- if (separator !== undefined && separator !== "--")
28
- return "invalid package-owned task invocation";
29
- return separator === undefined ? ["run", projectRoot] : ["run", projectRoot, "--", ...programArguments];
30
- }
31
- if (separator !== undefined || programArguments.length > 0)
32
- return "invalid package-owned task invocation";
33
- if (command === "browserTest")
34
- return ["test", projectRoot, "--browser=all"];
35
- return [command, projectRoot];
36
- }
37
- /**
38
- * The browser owner supervises its test body in a second invocation of the
39
- * same immutable tool. Desktop strips this private marker from the initial
40
- * task environment, so only the official supervisor can enter this path.
41
- */
42
- export function projectTaskBrowserWorkerCliArguments(arguments_, serializedLimits) {
43
- if (typeof serializedLimits !== "string" || serializedLimits.length < 2 || serializedLimits.length > 4096) {
44
- return "invalid supervised browser-test limits";
45
- }
46
- try {
47
- const limits = JSON.parse(serializedLimits);
48
- if (limits === null || typeof limits !== "object" || Array.isArray(limits)) {
49
- return "invalid supervised browser-test limits";
50
- }
51
- }
52
- catch {
53
- return "invalid supervised browser-test limits";
54
- }
55
- const [command, input, browser, ...rest] = arguments_;
56
- if (command === "test" && typeof input === "string" && isAbsolute(input)
57
- && /^--browser=(?:chromium|firefox|webkit|all)$/u.test(browser ?? "") && rest.length === 0) {
58
- return arguments_;
59
- }
60
- const [buildCommand, projectRoot, outFlag, outputDirectory, ...buildRest] = arguments_;
61
- const temporaryRoot = typeof outputDirectory === "string" ? dirname(outputDirectory) : "";
62
- const fromSystemTemporary = temporaryRoot === "" ? ".." : relative(tmpdir(), temporaryRoot);
63
- if (buildCommand === "build" && typeof projectRoot === "string" && isAbsolute(projectRoot)
64
- && outFlag === "--out-dir" && typeof outputDirectory === "string" && isAbsolute(outputDirectory)
65
- && basename(outputDirectory) === "site" && basename(temporaryRoot).startsWith("velar-browser-tests-")
66
- && fromSystemTemporary !== "" && fromSystemTemporary !== ".." && !fromSystemTemporary.startsWith("../")
67
- && !isAbsolute(fromSystemTemporary) && buildRest.length === 0) {
68
- return arguments_;
69
- }
70
- return "invalid supervised browser-test arguments";
71
- }
72
- //# sourceMappingURL=project-task-invocation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-task-invocation.js","sourceRoot":"","sources":["../src/project-task-invocation.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export declare const VELAR_PROJECT_TASK_TOOL_ID = "velar-project-task";
2
- export declare function buildProjectTaskTool(outputFile: string): Promise<void>;
3
- //# sourceMappingURL=project-task-tool.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-task-tool.d.ts","sourceRoot":"","sources":["../src/project-task-tool.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,0BAA0B,uBAAuB,CAAC;AAa/D,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC5E"}
@@ -1,61 +0,0 @@
1
- import { chmod, copyFile, mkdir } from "node:fs/promises";
2
- import { createRequire } from "node:module";
3
- import { dirname, join, resolve } from "node:path";
4
- import { fileURLToPath } from "node:url";
5
- import { build } from "esbuild";
6
- import { officialToolModulesPlugin } from "./official-tool-assets.js";
7
- import { copyPackagedOfficialTool } from "./packaged-official-tool.js";
8
- export const VELAR_PROJECT_TASK_TOOL_ID = "velar-project-task";
9
- async function copyPlaywrightMetadata(outputFile) {
10
- const require = createRequire(import.meta.url);
11
- const playwrightCoreRoot = dirname(require.resolve("playwright-core/package.json"));
12
- const destination = join(dirname(outputFile), "playwright-core");
13
- await mkdir(destination, { recursive: true });
14
- await Promise.all([
15
- copyFile(join(playwrightCoreRoot, "package.json"), join(destination, "package.json")),
16
- copyFile(join(playwrightCoreRoot, "browsers.json"), join(destination, "browsers.json")),
17
- ]);
18
- }
19
- export async function buildProjectTaskTool(outputFile) {
20
- outputFile = resolve(outputFile);
21
- if (await copyPackagedOfficialTool(outputFile, "host/project-task.js", 0o644)) {
22
- await Promise.all([
23
- copyPackagedOfficialTool(join(dirname(outputFile), "playwright-core", "package.json"), "host/playwright-core/package.json", 0o644),
24
- copyPackagedOfficialTool(join(dirname(outputFile), "playwright-core", "browsers.json"), "host/playwright-core/browsers.json", 0o644),
25
- ]);
26
- return;
27
- }
28
- const sourceExtension = import.meta.url.endsWith(".ts") ? "ts" : "js";
29
- await mkdir(dirname(outputFile), { recursive: true });
30
- await build({
31
- entryPoints: [fileURLToPath(new URL(`./project-task-bundle-entry.${sourceExtension}`, import.meta.url))],
32
- outfile: outputFile,
33
- bundle: true,
34
- format: "esm",
35
- platform: "node",
36
- target: "node24",
37
- minify: true,
38
- treeShaking: true,
39
- sourcemap: false,
40
- legalComments: "none",
41
- logLevel: "silent",
42
- banner: { js: "import {createRequire as __velarCreateRequire} from 'node:module';import {fileURLToPath as __velarFileURLToPath} from 'node:url';import {dirname as __velarDirname,join as __velarJoin} from 'node:path';const require=__velarCreateRequire(import.meta.url);const __filename=__velarFileURLToPath(import.meta.url);const __dirname=__velarJoin(__velarDirname(__filename),'playwright-core','lib');" },
43
- plugins: [
44
- {
45
- name: "velar-project-task-browser-boundary",
46
- setup(buildContext) {
47
- // Browser-test tasks use Playwright's public launchServer/connect
48
- // surface. Its package also carries optional filesystem watching and
49
- // Chromium BiDi branches that this finite task never invokes. Keep
50
- // those native/dynamic edges outside the self-contained task bundle;
51
- // an accidental call still fails closed at module resolution.
52
- buildContext.onResolve({ filter: /^(?:fsevents|chromium-bidi\/)/ }, (args) => ({ path: args.path, external: true }));
53
- },
54
- },
55
- await officialToolModulesPlugin(),
56
- ],
57
- });
58
- await copyPlaywrightMetadata(outputFile);
59
- await chmod(outputFile, 0o644);
60
- }
61
- //# sourceMappingURL=project-task-tool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-task-tool.js","sourceRoot":"","sources":["../src/project-task-tool.ts"],"names":[],"mappings":"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"}