querysource 4.1.2__tar.gz → 4.1.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {querysource-4.1.2 → querysource-4.1.3}/PKG-INFO +1 -1
- {querysource-4.1.2 → querysource-4.1.3}/querysource/_version.py +3 -3
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/operators/Join.py +90 -1
- {querysource-4.1.2 → querysource-4.1.3}/querysource/version.py +1 -1
- {querysource-4.1.2 → querysource-4.1.3}/querysource.egg-info/PKG-INFO +1 -1
- {querysource-4.1.2 → querysource-4.1.3}/querysource.egg-info/SOURCES.txt +1 -0
- querysource-4.1.3/tests/test_join_conditions.py +351 -0
- {querysource-4.1.2 → querysource-4.1.3}/.bumpversion.cfg +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/agents/code-reviewer.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/agents/sdd-worker.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/commands/sdd-brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/commands/sdd-codereview.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/commands/sdd-done.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/commands/sdd-next.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/commands/sdd-proposal.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/commands/sdd-spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/commands/sdd-start.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/commands/sdd-status.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/commands/sdd-task.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/rules/aws-cost-optimization.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/rules/code-reviewer.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/rules/cython-development.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/rules/python-development.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/rules/rust-development.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/rules/using-git-worktrees.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/rules/worktree-pr-and-clean.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/rules/worktree-start-feature.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.claude/rules/worktree-status.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.github/dependabot.yml +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.github/workflows/codeql-analysis.yml +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.github/workflows/release.yml +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.isort.cfg +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.jupyter/jupyter_notebook_config.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/.pylintrc +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/CHANGES.rst +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/CODE_OF_CONDUCT.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/CONTRIBUTING.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/INSTALL +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/LICENSE +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/MANIFEST.in +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/Makefile +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/README.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/app.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/bin/README.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/gunicorn_config.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/lab/README.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/my_prompts/new-rust-migration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/mypy.ini +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/nav.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/plugins/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/pyproject.toml +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/pytest.ini +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/__cli__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/cache/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/cache/backends/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/cache/backends/abstract.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/cache/backends/memcache.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/cache/backends/redis.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/cache/base.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/conf.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/connections.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/abstract.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/arangodb.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/athena.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/bigquery.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/cassandra.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/clickhouse.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/cockroachdb.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/couchbase.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/couchdb.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/countries.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/delta.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/documentdb.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/dynamodb.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/elastic.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/ga.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/gcalc.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/hazel.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/iceberg.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/influx.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/jdbc.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/jira.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/mariadb.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/memcached.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/mongo.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/mysql.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/odbc.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/openweather.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/oracle.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/pg.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/postgres.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/py.typed +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/qs.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/redis.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/rest.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/rethink.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/sa.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/salesforce.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/scylladb.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/sqlalchemy.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/sqlite.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/sqlserver.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/upc.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/drivers/zipcodeapi.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/handlers/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/handlers/datasource.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/handlers/utils.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/datasources/models.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/events/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/exceptions.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/handlers/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/handlers/abstract.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/handlers/executor.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/handlers/log.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/handlers/manager.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/handlers/multi.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/handlers/outputs/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/handlers/outputs/tableOutput/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/handlers/outputs/tableOutput/postgres.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/handlers/outputs/tableOutput/table.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/handlers/service.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/handlers/variables.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/interfaces/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/interfaces/connections.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/interfaces/credentials.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/interfaces/databases/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/interfaces/databases/abstract.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/interfaces/databases/bigquery.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/interfaces/databases/db.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/interfaces/databases/mongo.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/interfaces/databases/rethink.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/interfaces/http.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/interfaces/playwright_service.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/interfaces/queries.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/interfaces/selenium_service.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/libs/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/libs/encoders.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/libs/functions/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/libs/py.typed +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/models.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/dt/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/dt/abstract.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/dt/arrow.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/dt/dt.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/dt/factory.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/dt/iter.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/dt/modin.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/dt/pandas.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/dt/polars.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/output.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/tables/TableOutput/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/tables/TableOutput/abstract.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/tables/TableOutput/bigquery.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/tables/TableOutput/documentdb.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/tables/TableOutput/mongodb.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/tables/TableOutput/mysql.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/tables/TableOutput/postgres.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/tables/TableOutput/rethink.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/tables/TableOutput/sa.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/tables/TableOutput/table.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/tables/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/writers/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/writers/abstract.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/writers/bokeh.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/writers/clustering.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/writers/csv.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/writers/describe.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/writers/eda.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/writers/excel.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/writers/html.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/writers/json.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/writers/pdf.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/writers/pickle.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/writers/plotly.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/writers/profiling.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/writers/report.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/writers/table.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/writers/tsv.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/writers/txt.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/outputs/writers/xml.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/abstract.c +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/abstract.pxd +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/abstract.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/arangodb.c +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/arangodb.pxd +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/arangodb.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/bigquery.c +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/bigquery.pxd +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/bigquery.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/cql.c +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/cql.pxd +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/cql.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/deltatbl.c +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/deltatbl.pxd +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/deltatbl.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/elastic.cpp +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/elastic.pxd +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/elastic.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/iceberg.c +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/iceberg.pxd +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/iceberg.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/influx.c +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/influx.pxd +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/influx.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/mongo.cpp +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/mongo.pxd +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/mongo.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/parser.c +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/parser.pxd +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/parser.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/pgsql.c +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/pgsql.pxd +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/pgsql.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/rethink.c +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/rethink.pxd +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/rethink.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/sosql.c +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/sosql.pxd +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/sosql.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/sql.c +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/sql.pxd +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/sql.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/sqlserver.c +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/sqlserver.pxd +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/parsers/sqlserver.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/plugins/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/plugins/importer.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/plugins/sources/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/abstract.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/arangodb.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/bigquery.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/cassandra.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/db.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/default.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/deltatbl.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/documentdb.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/dummy.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/elastic.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/external.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/http.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/iceberg.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/influx.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/mysql.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/pg.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/py.typed +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/rest.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/rethink.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/salesforce.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/scylladb.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/abstract.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/amazon.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/countries.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/ga.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/geofcc.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/gmaps.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/graphcountries.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/graphql.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/http.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/hubspot.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/openweather.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/parsers/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/parsers/amproduct.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/parsers/xpath.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/pokemon.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/populartimes.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/py.typed +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/rest.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/retailnext.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/rssapp.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/salesforce.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/scrapper.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/shoppertrack.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/swop.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/uap.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/upc.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/wm_stores.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/zammad.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sources/zipcodeapi.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sql.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/providers/sqlserver.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/py.typed +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/base.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/executor.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/models.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/components/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/operators/Concat.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/operators/GroupBy.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/operators/Info.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/operators/Melt.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/operators/Merge.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/operators/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/operators/abstract.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/operators/filter/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/operators/filter/flt.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/sources/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/sources/file.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/sources/query.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/transformations/Forecast.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/transformations/Map.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/transformations/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/transformations/abstract.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/transformations/correlation.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/transformations/crosstab.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/transformations/google/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/transformations/google/maps.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/transformations/pivot.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/transformations/tOrder.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/multi/transformations/tPandas.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/obj.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/queries/qs.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/scheduler/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/scheduler/jobs.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/scheduler/notifications.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/scheduler/scheduler.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/services.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/template/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/template/parser.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/types/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/types/converters.cpp +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/types/converters.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/types/dt/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/types/dt/filters.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/types/dt/transforms.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/types/py.typed +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/types/typedefs.c +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/types/typedefs.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/types/validators.cpp +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/types/validators.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/utils/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/utils/cache_serialization.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/utils/events.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/utils/fn.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/utils/functions.cpp +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/utils/functions.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/utils/getfunc.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/utils/handlers.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/utils/parseqs.cpp +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/utils/parseqs.pyx +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource/utils/validators.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource.egg-info/dependency_links.txt +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource.egg-info/entry_points.txt +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource.egg-info/not-zip-safe +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource.egg-info/requires.txt +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/querysource.egg-info/top_level.txt +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/run.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/rust/Cargo.lock +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/rust/Cargo.toml +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/rust/pyproject.toml +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/rust/src/arangodb_parser.rs +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/rust/src/bigquery_parser.rs +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/rust/src/cql_parser.rs +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/rust/src/elastic_parser.rs +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/rust/src/filter_common.rs +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/rust/src/flux_parser.rs +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/rust/src/lib.rs +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/rust/src/mongo_parser.rs +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/rust/src/mssql_parser.rs +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/rust/src/parseqs.rs +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/rust/src/pgsql_parser.rs +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/rust/src/rethink_parser.rs +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/rust/src/safe_dict.rs +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/rust/src/soql_parser.rs +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/rust/src/sql_parser.rs +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/rust/src/validators.rs +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/WORKFLOW-parrot.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/WORKFLOW.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/SDD_NAV-6365.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/agent-skill-system.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/agentsflow-persistency.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/agentsflow-persistency.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/changes-analytics.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/compliancereport.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/composite-datasets.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/crew-websearchagent-support.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/dataset-support-agenttalk.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/datasetmanager-datasources.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/datasource-fix.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/episodicstore.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/filesystem-transport.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/finance-research.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/first-time-caching-embedding-model.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/flowtask-interface.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/form-abstraction-layer.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/form-designer-edition.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/formbuilder-database.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/formdesigner-navigator-api-integration.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/google-lyria-music-generation.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/granular-permission.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/integrations-hooks.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/intent-router.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/lightweight-invoke-client-method.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/long-term-memory.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/massive-deliberation.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/massivetoolkit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/monorepo-migration.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/monorepo-migration.proposal.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/nav-7622-sms-analysis-report.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/new-api-bot-creation.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/ontological-graph-rag.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/options-strategies-iron-spreads.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/parrot-formdesigner-renderer-telegram.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/parrot-pipelines-inconsistency.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/planogram-compliance-handler.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/planogram-compliance-modular.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/planogram-composable-type-support.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/planogram-new-types.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/policy-based-access-control.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/pulumi-toolkit-deployment.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/quant-toolkit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/querysource-scheduler.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/scrapingplan-crawlengine.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/scrapingplan-playwrightdriver.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/scrapingplan-webscrapingtoolkit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/scrapinplan-planregistry.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/slack-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/sqlagent-repair.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/tech-improvements.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/telegramcrewtransport.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/tradier-write-toolkit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/ui-agent-management.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/user-based-credentials.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/vectorstore-handler-api.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/proposals/vllm-client.brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/reviews/FEAT-056-review.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/reviews/TASK-002-review.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/reviews/TASK-123-review.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/abstractbot-ask-clientretry.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/adaptive-rag.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/add-description-datasetmanager.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/add-filter-add-dataset.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/add-filter-datasetmanager.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/advisor-ontologic-rag-agent.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/agent-skill-system.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/agentsflow-persistency.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/chatbot-rag-api-integration.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/cli-wizard-setup.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/compliancereport-toolkit.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/component-documentation-api.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/composable-prompt-layer.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/composite-datasets.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/crew-websearchagent-support.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/databasetoolkit.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/dataset-support-agenttalk.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/datasetmanager-datasources.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/datasetmanager-files.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/datasetmanager-sources.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/datasetmanager-tablesource-column-list.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/decoupling-db-bots-botmanager.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/docker-toolkit.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/duplicate-execution-id.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/episodicmemorystore.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/excel-to-postgres.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/exception-migration.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/extending-workingmemorytoolkit.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/filesystem-transport.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/finance-analyst-derivatives-prompts.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/finance-cio-memory-context.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/finance-investment-memo-persistency.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/finance-investment-policy-statement.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/finance-multi-executor-integration.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/finance-paper-trading.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/finance-research-collective-memory.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/first-time-caching-embedding-model.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/form-abstraction-layer.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/form-designer-edition.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/formbuilder-database.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/formdesigner-authentication.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/formdesigner-package-fixes.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/formdesigner-package.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/gendata-component.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/google-lyria-music-generation.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/granular-permission-system.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/graphic-panel-display.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/handoff-tool-for-integrations-agents.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/ibkr-trading-toolkit.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/image-video-understanding-handler.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/integration-user-limit.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/integrations-hooks.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/integrations-matrix-multi.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/intent-router.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/jiratoolkit-defaults.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/lightweight-invoke-client-method.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/localllm-client.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/long-term-memory.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/massive-toolkit.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/massivetoolkit-integration.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/migrate-github-release.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/monorepo-migration.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/msteams-voice-support.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/new-api-bot-creation.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/new-scheduler-decorators.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/odoo-interface.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/ontological-graph-rag.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/openrouter-client.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/options-analytics.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/options-multi-leg-strategies.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/parrot-formdesigner-renderer-telegram.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/parrot-pipelines-inconsistency.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/persistency-videos-generate-reel-videos.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/planogram-compliance-handler.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/planogram-compliance-modular.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/planogram-composable-type-support.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/planogram-new-types.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/podcast-maker.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/policy-based-access-control.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/powerpoint-loader-parsing-images.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/pulumi-toolkit-deployment.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/quant-toolkit.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/querysource-scheduler.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/refactor-episodic-agentcorememory.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/refactor-tools-imports.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/refactor-workingmemorytoolkit.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/rest-api-for-lyria-music.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/rest-api-generate-video-reel.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/runtime-dependency-reduction.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/scraping-playwrightdriver.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/scraping-toolkit.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/scrapingplan-crawlengine.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/scrapingplan-planregistry.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/scrapingtoolkit-handler.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/shelltool-security.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/slack-wrapper-integration.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/sqlagent-repair.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/technical-analysis-improvements.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/telegram-crew-transport.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/telegram-integrations-auth.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/telegram-voice-notes.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/tmerge-cross-function.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/tools-database.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/user-based-credentials.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/vectorstore-handler-api.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/videoreelhandler-upload-images.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/vllm-client.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/specs/whatif-toolkit-decomposition.spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/.index.json +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/active/TASK-009-planogram-type-routing.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/active/TASK-010-cleanup-and-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-001-fix-wrapper-reuse.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-001-music-generation-model.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-002-lyria-music-handler.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-002-uuid-uniqueness-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-003-docstring-parser.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-003-update-schema-helper.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-004-lyria-music-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-004-schema-generator.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-005-documentation-generator.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-005-video-reel-handler.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-006-cli-script.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-006-update-schema-helper-reel.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-007-http-handler.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-007-register-video-reel-handler.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-008-route-registration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-008-video-reel-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-009-date-sequence-rule.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-009-flow-definition-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-010-endnode-implementation.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-010-gendata-component.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-011-action-registry.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-011-gendata-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-012-cel-evaluator.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-012-tmerge-cross-func.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-013-flow-loader.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-013-tmerge-cross-func-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-014-scheduler-config.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-014-svelteflow-adapter.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-015-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-015-scheduler-core.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-016-crew-config-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-016-job-definitions.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-016-voice-transcription-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-017-abstract-transcriber-backend.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-017-agent-card.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-017-notification-callbacks.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-018-crew-registry.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-018-faster-whisper-backend.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-018-querysource-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-019-data-payload.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-019-openai-whisper-backend.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-020-mention-builder.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-020-voice-transcriber-service.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-021-coordinator-bot.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-021-msteams-wrapper-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-022-crew-agent-wrapper.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-022-msteams-config-extension.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-023-crew-transport.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-023-slack-config-model.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-024-package-init.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-024-slack-signature-verification.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-025-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-025-slack-event-deduplication.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-026-filesystem-transport-config.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-026-slack-async-processing.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-027-abstract-transport.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-027-slack-typing-indicator.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-028-agent-registry.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-028-slack-file-handling.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-029-inbox-manager.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-029-slack-socket-mode.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-030-activity-feed.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-030-slack-interactive-handler.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-031-channel-manager.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-031-slack-assistant-handler.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-032-reservation-manager.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-032-shared-security-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-033-base-executor.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-033-filesystem-transport.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-034-base-parser.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-034-filesystem-hook.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-035-cli-overlay.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-035-prowler-config-executor.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-036-package-init-yaml.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-036-prowler-parser.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-037-cloud-posture-toolkit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-037-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-038-scraping-plan-model.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-038-trivy-config-executor.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-039-plan-registry.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-039-trivy-parser.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-040-container-security-toolkit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-040-plan-file-io.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-041-checkov-config-executor.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-041-webscraping-tool-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-042-checkov-parser.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-042-scraping-plan-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-043-secrets-iac-toolkit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-043-url-normalization.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-044-compliance-mapper.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-044-crawl-graph.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-045-crawl-strategies.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-045-report-generator.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-046-compliance-report-toolkit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-046-link-discoverer.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-047-crawl-engine.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-047-security-package-exports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-048-crawl-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-048-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-049-toolkit-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-049-websearchagent-config-component.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-050-agent-type-detection.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-050-driver-context.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-051-json-serialization.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-052-backend-config-passthrough.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-053-websearchagent-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-054-package-init-deprecation.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-054-pulumi-config.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-055-pulumi-executor.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-055-toolkit-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-056-abstract-driver.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-056-pulumi-toolkit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-057-playwright-config.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-057-pulumi-cli-install.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-058-playwright-driver.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-058-pulumi-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-059-permission-data-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-059-selenium-driver.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-060-driver-factory.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-060-permission-resolver.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-061-requires-permission-decorator.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-061-tool-driver-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-062-abstracttool-layer2-enforcement.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-062-driver-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-063-abstracttoolkit-layer1-filtering.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-063-scraping-handler-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-064-scraping-info-handler.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-064-toolmanager-resolver-injection.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-065-jiratoolkit-permissions.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-065-scraping-handler.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-066-permission-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-066-scraping-package-init.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-067-data-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-067-scraping-handler-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-068-adx-indicator.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-069-atr-indicator.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-070-ema-indicator.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-071-signal-engine.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-072-composite-score-tool.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-073-multi-timeframe.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-074-output-restructuring.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-075-unit-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-076-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-077-options-data-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-078-black-scholes-engine.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-079-spread-analyzer.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-080-pmcc-scanner.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-081-options-toolkit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-082-options-unit-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-083-options-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-084-quant-data-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-085-risk-metrics-engine.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-086-correlation-engine.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-087-piotroski-fscore.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-088-volatility-analytics.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-089-stress-testing.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-090-quant-toolkit-main.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-091-quant-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-092-massive-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-093-massive-client.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-094-massive-cache.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-095-massive-toolkit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-096-massive-unit-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-097-massive-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-098-candidate-ticker-model.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-099-enrichment-service.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-100-pipeline-fsm-execution.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-101-analyst-prompts-update.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-102-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-103-lyria-batch-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-104-lyria-batch-method.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-105-rename-generate-music.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-106-update-internal-callers.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-107-lyria-batch-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-108-lyria-batch-example.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-109-research-memory-schemas.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-110-research-memory-abstract.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-111-file-research-memory.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-112-audit-trail-cleanup.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-113-research-memory-tools.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-114-service-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-115-crew-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-116-analyst-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-117-unit-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-118-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-119-user-objects-handler.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-120-agenttalk-refactor.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-121-dataset-request-response-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-122-dataset-manager-handler.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-123-route-registration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-124-dataset-handler-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-125-vllm-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-126-vllm-client.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-127-vllm-registration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-128-vllm-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-129-paper-trading-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-130-virtual-portfolio-engine.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-131-paper-trading-mixin.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-132-alpaca-paper-enhancement.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-133-binance-testnet-enhancement.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-134-ibkr-paper-enhancement.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-135-kraken-demo-enhancement.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-136-execution-report-enhancement.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-137-orchestrator-paper-mode.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-138-paper-trading-exports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-139-paper-trading-unit-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-140-paper-trading-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-141-options-schemas.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-142-alpaca-options-toolkit-base.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-143-strategy-factory.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-144-get-options-chain.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-145-strike-selection-engine.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-146-place-iron-butterfly.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-147-place-iron-condor.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-148-get-options-positions.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-149-close-options-position.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-150-options-toolkit-unit-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-151-cio-options-prompt.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-152-cio-toolset-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-153-risk-analyst-options-tools.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-154-options-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-155-greeks-caching.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-156-position-pnl-tracking.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-157-options-documentation.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-158-memo-store-interface.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-159-file-memo-store.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-160-memo-store-lru-cache.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-161-memo-event-log.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-162-memo-store-unit-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-163-orchestrator-memo-store.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-164-memo-persistence-hook.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-165-event-logging-hook.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-166-memo-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-167-get-recent-memos-tool.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-168-get-memo-detail-tool.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-169-analyst-toolkit-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-170-memo-tools-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-171-cio-memory-dataclasses.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-172-build-cio-context.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-173-sentiment-reversal-detection.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-174-cio-deliberation-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-175-cio-memory-unit-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-176-cio-memory-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-177-schema-enhancements.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-178-ibkr-executor-prompt.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-179-ibkr-executor-agent-factory.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-180-orchestrator-multi-executor.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-181-pm-platform-update.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-182-exports-update.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-183-multi-executor-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-184-macro-derivatives-guidance.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-185-equity-derivatives-guidance.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-186-sentiment-derivatives-guidance.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-187-risk-derivatives-guidance.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-188-analyst-output-schema-options-flag.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-189-derivatives-prompts-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-190-ips-dataclass.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-191-ips-analysts-injection.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-192-ips-cio-secretary-injection.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-193-ips-swarm-threading.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-194-ips-research-runner.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-195-ips-demo-and-sample-yaml.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-196-ips-exports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-197-ips-unit-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-198-scheduler-report-decorators.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-199-scheduler-envvar-helpers.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-200-register-bot-schedules-enhancement.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-201-scheduler-decorators-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-202-macro-analyst-futures-guidance.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-203-equity-analyst-options-guidance.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-204-sentiment-analyst-flow-guidance.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-205-risk-analyst-hedge-guidance.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-206-crypto-analyst-futures-note.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-207-analyst-derivatives-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-208-videoreel-model-changes.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-209-process-scene-reference-image.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-210-generate-video-reel-reference-images.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-211-handler-multipart-upload.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-212-videoreel-upload-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-213-datasource-subpackage-scaffold.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-214-inmemory-source.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-215-queryslug-source.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-216-sql-query-source.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-217-table-source.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-218-dataset-entry-and-info.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-219-datasetmanager-core.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-220-unit-tests-datasources.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-221-integration-tests-datasources.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-222-pure-python-exceptions.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-223-rename-pyi-stub.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-224-remove-cython-extension-setup.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-225-remove-pylint-suppressions.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-226-delete-cython-artifacts.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-227-unit-tests-exceptions.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-228-database-tools-package-exports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-229-database-tools-credential-resolution.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-230-database-tools-vector-cache-tier.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-231-database-tools-bigquery-engine.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-232-database-tools-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-233-docker-config.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-234-docker-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-235-docker-executor.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-236-docker-compose-generator.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-237-docker-toolkit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-238-docker-package-init.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-239-docker-unit-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-240-docker-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-241-config-model-oauth2-fields.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-242-auth-strategy-abstraction.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-243-oauth2-provider-registry.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-244-oauth2-auth-strategy.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-245-wrapper-auth-delegation.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-246-oauth2-callback-endpoint.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-247-unit-tests-auth-strategies.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-248-integration-tests-oauth2-flow.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-249-msteams-config-whitelist.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-250-msteams-wrapper-authorization.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-251-slack-config-user-whitelist.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-252-slack-wrapper-user-authorization.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-253-whitelist-unit-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-254-whitelist-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-255-security-data-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-256-security-policy.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-257-command-sanitizer.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-258-secure-shell-mixin.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-259-shelltool-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-260-permissive-rm-rule.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-261-security-comprehensive-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-262-shared-voice-transcriber.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-263-msteams-voice-backward-compat.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-264-telegram-voice-config.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-265-telegram-voice-handler.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-266-voice-transcriber-unit-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-267-telegram-voice-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-268-core-package-init.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-269-move-hooks-to-core.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-270-move-eventbus-to-core.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-271-update-autonomous-imports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-272-hookmanager-eventbus-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-273-hookable-agent-mixin.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-274-core-hooks-unit-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-275-wizard-data-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-276-base-client-wizard.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-277-provider-wizards.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-278-scaffolding-module.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-279-code-templates.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-280-setup-cli-command.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-281-unit-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-282-conf-feature-flags.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-283-botmanager-init-flags.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-284-load-bots-gating.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-285-on-startup-gating.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-286-setup-swagger-flag.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-287-update-app-py.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-288-unit-tests-botmanager-flags.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-289-model-storage-fields.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-290-pipeline-filemanager-init.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-291-scene-processing-filemanager.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-292-music-generation-filemanager.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-293-assembly-hybrid-storage.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-294-handler-storage-config.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-295-storage-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-296-crew-config-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-297-mention-utilities.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-298-crew-registry.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-299-coordinator-bot.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-300-crew-agent-wrapper.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-301-crew-transport.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-302-crew-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-303-example-and-documentation.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-304-episodic-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-305-pgvector-backend.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-306-faiss-backend.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-307-embedding-reflection.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-308-redis-cache.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-309-episodic-store.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-310-episodic-tools.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-311-episodic-mixin.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-312-episodic-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-324-chat-integration-state.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-325-prompt-layer-dataclass.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-326-prompt-builder.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-327-presets-registry.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-328-domain-layers.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-329-abstractbot-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-330-voicebot-migration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-331-pandasagent-migration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-332-yaml-botmanager-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-333-prompts-package-init.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-334-unit-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-335-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-336-planogram-handler-core.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-337-planogram-handler-registration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-338-planogram-handler-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-339-abstract-planogram-type.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-340-planogram-config-type-field.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-341-product-on-shelves-composable.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-342-planogram-compliance-refactor.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-343-handler-hydration-and-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-344-planogram-modular-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-345-naming-utilities.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-346-registry-access-cleanup.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-347-name-normalization-handler.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-348-vector-store-provisioning.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-349-apply-filter-helper.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-349-queryslugsource-permanent-filter.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-350-tablesource-permanent-filter.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-351-datasetmanager-permanent-filter-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-352-jiratoolkit-config-defaults.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-353-jiratoolkit-create-issue-defaults.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-354-jiratoolkit-defaults-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-355-ontology-conf-variables.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-356-ontology-exceptions.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-357-extract-datasource-abc.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-358-extract-datasource-impls.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-359-datasource-factory.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-360-ontology-schema-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-361-ontology-parser.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-362-ontology-merger.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-363-ontology-graph-store.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-364-aql-validator.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-365-relation-discovery.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-366-intent-resolver.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-367-tenant-manager.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-368-cache-helpers.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-369-ontology-mixin.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-370-refresh-pipeline.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-371-default-ontology-yamls.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-372-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-373-embedding-registry-config.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-374-embedding-registry-core.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-375-embedding-registry-exports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-376-abstractstore-registry-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-377-kbstore-registry-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-378-bot-warmup-registry-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-379-embeddingmodel-base-registry-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-380-unified-memory-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-381-context-assembler.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-382-unified-memory-manager.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-383-long-term-memory-mixin.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-384-unified-package-exports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-385-bot-integration-hooks.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-386-lazy-import-utility.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-387-pyproject-restructure.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-388-clients-lazy-imports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-389-db-tools-lazy-imports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-390-handlers-lazy-imports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-391-pdf-ocr-lazy-imports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-392-ml-embeddings-lazy-imports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-393-finance-tools-lazy-imports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-394-flowtask-isolation.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-395-audio-voice-lazy-imports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-396-bot-db-lazy-imports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-397-validation-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-398-workspace-scaffolding.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-399-import-proxy-tools.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-400-import-proxy-loaders.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-401-tool-discovery-system.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-402-tools-package-setup.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-403-tools-migration-batch1.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-404-tools-migration-batch2.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-405-tools-migration-batch3.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-406-loaders-migration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-407-registry-generation-script.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-408-cleanup-ci.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-409-monorepo-tests-validation.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-410-release-build-core.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-411-release-build-pure-python.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-412-release-deploy-job.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-413-release-validation.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-414-release-documentation.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-415-dataset-entry-description-field.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-416-registration-methods-description.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-417-get-datasets-summary.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-418-surface-description-metadata-guide.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-419-dataset-description-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-420-iceberg-source.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-421-mongo-source.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-422-deltatable-source.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-423-registration-methods.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-424-source-exports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-425-new-sources-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-426-tablesource-allowed-columns-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-427-computed-columns-foundation.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-427-dbtoolkit-base-types.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-428-datasetentry-computed-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-428-dbtoolkit-source-registry.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-429-add-methods-computed-columns.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-429-dbtoolkit-sql-sources-core.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-430-dbtoolkit-sql-sources-extended.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-430-llm-runtime-computed-columns.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-431-composite-datasource.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-431-dbtoolkit-mssql-source.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-432-.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-432-add-composite-dataset.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-432-dbtoolkit-mongo-source.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-433-.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-433-datasetinfo-guide-fetch-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-433-dbtoolkit-documentdb-atlas.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-434-.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-434-dbtoolkit-influx-elastic.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-434-handoff-tool.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-434-step-executor.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-435-dbtoolkit-toolkit-tools.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-435-orchestrator-pause-resume.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-435-plan-generator.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-436-dbtoolkit-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-436-toolkit-core.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-437-credential-data-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-437-filter-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-438-credential-encryption-helpers.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-438-odoo-config-variables.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-439-credentials-handler.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-439-odoo-core-interface.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-440-credential-routes.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-440-odoo-crud-methods.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-441-credential-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-441-odoo-export-registration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-442-odoo-unit-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-443-tablesource-allowed-columns-param.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-444-tablesource-sql-column-validation.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-445-datasetmanager-allowed-columns-passthrough.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-446-tablesource-allowed-columns-unit-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-447-extract-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-448-extract-internals.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-449-toolkit-real-imports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-450-package-init.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-451-relocate-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-452-whatif-toolkit-scaffold.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-453-describe-scenario-tool.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-454-add-actions-set-constraints.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-455-simulate-tool.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-456-quick-impact-tool.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-457-compare-scenarios-sysprompt.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-458-backward-compat-registry.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-459-sensitivity-analysis-tool.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-460-montecarlo-simulation-tool.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-461-statistical-tests-tool.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-462-regression-analysis-tool.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-463-breakeven-analysis-tool.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-464-integration-tests-e2e.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-465-understanding-request-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-466-understanding-handler.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-467-understanding-route-registration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-468-understanding-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-469-base-client-fallback-interface.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-470-google-fallback-standardization.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-471-anthropic-client-fallback.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-472-openai-client-fallback.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-473-remove-bot-retry-loops.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-474-client-fallback-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-475-excel-structure-analysis-engine.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-476-excel-intelligence-toolkit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-477-datasetmanager-file-loading.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-478-csv-markdown-conversion.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-479-datasetmanager-files-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-480-invoke-result-and-error.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-481-abstractclient-invoke-infrastructure.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-482-anthropic-invoke.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-483-openai-invoke.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-484-google-invoke.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-485-groq-invoke.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-486-grok-invoke.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-487-localllm-invoke.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-488-invoke-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-489-routing-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-490-capability-registry.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-491-intent-router-mixin.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-492-abstractbot-touchpoint.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-493-auto-registration-hooks.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-494-ontology-resolver-demotion.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-495-intent-router-unit-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-496-intent-router-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-497-gorilla-scraper.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-498-catalog-loader.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-499-gorilla-advisor-agent.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-500-configure-auto-enable-vector-store.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-501-fix-registry-vector-store-propagation.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-502-integration-test-rag-api.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-503-entry-type-enum-and-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-504-extend-working-memory-catalog.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-505-generic-tool-methods.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-506-answer-memory-bridge.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-507-basicagent-auto-injection.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-508-package-exports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-509-comprehensive-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-510-importance-scorer.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-511-recall-strategy-bm25.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-512-redis-vector-backend.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-513-pgvector-hybrid-search.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-514-cross-domain-router.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-515-store-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-516-unified-manager-routing.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-517-delete-corepy.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-518-schema-core-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-519-form-validators.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-520-pydantic-extractor.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-521-tool-extractor.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-522-yaml-extractor.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-523-jsonschema-extractor.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-524-adaptive-card-renderer.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-525-html5-renderer.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-526-jsonschema-renderer.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-527-form-registry.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-528-form-cache.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-529-postgres-form-storage.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-530-request-form-tool.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-531-create-form-tool.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-532-msteams-integration-rewrite.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-533-remove-legacy-dialogs.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-534-navigator-auth-upstream.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-535-pbac-setup.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-536-pbac-permission-resolver.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-537-agent-access-guard.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-538-tool-filtering.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-539-dataset-filtering.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-540-mcp-filtering.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-541-app-startup.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-542-default-policies.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-543-pbac-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-544-database-form-tool.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-545-package-exports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-546-example-ui-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-547-database-form-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-548-formdesigner-package-scaffold.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-549-formdesigner-extractors.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-550-formdesigner-renderers.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-551-formdesigner-services.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-552-formdesigner-tools.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-553-formdesigner-handlers.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-554-formdesigner-exports-shim.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-555-formdesigner-consumers-examples.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-556-fix-cache-redis-datetime.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-557-fix-phantom-attributes-dead-code.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-558-fix-xss-vulnerabilities.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-559-add-api-authentication.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-560-fix-tool-layer-issues.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-561-fix-handler-robustness-service-hardening.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-562-telegram-form-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-563-telegram-renderer.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-564-telegram-form-router.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-565-telegram-webapp-handler.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-566-telegram-package-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-567-telegram-renderer-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-568-cache-manager.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-569-database-toolkit-base.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-570-sql-toolkit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-571-postgres-toolkit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-572-bigquery-toolkit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-573-influxdb-toolkit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-574-elastic-toolkit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-575-documentdb-toolkit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-576-extended-router.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-577-extended-retry-handler.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-578-database-agent.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-579-cleanup-migration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-580-formapi-auth-cleanup.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-581-route-auth-wrappers.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-582-formdesigner-auth-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-592-product-counter-type.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-593-endcap-no-shelves-type.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-594-registration-exports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-595-example-config-scripts.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-596-unit-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-597-auth-config-models.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-598-submitaction-auth-extension.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-599-form-submission-storage.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-600-submission-forwarder.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-601-edit-endpoints-put-patch.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-602-submission-endpoint.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-603-route-registration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-604-package-exports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-605-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-606-config-and-package-init.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-607-vectorstore-helper.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-608-handler-skeleton-store-cache.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-609-post-create-collection.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-610-patch-search-test.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-611-put-data-loading.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-612-route-registration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-613-skill-definition-model.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-614-skill-file-registry.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-615-skill-trigger-middleware.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-616-mixin-prompt-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-617-learned-skill-persistence-tool.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-618-skill-system-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-619-fix-critical-broken-imports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-620-fix-base-executor-imports.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-621-fix-docstring-import-references.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-622-full-import-sweep-audit.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/completed/TASK-623-import-validation-test-suite.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/done/TASK-583-grid-models-package.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/done/TASK-584-abstract-grid-strategy.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/done/TASK-585-horizontal-bands-strategy.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/done/TASK-586-cell-result-merger.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/done/TASK-587-grid-detector.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/done/TASK-588-config-model-extensions.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/done/TASK-589-abstract-type-grid-integration.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/done/TASK-590-product-on-shelves-refactor.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/tasks/done/TASK-591-integration-tests.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/templates/brainstorm.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/templates/proposal.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/templates/spec.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/sdd/templates/task.md +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/setup.cfg +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/setup.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/static/notebook/bundle.js +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/templates/__init__.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/templates/base.html +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/templates/default.html +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/templates/default_table.html +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/templates/fontlist-v330.json +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/templates/fontlist-v390.json +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/templates/table_charts.html +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/tests/test_api.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/tests/test_arangodb_parser.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/tests/test_column_filters.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/tests/test_elastic_parser.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/tests/test_eval.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/tests/test_join_with_column_filter.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/tests/test_rss.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/tests/test_rust_parsers.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/tests/test_scheduler_core.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/tests/test_scheduler_integration.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/tests/test_scheduler_jobs.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/tests/test_scheduler_notifications.py +0 -0
- {querysource-4.1.2 → querysource-4.1.3}/tox.ini +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '4.1.
|
|
22
|
-
__version_tuple__ = version_tuple = (4, 1,
|
|
21
|
+
__version__ = version = '4.1.4.dev0+g3b71f7144.d20260408'
|
|
22
|
+
__version_tuple__ = version_tuple = (4, 1, 4, 'dev0', 'g3b71f7144.d20260408')
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g3b71f7144'
|
|
@@ -6,6 +6,7 @@ from ....exceptions import (
|
|
|
6
6
|
DriverError,
|
|
7
7
|
QueryException
|
|
8
8
|
)
|
|
9
|
+
from ....types.dt.filters import create_filter
|
|
9
10
|
from .abstract import AbstractOperator
|
|
10
11
|
|
|
11
12
|
|
|
@@ -16,6 +17,14 @@ class Join(AbstractOperator):
|
|
|
16
17
|
self._left = kwargs.pop('left', None)
|
|
17
18
|
# Right Operator
|
|
18
19
|
self._right = kwargs.pop('right', None)
|
|
20
|
+
# Join Conditions (column-to-column comparisons applied after merge)
|
|
21
|
+
self._join_conditions = kwargs.pop('join_conditions', None)
|
|
22
|
+
|
|
23
|
+
# Convert 'on' to 'using' for backward compatibility
|
|
24
|
+
# (allows JSON: "on": "user_id" to work)
|
|
25
|
+
if 'on' in kwargs:
|
|
26
|
+
kwargs['using'] = kwargs.pop('on')
|
|
27
|
+
|
|
19
28
|
super(Join, self).__init__(data, **kwargs)
|
|
20
29
|
self.data = data
|
|
21
30
|
|
|
@@ -113,6 +122,79 @@ class Join(AbstractOperator):
|
|
|
113
122
|
f"Unknown JOIN error {err!s}"
|
|
114
123
|
) from err
|
|
115
124
|
|
|
125
|
+
def _apply_join_conditions(self, df: DataFrame) -> DataFrame:
|
|
126
|
+
"""Apply join conditions (column-to-column filters) to merged DataFrame.
|
|
127
|
+
|
|
128
|
+
Reuses the filter expression builder from filters module.
|
|
129
|
+
Join conditions are semantically part of the join, applied immediately
|
|
130
|
+
after the merge.
|
|
131
|
+
|
|
132
|
+
Args:
|
|
133
|
+
df: The merged DataFrame
|
|
134
|
+
|
|
135
|
+
Returns:
|
|
136
|
+
Filtered DataFrame with join conditions applied
|
|
137
|
+
|
|
138
|
+
Raises:
|
|
139
|
+
QueryException: If a column doesn't exist or condition is invalid
|
|
140
|
+
"""
|
|
141
|
+
if not self._join_conditions:
|
|
142
|
+
return df
|
|
143
|
+
|
|
144
|
+
try:
|
|
145
|
+
# Convert join_conditions to filter format expected by create_filter
|
|
146
|
+
# join_conditions format: [{"left": col_a, "expression": ">=", "right": col_b}, ...]
|
|
147
|
+
# create_filter format: [{"column": col, "expression": ">=", "value": {"$column": col_b}}, ...]
|
|
148
|
+
|
|
149
|
+
filter_specs = []
|
|
150
|
+
for condition in self._join_conditions:
|
|
151
|
+
left_col = condition.get('left')
|
|
152
|
+
expression = condition.get('expression', '==')
|
|
153
|
+
right_col = condition.get('right')
|
|
154
|
+
|
|
155
|
+
if not left_col or not right_col:
|
|
156
|
+
raise QueryException(
|
|
157
|
+
"Join condition must have 'left', 'expression', and 'right' fields"
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
# Transform to Filter format
|
|
161
|
+
filter_specs.append({
|
|
162
|
+
'column': left_col,
|
|
163
|
+
'expression': expression,
|
|
164
|
+
'value': {'$column': right_col}
|
|
165
|
+
})
|
|
166
|
+
|
|
167
|
+
# Use create_filter to build the conditions
|
|
168
|
+
conditions = create_filter(filter_specs, df)
|
|
169
|
+
|
|
170
|
+
# Apply conditions with AND logic
|
|
171
|
+
condition_str = " & ".join(conditions)
|
|
172
|
+
df_filtered = df.loc[eval(condition_str)]
|
|
173
|
+
|
|
174
|
+
if df_filtered is None:
|
|
175
|
+
raise DataNotFound(
|
|
176
|
+
"Error applying join conditions"
|
|
177
|
+
)
|
|
178
|
+
|
|
179
|
+
# Note: empty DataFrame after conditions is valid, not an error
|
|
180
|
+
# (a valid join might produce no rows based on the conditions)
|
|
181
|
+
|
|
182
|
+
logging.debug(
|
|
183
|
+
f"Applied {len(self._join_conditions)} join condition(s), "
|
|
184
|
+
f"result: {len(df_filtered)} rows"
|
|
185
|
+
)
|
|
186
|
+
|
|
187
|
+
return df_filtered
|
|
188
|
+
|
|
189
|
+
except DataNotFound:
|
|
190
|
+
raise
|
|
191
|
+
except QueryException:
|
|
192
|
+
raise
|
|
193
|
+
except Exception as err:
|
|
194
|
+
raise QueryException(
|
|
195
|
+
f"Error applying join conditions: {err!s}"
|
|
196
|
+
) from err
|
|
197
|
+
|
|
116
198
|
def _join(self, df1: DataFrame, df2: DataFrame, **kwargs):
|
|
117
199
|
try:
|
|
118
200
|
df = self._pd.merge(
|
|
@@ -140,5 +222,12 @@ class Join(AbstractOperator):
|
|
|
140
222
|
inplace=True
|
|
141
223
|
)
|
|
142
224
|
df.reset_index(drop=True)
|
|
143
|
-
|
|
225
|
+
|
|
226
|
+
# Apply join conditions if provided
|
|
227
|
+
if self._join_conditions:
|
|
228
|
+
df = self._apply_join_conditions(df)
|
|
229
|
+
|
|
230
|
+
# Print info only if DataFrame has data (avoid IndexError on empty frames)
|
|
231
|
+
if not df.empty:
|
|
232
|
+
self._print_info(df)
|
|
144
233
|
return df
|
|
@@ -6,7 +6,7 @@ __description__ = (
|
|
|
6
6
|
'QuerySource Query parser and generator.'
|
|
7
7
|
'Supports SQL, NoSQL, MongoDB, Cassandra, Elasticsearch, etc.'
|
|
8
8
|
)
|
|
9
|
-
__version__ = '4.1.
|
|
9
|
+
__version__ = '4.1.3'
|
|
10
10
|
__url__ = 'https://github.com/phenobarbital/querysource'
|
|
11
11
|
__copyright__ = 'Copyright (c) 2018-2025 Jesus Lara'
|
|
12
12
|
__author__ = 'Jesus Lara'
|
|
@@ -1261,6 +1261,7 @@ tests/test_arangodb_parser.py
|
|
|
1261
1261
|
tests/test_column_filters.py
|
|
1262
1262
|
tests/test_elastic_parser.py
|
|
1263
1263
|
tests/test_eval.py
|
|
1264
|
+
tests/test_join_conditions.py
|
|
1264
1265
|
tests/test_join_with_column_filter.py
|
|
1265
1266
|
tests/test_rss.py
|
|
1266
1267
|
tests/test_rust_parsers.py
|
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
"""Unit tests for Join operator with join_conditions."""
|
|
2
|
+
import pandas as pd
|
|
3
|
+
import pytest
|
|
4
|
+
from querysource.queries.multi.operators.Join import Join
|
|
5
|
+
from querysource.exceptions import QueryException, DataNotFound
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class TestJoinWithJoinConditions:
|
|
9
|
+
"""Test suite for join_conditions feature in Join operator."""
|
|
10
|
+
|
|
11
|
+
def setup_method(self):
|
|
12
|
+
"""Setup test DataFrames."""
|
|
13
|
+
self.calls_df = pd.DataFrame({
|
|
14
|
+
'id_llamada': [1, 2, 3, 4],
|
|
15
|
+
'usuario_id': [100, 101, 100, 102],
|
|
16
|
+
'call_date': pd.to_datetime([
|
|
17
|
+
'2024-01-15', '2024-01-20', '2024-02-01', '2024-02-10'
|
|
18
|
+
]),
|
|
19
|
+
'call_duration': [45, 30, 60, 25],
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
self.podcasts_df = pd.DataFrame({
|
|
23
|
+
'id_podcast': [200, 201, 202, 203],
|
|
24
|
+
'usuario_id': [100, 101, 100, 102],
|
|
25
|
+
'podcast_date': pd.to_datetime([
|
|
26
|
+
'2024-01-10', '2024-01-25', '2024-02-02', '2024-02-05'
|
|
27
|
+
]),
|
|
28
|
+
'podcast_duration': [90, 45, 60, 120],
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
def test_join_with_single_condition(self):
|
|
32
|
+
"""Test join with a single join_condition."""
|
|
33
|
+
# Join: calls x podcasts on user_id
|
|
34
|
+
# WHERE: call_date >= podcast_date
|
|
35
|
+
|
|
36
|
+
join_op = Join(
|
|
37
|
+
data={
|
|
38
|
+
'calls': self.calls_df.copy(),
|
|
39
|
+
'podcasts': self.podcasts_df.copy()
|
|
40
|
+
},
|
|
41
|
+
left='calls',
|
|
42
|
+
right='podcasts',
|
|
43
|
+
on='usuario_id',
|
|
44
|
+
type='inner',
|
|
45
|
+
join_conditions=[
|
|
46
|
+
{
|
|
47
|
+
'left': 'call_date',
|
|
48
|
+
'expression': '>=',
|
|
49
|
+
'right': 'podcast_date'
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
result = join_op.data
|
|
55
|
+
import asyncio
|
|
56
|
+
output = asyncio.run(join_op.run())
|
|
57
|
+
|
|
58
|
+
# Get the merged dataframe
|
|
59
|
+
df = list(output.values())[0] if isinstance(output, dict) else output
|
|
60
|
+
|
|
61
|
+
# All rows should have call_date >= podcast_date
|
|
62
|
+
for _, row in df.iterrows():
|
|
63
|
+
assert row['call_date'] >= row['podcast_date']
|
|
64
|
+
|
|
65
|
+
def test_join_with_multiple_conditions(self):
|
|
66
|
+
"""Test join with multiple join_conditions (AND logic)."""
|
|
67
|
+
join_op = Join(
|
|
68
|
+
data={
|
|
69
|
+
'calls': self.calls_df.copy(),
|
|
70
|
+
'podcasts': self.podcasts_df.copy()
|
|
71
|
+
},
|
|
72
|
+
left='calls',
|
|
73
|
+
right='podcasts',
|
|
74
|
+
on='usuario_id',
|
|
75
|
+
type='inner',
|
|
76
|
+
join_conditions=[
|
|
77
|
+
{
|
|
78
|
+
'left': 'call_date',
|
|
79
|
+
'expression': '>=',
|
|
80
|
+
'right': 'podcast_date'
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
'left': 'call_duration',
|
|
84
|
+
'expression': '<',
|
|
85
|
+
'right': 'podcast_duration'
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
import asyncio
|
|
91
|
+
output = asyncio.run(join_op.run())
|
|
92
|
+
df = list(output.values())[0] if isinstance(output, dict) else output
|
|
93
|
+
|
|
94
|
+
# All rows should satisfy BOTH conditions
|
|
95
|
+
for _, row in df.iterrows():
|
|
96
|
+
assert row['call_date'] >= row['podcast_date']
|
|
97
|
+
assert row['call_duration'] < row['podcast_duration']
|
|
98
|
+
|
|
99
|
+
def test_join_conditions_reduce_result_set(self):
|
|
100
|
+
"""Test that join_conditions reduce the result size."""
|
|
101
|
+
# Without conditions
|
|
102
|
+
join_op_no_cond = Join(
|
|
103
|
+
data={
|
|
104
|
+
'calls': self.calls_df.copy(),
|
|
105
|
+
'podcasts': self.podcasts_df.copy()
|
|
106
|
+
},
|
|
107
|
+
left='calls',
|
|
108
|
+
right='podcasts',
|
|
109
|
+
on='usuario_id',
|
|
110
|
+
type='inner'
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
import asyncio
|
|
114
|
+
output_no_cond = asyncio.run(join_op_no_cond.run())
|
|
115
|
+
df_no_cond = list(output_no_cond.values())[0] if isinstance(output_no_cond, dict) else output_no_cond
|
|
116
|
+
rows_without_conditions = len(df_no_cond)
|
|
117
|
+
|
|
118
|
+
# With conditions
|
|
119
|
+
join_op_with_cond = Join(
|
|
120
|
+
data={
|
|
121
|
+
'calls': self.calls_df.copy(),
|
|
122
|
+
'podcasts': self.podcasts_df.copy()
|
|
123
|
+
},
|
|
124
|
+
left='calls',
|
|
125
|
+
right='podcasts',
|
|
126
|
+
on='usuario_id',
|
|
127
|
+
type='inner',
|
|
128
|
+
join_conditions=[
|
|
129
|
+
{
|
|
130
|
+
'left': 'call_date',
|
|
131
|
+
'expression': '>=',
|
|
132
|
+
'right': 'podcast_date'
|
|
133
|
+
}
|
|
134
|
+
]
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
output_with_cond = asyncio.run(join_op_with_cond.run())
|
|
138
|
+
df_with_cond = list(output_with_cond.values())[0] if isinstance(output_with_cond, dict) else output_with_cond
|
|
139
|
+
rows_with_conditions = len(df_with_cond)
|
|
140
|
+
|
|
141
|
+
# Conditions should reduce or equal the result set
|
|
142
|
+
assert rows_with_conditions <= rows_without_conditions
|
|
143
|
+
|
|
144
|
+
def test_join_conditions_all_operators(self):
|
|
145
|
+
"""Test join_conditions with all comparison operators."""
|
|
146
|
+
operators = ['<', '<=', '>', '>=', '==', '!=']
|
|
147
|
+
|
|
148
|
+
for op in operators:
|
|
149
|
+
join_op = Join(
|
|
150
|
+
data={
|
|
151
|
+
'calls': self.calls_df.copy(),
|
|
152
|
+
'podcasts': self.podcasts_df.copy()
|
|
153
|
+
},
|
|
154
|
+
left='calls',
|
|
155
|
+
right='podcasts',
|
|
156
|
+
on='usuario_id',
|
|
157
|
+
type='inner',
|
|
158
|
+
join_conditions=[
|
|
159
|
+
{
|
|
160
|
+
'left': 'call_duration',
|
|
161
|
+
'expression': op,
|
|
162
|
+
'right': 'podcast_duration'
|
|
163
|
+
}
|
|
164
|
+
]
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
import asyncio
|
|
168
|
+
output = asyncio.run(join_op.run())
|
|
169
|
+
|
|
170
|
+
# Should not crash and return a DataFrame
|
|
171
|
+
assert output is not None
|
|
172
|
+
|
|
173
|
+
def test_join_without_conditions_unchanged(self):
|
|
174
|
+
"""Test that join without conditions works as before."""
|
|
175
|
+
join_op = Join(
|
|
176
|
+
data={
|
|
177
|
+
'calls': self.calls_df.copy(),
|
|
178
|
+
'podcasts': self.podcasts_df.copy()
|
|
179
|
+
},
|
|
180
|
+
left='calls',
|
|
181
|
+
right='podcasts',
|
|
182
|
+
on='usuario_id',
|
|
183
|
+
type='inner'
|
|
184
|
+
# No join_conditions specified
|
|
185
|
+
)
|
|
186
|
+
|
|
187
|
+
import asyncio
|
|
188
|
+
output = asyncio.run(join_op.run())
|
|
189
|
+
|
|
190
|
+
# Should return result without filtering
|
|
191
|
+
assert output is not None
|
|
192
|
+
|
|
193
|
+
def test_join_condition_nonexistent_column(self):
|
|
194
|
+
"""Test that join_conditions validate column existence."""
|
|
195
|
+
join_op = Join(
|
|
196
|
+
data={
|
|
197
|
+
'calls': self.calls_df.copy(),
|
|
198
|
+
'podcasts': self.podcasts_df.copy()
|
|
199
|
+
},
|
|
200
|
+
left='calls',
|
|
201
|
+
right='podcasts',
|
|
202
|
+
on='usuario_id',
|
|
203
|
+
type='inner',
|
|
204
|
+
join_conditions=[
|
|
205
|
+
{
|
|
206
|
+
'left': 'nonexistent_column',
|
|
207
|
+
'expression': '>=',
|
|
208
|
+
'right': 'podcast_date'
|
|
209
|
+
}
|
|
210
|
+
]
|
|
211
|
+
)
|
|
212
|
+
|
|
213
|
+
import asyncio
|
|
214
|
+
with pytest.raises(QueryException):
|
|
215
|
+
asyncio.run(join_op.run())
|
|
216
|
+
|
|
217
|
+
def test_join_condition_missing_fields(self):
|
|
218
|
+
"""Test that join_conditions require left, expression, and right."""
|
|
219
|
+
join_op = Join(
|
|
220
|
+
data={
|
|
221
|
+
'calls': self.calls_df.copy(),
|
|
222
|
+
'podcasts': self.podcasts_df.copy()
|
|
223
|
+
},
|
|
224
|
+
left='calls',
|
|
225
|
+
right='podcasts',
|
|
226
|
+
on='usuario_id',
|
|
227
|
+
type='inner',
|
|
228
|
+
join_conditions=[
|
|
229
|
+
{
|
|
230
|
+
'left': 'call_date',
|
|
231
|
+
# Missing 'expression' and 'right'
|
|
232
|
+
}
|
|
233
|
+
]
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
import asyncio
|
|
237
|
+
with pytest.raises(QueryException):
|
|
238
|
+
asyncio.run(join_op.run())
|
|
239
|
+
|
|
240
|
+
def test_join_conditions_semantic_clarity(self):
|
|
241
|
+
"""Test that join_conditions document the intent clearly."""
|
|
242
|
+
# This is more of a documentation test
|
|
243
|
+
# The intent is clear: join conditions are PART OF the join, not post-filtering
|
|
244
|
+
|
|
245
|
+
join_config = {
|
|
246
|
+
'left': 'calls',
|
|
247
|
+
'right': 'podcasts',
|
|
248
|
+
'on': 'usuario_id',
|
|
249
|
+
'join_conditions': [
|
|
250
|
+
{
|
|
251
|
+
'left': 'call_date',
|
|
252
|
+
'expression': '>=',
|
|
253
|
+
'right': 'podcast_date'
|
|
254
|
+
}
|
|
255
|
+
]
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
# The intent is crystal clear:
|
|
259
|
+
# "Join calls and podcasts on user_id WHERE call_date >= podcast_date"
|
|
260
|
+
assert 'join_conditions' in join_config
|
|
261
|
+
assert join_config['join_conditions'][0]['expression'] == '>='
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
class TestJoinConditionsVsFilter:
|
|
265
|
+
"""Compare join_conditions vs separate Filter operator."""
|
|
266
|
+
|
|
267
|
+
def setup_method(self):
|
|
268
|
+
"""Setup test data."""
|
|
269
|
+
self.df1 = pd.DataFrame({
|
|
270
|
+
'id': [1, 2, 3],
|
|
271
|
+
'key': ['a', 'b', 'a'],
|
|
272
|
+
'val1': [10, 20, 30],
|
|
273
|
+
})
|
|
274
|
+
|
|
275
|
+
self.df2 = pd.DataFrame({
|
|
276
|
+
'key': ['a', 'b', 'a'],
|
|
277
|
+
'val2': [5, 15, 25],
|
|
278
|
+
})
|
|
279
|
+
|
|
280
|
+
def test_join_conditions_semantic_equivalence(self):
|
|
281
|
+
"""Test that join_conditions produce same result as Join + Filter.
|
|
282
|
+
|
|
283
|
+
Note: Both should produce identical results, but join_conditions
|
|
284
|
+
communicate intent more clearly.
|
|
285
|
+
"""
|
|
286
|
+
# Using join_conditions
|
|
287
|
+
join_op = Join(
|
|
288
|
+
data={
|
|
289
|
+
'table1': self.df1.copy(),
|
|
290
|
+
'table2': self.df2.copy()
|
|
291
|
+
},
|
|
292
|
+
left='table1',
|
|
293
|
+
right='table2',
|
|
294
|
+
on='key',
|
|
295
|
+
type='inner',
|
|
296
|
+
join_conditions=[
|
|
297
|
+
{
|
|
298
|
+
'left': 'val1',
|
|
299
|
+
'expression': '>',
|
|
300
|
+
'right': 'val2'
|
|
301
|
+
}
|
|
302
|
+
]
|
|
303
|
+
)
|
|
304
|
+
|
|
305
|
+
import asyncio
|
|
306
|
+
output = asyncio.run(join_op.run())
|
|
307
|
+
df_with_conditions = list(output.values())[0] if isinstance(output, dict) else output
|
|
308
|
+
|
|
309
|
+
# Both approaches should produce result where val1 > val2
|
|
310
|
+
for _, row in df_with_conditions.iterrows():
|
|
311
|
+
assert row['val1'] > row['val2']
|
|
312
|
+
|
|
313
|
+
def test_join_conditions_range_check(self):
|
|
314
|
+
"""Test range checking with multiple join_conditions."""
|
|
315
|
+
df_ranges = pd.DataFrame({
|
|
316
|
+
'id': [1, 2, 3, 4],
|
|
317
|
+
'value': [15, 25, 35, 45],
|
|
318
|
+
'min_allowed': [10, 20, 30, 40],
|
|
319
|
+
'max_allowed': [20, 30, 40, 50],
|
|
320
|
+
})
|
|
321
|
+
|
|
322
|
+
join_op = Join(
|
|
323
|
+
data={
|
|
324
|
+
'data': df_ranges.copy(),
|
|
325
|
+
'dummy': pd.DataFrame({'id': [1]}), # Dummy for join
|
|
326
|
+
},
|
|
327
|
+
left='data',
|
|
328
|
+
right='dummy',
|
|
329
|
+
on='id',
|
|
330
|
+
type='inner',
|
|
331
|
+
join_conditions=[
|
|
332
|
+
{
|
|
333
|
+
'left': 'value',
|
|
334
|
+
'expression': '>=',
|
|
335
|
+
'right': 'min_allowed'
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
'left': 'value',
|
|
339
|
+
'expression': '<=',
|
|
340
|
+
'right': 'max_allowed'
|
|
341
|
+
}
|
|
342
|
+
]
|
|
343
|
+
)
|
|
344
|
+
|
|
345
|
+
import asyncio
|
|
346
|
+
output = asyncio.run(join_op.run())
|
|
347
|
+
df = list(output.values())[0] if isinstance(output, dict) else output
|
|
348
|
+
|
|
349
|
+
# All values should be within range
|
|
350
|
+
for _, row in df.iterrows():
|
|
351
|
+
assert row['min_allowed'] <= row['value'] <= row['max_allowed']
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|