veto-sdk 1.15.0 → 1.15.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 CHANGED
@@ -193,6 +193,7 @@ Migration notes:
193
193
 
194
194
  - Legacy REPL is still available via `npx veto repl --legacy`.
195
195
  - Studio template fallback is opt-in (`--demo-template` or `studio.generation.allowTemplateFallback: true`).
196
+ - OpenTUI currently requires Bun runtime APIs. On Node.js, Studio auto-falls back to ANSI renderer.
196
197
 
197
198
  Veto Studio examples:
198
199
 
@@ -1 +1 @@
1
- {"version":3,"file":"opentui.d.ts","sourceRoot":"","sources":["../../../../src/cli/studio/renderers/opentui.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAQrE,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAwB;IACzD,OAAO,CAAC,OAAO,CAAU;IAEnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IASrB,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;IAIjC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B;AAED,wBAAgB,qBAAqB,IAAI,cAAc,CAEtD"}
1
+ {"version":3,"file":"opentui.d.ts","sourceRoot":"","sources":["../../../../src/cli/studio/renderers/opentui.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAkCrE,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAwB;IACzD,OAAO,CAAC,OAAO,CAAU;IAEnB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBrB,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;IAIjC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B;AAED,wBAAgB,qBAAqB,IAAI,cAAc,CAEtD"}
@@ -1,14 +1,39 @@
1
1
  import { createAnsiRenderer } from './ansi.js';
2
2
  const OPENTUI_CORE_MODULE = '@opentui/core';
3
+ const NODE_RUNTIME_NAME = 'Node.js';
3
4
  async function dynamicImport(moduleName) {
4
5
  return await import(moduleName);
5
6
  }
7
+ function resolveRuntimeName() {
8
+ if (process.versions?.bun) {
9
+ return 'Bun';
10
+ }
11
+ return NODE_RUNTIME_NAME;
12
+ }
13
+ function normalizeOpenTuiImportError(error) {
14
+ const message = error instanceof Error ? error.message : String(error);
15
+ if (message.includes('Cannot find package')) {
16
+ return new Error(`OpenTUI package "${OPENTUI_CORE_MODULE}" is not installed in this environment.`);
17
+ }
18
+ if (message.includes("protocol 'bun:'") || message.includes('bun:ffi')) {
19
+ return new Error(`OpenTUI currently requires Bun runtime APIs (bun:ffi). Current runtime: ${resolveRuntimeName()}.`);
20
+ }
21
+ return new Error(message);
22
+ }
6
23
  export class OpenTuiStudioRenderer {
7
24
  mode = 'opentui';
8
25
  fallbackRenderer = createAnsiRenderer();
9
26
  runtime;
10
27
  async init() {
11
- this.runtime = await dynamicImport(OPENTUI_CORE_MODULE);
28
+ if (!process.versions?.bun) {
29
+ throw new Error(`OpenTUI currently requires Bun runtime APIs (bun:ffi). Current runtime: ${resolveRuntimeName()}.`);
30
+ }
31
+ try {
32
+ this.runtime = await dynamicImport(OPENTUI_CORE_MODULE);
33
+ }
34
+ catch (error) {
35
+ throw normalizeOpenTuiImportError(error);
36
+ }
12
37
  if (!this.runtime || typeof this.runtime !== 'object') {
13
38
  throw new Error('OpenTUI runtime initialized with an invalid module object.');
14
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"opentui.js","sourceRoot":"","sources":["../../../../src/cli/studio/renderers/opentui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAI/C,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAE5C,KAAK,UAAU,aAAa,CAAC,UAAkB;IAC7C,OAAO,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,OAAO,qBAAqB;IACvB,IAAI,GAAG,SAAkB,CAAC;IAClB,gBAAgB,GAAG,kBAAkB,EAAE,CAAC;IACjD,OAAO,CAAU;IAEzB,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,OAAO,GAAG,MAAM,aAAa,CAAC,mBAAmB,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAwB;QACnC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,qBAAqB,EAAE,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"opentui.js","sourceRoot":"","sources":["../../../../src/cli/studio/renderers/opentui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAI/C,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAC5C,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAEpC,KAAK,UAAU,aAAa,CAAC,UAAkB;IAC7C,OAAO,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,kBAAkB;IACzB,IAAI,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAc;IACjD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEvE,IAAI,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAI,KAAK,CACd,oBAAoB,mBAAmB,yCAAyC,CACjF,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACvE,OAAO,IAAI,KAAK,CACd,2EAA2E,kBAAkB,EAAE,GAAG,CACnG,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,OAAO,qBAAqB;IACvB,IAAI,GAAG,SAAkB,CAAC;IAClB,gBAAgB,GAAG,kBAAkB,EAAE,CAAC;IACjD,OAAO,CAAU;IAEzB,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,2EAA2E,kBAAkB,EAAE,GAAG,CACnG,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,GAAG,MAAM,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,2BAA2B,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAwB;QACnC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,SAAS;QACb,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,qBAAqB,EAAE,CAAC;AACrC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAUA,wBAAgB,aAAa,IAAI,MAAM,CAsBtC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AA4CA,wBAAgB,aAAa,IAAI,MAAM,CActC"}
@@ -2,14 +2,10 @@ import { existsSync, readFileSync } from 'node:fs';
2
2
  import { dirname, join } from 'node:path';
3
3
  import { fileURLToPath } from 'node:url';
4
4
  const FALLBACK_VERSION = '0.0.0';
5
- export function getCliVersion() {
6
- if (typeof process.env.npm_package_version === 'string' && process.env.npm_package_version.trim()) {
7
- return process.env.npm_package_version.trim();
8
- }
9
- const currentDir = dirname(fileURLToPath(import.meta.url));
10
- const packageJsonPath = join(currentDir, '..', '..', 'package.json');
5
+ const PACKAGE_NAME = 'veto-sdk';
6
+ function readVersionFromPackageJson(packageJsonPath) {
11
7
  if (!existsSync(packageJsonPath)) {
12
- return FALLBACK_VERSION;
8
+ return undefined;
13
9
  }
14
10
  try {
15
11
  const parsed = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
@@ -18,7 +14,31 @@ export function getCliVersion() {
18
14
  }
19
15
  }
20
16
  catch {
21
- return FALLBACK_VERSION;
17
+ return undefined;
18
+ }
19
+ return undefined;
20
+ }
21
+ function readVersionFromNpmEnv() {
22
+ const packageName = process.env.npm_package_name?.trim();
23
+ const packageVersion = process.env.npm_package_version?.trim();
24
+ if (!packageVersion) {
25
+ return undefined;
26
+ }
27
+ if (packageName && packageName !== PACKAGE_NAME) {
28
+ return undefined;
29
+ }
30
+ return packageVersion;
31
+ }
32
+ export function getCliVersion() {
33
+ const currentDir = dirname(fileURLToPath(import.meta.url));
34
+ const packageJsonPath = join(currentDir, '..', '..', 'package.json');
35
+ const fileVersion = readVersionFromPackageJson(packageJsonPath);
36
+ if (fileVersion) {
37
+ return fileVersion;
38
+ }
39
+ const envVersion = readVersionFromNpmEnv();
40
+ if (envVersion) {
41
+ return envVersion;
22
42
  }
23
43
  return FALLBACK_VERSION;
24
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAMzC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAEjC,MAAM,UAAU,aAAa;IAC3B,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC;QAClG,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IAErE,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAgB,CAAC;QACjF,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAChE,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/cli/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAOzC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AACjC,MAAM,YAAY,GAAG,UAAU,CAAC;AAEhC,SAAS,0BAA0B,CAAC,eAAuB;IACzD,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAgB,CAAC;QACjF,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAChE,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB;IAC5B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC;IACzD,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC;IAE/D,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,WAAW,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,0BAA0B,CAAC,eAAe,CAAC,CAAC;IAChE,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;IAC3C,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veto-sdk",
3
- "version": "1.15.0",
3
+ "version": "1.15.1",
4
4
  "description": "A guardrail system that intercepts and validates AI agent tool calls",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -147,6 +147,7 @@
147
147
  }
148
148
  },
149
149
  "dependencies": {
150
+ "@opentui/core": "^0.1.82",
150
151
  "ajv": "^8.17.1",
151
152
  "picocolors": "^1.1.1",
152
153
  "yaml": "^2.8.2"