Léo
130b49f75d
docs(security): document the tool approval gate and its default
...
The post-external-context gate is off unless ODYSSEUS_TOOL_APPROVAL_GATE is
set, but THREAT_MODEL.md described only the untrusted-context wrapper. A reader
auditing the prompt-injection posture would reasonably assume the gate was
active.
State the default, what it blocks when enabled, the two deliberate exemptions,
and note in Known Gaps that the compensating control for the missing shell
sandbox is off by default.
2026-09-23 11:09:48 +02:00
Léo
3412c4212e
fix(editor-drafts): refuse oversized drafts before parsing the body
...
The 256 MiB ceiling was only enforced inside _dump_payload, which runs after
FastAPI has parsed the request and after json.dumps has re-serialised it. By
that point the payload has been materialised several times over, so the limit
rejected an allocation it had already paid for.
Check Content-Length first, on both write routes. A request that omits or lies
about the header still reaches the exact byte count, which remains
authoritative.
2026-09-23 11:09:48 +02:00
Léo
edc94a244e
fix(search): bound and police the scholarly metadata lookups
...
The arXiv and OpenAlex title resolvers called two hardcoded endpoints with a
hand-written "Odysseus/0.20" User-Agent, no outbound-URL policy, and a full
12s timeout each. APP_VERSION was already 1.0.3, so the agent string was wrong
the moment it was written, and a scholarly query could hold a user-facing
search open for the sum of all three hops.
Move the endpoints to named constants, build the User-Agent from APP_VERSION,
run both calls through check_outbound_url (they follow redirects, so the final
host is not the one in the constant), and give the whole SearXNG -> OpenAlex ->
arXiv chain one shared wall-clock budget.
The budget is a ContextVar rather than a parameter so the existing test doubles
for _openalex_title_results and _arxiv_title_results keep working unchanged.
2026-09-23 11:09:48 +02:00
Alexandre Teixeira
7e798fe925
Merge pull request #6 from pewdiepie-archdaemon/pr/alteixeira20/subscription-provider-ux
...
feat(provider): improve subscription UX and lazy discovery
2026-09-22 14:02:55 +01:00
Alexandre Teixeira
8bb48780a1
feat(provider): add lazy Featherless model discovery
2026-09-22 13:12:19 +01:00
Alexandre Teixeira
2b2bf0fb90
fix(ui): refine provider endpoint controls
2026-09-22 13:12:19 +01:00
Alexandre Teixeira
46c8451a29
fix(ui): bust cache for collapsible subscription usage
2026-09-22 13:12:19 +01:00
Alexandre Teixeira
411559913c
feat(ui): refine subscription model and usage controls
2026-09-22 13:12:19 +01:00
Alexandre Teixeira
ed7ccfd584
feat(provider): support multiple ChatGPT subscriptions with usage
2026-09-22 13:12:19 +01:00
Alexandre Teixeira
45330097b8
Merge pull request #7 from pewdiepie-archdaemon/fix/maintainer-harness-ci-reproducibility-v1
...
fix(ci): make maintainer harness and lab workflow portable
2026-09-22 12:44:20 +01:00
Alexandre Teixeira
dd13f53507
ci: support maintainer lab pull requests
2026-09-22 12:39:14 +01:00
Alexandre Teixeira
822ceaaac4
fix(ci): make maintainer harness contract self-contained and portable
2026-09-22 11:31:45 +01:00
pewdiepie-archdaemon
297ad19248
Harden maintainer-preview harness and review fixes
...
Unify conversational domain routing, preserve artifact completion evidence, replace provisional tool-round prose with terminal synthesis, and resolve verified maintainer review findings across search, frontend module identity, path policy, configuration, and built-in skill startup.
2026-09-21 06:54:03 +00:00
pewdiepie-archdaemon
d7cad0621f
reserve wall time for artifact completion
2026-09-19 12:45:09 +00:00
pewdiepie-archdaemon
efe8dbeab3
preserve research tools through artifact completion
2026-09-19 09:24:22 +00:00
pewdiepie-archdaemon
3f9ff9d580
trust runtime materialization evidence
2026-09-19 02:44:36 +00:00
pewdiepie-archdaemon
e0c21b28d5
validate executable artifact completion code
2026-09-19 02:33:33 +00:00
pewdiepie-archdaemon
f5e3119b10
bind directory completion to output descendants
2026-09-19 02:25:27 +00:00
pewdiepie-archdaemon
27affcdb58
use native python for directory artifact completion
2026-09-19 02:14:13 +00:00
pewdiepie-archdaemon
b4cd39657d
recover mixed artifact tool payloads
2026-09-19 02:07:04 +00:00
pewdiepie-archdaemon
2308ff9b80
recover concatenated artifact writes
2026-09-19 01:53:12 +00:00
pewdiepie-archdaemon
b32fa31b37
bound malformed artifact recovery loops
2026-09-19 01:37:46 +00:00
pewdiepie-archdaemon
fbaa184a7b
recover required artifacts after tool suppression
2026-09-19 00:28:08 +00:00
pewdiepie-archdaemon
d0044163bf
exclude known inputs from completion artifacts
2026-09-19 00:08:57 +00:00
pewdiepie-archdaemon
f086f66a4f
preserve native web tools after network guard rejection
2026-09-18 21:41:24 +00:00
pewdiepie-archdaemon
75b2420239
constrain directory completion to child files
2026-09-18 20:51:04 +00:00
pewdiepie-archdaemon
ceb79d072a
handle directory artifact completion safely
2026-09-18 20:43:51 +00:00
pewdiepie-archdaemon
932f64739c
bump harness to 0.20.6
2026-09-18 20:17:59 +00:00
pewdiepie-archdaemon
0865e0e8da
require content in directory artifact outputs
2026-09-18 20:17:19 +00:00
pewdiepie-archdaemon
27e53e857c
recover boundedly from action-only replies
2026-09-18 18:22:34 +00:00
pewdiepie-archdaemon
d550bc0e74
bind binary completion code to required path
2026-09-18 18:16:12 +00:00
pewdiepie-archdaemon
7b5288f097
route binary artifact completion through Python
2026-09-18 18:08:32 +00:00
pewdiepie-archdaemon
43e50185f9
normalize named tool choice for Kimi thinking mode
2026-09-18 17:00:54 +00:00
pewdiepie-archdaemon
3985172885
recover empty artifact writer turns through body handoff
2026-09-18 16:33:30 +00:00
pewdiepie-archdaemon
629bd32d03
preserve output budget for artifact body recovery
2026-09-18 16:29:04 +00:00
pewdiepie-archdaemon
a394ea25d3
drop provider-invalid reasoning-only history turns
2026-09-18 16:22:59 +00:00
pewdiepie-archdaemon
508e017d89
preserve DeepSeek reasoning across clean tool rounds
2026-09-18 16:16:09 +00:00
pewdiepie-archdaemon
a453b71651
count artifact handoff once per response batch
2026-09-18 16:10:02 +00:00
pewdiepie-archdaemon
60de3b951f
retry invalid artifact body immediately
2026-09-18 16:07:34 +00:00
pewdiepie-archdaemon
a09acc43a6
retry bounded artifact body handoff
2026-09-18 16:02:26 +00:00
pewdiepie-archdaemon
3443b706a5
recover artifact body after repeated off-contract calls
2026-09-18 15:56:17 +00:00
pewdiepie-archdaemon
afbf8cc266
bind artifact completion to required output path
2026-09-18 15:47:13 +00:00
pewdiepie-archdaemon
4b1e21c653
enforce binary write guard before execution bridges
2026-09-18 15:39:10 +00:00
pewdiepie-archdaemon
50a86bc650
reject off-contract calls during artifact completion
2026-09-18 15:37:49 +00:00
pewdiepie-archdaemon
dff88f4fb0
preserve artifact request contract in native traces
2026-09-18 15:31:57 +00:00
pewdiepie-archdaemon
afbab148f2
trace artifact phase provider contract
2026-09-18 15:27:11 +00:00
pewdiepie-archdaemon
011daf9c38
fix bridge text writes over binary artifacts
2026-09-18 15:26:12 +00:00
pewdiepie-archdaemon
a46b742515
expose artifact phase state in agent steps
2026-09-18 15:23:12 +00:00
pewdiepie-archdaemon
26f387e719
fix repeated invalid tool argument loops
2026-09-18 14:59:34 +00:00
pewdiepie-archdaemon
e220a14895
expose required artifacts in turn audit
2026-09-18 14:58:57 +00:00