Peter Steinberger
9eb17a0277
fix(shared): bound epoch expiry helpers
2026-05-30 14:55:37 -04:00
Peter Steinberger
99ce71ddbb
feat: improve MCP operability
...
Summary:
- Add MCP status, probe, and projected-tools CLI surfaces.
- Add per-server MCP tool filters plus resource/prompt utility projection.
- Harden MCP runtime discovery, listChanged invalidation, request-failure backoff, and metadata sanitization.
- Preserve current main type health by narrowing the shared future timestamp guard.
Verification:
- pnpm test src/shared/number-coercion.test.ts src/agents/auth-profiles/usage.test.ts src/cli/mcp-cli.test.ts src/agents/agent-bundle-mcp-runtime.test.ts src/agents/agent-bundle-mcp-tools.materialize.test.ts -- --reporter=verbose
- pnpm lint
- pnpm tsgo:prod
- pnpm build
- git diff --check origin/main...HEAD
- GitHub Actions: dependency-guard, real behavior proof, security high MCP boundary, build/lint/types/guards/docs, gateway/plugin/agent shards green on PR head.
Known proof gap:
- Existing checks-node-agentic-commands-doctor no-output watchdog reproduced locally outside touched paths.
2026-05-30 19:48:52 +01:00
Peter Steinberger
8eeaa45729
refactor: route model catalog imports to core package
...
Route internal model catalog imports to the extracted @openclaw/model-catalog-core package and delete obsolete internal facades.
Keep public SDK declarations self-contained by wrapping core helpers at public boundaries instead of leaking private package imports.
Verification:
- pnpm test src/plugins/contracts/model-catalog-core-imports.test.ts src/plugins/sdk-alias.test.ts packages/model-catalog-core/src/configured-model-refs.test.ts packages/model-catalog-core/src/provider-model-id-normalize.test.ts packages/model-catalog-core/src/provider-model-id-normalization.test.ts src/config/config.model-ref-validation.test.ts src/agents/model-selection.test.ts src/plugin-sdk/provider-model-shared.test.ts -- --reporter=verbose
- pnpm check:test-types
- pnpm test:extensions:package-boundary:compile
- pnpm build
- rg "@openclaw/model-catalog-core" dist/plugin-sdk packages/plugin-sdk/dist -n --glob '*.d.ts' || true
- git diff --check
- autoreview clean after fix
CI note: merged with admin override because checks-node-agentic-commands-doctor and checks-node-core-runtime-infra-state failed twice with exit 143/no-output watchdog termination after prior passing test output, while relevant local proof and the rest of CI were green.
2026-05-30 17:48:18 +01:00
Peter Steinberger
5ba3505fed
fix(bedrock): bound mantle iam token expiry
2026-05-30 12:31:08 -04:00
Peter Steinberger
30e1556cda
refactor: extract model catalog core package
...
* refactor: extract model catalog core package
* refactor: route model catalog imports through package boundary
* build: include model catalog in plugin sdk package dts
* fix: preserve static fallback model metadata
2026-05-30 16:33:45 +01:00
Peter Steinberger
55d4456751
fix(webhook): bound replay response expiry timestamps
2026-05-30 10:21:50 -04:00
Peter Steinberger
f823123aa5
fix(time): centralize date timestamp fallback
2026-05-30 08:59:36 -04:00
Peter Steinberger
d2f69ecc3b
fix(migrate): guard report timestamp formatting
2026-05-30 08:46:55 -04:00
Peter Steinberger
7c5b55c5ff
fix(ui): ignore invalid reset timestamps
2026-05-30 07:00:01 -04:00
Peter Steinberger
28eb4cfa12
fix(codex): ignore invalid history timestamps
2026-05-30 05:28:14 -04:00
Peter Steinberger
ff2a99b22e
fix(codex): ignore invalid rate limit reset dates
2026-05-30 05:10:50 -04:00
Peter Steinberger
7b699fddac
fix(auth): guard codex jwt expiry timestamps
2026-05-30 05:03:03 -04:00
Peter Steinberger
5f4fc7512e
fix(runtime): centralize timeout grace clamping
2026-05-30 03:15:50 -04:00
Peter Steinberger
90d569e896
fix(telegram): centralize positive timer bounds
2026-05-29 19:25:30 -04:00
Peter Steinberger
d5e8da8499
fix(ci): repair main normalization checks
2026-05-29 23:53:28 +01:00
Peter Steinberger
a0c1f5962d
fix(runtime): centralize safe timer timeout resolution
2026-05-29 15:36:38 -04:00
Peter Steinberger
bf3921dab7
refactor: centralize timer-safe timeout bounds
2026-05-29 13:44:41 -04:00
Peter Steinberger
604a6b5452
fix(minimax): reject unsafe oauth expiry
2026-05-29 13:15:00 -04:00
Peter Steinberger
5a294cb2bd
refactor: centralize safe expiry parsing
2026-05-29 12:38:11 -04:00
Vincent Koc
27e13933c0
refactor: share store writer queue
2026-05-29 16:48:34 +02:00
Peter Steinberger
25b3c8ef71
refactor: remove old net policy sources
2026-05-29 09:45:14 +01:00
Peter Steinberger
d4a17477b0
fix(schema): reject noncanonical array refs
2026-05-29 04:25:10 -04:00
Peter Steinberger
1e5ccd1ce8
fix(matrix): centralize initial sync limit coercion
2026-05-29 01:22:24 -04:00
Peter Steinberger
30c24bba97
fix(core): centralize non-finite integer options
2026-05-29 00:28:32 -04:00
Peter Steinberger
7f6579e416
fix(shared): default non-finite string sample limits
2026-05-28 22:35:00 -04:00
Peter Steinberger
19d9e71b84
fix(shared): bound non-finite expiring cache options
2026-05-28 22:33:10 -04:00
Peter Steinberger
b877fc58a5
refactor: centralize numeric coercion helpers
2026-05-28 18:27:36 -04:00
Peter Steinberger
a2d386638c
fix: validate byteplus video seeds
2026-05-28 17:37:52 -04:00
Peter Steinberger
c84d53ccfe
fix: validate minimax speech voice settings
2026-05-28 17:26:29 -04:00
Peter Steinberger
c9c53e3153
fix: harden config array index parsing
2026-05-28 11:58:40 -04:00
Peter Steinberger
b6ef874220
fix: reject partial numeric parsing
2026-05-28 10:51:32 -04:00
Peter Steinberger
bb46b79d3c
refactor: internalize OpenClaw agent runtime ( #85341 )
...
* refactor: extract agent core package
Introduce packages/agent-core as the OpenClaw-owned home for reusable agent loop, harness, session, prompt, and runtime dependency contracts.
* refactor: extract shared llm runtime
Move provider model registries, stream wrappers, OAuth helpers, and LLM utilities into src/llm with plugin-sdk barrels instead of depending on the old embedded runtime layout.
* refactor: remove pi runtime internals
Rename remaining Pi-shaped agent surfaces to OpenClaw agent runtime names, delete obsolete Pi docs and package graph checks, and add the third-party notice for incorporated code.
* refactor: tighten agent session runtime
Make agent-core/runtime dependencies explicit, consolidate compaction and session transcript helpers, and move model/session helpers behind OpenClaw-owned contracts.
* refactor: remove static model and pi auth paths
Drop static model catalogs and Pi auth bridges, move model/provider facts to manifest-owned runtime contracts, and harden internal embedded-agent utilities.
* refactor: remove legacy provider compat paths
* docs: remove agent parity notes
* fix: skip provider wildcard metadata parsing
* refactor: share session extension sdk loading
* refactor: inline acpx proxy error formatter
* refactor: fold edit recovery into edit tool
* fix: accept extension batch separator
* test: align startup provider plugin expectations
* fix: restore provider-scoped release discovery
* test: align static asset packaging expectations
* fix: run static provider catalogs during scoped discovery
* fix: add provider entry catalogs for scoped live discovery
* fix: load lightweight provider catalog entries
* fix: refresh provider-scoped plugin metadata
* fix: keep provider catalog entries on release live path
* fix: keep static manifest models in release live checks
* fix: harden release model discovery
* fix: reduce OpenAI live cache probe reasoning
* fix: disable OpenAI cache probe reasoning
* ci: extend OpenAI gateway live timeout
* fix: extend live gateway model budget
* fix: stabilize release validation regressions
* fix: honor provider aliases in model rows
* fix: stabilize release validation lanes
* fix: stabilize release memory qa
* ci: stabilize release validation lanes
* ci: prefer ipv4 for live docker node calls
* fix: restore shared tool-call stream wrapper
* ci: remove legacy pi test shard alias
* fix: clean up embedded agent test drift
* fix: stabilize runtime alias status
* fix: clean up embedded agent ci drift
* fix: restore release ci invariants
* fix: clean up post-rebase runtime drift
* fix: restore release ci checks
* fix: restore release ci after rebase
* fix: remove stale pi runtime path
* test: align compaction runtime expectations
* test: update plugin prerelease expectations
* fix: handle claude live tool approvals
* fix: stabilize release validation gates
* fix: finish agent runtime import
* test: finish post-rebase agent runtime mocks
* fix: keep codex compaction native
* fix: stabilize codex app-server hook tests
* test: isolate codex diagnostic active run
* test: remove codex diagnostic completion race
# Conflicts:
# extensions/codex/src/app-server/run-attempt.test.ts
* ci: fix full release manifest performance run id
* refactor: narrow llm plugin sdk boundary
* chore: drop generated google boundary stamps
* fix: repair rebase fallout
* fix: clean up rebased runtime references
* fix: decode codex jwt payloads as base64url
* fix: preserve shipped pi runtime alias
* fix: add scoped sdk virtual modules
* fix: decode llm codex oauth jwt as base64url
* fix: avoid stale vertex adc negative cache
* fix: harden tool arg decoding and codeql path
* fix: keep vertex adc negative checks live
* refactor: consolidate codex jwt and edit helpers
* fix: await codex oauth node runtime imports
* fix: preserve sdk tool and notice contracts
* fix: preserve shipped compat config boundaries
* fix: align codex oauth callback host
* fix: terminate agent-core loop streams on failure
* fix: keep codex oauth callback alive during fallback
* ci: include session tools in critical codeql scans
* fix: keep Cloudflare Anthropic provider auth header
* docs: redirect legacy pi runtime pages
* fix: honor bundled web provider compat discovery
* fix: protect session output spill files
* fix: keep legacy agent dir env blocked
* fix: contain auto-discovered skill symlinks
* fix: harden agent core sdk proxy surfaces
* fix: restore approval reaction sdk compat
* fix: keep live docker runs bounded
* fix: keep codex oauth redirect host aligned
* fix: resolve post-rebase agent runtime drift
* fix: redact anthropic oauth parse failures
* fix: preserve responses strict tool shaping
* fix: repair agent runtime rebase cleanup
* docs: redirect retired parity pages
* fix: bound auto-discovered resources to roots
* fix: repair post-rebase agent test drift
* fix: preserve bundled provider allowlist migration
* fix: preserve manifest-owned provider aliases
* fix: declare photon image dependency
* fix: keep provider headers out of proxy body
* fix: preserve shipped env aliases
* fix: refresh control ui i18n generated state
* fix: quote read fallback paths
* fix: preview edits through configured backend
* test: satisfy core test typecheck
* fix: preserve ZAI usage auth fallback
* test: repair codex diagnostic test
* fix: repair agent runtime rebase drift
* test: finish embedded runner import rename
* fix: repair agent runtime rebase integrations
* test: align compaction oauth fallback expectations
* fix: allow sdk-auth session models
* fix: update doctor tool schema import
* fix: preserve bedrock plugin region
* fix: stream harmony-like prose immediately
* ci: include session runtime in codeql shards
* fix: repair latest rebase integrations
* fix: honor explicit codex websocket transport
* fix: keep openai-compatible credentials provider-scoped
* fix: refresh sdk api baseline after rebase
* fix: route cli runtime aliases through openclaw harness
* test: rename stale harness mock expectation
* test: rename embedded agent overflow calls
* test: clean embedded auth test wording
* test: use openclaw stream types in deepinfra cache test
* fix: refresh sdk api baseline on latest main
* fix: honor bundled discovery compat allowlists
* fix: refresh sdk api baseline after latest rebase
* fix: remove stale rebase imports
* test: rename stale model catalog mock
* test: mock renamed doctor runtime modules
* fix: map canonical kimi env auth
* fix: use internal model registry in bench script
* fix: migrate deepinfra provider catalog entry
* fix: enforce builtin tool suppression
* fix: route compaction auth and proxy payloads safely
* refactor: prune unused llm registry leftovers
* test: update codex hooks session import
* test: fix model picker ci coverage
* test: align model picker auth mock types
2026-05-27 19:24:04 +01:00
Peter Steinberger
dc5954b0f8
fix(gateway): reject no-auth tailscale exposure
...
Fixes #50630 .
Replaces stale PR #50631 .
Behavior: reject gateway auth mode none when Tailscale Serve or Funnel exposes the gateway, across config validation, install-token preflight, and runtime startup.
Proof:
- node scripts/run-vitest.mjs src/config/config.gateway-tailscale-bind.test.ts src/gateway/server-runtime-config.test.ts src/commands/doctor-gateway-auth-token.test.ts
- .agents/skills/autoreview/scripts/autoreview --mode local
- node scripts/crabbox-wrapper.mjs run --shell -- "pnpm check:changed" (run_5a999c1e11c0, exit 0)
- GitHub PR checks clean on 0b306e8e00ebfe2856e672fbd1964a51a69bfe58; prior checkout/diff failures were GitHub infrastructure and cleared after rebase.
2026-05-27 14:11:17 +01:00
Peter Steinberger
3548cff14b
refactor: migrate validators to TypeBox ( #86639 )
...
* refactor: migrate validators to typebox
* fix: preserve json schema resource refs
* chore: clean schema preflight recursion
* refactor: remove lobster ajv shim
* fix: support schema array refs
* fix: validate schema dependencies
* fix: preserve schema contract checks
* fix: support same-document schema refs
* fix: preserve untyped map defaults
* fix: preserve schema default semantics
* test: avoid thenable schema literals
* test: build conditional schema key
* fix: defer resource id refs to typebox
* fix: reject invalid schema enum metadata
* fix: preserve default branch semantics
* fix: resolve schema resource refs
* fix: narrow conditional default fallback
* fix: preserve uri format validation
* fix: preserve validator compatibility
* test: avoid ajv cache lint violation
* fix: preserve typebox validation diagnostics
* fix: validate defaulted conditional schemas
* fix: normalize mcp draft schemas
* fix: preserve tuple schema defaults
* fix: resolve relative schema refs
* fix: scope typebox format semantics
* fix: align conditional format defaults
* fix: decode schema pointer refs
* fix: filter grouped secretref diagnostics
* fix: preserve default conditional compatibility
* fix: preserve nullable schema compatibility
* fix: settle defaults before conditionals
* fix: preserve default validation invariants
* fix: validate dynamic schema refs
* fix: reject malformed nullable schemas
2026-05-26 08:45:28 +01:00
Peter Steinberger
77d9ac30bb
refactor: reuse shared coercion helpers ( #86419 )
...
* refactor: share talk event metric extraction
* refactor: reuse shared coercion helpers
* refactor: reuse shared primitive guards
* refactor: reuse shared record guard
* refactor: reuse shared primitive helpers
* refactor: reuse shared string guards
* refactor: reuse shared non-empty string guard
* refactor: share plugin primitive coercion helpers
* refactor: reuse plugin coercion helpers
* refactor: reuse plugin coercion helpers in more plugins
* refactor: reuse channel coercion helpers
* refactor: reuse monitor coercion helpers
* refactor: reuse provider coercion helpers
* refactor: reuse core coercion helpers
* refactor: reuse runtime coercion helpers
* refactor: reuse helper coercion in codex paths
* refactor: reuse helper coercion in runtime paths
* refactor: reuse codex app-server coercion helpers
* refactor: reuse codex record helpers
* refactor: reuse migration and qa record helpers
* refactor: reuse feishu and core helper guards
* refactor: reuse browser and policy coercion helpers
* refactor: reuse memory wiki record helper
* refactor: share boolean coercion helpers
* refactor: reuse finite number coercion
* refactor: reuse trimmed string list helpers
* refactor: reuse string list normalization
* refactor: reuse remaining string list helpers
* refactor: reuse string entry normalizer
* refactor: share sorted string helpers
* refactor: share string list normalization
* test: preserve command registry browser imports
* refactor: reuse trimmed list helpers
* refactor: reuse string dedupe helpers
* refactor: reuse local dedupe helpers
* refactor: reuse more string dedupe helpers
* refactor: reuse command string dedupe helpers
* refactor: dedupe memory path lists with helper
* refactor: expose string dedupe helpers to plugins
* refactor: reuse core string dedupe helpers
* refactor: reuse shared unique value helpers
* refactor: reuse unique helpers in agent utilities
* refactor: reuse unique helpers in config plumbing
* refactor: reuse unique helpers in extensions
* refactor: reuse unique helpers in core utilities
* refactor: reuse unique helpers in qa plugins
* refactor: reuse unique helpers in memory plugins
* refactor: reuse unique helpers in channel plugins
* refactor: reuse unique helpers in core tails
* refactor: reuse unique helper in comfy workflow
* refactor: reuse unique helpers in test utilities
* refactor: expose unique value helper to plugins
* refactor: reuse unique helpers for numeric lists
* refactor: replace index dedupe filters
* refactor: reuse string entry normalization
* refactor: reuse string normalization in plugin helpers
* refactor: reuse string normalization in extension helpers
* refactor: reuse string normalization in channel parsers
* refactor: reuse string normalization in memory search
* refactor: reuse string normalization in provider parsers
* refactor: reuse string normalization in qa helpers
* refactor: reuse string normalization in infra parsers
* refactor: reuse string normalization in messaging parsers
* refactor: reuse string normalization in core parsers
* refactor: reuse string normalization in extension parsers
* refactor: reuse string normalization in remaining parsers
* refactor: reuse string normalization in final parser spots
* refactor: reuse string normalization in qa media helpers
* refactor: reuse normalization in provider and media lists
* refactor: reuse normalization for remaining set filters
* refactor: reuse normalization in policy allowlists
* refactor: reuse normalization in session and owner lists
* refactor: centralize primitive string lists
* refactor: reuse lowercase entry helpers
* refactor: reuse sorted string helpers
* refactor: reuse unique trimmed helpers
* refactor: reuse string normalization helpers
* refactor: reuse catalog string helpers
* refactor: reuse remaining string helpers
* refactor: simplify remaining list normalization
* refactor: reuse codex auth order normalization
* chore: refresh plugin sdk api baseline
* fix: make shared string sorting deterministic
* chore: refresh plugin sdk api baseline
* fix: align host env security ordering
2026-05-25 21:20:41 +01:00
Nimrod Gutman
c791e4242b
fix(gateway): gate talk secret bootstrap handoff ( #85690 )
...
Merged via squash.
Prepared head SHA: 9247cdab05
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com >
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com >
Reviewed-by: @ngutman
2026-05-25 11:34:12 +03:00
zhang-guiping
63545693a0
fix(message-tool): normalize send body aliases ( #84102 )
2026-05-22 20:38:08 +01:00
Peter Steinberger
9210dfc091
fix(skills): accept macos os requirement on darwin ( #85451 )
...
* fix(skills): accept macos os requirement on darwin
* fix: satisfy lint for macos os alias
2026-05-22 18:23:31 +01:00
Neerav Makwana
0a95e53602
fix(messages): strip unsupported citation markers ( #85204 ) (thanks @neeravmakwana)
...
Co-authored-by: Neerav Makwana <261249544+neeravmakwana@users.noreply.github.com >
2026-05-22 12:33:03 +01:00
Alex Knight
5d01be1070
Add chat picker search and pagination
2026-05-22 19:07:21 +10:00
Andy Ye
c2004fe662
fix(agents): surface blocked subagent completions ( #80886 )
...
Summary:
- The PR adds shared blocked-liveness normalization, applies it to agent.wait, gateway dedupe, subagent registry, and announcement paths, and adds regression tests plus a changelog entry.
- Reproducibility: yes. from source inspection: current main accepts blocked lifecycle/wait metadata as ok thr ... gateway wait and registry completion paths. I did not run a live provider overflow in this read-only pass.
Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(agents): normalize blocked wait completions
- PR branch already contained follow-up commit before automerge: fix(agents): surface blocked subagent completions
Validation:
- ClawSweeper review passed for head 224785c8a6 .
- Required merge gates passed before the squash merge.
Prepared head SHA: 224785c8a6
Review: https://github.com/openclaw/openclaw/pull/80886#issuecomment-4427552621
Co-authored-by: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com >
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
2026-05-21 22:34:21 +00:00
Nimrod Gutman
94d8391c03
[codex] restore QR bootstrap operator handoff ( #83684 )
...
Merged via squash.
Prepared head SHA: 2dc955cfb7
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com >
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com >
Reviewed-by: @ngutman
2026-05-19 20:59:09 +03:00
Vincent Koc
46061442e7
test: share process platform spy helper
2026-05-17 16:52:46 +08:00
Vincent Koc
7f46876a5d
fix(auth): sanitize persisted device auth tokens
2026-05-16 13:18:22 +08:00
Peter Steinberger
f0ceb3c5aa
fix(auto-reply): restrict no-reply to automatic groups
2026-05-15 21:29:39 +01:00
Peter Steinberger
8ac30279b3
fix: strip delivery function response leaks
...
Strip adjacent plural function-call/function-response XML on delivery paths while preserving prose examples.
2026-05-15 17:47:27 +01:00
Peter Steinberger
cf79689ca1
fix: strip attributed final tags
...
Fix Gemini/Gemma attributed and self-closing <final> tag leaks across sanitizer, reasoning cleanup, and embedded Pi streaming enforcement.\n\nProof posted in PR body: focused Vitest, formatting, diff check, real Google Gemini/OpenRouter/local Gemma live output.
2026-05-15 17:18:24 +01:00
Peter Steinberger
29b5563ccd
fix: strip adjacent function response scaffolding ( #82155 )
...
Summary:
- Strip adjacent function_response workflow output after stripped XML tool-call scaffolding.
- Cover multiline, compact, dangling, chained, prose-like, and same-line-tail response forms.
- Add regression coverage for the production sanitizeUserFacingText path and the shared assistant-visible-text sanitizer.
Verification:
- node scripts/run-vitest.mjs src/shared/text/assistant-visible-text.test.ts src/agents/pi-embedded-helpers.sanitizeuserfacingtext.test.ts -- --reporter=verbose
- git diff --check origin/main...HEAD
- /Users/steipete/Projects/agent-scripts/skills/codex-review/scripts/codex-review --mode branch --base origin/main --full-access --output /tmp/codex-review-82155-rerun.txt --parallel-tests "node scripts/run-vitest.mjs src/shared/text/assistant-visible-text.test.ts src/agents/pi-embedded-helpers.sanitizeuserfacingtext.test.ts -- --reporter=verbose"
- GitHub Real behavior proof: https://github.com/openclaw/openclaw/actions/runs/25926897171
2026-05-15 16:48:33 +01:00
Kaspre
44840007d4
fix(agents): scope custom provider baseUrl SSRF trust by origin ( #80751 )
...
* fix(agents): scope provider SSRF trust by origin
* fix(provider): preserve explicit private-network deny
* docs(provider): document exact-origin SSRF trust
* test(provider): cover exact-origin SSRF edges
* docs(provider): align local model private-origin guidance
* refactor(ssrf): keep policy merging in infra
* test(ssrf): cover exact-origin trust through guard
* test(ssrf): block sibling private-origin redirects
* fix(provider): keep loopback trust origin-scoped
* fix(provider): block metadata origin trust
* fix(ssrf): keep metadata rebinding blocked
* fix(ssrf): block cloud metadata origins
* fix(ssrf): block ipv6 metadata origins
* fix(ssrf): block embedded metadata origins
* test(ssrf): cover embedded link-local metadata
* test(provider): cover custom anthropic proxy classification
* test(provider): widen transport policy mock
* test(plugin-sdk): assert metadata-IP allowedOrigins entries are rejected
Plugin authors can construct an SsrFPolicy that lists any well-formed
http(s) origin in allowedOrigins. The abuse-resistance lives one layer
deeper, in resolvePinnedHostnameWithPolicy's metadata/link-local block.
Add an SDK-level smoke test asserting that contract directly:
- AWS/Alibaba IMDS IPv4 literals, GCP metadata canonical hostname,
IPv6 ULA metadata literal, and non-metadata link-local IPv4 entries
build a policy via ssrfPolicyFromHttpBaseUrlAllowedOrigin and are
then rejected at resolvePinnedHostnameWithPolicy.
- DNS rebinding from a trusted private DNS origin to a metadata IP is
rejected even when the request hostname is origin-trusted.
This would fail if the SDK helper or resolveSsrFPolicyForUrl ever
short-circuited past the metadata block.
* chore(docs): regenerate baselines after upstream rebase
upstream/main moved between rebases; the merged source state for the
PR's `src/config/schema.help.ts` change and the upstream plugin-sdk
surface changes both produce different hashes than the committed
baselines, so `config:docs:check` and `plugin-sdk:api:check` would fail.
Regenerated via `pnpm config:docs:gen` + `pnpm plugin-sdk:api:gen` on
Crabbox; both baselines verified with their respective `--check`
generators.
* test(plugin-sdk): assert SSRF blocked error class
* fix(lint): satisfy exact-origin PR lint rules
* docs: clarify custom provider origin trust
* chore(docs): refresh plugin sdk api baseline
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-05-15 11:00:29 +01:00
Peter Steinberger
b180b8ae48
fix: strip workflow function responses from replies
2026-05-15 09:57:44 +01:00