@corca-org/ceal-host-win32-x64 1.0.13 → 1.0.15

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.
@@ -2171,7 +2171,6 @@ var client_wire_contract_default = {
2171
2171
  length: 72,
2172
2172
  pattern: "^catalog:[a-f0-9]{64}$"
2173
2173
  },
2174
- max_bytes: 4194304,
2175
2174
  envelope_max_bytes: 389
2176
2175
  },
2177
2176
  command_request: {
@@ -2258,8 +2257,7 @@ var client_wire_contract_default = {
2258
2257
  ],
2259
2258
  exit_code_max: 125,
2260
2259
  bare_document_max_bytes: 65536,
2261
- complete_max_bytes: 66019,
2262
- absolute_transport_max_bytes: 4194304
2260
+ complete_max_bytes: 66019
2263
2261
  },
2264
2262
  resource_stream: {
2265
2263
  path: "/api/ceal/v2/resources",
@@ -2274,6 +2272,9 @@ var client_wire_contract_default = {
2274
2272
  "fetch"
2275
2273
  ],
2276
2274
  ref_flag: "--ref"
2275
+ },
2276
+ encoded_json_document: {
2277
+ max_bytes: 4194304
2277
2278
  }
2278
2279
  };
2279
2280
 
@@ -2283,6 +2284,7 @@ var commandResolution = CEAL_CLIENT_WIRE_CONTRACT.command_resolution;
2283
2284
  var commandResolutionAuthority = commandResolution.authority;
2284
2285
  var commandResolutionSemanticOptions = commandResolution.semantic_options;
2285
2286
  var CEAL_GATEWAY_COMMAND_RESOLUTION_SCHEMA_VERSION = commandResolution.schema_version;
2287
+ var CEAL_ENCODED_JSON_DOCUMENT_MAX_BYTES = CEAL_CLIENT_WIRE_CONTRACT.encoded_json_document.max_bytes;
2286
2288
  var artifact = CEAL_CLIENT_WIRE_CONTRACT.artifact_descriptor;
2287
2289
  var request = CEAL_CLIENT_WIRE_CONTRACT.command_request;
2288
2290
  var response = CEAL_CLIENT_WIRE_CONTRACT.command_response;
@@ -2296,7 +2298,7 @@ var CEAL_VERIFIED_ARTIFACT_DIGEST_LENGTH = artifact.digest.length;
2296
2298
  var CEAL_VERIFIED_ARTIFACT_DIGEST_PATTERN = artifact.digest.pattern;
2297
2299
  var CEAL_VERIFIED_ARTIFACT_CATALOG_REVISION_LENGTH = artifact.catalog_revision.length;
2298
2300
  var CEAL_VERIFIED_ARTIFACT_CATALOG_REVISION_PATTERN = artifact.catalog_revision.pattern;
2299
- var CEAL_VERIFIED_ARTIFACT_MAX_BYTES = artifact.max_bytes;
2301
+ var CEAL_VERIFIED_ARTIFACT_MAX_BYTES = CEAL_ENCODED_JSON_DOCUMENT_MAX_BYTES;
2300
2302
  var CEAL_VERIFIED_ARTIFACT_DESCRIPTOR_MAX_BYTES = artifact.envelope_max_bytes;
2301
2303
  var CEAL_COMMAND_REQUEST_SCHEMA_VERSION = request.schema_version;
2302
2304
  var CEAL_COMMAND_REQUEST_MAX_BYTES = request.absolute_transport_max_bytes;
@@ -2310,7 +2312,6 @@ var CEAL_COMMAND_RESPONSE_FOCUSED_PROMPT_CONTINUATION_DOCUMENT_FIELDS = Object.f
2310
2312
  var CEAL_COMMAND_RESPONSE_DISCOVERY_COMMAND = response.discovery_command;
2311
2313
  var CEAL_COMMAND_RESPONSE_DISCOVERY_MANIFEST_SCHEMA_VERSION = response.discovery_manifest_schema_version;
2312
2314
  var CEAL_COMMAND_RESPONSE_DISCOVERY_MANIFEST_DOCUMENT_FIELDS = Object.freeze([...response.discovery_manifest_document_fields]);
2313
- var CEAL_COMMAND_RESPONSE_MAX_BYTES = response.absolute_transport_max_bytes;
2314
2315
 
2315
2316
  // packages/ceal-client-protocol/src/vocabulary.ts
2316
2317
  function vocabulary(words) {
@@ -2601,7 +2602,6 @@ function cut(text) {
2601
2602
  var CEAL_OPERATION_ACCESS_CLASSES = vocabulary(["read", "write"]);
2602
2603
 
2603
2604
  // packages/ceal-client-protocol/src/domain-vocabulary.ts
2604
- var CEAL_INTEGRATION_KINDS = vocabulary(["github", "google-workspace", "notion", "slack"]);
2605
2605
  var CEAL_CONNECTOR_STATUSES = vocabulary(["active", "disabled", "disconnected"]);
2606
2606
  var CEAL_CONNECTOR_CUSTODIES = vocabulary(["organization", "personal"]);
2607
2607
  var CEAL_PROVIDER_BOUNDARY_KINDS = vocabulary([
@@ -2968,7 +2968,7 @@ var NON_REMEDY_NEXT_ACTION_VALUES = [
2968
2968
  "operator_action",
2969
2969
  "recover",
2970
2970
  "reconcile",
2971
- // Reconciliation of one named occurrence, not of the deployment: a legacy
2971
+ // Reconciliation of one named occurrence, not of the deployment: an
2972
2972
  // occurrence with no admitted input commitment cannot be replayed safely and
2973
2973
  // no edit to the call changes that. `reconcile` is the deployment-wide word.
2974
2974
  "reconcile_occurrence",
@@ -3101,7 +3101,7 @@ var CEAL_ACTIVITY_V3_KINDS = vocabulary(["authored", "edited", "messaged", "resp
3101
3101
  var CEAL_RESOURCE_TIME_BASES = vocabulary(["created", "modified", "viewed"]);
3102
3102
  var CEAL_RESOURCE_SEARCH_ORDERS = vocabulary(["relevance", "modified", "viewed", "created"]);
3103
3103
  var CEAL_RESOURCE_SEARCH_DIRECTIONS = vocabulary(["ascending", "descending"]);
3104
- var CEAL_RESOURCE_SEARCH_FILTERS = vocabulary(["query", "modified_since", "kinds", "container_ref", "addressed_to_me", "unread"]);
3104
+ var CEAL_RESOURCE_SEARCH_FILTERS = vocabulary(["query", "modified_since", "since", "until", "authored_by_me", "include_replies", "kinds", "container_ref", "container_refs", "container_names", "addressed_to_me", "unread"]);
3105
3105
  var CEAL_ARTIFACT_STAGE_TERMINALS = vocabulary(["chunk_accepted", "artifact_ready", "idempotency_replayed"]);
3106
3106
  var CEAL_READ_ITEM_KINDS = vocabulary(["conversation", "identity", "usergroup", "message", "file", "document"]);
3107
3107
  var CEAL_LEASED_MESSAGE_SEARCH_COMPLETENESS = vocabulary(["complete", "continuation_available", "truncated"]);
@@ -3155,6 +3155,7 @@ var RESOURCE_ROW_KEY_RULES = Object.freeze({
3155
3155
  title: { required: true, timestamp: false },
3156
3156
  container_label: { required: true, timestamp: false },
3157
3157
  container_ref: { required: false, timestamp: false },
3158
+ source_url: { required: false, timestamp: false },
3158
3159
  source: { required: true, timestamp: false },
3159
3160
  owner: { required: false, timestamp: false },
3160
3161
  counterparts: { required: false, timestamp: false },
@@ -3526,7 +3527,17 @@ var CEAL_REQUEST_GRAPH_NODE_PREPARE_READINESS_JSON_SCHEMA = {
3526
3527
  };
3527
3528
 
3528
3529
  // packages/ceal-client-protocol/src/host-invocation-authentication.ts
3530
+ var CEAL_HOST_INVOCATION_AUTHENTICATION_RESULT_SCHEMA = "ceal.host_invocation_authentication_result.v1";
3529
3531
  var CEAL_HOST_INGRESS_PATH = "/api/ceal/v2/host-ingress";
3532
+ var CEAL_HOST_NONCE_ENCODED_CHARACTERS = 43;
3533
+ var CEAL_HOST_CLIENT_NONCE_PATTERN = new RegExp(`^[A-Za-z0-9_-]{${CEAL_HOST_NONCE_ENCODED_CHARACTERS}}$`, "u");
3534
+ var CEAL_HOST_CONTEXT_TOKEN_PATTERN = new RegExp(`^ceal_context_[A-Za-z0-9_-]{${CEAL_HOST_NONCE_ENCODED_CHARACTERS}}$`, "u");
3535
+ var CEAL_HOST_INVOCATION_AUTHENTICATION_RESULT_MAX_BYTES = new TextEncoder().encode(`${JSON.stringify({
3536
+ schema_version: CEAL_HOST_INVOCATION_AUTHENTICATION_RESULT_SCHEMA,
3537
+ context_token: `ceal_context_${"A".repeat(CEAL_HOST_NONCE_ENCODED_CHARACTERS)}`,
3538
+ expires_at: (/* @__PURE__ */ new Date("+010000-01-01T00:00:00.000Z")).toISOString()
3539
+ })}
3540
+ `).byteLength;
3530
3541
 
3531
3542
  // packages/ceal-client-protocol/src/client-result-materialization.ts
3532
3543
  var CEAL_MODEL_VISIBLE_COMMAND_OUTPUT_MAX_BYTES = 32 * 1024;
@@ -4022,7 +4033,6 @@ function ownerPrivate2(stats) {
4022
4033
  import { posix as posix4, win32 as win324 } from "node:path";
4023
4034
  import { constants } from "node:fs";
4024
4035
  import { lstat as lstat4, open as open3 } from "node:fs/promises";
4025
- var MAX_CONFIG_BYTES = 32 * 1024;
4026
4036
  var SAFE_REF3 = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/u;
4027
4037
  var HOST_PRODUCER_CONFIG_FLAG = "--ceal-host-config";
4028
4038
  var HostProducerServiceError = class extends Error {
@@ -4033,7 +4043,8 @@ var HostProducerServiceError = class extends Error {
4033
4043
  this.code = code3;
4034
4044
  }
4035
4045
  };
4036
- var HOST_PRODUCER_CONFIG_KEYS = ["schema_version", "host_source_ref", "producer_installation_ref", "producer_epoch", "outbox_dir", "relay_endpoint", "reconcile_interval_ms", "retry_backoff_ms", "ipc_timeout_ms"];
4046
+ var HOST_PRODUCER_CONFIG_KEYS = ["schema_version", "host_source_ref", "producer_installation_ref", "producer_epoch", "outbox_dir", "relay_endpoint"];
4047
+ var HOST_PRODUCER_TIMING_DEFAULTS = Object.freeze({ reconcile_interval_ms: 250, retry_backoff_ms: 1e3, ipc_timeout_ms: 5e3 });
4037
4048
  function hostProducerExtraPath(extras, key) {
4038
4049
  const value = extras[key];
4039
4050
  if (value === void 0) throw hostProducerError("invalid_config");
@@ -4066,15 +4077,17 @@ async function readProducerConfigText(configPath, platform, error) {
4066
4077
  const noFollow = typeof constants.O_NOFOLLOW === "number" ? constants.O_NOFOLLOW : 0;
4067
4078
  const handle = await openConfigFile(configPath, constants.O_RDONLY | noFollow, error);
4068
4079
  try {
4069
- validateOpenedFile(await handle.stat(), pathStat, platform, error);
4070
- return await readBoundedConfig(handle, error);
4080
+ const opened = await handle.stat();
4081
+ validateConfigFile(opened, platform, error);
4082
+ validateOpenedFile(opened, pathStat, platform, error);
4083
+ return await readBoundedConfig(handle, opened.size, error);
4071
4084
  } finally {
4072
4085
  await handle.close();
4073
4086
  }
4074
4087
  }
4075
4088
  function decodeProducerConfigCore(text, options) {
4076
4089
  const value = parseCanonicalJson(text, options.error);
4077
- if (!isRecord(value) || !hasExactKeys2(value, options.keys) || value.schema_version !== options.schema) throw options.error("invalid_config");
4090
+ if (!isRecord(value) || !hasConfigKeys(value, options.keys) || value.schema_version !== options.schema) throw options.error("invalid_config");
4078
4091
  const hostSourceRef = typeof value.host_source_ref === "string" ? value.host_source_ref : "";
4079
4092
  const installationRef = typeof value.producer_installation_ref === "string" ? value.producer_installation_ref : "";
4080
4093
  const producerEpoch = validateIdentity(hostSourceRef, installationRef, value.producer_epoch, options.error);
@@ -4085,7 +4098,7 @@ function decodeProducerConfigCore(text, options) {
4085
4098
  assertProducerAbsolutePath(value[key], options.platform, "runtime", options.error);
4086
4099
  extraPaths[key] = value[key];
4087
4100
  }
4088
- const intervals = validateIntervals(value.reconcile_interval_ms, value.retry_backoff_ms, value.ipc_timeout_ms, options.error);
4101
+ const intervals = validateIntervals(value.reconcile_interval_ms === void 0 ? HOST_PRODUCER_TIMING_DEFAULTS.reconcile_interval_ms : value.reconcile_interval_ms, value.retry_backoff_ms === void 0 ? HOST_PRODUCER_TIMING_DEFAULTS.retry_backoff_ms : value.retry_backoff_ms, value.ipc_timeout_ms === void 0 ? HOST_PRODUCER_TIMING_DEFAULTS.ipc_timeout_ms : value.ipc_timeout_ms, options.error);
4089
4102
  return {
4090
4103
  extra_paths: Object.freeze(extraPaths),
4091
4104
  host_source_ref: hostSourceRef,
@@ -4114,7 +4127,7 @@ async function configPathStat(configPath, error) {
4114
4127
  }
4115
4128
  function validateConfigFile(value, platform, error) {
4116
4129
  if (!value.isFile() || value.isSymbolicLink()) throw error("invalid_config", refusalFacts([{ name: "config_is_file", value: value.isFile(), expected: "true" }, { name: "config_is_symlink", value: value.isSymbolicLink(), expected: "false" }]));
4117
- if (value.size <= 0 || value.size > MAX_CONFIG_BYTES) throw error("invalid_config", refusalFact("config_bytes", value.size, `between 1 and ${MAX_CONFIG_BYTES}`));
4130
+ if (value.size <= 0 || value.size > CEAL_ENCODED_JSON_DOCUMENT_MAX_BYTES) throw error("invalid_config", refusalFact("config_bytes", value.size, `between 1 and ${CEAL_ENCODED_JSON_DOCUMENT_MAX_BYTES}`));
4118
4131
  if (platform !== "win32" && (value.uid !== process.getuid?.() || (value.mode & 63) !== 0)) throw error("config_not_private", refusalFacts([{ name: "platform", value: platform, expected: "win32 or owner-private" }, { name: "config_uid", value: value.uid, expected: "the current user" }, { name: "config_mode", value: value.mode, expected: "owner-private" }]));
4119
4132
  }
4120
4133
  async function openConfigFile(configPath, flags, error) {
@@ -4128,12 +4141,17 @@ function validateOpenedFile(opened, pathStat, platform, error) {
4128
4141
  if (!opened.isFile()) throw error("config_unavailable", refusalFacts([{ name: "opened_is_file", value: opened.isFile(), expected: "true" }, { name: "opened_mode", value: opened.mode.toString(8), expected: "a regular file mode" }]));
4129
4142
  if (platform !== "win32" && (opened.dev !== pathStat.dev || opened.ino !== pathStat.ino)) throw error("config_unavailable", refusalFacts([{ name: "platform", value: platform, expected: "win32, or the same file the path named" }, { name: "opened_device", value: opened.dev, expected: String(pathStat.dev) }, { name: "opened_inode", value: opened.ino, expected: String(pathStat.ino) }]));
4130
4143
  }
4131
- async function readBoundedConfig(handle, error) {
4132
- const buffer = Buffer.allocUnsafe(MAX_CONFIG_BYTES + 1);
4133
- const { bytesRead } = await handle.read(buffer, 0, buffer.byteLength, 0);
4134
- if (bytesRead === 0 || bytesRead > MAX_CONFIG_BYTES) throw error("invalid_config", refusalFact("bytes_read", bytesRead, `between 1 and ${MAX_CONFIG_BYTES}`));
4144
+ async function readBoundedConfig(handle, expectedBytes, error) {
4145
+ const buffer = Buffer.allocUnsafe(expectedBytes + 1);
4146
+ let offset = 0;
4147
+ while (offset < buffer.byteLength) {
4148
+ const { bytesRead } = await handle.read(buffer, offset, buffer.byteLength - offset, offset);
4149
+ if (bytesRead === 0) break;
4150
+ offset += bytesRead;
4151
+ }
4152
+ if (offset !== expectedBytes) throw error("invalid_config", refusalFact("bytes_read", offset, `the opened file's ${expectedBytes} bytes without growth or truncation`));
4135
4153
  try {
4136
- return new TextDecoder("utf-8", { fatal: true }).decode(buffer.subarray(0, bytesRead));
4154
+ return new TextDecoder("utf-8", { fatal: true }).decode(buffer.subarray(0, offset));
4137
4155
  } catch {
4138
4156
  throw error("invalid_config");
4139
4157
  }
@@ -4161,9 +4179,8 @@ function validateIntervals(reconcile, retry, timeout, error) {
4161
4179
  if (!boundedMilliseconds(reconcile) || !boundedMilliseconds(retry) || !boundedMilliseconds(timeout)) throw error("invalid_config");
4162
4180
  return [reconcile, retry, timeout];
4163
4181
  }
4164
- function hasExactKeys2(value, keys) {
4165
- const observed = Object.keys(value);
4166
- return observed.length === keys.length && keys.every((key) => Object.hasOwn(value, key));
4182
+ function hasConfigKeys(value, required) {
4183
+ return required.every((key) => Object.hasOwn(value, key)) && Object.keys(value).every((key) => required.includes(key) || Object.hasOwn(HOST_PRODUCER_TIMING_DEFAULTS, key));
4167
4184
  }
4168
4185
  function isRecord(value) {
4169
4186
  return value !== null && typeof value === "object" && !Array.isArray(value);
@@ -7712,6 +7729,8 @@ function configurationError(message) {
7712
7729
  }
7713
7730
 
7714
7731
  // host/lifecycle/src/host-bundle-manifest.ts
7732
+ var HOST_BUNDLE_MAX_SELECTED_BYTES = 256 * 1024 * 1024;
7733
+ var HOST_BUNDLE_MAX_SIGSTORE_BYTES = 16 * 1024 * 1024;
7715
7734
  var HOST_BUNDLE_TARGETS = Object.freeze(["linux-x64", "linux-arm64", "darwin-arm64", "windows-x64"]);
7716
7735
  var HOST_BUNDLE_COMPONENTS = Object.freeze(["lifecycle", "relay", "codex", "claude"]);
7717
7736
  var HOST_BUNDLE_PRODUCERS = Object.freeze(["codex", "claude"]);
@@ -7779,7 +7798,7 @@ function resolveInstalledHostRuntimePaths(prefix, platform = process.platform) {
7779
7798
  };
7780
7799
  }
7781
7800
  function parseHostRuntimeControlRequest(value) {
7782
- if (!isCealJsonRecord(value) || !hasExactKeys3(value, REQUEST_REQUIRED_KEYS, ["component"])) throw invalid2("invalid_request_fields");
7801
+ if (!isCealJsonRecord(value) || !hasExactKeys2(value, REQUEST_REQUIRED_KEYS, ["component"])) throw invalid2("invalid_request_fields");
7783
7802
  if (value.schema_version !== HOST_RUNTIME_CONTROL_REQUEST_SCHEMA) throw invalid2("invalid_request_schema", [`expected:${HOST_RUNTIME_CONTROL_REQUEST_SCHEMA}`]);
7784
7803
  if (!isOperation2(value.operation)) throw invalid2("invalid_request_schema");
7785
7804
  assertPrefix(value.prefix);
@@ -7936,7 +7955,7 @@ function sameSelection(left, right) {
7936
7955
  function assertPrefix(value) {
7937
7956
  if (!isAbsoluteNormalizedNonRootPath(value) || /[\r\n]/u.test(value)) throw invalid2("invalid_prefix");
7938
7957
  }
7939
- function hasExactKeys3(value, required, optional) {
7958
+ function hasExactKeys2(value, required, optional) {
7940
7959
  const allowed = /* @__PURE__ */ new Set([...required, ...optional]);
7941
7960
  const keys = Object.keys(value);
7942
7961
  return required.every((key) => Object.hasOwn(value, key)) && keys.every((key) => allowed.has(key));
@@ -54,7 +54,6 @@ var client_wire_contract_default = {
54
54
  length: 72,
55
55
  pattern: "^catalog:[a-f0-9]{64}$"
56
56
  },
57
- max_bytes: 4194304,
58
57
  envelope_max_bytes: 389
59
58
  },
60
59
  command_request: {
@@ -141,8 +140,7 @@ var client_wire_contract_default = {
141
140
  ],
142
141
  exit_code_max: 125,
143
142
  bare_document_max_bytes: 65536,
144
- complete_max_bytes: 66019,
145
- absolute_transport_max_bytes: 4194304
143
+ complete_max_bytes: 66019
146
144
  },
147
145
  resource_stream: {
148
146
  path: "/api/ceal/v2/resources",
@@ -157,6 +155,9 @@ var client_wire_contract_default = {
157
155
  "fetch"
158
156
  ],
159
157
  ref_flag: "--ref"
158
+ },
159
+ encoded_json_document: {
160
+ max_bytes: 4194304
160
161
  }
161
162
  };
162
163
 
@@ -166,6 +167,7 @@ var commandResolution = CEAL_CLIENT_WIRE_CONTRACT.command_resolution;
166
167
  var commandResolutionAuthority = commandResolution.authority;
167
168
  var commandResolutionSemanticOptions = commandResolution.semantic_options;
168
169
  var CEAL_GATEWAY_COMMAND_RESOLUTION_SCHEMA_VERSION = commandResolution.schema_version;
170
+ var CEAL_ENCODED_JSON_DOCUMENT_MAX_BYTES = CEAL_CLIENT_WIRE_CONTRACT.encoded_json_document.max_bytes;
169
171
  var artifact = CEAL_CLIENT_WIRE_CONTRACT.artifact_descriptor;
170
172
  var request = CEAL_CLIENT_WIRE_CONTRACT.command_request;
171
173
  var response = CEAL_CLIENT_WIRE_CONTRACT.command_response;
@@ -179,7 +181,7 @@ var CEAL_VERIFIED_ARTIFACT_DIGEST_LENGTH = artifact.digest.length;
179
181
  var CEAL_VERIFIED_ARTIFACT_DIGEST_PATTERN = artifact.digest.pattern;
180
182
  var CEAL_VERIFIED_ARTIFACT_CATALOG_REVISION_LENGTH = artifact.catalog_revision.length;
181
183
  var CEAL_VERIFIED_ARTIFACT_CATALOG_REVISION_PATTERN = artifact.catalog_revision.pattern;
182
- var CEAL_VERIFIED_ARTIFACT_MAX_BYTES = artifact.max_bytes;
184
+ var CEAL_VERIFIED_ARTIFACT_MAX_BYTES = CEAL_ENCODED_JSON_DOCUMENT_MAX_BYTES;
183
185
  var CEAL_VERIFIED_ARTIFACT_DESCRIPTOR_MAX_BYTES = artifact.envelope_max_bytes;
184
186
  var CEAL_COMMAND_REQUEST_SCHEMA_VERSION = request.schema_version;
185
187
  var CEAL_COMMAND_REQUEST_MAX_BYTES = request.absolute_transport_max_bytes;
@@ -193,7 +195,6 @@ var CEAL_COMMAND_RESPONSE_FOCUSED_PROMPT_CONTINUATION_DOCUMENT_FIELDS = Object.f
193
195
  var CEAL_COMMAND_RESPONSE_DISCOVERY_COMMAND = response.discovery_command;
194
196
  var CEAL_COMMAND_RESPONSE_DISCOVERY_MANIFEST_SCHEMA_VERSION = response.discovery_manifest_schema_version;
195
197
  var CEAL_COMMAND_RESPONSE_DISCOVERY_MANIFEST_DOCUMENT_FIELDS = Object.freeze([...response.discovery_manifest_document_fields]);
196
- var CEAL_COMMAND_RESPONSE_MAX_BYTES = response.absolute_transport_max_bytes;
197
198
 
198
199
  // packages/ceal-client-protocol/src/vocabulary.ts
199
200
  function vocabulary(words) {
@@ -484,7 +485,6 @@ function cut(text) {
484
485
  var CEAL_OPERATION_ACCESS_CLASSES = vocabulary(["read", "write"]);
485
486
 
486
487
  // packages/ceal-client-protocol/src/domain-vocabulary.ts
487
- var CEAL_INTEGRATION_KINDS = vocabulary(["github", "google-workspace", "notion", "slack"]);
488
488
  var CEAL_CONNECTOR_STATUSES = vocabulary(["active", "disabled", "disconnected"]);
489
489
  var CEAL_CONNECTOR_CUSTODIES = vocabulary(["organization", "personal"]);
490
490
  var CEAL_PROVIDER_BOUNDARY_KINDS = vocabulary([
@@ -851,7 +851,7 @@ var NON_REMEDY_NEXT_ACTION_VALUES = [
851
851
  "operator_action",
852
852
  "recover",
853
853
  "reconcile",
854
- // Reconciliation of one named occurrence, not of the deployment: a legacy
854
+ // Reconciliation of one named occurrence, not of the deployment: an
855
855
  // occurrence with no admitted input commitment cannot be replayed safely and
856
856
  // no edit to the call changes that. `reconcile` is the deployment-wide word.
857
857
  "reconcile_occurrence",
@@ -981,7 +981,7 @@ var CEAL_ACTIVITY_V3_KINDS = vocabulary(["authored", "edited", "messaged", "resp
981
981
  var CEAL_RESOURCE_TIME_BASES = vocabulary(["created", "modified", "viewed"]);
982
982
  var CEAL_RESOURCE_SEARCH_ORDERS = vocabulary(["relevance", "modified", "viewed", "created"]);
983
983
  var CEAL_RESOURCE_SEARCH_DIRECTIONS = vocabulary(["ascending", "descending"]);
984
- var CEAL_RESOURCE_SEARCH_FILTERS = vocabulary(["query", "modified_since", "kinds", "container_ref", "addressed_to_me", "unread"]);
984
+ var CEAL_RESOURCE_SEARCH_FILTERS = vocabulary(["query", "modified_since", "since", "until", "authored_by_me", "include_replies", "kinds", "container_ref", "container_refs", "container_names", "addressed_to_me", "unread"]);
985
985
  var CEAL_ARTIFACT_STAGE_TERMINALS = vocabulary(["chunk_accepted", "artifact_ready", "idempotency_replayed"]);
986
986
  var CEAL_READ_ITEM_KINDS = vocabulary(["conversation", "identity", "usergroup", "message", "file", "document"]);
987
987
  var CEAL_LEASED_MESSAGE_SEARCH_COMPLETENESS = vocabulary(["complete", "continuation_available", "truncated"]);
@@ -1035,6 +1035,7 @@ var RESOURCE_ROW_KEY_RULES = Object.freeze({
1035
1035
  title: { required: true, timestamp: false },
1036
1036
  container_label: { required: true, timestamp: false },
1037
1037
  container_ref: { required: false, timestamp: false },
1038
+ source_url: { required: false, timestamp: false },
1038
1039
  source: { required: true, timestamp: false },
1039
1040
  owner: { required: false, timestamp: false },
1040
1041
  counterparts: { required: false, timestamp: false },
@@ -1402,8 +1403,15 @@ var CEAL_REQUEST_GRAPH_NODE_PREPARE_READINESS_JSON_SCHEMA = {
1402
1403
  var CEAL_HOST_INVOCATION_AUTHENTICATION_RESULT_SCHEMA = "ceal.host_invocation_authentication_result.v1";
1403
1404
  var CEAL_HOST_INVOCATION_CONTEXT_PATH = "/api/ceal/v2/host-invocation-context";
1404
1405
  var CEAL_HOST_INGRESS_PATH = "/api/ceal/v2/host-ingress";
1405
- var CEAL_HOST_CLIENT_NONCE_PATTERN = /^[A-Za-z0-9_-]{43}$/u;
1406
- var CEAL_HOST_CONTEXT_TOKEN_PATTERN = /^ceal_context_[A-Za-z0-9_-]{43}$/u;
1406
+ var CEAL_HOST_NONCE_ENCODED_CHARACTERS = 43;
1407
+ var CEAL_HOST_CLIENT_NONCE_PATTERN = new RegExp(`^[A-Za-z0-9_-]{${CEAL_HOST_NONCE_ENCODED_CHARACTERS}}$`, "u");
1408
+ var CEAL_HOST_CONTEXT_TOKEN_PATTERN = new RegExp(`^ceal_context_[A-Za-z0-9_-]{${CEAL_HOST_NONCE_ENCODED_CHARACTERS}}$`, "u");
1409
+ var CEAL_HOST_INVOCATION_AUTHENTICATION_RESULT_MAX_BYTES = new TextEncoder().encode(`${JSON.stringify({
1410
+ schema_version: CEAL_HOST_INVOCATION_AUTHENTICATION_RESULT_SCHEMA,
1411
+ context_token: `ceal_context_${"A".repeat(CEAL_HOST_NONCE_ENCODED_CHARACTERS)}`,
1412
+ expires_at: (/* @__PURE__ */ new Date("+010000-01-01T00:00:00.000Z")).toISOString()
1413
+ })}
1414
+ `).byteLength;
1407
1415
  function decodeCealHostInvocationAuthenticationResult(value, now = /* @__PURE__ */ new Date()) {
1408
1416
  if (!isCealJsonRecord(value) || !exactKeys(value, ["schema_version", "context_token", "expires_at"]) || value.schema_version !== CEAL_HOST_INVOCATION_AUTHENTICATION_RESULT_SCHEMA || typeof value.context_token !== "string" || !CEAL_HOST_CONTEXT_TOKEN_PATTERN.test(value.context_token) || typeof value.expires_at !== "string" || !validFutureTimestamp(value.expires_at, now)) {
1409
1417
  throw new TypeError("The Host invocation authentication result is invalid.");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@corca-org/ceal-host-win32-x64",
3
- "version": "1.0.13",
3
+ "version": "1.0.15",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -3,12 +3,12 @@
3
3
  "product": "ceal-host",
4
4
  "version_source": {
5
5
  "product": "ceal-host",
6
- "version": "1.0.13"
6
+ "version": "1.0.15"
7
7
  },
8
8
  "source": {
9
9
  "repository": "corca-ai/ceal",
10
- "commit": "732cf464711e3ab992146175b0a9b34126374109",
11
- "tree": "ef5174496b0db4e4791a168cbfc6dc3cb1efd994"
10
+ "commit": "0c54b8b955cfbb75c074f69787e799e0668da6c2",
11
+ "tree": "491b91d6d97c42a91f4d0c3618322110428bad07"
12
12
  },
13
13
  "target": "windows-x64",
14
14
  "required_features": [],
@@ -19,7 +19,7 @@
19
19
  ],
20
20
  "executable": true,
21
21
  "path": "bin/ceal-host.exe",
22
- "sha256": "52906bc608d8e769d4cf75253fb0417da0173dc6a59e195f6b3827b768c45292"
22
+ "sha256": "788866fc72c10a3ee104b52fdcadbfd6a3f79bf92158a2c56aebaa3b12bfa77b"
23
23
  },
24
24
  {
25
25
  "owners": [
@@ -27,7 +27,7 @@
27
27
  ],
28
28
  "executable": false,
29
29
  "path": "libexec/ceal-host/claude-hook.mjs",
30
- "sha256": "46c535a25bd169b584053c7e9a26a907651a84b9482246ee228df59cabd78d86"
30
+ "sha256": "148af7c97276a026c852ef05dc5d855852a69fae969703a04aaed4680c031ba8"
31
31
  },
32
32
  {
33
33
  "owners": [
@@ -35,7 +35,7 @@
35
35
  ],
36
36
  "executable": false,
37
37
  "path": "libexec/ceal-host/claude-invocation-authentication.mjs",
38
- "sha256": "21333ba0d8b888968d34bd5fea40f8f364bc9beed2c057014c20c62f3bb0a2df"
38
+ "sha256": "59f233dca016bd9dd02af0c8ed9eab47cfba988ec7c9ec71e74f4468fe584ec0"
39
39
  },
40
40
  {
41
41
  "owners": [
@@ -43,7 +43,7 @@
43
43
  ],
44
44
  "executable": false,
45
45
  "path": "libexec/ceal-host/claude-producer.mjs",
46
- "sha256": "6a5af274158bf79a37b460776b0458b23f4cbe35dab5de286bf66a00ef3ec0b8"
46
+ "sha256": "e2c142a1e713d84ed45fe869c9d457aa345901543c5d0d2918c5e0949f47c566"
47
47
  },
48
48
  {
49
49
  "owners": [
@@ -51,7 +51,7 @@
51
51
  ],
52
52
  "executable": false,
53
53
  "path": "libexec/ceal-host/codex-hook.mjs",
54
- "sha256": "2720509774d28f0abd694195a468bef9f17b9085b11045b296405c6a0ed5b10e"
54
+ "sha256": "efcae19be26da25815a8cfdf864944c9f7c3fad12cfef7270cd4401fa2b03775"
55
55
  },
56
56
  {
57
57
  "owners": [
@@ -59,7 +59,7 @@
59
59
  ],
60
60
  "executable": false,
61
61
  "path": "libexec/ceal-host/codex-invocation-authentication.mjs",
62
- "sha256": "10379bbae5e99fefa1b92123859dcbbf6c8034bec2139841792c0f20afacfbe4"
62
+ "sha256": "5548db74d1a7c4300f4b8bac1c833730139ce80fd93de2bda996820f9f6937fe"
63
63
  },
64
64
  {
65
65
  "owners": [
@@ -67,7 +67,7 @@
67
67
  ],
68
68
  "executable": false,
69
69
  "path": "libexec/ceal-host/codex-producer.mjs",
70
- "sha256": "7cb0515a96d64ed4a694f1d3b6ccd025f09ce79440df721b7bba8af3f8e90675"
70
+ "sha256": "829a02387d7062a329010ab17ba7a6c292efcef482730d2a089de0ce0a2c2a7f"
71
71
  },
72
72
  {
73
73
  "owners": [
@@ -75,7 +75,7 @@
75
75
  ],
76
76
  "executable": false,
77
77
  "path": "libexec/ceal-host/control.mjs",
78
- "sha256": "742839f25bed3db60e4be66b359da91799bcc2f4cc984646f95a39df4bb8f344"
78
+ "sha256": "86d2db2ec3ec0deb7f8466fbfbc37bc5f0c8191bbafaf1993698811030646f20"
79
79
  },
80
80
  {
81
81
  "owners": [
@@ -91,7 +91,7 @@
91
91
  ],
92
92
  "executable": false,
93
93
  "path": "libexec/ceal-host/relay.mjs",
94
- "sha256": "60abc3d35a84285357ce524d490a3732a767c625e851dd8e952b46ec3930be60"
94
+ "sha256": "27c40cc04f720c038d013a15b2afb57dee78f85a307b9a7818e94e3e880d1aa3"
95
95
  }
96
96
  ]
97
97
  }
@@ -1 +1 @@
1
- {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"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"},"tlogEntries":[{"logIndex":"2992574516","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1790651975","inclusionPromise":{"signedEntryTimestamp":"MEUCIQDMLSrfjQO1MCqoyOBBFOehlobizjO4oOtJbJwRIMjbHwIgfKdbpNbMSyBHoL0ELFC3pkknYtrCYhZm09c7PALfh9k="},"inclusionProof":{"logIndex":"2870670254","rootHash":"VEhIvsmc6ggDX6QPKM1n32KjkzkGPZ+SX0wQq9rK2FU=","treeSize":"2870670570","hashes":["c5/KNquX0ECX74NTp60SxXzLbB9qrvlBEaHEjdpyEAk=","5JxY5Ug+LQz7cFQJPKkTb+mDVoZApXOEOFbmktk9e3g=","Cfc4OGQDYlkmmKS/gcjwCF/sGX2ZGQzbiJ3eI0vjPVE=","AipDmNKaiM+KwE65irJcyvOaVoiM5nQV1jdbTGHDgcU=","sxOsQhFfAblRoRahvk/8ZMsGf2WuCrFygSKvVqL6yqY=","M6j8zHW51Omeq5ZeyOJiYSGo9kEpw/7/jhtegGLeUig=","5cxtE8fr55my8FBqILWjTs7gaq70A8p5gnEoYZs4xzs=","EK/fZ4cIkvurXxwQQEIsundZQig8FKk6cCsopymCyrg=","2WN4/8nGDkBTHzgo7ZJDiC/CvopyevIxI4KlEBXbUgw=","KufeOFYOyPFdOjCLChzHEv010fqfP24TlktskfahPPA=","iBjWlx61+axV6luelbn4MwVBVmDVf1jFGz7kJsGT2sY=","fkHlEFWuI9hz0cJZ2oRdZHy/H/noOxfkpoAdRWk7W1M=","XyOljDcLBP9uXRGe5yiR914lsLfey4mgjssi/5K1dAc=","dSoYdQ3tP9fPwxIdkBb/4k6f2aiBfkPdUbmZu+vjlvo=","BSkJHyyiXXUGgDYzovBhYkX4zCULrK6ijkVhR55B2Ww=","aegW1hJKQKr2OyW/zIz0UM/+kn6p6P/7Lrst0mDFkis=","Ssc23htZrUjaxYoKLcqEaUS97GSlGzQnTGGRpq+5UtU=","Sp+ICPp0CTN68mS3IfgY0X/aMqm4kaaPoJZ3lxXGL00=","vcyqiwN1R9e9/ujt8MEwxvaDR6ZwbuJX5H8FcCWPlAE=","B1Y96tQagNknpJ8/ufNODAPKkOjvBLLCKTEJLfbi5rU=","ttpxd0TJprOUtb/8Wf5DeIzwNtUw72Q0YnXE2LFMIZo=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2870670570\nVEhIvsmc6ggDX6QPKM1n32KjkzkGPZ+SX0wQq9rK2FU=\n\n— rekor.sigstore.dev wNI9ajBEAiBsZdMRypMsOQeTMBGUKxpJGNCg2kJFFR7SllfxoLS8twIgJ0xFpM3B0DPCAR5TkHD45pJvAkugF8Adik3xCt0Y3eg=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJiMjM3MTFmZTJmYzBhNWY5ODU4MzkyMWJhZTFmOTUyMmU4Y2Y0MmRjNTU1NWJiNTk1ZmNlOGEyOWFlYTM0NWEwIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUUNVSjZsNEwxUERjbHVZOXZ4amdvdmhhR0NiL2FBaVhKT0VUdkplTWNjc1FBSWhBUElnRWNaOGZyY0xkNWJ0SHV4aHkvMGczMGdHUHBwV245TDk4Yy9yTmFtOCIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaEVSRU5EUW5CUFowRjNTVUpCWjBsVlpGRnZObWR5Y0ZvdmVucG9WMmQ2WkdsS1JXNDFabEpRWjJOemQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlVU1RWTlJFMTRUMVJOTVZkb1kwNU5hbGwzVDFSSk5VMUVUWGxQVkUweFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZUZUdVeFN5dGlNMDl3UTFCSlMweHJhR1ZMZW1KMmNraFJSekIyTUVWUWFXWmliVkVLV1VGbFJIRkZaakZEVUVsTFdXMXFVVVV4VjI5U2NrUmFPRWRLWlhONGNFcG5WekZGUld0cUszZHNheXRZT1dWTGRUWlBRMEppU1hkbloxZDFUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlY0Um5WdENsUmpjVFUwY21jd2RIbHVhM1U1ZUhOVVVWRXlNWEU0ZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDFwbldVUldVakJTUVZGSUwwSkdkM2RYYjFwWllVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKT2RtTnRUbWhNVjBad1RESk9iQXBaVjNkMlRHMWtjR1JIYURGWmFUa3pZak5LY2xwdGVIWmtNMDEyWTIxV2MxcFhSbnBhVXpGcVdWYzFhMkZYVW1oa1IxVjFaVmN4YzFGSVNteGFiazEyQ21GSFZtaGFTRTEyWWxkR2NHSnFRVFZDWjI5eVFtZEZSVUZaVHk5TlFVVkNRa04wYjJSSVVuZGplbTkyVEROU2RtRXlWblZNYlVacVpFZHNkbUp1VFhVS1dqSnNNR0ZJVm1sa1dFNXNZMjFPZG1KdVVteGlibEYxV1RJNWRFMUNPRWREYVhOSFFWRlJRbWMzT0hkQlVVbEZSVmhrZG1OdGRHMWlSemt6V0RKU2NBcGpNMEpvWkVkT2IwMUVXVWREYVhOSFFWRlJRbWMzT0hkQlVVMUZTMFJqZWsxdFRtMU9SRmt3VG5wRmVGcFVUbWhaYW1zMVRXcEZNRTVxUlROT1YwbDNDbGxVYkdsTmVsRjRUV3BaZWs1NlVYaE5SR3QzU2tGWlMwdDNXVUpDUVVkRWRucEJRa0pCVVZkUk1sWm9Za05DZVZwWGVHeFpXRTVzU1VkT2FHSnRVbkFLV2tkR01GcFVRV0pDWjI5eVFtZEZSVUZaVHk5TlFVVkdRa0V4YW1JelNtcFpVekZvWVZNNWFscFhSbk5OUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlFwRU0wcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRVGRDWjI5eVFtZEZSVUZaVHk5TlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMUNsbFhUakJoVnpsMVkzazFibUZZVW05a1Ywb3hZekpXZVZreU9YVmtSMVoxWkVNMWFtSXlNSGRoUVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWVVSR2FHOEtaRWhTZDJONmIzWk1NbVJ3WkVkb01WbHBOV3BpTWpCMldUSTVlVmt5UlhSWlYydDJXVEpXYUdKRE9IVmFNbXd3WVVoV2FVd3paSFpqYlhSdFlrYzVNd3BqZVRsNVdsZDRiRmxZVG14TVYwNW9ZbTFTY0ZwSFJqQmFVelUxWWxkNFFXTnRWbTFqZVRsdldsZEdhMk41T1hSWlYyeDFUVVJuUjBOcGMwZEJVVkZDQ21jM09IZEJVVzlGUzJkM2IwNTZUWGxaTWxrd1RtcFJNMDFVUm14Tk1rWnBUMVJyZVUxVVVUSk5WR014V1dwQ2FFOVhTWHBPUkVWNVRtcE5NMDVFUlhjS1QxUkJaRUpuYjNKQ1owVkZRVmxQTDAxQlJVeENRVGhOUkZka2NHUkhhREZaYVRGdllqTk9NRnBYVVhkTlFWbExTM2RaUWtKQlIwUjJla0ZDUkVGUmFRcEVRMEp2WkVoU2QyTjZiM1pNTW1Sd1pFZG9NVmxwTldwaU1qQjJXVEk1ZVZreVJYUlpWMnQyV1RKV2FHSkVRVFJDWjI5eVFtZEZSVUZaVHk5TlFVVk9Da0pEYjAxTFJHTjZUVzFPYlU1RVdUQk9la1Y0V2xST2FGbHFhelZOYWtVd1RtcEZNMDVYU1hkWlZHeHBUWHBSZUUxcVdYcE9lbEY0VFVScmQwaDNXVXNLUzNkWlFrSkJSMFIyZWtGQ1JHZFJVa1JCT1hsYVYxcDZUREpvYkZsWFVucE1NakZvWVZjMGQwZG5XVXRMZDFsQ1FrRkhSSFo2UVVKRWQxRk5SRUZ2ZUFwTlZHdDRUbFJWTUU1VWEzcE5RM05IUTJselIwRlJVVUpuTnpoM1FWSkJSVWhSZDJKaFNGSXdZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTWs1MkNtTnRUbWhNVjBad1RVSm5SME5wYzBkQlVWRkNaemM0ZDBGU1JVVkRaM2RKVG5wSk5VNTZaelJPYWtGM1lVRlpTMHQzV1VKQ1FVZEVkbnBCUWtWblVtRUtSRVpvYjJSSVVuZGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbGt5T1hsWk1rVjBXVmRyZGxreVZtaGlRemgxV2pKc01HRklWbWxNTTJSMlkyMTBiUXBpUnprelkzazVlVnBYZUd4WldFNXNURmRPYUdKdFVuQmFSMFl3V2xNMU5XSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlPZWsxNVdUSlpNRTVxVVROTlZFWnNUVEpHYVU5VWEzbE5WRkV5VFZSak1WbHFRbWhQVjBsNlRrUkZlVTVxVFRNS1RrUkZkMDlVUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxR1VVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWSm5lRVZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NazUyWTIxT2FFeFhSbkJNTWs1c1dWZDNkbGxYVGpCaFZ6bDFDbU41T1hsa1Z6VjZUSHBOTWs1VVJURlBWR2Q0VG5wSk1Fd3lSakJrUjFaMFkwaFNla3g2UlhkR2QxbExTM2RaUWtKQlIwUjJla0ZDUm1kUlNrUkJaSGNLWTIxc01sbFlVbXhOUkZsSFEybHpSMEZSVVVKbk56aDNRVkpuUlV0QmQyMWpiVlozWW5wd2FtSXpTbXBaVXpGb1lWTTVhbHBYUm5OUGJrcHNXbXB3ZVFwYVYxcDZUREpvYkZsWFVucE1NakZvWVZjMGQyZFpiMGREYVhOSFFWRlJRakZ1YTBOQ1FVbEZaa0ZTTmtGSVowRmtaMFJrVUZSQ2NYaHpZMUpOYlUxYUNraG9lVnBhZW1ORGIydHdaWFZPTkRoeVppdElhVzVMUVV4NWJuVnFaMEZCUVdGRWNreE5XSHBCUVVGRlFYZENTRTFGVlVOSlVVTkdTMXBWWld4TmJXb0tSbkl5WXk5YVNVZFpVWFZUY21KdlZGbFpkMVpXU25sVU5uaHFSMWQyUzBWWWQwbG5Va0ZKS3pGUFZXVkhWbUZET1hBNFFtbGhTbTlLYURkdFNVZElNd3ByZEdoWllreGliMG81Tm5kTmNqQjNRMmRaU1V0dldrbDZhakJGUVhkTlJGcDNRWGRhUVVsM1pIcFRVVU42UjBoUldWcEhiVWhvWnpablJFczFSVGhaQ21sS1VVWTVkalY0ZEd0aFpUaE1TRVZ6TlZJNWFsTkxiMk5WTWxKeU9UWlBkemsxV0UxMFFuTkJha0l6VjA5M00wVlplVUozZG1RM1ozUnJaRkpzZGpNS2VVOVRLM0pIT0ZoVWRWWTRRMlE0Vm0xYWRXZEpiVWQyU0VkclZYWmFSMk15VW5Ca1pGVlNlSFpKUVQwS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}]},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"sjcR/i/ApfmFg5Ibrh+VIujPQtxVVbtZX86KKa6jRaA="},"signature":"MEYCIQCUJ6l4L1PDcluY9vxjgovhaGCb/aAiXJOETvJeMccsQAIhAPIgEcZ8frcLd5btHuxhy/0g30gGPppWn9L98c/rNam8"}}
1
+ {"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"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"},"tlogEntries":[{"logIndex":"3011879914","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1790742758","inclusionPromise":{"signedEntryTimestamp":"MEYCIQDjTQOKpOyWXS+YeLu017nnSvI0WS/XsM0j08KYkKXH0gIhAPsvJhuZj7+PRTmgCKYWWfHNTM+6f8x2eXlx+LS9gQp3"},"inclusionProof":{"logIndex":"2889975652","rootHash":"3+4boixF1G5EYQRzohPD2TVxgrrclhWTN4NeQvsMwpc=","treeSize":"2889976090","hashes":["4nXilzny8HLJ+ItBQfdURoytslKlGh9odRaXrlYVBXs=","FNiG0RLBGozDW6vcd7owvCBAfRsxgQEqua21FHqbV58=","TUNGmtZ2bMnPKTEaO51Yyacm7o5/CDPhINA5JW31KK4=","bHN1edomfS1nNOa5CX5C4N7Z4Gibx/rBzubc3jMQMaw=","actiOdAMbm+TyI81iAjKCfqrdsdpgllIsxHBV8KAPag=","4plCyNWokw6HcZafd4367Zo7KuwlQVXTStUEf498is8=","jfHbTu9Hn2ZiRTf5xkGNuEx/ht2+cUaSGaXt+iQGoI0=","t2hJ2f+CHt1x+18YW5kBQNMVGZgQkrW4sSiLRTmBFFA=","ufbi6PlYmP8wyG20t2bvp6hKF9rWwViAv/O6Dg9vxSE=","f5jYTPysJsRYDdPE4aRGkZ5BEw2U0rtkQpSPqRIU3lo=","osL6zeyDPJK0p32a9qw8941kZzdJprRs0U7UXfIkRVY=","il+aUw1fjU/3lNdvIll4Dn3CnQxIBnZMYKl/a22TuQo=","/ypiyDFuTCzVxDzLi3dwoeo5JFSyAmpukspZgaeKvSA=","S0F3rKdZXA/JqSkyOrtegIjjIFCJOYs1HnBajhvmywo=","/Tz8vh5sB85CyCunbqF0LbvXs2qKh5ZJbYldt93GyjU=","4lYk7cX8PszZLoyQMWjMDB1BOBn4f7hehtFiHo92e5Y=","ttpxd0TJprOUtb/8Wf5DeIzwNtUw72Q0YnXE2LFMIZo=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2889976090\n3+4boixF1G5EYQRzohPD2TVxgrrclhWTN4NeQvsMwpc=\n\n— rekor.sigstore.dev wNI9ajBEAiBwe4wqAz9+DJONEcipd9nQce4V6Ab9gce2jAApv112YQIgYOpaXvOnRVnTgycRzTOKjNuDCzGfA5vh31dasHSxzsE=\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJkNTY2NzEwNTc0NmVhOWI5NTcwNGZlNDYyNTA4ZGM5ZTgyZTMwNWM1NmVlMmJkZTQwZTdkYTdhMDQwZThjOWRhIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJRkdUcUgvUHpqU0VKa3pHUEZESmZ1WWE0dHd6bGZmS2l2eE9henBVTE8xTkFpQjd4ditZTzBnUWdiamJFRlVVUnFNSnY5c3hucDNoYnZja3FjOW0zR1ZFTXc9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaEVWRU5EUW5CUFowRjNTVUpCWjBsVllVcHRjSEozYlM5aUszWmpMMDkwYzFsRFNsaDFWR1JKVTFKemQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlVVFhkTlJGRjZUV3BOTTFkb1kwNU5hbGwzVDFSTmQwMUVVVEJOYWswelYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVUyWmtWalVqUnpiek0wZUdkTmEyb3hWR1J3YzJ4Q016TnVhR2hJUTJ4WFNETkliMkVLWkcxQlJtNVdhREJWVlRKck9EQnRURXcwVm5kVkwwMVVTR2s1ZUV3M1IxaFBLMk5QVjNOTk1IUm9kR0pNYXpCeFRUWlBRMEppU1hkbloxZDFUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZwWjJsQkNsVXdPRzlGZWt3elN6TTVOVlpuTW1KV1VrVjVVbEJSZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDFwbldVUldVakJTUVZGSUwwSkdkM2RYYjFwWllVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERKT2RtTnRUbWhNVjBad1RESk9iQXBaVjNkMlRHMWtjR1JIYURGWmFUa3pZak5LY2xwdGVIWmtNMDEyWTIxV2MxcFhSbnBhVXpGcVdWYzFhMkZYVW1oa1IxVjFaVmN4YzFGSVNteGFiazEyQ21GSFZtaGFTRTEyWWxkR2NHSnFRVFZDWjI5eVFtZEZSVUZaVHk5TlFVVkNRa04wYjJSSVVuZGplbTkyVEROU2RtRXlWblZNYlVacVpFZHNkbUp1VFhVS1dqSnNNR0ZJVm1sa1dFNXNZMjFPZG1KdVVteGlibEYxV1RJNWRFMUNPRWREYVhOSFFWRlJRbWMzT0hkQlVVbEZSVmhrZG1OdGRHMWlSemt6V0RKU2NBcGpNMEpvWkVkT2IwMUVXVWREYVhOSFFWRlJRbWMzT0hkQlVVMUZTMFJDYWs1VVVtbFBSMGsxVGxSV2FscHRTbWxPZWxacVRVUmpNRnBxV1RWT2VtY3pDbHBVWXpWUFYxVjNUbXBaTkZwSFJUSlpla2wzU2tGWlMwdDNXVUpDUVVkRWRucEJRa0pCVVZkUk1sWm9Za05DZVZwWGVHeFpXRTVzU1VkT2FHSnRVbkFLV2tkR01GcFVRV0pDWjI5eVFtZEZSVUZaVHk5TlFVVkdRa0V4YW1JelNtcFpVekZvWVZNNWFscFhSbk5OUWpCSFEybHpSMEZSVVVKbk56aDNRVkZaUlFwRU0wcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRVGRDWjI5eVFtZEZSVUZaVHk5TlFVVkpRa013VFVzeWFEQmtTRUo2VDJrNGRtUkhPWEphVnpSMUNsbFhUakJoVnpsMVkzazFibUZZVW05a1Ywb3hZekpXZVZreU9YVmtSMVoxWkVNMWFtSXlNSGRoUVZsTFMzZFpRa0pCUjBSMmVrRkNRMUZTWVVSR2FHOEtaRWhTZDJONmIzWk1NbVJ3WkVkb01WbHBOV3BpTWpCMldUSTVlVmt5UlhSWlYydDJXVEpXYUdKRE9IVmFNbXd3WVVoV2FVd3paSFpqYlhSdFlrYzVNd3BqZVRsNVdsZDRiRmxZVG14TVYwNW9ZbTFTY0ZwSFJqQmFVelUxWWxkNFFXTnRWbTFqZVRsdldsZEdhMk41T1hSWlYyeDFUVVJuUjBOcGMwZEJVVkZDQ21jM09IZEJVVzlGUzJkM2IwMUhUVEZPUjBrMFdXcHJNVTVYVG0xWmJVa3pUbGROZDA1NlVtMU9hbXN6VDBSa2JFNTZhelZhVkVFeVRtcG9hMWxVV21vS1RXcEJaRUpuYjNKQ1owVkZRVmxQTDAxQlJVeENRVGhOUkZka2NHUkhhREZaYVRGdllqTk9NRnBYVVhkTlFWbExTM2RaUWtKQlIwUjJla0ZDUkVGUmFRcEVRMEp2WkVoU2QyTjZiM1pNTW1Sd1pFZG9NVmxwTldwaU1qQjJXVEk1ZVZreVJYUlpWMnQyV1RKV2FHSkVRVFJDWjI5eVFtZEZSVUZaVHk5TlFVVk9Da0pEYjAxTFJFSnFUbFJTYVU5SFNUVk9WRlpxV20xS2FVNTZWbXBOUkdNd1dtcFpOVTU2WnpOYVZHTTFUMWRWZDA1cVdUUmFSMFV5V1hwSmQwaDNXVXNLUzNkWlFrSkJSMFIyZWtGQ1JHZFJVa1JCT1hsYVYxcDZUREpvYkZsWFVucE1NakZvWVZjMGQwZG5XVXRMZDFsQ1FrRkhSSFo2UVVKRWQxRk5SRUZ2ZUFwTlZHdDRUbFJWTUU1VWEzcE5RM05IUTJselIwRlJVVUpuTnpoM1FWSkJSVWhSZDJKaFNGSXdZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTWs1MkNtTnRUbWhNVjBad1RVSm5SME5wYzBkQlVWRkNaemM0ZDBGU1JVVkRaM2RKVG5wSk5VNTZaelJPYWtGM1lVRlpTMHQzV1VKQ1FVZEVkbnBCUWtWblVtRUtSRVpvYjJSSVVuZGplbTkyVERKa2NHUkhhREZaYVRWcVlqSXdkbGt5T1hsWk1rVjBXVmRyZGxreVZtaGlRemgxV2pKc01HRklWbWxNTTJSMlkyMTBiUXBpUnprelkzazVlVnBYZUd4WldFNXNURmRPYUdKdFVuQmFSMFl3V2xNMU5XSlhlRUZqYlZadFkzazViMXBYUm10amVUbDBXVmRzZFUxRVowZERhWE5IQ2tGUlVVSm5OemgzUVZKTlJVdG5kMjlOUjAweFRrZEpORmxxYXpGT1YwNXRXVzFKTTA1WFRYZE9lbEp0VG1wck0wOUVaR3hPZW1zMVdsUkJNazVxYUdzS1dWUmFhazFxUVdoQ1oyOXlRbWRGUlVGWlR5OU5RVVZWUWtKTlRVVllaSFpqYlhSdFlrYzVNMWd5VW5Cak0wSm9aRWRPYjAxR1VVZERhWE5IUVZGUlFncG5OemgzUVZKVlJWSm5lRVZoU0ZJd1kwaE5Oa3g1T1c1aFdGSnZaRmRKZFZreU9YUk1NazUyWTIxT2FFeFhSbkJNTWs1c1dWZDNkbGxYVGpCaFZ6bDFDbU41T1hsa1Z6VjZUSHBOTWs1cVdUUk9hbEY2VGtSVmQwd3lSakJrUjFaMFkwaFNla3g2UlhkR2QxbExTM2RaUWtKQlIwUjJla0ZDUm1kUlNrUkJaSGNLWTIxc01sbFlVbXhOUkZsSFEybHpSMEZSVVVKbk56aDNRVkpuUlV0QmQyMWpiVlozWW5wd2FtSXpTbXBaVXpGb1lWTTVhbHBYUm5OUGJrcHNXbXB3ZVFwYVYxcDZUREpvYkZsWFVucE1NakZvWVZjMGQyZFpiMGREYVhOSFFWRlJRakZ1YTBOQ1FVbEZaa0ZTTmtGSVowRmtaMFJrVUZSQ2NYaHpZMUpOYlUxYUNraG9lVnBhZW1ORGIydHdaWFZPTkRoeVppdElhVzVMUVV4NWJuVnFaMEZCUVdGRWQyeG5TbGhCUVVGRlFYZENTRTFGVlVOSlVVUTFXV3hEZEV4MmJtUUtWMnB2VDFWVE9EbEhaR2szVUZaWmNqSjNXRzVsTjJwVmVuTjBkbVJFVGtwamQwbG5RakZNYzJScmRtMVNNakoyUkhWamMwdFZlbEJVWlRSYVNEZG5jZ28xU1RoaVZqZDJjRGwyTW0xSlNrVjNRMmRaU1V0dldrbDZhakJGUVhkTlJHRkJRWGRhVVVsNFFVbDZVbGxJTjNsbVVuaGFialJGTm1WRlVra3llbU5KQ21OdE1ITkpXSGxGY0RsR2NIUldaR3h3TmpCU1ZYbElXWEJsYldaT2EzbzRiVmxtZFRaWFVIRlFaMGwzVGt4UWRtRnRWalJQT1VNd2RFVldja0pKU0ZrS1F6TXJLMjV6Y2xjM1oyWTNkVWxLV2tzeVpXVjFiVUp5SzBoeU4ybzVXWFZSZFdGc1ZGQnpOMGhZUW5rS0xTMHRMUzFGVGtRZ1EwVlNWRWxHU1VOQlZFVXRMUzB0TFFvPSJ9fX19"}]},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"1WZxBXRuqblXBP5GJQjcnoLjBcVu4r3kDn2noEDoydo="},"signature":"MEQCIFGTqH/PzjSEJkzGPFDJfuYa4twzlffKivxOazpULO1NAiB7xv+YO0gQgbjbEFUURqMJv9sxnp3hbvckqc9m3GVEMw=="}}