Skip to content

Release 1.0.0a3#28

Open
github-actions[bot] wants to merge 31 commits intomasterfrom
release-1.0.0a3
Open

Release 1.0.0a3#28
github-actions[bot] wants to merge 31 commits intomasterfrom
release-1.0.0a3

Conversation

@github-actions
Copy link
Copy Markdown

Human review requested!

JarbasAl and others added 30 commits November 22, 2025 21:09
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Complete French DuckDuckGo locale

* Refine French DuckDuckGo intents

* Refine French DuckDuckGo prompts

* Align French DuckDuckGo intents with runtime support

* Polish French DuckDuckGo voice locale
Automated rename submitted by @JarbasAl via OVOS Localize.

Co-authored-by: ovos-localize[bot] <ovos-localize[bot]@users.noreply.github.com>
* Add remaining French DDG intents

* Register DDG intent aliases and document locale sync

* Keep French DDG PR locale-only

* Drop remaining non-locale DDG changes

* Remove README change from French DDG PR
Submitted by @Juanpabl via OVOS Localize

Co-authored-by: ovos-localize[bot] <ovos-localize[bot]@users.noreply.github.com>
… more intents for infobox parsing (#23)

* feat: migrate to agentic plugin pattern (RetrievalEngine + ToolBox)

Replaces deprecated QuestionSolver/opm.solver.question with:
- DuckDuckGoRetrievalEngine(RetrievalEngine) — opm.agents.retrieval
- DuckDuckGoToolbox(ToolBox) — opm.agents.toolbox

Also: pyproject.toml replaces setup.py; 21 unit tests added;
standard GH Actions workflows applied; locale dir casing fixed (eu→eu-ES).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor: remove solver-era methods, privatise internal helpers

Drop get_spoken_answer, get_expanded_answer, get_image (solver pattern
artifacts with no equivalent in the agentic model). Rename get_data →
_fetch, extract_and_search → _search, register_from_file → _load_intents,
get_keyword_extractor → _keyword_extractor, register_infobox_intent →
_register_intent, match_infobox_intent → _match_infobox_intent. Toolbox
now delegates to query() instead of the removed get_spoken_answer.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: restore get_image as public method, add duckduckgo_image tool

get_image(query, lang) returns None instead of a fallback path when DDG
has no image — cleaner for standalone use. DuckDuckGoToolbox now exposes
two tools: search_duckduckgo (text answer) and duckduckgo_image (image URL).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor: rename package ovos-ddg-solver-plugin → ovos-ddg-plugin

Renames the Python package from ovos_ddg_solver to ovos_ddg_plugin,
dropping all solver mentions. The old PyPI package name is left intact
for legacy users. Entry points, pyproject.toml, coverage workflow, and
tests updated accordingly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: clean up skill-era artifacts and update CI

- Remove translations/ (gitlocalize deprecated)
- Remove skill-era locale files (voc, dialog, skill.json, extra intents)
- Delete legacy workflows (build_tests, unit_tests, license_tests, ovoscope, skill-check)
- Add opm-check.yml for OPM plugin validation
- Update README, expand tests, add docstrings and type annotations

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add duckduckgo_infobox as a third agent tool

Exposes get_infobox as DDGInfoboxArgs/DDGInfoboxOutput tool so agents
can retrieve all structured fields and related topics in one call.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: remove secrets from non-release workflows, fix version_file path

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: add LICENSE file (Apache 2.0)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: rename intent entity {query} → {keyword}, add per-language intent tests

- All locale intent files: {query} → {keyword}
- _match_infobox_intent: extract "keyword" entity instead of "query"
- Add TestIntentParsingAllLanguages: 74 dynamically-generated tests covering
  all 9 locales (ca, da, de, en, eu, fr, gl, it, pt) across all intent types

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: fix infobox key lookup, add 12 new intents, improve all locales

Bug fixes:
- get_infobox: normalise DDG labels spaces→underscores so "age at death"
  matches intent name "age_at_death" (all multi-word lookups were silently None)
- _match_infobox_intent: strip possessive 's from both query and training
  samples so "Darwin's father" matches "{keyword} father" patterns
- Add FIELD_ALIASES: alma_mater→education, resting_place→burial fallback,
  notable_awards→awards, doctoral_students→other_academic_advisors

New intents (all 10 locales):
  institutions, notable_awards, notable_work, movement, occupation,
  predecessor, successor, religion, doctoral_students, baptised,
  father, mother

Locale fixes:
- es-ES: rewrote all 11 intents (all patterns were missing {keyword})
- it-IT: filled 9 previously empty intents
- pt-PT: filled 6 previously empty intents
- pt-PT/gl-ES: deduplicated "onde estudou" ambiguity between education/alma_mater

Tests: 144 passing (up from 128)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add 28 new infobox intents for films, companies, geography, people

- Added intents: political_party, age, director, starring, released,
  running_time, budget, box_office, founded, founders, industry, ceo,
  owner, inventor, revenue, height, country, elevation, length,
  other_names, sport, years_active, coached_by, partner, citizenship,
  location, license, designed_by
- Used typed entity labels ({person}, {movie}, {company}, {place},
  {mountain}, {software}, {organization}) instead of generic {keyword}
  where entity type is unambiguous — improves dataset quality
- Updated _match_infobox_intent to accept any entity label, not just {keyword}
- Expanded FIELD_ALIASES: burial_place, preceded_by, succeeded_by,
  notable_works, style, founder(s), first_appeared, launched, other_names,
  partner(s), years_active/active, designed_by/architect
- All 10 locales covered, 173 tests passing

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: add 28 more intents, massively expand samples, fix training data bugs

New intents (all 10 locales): author, genre, language, original_title,
publisher, head_coach, stadium, championships, platforms, developer,
produced_by, written_by, nickname, capital, population, area,
headquarters, net_worth, spouse, scientific_name, habitat, diet,
conservation_status, opened, label, members, composers, number_of_employees

Existing en-US intents expanded from ~4 to 12-15 samples each with
more linguistic variation, typed entity labels, and alternative phrasings.

Bug fixes in _load_intents:
- Normalise whitespace after expand_parentheses: (word|) no longer
  produces double-spaces in training samples
- Remove trailing empty alternatives (|) from patterns that caused
  cross-intent entity capture (citizenship, religion, diet, etc.)
- Removed competing patterns between head_coach/coached_by,
  location/headquarters, partner/spouse

Expanded FIELD_ALIASES to cover DDG key variants for all new intents.

201 tests passing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* test: ensure all 79 en-US intents have coverage; fix fields/occupation conflict

- Add test for fields intent
- Remove 'what field did X work in' from occupation (belongs in fields)
- Add past tense variant to fields intent
- 202 tests passing

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: 79-intent multilingual infobox matching with infobox-based disambiguation

- 79 Padacioso intent files × 10 locales (en-US, ca-ES, da-DK, de-DE, es-ES,
  eu-ES, fr-FR, gl-ES, it-IT, pt-PT), each with 6–12 sample patterns
- Replace generic {keyword} slot with typed entity labels ({person}, {movie},
  {place}, {animal}, {company}, {software}, {book}, {artist}, {group},
  {organization}, {mountain}, {team}) wherever context constrains the type
- _match_infobox_intents() uses calc_intents() (plural) to return all
  candidates with confidence + entity_type; query() walks the list and picks
  the first whose DDG infobox field is non-empty, resolving ties like
  length vs running_time for ambiguous entities such as "Amazon"
- 853 intent-matching tests (849 unambiguous + 2 explicit ambiguous cases
  that assert assertIn rather than assertEqual)
- Fix trailing empty-alternative bug (word|) in all 9 non-English
  conservation_status.intent files and several others
- Fix gl-ES alma_mater.intent (was a copy of education), eu-ES fields.intent
  typo, da-DK predecessor duplicate pattern, eu-ES developer/founders conflict
- Rewrite README with full intent catalogue, disambiguation flow docs,
  and contributor guide for adding/extending intent files

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Delete ovos_ddg_solver/locale/an directory

* Delete TODO.md

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix: correct version_file path and modernise release_workflow.yml

- version_file was pointing to ovos_ddg_solver/version.py which does not
  exist; the real version file lives in ovos_ddg_plugin/version.py
- add a minimal setup.py (delegates to pyproject.toml) so that the
  TigreGotico/gh-automations reusable workflow can call
  `python setup.py --version` without a FileNotFoundError
- replace deprecated `::set-output` with $GITHUB_OUTPUT
- replace `python setup.py sdist bdist_wheel` with `python -m build`
- bump inline action versions to @v4 / @v5 and pin
  pypa/gh-action-pypi-publish to release/v1
- use python 3.11 (stable) instead of 3.14 (unreleased) in inline jobs

Fixes: https://github.com/OpenVoiceOS/ovos-ddg-plugin/actions/runs/24739661200

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: replace TigreGotico workflows with OpenVoiceOS/gh-automations

- release_workflow.yml: drop inline publish/propose_release jobs, use
  OpenVoiceOS/gh-automations publish-alpha reusable workflow; fix
  version_file path (ovos_ddg_solver → ovos_ddg_plugin)
- publish_stable.yml: same replacement; fix version_file path
- release-preview.yml: fix package_name and version_file path
- Pin all three to gh-automations@05c0bb4 (current dev SHA)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix: use @dev ref for gh-automations, not pinned SHA

* fix: remove setup.py shim, pyproject.toml is the build source

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* Update dependency ovos-config to v2

* Update pyproject.toml

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: JarbasAI <33701864+JarbasAl@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants