@zixt/host 0.0.91 → 0.0.93

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 (2) hide show
  1. package/dist/index.js +106 -6
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -28,7 +28,7 @@ import { homedir as homedir3 } from "node:os";
28
28
  // package.json
29
29
  var package_default = {
30
30
  name: "@zixt/host",
31
- version: "0.0.91",
31
+ version: "0.0.93",
32
32
  type: "module",
33
33
  exports: {
34
34
  ".": "./src/client.ts",
@@ -16042,6 +16042,8 @@ var ApiConnection = external_exports.object({
16042
16042
  definitionRevision: external_exports.number().int().min(1),
16043
16043
  definitionName: external_exports.string().min(1).max(120),
16044
16044
  name: external_exports.string().min(1).max(120),
16045
+ /** Optional human-authored guidance rendered to teammates that can use this connection. */
16046
+ usageNotes: external_exports.string().max(4e3).optional(),
16045
16047
  serverUrl: external_exports.url().max(2e3),
16046
16048
  serverLabel: external_exports.string().min(1).max(120),
16047
16049
  credentials: external_exports.array(
@@ -16062,6 +16064,7 @@ var ListApiConnectionsResponse = external_exports.object({ connections: external
16062
16064
  var CreateApiConnectionRequest = external_exports.object({
16063
16065
  definitionId: IntegrationDefinitionId,
16064
16066
  name: external_exports.string().min(1).max(120),
16067
+ usageNotes: external_exports.string().max(4e3).optional(),
16065
16068
  serverId: external_exports.string().min(1).max(100).optional(),
16066
16069
  customBaseUrl: external_exports.url().max(2e3).optional(),
16067
16070
  credentials: external_exports.record(
@@ -16072,6 +16075,7 @@ var CreateApiConnectionRequest = external_exports.object({
16072
16075
  }).strict();
16073
16076
  var UpdateApiConnectionRequest = external_exports.object({
16074
16077
  name: external_exports.string().min(1).max(120).optional(),
16078
+ usageNotes: external_exports.string().max(4e3).optional(),
16075
16079
  serverId: external_exports.string().min(1).max(100).optional(),
16076
16080
  customBaseUrl: external_exports.url().max(2e3).nullable().optional(),
16077
16081
  credentials: external_exports.record(
@@ -16096,9 +16100,21 @@ var ApiOperationInput = external_exports.object({
16096
16100
  }
16097
16101
  }
16098
16102
  });
16103
+ var TryApiAuthentication = external_exports.discriminatedUnion("mode", [
16104
+ external_exports.object({ mode: external_exports.literal("saved") }).strict(),
16105
+ external_exports.object({
16106
+ mode: external_exports.literal("one_time"),
16107
+ alternative: external_exports.array(external_exports.string().min(1).max(120)).min(1).max(20).refine((items) => new Set(items).size === items.length, "Schemes must be unique"),
16108
+ credentials: external_exports.record(
16109
+ external_exports.string().min(1).max(120),
16110
+ external_exports.record(external_exports.string().min(1).max(120), external_exports.string().min(1).max(2e4))
16111
+ )
16112
+ }).strict()
16113
+ ]);
16099
16114
  var TryApiOperationRequest = external_exports.object({
16100
16115
  operationId: external_exports.string().min(1).max(240),
16101
16116
  input: ApiOperationInput.default({ path: {}, query: {}, headers: {} }),
16117
+ authentication: TryApiAuthentication.default({ mode: "saved" }),
16102
16118
  confirmed: external_exports.boolean().default(false)
16103
16119
  }).strict();
16104
16120
  var ApiOperationResult = external_exports.object({
@@ -16106,6 +16122,7 @@ var ApiOperationResult = external_exports.object({
16106
16122
  status: external_exports.number().int().min(0).max(999).nullable(),
16107
16123
  statusText: external_exports.string().max(500),
16108
16124
  contentType: external_exports.string().max(500).nullable(),
16125
+ headers: external_exports.record(external_exports.string().min(1).max(200), external_exports.string().max(8e3)).refine((items) => Object.keys(items).length <= 100, "Too many response headers").default({}),
16109
16126
  body: external_exports.string().max(2e5),
16110
16127
  truncated: external_exports.boolean(),
16111
16128
  durationMs: external_exports.number().int().min(0),
@@ -16132,6 +16149,7 @@ var ResolvedApiConnection = external_exports.object({
16132
16149
  name: external_exports.string().min(1).max(120),
16133
16150
  definitionId: IntegrationDefinitionId,
16134
16151
  definitionName: external_exports.string().min(1).max(120),
16152
+ usageNotes: external_exports.string().max(4e3).optional(),
16135
16153
  definitionRevision: external_exports.number().int().min(1),
16136
16154
  baseUrl: external_exports.url().max(2e3),
16137
16155
  auth: external_exports.array(ResolvedApiAuth).max(20),
@@ -20042,10 +20060,13 @@ var LinearTriggerSettings = external_exports.object({
20042
20060
  var LinearInstallationProjection = external_exports.object({
20043
20061
  id: LinearInstallationId,
20044
20062
  provider: external_exports.literal("linear"),
20063
+ name: external_exports.string().min(1).max(120).optional(),
20064
+ usageNotes: external_exports.string().max(4e3).optional(),
20045
20065
  organizationName: external_exports.string().min(1).max(200),
20046
20066
  status: LinearInstallationStatus,
20047
20067
  webhookStatus: LinearWebhookStatus,
20048
20068
  connectedTeammateCount: external_exports.number().int().min(0),
20069
+ revision: external_exports.number().int().min(1).optional(),
20049
20070
  createdAt: IsoDate,
20050
20071
  updatedAt: IsoDate
20051
20072
  }).strict();
@@ -20068,19 +20089,28 @@ var LinearIntegrationResponse = external_exports.object({
20068
20089
  /** False when this Zixt deployment has no complete Linear OAuth configuration. */
20069
20090
  available: external_exports.boolean(),
20070
20091
  configured: external_exports.boolean(),
20092
+ installations: external_exports.array(LinearInstallationProjection).optional(),
20071
20093
  installation: LinearInstallationProjection.nullable(),
20072
20094
  identities: external_exports.array(LinearIdentityProjection)
20073
20095
  }).strict();
20074
20096
  var SafeReturnPath = external_exports.string().min(1).max(2e3).regex(/^\/(?!\/)[^\r\n\\]*$/, "return path must be a local absolute path");
20075
20097
  var StartLinearOAuthRequest = external_exports.object({
20076
20098
  /** Local web-app route restored after the popup reports success. */
20077
- returnPath: SafeReturnPath.optional()
20099
+ returnPath: SafeReturnPath.optional(),
20100
+ installationId: LinearInstallationId.optional(),
20101
+ name: external_exports.string().min(1).max(120).optional(),
20102
+ usageNotes: external_exports.string().max(4e3).optional()
20078
20103
  }).strict();
20079
20104
  var StartLinearOAuthResponse = external_exports.object({
20080
20105
  authorizeUrl: HttpUrl.max(4e3),
20081
20106
  /** Exact postMessage target origin. The callback never uses a wildcard. */
20082
20107
  callbackOrigin: HttpOrigin.max(2e3)
20083
20108
  }).strict();
20109
+ var UpdateLinearInstallationRequest = external_exports.object({
20110
+ expectedRevision: external_exports.number().int().min(1),
20111
+ name: external_exports.string().min(1).max(120),
20112
+ usageNotes: external_exports.string().max(4e3)
20113
+ }).strict();
20084
20114
  var UpdateLinearIdentityRequest = external_exports.object({
20085
20115
  expectedRevision: external_exports.number().int().min(1),
20086
20116
  triggers: LinearTriggerSettings
@@ -20332,6 +20362,8 @@ var InterruptBrowserVoiceSessionResponse = external_exports.object({ interrupted
20332
20362
  // ../../packages/contracts/src/slack.ts
20333
20363
  var SlackInstallationProjection = external_exports.object({
20334
20364
  id: external_exports.string(),
20365
+ name: external_exports.string().min(1).max(120).optional(),
20366
+ usageNotes: external_exports.string().max(4e3).optional(),
20335
20367
  teamId: external_exports.string(),
20336
20368
  teamName: external_exports.string(),
20337
20369
  botUserId: external_exports.string(),
@@ -20362,12 +20394,25 @@ var SlackBindingProjection = external_exports.object({
20362
20394
  var SlackIntegrationResponse = external_exports.object({
20363
20395
  /** False when this deployment has no Slack app configured at all. */
20364
20396
  available: external_exports.boolean(),
20397
+ installations: external_exports.array(SlackInstallationProjection).optional(),
20398
+ /** Focused installation for detail routes; null when none is selected. */
20365
20399
  installation: SlackInstallationProjection.nullable(),
20366
20400
  bindings: external_exports.array(SlackBindingProjection)
20367
20401
  }).strict();
20368
- var StartSlackInstallRequest = external_exports.object({ returnPath: external_exports.string().min(1).max(2e3).optional() }).strict();
20402
+ var StartSlackInstallRequest = external_exports.object({
20403
+ returnPath: external_exports.string().min(1).max(2e3).optional(),
20404
+ installationId: external_exports.string().min(1).optional(),
20405
+ name: external_exports.string().min(1).max(120).optional(),
20406
+ usageNotes: external_exports.string().max(4e3).optional()
20407
+ }).strict();
20369
20408
  var StartSlackInstallResponse = external_exports.object({ authorizeUrl: external_exports.url().max(4e3), callbackOrigin: external_exports.url().max(2e3) }).strict();
20409
+ var UpdateSlackInstallationRequest = external_exports.object({
20410
+ expectedRevision: external_exports.number().int().min(1),
20411
+ name: external_exports.string().min(1).max(120),
20412
+ usageNotes: external_exports.string().max(4e3)
20413
+ }).strict();
20370
20414
  var UpsertSlackBindingRequest = external_exports.object({
20415
+ installationId: external_exports.string().min(1),
20371
20416
  /** Answer when the workspace bot is named in a channel. */
20372
20417
  mentionEnabled: external_exports.boolean(),
20373
20418
  /** Answer direct messages to the workspace bot. */
@@ -20385,6 +20430,8 @@ var WhatsappTemplateRef = external_exports.object({
20385
20430
  }).strict();
20386
20431
  var WhatsappInstallationProjection = external_exports.object({
20387
20432
  id: external_exports.string(),
20433
+ name: external_exports.string().min(1).max(120).optional(),
20434
+ usageNotes: external_exports.string().max(4e3).optional(),
20388
20435
  /** WhatsApp Business Account id, read back from the token, never the callback. */
20389
20436
  wabaId: external_exports.string(),
20390
20437
  businessName: external_exports.string(),
@@ -20440,6 +20487,7 @@ var WhatsappIdentityProjection = external_exports.object({
20440
20487
  var WhatsappIntegrationResponse = external_exports.object({
20441
20488
  /** False when this deployment has no WhatsApp app configured at all. */
20442
20489
  available: external_exports.boolean(),
20490
+ installations: external_exports.array(WhatsappInstallationProjection).optional(),
20443
20491
  installation: WhatsappInstallationProjection.nullable(),
20444
20492
  numbers: external_exports.array(WhatsappNumberProjection),
20445
20493
  bindings: external_exports.array(WhatsappBindingProjection),
@@ -20448,9 +20496,17 @@ var WhatsappIntegrationResponse = external_exports.object({
20448
20496
  var StartWhatsappInstallRequest = external_exports.object({
20449
20497
  // Local absolute path only: no scheme, no protocol-relative "//host", and no
20450
20498
  // newline or backslash that could smuggle a header or a Windows path.
20451
- returnPath: external_exports.string().min(1).max(2e3).regex(/^\/(?!\/)[^\r\n\\]*$/, "return path must be a local absolute path").optional()
20499
+ returnPath: external_exports.string().min(1).max(2e3).regex(/^\/(?!\/)[^\r\n\\]*$/, "return path must be a local absolute path").optional(),
20500
+ installationId: external_exports.string().min(1).optional(),
20501
+ name: external_exports.string().min(1).max(120).optional(),
20502
+ usageNotes: external_exports.string().max(4e3).optional()
20452
20503
  }).strict();
20453
20504
  var StartWhatsappInstallResponse = external_exports.object({ authorizeUrl: external_exports.url().max(4e3), callbackOrigin: external_exports.url().max(2e3) }).strict();
20505
+ var UpdateWhatsappInstallationRequest = external_exports.object({
20506
+ expectedRevision: external_exports.number().int().min(1),
20507
+ name: external_exports.string().min(1).max(120),
20508
+ usageNotes: external_exports.string().max(4e3)
20509
+ }).strict();
20454
20510
  var UpsertWhatsappBindingRequest = external_exports.object({
20455
20511
  /** Meta's opaque phone number id, not the printable number. */
20456
20512
  phoneNumberId: external_exports.string().min(1).max(64)
@@ -20510,6 +20566,8 @@ var GithubAppRemovalStatus = external_exports.enum([
20510
20566
  ]);
20511
20567
  var GithubInstallationProjection = external_exports.object({
20512
20568
  id: GithubInstallationId,
20569
+ name: external_exports.string().min(1).max(120).optional(),
20570
+ usageNotes: external_exports.string().max(4e3).optional(),
20513
20571
  accountLogin: external_exports.string().min(1).max(100),
20514
20572
  accountType: external_exports.enum(["Organization", "User"]),
20515
20573
  botLogin: external_exports.string().min(1).max(200),
@@ -20588,6 +20646,16 @@ var GithubMemberInstallationProjection = GithubInstallationProjection.pick({
20588
20646
  repositoryCount: true,
20589
20647
  updatedAt: true
20590
20648
  }).strict();
20649
+ var GithubMemberInstallationSummaryProjection = GithubInstallationProjection.pick({
20650
+ id: true,
20651
+ name: true,
20652
+ accountLogin: true,
20653
+ status: true,
20654
+ appRemovalStatus: true,
20655
+ webhookStatus: true,
20656
+ repositoryCount: true,
20657
+ updatedAt: true
20658
+ }).strict();
20591
20659
  var GithubMemberAppRemovalProjection = GithubAppRemovalObligationProjection.pick({
20592
20660
  appRemovalStatus: true,
20593
20661
  updatedAt: true
@@ -20607,6 +20675,7 @@ var GithubMemberTeammateProjection = external_exports.object({
20607
20675
  var GithubIntegrationResponse = external_exports.object({
20608
20676
  available: external_exports.boolean(),
20609
20677
  configured: external_exports.boolean(),
20678
+ installations: external_exports.array(GithubInstallationProjection).optional(),
20610
20679
  installation: GithubInstallationProjection.nullable(),
20611
20680
  focusedAppRemoval: GithubAppRemovalObligationProjection.nullable(),
20612
20681
  pendingCreatedRepositories: external_exports.array(GithubPendingRepositoryAccessProjection).max(50)
@@ -20614,6 +20683,7 @@ var GithubIntegrationResponse = external_exports.object({
20614
20683
  var GithubMemberIntegrationResponse = external_exports.object({
20615
20684
  available: external_exports.boolean(),
20616
20685
  configured: external_exports.boolean(),
20686
+ installations: external_exports.array(GithubMemberInstallationSummaryProjection).optional(),
20617
20687
  installation: GithubMemberInstallationProjection.nullable(),
20618
20688
  focusedAppRemoval: GithubMemberAppRemovalProjection.nullable(),
20619
20689
  pendingCreatedRepositoryCount: external_exports.number().int().min(0).max(50)
@@ -20638,9 +20708,13 @@ var HttpOrigin2 = external_exports.url().max(2e3).refine((value) => {
20638
20708
  return (parsed.protocol === "https:" || parsed.protocol === "http:" && (parsed.hostname === "localhost" || parsed.hostname === "127.0.0.1")) && parsed.origin === value && parsed.username === "" && parsed.password === "";
20639
20709
  }, "must be an exact credential-free HTTPS origin or local loopback HTTP origin");
20640
20710
  var StartGithubConnectionRequest = external_exports.object({
20641
- returnPath: SafeReturnPath2.optional()
20711
+ returnPath: SafeReturnPath2.optional(),
20712
+ installationId: GithubInstallationId.optional(),
20713
+ name: external_exports.string().min(1).max(120).optional(),
20714
+ usageNotes: external_exports.string().max(4e3).optional()
20642
20715
  }).strict();
20643
20716
  var StartGithubTeammateOAuthRequest = external_exports.object({
20717
+ installationId: GithubInstallationId.optional(),
20644
20718
  expectedRevision: external_exports.number().int().min(1),
20645
20719
  returnPath: SafeReturnPath2.optional()
20646
20720
  }).strict();
@@ -20660,8 +20734,11 @@ var GithubOAuthPopupMessage = external_exports.discriminatedUnion("ok", [
20660
20734
  }).strict()
20661
20735
  ]);
20662
20736
  var UpdateGithubOrgSettingsRequest = external_exports.object({
20737
+ installationId: GithubInstallationId.optional(),
20663
20738
  expectedRevision: external_exports.number().int().min(1),
20664
- allowRepositoryCreation: external_exports.boolean()
20739
+ allowRepositoryCreation: external_exports.boolean(),
20740
+ name: external_exports.string().min(1).max(120).optional(),
20741
+ usageNotes: external_exports.string().max(4e3).optional()
20665
20742
  }).strict();
20666
20743
  var UpdateGithubRepositoryRoutesRequest = external_exports.object({
20667
20744
  expectedRouteRevision: external_exports.number().int().min(1),
@@ -20676,12 +20753,14 @@ var UpdateGithubRepositoryRoutesRequest = external_exports.object({
20676
20753
  removeRouteIds: external_exports.array(GithubLabelRouteId).max(100)
20677
20754
  }).strict();
20678
20755
  var UpdateGithubTeammateRequest = external_exports.object({
20756
+ installationId: GithubInstallationId.optional(),
20679
20757
  expectedRevision: external_exports.number().int().min(1),
20680
20758
  mode: GithubActingMode,
20681
20759
  repositoryAccess: GithubRepositoryAccess,
20682
20760
  triggers: GithubTriggerSettings
20683
20761
  }).strict();
20684
20762
  var SaveGithubPatRequest = external_exports.object({
20763
+ installationId: GithubInstallationId.optional(),
20685
20764
  expectedRevision: external_exports.number().int().min(1),
20686
20765
  token: external_exports.string().min(20).max(1e4),
20687
20766
  repositoryIds: external_exports.array(GithubRepositoryId).min(1).max(500)
@@ -21722,6 +21801,9 @@ var REQUEST_BODY_LIMIT = 1e6;
21722
21801
  var REQUEST_URL_LIMIT = 2e4;
21723
21802
  var REQUEST_HEADERS_LIMIT = 64e3;
21724
21803
  var REQUEST_TIMEOUT_MS2 = 3e4;
21804
+ var RESPONSE_HEADERS_LIMIT = 64e3;
21805
+ var RESPONSE_HEADER_VALUE_LIMIT = 8e3;
21806
+ var RESPONSE_HEADER_COUNT_LIMIT = 100;
21725
21807
  var FORBIDDEN_HEADERS = /* @__PURE__ */ new Set([
21726
21808
  "authorization",
21727
21809
  "cookie",
@@ -21731,6 +21813,7 @@ var FORBIDDEN_HEADERS = /* @__PURE__ */ new Set([
21731
21813
  "proxy-authorization",
21732
21814
  "transfer-encoding"
21733
21815
  ]);
21816
+ var PRIVATE_RESPONSE_HEADERS = /* @__PURE__ */ new Set(["set-cookie", "set-cookie2"]);
21734
21817
  function operationFor(connection, operationId) {
21735
21818
  const operation = connection.operations.find(({ id }) => id === operationId);
21736
21819
  if (!operation) throw new Error("That API operation is not available on this connection.");
@@ -21789,6 +21872,21 @@ async function boundedBody(response) {
21789
21872
  }
21790
21873
  return { body: new TextDecoder("utf-8", { fatal: false }).decode(joined), truncated };
21791
21874
  }
21875
+ function boundedHeaders(response) {
21876
+ const result = {};
21877
+ let bytes = 0;
21878
+ for (const [name, rawValue] of response.headers) {
21879
+ const normalized = name.toLowerCase();
21880
+ if (PRIVATE_RESPONSE_HEADERS.has(normalized)) continue;
21881
+ if (Object.keys(result).length >= RESPONSE_HEADER_COUNT_LIMIT) break;
21882
+ const value = rawValue.slice(0, RESPONSE_HEADER_VALUE_LIMIT);
21883
+ const nextBytes = Buffer.byteLength(normalized) + Buffer.byteLength(value);
21884
+ if (bytes + nextBytes > RESPONSE_HEADERS_LIMIT) break;
21885
+ result[normalized] = value;
21886
+ bytes += nextBytes;
21887
+ }
21888
+ return result;
21889
+ }
21792
21890
  async function executeApiOperation(input) {
21793
21891
  const started = performance.now();
21794
21892
  try {
@@ -21909,6 +22007,7 @@ async function executeApiOperation(input) {
21909
22007
  status: response.status,
21910
22008
  statusText: response.statusText.slice(0, 500),
21911
22009
  contentType: response.headers.get("content-type")?.slice(0, 500) ?? null,
22010
+ headers: boundedHeaders(response),
21912
22011
  ...payload,
21913
22012
  durationMs: Math.max(0, Math.round(performance.now() - started)),
21914
22013
  error: response.ok ? null : `The API returned HTTP ${response.status}.`
@@ -21919,6 +22018,7 @@ async function executeApiOperation(input) {
21919
22018
  status: null,
21920
22019
  statusText: "",
21921
22020
  contentType: null,
22021
+ headers: {},
21922
22022
  body: "",
21923
22023
  truncated: false,
21924
22024
  durationMs: Math.max(0, Math.round(performance.now() - started)),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zixt/host",
3
- "version": "0.0.91",
3
+ "version": "0.0.93",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./src/client.ts",