fix(ui): create flow - name trimming issue - #93

Merged
siddhant-galileo merged 7 commits into
mainfrom
siddhant/name-trimming-issue
Mar 12, 2026
Merged

fix(ui): create flow - name trimming issue#93
siddhant-galileo merged 7 commits into
mainfrom
siddhant/name-trimming-issue

Conversation

@siddhant-galileo

@siddhant-galileosiddhant-galileo commented Mar 11, 2026

Copy link
Copy Markdown
Collaborator

Summary

Scope

  • User-facing/API changes:
  • Internal changes:
  • Out of scope:

Risk and Rollout

  • Risk level: low / medium / high
  • Rollback plan:

Testing

  • Added or updated automated tests
  • Ran make check (or explained why not)
  • Manually verified behavior

Checklist

  • Linked issue/spec (if applicable)
  • Updated docs/examples for user-facing changes
  • Included any required follow-up tasks

@lan17lan17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added two inline review comments.

Comment threadui/src/core/components/login-modal.tsx Outdated
@lan17

Copy link
Copy Markdown
Contributor

I think the main unresolved issue here is the contract boundary.

This repo already has a clear pattern for agent names: normalization is defined once and applied consistently across shared models, server endpoints, and SDK entry points. Control names still do not have that. In this PR, the only canonicalization being added is inside one UI flow, while the server create/patch endpoints and both SDKs still treat name as caller-provided input.

That matters because non-UI clients are real clients here. A browser user now gets trimming/canonicalization in the modal, but Python and TypeScript SDK callers still need to know to pre-trim or they will just hit API validation. I think we should make that choice explicit: either control-name canonicalization belongs at the server/shared boundary, or this remains validation-only and every client is responsible for sending canonical names. I would avoid implicitly defining canonical control names in one modal.

Separately, the legacy-name policy should be explicit and covered by a regression test. The code reads like “existing invalid names remain editable unless the user actually renames them”, which seems reasonable, but it should be stated and tested directly.

The login logo swap also looks unrelated to the trimming fix. If it’s intentional, I’d explain it in the PR; otherwise I’d split it out.

@siddhant-galileo

siddhant-galileo commented Mar 11, 2026

Copy link
Copy Markdown
CollaboratorAuthor

I think the main unresolved issue here is the contract boundary.

This repo already has a clear pattern for agent names: normalization is defined once and applied consistently across shared models, server endpoints, and SDK entry points. Control names still do not have that. In this PR, the only canonicalization being added is inside one UI flow, while the server create/patch endpoints and both SDKs still treat name as caller-provided input.

That matters because non-UI clients are real clients here. A browser user now gets trimming/canonicalization in the modal, but Python and TypeScript SDK callers still need to know to pre-trim or they will just hit API validation. I think we should make that choice explicit: either control-name canonicalization belongs at the server/shared boundary, or this remains validation-only and every client is responsible for sending canonical names. I would avoid implicitly defining canonical control names in one modal.

Separately, the legacy-name policy should be explicit and covered by a regression test. The code reads like “existing invalid names remain editable unless the user actually renames them”, which seems reasonable, but it should be stated and tested directly.

Fixed this - moved logic to server now. UI only uses trim to check if name has updated or not

The login logo swap also looks unrelated to the trimming fix. If it’s intentional, I’d explain it in the PR; otherwise I’d split it out.

Added a line in PR description

@lan17lan17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

@siddhant-galileo
siddhant-galileo merged commit 1a9759d into mainMar 12, 2026
6 checks passed
@siddhant-galileo
siddhant-galileo deleted the siddhant/name-trimming-issue branch March 12, 2026 04:53
galileo-automation pushed a commit that referenced this pull request Mar 18, 2026
## [2.0.0](ts-sdk-v1.1.0...ts-sdk-v2.0.0) (2026-03-18)
### ⚠ BREAKING CHANGES
* **server:** implement recursive control condition trees (#115)
### Features
* **docs:** simplify main README quick start v2 ([#100](#100)) ([7701c65](7701c65))
* **docs:** Update README.md to accurately mention Strands Agents SDK ([#105](#105)) ([84dfa57](84dfa57))
* **evaluators:** add Cisco AI Defense evaluator and examples ([#60](#60)) ([52e2416](52e2416))
* **sdk:** add Google ADK framework integration ([#83](#83)) ([f2b53ee](f2b53ee))
* **server:** implement recursive control condition trees ([#115](#115)) ([2ff4c12](2ff4c12))
### Bug Fixes
* **docs:** clarify README quickstart flow ([#119](#119)) ([317c626](317c626))
* **docs:** cleanup readme ([#66](#66)) ([eca0d6b](eca0d6b))
* **docs:** promote Google ADK plugin in README ([#99](#99)) ([f038aa4](f038aa4))
* **evaluators:** address Cisco AI Defense review issues ([#103](#103)) ([81da81b](81da81b))
* **examples:** shut down SDK in short-lived demos ([#85](#85)) ([df43264](df43264))
* **sdk:** fail closed on post-hook evaluation errors ([#114](#114)) ([67f8fc1](67f8fc1)), closes [#112](#112)
* **sdk:** skip evaluation when no controls apply ([#124](#124)) ([d2cd9f9](d2cd9f9))
* **server:** escape ILIKE pattern in evaluator-configs list endpoint ([#108](#108)) ([cb6e89f](cb6e89f))
* **server:** reject empty string list evaluator values ([#121](#121)) ([2c55d27](2c55d27))
* **server:** revert unwanted changes in server config ([#117](#117)) ([d92e168](d92e168))
* **ui:** create flow - name trimming issue ([#93](#93)) ([1a9759d](1a9759d))
@galileo-automation

Copy link
Copy Markdown
Collaborator

🎉 This PR is included in version 2.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

shyamsunderrai pushed a commit to shyamsunderrai/agent-control that referenced this pull request Apr 20, 2026
## 1.0.0 (2026-03-04)
### ⚠ BREAKING CHANGES
* **server:** Feature/56688 fix image bug (#48)
* **sdk:** a bug in docker file (#46)
* **server:** Feature/56688 fix docker and create bash (#45)
* **evaluators:** Evaluator reorganization with new package structure
Package Structure:
- agent-control-evaluators (v3.0.0): core + regex, list, json, sql
- agent-control-evaluator-galileo (v3.0.0): Luna2 evaluator
Key Changes:
- Entry points for evaluator discovery (agent_control.evaluators)
- Dot notation for external evaluators (galileo.luna2 not galileo/luna2)
- Dynamic __version__ via importlib.metadata
- Server uses evaluators as runtime dep (no longer vendored)
- Release workflow publishes both packages to PyPI
Bug Fixes:
- JSON evaluator: field_constraints/field_patterns in extra-fields allow-list
- SQL evaluator: LIMIT/OFFSET bypass fix
Migration:
- Import: agent_control_evaluator_galileo.luna2 (not agent_control_evaluators.galileo_luna2)
- DB: UPDATE controls SET evaluator.name replace('/', '.')
* **server:** add time-series stats and split API endpoints (#6)
* **evaluators:** rename plugin to evaluator throughout (#81)
* **models:** simplify step model and schema (#70)
### Features
* Add plugin auto-discovery via Python entry points ([#49](agentcontrol/agent-control#49)) ([1521182](agentcontrol/agent-control@1521182))
* **docs:** add GitHub badges and CI coverage reporting ([#90](agentcontrol/agent-control#90)) ([be1fa14](agentcontrol/agent-control@be1fa14))
* **evaluators:** add required_column_values for multi-tenant SQL validation ([#30](agentcontrol/agent-control#30)) ([532386c](agentcontrol/agent-control@532386c))
* **sdk-ts:** automate semantic-release for npm publishing ([#52](agentcontrol/agent-control#52)) ([2b43958](agentcontrol/agent-control@2b43958))
* **sdk:** Add PyPI packaging with semantic release ([#52](agentcontrol/agent-control#52)) ([7c24f7f](agentcontrol/agent-control@7c24f7f))
* **sdk:** Auto-populate init() steps from [@control](https://github.com/control)() decorators ([#23](agentcontrol/agent-control#23)) ([dc0f2a4](agentcontrol/agent-control@dc0f2a4))
* **sdk:** export ControlScope, ControlMatch, and EvaluatorResult models ([#18](agentcontrol/agent-control#18)) ([0d49cad](agentcontrol/agent-control@0d49cad))
* **sdk:** Get Agent Controls from SDK Init ([#15](agentcontrol/agent-control#15)) ([a485f93](agentcontrol/agent-control@a485f93))
* **sdk:** Refresh controls in a background loop ([#43](agentcontrol/agent-control#43)) ([03f826d](agentcontrol/agent-control@03f826d))
* **sdk:** ship TypeScript SDK with deterministic method naming ([#32](agentcontrol/agent-control#32)) ([a76e9b0](agentcontrol/agent-control@a76e9b0))
* **server:** add evaluator config store ([#78](agentcontrol/agent-control#78)) ([cc14aa6](agentcontrol/agent-control@cc14aa6))
* **server:** add initAgent conflict_mode overwrite mode with SDK defaults ([#40](agentcontrol/agent-control#40)) ([f3ed2b8](agentcontrol/agent-control@f3ed2b8))
* **server:** Add observability system for control execution tracking ([#44](agentcontrol/agent-control#44)) ([fd0bddc](agentcontrol/agent-control@fd0bddc))
* **server:** add prometheus metrics for endpoints ([#68](agentcontrol/agent-control#68)) ([775612c](agentcontrol/agent-control@775612c))
* **server:** add time-series stats and split API endpoints ([#6](agentcontrol/agent-control#6)) ([a0fa597](agentcontrol/agent-control@a0fa597))
* **server:** hard-cut migrate to remove agent UUID ([#44](agentcontrol/agent-control#44)) ([ee322c9](agentcontrol/agent-control@ee322c9))
* **server:** Optional Policy and many to many relationships ([#41](agentcontrol/agent-control#41)) ([1a62746](agentcontrol/agent-control@1a62746))
* **ui:** add sql, luna2, json control forms and restructure the code ([#54](agentcontrol/agent-control#54)) ([c4c1d4a](agentcontrol/agent-control@c4c1d4a))
* **ui:** allow to delete control ([#39](agentcontrol/agent-control#39)) ([7dc4ca3](agentcontrol/agent-control@7dc4ca3))
* **ui:** Control Store Flow Updated ([#4](agentcontrol/agent-control#4)) ([dda9f70](agentcontrol/agent-control@dda9f70))
* **ui:** stats dashboard ([#80](agentcontrol/agent-control#80)) ([4cbb7fe](agentcontrol/agent-control@4cbb7fe))
* **ui:** Steps dropdown rendered based on api return values ([#36](agentcontrol/agent-control#36)) ([a2aca43](agentcontrol/agent-control@a2aca43))
* **ui:** tests added and some minor ui changes, added error boundaries ([#61](agentcontrol/agent-control#61)) ([009852b](agentcontrol/agent-control@009852b))
* **ui:** update agent control icon and favicon ([#42](agentcontrol/agent-control#42)) ([19af8fa](agentcontrol/agent-control@19af8fa))
### Bug Fixes
* **ci:** Add ui scope to PR title validation ([#59](agentcontrol/agent-control#59)) ([e0fdb52](agentcontrol/agent-control@e0fdb52))
* **ci:** correct galileo contrib path in release build script ([#51](agentcontrol/agent-control#51)) ([2de6013](agentcontrol/agent-control@2de6013))
* **ci:** Enable pr title on prs ([#56](agentcontrol/agent-control#56)) ([3d8b5fe](agentcontrol/agent-control@3d8b5fe))
* **ci:** Fix release ([#11](agentcontrol/agent-control#11)) ([9dd3dd7](agentcontrol/agent-control@9dd3dd7))
* **ci:** Use galileo-automation bot for releases ([#57](agentcontrol/agent-control#57)) ([bc8eea0](agentcontrol/agent-control@bc8eea0))
* **docs:** Add Example for Evaluator Extension ([#3](agentcontrol/agent-control#3)) ([c2a70b3](agentcontrol/agent-control@c2a70b3))
* **docs:** add setup script ([#49](agentcontrol/agent-control#49)) ([7a212c3](agentcontrol/agent-control@7a212c3))
* **docs:** Clean up Protect ([#76](agentcontrol/agent-control#76)) ([99c16fd](agentcontrol/agent-control@99c16fd))
* **docs:** Fix Examples for LangGraph ([#64](agentcontrol/agent-control#64)) ([23b30ae](agentcontrol/agent-control@23b30ae))
* **docs:** Improve documentation for open source release ([#47](agentcontrol/agent-control#47)) ([9018fb3](agentcontrol/agent-control@9018fb3))
* **docs:** Remove old/unused examples ([#66](agentcontrol/agent-control#66)) ([f417781](agentcontrol/agent-control@f417781))
* **docs:** Update Contributing Guide ([#8](agentcontrol/agent-control#8)) ([10b34c8](agentcontrol/agent-control@10b34c8))
* **docs:** Update readme ([#37](agentcontrol/agent-control#37)) ([7531d83](agentcontrol/agent-control@7531d83))
* **docs:** Update README ([#2](agentcontrol/agent-control#2)) ([379bb15](agentcontrol/agent-control@379bb15))
* **examples:** Control sets cleanup with signed ([#65](agentcontrol/agent-control#65)) ([af7b5fb](agentcontrol/agent-control@af7b5fb))
* **examples:** Update crew ai example to use evaluator ([#93](agentcontrol/agent-control#93)) ([1c65084](agentcontrol/agent-control@1c65084))
* **infra:** Add plugins directory to Dockerfile ([#58](agentcontrol/agent-control#58)) ([171d459](agentcontrol/agent-control@171d459))
* **infra:** install engine/evaluators in server image ([#14](agentcontrol/agent-control#14)) ([d5ae157](agentcontrol/agent-control@d5ae157))
* **models:** use StrEnum for error enums ([#12](agentcontrol/agent-control#12)) ([3f41c9f](agentcontrol/agent-control@3f41c9f))
* **sdk-ts:** add conventional commits preset dependency ([#55](agentcontrol/agent-control#55)) ([540fe9d](agentcontrol/agent-control@540fe9d))
* **sdk-ts:** export npm token for semantic-release npm auth ([#54](agentcontrol/agent-control#54)) ([1b6b993](agentcontrol/agent-control@1b6b993))
* **sdk:** 54253 add steer action and example ([#38](agentcontrol/agent-control#38)) ([bf2380a](agentcontrol/agent-control@bf2380a))
* **sdk:** a bug in docker file ([#46](agentcontrol/agent-control#46)) ([12d1794](agentcontrol/agent-control@12d1794))
* **sdk:** Add step_name as parameter to control ([#25](agentcontrol/agent-control#25)) ([19ade9d](agentcontrol/agent-control@19ade9d))
* **sdk:** emit observability events for SDK-evaluated controls and fix non_matches propagation ([#24](agentcontrol/agent-control#24)) ([6a9da69](agentcontrol/agent-control@6a9da69))
* **sdk:** enforce UUID agent IDs ([#9](agentcontrol/agent-control#9)) ([5ccdbd0](agentcontrol/agent-control@5ccdbd0))
* **sdk:** Fix logging ([#77](agentcontrol/agent-control#77)) ([b1f078c](agentcontrol/agent-control@b1f078c))
* **sdk:** plugin to evaluator.. agent_protect to agent_control ([#88](agentcontrol/agent-control#88)) ([fc9b088](agentcontrol/agent-control@fc9b088))
* **server:** enforce public-safe API error responses ([#20](agentcontrol/agent-control#20)) ([e50d817](agentcontrol/agent-control@e50d817))
* **server:** Feature/56688 fix docker and create bash ([#45](agentcontrol/agent-control#45)) ([7277e27](agentcontrol/agent-control@7277e27))
* **server:** Feature/56688 fix image bug ([#48](agentcontrol/agent-control#48)) ([71e6b44](agentcontrol/agent-control@71e6b44))
* **server:** fix alembic migrations ([#47](agentcontrol/agent-control#47)) ([c19c17c](agentcontrol/agent-control@c19c17c))
* **server:** reject initAgent UUID/name mismatch ([#13](agentcontrol/agent-control#13)) ([19d61ff](agentcontrol/agent-control@19d61ff))
* tighten evaluation error handling and preserve control data ([52a1ef8](agentcontrol/agent-control@52a1ef8))
* **ui:** Fix UI and clients for simplified step schema ([#75](agentcontrol/agent-control#75)) ([be2aaf0](agentcontrol/agent-control@be2aaf0))
* **ui:** json validation ([#10](agentcontrol/agent-control#10)) ([a0cd5af](agentcontrol/agent-control@a0cd5af))
* **ui:** selector subpaths issue ([#34](agentcontrol/agent-control#34)) ([79cb776](agentcontrol/agent-control@79cb776))
* **ui:** UI feedback fixes ([#27](agentcontrol/agent-control#27)) ([6004761](agentcontrol/agent-control@6004761))
### Code Refactoring
* **evaluators:** rename plugin to evaluator throughout ([#81](agentcontrol/agent-control#81)) ([0134682](agentcontrol/agent-control@0134682))
* **evaluators:** split into builtin + extra packages for PyPI ([#5](agentcontrol/agent-control#5)) ([0e0a78a](agentcontrol/agent-control@0e0a78a))
* **models:** simplify step model and schema ([#70](agentcontrol/agent-control#70)) ([4c1d637](agentcontrol/agent-control@4c1d637))
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@siddhant-galileo@lan17@galileo-automation
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix(ui): create flow - name trimming issue - #93

Merged
siddhant-galileo merged 7 commits into
mainfrom
siddhant/name-trimming-issue
Mar 12, 2026
Merged

fix(ui): create flow - name trimming issue#93
siddhant-galileo merged 7 commits into
mainfrom
siddhant/name-trimming-issue

Conversation

@siddhant-galileo

@siddhant-galileosiddhant-galileo commented Mar 11, 2026

Copy link
Copy Markdown
Collaborator

Summary

Scope

  • User-facing/API changes:
  • Internal changes:
  • Out of scope:

Risk and Rollout

  • Risk level: low / medium / high
  • Rollback plan:

Testing

  • Added or updated automated tests
  • Ran make check (or explained why not)
  • Manually verified behavior

Checklist

  • Linked issue/spec (if applicable)
  • Updated docs/examples for user-facing changes
  • Included any required follow-up tasks

@lan17lan17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added two inline review comments.

Comment threadui/src/core/components/login-modal.tsx Outdated
@lan17

Copy link
Copy Markdown
Contributor

I think the main unresolved issue here is the contract boundary.

This repo already has a clear pattern for agent names: normalization is defined once and applied consistently across shared models, server endpoints, and SDK entry points. Control names still do not have that. In this PR, the only canonicalization being added is inside one UI flow, while the server create/patch endpoints and both SDKs still treat name as caller-provided input.

That matters because non-UI clients are real clients here. A browser user now gets trimming/canonicalization in the modal, but Python and TypeScript SDK callers still need to know to pre-trim or they will just hit API validation. I think we should make that choice explicit: either control-name canonicalization belongs at the server/shared boundary, or this remains validation-only and every client is responsible for sending canonical names. I would avoid implicitly defining canonical control names in one modal.

Separately, the legacy-name policy should be explicit and covered by a regression test. The code reads like “existing invalid names remain editable unless the user actually renames them”, which seems reasonable, but it should be stated and tested directly.

The login logo swap also looks unrelated to the trimming fix. If it’s intentional, I’d explain it in the PR; otherwise I’d split it out.

@siddhant-galileo

siddhant-galileo commented Mar 11, 2026

Copy link
Copy Markdown
CollaboratorAuthor

I think the main unresolved issue here is the contract boundary.

This repo already has a clear pattern for agent names: normalization is defined once and applied consistently across shared models, server endpoints, and SDK entry points. Control names still do not have that. In this PR, the only canonicalization being added is inside one UI flow, while the server create/patch endpoints and both SDKs still treat name as caller-provided input.

That matters because non-UI clients are real clients here. A browser user now gets trimming/canonicalization in the modal, but Python and TypeScript SDK callers still need to know to pre-trim or they will just hit API validation. I think we should make that choice explicit: either control-name canonicalization belongs at the server/shared boundary, or this remains validation-only and every client is responsible for sending canonical names. I would avoid implicitly defining canonical control names in one modal.

Separately, the legacy-name policy should be explicit and covered by a regression test. The code reads like “existing invalid names remain editable unless the user actually renames them”, which seems reasonable, but it should be stated and tested directly.

Fixed this - moved logic to server now. UI only uses trim to check if name has updated or not

The login logo swap also looks unrelated to the trimming fix. If it’s intentional, I’d explain it in the PR; otherwise I’d split it out.

Added a line in PR description

@lan17lan17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

@siddhant-galileo
siddhant-galileo merged commit 1a9759d into mainMar 12, 2026
6 checks passed
@siddhant-galileo
siddhant-galileo deleted the siddhant/name-trimming-issue branch March 12, 2026 04:53
galileo-automation pushed a commit that referenced this pull request Mar 18, 2026
## [2.0.0](ts-sdk-v1.1.0...ts-sdk-v2.0.0) (2026-03-18)
### ⚠ BREAKING CHANGES
* **server:** implement recursive control condition trees (#115)
### Features
* **docs:** simplify main README quick start v2 ([#100](#100)) ([7701c65](7701c65))
* **docs:** Update README.md to accurately mention Strands Agents SDK ([#105](#105)) ([84dfa57](84dfa57))
* **evaluators:** add Cisco AI Defense evaluator and examples ([#60](#60)) ([52e2416](52e2416))
* **sdk:** add Google ADK framework integration ([#83](#83)) ([f2b53ee](f2b53ee))
* **server:** implement recursive control condition trees ([#115](#115)) ([2ff4c12](2ff4c12))
### Bug Fixes
* **docs:** clarify README quickstart flow ([#119](#119)) ([317c626](317c626))
* **docs:** cleanup readme ([#66](#66)) ([eca0d6b](eca0d6b))
* **docs:** promote Google ADK plugin in README ([#99](#99)) ([f038aa4](f038aa4))
* **evaluators:** address Cisco AI Defense review issues ([#103](#103)) ([81da81b](81da81b))
* **examples:** shut down SDK in short-lived demos ([#85](#85)) ([df43264](df43264))
* **sdk:** fail closed on post-hook evaluation errors ([#114](#114)) ([67f8fc1](67f8fc1)), closes [#112](#112)
* **sdk:** skip evaluation when no controls apply ([#124](#124)) ([d2cd9f9](d2cd9f9))
* **server:** escape ILIKE pattern in evaluator-configs list endpoint ([#108](#108)) ([cb6e89f](cb6e89f))
* **server:** reject empty string list evaluator values ([#121](#121)) ([2c55d27](2c55d27))
* **server:** revert unwanted changes in server config ([#117](#117)) ([d92e168](d92e168))
* **ui:** create flow - name trimming issue ([#93](#93)) ([1a9759d](1a9759d))
@galileo-automation

Copy link
Copy Markdown
Collaborator

🎉 This PR is included in version 2.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

shyamsunderrai pushed a commit to shyamsunderrai/agent-control that referenced this pull request Apr 20, 2026
## 1.0.0 (2026-03-04)
### ⚠ BREAKING CHANGES
* **server:** Feature/56688 fix image bug (#48)
* **sdk:** a bug in docker file (#46)
* **server:** Feature/56688 fix docker and create bash (#45)
* **evaluators:** Evaluator reorganization with new package structure
Package Structure:
- agent-control-evaluators (v3.0.0): core + regex, list, json, sql
- agent-control-evaluator-galileo (v3.0.0): Luna2 evaluator
Key Changes:
- Entry points for evaluator discovery (agent_control.evaluators)
- Dot notation for external evaluators (galileo.luna2 not galileo/luna2)
- Dynamic __version__ via importlib.metadata
- Server uses evaluators as runtime dep (no longer vendored)
- Release workflow publishes both packages to PyPI
Bug Fixes:
- JSON evaluator: field_constraints/field_patterns in extra-fields allow-list
- SQL evaluator: LIMIT/OFFSET bypass fix
Migration:
- Import: agent_control_evaluator_galileo.luna2 (not agent_control_evaluators.galileo_luna2)
- DB: UPDATE controls SET evaluator.name replace('/', '.')
* **server:** add time-series stats and split API endpoints (#6)
* **evaluators:** rename plugin to evaluator throughout (#81)
* **models:** simplify step model and schema (#70)
### Features
* Add plugin auto-discovery via Python entry points ([#49](agentcontrol/agent-control#49)) ([1521182](agentcontrol/agent-control@1521182))
* **docs:** add GitHub badges and CI coverage reporting ([#90](agentcontrol/agent-control#90)) ([be1fa14](agentcontrol/agent-control@be1fa14))
* **evaluators:** add required_column_values for multi-tenant SQL validation ([#30](agentcontrol/agent-control#30)) ([532386c](agentcontrol/agent-control@532386c))
* **sdk-ts:** automate semantic-release for npm publishing ([#52](agentcontrol/agent-control#52)) ([2b43958](agentcontrol/agent-control@2b43958))
* **sdk:** Add PyPI packaging with semantic release ([#52](agentcontrol/agent-control#52)) ([7c24f7f](agentcontrol/agent-control@7c24f7f))
* **sdk:** Auto-populate init() steps from [@control](https://github.com/control)() decorators ([#23](agentcontrol/agent-control#23)) ([dc0f2a4](agentcontrol/agent-control@dc0f2a4))
* **sdk:** export ControlScope, ControlMatch, and EvaluatorResult models ([#18](agentcontrol/agent-control#18)) ([0d49cad](agentcontrol/agent-control@0d49cad))
* **sdk:** Get Agent Controls from SDK Init ([#15](agentcontrol/agent-control#15)) ([a485f93](agentcontrol/agent-control@a485f93))
* **sdk:** Refresh controls in a background loop ([#43](agentcontrol/agent-control#43)) ([03f826d](agentcontrol/agent-control@03f826d))
* **sdk:** ship TypeScript SDK with deterministic method naming ([#32](agentcontrol/agent-control#32)) ([a76e9b0](agentcontrol/agent-control@a76e9b0))
* **server:** add evaluator config store ([#78](agentcontrol/agent-control#78)) ([cc14aa6](agentcontrol/agent-control@cc14aa6))
* **server:** add initAgent conflict_mode overwrite mode with SDK defaults ([#40](agentcontrol/agent-control#40)) ([f3ed2b8](agentcontrol/agent-control@f3ed2b8))
* **server:** Add observability system for control execution tracking ([#44](agentcontrol/agent-control#44)) ([fd0bddc](agentcontrol/agent-control@fd0bddc))
* **server:** add prometheus metrics for endpoints ([#68](agentcontrol/agent-control#68)) ([775612c](agentcontrol/agent-control@775612c))
* **server:** add time-series stats and split API endpoints ([#6](agentcontrol/agent-control#6)) ([a0fa597](agentcontrol/agent-control@a0fa597))
* **server:** hard-cut migrate to remove agent UUID ([#44](agentcontrol/agent-control#44)) ([ee322c9](agentcontrol/agent-control@ee322c9))
* **server:** Optional Policy and many to many relationships ([#41](agentcontrol/agent-control#41)) ([1a62746](agentcontrol/agent-control@1a62746))
* **ui:** add sql, luna2, json control forms and restructure the code ([#54](agentcontrol/agent-control#54)) ([c4c1d4a](agentcontrol/agent-control@c4c1d4a))
* **ui:** allow to delete control ([#39](agentcontrol/agent-control#39)) ([7dc4ca3](agentcontrol/agent-control@7dc4ca3))
* **ui:** Control Store Flow Updated ([#4](agentcontrol/agent-control#4)) ([dda9f70](agentcontrol/agent-control@dda9f70))
* **ui:** stats dashboard ([#80](agentcontrol/agent-control#80)) ([4cbb7fe](agentcontrol/agent-control@4cbb7fe))
* **ui:** Steps dropdown rendered based on api return values ([#36](agentcontrol/agent-control#36)) ([a2aca43](agentcontrol/agent-control@a2aca43))
* **ui:** tests added and some minor ui changes, added error boundaries ([#61](agentcontrol/agent-control#61)) ([009852b](agentcontrol/agent-control@009852b))
* **ui:** update agent control icon and favicon ([#42](agentcontrol/agent-control#42)) ([19af8fa](agentcontrol/agent-control@19af8fa))
### Bug Fixes
* **ci:** Add ui scope to PR title validation ([#59](agentcontrol/agent-control#59)) ([e0fdb52](agentcontrol/agent-control@e0fdb52))
* **ci:** correct galileo contrib path in release build script ([#51](agentcontrol/agent-control#51)) ([2de6013](agentcontrol/agent-control@2de6013))
* **ci:** Enable pr title on prs ([#56](agentcontrol/agent-control#56)) ([3d8b5fe](agentcontrol/agent-control@3d8b5fe))
* **ci:** Fix release ([#11](agentcontrol/agent-control#11)) ([9dd3dd7](agentcontrol/agent-control@9dd3dd7))
* **ci:** Use galileo-automation bot for releases ([#57](agentcontrol/agent-control#57)) ([bc8eea0](agentcontrol/agent-control@bc8eea0))
* **docs:** Add Example for Evaluator Extension ([#3](agentcontrol/agent-control#3)) ([c2a70b3](agentcontrol/agent-control@c2a70b3))
* **docs:** add setup script ([#49](agentcontrol/agent-control#49)) ([7a212c3](agentcontrol/agent-control@7a212c3))
* **docs:** Clean up Protect ([#76](agentcontrol/agent-control#76)) ([99c16fd](agentcontrol/agent-control@99c16fd))
* **docs:** Fix Examples for LangGraph ([#64](agentcontrol/agent-control#64)) ([23b30ae](agentcontrol/agent-control@23b30ae))
* **docs:** Improve documentation for open source release ([#47](agentcontrol/agent-control#47)) ([9018fb3](agentcontrol/agent-control@9018fb3))
* **docs:** Remove old/unused examples ([#66](agentcontrol/agent-control#66)) ([f417781](agentcontrol/agent-control@f417781))
* **docs:** Update Contributing Guide ([#8](agentcontrol/agent-control#8)) ([10b34c8](agentcontrol/agent-control@10b34c8))
* **docs:** Update readme ([#37](agentcontrol/agent-control#37)) ([7531d83](agentcontrol/agent-control@7531d83))
* **docs:** Update README ([#2](agentcontrol/agent-control#2)) ([379bb15](agentcontrol/agent-control@379bb15))
* **examples:** Control sets cleanup with signed ([#65](agentcontrol/agent-control#65)) ([af7b5fb](agentcontrol/agent-control@af7b5fb))
* **examples:** Update crew ai example to use evaluator ([#93](agentcontrol/agent-control#93)) ([1c65084](agentcontrol/agent-control@1c65084))
* **infra:** Add plugins directory to Dockerfile ([#58](agentcontrol/agent-control#58)) ([171d459](agentcontrol/agent-control@171d459))
* **infra:** install engine/evaluators in server image ([#14](agentcontrol/agent-control#14)) ([d5ae157](agentcontrol/agent-control@d5ae157))
* **models:** use StrEnum for error enums ([#12](agentcontrol/agent-control#12)) ([3f41c9f](agentcontrol/agent-control@3f41c9f))
* **sdk-ts:** add conventional commits preset dependency ([#55](agentcontrol/agent-control#55)) ([540fe9d](agentcontrol/agent-control@540fe9d))
* **sdk-ts:** export npm token for semantic-release npm auth ([#54](agentcontrol/agent-control#54)) ([1b6b993](agentcontrol/agent-control@1b6b993))
* **sdk:** 54253 add steer action and example ([#38](agentcontrol/agent-control#38)) ([bf2380a](agentcontrol/agent-control@bf2380a))
* **sdk:** a bug in docker file ([#46](agentcontrol/agent-control#46)) ([12d1794](agentcontrol/agent-control@12d1794))
* **sdk:** Add step_name as parameter to control ([#25](agentcontrol/agent-control#25)) ([19ade9d](agentcontrol/agent-control@19ade9d))
* **sdk:** emit observability events for SDK-evaluated controls and fix non_matches propagation ([#24](agentcontrol/agent-control#24)) ([6a9da69](agentcontrol/agent-control@6a9da69))
* **sdk:** enforce UUID agent IDs ([#9](agentcontrol/agent-control#9)) ([5ccdbd0](agentcontrol/agent-control@5ccdbd0))
* **sdk:** Fix logging ([#77](agentcontrol/agent-control#77)) ([b1f078c](agentcontrol/agent-control@b1f078c))
* **sdk:** plugin to evaluator.. agent_protect to agent_control ([#88](agentcontrol/agent-control#88)) ([fc9b088](agentcontrol/agent-control@fc9b088))
* **server:** enforce public-safe API error responses ([#20](agentcontrol/agent-control#20)) ([e50d817](agentcontrol/agent-control@e50d817))
* **server:** Feature/56688 fix docker and create bash ([#45](agentcontrol/agent-control#45)) ([7277e27](agentcontrol/agent-control@7277e27))
* **server:** Feature/56688 fix image bug ([#48](agentcontrol/agent-control#48)) ([71e6b44](agentcontrol/agent-control@71e6b44))
* **server:** fix alembic migrations ([#47](agentcontrol/agent-control#47)) ([c19c17c](agentcontrol/agent-control@c19c17c))
* **server:** reject initAgent UUID/name mismatch ([#13](agentcontrol/agent-control#13)) ([19d61ff](agentcontrol/agent-control@19d61ff))
* tighten evaluation error handling and preserve control data ([52a1ef8](agentcontrol/agent-control@52a1ef8))
* **ui:** Fix UI and clients for simplified step schema ([#75](agentcontrol/agent-control#75)) ([be2aaf0](agentcontrol/agent-control@be2aaf0))
* **ui:** json validation ([#10](agentcontrol/agent-control#10)) ([a0cd5af](agentcontrol/agent-control@a0cd5af))
* **ui:** selector subpaths issue ([#34](agentcontrol/agent-control#34)) ([79cb776](agentcontrol/agent-control@79cb776))
* **ui:** UI feedback fixes ([#27](agentcontrol/agent-control#27)) ([6004761](agentcontrol/agent-control@6004761))
### Code Refactoring
* **evaluators:** rename plugin to evaluator throughout ([#81](agentcontrol/agent-control#81)) ([0134682](agentcontrol/agent-control@0134682))
* **evaluators:** split into builtin + extra packages for PyPI ([#5](agentcontrol/agent-control#5)) ([0e0a78a](agentcontrol/agent-control@0e0a78a))
* **models:** simplify step model and schema ([#70](agentcontrol/agent-control#70)) ([4c1d637](agentcontrol/agent-control@4c1d637))
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@siddhant-galileo@lan17@galileo-automation
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(ui): create flow - name trimming issue - #93

Merged
siddhant-galileo merged 7 commits into
mainfrom
siddhant/name-trimming-issue
Mar 12, 2026
Merged

fix(ui): create flow - name trimming issue#93
siddhant-galileo merged 7 commits into
mainfrom
siddhant/name-trimming-issue

Conversation

@siddhant-galileo

@siddhant-galileosiddhant-galileo commented Mar 11, 2026

Copy link
Copy Markdown
Collaborator

Summary

Scope

  • User-facing/API changes:
  • Internal changes:
  • Out of scope:

Risk and Rollout

  • Risk level: low / medium / high
  • Rollback plan:

Testing

  • Added or updated automated tests
  • Ran make check (or explained why not)
  • Manually verified behavior

Checklist

  • Linked issue/spec (if applicable)
  • Updated docs/examples for user-facing changes
  • Included any required follow-up tasks

@lan17lan17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added two inline review comments.

Comment threadui/src/core/components/login-modal.tsx Outdated
@lan17

Copy link
Copy Markdown
Contributor

I think the main unresolved issue here is the contract boundary.

This repo already has a clear pattern for agent names: normalization is defined once and applied consistently across shared models, server endpoints, and SDK entry points. Control names still do not have that. In this PR, the only canonicalization being added is inside one UI flow, while the server create/patch endpoints and both SDKs still treat name as caller-provided input.

That matters because non-UI clients are real clients here. A browser user now gets trimming/canonicalization in the modal, but Python and TypeScript SDK callers still need to know to pre-trim or they will just hit API validation. I think we should make that choice explicit: either control-name canonicalization belongs at the server/shared boundary, or this remains validation-only and every client is responsible for sending canonical names. I would avoid implicitly defining canonical control names in one modal.

Separately, the legacy-name policy should be explicit and covered by a regression test. The code reads like “existing invalid names remain editable unless the user actually renames them”, which seems reasonable, but it should be stated and tested directly.

The login logo swap also looks unrelated to the trimming fix. If it’s intentional, I’d explain it in the PR; otherwise I’d split it out.

@siddhant-galileo

siddhant-galileo commented Mar 11, 2026

Copy link
Copy Markdown
CollaboratorAuthor

I think the main unresolved issue here is the contract boundary.

This repo already has a clear pattern for agent names: normalization is defined once and applied consistently across shared models, server endpoints, and SDK entry points. Control names still do not have that. In this PR, the only canonicalization being added is inside one UI flow, while the server create/patch endpoints and both SDKs still treat name as caller-provided input.

That matters because non-UI clients are real clients here. A browser user now gets trimming/canonicalization in the modal, but Python and TypeScript SDK callers still need to know to pre-trim or they will just hit API validation. I think we should make that choice explicit: either control-name canonicalization belongs at the server/shared boundary, or this remains validation-only and every client is responsible for sending canonical names. I would avoid implicitly defining canonical control names in one modal.

Separately, the legacy-name policy should be explicit and covered by a regression test. The code reads like “existing invalid names remain editable unless the user actually renames them”, which seems reasonable, but it should be stated and tested directly.

Fixed this - moved logic to server now. UI only uses trim to check if name has updated or not

The login logo swap also looks unrelated to the trimming fix. If it’s intentional, I’d explain it in the PR; otherwise I’d split it out.

Added a line in PR description

@lan17lan17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

@siddhant-galileo
siddhant-galileo merged commit 1a9759d into mainMar 12, 2026
6 checks passed
@siddhant-galileo
siddhant-galileo deleted the siddhant/name-trimming-issue branch March 12, 2026 04:53
galileo-automation pushed a commit that referenced this pull request Mar 18, 2026
## [2.0.0](ts-sdk-v1.1.0...ts-sdk-v2.0.0) (2026-03-18)
### ⚠ BREAKING CHANGES
* **server:** implement recursive control condition trees (#115)
### Features
* **docs:** simplify main README quick start v2 ([#100](#100)) ([7701c65](7701c65))
* **docs:** Update README.md to accurately mention Strands Agents SDK ([#105](#105)) ([84dfa57](84dfa57))
* **evaluators:** add Cisco AI Defense evaluator and examples ([#60](#60)) ([52e2416](52e2416))
* **sdk:** add Google ADK framework integration ([#83](#83)) ([f2b53ee](f2b53ee))
* **server:** implement recursive control condition trees ([#115](#115)) ([2ff4c12](2ff4c12))
### Bug Fixes
* **docs:** clarify README quickstart flow ([#119](#119)) ([317c626](317c626))
* **docs:** cleanup readme ([#66](#66)) ([eca0d6b](eca0d6b))
* **docs:** promote Google ADK plugin in README ([#99](#99)) ([f038aa4](f038aa4))
* **evaluators:** address Cisco AI Defense review issues ([#103](#103)) ([81da81b](81da81b))
* **examples:** shut down SDK in short-lived demos ([#85](#85)) ([df43264](df43264))
* **sdk:** fail closed on post-hook evaluation errors ([#114](#114)) ([67f8fc1](67f8fc1)), closes [#112](#112)
* **sdk:** skip evaluation when no controls apply ([#124](#124)) ([d2cd9f9](d2cd9f9))
* **server:** escape ILIKE pattern in evaluator-configs list endpoint ([#108](#108)) ([cb6e89f](cb6e89f))
* **server:** reject empty string list evaluator values ([#121](#121)) ([2c55d27](2c55d27))
* **server:** revert unwanted changes in server config ([#117](#117)) ([d92e168](d92e168))
* **ui:** create flow - name trimming issue ([#93](#93)) ([1a9759d](1a9759d))
@galileo-automation

Copy link
Copy Markdown
Collaborator

🎉 This PR is included in version 2.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

shyamsunderrai pushed a commit to shyamsunderrai/agent-control that referenced this pull request Apr 20, 2026
## 1.0.0 (2026-03-04)
### ⚠ BREAKING CHANGES
* **server:** Feature/56688 fix image bug (#48)
* **sdk:** a bug in docker file (#46)
* **server:** Feature/56688 fix docker and create bash (#45)
* **evaluators:** Evaluator reorganization with new package structure
Package Structure:
- agent-control-evaluators (v3.0.0): core + regex, list, json, sql
- agent-control-evaluator-galileo (v3.0.0): Luna2 evaluator
Key Changes:
- Entry points for evaluator discovery (agent_control.evaluators)
- Dot notation for external evaluators (galileo.luna2 not galileo/luna2)
- Dynamic __version__ via importlib.metadata
- Server uses evaluators as runtime dep (no longer vendored)
- Release workflow publishes both packages to PyPI
Bug Fixes:
- JSON evaluator: field_constraints/field_patterns in extra-fields allow-list
- SQL evaluator: LIMIT/OFFSET bypass fix
Migration:
- Import: agent_control_evaluator_galileo.luna2 (not agent_control_evaluators.galileo_luna2)
- DB: UPDATE controls SET evaluator.name replace('/', '.')
* **server:** add time-series stats and split API endpoints (#6)
* **evaluators:** rename plugin to evaluator throughout (#81)
* **models:** simplify step model and schema (#70)
### Features
* Add plugin auto-discovery via Python entry points ([#49](agentcontrol/agent-control#49)) ([1521182](agentcontrol/agent-control@1521182))
* **docs:** add GitHub badges and CI coverage reporting ([#90](agentcontrol/agent-control#90)) ([be1fa14](agentcontrol/agent-control@be1fa14))
* **evaluators:** add required_column_values for multi-tenant SQL validation ([#30](agentcontrol/agent-control#30)) ([532386c](agentcontrol/agent-control@532386c))
* **sdk-ts:** automate semantic-release for npm publishing ([#52](agentcontrol/agent-control#52)) ([2b43958](agentcontrol/agent-control@2b43958))
* **sdk:** Add PyPI packaging with semantic release ([#52](agentcontrol/agent-control#52)) ([7c24f7f](agentcontrol/agent-control@7c24f7f))
* **sdk:** Auto-populate init() steps from [@control](https://github.com/control)() decorators ([#23](agentcontrol/agent-control#23)) ([dc0f2a4](agentcontrol/agent-control@dc0f2a4))
* **sdk:** export ControlScope, ControlMatch, and EvaluatorResult models ([#18](agentcontrol/agent-control#18)) ([0d49cad](agentcontrol/agent-control@0d49cad))
* **sdk:** Get Agent Controls from SDK Init ([#15](agentcontrol/agent-control#15)) ([a485f93](agentcontrol/agent-control@a485f93))
* **sdk:** Refresh controls in a background loop ([#43](agentcontrol/agent-control#43)) ([03f826d](agentcontrol/agent-control@03f826d))
* **sdk:** ship TypeScript SDK with deterministic method naming ([#32](agentcontrol/agent-control#32)) ([a76e9b0](agentcontrol/agent-control@a76e9b0))
* **server:** add evaluator config store ([#78](agentcontrol/agent-control#78)) ([cc14aa6](agentcontrol/agent-control@cc14aa6))
* **server:** add initAgent conflict_mode overwrite mode with SDK defaults ([#40](agentcontrol/agent-control#40)) ([f3ed2b8](agentcontrol/agent-control@f3ed2b8))
* **server:** Add observability system for control execution tracking ([#44](agentcontrol/agent-control#44)) ([fd0bddc](agentcontrol/agent-control@fd0bddc))
* **server:** add prometheus metrics for endpoints ([#68](agentcontrol/agent-control#68)) ([775612c](agentcontrol/agent-control@775612c))
* **server:** add time-series stats and split API endpoints ([#6](agentcontrol/agent-control#6)) ([a0fa597](agentcontrol/agent-control@a0fa597))
* **server:** hard-cut migrate to remove agent UUID ([#44](agentcontrol/agent-control#44)) ([ee322c9](agentcontrol/agent-control@ee322c9))
* **server:** Optional Policy and many to many relationships ([#41](agentcontrol/agent-control#41)) ([1a62746](agentcontrol/agent-control@1a62746))
* **ui:** add sql, luna2, json control forms and restructure the code ([#54](agentcontrol/agent-control#54)) ([c4c1d4a](agentcontrol/agent-control@c4c1d4a))
* **ui:** allow to delete control ([#39](agentcontrol/agent-control#39)) ([7dc4ca3](agentcontrol/agent-control@7dc4ca3))
* **ui:** Control Store Flow Updated ([#4](agentcontrol/agent-control#4)) ([dda9f70](agentcontrol/agent-control@dda9f70))
* **ui:** stats dashboard ([#80](agentcontrol/agent-control#80)) ([4cbb7fe](agentcontrol/agent-control@4cbb7fe))
* **ui:** Steps dropdown rendered based on api return values ([#36](agentcontrol/agent-control#36)) ([a2aca43](agentcontrol/agent-control@a2aca43))
* **ui:** tests added and some minor ui changes, added error boundaries ([#61](agentcontrol/agent-control#61)) ([009852b](agentcontrol/agent-control@009852b))
* **ui:** update agent control icon and favicon ([#42](agentcontrol/agent-control#42)) ([19af8fa](agentcontrol/agent-control@19af8fa))
### Bug Fixes
* **ci:** Add ui scope to PR title validation ([#59](agentcontrol/agent-control#59)) ([e0fdb52](agentcontrol/agent-control@e0fdb52))
* **ci:** correct galileo contrib path in release build script ([#51](agentcontrol/agent-control#51)) ([2de6013](agentcontrol/agent-control@2de6013))
* **ci:** Enable pr title on prs ([#56](agentcontrol/agent-control#56)) ([3d8b5fe](agentcontrol/agent-control@3d8b5fe))
* **ci:** Fix release ([#11](agentcontrol/agent-control#11)) ([9dd3dd7](agentcontrol/agent-control@9dd3dd7))
* **ci:** Use galileo-automation bot for releases ([#57](agentcontrol/agent-control#57)) ([bc8eea0](agentcontrol/agent-control@bc8eea0))
* **docs:** Add Example for Evaluator Extension ([#3](agentcontrol/agent-control#3)) ([c2a70b3](agentcontrol/agent-control@c2a70b3))
* **docs:** add setup script ([#49](agentcontrol/agent-control#49)) ([7a212c3](agentcontrol/agent-control@7a212c3))
* **docs:** Clean up Protect ([#76](agentcontrol/agent-control#76)) ([99c16fd](agentcontrol/agent-control@99c16fd))
* **docs:** Fix Examples for LangGraph ([#64](agentcontrol/agent-control#64)) ([23b30ae](agentcontrol/agent-control@23b30ae))
* **docs:** Improve documentation for open source release ([#47](agentcontrol/agent-control#47)) ([9018fb3](agentcontrol/agent-control@9018fb3))
* **docs:** Remove old/unused examples ([#66](agentcontrol/agent-control#66)) ([f417781](agentcontrol/agent-control@f417781))
* **docs:** Update Contributing Guide ([#8](agentcontrol/agent-control#8)) ([10b34c8](agentcontrol/agent-control@10b34c8))
* **docs:** Update readme ([#37](agentcontrol/agent-control#37)) ([7531d83](agentcontrol/agent-control@7531d83))
* **docs:** Update README ([#2](agentcontrol/agent-control#2)) ([379bb15](agentcontrol/agent-control@379bb15))
* **examples:** Control sets cleanup with signed ([#65](agentcontrol/agent-control#65)) ([af7b5fb](agentcontrol/agent-control@af7b5fb))
* **examples:** Update crew ai example to use evaluator ([#93](agentcontrol/agent-control#93)) ([1c65084](agentcontrol/agent-control@1c65084))
* **infra:** Add plugins directory to Dockerfile ([#58](agentcontrol/agent-control#58)) ([171d459](agentcontrol/agent-control@171d459))
* **infra:** install engine/evaluators in server image ([#14](agentcontrol/agent-control#14)) ([d5ae157](agentcontrol/agent-control@d5ae157))
* **models:** use StrEnum for error enums ([#12](agentcontrol/agent-control#12)) ([3f41c9f](agentcontrol/agent-control@3f41c9f))
* **sdk-ts:** add conventional commits preset dependency ([#55](agentcontrol/agent-control#55)) ([540fe9d](agentcontrol/agent-control@540fe9d))
* **sdk-ts:** export npm token for semantic-release npm auth ([#54](agentcontrol/agent-control#54)) ([1b6b993](agentcontrol/agent-control@1b6b993))
* **sdk:** 54253 add steer action and example ([#38](agentcontrol/agent-control#38)) ([bf2380a](agentcontrol/agent-control@bf2380a))
* **sdk:** a bug in docker file ([#46](agentcontrol/agent-control#46)) ([12d1794](agentcontrol/agent-control@12d1794))
* **sdk:** Add step_name as parameter to control ([#25](agentcontrol/agent-control#25)) ([19ade9d](agentcontrol/agent-control@19ade9d))
* **sdk:** emit observability events for SDK-evaluated controls and fix non_matches propagation ([#24](agentcontrol/agent-control#24)) ([6a9da69](agentcontrol/agent-control@6a9da69))
* **sdk:** enforce UUID agent IDs ([#9](agentcontrol/agent-control#9)) ([5ccdbd0](agentcontrol/agent-control@5ccdbd0))
* **sdk:** Fix logging ([#77](agentcontrol/agent-control#77)) ([b1f078c](agentcontrol/agent-control@b1f078c))
* **sdk:** plugin to evaluator.. agent_protect to agent_control ([#88](agentcontrol/agent-control#88)) ([fc9b088](agentcontrol/agent-control@fc9b088))
* **server:** enforce public-safe API error responses ([#20](agentcontrol/agent-control#20)) ([e50d817](agentcontrol/agent-control@e50d817))
* **server:** Feature/56688 fix docker and create bash ([#45](agentcontrol/agent-control#45)) ([7277e27](agentcontrol/agent-control@7277e27))
* **server:** Feature/56688 fix image bug ([#48](agentcontrol/agent-control#48)) ([71e6b44](agentcontrol/agent-control@71e6b44))
* **server:** fix alembic migrations ([#47](agentcontrol/agent-control#47)) ([c19c17c](agentcontrol/agent-control@c19c17c))
* **server:** reject initAgent UUID/name mismatch ([#13](agentcontrol/agent-control#13)) ([19d61ff](agentcontrol/agent-control@19d61ff))
* tighten evaluation error handling and preserve control data ([52a1ef8](agentcontrol/agent-control@52a1ef8))
* **ui:** Fix UI and clients for simplified step schema ([#75](agentcontrol/agent-control#75)) ([be2aaf0](agentcontrol/agent-control@be2aaf0))
* **ui:** json validation ([#10](agentcontrol/agent-control#10)) ([a0cd5af](agentcontrol/agent-control@a0cd5af))
* **ui:** selector subpaths issue ([#34](agentcontrol/agent-control#34)) ([79cb776](agentcontrol/agent-control@79cb776))
* **ui:** UI feedback fixes ([#27](agentcontrol/agent-control#27)) ([6004761](agentcontrol/agent-control@6004761))
### Code Refactoring
* **evaluators:** rename plugin to evaluator throughout ([#81](agentcontrol/agent-control#81)) ([0134682](agentcontrol/agent-control@0134682))
* **evaluators:** split into builtin + extra packages for PyPI ([#5](agentcontrol/agent-control#5)) ([0e0a78a](agentcontrol/agent-control@0e0a78a))
* **models:** simplify step model and schema ([#70](agentcontrol/agent-control#70)) ([4c1d637](agentcontrol/agent-control@4c1d637))
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@siddhant-galileo@lan17@galileo-automation
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(ui): create flow - name trimming issue - #93

Merged
siddhant-galileo merged 7 commits into
mainfrom
siddhant/name-trimming-issue
Mar 12, 2026
Merged

fix(ui): create flow - name trimming issue#93
siddhant-galileo merged 7 commits into
mainfrom
siddhant/name-trimming-issue

Conversation

@siddhant-galileo

@siddhant-galileosiddhant-galileo commented Mar 11, 2026

Copy link
Copy Markdown
Collaborator

Summary

Scope

  • User-facing/API changes:
  • Internal changes:
  • Out of scope:

Risk and Rollout

  • Risk level: low / medium / high
  • Rollback plan:

Testing

  • Added or updated automated tests
  • Ran make check (or explained why not)
  • Manually verified behavior

Checklist

  • Linked issue/spec (if applicable)
  • Updated docs/examples for user-facing changes
  • Included any required follow-up tasks

@lan17lan17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added two inline review comments.

Comment threadui/src/core/components/login-modal.tsx Outdated
@lan17

Copy link
Copy Markdown
Contributor

I think the main unresolved issue here is the contract boundary.

This repo already has a clear pattern for agent names: normalization is defined once and applied consistently across shared models, server endpoints, and SDK entry points. Control names still do not have that. In this PR, the only canonicalization being added is inside one UI flow, while the server create/patch endpoints and both SDKs still treat name as caller-provided input.

That matters because non-UI clients are real clients here. A browser user now gets trimming/canonicalization in the modal, but Python and TypeScript SDK callers still need to know to pre-trim or they will just hit API validation. I think we should make that choice explicit: either control-name canonicalization belongs at the server/shared boundary, or this remains validation-only and every client is responsible for sending canonical names. I would avoid implicitly defining canonical control names in one modal.

Separately, the legacy-name policy should be explicit and covered by a regression test. The code reads like “existing invalid names remain editable unless the user actually renames them”, which seems reasonable, but it should be stated and tested directly.

The login logo swap also looks unrelated to the trimming fix. If it’s intentional, I’d explain it in the PR; otherwise I’d split it out.

@siddhant-galileo

siddhant-galileo commented Mar 11, 2026

Copy link
Copy Markdown
CollaboratorAuthor

I think the main unresolved issue here is the contract boundary.

This repo already has a clear pattern for agent names: normalization is defined once and applied consistently across shared models, server endpoints, and SDK entry points. Control names still do not have that. In this PR, the only canonicalization being added is inside one UI flow, while the server create/patch endpoints and both SDKs still treat name as caller-provided input.

That matters because non-UI clients are real clients here. A browser user now gets trimming/canonicalization in the modal, but Python and TypeScript SDK callers still need to know to pre-trim or they will just hit API validation. I think we should make that choice explicit: either control-name canonicalization belongs at the server/shared boundary, or this remains validation-only and every client is responsible for sending canonical names. I would avoid implicitly defining canonical control names in one modal.

Separately, the legacy-name policy should be explicit and covered by a regression test. The code reads like “existing invalid names remain editable unless the user actually renames them”, which seems reasonable, but it should be stated and tested directly.

Fixed this - moved logic to server now. UI only uses trim to check if name has updated or not

The login logo swap also looks unrelated to the trimming fix. If it’s intentional, I’d explain it in the PR; otherwise I’d split it out.

Added a line in PR description

@lan17lan17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

@siddhant-galileo
siddhant-galileo merged commit 1a9759d into mainMar 12, 2026
6 checks passed
@siddhant-galileo
siddhant-galileo deleted the siddhant/name-trimming-issue branch March 12, 2026 04:53
galileo-automation pushed a commit that referenced this pull request Mar 18, 2026
## [2.0.0](ts-sdk-v1.1.0...ts-sdk-v2.0.0) (2026-03-18)
### ⚠ BREAKING CHANGES
* **server:** implement recursive control condition trees (#115)
### Features
* **docs:** simplify main README quick start v2 ([#100](#100)) ([7701c65](7701c65))
* **docs:** Update README.md to accurately mention Strands Agents SDK ([#105](#105)) ([84dfa57](84dfa57))
* **evaluators:** add Cisco AI Defense evaluator and examples ([#60](#60)) ([52e2416](52e2416))
* **sdk:** add Google ADK framework integration ([#83](#83)) ([f2b53ee](f2b53ee))
* **server:** implement recursive control condition trees ([#115](#115)) ([2ff4c12](2ff4c12))
### Bug Fixes
* **docs:** clarify README quickstart flow ([#119](#119)) ([317c626](317c626))
* **docs:** cleanup readme ([#66](#66)) ([eca0d6b](eca0d6b))
* **docs:** promote Google ADK plugin in README ([#99](#99)) ([f038aa4](f038aa4))
* **evaluators:** address Cisco AI Defense review issues ([#103](#103)) ([81da81b](81da81b))
* **examples:** shut down SDK in short-lived demos ([#85](#85)) ([df43264](df43264))
* **sdk:** fail closed on post-hook evaluation errors ([#114](#114)) ([67f8fc1](67f8fc1)), closes [#112](#112)
* **sdk:** skip evaluation when no controls apply ([#124](#124)) ([d2cd9f9](d2cd9f9))
* **server:** escape ILIKE pattern in evaluator-configs list endpoint ([#108](#108)) ([cb6e89f](cb6e89f))
* **server:** reject empty string list evaluator values ([#121](#121)) ([2c55d27](2c55d27))
* **server:** revert unwanted changes in server config ([#117](#117)) ([d92e168](d92e168))
* **ui:** create flow - name trimming issue ([#93](#93)) ([1a9759d](1a9759d))
@galileo-automation

Copy link
Copy Markdown
Collaborator

🎉 This PR is included in version 2.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

shyamsunderrai pushed a commit to shyamsunderrai/agent-control that referenced this pull request Apr 20, 2026
## 1.0.0 (2026-03-04)
### ⚠ BREAKING CHANGES
* **server:** Feature/56688 fix image bug (#48)
* **sdk:** a bug in docker file (#46)
* **server:** Feature/56688 fix docker and create bash (#45)
* **evaluators:** Evaluator reorganization with new package structure
Package Structure:
- agent-control-evaluators (v3.0.0): core + regex, list, json, sql
- agent-control-evaluator-galileo (v3.0.0): Luna2 evaluator
Key Changes:
- Entry points for evaluator discovery (agent_control.evaluators)
- Dot notation for external evaluators (galileo.luna2 not galileo/luna2)
- Dynamic __version__ via importlib.metadata
- Server uses evaluators as runtime dep (no longer vendored)
- Release workflow publishes both packages to PyPI
Bug Fixes:
- JSON evaluator: field_constraints/field_patterns in extra-fields allow-list
- SQL evaluator: LIMIT/OFFSET bypass fix
Migration:
- Import: agent_control_evaluator_galileo.luna2 (not agent_control_evaluators.galileo_luna2)
- DB: UPDATE controls SET evaluator.name replace('/', '.')
* **server:** add time-series stats and split API endpoints (#6)
* **evaluators:** rename plugin to evaluator throughout (#81)
* **models:** simplify step model and schema (#70)
### Features
* Add plugin auto-discovery via Python entry points ([#49](agentcontrol/agent-control#49)) ([1521182](agentcontrol/agent-control@1521182))
* **docs:** add GitHub badges and CI coverage reporting ([#90](agentcontrol/agent-control#90)) ([be1fa14](agentcontrol/agent-control@be1fa14))
* **evaluators:** add required_column_values for multi-tenant SQL validation ([#30](agentcontrol/agent-control#30)) ([532386c](agentcontrol/agent-control@532386c))
* **sdk-ts:** automate semantic-release for npm publishing ([#52](agentcontrol/agent-control#52)) ([2b43958](agentcontrol/agent-control@2b43958))
* **sdk:** Add PyPI packaging with semantic release ([#52](agentcontrol/agent-control#52)) ([7c24f7f](agentcontrol/agent-control@7c24f7f))
* **sdk:** Auto-populate init() steps from [@control](https://github.com/control)() decorators ([#23](agentcontrol/agent-control#23)) ([dc0f2a4](agentcontrol/agent-control@dc0f2a4))
* **sdk:** export ControlScope, ControlMatch, and EvaluatorResult models ([#18](agentcontrol/agent-control#18)) ([0d49cad](agentcontrol/agent-control@0d49cad))
* **sdk:** Get Agent Controls from SDK Init ([#15](agentcontrol/agent-control#15)) ([a485f93](agentcontrol/agent-control@a485f93))
* **sdk:** Refresh controls in a background loop ([#43](agentcontrol/agent-control#43)) ([03f826d](agentcontrol/agent-control@03f826d))
* **sdk:** ship TypeScript SDK with deterministic method naming ([#32](agentcontrol/agent-control#32)) ([a76e9b0](agentcontrol/agent-control@a76e9b0))
* **server:** add evaluator config store ([#78](agentcontrol/agent-control#78)) ([cc14aa6](agentcontrol/agent-control@cc14aa6))
* **server:** add initAgent conflict_mode overwrite mode with SDK defaults ([#40](agentcontrol/agent-control#40)) ([f3ed2b8](agentcontrol/agent-control@f3ed2b8))
* **server:** Add observability system for control execution tracking ([#44](agentcontrol/agent-control#44)) ([fd0bddc](agentcontrol/agent-control@fd0bddc))
* **server:** add prometheus metrics for endpoints ([#68](agentcontrol/agent-control#68)) ([775612c](agentcontrol/agent-control@775612c))
* **server:** add time-series stats and split API endpoints ([#6](agentcontrol/agent-control#6)) ([a0fa597](agentcontrol/agent-control@a0fa597))
* **server:** hard-cut migrate to remove agent UUID ([#44](agentcontrol/agent-control#44)) ([ee322c9](agentcontrol/agent-control@ee322c9))
* **server:** Optional Policy and many to many relationships ([#41](agentcontrol/agent-control#41)) ([1a62746](agentcontrol/agent-control@1a62746))
* **ui:** add sql, luna2, json control forms and restructure the code ([#54](agentcontrol/agent-control#54)) ([c4c1d4a](agentcontrol/agent-control@c4c1d4a))
* **ui:** allow to delete control ([#39](agentcontrol/agent-control#39)) ([7dc4ca3](agentcontrol/agent-control@7dc4ca3))
* **ui:** Control Store Flow Updated ([#4](agentcontrol/agent-control#4)) ([dda9f70](agentcontrol/agent-control@dda9f70))
* **ui:** stats dashboard ([#80](agentcontrol/agent-control#80)) ([4cbb7fe](agentcontrol/agent-control@4cbb7fe))
* **ui:** Steps dropdown rendered based on api return values ([#36](agentcontrol/agent-control#36)) ([a2aca43](agentcontrol/agent-control@a2aca43))
* **ui:** tests added and some minor ui changes, added error boundaries ([#61](agentcontrol/agent-control#61)) ([009852b](agentcontrol/agent-control@009852b))
* **ui:** update agent control icon and favicon ([#42](agentcontrol/agent-control#42)) ([19af8fa](agentcontrol/agent-control@19af8fa))
### Bug Fixes
* **ci:** Add ui scope to PR title validation ([#59](agentcontrol/agent-control#59)) ([e0fdb52](agentcontrol/agent-control@e0fdb52))
* **ci:** correct galileo contrib path in release build script ([#51](agentcontrol/agent-control#51)) ([2de6013](agentcontrol/agent-control@2de6013))
* **ci:** Enable pr title on prs ([#56](agentcontrol/agent-control#56)) ([3d8b5fe](agentcontrol/agent-control@3d8b5fe))
* **ci:** Fix release ([#11](agentcontrol/agent-control#11)) ([9dd3dd7](agentcontrol/agent-control@9dd3dd7))
* **ci:** Use galileo-automation bot for releases ([#57](agentcontrol/agent-control#57)) ([bc8eea0](agentcontrol/agent-control@bc8eea0))
* **docs:** Add Example for Evaluator Extension ([#3](agentcontrol/agent-control#3)) ([c2a70b3](agentcontrol/agent-control@c2a70b3))
* **docs:** add setup script ([#49](agentcontrol/agent-control#49)) ([7a212c3](agentcontrol/agent-control@7a212c3))
* **docs:** Clean up Protect ([#76](agentcontrol/agent-control#76)) ([99c16fd](agentcontrol/agent-control@99c16fd))
* **docs:** Fix Examples for LangGraph ([#64](agentcontrol/agent-control#64)) ([23b30ae](agentcontrol/agent-control@23b30ae))
* **docs:** Improve documentation for open source release ([#47](agentcontrol/agent-control#47)) ([9018fb3](agentcontrol/agent-control@9018fb3))
* **docs:** Remove old/unused examples ([#66](agentcontrol/agent-control#66)) ([f417781](agentcontrol/agent-control@f417781))
* **docs:** Update Contributing Guide ([#8](agentcontrol/agent-control#8)) ([10b34c8](agentcontrol/agent-control@10b34c8))
* **docs:** Update readme ([#37](agentcontrol/agent-control#37)) ([7531d83](agentcontrol/agent-control@7531d83))
* **docs:** Update README ([#2](agentcontrol/agent-control#2)) ([379bb15](agentcontrol/agent-control@379bb15))
* **examples:** Control sets cleanup with signed ([#65](agentcontrol/agent-control#65)) ([af7b5fb](agentcontrol/agent-control@af7b5fb))
* **examples:** Update crew ai example to use evaluator ([#93](agentcontrol/agent-control#93)) ([1c65084](agentcontrol/agent-control@1c65084))
* **infra:** Add plugins directory to Dockerfile ([#58](agentcontrol/agent-control#58)) ([171d459](agentcontrol/agent-control@171d459))
* **infra:** install engine/evaluators in server image ([#14](agentcontrol/agent-control#14)) ([d5ae157](agentcontrol/agent-control@d5ae157))
* **models:** use StrEnum for error enums ([#12](agentcontrol/agent-control#12)) ([3f41c9f](agentcontrol/agent-control@3f41c9f))
* **sdk-ts:** add conventional commits preset dependency ([#55](agentcontrol/agent-control#55)) ([540fe9d](agentcontrol/agent-control@540fe9d))
* **sdk-ts:** export npm token for semantic-release npm auth ([#54](agentcontrol/agent-control#54)) ([1b6b993](agentcontrol/agent-control@1b6b993))
* **sdk:** 54253 add steer action and example ([#38](agentcontrol/agent-control#38)) ([bf2380a](agentcontrol/agent-control@bf2380a))
* **sdk:** a bug in docker file ([#46](agentcontrol/agent-control#46)) ([12d1794](agentcontrol/agent-control@12d1794))
* **sdk:** Add step_name as parameter to control ([#25](agentcontrol/agent-control#25)) ([19ade9d](agentcontrol/agent-control@19ade9d))
* **sdk:** emit observability events for SDK-evaluated controls and fix non_matches propagation ([#24](agentcontrol/agent-control#24)) ([6a9da69](agentcontrol/agent-control@6a9da69))
* **sdk:** enforce UUID agent IDs ([#9](agentcontrol/agent-control#9)) ([5ccdbd0](agentcontrol/agent-control@5ccdbd0))
* **sdk:** Fix logging ([#77](agentcontrol/agent-control#77)) ([b1f078c](agentcontrol/agent-control@b1f078c))
* **sdk:** plugin to evaluator.. agent_protect to agent_control ([#88](agentcontrol/agent-control#88)) ([fc9b088](agentcontrol/agent-control@fc9b088))
* **server:** enforce public-safe API error responses ([#20](agentcontrol/agent-control#20)) ([e50d817](agentcontrol/agent-control@e50d817))
* **server:** Feature/56688 fix docker and create bash ([#45](agentcontrol/agent-control#45)) ([7277e27](agentcontrol/agent-control@7277e27))
* **server:** Feature/56688 fix image bug ([#48](agentcontrol/agent-control#48)) ([71e6b44](agentcontrol/agent-control@71e6b44))
* **server:** fix alembic migrations ([#47](agentcontrol/agent-control#47)) ([c19c17c](agentcontrol/agent-control@c19c17c))
* **server:** reject initAgent UUID/name mismatch ([#13](agentcontrol/agent-control#13)) ([19d61ff](agentcontrol/agent-control@19d61ff))
* tighten evaluation error handling and preserve control data ([52a1ef8](agentcontrol/agent-control@52a1ef8))
* **ui:** Fix UI and clients for simplified step schema ([#75](agentcontrol/agent-control#75)) ([be2aaf0](agentcontrol/agent-control@be2aaf0))
* **ui:** json validation ([#10](agentcontrol/agent-control#10)) ([a0cd5af](agentcontrol/agent-control@a0cd5af))
* **ui:** selector subpaths issue ([#34](agentcontrol/agent-control#34)) ([79cb776](agentcontrol/agent-control@79cb776))
* **ui:** UI feedback fixes ([#27](agentcontrol/agent-control#27)) ([6004761](agentcontrol/agent-control@6004761))
### Code Refactoring
* **evaluators:** rename plugin to evaluator throughout ([#81](agentcontrol/agent-control#81)) ([0134682](agentcontrol/agent-control@0134682))
* **evaluators:** split into builtin + extra packages for PyPI ([#5](agentcontrol/agent-control#5)) ([0e0a78a](agentcontrol/agent-control@0e0a78a))
* **models:** simplify step model and schema ([#70](agentcontrol/agent-control#70)) ([4c1d637](agentcontrol/agent-control@4c1d637))
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@siddhant-galileo@lan17@galileo-automation
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix(ui): create flow - name trimming issue - #93

Merged
siddhant-galileo merged 7 commits into
mainfrom
siddhant/name-trimming-issue
Mar 12, 2026
Merged

fix(ui): create flow - name trimming issue#93
siddhant-galileo merged 7 commits into
mainfrom
siddhant/name-trimming-issue

Conversation

@siddhant-galileo

@siddhant-galileosiddhant-galileo commented Mar 11, 2026

Copy link
Copy Markdown
Collaborator

Summary

Scope

  • User-facing/API changes:
  • Internal changes:
  • Out of scope:

Risk and Rollout

  • Risk level: low / medium / high
  • Rollback plan:

Testing

  • Added or updated automated tests
  • Ran make check (or explained why not)
  • Manually verified behavior

Checklist

  • Linked issue/spec (if applicable)
  • Updated docs/examples for user-facing changes
  • Included any required follow-up tasks

@lan17lan17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added two inline review comments.

Comment threadui/src/core/components/login-modal.tsx Outdated
@lan17

Copy link
Copy Markdown
Contributor

I think the main unresolved issue here is the contract boundary.

This repo already has a clear pattern for agent names: normalization is defined once and applied consistently across shared models, server endpoints, and SDK entry points. Control names still do not have that. In this PR, the only canonicalization being added is inside one UI flow, while the server create/patch endpoints and both SDKs still treat name as caller-provided input.

That matters because non-UI clients are real clients here. A browser user now gets trimming/canonicalization in the modal, but Python and TypeScript SDK callers still need to know to pre-trim or they will just hit API validation. I think we should make that choice explicit: either control-name canonicalization belongs at the server/shared boundary, or this remains validation-only and every client is responsible for sending canonical names. I would avoid implicitly defining canonical control names in one modal.

Separately, the legacy-name policy should be explicit and covered by a regression test. The code reads like “existing invalid names remain editable unless the user actually renames them”, which seems reasonable, but it should be stated and tested directly.

The login logo swap also looks unrelated to the trimming fix. If it’s intentional, I’d explain it in the PR; otherwise I’d split it out.

@siddhant-galileo

siddhant-galileo commented Mar 11, 2026

Copy link
Copy Markdown
CollaboratorAuthor

I think the main unresolved issue here is the contract boundary.

This repo already has a clear pattern for agent names: normalization is defined once and applied consistently across shared models, server endpoints, and SDK entry points. Control names still do not have that. In this PR, the only canonicalization being added is inside one UI flow, while the server create/patch endpoints and both SDKs still treat name as caller-provided input.

That matters because non-UI clients are real clients here. A browser user now gets trimming/canonicalization in the modal, but Python and TypeScript SDK callers still need to know to pre-trim or they will just hit API validation. I think we should make that choice explicit: either control-name canonicalization belongs at the server/shared boundary, or this remains validation-only and every client is responsible for sending canonical names. I would avoid implicitly defining canonical control names in one modal.

Separately, the legacy-name policy should be explicit and covered by a regression test. The code reads like “existing invalid names remain editable unless the user actually renames them”, which seems reasonable, but it should be stated and tested directly.

Fixed this - moved logic to server now. UI only uses trim to check if name has updated or not

The login logo swap also looks unrelated to the trimming fix. If it’s intentional, I’d explain it in the PR; otherwise I’d split it out.

Added a line in PR description

@lan17lan17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

@siddhant-galileo
siddhant-galileo merged commit 1a9759d into mainMar 12, 2026
6 checks passed
@siddhant-galileo
siddhant-galileo deleted the siddhant/name-trimming-issue branch March 12, 2026 04:53
galileo-automation pushed a commit that referenced this pull request Mar 18, 2026
## [2.0.0](ts-sdk-v1.1.0...ts-sdk-v2.0.0) (2026-03-18)
### ⚠ BREAKING CHANGES
* **server:** implement recursive control condition trees (#115)
### Features
* **docs:** simplify main README quick start v2 ([#100](#100)) ([7701c65](7701c65))
* **docs:** Update README.md to accurately mention Strands Agents SDK ([#105](#105)) ([84dfa57](84dfa57))
* **evaluators:** add Cisco AI Defense evaluator and examples ([#60](#60)) ([52e2416](52e2416))
* **sdk:** add Google ADK framework integration ([#83](#83)) ([f2b53ee](f2b53ee))
* **server:** implement recursive control condition trees ([#115](#115)) ([2ff4c12](2ff4c12))
### Bug Fixes
* **docs:** clarify README quickstart flow ([#119](#119)) ([317c626](317c626))
* **docs:** cleanup readme ([#66](#66)) ([eca0d6b](eca0d6b))
* **docs:** promote Google ADK plugin in README ([#99](#99)) ([f038aa4](f038aa4))
* **evaluators:** address Cisco AI Defense review issues ([#103](#103)) ([81da81b](81da81b))
* **examples:** shut down SDK in short-lived demos ([#85](#85)) ([df43264](df43264))
* **sdk:** fail closed on post-hook evaluation errors ([#114](#114)) ([67f8fc1](67f8fc1)), closes [#112](#112)
* **sdk:** skip evaluation when no controls apply ([#124](#124)) ([d2cd9f9](d2cd9f9))
* **server:** escape ILIKE pattern in evaluator-configs list endpoint ([#108](#108)) ([cb6e89f](cb6e89f))
* **server:** reject empty string list evaluator values ([#121](#121)) ([2c55d27](2c55d27))
* **server:** revert unwanted changes in server config ([#117](#117)) ([d92e168](d92e168))
* **ui:** create flow - name trimming issue ([#93](#93)) ([1a9759d](1a9759d))
@galileo-automation

Copy link
Copy Markdown
Collaborator

🎉 This PR is included in version 2.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

shyamsunderrai pushed a commit to shyamsunderrai/agent-control that referenced this pull request Apr 20, 2026
## 1.0.0 (2026-03-04)
### ⚠ BREAKING CHANGES
* **server:** Feature/56688 fix image bug (#48)
* **sdk:** a bug in docker file (#46)
* **server:** Feature/56688 fix docker and create bash (#45)
* **evaluators:** Evaluator reorganization with new package structure
Package Structure:
- agent-control-evaluators (v3.0.0): core + regex, list, json, sql
- agent-control-evaluator-galileo (v3.0.0): Luna2 evaluator
Key Changes:
- Entry points for evaluator discovery (agent_control.evaluators)
- Dot notation for external evaluators (galileo.luna2 not galileo/luna2)
- Dynamic __version__ via importlib.metadata
- Server uses evaluators as runtime dep (no longer vendored)
- Release workflow publishes both packages to PyPI
Bug Fixes:
- JSON evaluator: field_constraints/field_patterns in extra-fields allow-list
- SQL evaluator: LIMIT/OFFSET bypass fix
Migration:
- Import: agent_control_evaluator_galileo.luna2 (not agent_control_evaluators.galileo_luna2)
- DB: UPDATE controls SET evaluator.name replace('/', '.')
* **server:** add time-series stats and split API endpoints (#6)
* **evaluators:** rename plugin to evaluator throughout (#81)
* **models:** simplify step model and schema (#70)
### Features
* Add plugin auto-discovery via Python entry points ([#49](agentcontrol/agent-control#49)) ([1521182](agentcontrol/agent-control@1521182))
* **docs:** add GitHub badges and CI coverage reporting ([#90](agentcontrol/agent-control#90)) ([be1fa14](agentcontrol/agent-control@be1fa14))
* **evaluators:** add required_column_values for multi-tenant SQL validation ([#30](agentcontrol/agent-control#30)) ([532386c](agentcontrol/agent-control@532386c))
* **sdk-ts:** automate semantic-release for npm publishing ([#52](agentcontrol/agent-control#52)) ([2b43958](agentcontrol/agent-control@2b43958))
* **sdk:** Add PyPI packaging with semantic release ([#52](agentcontrol/agent-control#52)) ([7c24f7f](agentcontrol/agent-control@7c24f7f))
* **sdk:** Auto-populate init() steps from [@control](https://github.com/control)() decorators ([#23](agentcontrol/agent-control#23)) ([dc0f2a4](agentcontrol/agent-control@dc0f2a4))
* **sdk:** export ControlScope, ControlMatch, and EvaluatorResult models ([#18](agentcontrol/agent-control#18)) ([0d49cad](agentcontrol/agent-control@0d49cad))
* **sdk:** Get Agent Controls from SDK Init ([#15](agentcontrol/agent-control#15)) ([a485f93](agentcontrol/agent-control@a485f93))
* **sdk:** Refresh controls in a background loop ([#43](agentcontrol/agent-control#43)) ([03f826d](agentcontrol/agent-control@03f826d))
* **sdk:** ship TypeScript SDK with deterministic method naming ([#32](agentcontrol/agent-control#32)) ([a76e9b0](agentcontrol/agent-control@a76e9b0))
* **server:** add evaluator config store ([#78](agentcontrol/agent-control#78)) ([cc14aa6](agentcontrol/agent-control@cc14aa6))
* **server:** add initAgent conflict_mode overwrite mode with SDK defaults ([#40](agentcontrol/agent-control#40)) ([f3ed2b8](agentcontrol/agent-control@f3ed2b8))
* **server:** Add observability system for control execution tracking ([#44](agentcontrol/agent-control#44)) ([fd0bddc](agentcontrol/agent-control@fd0bddc))
* **server:** add prometheus metrics for endpoints ([#68](agentcontrol/agent-control#68)) ([775612c](agentcontrol/agent-control@775612c))
* **server:** add time-series stats and split API endpoints ([#6](agentcontrol/agent-control#6)) ([a0fa597](agentcontrol/agent-control@a0fa597))
* **server:** hard-cut migrate to remove agent UUID ([#44](agentcontrol/agent-control#44)) ([ee322c9](agentcontrol/agent-control@ee322c9))
* **server:** Optional Policy and many to many relationships ([#41](agentcontrol/agent-control#41)) ([1a62746](agentcontrol/agent-control@1a62746))
* **ui:** add sql, luna2, json control forms and restructure the code ([#54](agentcontrol/agent-control#54)) ([c4c1d4a](agentcontrol/agent-control@c4c1d4a))
* **ui:** allow to delete control ([#39](agentcontrol/agent-control#39)) ([7dc4ca3](agentcontrol/agent-control@7dc4ca3))
* **ui:** Control Store Flow Updated ([#4](agentcontrol/agent-control#4)) ([dda9f70](agentcontrol/agent-control@dda9f70))
* **ui:** stats dashboard ([#80](agentcontrol/agent-control#80)) ([4cbb7fe](agentcontrol/agent-control@4cbb7fe))
* **ui:** Steps dropdown rendered based on api return values ([#36](agentcontrol/agent-control#36)) ([a2aca43](agentcontrol/agent-control@a2aca43))
* **ui:** tests added and some minor ui changes, added error boundaries ([#61](agentcontrol/agent-control#61)) ([009852b](agentcontrol/agent-control@009852b))
* **ui:** update agent control icon and favicon ([#42](agentcontrol/agent-control#42)) ([19af8fa](agentcontrol/agent-control@19af8fa))
### Bug Fixes
* **ci:** Add ui scope to PR title validation ([#59](agentcontrol/agent-control#59)) ([e0fdb52](agentcontrol/agent-control@e0fdb52))
* **ci:** correct galileo contrib path in release build script ([#51](agentcontrol/agent-control#51)) ([2de6013](agentcontrol/agent-control@2de6013))
* **ci:** Enable pr title on prs ([#56](agentcontrol/agent-control#56)) ([3d8b5fe](agentcontrol/agent-control@3d8b5fe))
* **ci:** Fix release ([#11](agentcontrol/agent-control#11)) ([9dd3dd7](agentcontrol/agent-control@9dd3dd7))
* **ci:** Use galileo-automation bot for releases ([#57](agentcontrol/agent-control#57)) ([bc8eea0](agentcontrol/agent-control@bc8eea0))
* **docs:** Add Example for Evaluator Extension ([#3](agentcontrol/agent-control#3)) ([c2a70b3](agentcontrol/agent-control@c2a70b3))
* **docs:** add setup script ([#49](agentcontrol/agent-control#49)) ([7a212c3](agentcontrol/agent-control@7a212c3))
* **docs:** Clean up Protect ([#76](agentcontrol/agent-control#76)) ([99c16fd](agentcontrol/agent-control@99c16fd))
* **docs:** Fix Examples for LangGraph ([#64](agentcontrol/agent-control#64)) ([23b30ae](agentcontrol/agent-control@23b30ae))
* **docs:** Improve documentation for open source release ([#47](agentcontrol/agent-control#47)) ([9018fb3](agentcontrol/agent-control@9018fb3))
* **docs:** Remove old/unused examples ([#66](agentcontrol/agent-control#66)) ([f417781](agentcontrol/agent-control@f417781))
* **docs:** Update Contributing Guide ([#8](agentcontrol/agent-control#8)) ([10b34c8](agentcontrol/agent-control@10b34c8))
* **docs:** Update readme ([#37](agentcontrol/agent-control#37)) ([7531d83](agentcontrol/agent-control@7531d83))
* **docs:** Update README ([#2](agentcontrol/agent-control#2)) ([379bb15](agentcontrol/agent-control@379bb15))
* **examples:** Control sets cleanup with signed ([#65](agentcontrol/agent-control#65)) ([af7b5fb](agentcontrol/agent-control@af7b5fb))
* **examples:** Update crew ai example to use evaluator ([#93](agentcontrol/agent-control#93)) ([1c65084](agentcontrol/agent-control@1c65084))
* **infra:** Add plugins directory to Dockerfile ([#58](agentcontrol/agent-control#58)) ([171d459](agentcontrol/agent-control@171d459))
* **infra:** install engine/evaluators in server image ([#14](agentcontrol/agent-control#14)) ([d5ae157](agentcontrol/agent-control@d5ae157))
* **models:** use StrEnum for error enums ([#12](agentcontrol/agent-control#12)) ([3f41c9f](agentcontrol/agent-control@3f41c9f))
* **sdk-ts:** add conventional commits preset dependency ([#55](agentcontrol/agent-control#55)) ([540fe9d](agentcontrol/agent-control@540fe9d))
* **sdk-ts:** export npm token for semantic-release npm auth ([#54](agentcontrol/agent-control#54)) ([1b6b993](agentcontrol/agent-control@1b6b993))
* **sdk:** 54253 add steer action and example ([#38](agentcontrol/agent-control#38)) ([bf2380a](agentcontrol/agent-control@bf2380a))
* **sdk:** a bug in docker file ([#46](agentcontrol/agent-control#46)) ([12d1794](agentcontrol/agent-control@12d1794))
* **sdk:** Add step_name as parameter to control ([#25](agentcontrol/agent-control#25)) ([19ade9d](agentcontrol/agent-control@19ade9d))
* **sdk:** emit observability events for SDK-evaluated controls and fix non_matches propagation ([#24](agentcontrol/agent-control#24)) ([6a9da69](agentcontrol/agent-control@6a9da69))
* **sdk:** enforce UUID agent IDs ([#9](agentcontrol/agent-control#9)) ([5ccdbd0](agentcontrol/agent-control@5ccdbd0))
* **sdk:** Fix logging ([#77](agentcontrol/agent-control#77)) ([b1f078c](agentcontrol/agent-control@b1f078c))
* **sdk:** plugin to evaluator.. agent_protect to agent_control ([#88](agentcontrol/agent-control#88)) ([fc9b088](agentcontrol/agent-control@fc9b088))
* **server:** enforce public-safe API error responses ([#20](agentcontrol/agent-control#20)) ([e50d817](agentcontrol/agent-control@e50d817))
* **server:** Feature/56688 fix docker and create bash ([#45](agentcontrol/agent-control#45)) ([7277e27](agentcontrol/agent-control@7277e27))
* **server:** Feature/56688 fix image bug ([#48](agentcontrol/agent-control#48)) ([71e6b44](agentcontrol/agent-control@71e6b44))
* **server:** fix alembic migrations ([#47](agentcontrol/agent-control#47)) ([c19c17c](agentcontrol/agent-control@c19c17c))
* **server:** reject initAgent UUID/name mismatch ([#13](agentcontrol/agent-control#13)) ([19d61ff](agentcontrol/agent-control@19d61ff))
* tighten evaluation error handling and preserve control data ([52a1ef8](agentcontrol/agent-control@52a1ef8))
* **ui:** Fix UI and clients for simplified step schema ([#75](agentcontrol/agent-control#75)) ([be2aaf0](agentcontrol/agent-control@be2aaf0))
* **ui:** json validation ([#10](agentcontrol/agent-control#10)) ([a0cd5af](agentcontrol/agent-control@a0cd5af))
* **ui:** selector subpaths issue ([#34](agentcontrol/agent-control#34)) ([79cb776](agentcontrol/agent-control@79cb776))
* **ui:** UI feedback fixes ([#27](agentcontrol/agent-control#27)) ([6004761](agentcontrol/agent-control@6004761))
### Code Refactoring
* **evaluators:** rename plugin to evaluator throughout ([#81](agentcontrol/agent-control#81)) ([0134682](agentcontrol/agent-control@0134682))
* **evaluators:** split into builtin + extra packages for PyPI ([#5](agentcontrol/agent-control#5)) ([0e0a78a](agentcontrol/agent-control@0e0a78a))
* **models:** simplify step model and schema ([#70](agentcontrol/agent-control#70)) ([4c1d637](agentcontrol/agent-control@4c1d637))
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@siddhant-galileo@lan17@galileo-automation
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(ui): create flow - name trimming issue - #93

Merged
siddhant-galileo merged 7 commits into
mainfrom
siddhant/name-trimming-issue
Mar 12, 2026
Merged

fix(ui): create flow - name trimming issue#93
siddhant-galileo merged 7 commits into
mainfrom
siddhant/name-trimming-issue

Conversation

@siddhant-galileo

@siddhant-galileosiddhant-galileo commented Mar 11, 2026

Copy link
Copy Markdown
Collaborator

Summary

Scope

  • User-facing/API changes:
  • Internal changes:
  • Out of scope:

Risk and Rollout

  • Risk level: low / medium / high
  • Rollback plan:

Testing

  • Added or updated automated tests
  • Ran make check (or explained why not)
  • Manually verified behavior

Checklist

  • Linked issue/spec (if applicable)
  • Updated docs/examples for user-facing changes
  • Included any required follow-up tasks

@lan17lan17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added two inline review comments.

Comment threadui/src/core/components/login-modal.tsx Outdated
@lan17

Copy link
Copy Markdown
Contributor

I think the main unresolved issue here is the contract boundary.

This repo already has a clear pattern for agent names: normalization is defined once and applied consistently across shared models, server endpoints, and SDK entry points. Control names still do not have that. In this PR, the only canonicalization being added is inside one UI flow, while the server create/patch endpoints and both SDKs still treat name as caller-provided input.

That matters because non-UI clients are real clients here. A browser user now gets trimming/canonicalization in the modal, but Python and TypeScript SDK callers still need to know to pre-trim or they will just hit API validation. I think we should make that choice explicit: either control-name canonicalization belongs at the server/shared boundary, or this remains validation-only and every client is responsible for sending canonical names. I would avoid implicitly defining canonical control names in one modal.

Separately, the legacy-name policy should be explicit and covered by a regression test. The code reads like “existing invalid names remain editable unless the user actually renames them”, which seems reasonable, but it should be stated and tested directly.

The login logo swap also looks unrelated to the trimming fix. If it’s intentional, I’d explain it in the PR; otherwise I’d split it out.

@siddhant-galileo

siddhant-galileo commented Mar 11, 2026

Copy link
Copy Markdown
CollaboratorAuthor

I think the main unresolved issue here is the contract boundary.

This repo already has a clear pattern for agent names: normalization is defined once and applied consistently across shared models, server endpoints, and SDK entry points. Control names still do not have that. In this PR, the only canonicalization being added is inside one UI flow, while the server create/patch endpoints and both SDKs still treat name as caller-provided input.

That matters because non-UI clients are real clients here. A browser user now gets trimming/canonicalization in the modal, but Python and TypeScript SDK callers still need to know to pre-trim or they will just hit API validation. I think we should make that choice explicit: either control-name canonicalization belongs at the server/shared boundary, or this remains validation-only and every client is responsible for sending canonical names. I would avoid implicitly defining canonical control names in one modal.

Separately, the legacy-name policy should be explicit and covered by a regression test. The code reads like “existing invalid names remain editable unless the user actually renames them”, which seems reasonable, but it should be stated and tested directly.

Fixed this - moved logic to server now. UI only uses trim to check if name has updated or not

The login logo swap also looks unrelated to the trimming fix. If it’s intentional, I’d explain it in the PR; otherwise I’d split it out.

Added a line in PR description

@lan17lan17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

@siddhant-galileo
siddhant-galileo merged commit 1a9759d into mainMar 12, 2026
6 checks passed
@siddhant-galileo
siddhant-galileo deleted the siddhant/name-trimming-issue branch March 12, 2026 04:53
galileo-automation pushed a commit that referenced this pull request Mar 18, 2026
## [2.0.0](ts-sdk-v1.1.0...ts-sdk-v2.0.0) (2026-03-18)
### ⚠ BREAKING CHANGES
* **server:** implement recursive control condition trees (#115)
### Features
* **docs:** simplify main README quick start v2 ([#100](#100)) ([7701c65](7701c65))
* **docs:** Update README.md to accurately mention Strands Agents SDK ([#105](#105)) ([84dfa57](84dfa57))
* **evaluators:** add Cisco AI Defense evaluator and examples ([#60](#60)) ([52e2416](52e2416))
* **sdk:** add Google ADK framework integration ([#83](#83)) ([f2b53ee](f2b53ee))
* **server:** implement recursive control condition trees ([#115](#115)) ([2ff4c12](2ff4c12))
### Bug Fixes
* **docs:** clarify README quickstart flow ([#119](#119)) ([317c626](317c626))
* **docs:** cleanup readme ([#66](#66)) ([eca0d6b](eca0d6b))
* **docs:** promote Google ADK plugin in README ([#99](#99)) ([f038aa4](f038aa4))
* **evaluators:** address Cisco AI Defense review issues ([#103](#103)) ([81da81b](81da81b))
* **examples:** shut down SDK in short-lived demos ([#85](#85)) ([df43264](df43264))
* **sdk:** fail closed on post-hook evaluation errors ([#114](#114)) ([67f8fc1](67f8fc1)), closes [#112](#112)
* **sdk:** skip evaluation when no controls apply ([#124](#124)) ([d2cd9f9](d2cd9f9))
* **server:** escape ILIKE pattern in evaluator-configs list endpoint ([#108](#108)) ([cb6e89f](cb6e89f))
* **server:** reject empty string list evaluator values ([#121](#121)) ([2c55d27](2c55d27))
* **server:** revert unwanted changes in server config ([#117](#117)) ([d92e168](d92e168))
* **ui:** create flow - name trimming issue ([#93](#93)) ([1a9759d](1a9759d))
@galileo-automation

Copy link
Copy Markdown
Collaborator

🎉 This PR is included in version 2.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

shyamsunderrai pushed a commit to shyamsunderrai/agent-control that referenced this pull request Apr 20, 2026
## 1.0.0 (2026-03-04)
### ⚠ BREAKING CHANGES
* **server:** Feature/56688 fix image bug (#48)
* **sdk:** a bug in docker file (#46)
* **server:** Feature/56688 fix docker and create bash (#45)
* **evaluators:** Evaluator reorganization with new package structure
Package Structure:
- agent-control-evaluators (v3.0.0): core + regex, list, json, sql
- agent-control-evaluator-galileo (v3.0.0): Luna2 evaluator
Key Changes:
- Entry points for evaluator discovery (agent_control.evaluators)
- Dot notation for external evaluators (galileo.luna2 not galileo/luna2)
- Dynamic __version__ via importlib.metadata
- Server uses evaluators as runtime dep (no longer vendored)
- Release workflow publishes both packages to PyPI
Bug Fixes:
- JSON evaluator: field_constraints/field_patterns in extra-fields allow-list
- SQL evaluator: LIMIT/OFFSET bypass fix
Migration:
- Import: agent_control_evaluator_galileo.luna2 (not agent_control_evaluators.galileo_luna2)
- DB: UPDATE controls SET evaluator.name replace('/', '.')
* **server:** add time-series stats and split API endpoints (#6)
* **evaluators:** rename plugin to evaluator throughout (#81)
* **models:** simplify step model and schema (#70)
### Features
* Add plugin auto-discovery via Python entry points ([#49](agentcontrol/agent-control#49)) ([1521182](agentcontrol/agent-control@1521182))
* **docs:** add GitHub badges and CI coverage reporting ([#90](agentcontrol/agent-control#90)) ([be1fa14](agentcontrol/agent-control@be1fa14))
* **evaluators:** add required_column_values for multi-tenant SQL validation ([#30](agentcontrol/agent-control#30)) ([532386c](agentcontrol/agent-control@532386c))
* **sdk-ts:** automate semantic-release for npm publishing ([#52](agentcontrol/agent-control#52)) ([2b43958](agentcontrol/agent-control@2b43958))
* **sdk:** Add PyPI packaging with semantic release ([#52](agentcontrol/agent-control#52)) ([7c24f7f](agentcontrol/agent-control@7c24f7f))
* **sdk:** Auto-populate init() steps from [@control](https://github.com/control)() decorators ([#23](agentcontrol/agent-control#23)) ([dc0f2a4](agentcontrol/agent-control@dc0f2a4))
* **sdk:** export ControlScope, ControlMatch, and EvaluatorResult models ([#18](agentcontrol/agent-control#18)) ([0d49cad](agentcontrol/agent-control@0d49cad))
* **sdk:** Get Agent Controls from SDK Init ([#15](agentcontrol/agent-control#15)) ([a485f93](agentcontrol/agent-control@a485f93))
* **sdk:** Refresh controls in a background loop ([#43](agentcontrol/agent-control#43)) ([03f826d](agentcontrol/agent-control@03f826d))
* **sdk:** ship TypeScript SDK with deterministic method naming ([#32](agentcontrol/agent-control#32)) ([a76e9b0](agentcontrol/agent-control@a76e9b0))
* **server:** add evaluator config store ([#78](agentcontrol/agent-control#78)) ([cc14aa6](agentcontrol/agent-control@cc14aa6))
* **server:** add initAgent conflict_mode overwrite mode with SDK defaults ([#40](agentcontrol/agent-control#40)) ([f3ed2b8](agentcontrol/agent-control@f3ed2b8))
* **server:** Add observability system for control execution tracking ([#44](agentcontrol/agent-control#44)) ([fd0bddc](agentcontrol/agent-control@fd0bddc))
* **server:** add prometheus metrics for endpoints ([#68](agentcontrol/agent-control#68)) ([775612c](agentcontrol/agent-control@775612c))
* **server:** add time-series stats and split API endpoints ([#6](agentcontrol/agent-control#6)) ([a0fa597](agentcontrol/agent-control@a0fa597))
* **server:** hard-cut migrate to remove agent UUID ([#44](agentcontrol/agent-control#44)) ([ee322c9](agentcontrol/agent-control@ee322c9))
* **server:** Optional Policy and many to many relationships ([#41](agentcontrol/agent-control#41)) ([1a62746](agentcontrol/agent-control@1a62746))
* **ui:** add sql, luna2, json control forms and restructure the code ([#54](agentcontrol/agent-control#54)) ([c4c1d4a](agentcontrol/agent-control@c4c1d4a))
* **ui:** allow to delete control ([#39](agentcontrol/agent-control#39)) ([7dc4ca3](agentcontrol/agent-control@7dc4ca3))
* **ui:** Control Store Flow Updated ([#4](agentcontrol/agent-control#4)) ([dda9f70](agentcontrol/agent-control@dda9f70))
* **ui:** stats dashboard ([#80](agentcontrol/agent-control#80)) ([4cbb7fe](agentcontrol/agent-control@4cbb7fe))
* **ui:** Steps dropdown rendered based on api return values ([#36](agentcontrol/agent-control#36)) ([a2aca43](agentcontrol/agent-control@a2aca43))
* **ui:** tests added and some minor ui changes, added error boundaries ([#61](agentcontrol/agent-control#61)) ([009852b](agentcontrol/agent-control@009852b))
* **ui:** update agent control icon and favicon ([#42](agentcontrol/agent-control#42)) ([19af8fa](agentcontrol/agent-control@19af8fa))
### Bug Fixes
* **ci:** Add ui scope to PR title validation ([#59](agentcontrol/agent-control#59)) ([e0fdb52](agentcontrol/agent-control@e0fdb52))
* **ci:** correct galileo contrib path in release build script ([#51](agentcontrol/agent-control#51)) ([2de6013](agentcontrol/agent-control@2de6013))
* **ci:** Enable pr title on prs ([#56](agentcontrol/agent-control#56)) ([3d8b5fe](agentcontrol/agent-control@3d8b5fe))
* **ci:** Fix release ([#11](agentcontrol/agent-control#11)) ([9dd3dd7](agentcontrol/agent-control@9dd3dd7))
* **ci:** Use galileo-automation bot for releases ([#57](agentcontrol/agent-control#57)) ([bc8eea0](agentcontrol/agent-control@bc8eea0))
* **docs:** Add Example for Evaluator Extension ([#3](agentcontrol/agent-control#3)) ([c2a70b3](agentcontrol/agent-control@c2a70b3))
* **docs:** add setup script ([#49](agentcontrol/agent-control#49)) ([7a212c3](agentcontrol/agent-control@7a212c3))
* **docs:** Clean up Protect ([#76](agentcontrol/agent-control#76)) ([99c16fd](agentcontrol/agent-control@99c16fd))
* **docs:** Fix Examples for LangGraph ([#64](agentcontrol/agent-control#64)) ([23b30ae](agentcontrol/agent-control@23b30ae))
* **docs:** Improve documentation for open source release ([#47](agentcontrol/agent-control#47)) ([9018fb3](agentcontrol/agent-control@9018fb3))
* **docs:** Remove old/unused examples ([#66](agentcontrol/agent-control#66)) ([f417781](agentcontrol/agent-control@f417781))
* **docs:** Update Contributing Guide ([#8](agentcontrol/agent-control#8)) ([10b34c8](agentcontrol/agent-control@10b34c8))
* **docs:** Update readme ([#37](agentcontrol/agent-control#37)) ([7531d83](agentcontrol/agent-control@7531d83))
* **docs:** Update README ([#2](agentcontrol/agent-control#2)) ([379bb15](agentcontrol/agent-control@379bb15))
* **examples:** Control sets cleanup with signed ([#65](agentcontrol/agent-control#65)) ([af7b5fb](agentcontrol/agent-control@af7b5fb))
* **examples:** Update crew ai example to use evaluator ([#93](agentcontrol/agent-control#93)) ([1c65084](agentcontrol/agent-control@1c65084))
* **infra:** Add plugins directory to Dockerfile ([#58](agentcontrol/agent-control#58)) ([171d459](agentcontrol/agent-control@171d459))
* **infra:** install engine/evaluators in server image ([#14](agentcontrol/agent-control#14)) ([d5ae157](agentcontrol/agent-control@d5ae157))
* **models:** use StrEnum for error enums ([#12](agentcontrol/agent-control#12)) ([3f41c9f](agentcontrol/agent-control@3f41c9f))
* **sdk-ts:** add conventional commits preset dependency ([#55](agentcontrol/agent-control#55)) ([540fe9d](agentcontrol/agent-control@540fe9d))
* **sdk-ts:** export npm token for semantic-release npm auth ([#54](agentcontrol/agent-control#54)) ([1b6b993](agentcontrol/agent-control@1b6b993))
* **sdk:** 54253 add steer action and example ([#38](agentcontrol/agent-control#38)) ([bf2380a](agentcontrol/agent-control@bf2380a))
* **sdk:** a bug in docker file ([#46](agentcontrol/agent-control#46)) ([12d1794](agentcontrol/agent-control@12d1794))
* **sdk:** Add step_name as parameter to control ([#25](agentcontrol/agent-control#25)) ([19ade9d](agentcontrol/agent-control@19ade9d))
* **sdk:** emit observability events for SDK-evaluated controls and fix non_matches propagation ([#24](agentcontrol/agent-control#24)) ([6a9da69](agentcontrol/agent-control@6a9da69))
* **sdk:** enforce UUID agent IDs ([#9](agentcontrol/agent-control#9)) ([5ccdbd0](agentcontrol/agent-control@5ccdbd0))
* **sdk:** Fix logging ([#77](agentcontrol/agent-control#77)) ([b1f078c](agentcontrol/agent-control@b1f078c))
* **sdk:** plugin to evaluator.. agent_protect to agent_control ([#88](agentcontrol/agent-control#88)) ([fc9b088](agentcontrol/agent-control@fc9b088))
* **server:** enforce public-safe API error responses ([#20](agentcontrol/agent-control#20)) ([e50d817](agentcontrol/agent-control@e50d817))
* **server:** Feature/56688 fix docker and create bash ([#45](agentcontrol/agent-control#45)) ([7277e27](agentcontrol/agent-control@7277e27))
* **server:** Feature/56688 fix image bug ([#48](agentcontrol/agent-control#48)) ([71e6b44](agentcontrol/agent-control@71e6b44))
* **server:** fix alembic migrations ([#47](agentcontrol/agent-control#47)) ([c19c17c](agentcontrol/agent-control@c19c17c))
* **server:** reject initAgent UUID/name mismatch ([#13](agentcontrol/agent-control#13)) ([19d61ff](agentcontrol/agent-control@19d61ff))
* tighten evaluation error handling and preserve control data ([52a1ef8](agentcontrol/agent-control@52a1ef8))
* **ui:** Fix UI and clients for simplified step schema ([#75](agentcontrol/agent-control#75)) ([be2aaf0](agentcontrol/agent-control@be2aaf0))
* **ui:** json validation ([#10](agentcontrol/agent-control#10)) ([a0cd5af](agentcontrol/agent-control@a0cd5af))
* **ui:** selector subpaths issue ([#34](agentcontrol/agent-control#34)) ([79cb776](agentcontrol/agent-control@79cb776))
* **ui:** UI feedback fixes ([#27](agentcontrol/agent-control#27)) ([6004761](agentcontrol/agent-control@6004761))
### Code Refactoring
* **evaluators:** rename plugin to evaluator throughout ([#81](agentcontrol/agent-control#81)) ([0134682](agentcontrol/agent-control@0134682))
* **evaluators:** split into builtin + extra packages for PyPI ([#5](agentcontrol/agent-control#5)) ([0e0a78a](agentcontrol/agent-control@0e0a78a))
* **models:** simplify step model and schema ([#70](agentcontrol/agent-control#70)) ([4c1d637](agentcontrol/agent-control@4c1d637))
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@siddhant-galileo@lan17@galileo-automation
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(ui): create flow - name trimming issue - #93

Merged
siddhant-galileo merged 7 commits into
mainfrom
siddhant/name-trimming-issue
Mar 12, 2026
Merged

fix(ui): create flow - name trimming issue#93
siddhant-galileo merged 7 commits into
mainfrom
siddhant/name-trimming-issue

Conversation

@siddhant-galileo

@siddhant-galileosiddhant-galileo commented Mar 11, 2026

Copy link
Copy Markdown
Collaborator

Summary

Scope

  • User-facing/API changes:
  • Internal changes:
  • Out of scope:

Risk and Rollout

  • Risk level: low / medium / high
  • Rollback plan:

Testing

  • Added or updated automated tests
  • Ran make check (or explained why not)
  • Manually verified behavior

Checklist

  • Linked issue/spec (if applicable)
  • Updated docs/examples for user-facing changes
  • Included any required follow-up tasks

@lan17lan17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added two inline review comments.

Comment threadui/src/core/components/login-modal.tsx Outdated
@lan17

Copy link
Copy Markdown
Contributor

I think the main unresolved issue here is the contract boundary.

This repo already has a clear pattern for agent names: normalization is defined once and applied consistently across shared models, server endpoints, and SDK entry points. Control names still do not have that. In this PR, the only canonicalization being added is inside one UI flow, while the server create/patch endpoints and both SDKs still treat name as caller-provided input.

That matters because non-UI clients are real clients here. A browser user now gets trimming/canonicalization in the modal, but Python and TypeScript SDK callers still need to know to pre-trim or they will just hit API validation. I think we should make that choice explicit: either control-name canonicalization belongs at the server/shared boundary, or this remains validation-only and every client is responsible for sending canonical names. I would avoid implicitly defining canonical control names in one modal.

Separately, the legacy-name policy should be explicit and covered by a regression test. The code reads like “existing invalid names remain editable unless the user actually renames them”, which seems reasonable, but it should be stated and tested directly.

The login logo swap also looks unrelated to the trimming fix. If it’s intentional, I’d explain it in the PR; otherwise I’d split it out.

@siddhant-galileo

siddhant-galileo commented Mar 11, 2026

Copy link
Copy Markdown
CollaboratorAuthor

I think the main unresolved issue here is the contract boundary.

This repo already has a clear pattern for agent names: normalization is defined once and applied consistently across shared models, server endpoints, and SDK entry points. Control names still do not have that. In this PR, the only canonicalization being added is inside one UI flow, while the server create/patch endpoints and both SDKs still treat name as caller-provided input.

That matters because non-UI clients are real clients here. A browser user now gets trimming/canonicalization in the modal, but Python and TypeScript SDK callers still need to know to pre-trim or they will just hit API validation. I think we should make that choice explicit: either control-name canonicalization belongs at the server/shared boundary, or this remains validation-only and every client is responsible for sending canonical names. I would avoid implicitly defining canonical control names in one modal.

Separately, the legacy-name policy should be explicit and covered by a regression test. The code reads like “existing invalid names remain editable unless the user actually renames them”, which seems reasonable, but it should be stated and tested directly.

Fixed this - moved logic to server now. UI only uses trim to check if name has updated or not

The login logo swap also looks unrelated to the trimming fix. If it’s intentional, I’d explain it in the PR; otherwise I’d split it out.

Added a line in PR description

@lan17lan17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

@siddhant-galileo
siddhant-galileo merged commit 1a9759d into mainMar 12, 2026
6 checks passed
@siddhant-galileo
siddhant-galileo deleted the siddhant/name-trimming-issue branch March 12, 2026 04:53
galileo-automation pushed a commit that referenced this pull request Mar 18, 2026
## [2.0.0](ts-sdk-v1.1.0...ts-sdk-v2.0.0) (2026-03-18)
### ⚠ BREAKING CHANGES
* **server:** implement recursive control condition trees (#115)
### Features
* **docs:** simplify main README quick start v2 ([#100](#100)) ([7701c65](7701c65))
* **docs:** Update README.md to accurately mention Strands Agents SDK ([#105](#105)) ([84dfa57](84dfa57))
* **evaluators:** add Cisco AI Defense evaluator and examples ([#60](#60)) ([52e2416](52e2416))
* **sdk:** add Google ADK framework integration ([#83](#83)) ([f2b53ee](f2b53ee))
* **server:** implement recursive control condition trees ([#115](#115)) ([2ff4c12](2ff4c12))
### Bug Fixes
* **docs:** clarify README quickstart flow ([#119](#119)) ([317c626](317c626))
* **docs:** cleanup readme ([#66](#66)) ([eca0d6b](eca0d6b))
* **docs:** promote Google ADK plugin in README ([#99](#99)) ([f038aa4](f038aa4))
* **evaluators:** address Cisco AI Defense review issues ([#103](#103)) ([81da81b](81da81b))
* **examples:** shut down SDK in short-lived demos ([#85](#85)) ([df43264](df43264))
* **sdk:** fail closed on post-hook evaluation errors ([#114](#114)) ([67f8fc1](67f8fc1)), closes [#112](#112)
* **sdk:** skip evaluation when no controls apply ([#124](#124)) ([d2cd9f9](d2cd9f9))
* **server:** escape ILIKE pattern in evaluator-configs list endpoint ([#108](#108)) ([cb6e89f](cb6e89f))
* **server:** reject empty string list evaluator values ([#121](#121)) ([2c55d27](2c55d27))
* **server:** revert unwanted changes in server config ([#117](#117)) ([d92e168](d92e168))
* **ui:** create flow - name trimming issue ([#93](#93)) ([1a9759d](1a9759d))
@galileo-automation

Copy link
Copy Markdown
Collaborator

🎉 This PR is included in version 2.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

shyamsunderrai pushed a commit to shyamsunderrai/agent-control that referenced this pull request Apr 20, 2026
## 1.0.0 (2026-03-04)
### ⚠ BREAKING CHANGES
* **server:** Feature/56688 fix image bug (#48)
* **sdk:** a bug in docker file (#46)
* **server:** Feature/56688 fix docker and create bash (#45)
* **evaluators:** Evaluator reorganization with new package structure
Package Structure:
- agent-control-evaluators (v3.0.0): core + regex, list, json, sql
- agent-control-evaluator-galileo (v3.0.0): Luna2 evaluator
Key Changes:
- Entry points for evaluator discovery (agent_control.evaluators)
- Dot notation for external evaluators (galileo.luna2 not galileo/luna2)
- Dynamic __version__ via importlib.metadata
- Server uses evaluators as runtime dep (no longer vendored)
- Release workflow publishes both packages to PyPI
Bug Fixes:
- JSON evaluator: field_constraints/field_patterns in extra-fields allow-list
- SQL evaluator: LIMIT/OFFSET bypass fix
Migration:
- Import: agent_control_evaluator_galileo.luna2 (not agent_control_evaluators.galileo_luna2)
- DB: UPDATE controls SET evaluator.name replace('/', '.')
* **server:** add time-series stats and split API endpoints (#6)
* **evaluators:** rename plugin to evaluator throughout (#81)
* **models:** simplify step model and schema (#70)
### Features
* Add plugin auto-discovery via Python entry points ([#49](agentcontrol/agent-control#49)) ([1521182](agentcontrol/agent-control@1521182))
* **docs:** add GitHub badges and CI coverage reporting ([#90](agentcontrol/agent-control#90)) ([be1fa14](agentcontrol/agent-control@be1fa14))
* **evaluators:** add required_column_values for multi-tenant SQL validation ([#30](agentcontrol/agent-control#30)) ([532386c](agentcontrol/agent-control@532386c))
* **sdk-ts:** automate semantic-release for npm publishing ([#52](agentcontrol/agent-control#52)) ([2b43958](agentcontrol/agent-control@2b43958))
* **sdk:** Add PyPI packaging with semantic release ([#52](agentcontrol/agent-control#52)) ([7c24f7f](agentcontrol/agent-control@7c24f7f))
* **sdk:** Auto-populate init() steps from [@control](https://github.com/control)() decorators ([#23](agentcontrol/agent-control#23)) ([dc0f2a4](agentcontrol/agent-control@dc0f2a4))
* **sdk:** export ControlScope, ControlMatch, and EvaluatorResult models ([#18](agentcontrol/agent-control#18)) ([0d49cad](agentcontrol/agent-control@0d49cad))
* **sdk:** Get Agent Controls from SDK Init ([#15](agentcontrol/agent-control#15)) ([a485f93](agentcontrol/agent-control@a485f93))
* **sdk:** Refresh controls in a background loop ([#43](agentcontrol/agent-control#43)) ([03f826d](agentcontrol/agent-control@03f826d))
* **sdk:** ship TypeScript SDK with deterministic method naming ([#32](agentcontrol/agent-control#32)) ([a76e9b0](agentcontrol/agent-control@a76e9b0))
* **server:** add evaluator config store ([#78](agentcontrol/agent-control#78)) ([cc14aa6](agentcontrol/agent-control@cc14aa6))
* **server:** add initAgent conflict_mode overwrite mode with SDK defaults ([#40](agentcontrol/agent-control#40)) ([f3ed2b8](agentcontrol/agent-control@f3ed2b8))
* **server:** Add observability system for control execution tracking ([#44](agentcontrol/agent-control#44)) ([fd0bddc](agentcontrol/agent-control@fd0bddc))
* **server:** add prometheus metrics for endpoints ([#68](agentcontrol/agent-control#68)) ([775612c](agentcontrol/agent-control@775612c))
* **server:** add time-series stats and split API endpoints ([#6](agentcontrol/agent-control#6)) ([a0fa597](agentcontrol/agent-control@a0fa597))
* **server:** hard-cut migrate to remove agent UUID ([#44](agentcontrol/agent-control#44)) ([ee322c9](agentcontrol/agent-control@ee322c9))
* **server:** Optional Policy and many to many relationships ([#41](agentcontrol/agent-control#41)) ([1a62746](agentcontrol/agent-control@1a62746))
* **ui:** add sql, luna2, json control forms and restructure the code ([#54](agentcontrol/agent-control#54)) ([c4c1d4a](agentcontrol/agent-control@c4c1d4a))
* **ui:** allow to delete control ([#39](agentcontrol/agent-control#39)) ([7dc4ca3](agentcontrol/agent-control@7dc4ca3))
* **ui:** Control Store Flow Updated ([#4](agentcontrol/agent-control#4)) ([dda9f70](agentcontrol/agent-control@dda9f70))
* **ui:** stats dashboard ([#80](agentcontrol/agent-control#80)) ([4cbb7fe](agentcontrol/agent-control@4cbb7fe))
* **ui:** Steps dropdown rendered based on api return values ([#36](agentcontrol/agent-control#36)) ([a2aca43](agentcontrol/agent-control@a2aca43))
* **ui:** tests added and some minor ui changes, added error boundaries ([#61](agentcontrol/agent-control#61)) ([009852b](agentcontrol/agent-control@009852b))
* **ui:** update agent control icon and favicon ([#42](agentcontrol/agent-control#42)) ([19af8fa](agentcontrol/agent-control@19af8fa))
### Bug Fixes
* **ci:** Add ui scope to PR title validation ([#59](agentcontrol/agent-control#59)) ([e0fdb52](agentcontrol/agent-control@e0fdb52))
* **ci:** correct galileo contrib path in release build script ([#51](agentcontrol/agent-control#51)) ([2de6013](agentcontrol/agent-control@2de6013))
* **ci:** Enable pr title on prs ([#56](agentcontrol/agent-control#56)) ([3d8b5fe](agentcontrol/agent-control@3d8b5fe))
* **ci:** Fix release ([#11](agentcontrol/agent-control#11)) ([9dd3dd7](agentcontrol/agent-control@9dd3dd7))
* **ci:** Use galileo-automation bot for releases ([#57](agentcontrol/agent-control#57)) ([bc8eea0](agentcontrol/agent-control@bc8eea0))
* **docs:** Add Example for Evaluator Extension ([#3](agentcontrol/agent-control#3)) ([c2a70b3](agentcontrol/agent-control@c2a70b3))
* **docs:** add setup script ([#49](agentcontrol/agent-control#49)) ([7a212c3](agentcontrol/agent-control@7a212c3))
* **docs:** Clean up Protect ([#76](agentcontrol/agent-control#76)) ([99c16fd](agentcontrol/agent-control@99c16fd))
* **docs:** Fix Examples for LangGraph ([#64](agentcontrol/agent-control#64)) ([23b30ae](agentcontrol/agent-control@23b30ae))
* **docs:** Improve documentation for open source release ([#47](agentcontrol/agent-control#47)) ([9018fb3](agentcontrol/agent-control@9018fb3))
* **docs:** Remove old/unused examples ([#66](agentcontrol/agent-control#66)) ([f417781](agentcontrol/agent-control@f417781))
* **docs:** Update Contributing Guide ([#8](agentcontrol/agent-control#8)) ([10b34c8](agentcontrol/agent-control@10b34c8))
* **docs:** Update readme ([#37](agentcontrol/agent-control#37)) ([7531d83](agentcontrol/agent-control@7531d83))
* **docs:** Update README ([#2](agentcontrol/agent-control#2)) ([379bb15](agentcontrol/agent-control@379bb15))
* **examples:** Control sets cleanup with signed ([#65](agentcontrol/agent-control#65)) ([af7b5fb](agentcontrol/agent-control@af7b5fb))
* **examples:** Update crew ai example to use evaluator ([#93](agentcontrol/agent-control#93)) ([1c65084](agentcontrol/agent-control@1c65084))
* **infra:** Add plugins directory to Dockerfile ([#58](agentcontrol/agent-control#58)) ([171d459](agentcontrol/agent-control@171d459))
* **infra:** install engine/evaluators in server image ([#14](agentcontrol/agent-control#14)) ([d5ae157](agentcontrol/agent-control@d5ae157))
* **models:** use StrEnum for error enums ([#12](agentcontrol/agent-control#12)) ([3f41c9f](agentcontrol/agent-control@3f41c9f))
* **sdk-ts:** add conventional commits preset dependency ([#55](agentcontrol/agent-control#55)) ([540fe9d](agentcontrol/agent-control@540fe9d))
* **sdk-ts:** export npm token for semantic-release npm auth ([#54](agentcontrol/agent-control#54)) ([1b6b993](agentcontrol/agent-control@1b6b993))
* **sdk:** 54253 add steer action and example ([#38](agentcontrol/agent-control#38)) ([bf2380a](agentcontrol/agent-control@bf2380a))
* **sdk:** a bug in docker file ([#46](agentcontrol/agent-control#46)) ([12d1794](agentcontrol/agent-control@12d1794))
* **sdk:** Add step_name as parameter to control ([#25](agentcontrol/agent-control#25)) ([19ade9d](agentcontrol/agent-control@19ade9d))
* **sdk:** emit observability events for SDK-evaluated controls and fix non_matches propagation ([#24](agentcontrol/agent-control#24)) ([6a9da69](agentcontrol/agent-control@6a9da69))
* **sdk:** enforce UUID agent IDs ([#9](agentcontrol/agent-control#9)) ([5ccdbd0](agentcontrol/agent-control@5ccdbd0))
* **sdk:** Fix logging ([#77](agentcontrol/agent-control#77)) ([b1f078c](agentcontrol/agent-control@b1f078c))
* **sdk:** plugin to evaluator.. agent_protect to agent_control ([#88](agentcontrol/agent-control#88)) ([fc9b088](agentcontrol/agent-control@fc9b088))
* **server:** enforce public-safe API error responses ([#20](agentcontrol/agent-control#20)) ([e50d817](agentcontrol/agent-control@e50d817))
* **server:** Feature/56688 fix docker and create bash ([#45](agentcontrol/agent-control#45)) ([7277e27](agentcontrol/agent-control@7277e27))
* **server:** Feature/56688 fix image bug ([#48](agentcontrol/agent-control#48)) ([71e6b44](agentcontrol/agent-control@71e6b44))
* **server:** fix alembic migrations ([#47](agentcontrol/agent-control#47)) ([c19c17c](agentcontrol/agent-control@c19c17c))
* **server:** reject initAgent UUID/name mismatch ([#13](agentcontrol/agent-control#13)) ([19d61ff](agentcontrol/agent-control@19d61ff))
* tighten evaluation error handling and preserve control data ([52a1ef8](agentcontrol/agent-control@52a1ef8))
* **ui:** Fix UI and clients for simplified step schema ([#75](agentcontrol/agent-control#75)) ([be2aaf0](agentcontrol/agent-control@be2aaf0))
* **ui:** json validation ([#10](agentcontrol/agent-control#10)) ([a0cd5af](agentcontrol/agent-control@a0cd5af))
* **ui:** selector subpaths issue ([#34](agentcontrol/agent-control#34)) ([79cb776](agentcontrol/agent-control@79cb776))
* **ui:** UI feedback fixes ([#27](agentcontrol/agent-control#27)) ([6004761](agentcontrol/agent-control@6004761))
### Code Refactoring
* **evaluators:** rename plugin to evaluator throughout ([#81](agentcontrol/agent-control#81)) ([0134682](agentcontrol/agent-control@0134682))
* **evaluators:** split into builtin + extra packages for PyPI ([#5](agentcontrol/agent-control#5)) ([0e0a78a](agentcontrol/agent-control@0e0a78a))
* **models:** simplify step model and schema ([#70](agentcontrol/agent-control#70)) ([4c1d637](agentcontrol/agent-control@4c1d637))
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@siddhant-galileo@lan17@galileo-automation
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix(ui): create flow - name trimming issue - #93

Merged
siddhant-galileo merged 7 commits into
mainfrom
siddhant/name-trimming-issue
Mar 12, 2026
Merged

fix(ui): create flow - name trimming issue#93
siddhant-galileo merged 7 commits into
mainfrom
siddhant/name-trimming-issue

Conversation

@siddhant-galileo

@siddhant-galileosiddhant-galileo commented Mar 11, 2026

Copy link
Copy Markdown
Collaborator

Summary

Scope

  • User-facing/API changes:
  • Internal changes:
  • Out of scope:

Risk and Rollout

  • Risk level: low / medium / high
  • Rollback plan:

Testing

  • Added or updated automated tests
  • Ran make check (or explained why not)
  • Manually verified behavior

Checklist

  • Linked issue/spec (if applicable)
  • Updated docs/examples for user-facing changes
  • Included any required follow-up tasks

@lan17lan17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added two inline review comments.

Comment threadui/src/core/components/login-modal.tsx Outdated
@lan17

Copy link
Copy Markdown
Contributor

I think the main unresolved issue here is the contract boundary.

This repo already has a clear pattern for agent names: normalization is defined once and applied consistently across shared models, server endpoints, and SDK entry points. Control names still do not have that. In this PR, the only canonicalization being added is inside one UI flow, while the server create/patch endpoints and both SDKs still treat name as caller-provided input.

That matters because non-UI clients are real clients here. A browser user now gets trimming/canonicalization in the modal, but Python and TypeScript SDK callers still need to know to pre-trim or they will just hit API validation. I think we should make that choice explicit: either control-name canonicalization belongs at the server/shared boundary, or this remains validation-only and every client is responsible for sending canonical names. I would avoid implicitly defining canonical control names in one modal.

Separately, the legacy-name policy should be explicit and covered by a regression test. The code reads like “existing invalid names remain editable unless the user actually renames them”, which seems reasonable, but it should be stated and tested directly.

The login logo swap also looks unrelated to the trimming fix. If it’s intentional, I’d explain it in the PR; otherwise I’d split it out.

@siddhant-galileo

siddhant-galileo commented Mar 11, 2026

Copy link
Copy Markdown
CollaboratorAuthor

I think the main unresolved issue here is the contract boundary.

This repo already has a clear pattern for agent names: normalization is defined once and applied consistently across shared models, server endpoints, and SDK entry points. Control names still do not have that. In this PR, the only canonicalization being added is inside one UI flow, while the server create/patch endpoints and both SDKs still treat name as caller-provided input.

That matters because non-UI clients are real clients here. A browser user now gets trimming/canonicalization in the modal, but Python and TypeScript SDK callers still need to know to pre-trim or they will just hit API validation. I think we should make that choice explicit: either control-name canonicalization belongs at the server/shared boundary, or this remains validation-only and every client is responsible for sending canonical names. I would avoid implicitly defining canonical control names in one modal.

Separately, the legacy-name policy should be explicit and covered by a regression test. The code reads like “existing invalid names remain editable unless the user actually renames them”, which seems reasonable, but it should be stated and tested directly.

Fixed this - moved logic to server now. UI only uses trim to check if name has updated or not

The login logo swap also looks unrelated to the trimming fix. If it’s intentional, I’d explain it in the PR; otherwise I’d split it out.

Added a line in PR description

@lan17lan17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

@siddhant-galileo
siddhant-galileo merged commit 1a9759d into mainMar 12, 2026
6 checks passed
@siddhant-galileo
siddhant-galileo deleted the siddhant/name-trimming-issue branch March 12, 2026 04:53
galileo-automation pushed a commit that referenced this pull request Mar 18, 2026
## [2.0.0](ts-sdk-v1.1.0...ts-sdk-v2.0.0) (2026-03-18)
### ⚠ BREAKING CHANGES
* **server:** implement recursive control condition trees (#115)
### Features
* **docs:** simplify main README quick start v2 ([#100](#100)) ([7701c65](7701c65))
* **docs:** Update README.md to accurately mention Strands Agents SDK ([#105](#105)) ([84dfa57](84dfa57))
* **evaluators:** add Cisco AI Defense evaluator and examples ([#60](#60)) ([52e2416](52e2416))
* **sdk:** add Google ADK framework integration ([#83](#83)) ([f2b53ee](f2b53ee))
* **server:** implement recursive control condition trees ([#115](#115)) ([2ff4c12](2ff4c12))
### Bug Fixes
* **docs:** clarify README quickstart flow ([#119](#119)) ([317c626](317c626))
* **docs:** cleanup readme ([#66](#66)) ([eca0d6b](eca0d6b))
* **docs:** promote Google ADK plugin in README ([#99](#99)) ([f038aa4](f038aa4))
* **evaluators:** address Cisco AI Defense review issues ([#103](#103)) ([81da81b](81da81b))
* **examples:** shut down SDK in short-lived demos ([#85](#85)) ([df43264](df43264))
* **sdk:** fail closed on post-hook evaluation errors ([#114](#114)) ([67f8fc1](67f8fc1)), closes [#112](#112)
* **sdk:** skip evaluation when no controls apply ([#124](#124)) ([d2cd9f9](d2cd9f9))
* **server:** escape ILIKE pattern in evaluator-configs list endpoint ([#108](#108)) ([cb6e89f](cb6e89f))
* **server:** reject empty string list evaluator values ([#121](#121)) ([2c55d27](2c55d27))
* **server:** revert unwanted changes in server config ([#117](#117)) ([d92e168](d92e168))
* **ui:** create flow - name trimming issue ([#93](#93)) ([1a9759d](1a9759d))
@galileo-automation

Copy link
Copy Markdown
Collaborator

🎉 This PR is included in version 2.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

shyamsunderrai pushed a commit to shyamsunderrai/agent-control that referenced this pull request Apr 20, 2026
## 1.0.0 (2026-03-04)
### ⚠ BREAKING CHANGES
* **server:** Feature/56688 fix image bug (#48)
* **sdk:** a bug in docker file (#46)
* **server:** Feature/56688 fix docker and create bash (#45)
* **evaluators:** Evaluator reorganization with new package structure
Package Structure:
- agent-control-evaluators (v3.0.0): core + regex, list, json, sql
- agent-control-evaluator-galileo (v3.0.0): Luna2 evaluator
Key Changes:
- Entry points for evaluator discovery (agent_control.evaluators)
- Dot notation for external evaluators (galileo.luna2 not galileo/luna2)
- Dynamic __version__ via importlib.metadata
- Server uses evaluators as runtime dep (no longer vendored)
- Release workflow publishes both packages to PyPI
Bug Fixes:
- JSON evaluator: field_constraints/field_patterns in extra-fields allow-list
- SQL evaluator: LIMIT/OFFSET bypass fix
Migration:
- Import: agent_control_evaluator_galileo.luna2 (not agent_control_evaluators.galileo_luna2)
- DB: UPDATE controls SET evaluator.name replace('/', '.')
* **server:** add time-series stats and split API endpoints (#6)
* **evaluators:** rename plugin to evaluator throughout (#81)
* **models:** simplify step model and schema (#70)
### Features
* Add plugin auto-discovery via Python entry points ([#49](agentcontrol/agent-control#49)) ([1521182](agentcontrol/agent-control@1521182))
* **docs:** add GitHub badges and CI coverage reporting ([#90](agentcontrol/agent-control#90)) ([be1fa14](agentcontrol/agent-control@be1fa14))
* **evaluators:** add required_column_values for multi-tenant SQL validation ([#30](agentcontrol/agent-control#30)) ([532386c](agentcontrol/agent-control@532386c))
* **sdk-ts:** automate semantic-release for npm publishing ([#52](agentcontrol/agent-control#52)) ([2b43958](agentcontrol/agent-control@2b43958))
* **sdk:** Add PyPI packaging with semantic release ([#52](agentcontrol/agent-control#52)) ([7c24f7f](agentcontrol/agent-control@7c24f7f))
* **sdk:** Auto-populate init() steps from [@control](https://github.com/control)() decorators ([#23](agentcontrol/agent-control#23)) ([dc0f2a4](agentcontrol/agent-control@dc0f2a4))
* **sdk:** export ControlScope, ControlMatch, and EvaluatorResult models ([#18](agentcontrol/agent-control#18)) ([0d49cad](agentcontrol/agent-control@0d49cad))
* **sdk:** Get Agent Controls from SDK Init ([#15](agentcontrol/agent-control#15)) ([a485f93](agentcontrol/agent-control@a485f93))
* **sdk:** Refresh controls in a background loop ([#43](agentcontrol/agent-control#43)) ([03f826d](agentcontrol/agent-control@03f826d))
* **sdk:** ship TypeScript SDK with deterministic method naming ([#32](agentcontrol/agent-control#32)) ([a76e9b0](agentcontrol/agent-control@a76e9b0))
* **server:** add evaluator config store ([#78](agentcontrol/agent-control#78)) ([cc14aa6](agentcontrol/agent-control@cc14aa6))
* **server:** add initAgent conflict_mode overwrite mode with SDK defaults ([#40](agentcontrol/agent-control#40)) ([f3ed2b8](agentcontrol/agent-control@f3ed2b8))
* **server:** Add observability system for control execution tracking ([#44](agentcontrol/agent-control#44)) ([fd0bddc](agentcontrol/agent-control@fd0bddc))
* **server:** add prometheus metrics for endpoints ([#68](agentcontrol/agent-control#68)) ([775612c](agentcontrol/agent-control@775612c))
* **server:** add time-series stats and split API endpoints ([#6](agentcontrol/agent-control#6)) ([a0fa597](agentcontrol/agent-control@a0fa597))
* **server:** hard-cut migrate to remove agent UUID ([#44](agentcontrol/agent-control#44)) ([ee322c9](agentcontrol/agent-control@ee322c9))
* **server:** Optional Policy and many to many relationships ([#41](agentcontrol/agent-control#41)) ([1a62746](agentcontrol/agent-control@1a62746))
* **ui:** add sql, luna2, json control forms and restructure the code ([#54](agentcontrol/agent-control#54)) ([c4c1d4a](agentcontrol/agent-control@c4c1d4a))
* **ui:** allow to delete control ([#39](agentcontrol/agent-control#39)) ([7dc4ca3](agentcontrol/agent-control@7dc4ca3))
* **ui:** Control Store Flow Updated ([#4](agentcontrol/agent-control#4)) ([dda9f70](agentcontrol/agent-control@dda9f70))
* **ui:** stats dashboard ([#80](agentcontrol/agent-control#80)) ([4cbb7fe](agentcontrol/agent-control@4cbb7fe))
* **ui:** Steps dropdown rendered based on api return values ([#36](agentcontrol/agent-control#36)) ([a2aca43](agentcontrol/agent-control@a2aca43))
* **ui:** tests added and some minor ui changes, added error boundaries ([#61](agentcontrol/agent-control#61)) ([009852b](agentcontrol/agent-control@009852b))
* **ui:** update agent control icon and favicon ([#42](agentcontrol/agent-control#42)) ([19af8fa](agentcontrol/agent-control@19af8fa))
### Bug Fixes
* **ci:** Add ui scope to PR title validation ([#59](agentcontrol/agent-control#59)) ([e0fdb52](agentcontrol/agent-control@e0fdb52))
* **ci:** correct galileo contrib path in release build script ([#51](agentcontrol/agent-control#51)) ([2de6013](agentcontrol/agent-control@2de6013))
* **ci:** Enable pr title on prs ([#56](agentcontrol/agent-control#56)) ([3d8b5fe](agentcontrol/agent-control@3d8b5fe))
* **ci:** Fix release ([#11](agentcontrol/agent-control#11)) ([9dd3dd7](agentcontrol/agent-control@9dd3dd7))
* **ci:** Use galileo-automation bot for releases ([#57](agentcontrol/agent-control#57)) ([bc8eea0](agentcontrol/agent-control@bc8eea0))
* **docs:** Add Example for Evaluator Extension ([#3](agentcontrol/agent-control#3)) ([c2a70b3](agentcontrol/agent-control@c2a70b3))
* **docs:** add setup script ([#49](agentcontrol/agent-control#49)) ([7a212c3](agentcontrol/agent-control@7a212c3))
* **docs:** Clean up Protect ([#76](agentcontrol/agent-control#76)) ([99c16fd](agentcontrol/agent-control@99c16fd))
* **docs:** Fix Examples for LangGraph ([#64](agentcontrol/agent-control#64)) ([23b30ae](agentcontrol/agent-control@23b30ae))
* **docs:** Improve documentation for open source release ([#47](agentcontrol/agent-control#47)) ([9018fb3](agentcontrol/agent-control@9018fb3))
* **docs:** Remove old/unused examples ([#66](agentcontrol/agent-control#66)) ([f417781](agentcontrol/agent-control@f417781))
* **docs:** Update Contributing Guide ([#8](agentcontrol/agent-control#8)) ([10b34c8](agentcontrol/agent-control@10b34c8))
* **docs:** Update readme ([#37](agentcontrol/agent-control#37)) ([7531d83](agentcontrol/agent-control@7531d83))
* **docs:** Update README ([#2](agentcontrol/agent-control#2)) ([379bb15](agentcontrol/agent-control@379bb15))
* **examples:** Control sets cleanup with signed ([#65](agentcontrol/agent-control#65)) ([af7b5fb](agentcontrol/agent-control@af7b5fb))
* **examples:** Update crew ai example to use evaluator ([#93](agentcontrol/agent-control#93)) ([1c65084](agentcontrol/agent-control@1c65084))
* **infra:** Add plugins directory to Dockerfile ([#58](agentcontrol/agent-control#58)) ([171d459](agentcontrol/agent-control@171d459))
* **infra:** install engine/evaluators in server image ([#14](agentcontrol/agent-control#14)) ([d5ae157](agentcontrol/agent-control@d5ae157))
* **models:** use StrEnum for error enums ([#12](agentcontrol/agent-control#12)) ([3f41c9f](agentcontrol/agent-control@3f41c9f))
* **sdk-ts:** add conventional commits preset dependency ([#55](agentcontrol/agent-control#55)) ([540fe9d](agentcontrol/agent-control@540fe9d))
* **sdk-ts:** export npm token for semantic-release npm auth ([#54](agentcontrol/agent-control#54)) ([1b6b993](agentcontrol/agent-control@1b6b993))
* **sdk:** 54253 add steer action and example ([#38](agentcontrol/agent-control#38)) ([bf2380a](agentcontrol/agent-control@bf2380a))
* **sdk:** a bug in docker file ([#46](agentcontrol/agent-control#46)) ([12d1794](agentcontrol/agent-control@12d1794))
* **sdk:** Add step_name as parameter to control ([#25](agentcontrol/agent-control#25)) ([19ade9d](agentcontrol/agent-control@19ade9d))
* **sdk:** emit observability events for SDK-evaluated controls and fix non_matches propagation ([#24](agentcontrol/agent-control#24)) ([6a9da69](agentcontrol/agent-control@6a9da69))
* **sdk:** enforce UUID agent IDs ([#9](agentcontrol/agent-control#9)) ([5ccdbd0](agentcontrol/agent-control@5ccdbd0))
* **sdk:** Fix logging ([#77](agentcontrol/agent-control#77)) ([b1f078c](agentcontrol/agent-control@b1f078c))
* **sdk:** plugin to evaluator.. agent_protect to agent_control ([#88](agentcontrol/agent-control#88)) ([fc9b088](agentcontrol/agent-control@fc9b088))
* **server:** enforce public-safe API error responses ([#20](agentcontrol/agent-control#20)) ([e50d817](agentcontrol/agent-control@e50d817))
* **server:** Feature/56688 fix docker and create bash ([#45](agentcontrol/agent-control#45)) ([7277e27](agentcontrol/agent-control@7277e27))
* **server:** Feature/56688 fix image bug ([#48](agentcontrol/agent-control#48)) ([71e6b44](agentcontrol/agent-control@71e6b44))
* **server:** fix alembic migrations ([#47](agentcontrol/agent-control#47)) ([c19c17c](agentcontrol/agent-control@c19c17c))
* **server:** reject initAgent UUID/name mismatch ([#13](agentcontrol/agent-control#13)) ([19d61ff](agentcontrol/agent-control@19d61ff))
* tighten evaluation error handling and preserve control data ([52a1ef8](agentcontrol/agent-control@52a1ef8))
* **ui:** Fix UI and clients for simplified step schema ([#75](agentcontrol/agent-control#75)) ([be2aaf0](agentcontrol/agent-control@be2aaf0))
* **ui:** json validation ([#10](agentcontrol/agent-control#10)) ([a0cd5af](agentcontrol/agent-control@a0cd5af))
* **ui:** selector subpaths issue ([#34](agentcontrol/agent-control#34)) ([79cb776](agentcontrol/agent-control@79cb776))
* **ui:** UI feedback fixes ([#27](agentcontrol/agent-control#27)) ([6004761](agentcontrol/agent-control@6004761))
### Code Refactoring
* **evaluators:** rename plugin to evaluator throughout ([#81](agentcontrol/agent-control#81)) ([0134682](agentcontrol/agent-control@0134682))
* **evaluators:** split into builtin + extra packages for PyPI ([#5](agentcontrol/agent-control#5)) ([0e0a78a](agentcontrol/agent-control@0e0a78a))
* **models:** simplify step model and schema ([#70](agentcontrol/agent-control#70)) ([4c1d637](agentcontrol/agent-control@4c1d637))
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@siddhant-galileo@lan17@galileo-automation