Skip to content

Releases: calvinchengx/data-agent-service

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 25 Aug 01:07

Images

docker pull ghcr.io/calvinchengx/data-agent-service/executor-py:0.3.0
docker pull ghcr.io/calvinchengx/data-agent-service/executor-go:0.3.0

Both answer the same contract (services/contract/openapi.json).
Choose with DAS_EXECUTOR=py|go; see docs/adr/0001-two-executors.md.

What's Changed

  • Bump astro from 7.2.1 to 7.2.4 in the docs-site group by @dependabot[bot] in #5
  • A family footer: the other ten documentation sites. by @calvinchengx in #6

New Contributors

Full Changelog: v0.2.0...v0.3.0

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 23 Aug 11:07

Images

docker pull ghcr.io/calvinchengx/data-agent-service/executor-py:0.2.0
docker pull ghcr.io/calvinchengx/data-agent-service/executor-go:0.2.0

Both answer the same contract (services/contract/openapi.json).
Choose with DAS_EXECUTOR=py|go; see docs/adr/0001-two-executors.md.

What's Changed

  • Bump the actions group with 2 updates by @dependabot[bot] in #4

Full Changelog: v0.1.1...v0.2.0

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 22 Aug 16:11

Upgrade from 0.1.0

executor-go:0.1.0 had an authorization bypass. The Go guard scanned for
table references only after FROM and JOIN, so every table after a comma was
invisible to it:

SELECT * FROM dbo.fct_sales, other.secrets   -- 0.1.0: allowed

The second table escaped the schema allow-list, the cross-database rule, and
the table list that the access rules and the audit line are built from — so a
query could read a schema the source does not permit, and the audit would
record only the first table. The Python executor was never affected.

Four guard fixes, in both implementations

Found by adversarially probing the guards rather than by a failing test — all
four were in code at 90%+ line coverage.

Was allowed Now
Comma-joined tables (Go only) FROM a, other.secrets refused; every table is checked
Table functions FROM main.read_csv_auto('/etc/passwd') refused — a function is not a table
APPLY over a function CROSS APPLY other.f(1) refused; CROSS APPLY (SELECT …) still works
TOP n PERCENT reported as a row ceiling of n refused — a proportion is not a count

The table-function and APPLY fixes discriminate on parse-tree structure rather
than a list of names, so they cover constructs specific to engines this project
has not met yet. Each is pinned in tests/test_sqlguard.py and in
services/conformance/run.py, which both executors must pass.

New sources

  • REST APIs, guarded against their own OpenAPI document: unsafe operations
    are never offered, undeclared parameters are refused, and item and body
    ceilings are written into the request. An enterprise retrieval service or
    knowledge base plugs in this way — see docs/15-http-sources.md.
  • DuckDB, for local and lake-file work. Embedded, so it has no per-user
    identity: a DuckDB source is authz_tier=service permanently and the
    executor refuses one that claims otherwise. docs/03-architecture.md
    explains why that is a property of the engine rather than of a deployment.

Both are Python-only; the Go executor has neither, nor Databricks. Recorded
in docs/parity.md and ADR 0001 rather than left to be discovered.

Also

Terraform replaces Bicep. Go 1.26.7. Coverage gated at 90% for both languages.
115 end-to-end witnesses, 30 contract checks against each executor.

Images

docker pull ghcr.io/calvinchengx/data-agent-service/executor-py:0.1.1
docker pull ghcr.io/calvinchengx/data-agent-service/executor-go:0.1.1

Both answer the same contract (services/contract/openapi.json) — verified
against these published images, not only against a local build. Choose with
DAS_EXECUTOR=py|go; see docs/adr/0001-two-executors.md.

Full changelog: v0.1.0...v0.1.1

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 22 Aug 03:20

Images

docker pull ghcr.io/calvinchengx/data-agent-service/executor-py:0.1.0
docker pull ghcr.io/calvinchengx/data-agent-service/executor-go:0.1.0

Both answer the same contract (services/contract/openapi.json).
Choose with DAS_EXECUTOR=py|go; see docs/adr/0001-two-executors.md.

Full Changelog: https://github.com/calvinchengx/data-agent-service/commits/v0.1.0