feat: iconik connector, metadata collections, and source metadata search (API v0.7.11) - #105
Merged
Conversation
…rch (API v0.7.11)
Iconik data connector:
- New IconikSourceMetadata schema (source_type + iconik_asset_id
required; title, media_type, timestamps, duration, rendition, urls,
and iconik_metadata custom fields optional)
- SourceMetadata oneOf + discriminator mapping now covers iconik
- 'iconik' added to the DataConnector type and File source enums
Metadata collections:
- New 'metadata' collection_type on Collection and NewCollection: indexes
connector source metadata and user metadata into file-level search
documents without downloading or processing media, free to index,
supported for google-drive, dropbox, zoom, gong, recall, grain, and
iconik URLs (no processing configs)
- Deep search scope documents metadata-collection behavior
Source metadata search and refresh:
- SearchFilter gains source_metadata, filtering on connector-provided
fields via JSON path expressions (file scope)
- New doc_lexical search modality
- New POST /files/{file_id}/sync re-fetches a file's source_metadata
live from its connector and re-indexes any metadata collections it
belongs to; free, no media downloaded
Describe and transcribe:
- Describe and Transcribe responses gain a 'file' object
- include_metadata query parameter on the describe, transcribe, and
collection media-description listing endpoints
amyxst
approved these changes
Jul 22, 2026
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 849181c. Configure here.
| "tag_semantic", | ||
| "tag_lexical" | ||
| "tag_lexical", | ||
| "doc_lexical" |
There was a problem hiding this comment.
Search modalities maxItems too low
Medium Severity
The SearchModalities schema's maxItems is 5, but the enum now lists six values, including the newly added doc_lexical. This prevents clients from using all available modalities in a single hybrid search, a capability that previously existed.
Reviewed by Cursor Bugbot for commit 849181c. Configure here.
kdr
added a commit
to cloudglue/cloudglue-js
that referenced
this pull request
Jul 22, 2026
…rch (spec v0.7.11) (#145) ## Summary Syncs the SDK to spec **v0.7.11** (cloudglue/cloudglue-api-spec#105) and bumps the package to **0.7.21**. > **Branch note:** the local working checkout this started from was based 14 commits behind main (it predated the v0.7.9/v0.7.10 wrapper work and the fixed `generate.js`), so this branch was rebuilt from `origin/main` and the regen re-run with main's generator. The version is 0.7.21 (next after the released 0.7.20), not the 0.7.12 the stale base implied. ### Generated - `IconikSourceMetadata`; the `SourceMetadata` discriminated union and the `DataConnector.type`/`File.source` enums now cover **iconik** - New `syncFileSourceMetadata` endpoint (`POST /files/{file_id}/sync`) - `include_metadata` on describe/transcribe get+list, collection media-description/rich-transcript listings, and segmentation describes; `Describe`/`Transcribe` responses gain a `file` object - `SearchFilter.source_metadata` + the `doc_lexical` search modality - `metadata` collection type ### generate.js — TS7056 fix Describe/Transcribe responses now embed `File`, whose seven-variant `source_metadata` union pushed the structurally inferred types of the big `common.ts` consts past the compiler's declaration-emit limit (`error TS7056` in Segmentations/Files clients). Fixed at the root: `SourceMetadata`, `File`, `Describe`, and `DescribeList` consts are now annotated `z.ZodType<T>` (same pattern as the existing `ResponseKnowledgeBase` annotation), so downstream inference references named types. ### Wrapper (src/) - `files.syncSourceMetadata(fileId)` — new endpoint, unreachable without a wrapper method - `include_metadata` plumbed through the hand-written param literals in describe/transcribe/segmentations/collections (9 endpoints) - `'metadata'` added to `ListCollectionParams.collection_type` (create flows automatically via `z.infer`) - `IconikSourceMetadata` re-exported from `types.ts` - `url-utils`: `iconik://asset/<id>` grammar + classification, with unit tests - Data-connector filter/support docs updated for iconik ## Test plan - [x] `npm run build` clean (TS7056 resolved), `npm test` **107/107** - [x] Live battery — **14/14** (full evidence in `~/Downloads/cloudglue-v0.7.11-sdk-test-results.md`): iconik listing/per-file metadata/source-metadata narrowing/native title_search; metadata collection created + grain & iconik **URLs** indexed without processing (then deleted); `syncSourceMetadata` refreshes both providers; `doc_lexical` search with a `source_metadata.title` filter finds exactly the grain file and a negative filter excludes it; `include_metadata` toggles file metadata on describe get/list <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Large generated-client sync plus new search/collection behaviors; risk is mainly API contract drift and TypeScript emit fixes rather than runtime auth or payment logic. > > **Overview** > Bumps **@cloudglue/cloudglue-js** to **0.7.21** and regenerates clients from OpenAPI **v0.7.11**. > > **Iconik & connector metadata:** Adds **`IconikSourceMetadata`** and **`iconik`** across data-connector types, file `source`, and the `SourceMetadata` union. **`url-utils`** recognizes **`iconik://asset/<id>`** (with tests). > > **Metadata collections & search:** New **`metadata`** `collection_type`; **`AddCollectionFile`** can pass optional **`metadata`**. Search gains **`doc_lexical`** and **`SearchFilter.source_metadata`** for filtering on connector fields. > > **API surface:** New **`POST /files/:file_id/sync`** (`syncFileSourceMetadata`) to refresh stored **`source_metadata`** and re-index metadata collections. **`include_metadata`** is wired on describe/transcribe (create + list/get), collection media-description/rich-transcript routes, and segmentation describes; related responses can include an optional embedded **`file`**. > > **Build fix:** **`generate.js`** annotates large **`common.ts`** schemas (`SourceMetadata`, `File`, `Describe`, `DescribeList`) as **`z.ZodType<T>`** to avoid **TS7056** when responses embed `File`. > > **Hand-written `src/`:** Exposes **`files.syncSourceMetadata`**, documents/plumbs **`include_metadata`**, extends collection listing for **`metadata`**, re-exports **`IconikSourceMetadata`**, and updates data-connector docs for Iconik. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 0f5f26a. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
kdr
added a commit
to cloudglue/cloudglue-python
that referenced
this pull request
Jul 22, 2026
…rch (sync spec v0.7.11) (#71) ## Summary Syncs the SDK to spec **v0.7.11** (cloudglue/cloudglue-api-spec#105) and bumps the package to **0.7.18**. > **Branch note:** the local working checkout this started from was based 9 commits behind main (it predated the v0.7.9/v0.7.10 syncs), so this branch was rebuilt from `origin/main` with the regenerated `cloudglue/sdk` tree carried over intact. The version is 0.7.18 (next after the released 0.7.17). ### Generated (cloudglue/sdk) - `IconikSourceMetadata`; the `SourceMetadata` oneOf and connector/source enums now cover **iconik** - New `sync_file_source_metadata` endpoint (`POST /files/{file_id}/sync`) - `include_metadata` on describe/transcribe get+list, collection media-description/rich-transcript listings, and segmentation describes; `Describe`/`Transcribe` responses gain a `file` object - `SearchFilter.source_metadata` + the `doc_lexical` search modality - `metadata` collection type ### Wrapper (cloudglue/client + package) - `files.sync_source_metadata(file_id)` — new endpoint, unreachable without a wrapper method - `include_metadata` plumbed through describe/transcribe/segmentations/collections methods (9 endpoints — these pass kwargs explicitly, so new params need plumbing) - `Search.create_filter` gains `source_metadata_filters` (builds `SearchFilterCriteria` entries; documented JSON-path examples per connector) - `collection_type` docstrings cover `'metadata'` (and fix a stale filter-enum doc) - `IconikSourceMetadata` re-exported at the package top level - Data-connector docstrings: per-connector `from`/`to` + `title_search` matrices and sync/lookup support updated for iconik ## Test plan - [x] Package imports clean; signature smoke-tests for all 9 `include_metadata` methods + `sync_source_metadata`; `create_filter(source_metadata_filters=…)` serializes to the correct wire shape - [x] Live battery — **14/14** (full evidence in `~/Downloads/cloudglue-v0.7.11-sdk-test-results.md`): iconik listing/per-file metadata/`isinstance(IconikSourceMetadata)` lookup/native title_search; metadata collection created + grain & iconik **URLs** indexed without processing (then deleted); `sync_source_metadata` refreshes both providers with typed variants; `doc_lexical` search with a `source_metadata.title` filter finds exactly the grain file and a negative filter excludes it; `include_metadata` toggles file metadata on describe get/list <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Large generated SDK surface plus new search/indexing and connector sync paths; behavior is additive and documented, but touches search filters and file metadata refresh used across integrations. > > **Overview** > Syncs the Python client to **OpenAPI v0.7.11**, adding **Iconik** as a data connector and expanding metadata-only indexing and search over connector `source_metadata`. > > **Iconik & connectors:** New `IconikSourceMetadata` is exported at the package root. Data-connector docs and listing filters now treat Iconik like other OAuth sources (`from`/`to`, full-text `title_search`, `iconik://asset/<id>` URIs, populated `source_metadata` on sync/lookup). > > **Metadata collections & refresh:** Collection docs describe a new **`metadata`** type that indexes connector/user metadata without media processing. **`files.sync_source_metadata(file_id)`** (`POST /files/{file_id}/sync`) re-fetches live connector metadata and re-indexes metadata collections when applicable. > > **Search & responses:** `Search.create_filter` accepts **`source_metadata_filters`** (JSON paths on connector metadata, file scope). Describe/transcribe/collection transcript & media-description APIs gain optional **`include_metadata`** on get/list (and segmentation describe lists), wired through the high-level client where kwargs are explicit. > > The bulk of the diff is regenerated **`cloudglue/sdk`** (models, query params, `SearchFilter.source_metadata`, version bump 0.7.10 → 0.7.11). > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 6c1617a. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Summary
Bumps the spec to v0.7.11. Three related themes: a new Iconik data connector, a new
metadatacollection type that indexes connector metadata without processing media, and search/refresh support for connector source metadata.Iconik connector
IconikSourceMetadataschema —source_type+iconik_asset_idrequired;title,media_type,date_created/date_modified,duration_ms,ingested_rendition,iconik_url,external_id,created_by_user, andiconik_metadata(custom metadata-view fields) optionalSourceMetadataoneOf + discriminator mapping extended to seven connectorsiconikadded to theDataConnector.typeandFile.sourceenumsMetadata collections
metadatavalue forcollection_typeonCollection/NewCollection: indexes connector source metadata + user metadata into file-level search documents without downloading or processing the media. Free to index, takes no processing configs, and supports google-drive, dropbox, zoom, gong, recall, grain, and iconik URLsCreateDeepSearchRequest.scopedocuments how metadata collections affect result scopeSource metadata search + refresh
SearchFiltergainssource_metadata: filter on connector-provided fields via JSON path expressions (file scope), e.g.source_metadata.topic(zoom),source_metadata.parties.email(gong),source_metadata.iconik_metadata.<FieldName>(iconik custom fields)doc_lexicalsearch modalityPOST /files/{file_id}/sync— re-fetches a file'ssource_metadatalive from its connector and re-indexes any metadata collections the file belongs to. Works for metadata-only and fully ingested connector files; free, no media downloadedDescribe / transcribe
DescribeandTranscriberesponses gain afileobject (itsmetadata/source_metadatapopulated only wheninclude_metadatais true)include_metadataquery parameter on the describe, transcribe, and collection media-description/rich-transcript listing endpointsTest plan
openapi.jsonparses as valid JSON (62 paths, 159 schemas)IconikSourceMetadatafollows the established source-metadata contract: onlysource_type+ the provider's primary id required, everything else optionaloneOfvariant; connector enums consistent acrossDataConnector.typeandFile.sourceNote
Medium Risk
Large contract expansion (new connector, collection type, search filters, and sync endpoint) affects client integrations and knowledge-base behavior even though the diff is spec-only.
Overview
Bumps the public API spec to v0.7.11 with Iconik integration, metadata-only collections, and richer metadata in search and read APIs.
Iconik is added as a connector (
iconik://asset/<id>sync URLs, listing filters fordate_createdand title search) with a newIconikSourceMetadatashape andiconikonFile.source/DataConnector.type.A new
metadatacollection type indexes connectorsource_metadataplus optional usermetadatainto file-level search documents without ingesting media. Adding files to metadata collections can pass inlinemetadata; nimbus-002-preview can use these collections in knowledge bases (nimbus-001 rejects them).Search gains
source_metadataJSON-path filters (file scope) and adoc_lexicalmodality for file-level metadata/summary text. Deep search with metadata collections requiresscope=file.POST /files/{file_id}/syncrefreshes stored connector metadata and re-indexes related metadata collections at no media cost.Describe/transcribe and several collection listing endpoints add optional
include_metadataand a nestedfileobject on responses when enabled.Reviewed by Cursor Bugbot for commit 849181c. Bugbot is set up for automated code reviews on this repo. Configure here.