vibora 7.1.4 → 7.2.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
@@ -32629,7 +32629,7 @@ function installUv() {
32629
32629
  var package_default = {
32630
32630
  name: "vibora",
32631
32631
  private: true,
32632
- version: "7.1.4",
32632
+ version: "7.2.0",
32633
32633
  description: "Harness Attention. Orchestrate Agents. Ship.",
32634
32634
  license: "PolyForm-Shield-1.0.0",
32635
32635
  type: "module",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibora",
3
- "version": "7.1.4",
3
+ "version": "7.2.0",
4
4
  "description": "Harness Attention. Orchestrate Agents. Ship.",
5
5
  "license": "PolyForm-Shield-1.0.0",
6
6
  "repository": {
package/server/index.js CHANGED
@@ -177803,6 +177803,13 @@ async function generateSwarmComposeFile(cwd, composeFile, projectName, externalN
177803
177803
  if (Array.isArray(serviceConfig.volumes)) {
177804
177804
  serviceConfig.volumes = serviceConfig.volumes.map((vol) => resolveVolumeEntry(vol, cwd));
177805
177805
  }
177806
+ if (Array.isArray(serviceConfig.ports)) {
177807
+ serviceConfig.ports = serviceConfig.ports.map((port) => convertPortToHostMode(port));
177808
+ log2.deploy.debug("Converted ports to host mode", {
177809
+ service: serviceName,
177810
+ ports: serviceConfig.ports
177811
+ });
177812
+ }
177806
177813
  const unsupportedFields = [
177807
177814
  "container_name",
177808
177815
  "links",
@@ -178052,6 +178059,49 @@ async function waitForServicesHealthy(stackName, timeoutMs = 300000, signal) {
178052
178059
  function sleep(ms) {
178053
178060
  return new Promise((r) => setTimeout(r, ms));
178054
178061
  }
178062
+ function convertPortToHostMode(port) {
178063
+ if (typeof port === "string") {
178064
+ const [portPart, protocol] = port.split("/");
178065
+ const rawParts = splitRespectingEnvVars(portPart);
178066
+ const parts = rawParts.map((p) => {
178067
+ const expanded = expandEnvVar(p);
178068
+ return expanded ? Number(expanded) : NaN;
178069
+ });
178070
+ const published = parts[0];
178071
+ const target = parts.length > 1 ? parts[1] : parts[0];
178072
+ if (isNaN(published) || isNaN(target)) {
178073
+ log2.deploy.warn("Could not parse port specification, skipping host mode conversion", {
178074
+ port,
178075
+ parsed: { published, target }
178076
+ });
178077
+ throw new Error(`Cannot parse port specification: ${port}`);
178078
+ }
178079
+ return {
178080
+ target,
178081
+ published,
178082
+ protocol: protocol || "tcp",
178083
+ mode: "host"
178084
+ };
178085
+ }
178086
+ if (typeof port === "number") {
178087
+ return {
178088
+ target: port,
178089
+ published: port,
178090
+ protocol: "tcp",
178091
+ mode: "host"
178092
+ };
178093
+ }
178094
+ if (typeof port === "object" && port !== null) {
178095
+ const p = port;
178096
+ return {
178097
+ target: p.target || p.published,
178098
+ published: p.published || p.target,
178099
+ protocol: p.protocol || "tcp",
178100
+ mode: "host"
178101
+ };
178102
+ }
178103
+ throw new Error(`Invalid port specification: ${JSON.stringify(port)}`);
178104
+ }
178055
178105
  function resolveVolumePath(volumePath, basePath) {
178056
178106
  const expanded = expandEnvVar(volumePath);
178057
178107
  const pathToCheck = expanded ?? volumePath;