Commit 1a58de3
authored
feat(agents): support Foundry ${{...}} server-side expressions in env expansion (#8602)
* fix(agents): preserve Foundry ${{...}} through ${VAR} expansion
Add a shared ExpandEnv helper in the azure.ai.agents extension that expands
azd ${VAR} references while leaving Foundry server-side ${{...}} expressions
untouched, and route the existing env-expansion call sites through it.
drone/envsubst cannot parse ${{...}} and returns the whole string unexpanded,
so any ${VAR} appearing alongside a ${{...}} span was silently dropped.
ExpandEnv splits on ${{...}} spans, expands only the gaps, and reattaches the
spans verbatim. This is the single shared expander Foundry fields will use as
part of unifying Foundry config in azure.yaml (design spec section 2.5).
Refactors resolveEnvironmentVariables (service_target_agent.go), resolveEnvValue
(listen.go), and resolveAgentDefinitionEnvVars (run.go) to use it.
* refactor(agents): address ExpandEnv review feedback
- Document that a ${VAR} inside a ${{...}} span is preserved verbatim, and
add a test asserting it.
- Drop the now-redundant error fallback in resolveAgentDefinitionEnvVars;
ExpandEnv already returns the original value on error.
* fix(agents): mask ${{...}} spans so ${VAR:-default} still expands
Switch ExpandEnv from splitting on ${{...}} spans to masking each span with
a sentinel placeholder, running a single envsubst pass, then restoring the
spans. The split approach failed when a ${{...}} expression was the default
of a ${VAR:-default} construct (e.g. ${MISSING:-${{event.body}}}), leaving an
unterminated "${MISSING:-" fragment that envsubst could not parse, so the
whole value was returned unexpanded. The sentinel contains no $, { or }, so
envsubst leaves it untouched even after a literal $. Adds tests for the
default-value cases and a leading-$ case.
Addresses review comment on internal/project/templating.go.1 parent 3672e81 commit 1a58de3
5 files changed
Lines changed: 185 additions & 10 deletions
File tree
- cli/azd/extensions/azure.ai.agents/internal
- cmd
- project
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
28 | 27 | | |
29 | 28 | | |
30 | 29 | | |
| |||
930 | 929 | | |
931 | 930 | | |
932 | 931 | | |
933 | | - | |
| 932 | + | |
| 933 | + | |
934 | 934 | | |
935 | | - | |
| 935 | + | |
936 | 936 | | |
937 | 937 | | |
938 | 938 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
| 28 | + | |
28 | 29 | | |
29 | 30 | | |
30 | | - | |
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| |||
514 | 514 | | |
515 | 515 | | |
516 | 516 | | |
517 | | - | |
518 | | - | |
519 | | - | |
520 | | - | |
| 517 | + | |
| 518 | + | |
521 | 519 | | |
522 | 520 | | |
523 | 521 | | |
| |||
Lines changed: 1 addition & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
44 | 43 | | |
45 | 44 | | |
46 | 45 | | |
| |||
2272 | 2271 | | |
2273 | 2272 | | |
2274 | 2273 | | |
2275 | | - | |
| 2274 | + | |
2276 | 2275 | | |
2277 | 2276 | | |
2278 | 2277 | | |
| |||
Lines changed: 69 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
Lines changed: 109 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
0 commit comments