The ag-ui and reference catch-all routes accept arbitrary URL segments
and feed them directly to path.join(CONTENT_DIR, slugPath) + fs.readFileSync.
A crafted request like /ag-ui/..%2F..%2Fsecrets decodes to a slugPath
that path.join happily resolves outside CONTENT_DIR, leaking arbitrary
files on disk.
Route every user-controlled filesystem access through the existing
safe-fs helpers (resolveWithinDir / safeReadFileSync) so escapes
return a safe miss and fall through to notFound().
* feat(runtime): rename remoteActions argument to remoteEndpoints
* feat(remote-actions): integrate langgraph-cloud as a remote action for CoAgents
* feat(runtime): rename remoteActions argument to remoteEndpoints
* feat(remote-actions): integrate langgraph-cloud as a remote action for CoAgents
* feat(sdk-js): add SDK for LangGraph JS support
---------
Co-authored-by: Markus Ecker <markus.ecker@gmail.com>
Co-authored-by: Ariel Weinberger <weinberger.ariel@gmail.com>
* test better infra setup
* fix project names
* fix table generation
* fix build secrets
* test fix aws account
* deploy fix attempt
* test
* test
* with print aws config
* get caller identity
* add -stack suffix
* test
* test
* fix ci
* fix build issue
* test
* test
* test
* test with ci fix
* set default account id cdk
* test fix
* set account explicitly
* update with env
* fix ci more
* add data test ids for canvas researcher demo
* prep for tests
* improvements
* add auto warmup for apps
* add more stuff to workflow
* add concurrency group
* only deploy two demos for now