@corca-org/ceal-host-linux-arm64 1.0.16 → 1.0.17
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/bin/ceal-host +0 -0
- package/libexec/ceal-host/claude-hook.mjs +75 -157
- package/libexec/ceal-host/claude-invocation-authentication.mjs +74 -159
- package/libexec/ceal-host/claude-producer.mjs +74 -159
- package/libexec/ceal-host/codex-hook.mjs +94 -277
- package/libexec/ceal-host/codex-invocation-authentication.mjs +87 -166
- package/libexec/ceal-host/codex-producer.mjs +87 -166
- package/libexec/ceal-host/control.mjs +102 -181
- package/libexec/ceal-host/relay.mjs +103 -172
- package/package.json +1 -1
- package/share/ceal-host/bundle-manifest.json +12 -12
- package/share/ceal-host/bundle-manifest.sigstore.json +1 -1
|
@@ -212,7 +212,7 @@ var CEAL_GATEWAY_DERIVED_STORE_FAILURE_CLASSES = vocabulary(["storage_unavailabl
|
|
|
212
212
|
var CEAL_POLICY_DECISIONS = vocabulary(["allowed", "denied", "not_evaluated"]);
|
|
213
213
|
var CEAL_CONNECTOR_ROUTE_PHASES = vocabulary(["scope_observation", "target_selection", "route_resolution"]);
|
|
214
214
|
var CEAL_CONNECTOR_ROUTE_CAUSES = vocabulary(["provider_throttled", "provider_unavailable", "binding_invalid", "scope_limit_exceeded"]);
|
|
215
|
-
var CEAL_WRITE_SOURCE_KINDS = vocabulary(["authenticated_registered_client", "
|
|
215
|
+
var CEAL_WRITE_SOURCE_KINDS = vocabulary(["authenticated_registered_client", "provider_authenticated_event"]);
|
|
216
216
|
var CEAL_REFRESH_DELIVERIES = vocabulary(["initial", "recovery", "replay", "terminal_failure", "recovery_unavailable"]);
|
|
217
217
|
var CEAL_CLIENT_OPERATIONS = vocabulary(["handshake", "discover", "call", "readback"]);
|
|
218
218
|
var CEAL_WRITE_IDEMPOTENCY_POSTURES = vocabulary(["required", "optional", "not_required"]);
|
|
@@ -365,6 +365,7 @@ var CEAL_OPERATION_WITHHELD_CAUSES = vocabulary(["provider_permission", "access_
|
|
|
365
365
|
// packages/ceal-client-protocol/src/operation-contract-types.ts
|
|
366
366
|
var CEAL_JSON_SCHEMA_2020_12 = "https://json-schema.org/draft/2020-12/schema";
|
|
367
367
|
var CEAL_OPERATION_ERROR_SCHEMA_VERSION = "ceal.operation_error.v1";
|
|
368
|
+
var CEAL_ARTIFACT_STAGE_TERMINALS = vocabulary(["chunk_accepted", "artifact_ready", "idempotency_replayed"]);
|
|
368
369
|
var CEAL_RETRY_AFTER_MAX_MS = 60 * 60 * 1e3;
|
|
369
370
|
var CEAL_JSON_SCHEMA_TYPES = vocabulary(["object", "array", "string", "integer", "number", "boolean", "null"]);
|
|
370
371
|
var OBSERVATION_POSTURES = vocabulary(["direct_readback", "approved_no_readback", "operator_mediated", "excluded"]);
|
|
@@ -738,9 +739,6 @@ var CEAL_OPERATION_AUTHORITY_POLICY_KEYS = Object.freeze(["access_group", "insta
|
|
|
738
739
|
var MAX_OPERATION_INPUT_RESOLVER_BINDINGS = 96;
|
|
739
740
|
var CEAL_OPERATION_DESCRIPTOR_REQUIRED_ENVELOPE_KEYS = Object.freeze(["schema_version", "id", "input_contract", "result_contract", "policy"]);
|
|
740
741
|
var CEAL_OPERATION_DESCRIPTOR_OPTIONAL_ENVELOPE_KEYS = Object.freeze(["input_resolution", "summary"]);
|
|
741
|
-
var CEAL_OPERATION_RESULT_KEYS = vocabulary(["ok", "operation_id", "operation_receipt", "schema_version", "value"]);
|
|
742
|
-
var CEAL_OPERATION_COMPACT_RESULT_KEYS = vocabulary(["ok", "operation_evidence", "operation_id", "schema_version", "value"]);
|
|
743
|
-
var CEAL_OPERATION_RESULT_OPTIONAL_KEYS = vocabulary(["model_disclosure", "result_complete", "resume"]);
|
|
744
742
|
|
|
745
743
|
// packages/ceal-client-protocol/src/operation-catalog.ts
|
|
746
744
|
var CEAL_OPERATION_CATALOG_SCHEMA_VERSION = "ceal.catalog.v3";
|
|
@@ -804,10 +802,6 @@ var CEAL_SCHEMA_LITERALS = [
|
|
|
804
802
|
"ceal.host_observation.v1",
|
|
805
803
|
"ceal.host_registration_request.v1",
|
|
806
804
|
"ceal.host_registration_result.v1",
|
|
807
|
-
"ceal.leased-resource-stream.v1",
|
|
808
|
-
"ceal.leased_consumer_attachment_stream_frame.v1",
|
|
809
|
-
"ceal.leased_consumer_attachment_stream_request.v1",
|
|
810
|
-
"ceal.leased_consumer_attachment_stream_transport.v1",
|
|
811
805
|
"ceal.operation_descriptor.v1",
|
|
812
806
|
"ceal.operation_error.v1",
|
|
813
807
|
"ceal.operation_failure.v1",
|
|
@@ -833,12 +827,6 @@ var CEAL_SCHEMA_LITERAL_SET = new Set(CEAL_SCHEMA_LITERALS);
|
|
|
833
827
|
// packages/ceal-client-protocol/src/bounded-series.ts
|
|
834
828
|
import { join } from "node:path";
|
|
835
829
|
var CEAL_BOUNDED_SERIES_CATALOG = Object.freeze({
|
|
836
|
-
usage_record: (root) => join(root, "run-usage.jsonl"),
|
|
837
|
-
control_commit: (root) => join(root, "control-auto-commit.jsonl"),
|
|
838
|
-
engagement_signal: (root) => join(root, "runtime-state", "slack-feedback.jsonl"),
|
|
839
|
-
runtime_error: (root) => join(root, "runtime-state", "runtime-errors.jsonl"),
|
|
840
|
-
turn_bridge_request: (root) => join(root, ".ceal", "turn-bridge", "requests.jsonl"),
|
|
841
|
-
thread_run_events: (root) => join(root, "run-events.jsonl"),
|
|
842
830
|
bounded_store_sidecar: (root) => `${root}.jsonl`,
|
|
843
831
|
gateway_audit_archive: (root) => `${root}.jsonl`,
|
|
844
832
|
gateway_access_group_connector_control_audit: (root) => `${root}.audit.jsonl`,
|
|
@@ -872,35 +860,6 @@ var CEAL_HOST_INSTALLATION_REF_PATTERN = new RegExp(`^host-installation:${CEAL_L
|
|
|
872
860
|
var CEAL_HOST_SOURCE_REF_PATTERN = new RegExp(`^host-source:${CEAL_LOWERCASE_UUID_PATTERN}$`, "u");
|
|
873
861
|
var CEAL_HOST_ACCESS_TOKEN_PATTERN = /^ceal_host_[A-Za-z0-9_-]{43}$/u;
|
|
874
862
|
|
|
875
|
-
// packages/ceal-client-protocol/src/agent-session-handoff.ts
|
|
876
|
-
var CEAL_AGENT_ADMISSION_PHASES = vocabulary([
|
|
877
|
-
"incumbent_admitted",
|
|
878
|
-
"incumbent_draining",
|
|
879
|
-
"drained",
|
|
880
|
-
"candidate_admitted",
|
|
881
|
-
"candidate_draining",
|
|
882
|
-
"rollback_admitted"
|
|
883
|
-
]);
|
|
884
|
-
var CEAL_AGENT_SERVICE_SESSION_RECORD_KEYS = vocabulary([
|
|
885
|
-
"admission_fence",
|
|
886
|
-
"admission_state",
|
|
887
|
-
"admission_state_generation",
|
|
888
|
-
"bearer",
|
|
889
|
-
"consumer_ref",
|
|
890
|
-
"credential_generation",
|
|
891
|
-
"expires_at",
|
|
892
|
-
"gateway_instance",
|
|
893
|
-
"gateway_origin",
|
|
894
|
-
"gateway_serving_generation",
|
|
895
|
-
"issued_at",
|
|
896
|
-
"record_sha256",
|
|
897
|
-
"renew_after",
|
|
898
|
-
"renew_by",
|
|
899
|
-
"schema_version",
|
|
900
|
-
"session_revision"
|
|
901
|
-
]);
|
|
902
|
-
var CEAL_AGENT_SESSION_COMMIT_KEYS = vocabulary(["attempt_ref", "expected_session_revision", "session_revision"]);
|
|
903
|
-
|
|
904
863
|
// packages/ceal-client-protocol/src/operation-result-completeness.ts
|
|
905
864
|
var CEAL_READ_VALUE_CONTINUATION_KEYS = vocabulary(["continuation", "continuation_ref", "next_cursor"]);
|
|
906
865
|
|
|
@@ -911,7 +870,9 @@ var CEAL_OPERATION_INVOKE_COMMAND = "invoke";
|
|
|
911
870
|
var CEAL_OPERATION_INPUT_FLAG = "--input";
|
|
912
871
|
var CEAL_OPERATION_ID_PLACEHOLDER = "<operation-id>";
|
|
913
872
|
var CEAL_OPERATION_INPUT_PLACEHOLDER = "<json-object>";
|
|
914
|
-
var
|
|
873
|
+
var MODEL_INVOCATION_BASE_ARGUMENTS = [CEAL_OPERATION_INVOKE_COMMAND, CEAL_OPERATION_ID_PLACEHOLDER].join(" ");
|
|
874
|
+
var CEAL_MODEL_INVOCATION_ARGUMENTS = [MODEL_INVOCATION_BASE_ARGUMENTS, CEAL_OPERATION_INPUT_FLAG, shellSingleQuoted(CEAL_OPERATION_INPUT_PLACEHOLDER)].join(" ");
|
|
875
|
+
var CEAL_MODEL_INPUT_SOURCE_GUIDANCE = `For caller-owned fields, add ${CEAL_OPERATION_INPUT_FLAG} ${shellSingleQuoted(CEAL_OPERATION_INPUT_PLACEHOLDER)}. Use inline JSON for short input; for longer or generated input, put exactly one JSON object in a caller-owned regular non-symlink UTF-8 JSON file and pass --input @path; relative paths resolve from the command working directory.`;
|
|
915
876
|
function shellSingleQuoted(value) {
|
|
916
877
|
return `'${value.replaceAll("'", "'\\''")}'`;
|
|
917
878
|
}
|
|
@@ -943,19 +904,73 @@ var CEAL_VERIFIED_ARTIFACT_DESCRIPTOR_JSON_SCHEMA = Object.freeze({
|
|
|
943
904
|
}
|
|
944
905
|
});
|
|
945
906
|
|
|
907
|
+
// packages/ceal-client-protocol/src/provider-operation-vocabulary.ts
|
|
908
|
+
var CEAL_FILE_TYPE_FAMILIES = vocabulary(["all", "image", "pdf"]);
|
|
909
|
+
var CEAL_GITHUB_ISSUE_STATES = vocabulary(["open", "closed", "all"]);
|
|
910
|
+
var CEAL_NOTION_UPDATABLE_BLOCK_TYPES = vocabulary([
|
|
911
|
+
"paragraph",
|
|
912
|
+
"heading_1",
|
|
913
|
+
"heading_2",
|
|
914
|
+
"heading_3",
|
|
915
|
+
"bulleted_list_item",
|
|
916
|
+
"numbered_list_item",
|
|
917
|
+
"to_do",
|
|
918
|
+
"code"
|
|
919
|
+
]);
|
|
920
|
+
var CEAL_NOTION_NEUTRAL_TYPES = vocabulary([
|
|
921
|
+
"text",
|
|
922
|
+
"number",
|
|
923
|
+
"boolean",
|
|
924
|
+
"date",
|
|
925
|
+
"select",
|
|
926
|
+
"multi_select",
|
|
927
|
+
"people",
|
|
928
|
+
"url",
|
|
929
|
+
"email",
|
|
930
|
+
"phone",
|
|
931
|
+
"unsupported"
|
|
932
|
+
]);
|
|
933
|
+
var CEAL_NOTION_IDENTITY_GAP_REASONS = vocabulary([
|
|
934
|
+
"identity_unavailable",
|
|
935
|
+
"identity_stale",
|
|
936
|
+
"identity_ambiguous",
|
|
937
|
+
"identity_revoked",
|
|
938
|
+
"identity_unlinked"
|
|
939
|
+
]);
|
|
940
|
+
var CEAL_NOTION_STRING_VALUE_TYPES = vocabulary(["text", "select", "url", "email", "phone"]);
|
|
941
|
+
|
|
942
|
+
// packages/ceal-client-protocol/src/opaque-reference.ts
|
|
943
|
+
var CEAL_OPAQUE_HANDLE_KINDS = vocabulary(["target", "message", "thread", "artifact", "document", "block", "object"]);
|
|
944
|
+
var CEAL_OPAQUE_REF_KINDS = vocabulary([...CEAL_OPAQUE_HANDLE_KINDS, "result", "operation-receipt", "reply-receipt", "field", "notion-data-source"]);
|
|
945
|
+
|
|
946
946
|
// packages/ceal-client-protocol/src/bare-document.ts
|
|
947
947
|
var REQUIRED_FIELDS = CEAL_CLIENT_WIRE_CONTRACT.command_response.bare_document_fields;
|
|
948
948
|
var OPTIONAL_FIELDS = CEAL_CLIENT_WIRE_CONTRACT.command_response.bare_document_optional_fields;
|
|
949
949
|
|
|
950
|
-
// packages/ceal-client-protocol/src/
|
|
951
|
-
var
|
|
952
|
-
var
|
|
953
|
-
var
|
|
954
|
-
var
|
|
950
|
+
// packages/ceal-client-protocol/src/resource-row.ts
|
|
951
|
+
var CEAL_RESOURCE_SEARCH_ORDERS = vocabulary(["relevance", "modified", "viewed", "created"]);
|
|
952
|
+
var CEAL_RESOURCE_SEARCH_DIRECTIONS = vocabulary(["ascending", "descending"]);
|
|
953
|
+
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"]);
|
|
954
|
+
var CEAL_RESOURCE_TIME_BASES = vocabulary(["created", "modified", "viewed"]);
|
|
955
955
|
var CEAL_REPOSITORY_VISIBILITIES = vocabulary(["public", "private", "internal"]);
|
|
956
|
-
var
|
|
957
|
-
var
|
|
958
|
-
|
|
956
|
+
var CEAL_ACTIVITY_V3_KINDS = vocabulary(["authored", "edited", "messaged", "responded"]);
|
|
957
|
+
var CEAL_ACTIVITY_TIMESTAMP_BASES = vocabulary([
|
|
958
|
+
"message_created",
|
|
959
|
+
"commit_authored",
|
|
960
|
+
"resource_created",
|
|
961
|
+
"review_submitted",
|
|
962
|
+
"comment_created",
|
|
963
|
+
"event_start",
|
|
964
|
+
"all_day_start",
|
|
965
|
+
"file_created",
|
|
966
|
+
"file_modified",
|
|
967
|
+
"file_modified_by_me",
|
|
968
|
+
"file_viewed_by_me",
|
|
969
|
+
"page_created",
|
|
970
|
+
"page_last_edited",
|
|
971
|
+
"resource_modified"
|
|
972
|
+
]);
|
|
973
|
+
var CEAL_ACTIVITY_CONNECTOR_KINDS = vocabulary(["slack", "github", "google-calendar", "google-drive", "notion"]);
|
|
959
974
|
var CEAL_ACTIVITY_GAP_CODES = vocabulary([
|
|
960
975
|
"provider_page_budget",
|
|
961
976
|
"call_deadline",
|
|
@@ -966,8 +981,6 @@ var CEAL_ACTIVITY_GAP_CODES = vocabulary([
|
|
|
966
981
|
"unsupported_event_kind",
|
|
967
982
|
"direct_messages_excluded"
|
|
968
983
|
]);
|
|
969
|
-
var CEAL_ACTIVITY_CONNECTOR_KINDS = vocabulary(["slack", "github", "google-calendar", "google-drive", "notion"]);
|
|
970
|
-
var CEAL_ACTIVITY_COVERAGE_STATUSES = vocabulary(["complete_for_target", "continuation_required", "blocked"]);
|
|
971
984
|
var CEAL_ACTIVITY_EVENT_KINDS = vocabulary([
|
|
972
985
|
"slack.message",
|
|
973
986
|
"slack.reply",
|
|
@@ -1008,73 +1021,6 @@ var CEAL_ACTIVITY_EVENT_TIMESTAMP_BASIS_MAP = Object.freeze({
|
|
|
1008
1021
|
"notion.page.created": "page_created",
|
|
1009
1022
|
"notion.page.edited": "page_last_edited"
|
|
1010
1023
|
});
|
|
1011
|
-
var CEAL_ACTIVITY_TIMESTAMP_BASES = vocabulary([
|
|
1012
|
-
"message_created",
|
|
1013
|
-
"commit_authored",
|
|
1014
|
-
"resource_created",
|
|
1015
|
-
"review_submitted",
|
|
1016
|
-
"comment_created",
|
|
1017
|
-
"event_start",
|
|
1018
|
-
"all_day_start",
|
|
1019
|
-
"file_created",
|
|
1020
|
-
"file_modified",
|
|
1021
|
-
"file_modified_by_me",
|
|
1022
|
-
"file_viewed_by_me",
|
|
1023
|
-
"page_created",
|
|
1024
|
-
"page_last_edited",
|
|
1025
|
-
"resource_modified"
|
|
1026
|
-
]);
|
|
1027
|
-
var CEAL_ACTIVITY_V3_KINDS = vocabulary(["authored", "edited", "messaged", "responded"]);
|
|
1028
|
-
var CEAL_RESOURCE_TIME_BASES = vocabulary(["created", "modified", "viewed"]);
|
|
1029
|
-
var CEAL_RESOURCE_SEARCH_ORDERS = vocabulary(["relevance", "modified", "viewed", "created"]);
|
|
1030
|
-
var CEAL_RESOURCE_SEARCH_DIRECTIONS = vocabulary(["ascending", "descending"]);
|
|
1031
|
-
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"]);
|
|
1032
|
-
var CEAL_ARTIFACT_STAGE_TERMINALS = vocabulary(["chunk_accepted", "artifact_ready", "idempotency_replayed"]);
|
|
1033
|
-
var CEAL_READ_ITEM_KINDS = vocabulary(["conversation", "identity", "usergroup", "message", "file", "document"]);
|
|
1034
|
-
var CEAL_LEASED_MESSAGE_SEARCH_COMPLETENESS = vocabulary(["complete", "continuation_available", "truncated"]);
|
|
1035
|
-
var CEAL_OPAQUE_HANDLE_KINDS = vocabulary(["target", "message", "thread", "artifact", "document", "block", "object"]);
|
|
1036
|
-
var CEAL_OPAQUE_REF_KINDS = vocabulary([...CEAL_OPAQUE_HANDLE_KINDS, "result", "operation-receipt", "reply-receipt", "field", "notion-data-source"]);
|
|
1037
|
-
var CEAL_WRITE_OBJECT_KINDS = vocabulary(["document", "comment", "cell_range"]);
|
|
1038
|
-
var CEAL_CONVERSATION_KINDS = vocabulary(["channel", "dm", "group"]);
|
|
1039
|
-
var CEAL_FILE_TYPE_FAMILIES = vocabulary(["all", "image", "pdf"]);
|
|
1040
|
-
var CEAL_GITHUB_ISSUE_STATES = vocabulary(["open", "closed", "all"]);
|
|
1041
|
-
var CEAL_NOTION_UPDATABLE_BLOCK_TYPES = vocabulary([
|
|
1042
|
-
"paragraph",
|
|
1043
|
-
"heading_1",
|
|
1044
|
-
"heading_2",
|
|
1045
|
-
"heading_3",
|
|
1046
|
-
"bulleted_list_item",
|
|
1047
|
-
"numbered_list_item",
|
|
1048
|
-
"to_do",
|
|
1049
|
-
"code"
|
|
1050
|
-
]);
|
|
1051
|
-
var CEAL_NOTION_NEUTRAL_TYPES = vocabulary([
|
|
1052
|
-
"text",
|
|
1053
|
-
"number",
|
|
1054
|
-
"boolean",
|
|
1055
|
-
"date",
|
|
1056
|
-
"select",
|
|
1057
|
-
"multi_select",
|
|
1058
|
-
"people",
|
|
1059
|
-
"url",
|
|
1060
|
-
"email",
|
|
1061
|
-
"phone",
|
|
1062
|
-
"unsupported"
|
|
1063
|
-
]);
|
|
1064
|
-
var CEAL_NOTION_IDENTITY_GAP_REASONS = vocabulary([
|
|
1065
|
-
"identity_unavailable",
|
|
1066
|
-
"identity_stale",
|
|
1067
|
-
"identity_ambiguous",
|
|
1068
|
-
"identity_revoked",
|
|
1069
|
-
"identity_unlinked"
|
|
1070
|
-
]);
|
|
1071
|
-
var CEAL_NOTION_STRING_VALUE_TYPES = vocabulary(["text", "select", "url", "email", "phone"]);
|
|
1072
|
-
var CEAL_UNREAD_REASONS = vocabulary(["blocked", "unavailable", "too_large", "unsupported", "download_failed", "permission_denied"]);
|
|
1073
|
-
var CEAL_PLAN_ITEM_STATUSES = vocabulary(["pending", "active", "completed"]);
|
|
1074
|
-
var CEAL_FINAL_PRESENTATION_INTENTS = vocabulary(["final", "stop", "transient_notice"]);
|
|
1075
|
-
var CEAL_PRESENTATION_INTENTS = vocabulary(["progress", ...CEAL_FINAL_PRESENTATION_INTENTS]);
|
|
1076
|
-
|
|
1077
|
-
// packages/ceal-client-protocol/src/resource-row.ts
|
|
1078
1024
|
var CEAL_DATED_NOTE_BASES = vocabulary(["recording", "calendar_event", "created_time"]);
|
|
1079
1025
|
var CEAL_DATED_NOTE_TRANSCRIPT_STATES = vocabulary(["present", "absent", "unestablished"]);
|
|
1080
1026
|
var CEAL_READ_SEARCH_COST_CLASSES = vocabulary(["native_index", "scan"]);
|
|
@@ -1159,17 +1105,6 @@ var CEAL_REFRESH_FAILURE_CODES = vocabulary([
|
|
|
1159
1105
|
"refresh_recovery_expired"
|
|
1160
1106
|
]);
|
|
1161
1107
|
|
|
1162
|
-
// packages/ceal-client-protocol/src/leased-artifact-contract.ts
|
|
1163
|
-
var CEAL_LEASED_CONSUMER_ARTIFACT_CHUNK_MAX_BYTES = 12 * 1024;
|
|
1164
|
-
|
|
1165
|
-
// packages/ceal-client-protocol/src/leased-resource-stream.ts
|
|
1166
|
-
var CEAL_LEASED_CONSUMER_ATTACHMENT_STREAM_MAGIC = new Uint8Array([67, 69, 65, 76, 82, 83, 50, 0]);
|
|
1167
|
-
var CEAL_LEASED_CONSUMER_ATTACHMENT_STREAM_RECORD_PREFIX_BYTES = 8;
|
|
1168
|
-
var CEAL_LEASED_CONSUMER_ATTACHMENT_STREAM_MAX_HEADER_BYTES = 16 * 1024;
|
|
1169
|
-
var CEAL_LEASED_CONSUMER_ATTACHMENT_STREAM_CHUNK_BYTES = 64 * 1024;
|
|
1170
|
-
var CEAL_LEASED_CONSUMER_ATTACHMENT_STREAM_MAX_RECORD_BYTES = CEAL_LEASED_CONSUMER_ATTACHMENT_STREAM_RECORD_PREFIX_BYTES + CEAL_LEASED_CONSUMER_ATTACHMENT_STREAM_MAX_HEADER_BYTES + CEAL_LEASED_CONSUMER_ATTACHMENT_STREAM_CHUNK_BYTES;
|
|
1171
|
-
var CEAL_ATTACHMENT_UNREAD_REASONS = vocabulary(["blocked", "unavailable", "too_large", "unsupported", "download_failed", "digest_mismatch"]);
|
|
1172
|
-
|
|
1173
1108
|
// packages/ceal-client-protocol/src/request-validation-primitives.ts
|
|
1174
1109
|
import { createHash } from "node:crypto";
|
|
1175
1110
|
var DIGEST = /^[a-f0-9]{64}$/u;
|
|
@@ -1336,6 +1271,10 @@ var CEAL_REQUEST_RUN_BATCH_JSON_SCHEMA = {
|
|
|
1336
1271
|
};
|
|
1337
1272
|
|
|
1338
1273
|
// packages/ceal-client-protocol/src/host-observation.ts
|
|
1274
|
+
var CEAL_HOST_INPUT_KINDS = vocabulary(["human", "host_automatic"]);
|
|
1275
|
+
function isCealHostInputKind(value) {
|
|
1276
|
+
return typeof value === "string" && CEAL_HOST_INPUT_KINDS.some((kind) => kind === value);
|
|
1277
|
+
}
|
|
1339
1278
|
var CEAL_HOST_OBSERVATION_REF_PREFIX = "host-observation:";
|
|
1340
1279
|
function validateCealHostObservationDraft(value) {
|
|
1341
1280
|
const record6 = operationRecord(value, "Ceal Host observation draft is invalid.");
|
|
@@ -1392,12 +1331,6 @@ var OWNER_WRITE_STATES = Object.freeze(["attempt_started", "provider_acknowledge
|
|
|
1392
1331
|
var OWNER_EFFECT_STATES = Object.freeze(["none", "applied", "failed", "unknown", "reconciled"]);
|
|
1393
1332
|
var OWNER_RECEIPT_STATES = Object.freeze(["pending", "available", "failed", "unknown", "reconciled"]);
|
|
1394
1333
|
|
|
1395
|
-
// packages/ceal-client-protocol/src/thread-excerpt.ts
|
|
1396
|
-
var CEAL_THREAD_RECENT_WINDOW = 6;
|
|
1397
|
-
var CEAL_THREAD_LAST_APP_MESSAGES_WINDOW = 3;
|
|
1398
|
-
var CEAL_THREAD_OLDER_SUMMARY_WINDOW = 4;
|
|
1399
|
-
var CEAL_FED_THREAD_MESSAGE_LIMIT = CEAL_THREAD_RECENT_WINDOW + CEAL_THREAD_OLDER_SUMMARY_WINDOW + CEAL_THREAD_LAST_APP_MESSAGES_WINDOW;
|
|
1400
|
-
|
|
1401
1334
|
// packages/ceal-client-protocol/src/request-graph-readiness.ts
|
|
1402
1335
|
var REQUEST_GRAPH_PRODUCER_TO_APPEND_SCHEMA = {
|
|
1403
1336
|
type: "object",
|
|
@@ -1502,26 +1435,11 @@ function exactKeys(value, expected) {
|
|
|
1502
1435
|
}
|
|
1503
1436
|
|
|
1504
1437
|
// packages/ceal-client-protocol/src/client-result-materialization.ts
|
|
1438
|
+
var CEAL_UNREAD_REASONS = vocabulary(["blocked", "unavailable", "too_large", "unsupported", "download_failed", "permission_denied"]);
|
|
1505
1439
|
var CEAL_MODEL_VISIBLE_COMMAND_OUTPUT_MAX_BYTES = 32 * 1024;
|
|
1506
1440
|
var REQUIRED_FIELDS2 = Object.freeze(["schema_version", "operation_id"]);
|
|
1507
1441
|
var FIELDS = /* @__PURE__ */ new Set([...REQUIRED_FIELDS2, "read_argv", "local_result_root", "continue_argv", "model_disclosure", "item_read_argv"]);
|
|
1508
1442
|
|
|
1509
|
-
// packages/ceal-client-protocol/src/session-start-affordance.ts
|
|
1510
|
-
var CEAL_SESSION_ENTRY_INVOCATION = "ceal";
|
|
1511
|
-
var CEAL_LINK_RESOURCE_PRECEDENCE = `When the user asks to use Ceal or provides a link to information that may be available through installed organizational capabilities, run bare \`${CEAL_SESSION_ENTRY_INVOCATION}\`. The Host supplies the current user prompt without exposing it to the client command, and the Gateway returns the applicable entry in that one response. Treat a supplied link as a candidate Ceal resource rather than a public web-search target. Reach for a generic web fetch or web search only when the Gateway offered nothing.`;
|
|
1512
|
-
|
|
1513
|
-
// packages/ceal-client-protocol/src/conversation-contracts.ts
|
|
1514
|
-
var CEAL_APPROVAL_POLICY_KINDS = vocabulary(["requester_only", "named_users", "role_based"]);
|
|
1515
|
-
var CEAL_APPROVAL_TARGET_KINDS = vocabulary([
|
|
1516
|
-
"repo_change",
|
|
1517
|
-
"investigation",
|
|
1518
|
-
"skill_creation",
|
|
1519
|
-
"command_creation",
|
|
1520
|
-
"connector_creation",
|
|
1521
|
-
"generic"
|
|
1522
|
-
]);
|
|
1523
|
-
var CEAL_PROGRESS_PHASES = vocabulary(["request_review", "information_gathering", "work_execution", "result_check"]);
|
|
1524
|
-
|
|
1525
1443
|
// packages/ceal-client-protocol/src/gateway-cache-origin-validation.ts
|
|
1526
1444
|
var CEAL_MAX_CACHE_ORIGIN_AGE_MS = 30 * 24 * 60 * 60 * 1e3;
|
|
1527
1445
|
|
|
@@ -1911,13 +1829,13 @@ function validTurn(value) {
|
|
|
1911
1829
|
return exactOptional(value, ["local_session_ref", "local_turn_ref"], ["model", "observations"]) && safeRef(value.local_session_ref) && safeRef(value.local_turn_ref) && optionalText(value.model, 256) && validObservations(value.observations);
|
|
1912
1830
|
}
|
|
1913
1831
|
function validInput(value) {
|
|
1914
|
-
return exactOptional(value, ["local_session_ref", "local_turn_ref", "local_input_ref", "origin_input", "observations"], ["
|
|
1832
|
+
return exactOptional(value, ["local_session_ref", "local_turn_ref", "local_input_ref", "input_kind", "origin_input", "observations"], ["local_turn_aliases", "context_expires_at"]) && safeRef(value.local_session_ref) && safeRef(value.local_turn_ref) && safeRef(value.local_input_ref) && validInputObservations(value.observations) && isCealHostInputKind(value.input_kind) && typeof value.origin_input === "boolean" && validInputOptionals(value);
|
|
1915
1833
|
}
|
|
1916
1834
|
function validInputObservations(value) {
|
|
1917
1835
|
return validObservations(value) && Array.isArray(value) && value.filter((item) => record(item) && item.observation_kind === "prompt").length === 1;
|
|
1918
1836
|
}
|
|
1919
1837
|
function validInputOptionals(value) {
|
|
1920
|
-
return
|
|
1838
|
+
return optionalRefs(value.local_turn_aliases) && (value.context_expires_at === void 0 || timestamp(value.context_expires_at));
|
|
1921
1839
|
}
|
|
1922
1840
|
function validTerminal(value) {
|
|
1923
1841
|
return exactOptional(value, ["local_session_ref", "local_turn_ref", "terminal_state"], ["abort_reason", "duration_ms", "time_to_first_token_ms", "usage", "observations"]) && safeRef(value.local_session_ref) && safeRef(value.local_turn_ref) && validTerminalDisposition(value.terminal_state, value.abort_reason) && optionalNonNegative(value.duration_ms) && optionalNonNegative(value.time_to_first_token_ms) && (value.usage === void 0 || jsonValue(value.usage)) && validObservations(value.observations);
|
|
@@ -1928,9 +1846,6 @@ function validTerminalDisposition(state, reason) {
|
|
|
1928
1846
|
function validStatus(value) {
|
|
1929
1847
|
return exactOptional(value, ["status", "reason_code"], ["detail"]) && ["ready", "degraded", "stopping"].includes(String(value.status)) && safeRef(value.reason_code) && optionalText(value.detail, 4096);
|
|
1930
1848
|
}
|
|
1931
|
-
function validDecision(value) {
|
|
1932
|
-
return value === void 0 || record(value) && exactKeys2(value, ["decision", "approval_ref"]) && (value.decision === "approved" || value.decision === "denied") && safeRef(value.approval_ref);
|
|
1933
|
-
}
|
|
1934
1849
|
function optionalText(value, maxLength) {
|
|
1935
1850
|
return value === void 0 || typeof value === "string" && value.length > 0 && value.length <= maxLength;
|
|
1936
1851
|
}
|
|
@@ -2693,6 +2608,8 @@ var RelayGatewayBridge = class {
|
|
|
2693
2608
|
}
|
|
2694
2609
|
async deliverInput(state, input) {
|
|
2695
2610
|
const prepared = prepareInput(state, input, this.hostSourceRef);
|
|
2611
|
+
const priorRefusal = refusedUnboundInput(prepared.turn);
|
|
2612
|
+
if (priorRefusal !== void 0) return priorRefusal;
|
|
2696
2613
|
const outcome = await this.submit(prepared.submission);
|
|
2697
2614
|
if ("refusal" in outcome) {
|
|
2698
2615
|
if (outcome.refusal.definitive && prepared.turn !== void 0) await this.writeState({ ...state, turns: { ...state.turns, [prepared.refs.host_turn_ref]: { ...prepared.turn, input_refused: { code: outcome.refusal.code, message: outcome.refusal.message } } } });
|
|
@@ -2701,14 +2618,18 @@ var RelayGatewayBridge = class {
|
|
|
2701
2618
|
const acknowledgement2 = outcome.acknowledgement;
|
|
2702
2619
|
const nextTurn = bindInput(prepared, acknowledgement2.request_ref, input.submission_ref);
|
|
2703
2620
|
await this.writeState({ ...state, turns: { ...state.turns, [prepared.refs.host_turn_ref]: nextTurn } });
|
|
2704
|
-
|
|
2621
|
+
if (!bindsOriginInput(prepared)) return { status: "created" };
|
|
2622
|
+
const bindingRequestRef = nextTurn.request_ref ?? acknowledgement2.request_ref;
|
|
2623
|
+
const bindingPromptRef = nextTurn.prompt_ref ?? prepared.promptRef;
|
|
2624
|
+
const bindingInputRef = nextTurn.origin_host_input_ref ?? prepared.hostInputRef;
|
|
2625
|
+
const binding = { frame: structuredClone(input.frame), request_ref: bindingRequestRef, prompt_ref: bindingPromptRef, host_binding: {
|
|
2705
2626
|
host_source_ref: prepared.submission.identity.host_source_ref,
|
|
2706
2627
|
host_session_ref: prepared.submission.identity.host_session_ref,
|
|
2707
2628
|
host_turn_ref: prepared.submission.identity.host_turn_ref,
|
|
2708
|
-
host_input_ref:
|
|
2709
|
-
prompt_ref:
|
|
2629
|
+
host_input_ref: bindingInputRef,
|
|
2630
|
+
prompt_ref: bindingPromptRef
|
|
2710
2631
|
} };
|
|
2711
|
-
const context = createRelayRequestWorkContext({ request_ref:
|
|
2632
|
+
const context = createRelayRequestWorkContext({ request_ref: bindingRequestRef, host_binding: binding.host_binding });
|
|
2712
2633
|
try {
|
|
2713
2634
|
await this.onRequestBound(binding, context);
|
|
2714
2635
|
} catch (error) {
|
|
@@ -2728,6 +2649,7 @@ var RelayGatewayBridge = class {
|
|
|
2728
2649
|
const outcome = await this.submit({
|
|
2729
2650
|
identity: { host_source_ref: this.hostSourceRef, host_session_ref: refs.host_session_ref, host_turn_ref: refs.host_turn_ref },
|
|
2730
2651
|
host_input_ref: turn.origin_host_input_ref,
|
|
2652
|
+
input_kind: "host_automatic",
|
|
2731
2653
|
prompt_ref: turn.prompt_ref,
|
|
2732
2654
|
observations: payloadObservations(input.frame),
|
|
2733
2655
|
request_ref: turn.request_ref,
|
|
@@ -2789,9 +2711,9 @@ function prepareInput(state, input, hostSourceRef) {
|
|
|
2789
2711
|
const submission = compactSubmission({
|
|
2790
2712
|
identity: { host_source_ref: hostSourceRef, host_session_ref: refs.host_session_ref, host_turn_ref: refs.host_turn_ref },
|
|
2791
2713
|
host_input_ref: hostInputRef,
|
|
2714
|
+
input_kind: payloadInputKind(input.frame),
|
|
2792
2715
|
prompt_ref: promptRef,
|
|
2793
2716
|
observations,
|
|
2794
|
-
decision: payloadDecision(input.frame),
|
|
2795
2717
|
request_ref: turn?.request_ref,
|
|
2796
2718
|
submission_ref: input.submission_ref
|
|
2797
2719
|
});
|
|
@@ -2802,11 +2724,18 @@ function bindInput(prepared, requestRef, submissionRef) {
|
|
|
2802
2724
|
host_session_ref: prepared.refs.host_session_ref,
|
|
2803
2725
|
observations: prepared.turn?.observations ?? [],
|
|
2804
2726
|
submission_ref: prepared.turn?.submission_ref ?? submissionRef,
|
|
2805
|
-
request_ref: requestRef,
|
|
2806
|
-
prompt_ref: prepared.promptRef,
|
|
2727
|
+
request_ref: prepared.turn?.request_ref ?? requestRef,
|
|
2728
|
+
prompt_ref: prepared.turn?.prompt_ref ?? prepared.promptRef,
|
|
2807
2729
|
origin_host_input_ref: prepared.turn?.origin_host_input_ref ?? prepared.hostInputRef
|
|
2808
2730
|
};
|
|
2809
2731
|
}
|
|
2732
|
+
function refusedUnboundInput(turn) {
|
|
2733
|
+
if (turn?.request_ref !== void 0 || turn?.input_refused === void 0) return void 0;
|
|
2734
|
+
return { status: "refused", code: "origin_input_refused", message: `The input frame names a turn whose origin input was refused (${turn.input_refused.code}: ${turn.input_refused.message}).` };
|
|
2735
|
+
}
|
|
2736
|
+
function bindsOriginInput(prepared) {
|
|
2737
|
+
return prepared.turn?.request_ref === void 0 || prepared.turn.origin_host_input_ref === prepared.hostInputRef;
|
|
2738
|
+
}
|
|
2810
2739
|
function payloadRef(frame, key) {
|
|
2811
2740
|
const value = frame.payload[key];
|
|
2812
2741
|
if (typeof value !== "string" || !SAFE_REF4.test(value)) throw new TypeError("Host Relay frame reference is invalid.");
|
|
@@ -2820,16 +2749,17 @@ function payloadPromptDigest(frame) {
|
|
|
2820
2749
|
function payloadObservations(frame) {
|
|
2821
2750
|
return Array.isArray(frame.payload.observations) ? frame.payload.observations.filter(isObservation) : [];
|
|
2822
2751
|
}
|
|
2823
|
-
function
|
|
2824
|
-
const value = frame.payload.
|
|
2825
|
-
|
|
2752
|
+
function payloadInputKind(frame) {
|
|
2753
|
+
const value = frame.payload.input_kind;
|
|
2754
|
+
if (!isCealHostInputKind(value)) throw new TypeError("Host Relay input kind is invalid.");
|
|
2755
|
+
return value;
|
|
2826
2756
|
}
|
|
2827
2757
|
function uniqueObservations(values) {
|
|
2828
2758
|
const seen = /* @__PURE__ */ new Set();
|
|
2829
2759
|
return values.filter((value) => !seen.has(value.observation_ref) && Boolean(seen.add(value.observation_ref)));
|
|
2830
2760
|
}
|
|
2831
2761
|
function compactSubmission(value) {
|
|
2832
|
-
return { identity: value.identity, host_input_ref: value.host_input_ref, prompt_ref: value.prompt_ref, observations: value.observations, submission_ref: value.submission_ref, ...value.
|
|
2762
|
+
return { identity: value.identity, host_input_ref: value.host_input_ref, input_kind: value.input_kind, prompt_ref: value.prompt_ref, observations: value.observations, submission_ref: value.submission_ref, ...value.request_ref === void 0 ? {} : { request_ref: value.request_ref } };
|
|
2833
2763
|
}
|
|
2834
2764
|
function isObservation(value) {
|
|
2835
2765
|
try {
|
|
@@ -2895,6 +2825,7 @@ import { dirname as dirname2 } from "node:path";
|
|
|
2895
2825
|
// host/gateway-http.ts
|
|
2896
2826
|
var SAFE_HOST_REF = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/u;
|
|
2897
2827
|
function hostIngressBody(input, invalidEventTime) {
|
|
2828
|
+
if (!isCealHostInputKind(input.input_kind)) throw new TypeError("Host ingress input kind is invalid.");
|
|
2898
2829
|
const prompt = input.observations.find((observation) => observation.observation_kind === "prompt");
|
|
2899
2830
|
const observedAt = prompt?.observed_at ?? input.observations[0]?.observed_at;
|
|
2900
2831
|
if (observedAt === void 0 || !Number.isFinite(Date.parse(observedAt))) throw invalidEventTime();
|
|
@@ -2904,11 +2835,11 @@ function hostIngressBody(input, invalidEventTime) {
|
|
|
2904
2835
|
host_session_ref: input.identity.host_session_ref,
|
|
2905
2836
|
host_turn_ref: input.identity.host_turn_ref,
|
|
2906
2837
|
host_input_ref: input.host_input_ref,
|
|
2838
|
+
input_kind: input.input_kind,
|
|
2907
2839
|
prompt_ref: input.prompt_ref,
|
|
2908
2840
|
observed_at: observedAt,
|
|
2909
2841
|
observations: input.observations,
|
|
2910
|
-
...input.request_ref === void 0 ? {} : { request_ref: input.request_ref }
|
|
2911
|
-
...input.decision === void 0 ? {} : { decision: input.decision.decision, approval_ref: input.decision.approval_ref }
|
|
2842
|
+
...input.request_ref === void 0 ? {} : { request_ref: input.request_ref }
|
|
2912
2843
|
};
|
|
2913
2844
|
}
|
|
2914
2845
|
async function responseJson(response2, invalidResponse2) {
|
package/package.json
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
"product": "ceal-host",
|
|
4
4
|
"version_source": {
|
|
5
5
|
"product": "ceal-host",
|
|
6
|
-
"version": "1.0.
|
|
6
|
+
"version": "1.0.17"
|
|
7
7
|
},
|
|
8
8
|
"source": {
|
|
9
9
|
"repository": "corca-ai/ceal",
|
|
10
|
-
"commit": "
|
|
11
|
-
"tree": "
|
|
10
|
+
"commit": "980f065d3187628420b1c861efc38939916176b0",
|
|
11
|
+
"tree": "3ed016838b279d13ecdc39642187cd7a37221cab"
|
|
12
12
|
},
|
|
13
13
|
"target": "linux-arm64",
|
|
14
14
|
"required_features": [],
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
],
|
|
20
20
|
"executable": true,
|
|
21
21
|
"path": "bin/ceal-host",
|
|
22
|
-
"sha256": "
|
|
22
|
+
"sha256": "ec3a9b6fdd410a4ade10ecdf62df4dfbd781157cf0055538039ba69f46c094c0"
|
|
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": "
|
|
30
|
+
"sha256": "a4399d42969a612932b72a672625eb44ba8690e15651aa2747c878fb66eb32f4"
|
|
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": "
|
|
38
|
+
"sha256": "49e255a8e0907ff3736de3e44c896e84d9a2f512bae1c1cc9569c9415fe23b2f"
|
|
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": "
|
|
46
|
+
"sha256": "f57686bfb2def3abd48ea68451bf2e25b866025c98271776f68051755043a234"
|
|
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": "
|
|
54
|
+
"sha256": "462df98c8b36b42f391f7fefd16dd1cc1f85e5ebe98fec11ce29027bea9673fe"
|
|
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": "
|
|
62
|
+
"sha256": "0620eab8e4a807ffc2885d9ef0fa8e4261e5d13222cd6a64b71a0a7061ead829"
|
|
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": "
|
|
70
|
+
"sha256": "7f84cd036aba2d7ad4ccfae146f13341f17eb7fb37aa79dbfb824bb92c3a56f2"
|
|
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": "
|
|
78
|
+
"sha256": "5673617487608b52972038caec1c4f8dff89fd2d3905392a771905ae50fad306"
|
|
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": "
|
|
94
|
+
"sha256": "e98107fe701e43d3283dd4aa59f2178eb6a3ec9bd99f2e0c16a62580f15bd069"
|
|
95
95
|
}
|
|
96
96
|
]
|
|
97
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"
|
|
1
|
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"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"},"tlogEntries":[{"logIndex":"3128547672","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1791366440","inclusionPromise":{"signedEntryTimestamp":"MEUCIQC6DO7APfHDL/StgQoyBgdZl1qI4ZRhHk6W6TXrqzVBRwIgGuH4Hdgnphs/uZ3ne2ARWLunBdFzeykayR5urHI1Yug="},"inclusionProof":{"logIndex":"3006643410","rootHash":"WXZ26vYalvyz9aDQ7ic/U2usBJyPMILUaXWDMjj0i4Q=","treeSize":"3006643445","hashes":["INRS4HbGvi7NO8VNspLAKD6WF6ol3r5pv4ZPFOVeLx0=","jomjZrwLncxel5p/LeKeAvrIk9/C833mWJARenh11B8=","kaK5uKMtoqkeOkkt0rkcLLSzcG7sQx+W4Z3glEXQlXc=","HnujNah4KgQDXVmULnUpyfifHGJIA8VnIigURlwC5Kg=","0V5pdSg58SkE/4K7hAuIC7fMfCLCM+qneBlAWpoklqI=","6HSn4rEh/wMKWLPGDjL01t5iWiGCQk4cLBecnzjKVDs=","47xA+fz7+qD2uj5Jj9LOTIweUSLkbQbtpPOC4iORi0E=","W1fKcRL1FrKDqmlyRUhK6TeRTd2y4MB97Bj9awbFDEo=","W5A/gAEQJZpRraeg9Dn/SG2uGoVyJmuYqbTdwOOMUvQ=","k/EKpDWojo6OPiY94uK41Hndso7w9paBdJy1WBjGOeI=","o8grXP/F6qlPjCPhab77tfSlvNkikB1xTlaNs6g+hY8=","pZgJHt3guSiHkvI0Lh5xHlh8y478YfQUdyNdPLaammY=","Yxe6ZGwfKX/nqpgUhUKJ1P4+LKFnBixdjJqU+sAR6gg=","4d496XmMaawAX5fndJYS/MpuIpD4Z0THjnaR3oRGOMc=","A9V18/bi4n6coZPrqnksxIr426UD0L/Z9ag729ebCVc=","5DLOk+VpBunLphADXMWyEyujySq1LBxtlkv3bSWinlg=","UBxsHzLB5R5DPBWQbXrY3XCd/Nn9Exvtg+VeX7vgpHM=","3fRFZuDepJD9y0NjNA9nqInlZuCxNImKQJJfr//qImA=","x9rXqkSu8+Vm4yqD2XeAwn305JZ4ZykdOwcD90FjP8o=","NlOclldmKPA1tMKIskqHAwuQDYHp31YwpK+OOMrMccc=","qxzHanAzz57SDdmJe0B7bJK72NTIBbwEMGBBKvDOROw=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n3006643445\nWXZ26vYalvyz9aDQ7ic/U2usBJyPMILUaXWDMjj0i4Q=\n\n— rekor.sigstore.dev wNI9ajBGAiEA2duEavJmv78VR0uTZEwwbqlldDzfrs/us0bqT+/bsa8CIQDvUW/Hs/hTlvE2ntmGF2dqf7aPua8KbfXzqA2U9m423A==\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI2NjA1MmNmMDIzNWJiNjczMTExZmJmOWI0NDc5Y2Y2YjhlOGZiMWI5NDYzZTRlMDQyNWYwNmQ3NGFkMzY0MmZiIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUQ0cGptVkRWRmJzQmhGcGIxZXNIcUt3T1NOY1dRWWtzeDRFb3NEMVZnOU53SWdYZ1hKUlVOSjVKQmVxUXQ3NmNIY3hQUmJFbVdnQVVyT3dzUXo0YWpjTk1NPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVYzNla05EUW01VFowRjNTVUpCWjBsVlkybzJZazk0UVVWME5VWXhhekZ0UTBrNWRVdDNaRE5NWkZsemQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFplRTFFUVROTlJHc3dUbnBKZDFkb1kwNU5hbGw0VFVSQk0wMUVhekZPZWtsM1YycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVY0VTBJd2NuWnlaMkpJYjJWUU1YcEZka1p4TnpWcFNHZHNWMU5yVTJsWU1IcDVRblVLWjNNNWVrVktia0Y0Y2xRMlNGTnliMGRrVm5GQ1J6aHhRbWR0VEZac2JWQk5RVVJ1VHpKdmJFcGpTSFZETkVoUVVHRlBRMEphVFhkbloxZFFUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXWkNaMDVXU0ZOTlJVZEVRVmRuUWxSbUNqQXJibEJXYVZGU2JIWnRiekpQYTI5V1lVeEhUR2hvYTFCNlFtMUNaMDVXU0ZKRlFrRm1PRVZZUkVKaGFHeG9iMlJJVW5kamVtOTJUREprY0dSSGFERUtXV2sxYW1JeU1IWlpNamw1V1RKRmRGbFhhM1paTWxab1lrTTRkVm95YkRCaFNGWnBURE5rZG1OdGRHMWlSemt6WTNrNWVWcFhlR3haV0U1c1RGZE9hQXBpYlZKd1drZEdNRnBUTlRWaVYzaEJZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOUkd0SFEybHpSMEZSVVVKbk56aDNRVkZGUlVzeWFEQmtTRUo2Q2s5cE9IWmtSemx5V2xjMGRWbFhUakJoVnpsMVkzazFibUZZVW05a1Ywb3hZekpXZVZreU9YVmtSMVoxWkVNMWFtSXlNSGRJZDFsTFMzZFpRa0pCUjBRS2RucEJRa0ZuVVZKa01qbDVZVEphYzJJelpHWmFSMng2WTBkR01Ga3laM2RPWjFsTFMzZFpRa0pCUjBSMmVrRkNRWGRSYjA5VVozZGFha0V5VGxkUmVncE5WR2N6VG1wSk5FNUVTWGRaYWtacVQwUlplRnBYV21wTmVtYzFUWHByTlUxVVdYaE9lbHBwVFVSQmEwSm5iM0pDWjBWRlFWbFBMMDFCUlVWQ1FscEVDbHBYUm5OSlNFcHNZa2RXYUdNeVZXZFpNa1oxV2tkc2ExbFlVbXhOUW5OSFEybHpSMEZSVVVKbk56aDNRVkZWUlVSWFRuWmpiVTVvVEZkR2NFd3lUbXdLV1ZkM2QwaFJXVXRMZDFsQ1FrRkhSSFo2UVVKQ1oxRlFZMjFXYldONU9XOWFWMFpyWTNrNWRGbFhiSFZOUkhOSFEybHpSMEZSVVVKbk56aDNRVkZuUlFwTVVYZHlZVWhTTUdOSVRUWk1lVGt3WWpKMGJHSnBOV2haTTFKd1lqSTFla3h0WkhCa1IyZ3hXVzVXZWxwWVNtcGlNalV3V2xjMU1FeHRUblppVkVKdkNrSm5iM0pDWjBWRlFWbFBMMDFCUlVwQ1JtOU5WMGRvTUdSSVFucFBhVGgyV2pKc01HRklWbWxNYlU1MllsTTVhbUl6U21wWlV6Rm9ZVk01YWxwWFJuTUtUSGsxYm1GWVVtOWtWMGwyWkRJNWVXRXlXbk5pTTJSNlRETktiR0pIVm1oak1sVjBXVEpHZFZwSGJHdFpXRkpzVEc1c2RHSkZRbmxhVjFwNlRESm9iQXBaVjFKNlRESXhhR0ZYTkhkUFFWbExTM2RaUWtKQlIwUjJla0ZDUTJkUmNVUkRaelZQUkVKdFRVUlpNVnBFVFhoUFJHTXlUV3BuTUUxcVFtbE5WMDAwQ2s1cVJteGFiVTE2VDBScmVrOVVhM2hPYWtVelRtMUpkMDFDTUVkRGFYTkhRVkZSUW1jM09IZEJVWE5GUkhkM1Rsb3liREJoU0ZacFRGZG9kbU16VW13S1drUkJkMEpuYjNKQ1owVkZRVmxQTDAxQlJVMUNRMGxOU1Vkb01HUklRbnBQYVRoMldqSnNNR0ZJVm1sTWJVNTJZbE01YW1JelNtcFpVekZvWVZNNWFncGFWMFp6VFVSblIwTnBjMGRCVVZGQ1p6YzRkMEZSTUVWTFozZHZUMVJuZDFwcVFUSk9WMUY2VFZSbk0wNXFTVFJPUkVsM1dXcEdhazlFV1hoYVYxcHFDazE2WnpWTmVtczFUVlJaZUU1NldtbE5SRUZtUW1kdmNrSm5SVVZCV1U4dlRVRkZUMEpDUlUxRU0wcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRV0VLUW1kdmNrSm5SVVZCV1U4dlRVRkZVRUpCZDAxRGFrVjRUMVJGTVU1VVVURlBWRTEzUzNkWlMwdDNXVUpDUVVkRWRucEJRa1ZCVVdSRVFuUnZaRWhTZHdwamVtOTJUREprY0dSSGFERlphVFZxWWpJd2Rsa3lPWGxaTWtWMFdWZHJkMGRCV1V0TGQxbENRa0ZIUkhaNlFVSkZVVkZMUkVGbk0wMXFhek5QUkdjeUNrMUVRbTlDWjI5eVFtZEZSVUZaVHk5TlFVVlRRa1p2VFZkSGFEQmtTRUo2VDJrNGRsb3liREJoU0ZacFRHMU9kbUpUT1dwaU0wcHFXVk14YUdGVE9Xb0tXbGRHYzB4NU5XNWhXRkp2WkZkSmRtUXlPWGxoTWxwellqTmtla3d6U214aVIxWm9ZekpWZEZreVJuVmFSMnhyV1ZoU2JFeHViSFJpUlVKNVdsZGFlZ3BNTW1oc1dWZFNla3d5TVdoaFZ6UjNUMEZaUzB0M1dVSkNRVWRFZG5wQlFrVjNVWEZFUTJjMVQwUkNiVTFFV1RGYVJFMTRUMFJqTWsxcVp6Qk5ha0pwQ2sxWFRUUk9ha1pzV20xTmVrOUVhM3BQVkd0NFRtcEZNMDV0U1hkTlEwVkhRMmx6UjBGUlVVSm5OemgzUVZKUlJVVjNkMUprTWpsNVlUSmFjMkl6WkdZS1drZHNlbU5IUmpCWk1tZDNWa0ZaUzB0M1dVSkNRVWRFZG5wQlFrWlJVa2RFUlZKdlpFaFNkMk42YjNaTU1tUndaRWRvTVZscE5XcGlNakIyV1RJNWVRcFpNa1YwV1ZkcmRsa3lWbWhpUXpsb1dUTlNjR0l5TlhwTU0wb3hZbTVOZGsxNll6Sk5SRWw0VDBSUmQwNXFTWFpaV0ZJd1dsY3hkMlJJVFhaTlZFRllDa0puYjNKQ1owVkZRVmxQTDAxQlJWZENRV3ROUWpOQ2VXRllXbWhrUjFWM1RtZFpTMHQzV1VKQ1FVZEVkbnBCUWtkQlVXOUVRMXA1V2xoQ2RrOXRUbllLWTIxT2FFeFhSbkJNTWs1c1dWZDNObU50Vm0xUGJrcHNXbTVOZG1GSFZtaGFTRTEyWWxkR2NHSnFRMEpwWjFsTFMzZFpRa0pCU0ZkbFVVbEZRV2RTT0FwQ1NHOUJaVUZDTWtGT01EbE5SM0pIZUhoRmVWbDRhMlZJU214dVRuZExhVk5zTmpRemFubDBMelJsUzJOdlFYWkxaVFpQUVVGQlFtOVNXRU53UzBWQkNrRkJVVVJCUldOM1VsRkpaMVZtYldoWUx6ZFZUa051WkhwVFpXMWFXRlI2UmtwbVVpdFJNQzl1V0RoMWVURmpTbVphWW1oeFJHZERTVkZFUjFKR2NHY0tPVlV4ZFRSVWVrZExSa1ZaTTBvNE0zcDZjak5YYWxsUFJXMUpUVVY1VTNnMFZtUnZNRVJCUzBKblozRm9hMnBQVUZGUlJFRjNUbkJCUkVKdFFXcEZRUW9ySzNCWE5HbHBWSGRtY2tWMmMwMWtURlJ4Ym1waFdGRnpjM2xKWnpsc1ZVa3lTa014WjI5S2JuWlhSV05pUm5sd1F6WTBValJ1Um0xWWR6a3dOaXN5Q2tGcVJVRnZSM0JzWkNzM1RXeEVSekpSYlVoTWFWQXJjMUJYZVc5MGEwTTVjREZYT0ZwVFVGWkpZalIyTDBkTmVETm1WMUUwUkVGRVRYSnNZVWRyTm5JS1drbzNNQW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0="}]},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"ZgUs8CNbtnMRH7+bRHnPa46PsblGPk4EJfBtdK02Qvs="},"signature":"MEUCIQD4pjmVDVFbsBhFpb1esHqKwOSNcWQYksx4EosD1Vg9NwIgXgXJRUNJ5JBeqQt76cHcxPRbEmWgAUrOwsQz4ajcNMM="}}
|