@togglhq/cli 1.5.28 → 1.5.30

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
@@ -78,7 +78,7 @@ toggl [global flags] <group> … <subcommand> [flags]
78
78
 
79
79
  Many endpoints use two segments (`toggl tasks list`). Some use nested groups, including:
80
80
 
81
- - **`toggl organization …`** — organization APIs (not `toggl org …`; there is no `org` top-level command). Examples: `toggl organization invitations list`, `toggl organization members get`, `toggl organization workspaces list`.
81
+ - **`toggl organization …`** — organization APIs (not `toggl org …`; there is no `org` top-level command). Examples: `toggl organization invitations list`, `toggl organization members get`, `toggl organization workspaces list`, `toggl organization workspaces get-timezone`, `toggl organization workspaces update-timezone`.
82
82
  - **`toggl shared …`** — shared workspace/org data routed through `@toggl/queries` helpers (status, holidays, working hours, time off). Example: `toggl shared status get`.
83
83
 
84
84
  Core resource groups still include `tasks`, `projects`, `time-blocks`, `time-entries`, `statuses`, `users`, `tags`, `clients`, and others surfaced by the public command catalog. Some low-level endpoints are omitted from the CLI and MCP. Existing public command paths and operation IDs stay stable; use `toggl --help` and `toggl <group> --help` to explore what shipped.
package/build/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { n as CommanderError, t as createProgram } from "./program-CwW_34U6.js";
2
+ import { n as CommanderError, t as createProgram } from "./program-D1SqAxB5.js";
3
3
  //#region src/cli.ts
4
4
  try {
5
5
  await createProgram({ enableUpdateNotification: true }).parseAsync(process.argv);
package/build/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as createProgram } from "./program-CwW_34U6.js";
1
+ import { t as createProgram } from "./program-D1SqAxB5.js";
2
2
  export { createProgram };
@@ -7670,6 +7670,31 @@ function looseObject(entries$1, message$1) {
7670
7670
  };
7671
7671
  }
7672
7672
  /* @__NO_SIDE_EFFECTS__ */
7673
+ function nullable$1(wrapped, default_) {
7674
+ return {
7675
+ kind: "schema",
7676
+ type: "nullable",
7677
+ reference: nullable$1,
7678
+ expects: `(${wrapped.expects} | null)`,
7679
+ async: false,
7680
+ wrapped,
7681
+ default: default_,
7682
+ get "~standard"() {
7683
+ return /* @__PURE__ */ _getStandardProps$1(this);
7684
+ },
7685
+ "~run"(dataset, config$1) {
7686
+ if (dataset.value === null) {
7687
+ if (this.default !== void 0) dataset.value = /* @__PURE__ */ getDefault$1(this, dataset, config$1);
7688
+ if (dataset.value === null) {
7689
+ dataset.typed = true;
7690
+ return dataset;
7691
+ }
7692
+ }
7693
+ return this.wrapped["~run"](dataset, config$1);
7694
+ }
7695
+ };
7696
+ }
7697
+ /* @__NO_SIDE_EFFECTS__ */
7673
7698
  function number$2(message$1) {
7674
7699
  return {
7675
7700
  kind: "schema",
@@ -9025,6 +9050,7 @@ const TimeBlockSchema = /* @__PURE__ */ object({
9025
9050
  deleted_at: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime())),
9026
9051
  description: /* @__PURE__ */ optional(/* @__PURE__ */ string()),
9027
9052
  duration: /* @__PURE__ */ optional(/* @__PURE__ */ number()),
9053
+ timezone: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ description("Timezone is the effective IANA timezone hydrated on reads: the workspace timezone snapshotted at creation when set, else the creator's snapshot; NULL when unresolved."))),
9028
9054
  updated_at: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime()))
9029
9055
  });
9030
9056
  const BillableSourceSchema = /* @__PURE__ */ picklist(["manual", "task_default"]);
@@ -9048,6 +9074,7 @@ const TimeEntrySchema = /* @__PURE__ */ object({
9048
9074
  start: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime())),
9049
9075
  task_id: /* @__PURE__ */ optional(/* @__PURE__ */ nullable(/* @__PURE__ */ number())),
9050
9076
  time_block_id: /* @__PURE__ */ optional(/* @__PURE__ */ number()),
9077
+ timezone: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ description("Timezone is the effective IANA timezone hydrated on reads: the workspace timezone snapshotted at creation when set, else the creator's snapshot; NULL when unresolved."))),
9051
9078
  tracked_at: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime())),
9052
9079
  updated_at: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime()))
9053
9080
  });
@@ -9170,6 +9197,7 @@ const PaginatedTimeBlockAggregateWithTasksSchema = /* @__PURE__ */ object({
9170
9197
  duration: /* @__PURE__ */ optional(/* @__PURE__ */ number()),
9171
9198
  has_time_entry: /* @__PURE__ */ optional(/* @__PURE__ */ boolean()),
9172
9199
  task: /* @__PURE__ */ optional(TaskSchema),
9200
+ timezone: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ description("Timezone is the effective IANA timezone hydrated on reads: the workspace timezone snapshotted at creation when set, else the creator's snapshot; NULL when unresolved."))),
9173
9201
  updated_at: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime()))
9174
9202
  })),
9175
9203
  page: /* @__PURE__ */ number(),
@@ -9210,6 +9238,7 @@ const PaginatedTimeEntryWithTasksSchema = /* @__PURE__ */ object({
9210
9238
  task: /* @__PURE__ */ optional(TaskSchema),
9211
9239
  task_id: /* @__PURE__ */ optional(/* @__PURE__ */ nullable(/* @__PURE__ */ number())),
9212
9240
  time_block_id: /* @__PURE__ */ optional(/* @__PURE__ */ number()),
9241
+ timezone: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ description("Timezone is the effective IANA timezone hydrated on reads: the workspace timezone snapshotted at creation when set, else the creator's snapshot; NULL when unresolved."))),
9213
9242
  tracked_at: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime())),
9214
9243
  updated_at: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime()))
9215
9244
  })),
@@ -9585,7 +9614,7 @@ async function updateOrganizationGroupUserRole(httpClient, organization_id, grou
9585
9614
  async function getOrganizationRoles(httpClient, organization_id, signal) {
9586
9615
  return await httpClient.get(`organizations/${organization_id}/roles`, { signal }).json();
9587
9616
  }
9588
- async function getOrganizationTeamsClassic(httpClient, organization_id, { workspace_id, page, per_page, sort_dir, filter, query, organization_user_id, group_ids }, signal) {
9617
+ async function getOrganizationTeamsClassic(httpClient, organization_id, { workspace_id, page, per_page, sort_dir, filter, query, organization_user_id, group_ids, active_members_only }, signal) {
9589
9618
  return await httpClient.get(`organizations/${organization_id}/teams`, {
9590
9619
  signal,
9591
9620
  searchParams: buildSearchParams$3({
@@ -9596,7 +9625,8 @@ async function getOrganizationTeamsClassic(httpClient, organization_id, { worksp
9596
9625
  filter,
9597
9626
  query,
9598
9627
  organization_user_id,
9599
- group_ids
9628
+ group_ids,
9629
+ active_members_only
9600
9630
  })
9601
9631
  }).json();
9602
9632
  }
@@ -10040,25 +10070,23 @@ async function getTaskByExternalId(httpClient, organization_id, workspace_id, {
10040
10070
  })
10041
10071
  }).json();
10042
10072
  }
10043
- async function getTasksCalendarEvents(httpClient, organization_id, workspace_id, { date_from, date_to, calendar_event_id, time_zone, hidden } = {}, signal) {
10073
+ async function getTasksCalendarEvents(httpClient, organization_id, workspace_id, { date_from, date_to, calendar_event_id, hidden } = {}, signal) {
10044
10074
  return await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/calendar`, {
10045
10075
  signal,
10046
10076
  searchParams: buildSearchParams$3({
10047
10077
  date_from,
10048
10078
  date_to,
10049
10079
  calendar_event_id,
10050
- time_zone,
10051
10080
  hidden
10052
10081
  })
10053
10082
  }).json();
10054
10083
  }
10055
- async function putTasksCalendarRange(httpClient, organization_id, workspace_id, date_from, date_to, timezone, signal) {
10084
+ async function putTasksCalendarRange(httpClient, organization_id, workspace_id, date_from, date_to, signal) {
10056
10085
  return await httpClient.put(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/calendar`, {
10057
10086
  signal,
10058
10087
  searchParams: buildSearchParams$3({
10059
10088
  date_from,
10060
- date_to,
10061
- timezone
10089
+ date_to
10062
10090
  })
10063
10091
  }).json();
10064
10092
  }
@@ -10082,7 +10110,7 @@ async function getTasksRecurringInstancesClassic(httpClient, organization_id, wo
10082
10110
  })
10083
10111
  }).json();
10084
10112
  }
10085
- async function getStreamTasks(httpClient, organization_id, workspace_id, { with_entries, pinned, order_by, status_id, toggl_user_id, name, has_time_entries, has_time_blocks, has_dates, archived, include_project_completed, include_drafts, project_id, parent_task_id, start_date, end_date, active_by_date, start_date_from, start_date_to, end_date_from, end_date_to, dates_overlap_start, dates_overlap_end, estimated_mins_min, estimated_mins_max, source, priority, is_priority, state, time_block_id, time_block_completed, team_id, assignee_user_id, tag_id, recurring, recurring_task_ids, client_id, include_ghost_assignees, include_assignees, assignee_ghost_id, cf_filter } = {}, signal) {
10113
+ async function getStreamTasks(httpClient, organization_id, workspace_id, { with_entries, pinned, order_by, status_id, toggl_user_id, name, has_time_entries, has_time_blocks, has_dates, private: private_, archived, include_project_completed, include_drafts, project_id, parent_task_id, start_date, end_date, active_by_date, start_date_from, start_date_to, end_date_from, end_date_to, dates_overlap_start, dates_overlap_end, estimated_mins_min, estimated_mins_max, source, priority, is_priority, state, time_block_id, time_block_completed, team_id, assignee_user_id, tag_id, recurring, recurring_task_ids, client_id, include_ghost_assignees, include_assignees, assignee_ghost_id, cf_filter } = {}, signal) {
10086
10114
  return await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/stream`, {
10087
10115
  signal,
10088
10116
  searchParams: buildSearchParams$3({
@@ -10095,6 +10123,7 @@ async function getStreamTasks(httpClient, organization_id, workspace_id, { with_
10095
10123
  has_time_entries,
10096
10124
  has_time_blocks,
10097
10125
  has_dates,
10126
+ private: private_,
10098
10127
  archived,
10099
10128
  include_project_completed,
10100
10129
  include_drafts,
@@ -10328,7 +10357,7 @@ async function createTimeEntryWithOrg(httpClient, organization_id, workspace_id,
10328
10357
  json: data
10329
10358
  }).json();
10330
10359
  }
10331
- async function getTimeEntriesRangeWithOrgClassic(httpClient, organization_id, workspace_id, { date_from, date_to, task_id, status_id, type, page, per_page, order_by, archived, time_block_id, include_taskless, expand_calendar_event, time_zone }, signal) {
10360
+ async function getTimeEntriesRangeWithOrgClassic(httpClient, organization_id, workspace_id, { date_from, date_to, task_id, status_id, type, page, per_page, order_by, archived, time_block_id, include_taskless, expand_calendar_event }, signal) {
10332
10361
  return await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/time-entries`, {
10333
10362
  signal,
10334
10363
  searchParams: buildSearchParams$3({
@@ -10343,8 +10372,7 @@ async function getTimeEntriesRangeWithOrgClassic(httpClient, organization_id, wo
10343
10372
  archived,
10344
10373
  time_block_id,
10345
10374
  include_taskless,
10346
- expand_calendar_event,
10347
- time_zone
10375
+ expand_calendar_event
10348
10376
  })
10349
10377
  }).json();
10350
10378
  }
@@ -10396,7 +10424,7 @@ async function bulkSetDayDurationWithOrg(httpClient, organization_id, workspace_
10396
10424
  json: data
10397
10425
  }).json();
10398
10426
  }
10399
- async function getStreamTimeEntriesRangeWithOrg(httpClient, organization_id, workspace_id, { date_from, date_to, task_id, status_id, type, order_by, archived, include_taskless, expand_calendar_event, time_zone }, signal) {
10427
+ async function getStreamTimeEntriesRangeWithOrg(httpClient, organization_id, workspace_id, { date_from, date_to, task_id, status_id, type, order_by, archived, include_taskless, expand_calendar_event }, signal) {
10400
10428
  return await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/time-entries/stream`, {
10401
10429
  signal,
10402
10430
  searchParams: buildSearchParams$3({
@@ -10408,8 +10436,7 @@ async function getStreamTimeEntriesRangeWithOrg(httpClient, organization_id, wor
10408
10436
  order_by,
10409
10437
  archived,
10410
10438
  include_taskless,
10411
- expand_calendar_event,
10412
- time_zone
10439
+ expand_calendar_event
10413
10440
  })
10414
10441
  }).json();
10415
10442
  }
@@ -10545,7 +10572,7 @@ const PublicMeEntryRequestSchema = /* @__PURE__ */ object$2({
10545
10572
  ]))
10546
10573
  });
10547
10574
  //#endregion
10548
- //#region ../../node_modules/.pnpm/@toggl+queries@0.15.21_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_rea_e185795a21ccf0053f35bb3174ff9cd2/node_modules/@toggl/queries/dist/org/invitation/requests.mjs
10575
+ //#region ../../node_modules/.pnpm/@toggl+queries@0.15.24_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_rea_ed9b6b8a86ac88aa35571489073a9959/node_modules/@toggl/queries/dist/org/invitation/requests.mjs
10549
10576
  async function getInvitations(httpClient, signal) {
10550
10577
  return (await httpClient.get(`invitations`, { signal })).json();
10551
10578
  }
@@ -10562,7 +10589,7 @@ async function resendInvitation(httpClient, organization_id, organization_user_i
10562
10589
  return (await httpClient.post(`organizations/${organization_id}/invitations/${organization_user_id}/resend`, { signal })).json();
10563
10590
  }
10564
10591
  //#endregion
10565
- //#region ../../node_modules/.pnpm/@toggl+queries@0.15.21_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_rea_e185795a21ccf0053f35bb3174ff9cd2/node_modules/@toggl/queries/dist/org/utils/requests.mjs
10592
+ //#region ../../node_modules/.pnpm/@toggl+queries@0.15.24_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_rea_ed9b6b8a86ac88aa35571489073a9959/node_modules/@toggl/queries/dist/org/utils/requests.mjs
10566
10593
  function buildSearchParams$1(params, flattenArrays = false) {
10567
10594
  const searchParams = new URLSearchParams();
10568
10595
  Object.entries(params).forEach(([key, value]) => {
@@ -10574,7 +10601,7 @@ function buildSearchParams$1(params, flattenArrays = false) {
10574
10601
  return searchParams;
10575
10602
  }
10576
10603
  //#endregion
10577
- //#region ../../node_modules/.pnpm/@toggl+queries@0.15.21_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_rea_e185795a21ccf0053f35bb3174ff9cd2/node_modules/@toggl/queries/dist/org/organization-user/requests.mjs
10604
+ //#region ../../node_modules/.pnpm/@toggl+queries@0.15.24_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_rea_ed9b6b8a86ac88aa35571489073a9959/node_modules/@toggl/queries/dist/org/organization-user/requests.mjs
10578
10605
  async function getOrganizationUser(httpClient, organization_id, organization_user_id, signal) {
10579
10606
  return (await httpClient.get(`organizations/${organization_id}/users/${organization_user_id}`, { signal })).json();
10580
10607
  }
@@ -10588,10 +10615,19 @@ async function patchOrganizationUserActive(httpClient, organization_id, organiza
10588
10615
  return (await httpClient.patch(`organizations/${organization_id}/users/${organization_user_id}/active_status/${status}`, { signal })).json();
10589
10616
  }
10590
10617
  //#endregion
10591
- //#region ../../node_modules/.pnpm/@toggl+queries@0.15.21_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_rea_e185795a21ccf0053f35bb3174ff9cd2/node_modules/@toggl/queries/dist/org/workspace/requests.mjs
10618
+ //#region ../../node_modules/.pnpm/@toggl+queries@0.15.24_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_rea_ed9b6b8a86ac88aa35571489073a9959/node_modules/@toggl/queries/dist/org/workspace/requests.mjs
10592
10619
  async function getWorkspaces(httpClient, organization_id, signal) {
10593
10620
  return (await httpClient.get(`organizations/${organization_id}/workspaces`, { signal })).json();
10594
10621
  }
10622
+ async function getWorkspaceTimezone(httpClient, organization_id, workspace_id, signal) {
10623
+ return (await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/settings/timezone`, { signal })).json();
10624
+ }
10625
+ async function putWorkspaceTimezone(httpClient, organization_id, workspace_id, data, signal) {
10626
+ return (await httpClient.put(`organizations/${organization_id}/workspaces/${workspace_id}/settings/timezone`, {
10627
+ signal,
10628
+ json: data
10629
+ })).json();
10630
+ }
10595
10631
  async function getWorkspaceUserMeRoles(httpClient, organization_id, workspace_id, signal) {
10596
10632
  return (await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/users/me/roles`, { signal })).json();
10597
10633
  }
@@ -10608,7 +10644,7 @@ const WorkingHoursUpdateInputSchema = /* @__PURE__ */ object$2({
10608
10644
  });
10609
10645
  const StatusOKSchema = /* @__PURE__ */ object$2({ status: /* @__PURE__ */ string$1() });
10610
10646
  //#endregion
10611
- //#region ../../node_modules/.pnpm/@toggl+queries@0.15.21_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_rea_e185795a21ccf0053f35bb3174ff9cd2/node_modules/@toggl/queries/dist/shared-data/utils/requests.mjs
10647
+ //#region ../../node_modules/.pnpm/@toggl+queries@0.15.24_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_rea_ed9b6b8a86ac88aa35571489073a9959/node_modules/@toggl/queries/dist/shared-data/utils/requests.mjs
10612
10648
  const META_SYMBOL = Symbol.for("querygen:response:meta");
10613
10649
  function withResponseMeta(data, headers, status) {
10614
10650
  if (!data) return data;
@@ -10635,7 +10671,7 @@ function buildSearchParams(params, flattenArrays = false) {
10635
10671
  return searchParams;
10636
10672
  }
10637
10673
  //#endregion
10638
- //#region ../../node_modules/.pnpm/@toggl+queries@0.15.21_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_rea_e185795a21ccf0053f35bb3174ff9cd2/node_modules/@toggl/queries/dist/shared-data/public-holidays/requests.mjs
10674
+ //#region ../../node_modules/.pnpm/@toggl+queries@0.15.24_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_rea_ed9b6b8a86ac88aa35571489073a9959/node_modules/@toggl/queries/dist/shared-data/public-holidays/requests.mjs
10639
10675
  async function getPublicHolidays(httpClient, year, { country } = {}, signal) {
10640
10676
  const response = await httpClient.get(`shared_data/api/publicholidays/${year}`, {
10641
10677
  signal,
@@ -10644,12 +10680,12 @@ async function getPublicHolidays(httpClient, year, { country } = {}, signal) {
10644
10680
  return withResponseMeta(await response.json(), response.headers, response.status);
10645
10681
  }
10646
10682
  //#endregion
10647
- //#region ../../node_modules/.pnpm/@toggl+queries@0.15.21_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_rea_e185795a21ccf0053f35bb3174ff9cd2/node_modules/@toggl/queries/dist/shared-data/status/requests.mjs
10683
+ //#region ../../node_modules/.pnpm/@toggl+queries@0.15.24_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_rea_ed9b6b8a86ac88aa35571489073a9959/node_modules/@toggl/queries/dist/shared-data/status/requests.mjs
10648
10684
  async function getStatus(httpClient, signal) {
10649
10685
  return (await httpClient.get(`shared_data/api/status`, { signal })).json();
10650
10686
  }
10651
10687
  //#endregion
10652
- //#region ../../node_modules/.pnpm/@toggl+queries@0.15.21_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_rea_e185795a21ccf0053f35bb3174ff9cd2/node_modules/@toggl/queries/dist/org/timeoff/requests.mjs
10688
+ //#region ../../node_modules/.pnpm/@toggl+queries@0.15.24_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_rea_ed9b6b8a86ac88aa35571489073a9959/node_modules/@toggl/queries/dist/org/timeoff/requests.mjs
10653
10689
  async function timeoffListMyEntries(httpClient, organization_id, { from, to }, signal) {
10654
10690
  return (await httpClient.get(`timeoff/organizations/${organization_id}/me`, {
10655
10691
  signal,
@@ -10677,7 +10713,7 @@ async function timeoffDeleteMyEntry(httpClient, organization_id, id, signal) {
10677
10713
  return response.json();
10678
10714
  }
10679
10715
  //#endregion
10680
- //#region ../../node_modules/.pnpm/@toggl+queries@0.15.21_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_rea_e185795a21ccf0053f35bb3174ff9cd2/node_modules/@toggl/queries/dist/shared-data/working-hours/requests.mjs
10716
+ //#region ../../node_modules/.pnpm/@toggl+queries@0.15.24_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_rea_ed9b6b8a86ac88aa35571489073a9959/node_modules/@toggl/queries/dist/shared-data/working-hours/requests.mjs
10681
10717
  async function getMyWorkingHours(httpClient, organization_id, signal) {
10682
10718
  return (await httpClient.get(`shared_data/api/workinghours/${organization_id}/me`, { signal })).json();
10683
10719
  }
@@ -10702,7 +10738,7 @@ async function deleteMyWorkingHours(httpClient, organization_id, data, signal) {
10702
10738
  return response.json();
10703
10739
  }
10704
10740
  //#endregion
10705
- //#region ../cli-core/build/focus-client-7dpDsjfZ.js
10741
+ //#region ../cli-core/build/focus-client-BTk5v8IS.js
10706
10742
  const DATE_ONLY_RE = /^\d{4}-\d{2}-\d{2}$/;
10707
10743
  function normalizeDateFrom(value) {
10708
10744
  return DATE_ONLY_RE.test(value) ? `${value}T00:00:00Z` : value;
@@ -11500,6 +11536,20 @@ var FocusClient = class {
11500
11536
  data: response.data
11501
11537
  } : response;
11502
11538
  }
11539
+ async getOrgWorkspaceTimezone(workspaceId) {
11540
+ const response = await this.run("getOrgWorkspaceTimezone", () => getWorkspaceTimezone(this.orgHttp, this.organizationIdNum, workspaceId));
11541
+ return response.ok ? {
11542
+ ok: true,
11543
+ data: response.data
11544
+ } : response;
11545
+ }
11546
+ async updateOrgWorkspaceTimezone(workspaceId, payload) {
11547
+ const response = await this.run("updateOrgWorkspaceTimezone", () => putWorkspaceTimezone(this.orgHttp, this.organizationIdNum, workspaceId, payload));
11548
+ return response.ok ? {
11549
+ ok: true,
11550
+ data: response.data
11551
+ } : response;
11552
+ }
11503
11553
  async getSharedDataStatus() {
11504
11554
  const response = await this.run("getSharedDataStatus", () => getStatus(this.sharedDataHttp));
11505
11555
  return this.softValidateResponse("getSharedDataStatus", StatusOKSchema, response);
@@ -12390,7 +12440,7 @@ async function runSkillSetup(options) {
12390
12440
  });
12391
12441
  }
12392
12442
  //#endregion
12393
- //#region ../operations/build/safety-BSD7hS5Z.js
12443
+ //#region ../operations/build/safety-B7a8yXtb.js
12394
12444
  const optionalNumber = /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2());
12395
12445
  const DATE_FIELD_RE = /^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2}))?$/;
12396
12446
  const dateField = (description) => /* @__PURE__ */ pipe$2(/* @__PURE__ */ string$1(), /* @__PURE__ */ regex(DATE_FIELD_RE, "must be YYYY-MM-DD or RFC3339 datetime (e.g. '2025-01-01' or '2025-01-01T00:00:00Z')"), /* @__PURE__ */ description$1(description));
@@ -13538,6 +13588,71 @@ const orgSharedOperations = [
13538
13588
  return client.getMyWorkspaceRoles(body.workspace_id ?? Number.parseInt(client.workspaceId, 10));
13539
13589
  }
13540
13590
  },
13591
+ {
13592
+ id: "org.workspaces.get-timezone",
13593
+ family: "org",
13594
+ resource: "workspaces",
13595
+ action: "get-timezone",
13596
+ title: "Get workspace timezone",
13597
+ description: "Get the workspace-level default timezone (null when unset). Requires organization admin.",
13598
+ agentGuidance: "Use when you need the org-wide default timezone for a workspace. When timezone is null, members use their personal timezones.",
13599
+ safety: "read",
13600
+ destructive: false,
13601
+ cli: {
13602
+ group: ["organization", "workspaces"],
13603
+ command: "get-timezone",
13604
+ examples: [{
13605
+ description: "Get timezone for the active workspace",
13606
+ data: {}
13607
+ }, {
13608
+ description: "Get timezone for a specific workspace",
13609
+ data: { workspace_id: 40770900 }
13610
+ }]
13611
+ },
13612
+ mcp: { entityTool: "org-workspaces" },
13613
+ inputSchema: /* @__PURE__ */ object$2({ workspace_id: /* @__PURE__ */ optional$1(/* @__PURE__ */ pipe$2(/* @__PURE__ */ number$2(), /* @__PURE__ */ description$1("Workspace ID (defaults to profile)"))) }),
13614
+ execute: (input, { client }) => {
13615
+ const body = input;
13616
+ return client.getOrgWorkspaceTimezone(body.workspace_id ?? client.workspaceIdNumber);
13617
+ }
13618
+ },
13619
+ {
13620
+ id: "org.workspaces.update-timezone",
13621
+ family: "org",
13622
+ resource: "workspaces",
13623
+ action: "update-timezone",
13624
+ title: "Update workspace timezone",
13625
+ description: "Set or clear the workspace-level default timezone. Requires organization admin.",
13626
+ agentGuidance: "Set timezone to an IANA name (e.g. Europe/London) or clear with clear: true / timezone: null so members fall back to personal timezones.",
13627
+ safety: "update",
13628
+ destructive: false,
13629
+ cli: {
13630
+ group: ["organization", "workspaces"],
13631
+ command: "update-timezone",
13632
+ examples: [{
13633
+ description: "Set default timezone for the active workspace",
13634
+ data: { timezone: "Europe/London" }
13635
+ }, {
13636
+ description: "Clear workspace default timezone",
13637
+ data: { clear: true }
13638
+ }]
13639
+ },
13640
+ mcp: { entityTool: "org-workspaces" },
13641
+ inputSchema: /* @__PURE__ */ object$2({
13642
+ workspace_id: /* @__PURE__ */ optional$1(/* @__PURE__ */ pipe$2(/* @__PURE__ */ number$2(), /* @__PURE__ */ description$1("Workspace ID (defaults to profile)"))),
13643
+ timezone: /* @__PURE__ */ optional$1(/* @__PURE__ */ nullable$1(/* @__PURE__ */ pipe$2(/* @__PURE__ */ string$1(), /* @__PURE__ */ description$1("IANA timezone (e.g. \"Europe/London\"), or null to clear")))),
13644
+ clear: /* @__PURE__ */ optional$1(/* @__PURE__ */ pipe$2(/* @__PURE__ */ boolean$1(), /* @__PURE__ */ description$1("Clear workspace default timezone")))
13645
+ }),
13646
+ execute: (input, { client }) => {
13647
+ const body = input;
13648
+ const workspaceId = body.workspace_id ?? client.workspaceIdNumber;
13649
+ const clearsTimezone = body.clear === true || body.timezone === null;
13650
+ if (clearsTimezone && typeof body.timezone === "string") throw new Error("Pass either a timezone string or clear/null, not both");
13651
+ if (clearsTimezone) return client.updateOrgWorkspaceTimezone(workspaceId, { timezone: null });
13652
+ if (body.timezone === void 0) throw new Error("Pass --timezone <IANA>, --clear true, or timezone: null to remove the default");
13653
+ return client.updateOrgWorkspaceTimezone(workspaceId, { timezone: body.timezone });
13654
+ }
13655
+ },
13541
13656
  {
13542
13657
  id: "shared.status.get",
13543
13658
  family: "shared",
@@ -14227,6 +14342,18 @@ async function getProjectGroupsClassic(httpClient, organization_id, workspace_id
14227
14342
  async function getProjectMarginTargets(httpClient, organization_id, workspace_id, signal) {
14228
14343
  return await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/project-margin-targets`, { signal }).json();
14229
14344
  }
14345
+ async function getWorkspaceProjectMarginTarget(httpClient, organization_id, workspace_id, signal) {
14346
+ return await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/project-margin-targets/workspace`, { signal }).json();
14347
+ }
14348
+ async function setWorkspaceProjectMarginTarget(httpClient, organization_id, workspace_id, data, signal) {
14349
+ return await httpClient.put(`organizations/${organization_id}/workspaces/${workspace_id}/project-margin-targets/workspace`, {
14350
+ signal,
14351
+ json: data
14352
+ }).json();
14353
+ }
14354
+ async function clearWorkspaceProjectMarginTarget(httpClient, organization_id, workspace_id, signal) {
14355
+ return await httpClient.delete(`organizations/${organization_id}/workspaces/${workspace_id}/project-margin-targets/workspace`, { signal }).json();
14356
+ }
14230
14357
  async function getProjectMarginTarget(httpClient, organization_id, workspace_id, project_id, signal) {
14231
14358
  return await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/project-margin-targets/${project_id}`, { signal }).json();
14232
14359
  }
@@ -14296,6 +14423,29 @@ async function createTaskRate(httpClient, organization_id, workspace_id, task_id
14296
14423
  }).json();
14297
14424
  }
14298
14425
  //#endregion
14426
+ //#region ../focus-queries/dist/recurring-budget-suggestions/requests.ts
14427
+ async function getRecurringProjectBudgetSuggestion(httpClient, organization_id, workspace_id, project_id, { target_period_start }, signal) {
14428
+ return await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/recurring-budget-suggestions/${project_id}`, {
14429
+ signal,
14430
+ searchParams: buildSearchParams$3({ target_period_start })
14431
+ }).json();
14432
+ }
14433
+ async function acceptARecurringProjectBudgetSuggestion(httpClient, organization_id, workspace_id, project_id, signal) {
14434
+ return await httpClient.post(`organizations/${organization_id}/workspaces/${workspace_id}/recurring-budget-suggestions/${project_id}/accept`, { signal }).json();
14435
+ }
14436
+ async function dismissARecurringProjectBudgetSuggestion(httpClient, organization_id, workspace_id, project_id, signal) {
14437
+ return await httpClient.post(`organizations/${organization_id}/workspaces/${workspace_id}/recurring-budget-suggestions/${project_id}/dismiss`, { signal }).json();
14438
+ }
14439
+ async function getTemplateEstimateSuggestion(httpClient, organization_id, workspace_id, project_id, signal) {
14440
+ return await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/template-estimate-suggestions/${project_id}`, { signal }).json();
14441
+ }
14442
+ async function acceptATemplateEstimateSuggestion(httpClient, organization_id, workspace_id, project_id, signal) {
14443
+ return await httpClient.post(`organizations/${organization_id}/workspaces/${workspace_id}/template-estimate-suggestions/${project_id}/accept`, { signal }).json();
14444
+ }
14445
+ async function dismissATemplateEstimateSuggestion(httpClient, organization_id, workspace_id, project_id, signal) {
14446
+ return await httpClient.post(`organizations/${organization_id}/workspaces/${workspace_id}/template-estimate-suggestions/${project_id}/dismiss`, { signal }).json();
14447
+ }
14448
+ //#endregion
14299
14449
  //#region ../focus-queries/dist/reports/requests.ts
14300
14450
  async function getProfitabilityReport(httpClient, workspace_id, data, response_format, include_dicts, signal) {
14301
14451
  return await httpClient.post(`reports/workspaces/${workspace_id}/profitability`, {
@@ -14383,6 +14533,9 @@ async function getCurrentSubscription(httpClient, organization_id, signal) {
14383
14533
  async function getFeaturesUpsell(httpClient, organization_id, signal) {
14384
14534
  return await httpClient.get(`organizations/${organization_id}/subscriptions/features-upsell`, { signal }).json();
14385
14535
  }
14536
+ async function getSubscriptionPlans(httpClient, organization_id, signal) {
14537
+ return await httpClient.get(`organizations/${organization_id}/subscriptions/plans`, { signal }).json();
14538
+ }
14386
14539
  async function getCurrentTrial(httpClient, organization_id, signal) {
14387
14540
  return await httpClient.get(`organizations/${organization_id}/subscriptions/trials/current`, { signal }).json();
14388
14541
  }
@@ -16180,6 +16333,7 @@ const generatedFocusOperations = [
16180
16333
  },
16181
16334
  mcp: { entityTool: "organization" },
16182
16335
  inputSchema: /* @__PURE__ */ looseObject({
16336
+ active_members_only: /* @__PURE__ */ unknown$1(),
16183
16337
  filter: /* @__PURE__ */ unknown$1(),
16184
16338
  group_ids: /* @__PURE__ */ unknown$1(),
16185
16339
  organization_user_id: /* @__PURE__ */ number$2(),
@@ -17210,6 +17364,29 @@ const generatedFocusOperations = [
17210
17364
  ]));
17211
17365
  }
17212
17366
  },
17367
+ {
17368
+ id: "focus.projects.margin-targets-clear-workspace",
17369
+ family: "focus",
17370
+ resource: "projects",
17371
+ action: "margin-targets-clear-workspace",
17372
+ title: "Margin Targets Clear Workspace Projects",
17373
+ description: "Margin Targets Clear Workspace Projects.",
17374
+ safety: "delete",
17375
+ destructive: true,
17376
+ cli: {
17377
+ group: ["projects", "margin-targets"],
17378
+ command: "clear-workspace",
17379
+ interactive: "default"
17380
+ },
17381
+ mcp: { entityTool: "projects" },
17382
+ inputSchema: /* @__PURE__ */ looseObject({}),
17383
+ execute: (_input, { client }) => client.runGeneratedRequest("clearWorkspaceProjectMarginTarget", () => callGeneratedRequest(clearWorkspaceProjectMarginTarget, [
17384
+ client.httpClient,
17385
+ client.organizationId,
17386
+ client.workspaceIdNumber,
17387
+ void 0
17388
+ ]))
17389
+ },
17213
17390
  {
17214
17391
  id: "focus.projects.margin-targets-get",
17215
17392
  family: "focus",
@@ -17237,6 +17414,29 @@ const generatedFocusOperations = [
17237
17414
  ]));
17238
17415
  }
17239
17416
  },
17417
+ {
17418
+ id: "focus.projects.margin-targets-get-workspace",
17419
+ family: "focus",
17420
+ resource: "projects",
17421
+ action: "margin-targets-get-workspace",
17422
+ title: "Margin Targets Get Workspace Projects",
17423
+ description: "Margin Targets Get Workspace Projects.",
17424
+ safety: "read",
17425
+ destructive: false,
17426
+ cli: {
17427
+ group: ["projects", "margin-targets"],
17428
+ command: "get-workspace",
17429
+ interactive: "hidden"
17430
+ },
17431
+ mcp: { entityTool: "projects" },
17432
+ inputSchema: /* @__PURE__ */ looseObject({}),
17433
+ execute: (_input, { client }) => client.runGeneratedRequest("getWorkspaceProjectMarginTarget", () => callGeneratedRequest(getWorkspaceProjectMarginTarget, [
17434
+ client.httpClient,
17435
+ client.organizationId,
17436
+ client.workspaceIdNumber,
17437
+ void 0
17438
+ ]))
17439
+ },
17240
17440
  {
17241
17441
  id: "focus.projects.margin-targets-list",
17242
17442
  family: "focus",
@@ -17291,6 +17491,33 @@ const generatedFocusOperations = [
17291
17491
  ]));
17292
17492
  }
17293
17493
  },
17494
+ {
17495
+ id: "focus.projects.margin-targets-set-workspace",
17496
+ family: "focus",
17497
+ resource: "projects",
17498
+ action: "margin-targets-set-workspace",
17499
+ title: "Margin Targets Set Workspace Projects",
17500
+ description: "Margin Targets Set Workspace Projects.",
17501
+ safety: "read",
17502
+ destructive: false,
17503
+ cli: {
17504
+ group: ["projects", "margin-targets"],
17505
+ command: "set-workspace",
17506
+ interactive: "available"
17507
+ },
17508
+ mcp: { entityTool: "projects" },
17509
+ inputSchema: /* @__PURE__ */ looseObject({ payload: /* @__PURE__ */ looseObject({ target_percent: /* @__PURE__ */ number$2() }) }),
17510
+ execute: (input, { client }) => {
17511
+ const data = input;
17512
+ return client.runGeneratedRequest("setWorkspaceProjectMarginTarget", () => callGeneratedRequest(setWorkspaceProjectMarginTarget, [
17513
+ client.httpClient,
17514
+ client.organizationId,
17515
+ client.workspaceIdNumber,
17516
+ data.payload ?? data.data ?? data,
17517
+ void 0
17518
+ ]));
17519
+ }
17520
+ },
17294
17521
  {
17295
17522
  id: "focus.projects.pin",
17296
17523
  family: "focus",
@@ -19078,6 +19305,172 @@ const generatedFocusOperations = [
19078
19305
  ]));
19079
19306
  }
19080
19307
  },
19308
+ {
19309
+ id: "focus.recurring-budget-suggestions.accept-arecurring-project-budget-suggestion",
19310
+ family: "focus",
19311
+ resource: "recurring-budget-suggestions",
19312
+ action: "accept-arecurring-project-budget-suggestion",
19313
+ title: "Accept Arecurring Project Budget Suggestion Recurring Budget Suggestions",
19314
+ description: "Accept Arecurring Project Budget Suggestion Recurring Budget Suggestions.",
19315
+ safety: "read",
19316
+ destructive: false,
19317
+ cli: {
19318
+ group: ["recurring-budget-suggestions"],
19319
+ command: "accept-arecurring-project-budget-suggestion",
19320
+ interactive: "available"
19321
+ },
19322
+ mcp: { entityTool: "recurring-budget-suggestions" },
19323
+ inputSchema: /* @__PURE__ */ looseObject({ project_id: /* @__PURE__ */ number$2() }),
19324
+ execute: (input, { client }) => {
19325
+ const data = input;
19326
+ return client.runGeneratedRequest("acceptARecurringProjectBudgetSuggestion", () => callGeneratedRequest(acceptARecurringProjectBudgetSuggestion, [
19327
+ client.httpClient,
19328
+ client.organizationId,
19329
+ client.workspaceIdNumber,
19330
+ data.project_id,
19331
+ void 0
19332
+ ]));
19333
+ }
19334
+ },
19335
+ {
19336
+ id: "focus.recurring-budget-suggestions.accept-atemplate-estimate-suggestion",
19337
+ family: "focus",
19338
+ resource: "recurring-budget-suggestions",
19339
+ action: "accept-atemplate-estimate-suggestion",
19340
+ title: "Accept Atemplate Estimate Suggestion Recurring Budget Suggestions",
19341
+ description: "Accept Atemplate Estimate Suggestion Recurring Budget Suggestions.",
19342
+ safety: "read",
19343
+ destructive: false,
19344
+ cli: {
19345
+ group: ["recurring-budget-suggestions"],
19346
+ command: "accept-atemplate-estimate-suggestion",
19347
+ interactive: "available"
19348
+ },
19349
+ mcp: { entityTool: "recurring-budget-suggestions" },
19350
+ inputSchema: /* @__PURE__ */ looseObject({ project_id: /* @__PURE__ */ number$2() }),
19351
+ execute: (input, { client }) => {
19352
+ const data = input;
19353
+ return client.runGeneratedRequest("acceptATemplateEstimateSuggestion", () => callGeneratedRequest(acceptATemplateEstimateSuggestion, [
19354
+ client.httpClient,
19355
+ client.organizationId,
19356
+ client.workspaceIdNumber,
19357
+ data.project_id,
19358
+ void 0
19359
+ ]));
19360
+ }
19361
+ },
19362
+ {
19363
+ id: "focus.recurring-budget-suggestions.dismiss-arecurring-project-budget-suggestion",
19364
+ family: "focus",
19365
+ resource: "recurring-budget-suggestions",
19366
+ action: "dismiss-arecurring-project-budget-suggestion",
19367
+ title: "Dismiss Arecurring Project Budget Suggestion Recurring Budget Suggestions",
19368
+ description: "Dismiss Arecurring Project Budget Suggestion Recurring Budget Suggestions.",
19369
+ safety: "read",
19370
+ destructive: false,
19371
+ cli: {
19372
+ group: ["recurring-budget-suggestions"],
19373
+ command: "dismiss-arecurring-project-budget-suggestion",
19374
+ interactive: "available"
19375
+ },
19376
+ mcp: { entityTool: "recurring-budget-suggestions" },
19377
+ inputSchema: /* @__PURE__ */ looseObject({ project_id: /* @__PURE__ */ number$2() }),
19378
+ execute: (input, { client }) => {
19379
+ const data = input;
19380
+ return client.runGeneratedRequest("dismissARecurringProjectBudgetSuggestion", () => callGeneratedRequest(dismissARecurringProjectBudgetSuggestion, [
19381
+ client.httpClient,
19382
+ client.organizationId,
19383
+ client.workspaceIdNumber,
19384
+ data.project_id,
19385
+ void 0
19386
+ ]));
19387
+ }
19388
+ },
19389
+ {
19390
+ id: "focus.recurring-budget-suggestions.dismiss-atemplate-estimate-suggestion",
19391
+ family: "focus",
19392
+ resource: "recurring-budget-suggestions",
19393
+ action: "dismiss-atemplate-estimate-suggestion",
19394
+ title: "Dismiss Atemplate Estimate Suggestion Recurring Budget Suggestions",
19395
+ description: "Dismiss Atemplate Estimate Suggestion Recurring Budget Suggestions.",
19396
+ safety: "read",
19397
+ destructive: false,
19398
+ cli: {
19399
+ group: ["recurring-budget-suggestions"],
19400
+ command: "dismiss-atemplate-estimate-suggestion",
19401
+ interactive: "available"
19402
+ },
19403
+ mcp: { entityTool: "recurring-budget-suggestions" },
19404
+ inputSchema: /* @__PURE__ */ looseObject({ project_id: /* @__PURE__ */ number$2() }),
19405
+ execute: (input, { client }) => {
19406
+ const data = input;
19407
+ return client.runGeneratedRequest("dismissATemplateEstimateSuggestion", () => callGeneratedRequest(dismissATemplateEstimateSuggestion, [
19408
+ client.httpClient,
19409
+ client.organizationId,
19410
+ client.workspaceIdNumber,
19411
+ data.project_id,
19412
+ void 0
19413
+ ]));
19414
+ }
19415
+ },
19416
+ {
19417
+ id: "focus.recurring-budget-suggestions.get-recurring-project-budget-suggestion",
19418
+ family: "focus",
19419
+ resource: "recurring-budget-suggestions",
19420
+ action: "get-recurring-project-budget-suggestion",
19421
+ title: "Get Recurring Project Budget Suggestion Recurring Budget Suggestions",
19422
+ description: "Get Recurring Project Budget Suggestion Recurring Budget Suggestions.",
19423
+ safety: "read",
19424
+ destructive: false,
19425
+ cli: {
19426
+ group: ["recurring-budget-suggestions"],
19427
+ command: "get-recurring-project-budget-suggestion",
19428
+ interactive: "hidden"
19429
+ },
19430
+ mcp: { entityTool: "recurring-budget-suggestions" },
19431
+ inputSchema: /* @__PURE__ */ looseObject({
19432
+ project_id: /* @__PURE__ */ number$2(),
19433
+ target_period_start: /* @__PURE__ */ unknown$1()
19434
+ }),
19435
+ execute: (input, { client }) => {
19436
+ const data = input;
19437
+ return client.runGeneratedRequest("getRecurringProjectBudgetSuggestion", () => callGeneratedRequest(getRecurringProjectBudgetSuggestion, [
19438
+ client.httpClient,
19439
+ client.organizationId,
19440
+ client.workspaceIdNumber,
19441
+ data.project_id,
19442
+ data,
19443
+ void 0
19444
+ ]));
19445
+ }
19446
+ },
19447
+ {
19448
+ id: "focus.recurring-budget-suggestions.get-template-estimate-suggestion",
19449
+ family: "focus",
19450
+ resource: "recurring-budget-suggestions",
19451
+ action: "get-template-estimate-suggestion",
19452
+ title: "Get Template Estimate Suggestion Recurring Budget Suggestions",
19453
+ description: "Get Template Estimate Suggestion Recurring Budget Suggestions.",
19454
+ safety: "read",
19455
+ destructive: false,
19456
+ cli: {
19457
+ group: ["recurring-budget-suggestions"],
19458
+ command: "get-template-estimate-suggestion",
19459
+ interactive: "available"
19460
+ },
19461
+ mcp: { entityTool: "recurring-budget-suggestions" },
19462
+ inputSchema: /* @__PURE__ */ looseObject({ project_id: /* @__PURE__ */ number$2() }),
19463
+ execute: (input, { client }) => {
19464
+ const data = input;
19465
+ return client.runGeneratedRequest("getTemplateEstimateSuggestion", () => callGeneratedRequest(getTemplateEstimateSuggestion, [
19466
+ client.httpClient,
19467
+ client.organizationId,
19468
+ client.workspaceIdNumber,
19469
+ data.project_id,
19470
+ void 0
19471
+ ]));
19472
+ }
19473
+ },
19081
19474
  {
19082
19475
  id: "focus.reports.get-flexq-data",
19083
19476
  family: "focus",
@@ -19736,6 +20129,28 @@ const generatedFocusOperations = [
19736
20129
  void 0
19737
20130
  ]))
19738
20131
  },
20132
+ {
20133
+ id: "focus.subscriptions.get-plans",
20134
+ family: "focus",
20135
+ resource: "subscriptions",
20136
+ action: "get-plans",
20137
+ title: "Get Plans Subscriptions",
20138
+ description: "Get Plans Subscriptions.",
20139
+ safety: "read",
20140
+ destructive: false,
20141
+ cli: {
20142
+ group: ["subscriptions"],
20143
+ command: "get-plans",
20144
+ interactive: "hidden"
20145
+ },
20146
+ mcp: { entityTool: "subscriptions" },
20147
+ inputSchema: /* @__PURE__ */ looseObject({}),
20148
+ execute: (_input, { client }) => client.runGeneratedRequest("getSubscriptionPlans", () => callGeneratedRequest(getSubscriptionPlans, [
20149
+ client.httpClient,
20150
+ client.organizationId,
20151
+ void 0
20152
+ ]))
20153
+ },
19739
20154
  {
19740
20155
  id: "focus.subscriptions.upsert-forced-trial",
19741
20156
  family: "focus",
@@ -20400,8 +20815,7 @@ const generatedFocusOperations = [
20400
20815
  calendar_event_id: /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2()),
20401
20816
  date_from: /* @__PURE__ */ optional$1(/* @__PURE__ */ unknown$1()),
20402
20817
  date_to: /* @__PURE__ */ optional$1(/* @__PURE__ */ unknown$1()),
20403
- hidden: /* @__PURE__ */ optional$1(/* @__PURE__ */ unknown$1()),
20404
- time_zone: /* @__PURE__ */ optional$1(/* @__PURE__ */ unknown$1())
20818
+ hidden: /* @__PURE__ */ optional$1(/* @__PURE__ */ unknown$1())
20405
20819
  }),
20406
20820
  execute: (input, { client }) => {
20407
20821
  const data = input;
@@ -20497,6 +20911,7 @@ const generatedFocusOperations = [
20497
20911
  parent_task_id: /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2()),
20498
20912
  pinned: /* @__PURE__ */ optional$1(/* @__PURE__ */ unknown$1()),
20499
20913
  priority: /* @__PURE__ */ optional$1(/* @__PURE__ */ unknown$1()),
20914
+ private_: /* @__PURE__ */ optional$1(/* @__PURE__ */ unknown$1()),
20500
20915
  project_id: /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2()),
20501
20916
  recurring: /* @__PURE__ */ optional$1(/* @__PURE__ */ unknown$1()),
20502
20917
  recurring_task_ids: /* @__PURE__ */ optional$1(/* @__PURE__ */ unknown$1()),
@@ -20919,8 +21334,7 @@ const generatedFocusOperations = [
20919
21334
  mcp: { entityTool: "tasks" },
20920
21335
  inputSchema: /* @__PURE__ */ looseObject({
20921
21336
  date_from: /* @__PURE__ */ unknown$1(),
20922
- date_to: /* @__PURE__ */ unknown$1(),
20923
- timezone: /* @__PURE__ */ optional$1(/* @__PURE__ */ unknown$1())
21337
+ date_to: /* @__PURE__ */ unknown$1()
20924
21338
  }),
20925
21339
  execute: (input, { client }) => {
20926
21340
  const data = input;
@@ -20930,7 +21344,6 @@ const generatedFocusOperations = [
20930
21344
  client.workspaceIdNumber,
20931
21345
  data.date_from,
20932
21346
  data.date_to,
20933
- data.timezone,
20934
21347
  void 0
20935
21348
  ]));
20936
21349
  }
@@ -21689,7 +22102,6 @@ const generatedFocusOperations = [
21689
22102
  order_by: /* @__PURE__ */ unknown$1(),
21690
22103
  status_id: /* @__PURE__ */ number$2(),
21691
22104
  task_id: /* @__PURE__ */ number$2(),
21692
- time_zone: /* @__PURE__ */ unknown$1(),
21693
22105
  type: /* @__PURE__ */ unknown$1()
21694
22106
  }),
21695
22107
  execute: (input, { client }) => {
@@ -25339,4 +25751,4 @@ Common commands:
25339
25751
  //#endregion
25340
25752
  export { CommanderError as n, createProgram as t };
25341
25753
 
25342
- //# sourceMappingURL=program-CwW_34U6.js.map
25754
+ //# sourceMappingURL=program-D1SqAxB5.js.map
package/build/program.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as createProgram } from "./program-CwW_34U6.js";
1
+ import { t as createProgram } from "./program-D1SqAxB5.js";
2
2
  export { createProgram };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@togglhq/cli",
3
- "version": "1.5.28",
3
+ "version": "1.5.30",
4
4
  "description": "Toggl CLI for Toggl 2.0 API operations.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
@@ -55,7 +55,7 @@
55
55
  "devDependencies": {
56
56
  "@toggl/cli-core": "workspace:^",
57
57
  "@toggl/operations": "workspace:^",
58
- "@toggl/queries": "0.15.21",
58
+ "@toggl/queries": "0.15.24",
59
59
  "@types/node": "22.19.11",
60
60
  "tsdown": "0.21.8",
61
61
  "typescript": "5.9.3",
@@ -21,6 +21,9 @@ toggl --workspace-id 789012 tasks list --project-id 123456
21
21
  ```bash
22
22
  toggl organization invitations list
23
23
  toggl organization workspaces list
24
+ toggl organization workspaces get-timezone
25
+ toggl organization workspaces update-timezone --timezone Europe/London
26
+ toggl organization workspaces update-timezone --clear true
24
27
  toggl shared status get
25
28
  toggl shared holidays list
26
29
  ```