You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
refactor(copilot): drop the direct view tools, pin views through table_views
Views stay with the table subagent's multiplexed table_views; the
orchestrator delegates as before. Its create/update/set-default results now
name the table and view they wrote, and resource extraction turns that into
the pinned table resource, so the panel opens (or switches) the table on
that view. Unknown column names are classified as validation errors, and
create_view's isDefault lands in the same locked transaction as the insert.
The stream/persistence plumbing for viewId, the pin store, and the lock on
default promotion are unchanged.
"Saved configuration, in the same shape as an entry of the table's views.json. Omit for an unfiltered view that shows every row and column.",
1760
-
properties: {
1761
-
filter: {
1762
-
type: ['object','null'],
1763
-
description:
1764
-
'Row predicate, same grammar as query_rows filters: {"all":[...]} / {"any":[...]} of {field, op, value} leaves with exact column NAMES. Omit or null to show every row.',
1765
-
},
1766
-
hiddenColumns: {
1767
-
type: 'array',
1768
-
description:
1769
-
'Column names hidden in the UI while this view is active. Display-only — queries through the view still return every column.',
1770
-
items: {type: 'string'},
1771
-
},
1772
-
sort: {
1773
-
type: ['array','null'],
1774
-
description:
1775
-
'Ordered sort spec, e.g. [{"field":"due","direction":"asc"}], with column NAMES. Omit or null for the table\'s natural order.',
1776
-
items: {
1777
-
type: 'object',
1778
-
properties: {
1779
-
direction: {
1780
-
type: 'string',
1781
-
description: 'Sort direction for this column.',
1782
-
enum: ['asc','desc'],
1783
-
},
1784
-
field: {type: 'string',description: 'Exact column name to sort by.'},
1785
-
},
1786
-
required: ['field','direction'],
1787
-
},
1788
-
},
1789
-
},
1790
-
},
1791
-
isDefault: {
1792
-
type: 'boolean',
1793
-
description:
1794
-
"Make this view the table's default: the view the table opens on when nobody has picked one. At most one per table; setting it clears the previous default.",
1795
-
},
1796
-
name: {
1797
-
type: 'string',
1798
-
description:
1799
-
'Display name for the view, e.g. "Overdue". Defaults to "View N" when omitted. References always use the view id, so the name is purely display.',
1800
-
},
1801
-
tableId: {type: 'string',description: "Table ID (tbl_...) from the table's meta.json."},
1802
-
},
1803
-
required: ['tableId'],
1804
-
},
1805
-
resultSchema: {
1806
-
type: 'object',
1807
-
properties: {
1808
-
data: {
1809
-
type: 'object',
1810
-
description:
1811
-
'{ viewId, tableId, tableName, view } — view is the created view in the same shape as a views.json entry.',
1812
-
},
1813
-
message: {
1814
-
type: 'string',
1815
-
description: 'Human-readable outcome summary, including the new view id.',
1816
-
},
1817
-
success: {type: 'boolean',description: 'Whether the view was created.'},
"Configuration parts to replace, in the same shape as an entry of the table's views.json. Each part you include replaces the saved one; omitted parts are kept.",
2331
-
properties: {
2332
-
filter: {
2333
-
type: ['object','null'],
2334
-
description:
2335
-
'Row predicate, same grammar as query_rows filters: {"all":[...]} / {"any":[...]} of {field, op, value} leaves with exact column NAMES. Omit to keep the saved filter; null to clear it.',
2336
-
},
2337
-
hiddenColumns: {
2338
-
type: 'array',
2339
-
description:
2340
-
'Column names hidden in the UI while this view is active; replaces the saved list (pass [] to unhide everything). Display-only — queries through the view still return every column.',
2341
-
items: {type: 'string'},
2342
-
},
2343
-
sort: {
2344
-
type: ['array','null'],
2345
-
description:
2346
-
'Ordered sort spec, e.g. [{"field":"due","direction":"asc"}], with column NAMES. Omit to keep the saved sort; null to clear it.',
2347
-
items: {
2348
-
type: 'object',
2349
-
properties: {
2350
-
direction: {
2351
-
type: 'string',
2352
-
description: 'Sort direction for this column.',
2353
-
enum: ['asc','desc'],
2354
-
},
2355
-
field: {type: 'string',description: 'Exact column name to sort by.'},
2356
-
},
2357
-
required: ['field','direction'],
2358
-
},
2359
-
},
2360
-
},
2361
-
},
2362
-
isDefault: {
2363
-
type: 'boolean',
2364
-
description:
2365
-
"true makes this view the table's default (clearing the previous default); false demotes it. Omit to leave the flag as it is.",
2366
-
},
2367
-
name: {
2368
-
type: 'string',
2369
-
description: 'New display name for the view. Omit to keep the current name.',
2370
-
},
2371
-
viewId: {type: 'string',description: "View ID from the table's views.json."},
2372
-
},
2373
-
required: ['viewId'],
2374
-
},
2375
-
resultSchema: {
2376
-
type: 'object',
2377
-
properties: {
2378
-
data: {
2379
-
type: 'object',
2380
-
description:
2381
-
'{ viewId, tableId, tableName, view } — view is the updated view in the same shape as a views.json entry.',
'Saved row predicate, same grammar as query_rows filters: {"all":[...]} / {"any":[...]} of {field, op, value} leaves with exact column NAMES. Omit or null for an unfiltered view.',
'View display name (required for create_view; optional rename on update_view). Free-form label; references always use the view ID, so names are purely display.',
5960
5808
},
5961
5809
sort: {
5962
-
type: 'array',
5810
+
type: ['array','null'],
5963
5811
description:
5964
5812
'Saved ordered sort spec, e.g. [{"field":"due","direction":"asc"}], column NAMES. Omit or null for default ordering.',
0 commit comments