Add granular query operation capabilities to driver schema - #49

Merged
hotlong merged 8 commits into
mainfrom
copilot/document-driver-capabilities
Jan 21, 2026
Merged

Add granular query operation capabilities to driver schema#49
hotlong merged 8 commits into
mainfrom
copilot/document-driver-capabilities

Conversation

CopilotAI commented Jan 21, 2026

Copy link
Copy Markdown
Contributor

Drivers currently can only declare high-level capabilities (transactions, joins, full-text search). No mechanism exists to specify support for individual query operations, preventing ObjectQL from determining whether to push operations to the driver or compute in-memory.

Changes

Schema Enhancements

  • Added 6 query capability flags to DriverCapabilitiesSchema and DatasourceCapabilities:
    • queryFilters - WHERE clause support
    • queryAggregations - GROUP BY/aggregation functions
    • querySorting - ORDER BY support
    • queryPagination - LIMIT/OFFSET support
    • queryWindowFunctions - Window functions with OVER clause
    • querySubqueries - Nested SELECT support

Test Coverage

  • Updated all driver test fixtures with new capability flags
  • Added memory driver example demonstrating limited query support
  • Added realistic capability matrices for PostgreSQL, MongoDB, Salesforce, and Redis

Generated Artifacts

  • Updated JSON schemas and documentation

Example

// Memory driver - compute all operations in-memoryconstmemoryDriver: DriverInterface={supports: {queryFilters: false,queryAggregations: false,querySorting: false,queryPagination: false,queryWindowFunctions: false,querySubqueries: false,// ...}};// PostgreSQL - push all operations to databaseconstpostgresDriver: DriverInterface={supports: {queryFilters: true,queryAggregations: true,querySorting: true,queryPagination: true,queryWindowFunctions: true,querySubqueries: true,// ...}};

ObjectQL can now inspect these flags to determine whether to push query operations to the driver or handle them in-memory.

Original prompt

如何约定driver已经实现的能力比如目前的内存驱动实际上不支持查询条件


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

@vercel

vercelBot commented Jan 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentReviewUpdated (UTC)
specErrorErrorJan 21, 2026 4:29am

Request Review

Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
CopilotAI changed the title [WIP] Document driver capabilities regarding current limitationsAdd granular query operation capabilities to driver schemaJan 21, 2026
CopilotAI requested a review from hotlongJanuary 21, 2026 02:51
@hotlong

Copy link
Copy Markdown
Contributor

@copilot 目前实现已经非常完整,我只有一个小的建议供参考:

• 默认值考虑:目前所有新标志的默认值似乎都是 false(在 JSON Schema 中显式设为 false,Zod 中虽未显式但在测试中体现了这一点)。这是一个安全的默认策略(“悲观策略”),确保了如果驱动没声明支持,引擎会兜底处理。这很好。

@hotlong
hotlong marked this pull request as ready for review January 21, 2026 04:20
CopilotAI review requested due to automatic review settings January 21, 2026 04:20
@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation protocol:system tests size/m labels Jan 21, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds granular query operation capabilities to the driver schema, enabling ObjectQL to determine which query operations can be pushed to the database driver versus computed in-memory. The PR introduces 6 new capability flags for common query operations (filters, aggregations, sorting, pagination, window functions, and subqueries).

Changes:

  • Added 6 new query capability boolean flags to DriverCapabilitiesSchema and DatasourceCapabilities schemas
  • Updated all test fixtures with realistic capability matrices for PostgreSQL, MongoDB, Salesforce, Redis, and a new memory driver example
  • Regenerated JSON schemas and documentation with new capability fields

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
packages/spec/src/system/driver.zod.tsAdded 6 query capability fields to DriverCapabilitiesSchema with comprehensive JSDoc documentation and .describe() calls
packages/spec/src/system/datasource.zod.tsAdded 6 query capability fields to DatasourceCapabilities; removed aggregation field in favor of queryAggregations
packages/spec/src/system/driver.test.tsUpdated all test fixtures with new capability flags; added realistic examples for PostgreSQL, MongoDB, Salesforce, Redis, and memory drivers
packages/spec/json-schema/DriverInterface.jsonAuto-generated JSON schema updated with new required capability fields
packages/spec/json-schema/DriverDefinition.jsonAuto-generated JSON schema updated with new capability fields and defaults
packages/spec/json-schema/DriverCapabilities.jsonAuto-generated JSON schema updated with new required capability fields
packages/spec/json-schema/DatasourceCapabilities.jsonAuto-generated JSON schema updated with new capability fields and defaults
packages/spec/json-schema/Datasource.jsonAuto-generated JSON schema updated with new capability fields
content/docs/references/system/integration/DatasourceCapabilities.mdxAuto-generated documentation updated with new capability fields (missing descriptions)
content/docs/references/system/DriverCapabilities.mdxAuto-generated documentation updated with new capability fields and descriptions

Comment on lines +65 to +81
/** Can execute WHERE clause filters natively? */
queryFilters: z.boolean().default(false),

/** Can perform aggregation (group by, sum, avg)? */
queryAggregations: z.boolean().default(false),

/** Can perform ORDER BY sorting? */
querySorting: z.boolean().default(false),

/** Can perform LIMIT/OFFSET pagination? */
queryPagination: z.boolean().default(false),

/** Can perform window functions? */
queryWindowFunctions: z.boolean().default(false),

/** Can perform subqueries? */
querySubqueries: z.boolean().default(false),

CopilotAIJan 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new query capability fields in DatasourceCapabilities lack .describe() method calls, which causes the auto-generated documentation to have empty descriptions. For consistency with DriverCapabilitiesSchema (which uses both JSDoc comments and .describe() calls) and to ensure proper documentation generation, each field should include a .describe() call with the description text.

For example:

  • queryFilters: z.boolean().default(false).describe('Can execute WHERE clause filters natively?')
  • queryAggregations: z.boolean().default(false).describe('Can perform aggregation (group by, sum, avg)?')

This would ensure the generated documentation tables include meaningful descriptions for each capability.

Copilot uses AI. Check for mistakes.

/** Can execute WHERE clause filters natively? */
queryFilters: z.boolean().default(false),

CopilotAIJan 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The removal of the aggregation capability field and its replacement with queryAggregations is a breaking change. While this rename provides better clarity and consistency with the new query capability naming scheme, any existing code that references capabilities.aggregation will break.

Consider:

  1. Adding a migration guide or deprecation notice in the PR description
  2. If backwards compatibility is required, temporarily supporting both field names with the old one marked as deprecated
  3. Documenting this breaking change in a CHANGELOG or migration guide
Suggested change
/**
* @deprecatedUse`queryAggregations`instead.
*Legacyaggregationcapabilityflagkeptforbackwardscompatibility.
*/
aggregation: z.boolean().default(false).describe('Deprecated: use queryAggregations'),

Copilot uses AI. Check for mistakes.
CopilotAIand others added 3 commits January 21, 2026 04:26
Add missing query operation capabilities (queryFilters, queryAggregations,
querySorting, queryPagination, queryWindowFunctions, querySubqueries) to
match the updated DriverCapabilitiesSchema.
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Based on code review, updated capability flags to accurately reflect the
current implementation. Only queryPagination, jsonFields, and arrayFields
are actually supported.
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/mtests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@hotlong
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add granular query operation capabilities to driver schema - #49

Merged
hotlong merged 8 commits into
mainfrom
copilot/document-driver-capabilities
Jan 21, 2026
Merged

Add granular query operation capabilities to driver schema#49
hotlong merged 8 commits into
mainfrom
copilot/document-driver-capabilities

Conversation

CopilotAI commented Jan 21, 2026

Copy link
Copy Markdown
Contributor

Drivers currently can only declare high-level capabilities (transactions, joins, full-text search). No mechanism exists to specify support for individual query operations, preventing ObjectQL from determining whether to push operations to the driver or compute in-memory.

Changes

Schema Enhancements

  • Added 6 query capability flags to DriverCapabilitiesSchema and DatasourceCapabilities:
    • queryFilters - WHERE clause support
    • queryAggregations - GROUP BY/aggregation functions
    • querySorting - ORDER BY support
    • queryPagination - LIMIT/OFFSET support
    • queryWindowFunctions - Window functions with OVER clause
    • querySubqueries - Nested SELECT support

Test Coverage

  • Updated all driver test fixtures with new capability flags
  • Added memory driver example demonstrating limited query support
  • Added realistic capability matrices for PostgreSQL, MongoDB, Salesforce, and Redis

Generated Artifacts

  • Updated JSON schemas and documentation

Example

// Memory driver - compute all operations in-memoryconstmemoryDriver: DriverInterface={supports: {queryFilters: false,queryAggregations: false,querySorting: false,queryPagination: false,queryWindowFunctions: false,querySubqueries: false,// ...}};// PostgreSQL - push all operations to databaseconstpostgresDriver: DriverInterface={supports: {queryFilters: true,queryAggregations: true,querySorting: true,queryPagination: true,queryWindowFunctions: true,querySubqueries: true,// ...}};

ObjectQL can now inspect these flags to determine whether to push query operations to the driver or handle them in-memory.

Original prompt

如何约定driver已经实现的能力比如目前的内存驱动实际上不支持查询条件


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

@vercel

vercelBot commented Jan 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentReviewUpdated (UTC)
specErrorErrorJan 21, 2026 4:29am

Request Review

Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
CopilotAI changed the title [WIP] Document driver capabilities regarding current limitationsAdd granular query operation capabilities to driver schemaJan 21, 2026
CopilotAI requested a review from hotlongJanuary 21, 2026 02:51
@hotlong

Copy link
Copy Markdown
Contributor

@copilot 目前实现已经非常完整,我只有一个小的建议供参考:

• 默认值考虑:目前所有新标志的默认值似乎都是 false(在 JSON Schema 中显式设为 false,Zod 中虽未显式但在测试中体现了这一点)。这是一个安全的默认策略(“悲观策略”),确保了如果驱动没声明支持,引擎会兜底处理。这很好。

@hotlong
hotlong marked this pull request as ready for review January 21, 2026 04:20
CopilotAI review requested due to automatic review settings January 21, 2026 04:20
@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation protocol:system tests size/m labels Jan 21, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds granular query operation capabilities to the driver schema, enabling ObjectQL to determine which query operations can be pushed to the database driver versus computed in-memory. The PR introduces 6 new capability flags for common query operations (filters, aggregations, sorting, pagination, window functions, and subqueries).

Changes:

  • Added 6 new query capability boolean flags to DriverCapabilitiesSchema and DatasourceCapabilities schemas
  • Updated all test fixtures with realistic capability matrices for PostgreSQL, MongoDB, Salesforce, Redis, and a new memory driver example
  • Regenerated JSON schemas and documentation with new capability fields

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
packages/spec/src/system/driver.zod.tsAdded 6 query capability fields to DriverCapabilitiesSchema with comprehensive JSDoc documentation and .describe() calls
packages/spec/src/system/datasource.zod.tsAdded 6 query capability fields to DatasourceCapabilities; removed aggregation field in favor of queryAggregations
packages/spec/src/system/driver.test.tsUpdated all test fixtures with new capability flags; added realistic examples for PostgreSQL, MongoDB, Salesforce, Redis, and memory drivers
packages/spec/json-schema/DriverInterface.jsonAuto-generated JSON schema updated with new required capability fields
packages/spec/json-schema/DriverDefinition.jsonAuto-generated JSON schema updated with new capability fields and defaults
packages/spec/json-schema/DriverCapabilities.jsonAuto-generated JSON schema updated with new required capability fields
packages/spec/json-schema/DatasourceCapabilities.jsonAuto-generated JSON schema updated with new capability fields and defaults
packages/spec/json-schema/Datasource.jsonAuto-generated JSON schema updated with new capability fields
content/docs/references/system/integration/DatasourceCapabilities.mdxAuto-generated documentation updated with new capability fields (missing descriptions)
content/docs/references/system/DriverCapabilities.mdxAuto-generated documentation updated with new capability fields and descriptions

Comment on lines +65 to +81
/** Can execute WHERE clause filters natively? */
queryFilters: z.boolean().default(false),

/** Can perform aggregation (group by, sum, avg)? */
queryAggregations: z.boolean().default(false),

/** Can perform ORDER BY sorting? */
querySorting: z.boolean().default(false),

/** Can perform LIMIT/OFFSET pagination? */
queryPagination: z.boolean().default(false),

/** Can perform window functions? */
queryWindowFunctions: z.boolean().default(false),

/** Can perform subqueries? */
querySubqueries: z.boolean().default(false),

CopilotAIJan 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new query capability fields in DatasourceCapabilities lack .describe() method calls, which causes the auto-generated documentation to have empty descriptions. For consistency with DriverCapabilitiesSchema (which uses both JSDoc comments and .describe() calls) and to ensure proper documentation generation, each field should include a .describe() call with the description text.

For example:

  • queryFilters: z.boolean().default(false).describe('Can execute WHERE clause filters natively?')
  • queryAggregations: z.boolean().default(false).describe('Can perform aggregation (group by, sum, avg)?')

This would ensure the generated documentation tables include meaningful descriptions for each capability.

Copilot uses AI. Check for mistakes.

/** Can execute WHERE clause filters natively? */
queryFilters: z.boolean().default(false),

CopilotAIJan 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The removal of the aggregation capability field and its replacement with queryAggregations is a breaking change. While this rename provides better clarity and consistency with the new query capability naming scheme, any existing code that references capabilities.aggregation will break.

Consider:

  1. Adding a migration guide or deprecation notice in the PR description
  2. If backwards compatibility is required, temporarily supporting both field names with the old one marked as deprecated
  3. Documenting this breaking change in a CHANGELOG or migration guide
Suggested change
/**
* @deprecatedUse`queryAggregations`instead.
*Legacyaggregationcapabilityflagkeptforbackwardscompatibility.
*/
aggregation: z.boolean().default(false).describe('Deprecated: use queryAggregations'),

Copilot uses AI. Check for mistakes.
CopilotAIand others added 3 commits January 21, 2026 04:26
Add missing query operation capabilities (queryFilters, queryAggregations,
querySorting, queryPagination, queryWindowFunctions, querySubqueries) to
match the updated DriverCapabilitiesSchema.
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Based on code review, updated capability flags to accurately reflect the
current implementation. Only queryPagination, jsonFields, and arrayFields
are actually supported.
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/mtests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@hotlong
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add granular query operation capabilities to driver schema - #49

Merged
hotlong merged 8 commits into
mainfrom
copilot/document-driver-capabilities
Jan 21, 2026
Merged

Add granular query operation capabilities to driver schema#49
hotlong merged 8 commits into
mainfrom
copilot/document-driver-capabilities

Conversation

CopilotAI commented Jan 21, 2026

Copy link
Copy Markdown
Contributor

Drivers currently can only declare high-level capabilities (transactions, joins, full-text search). No mechanism exists to specify support for individual query operations, preventing ObjectQL from determining whether to push operations to the driver or compute in-memory.

Changes

Schema Enhancements

  • Added 6 query capability flags to DriverCapabilitiesSchema and DatasourceCapabilities:
    • queryFilters - WHERE clause support
    • queryAggregations - GROUP BY/aggregation functions
    • querySorting - ORDER BY support
    • queryPagination - LIMIT/OFFSET support
    • queryWindowFunctions - Window functions with OVER clause
    • querySubqueries - Nested SELECT support

Test Coverage

  • Updated all driver test fixtures with new capability flags
  • Added memory driver example demonstrating limited query support
  • Added realistic capability matrices for PostgreSQL, MongoDB, Salesforce, and Redis

Generated Artifacts

  • Updated JSON schemas and documentation

Example

// Memory driver - compute all operations in-memoryconstmemoryDriver: DriverInterface={supports: {queryFilters: false,queryAggregations: false,querySorting: false,queryPagination: false,queryWindowFunctions: false,querySubqueries: false,// ...}};// PostgreSQL - push all operations to databaseconstpostgresDriver: DriverInterface={supports: {queryFilters: true,queryAggregations: true,querySorting: true,queryPagination: true,queryWindowFunctions: true,querySubqueries: true,// ...}};

ObjectQL can now inspect these flags to determine whether to push query operations to the driver or handle them in-memory.

Original prompt

如何约定driver已经实现的能力比如目前的内存驱动实际上不支持查询条件


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

@vercel

vercelBot commented Jan 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentReviewUpdated (UTC)
specErrorErrorJan 21, 2026 4:29am

Request Review

Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
CopilotAI changed the title [WIP] Document driver capabilities regarding current limitationsAdd granular query operation capabilities to driver schemaJan 21, 2026
CopilotAI requested a review from hotlongJanuary 21, 2026 02:51
@hotlong

Copy link
Copy Markdown
Contributor

@copilot 目前实现已经非常完整,我只有一个小的建议供参考:

• 默认值考虑:目前所有新标志的默认值似乎都是 false(在 JSON Schema 中显式设为 false,Zod 中虽未显式但在测试中体现了这一点)。这是一个安全的默认策略(“悲观策略”),确保了如果驱动没声明支持,引擎会兜底处理。这很好。

@hotlong
hotlong marked this pull request as ready for review January 21, 2026 04:20
CopilotAI review requested due to automatic review settings January 21, 2026 04:20
@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation protocol:system tests size/m labels Jan 21, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds granular query operation capabilities to the driver schema, enabling ObjectQL to determine which query operations can be pushed to the database driver versus computed in-memory. The PR introduces 6 new capability flags for common query operations (filters, aggregations, sorting, pagination, window functions, and subqueries).

Changes:

  • Added 6 new query capability boolean flags to DriverCapabilitiesSchema and DatasourceCapabilities schemas
  • Updated all test fixtures with realistic capability matrices for PostgreSQL, MongoDB, Salesforce, Redis, and a new memory driver example
  • Regenerated JSON schemas and documentation with new capability fields

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
packages/spec/src/system/driver.zod.tsAdded 6 query capability fields to DriverCapabilitiesSchema with comprehensive JSDoc documentation and .describe() calls
packages/spec/src/system/datasource.zod.tsAdded 6 query capability fields to DatasourceCapabilities; removed aggregation field in favor of queryAggregations
packages/spec/src/system/driver.test.tsUpdated all test fixtures with new capability flags; added realistic examples for PostgreSQL, MongoDB, Salesforce, Redis, and memory drivers
packages/spec/json-schema/DriverInterface.jsonAuto-generated JSON schema updated with new required capability fields
packages/spec/json-schema/DriverDefinition.jsonAuto-generated JSON schema updated with new capability fields and defaults
packages/spec/json-schema/DriverCapabilities.jsonAuto-generated JSON schema updated with new required capability fields
packages/spec/json-schema/DatasourceCapabilities.jsonAuto-generated JSON schema updated with new capability fields and defaults
packages/spec/json-schema/Datasource.jsonAuto-generated JSON schema updated with new capability fields
content/docs/references/system/integration/DatasourceCapabilities.mdxAuto-generated documentation updated with new capability fields (missing descriptions)
content/docs/references/system/DriverCapabilities.mdxAuto-generated documentation updated with new capability fields and descriptions

Comment on lines +65 to +81
/** Can execute WHERE clause filters natively? */
queryFilters: z.boolean().default(false),

/** Can perform aggregation (group by, sum, avg)? */
queryAggregations: z.boolean().default(false),

/** Can perform ORDER BY sorting? */
querySorting: z.boolean().default(false),

/** Can perform LIMIT/OFFSET pagination? */
queryPagination: z.boolean().default(false),

/** Can perform window functions? */
queryWindowFunctions: z.boolean().default(false),

/** Can perform subqueries? */
querySubqueries: z.boolean().default(false),

CopilotAIJan 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new query capability fields in DatasourceCapabilities lack .describe() method calls, which causes the auto-generated documentation to have empty descriptions. For consistency with DriverCapabilitiesSchema (which uses both JSDoc comments and .describe() calls) and to ensure proper documentation generation, each field should include a .describe() call with the description text.

For example:

  • queryFilters: z.boolean().default(false).describe('Can execute WHERE clause filters natively?')
  • queryAggregations: z.boolean().default(false).describe('Can perform aggregation (group by, sum, avg)?')

This would ensure the generated documentation tables include meaningful descriptions for each capability.

Copilot uses AI. Check for mistakes.

/** Can execute WHERE clause filters natively? */
queryFilters: z.boolean().default(false),

CopilotAIJan 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The removal of the aggregation capability field and its replacement with queryAggregations is a breaking change. While this rename provides better clarity and consistency with the new query capability naming scheme, any existing code that references capabilities.aggregation will break.

Consider:

  1. Adding a migration guide or deprecation notice in the PR description
  2. If backwards compatibility is required, temporarily supporting both field names with the old one marked as deprecated
  3. Documenting this breaking change in a CHANGELOG or migration guide
Suggested change
/**
* @deprecatedUse`queryAggregations`instead.
*Legacyaggregationcapabilityflagkeptforbackwardscompatibility.
*/
aggregation: z.boolean().default(false).describe('Deprecated: use queryAggregations'),

Copilot uses AI. Check for mistakes.
CopilotAIand others added 3 commits January 21, 2026 04:26
Add missing query operation capabilities (queryFilters, queryAggregations,
querySorting, queryPagination, queryWindowFunctions, querySubqueries) to
match the updated DriverCapabilitiesSchema.
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Based on code review, updated capability flags to accurately reflect the
current implementation. Only queryPagination, jsonFields, and arrayFields
are actually supported.
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/mtests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@hotlong
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add granular query operation capabilities to driver schema - #49

Merged
hotlong merged 8 commits into
mainfrom
copilot/document-driver-capabilities
Jan 21, 2026
Merged

Add granular query operation capabilities to driver schema#49
hotlong merged 8 commits into
mainfrom
copilot/document-driver-capabilities

Conversation

CopilotAI commented Jan 21, 2026

Copy link
Copy Markdown
Contributor

Drivers currently can only declare high-level capabilities (transactions, joins, full-text search). No mechanism exists to specify support for individual query operations, preventing ObjectQL from determining whether to push operations to the driver or compute in-memory.

Changes

Schema Enhancements

  • Added 6 query capability flags to DriverCapabilitiesSchema and DatasourceCapabilities:
    • queryFilters - WHERE clause support
    • queryAggregations - GROUP BY/aggregation functions
    • querySorting - ORDER BY support
    • queryPagination - LIMIT/OFFSET support
    • queryWindowFunctions - Window functions with OVER clause
    • querySubqueries - Nested SELECT support

Test Coverage

  • Updated all driver test fixtures with new capability flags
  • Added memory driver example demonstrating limited query support
  • Added realistic capability matrices for PostgreSQL, MongoDB, Salesforce, and Redis

Generated Artifacts

  • Updated JSON schemas and documentation

Example

// Memory driver - compute all operations in-memoryconstmemoryDriver: DriverInterface={supports: {queryFilters: false,queryAggregations: false,querySorting: false,queryPagination: false,queryWindowFunctions: false,querySubqueries: false,// ...}};// PostgreSQL - push all operations to databaseconstpostgresDriver: DriverInterface={supports: {queryFilters: true,queryAggregations: true,querySorting: true,queryPagination: true,queryWindowFunctions: true,querySubqueries: true,// ...}};

ObjectQL can now inspect these flags to determine whether to push query operations to the driver or handle them in-memory.

Original prompt

如何约定driver已经实现的能力比如目前的内存驱动实际上不支持查询条件


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

@vercel

vercelBot commented Jan 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentReviewUpdated (UTC)
specErrorErrorJan 21, 2026 4:29am

Request Review

Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
CopilotAI changed the title [WIP] Document driver capabilities regarding current limitationsAdd granular query operation capabilities to driver schemaJan 21, 2026
CopilotAI requested a review from hotlongJanuary 21, 2026 02:51
@hotlong

Copy link
Copy Markdown
Contributor

@copilot 目前实现已经非常完整,我只有一个小的建议供参考:

• 默认值考虑:目前所有新标志的默认值似乎都是 false(在 JSON Schema 中显式设为 false,Zod 中虽未显式但在测试中体现了这一点)。这是一个安全的默认策略(“悲观策略”),确保了如果驱动没声明支持,引擎会兜底处理。这很好。

@hotlong
hotlong marked this pull request as ready for review January 21, 2026 04:20
CopilotAI review requested due to automatic review settings January 21, 2026 04:20
@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation protocol:system tests size/m labels Jan 21, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds granular query operation capabilities to the driver schema, enabling ObjectQL to determine which query operations can be pushed to the database driver versus computed in-memory. The PR introduces 6 new capability flags for common query operations (filters, aggregations, sorting, pagination, window functions, and subqueries).

Changes:

  • Added 6 new query capability boolean flags to DriverCapabilitiesSchema and DatasourceCapabilities schemas
  • Updated all test fixtures with realistic capability matrices for PostgreSQL, MongoDB, Salesforce, Redis, and a new memory driver example
  • Regenerated JSON schemas and documentation with new capability fields

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
packages/spec/src/system/driver.zod.tsAdded 6 query capability fields to DriverCapabilitiesSchema with comprehensive JSDoc documentation and .describe() calls
packages/spec/src/system/datasource.zod.tsAdded 6 query capability fields to DatasourceCapabilities; removed aggregation field in favor of queryAggregations
packages/spec/src/system/driver.test.tsUpdated all test fixtures with new capability flags; added realistic examples for PostgreSQL, MongoDB, Salesforce, Redis, and memory drivers
packages/spec/json-schema/DriverInterface.jsonAuto-generated JSON schema updated with new required capability fields
packages/spec/json-schema/DriverDefinition.jsonAuto-generated JSON schema updated with new capability fields and defaults
packages/spec/json-schema/DriverCapabilities.jsonAuto-generated JSON schema updated with new required capability fields
packages/spec/json-schema/DatasourceCapabilities.jsonAuto-generated JSON schema updated with new capability fields and defaults
packages/spec/json-schema/Datasource.jsonAuto-generated JSON schema updated with new capability fields
content/docs/references/system/integration/DatasourceCapabilities.mdxAuto-generated documentation updated with new capability fields (missing descriptions)
content/docs/references/system/DriverCapabilities.mdxAuto-generated documentation updated with new capability fields and descriptions

Comment on lines +65 to +81
/** Can execute WHERE clause filters natively? */
queryFilters: z.boolean().default(false),

/** Can perform aggregation (group by, sum, avg)? */
queryAggregations: z.boolean().default(false),

/** Can perform ORDER BY sorting? */
querySorting: z.boolean().default(false),

/** Can perform LIMIT/OFFSET pagination? */
queryPagination: z.boolean().default(false),

/** Can perform window functions? */
queryWindowFunctions: z.boolean().default(false),

/** Can perform subqueries? */
querySubqueries: z.boolean().default(false),

CopilotAIJan 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new query capability fields in DatasourceCapabilities lack .describe() method calls, which causes the auto-generated documentation to have empty descriptions. For consistency with DriverCapabilitiesSchema (which uses both JSDoc comments and .describe() calls) and to ensure proper documentation generation, each field should include a .describe() call with the description text.

For example:

  • queryFilters: z.boolean().default(false).describe('Can execute WHERE clause filters natively?')
  • queryAggregations: z.boolean().default(false).describe('Can perform aggregation (group by, sum, avg)?')

This would ensure the generated documentation tables include meaningful descriptions for each capability.

Copilot uses AI. Check for mistakes.

/** Can execute WHERE clause filters natively? */
queryFilters: z.boolean().default(false),

CopilotAIJan 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The removal of the aggregation capability field and its replacement with queryAggregations is a breaking change. While this rename provides better clarity and consistency with the new query capability naming scheme, any existing code that references capabilities.aggregation will break.

Consider:

  1. Adding a migration guide or deprecation notice in the PR description
  2. If backwards compatibility is required, temporarily supporting both field names with the old one marked as deprecated
  3. Documenting this breaking change in a CHANGELOG or migration guide
Suggested change
/**
* @deprecatedUse`queryAggregations`instead.
*Legacyaggregationcapabilityflagkeptforbackwardscompatibility.
*/
aggregation: z.boolean().default(false).describe('Deprecated: use queryAggregations'),

Copilot uses AI. Check for mistakes.
CopilotAIand others added 3 commits January 21, 2026 04:26
Add missing query operation capabilities (queryFilters, queryAggregations,
querySorting, queryPagination, queryWindowFunctions, querySubqueries) to
match the updated DriverCapabilitiesSchema.
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Based on code review, updated capability flags to accurately reflect the
current implementation. Only queryPagination, jsonFields, and arrayFields
are actually supported.
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/mtests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@hotlong
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add granular query operation capabilities to driver schema - #49

Merged
hotlong merged 8 commits into
mainfrom
copilot/document-driver-capabilities
Jan 21, 2026
Merged

Add granular query operation capabilities to driver schema#49
hotlong merged 8 commits into
mainfrom
copilot/document-driver-capabilities

Conversation

CopilotAI commented Jan 21, 2026

Copy link
Copy Markdown
Contributor

Drivers currently can only declare high-level capabilities (transactions, joins, full-text search). No mechanism exists to specify support for individual query operations, preventing ObjectQL from determining whether to push operations to the driver or compute in-memory.

Changes

Schema Enhancements

  • Added 6 query capability flags to DriverCapabilitiesSchema and DatasourceCapabilities:
    • queryFilters - WHERE clause support
    • queryAggregations - GROUP BY/aggregation functions
    • querySorting - ORDER BY support
    • queryPagination - LIMIT/OFFSET support
    • queryWindowFunctions - Window functions with OVER clause
    • querySubqueries - Nested SELECT support

Test Coverage

  • Updated all driver test fixtures with new capability flags
  • Added memory driver example demonstrating limited query support
  • Added realistic capability matrices for PostgreSQL, MongoDB, Salesforce, and Redis

Generated Artifacts

  • Updated JSON schemas and documentation

Example

// Memory driver - compute all operations in-memoryconstmemoryDriver: DriverInterface={supports: {queryFilters: false,queryAggregations: false,querySorting: false,queryPagination: false,queryWindowFunctions: false,querySubqueries: false,// ...}};// PostgreSQL - push all operations to databaseconstpostgresDriver: DriverInterface={supports: {queryFilters: true,queryAggregations: true,querySorting: true,queryPagination: true,queryWindowFunctions: true,querySubqueries: true,// ...}};

ObjectQL can now inspect these flags to determine whether to push query operations to the driver or handle them in-memory.

Original prompt

如何约定driver已经实现的能力比如目前的内存驱动实际上不支持查询条件


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

@vercel

vercelBot commented Jan 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentReviewUpdated (UTC)
specErrorErrorJan 21, 2026 4:29am

Request Review

Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
CopilotAI changed the title [WIP] Document driver capabilities regarding current limitationsAdd granular query operation capabilities to driver schemaJan 21, 2026
CopilotAI requested a review from hotlongJanuary 21, 2026 02:51
@hotlong

Copy link
Copy Markdown
Contributor

@copilot 目前实现已经非常完整,我只有一个小的建议供参考:

• 默认值考虑:目前所有新标志的默认值似乎都是 false(在 JSON Schema 中显式设为 false,Zod 中虽未显式但在测试中体现了这一点)。这是一个安全的默认策略(“悲观策略”),确保了如果驱动没声明支持,引擎会兜底处理。这很好。

@hotlong
hotlong marked this pull request as ready for review January 21, 2026 04:20
CopilotAI review requested due to automatic review settings January 21, 2026 04:20
@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation protocol:system tests size/m labels Jan 21, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds granular query operation capabilities to the driver schema, enabling ObjectQL to determine which query operations can be pushed to the database driver versus computed in-memory. The PR introduces 6 new capability flags for common query operations (filters, aggregations, sorting, pagination, window functions, and subqueries).

Changes:

  • Added 6 new query capability boolean flags to DriverCapabilitiesSchema and DatasourceCapabilities schemas
  • Updated all test fixtures with realistic capability matrices for PostgreSQL, MongoDB, Salesforce, Redis, and a new memory driver example
  • Regenerated JSON schemas and documentation with new capability fields

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
packages/spec/src/system/driver.zod.tsAdded 6 query capability fields to DriverCapabilitiesSchema with comprehensive JSDoc documentation and .describe() calls
packages/spec/src/system/datasource.zod.tsAdded 6 query capability fields to DatasourceCapabilities; removed aggregation field in favor of queryAggregations
packages/spec/src/system/driver.test.tsUpdated all test fixtures with new capability flags; added realistic examples for PostgreSQL, MongoDB, Salesforce, Redis, and memory drivers
packages/spec/json-schema/DriverInterface.jsonAuto-generated JSON schema updated with new required capability fields
packages/spec/json-schema/DriverDefinition.jsonAuto-generated JSON schema updated with new capability fields and defaults
packages/spec/json-schema/DriverCapabilities.jsonAuto-generated JSON schema updated with new required capability fields
packages/spec/json-schema/DatasourceCapabilities.jsonAuto-generated JSON schema updated with new capability fields and defaults
packages/spec/json-schema/Datasource.jsonAuto-generated JSON schema updated with new capability fields
content/docs/references/system/integration/DatasourceCapabilities.mdxAuto-generated documentation updated with new capability fields (missing descriptions)
content/docs/references/system/DriverCapabilities.mdxAuto-generated documentation updated with new capability fields and descriptions

Comment on lines +65 to +81
/** Can execute WHERE clause filters natively? */
queryFilters: z.boolean().default(false),

/** Can perform aggregation (group by, sum, avg)? */
queryAggregations: z.boolean().default(false),

/** Can perform ORDER BY sorting? */
querySorting: z.boolean().default(false),

/** Can perform LIMIT/OFFSET pagination? */
queryPagination: z.boolean().default(false),

/** Can perform window functions? */
queryWindowFunctions: z.boolean().default(false),

/** Can perform subqueries? */
querySubqueries: z.boolean().default(false),

CopilotAIJan 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new query capability fields in DatasourceCapabilities lack .describe() method calls, which causes the auto-generated documentation to have empty descriptions. For consistency with DriverCapabilitiesSchema (which uses both JSDoc comments and .describe() calls) and to ensure proper documentation generation, each field should include a .describe() call with the description text.

For example:

  • queryFilters: z.boolean().default(false).describe('Can execute WHERE clause filters natively?')
  • queryAggregations: z.boolean().default(false).describe('Can perform aggregation (group by, sum, avg)?')

This would ensure the generated documentation tables include meaningful descriptions for each capability.

Copilot uses AI. Check for mistakes.

/** Can execute WHERE clause filters natively? */
queryFilters: z.boolean().default(false),

CopilotAIJan 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The removal of the aggregation capability field and its replacement with queryAggregations is a breaking change. While this rename provides better clarity and consistency with the new query capability naming scheme, any existing code that references capabilities.aggregation will break.

Consider:

  1. Adding a migration guide or deprecation notice in the PR description
  2. If backwards compatibility is required, temporarily supporting both field names with the old one marked as deprecated
  3. Documenting this breaking change in a CHANGELOG or migration guide
Suggested change
/**
* @deprecatedUse`queryAggregations`instead.
*Legacyaggregationcapabilityflagkeptforbackwardscompatibility.
*/
aggregation: z.boolean().default(false).describe('Deprecated: use queryAggregations'),

Copilot uses AI. Check for mistakes.
CopilotAIand others added 3 commits January 21, 2026 04:26
Add missing query operation capabilities (queryFilters, queryAggregations,
querySorting, queryPagination, queryWindowFunctions, querySubqueries) to
match the updated DriverCapabilitiesSchema.
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Based on code review, updated capability flags to accurately reflect the
current implementation. Only queryPagination, jsonFields, and arrayFields
are actually supported.
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/mtests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@hotlong
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add granular query operation capabilities to driver schema - #49

Merged
hotlong merged 8 commits into
mainfrom
copilot/document-driver-capabilities
Jan 21, 2026
Merged

Add granular query operation capabilities to driver schema#49
hotlong merged 8 commits into
mainfrom
copilot/document-driver-capabilities

Conversation

CopilotAI commented Jan 21, 2026

Copy link
Copy Markdown
Contributor

Drivers currently can only declare high-level capabilities (transactions, joins, full-text search). No mechanism exists to specify support for individual query operations, preventing ObjectQL from determining whether to push operations to the driver or compute in-memory.

Changes

Schema Enhancements

  • Added 6 query capability flags to DriverCapabilitiesSchema and DatasourceCapabilities:
    • queryFilters - WHERE clause support
    • queryAggregations - GROUP BY/aggregation functions
    • querySorting - ORDER BY support
    • queryPagination - LIMIT/OFFSET support
    • queryWindowFunctions - Window functions with OVER clause
    • querySubqueries - Nested SELECT support

Test Coverage

  • Updated all driver test fixtures with new capability flags
  • Added memory driver example demonstrating limited query support
  • Added realistic capability matrices for PostgreSQL, MongoDB, Salesforce, and Redis

Generated Artifacts

  • Updated JSON schemas and documentation

Example

// Memory driver - compute all operations in-memoryconstmemoryDriver: DriverInterface={supports: {queryFilters: false,queryAggregations: false,querySorting: false,queryPagination: false,queryWindowFunctions: false,querySubqueries: false,// ...}};// PostgreSQL - push all operations to databaseconstpostgresDriver: DriverInterface={supports: {queryFilters: true,queryAggregations: true,querySorting: true,queryPagination: true,queryWindowFunctions: true,querySubqueries: true,// ...}};

ObjectQL can now inspect these flags to determine whether to push query operations to the driver or handle them in-memory.

Original prompt

如何约定driver已经实现的能力比如目前的内存驱动实际上不支持查询条件


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

@vercel

vercelBot commented Jan 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentReviewUpdated (UTC)
specErrorErrorJan 21, 2026 4:29am

Request Review

Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
CopilotAI changed the title [WIP] Document driver capabilities regarding current limitationsAdd granular query operation capabilities to driver schemaJan 21, 2026
CopilotAI requested a review from hotlongJanuary 21, 2026 02:51
@hotlong

Copy link
Copy Markdown
Contributor

@copilot 目前实现已经非常完整,我只有一个小的建议供参考:

• 默认值考虑:目前所有新标志的默认值似乎都是 false(在 JSON Schema 中显式设为 false,Zod 中虽未显式但在测试中体现了这一点)。这是一个安全的默认策略(“悲观策略”),确保了如果驱动没声明支持,引擎会兜底处理。这很好。

@hotlong
hotlong marked this pull request as ready for review January 21, 2026 04:20
CopilotAI review requested due to automatic review settings January 21, 2026 04:20
@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation protocol:system tests size/m labels Jan 21, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds granular query operation capabilities to the driver schema, enabling ObjectQL to determine which query operations can be pushed to the database driver versus computed in-memory. The PR introduces 6 new capability flags for common query operations (filters, aggregations, sorting, pagination, window functions, and subqueries).

Changes:

  • Added 6 new query capability boolean flags to DriverCapabilitiesSchema and DatasourceCapabilities schemas
  • Updated all test fixtures with realistic capability matrices for PostgreSQL, MongoDB, Salesforce, Redis, and a new memory driver example
  • Regenerated JSON schemas and documentation with new capability fields

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
packages/spec/src/system/driver.zod.tsAdded 6 query capability fields to DriverCapabilitiesSchema with comprehensive JSDoc documentation and .describe() calls
packages/spec/src/system/datasource.zod.tsAdded 6 query capability fields to DatasourceCapabilities; removed aggregation field in favor of queryAggregations
packages/spec/src/system/driver.test.tsUpdated all test fixtures with new capability flags; added realistic examples for PostgreSQL, MongoDB, Salesforce, Redis, and memory drivers
packages/spec/json-schema/DriverInterface.jsonAuto-generated JSON schema updated with new required capability fields
packages/spec/json-schema/DriverDefinition.jsonAuto-generated JSON schema updated with new capability fields and defaults
packages/spec/json-schema/DriverCapabilities.jsonAuto-generated JSON schema updated with new required capability fields
packages/spec/json-schema/DatasourceCapabilities.jsonAuto-generated JSON schema updated with new capability fields and defaults
packages/spec/json-schema/Datasource.jsonAuto-generated JSON schema updated with new capability fields
content/docs/references/system/integration/DatasourceCapabilities.mdxAuto-generated documentation updated with new capability fields (missing descriptions)
content/docs/references/system/DriverCapabilities.mdxAuto-generated documentation updated with new capability fields and descriptions

Comment on lines +65 to +81
/** Can execute WHERE clause filters natively? */
queryFilters: z.boolean().default(false),

/** Can perform aggregation (group by, sum, avg)? */
queryAggregations: z.boolean().default(false),

/** Can perform ORDER BY sorting? */
querySorting: z.boolean().default(false),

/** Can perform LIMIT/OFFSET pagination? */
queryPagination: z.boolean().default(false),

/** Can perform window functions? */
queryWindowFunctions: z.boolean().default(false),

/** Can perform subqueries? */
querySubqueries: z.boolean().default(false),

CopilotAIJan 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new query capability fields in DatasourceCapabilities lack .describe() method calls, which causes the auto-generated documentation to have empty descriptions. For consistency with DriverCapabilitiesSchema (which uses both JSDoc comments and .describe() calls) and to ensure proper documentation generation, each field should include a .describe() call with the description text.

For example:

  • queryFilters: z.boolean().default(false).describe('Can execute WHERE clause filters natively?')
  • queryAggregations: z.boolean().default(false).describe('Can perform aggregation (group by, sum, avg)?')

This would ensure the generated documentation tables include meaningful descriptions for each capability.

Copilot uses AI. Check for mistakes.

/** Can execute WHERE clause filters natively? */
queryFilters: z.boolean().default(false),

CopilotAIJan 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The removal of the aggregation capability field and its replacement with queryAggregations is a breaking change. While this rename provides better clarity and consistency with the new query capability naming scheme, any existing code that references capabilities.aggregation will break.

Consider:

  1. Adding a migration guide or deprecation notice in the PR description
  2. If backwards compatibility is required, temporarily supporting both field names with the old one marked as deprecated
  3. Documenting this breaking change in a CHANGELOG or migration guide
Suggested change
/**
* @deprecatedUse`queryAggregations`instead.
*Legacyaggregationcapabilityflagkeptforbackwardscompatibility.
*/
aggregation: z.boolean().default(false).describe('Deprecated: use queryAggregations'),

Copilot uses AI. Check for mistakes.
CopilotAIand others added 3 commits January 21, 2026 04:26
Add missing query operation capabilities (queryFilters, queryAggregations,
querySorting, queryPagination, queryWindowFunctions, querySubqueries) to
match the updated DriverCapabilitiesSchema.
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Based on code review, updated capability flags to accurately reflect the
current implementation. Only queryPagination, jsonFields, and arrayFields
are actually supported.
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/mtests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@hotlong
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add granular query operation capabilities to driver schema - #49

Merged
hotlong merged 8 commits into
mainfrom
copilot/document-driver-capabilities
Jan 21, 2026
Merged

Add granular query operation capabilities to driver schema#49
hotlong merged 8 commits into
mainfrom
copilot/document-driver-capabilities

Conversation

CopilotAI commented Jan 21, 2026

Copy link
Copy Markdown
Contributor

Drivers currently can only declare high-level capabilities (transactions, joins, full-text search). No mechanism exists to specify support for individual query operations, preventing ObjectQL from determining whether to push operations to the driver or compute in-memory.

Changes

Schema Enhancements

  • Added 6 query capability flags to DriverCapabilitiesSchema and DatasourceCapabilities:
    • queryFilters - WHERE clause support
    • queryAggregations - GROUP BY/aggregation functions
    • querySorting - ORDER BY support
    • queryPagination - LIMIT/OFFSET support
    • queryWindowFunctions - Window functions with OVER clause
    • querySubqueries - Nested SELECT support

Test Coverage

  • Updated all driver test fixtures with new capability flags
  • Added memory driver example demonstrating limited query support
  • Added realistic capability matrices for PostgreSQL, MongoDB, Salesforce, and Redis

Generated Artifacts

  • Updated JSON schemas and documentation

Example

// Memory driver - compute all operations in-memoryconstmemoryDriver: DriverInterface={supports: {queryFilters: false,queryAggregations: false,querySorting: false,queryPagination: false,queryWindowFunctions: false,querySubqueries: false,// ...}};// PostgreSQL - push all operations to databaseconstpostgresDriver: DriverInterface={supports: {queryFilters: true,queryAggregations: true,querySorting: true,queryPagination: true,queryWindowFunctions: true,querySubqueries: true,// ...}};

ObjectQL can now inspect these flags to determine whether to push query operations to the driver or handle them in-memory.

Original prompt

如何约定driver已经实现的能力比如目前的内存驱动实际上不支持查询条件


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

@vercel

vercelBot commented Jan 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentReviewUpdated (UTC)
specErrorErrorJan 21, 2026 4:29am

Request Review

Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
CopilotAI changed the title [WIP] Document driver capabilities regarding current limitationsAdd granular query operation capabilities to driver schemaJan 21, 2026
CopilotAI requested a review from hotlongJanuary 21, 2026 02:51
@hotlong

Copy link
Copy Markdown
Contributor

@copilot 目前实现已经非常完整,我只有一个小的建议供参考:

• 默认值考虑:目前所有新标志的默认值似乎都是 false(在 JSON Schema 中显式设为 false,Zod 中虽未显式但在测试中体现了这一点)。这是一个安全的默认策略(“悲观策略”),确保了如果驱动没声明支持,引擎会兜底处理。这很好。

@hotlong
hotlong marked this pull request as ready for review January 21, 2026 04:20
CopilotAI review requested due to automatic review settings January 21, 2026 04:20
@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation protocol:system tests size/m labels Jan 21, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds granular query operation capabilities to the driver schema, enabling ObjectQL to determine which query operations can be pushed to the database driver versus computed in-memory. The PR introduces 6 new capability flags for common query operations (filters, aggregations, sorting, pagination, window functions, and subqueries).

Changes:

  • Added 6 new query capability boolean flags to DriverCapabilitiesSchema and DatasourceCapabilities schemas
  • Updated all test fixtures with realistic capability matrices for PostgreSQL, MongoDB, Salesforce, Redis, and a new memory driver example
  • Regenerated JSON schemas and documentation with new capability fields

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
packages/spec/src/system/driver.zod.tsAdded 6 query capability fields to DriverCapabilitiesSchema with comprehensive JSDoc documentation and .describe() calls
packages/spec/src/system/datasource.zod.tsAdded 6 query capability fields to DatasourceCapabilities; removed aggregation field in favor of queryAggregations
packages/spec/src/system/driver.test.tsUpdated all test fixtures with new capability flags; added realistic examples for PostgreSQL, MongoDB, Salesforce, Redis, and memory drivers
packages/spec/json-schema/DriverInterface.jsonAuto-generated JSON schema updated with new required capability fields
packages/spec/json-schema/DriverDefinition.jsonAuto-generated JSON schema updated with new capability fields and defaults
packages/spec/json-schema/DriverCapabilities.jsonAuto-generated JSON schema updated with new required capability fields
packages/spec/json-schema/DatasourceCapabilities.jsonAuto-generated JSON schema updated with new capability fields and defaults
packages/spec/json-schema/Datasource.jsonAuto-generated JSON schema updated with new capability fields
content/docs/references/system/integration/DatasourceCapabilities.mdxAuto-generated documentation updated with new capability fields (missing descriptions)
content/docs/references/system/DriverCapabilities.mdxAuto-generated documentation updated with new capability fields and descriptions

Comment on lines +65 to +81
/** Can execute WHERE clause filters natively? */
queryFilters: z.boolean().default(false),

/** Can perform aggregation (group by, sum, avg)? */
queryAggregations: z.boolean().default(false),

/** Can perform ORDER BY sorting? */
querySorting: z.boolean().default(false),

/** Can perform LIMIT/OFFSET pagination? */
queryPagination: z.boolean().default(false),

/** Can perform window functions? */
queryWindowFunctions: z.boolean().default(false),

/** Can perform subqueries? */
querySubqueries: z.boolean().default(false),

CopilotAIJan 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new query capability fields in DatasourceCapabilities lack .describe() method calls, which causes the auto-generated documentation to have empty descriptions. For consistency with DriverCapabilitiesSchema (which uses both JSDoc comments and .describe() calls) and to ensure proper documentation generation, each field should include a .describe() call with the description text.

For example:

  • queryFilters: z.boolean().default(false).describe('Can execute WHERE clause filters natively?')
  • queryAggregations: z.boolean().default(false).describe('Can perform aggregation (group by, sum, avg)?')

This would ensure the generated documentation tables include meaningful descriptions for each capability.

Copilot uses AI. Check for mistakes.

/** Can execute WHERE clause filters natively? */
queryFilters: z.boolean().default(false),

CopilotAIJan 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The removal of the aggregation capability field and its replacement with queryAggregations is a breaking change. While this rename provides better clarity and consistency with the new query capability naming scheme, any existing code that references capabilities.aggregation will break.

Consider:

  1. Adding a migration guide or deprecation notice in the PR description
  2. If backwards compatibility is required, temporarily supporting both field names with the old one marked as deprecated
  3. Documenting this breaking change in a CHANGELOG or migration guide
Suggested change
/**
* @deprecatedUse`queryAggregations`instead.
*Legacyaggregationcapabilityflagkeptforbackwardscompatibility.
*/
aggregation: z.boolean().default(false).describe('Deprecated: use queryAggregations'),

Copilot uses AI. Check for mistakes.
CopilotAIand others added 3 commits January 21, 2026 04:26
Add missing query operation capabilities (queryFilters, queryAggregations,
querySorting, queryPagination, queryWindowFunctions, querySubqueries) to
match the updated DriverCapabilitiesSchema.
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Based on code review, updated capability flags to accurately reflect the
current implementation. Only queryPagination, jsonFields, and arrayFields
are actually supported.
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/mtests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@hotlong
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add granular query operation capabilities to driver schema - #49

Merged
hotlong merged 8 commits into
mainfrom
copilot/document-driver-capabilities
Jan 21, 2026
Merged

Add granular query operation capabilities to driver schema#49
hotlong merged 8 commits into
mainfrom
copilot/document-driver-capabilities

Conversation

CopilotAI commented Jan 21, 2026

Copy link
Copy Markdown
Contributor

Drivers currently can only declare high-level capabilities (transactions, joins, full-text search). No mechanism exists to specify support for individual query operations, preventing ObjectQL from determining whether to push operations to the driver or compute in-memory.

Changes

Schema Enhancements

  • Added 6 query capability flags to DriverCapabilitiesSchema and DatasourceCapabilities:
    • queryFilters - WHERE clause support
    • queryAggregations - GROUP BY/aggregation functions
    • querySorting - ORDER BY support
    • queryPagination - LIMIT/OFFSET support
    • queryWindowFunctions - Window functions with OVER clause
    • querySubqueries - Nested SELECT support

Test Coverage

  • Updated all driver test fixtures with new capability flags
  • Added memory driver example demonstrating limited query support
  • Added realistic capability matrices for PostgreSQL, MongoDB, Salesforce, and Redis

Generated Artifacts

  • Updated JSON schemas and documentation

Example

// Memory driver - compute all operations in-memoryconstmemoryDriver: DriverInterface={supports: {queryFilters: false,queryAggregations: false,querySorting: false,queryPagination: false,queryWindowFunctions: false,querySubqueries: false,// ...}};// PostgreSQL - push all operations to databaseconstpostgresDriver: DriverInterface={supports: {queryFilters: true,queryAggregations: true,querySorting: true,queryPagination: true,queryWindowFunctions: true,querySubqueries: true,// ...}};

ObjectQL can now inspect these flags to determine whether to push query operations to the driver or handle them in-memory.

Original prompt

如何约定driver已经实现的能力比如目前的内存驱动实际上不支持查询条件


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

@vercel

vercelBot commented Jan 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentReviewUpdated (UTC)
specErrorErrorJan 21, 2026 4:29am

Request Review

Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
CopilotAI changed the title [WIP] Document driver capabilities regarding current limitationsAdd granular query operation capabilities to driver schemaJan 21, 2026
CopilotAI requested a review from hotlongJanuary 21, 2026 02:51
@hotlong

Copy link
Copy Markdown
Contributor

@copilot 目前实现已经非常完整,我只有一个小的建议供参考:

• 默认值考虑:目前所有新标志的默认值似乎都是 false(在 JSON Schema 中显式设为 false,Zod 中虽未显式但在测试中体现了这一点)。这是一个安全的默认策略(“悲观策略”),确保了如果驱动没声明支持,引擎会兜底处理。这很好。

@hotlong
hotlong marked this pull request as ready for review January 21, 2026 04:20
CopilotAI review requested due to automatic review settings January 21, 2026 04:20
@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation protocol:system tests size/m labels Jan 21, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request adds granular query operation capabilities to the driver schema, enabling ObjectQL to determine which query operations can be pushed to the database driver versus computed in-memory. The PR introduces 6 new capability flags for common query operations (filters, aggregations, sorting, pagination, window functions, and subqueries).

Changes:

  • Added 6 new query capability boolean flags to DriverCapabilitiesSchema and DatasourceCapabilities schemas
  • Updated all test fixtures with realistic capability matrices for PostgreSQL, MongoDB, Salesforce, Redis, and a new memory driver example
  • Regenerated JSON schemas and documentation with new capability fields

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
FileDescription
packages/spec/src/system/driver.zod.tsAdded 6 query capability fields to DriverCapabilitiesSchema with comprehensive JSDoc documentation and .describe() calls
packages/spec/src/system/datasource.zod.tsAdded 6 query capability fields to DatasourceCapabilities; removed aggregation field in favor of queryAggregations
packages/spec/src/system/driver.test.tsUpdated all test fixtures with new capability flags; added realistic examples for PostgreSQL, MongoDB, Salesforce, Redis, and memory drivers
packages/spec/json-schema/DriverInterface.jsonAuto-generated JSON schema updated with new required capability fields
packages/spec/json-schema/DriverDefinition.jsonAuto-generated JSON schema updated with new capability fields and defaults
packages/spec/json-schema/DriverCapabilities.jsonAuto-generated JSON schema updated with new required capability fields
packages/spec/json-schema/DatasourceCapabilities.jsonAuto-generated JSON schema updated with new capability fields and defaults
packages/spec/json-schema/Datasource.jsonAuto-generated JSON schema updated with new capability fields
content/docs/references/system/integration/DatasourceCapabilities.mdxAuto-generated documentation updated with new capability fields (missing descriptions)
content/docs/references/system/DriverCapabilities.mdxAuto-generated documentation updated with new capability fields and descriptions

Comment on lines +65 to +81
/** Can execute WHERE clause filters natively? */
queryFilters: z.boolean().default(false),

/** Can perform aggregation (group by, sum, avg)? */
queryAggregations: z.boolean().default(false),

/** Can perform ORDER BY sorting? */
querySorting: z.boolean().default(false),

/** Can perform LIMIT/OFFSET pagination? */
queryPagination: z.boolean().default(false),

/** Can perform window functions? */
queryWindowFunctions: z.boolean().default(false),

/** Can perform subqueries? */
querySubqueries: z.boolean().default(false),

CopilotAIJan 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new query capability fields in DatasourceCapabilities lack .describe() method calls, which causes the auto-generated documentation to have empty descriptions. For consistency with DriverCapabilitiesSchema (which uses both JSDoc comments and .describe() calls) and to ensure proper documentation generation, each field should include a .describe() call with the description text.

For example:

  • queryFilters: z.boolean().default(false).describe('Can execute WHERE clause filters natively?')
  • queryAggregations: z.boolean().default(false).describe('Can perform aggregation (group by, sum, avg)?')

This would ensure the generated documentation tables include meaningful descriptions for each capability.

Copilot uses AI. Check for mistakes.

/** Can execute WHERE clause filters natively? */
queryFilters: z.boolean().default(false),

CopilotAIJan 21, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The removal of the aggregation capability field and its replacement with queryAggregations is a breaking change. While this rename provides better clarity and consistency with the new query capability naming scheme, any existing code that references capabilities.aggregation will break.

Consider:

  1. Adding a migration guide or deprecation notice in the PR description
  2. If backwards compatibility is required, temporarily supporting both field names with the old one marked as deprecated
  3. Documenting this breaking change in a CHANGELOG or migration guide
Suggested change
/**
* @deprecatedUse`queryAggregations`instead.
*Legacyaggregationcapabilityflagkeptforbackwardscompatibility.
*/
aggregation: z.boolean().default(false).describe('Deprecated: use queryAggregations'),

Copilot uses AI. Check for mistakes.
CopilotAIand others added 3 commits January 21, 2026 04:26
Add missing query operation capabilities (queryFilters, queryAggregations,
querySorting, queryPagination, queryWindowFunctions, querySubqueries) to
match the updated DriverCapabilitiesSchema.
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Based on code review, updated capability flags to accurately reflect the
current implementation. Only queryPagination, jsonFields, and arrayFields
are actually supported.
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/mtests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@hotlong