Daniele Rossetti (8411b834) at 18 Mar 19:03
feat: improve error handling/tests
I've added a comment with a clarification
@GitLabDuo the token parser already uppercases all bare words
Daniele Rossetti (a9299026) at 18 Mar 17:44
feat: improve error handling/tests
You made this comment 3 times
Daniele Rossetti (b629c4b4) at 18 Mar 17:38
Apply 1 suggestion(s) to 1 file(s)
We want to add timeEstimate and timeSpent fields to GLQL. Display rendering is already partially wired up in the Rust compiler (render_query_field handles "timeEstimate" and "totalTimeSpent" via WorkItemWidgetTimeTracking), but the fields aren't in the Field enum — they pass through as UnknownField, so there's no validation.
The GitLab GraphQL schema confirms no filter arguments or sort enum values exist for time tracking on work items. The WorkItemWidgetTimeTracking model has no sorting_keys defined. So this change is display-only for now.
On the frontend, the GraphQL response returns raw seconds (integers) which currently render as plain numbers via TextPresenter. A new DurationPresenter is needed.
glql)Field enumFile: src/types/field.rs
TimeEstimate and TimeSpent to the enum (near Weight)display_field_name():
TimeEstimate → "timeEstimate"
TimeSpent → "totalTimeSpent"
From<String> aliases:
"timeestimate" → TimeEstimate
"estimatedtime" → TimeEstimate.aliased_as(s)
"timespent" → TimeSpent
"totaltimespent" → TimeSpent.aliased_as(s)
From<&Field> for String:
TimeEstimate → "timeEstimate"
TimeSpent → "timeSpent"
File: src/analyzer/sources/work_items.rs
is_valid_field(): add TimeEstimate | TimeSpent
field_type(): TimeEstimate | TimeSpent => NumberLike (display-only, no Nullable needed since no filtering)graphql_filter_key(), graphql_filter_value(), graphql_sort_value(), or valid_sort_fields()
File: src/analyzer/sources/merge_requests.rs
is_valid_field(): add TimeEstimate | TimeSpent
field_type(): TimeEstimate | TimeSpent => NumberLike
Update: tests/field_selection_tests.rs
("timeSpent", "totalTimeSpent") and ("estimatedTime", "timeEstimate") to alias tests for work items and merge requestsgitlab/app/assets/javascripts/glql/)New file: app/assets/javascripts/glql/components/presenters/duration.vue
Simple component using existing formatTimeSpent() from ~/lib/utils/datetime/date_format_utility (line 557). Accepts a Number prop, renders formatted string like "1h 30m".
File: app/assets/javascripts/glql/components/presenters/field.vue
DurationPresenter
presentersByFieldKey:
timeEstimate: DurationPresentertotalTimeSpent: DurationPresenterNew file: spec/frontend/glql/components/presenters/duration_spec.js
3600 → "1h", 0 → "0m", negative valuesUpdate: spec/frontend/glql/components/presenters/field_spec.js
timeEstimate and totalTimeSpent to the fieldKey test casescargo test in glql repo — all existing + updated tests passyarn jest spec/frontend/glql/ in GDK — all existing + new tests passfields: timeEstimate, totalTimeSpent in a GLQL block and verify human-readable displayDaniele Rossetti (fe37f6b6) at 18 Mar 17:04
Add Integration testing foundational agents docs
Daniele Rossetti (e297cb79) at 18 Mar 16:57
feat: make Status an Enum and supports token instead of quoted stirngs
... and 3 more commits
Daniele Rossetti (c513161b) at 18 Mar 16:55
Add Integration testing foundational agents docs
@GitLabDuo I think we need the full MR link here?
@GitLabDuo isn't this clear already? deterministic responses are mentioned together with mocked tools, not with LLM responses
Adds new section about foundational agents integration testing. Based on gitlab-org/modelops/applied-ml/code-suggestions/ai-assist!4541 and https://gitlab.com/gitlab-org/modelops/applied-ml/code-suggestions/ai-assist/-/merge_requests/4543
NA
NA