/home/shire3d/ARMOR/services/vision_mode_service.py:117: conversation_active=False, /home/shire3d/ARMOR/services/vision_mode_service.py:134: permitted = bool(conversation_active) /home/shire3d/ARMOR/services/wake_word_service.py:5:This module cannot open a microphone, execute PocketSphinx, retain audio, /home/shire3d/ARMOR/services/wake_word_service.py:32: microphone permission, recognition permission, explicit wake-word /home/shire3d/ARMOR/services/wake_word_service.py:84: "microphone_access_enabled", /home/shire3d/ARMOR/apps/shire-academy/dist/assets/shire/expressions/expression_manifest.json:29: "sentinel_mode_blue_optional": true, /home/shire3d/ARMOR/apps/shire-academy/dist/assets/shire/expressions/expression_manifest.json:172: "file": "assets/shire/expressions/shire_sentinel_standby.png", /home/shire3d/ARMOR/apps/shire-academy/dist/assets/shire/expressions/expression_manifest.json:173: "id": "sentinel_standby", /home/shire3d/ARMOR/apps/shire-academy/dist/assets/shire/expressions/expression_manifest.json:186: "file": "assets/shire/expressions/shire_sentinel_active.png", /home/shire3d/ARMOR/apps/shire-academy/dist/assets/shire/expressions/expression_manifest.json:187: "id": "sentinel_active", /home/shire3d/ARMOR/apps/shire-academy/dist/assets/shire/expressions/expression_manifest.json:200: "file": "assets/shire/expressions/shire_sentinel_lockdown.png", /home/shire3d/ARMOR/apps/shire-academy/dist/assets/shire/expressions/expression_manifest.json:201: "id": "sentinel_lockdown", /home/shire3d/ARMOR/apps/shire-unified-learning/server/unified_learning_server.py:567: ollama_url + "/api/chat", /home/shire3d/ARMOR/apps/shire-academy-full-ui-staging/node_modules/typescript/lib/es/diagnosticMessages.generated.json:424: "Checking_if_0_is_the_longest_matching_prefix_for_1_2_6104": "Comprobando si '{0}' es el prefijo coincidente más largo para '{1}' - '{2}'.", /home/shire3d/ARMOR/apps/shire-academy-full-ui-staging/node_modules/typescript/lib/es/diagnosticMessages.generated.json:532: "Could_not_find_matching_access_expressions_95141": "No se encontraron expresiones de acceso coincidentes.", /home/shire3d/ARMOR/apps/shire-academy-full-ui-staging/node_modules/typescript/lib/es/diagnosticMessages.generated.json:1018: "Longest_matching_prefix_for_0_is_1_6108": "El prefijo coincidente más largo para \"{0}\" es \"{1}\".", /home/shire3d/ARMOR/apps/shire-academy-full-ui-staging/node_modules/typescript/lib/es/diagnosticMessages.generated.json:1025: "Matched_0_condition_1_6403": "Coincidente con '{0}' condición '{1}'.", /home/shire3d/ARMOR/apps/shire-academy-full-ui-staging/node_modules/typescript/lib/es/diagnosticMessages.generated.json:1057: "Module_name_0_matched_pattern_1_6092": "Nombre del módulo: '{0}', patrón coincidente: '{1}'.", /home/shire3d/ARMOR/apps/shire-academy-full-ui-staging/node_modules/typescript/lib/es/diagnosticMessages.generated.json:1437: "Saw_non_matching_condition_0_6405": "Se vio una condición no coincidente '{0}'.", /home/shire3d/ARMOR/heart/heart.py:32: "I do not exist as a generic chatbot. I am the voice and mind of the Forge.\n\n" /home/shire3d/ARMOR/data/sentinel/alert_bridge_status.json:4: "watching": "/var/log/suricata/shire-sentinel/eve.json", /home/shire3d/ARMOR/data/academy/design_mastery/runtime/practice_state.json:1887: "electronics_integration.microphone-mounts": { /home/shire3d/ARMOR/data/academy/design_mastery/runtime/practice_state.json:1899: "skill_id": "electronics_integration.microphone-mounts", /home/shire3d/ARMOR/data/academy/design_mastery/FILE_INVENTORY.json:2646: "path": "skills/electronics_integration/microphone-mounts/SKILL.md", /home/shire3d/ARMOR/data/academy/design_mastery/FILE_INVENTORY.json:2650: "path": "skills/electronics_integration/microphone-mounts/certification.json", /home/shire3d/ARMOR/data/academy/design_mastery/FILE_INVENTORY.json:2654: "path": "skills/electronics_integration/microphone-mounts/design_rules.yaml", /home/shire3d/ARMOR/data/academy/design_mastery/FILE_INVENTORY.json:2658: "path": "skills/electronics_integration/microphone-mounts/manifest.json", /home/shire3d/ARMOR/data/academy/design_mastery/FILE_INVENTORY.json:2662: "path": "skills/electronics_integration/microphone-mounts/tests.json", /home/shire3d/ARMOR/data/academy/design_mastery/FILE_INVENTORY.json:2666: "path": "skills/electronics_integration/microphone-mounts/workflow.yaml", /home/shire3d/ARMOR/data/academy/design_mastery/skills/electronics_integration/microphone-mounts/certification.json:2: "skill_id": "electronics_integration.microphone-mounts", /home/shire3d/ARMOR/data/academy/design_mastery/skills/electronics_integration/microphone-mounts/tests.json:2: "skill_id": "electronics_integration.microphone-mounts", /home/shire3d/ARMOR/data/academy/design_mastery/skills/electronics_integration/microphone-mounts/manifest.json:2: "skill_id": "electronics_integration.microphone-mounts", /home/shire3d/ARMOR/data/academy/design_mastery/config/route_keywords.json:29: "microphone", /home/shire3d/ARMOR/data/academy/design_mastery/curriculum/catalog.json:1723: "skill_id": "electronics_integration.microphone-mounts", /home/shire3d/ARMOR/sentinel/status.py:55: "Sentinel": Path("/home/shire3d/ARMOR/sentinel/status.py").exists(), /home/shire3d/ARMOR/ai/brain_server.py:714: OLLAMA_URL + "/api/chat", /home/shire3d/ARMOR/ai/brain_server.py:926: OLLAMA_URL + "/api/chat", /home/shire3d/ARMOR/scripts/shire_live_transcribe.py:72: "PipeWire returned no default microphone source." /home/shire3d/ARMOR/scripts/shire_live_transcribe.py:157: "Unable to create microphone process pipes." /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_extensions.py:94: 'sentinel', /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_extensions.py:176:# Placeholder for sentinel methods, because sentinels can not have their own sentinels /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_extensions.py:177:_sentinel_placeholder = object() /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_extensions.py:179:if hasattr(builtins, "sentinel"): # 3.15+ /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_extensions.py:180: sentinel = builtins.sentinel /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_extensions.py:182: class sentinel: /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_extensions.py:183: """Create a unique sentinel object. /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_extensions.py:191: __name: str = _sentinel_placeholder, /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_extensions.py:192: __repr: typing.Optional[str] = _sentinel_placeholder, /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_extensions.py:196: name: str = _sentinel_placeholder, /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_extensions.py:198: if name is not _sentinel_placeholder: /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_extensions.py:206: if __name is _sentinel_placeholder: /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_extensions.py:208: if __repr is not _sentinel_placeholder: /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_extensions.py:225: "Subclassing sentinel is deprecated " /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_extensions.py:235: f"Setting attribute {attr!r} on sentinel objects is deprecated " /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_extensions.py:268: """Reduce this sentinel to a singleton.""" /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_extensions.py:271:Sentinel = sentinel /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_extensions.py:273:_marker = sentinel("sentinel") /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/urllib3/util/timeout.py:106: #: A sentinel object representing the default timeout value /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/urllib3/util/timeout.py:198: # for _GLOBAL_DEFAULT_TIMEOUT, which socket.py uses as a sentinel to /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/urllib3/connection.py:423: # urllib3's API is different from `http.client.HTTPConnection` and the subclassing is only incidental. /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_inspection/introspection.py:357:"""A sentinel value used when no [type expression][] is present.""" /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_inspection/introspection.py:360:"""The type of the [`UNKNOWN`][typing_inspection.introspection.UNKNOWN] sentinel value.""" /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_inspection/introspection.py:369: If no type expression is available, the [`UNKNOWN`][typing_inspection.introspection.UNKNOWN] sentinel /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_inspection/typing_objects.py:364:Return whether the argument is the [`NoDefault`][typing.NoDefault] sentinel object. /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/typing_inspection/typing_objects.py:374:Return whether the argument is the `NoExtraItems` sentinel object. /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/ollama/_client.py:309: def chat( /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/ollama/_client.py:325: def chat( /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/ollama/_client.py:340: def chat( /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/ollama/_client.py:355: Create a chat response using the requested model. /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/ollama/_client.py:379: client.chat(model='llama3.2', tools=[add_two_numbers], messages=[...]) /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/ollama/_client.py:390: '/api/chat', /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/ollama/_client.py:941: async def chat( /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/ollama/_client.py:957: async def chat( /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/ollama/_client.py:972: async def chat( /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/ollama/_client.py:987: Create a chat response using the requested model. /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/ollama/_client.py:1011: await client.chat(model='llama3.2', tools=[add_two_numbers], messages=[...]) /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/ollama/_client.py:1023: '/api/chat', /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/ollama/_types.py:398: 'Messages to chat with.' /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/ollama/_types.py:401: 'Tools to use for the chat.' /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/ollama/_types.py:415: Response returned by chat requests. /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/ollama/__init__.py:47:chat = _client.chat /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/h11/_events.py:1:# High level events that make up HTTP/1.1 conversations. Loosely inspired by /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/h11/_util.py:99:# - Have a *bonus property*: type(sentinel) is sentinel /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/cryptography/utils.py:115: sentinel = object() /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/cryptography/utils.py:118: cache = getattr(instance, cached_name, sentinel) /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/cryptography/utils.py:119: if cache is not sentinel: /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/cryptography/x509/name.py:169: # alternate types. This means when we see the sentinel value we need /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic_core/core_schema.py:1373: type: Required[Literal['missing-sentinel']] /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic_core/core_schema.py:1378:def missing_sentinel_schema( /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic_core/core_schema.py:1382: """Returns a schema for the `MISSING` sentinel.""" /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic_core/core_schema.py:1385: type='missing-sentinel', /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic_core/core_schema.py:4196: 'missing-sentinel', /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic_core/core_schema.py:4298: 'missing_sentinel_error', /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic/_internal/_utils.py:382: """Wrapper redirecting `__getitem__` to `get` with a sentinel value as default /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic/_internal/_decorators.py:356:_sentinel = object() /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic/_internal/_decorators.py:380: attribute = base.__dict__.get(name, _sentinel) /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic/_internal/_decorators.py:381: if attribute is not _sentinel: /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic/_internal/_generate_schema.py:1093: return core_schema.missing_sentinel_schema() /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic/_internal/_generate_schema.py:2310: choice['type'] == 'missing-sentinel' for choice in core_schema.iter_union_choices(schema) /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic/_internal/_generate_schema.py:2316: if (choice[0] if isinstance(choice, tuple) else choice)['type'] != 'missing-sentinel' /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic/_internal/_generate_schema.py:2329: if (choice[0] if isinstance(choice, tuple) else choice)['type'] == 'missing-sentinel' /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic/_internal/_generate_schema.py:2343: if isinstance(choice, tuple) and choice[0]['type'] != 'missing-sentinel' /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic/_internal/_generate_schema.py:2345: if not isinstance(choice, tuple) and choice['type'] != 'missing-sentinel' /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic/v1/env_settings.py:13:env_file_sentinel = str(object()) /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic/v1/env_settings.py:33: _env_file: Optional[DotenvType] = env_file_sentinel, /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic/v1/env_settings.py:61: env_file=(_env_file if _env_file != env_file_sentinel else self.__config__.env_file), /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic/json_schema.py:112:"""A sentinel value used to indicate that no default value should be used when generating a JSON Schema /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic/json_schema.py:870: def missing_sentinel_schema(self, schema: core_schema.MissingSentinelSchema) -> JsonSchemaValue: /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic/json_schema.py:871: """Generates a JSON schema that matches the `MISSING` sentinel value. /home/shire3d/ARMOR/venv/lib/python3.12/site-packages/pydantic/experimental/missing_sentinel.py:1:"""Experimental module exposing a function a `MISSING` sentinel.""" /home/shire3d/ARMOR/config/academy.json:16: "chat_composer_visible": true, /home/shire3d/ARMOR/config/vision_modes.json:19: "contextual_phrase_requires_active_conversation": true, /home/shire3d/ARMOR/config/voice_privacy.json:21: "microphone_access_enabled": true, /home/shire3d/ARMOR/config/voice_privacy.json:24: "text_to_speech_enabled": false, /home/shire3d/ARMOR/tools/design_academy_generic_qualify.py:35:MODEL_URL = "http://127.0.0.1:11434/api/chat" /home/shire3d/ARMOR/tools/design_academy_autopilot_qualify.py:14:MODEL_URL = "http://127.0.0.1:11434/api/chat" /home/shire3d/ARMOR/modules/laptop_dashboard.py:257: "sentinel_standby": "shire_sentinel_standby.png", /home/shire3d/ARMOR/modules/laptop_dashboard.py:258: "sentinel_active": "shire_sentinel_active.png", /home/shire3d/ARMOR/modules/laptop_dashboard.py:259: "sentinel_lockdown": "shire_sentinel_lockdown.png", /home/shire3d/ARMOR/modules/laptop_dashboard.py:991: self.aios_conversation = QTextEdit() /home/shire3d/ARMOR/modules/laptop_dashboard.py:992: self.aios_conversation.setReadOnly(True) /home/shire3d/ARMOR/modules/laptop_dashboard.py:993: self.aios_conversation.setPlainText( /home/shire3d/ARMOR/modules/laptop_dashboard.py:998: self.aios_conversation.setStyleSheet( /home/shire3d/ARMOR/modules/laptop_dashboard.py:1012: self.aios_conversation, /home/shire3d/ARMOR/modules/laptop_dashboard.py:1023: self.aios_conversation.setPlainText( /home/shire3d/ARMOR/modules/laptop_dashboard.py:1038: self.aios_conversation.setPlainText( /home/shire3d/ARMOR/modules/laptop_dashboard.py:1043: bar = self.aios_conversation.verticalScrollBar() /home/shire3d/ARMOR/modules/agents.py:48: "id": "relay", /home/shire3d/ARMOR/modules/agents.py:58: "route": "/agents/relay", /home/shire3d/ARMOR/modules/agents.py:60: "appPath": "agents/apps/relay", /home/shire3d/ARMOR/modules/agents.py:95: "Live SHiRE companion shell with chat, device connection, " /home/shire3d/ARMOR/modules/global_prompt_bar.py:178: self.microphone_button = QPushButton("🎙 MIC") /home/shire3d/ARMOR/modules/global_prompt_bar.py:179: self.microphone_button.setMinimumWidth(104) /home/shire3d/ARMOR/modules/global_prompt_bar.py:180: self.microphone_button.clicked.connect( /home/shire3d/ARMOR/modules/global_prompt_bar.py:203: layout.addWidget(self.microphone_button) /home/shire3d/ARMOR/modules/global_prompt_bar.py:333: self.microphone_button.setText( /home/shire3d/ARMOR/modules/global_prompt_bar.py:370: self.microphone_button.setText( /home/shire3d/ARMOR/modules/global_prompt_bar.py:611: self.microphone_button.setText( /home/shire3d/ARMOR/modules/shire.py:84:from sentinel.status import check_system, forge_score /home/shire3d/ARMOR/modules/sentinel.py:121: service_manager.register("sentinel", "Sentinel Security", "online") /home/shire3d/ARMOR/modules/sentinel.py:122: event_bus.publish("sentinel", "boot", "Sentinel Security Grid online", "online") /home/shire3d/ARMOR/modules/sentinel.py:186: self.helmet_path = Path(__file__).resolve().parent.parent / "assets" / "shire" / "shire_face_sentinel.png" /home/shire3d/ARMOR/modules/dashboard.py:195: ("sentinel", "WATCH", "ONLINE", "online", "♜", "SENTINEL"), /home/shire3d/ARMOR/modules/dashboard.py:640: "sentinel": (10, "Sentinel Security"), /home/shire3d/ARMOR/modules/dashboard.py:711: if key == "sentinel": /home/shire3d/ARMOR/modules/dashboard.py:713: f"Sentinel service: {service_manager.get_state('sentinel').upper()}", /home/shire3d/ARMOR/modules/dashboard.py:802: "sentinel", /home/shire3d/ARMOR/modules/dashboard.py:889: self.cards["sentinel"].set_value(service_manager.get_state("sentinel").upper(), service_manager.get_state("sentinel")) /home/shire3d/ARMOR/backups/ENG-LAPTOP-0005A_20260706_130421/ai.bak/brain_server.py:68: f"{OLLAMA_URL}/api/chat", /home/shire3d/ARMOR/backups/ENG-LAPTOP-0004J_20260706_115217/ai.bak/brain_server.py:68: f"{OLLAMA_URL}/api/chat", /home/shire3d/ARMOR/backups/ENG-SEC-0002A_20260708_143637/shire.py:18:from sentinel.status import check_system, forge_score /home/shire3d/ARMOR/agents/runtime/agent_hub.py:2:"""SHiRE Agent Hub candidate: local-only registry, health, scoped chat and task queues.""" /home/shire3d/ARMOR/agents/runtime/agent_hub.py:305:def chat(agent: dict[str, Any], payload: dict[str, Any]) -> dict[str, Any]: /home/shire3d/ARMOR/agents/runtime/agent_hub.py:318: f"{OLLAMA_URL}/api/chat", /home/shire3d/ARMOR/agents/runtime/agent_hub.py:338: path = DATA_ROOT / str(agent["id"]) / "memory" / "conversation.jsonl" /home/shire3d/ARMOR/agents/runtime/agent_hub.py:414: match = re.fullmatch(r"/api/v1/agents/([a-z0-9-]+)/(chat|tasks)", path) /home/shire3d/ARMOR/agents/runtime/agent_hub.py:422: result = chat(item, payload) if match.group(2) == "chat" else queue_task(str(item["id"]), payload) /home/shire3d/ARMOR/agents/apps/scanforge/public/shire-agent-manifest.json:17: "transport": ["same-origin-https", "authenticated-websocket", "tailscale-private-network"], /home/shire3d/ARMOR/agents/apps/scanforge/node_modules/socket.io-client/package.json:8: "websocket", /home/shire3d/ARMOR/agents/apps/scanforge/node_modules/engine.io-client/package.json:77: "./build/esm/transports/websocket.node.js": "./build/esm/transports/websocket.js", /home/shire3d/ARMOR/agents/apps/scanforge/node_modules/engine.io-client/package.json:80: "./build/cjs/transports/websocket.node.js": "./build/cjs/transports/websocket.js", /home/shire3d/ARMOR/agents/apps/scanforge/node_modules/ws/package.json:4: "description": "Simple to use, blazing fast and thoroughly tested websocket client and server for Node.js", /home/shire3d/ARMOR/agents/apps/scanforge/node_modules/ws/package.json:13: "homepage": "https://github.com/websockets/ws", /home/shire3d/ARMOR/agents/apps/scanforge/node_modules/ws/package.json:14: "bugs": "https://github.com/websockets/ws/issues", /home/shire3d/ARMOR/agents/apps/scanforge/node_modules/ws/package.json:17: "url": "git+https://github.com/websockets/ws.git" /home/shire3d/ARMOR/agents/apps/scanforge/node_modules/mime-db/db.json:5706: "application/x-chat": { /home/shire3d/ARMOR/agents/apps/scanforge/node_modules/mime-db/db.json:5708: "extensions": ["chat"] /home/shire3d/ARMOR/agents/apps/scanforge/dist/shire-module/shire-agent-manifest.json:17: "transport": ["same-origin-https", "authenticated-websocket", "tailscale-private-network"], /home/shire3d/ARMOR/assets/shire/expressions/expression_manifest.json:29: "sentinel_mode_blue_optional": true, /home/shire3d/ARMOR/assets/shire/expressions/expression_manifest.json:172: "file": "assets/shire/expressions/shire_sentinel_standby.png", /home/shire3d/ARMOR/assets/shire/expressions/expression_manifest.json:173: "id": "sentinel_standby", /home/shire3d/ARMOR/assets/shire/expressions/expression_manifest.json:186: "file": "assets/shire/expressions/shire_sentinel_active.png", /home/shire3d/ARMOR/assets/shire/expressions/expression_manifest.json:187: "id": "sentinel_active", /home/shire3d/ARMOR/assets/shire/expressions/expression_manifest.json:200: "file": "assets/shire/expressions/shire_sentinel_lockdown.png", /home/shire3d/ARMOR/assets/shire/expressions/expression_manifest.json:201: "id": "sentinel_lockdown", /home/shire3d/ARMOR/core/event_bus.py:9: "sentinel": "online", /home/shire3d/ARMOR/core/voice_privacy.py:3:SHIRE-VOICE-0002A permits manual microphone capture for local speech /home/shire3d/ARMOR/core/voice_privacy.py:45: microphone_access_enabled: bool /home/shire3d/ARMOR/core/voice_privacy.py:54: """Validated policy plus in-memory microphone runtime state.""" /home/shire3d/ARMOR/core/voice_privacy.py:102: microphone_enabled = bool( /home/shire3d/ARMOR/core/voice_privacy.py:104: "microphone_access_enabled", /home/shire3d/ARMOR/core/voice_privacy.py:150: and not microphone_enabled /home/shire3d/ARMOR/core/voice_privacy.py:154: "microphone access." /home/shire3d/ARMOR/core/voice_privacy.py:179: microphone_enabled /home/shire3d/ARMOR/core/voice_privacy.py:222: snapshot.microphone_access_enabled /home/shire3d/ARMOR/core/voice_privacy.py:329: microphone_access_enabled=bool( /home/shire3d/ARMOR/core/voice_privacy.py:331: "microphone_access_enabled", /home/shire3d/ARMOR/core/service_manager.py:55: self.register("sentinel", "Sentinel", "online") /home/shire3d/ARMOR/main.py:65:from modules.sentinel import SentinelPage