Skip to content

Releases: Azure/agent-app-ingestion

v3.1.4

Choose a tag to compare

@placerda placerda released this 30 Oct 15:40
c183c81

Changed

  • Reviewed dependency maintenance. Update Uvicorn, Tenacity, Cosmos DB and
    Storage management SDKs, and adopt jest-dom 7 on the existing Node 22 test
    toolchain. Preserve the patched security dependencies and generated lock.
  • Grouped Actions maintenance. Check GitHub Actions weekly against
    develop, grouped with a seven-day cooldown, matching the component
    maintenance policy without introducing duplicate updates against main.
  • Chunk key hashing. Use SHA-256 instead of SHA-1 for the truncated suffix
    of long Blob and SharePoint document IDs. Short IDs and parent IDs remain
    unchanged. Existing long-key documents are not migrated automatically.
    Reindex affected parents to replace their stored chunks before relying on
    the new IDs; retained citations to previous chunk IDs may need refreshing.
  • Shared repository protection standard. Require pull requests and passing
    quality, behavior and frontend checks without mandatory second-person review.
    Preserve protected-base integrity, immutable Actions references and narrowly
    scoped privileged workflow authorization.

Fixed

  • Dependabot configuration syntax. Separate the GitHub Actions update
    entry from the preceding package labels so all three update streams remain
    valid YAML and dependency maintenance continues to run.
  • Security dependency updates. Update aiohttp, PyJWT, Pillow and pypdf to
    versions outside the reported vulnerable ranges. Refresh frontend tooling
    and transitive dependencies, with a scoped patched selector-parser override
    for Tailwind typography.
  • Immutable GitHub Actions references. Pin the remaining workflow actions
    to verified full-length commit SHAs without changing their selected versions,
    and require agents to preserve SHA pinning when editing or regenerating CI.

Validation

  • Release PR Azure/agent-app-ingestion#370 passed all required repository checks and the protected quality gate. The main release tree matches that validated candidate.
  • The complete Dependabot YAML parses successfully with all three update streams, weekly Actions grouping, develop targets and a seven-day cooldown.
  • Shared contract files are unchanged from the previous stable release.
  • Validation was offline; no Azure deployment or live Azure end-to-end test was performed.

Publication scope and recovery

  • This release publishes the source tag and GitHub Release only, not a container image or Python package.
  • Prefer a forward corrective patch if an adoption issue appears; preserve immutable published tags. Previous stable reference: v3.1.3.

v3.1.3

Choose a tag to compare

@placerda placerda released this 27 Oct 13:51
d7f34eb

Changed

  • Synchronize SharePoint user and group permissions independently of content modification timestamps across every affected item document and document-library chunk.
  • Replace revoked grants without downloading, chunking or embedding unchanged content; skip writes when ACL sets are equal.
  • Read complete Graph permission pages and effective document-library sharing permissions, including inherited grants and inheritance transitions.
  • Keep ACL refresh retryable when content processing is blocked, and require confirmation for every Search merge.

Validation

  • Full ingestion suite: 1,015 passed and 10 subtests passed.
  • Protected quality checks: all passed, 0 findings.
  • Release CI: unit tests, frontend build, lint, typing, architecture, policy, exception evidence and aggregate quality gate passed.

Azure/agent-landing-zone#720 · #358

v3.1.2

Choose a tag to compare

@placerda placerda released this 27 Oct 03:52
833aa54

Changed

  • Align service identity, API metadata and document-analysis user agents with Agent Landing Zone naming.
  • Read the agent-app-ingestion service label after the legacy service label while retaining the existing shared-label and final all-labels selector behavior.

Fixed

  • Deploy application resources to AZURE_APP_RESOURCE_GROUP from the agent-lz label.
  • Preserve the legacy group fallback only for confirmed missing or empty application-group settings; configuration access failures stop deployment.
  • Synchronize runtime VERSION metadata and current service documentation.

Validation

  • Python behavior and PowerShell/Bash destination regression tests.
  • Maintained frontend test, lint and build commands plus protected quality checks and aggregate evidence.

v2.4.13-hotfix.1

Choose a tag to compare

@placerda placerda released this 15 Oct 20:29

Changed

Maintenance hotfix based exactly on ingestion v2.4.13, without incorporating
v2.4.14 or later changes.

Fixed

  • Blob index-state queries rejected with app-only tokens. Replace
    _ELEVATED_HEADERS = {"x-ms-enable-elevated-read": "true"} with
    _ELEVATED_HEADERS = {} in jobs/blob_storage_indexer.py. Blob index-state
    and purge queries no longer request the elevated-read mode that returned
    App-only tokens are not supported. The Search API version and
    authentication configuration remain unchanged.
  • Blob purge fails during client initialization. Add
    self._app = get_config() to BlobStorageDeletedItemsCleaner.__init__,
    before identity resolution, fixing
    AttributeError: 'BlobStorageDeletedItemsCleaner' object has no attribute '_app'.

Scope

  • This is a historical maintenance release, not a cumulative replacement for the
    latest stable release.
  • Changes are limited to the Blob indexer/purger in this module. Other helpers,
    runtime components, infrastructure and configuration labels are unchanged.
  • Validation preserved permissionFilterOption=disabled and records
    carrying user/group/RBAC metadata. It does not establish authorization
    enforcement or support for permissionFilterOption=enabled. The hotfix
    does not change the index policy.

Validation

  • 44 Python tests passed, locally and inside the built image. Seven
    regression cases fail against the original runtime and pass with this patch.
  • Controlled Azure testing with system-assigned managed identity passed:
    scans matched the independent inventory, including permission-bearing records;
    one new file was indexed with a real embedding and four were skipped as
    unchanged. A repeat skipped all five with no uploads or failures.
  • Purge removed exactly one control chunk, corresponding to the deleted
    test blob. All four survivors, vectors and permission metadata were preserved.
  • The original index was unchanged and the previous application image and
    configuration were restored. Test processes used an existing OpenAI endpoint
    override and a prewarmed tokenizer cache, without changing cloud settings.

Validated runtime commit: 222b6b137a671683eed80739d32e64583acaef5a.
Only validation documentation changed afterward.

Apply and rollback

Build and deploy only the ingestion component from this tag through the existing
approved process. Do not edit a running container or deploy the umbrella
repository for this fix.

Validate against the target index policy before production. Preserve the previous
image, revision and command settings for rollback; image rollback does not
restore deleted index records.

v3.1.1

Choose a tag to compare

@placerda placerda released this 06 Oct 18:45
72efd8d

Removed

  • Legacy gpt-rag App Configuration label fallback and GPT_RAG_ key fallback (Azure/agent-landing-zone#695). The app now reads only its app label, then agent-lz, then no label.

Validation

  • Unit test suite passed locally.

v3.0.1

Choose a tag to compare

@placerda placerda released this 06 Oct 13:49
7a8b869

Fixed

  • Fail early with a clear error when NETWORK_ISOLATION=true, BUILD_MODE=acr-task and ACR_TASK_AGENT_POOL_NAME is missing (Azure/agent-landing-zone#741).

v3.0.0

Choose a tag to compare

@placerda placerda released this 03 Oct 23:45
1a590dc

Added

  • Agent Landing Zone R14 dual-read (Azure/agent-landing-zone#695). App Configuration
    now also loads the agent-lz label, which takes precedence over the legacy
    gpt-rag label; gpt-rag remains a fallback for this transition release.
    Keys prefixed AGENTLZ_ are read first, falling back to the matching
    GPT_RAG_ key.

Changed

  • Audit events move to the audit-event-v2 contract (breaking for audit
    queries).
    Ingestion audit records now use customEvents.name values under
    agentlz.audit.ingestion.* (was gptrag.audit.ingestion.*),
    schema_version 2, and service_name agent-app-ingestion. Field names and
    semantics are unchanged. The vendored v2 schemas are pinned at
    884dfa2441d3313c8ec46a099f60ce86e7abb6cdf88bb5b5da720463edbf5e97 (logical)
    and 48416073768c0710b9a1f58640d4e822745f28b3a17b3712a2fe4cd9326c9c07
    (Application Insights wire); the v1 files remain in contracts/ as history.
    Update dashboards and alerts that filter on gptrag.audit..

  • Reviewable Python quality bootstrap. Add development-only pinned Ruff,
    mypy, Import Linter and Grimp, explicit module/typing inventories,
    individual-debt and handler records, mutation fixtures, and protected-base
    quality jobs in the existing pytest workflow. The aggregate rejects missing,
    skipped or stale evidence. Inherited violations remain visible and blocking;
    no blanket exemptions or claim of administrative activation is introduced.

Changed

  • Administratively approved initial quality adoption. Activate exactly 67
    existing, individually justified ingestion exception records under
    Paulo's explicit authorization.
    Preserve all fingerprints, outcomes, evidence selectors and pins. This
    supersedes the proposal status below, not same-run evidence requirements;
    it is neither independent GitHub review nor required-check activation.

  • Jobs-owned scheduler coordination without API-to-entrypoint cycles.
    Move the shared scheduler reference, registry, cron map, running-job
    dictionary/lock and tracking wrapper to jobs.runtime, retaining the same
    main re-exports, manual reservation behavior and scheduler lifecycle. Lazy
    worker exports keep state-only imports from initializing Azure configuration
    before startup authentication. Remove two overwritten, unused SharePoint
    wrappers while retaining the shared registry/lock and startup ordering.

Fixed

  • Explicit configuration fallback and feedback availability. Preserve
    endpoint then configured connection-string loading, with safe diagnostics
    when fallback is used. Environment-only recovery now requires the existing
    allow_environment_variables opt-in; otherwise startup failures propagate.
    Legacy panel overview adds feedback.available and discards incomplete
    counts so unavailable feedback is distinguishable from genuine zero records.

  • Preserve primary failures and cancellation during finalization. Keep
    retrieval's sanitized query failure across Search cleanup errors, prevent
    Blob terminal-summary errors from replacing established run failures or
    cancellation, and propagate NL2SQL child cancellation through run/audit
    handling instead of reporting a finished run with a failed-document count.
    Cleanup and summary writes remain attempts with safe diagnostics, not
    guarantees.

  • Operator frontend restores without invalid peer combinations. Align
    React DOM/types with the existing React 19 dependency and wire Tailwind 4's
    PostCSS plugin to the existing theme. Correct the React JSX and Vitest
    configuration type imports without redesigning the dashboard. Run plain
    npm ci, tests, lint and build on compatible Node 22 in the existing test
    workflow; the aggregate rejects missing/skipped/failed frontend execution.

  • Worker failures cannot fabricate ACLs or Search success. Require matching
    upload/delete confirmations in Blob and SharePoint workers, propagate retry
    exhaustion and datasource/permission failures, and preserve explicit failed
    document outcomes rather than indexing with missing ACLs. Observe collection
    task errors, cancel owned children, and close resources after partial
    initialization or diagnostic failure. Preserve the existing credential,
    configuration and per-record contracts with payload-safe diagnostics.

  • Image and SharePoint purge outcomes require complete evidence. Scan all
    image references before any deletion instead of using a 1,000-result cap or
    failed/partial reference set. Use asynchronous Blob listing/deletion and
    close owned resources on failure/cancellation. SharePoint counts only
    matching positive SDK deletion results and propagates count, late-page and
    unconfirmed-delete failures instead of publishing a finished purge summary.

  • Every retained broad handler has an exact inactive disposition. Narrow
    parser, SDK, Graph and optional-log recovery without concealing programming
    defects. Individually propose the remaining existing public translations,
    cleanup and audit protocol boundaries with executed failure evidence.
    Preserve constructor source fallback, post-write refresh-only 200/applied,
    hostile audit-value omission and audit wire bytes; no approval is activated.

  • Operator and startup failures retain truthful, safe outcomes. Count only
    confirmed log deletions, narrow optional history recovery to SDK failures,
    and stop hiding scheduler/programming errors as missing queue data. Resolve
    startup flags before scheduling and surface logging-configuration failures.
    Preserve identity probes, panel HTTP errors, per-record skill results and
    independent startup cleanup through exact inactive proposals with failure
    evidence, while removing dependency payloads from diagnostics.

  • Chunking preserves cancellation and confirmed partial results. Remove
    return-from-finally suppression, narrow SDK/parser retries and optional
    image failures, and close PDF/image resources and owned split files.
    Preserve chunk IDs, content, metadata and explicit document errors while
    preventing empty-URL upload success and sensitive caption/error diagnostics.
    The existing terminal document-error boundary is individually proposed,
    not approved.

  • NL2SQL optional state cannot hide document failures. Narrow SDK/JSON
    operations used for job logs and unchanged-document checks; unexpected
    failures become explicit failed-document outcomes, not missing-state
    defaults. Preserve confirmed upload counts, stable reindex keys and
    independent resource cleanup, with safe diagnostics and individually
    proposed, not activated, failure/cleanup boundaries.

  • Model-service failures preserve outcomes without exposing payloads.
    Keep OpenAI retry/usage semantics and original terminal exceptions while
    narrowing retry parsing. Document analysis retains explicit error results
    without authorization headers or response bodies in diagnostics; Blob-URL
    analysis initializes its own PDF features, and figure failures use a
    status-only HTTP error. Real JWT verification fixtures preserve existing
    401/403 outcomes while narrowing token/claim parsing and retaining optional,
    non-authoritative auth diagnostics as individually proposed boundaries.

  • Malformed quality evidence cannot become a passing receipt. Validate
    Ruff/mypy diagnostic types, positions, duplicate keys and exit consistency;
    reject aggregate reports whose passed status contradicts their findings.
    Real aggregate CLI fixtures cover missing/skipped jobs and stale or mismatched
    artifacts without treating incomplete execution as successful validation.

  • Direct uploads require authoritative Search confirmation. Exercise the
    actual /ingest-documents route with the pinned SDK response model, reject
    missing, duplicate and unrelated results, and retain the per-record response
    and ACL fields. Audit exporter failure cannot reverse a confirmed upload.

  • SDK and parser recovery is limited to expected failures. Keep explicit
    error/None outcomes for failed SDK writes, secret reads and analysis calls
    without logging downstream payloads. Only Cosmos not-found means absence;
    unexpected adapter and SharePoint provider failures propagate. Blob download
    retries only SDK failures and retains the original terminal exception.
    Cursor, cron, timestamp and JWKS parsing retain their existing invalid-input
    outcomes without broad handlers or redundant constructor wrappers.

  • Static checks cannot import candidate tool shadows. Launch the protected
    evaluator and tools with isolated Python, neutral working directories and
    non-executable source package specs. Reject executable tool configuration,
    isolate Git metadata reads, and inventory decorator-based typing suppressions
    so candidate startup hooks, loaders and aliases cannot silently bypass checks.

  • Quality-policy mutations cannot hide reviewed boundaries. Reject malformed
    records and mismatched tool pins; retain conflicting lexical aliases, resolve
    first-party and class-member exception bindings, invalidate changed catch
    breadth, and require review for ownership-changing moves. Dynamic-import
    allowances are exact-symbol, active, single-use records rather than reusable
    call-expression exemptions.

  • Primary failures no longer masquerade as confirmed work. Search deletion
    uses the SDK delete operation and counts matching confirmed outcomes rather
    than submissions; NL2SQL purge propagates failed scans and partial deletion.
    Missing, malformed or duplicate Search responses cannot emit positive audit
    outcomes. Cron/manual failures propagate through the existing audit context,
    while startup jobs retain independent failure isolation.

  • Configuration and diagnostic failures remain explicit and safe. Governance
    reads no longer silently disable governance after selected-provider failure.
    Boun...

Read more

v3.0.0-preview.2

v3.0.0-preview.2 Pre-release
Pre-release

Choose a tag to compare

@placerda placerda released this 03 Oct 16:51
3d1786c

Changed

  • Deploy scripts read App Configuration settings from the agent-lz label with fallback to the legacy gpt-rag label.

Pre-release for Agent Landing Zone v4.0.0-preview.2.

v3.0.0-preview.1

v3.0.0-preview.1 Pre-release
Pre-release

Choose a tag to compare

@placerda placerda released this 02 Oct 23:38
5a41a75

Changed

  • Agent Landing Zone rebrand: dual-read of AGENTLZ_* settings with temporary gpt-rag fallback.
  • Audit telemetry prefix agentlz.audit.* (contract v2).

Pre-release for Agent Landing Zone v4.0.0-preview.1.

v2.7.4

Choose a tag to compare

@placerda placerda released this 25 Sep 02:53
75a2ef1

Fixed

  • Container image build no longer fails at npm ci with ERESOLVE. Dependency bumps merged for v2.7.1 left the admin frontend with an inconsistent dependency set (react 19 with react-dom 18, @types/react 19 with @types/react-dom 18, Tailwind 4 and Vite 8 without config migration), so v2.7.1–v2.7.3 could not be built. frontend/package.json and frontend/package-lock.json are restored to the known-good v2.7.0 set. No frontend source changed, so the admin UI is unchanged. (#309)
  • VERSION now matches the released version.