Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1535 commits
Select commit Hold shift + click to select a range
cf613b1
Validate role mappings and shorten role-cache invalidation window
colinmxs Jun 5, 2026
0e04373
Apply static AST policy to user-supplied diagram and analysis code
colinmxs Jun 5, 2026
d5dcb60
feat(tools): add MCPGatewayConfig model for Gateway target registrati…
philmerrell Jun 5, 2026
18734d1
feat(infra): publish gateway id SSM param + app-api Gateway target IA…
philmerrell Jun 5, 2026
6da6fa2
feat(tools): Gateway target service + admin route lifecycle (#419) (#…
philmerrell Jun 5, 2026
d12341a
feat(admin): Gateway target admin form for protocol=mcp (#419) (#455)
philmerrell Jun 5, 2026
f8a600f
feat(tools): AGENTCORE_GATEWAY_ID env override for local/CI testing (…
philmerrell Jun 5, 2026
25add9e
Bind persisted roles to JWT in profile-sync handler (#458)
colinmxs Jun 5, 2026
470dc5c
feat(tools): Gateway MCP targets — self-service registration, agent w…
philmerrell Jun 6, 2026
ba8bcca
docs(docs-site): add API Keys + Admin section to nav, flesh out Tools…
philmerrell Jun 6, 2026
30e4e05
docs(specs): add admin-managed Skills with RBAC + tool binding design…
philmerrell Jun 9, 2026
0ebc9f9
feat(skills): shared data layer for admin-managed skills (PR-1) (#461)
philmerrell Jun 9, 2026
0fee1e0
feat(skills): RBAC extension — grant skills to roles (PR-2) (#462)
philmerrell Jun 9, 2026
a334959
feat(skills): admin API for skill authoring + role grants (PR-3) (#463)
philmerrell Jun 9, 2026
7ab9b4a
docs(specs): re-scope admin Skills to reference material; defer scrip…
philmerrell Jun 10, 2026
f2d1c7a
feat(skills): S3-backed reference-file data layer for admin Skills (P…
philmerrell Jun 10, 2026
93e75d7
feat(skills): admin frontend for authoring skills + reference files (…
philmerrell Jun 10, 2026
12a6445
feat(skills): runtime — DB-backed load + RBAC + skills_hash + local b…
philmerrell Jun 10, 2026
db4bf56
feat(skills): runtime MCP-tool folding + reference-file disclosure + …
philmerrell Jun 10, 2026
cb8253d
feat: per-tool MCP enablement (skills binding + model settings) (#469)
philmerrell Jun 10, 2026
0b11494
feat(skills): flip default agent_type to "skill" (PR-7) (#470)
philmerrell Jun 10, 2026
f55857f
feat(agent): re-enable Strands Bedrock auto prompt caching (#471)
philmerrell Jun 11, 2026
a7869be
docs(env): document missing backend env vars in .env.example (#472)
philmerrell Jun 11, 2026
f16cdc3
feat(settings): platform chat-mode settings foundation (skills-mode P…
philmerrell Jun 11, 2026
5a7180c
add time info to user messages on hover
Jun 11, 2026
6c94b4e
feat(skills): user skills surface + chat-mode policy enforcement (ski…
philmerrell Jun 11, 2026
447afde
chore(kaizen): weekly research scan 2026-06-12 (#475)
philmerrell Jun 12, 2026
9ed37a5
feat(spa): skills mode UX — mode toggle, skills picker, request wirin…
philmerrell Jun 12, 2026
33bc402
fix(agents): raise OAuth consent interrupt for skill-folded external …
philmerrell Jun 12, 2026
5373d00
fix(agents): gate skill-folded external MCP tools behind the approval…
philmerrell Jun 12, 2026
02b81a8
feat: add Amazon Bedrock Mantle as a model provider (#479)
philmerrell Jun 13, 2026
12defcf
Bind persisted email to the validated session in profile-sync handler
colinmxs Jun 16, 2026
b089d56
Wrap user-supplied system prompts with a platform safety floor
colinmxs Jun 16, 2026
f1cb0ae
Route fetch_url_content through the shared URL validator
colinmxs Jun 16, 2026
a478455
Reject session-metadata PUT when session id is owned by another user
colinmxs Jun 16, 2026
8819aef
Scope SigV4 signing on outbound MCP requests to recognized AWS endpoints
colinmxs Jun 16, 2026
a02aae9
fix(backup/restore): include S3 Vectors index in the snapshot loop (#…
colinmxs Jun 16, 2026
d2b9502
feat(docs): add full-screen maintenance page (#482)
philmerrell Jun 17, 2026
aec6eec
feat(docs): remove action buttons from maintenance page (#483)
philmerrell Jun 17, 2026
fab77f7
Tighten admin-route input handling and data-layer ownership edges (#484)
colinmxs Jun 17, 2026
6e19ef3
ci(artifacts): plumb CDK_ARTIFACTS_EXTRA_FRAME_ANCESTORS through depl…
philmerrell Jun 17, 2026
7cb9047
Sanitize admin error paths and pin viewer-facing TLS to 1.2+ baseline
colinmxs Jun 17, 2026
7e43976
fix(skills): resolve and persist subset-scoped external MCP tool bind…
philmerrell Jun 18, 2026
ff7a2c0
fix(deps): remediate all 22 HIGH Dependabot findings (#487)
colinmxs Jun 18, 2026
61ce767
Fix/dependabot quick fixes (#488)
colinmxs Jun 18, 2026
888722d
Fix/dependabot quick fixes (#489)
colinmxs Jun 18, 2026
e24ec9f
ci: add pull_request test gate (backend/frontend/infra) (#490)
colinmxs Jun 18, 2026
62e7d02
fix(infra): shared CloudFront cert + consistent domain/cert handling …
colinmxs Jun 19, 2026
26b99ee
Fix/cdk cli version and deploy node pin (#492)
colinmxs Jun 19, 2026
0f06374
Fix/deploy fixes (#494)
colinmxs Jun 19, 2026
28d7db8
fix(infra): restore stable IAM role names for AgentCore execution rol…
colinmxs Jun 19, 2026
55344bb
fix(ci): build arm64 images on native ARM runners (#496)
colinmxs Jun 19, 2026
a453c84
feat(skills): gate skills feature behind SKILLS_ENABLED flag (default…
philmerrell Jun 22, 2026
3855767
feat(tools): forward admin OIDC token on MCP tool discovery (#498)
philmerrell Jun 23, 2026
d387586
fix(nightly): auto-teardown ephemeral nightly deploys; fix teardown f…
colinmxs Jun 23, 2026
4963129
fix(app-api): grant secretsmanager:PutSecretValue on auth-provider se…
colinmxs Jun 23, 2026
044bfbd
Fix/nightly (#500)
colinmxs Jun 23, 2026
f3aad52
docs(infra): correct stale SSM comment on mcp-sandbox origin wiring (…
philmerrell Jun 23, 2026
f159be3
chore(kaizen): weekly research scan 2026-06-19 (#493)
philmerrell Jun 23, 2026
af7ee1c
fix(mcp-apps): accept spec-array content in ui/message (#503)
philmerrell Jun 24, 2026
c783087
fix(mcp-apps): retry transient TLS/connect failures on MCP client sta…
philmerrell Jun 24, 2026
a58a66d
fix(mcp-apps): give widget ui/message turns the loading + scroll affo…
philmerrell Jun 24, 2026
9e1d6c5
feat(connectors): scaffold export-target adapters for saving conversa…
philmerrell Jun 25, 2026
4c5bf94
feat(export-targets): Google Drive export adapter + transcript render…
philmerrell Jun 25, 2026
7483229
feat(export-targets): export endpoint + conversation-export receipts …
philmerrell Jun 26, 2026
41711ef
feat(export-targets): "Save to…" conversation export SPA + admin mapp…
philmerrell Jun 26, 2026
73421b7
feat(export-targets): destination folder picker for "Save to…" (PR-5)…
philmerrell Jun 26, 2026
9252b0c
feat(infra): support external (cross-account) Route53 hosted zones (#…
colinmxs Jun 26, 2026
270dce4
Release/1.0.0 (#513)
colinmxs Jun 26, 2026
d93ad76
Backmerge/main into develop (#514)
colinmxs Jun 26, 2026
9fe544b
feat(assistants): re-enable tool use for assistants (revert KB-only) …
philmerrell Jun 26, 2026
6e62e52
Merge origin/main into develop (post-1.0.1-release back-merge)
colinmxs Jun 29, 2026
46f2e80
fix(nightly): repoint test/install jobs to post-refactor script paths…
colinmxs Jun 29, 2026
8355e85
fix(deps): remediate 6 open Dependabot alerts (#520)
colinmxs Jun 29, 2026
536e08d
fix(security): remediate CodeQL alerts (HIGH/MEDIUM + NOTE cleanups) …
colinmxs Jun 29, 2026
72dcb66
Release/1.0.2 (#522) (#523)
colinmxs Jun 30, 2026
43a8e40
chore: prune dead workflow tracks, dedupe test gates, fix/fork-gate d…
colinmxs Jun 30, 2026
333468b
ci: serialize platform + backend deploys via shared concurrency group…
colinmxs Jun 30, 2026
e333e37
Chore/cleanup dependabot codeql 2026 06 (#526)
colinmxs Jun 30, 2026
3e3b706
Release/1.0.3
colinmxs Jun 30, 2026
23ad173
Merge remote-tracking branch 'origin/main' into release/1.0.3
colinmxs Jun 30, 2026
4132c03
Merge pull request #528 from Boise-State-Development/release/1.0.3
colinmxs Jun 30, 2026
0b680b3
Merge pull request #529 from Boise-State-Development/main
colinmxs Jun 30, 2026
9b437ee
fix: add missing iam permission for agent core gateway
DerrickF Jul 1, 2026
5b08fe4
fix: add lambda:InvokeFunction to gateway role for MCP targets
DerrickF Jul 1, 2026
960a284
fix(iam): grant bedrock-agentcore:GetMemory to app-api + runtime roles
colinmxs Jul 1, 2026
5d677e3
Merge pull request #530 from Boise-State-Development/hotfix/agentcore…
colinmxs Jul 1, 2026
398c960
fix: keep tool card after OAuth/tool-approval resume
philmerrell Jul 1, 2026
0206f0a
Merge pull request #532 from Boise-State-Development/feature/fix-inte…
philmerrell Jul 1, 2026
5ef730d
chore(kaizen): weekly research scan 2026-07-03
philmerrell Jul 3, 2026
cb41e1c
chore(kaizen): weekly review prep 2026-07-03
philmerrell Jul 3, 2026
9ac71fa
feat: isolate chat streaming per conversation
philmerrell Jul 3, 2026
4d4edf5
Merge pull request #535 from Boise-State-Development/feature/concurre…
philmerrell Jul 3, 2026
4271778
feat: default export to messages only
philmerrell Jul 3, 2026
1a9a6be
Merge pull request #537 from Boise-State-Development/feature/export-d…
philmerrell Jul 3, 2026
cad96dc
feat: expose session options menu on top-nav title
philmerrell Jul 3, 2026
62302a8
test: update onSessionClick spec for optimistic currentSession set
philmerrell Jul 3, 2026
122b2f9
Merge pull request #538 from Boise-State-Development/feature/topnav-s…
philmerrell Jul 3, 2026
33fbd40
fix: clear OAuth consent state on session switch
philmerrell Jul 3, 2026
9160973
Merge pull request #539 from Boise-State-Development/fix/oauth-consen…
philmerrell Jul 3, 2026
8af2d2b
feat: push session title mid-stream via session_title SSE event
philmerrell Jul 3, 2026
8ed1e03
feat: skeleton + fallback for pending session titles in sidebar and t…
philmerrell Jul 3, 2026
80403d3
Merge pull request #540 from Boise-State-Development/feature/parallel…
philmerrell Jul 3, 2026
fc6ac22
feat: persist interrupted-turn context so aborted responses aren't or…
philmerrell Jul 3, 2026
1d36fba
feat(spa): surface interrupted-turn state — stop signal + reload chip
philmerrell Jul 3, 2026
7ea27bc
Merge pull request #541 from Boise-State-Development/feature/interrup…
philmerrell Jul 3, 2026
a510606
docs: add assistant KB sync (scheduled re-index) design spec
philmerrell Jul 3, 2026
c5b3e25
feat(kb-sync): add SyncPolicy data layer, DueSyncIndex GSI, delete ca…
philmerrell Jul 3, 2026
71a67a6
Merge pull request #542 from Boise-State-Development/feature/kb-sync-…
philmerrell Jul 3, 2026
6d1ba1c
feat(kb-sync): dispatcher + worker Lambdas, EventBridge sweep, kb-syn…
philmerrell Jul 4, 2026
8a0fcf5
Merge pull request #543 from Boise-State-Development/feature/kb-sync-…
philmerrell Jul 4, 2026
2660994
feat(kb-sync): Drive-file sync path — vault token, change detection, …
philmerrell Jul 4, 2026
aef5c31
Merge pull request #544 from Boise-State-Development/feature/kb-sync-…
philmerrell Jul 4, 2026
78a8f2b
feat(kb-sync): web re-crawl path — refresh/upsert crawls, miss accoun…
philmerrell Jul 4, 2026
e3d657c
Merge pull request #545 from Boise-State-Development/feature/kb-sync-…
philmerrell Jul 4, 2026
fcdbf8e
feat(kb-sync): sync-policy API + resume hooks — CRUD routes, run-now,…
philmerrell Jul 4, 2026
721bce1
Merge pull request #546 from Boise-State-Development/feature/kb-sync-api
philmerrell Jul 4, 2026
25a4be4
feat(kb-sync): SPA sync-policy controls on assistant knowledge page
philmerrell Jul 4, 2026
b74404a
Merge pull request #547 from Boise-State-Development/feature/kb-sync-spa
philmerrell Jul 4, 2026
ffcd420
feat(interrupted-turn): persist stopped-turn metadata so cost + messa…
philmerrell Jul 4, 2026
a256242
Merge pull request #548 from Boise-State-Development/feature/interrup…
philmerrell Jul 4, 2026
d37be38
fix(kb-sync): grant worker read on the vault's backing OAuth secrets
philmerrell Jul 4, 2026
babd972
Merge pull request #549 from Boise-State-Development/fix/kb-sync-work…
philmerrell Jul 4, 2026
50d08bd
refactor(oauth): forward admin customParameters, drop hardcoded vendo…
philmerrell Jul 4, 2026
e75830c
docs: add tool-search token-bloat + per-user markdown memory specs
philmerrell Jul 4, 2026
1a04730
Merge pull request #550 from Boise-State-Development/refactor/oauth-a…
philmerrell Jul 4, 2026
4ef7119
Merge pull request #551 from Boise-State-Development/docs/tool-search…
philmerrell Jul 4, 2026
3349c93
feat(kb-sync): log workload identity + userId on a reauth pause
philmerrell Jul 4, 2026
00e821e
Merge pull request #552 from Boise-State-Development/feature/kb-sync-…
philmerrell Jul 4, 2026
3b32a27
chore(kb-sync): plumb CDK_KB_SYNC_ENABLED into the platform deploy
philmerrell Jul 4, 2026
0eb6984
Merge pull request #553 from Boise-State-Development/chore/kb-sync-en…
philmerrell Jul 4, 2026
7ea6ec2
chore(kb-sync): default the feature ON with a kill switch
philmerrell Jul 4, 2026
570ce2e
Merge pull request #554 from Boise-State-Development/chore/kb-sync-de…
philmerrell Jul 4, 2026
0b0acfe
feat(kb-sync): clarify the auto-sync control and always show last-synced
philmerrell Jul 5, 2026
2244571
fix(kb-sync): tidy the sync row layout and repair blank sync timestamps
philmerrell Jul 5, 2026
7e37329
fix(kb-sync): give web sources the same sync treatment as documents
philmerrell Jul 5, 2026
682a6c0
feat(kb-sync): unified skeleton loading for the knowledge base lists
philmerrell Jul 5, 2026
be5e0f0
feat(kb-sync): show a "Saving…" indicator while a sync change applies
philmerrell Jul 5, 2026
690848c
Merge pull request #555 from Boise-State-Development/feature/kb-sync-…
philmerrell Jul 5, 2026
5e7116e
fix(users): normalize sync timestamps to strict ISO 8601 (single Z)
philmerrell Jul 5, 2026
2206007
Merge pull request #556 from Boise-State-Development/fix/user-sync-ti…
philmerrell Jul 5, 2026
5af1a28
feat(assistant-editor): group knowledge base into a contrasted inset …
philmerrell Jul 5, 2026
7a5c86d
feat(connectors): add Google connector logo SVGs
philmerrell Jul 5, 2026
dc39623
Merge feature/connector-logos into develop
philmerrell Jul 5, 2026
7f35dae
docs(specs): agentic platform primitives plan + scheduled-runs design…
philmerrell Jul 5, 2026
289e26c
Merge pull request #558 from Boise-State-Development/feature/agentic-…
philmerrell Jul 5, 2026
9111a83
feat(harness): spike headless agent-run entrypoint (F1) — proven in d…
philmerrell Jul 5, 2026
e1a0090
docs(specs): record F1 spike findings + lock decision-gate calls
philmerrell Jul 5, 2026
0cd8000
feat(harness): headless-grant record + production hardening of the F1…
philmerrell Jul 6, 2026
3137cad
feat(runs): cookie-authed "Run now" surface behind flag + RBAC capabi…
philmerrell Jul 6, 2026
664e987
feat(infra): SCHEDULED_RUNS_ENABLED flag + HeadlessGrantUserIndex GSI
philmerrell Jul 6, 2026
8a6af42
Merge pull request #560 from Boise-State-Development/docs/harness-spi…
philmerrell Jul 6, 2026
e945316
Merge pull request #561 from Boise-State-Development/feature/harness-…
philmerrell Jul 6, 2026
a7c65ab
docs(specs): Phase B scoping brief — scheduler + PII-ordering prerequ…
philmerrell Jul 6, 2026
49806f5
docs(specs): governance for scheduled runs is role/auth-based; drop B…
philmerrell Jul 6, 2026
dea7ba9
feat(schedules): B1 — schedule data model + CRUD (inert)
philmerrell Jul 6, 2026
7dc7d38
Merge pull request #562 from Boise-State-Development/docs/phase-b-brief
philmerrell Jul 6, 2026
b329748
Merge pull request #563 from Boise-State-Development/feature/schedule…
philmerrell Jul 6, 2026
bafd5e1
feat(schedules): B3 — schedule management SPA + enablement
philmerrell Jul 6, 2026
c72eb9c
feat(schedules): B2 — scheduler dispatcher + worker
philmerrell Jul 6, 2026
3355dcc
fix(schedules): register nav routes in specs to fix CI NG04002
philmerrell Jul 6, 2026
d4c47b7
Merge pull request #564 from Boise-State-Development/feature/schedule…
philmerrell Jul 6, 2026
02e6e02
Merge pull request #565 from Boise-State-Development/feature/schedule…
philmerrell Jul 6, 2026
af6dfc6
fix(schedules): make scheduled-runs worker image importable
philmerrell Jul 6, 2026
b53dc30
Merge pull request #566 from Boise-State-Development/fix/scheduled-ru…
philmerrell Jul 6, 2026
3ff3b50
fix(schedules): make preview-session check importable in lean worker …
philmerrell Jul 6, 2026
9f0afeb
Merge pull request #567 from Boise-State-Development/fix/scheduled-ru…
philmerrell Jul 6, 2026
e707184
fix(scheduled-runs): intersect client enabled_tools with RBAC on head…
philmerrell Jul 6, 2026
6cd0c11
Merge pull request #568 from Boise-State-Development/fix/scheduled-ru…
philmerrell Jul 6, 2026
4e6e3c3
test(schedules): guard the scheduled-runs lean image against agents/s…
philmerrell Jul 6, 2026
0ebce7f
docs(kaizen): scope managed-Harness build-vs-adopt spike for the head…
philmerrell Jul 6, 2026
794014e
feat(schedules): let schedule edits clear assistantId/enabledTools
philmerrell Jul 6, 2026
64246f8
fix(app-api): grant bedrock:ListFoundationModels to task role
philmerrell Jul 6, 2026
209e0cf
Merge pull request #557 from Boise-State-Development/feature/kb-secti…
philmerrell Jul 6, 2026
567b5d2
Merge pull request #571 from Boise-State-Development/fix/app-api-bedr…
philmerrell Jul 6, 2026
0dd0cda
Merge pull request #569 from Boise-State-Development/feature/schedule…
philmerrell Jul 6, 2026
1a5717d
Merge pull request #533 from Boise-State-Development/kaizen/review-20…
philmerrell Jul 6, 2026
ea22f21
Merge pull request #570 from Boise-State-Development/docs/kaizen-mana…
philmerrell Jul 6, 2026
6f3dc2b
feat(sessions): unread indicator for scheduled-run deliveries
philmerrell Jul 6, 2026
68502ee
Merge pull request #572 from Boise-State-Development/feature/sessions…
philmerrell Jul 6, 2026
72fed49
docs(kaizen): queue Bedrock Mantle endpoint watchlist item
philmerrell Jul 6, 2026
6165ee7
Merge pull request #573 from Boise-State-Development/docs/kaizen-mant…
philmerrell Jul 6, 2026
f3d28be
docs(kaizen): managed-Harness spike findings — 3 gating questions ans…
philmerrell Jul 6, 2026
9fd2e62
feat(sidenav): gate Scheduled Runs nav entry to system_admin
philmerrell Jul 6, 2026
099c27b
Merge pull request #574 from Boise-State-Development/feature/schedule…
philmerrell Jul 6, 2026
32eef0d
Merge pull request #575 from Boise-State-Development/docs/managed-har…
philmerrell Jul 6, 2026
0ac9a4f
docs(kaizen): managed-Harness Q2 live-probe result — GO-with-boundary
philmerrell Jul 6, 2026
989e4c2
feat(sessions): add mark-as-read/unread toggle with sidebar dot fixes
philmerrell Jul 6, 2026
f20a012
Merge pull request #577 from Boise-State-Development/feature/session-…
philmerrell Jul 7, 2026
9a60daf
feat(schedules): interval cadence + "Run now" with background-task to…
philmerrell Jul 7, 2026
6e3d5ac
Merge pull request #578 from Boise-State-Development/feature/schedule…
philmerrell Jul 7, 2026
e13bac1
Merge remote-tracking branch 'origin/develop' into kaizen/research-20…
philmerrell Jul 7, 2026
25fa40a
Merge pull request #534 from Boise-State-Development/kaizen/research-…
philmerrell Jul 7, 2026
46903b2
Merge pull request #576 from Boise-State-Development/docs/managed-har…
philmerrell Jul 7, 2026
67744d6
docs(memory): reframe spec as Memory Spaces — bindable, templated, sh…
philmerrell Jul 7, 2026
bdcc6f7
Merge pull request #579 from Boise-State-Development/feature/memory-s…
philmerrell Jul 7, 2026
f310684
docs(kaizen): recover resourceOauth2ReturnUrl shape section into harn…
philmerrell Jul 7, 2026
0cc1a31
Merge pull request #580 from Boise-State-Development/fix/harness-retu…
philmerrell Jul 7, 2026
ab91ae2
docs(memory): bake in full-ownership zip export of a Memory Space
philmerrell Jul 7, 2026
b6ce474
Merge pull request #581 from Boise-State-Development/feature/memory-s…
philmerrell Jul 7, 2026
eb578e0
feat(memory): Memory Spaces data layer (PR-1)
philmerrell Jul 7, 2026
ca34bc1
Merge pull request #582 from Boise-State-Development/feature/memory-s…
philmerrell Jul 7, 2026
e6d9299
docs(memory): re-slice phasing into primitive vs. agent-consumption w…
philmerrell Jul 7, 2026
4301555
Merge pull request #583 from Boise-State-Development/feature/memory-r…
philmerrell Jul 7, 2026
6f34352
feat(memory): Memory Spaces user surface — /memory/spaces CRUD (A2)
philmerrell Jul 7, 2026
3aa5e8f
Merge pull request #584 from Boise-State-Development/feature/memory-a…
philmerrell Jul 7, 2026
79f79d9
feat(memory): Memory Space zip export — /memory/spaces/{id}/export (A3)
philmerrell Jul 7, 2026
8eaa1ea
Merge pull request #585 from Boise-State-Development/feature/memory-a…
philmerrell Jul 7, 2026
8e581a2
feat(memory): Memory Space sharing + optimistic manifest concurrency …
philmerrell Jul 7, 2026
a7a1f67
Merge pull request #586 from Boise-State-Development/feature/memory-a…
philmerrell Jul 7, 2026
2d39e72
feat(memory): Memory Spaces SPA panel — list/detail/create/share/expo…
philmerrell Jul 7, 2026
2012b92
test(memory): mock MemorySpaceService in sidenav spec (fix unhandled …
philmerrell Jul 7, 2026
e1d9a8b
Merge pull request #587 from Boise-State-Development/feature/memory-a…
philmerrell Jul 7, 2026
0590f0b
fix(memory): wire memory-spaces table/bucket names onto app-api
philmerrell Jul 7, 2026
e2fcad8
docs(cdk): capture the "wire resource name to every compute" rule
philmerrell Jul 7, 2026
0944e73
Merge pull request #588 from Boise-State-Development/fix/memory-space…
philmerrell Jul 7, 2026
aabc32b
feat(memory): deterministic consolidation health pass (A6)
philmerrell Jul 7, 2026
2c0cbd4
Merge pull request #589 from Boise-State-Development/feature/memory-a…
philmerrell Jul 7, 2026
4ff2a55
docs(agent): Agent Designer spec — unified primitive-binding surface
philmerrell Jul 7, 2026
03b5209
Merge pull request #590 from Boise-State-Development/feature/agent-de…
philmerrell Jul 8, 2026
f94073d
feat(agents): Agent contract + compat mapping in shared assistants mo…
philmerrell Jul 8, 2026
8580e34
feat(agents): persist bindings + modelConfig with design-time validation
philmerrell Jul 8, 2026
c2329f8
Merge pull request #591 from Boise-State-Development/feature/agent-de…
philmerrell Jul 8, 2026
58ce8b8
feat(agents): /agents alias router behind AGENTS_API_ENABLED (dark)
philmerrell Jul 8, 2026
4403040
Merge pull request #592 from Boise-State-Development/feature/agent-de…
philmerrell Jul 8, 2026
c963fa8
feat(agents): wire AGENTS_API_ENABLED through CDK + Phase 1 docs
philmerrell Jul 8, 2026
20ded48
Merge pull request #593 from Boise-State-Development/feature/agent-de…
philmerrell Jul 8, 2026
0a963f3
feat(agents): thread AGENTS_API_ENABLED to the inference runtime (Pha…
philmerrell Jul 8, 2026
6801911
feat(agents): resolve Agent modelConfig at invocation, per invoker (P…
philmerrell Jul 8, 2026
9b576a3
feat(agents): Memory-Space hydration helper for prompt injection (Pha…
philmerrell Jul 8, 2026
2e69cab
feat(agents): inject bound Memory Space into the prompt, per invoker …
philmerrell Jul 8, 2026
3344e17
Merge pull request #594 from Boise-State-Development/feature/agent-de…
philmerrell Jul 8, 2026
0cd772b
fix(agents): rename app_api.agents package to avoid shadowing top-lev…
philmerrell Jul 8, 2026
e3ac783
Merge pull request #595 from Boise-State-Development/fix/agents-packa…
philmerrell Jul 8, 2026
6837c33
feat(agents): memory_* tools scoped to an Agent's bound Memory Space …
philmerrell Jul 8, 2026
0e4d55b
chore(memory): default Memory Spaces ON with a kill switch
philmerrell Jul 8, 2026
a875cce
Merge pull request #596 from Boise-State-Development/feature/agent-me…
philmerrell Jul 8, 2026
780b736
Merge pull request #597 from Boise-State-Development/feature/memory-s…
philmerrell Jul 8, 2026
6c26f32
feat(agent-designer): Phase 4 — Agent Designer UI + bindable catalog API
philmerrell Jul 8, 2026
31141bf
test(sidenav): stub AgentService probe to fix unhandled HTTP rejection
philmerrell Jul 8, 2026
7694afd
Merge pull request #598 from Boise-State-Development/claude/agent-des…
philmerrell Jul 8, 2026
128729a
fix(agent-designer): align model write-check with the bindable catalog
philmerrell Jul 8, 2026
5857457
Merge pull request #599 from Boise-State-Development/claude/agent-des…
philmerrell Jul 8, 2026
e393281
feat(sidenav): gate Memory Spaces + Agents to system-admin, add Previ…
philmerrell Jul 8, 2026
eb2bae8
Merge pull request #600 from Boise-State-Development/claude/preview-n…
philmerrell Jul 8, 2026
0b9b039
feat(agent-designer): resolve tool bindings at invocation (replace + …
philmerrell Jul 8, 2026
ebdcb47
feat(topnav): surface active assistant in the top nav
philmerrell Jul 8, 2026
290f9c3
Merge pull request #601 from Boise-State-Development/feature/agent-to…
philmerrell Jul 8, 2026
27993bd
Release/1.1.0
colinmxs Jul 8, 2026
0c40cad
Merge remote-tracking branch 'origin/main' into release/1.1.0
colinmxs Jul 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions .claude/skills/cdk-infrastructure/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,29 @@ new AlbConstruct(this, 'Alb', { config, vpc: network.vpc });

SSM parameters are published **only for runtime consumption** by ECS tasks and Lambdas — never for CDK-to-CDK references within the same stack.

### Wire a resource's name to every compute that reads it

When a construct exposes a table/bucket that backend code reads via
`os.environ.get("X_NAME", "default")`, you must set `X_NAME` in the container
environment of **every** compute that runs that code — thread the typed ref
through that compute's env builder (e.g. `buildAppApiEnvironment` for app-api,
the inference-agentcore construct's `environment` for inference-api). Wiring one
does **not** wire the other.

**Why this bites (silent 502):** the backend's default fallback hides the
omission. If the env var is missing, the code queries the *default* name
(e.g. `"memory-spaces"` instead of `{prefix}-memory-spaces`), the resource
isn't found, boto3 raises `ResourceNotFoundException`, and the centralized
handler (`apis/shared/security/error_handler.py`) maps it to a generic
**502 `{"detail":"Upstream service error."}`**. Nothing in `cdk synth` or CI
catches it — the stack is valid, the IAM grant may even exist; only a runtime
read fails. (Real instance: PR #588 — memory-spaces names were wired to
inference-api but not app-api, which owns the CRUD routes.)

**Guard it:** add an env-map unit test asserting the key is emitted (see
`test/app-api-environment.test.ts`). **Mind the boundary:** app-api owns
user-facing CRUD; granting IAM or wiring inference-api does not cover it.

## DynamoDB Tables

- Always use PK + SK for flexibility
Expand Down
144 changes: 144 additions & 0 deletions .github/workflows/backend.yml
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,150 @@ jobs:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

build-kb-sync:
name: Build kb-sync image
needs: test-backend
# Native ARM64 runner — both kb-sync Lambdas are arm64 (see the
# kb-sync CDK construct), matching the rag-ingestion pattern.
runs-on: ubuntu-24.04-arm
environment: ${{ (github.ref == 'refs/heads/main' && 'production') || 'development' }}

permissions:
id-token: write
contents: read

env:
CDK_AWS_REGION: ${{ vars.AWS_REGION }}
CDK_AWS_ACCOUNT: ${{ vars.CDK_AWS_ACCOUNT }}
CDK_PROJECT_PREFIX: ${{ vars.CDK_PROJECT_PREFIX }}
AWS_REGION: ${{ vars.AWS_REGION }}
AWS_ACCOUNT_ID: ${{ vars.CDK_AWS_ACCOUNT }}
AWS_ROLE_ARN: ${{ secrets.AWS_ROLE_ARN }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

outputs:
image_tag: ${{ steps.build.outputs.image_tag }}

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/build-and-push-image
id: build
with:
image-name: kb-sync
aws-region: ${{ vars.AWS_REGION || 'us-west-2' }}
aws-role-arn: ${{ secrets.AWS_ROLE_ARN }}
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

deploy-kb-sync-code:
name: Deploy kb-sync Lambda images
# One image, two functions: dispatcher + worker share the kb-sync
# image and differ only in ImageConfig.Command (CDK-owned), so a
# single job points both at the freshly-built tag.
needs: [build-kb-sync, test-backend]
runs-on: ubuntu-24.04
environment: ${{ (github.ref == 'refs/heads/main' && 'production') || 'development' }}

permissions:
id-token: write
contents: read

env:
CDK_AWS_REGION: ${{ vars.AWS_REGION }}
CDK_AWS_ACCOUNT: ${{ vars.CDK_AWS_ACCOUNT }}
CDK_PROJECT_PREFIX: ${{ vars.CDK_PROJECT_PREFIX }}
AWS_REGION: ${{ vars.AWS_REGION }}
AWS_ACCOUNT_ID: ${{ vars.CDK_AWS_ACCOUNT }}
AWS_ROLE_ARN: ${{ secrets.AWS_ROLE_ARN }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/configure-aws-credentials
with:
aws-region: ${{ vars.AWS_REGION || 'us-west-2' }}
aws-role-arn: ${{ secrets.AWS_ROLE_ARN }}
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- name: Deploy kb-sync dispatcher image
run: bash scripts/build/deploy-image-lambda-one.sh kb-sync-dispatcher
- name: Deploy kb-sync worker image
run: bash scripts/build/deploy-image-lambda-one.sh kb-sync-worker

build-scheduled-runs:
name: Build scheduled-runs image
needs: test-backend
# Native ARM64 runner — both scheduled-runs Lambdas are arm64 (see the
# scheduled-runs CDK construct), matching the kb-sync pattern.
runs-on: ubuntu-24.04-arm
environment: ${{ (github.ref == 'refs/heads/main' && 'production') || 'development' }}

permissions:
id-token: write
contents: read

env:
CDK_AWS_REGION: ${{ vars.AWS_REGION }}
CDK_AWS_ACCOUNT: ${{ vars.CDK_AWS_ACCOUNT }}
CDK_PROJECT_PREFIX: ${{ vars.CDK_PROJECT_PREFIX }}
AWS_REGION: ${{ vars.AWS_REGION }}
AWS_ACCOUNT_ID: ${{ vars.CDK_AWS_ACCOUNT }}
AWS_ROLE_ARN: ${{ secrets.AWS_ROLE_ARN }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

outputs:
image_tag: ${{ steps.build.outputs.image_tag }}

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/build-and-push-image
id: build
with:
image-name: scheduled-runs
aws-region: ${{ vars.AWS_REGION || 'us-west-2' }}
aws-role-arn: ${{ secrets.AWS_ROLE_ARN }}
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

deploy-scheduled-runs-code:
name: Deploy scheduled-runs Lambda images
# One image, two functions: dispatcher + worker share the
# scheduled-runs image and differ only in ImageConfig.Command
# (CDK-owned), so a single job points both at the freshly-built tag.
needs: [build-scheduled-runs, test-backend]
runs-on: ubuntu-24.04
environment: ${{ (github.ref == 'refs/heads/main' && 'production') || 'development' }}

permissions:
id-token: write
contents: read

env:
CDK_AWS_REGION: ${{ vars.AWS_REGION }}
CDK_AWS_ACCOUNT: ${{ vars.CDK_AWS_ACCOUNT }}
CDK_PROJECT_PREFIX: ${{ vars.CDK_PROJECT_PREFIX }}
AWS_REGION: ${{ vars.AWS_REGION }}
AWS_ACCOUNT_ID: ${{ vars.CDK_AWS_ACCOUNT }}
AWS_ROLE_ARN: ${{ secrets.AWS_ROLE_ARN }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/configure-aws-credentials
with:
aws-region: ${{ vars.AWS_REGION || 'us-west-2' }}
aws-role-arn: ${{ secrets.AWS_ROLE_ARN }}
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
- name: Deploy scheduled-runs dispatcher image
run: bash scripts/build/deploy-image-lambda-one.sh scheduled-runs-dispatcher
- name: Deploy scheduled-runs worker image
run: bash scripts/build/deploy-image-lambda-one.sh scheduled-runs-worker

deploy-artifact-render-code:
name: Deploy artifact-render Lambda code
# Lambda zip code deploy. Mirrors the build-* jobs but for a
Expand Down
12 changes: 12 additions & 0 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -469,6 +469,9 @@ jobs:
- name: Build rag-ingestion image
run: docker build -f backend/Dockerfile.rag-ingestion -t rag-ingestion:scan .

- name: Build kb-sync image
run: docker build -f backend/Dockerfile.kb-sync -t kb-sync:scan .

- name: Trivy scan app-api
uses: aquasecurity/trivy-action@ed142fd0673e97e23eac54620cfb913e5ce36c25 # v0.36.0
with:
Expand All @@ -487,6 +490,15 @@ jobs:
severity: 'CRITICAL,HIGH'
output: trivy-inference-api.txt

- name: Trivy scan kb-sync
uses: aquasecurity/trivy-action@ed142fd0673e97e23eac54620cfb913e5ce36c25 # v0.36.0
with:
image-ref: 'kb-sync:scan'
format: 'table'
exit-code: '0'
severity: 'CRITICAL,HIGH'
output: trivy-kb-sync.txt

- name: Trivy scan rag-ingestion
uses: aquasecurity/trivy-action@ed142fd0673e97e23eac54620cfb913e5ce36c25 # v0.36.0
with:
Expand Down
23 changes: 23 additions & 0 deletions .github/workflows/platform.yml
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,29 @@ jobs:
# nonexistent host and MCP Apps fail to load. Cert MUST be in us-east-1.
CDK_MCP_SANDBOX_CERTIFICATE_ARN: ${{ vars.CDK_MCP_SANDBOX_CERTIFICATE_ARN }}
CDK_MCP_SANDBOX_EXTRA_FRAME_ANCESTORS: ${{ vars.CDK_MCP_SANDBOX_EXTRA_FRAME_ANCESTORS }}
# KB sync scheduled re-index. Default ON with a kill switch: CDK enables
# the EventBridge rate(15m) rule + KB_SYNC_ENABLED on both kb-sync
# Lambdas UNLESS this is set to "false". Unset resolves to empty string,
# which config.ts treats as the default (on). Set the
# `CDK_KB_SYNC_ENABLED` variable to "false" in an environment only to
# dark-stop the feature there.
CDK_KB_SYNC_ENABLED: ${{ vars.CDK_KB_SYNC_ENABLED }}
# Scheduled runs (headless "Run now" + grant routes, and the Phase-B
# scheduler when it lands). Default ON with a kill switch: unset
# resolves to empty string, which config.ts treats as the default
# (on). Set the `CDK_SCHEDULED_RUNS_ENABLED` variable to "false" in
# an environment only to dark-stop the feature there.
CDK_SCHEDULED_RUNS_ENABLED: ${{ vars.CDK_SCHEDULED_RUNS_ENABLED }}
# Memory Spaces (user-owned markdown "second brain" + agent binding).
# Default ON with a kill switch: unset resolves to empty string, which
# config.ts treats as the default (on). Set the `CDK_MEMORY_SPACES_ENABLED`
# variable to "false" in an environment only to dark-stop the feature there.
CDK_MEMORY_SPACES_ENABLED: ${{ vars.CDK_MEMORY_SPACES_ENABLED }}
# Agent Designer /agents surface. Default OFF (opt-in) until the Phase-4
# Designer UI ships — a headless API helps no forker. Set the
# `CDK_AGENTS_API_ENABLED` variable to "true" in an environment (e.g. dev)
# to enable it there for dogfooding.
CDK_AGENTS_API_ENABLED: ${{ vars.CDK_AGENTS_API_ENABLED }}
# Secrets
AWS_ROLE_ARN: ${{ secrets.AWS_ROLE_ARN }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
Expand Down
53 changes: 53 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,59 @@ All notable changes to this project are documented in this file. Format follows

For narrative release notes written for operators and product owners, see [RELEASE_NOTES.md](RELEASE_NOTES.md).

## [1.1.0] - 2026-07-08

Feature release adding four new capabilities — **Scheduled Runs** (unattended/proactive agent runs), **Memory Spaces** (bindable, shareable markdown memory), the **Agent Designer** (primitive-binding authoring surface), and **Knowledge Base Sync** (scheduled re-index of assistant sources) — plus a chat/session UX overhaul (per-conversation streaming, interrupted-turn persistence, mid-stream session titles). Every new surface is flag-gated; there are no breaking changes and no migration. Scheduled Runs, Memory Spaces, and KB Sync default **on**; the Agent Designer defaults **off**. The three preview surfaces (Agents, Memory Spaces, Scheduled Runs) are nav-gated to system-admins and carry a "Preview" badge.

### 🚀 Added

- **Scheduled Runs** — run an agent prompt unattended on a cadence (daily/weekday/weekly/interval) or on demand, delivered as a session with an unread indicator. New `/schedules` CRUD, `/runs/now`, and `/runs/grant`; gated by `SCHEDULED_RUNS_ENABLED` (default on) plus a new `scheduled-runs` RBAC capability (#558, #560, #561, #562, #563, #564, #565, #578)
- `run_agent_headless` entrypoint: per-owner Cognito bearer mint, server-side SSE drain, runtime session materialization, and an audit-only fail-closed governance floor (#560, #561)
- Revocable headless-grant record (create-on-enable from an attended session, 30-day login TTL) backing unattended run-as-user auth (#561)
- Interval cadence (every N minutes/hours) and "Run now" with app-wide background-task toasts (#578)
- Unread dot on scheduled-run deliveries and a Mark-as-read / Mark-as-unread toggle in the session menus (`POST /sessions/{id}/read` and `/unread`) (#572, #577)
- **Memory Spaces** — named, templated, shareable markdown "second brain" spaces with owner/editor/viewer sharing, loss-free `.zip` export, and a consolidation health pass. New `/memory/spaces` CRUD, `/shares`, `/export`, and `/consolidate`; gated by `MEMORY_SPACES_ENABLED` (default on) (#579, #582, #584, #585, #586, #589, #597)
- Space templates (Blank, Chief-of-Staff, Research-Notebook) and a SPA Memory panel — list/detail/create/share/export/delete (#582, #587)
- **Agent Designer** — an authoring surface that composes an Agent from RBAC-governed primitives (a governed single-select model + uniform `bindings[]` for tool / skill / knowledge_base / memory_space), evolving the assistant store in place. New `/agents/*` surface and `/agents/bindable` catalog; gated by `AGENTS_API_ENABLED` (default off). Legacy Assistants read as Agents via a compat mapping and `/assistants/*` is unchanged (#590, #591, #592, #598, #599)
- Run-time Agent binding resolution, re-checked against the *invoking* user's RBAC with block-on-missing: `modelConfig` override, bound Memory Space prompt injection, and `memory_*` tools (#594, #596, #601)
- **Knowledge Base Sync** — keep assistant KB sources (Google Drive files + web crawls) automatically re-indexed on a schedule (Daily/Weekly/Monthly), with pause/resume, run-now, and reconnect-on-reauth, surfaced as per-source controls on the assistant knowledge page. Gated by `KB_SYNC_ENABLED` (default on) (#542, #543, #544, #545, #546, #547)
- Per-conversation chat streaming: streaming state is now keyed per session, so concurrent conversations no longer cross streams; adds per-conversation scroll restore and a sidebar in-progress dot (#535)
- Interrupted-turn persistence: a stopped or dropped response now persists its partial text, context, and cost/usage metadata, with a reload chip to Continue (`POST /sessions/{id}/interrupt`) (#541, #548)
- Mid-stream session titles via a new `session_title` SSE event, with a shimmer skeleton while the title generates (#540)
- Session options menu (Rename / Share / Save / Delete) on the top-nav title, and the active assistant surfaced as a pill in the top nav (#538)

### ✨ Improved

- Conversation export now defaults to messages only — tool calls, images, and citations are opt-in (#537)
- OAuth call sites forward the connector's admin-configured `customParameters` verbatim, dropping hardcoded vendor baselines so the AgentCore vault key stays consistent across consent and retrieval (#550)
- KB-sync auto-sync control clarified: self-describing verbs, always-visible "Last synced", a "Saving…" indicator, unified skeleton loading, and web-source/document parity (#552, #555)
- Assistant editor groups the Knowledge Base section into a contrasted inset panel; added Google connector (Drive/Docs/Gmail/Calendar) logos (#557)

### 🐛 Fixed

- OAuth consent state is cleared on session switch so an "Authorization needed" banner can't leak onto another conversation (#539)
- Tool card is kept after an OAuth / tool-approval resume instead of being dropped when the resumed stream omits the original `tool_use` block (#532)
- User-sync timestamps normalized to strict ISO 8601 (single trailing `Z`), so admin "Last login" / "Created" dates no longer render as "Never" in Safari (#556)
- Schedule edits can now clear a schedule's assistant or tool restriction via explicit clear flags (a bare `null` was read as "leave unchanged") (#569)
- Client-supplied `enabled_tools` is intersected with the caller's RBAC on the headless paths (schedule create/update, Run now), so a scheduled run can't persist a tool outside the owner's role (#568)
- Scheduled-runs worker lean image made importable (missing `cryptography`/`cachetools`, top-level `agents`/`strands` imports on the delivery path) (#566, #567)

### 🏗️ Infrastructure

- New dedicated `memory-spaces` DynamoDB table (OwnerIndex + MemberIndex GSIs) and content-addressed S3 bucket via `MemorySpacesConstruct` (#582)
- New sparse GSIs: `DueScheduleIndex` and `HeadlessGrantUserIndex` on the sessions-metadata table (scheduled runs), and `DueSyncIndex` on the assistants table (KB sync) (#542, #561, #563)
- Two new lean Lambda images with EventBridge sweeps, both following the platform-as-bootstrap pattern (byte-stable stub + out-of-band image deploy): `Dockerfile.scheduled-runs` (dispatcher + worker, `rate(5m)`) and `Dockerfile.kb-sync` (dispatcher + worker, `rate(15m)`) (#543, #565)
- New feature flags forwarded through `platform.yml`, all empty-string-safe kill switches: `SCHEDULED_RUNS_ENABLED`, `MEMORY_SPACES_ENABLED`, `KB_SYNC_ENABLED` (default on) and `AGENTS_API_ENABLED` (default off) (#553, #554, #561, #593, #597)
- IAM: added `bedrock:ListFoundationModels` / `bedrock:GetFoundationModel` to the app-api task role (admin model list), and granted the kb-sync worker read on the vault's backing OAuth secrets (#549, #571)

### 🔧 CI/CD

- `backend.yml` gains build + API-driven code-deploy jobs for the kb-sync and scheduled-runs Lambda images; nightly image-scan and supply-chain pinning lists include both new Dockerfiles (#543, #565)

### 📦 Dependencies

- New pins in the lean Lambda images only (no core backend or frontend dependency changes): `beautifulsoup4` 4.13.5, `trafilatura` 2.0.0, `lxml` 6.1.1 (kb-sync web re-crawl); `cryptography` 48.0.1, `cachetools` 6.2.4 (scheduled-runs worker); `httpx` 0.28.1, `bedrock-agentcore` 1.9.1, `boto3` 1.43.9, `pydantic` 2.12.5 (shared image runtime)

## [1.0.4] - 2026-07-01

IAM hotfix restoring AgentCore Memory. Both the App API task role and the AgentCore Runtime execution role were missing `bedrock-agentcore:GetMemory`, which `get_memory_strategies()` needs to resolve strategy IDs — breaking the memory dashboard (empty results) and long-term recall (retrieval silently disabled). Ships via the platform (CDK) pipeline; no migration.
Expand Down
Loading