@vetala/vetala 0.3.1-dev → 0.3.3-dev

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 CHANGED
@@ -27,6 +27,19 @@ Current provider support includes Sarvam AI and OpenRouter.
27
27
 
28
28
  ## Patch Notes
29
29
 
30
+ ### v0.3.3-dev
31
+
32
+ - **Cross-Platform TUI Packaging**: npm packages now bundle prebuilt TUI binaries for `linux`, `darwin`, and `win32` on `x64` and `arm64`, with the CLI selecting the matching binary at runtime.
33
+ - **Installed Backend Launcher Fix**: The bundled Go TUI now resolves the package root correctly and starts the compiled backend from `dist/src/ipc-backend.js` in published installs.
34
+ - **Dev Fallback Retained**: Source checkouts still fall back to `npx tsx src/ipc-backend.ts` when the compiled backend is unavailable.
35
+ - **Release Guardrails**: Added Go-side launcher tests, release-time cross-build coverage, and installed-package smoke checks so packaged installs keep working.
36
+
37
+ ### v0.3.2-dev
38
+
39
+ - **Bundled TUI Packaging Fix**: Published installs now include the `tui/vetala` binary required by the global `vetala` launcher.
40
+ - **Clearer Startup Failure**: The CLI now reports an explicit install error when the bundled TUI binary is missing instead of crashing with an unhandled `ENOENT`.
41
+ - **Packaging Regression Coverage**: Added a regression test to keep the packaged file list and app version metadata in sync.
42
+
30
43
  ### v0.3.1-dev
31
44
 
32
45
  - **Improved Search Matching**: Fixed a bug in `search_repo` glob matching to correctly handle nested directory patterns and absolute paths.
@@ -45,7 +58,7 @@ Current provider support includes Sarvam AI and OpenRouter.
45
58
 
46
59
  Vetala is currently tested on Linux.
47
60
 
48
- Windows and macOS have not been validated yet.
61
+ Published npm installs bundle prebuilt TUI binaries for Linux, macOS, and Windows on `x64` and `arm64`, but macOS and Windows should still be treated as early-support targets until they receive broader validation.
49
62
 
50
63
  ## Installation
51
64
 
@@ -56,14 +69,19 @@ npm install -g @vetala/vetala
56
69
  vetala
57
70
  ```
58
71
 
72
+ The published npm package bundles the TUI binary for supported targets, so end users do not need Go for a normal install.
73
+
59
74
  ### Local development install
60
75
 
61
76
  ```bash
62
77
  npm install
78
+ npm run build:tui
63
79
  npm link
64
80
  vetala
65
81
  ```
66
82
 
83
+ `npm run build:tui` is only needed for source checkouts and requires Go.
84
+
67
85
  The package is published as `@vetala/vetala` and exposes a global `vetala` binary through `package.json`.
68
86
 
69
87
  ## Getting Started
@@ -1,3 +1,3 @@
1
1
  export declare const APP_NAME = "Vetala";
2
- export declare const APP_VERSION = "0.3.1-dev";
2
+ export declare const APP_VERSION = "0.3.3-dev";
3
3
  export declare const APP_TAGLINE = "multi-provider coding cli";
@@ -1,4 +1,4 @@
1
1
  export const APP_NAME = "Vetala";
2
- export const APP_VERSION = "0.3.1-dev";
2
+ export const APP_VERSION = "0.3.3-dev";
3
3
  export const APP_TAGLINE = "multi-provider coding cli";
4
4
  //# sourceMappingURL=app-meta.js.map
package/dist/src/cli.js CHANGED
@@ -13,6 +13,7 @@ import { SessionStore } from "./session-store.js";
13
13
  import { SkillRuntime } from "./skills/runtime.js";
14
14
  import { TerminalUI } from "./terminal-ui.js";
15
15
  import { createToolRegistry } from "./tools/index.js";
16
+ import { formatSupportedTuiTargets, resolveBundledTuiBinaryCandidates } from "./tui-binary.js";
16
17
  import { ensureWorkspaceTrust } from "./workspace-trust.js";
17
18
  const program = new Command();
18
19
  program
@@ -26,7 +27,8 @@ program
26
27
  .option("--model <model>", "Override the model for this run")
27
28
  .action(async (options) => {
28
29
  const { spawn } = await import("node:child_process");
29
- const { readFile } = await import("node:fs/promises");
30
+ const { constants } = await import("node:fs");
31
+ const { access, readFile } = await import("node:fs/promises");
30
32
  const { join } = await import("node:path");
31
33
  const { fileURLToPath } = await import("node:url");
32
34
  const { default: updateNotifier } = await import("update-notifier");
@@ -65,11 +67,34 @@ program
65
67
  await runOneShot(options.prompt, session, config, store, ui, runtimeProfile);
66
68
  return;
67
69
  }
68
- // The TUI binary is built in the tui/ subdirectory relative to the project root
69
- const tuiBin = join(projectRoot, "tui", "vetala");
70
+ const requiredAccess = process.platform === "win32" ? constants.F_OK : constants.X_OK;
71
+ const tuiResolution = resolveBundledTuiBinaryCandidates(projectRoot);
72
+ const missingTuiMessage = buildMissingTuiMessage(tuiResolution);
73
+ let tuiBin = null;
74
+ for (const candidate of tuiResolution.candidates) {
75
+ try {
76
+ await access(candidate, requiredAccess);
77
+ tuiBin = candidate;
78
+ break;
79
+ }
80
+ catch {
81
+ // Try the next packaged or local-dev fallback candidate.
82
+ }
83
+ }
84
+ if (!tuiBin) {
85
+ throw new Error(missingTuiMessage);
86
+ }
70
87
  const tuiProcess = spawn(tuiBin, ["--workspace", session.workspaceRoot], {
71
88
  stdio: "inherit"
72
89
  });
90
+ tuiProcess.on("error", (error) => {
91
+ if (error.code === "ENOENT") {
92
+ console.error(missingTuiMessage);
93
+ process.exit(1);
94
+ return;
95
+ }
96
+ throw error;
97
+ });
73
98
  tuiProcess.on("close", (code) => {
74
99
  process.exit(code ?? 0);
75
100
  });
@@ -118,4 +143,23 @@ async function runOneShot(prompt, session, config, store, ui, runtimeProfile) {
118
143
  function resolveProviderOption(value) {
119
144
  return resolveProviderName(value);
120
145
  }
146
+ function buildMissingTuiMessage(resolution) {
147
+ const checked = resolution.candidates.map((candidate) => `- ${candidate}`).join("\n");
148
+ if (!resolution.supported) {
149
+ return [
150
+ `Vetala does not currently bundle a TUI binary for ${process.platform}/${process.arch}.`,
151
+ `Supported targets: ${formatSupportedTuiTargets()}.`,
152
+ "Checked these local fallback paths:",
153
+ checked,
154
+ "Reinstall a supported package build, run `npm run dev`, or build the TUI manually from a repo checkout."
155
+ ].join("\n");
156
+ }
157
+ return [
158
+ `Vetala could not find its bundled TUI binary for ${process.platform}/${process.arch}.`,
159
+ `Expected package file: ${resolution.preferredRelativePath}.`,
160
+ "Checked these paths:",
161
+ checked,
162
+ "This install is incomplete. Reinstall a package that includes the platform-specific TUI binary, or run `npm run dev` from a repo checkout."
163
+ ].join("\n");
164
+ }
121
165
  //# sourceMappingURL=cli.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare const BUNDLED_TUI_FILES: string[];
2
+ export declare function resolveBundledTuiFileName(platform: string, arch: string): string | null;
3
+ export declare function resolveBundledTuiBinaryCandidates(projectRoot: string, platform?: string, arch?: string): {
4
+ preferredRelativePath: string | null;
5
+ candidates: string[];
6
+ supported: boolean;
7
+ };
8
+ export declare function formatSupportedTuiTargets(): string;
@@ -0,0 +1,32 @@
1
+ import path from "node:path";
2
+ const TUI_TARGETS = [
3
+ { platform: "linux", arch: "x64", fileName: "vetala-linux-x64" },
4
+ { platform: "linux", arch: "arm64", fileName: "vetala-linux-arm64" },
5
+ { platform: "darwin", arch: "x64", fileName: "vetala-darwin-x64" },
6
+ { platform: "darwin", arch: "arm64", fileName: "vetala-darwin-arm64" },
7
+ { platform: "win32", arch: "x64", fileName: "vetala-win32-x64.exe" },
8
+ { platform: "win32", arch: "arm64", fileName: "vetala-win32-arm64.exe" }
9
+ ];
10
+ export const BUNDLED_TUI_FILES = TUI_TARGETS.map((target) => path.posix.join("tui", target.fileName));
11
+ export function resolveBundledTuiFileName(platform, arch) {
12
+ const target = TUI_TARGETS.find((candidate) => candidate.platform === platform && candidate.arch === arch);
13
+ return target?.fileName ?? null;
14
+ }
15
+ export function resolveBundledTuiBinaryCandidates(projectRoot, platform = process.platform, arch = process.arch) {
16
+ const preferredFileName = resolveBundledTuiFileName(platform, arch);
17
+ const legacyCandidates = platform === "win32"
18
+ ? [path.join(projectRoot, "tui", "vetala.exe"), path.join(projectRoot, "tui", "vetala")]
19
+ : [path.join(projectRoot, "tui", "vetala")];
20
+ const candidates = preferredFileName
21
+ ? [path.join(projectRoot, "tui", preferredFileName), ...legacyCandidates]
22
+ : legacyCandidates;
23
+ return {
24
+ preferredRelativePath: preferredFileName ? path.posix.join("tui", preferredFileName) : null,
25
+ candidates: [...new Set(candidates)],
26
+ supported: preferredFileName !== null
27
+ };
28
+ }
29
+ export function formatSupportedTuiTargets() {
30
+ return TUI_TARGETS.map((target) => `${target.platform}/${target.arch}`).join(", ");
31
+ }
32
+ //# sourceMappingURL=tui-binary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui-binary.js","sourceRoot":"","sources":["../../src/tui-binary.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAW7B,MAAM,WAAW,GAAgB;IAC/B,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE;IAChE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE;IACpE,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE;IAClE,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE;IACtE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,sBAAsB,EAAE;IACpE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,wBAAwB,EAAE;CACzE,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEtG,MAAM,UAAU,yBAAyB,CAAC,QAAgB,EAAE,IAAY;IACtE,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC3G,OAAO,MAAM,EAAE,QAAQ,IAAI,IAAI,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,WAAmB,EACnB,WAAmB,OAAO,CAAC,QAAQ,EACnC,OAAe,OAAO,CAAC,IAAI;IAM3B,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACpE,MAAM,gBAAgB,GACpB,QAAQ,KAAK,OAAO;QAClB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,iBAAiB;QAClC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,iBAAiB,CAAC,EAAE,GAAG,gBAAgB,CAAC;QACzE,CAAC,CAAC,gBAAgB,CAAC;IAErB,OAAO;QACL,qBAAqB,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,IAAI;QAC3F,UAAU,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QACpC,SAAS,EAAE,iBAAiB,KAAK,IAAI;KACtC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vetala/vetala",
3
- "version": "0.3.1-dev",
3
+ "version": "0.3.3-dev",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "description": "Terminal-first AI coding CLI with tools, memory, and local skills.",
@@ -30,6 +30,12 @@
30
30
  },
31
31
  "files": [
32
32
  "dist/src",
33
+ "tui/vetala-linux-x64",
34
+ "tui/vetala-linux-arm64",
35
+ "tui/vetala-darwin-x64",
36
+ "tui/vetala-darwin-arm64",
37
+ "tui/vetala-win32-x64.exe",
38
+ "tui/vetala-win32-arm64.exe",
33
39
  "skill",
34
40
  "README.md",
35
41
  "CONTRIBUTING.md",
@@ -42,10 +48,14 @@
42
48
  },
43
49
  "scripts": {
44
50
  "build": "tsc -p tsconfig.json",
51
+ "build:tui": "node scripts/build-tui.mjs",
52
+ "build:tui:all": "node scripts/build-tui.mjs --all",
45
53
  "check": "tsc --noEmit -p tsconfig.json",
46
54
  "dev": "tsx src/cli.ts",
55
+ "prepack": "npm run build:tui:all",
47
56
  "prepare": "npm run build",
48
- "test": "node --test --import tsx test/**/*.ts"
57
+ "test": "node --test --import tsx test/**/*.ts && npm run test:tui",
58
+ "test:tui": "cd tui && go test ."
49
59
  },
50
60
  "dependencies": {
51
61
  "@lydell/node-pty": "^1.2.0-beta.3",
@@ -62,4 +72,4 @@
62
72
  "tsx": "^4.20.5",
63
73
  "typescript": "^5.8.2"
64
74
  }
65
- }
75
+ }
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file