@vm0/cli 9.221.4 → 9.221.6

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 (88) hide show
  1. package/{agent-SRJW4DJV.js → agent-DYWIJQ2R.js} +4 -4
  2. package/{automation-THUDKXQR.js → automation-U62LQKYO.js} +7 -9
  3. package/{automation-THUDKXQR.js.map → automation-U62LQKYO.js.map} +1 -1
  4. package/{banking-ED4LTRY3.js → banking-NLYZOBEM.js} +2 -2
  5. package/{chat-WMXIEDEY.js → chat-5UZFU2YR.js} +2 -2
  6. package/{chunk-3NMCKGNJ.js → chunk-65CYJRLA.js} +2 -2
  7. package/{chunk-4YUV2CMK.js → chunk-6OGS5SQ6.js} +3 -3
  8. package/{chunk-M5MXYLLZ.js → chunk-7TDL7YQG.js} +129 -222
  9. package/chunk-7TDL7YQG.js.map +1 -0
  10. package/{chunk-J7RLLIWI.js → chunk-HQFETCZ6.js} +26 -2
  11. package/chunk-HQFETCZ6.js.map +1 -0
  12. package/{chunk-2K5GNYND.js → chunk-IFA2V7EW.js} +2 -2
  13. package/{chunk-RR5CO7IT.js → chunk-IMZDXXSW.js} +2 -2
  14. package/{chunk-QV73BJ3B.js → chunk-PCBM5SRN.js} +320 -134
  15. package/chunk-PCBM5SRN.js.map +1 -0
  16. package/{chunk-QCYPFXRV.js → chunk-PX6FH3KT.js} +2 -2
  17. package/{chunk-AYR37FIN.js → chunk-ZOZTDOZE.js} +3 -3
  18. package/{chunk-DAC5OAWI.js → chunk-ZQYA5M55.js} +3 -64
  19. package/{chunk-DAC5OAWI.js.map → chunk-ZQYA5M55.js.map} +1 -1
  20. package/{computer-use-WINYVPQS.js → computer-use-JWVNMBIM.js} +2 -2
  21. package/{connector-WBM4EKRR.js → connector-YJX3MZGN.js} +382 -395
  22. package/connector-YJX3MZGN.js.map +1 -0
  23. package/{credit-KJRMNSQ2.js → credit-FHOJ736M.js} +2 -2
  24. package/{developer-support-DMUPPQB2.js → developer-support-BJVUM5OZ.js} +2 -2
  25. package/{doctor-VGQ6YI6G.js → doctor-BDSKVS5W.js} +5 -5
  26. package/{generate-STQVPQZO.js → generate-EA5ZRXFE.js} +60 -81
  27. package/generate-EA5ZRXFE.js.map +1 -0
  28. package/{github-LSFYZXO3.js → github-NU7VA3WB.js} +2 -2
  29. package/{goal-BNN7NM52.js → goal-4H4GUEMC.js} +2 -2
  30. package/{host-4MVX223U.js → host-SCI3ZPFT.js} +2 -2
  31. package/index.js +13 -13
  32. package/{logs-2VYXOUSW.js → logs-WHJPLPCR.js} +6 -6
  33. package/{maps-AMT7SMTH.js → maps-E5GVYSKP.js} +2 -2
  34. package/{model-HRRTGQQW.js → model-XP7ACN22.js} +3 -3
  35. package/{model-provider-HRK3C42K.js → model-provider-TAGWSIEW.js} +3 -3
  36. package/{org-M6Z5HXLU.js → org-4CMXX52G.js} +2 -2
  37. package/package.json +1 -1
  38. package/{phone-XM2DDX3C.js → phone-T7VLFMEU.js} +2 -2
  39. package/{preference-OQ3NRFCT.js → preference-Q4ZCLD2L.js} +2 -2
  40. package/{resource-NR6R2I6J.js → resource-QKFJESUB.js} +2 -2
  41. package/{search-RVTPT6N3.js → search-CTYF6KGG.js} +6 -6
  42. package/{secret-JPLOSNN3.js → secret-LMPIFKPU.js} +3 -3
  43. package/{slack-ETMPZQYC.js → slack-FKENH3DZ.js} +2 -2
  44. package/{telegram-IOHI44M5.js → telegram-ZG24OBRU.js} +2 -2
  45. package/{variable-URYGYI2W.js → variable-BOATQUX3.js} +2 -2
  46. package/{web-OAVP3LA4.js → web-3ASTXCH7.js} +2 -2
  47. package/{whoami-5RMEOJGY.js → whoami-DHCS6YIJ.js} +4 -4
  48. package/{workflow-JJXIMM3C.js → workflow-T2TTFE6C.js} +4 -6
  49. package/{workflow-JJXIMM3C.js.map → workflow-T2TTFE6C.js.map} +1 -1
  50. package/zero.js +31 -31
  51. package/chunk-J7RLLIWI.js.map +0 -1
  52. package/chunk-M5MXYLLZ.js.map +0 -1
  53. package/chunk-QV73BJ3B.js.map +0 -1
  54. package/chunk-RGP625TN.js +0 -47
  55. package/chunk-RGP625TN.js.map +0 -1
  56. package/connector-WBM4EKRR.js.map +0 -1
  57. package/generate-STQVPQZO.js.map +0 -1
  58. /package/{agent-SRJW4DJV.js.map → agent-DYWIJQ2R.js.map} +0 -0
  59. /package/{banking-ED4LTRY3.js.map → banking-NLYZOBEM.js.map} +0 -0
  60. /package/{chat-WMXIEDEY.js.map → chat-5UZFU2YR.js.map} +0 -0
  61. /package/{chunk-3NMCKGNJ.js.map → chunk-65CYJRLA.js.map} +0 -0
  62. /package/{chunk-4YUV2CMK.js.map → chunk-6OGS5SQ6.js.map} +0 -0
  63. /package/{chunk-2K5GNYND.js.map → chunk-IFA2V7EW.js.map} +0 -0
  64. /package/{chunk-RR5CO7IT.js.map → chunk-IMZDXXSW.js.map} +0 -0
  65. /package/{chunk-QCYPFXRV.js.map → chunk-PX6FH3KT.js.map} +0 -0
  66. /package/{chunk-AYR37FIN.js.map → chunk-ZOZTDOZE.js.map} +0 -0
  67. /package/{computer-use-WINYVPQS.js.map → computer-use-JWVNMBIM.js.map} +0 -0
  68. /package/{credit-KJRMNSQ2.js.map → credit-FHOJ736M.js.map} +0 -0
  69. /package/{developer-support-DMUPPQB2.js.map → developer-support-BJVUM5OZ.js.map} +0 -0
  70. /package/{doctor-VGQ6YI6G.js.map → doctor-BDSKVS5W.js.map} +0 -0
  71. /package/{github-LSFYZXO3.js.map → github-NU7VA3WB.js.map} +0 -0
  72. /package/{goal-BNN7NM52.js.map → goal-4H4GUEMC.js.map} +0 -0
  73. /package/{host-4MVX223U.js.map → host-SCI3ZPFT.js.map} +0 -0
  74. /package/{logs-2VYXOUSW.js.map → logs-WHJPLPCR.js.map} +0 -0
  75. /package/{maps-AMT7SMTH.js.map → maps-E5GVYSKP.js.map} +0 -0
  76. /package/{model-HRRTGQQW.js.map → model-XP7ACN22.js.map} +0 -0
  77. /package/{model-provider-HRK3C42K.js.map → model-provider-TAGWSIEW.js.map} +0 -0
  78. /package/{org-M6Z5HXLU.js.map → org-4CMXX52G.js.map} +0 -0
  79. /package/{phone-XM2DDX3C.js.map → phone-T7VLFMEU.js.map} +0 -0
  80. /package/{preference-OQ3NRFCT.js.map → preference-Q4ZCLD2L.js.map} +0 -0
  81. /package/{resource-NR6R2I6J.js.map → resource-QKFJESUB.js.map} +0 -0
  82. /package/{search-RVTPT6N3.js.map → search-CTYF6KGG.js.map} +0 -0
  83. /package/{secret-JPLOSNN3.js.map → secret-LMPIFKPU.js.map} +0 -0
  84. /package/{slack-ETMPZQYC.js.map → slack-FKENH3DZ.js.map} +0 -0
  85. /package/{telegram-IOHI44M5.js.map → telegram-ZG24OBRU.js.map} +0 -0
  86. /package/{variable-URYGYI2W.js.map → variable-BOATQUX3.js.map} +0 -0
  87. /package/{web-OAVP3LA4.js.map → web-3ASTXCH7.js.map} +0 -0
  88. /package/{whoami-5RMEOJGY.js.map → whoami-DHCS6YIJ.js.map} +0 -0
@@ -40,8 +40,32 @@ function formatDurationSeconds(seconds) {
40
40
  return `${seconds}s`;
41
41
  }
42
42
 
43
+ // src/lib/domain/schedule-utils.ts
44
+ init_esm_shims();
45
+ function formatRelativeTime(dateStr) {
46
+ if (!dateStr) return "-";
47
+ const date = new Date(dateStr);
48
+ const now = /* @__PURE__ */ new Date();
49
+ const diffMs = date.getTime() - now.getTime();
50
+ const diffAbs = Math.abs(diffMs);
51
+ const minutes = Math.floor(diffAbs / (1e3 * 60));
52
+ const hours = Math.floor(diffAbs / (1e3 * 60 * 60));
53
+ const days = Math.floor(diffAbs / (1e3 * 60 * 60 * 24));
54
+ const isPast = diffMs < 0;
55
+ if (days > 0) {
56
+ return isPast ? `${days}d ago` : `in ${days}d`;
57
+ } else if (hours > 0) {
58
+ return isPast ? `${hours}h ago` : `in ${hours}h`;
59
+ } else if (minutes > 0) {
60
+ return isPast ? `${minutes}m ago` : `in ${minutes}m`;
61
+ } else {
62
+ return isPast ? "just now" : "soon";
63
+ }
64
+ }
65
+
43
66
  export {
44
67
  parseDurationSeconds,
45
- formatDurationSeconds
68
+ formatDurationSeconds,
69
+ formatRelativeTime
46
70
  };
47
- //# sourceMappingURL=chunk-J7RLLIWI.js.map
71
+ //# sourceMappingURL=chunk-HQFETCZ6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/zero/automation/duration.ts","../src/lib/domain/schedule-utils.ts"],"sourcesContent":["/**\n * Human-friendly duration handling for loop triggers (`--every` / `--loop`).\n */\n\nconst DURATION_PATTERN = /^(\\d+)([smhd])$/;\n\nconst UNIT_SECONDS: Record<string, number> = {\n s: 1,\n m: 60,\n h: 60 * 60,\n d: 24 * 60 * 60,\n};\n\n/**\n * Parse a human duration like \"90s\", \"15m\", \"1h\", \"2d\" into seconds.\n * @throws Error when the input is not a positive integer + unit\n */\nexport function parseDurationSeconds(input: string): number {\n const match = input.match(DURATION_PATTERN);\n if (!match) {\n throw new Error(\n `Invalid duration: \"${input}\". Use <number><unit> with unit s, m, h, or d (e.g. 90s, 15m, 1h)`,\n );\n }\n\n const value = parseInt(match[1]!, 10);\n if (value <= 0) {\n throw new Error(`Invalid duration: \"${input}\". Must be greater than zero`);\n }\n\n return value * UNIT_SECONDS[match[2]!]!;\n}\n\n/**\n * Format seconds back into the largest exact unit (900 → \"15m\", 90 → \"90s\")\n */\nexport function formatDurationSeconds(seconds: number): string {\n for (const [unit, size] of [\n [\"d\", UNIT_SECONDS.d!],\n [\"h\", UNIT_SECONDS.h!],\n [\"m\", UNIT_SECONDS.m!],\n ] as const) {\n if (seconds % size === 0 && seconds >= size) {\n return `${seconds / size}${unit}`;\n }\n }\n return `${seconds}s`;\n}\n","/**\n * Format a date string as relative time (e.g., \"in 2h\", \"3d ago\")\n */\nexport function formatRelativeTime(dateStr: string | null): string {\n if (!dateStr) return \"-\";\n\n const date = new Date(dateStr);\n const now = new Date();\n const diffMs = date.getTime() - now.getTime();\n const diffAbs = Math.abs(diffMs);\n\n const minutes = Math.floor(diffAbs / (1000 * 60));\n const hours = Math.floor(diffAbs / (1000 * 60 * 60));\n const days = Math.floor(diffAbs / (1000 * 60 * 60 * 24));\n\n const isPast = diffMs < 0;\n\n if (days > 0) {\n return isPast ? `${days}d ago` : `in ${days}d`;\n } else if (hours > 0) {\n return isPast ? `${hours}h ago` : `in ${hours}h`;\n } else if (minutes > 0) {\n return isPast ? `${minutes}m ago` : `in ${minutes}m`;\n } else {\n return isPast ? \"just now\" : \"soon\";\n }\n}\n"],"mappings":";;;;;;;;AAAA;AAIA,IAAM,mBAAmB;AAEzB,IAAM,eAAuC;AAAA,EAC3C,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG,KAAK;AAAA,EACR,GAAG,KAAK,KAAK;AACf;AAMO,SAAS,qBAAqB,OAAuB;AAC1D,QAAM,QAAQ,MAAM,MAAM,gBAAgB;AAC1C,MAAI,CAAC,OAAO;AACV,UAAM,IAAI;AAAA,MACR,sBAAsB,KAAK;AAAA,IAC7B;AAAA,EACF;AAEA,QAAM,QAAQ,SAAS,MAAM,CAAC,GAAI,EAAE;AACpC,MAAI,SAAS,GAAG;AACd,UAAM,IAAI,MAAM,sBAAsB,KAAK,8BAA8B;AAAA,EAC3E;AAEA,SAAO,QAAQ,aAAa,MAAM,CAAC,CAAE;AACvC;AAKO,SAAS,sBAAsB,SAAyB;AAC7D,aAAW,CAAC,MAAM,IAAI,KAAK;AAAA,IACzB,CAAC,KAAK,aAAa,CAAE;AAAA,IACrB,CAAC,KAAK,aAAa,CAAE;AAAA,IACrB,CAAC,KAAK,aAAa,CAAE;AAAA,EACvB,GAAY;AACV,QAAI,UAAU,SAAS,KAAK,WAAW,MAAM;AAC3C,aAAO,GAAG,UAAU,IAAI,GAAG,IAAI;AAAA,IACjC;AAAA,EACF;AACA,SAAO,GAAG,OAAO;AACnB;;;AC/CA;AAGO,SAAS,mBAAmB,SAAgC;AACjE,MAAI,CAAC,QAAS,QAAO;AAErB,QAAM,OAAO,IAAI,KAAK,OAAO;AAC7B,QAAM,MAAM,oBAAI,KAAK;AACrB,QAAM,SAAS,KAAK,QAAQ,IAAI,IAAI,QAAQ;AAC5C,QAAM,UAAU,KAAK,IAAI,MAAM;AAE/B,QAAM,UAAU,KAAK,MAAM,WAAW,MAAO,GAAG;AAChD,QAAM,QAAQ,KAAK,MAAM,WAAW,MAAO,KAAK,GAAG;AACnD,QAAM,OAAO,KAAK,MAAM,WAAW,MAAO,KAAK,KAAK,GAAG;AAEvD,QAAM,SAAS,SAAS;AAExB,MAAI,OAAO,GAAG;AACZ,WAAO,SAAS,GAAG,IAAI,UAAU,MAAM,IAAI;AAAA,EAC7C,WAAW,QAAQ,GAAG;AACpB,WAAO,SAAS,GAAG,KAAK,UAAU,MAAM,KAAK;AAAA,EAC/C,WAAW,UAAU,GAAG;AACtB,WAAO,SAAS,GAAG,OAAO,UAAU,MAAM,OAAO;AAAA,EACnD,OAAO;AACL,WAAO,SAAS,aAAa;AAAA,EAC/B;AACF;","names":[]}
@@ -8,7 +8,7 @@ import {
8
8
  parseSegment,
9
9
  splitPathSegments,
10
10
  validateBaseUrl
11
- } from "./chunk-QV73BJ3B.js";
11
+ } from "./chunk-PCBM5SRN.js";
12
12
  import {
13
13
  init_esm_shims
14
14
  } from "./chunk-DIRAZ3YX.js";
@@ -609,4 +609,4 @@ export {
609
609
  matchFirewallBaseUrl,
610
610
  findMatchingRoutingPermissions
611
611
  };
612
- //# sourceMappingURL=chunk-2K5GNYND.js.map
612
+ //# sourceMappingURL=chunk-IFA2V7EW.js.map
@@ -4,7 +4,7 @@ const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  loadFirewallPermissionMetadata,
6
6
  resolveFirewallMetadataPolicies
7
- } from "./chunk-QCYPFXRV.js";
7
+ } from "./chunk-PX6FH3KT.js";
8
8
  import {
9
9
  source_default
10
10
  } from "./chunk-JUTUEPIR.js";
@@ -87,4 +87,4 @@ export {
87
87
  policyIcon,
88
88
  loadConnectorPermissionInfos
89
89
  };
90
- //# sourceMappingURL=chunk-RR5CO7IT.js.map
90
+ //# sourceMappingURL=chunk-IMZDXXSW.js.map