Commit Graph

78555 Commits

Author SHA1 Message Date
Peter Steinberger f12fe48075 refactor(gateway): finalize kernel composition (#122014) 2026-08-11 04:54:54 -07:00
Peter Steinberger 3cfb344f9f refactor(plugin-sdk): make API baseline module-mergeable (#121842) 2026-08-11 04:45:44 -07:00
Peter Steinberger 2cc11aff38 test(scripts): streamline Crabbox wrapper fakes (#122007)
Co-authored-by: Amp <amp@ampcode.com>
2026-08-11 04:33:11 -07:00
Peter Steinberger 12165769c7 refactor(agents): move OpenRouter failover ownership to its plugin and derive reason schemas from one tuple (#121898)
* refactor(agents): centralize failover ownership and reasons

* test(agents): move OpenRouter failover cases to plugin owner

* fix(agents): preserve prepared provider failover ownership

* test(agents): avoid failover mock shadowing

* fix(agents): preserve provider owner in error copy

* fix(agents): complete provider owner propagation

* chore(plugins): refresh failover type closure hashes
2026-08-11 04:30:18 -07:00
Peter Steinberger 03f56cfbc3 fix(memory): accept Windows extra-file Markdown casing (#121976)
* fix(memory): accept Windows extra-file Markdown casing

* fix(memory): keep extra-file casing policy private
2026-08-11 04:21:15 -07:00
Peter Steinberger 2b0ceb5622 refactor(gateway): invert config reloader ownership (#122004) 2026-08-11 04:18:53 -07:00
Peter Steinberger f1bb7cd919 test(sdk): consolidate packed consumer evidence (#122001)
* test(sdk): consolidate packed consumer evidence

* test(qa): refresh scenario owner references

* test(qa): narrow script execution assertion
2026-08-11 04:18:20 -07:00
Peter Steinberger 992126e382 refactor(sessions): drop the Sqlite infix from session-accessor exports (#121536)
* refactor(sessions): drop the Sqlite infix from session-accessor exports

The storage-neutral seam completed its file->SQLite swap on 2026-07-27;
the Sqlite-infixed export names and their X-as-Y rename blocks were the
fossil of that migration, giving every accessor operation two greppable
names. Rename ~148 exports to their canonical names at the definition
sites, delete the message-cut facade (its conflict->failed mask had one
consumer, which already handles conflict), collapse the remaining pure
delegates, and keep honest SQLite-mechanics names (scope resolution,
canonical repair, in-transaction primitives, storage-row types). The main
barrel's exported surface is byte-identical. Net -203 production LOC.
Part 2 of the session-accessor dual-layer collapse (part 1: #121316).

* fix: repair main-breaking lint/type/test failures blocking PR CI

Three breakages landed on main that push CI's changed-scope never runs:
a caught-error cause missing in the release-validation script and two
type errors in the package-acceptance test (direct commit 1f591bba56),
and a memory-host regression where fs-safe 0.5.4 (#121508) started
throwing FsSafeError("not-file") for extra-path reads whose parent chain
hits a regular file, breaking the missing-file empty-text contract that
rejection unchanged.

Item 4 repairs managed-image action E2E narrowing from bad30d5a74 (#77017).
Item 5's chat-message mock repair was superseded upstream by 750d0dcd9e, whose broader fetch typing and explicit download capture preserve the same contract.
Item 6 restores #121258's cursor token contract after #77017 hard-coded pointer.
Item 7's managed-image thumbnail-path repair was superseded upstream by 750d0dcd9e, which preserves the same contract in main's reorganized URL structure.
Item 8 records #121600's explicit command-bearing lifecycle classification.
Item 9's cron assertion repair was superseded upstream by 3cd034f7a8, whose exact diagnostic rewrite includes the same redacted alert contract.
Item 10 forwards fs-safe 0.5.4 bigint lstat options through the snapshot mock.
Item 11 refreshes release-matrix test ownership after 1f591bba56.
Item 12 awaits f3e1efead48's setup-admission settlement in direct session tests.
Item 13's media FileStore-key repair was superseded upstream by cf432ec871, which fixes the same Windows root cause at the owner boundary.
Item 14 regenerates Swift approval reviewer fields added by 9935ca3b30.
2026-08-11 11:13:29 +00:00
Peter Steinberger 8327504c84 refactor(agents): split systemd into concept modules (#122002) 2026-08-11 04:09:49 -07:00
Peter Steinberger bcaec0cf14 fix: resume main sessions after gateway restarts (#121969)
* fix(agents): always resume main sessions after restart

* fix(ui): render internal messages as system rows

* docs: update gateway restart recovery semantics

* refactor(sessions): simplify restart hook checkpoints

* refactor(agents): consolidate restart recovery claims

* test(agents): update delivery recovery revision guard

* fix(plugin-sdk): preserve restart hook state contract

* fix(ui): localize system row label

* test(agents): remove obsolete recovery import

* test(agents): align abort-code propagation with always-resume recovery

* fix(ui): share notice-aware turn boundaries

* test(agents): reconcile restart recovery ownership

* fix(ci): reconcile rebased recovery and UI checks
2026-08-11 04:01:34 -07:00
Peter Steinberger 63bba283a6 test(doctor): use fixed OAuth sidecar vectors (#121986)
* test(doctor): use fixed OAuth sidecar vectors

* test(doctor): preserve Linux warning assertion
2026-08-11 03:59:58 -07:00
Peter Steinberger 26d0158e50 test(packaging): speed tarball integrity checks (#121999)
Co-authored-by: Amp <amp@ampcode.com>
2026-08-11 03:56:38 -07:00
Peter Steinberger ffc665bbb3 fix(discord): keep durable forum batches in one thread (#121165) 2026-08-11 03:54:26 -07:00
Peter Steinberger 452cf09c07 perf(cli): skip inactive provider cleanup imports (#121997) 2026-08-11 03:51:35 -07:00
Peter Steinberger ad22faffe0 refactor(gateway): register resident lifecycles (#121996) 2026-08-11 03:51:02 -07:00
Peter Steinberger e082acd077 refactor(agents): collapse stream relay layers (#121978)
* refactor(agents): inline stream runtime preparation

* refactor(agents): inline stream finalization
2026-08-11 03:46:29 -07:00
Peter Steinberger bef753b278 refactor(agents): split reply-run registry into concept modules (#121995) 2026-08-11 03:38:54 -07:00
Peter Steinberger 9af35e72f2 fix(gateway): preserve attachment order in chat history (#121980)
* fix(gateway): preserve durable attachment ordering

* test(gateway): expect claim-only attachment facts

* test(gateway): satisfy claim assertion lint
2026-08-11 03:37:41 -07:00
Peter Steinberger 33ce7313d7 improve: speed up plugin npm package tests (#121989)
* test(packaging): collapse duplicate plugin installs

* test(packaging): combine bundled dependency proof

* test(packaging): name packed artifact proof

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-08-11 03:35:33 -07:00
Ayaan Zaidi 79016b415a refactor(telegram): unify formatted-to-plain send degradation in one orchestrator (#121990)
The Telegram send-funnel parity invariant (durable and streaming funnels must degrade formatted sends identically) was prose-enforced and had drifted: draft previews and message edits only degraded on HTML-parse 400s, not empty-content 400s. One orchestrator (withTelegramPlainFallback) now owns classification, guard, logging, and plain-chunk planning for all 11 call sites; withTelegramHtmlParseFallback and buildTelegramPlainFallbackPlan are deleted. Net -29 production LOC. Behavior change: previews/edits recover empty-content 400s as plain text; degrade logs unify to `degrade=plain-fallback:<trigger>`.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 10:29:26 +00:00
Peter Steinberger 771bece21b docs(config): refresh generated baseline hash (#121992)
The drift starts with bdf202ccc8 (#121653), which changed the skills.workshop.autonomous.mode help text without regenerating the config docs baseline.
2026-08-11 03:23:54 -07:00
Peter Steinberger 2731dc24e5 fix(plugin-sdk): keep inbound reply shim through next SDK major (#121922)
* fix(plugin-sdk): honor major-gated reply shim retirement

* fix(plugin-sdk): preserve compat code literals

* chore(plugin-sdk): refresh compatibility API baseline
2026-08-11 03:18:07 -07:00
thomas.szbay ecc6d5a9fe fix(e2e): download non-root installer before execution
Download the non-root Docker smoke installer before executing it.

- preserve the existing 30-second connection and 300-second transfer limits
- clean up the temporary installer on success or failure
- prove failed downloads cannot execute partial installer content

Co-authored-by: thomas.szbay <xydigit-zt@users.noreply.github.com>
Punchcard-Session: golden-lantern-meadow-0x
2026-08-11 18:12:52 +08:00
wangmiao0668000666 c719cbbfe9 fix(e2e): preserve Unicode in Telegram proof tails (#109940)
Punchcard-Session: ember-brook-workshop-qc

Co-authored-by: wangmiao0668000666 <290215524+wangmiao0668000666@users.noreply.github.com>
2026-08-11 18:09:29 +08:00
Peter Steinberger 226c699a23 feat(ai): add provider video input contract (#121887)
* feat(llm): add user video input contract

* fix(ai): preserve structured tool results

* refactor(ai): isolate provider video input types

* style(ai): format provider transform imports

* chore(ai): register provider type entrypoint
2026-08-11 03:08:27 -07:00
Peter Steinberger db33736137 test(tooling): decouple MinGit curl assertion (#121977) 2026-08-11 03:07:13 -07:00
Peter Steinberger f104ce8b09 refactor(agents): fold subagent lifecycle into one controller (#121972)
* refactor(agents): fold lifecycle factories into SubagentLifecycleController

* refactor(agents): make composition root explicit

* fix(agents): atomic terminal-discard for dismissed deliveries

* fix(agents): preserve lifecycle build boundaries

* fix(agents): satisfy lifecycle static gates

* refactor(agents): move lifecycle context types out of the controller module to break the architecture cycle
2026-08-11 03:06:55 -07:00
joshavant e5be751e4f fix(auto-reply): align CLI fallback delivery 2026-08-11 05:00:17 -05:00
joshavant 885e3705bc fix(agents): seal plugin finalization handoff 2026-08-11 05:00:17 -05:00
joshavant 4ad392abe7 refactor(auto-reply): centralize source delivery state 2026-08-11 05:00:17 -05:00
joshavant cde0af4c60 test(auto-reply): isolate prepared harness delivery proof 2026-08-11 05:00:17 -05:00
joshavant 7582e24aba fix(auto-reply): preserve post-compaction prompt context 2026-08-11 05:00:17 -05:00
joshavant ba97cd010a fix(auto-reply): align prepared delivery prompts 2026-08-11 05:00:17 -05:00
joshavant 174800da0e fix(auto-reply): classify implicit delivery defaults 2026-08-11 05:00:17 -05:00
joshavant 3d6debad13 fix(auto-reply): seal prepared delivery ownership 2026-08-11 05:00:17 -05:00
joshavant eacf6774fa test(auto-reply): align prepared harness proof with SQLite sessions 2026-08-11 05:00:17 -05:00
joshavant 3d6028da4c test(auto-reply): prove prepared ownership through queue params 2026-08-11 05:00:17 -05:00
joshavant 375df347c4 fix(auto-reply): apply prepared delivery before streaming 2026-08-11 05:00:17 -05:00
joshavant 1d1a7fa499 fix(auto-reply): keep prepared delivery ownership internal 2026-08-11 05:00:17 -05:00
joshavant d1ea4ac491 test(auto-reply): prove prepared harness delivery owner 2026-08-11 05:00:17 -05:00
joshavant 3cb3f1e426 fix(auto-reply): bind delivery to prepared harness 2026-08-11 05:00:17 -05:00
joshavant 33a2daf2ba fix(auto-reply): preserve fallback harness delivery owner 2026-08-11 05:00:17 -05:00
joshavant 51bdef6d21 test(auto-reply): prove rejected fallback delivery 2026-08-11 05:00:17 -05:00
joshavant 1c44738a33 fix(auto-reply): update delivery owner across fallbacks 2026-08-11 05:00:17 -05:00
Peter Steinberger f11b08c583 refactor(gateway): extract socket-free kernel factory (#121981) 2026-08-11 02:58:25 -07:00
NianJiu f5ecd2c884 fix(ui): pair earlier tool results with calls (#110868)
Punchcard-Session: silver-orchard-workshop-q1

Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com>
2026-08-11 17:55:05 +08:00
Peter Steinberger fba9a094db test(runner): delete duplicate SQLite replay (#121983)
Co-authored-by: Amp <amp@ampcode.com>
2026-08-11 02:54:58 -07:00
Peter Steinberger 1ec893a80a fix(cli): execute mjs launcher fallback (#121963)
Align the main-module guard with the supported dist/entry.mjs launcher candidate so packaged commands cannot exit successfully without running.\n\nRefs #121949.
2026-08-11 02:52:52 -07:00
SunnyShu d758ec48d4 fix(context-engine): durable state stalls in long sessions (#121647)
* [AI] fix(context-engine): bound accepted-turn cap to the current turn range

The accepted-turn transcript read applied the 8 MiB / 20k-event cap to
the entire active prefix instead of the admitted turn range, so durable
context engines permanently blocked every later small turn once session
history exceeded the cap. Restrict the cap check to rows at or after the
admission message position while preserving the full messages +
prePromptMessageCount payload contract.

Fixes #121623

Co-Authored-By: Claude <noreply@anthropic.com>

* [AI] test(context-engine): clean up large-prefix regression temp dirs

ClawSweeper P3: the two new accepted-turn regression cases created
multi-megabyte SQLite fixture directories that were never removed.
Track them and delete them in afterEach.

Related to #121623

Co-Authored-By: Claude <noreply@anthropic.com>

* oc-136: make durable turn commits turn-local

* oc-514: use canonical temp-dir cleanup helper

* oc-514.7: version turn-local durable commits

* oc-514.9: preserve legacy durable rows

* oc-514.8: refresh plugin SDK API baseline

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Josh Lehman <550978+jalehman@users.noreply.github.com>
2026-08-11 02:52:49 -07:00
joshavant 4b08d9aa75 test(cron): narrow declarative add results 2026-08-11 04:47:10 -05:00