diff --git a/Makefile b/Makefile index a3aa21d..8acd677 100644 --- a/Makefile +++ b/Makefile @@ -77,8 +77,8 @@ test: rust-preflight $(CARGO) test $(CARGO_LOCKED) -p solstone-linux check-observer-contract: rust-preflight - @echo "Observer contract bundle: 1.0.2" - @echo "Observer contract manifest SHA-256: 9ecf4bbfcd793a8aecc9e2257254e68c74c48cde22282ff07369101b90d97c33" + @echo "Observer contract bundle: 8.0.0" + @echo "Observer contract manifest SHA-256: 9b3bcd6b7f8a83adb9007e32501af44403cb93cfb8d80f256b6a7b5b9f93057e" @inventory=$$(CARGO_NET_OFFLINE=true $(CARGO) test $(CARGO_LOCKED) -p solstone-linux observer_contract_tests:: -- --list); \ printf '%s\n' "$$inventory"; \ printf '%s\n' "$$inventory" | grep -Fx 'observer_contract_tests::observer_contract_conformance: test' >/dev/null || { echo "error: observer contract test inventory mismatch" >&2; exit 1; }; \ diff --git a/contracts/README.md b/contracts/README.md index dea1a8b..e7c3dfe 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -1,6 +1,6 @@ # Observer-client contract import -The solstone journal owns the observer-client contract. solstone-linux keeps a frozen, byte-exact copy of bundle version 1.0.2 in `vendor/observer-client-contract/` so this observer can verify the agreement fully offline while experiencing the desktop along with its owner. +The solstone journal owns the observer-client contract. solstone-linux keeps a frozen, byte-exact copy of bundle version 8.0.0 in `vendor/observer-client-contract/` so this observer can verify the agreement fully offline while experiencing the desktop along with its owner. To adopt an authority revision: diff --git a/contracts/observer-client-import.json b/contracts/observer-client-import.json index 2cd9aa0..bd647e9 100644 --- a/contracts/observer-client-import.json +++ b/contracts/observer-client-import.json @@ -1,8 +1,8 @@ { "authority_repository": "https://github.com/solpbc/solstone-journal", - "authority_commit": "827d3761e2b515b9bd537ded28b245c8c6d86cc0", - "bundle_version": "1.0.2", + "authority_commit": "766021cd44d4a0a7ce471d2affb461bf3ce0fc39", + "bundle_version": "8.0.0", "manifest_path": "manifest.json", - "manifest_sha256": "9ecf4bbfcd793a8aecc9e2257254e68c74c48cde22282ff07369101b90d97c33", + "manifest_sha256": "9b3bcd6b7f8a83adb9007e32501af44403cb93cfb8d80f256b6a7b5b9f93057e", "vendored_root": "vendor/observer-client-contract" } diff --git a/crates/solstone-linux/src/observer_contract_tests.rs b/crates/solstone-linux/src/observer_contract_tests.rs index 95438c7..27840de 100644 --- a/crates/solstone-linux/src/observer_contract_tests.rs +++ b/crates/solstone-linux/src/observer_contract_tests.rs @@ -19,16 +19,14 @@ use std::{ }; use tempfile::TempDir; -const MANIFEST_SHA256: &str = "9ecf4bbfcd793a8aecc9e2257254e68c74c48cde22282ff07369101b90d97c33"; -const AUTHORITY_COMMIT: &str = "827d3761e2b515b9bd537ded28b245c8c6d86cc0"; +const MANIFEST_SHA256: &str = "9b3bcd6b7f8a83adb9007e32501af44403cb93cfb8d80f256b6a7b5b9f93057e"; +const AUTHORITY_COMMIT: &str = "766021cd44d4a0a7ce471d2affb461bf3ce0fc39"; const FULL_FIXTURES: &[&str] = &[ "declared.observer.ingestSegments.custody_unknown_rejected", "declared.observer.ingestSegments.envelope_total_mismatch", "declared.observer.ingestUpload.status_unknown_rejected", "example.callosum.rootEvents.response.200.text-event-stream.default", - "example.chat.openSolChatRequest.request.body.application-json.default", - "example.chat.openSolChatRequest.response.200.application-json.default", "example.link.pair.request.body.application-json.default", "example.link.pair.response.200.application-json.default", "example.observer.callosumStream.response.200.text-event-stream.default", @@ -43,8 +41,6 @@ const FULL_FIXTURES: &[&str] = &[ "example.observer.register.response.200.application-json.default", "recorded.auth.bearer.segments", "recorded.auth.handle.segments", - "recorded.chat.openSolChatRequest.missing", - "recorded.chat.openSolChatRequest.ok", "recorded.ingestUpload.collision", "recorded.ingestUpload.conflict", "recorded.ingestUpload.duplicate", @@ -92,8 +88,6 @@ const LINUX_FIXTURES: &[&str] = &[ const FULL_VECTORS: &[&str] = &[ "callosum.rootEvents.sse.data_unknown_event", "callosum.rootEvents.sse.heartbeat", - "chat.openSolChatRequest.missing_required_field", - "chat.openSolChatRequest.ok", "observer.auth.bearer", "observer.auth.handle", "observer.callosumStream.sse.data", @@ -315,7 +309,7 @@ fn assert_identities( fixtures: &BTreeMap, vectors: &BTreeMap, ) { - assert_eq!(manifest["bundle_semver"], "1.0.2"); + assert_eq!(manifest["bundle_semver"], "8.0.0"); assert_eq!(manifest["openapi_document_version"], "1.0.0"); assert_eq!( manifest["generator_identity"], @@ -357,7 +351,6 @@ fn assert_identities( manifest["operation_ids"], json!([ "callosum.rootEvents", - "chat.openSolChatRequest", "link.pair", "observer.callosumStream", "observer.ingestEvent", @@ -385,7 +378,7 @@ fn verify_provenance(root: &Path) -> Result<(), String> { let expected = json!({ "authority_repository":"https://github.com/solpbc/solstone-journal", "authority_commit":AUTHORITY_COMMIT, - "bundle_version":"1.0.2", + "bundle_version":"8.0.0", "manifest_path":"manifest.json", "manifest_sha256":MANIFEST_SHA256, "vendored_root":"vendor/observer-client-contract" diff --git a/crates/solstone-linux/src/toolchain_policy_tests.rs b/crates/solstone-linux/src/toolchain_policy_tests.rs index dc65eb2..6a760ff 100644 --- a/crates/solstone-linux/src/toolchain_policy_tests.rs +++ b/crates/solstone-linux/src/toolchain_policy_tests.rs @@ -761,7 +761,7 @@ fn observer_contract_gate_is_locked_offline_and_named() { assert!(target.contains("CARGO_NET_OFFLINE=true")); assert!(target.contains("$(CARGO_LOCKED) -p solstone-linux")); assert!(target.contains("observer_contract_tests::observer_contract_conformance")); - assert!(target.contains("1.0.2")); - assert!(target.contains("9ecf4bbfcd793a8aecc9e2257254e68c74c48cde22282ff07369101b90d97c33")); + assert!(target.contains("8.0.0")); + assert!(target.contains("9b3bcd6b7f8a83adb9007e32501af44403cb93cfb8d80f256b6a7b5b9f93057e")); assert!(makefile.contains("ci: rust-preflight check-cargo-deny check-observer-contract")); } diff --git a/vendor/observer-client-contract/consumer-audit.json b/vendor/observer-client-contract/consumer-audit.json index 5ca05a3..a80a272 100644 --- a/vendor/observer-client-contract/consumer-audit.json +++ b/vendor/observer-client-contract/consumer-audit.json @@ -104,46 +104,6 @@ "crates/solstone-linux/src/upload.rs" ] }, - { - "classification": "bundled", - "consumer": "solstone-linux", - "path": "/app/observer/callosum", - "rationale": "Projected as observer.callosumStream for Linux chat bridge SSE.", - "revision": "1c679db1ce6f9a65db70c5aae0ca2fad677416ef", - "source_files": [ - "crates/solstone-linux/src/chat_bridge.rs" - ] - }, - { - "classification": "bundled", - "consumer": "solstone-linux", - "path": "/api/chat/sol_chat_request/open", - "rationale": "Projected as chat.openSolChatRequest for Linux chat bridge.", - "revision": "1c679db1ce6f9a65db70c5aae0ca2fad677416ef", - "source_files": [ - "crates/solstone-linux/src/chat_bridge.rs" - ] - }, - { - "classification": "browser_navigation_excluded_from_api_projection", - "consumer": "solstone-linux", - "path": "/app/chat/{day}#event-{index}", - "rationale": "Browser navigation anchor, not an HTTP API contract path.", - "revision": "1c679db1ce6f9a65db70c5aae0ca2fad677416ef", - "source_files": [ - "crates/solstone-linux/src/chat_bridge.rs" - ] - }, - { - "classification": "consumer_drift_adoption_blocker", - "consumer": "solstone-linux", - "path": "/api/sol_voice", - "rationale": "Consumer uses the old settings path and reads linux_notify_send; journal serves /app/settings/api/sol_voice and nests the Linux boolean under system_notifications.linux.", - "revision": "1c679db1ce6f9a65db70c5aae0ca2fad677416ef", - "source_files": [ - "crates/solstone-linux/src/chat_bridge.rs" - ] - }, { "classification": "bundled", "consumer": "solstone-windows", @@ -224,12 +184,6 @@ "revision": "1c679db1ce6f9a65db70c5aae0ca2fad677416ef", "role": "production" }, - { - "consumer": "solstone-linux", - "path": "crates/solstone-linux/src/chat_bridge.rs", - "revision": "1c679db1ce6f9a65db70c5aae0ca2fad677416ef", - "role": "production" - }, { "consumer": "solstone-windows", "path": "crates/observer-pl/src/lib.rs", @@ -249,28 +203,5 @@ "role": "production" } ], - "settings_drift_findings": [ - { - "consumer": "solstone-linux", - "id": "linux.sol_voice.path", - "rationale": "Linux reads /api/sol_voice, but the journal route is /app/settings/api/sol_voice.", - "status": "adoption_blocker", - "verified_citations": [ - "solstone/apps/settings/routes.py:86-89", - "solstone/apps/settings/routes.py:640-641" - ] - }, - { - "consumer": "solstone-linux", - "id": "linux.sol_voice.linux_notify_send", - "rationale": "Linux reads top-level linux_notify_send, but the journal response exposes system_notifications.linux.", - "status": "adoption_blocker", - "verified_citations": [ - "solstone/convey/sol_initiated/settings.py:41-42", - "solstone/convey/sol_initiated/settings.py:61-63", - "solstone/convey/sol_initiated/settings.py:211-213", - "solstone/apps/settings/tests/test_sol_voice_routes.py:58" - ] - } - ] + "settings_drift_findings": [] } diff --git a/vendor/observer-client-contract/fixtures/wire-behavior.json b/vendor/observer-client-contract/fixtures/wire-behavior.json index 7ae3d5f..3b0d7fe 100644 --- a/vendor/observer-client-contract/fixtures/wire-behavior.json +++ b/vendor/observer-client-contract/fixtures/wire-behavior.json @@ -72,9 +72,8 @@ "id": "example.callosum.rootEvents.response.200.text-event-stream.default", "kind": "openapi-example", "payload": { - "event": "owner_message", - "message": "What changed?", - "tract": "chat", + "event": "status", + "tract": "observe", "ts": 1781803200000 }, "provenance": { @@ -88,46 +87,12 @@ "validates": true } }, - { - "id": "example.chat.openSolChatRequest.request.body.application-json.default", - "kind": "openapi-example", - "payload": { - "request_id": "sol-chat-1781803200000" - }, - "provenance": { - "direction": "request", - "media_type": "application/json", - "named_variant": "default", - "operation_id": "chat.openSolChatRequest", - "status": null - }, - "schema_validation": { - "validates": true - } - }, - { - "id": "example.chat.openSolChatRequest.response.200.application-json.default", - "kind": "openapi-example", - "payload": { - "ok": true - }, - "provenance": { - "direction": "response", - "media_type": "application/json", - "named_variant": "default", - "operation_id": "chat.openSolChatRequest", - "status": 200 - }, - "schema_validation": { - "validates": true - } - }, { "id": "example.link.pair.request.body.application-json.default", "kind": "openapi-example", "payload": { "csr": "-----BEGIN CERTIFICATE REQUEST-----\n...\n-----END CERTIFICATE REQUEST-----\n", - "device_label": "Jer iPhone", + "device_label": "Rae's iPhone", "nonce": "5f0d8c8b9f1e48b0a5f80b98f3d5e9b0", "sender_instance_id": "ios-01" }, @@ -437,42 +402,6 @@ "validates": true } }, - { - "id": "recorded.chat.openSolChatRequest.missing", - "kind": "recorded-response", - "payload": { - "detail": "request_id required", - "error": "I couldn't find a required field.", - "reason_code": "missing_required_field" - }, - "provenance": { - "direction": "response", - "media_type": "application/json", - "named_variant": "missing_required_field", - "operation_id": "chat.openSolChatRequest", - "status": 400 - }, - "schema_validation": { - "validates": true - } - }, - { - "id": "recorded.chat.openSolChatRequest.ok", - "kind": "recorded-response", - "payload": { - "ok": true - }, - "provenance": { - "direction": "response", - "media_type": "application/json", - "named_variant": "ok", - "operation_id": "chat.openSolChatRequest", - "status": 200 - }, - "schema_validation": { - "validates": true - } - }, { "id": "recorded.ingestUpload.collision", "kind": "recorded-response", diff --git a/vendor/observer-client-contract/manifest.json b/vendor/observer-client-contract/manifest.json index 10bd337..432f1b7 100644 --- a/vendor/observer-client-contract/manifest.json +++ b/vendor/observer-client-contract/manifest.json @@ -14,7 +14,7 @@ } ], "bundle_schema_identity": "solstone.observer-client-contract-bundle.schema.v1", - "bundle_semver": "1.0.2", + "bundle_semver": "8.0.0", "component_closure": [ "CallosumEvent", "Error", @@ -34,19 +34,19 @@ "files": [ { "path": "consumer-audit.json", - "sha256": "f3562062aeb971c9dc95ae5d14333566b28431758bcd232c33c093757df7bc18" + "sha256": "3f9938b38994ea2a3a19ea154152e5dc8b3f24843e53eb1f14b6fb33d58e6ac9" }, { "path": "fixtures/wire-behavior.json", - "sha256": "9749a50daba9b4a270da045d350bc5edb7a42c9723fa0bf420c8fb8a4a0415f8" + "sha256": "b9ed72f3c3de4a890978079fcf286ddad212c6ac99bd32d3e080afdd5a787dc4" }, { "path": "projection.openapi.json", - "sha256": "8a2b7037552edf710597f2ffa6fdc5aa715311df4ea8cf168e70abe4231c64ca" + "sha256": "46eb05e6889f9176446fb315585a0e15a57600aead9ed1aaf948a93eee596c35" }, { "path": "vectors.json", - "sha256": "7a5132c57b61e2a615a22719abc77e40b708d4a6636c45690cc522dc26c36dec" + "sha256": "a4cb9712bf5a6679a2fefc6b94f1618dfbd8e7f227364103d70095a8dd6bce1f" } ], "generator_identity": "solstone.convey.contract.observer_bundle.v1", @@ -55,43 +55,31 @@ "id": "bundle.projection_builder", "path": "solstone/convey/contract/observer_bundle.py", "role": "projection_builder", - "sha256": "00918bb64972340f6f8ec55fe0ccba5630056a2a6f5c975a6717a95ca6aa474b" + "sha256": "908e77f6eabfd1dbe951dcc9e0b523d3db2e8563c1a61c3a5dbfce8162fa671b" }, { "id": "bundle.recording", "path": "solstone/convey/contract/observer_bundle_recording.py", "role": "fixture_vector_builder", - "sha256": "a41f0209cfd7a2d8ce5b1f6a8230a8d71d0813082894cd5c079c2b47599ef9f7" + "sha256": "37b44cf50b8e8fd791be330d86282f2fa59a93367925e9abd6d06683deaa78a3" }, { "id": "extension.observer_sse_error_frame", "path": "solstone/apps/observer/contract.py", "role": "code_adjacent_extension", - "sha256": "bf4813fbb2623a9dcb12e06534481b5c8fbeb5ba9f0e63ca089ac7a991c4e5a9" - }, - { - "id": "extension.root_chat_native_subset", - "path": "solstone/convey/root_contract.py", - "role": "code_adjacent_extension", - "sha256": "26e7fe79cf78aa0a3c09e5074ce51136ccfb86b7aa0e33a16c18c69c746e99aa" - }, - { - "id": "fragment.chat", - "path": "solstone/convey/chat_contract.py", - "role": "code_adjacent_fragment", - "sha256": "435106016cdd3060ed65944f7383b7e4407dcf35b4d4dc256c38576a6cbfa754" + "sha256": "acfca9d0843a4c53b9db11c36d03c3a340d62f149fa50f6a3c934007c2a736f2" }, { "id": "fragment.link", "path": "solstone/apps/network/contract.py", "role": "code_adjacent_fragment", - "sha256": "eda57ec44dc3363adf721424f5622d3046630e81dd15ad65b52a57632ce90eeb" + "sha256": "e8be782b5e8333dfd796c5812bd5d61a645d9c8d09f25bd3d1893fc3ac0cd5ab" }, { "id": "fragment.observer", "path": "solstone/apps/observer/contract.py", "role": "code_adjacent_fragment", - "sha256": "bf4813fbb2623a9dcb12e06534481b5c8fbeb5ba9f0e63ca089ac7a991c4e5a9" + "sha256": "acfca9d0843a4c53b9db11c36d03c3a340d62f149fa50f6a3c934007c2a736f2" }, { "id": "fragment.root", @@ -103,43 +91,19 @@ "id": "openapi.assembler", "path": "solstone/convey/contract/assemble.py", "role": "openapi_source", - "sha256": "73f281611a07c6fd7bdb96c26feea29e838888a991d23c8ef143506c3db182ce" - }, - { - "id": "producer.chat_routes", - "path": "solstone/convey/chat.py", - "role": "producer", - "sha256": "0a0ffd2952fddd1ef22abf8a1d2effd91ee7b4ccd7124b78f4632b3d6a21f785" - }, - { - "id": "producer.chat_sol_initiated_copy", - "path": "solstone/convey/sol_initiated/copy.py", - "role": "producer", - "sha256": "ca08d309b3582343159b5342dbb6603b21345fd0093034a90daec53eef5cb4cb" - }, - { - "id": "producer.chat_sol_initiated_events", - "path": "solstone/convey/sol_initiated/events.py", - "role": "producer", - "sha256": "9ec36a36baa53ec631700cdb9a6989d41ce57e9d092e49f4e85c965b24bfc6e8" - }, - { - "id": "producer.chat_stream", - "path": "solstone/convey/chat_stream.py", - "role": "producer", - "sha256": "a94a810a1a64f080e7632165fe864a084a3e2d725f90e870c3ed277b4ccdf45b" + "sha256": "03f547c2d14d282f4ecf1c30ae754b241adbcf6ace0aae3298bd3ea27f9624a6" }, { "id": "producer.observer_routes", "path": "solstone/apps/observer/routes.py", "role": "producer", - "sha256": "1337eeedf8853b31a479711ed8d076eabe5149e87bf2e73a113e5b5abfe92f06" + "sha256": "c3685b7fba0fc039c3a6a4ad9047dd87598574f47f3bbd086715a33f50861fd8" }, { "id": "producer.observer_utils", "path": "solstone/apps/observer/utils.py", "role": "producer", - "sha256": "940a30cf76693d9a2c76beb88d4505951de6e7f30c992f79342fbc656a1ad875" + "sha256": "937aa9669c5b95bbc3c400a337f68e52bd0b783ed6579898ba75efb657b27e77" }, { "id": "producer.protocol", @@ -151,13 +115,13 @@ "id": "producer.root_sse", "path": "solstone/convey/root.py", "role": "producer", - "sha256": "5d3f18c7fd43354412c3402cf19d348beb1437cfea5e00f3bc53f28a908246cd" + "sha256": "7286e8836eec5c957f137e8173e314deabda0f71f453fa27a34432a33cd4128f" }, { "id": "reason_codes", "path": "solstone/convey/reasons.py", "role": "vocabulary_source", - "sha256": "ea857c2c4eb2308c05ad02e33a0ead9f1c68c5e7e08c4c0f7aebf52f8a7e8750" + "sha256": "3ca67b324d3993d8fe0eedb05dcb0f88716deaff80b5a68611dae3ebc37b7a13" } ], "observer_protocol_version": 2, @@ -165,7 +129,6 @@ "openapi_spec_version": "3.1.0", "operation_ids": [ "callosum.rootEvents", - "chat.openSolChatRequest", "link.pair", "observer.callosumStream", "observer.ingestEvent", @@ -232,24 +195,6 @@ "live", "recorded" ], - "chat": [ - "owner_message", - "sol_message", - "talent_queued", - "talent_spawned", - "talent_finished", - "talent_errored", - "reflection_ready", - "chat_queue_depth", - "chat_error", - "sol_chat_request", - "sol_chat_request_superseded", - "owner_chat_open", - "owner_chat_dismissed", - "support_draft", - "result", - "support_submit_claim" - ], "cortex": [ "request", "start", @@ -260,13 +205,26 @@ "error", "talent_updated", "info", - "status" + "status", + "cancel", + "dry_run", + "progress", + "text_delta", + "tool_budget_exhausted", + "budget_escalation" ], "importer": [ "started", "status", "completed", - "error" + "error", + "file_imported", + "enrichment_ready" + ], + "link": [ + "pair_complete", + "last_seen", + "stream_reset" ], "logs": [ "exec", @@ -285,17 +243,29 @@ "detected", "described", "transcribed", - "observed" + "observed", + "memory_throttle_started", + "memory_throttle_completed" + ], + "storage": [ + "warning" ], "supervisor": [ "started", "stopped", "restarting", "status", - "queue" + "queue", + "scheduled", + "provider_runtime", + "request", + "restart", + "drain", + "skipped", + "sync_conflict" ], - "sync": [ - "status" + "support": [ + "proactive_suggestion" ], "think": [ "started", @@ -306,7 +276,20 @@ "talent_completed", "completed", "segments_started", - "segments_completed" + "segments_completed", + "memory_throttle_started", + "memory_throttle_completed", + "daily_complete" + ], + "work": [ + "talent_queued", + "talent_spawned", + "talent_finished", + "talent_errored", + "result", + "reflection_ready", + "support_draft", + "support_submit_claim" ] }, "source_pointer": "/", @@ -314,24 +297,18 @@ }, { "classification": "closed", - "id": "chat.openSolChatRequest.responses.400.reason_code", - "method": "POST", - "path": "/api/chat/sol_chat_request/open", - "source_pointer": "/paths/~1api~1chat~1sol_chat_request~1open/post/responses/400", - "unknown_value_behavior": "reject", - "values": [ - "missing_required_field" - ] - }, - { - "classification": "closed", - "id": "chat.openSolChatRequest.responses.403.reason_code", - "method": "POST", - "path": "/api/chat/sol_chat_request/open", - "source_pointer": "/paths/~1api~1chat~1sol_chat_request~1open/post/responses/403", + "id": "callosum.work.event", + "source_pointer": "/x-callosum-registry/work", "unknown_value_behavior": "reject", "values": [ - "pl_revoked" + "talent_queued", + "talent_spawned", + "talent_finished", + "talent_errored", + "result", + "reflection_ready", + "support_draft", + "support_submit_claim" ] }, { @@ -614,33 +591,11 @@ "values": [ "ok" ] - }, - { - "classification": "extensible", - "description": "Native-client-interest subset of CallosumEvent kinds on tract 'chat'. This is not an exhaustive stream vocabulary; root SSE can carry other tracts and events. Payloads remain open (CallosumEvent.additionalProperties).", - "id": "root.chat.native_interest_kinds", - "native_client_interest_subset": [ - "owner_message", - "sol_message", - "talent_queued", - "talent_spawned", - "talent_finished", - "talent_errored", - "chat_queue_depth", - "result", - "chat_error" - ], - "source_pointer": "/paths/~1sse~1events/get/responses/200", - "stream_exhaustive": false, - "unknown_value_behavior": "preserve" } ], "windows_linux_rollout_targets": [ { - "adoption_blocker_ids": [ - "linux.sol_voice.path", - "linux.sol_voice.linux_notify_send" - ], + "adoption_blocker_ids": [], "consumer_identifier": "solstone-linux" }, { diff --git a/vendor/observer-client-contract/projection.openapi.json b/vendor/observer-client-contract/projection.openapi.json index b7dbb44..f18cd58 100644 --- a/vendor/observer-client-contract/projection.openapi.json +++ b/vendor/observer-client-contract/projection.openapi.json @@ -46,7 +46,6 @@ "backup_not_confirmed", "backup_operation_failed", "backup_unavailable", - "chat_queue_full", "config_busy", "convey_busy", "convey_operation_failed", @@ -66,16 +65,20 @@ "file_read_failed", "health_report_failed", "host_not_allowed", + "http_error", + "idempotency_conflict", "identity_busy", "identity_not_locked", "import_client_id_conflict", "import_conflict", "import_metadata_failed", "import_not_found", + "import_queue_unreachable", "ingest_contract_invalid", "ingest_no_files", "ingest_sidecar_conflict", "ingest_storage_failed", + "internal_error", "invalid_config_value", "invalid_day", "invalid_entity_type", @@ -85,24 +88,30 @@ "invalid_path", "invalid_request_value", "invalid_segment_or_stream", + "invalid_state", "journal_source_problem", "ledger_item_not_found", "local_request_only", "missing_request_body", "missing_required_field", "observer_restart_failed", + "operation_erased", + "operation_in_progress", "operation_no_longer_available", + "operation_retired", "paired_device_not_found", "pairing_key_invalid", "pairing_relay_unavailable", "pairing_request_invalid", "pl_revoked", + "plaud_validation_unavailable", "principal_entity_protected", "provider_key_missing", "push_request_invalid", "raw_media_not_available", "recovery_key_mismatch", "reprocess_already_complete", + "reprocess_held_by_backoff", "reprocess_past_only", "reprocess_unreachable", "search_failed", @@ -111,6 +120,11 @@ "settings_operation_failed", "speaker_attribution_state_invalid", "speaker_command_failed", + "speaker_discovery_failed", + "speaker_identify_conflict", + "speaker_identify_operation_not_found", + "speaker_identify_recoverable", + "speaker_identify_repair_required", "speaker_labels_busy", "speaker_not_found", "speaker_owner_centroid_required", @@ -125,6 +139,7 @@ "talent_run_malformed", "talent_run_pending", "timeline_month_not_found", + "tos_changed", "unknown_service", "voice_unavailable" ], @@ -235,90 +250,6 @@ }, "openapi": "3.1.0", "paths": { - "/api/chat/sol_chat_request/open": { - "post": { - "description": "Record that the owner opened a sol-initiated chat request. The request identifier must be a non-empty value after trimming.", - "operationId": "chat.openSolChatRequest", - "requestBody": { - "content": { - "application/json": { - "example": { - "request_id": "sol-chat-1781803200000" - }, - "schema": { - "additionalProperties": true, - "properties": { - "request_id": { - "minLength": 1, - "pattern": "\\S", - "type": "string" - } - }, - "required": [ - "request_id" - ], - "type": "object" - } - } - }, - "required": true - }, - "responses": { - "200": { - "content": { - "application/json": { - "example": { - "ok": true - }, - "schema": { - "additionalProperties": true, - "properties": { - "ok": { - "type": "boolean" - } - }, - "required": [ - "ok" - ], - "type": "object" - } - } - }, - "description": "Sol-initiated chat request opened." - }, - "400": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Request identifier was missing, malformed, empty, or blank.", - "x-reason-codes": [ - "missing_required_field" - ] - }, - "403": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - }, - "description": "Access gate rejected a revoked paired-link identity.", - "x-reason-codes": [ - "pl_revoked" - ] - } - }, - "summary": "Open sol chat request", - "tags": [ - "chat" - ] - } - }, "/app/network/pair": { "post": { "description": "Accept a client CSR plus nonce, then return a signed certificate and home attestation.", @@ -339,7 +270,7 @@ "application/json": { "example": { "csr": "-----BEGIN CERTIFICATE REQUEST-----\n...\n-----END CERTIFICATE REQUEST-----\n", - "device_label": "Jer iPhone", + "device_label": "Rae's iPhone", "nonce": "5f0d8c8b9f1e48b0a5f80b98f3d5e9b0", "sender_instance_id": "ios-01" }, @@ -1251,7 +1182,7 @@ } } }, - "description": "Register caller was not trusted localhost or paired link.", + "description": "Register request did not satisfy local/device admission or targeted a stream already bound to another device.", "x-reason-codes": [ "local_request_only" ] @@ -1278,16 +1209,15 @@ }, "/sse/events": { "get": { - "description": "Open the root Server-Sent Events feed for Callosum events. Frames: heartbeat comments `: heartbeat\\n\\n`; data frames `data: {json}\\n\\n` carrying CallosumEvent JSON for all tracts, including chat. This stream emits no `event: error` frames.", + "description": "Open the root Server-Sent Events feed for Callosum events. Frames: heartbeat comments `: heartbeat\\n\\n`; data frames `data: {json}\\n\\n` carrying CallosumEvent JSON for all tracts. This stream emits no `event: error` frames.", "operationId": "callosum.rootEvents", "responses": { "200": { "content": { "text/event-stream": { "example": { - "event": "owner_message", - "message": "What changed?", - "tract": "chat", + "tract": "observe", + "event": "status", "ts": 1781803200000 }, "schema": { @@ -1295,25 +1225,7 @@ } } }, - "description": "Callosum event stream. Heartbeat frames are comments `: heartbeat\\n\\n`; data frames are `data: {json}\\n\\n` and carry CallosumEvent JSON for all tracts, including chat.", - "x-chat-events": { - "classification": "extensible", - "description": "Native-client-interest subset of CallosumEvent kinds on tract 'chat'. This is not an exhaustive stream vocabulary; root SSE can carry other tracts and events. Payloads remain open (CallosumEvent.additionalProperties).", - "id": "root.chat.native_interest_kinds", - "kinds": [ - "owner_message", - "sol_message", - "talent_queued", - "talent_spawned", - "talent_finished", - "talent_errored", - "chat_queue_depth", - "result", - "chat_error" - ], - "stream_exhaustive": false, - "unknown_value_behavior": "preserve" - }, + "description": "Callosum event stream. Heartbeat frames are comments `: heartbeat\\n\\n`; data frames are `data: {json}\\n\\n` and carry CallosumEvent JSON for all tracts.", "x-sse-frame-kinds": { "classification": "closed", "id": "callosum.rootEvents.sse_frames", @@ -1350,24 +1262,6 @@ "live", "recorded" ], - "chat": [ - "owner_message", - "sol_message", - "talent_queued", - "talent_spawned", - "talent_finished", - "talent_errored", - "reflection_ready", - "chat_queue_depth", - "chat_error", - "sol_chat_request", - "sol_chat_request_superseded", - "owner_chat_open", - "owner_chat_dismissed", - "support_draft", - "result", - "support_submit_claim" - ], "cortex": [ "request", "start", @@ -1378,13 +1272,26 @@ "error", "talent_updated", "info", - "status" + "status", + "cancel", + "dry_run", + "progress", + "text_delta", + "tool_budget_exhausted", + "budget_escalation" ], "importer": [ "started", "status", "completed", - "error" + "error", + "file_imported", + "enrichment_ready" + ], + "link": [ + "pair_complete", + "last_seen", + "stream_reset" ], "logs": [ "exec", @@ -1403,17 +1310,29 @@ "detected", "described", "transcribed", - "observed" + "observed", + "memory_throttle_started", + "memory_throttle_completed" + ], + "storage": [ + "warning" ], "supervisor": [ "started", "stopped", "restarting", "status", - "queue" + "queue", + "scheduled", + "provider_runtime", + "request", + "restart", + "drain", + "skipped", + "sync_conflict" ], - "sync": [ - "status" + "support": [ + "proactive_suggestion" ], "think": [ "started", @@ -1424,7 +1343,20 @@ "talent_completed", "completed", "segments_started", - "segments_completed" + "segments_completed", + "memory_throttle_started", + "memory_throttle_completed", + "daily_complete" + ], + "work": [ + "talent_queued", + "talent_spawned", + "talent_finished", + "talent_errored", + "result", + "reflection_ready", + "support_draft", + "support_submit_claim" ] }, "x-vocabularies": { @@ -1435,24 +1367,6 @@ "live", "recorded" ], - "chat": [ - "owner_message", - "sol_message", - "talent_queued", - "talent_spawned", - "talent_finished", - "talent_errored", - "reflection_ready", - "chat_queue_depth", - "chat_error", - "sol_chat_request", - "sol_chat_request_superseded", - "owner_chat_open", - "owner_chat_dismissed", - "support_draft", - "result", - "support_submit_claim" - ], "cortex": [ "request", "start", @@ -1463,13 +1377,26 @@ "error", "talent_updated", "info", - "status" + "status", + "cancel", + "dry_run", + "progress", + "text_delta", + "tool_budget_exhausted", + "budget_escalation" ], "importer": [ "started", "status", "completed", - "error" + "error", + "file_imported", + "enrichment_ready" + ], + "link": [ + "pair_complete", + "last_seen", + "stream_reset" ], "logs": [ "exec", @@ -1488,17 +1415,29 @@ "detected", "described", "transcribed", - "observed" + "observed", + "memory_throttle_started", + "memory_throttle_completed" + ], + "storage": [ + "warning" ], "supervisor": [ "started", "stopped", "restarting", "status", - "queue" + "queue", + "scheduled", + "provider_runtime", + "request", + "restart", + "drain", + "skipped", + "sync_conflict" ], - "sync": [ - "status" + "support": [ + "proactive_suggestion" ], "think": [ "started", @@ -1509,10 +1448,39 @@ "talent_completed", "completed", "segments_started", - "segments_completed" + "segments_completed", + "memory_throttle_started", + "memory_throttle_completed", + "daily_complete" + ], + "work": [ + "talent_queued", + "talent_spawned", + "talent_finished", + "talent_errored", + "result", + "reflection_ready", + "support_draft", + "support_submit_claim" ] }, "unknown_value_behavior": "preserve" + }, + "callosum.work.event": { + "classification": "closed", + "id": "callosum.work.event", + "source_pointer": "/x-callosum-registry/work", + "unknown_value_behavior": "reject", + "values": [ + "talent_queued", + "talent_spawned", + "talent_finished", + "talent_errored", + "result", + "reflection_ready", + "support_draft", + "support_submit_claim" + ] } } } diff --git a/vendor/observer-client-contract/vectors.json b/vendor/observer-client-contract/vectors.json index 46353fd..0a32ae2 100644 --- a/vendor/observer-client-contract/vectors.json +++ b/vendor/observer-client-contract/vectors.json @@ -39,42 +39,6 @@ "" ] }, - { - "decision": { - "accepted": false, - "kind": "chat_open_request", - "missing_field_behavior": "absent_malformed_empty_or_blank_rejected", - "reason_code": "missing_required_field" - }, - "fixture_id": "recorded.chat.openSolChatRequest.missing", - "id": "chat.openSolChatRequest.missing_required_field", - "kind": "recorded", - "observed_status": 400, - "pointer_hashes": { - "/reason_code": "c5e107146d3eafcb710f0f9e5f463aaf8b48e0b066d794a8405a81f6b131ca4c" - }, - "pointers": [ - "/reason_code" - ] - }, - { - "decision": { - "accepted": true, - "kind": "chat_open_request", - "missing_field_behavior": "non_empty_trimmed_request_id_required", - "result": "ok_true" - }, - "fixture_id": "recorded.chat.openSolChatRequest.ok", - "id": "chat.openSolChatRequest.ok", - "kind": "recorded", - "observed_status": 200, - "pointer_hashes": { - "/ok": "a17fcf0a2f50e2d495e4f90ce263410edc183add6c62699a2facbccf60410f74" - }, - "pointers": [ - "/ok" - ] - }, { "decision": { "accepted": true,