vibora 9.3.2 → 9.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/bin/vibora.js CHANGED
@@ -45126,7 +45126,7 @@ function installUv() {
45126
45126
  var package_default = {
45127
45127
  name: "vibora",
45128
45128
  private: true,
45129
- version: "9.3.2",
45129
+ version: "9.4.0",
45130
45130
  description: "Harness Attention. Orchestrate Agents. Ship.",
45131
45131
  license: "PolyForm-Perimeter-1.0.0",
45132
45132
  type: "module",
@@ -45651,6 +45651,7 @@ import { join as join4 } from "path";
45651
45651
  // plugins/vibora-opencode/index.ts
45652
45652
  var vibora_opencode_default = `import type { Plugin } from "@opencode-ai/plugin"
45653
45653
  import { appendFileSync } from "node:fs"
45654
+ import { execFile } from "node:child_process"
45654
45655
 
45655
45656
  declare const process: { env: Record<string, string | undefined> }
45656
45657
 
@@ -45669,6 +45670,24 @@ const log = (msg: string) => {
45669
45670
  }
45670
45671
  }
45671
45672
 
45673
+ /**
45674
+ * Execute vibora command using execFile with shell option for proper PATH resolution.
45675
+ * Using execFile with explicit args array prevents shell injection while shell:true
45676
+ * ensures PATH is properly resolved (for NVM, fnm, etc. managed node installations).
45677
+ */
45678
+ async function runViboraCommand(args: string[]): Promise<{ exitCode: number; stdout: string; stderr: string }> {
45679
+ return new Promise((resolve) => {
45680
+ execFile(VIBORA_CMD, args, { shell: true }, (error, stdout, stderr) => {
45681
+ if (error) {
45682
+ const execError = error as NodeJS.ErrnoException
45683
+ resolve({ exitCode: execError.code ? 1 : 1, stdout: stdout || '', stderr: stderr || execError.message || '' })
45684
+ } else {
45685
+ resolve({ exitCode: 0, stdout: stdout || '', stderr: stderr || '' })
45686
+ }
45687
+ })
45688
+ })
45689
+ }
45690
+
45672
45691
  let mainSessionId: string | null = null
45673
45692
  const subagentSessions = new Set<string>()
45674
45693
  let pendingIdleTimer: ReturnType<typeof setTimeout> | null = null
@@ -45690,7 +45709,7 @@ export const ViboraPlugin: Plugin = async ({ $, directory }) => {
45690
45709
  } else {
45691
45710
  deferredContextCheck = Promise.all([
45692
45711
  $\`\${VIBORA_CMD} --version\`.quiet().nothrow().text(),
45693
- $\`\${VIBORA_CMD} current-task --path \${directory}\`.quiet().nothrow(),
45712
+ runViboraCommand(['current-task', '--path', directory]),
45694
45713
  ])
45695
45714
  .then(([versionResult, taskResult]) => {
45696
45715
  if (!versionResult) {
@@ -45735,11 +45754,10 @@ export const ViboraPlugin: Plugin = async ({ $, directory }) => {
45735
45754
  ;(async () => {
45736
45755
  try {
45737
45756
  log(\`Setting status: \${status}\`)
45738
- const res =
45739
- await $\`\${VIBORA_CMD} current-task \${status} --path \${directory}\`
45740
- .quiet()
45741
- .nothrow()
45742
- if (res.exitCode !== 0) log(\`Status update failed: \${res.stderr}\`)
45757
+ const res = await runViboraCommand(['current-task', status, '--path', directory])
45758
+ if (res.exitCode !== 0) {
45759
+ log(\`Status update failed: exitCode=\${res.exitCode}, stderr=\${res.stderr}\`)
45760
+ }
45743
45761
  } catch (e) {
45744
45762
  log(\`Status update error: \${e}\`)
45745
45763
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibora",
3
- "version": "9.3.2",
3
+ "version": "9.4.0",
4
4
  "description": "Harness Attention. Orchestrate Agents. Ship.",
5
5
  "license": "PolyForm-Perimeter-1.0.0",
6
6
  "repository": {
package/server/index.js CHANGED
@@ -5824,8 +5824,7 @@ class BufferManager {
5824
5824
  }
5825
5825
  getContents() {
5826
5826
  const raw2 = this.chunks.map((c) => c.data).join("");
5827
- const filtered = this.filterProblematicSequences(raw2);
5828
- return this.getMouseModeSequences() + filtered;
5827
+ return this.filterProblematicSequences(raw2);
5829
5828
  }
5830
5829
  clear() {
5831
5830
  this.chunks = [];