@vm0/cli 9.222.10 → 9.222.11

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 (94) hide show
  1. package/{agent-T7M7TEPS.js → agent-XNVQRMKI.js} +4 -4
  2. package/automation-7MAK66QT.js +31 -0
  3. package/automation-7MAK66QT.js.map +1 -0
  4. package/{banking-FNJZFPXK.js → banking-QBTNNOCQ.js} +2 -2
  5. package/{chat-6NJ4VVNA.js → chat-ELAJKQXT.js} +2 -2
  6. package/{chunk-FJFAPB3B.js → chunk-5EPGSDIQ.js} +479 -46
  7. package/chunk-5EPGSDIQ.js.map +1 -0
  8. package/{chunk-IJBKOTQR.js → chunk-7ZJOZZXZ.js} +2 -2
  9. package/{chunk-PAZFEW6A.js → chunk-F774K6TY.js} +2 -2
  10. package/{chunk-STCMWCQB.js → chunk-JOOQB7W3.js} +2 -2
  11. package/{chunk-LRXQIJYA.js → chunk-KBDCWC3F.js} +20 -393
  12. package/chunk-KBDCWC3F.js.map +1 -0
  13. package/{chunk-UFH34RCB.js → chunk-MJ4W2C3Z.js} +7 -9
  14. package/{chunk-UFH34RCB.js.map → chunk-MJ4W2C3Z.js.map} +1 -1
  15. package/{chunk-ZQR57JPN.js → chunk-VTG6TDYL.js} +2 -2
  16. package/{chunk-ZTIA2B55.js → chunk-Y4YHS5UO.js} +2 -2
  17. package/{chunk-EQLMBGHF.js → chunk-ZPWEXRMA.js} +3 -3
  18. package/{computer-use-PNFYU4P6.js → computer-use-XXPDTJSQ.js} +2 -2
  19. package/{connector-5QNIIQYE.js → connector-PWDJ3R6G.js} +2 -2
  20. package/{credit-N4VWEZQD.js → credit-MYBUWRHP.js} +2 -2
  21. package/{developer-support-6YAKUD6P.js → developer-support-65OQ2RK4.js} +2 -2
  22. package/{doctor-APGXQWMY.js → doctor-2U4HK4AX.js} +5 -5
  23. package/{generate-DJTSGM7S.js → generate-UEDRCAKX.js} +2 -2
  24. package/{github-WJX4QT2H.js → github-R6JKL74U.js} +2 -2
  25. package/{goal-NITAYB5U.js → goal-BG47S2RP.js} +2 -2
  26. package/{host-2UZGVQ3F.js → host-2VS2KOZQ.js} +2 -2
  27. package/index.js +18 -20
  28. package/index.js.map +1 -1
  29. package/{logs-7BZRPSMW.js → logs-XFVZAKVG.js} +11 -13
  30. package/{logs-7BZRPSMW.js.map → logs-XFVZAKVG.js.map} +1 -1
  31. package/{maps-K5NX2KAB.js → maps-ZBULOEZW.js} +2 -2
  32. package/{model-HSKVRTFU.js → model-BFHGQJ5U.js} +3 -3
  33. package/{model-provider-JL4VLJRT.js → model-provider-OUSOKSWW.js} +3 -3
  34. package/{org-DIC435XZ.js → org-RI2EYUW7.js} +2 -2
  35. package/package.json +1 -1
  36. package/{phone-R6FRR5SW.js → phone-SNLGLD3J.js} +2 -2
  37. package/{preference-2Y47RK7E.js → preference-XDSQRZWM.js} +2 -2
  38. package/{resource-PNK3R6OE.js → resource-BA4FQCNQ.js} +2 -2
  39. package/schedule-OSHL7HWT.js +33 -0
  40. package/schedule-OSHL7HWT.js.map +1 -0
  41. package/{search-DAC3VR2E.js → search-KXVRANLT.js} +8 -10
  42. package/{search-DAC3VR2E.js.map → search-KXVRANLT.js.map} +1 -1
  43. package/{secret-JNDL44GI.js → secret-NFJQKUPS.js} +3 -3
  44. package/{slack-46YY7OG4.js → slack-JPM5WVX6.js} +2 -2
  45. package/{telegram-KOLEDEVQ.js → telegram-BNX4UZTT.js} +2 -2
  46. package/{variable-WKYVSOGW.js → variable-IAIPAH3T.js} +2 -2
  47. package/{web-UMLXHPQM.js → web-3TJGHZNA.js} +2 -2
  48. package/{whoami-UJTFVSQG.js → whoami-OVIXXMRR.js} +4 -4
  49. package/{workflow-FG4M2QL6.js → workflow-WWMTJDLF.js} +62 -7
  50. package/workflow-WWMTJDLF.js.map +1 -0
  51. package/zero.js +36 -37
  52. package/zero.js.map +1 -1
  53. package/automation-ODWI55XR.js +0 -501
  54. package/automation-ODWI55XR.js.map +0 -1
  55. package/chunk-FJFAPB3B.js.map +0 -1
  56. package/chunk-H63W4KQL.js +0 -160
  57. package/chunk-H63W4KQL.js.map +0 -1
  58. package/chunk-HQFETCZ6.js +0 -71
  59. package/chunk-HQFETCZ6.js.map +0 -1
  60. package/chunk-LRXQIJYA.js.map +0 -1
  61. package/schedule-MTI5OP23.js +0 -31
  62. package/schedule-MTI5OP23.js.map +0 -1
  63. package/workflow-FG4M2QL6.js.map +0 -1
  64. /package/{agent-T7M7TEPS.js.map → agent-XNVQRMKI.js.map} +0 -0
  65. /package/{banking-FNJZFPXK.js.map → banking-QBTNNOCQ.js.map} +0 -0
  66. /package/{chat-6NJ4VVNA.js.map → chat-ELAJKQXT.js.map} +0 -0
  67. /package/{chunk-IJBKOTQR.js.map → chunk-7ZJOZZXZ.js.map} +0 -0
  68. /package/{chunk-PAZFEW6A.js.map → chunk-F774K6TY.js.map} +0 -0
  69. /package/{chunk-STCMWCQB.js.map → chunk-JOOQB7W3.js.map} +0 -0
  70. /package/{chunk-ZQR57JPN.js.map → chunk-VTG6TDYL.js.map} +0 -0
  71. /package/{chunk-ZTIA2B55.js.map → chunk-Y4YHS5UO.js.map} +0 -0
  72. /package/{chunk-EQLMBGHF.js.map → chunk-ZPWEXRMA.js.map} +0 -0
  73. /package/{computer-use-PNFYU4P6.js.map → computer-use-XXPDTJSQ.js.map} +0 -0
  74. /package/{connector-5QNIIQYE.js.map → connector-PWDJ3R6G.js.map} +0 -0
  75. /package/{credit-N4VWEZQD.js.map → credit-MYBUWRHP.js.map} +0 -0
  76. /package/{developer-support-6YAKUD6P.js.map → developer-support-65OQ2RK4.js.map} +0 -0
  77. /package/{doctor-APGXQWMY.js.map → doctor-2U4HK4AX.js.map} +0 -0
  78. /package/{generate-DJTSGM7S.js.map → generate-UEDRCAKX.js.map} +0 -0
  79. /package/{github-WJX4QT2H.js.map → github-R6JKL74U.js.map} +0 -0
  80. /package/{goal-NITAYB5U.js.map → goal-BG47S2RP.js.map} +0 -0
  81. /package/{host-2UZGVQ3F.js.map → host-2VS2KOZQ.js.map} +0 -0
  82. /package/{maps-K5NX2KAB.js.map → maps-ZBULOEZW.js.map} +0 -0
  83. /package/{model-HSKVRTFU.js.map → model-BFHGQJ5U.js.map} +0 -0
  84. /package/{model-provider-JL4VLJRT.js.map → model-provider-OUSOKSWW.js.map} +0 -0
  85. /package/{org-DIC435XZ.js.map → org-RI2EYUW7.js.map} +0 -0
  86. /package/{phone-R6FRR5SW.js.map → phone-SNLGLD3J.js.map} +0 -0
  87. /package/{preference-2Y47RK7E.js.map → preference-XDSQRZWM.js.map} +0 -0
  88. /package/{resource-PNK3R6OE.js.map → resource-BA4FQCNQ.js.map} +0 -0
  89. /package/{secret-JNDL44GI.js.map → secret-NFJQKUPS.js.map} +0 -0
  90. /package/{slack-46YY7OG4.js.map → slack-JPM5WVX6.js.map} +0 -0
  91. /package/{telegram-KOLEDEVQ.js.map → telegram-BNX4UZTT.js.map} +0 -0
  92. /package/{variable-WKYVSOGW.js.map → variable-IAIPAH3T.js.map} +0 -0
  93. /package/{web-UMLXHPQM.js.map → web-3TJGHZNA.js.map} +0 -0
  94. /package/{whoami-UJTFVSQG.js.map → whoami-OVIXXMRR.js.map} +0 -0
@@ -21,7 +21,7 @@ import {
21
21
  upsertModelProviderRequestSchema,
22
22
  upsertModelProviderResponseSchema,
23
23
  zeroAgentVisibilitySchema
24
- } from "./chunk-LRXQIJYA.js";
24
+ } from "./chunk-KBDCWC3F.js";
25
25
  import {
26
26
  apiErrorSchema,
27
27
  external_exports
@@ -719,9 +719,9 @@ var require_Alias = __commonJS({
719
719
  } else if (identity.isCollection(node)) {
720
720
  let count = 0;
721
721
  for (const item of node.items) {
722
- const c88 = getAliasCount(doc, item, anchors2);
723
- if (c88 > count)
724
- count = c88;
722
+ const c89 = getAliasCount(doc, item, anchors2);
723
+ if (c89 > count)
724
+ count = c89;
725
725
  }
726
726
  return count;
727
727
  } else if (identity.isPair(node)) {
@@ -12813,7 +12813,7 @@ var cronSyncSkillsResponseSchema = external_exports.object({
12813
12813
  removed: external_exports.number(),
12814
12814
  total: external_exports.number()
12815
12815
  });
12816
- var cronExecuteAutomationsResponseSchema = external_exports.object({
12816
+ var cronExecuteWorkflowTriggersResponseSchema = external_exports.object({
12817
12817
  success: external_exports.literal(true),
12818
12818
  executed: external_exports.number(),
12819
12819
  skipped: external_exports.number()
@@ -13002,25 +13002,13 @@ var cronSyncSkillsContract = c39.router({
13002
13002
  summary: "Sync official skills from the skills repository"
13003
13003
  }
13004
13004
  });
13005
- var cronExecuteAutomationsContract = c39.router({
13006
- execute: {
13007
- method: "GET",
13008
- path: "/api/cron/execute-automations",
13009
- headers: authHeadersSchema,
13010
- responses: {
13011
- 200: cronExecuteAutomationsResponseSchema,
13012
- 401: apiErrorSchema
13013
- },
13014
- summary: "Execute due automation triggers"
13015
- }
13016
- });
13017
13005
  var cronExecuteWorkflowTriggersContract = c39.router({
13018
13006
  execute: {
13019
13007
  method: "GET",
13020
13008
  path: "/api/cron/execute-workflow-triggers",
13021
13009
  headers: authHeadersSchema,
13022
13010
  responses: {
13023
- 200: cronExecuteAutomationsResponseSchema,
13011
+ 200: cronExecuteWorkflowTriggersResponseSchema,
13024
13012
  401: apiErrorSchema
13025
13013
  },
13026
13014
  summary: "Execute due workflow schedule triggers"
@@ -15485,15 +15473,310 @@ var zeroVideoIoGenerateContract = c81.router({
15485
15473
  }
15486
15474
  });
15487
15475
 
15488
- // ../../packages/api-contracts/src/contracts/zero-voice-io-quota.ts
15476
+ // ../../packages/api-contracts/src/contracts/automations.ts
15489
15477
  init_esm_shims();
15490
15478
  var c82 = initContract();
15479
+ var triggerBaseShape = {
15480
+ id: external_exports.string().uuid(),
15481
+ automationId: external_exports.string().uuid(),
15482
+ enabled: external_exports.boolean(),
15483
+ createdAt: external_exports.string(),
15484
+ updatedAt: external_exports.string()
15485
+ };
15486
+ var timeTriggerRuntimeShape = {
15487
+ timezone: external_exports.string(),
15488
+ nextRunAt: external_exports.string().nullable(),
15489
+ lastRunAt: external_exports.string().nullable(),
15490
+ consecutiveFailures: external_exports.number()
15491
+ };
15492
+ var automationTriggerResponseSchema = external_exports.discriminatedUnion("kind", [
15493
+ external_exports.object({
15494
+ ...triggerBaseShape,
15495
+ kind: external_exports.literal("cron"),
15496
+ cronExpression: external_exports.string(),
15497
+ ...timeTriggerRuntimeShape
15498
+ }),
15499
+ external_exports.object({
15500
+ ...triggerBaseShape,
15501
+ kind: external_exports.literal("once"),
15502
+ atTime: external_exports.string(),
15503
+ ...timeTriggerRuntimeShape
15504
+ }),
15505
+ external_exports.object({
15506
+ ...triggerBaseShape,
15507
+ kind: external_exports.literal("loop"),
15508
+ intervalSeconds: external_exports.number(),
15509
+ ...timeTriggerRuntimeShape
15510
+ })
15511
+ ]);
15512
+ var automationResponseSchema = external_exports.object({
15513
+ id: external_exports.string().uuid(),
15514
+ agentId: external_exports.string().uuid(),
15515
+ displayName: external_exports.string().nullable(),
15516
+ userId: external_exports.string(),
15517
+ name: external_exports.string(),
15518
+ description: external_exports.string().nullable(),
15519
+ instruction: external_exports.string(),
15520
+ appendSystemPrompt: external_exports.string().nullable(),
15521
+ enabled: external_exports.boolean(),
15522
+ chatThreadId: external_exports.string().uuid(),
15523
+ createdAt: external_exports.string(),
15524
+ updatedAt: external_exports.string(),
15525
+ triggers: external_exports.array(automationTriggerResponseSchema)
15526
+ });
15527
+ var automationListResponseSchema = external_exports.object({
15528
+ automations: external_exports.array(automationResponseSchema)
15529
+ });
15530
+ var cronTriggerConfigSchema = external_exports.object({
15531
+ kind: external_exports.literal("cron"),
15532
+ cronExpression: external_exports.string().min(1),
15533
+ timezone: external_exports.string().optional()
15534
+ });
15535
+ var onceTriggerConfigSchema = external_exports.object({
15536
+ kind: external_exports.literal("once"),
15537
+ atTime: external_exports.string().min(1),
15538
+ timezone: external_exports.string().optional()
15539
+ });
15540
+ var loopTriggerConfigSchema = external_exports.object({
15541
+ kind: external_exports.literal("loop"),
15542
+ intervalSeconds: external_exports.number().int().positive()
15543
+ });
15544
+ var createTriggerRequestSchema = external_exports.discriminatedUnion("kind", [
15545
+ cronTriggerConfigSchema,
15546
+ onceTriggerConfigSchema,
15547
+ loopTriggerConfigSchema
15548
+ ]);
15549
+ var updateTriggerRequestSchema = external_exports.discriminatedUnion("kind", [
15550
+ cronTriggerConfigSchema,
15551
+ onceTriggerConfigSchema,
15552
+ loopTriggerConfigSchema
15553
+ ]);
15554
+ var createAutomationRequestSchema = external_exports.object({
15555
+ name: external_exports.string().min(1).max(64, "Automation name max 64 chars"),
15556
+ agentId: external_exports.string().uuid("Invalid agent ID"),
15557
+ instruction: external_exports.string().min(1, "Instruction required"),
15558
+ description: external_exports.string().optional(),
15559
+ appendSystemPrompt: external_exports.string().optional(),
15560
+ enabled: external_exports.boolean().optional(),
15561
+ // Chat-thread linkage, honored only on creation. When provided, links the
15562
+ // automation to an existing owned chat thread; when omitted, the server
15563
+ // creates a web chat thread and links it.
15564
+ chatThreadId: external_exports.string().uuid("Invalid chat thread ID").optional(),
15565
+ trigger: createTriggerRequestSchema
15566
+ });
15567
+ var updateAutomationRequestSchema = external_exports.object({
15568
+ name: external_exports.string().min(1).max(64).optional(),
15569
+ instruction: external_exports.string().min(1).optional(),
15570
+ description: external_exports.string().nullable().optional(),
15571
+ appendSystemPrompt: external_exports.string().nullable().optional()
15572
+ });
15573
+ var automationMutationResponseSchema = external_exports.object({
15574
+ automation: automationResponseSchema
15575
+ });
15576
+ var triggerMutationResponseSchema = external_exports.object({
15577
+ trigger: automationTriggerResponseSchema
15578
+ });
15579
+ var automationRunResponseSchema = external_exports.object({
15580
+ runId: external_exports.string()
15581
+ });
15582
+ var refParamsSchema = external_exports.object({
15583
+ // Automation id (UUID) or unique name within the org/user scope.
15584
+ ref: external_exports.string().min(1)
15585
+ });
15586
+ var triggerIdParamsSchema = external_exports.object({
15587
+ id: external_exports.string().uuid("Invalid trigger ID")
15588
+ });
15589
+ var automationsMainContract = c82.router({
15590
+ create: {
15591
+ method: "POST",
15592
+ path: "/api/automations",
15593
+ headers: authHeadersSchema,
15594
+ body: createAutomationRequestSchema,
15595
+ responses: {
15596
+ 201: automationMutationResponseSchema,
15597
+ 400: apiErrorSchema,
15598
+ 401: apiErrorSchema,
15599
+ 403: apiErrorSchema,
15600
+ 404: apiErrorSchema
15601
+ },
15602
+ summary: "Create an automation with its schedule trigger"
15603
+ },
15604
+ list: {
15605
+ method: "GET",
15606
+ path: "/api/automations",
15607
+ headers: authHeadersSchema,
15608
+ responses: {
15609
+ 200: automationListResponseSchema,
15610
+ 401: apiErrorSchema,
15611
+ 403: apiErrorSchema,
15612
+ 404: apiErrorSchema
15613
+ },
15614
+ summary: "List automations with their triggers"
15615
+ }
15616
+ });
15617
+ var automationsByRefContract = c82.router({
15618
+ show: {
15619
+ method: "GET",
15620
+ path: "/api/automations/:ref",
15621
+ headers: authHeadersSchema,
15622
+ pathParams: refParamsSchema,
15623
+ responses: {
15624
+ 200: automationResponseSchema,
15625
+ 400: apiErrorSchema,
15626
+ 401: apiErrorSchema,
15627
+ 403: apiErrorSchema,
15628
+ 404: apiErrorSchema
15629
+ },
15630
+ summary: "Show an automation and its triggers"
15631
+ },
15632
+ update: {
15633
+ method: "PATCH",
15634
+ path: "/api/automations/:ref",
15635
+ headers: authHeadersSchema,
15636
+ pathParams: refParamsSchema,
15637
+ body: updateAutomationRequestSchema,
15638
+ responses: {
15639
+ 200: automationResponseSchema,
15640
+ 400: apiErrorSchema,
15641
+ 401: apiErrorSchema,
15642
+ 403: apiErrorSchema,
15643
+ 404: apiErrorSchema
15644
+ },
15645
+ summary: "Update an automation's identity/intent fields"
15646
+ },
15647
+ delete: {
15648
+ method: "DELETE",
15649
+ path: "/api/automations/:ref",
15650
+ headers: authHeadersSchema,
15651
+ pathParams: refParamsSchema,
15652
+ responses: {
15653
+ 204: c82.noBody(),
15654
+ 400: apiErrorSchema,
15655
+ 401: apiErrorSchema,
15656
+ 403: apiErrorSchema,
15657
+ 404: apiErrorSchema
15658
+ },
15659
+ summary: "Delete an automation (its triggers cascade)"
15660
+ },
15661
+ enable: {
15662
+ method: "POST",
15663
+ path: "/api/automations/:ref/enable",
15664
+ headers: authHeadersSchema,
15665
+ pathParams: refParamsSchema,
15666
+ body: external_exports.object({}).optional(),
15667
+ responses: {
15668
+ 200: automationResponseSchema,
15669
+ 400: apiErrorSchema,
15670
+ 401: apiErrorSchema,
15671
+ 403: apiErrorSchema,
15672
+ 404: apiErrorSchema
15673
+ },
15674
+ summary: "Enable an automation"
15675
+ },
15676
+ disable: {
15677
+ method: "POST",
15678
+ path: "/api/automations/:ref/disable",
15679
+ headers: authHeadersSchema,
15680
+ pathParams: refParamsSchema,
15681
+ body: external_exports.object({}).optional(),
15682
+ responses: {
15683
+ 200: automationResponseSchema,
15684
+ 400: apiErrorSchema,
15685
+ 401: apiErrorSchema,
15686
+ 403: apiErrorSchema,
15687
+ 404: apiErrorSchema
15688
+ },
15689
+ summary: "Disable an automation"
15690
+ },
15691
+ run: {
15692
+ method: "POST",
15693
+ path: "/api/automations/:ref/run",
15694
+ headers: authHeadersSchema,
15695
+ pathParams: refParamsSchema,
15696
+ body: external_exports.object({}).optional(),
15697
+ responses: {
15698
+ 201: automationRunResponseSchema,
15699
+ 400: apiErrorSchema,
15700
+ 401: apiErrorSchema,
15701
+ 402: apiErrorSchema,
15702
+ 403: apiErrorSchema,
15703
+ 404: apiErrorSchema,
15704
+ 409: apiErrorSchema,
15705
+ 429: apiErrorSchema,
15706
+ 503: apiErrorSchema
15707
+ },
15708
+ summary: "Manually fire an automation (instruction-only, no event)"
15709
+ }
15710
+ });
15711
+ var automationTriggersContract = c82.router({
15712
+ show: {
15713
+ method: "GET",
15714
+ path: "/api/automation-triggers/:id",
15715
+ headers: authHeadersSchema,
15716
+ pathParams: triggerIdParamsSchema,
15717
+ responses: {
15718
+ 200: automationTriggerResponseSchema,
15719
+ 401: apiErrorSchema,
15720
+ 403: apiErrorSchema,
15721
+ 404: apiErrorSchema
15722
+ },
15723
+ summary: "Show a trigger"
15724
+ },
15725
+ update: {
15726
+ method: "PATCH",
15727
+ path: "/api/automation-triggers/:id",
15728
+ headers: authHeadersSchema,
15729
+ pathParams: triggerIdParamsSchema,
15730
+ body: updateTriggerRequestSchema,
15731
+ responses: {
15732
+ 200: automationTriggerResponseSchema,
15733
+ 400: apiErrorSchema,
15734
+ 401: apiErrorSchema,
15735
+ 403: apiErrorSchema,
15736
+ 404: apiErrorSchema
15737
+ },
15738
+ summary: "Replace a time trigger's schedule config (kind may switch among cron/once/loop)"
15739
+ },
15740
+ enable: {
15741
+ method: "POST",
15742
+ path: "/api/automation-triggers/:id/enable",
15743
+ headers: authHeadersSchema,
15744
+ pathParams: triggerIdParamsSchema,
15745
+ body: external_exports.object({}).optional(),
15746
+ responses: {
15747
+ 200: automationTriggerResponseSchema,
15748
+ 400: apiErrorSchema,
15749
+ 401: apiErrorSchema,
15750
+ 403: apiErrorSchema,
15751
+ 404: apiErrorSchema
15752
+ },
15753
+ summary: "Enable a single trigger"
15754
+ },
15755
+ disable: {
15756
+ method: "POST",
15757
+ path: "/api/automation-triggers/:id/disable",
15758
+ headers: authHeadersSchema,
15759
+ pathParams: triggerIdParamsSchema,
15760
+ body: external_exports.object({}).optional(),
15761
+ responses: {
15762
+ 200: automationTriggerResponseSchema,
15763
+ 401: apiErrorSchema,
15764
+ 403: apiErrorSchema,
15765
+ 404: apiErrorSchema
15766
+ },
15767
+ summary: "Disable a single trigger"
15768
+ }
15769
+ });
15770
+
15771
+ // ../../packages/api-contracts/src/contracts/zero-voice-io-quota.ts
15772
+ init_esm_shims();
15773
+ var c83 = initContract();
15491
15774
  var audioInputQuotaResponseSchema = external_exports.object({
15492
15775
  allowed: external_exports.boolean(),
15493
15776
  count: external_exports.number().int().nonnegative(),
15494
15777
  limit: external_exports.number().int().nonnegative().nullable()
15495
15778
  });
15496
- var zeroVoiceIoQuotaContract = c82.router({
15779
+ var zeroVoiceIoQuotaContract = c83.router({
15497
15780
  get: {
15498
15781
  method: "GET",
15499
15782
  path: "/api/zero/voice-io/quota",
@@ -15509,7 +15792,7 @@ var zeroVoiceIoQuotaContract = c82.router({
15509
15792
 
15510
15793
  // ../../packages/api-contracts/src/contracts/zero-voice-io-speech.ts
15511
15794
  init_esm_shims();
15512
- var c83 = initContract();
15795
+ var c84 = initContract();
15513
15796
  var zeroVoiceIoSpeechRequestSchema = external_exports.object({
15514
15797
  text: external_exports.string().optional(),
15515
15798
  voice: external_exports.string().optional(),
@@ -15526,7 +15809,7 @@ var zeroVoiceIoSpeechResponseSchema = external_exports.object({
15526
15809
  model: external_exports.string(),
15527
15810
  voice: external_exports.string()
15528
15811
  });
15529
- var zeroVoiceIoSpeechContract = c83.router({
15812
+ var zeroVoiceIoSpeechContract = c84.router({
15530
15813
  post: {
15531
15814
  method: "POST",
15532
15815
  path: "/api/zero/voice-io/speech",
@@ -15548,7 +15831,7 @@ var zeroVoiceIoSpeechContract = c83.router({
15548
15831
 
15549
15832
  // ../../packages/api-contracts/src/contracts/zero-voice-io-stt.ts
15550
15833
  init_esm_shims();
15551
- var c84 = initContract();
15834
+ var c85 = initContract();
15552
15835
  var zeroVoiceIoSttSegmentSchema = external_exports.object({
15553
15836
  start: external_exports.number(),
15554
15837
  end: external_exports.number(),
@@ -15564,13 +15847,13 @@ var zeroVoiceIoSttQuotaErrorSchema = apiErrorSchema.extend({
15564
15847
  limit: external_exports.number().nullable()
15565
15848
  }).optional()
15566
15849
  });
15567
- var zeroVoiceIoSttContract = c84.router({
15850
+ var zeroVoiceIoSttContract = c85.router({
15568
15851
  post: {
15569
15852
  method: "POST",
15570
15853
  path: "/api/zero/voice-io/stt",
15571
15854
  headers: authHeadersSchema,
15572
15855
  contentType: "multipart/form-data",
15573
- body: c84.type(),
15856
+ body: c85.type(),
15574
15857
  query: external_exports.object({
15575
15858
  verbose: external_exports.coerce.boolean().optional().default(false)
15576
15859
  }),
@@ -15590,7 +15873,7 @@ var zeroVoiceIoSttContract = c84.router({
15590
15873
 
15591
15874
  // ../../packages/api-contracts/src/contracts/zero-uploads.ts
15592
15875
  init_esm_shims();
15593
- var c85 = initContract();
15876
+ var c86 = initContract();
15594
15877
  var prepareRequestSchema = external_exports.object({
15595
15878
  filename: external_exports.string().min(1).max(255),
15596
15879
  contentType: external_exports.string().min(1).max(200),
@@ -15621,7 +15904,7 @@ var completeResponseSchema = external_exports.object({
15621
15904
  size: external_exports.number(),
15622
15905
  url: external_exports.string().url()
15623
15906
  });
15624
- var zeroUploadsContract = c85.router({
15907
+ var zeroUploadsContract = c86.router({
15625
15908
  prepare: {
15626
15909
  method: "POST",
15627
15910
  path: "/api/zero/uploads/prepare",
@@ -15672,7 +15955,7 @@ var zeroUploadsContract = c85.router({
15672
15955
 
15673
15956
  // ../../packages/api-contracts/src/contracts/zero-integrations-telegram.ts
15674
15957
  init_esm_shims();
15675
- var c86 = initContract();
15958
+ var c87 = initContract();
15676
15959
  var telegramEnvironmentSchema = external_exports.object({
15677
15960
  requiredSecrets: external_exports.array(external_exports.string()),
15678
15961
  requiredVars: external_exports.array(external_exports.string()),
@@ -15771,7 +16054,7 @@ var telegramSetupStatusSchema = external_exports.object({
15771
16054
  var telegramWebhookPathParamsSchema = external_exports.object({
15772
16055
  telegramBotId: external_exports.string().min(1)
15773
16056
  });
15774
- var zeroIntegrationsTelegramContract = c86.router({
16057
+ var zeroIntegrationsTelegramContract = c87.router({
15775
16058
  list: {
15776
16059
  method: "GET",
15777
16060
  path: "/api/integrations/telegram",
@@ -15814,9 +16097,9 @@ var zeroIntegrationsTelegramContract = c86.router({
15814
16097
  path: "/api/integrations/telegram/:botId",
15815
16098
  headers: authHeadersSchema,
15816
16099
  pathParams: external_exports.object({ botId: external_exports.string().min(1) }),
15817
- body: c86.noBody(),
16100
+ body: c87.noBody(),
15818
16101
  responses: {
15819
- 204: c86.noBody(),
16102
+ 204: c87.noBody(),
15820
16103
  401: apiErrorSchema,
15821
16104
  403: apiErrorSchema,
15822
16105
  404: apiErrorSchema
@@ -15827,10 +16110,10 @@ var zeroIntegrationsTelegramContract = c86.router({
15827
16110
  method: "DELETE",
15828
16111
  path: "/api/integrations/telegram/link",
15829
16112
  headers: authHeadersSchema,
15830
- body: c86.noBody(),
16113
+ body: c87.noBody(),
15831
16114
  query: external_exports.object({ botId: external_exports.string().optional() }),
15832
16115
  responses: {
15833
- 204: c86.noBody(),
16116
+ 204: c87.noBody(),
15834
16117
  401: apiErrorSchema,
15835
16118
  404: apiErrorSchema
15836
16119
  },
@@ -15861,7 +16144,7 @@ var zeroIntegrationsTelegramContract = c86.router({
15861
16144
  sig: external_exports.string().optional()
15862
16145
  }),
15863
16146
  responses: {
15864
- 200: c86.otherResponse({
16147
+ 200: c87.otherResponse({
15865
16148
  contentType: "application/octet-stream",
15866
16149
  body: external_exports.unknown()
15867
16150
  }),
@@ -15876,7 +16159,7 @@ var zeroIntegrationsTelegramContract = c86.router({
15876
16159
  method: "GET",
15877
16160
  path: "/api/integrations/telegram/auth-callback",
15878
16161
  responses: {
15879
- 200: c86.otherResponse({
16162
+ 200: c87.otherResponse({
15880
16163
  contentType: "text/html",
15881
16164
  body: external_exports.unknown()
15882
16165
  })
@@ -15935,19 +16218,19 @@ var zeroIntegrationsTelegramContract = c86.router({
15935
16218
  pathParams: telegramWebhookPathParamsSchema,
15936
16219
  body: external_exports.unknown(),
15937
16220
  responses: {
15938
- 200: c86.otherResponse({
16221
+ 200: c87.otherResponse({
15939
16222
  contentType: "text/plain",
15940
16223
  body: external_exports.string()
15941
16224
  }),
15942
- 400: c86.otherResponse({
16225
+ 400: c87.otherResponse({
15943
16226
  contentType: "text/plain",
15944
16227
  body: external_exports.string()
15945
16228
  }),
15946
- 401: c86.otherResponse({
16229
+ 401: c87.otherResponse({
15947
16230
  contentType: "text/plain",
15948
16231
  body: external_exports.string()
15949
16232
  }),
15950
- 404: c86.otherResponse({
16233
+ 404: c87.otherResponse({
15951
16234
  contentType: "text/plain",
15952
16235
  body: external_exports.string()
15953
16236
  })
@@ -15973,7 +16256,7 @@ var zeroIntegrationsTelegramContract = c86.router({
15973
16256
 
15974
16257
  // ../../packages/api-contracts/src/contracts/zero-integrations-agentphone.ts
15975
16258
  init_esm_shims();
15976
- var c87 = initContract();
16259
+ var c88 = initContract();
15977
16260
  var agentPhoneConnectBodySchema = external_exports.object({
15978
16261
  phoneHandle: external_exports.string().min(1),
15979
16262
  agentphoneAgentId: external_exports.string().min(1),
@@ -16010,7 +16293,7 @@ var agentPhoneStartLinkResponseSchema = external_exports.object({
16010
16293
  phoneHandle: external_exports.string(),
16011
16294
  verificationSent: external_exports.literal(true)
16012
16295
  });
16013
- var zeroIntegrationsAgentPhoneContract = c87.router({
16296
+ var zeroIntegrationsAgentPhoneContract = c88.router({
16014
16297
  connectAgentPhone: {
16015
16298
  method: "POST",
16016
16299
  path: "/api/agentphone/connect",
@@ -16028,7 +16311,7 @@ var zeroIntegrationsAgentPhoneContract = c87.router({
16028
16311
  method: "POST",
16029
16312
  path: "/api/agentphone/webhook",
16030
16313
  headers: agentPhoneWebhookHeadersSchema,
16031
- body: c87.type(),
16314
+ body: c88.type(),
16032
16315
  responses: {
16033
16316
  200: external_exports.string(),
16034
16317
  400: external_exports.string(),
@@ -16066,9 +16349,9 @@ var zeroIntegrationsAgentPhoneContract = c87.router({
16066
16349
  method: "DELETE",
16067
16350
  path: "/api/integrations/agentphone/link",
16068
16351
  headers: authHeadersSchema,
16069
- body: c87.noBody(),
16352
+ body: c88.noBody(),
16070
16353
  responses: {
16071
- 204: c87.noBody(),
16354
+ 204: c88.noBody(),
16072
16355
  401: apiErrorSchema,
16073
16356
  404: apiErrorSchema
16074
16357
  },
@@ -18561,6 +18844,151 @@ function showNextSteps(result) {
18561
18844
  }
18562
18845
  }
18563
18846
 
18847
+ // src/lib/utils/time-parser.ts
18848
+ init_esm_shims();
18849
+ var ISO_8601_PATTERN = /^(\d{4})-(\d{2})-(\d{2})(?:[Tt](\d{2}):(\d{2})(?::(\d{2})(?:\.\d{1,9})?)?(?:[Zz]|[+-]\d{2}:?\d{2})?)?$/;
18850
+ var DAYS_BY_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
18851
+ var MAX_DATE_TIMESTAMP_MS = 864e13;
18852
+ function parseTime(timeStr) {
18853
+ const relativeMatch = timeStr.match(/^(\d+)([smhdw])$/);
18854
+ if (relativeMatch) {
18855
+ const value = Number(relativeMatch[1]);
18856
+ const unit = relativeMatch[2];
18857
+ const timestamp2 = parseRelativeTime(value, unit);
18858
+ if (timestamp2 !== void 0) {
18859
+ return timestamp2;
18860
+ }
18861
+ }
18862
+ if (/^\d+$/.test(timeStr)) {
18863
+ const rawTimestamp = Number(timeStr);
18864
+ const timestamp2 = rawTimestamp < 1e10 ? rawTimestamp * 1e3 : rawTimestamp;
18865
+ if (isValidTimestamp(timestamp2)) {
18866
+ return timestamp2;
18867
+ }
18868
+ }
18869
+ const timestamp = parseIsoTime(timeStr);
18870
+ if (timestamp !== void 0) {
18871
+ return timestamp;
18872
+ }
18873
+ throw new Error(
18874
+ `Invalid time format: "${timeStr}". Supported formats: relative (5m, 2h, 1d), ISO 8601 (2024-01-15T10:30:00Z), Unix timestamp`
18875
+ );
18876
+ }
18877
+ function parseIsoTime(timeStr) {
18878
+ const match = ISO_8601_PATTERN.exec(timeStr);
18879
+ if (!match) {
18880
+ return void 0;
18881
+ }
18882
+ const year = Number(match[1]);
18883
+ const month = Number(match[2]);
18884
+ const day = Number(match[3]);
18885
+ const hour = match[4] ? Number(match[4]) : 0;
18886
+ const minute = match[5] ? Number(match[5]) : 0;
18887
+ const second = match[6] ? Number(match[6]) : 0;
18888
+ if (!Number.isInteger(year) || !Number.isInteger(month) || !Number.isInteger(day) || !Number.isInteger(hour) || !Number.isInteger(minute) || !Number.isInteger(second) || month < 1 || month > 12 || day < 1 || day > daysInMonth(year, month) || hour > 23 || minute > 59 || second > 59) {
18889
+ return void 0;
18890
+ }
18891
+ const timestamp = new Date(timeStr).getTime();
18892
+ return isValidTimestamp(timestamp) ? timestamp : void 0;
18893
+ }
18894
+ function daysInMonth(year, month) {
18895
+ if (month === 2) {
18896
+ return isLeapYear(year) ? 29 : 28;
18897
+ }
18898
+ return DAYS_BY_MONTH[month - 1] ?? 0;
18899
+ }
18900
+ function isLeapYear(year) {
18901
+ return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);
18902
+ }
18903
+ function parseRelativeTime(value, unit) {
18904
+ if (!Number.isSafeInteger(value)) {
18905
+ return void 0;
18906
+ }
18907
+ const now = Date.now();
18908
+ const multipliers = {
18909
+ s: 1e3,
18910
+ // seconds
18911
+ m: 60 * 1e3,
18912
+ // minutes
18913
+ h: 60 * 60 * 1e3,
18914
+ // hours
18915
+ d: 24 * 60 * 60 * 1e3,
18916
+ // days
18917
+ w: 7 * 24 * 60 * 60 * 1e3
18918
+ // weeks
18919
+ };
18920
+ const multiplier = multipliers[unit];
18921
+ if (!multiplier) {
18922
+ throw new Error(`Unknown time unit: ${unit}`);
18923
+ }
18924
+ const timestamp = now - value * multiplier;
18925
+ return isValidTimestamp(timestamp) ? timestamp : void 0;
18926
+ }
18927
+ function isValidTimestamp(timestamp) {
18928
+ return Number.isSafeInteger(timestamp) && Math.abs(timestamp) <= MAX_DATE_TIMESTAMP_MS;
18929
+ }
18930
+
18931
+ // src/lib/utils/log-pagination.ts
18932
+ init_esm_shims();
18933
+ function parsePositiveLogCount(value, optionName) {
18934
+ const trimmed = value.trim();
18935
+ if (!/^0*[1-9]\d*$/.test(trimmed)) {
18936
+ throw new Error(`Option ${optionName} must be a positive integer`);
18937
+ }
18938
+ const count = Number(trimmed);
18939
+ if (!Number.isSafeInteger(count)) {
18940
+ throw new Error(`Option ${optionName} must be a positive integer`);
18941
+ }
18942
+ return count;
18943
+ }
18944
+ function parseBoundedLogCount(value, optionName, min, max) {
18945
+ const trimmed = value.trim();
18946
+ if (!/^\d+$/.test(trimmed)) {
18947
+ throw new Error(`${optionName} must be between ${min} and ${max}`);
18948
+ }
18949
+ const count = Number(trimmed);
18950
+ if (!Number.isSafeInteger(count) || count < min || count > max) {
18951
+ throw new Error(`${optionName} must be between ${min} and ${max}`);
18952
+ }
18953
+ return count;
18954
+ }
18955
+ async function collectLogItems(options) {
18956
+ const collected = [];
18957
+ const seenCursors = /* @__PURE__ */ new Set();
18958
+ let cursor;
18959
+ while (true) {
18960
+ const requestLimit = options.targetCount === "all" ? options.pageLimit : Math.min(options.pageLimit, options.targetCount - collected.length);
18961
+ const page = await options.fetchPage({
18962
+ sinceTime: options.sinceTime,
18963
+ cursor,
18964
+ limit: requestLimit,
18965
+ order: options.order
18966
+ });
18967
+ collected.push(...page.items);
18968
+ if (options.targetCount !== "all" && collected.length >= options.targetCount) {
18969
+ break;
18970
+ }
18971
+ const nextCursor = page.nextCursor ?? null;
18972
+ if (!page.hasMore || !nextCursor || seenCursors.has(nextCursor)) {
18973
+ break;
18974
+ }
18975
+ seenCursors.add(nextCursor);
18976
+ cursor = nextCursor;
18977
+ }
18978
+ const entries = options.targetCount === "all" ? collected : collected.slice(0, options.targetCount);
18979
+ return options.order === "desc" ? entries.reverse() : entries;
18980
+ }
18981
+
18982
+ // src/lib/utils/search-query.ts
18983
+ init_esm_shims();
18984
+ function parseSearchQuery(value, label) {
18985
+ const trimmed = value.trim();
18986
+ if (!trimmed) {
18987
+ throw new Error(`${label} cannot be empty.`);
18988
+ }
18989
+ return trimmed;
18990
+ }
18991
+
18564
18992
  export {
18565
18993
  require_dist,
18566
18994
  extractAndGroupVariables,
@@ -18582,6 +19010,11 @@ export {
18582
19010
  parseIdentifier,
18583
19011
  renderRunCreated,
18584
19012
  pollEvents,
18585
- showNextSteps
19013
+ showNextSteps,
19014
+ parseTime,
19015
+ parsePositiveLogCount,
19016
+ parseBoundedLogCount,
19017
+ collectLogItems,
19018
+ parseSearchQuery
18586
19019
  };
18587
- //# sourceMappingURL=chunk-FJFAPB3B.js.map
19020
+ //# sourceMappingURL=chunk-5EPGSDIQ.js.map