What does CocoSession use internally to drive the SDK client?#
B — CocoSession owns a threading.Thread named coco-session running an asyncio loop that wraps CortexCodeSDKClient.
Pass threshold: 24/30. Prerequisite: ≥ 12 months of use.
CocoSession use internally to drive the SDK client?#B — CocoSession owns a threading.Thread named coco-session running an asyncio loop that wraps CortexCodeSDKClient.
examples/headless_pipeline.py run from a plain terminal with no Streamlit installed?#A — Core headless symbols import without loading Streamlit; UI exports resolve lazily through __getattr__/_LAZY_ATTRS, which is what makes headless_pipeline.py work with no Streamlit installed.
B — can_use_tool blocks the worker thread on PermissionManager.wait_for_decision() until resolved or approval_timeout_seconds elapses.
CocoOptions.options_hash() hash, and what is it used for?#B — options_hash() hashes only tool-permission-affecting fields; the worker restarts only when that hash changes, not on every option edit.
app_viewer() never import copilot_rail() (and vice versa)?#B — This is a documented invariant: the preview component stays host-agnostic and does not know about job queues.
permissions.py to always create a fresh approval request, ignoring any prior "always allow"?#B — permissions.py special-cases AskUserQuestion and ExitPlanMode to always create a fresh request, regardless of prior "always allow."
SnowflakeConfigNotFoundError carry?#B — This is the exact SnowflakeConfigNotFoundError message text.
cortex binary is found at a configured path but does not respond correctly to --version?#B — CLIProbeError specifically means the binary exists but failed to answer --version; CLINotFoundError covers the not-on-PATH case.
SessionStartError differ from SessionNotReadyError?#B — SessionStartError is a worker-fails-to-start error; SessionNotReadyError covers timeout/boot-failure once started.
wrap_exception()'s context= kwarg do?#B — context= ("session_start", "session_ready"/"session", "query", "approval") steers which CocoError subclass the message-sniffing maps to.
CwdUploadError cover?#B — CwdUploadError is raised for bad names, disallowed extensions, oversize payloads, and overwrite conflicts alike.
TimeoutError, in addition to being a CocoError?#B — ApprovalTimeoutError is documented as also a TimeoutError.
B — Prompt injection is rated High severity; approval gates intercepting pre-execution are the primary mitigation, alongside a least-privilege role recommendation.
B — "Always allow" escalation is Medium severity, mitigated purely by its per-tool/per-session scope.
B — Repudiation is Medium severity, open as SEC-01 — nothing durable is written outside in-memory session state.
B — Mitigation is that the library never logs credentials and the SDK redacts them from its own output.
A — The flagged risk is elevation of privilege via a compromised dependency; mitigation is pip-audit, Gitleaks, and a committed uv.lock.
ACCOUNTADMIN (or a grant like MANAGE WAREHOUSES) discouraged, even with approval gates in place?#A — Approval gates only decide whether a statement runs; once approved, its reach is bounded solely by the connected role's actual grants.
A, B, C, F — A, B, C, F
C — The threat model considers local/SiS/SPCS, but only local is actually shipped; SiS/SPCS are threat-model and roadmap scope only.
B — The scoping reason given is simply that there is no *.tf file anywhere in the repo.
reference-examples treat each of the three example apps as one section, rather than documenting every internal Streamlit page of each app?#A — The explicit scoping decision is one H2 per example app, to avoid restating the example READMEs page by page.
text_renderer as an extension point?#B — text_renderer accepts a preset name or callable on panel() and related display helpers.
B — tool_family(name) dispatch in tool_names.py maps tool names to a ToolFamily, consumed by tool_cards.py/tool_extract.py for rendering.
B — Each type folder can carry its own SKILL.md (+ reference/checklist), mounted via add_dirs, plus a shared types/shared/SKILL.md.
B — grounding_kind decides: tabular uses the deterministic engine/profile.py parser, the other kinds go through CoCo.
B — Documents/URLs are fetched by the host app; the CoCo session is granted no network tool.
reference-commands chapter the way a typical CLI tool would. What's the accurate explanation?#B — The library's primary surface is the Python API, not a CLI; Makefile targets get reference-commands for the demos, while the API is the library's own "Commands" analogue.
B — lletourmy/streamlit-coco is the temporary public release surface tagged for PyPI publish, until DevoteamSP/streamlit-coco is PyPI-validated.
DRY_RUN=1 make sync-release looks correct?#B — After a clean dry run, the documented next step is the committed/pushed sync, then tagging vX.Y.Z on lletourmy/streamlit-coco, never on -dev.
Every answer is also reachable per question above. This section keeps the full key for offline review and printing.
B — CocoSession owns a threading.Thread named coco-session running an asyncio loop that wraps CortexCodeSDKClient.
A — Core headless symbols import without loading Streamlit; UI exports resolve lazily through __getattr__/_LAZY_ATTRS, which is what makes headless_pipeline.py work with no Streamlit installed.
B — can_use_tool blocks the worker thread on PermissionManager.wait_for_decision() until resolved or approval_timeout_seconds elapses.
B — options_hash() hashes only tool-permission-affecting fields; the worker restarts only when that hash changes, not on every option edit.
B — This is a documented invariant: the preview component stays host-agnostic and does not know about job queues.
B — permissions.py special-cases AskUserQuestion and ExitPlanMode to always create a fresh request, regardless of prior "always allow."
B — This is the exact SnowflakeConfigNotFoundError message text.
B — CLIProbeError specifically means the binary exists but failed to answer --version; CLINotFoundError covers the not-on-PATH case.
B — SessionStartError is a worker-fails-to-start error; SessionNotReadyError covers timeout/boot-failure once started.
B — context= ("session_start", "session_ready"/"session", "query", "approval") steers which CocoError subclass the message-sniffing maps to.
B — CwdUploadError is raised for bad names, disallowed extensions, oversize payloads, and overwrite conflicts alike.
B — ApprovalTimeoutError is documented as also a TimeoutError.
B — Prompt injection is rated High severity; approval gates intercepting pre-execution are the primary mitigation, alongside a least-privilege role recommendation.
B — "Always allow" escalation is Medium severity, mitigated purely by its per-tool/per-session scope.
B — Repudiation is Medium severity, open as SEC-01 — nothing durable is written outside in-memory session state.
B — Mitigation is that the library never logs credentials and the SDK redacts them from its own output.
A — The flagged risk is elevation of privilege via a compromised dependency; mitigation is pip-audit, Gitleaks, and a committed uv.lock.
A — Approval gates only decide whether a statement runs; once approved, its reach is bounded solely by the connected role's actual grants.
A, B, C, F — A, B, C, F
C — The threat model considers local/SiS/SPCS, but only local is actually shipped; SiS/SPCS are threat-model and roadmap scope only.
B — The scoping reason given is simply that there is no *.tf file anywhere in the repo.
A — The explicit scoping decision is one H2 per example app, to avoid restating the example READMEs page by page.
B — text_renderer accepts a preset name or callable on panel() and related display helpers.
B — tool_family(name) dispatch in tool_names.py maps tool names to a ToolFamily, consumed by tool_cards.py/tool_extract.py for rendering.
B — Each type folder can carry its own SKILL.md (+ reference/checklist), mounted via add_dirs, plus a shared types/shared/SKILL.md.
B — grounding_kind decides: tabular uses the deterministic engine/profile.py parser, the other kinds go through CoCo.
B — Documents/URLs are fetched by the host app; the CoCo session is granted no network tool.
B — The library's primary surface is the Python API, not a CLI; Makefile targets get reference-commands for the demos, while the API is the library's own "Commands" analogue.
B — lletourmy/streamlit-coco is the temporary public release surface tagged for PyPI publish, until DevoteamSP/streamlit-coco is PyPI-validated.
B — After a clean dry run, the documented next step is the committed/pushed sync, then tagging vX.Y.Z on lletourmy/streamlit-coco, never on -dev.