@abraca/mcp 1.6.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abracadabra-mcp.cjs +888 -19
- package/dist/abracadabra-mcp.cjs.map +1 -1
- package/dist/abracadabra-mcp.esm.js +888 -19
- package/dist/abracadabra-mcp.esm.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/package.json +1 -1
- package/src/converters/page-types.ts +408 -0
- package/src/converters/types.ts +15 -11
- package/src/resources/agent-guide.ts +151 -29
- package/src/server.ts +13 -0
- package/src/tools/meta.ts +1 -1
- package/src/tools/tree.ts +27 -2
package/dist/abracadabra-mcp.cjs
CHANGED
|
@@ -20149,6 +20149,17 @@ var AbracadabraMCPServer = class {
|
|
|
20149
20149
|
getTrashMap() {
|
|
20150
20150
|
return this._activeConnection?.doc.getMap("doc-trash") ?? null;
|
|
20151
20151
|
}
|
|
20152
|
+
/** Get plugin names enabled in the active space via space-plugins Y.Map. */
|
|
20153
|
+
getEnabledPluginNames() {
|
|
20154
|
+
const doc = this._activeConnection?.doc;
|
|
20155
|
+
if (!doc) return [];
|
|
20156
|
+
const pluginsMap = doc.getMap("space-plugins");
|
|
20157
|
+
const names = [];
|
|
20158
|
+
pluginsMap.forEach((value, key) => {
|
|
20159
|
+
if ((value?.toJSON ? value.toJSON() : value)?.enabled) names.push(key);
|
|
20160
|
+
});
|
|
20161
|
+
return names;
|
|
20162
|
+
}
|
|
20152
20163
|
/**
|
|
20153
20164
|
* Get or create a child provider for a given document ID.
|
|
20154
20165
|
* Caches providers and waits for sync before returning.
|
|
@@ -20435,6 +20446,724 @@ function docToSpaceMeta(doc) {
|
|
|
20435
20446
|
};
|
|
20436
20447
|
}
|
|
20437
20448
|
|
|
20449
|
+
//#endregion
|
|
20450
|
+
//#region packages/mcp/src/converters/page-types.ts
|
|
20451
|
+
const PAGE_TYPES = {
|
|
20452
|
+
doc: {
|
|
20453
|
+
key: "doc",
|
|
20454
|
+
label: "Document",
|
|
20455
|
+
icon: "file-text",
|
|
20456
|
+
description: "Rich text document with real-time collaboration",
|
|
20457
|
+
core: true,
|
|
20458
|
+
supportsChildren: true
|
|
20459
|
+
},
|
|
20460
|
+
kanban: {
|
|
20461
|
+
key: "kanban",
|
|
20462
|
+
label: "Kanban",
|
|
20463
|
+
icon: "kanban",
|
|
20464
|
+
description: "Drag-and-drop task board with columns and cards",
|
|
20465
|
+
core: true,
|
|
20466
|
+
supportsChildren: true,
|
|
20467
|
+
childLabel: "Column",
|
|
20468
|
+
grandchildLabel: "Card",
|
|
20469
|
+
defaultMetaFields: [{
|
|
20470
|
+
type: "select",
|
|
20471
|
+
key: "kanbanColumnWidth",
|
|
20472
|
+
options: [
|
|
20473
|
+
"narrow",
|
|
20474
|
+
"default",
|
|
20475
|
+
"wide"
|
|
20476
|
+
],
|
|
20477
|
+
label: "Column Width"
|
|
20478
|
+
}]
|
|
20479
|
+
},
|
|
20480
|
+
gallery: {
|
|
20481
|
+
key: "gallery",
|
|
20482
|
+
label: "Gallery",
|
|
20483
|
+
icon: "images",
|
|
20484
|
+
description: "Visual grid of items with rich content",
|
|
20485
|
+
core: true,
|
|
20486
|
+
supportsChildren: true,
|
|
20487
|
+
childLabel: "Item",
|
|
20488
|
+
metaSchema: [
|
|
20489
|
+
{
|
|
20490
|
+
type: "location",
|
|
20491
|
+
latKey: "geoLat",
|
|
20492
|
+
lngKey: "geoLng",
|
|
20493
|
+
label: "Location"
|
|
20494
|
+
},
|
|
20495
|
+
{
|
|
20496
|
+
type: "datetime",
|
|
20497
|
+
key: "datetimeStart",
|
|
20498
|
+
label: "Date"
|
|
20499
|
+
},
|
|
20500
|
+
{
|
|
20501
|
+
type: "tags",
|
|
20502
|
+
key: "tags",
|
|
20503
|
+
label: "Tags"
|
|
20504
|
+
},
|
|
20505
|
+
{
|
|
20506
|
+
type: "rating",
|
|
20507
|
+
key: "rating",
|
|
20508
|
+
max: 5,
|
|
20509
|
+
label: "Rating"
|
|
20510
|
+
},
|
|
20511
|
+
{
|
|
20512
|
+
type: "icon",
|
|
20513
|
+
key: "icon",
|
|
20514
|
+
label: "Icon"
|
|
20515
|
+
},
|
|
20516
|
+
{
|
|
20517
|
+
type: "colorPreset",
|
|
20518
|
+
key: "color",
|
|
20519
|
+
presets: [
|
|
20520
|
+
"#6366f1",
|
|
20521
|
+
"#ec4899",
|
|
20522
|
+
"#f97316",
|
|
20523
|
+
"#22c55e",
|
|
20524
|
+
"#3b82f6",
|
|
20525
|
+
"#a855f7"
|
|
20526
|
+
],
|
|
20527
|
+
label: "Color"
|
|
20528
|
+
}
|
|
20529
|
+
],
|
|
20530
|
+
defaultMetaFields: [
|
|
20531
|
+
{
|
|
20532
|
+
type: "number",
|
|
20533
|
+
key: "galleryColumns",
|
|
20534
|
+
min: 1,
|
|
20535
|
+
max: 6,
|
|
20536
|
+
step: 1,
|
|
20537
|
+
label: "Columns"
|
|
20538
|
+
},
|
|
20539
|
+
{
|
|
20540
|
+
type: "select",
|
|
20541
|
+
key: "galleryAspect",
|
|
20542
|
+
options: [
|
|
20543
|
+
"square",
|
|
20544
|
+
"4:3",
|
|
20545
|
+
"3:2",
|
|
20546
|
+
"16:9",
|
|
20547
|
+
"free"
|
|
20548
|
+
],
|
|
20549
|
+
label: "Aspect Ratio"
|
|
20550
|
+
},
|
|
20551
|
+
{
|
|
20552
|
+
type: "select",
|
|
20553
|
+
key: "galleryCardStyle",
|
|
20554
|
+
options: [
|
|
20555
|
+
"default",
|
|
20556
|
+
"compact",
|
|
20557
|
+
"detailed"
|
|
20558
|
+
],
|
|
20559
|
+
label: "Card Style"
|
|
20560
|
+
},
|
|
20561
|
+
{
|
|
20562
|
+
type: "toggle",
|
|
20563
|
+
key: "galleryShowLabels",
|
|
20564
|
+
label: "Show Labels"
|
|
20565
|
+
},
|
|
20566
|
+
{
|
|
20567
|
+
type: "select",
|
|
20568
|
+
key: "gallerySortBy",
|
|
20569
|
+
options: [
|
|
20570
|
+
"manual",
|
|
20571
|
+
"date",
|
|
20572
|
+
"name",
|
|
20573
|
+
"rating"
|
|
20574
|
+
],
|
|
20575
|
+
label: "Sort"
|
|
20576
|
+
}
|
|
20577
|
+
]
|
|
20578
|
+
},
|
|
20579
|
+
table: {
|
|
20580
|
+
key: "table",
|
|
20581
|
+
label: "Table",
|
|
20582
|
+
icon: "table",
|
|
20583
|
+
description: "Collaborative spreadsheet with custom fields",
|
|
20584
|
+
core: true,
|
|
20585
|
+
supportsChildren: true,
|
|
20586
|
+
childLabel: "Column",
|
|
20587
|
+
grandchildLabel: "Row",
|
|
20588
|
+
defaultMetaFields: [{
|
|
20589
|
+
type: "select",
|
|
20590
|
+
key: "tableMode",
|
|
20591
|
+
options: ["hierarchy", "flat"],
|
|
20592
|
+
label: "Mode"
|
|
20593
|
+
}, {
|
|
20594
|
+
type: "select",
|
|
20595
|
+
key: "tableSortDir",
|
|
20596
|
+
options: ["asc", "desc"],
|
|
20597
|
+
label: "Sort Direction"
|
|
20598
|
+
}]
|
|
20599
|
+
},
|
|
20600
|
+
outline: {
|
|
20601
|
+
key: "outline",
|
|
20602
|
+
label: "Outline",
|
|
20603
|
+
icon: "list-tree",
|
|
20604
|
+
description: "Hierarchical outline with keyboard navigation",
|
|
20605
|
+
core: true,
|
|
20606
|
+
supportsChildren: true,
|
|
20607
|
+
childLabel: "Item",
|
|
20608
|
+
defaultDepth: -1
|
|
20609
|
+
},
|
|
20610
|
+
checklist: {
|
|
20611
|
+
key: "checklist",
|
|
20612
|
+
label: "Checklist",
|
|
20613
|
+
icon: "check-square",
|
|
20614
|
+
description: "Collaborative checklist with sub-tasks, drag-and-drop, and due dates",
|
|
20615
|
+
core: true,
|
|
20616
|
+
supportsChildren: true,
|
|
20617
|
+
childLabel: "Task",
|
|
20618
|
+
defaultDepth: -1,
|
|
20619
|
+
metaSchema: [
|
|
20620
|
+
{
|
|
20621
|
+
type: "toggle",
|
|
20622
|
+
key: "checked",
|
|
20623
|
+
label: "Done"
|
|
20624
|
+
},
|
|
20625
|
+
{
|
|
20626
|
+
type: "select",
|
|
20627
|
+
key: "priority",
|
|
20628
|
+
options: [
|
|
20629
|
+
"none",
|
|
20630
|
+
"low",
|
|
20631
|
+
"medium",
|
|
20632
|
+
"high"
|
|
20633
|
+
],
|
|
20634
|
+
label: "Priority"
|
|
20635
|
+
},
|
|
20636
|
+
{
|
|
20637
|
+
type: "date",
|
|
20638
|
+
key: "dateEnd",
|
|
20639
|
+
label: "Due date"
|
|
20640
|
+
}
|
|
20641
|
+
],
|
|
20642
|
+
defaultMetaFields: [{
|
|
20643
|
+
type: "select",
|
|
20644
|
+
key: "checklistFilter",
|
|
20645
|
+
options: [
|
|
20646
|
+
"all",
|
|
20647
|
+
"active",
|
|
20648
|
+
"completed"
|
|
20649
|
+
],
|
|
20650
|
+
label: "Filter"
|
|
20651
|
+
}, {
|
|
20652
|
+
type: "select",
|
|
20653
|
+
key: "checklistSort",
|
|
20654
|
+
options: [
|
|
20655
|
+
"manual",
|
|
20656
|
+
"priority",
|
|
20657
|
+
"due"
|
|
20658
|
+
],
|
|
20659
|
+
label: "Sort"
|
|
20660
|
+
}]
|
|
20661
|
+
},
|
|
20662
|
+
graph: {
|
|
20663
|
+
key: "graph",
|
|
20664
|
+
label: "Graph",
|
|
20665
|
+
icon: "git-fork",
|
|
20666
|
+
description: "Force-directed knowledge graph — full document tree as nodes & edges",
|
|
20667
|
+
core: true,
|
|
20668
|
+
supportsChildren: true,
|
|
20669
|
+
childLabel: "Node",
|
|
20670
|
+
defaultMetaFields: [{
|
|
20671
|
+
type: "toggle",
|
|
20672
|
+
key: "showRefEdges",
|
|
20673
|
+
label: "Show Ref Edges",
|
|
20674
|
+
default: true
|
|
20675
|
+
}]
|
|
20676
|
+
},
|
|
20677
|
+
timeline: {
|
|
20678
|
+
key: "timeline",
|
|
20679
|
+
label: "Timeline",
|
|
20680
|
+
icon: "gantt-chart",
|
|
20681
|
+
description: "Gantt-style project timeline with epics and tasks",
|
|
20682
|
+
core: true,
|
|
20683
|
+
supportsChildren: true,
|
|
20684
|
+
childLabel: "Epic",
|
|
20685
|
+
grandchildLabel: "Task",
|
|
20686
|
+
metaSchema: [
|
|
20687
|
+
{
|
|
20688
|
+
type: "daterange",
|
|
20689
|
+
startKey: "dateStart",
|
|
20690
|
+
endKey: "dateEnd"
|
|
20691
|
+
},
|
|
20692
|
+
{
|
|
20693
|
+
type: "slider",
|
|
20694
|
+
key: "taskProgress",
|
|
20695
|
+
min: 0,
|
|
20696
|
+
max: 100,
|
|
20697
|
+
label: "Progress"
|
|
20698
|
+
},
|
|
20699
|
+
{
|
|
20700
|
+
type: "colorPreset",
|
|
20701
|
+
key: "color",
|
|
20702
|
+
presets: [
|
|
20703
|
+
"#6366f1",
|
|
20704
|
+
"#818cf8",
|
|
20705
|
+
"#f97316",
|
|
20706
|
+
"#22c55e",
|
|
20707
|
+
"#3b82f6",
|
|
20708
|
+
"#a855f7"
|
|
20709
|
+
],
|
|
20710
|
+
label: "Color"
|
|
20711
|
+
}
|
|
20712
|
+
]
|
|
20713
|
+
},
|
|
20714
|
+
calendar: {
|
|
20715
|
+
key: "calendar",
|
|
20716
|
+
label: "Calendar",
|
|
20717
|
+
icon: "calendar",
|
|
20718
|
+
description: "Event calendar with month, week, and day views",
|
|
20719
|
+
core: true,
|
|
20720
|
+
supportsChildren: true,
|
|
20721
|
+
childLabel: "Event",
|
|
20722
|
+
metaSchema: [
|
|
20723
|
+
{
|
|
20724
|
+
type: "datetimerange",
|
|
20725
|
+
startKey: "datetimeStart",
|
|
20726
|
+
endKey: "datetimeEnd",
|
|
20727
|
+
allDayKey: "allDay"
|
|
20728
|
+
},
|
|
20729
|
+
{
|
|
20730
|
+
type: "colorPreset",
|
|
20731
|
+
key: "color",
|
|
20732
|
+
presets: [
|
|
20733
|
+
"#6366f1",
|
|
20734
|
+
"#ec4899",
|
|
20735
|
+
"#f97316",
|
|
20736
|
+
"#22c55e",
|
|
20737
|
+
"#3b82f6",
|
|
20738
|
+
"#a855f7"
|
|
20739
|
+
],
|
|
20740
|
+
label: "Color"
|
|
20741
|
+
},
|
|
20742
|
+
{
|
|
20743
|
+
type: "icon",
|
|
20744
|
+
key: "icon",
|
|
20745
|
+
label: "Icon"
|
|
20746
|
+
}
|
|
20747
|
+
],
|
|
20748
|
+
defaultMetaFields: [
|
|
20749
|
+
{
|
|
20750
|
+
type: "select",
|
|
20751
|
+
key: "calendarWeekStart",
|
|
20752
|
+
options: ["sun", "mon"],
|
|
20753
|
+
label: "Week Starts"
|
|
20754
|
+
},
|
|
20755
|
+
{
|
|
20756
|
+
type: "select",
|
|
20757
|
+
key: "calendarView",
|
|
20758
|
+
options: [
|
|
20759
|
+
"month",
|
|
20760
|
+
"week",
|
|
20761
|
+
"day"
|
|
20762
|
+
],
|
|
20763
|
+
label: "Default View"
|
|
20764
|
+
},
|
|
20765
|
+
{
|
|
20766
|
+
type: "toggle",
|
|
20767
|
+
key: "calendarShowWeekNumbers",
|
|
20768
|
+
label: "Show Week Numbers"
|
|
20769
|
+
}
|
|
20770
|
+
]
|
|
20771
|
+
},
|
|
20772
|
+
map: {
|
|
20773
|
+
key: "map",
|
|
20774
|
+
label: "Map",
|
|
20775
|
+
icon: "map",
|
|
20776
|
+
description: "Collaborative world map with shared markers",
|
|
20777
|
+
core: true,
|
|
20778
|
+
supportsChildren: true,
|
|
20779
|
+
childLabel: "Location",
|
|
20780
|
+
defaultMetaFields: [{
|
|
20781
|
+
type: "toggle",
|
|
20782
|
+
key: "mapShowLabels",
|
|
20783
|
+
label: "Show Labels",
|
|
20784
|
+
default: true
|
|
20785
|
+
}]
|
|
20786
|
+
},
|
|
20787
|
+
dashboard: {
|
|
20788
|
+
key: "dashboard",
|
|
20789
|
+
label: "Dashboard",
|
|
20790
|
+
icon: "layout-dashboard",
|
|
20791
|
+
description: "Arrange documents as draggable icons with optional widget views",
|
|
20792
|
+
core: true,
|
|
20793
|
+
supportsChildren: true,
|
|
20794
|
+
childLabel: "Item"
|
|
20795
|
+
},
|
|
20796
|
+
call: {
|
|
20797
|
+
key: "call",
|
|
20798
|
+
label: "Call",
|
|
20799
|
+
icon: "phone",
|
|
20800
|
+
description: "Video call room with live audio and screen sharing",
|
|
20801
|
+
core: true,
|
|
20802
|
+
supportsChildren: false
|
|
20803
|
+
},
|
|
20804
|
+
chart: {
|
|
20805
|
+
key: "chart",
|
|
20806
|
+
label: "Chart",
|
|
20807
|
+
icon: "bar-chart-3",
|
|
20808
|
+
description: "Charts — manual data points or aggregation over document trees",
|
|
20809
|
+
core: true,
|
|
20810
|
+
supportsChildren: true,
|
|
20811
|
+
childLabel: "Data Point",
|
|
20812
|
+
grandchildLabel: "Data Point",
|
|
20813
|
+
metaSchema: [
|
|
20814
|
+
{
|
|
20815
|
+
type: "number",
|
|
20816
|
+
key: "number",
|
|
20817
|
+
step: .01,
|
|
20818
|
+
label: "Value"
|
|
20819
|
+
},
|
|
20820
|
+
{
|
|
20821
|
+
type: "colorPreset",
|
|
20822
|
+
key: "color",
|
|
20823
|
+
presets: [
|
|
20824
|
+
"#6366f1",
|
|
20825
|
+
"#ec4899",
|
|
20826
|
+
"#f97316",
|
|
20827
|
+
"#22c55e",
|
|
20828
|
+
"#3b82f6",
|
|
20829
|
+
"#a855f7",
|
|
20830
|
+
"#14b8a6",
|
|
20831
|
+
"#eab308"
|
|
20832
|
+
],
|
|
20833
|
+
label: "Color"
|
|
20834
|
+
},
|
|
20835
|
+
{
|
|
20836
|
+
type: "tags",
|
|
20837
|
+
key: "tags",
|
|
20838
|
+
label: "Tags"
|
|
20839
|
+
}
|
|
20840
|
+
],
|
|
20841
|
+
defaultMetaFields: [
|
|
20842
|
+
{
|
|
20843
|
+
type: "select",
|
|
20844
|
+
key: "chartType",
|
|
20845
|
+
options: [
|
|
20846
|
+
"bar",
|
|
20847
|
+
"stacked bar",
|
|
20848
|
+
"line",
|
|
20849
|
+
"donut",
|
|
20850
|
+
"treemap"
|
|
20851
|
+
],
|
|
20852
|
+
label: "Chart Type"
|
|
20853
|
+
},
|
|
20854
|
+
{
|
|
20855
|
+
type: "select",
|
|
20856
|
+
key: "chartMetric",
|
|
20857
|
+
options: [
|
|
20858
|
+
"value",
|
|
20859
|
+
"type",
|
|
20860
|
+
"tag",
|
|
20861
|
+
"status",
|
|
20862
|
+
"priority",
|
|
20863
|
+
"activity",
|
|
20864
|
+
"completion"
|
|
20865
|
+
],
|
|
20866
|
+
label: "Metric"
|
|
20867
|
+
},
|
|
20868
|
+
{
|
|
20869
|
+
type: "select",
|
|
20870
|
+
key: "chartColorScheme",
|
|
20871
|
+
options: [
|
|
20872
|
+
"default",
|
|
20873
|
+
"warm",
|
|
20874
|
+
"cool",
|
|
20875
|
+
"mono"
|
|
20876
|
+
],
|
|
20877
|
+
label: "Colors"
|
|
20878
|
+
},
|
|
20879
|
+
{
|
|
20880
|
+
type: "number",
|
|
20881
|
+
key: "chartLimit",
|
|
20882
|
+
min: 3,
|
|
20883
|
+
max: 30,
|
|
20884
|
+
step: 1,
|
|
20885
|
+
label: "Max Items"
|
|
20886
|
+
},
|
|
20887
|
+
{
|
|
20888
|
+
type: "toggle",
|
|
20889
|
+
key: "chartShowLegend",
|
|
20890
|
+
label: "Show Legend",
|
|
20891
|
+
default: true
|
|
20892
|
+
},
|
|
20893
|
+
{
|
|
20894
|
+
type: "toggle",
|
|
20895
|
+
key: "chartShowValues",
|
|
20896
|
+
label: "Show Values"
|
|
20897
|
+
}
|
|
20898
|
+
]
|
|
20899
|
+
},
|
|
20900
|
+
sheets: {
|
|
20901
|
+
key: "sheets",
|
|
20902
|
+
label: "Sheets",
|
|
20903
|
+
icon: "grid-3x3",
|
|
20904
|
+
description: "Spreadsheet — cells, formulas, and formatting in a collaborative grid",
|
|
20905
|
+
core: true,
|
|
20906
|
+
supportsChildren: true,
|
|
20907
|
+
childLabel: "Column",
|
|
20908
|
+
grandchildLabel: "Cell",
|
|
20909
|
+
defaultMetaFields: [
|
|
20910
|
+
{
|
|
20911
|
+
type: "number",
|
|
20912
|
+
key: "sheetsDefaultColWidth",
|
|
20913
|
+
min: 40,
|
|
20914
|
+
max: 500,
|
|
20915
|
+
step: 10,
|
|
20916
|
+
label: "Column Width"
|
|
20917
|
+
},
|
|
20918
|
+
{
|
|
20919
|
+
type: "number",
|
|
20920
|
+
key: "sheetsDefaultRowHeight",
|
|
20921
|
+
min: 20,
|
|
20922
|
+
max: 100,
|
|
20923
|
+
step: 2,
|
|
20924
|
+
label: "Row Height"
|
|
20925
|
+
},
|
|
20926
|
+
{
|
|
20927
|
+
type: "toggle",
|
|
20928
|
+
key: "sheetsShowGridlines",
|
|
20929
|
+
label: "Gridlines"
|
|
20930
|
+
}
|
|
20931
|
+
]
|
|
20932
|
+
},
|
|
20933
|
+
slides: {
|
|
20934
|
+
key: "slides",
|
|
20935
|
+
label: "Slides",
|
|
20936
|
+
icon: "presentation",
|
|
20937
|
+
description: "Presentation slides with two-axis navigation",
|
|
20938
|
+
core: true,
|
|
20939
|
+
supportsChildren: true,
|
|
20940
|
+
childLabel: "Slide",
|
|
20941
|
+
grandchildLabel: "Sub-slide",
|
|
20942
|
+
metaSchema: [{
|
|
20943
|
+
type: "select",
|
|
20944
|
+
key: "slidesTransition",
|
|
20945
|
+
options: [
|
|
20946
|
+
"none",
|
|
20947
|
+
"fade",
|
|
20948
|
+
"slide"
|
|
20949
|
+
],
|
|
20950
|
+
label: "Transition"
|
|
20951
|
+
}, {
|
|
20952
|
+
type: "colorPreset",
|
|
20953
|
+
key: "color",
|
|
20954
|
+
presets: [
|
|
20955
|
+
"#6366f1",
|
|
20956
|
+
"#ec4899",
|
|
20957
|
+
"#f97316",
|
|
20958
|
+
"#22c55e",
|
|
20959
|
+
"#3b82f6",
|
|
20960
|
+
"#a855f7"
|
|
20961
|
+
],
|
|
20962
|
+
label: "Accent"
|
|
20963
|
+
}],
|
|
20964
|
+
defaultMetaFields: [{
|
|
20965
|
+
type: "select",
|
|
20966
|
+
key: "slidesTheme",
|
|
20967
|
+
options: ["dark", "light"],
|
|
20968
|
+
label: "Theme"
|
|
20969
|
+
}]
|
|
20970
|
+
},
|
|
20971
|
+
overview: {
|
|
20972
|
+
key: "overview",
|
|
20973
|
+
label: "Overview",
|
|
20974
|
+
icon: "radar",
|
|
20975
|
+
description: "Space home — activity, people, stats, and health at a glance",
|
|
20976
|
+
core: true,
|
|
20977
|
+
supportsChildren: true,
|
|
20978
|
+
childLabel: "Page"
|
|
20979
|
+
},
|
|
20980
|
+
spatial: {
|
|
20981
|
+
key: "spatial",
|
|
20982
|
+
label: "Spatial",
|
|
20983
|
+
icon: "box",
|
|
20984
|
+
description: "3D scene with collaborative objects and real-time presence",
|
|
20985
|
+
core: false,
|
|
20986
|
+
plugin: "spatial",
|
|
20987
|
+
supportsChildren: true,
|
|
20988
|
+
childLabel: "Object",
|
|
20989
|
+
grandchildLabel: "Part",
|
|
20990
|
+
defaultDepth: -1,
|
|
20991
|
+
metaSchema: [
|
|
20992
|
+
{
|
|
20993
|
+
type: "select",
|
|
20994
|
+
key: "spShape",
|
|
20995
|
+
options: [
|
|
20996
|
+
"box",
|
|
20997
|
+
"sphere",
|
|
20998
|
+
"cylinder",
|
|
20999
|
+
"cone",
|
|
21000
|
+
"plane",
|
|
21001
|
+
"torus",
|
|
21002
|
+
"glb"
|
|
21003
|
+
],
|
|
21004
|
+
label: "Shape"
|
|
21005
|
+
},
|
|
21006
|
+
{
|
|
21007
|
+
type: "colorPreset",
|
|
21008
|
+
key: "color",
|
|
21009
|
+
presets: [
|
|
21010
|
+
"#6366f1",
|
|
21011
|
+
"#ef4444",
|
|
21012
|
+
"#22c55e",
|
|
21013
|
+
"#3b82f6",
|
|
21014
|
+
"#f97316",
|
|
21015
|
+
"#a855f7",
|
|
21016
|
+
"#ec4899",
|
|
21017
|
+
"#14b8a6"
|
|
21018
|
+
],
|
|
21019
|
+
label: "Color"
|
|
21020
|
+
},
|
|
21021
|
+
{
|
|
21022
|
+
type: "slider",
|
|
21023
|
+
key: "spOpacity",
|
|
21024
|
+
min: 0,
|
|
21025
|
+
max: 100,
|
|
21026
|
+
label: "Opacity"
|
|
21027
|
+
},
|
|
21028
|
+
{
|
|
21029
|
+
type: "number",
|
|
21030
|
+
key: "spX",
|
|
21031
|
+
step: .1,
|
|
21032
|
+
label: "X"
|
|
21033
|
+
},
|
|
21034
|
+
{
|
|
21035
|
+
type: "number",
|
|
21036
|
+
key: "spY",
|
|
21037
|
+
step: .1,
|
|
21038
|
+
label: "Y"
|
|
21039
|
+
},
|
|
21040
|
+
{
|
|
21041
|
+
type: "number",
|
|
21042
|
+
key: "spZ",
|
|
21043
|
+
step: .1,
|
|
21044
|
+
label: "Z"
|
|
21045
|
+
},
|
|
21046
|
+
{
|
|
21047
|
+
type: "number",
|
|
21048
|
+
key: "spRX",
|
|
21049
|
+
min: -180,
|
|
21050
|
+
max: 180,
|
|
21051
|
+
step: 1,
|
|
21052
|
+
label: "Rot X"
|
|
21053
|
+
},
|
|
21054
|
+
{
|
|
21055
|
+
type: "number",
|
|
21056
|
+
key: "spRY",
|
|
21057
|
+
min: -180,
|
|
21058
|
+
max: 180,
|
|
21059
|
+
step: 1,
|
|
21060
|
+
label: "Rot Y"
|
|
21061
|
+
},
|
|
21062
|
+
{
|
|
21063
|
+
type: "number",
|
|
21064
|
+
key: "spRZ",
|
|
21065
|
+
min: -180,
|
|
21066
|
+
max: 180,
|
|
21067
|
+
step: 1,
|
|
21068
|
+
label: "Rot Z"
|
|
21069
|
+
},
|
|
21070
|
+
{
|
|
21071
|
+
type: "number",
|
|
21072
|
+
key: "spSX",
|
|
21073
|
+
min: .01,
|
|
21074
|
+
max: 100,
|
|
21075
|
+
step: .1,
|
|
21076
|
+
label: "Scale X"
|
|
21077
|
+
},
|
|
21078
|
+
{
|
|
21079
|
+
type: "number",
|
|
21080
|
+
key: "spSY",
|
|
21081
|
+
min: .01,
|
|
21082
|
+
max: 100,
|
|
21083
|
+
step: .1,
|
|
21084
|
+
label: "Scale Y"
|
|
21085
|
+
},
|
|
21086
|
+
{
|
|
21087
|
+
type: "number",
|
|
21088
|
+
key: "spSZ",
|
|
21089
|
+
min: .01,
|
|
21090
|
+
max: 100,
|
|
21091
|
+
step: .1,
|
|
21092
|
+
label: "Scale Z"
|
|
21093
|
+
}
|
|
21094
|
+
],
|
|
21095
|
+
defaultMetaFields: [{
|
|
21096
|
+
type: "toggle",
|
|
21097
|
+
key: "spatialGridVisible",
|
|
21098
|
+
label: "Show Grid",
|
|
21099
|
+
default: true
|
|
21100
|
+
}]
|
|
21101
|
+
},
|
|
21102
|
+
media: {
|
|
21103
|
+
key: "media",
|
|
21104
|
+
label: "Media",
|
|
21105
|
+
icon: "disc-3",
|
|
21106
|
+
description: "Media player with synced listening and playlists",
|
|
21107
|
+
core: false,
|
|
21108
|
+
plugin: "media",
|
|
21109
|
+
supportsChildren: true,
|
|
21110
|
+
childLabel: "Track",
|
|
21111
|
+
defaultDepth: -1,
|
|
21112
|
+
metaSchema: [{
|
|
21113
|
+
type: "tags",
|
|
21114
|
+
key: "tags",
|
|
21115
|
+
label: "Tags"
|
|
21116
|
+
}],
|
|
21117
|
+
defaultMetaFields: [{
|
|
21118
|
+
type: "select",
|
|
21119
|
+
key: "mediaRepeat",
|
|
21120
|
+
options: [
|
|
21121
|
+
"off",
|
|
21122
|
+
"all",
|
|
21123
|
+
"one"
|
|
21124
|
+
],
|
|
21125
|
+
label: "Repeat"
|
|
21126
|
+
}, {
|
|
21127
|
+
type: "toggle",
|
|
21128
|
+
key: "mediaShuffle",
|
|
21129
|
+
label: "Shuffle"
|
|
21130
|
+
}]
|
|
21131
|
+
},
|
|
21132
|
+
coder: {
|
|
21133
|
+
key: "coder",
|
|
21134
|
+
label: "Coder",
|
|
21135
|
+
icon: "code-2",
|
|
21136
|
+
description: "Collaborative multi-file coding environment",
|
|
21137
|
+
core: false,
|
|
21138
|
+
plugin: "coder",
|
|
21139
|
+
supportsChildren: true,
|
|
21140
|
+
childLabel: "File",
|
|
21141
|
+
defaultDepth: -1,
|
|
21142
|
+
metaSchema: [{
|
|
21143
|
+
type: "select",
|
|
21144
|
+
key: "fileType",
|
|
21145
|
+
options: [
|
|
21146
|
+
"vue",
|
|
21147
|
+
"ts",
|
|
21148
|
+
"js",
|
|
21149
|
+
"css",
|
|
21150
|
+
"json",
|
|
21151
|
+
"folder"
|
|
21152
|
+
],
|
|
21153
|
+
label: "Type"
|
|
21154
|
+
}, {
|
|
21155
|
+
type: "toggle",
|
|
21156
|
+
key: "entry",
|
|
21157
|
+
label: "Entry Point"
|
|
21158
|
+
}]
|
|
21159
|
+
}
|
|
21160
|
+
};
|
|
21161
|
+
const TYPE_ALIASES = { desktop: "dashboard" };
|
|
21162
|
+
function resolvePageType(key) {
|
|
21163
|
+
if (!key) return void 0;
|
|
21164
|
+
return PAGE_TYPES[TYPE_ALIASES[key] ?? key];
|
|
21165
|
+
}
|
|
21166
|
+
|
|
20438
21167
|
//#endregion
|
|
20439
21168
|
//#region packages/mcp/src/tools/tree.ts
|
|
20440
21169
|
/**
|
|
@@ -20600,7 +21329,7 @@ function registerTreeTools(mcp, server) {
|
|
|
20600
21329
|
mcp.tool("create_document", "Create a new document in the tree. Returns the new document ID.", {
|
|
20601
21330
|
parentId: zod.z.string().optional().describe("Parent document ID. Omit for top-level pages. Use a document ID for nested/child pages."),
|
|
20602
21331
|
label: zod.z.string().describe("Display name / title for the document."),
|
|
20603
|
-
type: zod.z.string().optional().describe("Page type — sets how this document renders. \"doc\" (rich text), \"kanban\" (columns → cards), \"table\" (columns → rows
|
|
21332
|
+
type: zod.z.string().optional().describe("Page type — sets how this document renders. Core types (always available): \"doc\" (rich text), \"kanban\" (columns → cards), \"table\" (columns → rows, positional), \"calendar\" (events with datetimeStart/End), \"timeline\" (epics → tasks with dateStart/End + taskProgress), \"checklist\" (tasks with checked/priority, unlimited nesting), \"outline\" (nested items, unlimited depth), \"gallery\" (visual grid with covers/ratings), \"map\" (markers/lines with geoLat/geoLng), \"graph\" (force-directed knowledge graph), \"dashboard\" (positioned widgets with deskX/deskY/deskMode), \"slides\" (slides → sub-slides with transitions), \"chart\" (bar/stacked bar/line/donut/treemap from data points or aggregation), \"sheets\" (spreadsheet with formulas and formatting), \"overview\" (space home — activity and stats), \"call\" (video call room, no children). Plugin types (require plugin enabled on the server): \"spatial\" (3D scene with spShape/spX/spY/spZ + universal color, plugin: spatial), \"media\" (audio/video player with playlists, plugin: media), \"coder\" (collaborative multi-file coding env with fileType/entry, plugin: coder). Alias: \"desktop\" → \"dashboard\". Omit to inherit parent view. Only set on the parent page, NEVER on child items."),
|
|
20604
21333
|
meta: zod.z.record(zod.z.unknown()).optional().describe("Initial metadata (PageMeta fields: color as hex string, icon as Lucide kebab-case name like \"star\"/\"code-2\"/\"users\" — never emoji, dateStart, dateEnd, priority 0-4, tags array, etc). Omit icon entirely to use page type default.")
|
|
20605
21334
|
}, async ({ parentId, label, type, meta }) => {
|
|
20606
21335
|
server.setAutoStatus("creating");
|
|
@@ -20761,7 +21490,7 @@ function registerTreeTools(mcp, server) {
|
|
|
20761
21490
|
});
|
|
20762
21491
|
mcp.tool("change_document_type", "Change the page type view of a document (data is preserved).", {
|
|
20763
21492
|
id: zod.z.string().describe("Document ID."),
|
|
20764
|
-
type: zod.z.string().describe("New page type: \"doc\", \"kanban\", \"table\", \"calendar\", \"timeline\", \"checklist\", \"outline\", \"gallery\", \"map\", \"graph\", \"dashboard\", \"
|
|
21493
|
+
type: zod.z.string().describe("New page type. Core: \"doc\", \"kanban\", \"table\", \"calendar\", \"timeline\", \"checklist\", \"outline\", \"gallery\", \"map\", \"graph\", \"dashboard\", \"slides\", \"chart\", \"sheets\", \"overview\", \"call\". Plugin (require plugin enabled): \"spatial\", \"media\", \"coder\". Switching preserves the tree — children, labels, and meta are all retained; only the view changes.")
|
|
20765
21494
|
}, async ({ id, type }) => {
|
|
20766
21495
|
server.setAutoStatus("writing");
|
|
20767
21496
|
server.setActiveToolCall({
|
|
@@ -20846,6 +21575,27 @@ function registerTreeTools(mcp, server) {
|
|
|
20846
21575
|
}, null, 2)
|
|
20847
21576
|
}] };
|
|
20848
21577
|
});
|
|
21578
|
+
mcp.tool("list_page_types", "Enumerate all known Abracadabra page types with their metadata schemas. Returns an array of { key, label, icon, description, core, plugin, supportsChildren, childLabel, grandchildLabel, defaultDepth, metaSchema, defaultMetaFields }. `metaSchema` describes fields that apply to DESCENDANTS (children, grandchildren, ...) of a page of this type. `defaultMetaFields` are view-config fields on the page doc itself. Plugin types (core: false) require the named plugin to be enabled on the server. Use this to discover what meta keys a given renderer supports instead of guessing.", { key: zod.z.string().optional().describe("Filter to a single type by key (e.g. \"kanban\", \"calendar\"). Aliases are resolved (e.g. \"desktop\" → \"dashboard\"). Omit to list all types.") }, async ({ key }) => {
|
|
21579
|
+
if (key) {
|
|
21580
|
+
const resolved = resolvePageType(key);
|
|
21581
|
+
if (!resolved) return { content: [{
|
|
21582
|
+
type: "text",
|
|
21583
|
+
text: `Unknown page type "${key}". Call list_page_types with no args to see all types.`
|
|
21584
|
+
}] };
|
|
21585
|
+
return { content: [{
|
|
21586
|
+
type: "text",
|
|
21587
|
+
text: JSON.stringify(resolved, null, 2)
|
|
21588
|
+
}] };
|
|
21589
|
+
}
|
|
21590
|
+
const all = Object.values(PAGE_TYPES);
|
|
21591
|
+
return { content: [{
|
|
21592
|
+
type: "text",
|
|
21593
|
+
text: JSON.stringify({
|
|
21594
|
+
types: all,
|
|
21595
|
+
aliases: TYPE_ALIASES
|
|
21596
|
+
}, null, 2)
|
|
21597
|
+
}] };
|
|
21598
|
+
});
|
|
20849
21599
|
}
|
|
20850
21600
|
|
|
20851
21601
|
//#endregion
|
|
@@ -22144,7 +22894,7 @@ function registerMetaTools(mcp, server) {
|
|
|
22144
22894
|
});
|
|
22145
22895
|
mcp.tool("update_metadata", "Update metadata fields on a document. Merges the provided fields into existing metadata.", {
|
|
22146
22896
|
docId: zod.z.string().describe("Document ID."),
|
|
22147
|
-
meta: zod.z.record(zod.z.unknown()).describe("Metadata fields to update (merged with existing). Universal keys: color (hex), icon (Lucide kebab-case — NEVER emoji), dateStart/dateEnd, datetimeStart/datetimeEnd, allDay, tags (string[]), checked (bool), priority (0=none,1=low,2=med,3=high,4=urgent), status, rating (0-5), url, email, phone, number, unit, subtitle, note, taskProgress (0-100), members ({id,label}[]), coverUploadId. Geo/Map: geoType (\"marker\"|\"line\"|\"measure\"), geoLat, geoLng, geoDescription. Spatial 3D: spShape (\"box\"|\"sphere\"|\"cylinder\"|\"cone\"|\"plane\"|\"torus\"|\"glb\"), spX/spY/spZ, spRX/spRY/spRZ, spSX/spSY/spSZ
|
|
22897
|
+
meta: zod.z.record(zod.z.unknown()).describe("Metadata fields to update (merged with existing). Universal keys: color (hex), icon (Lucide kebab-case — NEVER emoji), dateStart/dateEnd, datetimeStart/datetimeEnd, allDay, timeStart/timeEnd, tags (string[]), checked (bool), priority (0=none,1=low,2=med,3=high,4=urgent), status, rating (0-5), url, email, phone, number, unit, subtitle, note, taskProgress (0-100), members ({id,label}[]), coverUploadId, coverDocId, dateTaken. Geo/Map (children): geoType (\"marker\"|\"line\"|\"measure\"), geoLat, geoLng, geoDescription. Spatial 3D (children, plugin: spatial): spShape (\"box\"|\"sphere\"|\"cylinder\"|\"cone\"|\"plane\"|\"torus\"|\"glb\"), spX/spY/spZ, spRX/spRY/spRZ (deg), spSX/spSY/spSZ (scale), spOpacity (0-100), spModelUploadId, spModelDocId — spatial uses the universal `color` key, NOT spColor. Dashboard (children): deskX, deskY, deskZ, deskMode (\"icon\"|\"widget-sm\"|\"widget-lg\"). Mindmap-layout (children): mmX, mmY. Graph-layout (children): graphX, graphY, graphPinned. Slides (children): slidesTransition (\"none\"|\"fade\"|\"slide\"). Coder (children, plugin: coder): fileType (\"vue\"|\"ts\"|\"js\"|\"css\"|\"json\"|\"folder\"), entry (bool). Cell formatting (sheets cells): bold, italic, textColor, bgColor, align (\"left\"|\"center\"|\"right\"), formula. Renderer config (on the PAGE doc itself, not children): kanbanColumnWidth (\"narrow\"|\"default\"|\"wide\"), galleryColumns (1-6), galleryAspect (\"square\"|\"4:3\"|\"3:2\"|\"16:9\"|\"free\"), galleryCardStyle (\"default\"|\"compact\"|\"detailed\"), galleryShowLabels, gallerySortBy (\"manual\"|\"date\"|\"name\"|\"rating\"), calendarView (\"month\"|\"week\"|\"day\"), calendarWeekStart (\"sun\"|\"mon\"), calendarShowWeekNumbers, tableMode (\"hierarchy\"|\"flat\"), tableSortKey, tableSortDir (\"asc\"|\"desc\"), timelineZoom (\"week\"|\"month\"|\"quarter\"), timelinePixelsPerDay, timelineCenterDate (ISO date), checklistFilter (\"all\"|\"active\"|\"completed\"), checklistSort (\"manual\"|\"priority\"|\"due\"), mapShowLabels, graphSpacing (\"compact\"|\"default\"|\"spacious\"), graphShowLabels, graphEdgeThickness (\"thin\"|\"normal\"|\"thick\"), showRefEdges, mmSpacing, spatialGridVisible, slidesTheme (\"dark\"|\"light\"), chartType (\"bar\"|\"stacked bar\"|\"line\"|\"donut\"|\"treemap\"), chartMetric (\"value\"|\"type\"|\"tag\"|\"status\"|\"priority\"|\"activity\"|\"completion\"), chartColorScheme (\"default\"|\"warm\"|\"cool\"|\"mono\"), chartLimit (3-30), chartShowLegend, chartShowValues, sheetsDefaultColWidth (40-500), sheetsDefaultRowHeight (20-100), sheetsShowGridlines, sheetsFreezeRows, sheetsFreezeCols, mediaRepeat (\"off\"|\"all\"|\"one\"), mediaShuffle. Set a key to null to clear it.")
|
|
22148
22898
|
}, async ({ docId, meta }) => {
|
|
22149
22899
|
server.setAutoStatus("writing", docId);
|
|
22150
22900
|
server.setActiveToolCall({
|
|
@@ -22711,24 +23461,38 @@ If you are adding content to an existing space, call \`get_document_tree(rootId:
|
|
|
22711
23461
|
|
|
22712
23462
|
## Page Types Reference
|
|
22713
23463
|
|
|
23464
|
+
### Core Types (always available)
|
|
23465
|
+
|
|
22714
23466
|
| Type | Children Are | Grandchildren Are | Depth | Key Meta on Children |
|
|
22715
23467
|
|------|-------------|-------------------|-------|---------------------|
|
|
22716
23468
|
| **doc** | Sub-documents | Sub-sub-documents | ∞ | — |
|
|
22717
23469
|
| **kanban** | Columns | Cards | 2 | color, icon on cards |
|
|
22718
23470
|
| **table** | Columns | Cells (positional rows) | 2 | — |
|
|
22719
|
-
| **calendar** | Events | — | 1 | datetimeStart, datetimeEnd, allDay, color |
|
|
23471
|
+
| **calendar** | Events | — | 1 | datetimeStart, datetimeEnd, allDay, color, icon |
|
|
22720
23472
|
| **timeline** | Epics | Tasks | 2 | dateStart, dateEnd, taskProgress, color |
|
|
22721
23473
|
| **checklist** | Tasks | Sub-tasks | ∞ | checked, priority, dateEnd |
|
|
22722
23474
|
| **outline** | Items | Sub-items | ∞ | — |
|
|
22723
|
-
| **mindmap** | Central nodes | Branches | ∞ | mmX, mmY |
|
|
22724
23475
|
| **graph** | Nodes | — | 1 | graphX, graphY, graphPinned, color |
|
|
22725
|
-
| **gallery** | Items | — | 1 | geoLat, geoLng, datetimeStart, tags |
|
|
23476
|
+
| **gallery** | Items | — | 1 | geoLat, geoLng, datetimeStart, tags, rating, icon, color |
|
|
22726
23477
|
| **map** | Markers/Lines | Points (for lines) | 2 | geoType, geoLat, geoLng, icon, color |
|
|
22727
|
-
| **
|
|
22728
|
-
| **
|
|
22729
|
-
| **
|
|
22730
|
-
| **
|
|
22731
|
-
| **
|
|
23478
|
+
| **slides** | Slides | Sub-slides | 2 | slidesTransition, color |
|
|
23479
|
+
| **dashboard** | Items | — | 1 | deskX, deskY, deskZ, deskMode |
|
|
23480
|
+
| **chart** | Data points | Data points | 2 | number (value), color, tags |
|
|
23481
|
+
| **sheets** | Columns | Cells | 2 | formula, bold, italic, textColor, bgColor, align |
|
|
23482
|
+
| **overview** | Pages | — | 1 | — |
|
|
23483
|
+
| **call** | — (no children) | — | 0 | — |
|
|
23484
|
+
|
|
23485
|
+
Alias: \`desktop\` → \`dashboard\`.
|
|
23486
|
+
|
|
23487
|
+
### Plugin Types (require plugin enabled on the server)
|
|
23488
|
+
|
|
23489
|
+
| Type | Plugin | Children Are | Grandchildren Are | Depth | Key Meta on Children |
|
|
23490
|
+
|------|--------|-------------|-------------------|-------|---------------------|
|
|
23491
|
+
| **spatial** | spatial | Objects | Sub-parts | ∞ | spShape, spX/Y/Z, spRX/RY/RZ, spSX/SY/SZ, color, spOpacity |
|
|
23492
|
+
| **media** | media | Tracks | — | ∞ | tags |
|
|
23493
|
+
| **coder** | coder | Files/Folders | — | ∞ | fileType, entry |
|
|
23494
|
+
|
|
23495
|
+
> Spatial uses the universal \`color\` key for object color — there is no \`spColor\`.
|
|
22732
23496
|
|
|
22733
23497
|
---
|
|
22734
23498
|
|
|
@@ -22801,18 +23565,65 @@ If you are adding content to an existing space, call \`get_document_tree(rootId:
|
|
|
22801
23565
|
4. Modes: \`"icon"\` (small), \`"widget-sm"\` (240×180), \`"widget-lg"\` (400×320)
|
|
22802
23566
|
5. Grid uses 80px cells
|
|
22803
23567
|
|
|
22804
|
-
**Spatial (3D scene)
|
|
23568
|
+
**Spatial (3D scene)** *(requires spatial plugin):*
|
|
22805
23569
|
1. \`create_document(parentId, "3D Scene", "spatial")\`
|
|
22806
23570
|
2. Create objects: \`create_document(sceneId, "Red Cube")\`
|
|
22807
|
-
3. Set 3D properties: \`update_metadata(objId, { spShape: "box",
|
|
22808
|
-
4. Shapes: \`"box"\`, \`"sphere"\`, \`"cylinder"\`, \`"cone"\`, \`"plane"\`, \`"torus"\`, \`"glb"\` (uploaded 3D model)
|
|
23571
|
+
3. Set 3D properties: \`update_metadata(objId, { spShape: "box", color: "#ef4444", spX: 0, spY: 1, spZ: 0, spSX: 2, spSY: 2, spSZ: 2 })\`
|
|
23572
|
+
4. Shapes: \`"box"\`, \`"sphere"\`, \`"cylinder"\`, \`"cone"\`, \`"plane"\`, \`"torus"\`, \`"glb"\` (uploaded 3D model — set \`spModelUploadId\` and \`spModelDocId\`)
|
|
22809
23573
|
5. Rotation (degrees): \`spRX\`, \`spRY\`, \`spRZ\`. Scale: \`spSX\`, \`spSY\`, \`spSZ\` (default 1). Opacity: \`spOpacity\` (0–100)
|
|
23574
|
+
6. Use the universal \`color\` key — **never \`spColor\`**
|
|
22810
23575
|
|
|
22811
23576
|
**Outline (nested items):**
|
|
22812
23577
|
1. \`create_document(parentId, "Meeting Notes", "outline")\`
|
|
22813
23578
|
2. Create items: \`create_document(outlineId, "Agenda Item 1")\`
|
|
22814
23579
|
3. Create sub-items (unlimited depth): \`create_document(itemId, "Sub-point")\`
|
|
22815
23580
|
|
|
23581
|
+
**Slides (presentation with two-axis nav):**
|
|
23582
|
+
1. \`create_document(parentId, "Q1 Review", "slides")\`
|
|
23583
|
+
2. Create slides as direct children: \`create_document(deckId, "Intro")\`
|
|
23584
|
+
3. Create sub-slides (vertical navigation) as grandchildren: \`create_document(slideId, "Deep dive")\`
|
|
23585
|
+
4. Per-slide transition: \`update_metadata(slideId, { slidesTransition: "fade", color: "#6366f1" })\`
|
|
23586
|
+
5. Deck-level theme: \`update_metadata(deckId, { slidesTheme: "dark" })\`
|
|
23587
|
+
|
|
23588
|
+
**Chart (data viz — manual or aggregation):**
|
|
23589
|
+
1. \`create_document(parentId, "Sales", "chart")\`
|
|
23590
|
+
2. Configure: \`update_metadata(chartId, { chartType: "bar", chartMetric: "value", chartShowLegend: true, chartLimit: 10 })\`
|
|
23591
|
+
3. Modes:
|
|
23592
|
+
- **Manual data points**: create children with \`number\` (value) and optional \`tags\`/\`color\`
|
|
23593
|
+
\`create_document(chartId, "Q1")\` then \`update_metadata(dpId, { number: 42500, color: "#6366f1" })\`
|
|
23594
|
+
- **Aggregation**: set \`chartMetric\` to \`"type"\`/\`"tag"\`/\`"status"\`/\`"priority"\`/\`"activity"\`/\`"completion"\` and point the chart at a subtree — it aggregates the descendants' meta automatically
|
|
23595
|
+
4. Chart types: \`"bar"\`, \`"stacked bar"\`, \`"line"\`, \`"donut"\`, \`"treemap"\`
|
|
23596
|
+
5. Color schemes: \`"default"\`, \`"warm"\`, \`"cool"\`, \`"mono"\`
|
|
23597
|
+
|
|
23598
|
+
**Sheets (spreadsheet with formulas):**
|
|
23599
|
+
1. \`create_document(parentId, "Budget", "sheets")\`
|
|
23600
|
+
2. Create columns: \`create_document(sheetId, "A")\`, \`create_document(sheetId, "B")\`
|
|
23601
|
+
3. Create cells under columns (positional rows, like \`table\`)
|
|
23602
|
+
4. Formulas on cells: \`update_metadata(cellId, { formula: "=A1+B1" })\`
|
|
23603
|
+
5. Cell formatting: \`update_metadata(cellId, { bold: true, bgColor: "#fef3c7", align: "right" })\`
|
|
23604
|
+
6. Deck config: \`update_metadata(sheetId, { sheetsDefaultColWidth: 120, sheetsDefaultRowHeight: 28, sheetsShowGridlines: true, sheetsFreezeRows: 1, sheetsFreezeCols: 1 })\`
|
|
23605
|
+
|
|
23606
|
+
**Overview (space home):**
|
|
23607
|
+
1. \`create_document(parentId, "Home", "overview")\`
|
|
23608
|
+
2. No children required — renders activity, people, stats from the surrounding space
|
|
23609
|
+
3. Children (if any) show as linked pages
|
|
23610
|
+
|
|
23611
|
+
**Call (video room):**
|
|
23612
|
+
1. \`create_document(parentId, "Daily Standup", "call")\`
|
|
23613
|
+
2. Video rooms have **no children** — do not add documents underneath
|
|
23614
|
+
|
|
23615
|
+
**Coder (multi-file collaborative editor)** *(requires coder plugin):*
|
|
23616
|
+
1. \`create_document(parentId, "My App", "coder")\`
|
|
23617
|
+
2. Create files/folders: \`create_document(projectId, "App.vue")\`, \`create_document(projectId, "src")\`
|
|
23618
|
+
3. Set file type: \`update_metadata(fileId, { fileType: "vue", entry: true })\`
|
|
23619
|
+
4. \`fileType\` options: \`"vue"\`, \`"ts"\`, \`"js"\`, \`"css"\`, \`"json"\`, \`"folder"\`
|
|
23620
|
+
5. Mark the entry file with \`entry: true\` — the renderer uses it as the preview root
|
|
23621
|
+
|
|
23622
|
+
**Media (audio/video playlist)** *(requires media plugin):*
|
|
23623
|
+
1. \`create_document(parentId, "Focus Mix", "media")\`
|
|
23624
|
+
2. Create tracks: \`create_document(playlistId, "Track 1")\` — attach audio/video file via upload tool
|
|
23625
|
+
3. Playlist config: \`update_metadata(playlistId, { mediaRepeat: "all", mediaShuffle: false })\`
|
|
23626
|
+
|
|
22816
23627
|
---
|
|
22817
23628
|
|
|
22818
23629
|
## Document References
|
|
@@ -22887,22 +23698,55 @@ In the **graph** page type, document references (embeds and links) create visibl
|
|
|
22887
23698
|
|-----|------|-----------|--------|
|
|
22888
23699
|
| \`kanbanColumnWidth\` | string | kanban | "narrow", "default", "wide" |
|
|
22889
23700
|
| \`galleryColumns\` | number | gallery | 1–6 |
|
|
22890
|
-
| \`galleryAspect\` | string | gallery | "square", "4:3", "16:9" |
|
|
23701
|
+
| \`galleryAspect\` | string | gallery | "square", "4:3", "3:2", "16:9", "free" |
|
|
23702
|
+
| \`galleryCardStyle\` | string | gallery | "default", "compact", "detailed" |
|
|
23703
|
+
| \`galleryShowLabels\` | boolean | gallery | show item labels |
|
|
23704
|
+
| \`gallerySortBy\` | string | gallery | "manual", "date", "name", "rating" |
|
|
22891
23705
|
| \`calendarView\` | string | calendar | "month", "week", "day" |
|
|
22892
23706
|
| \`calendarWeekStart\` | string | calendar | "sun", "mon" |
|
|
23707
|
+
| \`calendarShowWeekNumbers\` | boolean | calendar | — |
|
|
22893
23708
|
| \`tableMode\` | string | table | "hierarchy", "flat" |
|
|
23709
|
+
| \`tableSortKey\` | string | table | meta key to sort by |
|
|
23710
|
+
| \`tableSortDir\` | string | table | "asc", "desc" |
|
|
23711
|
+
| \`timelineZoom\` | string | timeline | "week", "month", "quarter" |
|
|
23712
|
+
| \`timelinePixelsPerDay\` | number | timeline | zoom granularity |
|
|
23713
|
+
| \`timelineCenterDate\` | string | timeline | ISO date to center view |
|
|
23714
|
+
| \`checklistFilter\` | string | checklist | "all", "active", "completed" |
|
|
23715
|
+
| \`checklistSort\` | string | checklist | "manual", "priority", "due" |
|
|
23716
|
+
| \`mapShowLabels\` | boolean | map | — |
|
|
23717
|
+
| \`graphSpacing\` | string | graph | "compact", "default", "spacious" |
|
|
23718
|
+
| \`graphShowLabels\` | boolean | graph | — |
|
|
23719
|
+
| \`graphEdgeThickness\` | string | graph | "thin", "normal", "thick" |
|
|
22894
23720
|
| \`showRefEdges\` | boolean | graph | show doc-reference edges |
|
|
22895
|
-
|
|
22896
|
-
|
|
23721
|
+
| \`mmSpacing\` | string | mindmap-layout | spacing between branches |
|
|
23722
|
+
| \`spatialGridVisible\` | boolean | spatial | show ground grid |
|
|
23723
|
+
| \`slidesTheme\` | string | slides | "dark", "light" |
|
|
23724
|
+
| \`chartType\` | string | chart | "bar", "stacked bar", "line", "donut", "treemap" |
|
|
23725
|
+
| \`chartMetric\` | string | chart | "value", "type", "tag", "status", "priority", "activity", "completion" |
|
|
23726
|
+
| \`chartColorScheme\` | string | chart | "default", "warm", "cool", "mono" |
|
|
23727
|
+
| \`chartLimit\` | number | chart | 3–30 (max items) |
|
|
23728
|
+
| \`chartShowLegend\` | boolean | chart | — |
|
|
23729
|
+
| \`chartShowValues\` | boolean | chart | — |
|
|
23730
|
+
| \`sheetsDefaultColWidth\` | number | sheets | 40–500 |
|
|
23731
|
+
| \`sheetsDefaultRowHeight\` | number | sheets | 20–100 |
|
|
23732
|
+
| \`sheetsShowGridlines\` | boolean | sheets | — |
|
|
23733
|
+
| \`sheetsFreezeRows\` | number | sheets | frozen rows count |
|
|
23734
|
+
| \`sheetsFreezeCols\` | number | sheets | frozen cols count |
|
|
23735
|
+
| \`mediaRepeat\` | string | media | "off", "all", "one" (plugin) |
|
|
23736
|
+
| \`mediaShuffle\` | boolean | media | plugin |
|
|
23737
|
+
|
|
23738
|
+
### Spatial 3D Keys (for spatial children — requires spatial plugin)
|
|
22897
23739
|
|
|
22898
23740
|
| Key | Type | Default | Meaning |
|
|
22899
23741
|
|-----|------|---------|---------|
|
|
22900
23742
|
| \`spShape\` | string | — | "box", "sphere", "cylinder", "cone", "plane", "torus", "glb" |
|
|
22901
|
-
| \`
|
|
23743
|
+
| \`color\` | string | — | CSS color — universal key, **not** \`spColor\` |
|
|
22902
23744
|
| \`spOpacity\` | number | 100 | 0–100 |
|
|
22903
23745
|
| \`spX\`, \`spY\`, \`spZ\` | number | 0 | Position |
|
|
22904
23746
|
| \`spRX\`, \`spRY\`, \`spRZ\` | number | 0 | Rotation (degrees) |
|
|
22905
23747
|
| \`spSX\`, \`spSY\`, \`spSZ\` | number | 1 | Scale |
|
|
23748
|
+
| \`spModelUploadId\` | string | — | GLB upload ID (when \`spShape: "glb"\`) |
|
|
23749
|
+
| \`spModelDocId\` | string | — | Doc ID that owns the GLB upload |
|
|
22906
23750
|
|
|
22907
23751
|
### Dashboard Keys (for dashboard children)
|
|
22908
23752
|
|
|
@@ -22912,6 +23756,28 @@ In the **graph** page type, document references (embeds and links) create visibl
|
|
|
22912
23756
|
| \`deskZ\` | number | Z-index (layering) |
|
|
22913
23757
|
| \`deskMode\` | string | "icon", "widget-sm" (240×180), "widget-lg" (400×320) |
|
|
22914
23758
|
|
|
23759
|
+
### Sheets Cell Formatting (per-cell meta)
|
|
23760
|
+
|
|
23761
|
+
| Key | Type | Meaning |
|
|
23762
|
+
|-----|------|---------|
|
|
23763
|
+
| \`formula\` | string | Cell formula (e.g. "=A1+B1") |
|
|
23764
|
+
| \`bold\` | boolean | — |
|
|
23765
|
+
| \`italic\` | boolean | — |
|
|
23766
|
+
| \`textColor\` | string | CSS color |
|
|
23767
|
+
| \`bgColor\` | string | CSS color |
|
|
23768
|
+
| \`align\` | string | "left", "center", "right" |
|
|
23769
|
+
|
|
23770
|
+
### Coder Keys (for coder children — plugin)
|
|
23771
|
+
|
|
23772
|
+
| Key | Type | Meaning |
|
|
23773
|
+
|-----|------|---------|
|
|
23774
|
+
| \`fileType\` | string | "vue", "ts", "js", "css", "json", "folder" |
|
|
23775
|
+
| \`entry\` | boolean | Mark this file as the preview entry point |
|
|
23776
|
+
|
|
23777
|
+
### Discovering What Metadata Applies
|
|
23778
|
+
|
|
23779
|
+
Use the \`list_page_types\` tool to enumerate all known page types and their declared \`metaSchema\` (fields that apply to children/descendants) and \`defaultMetaFields\` (renderer config fields on the page itself). It's the authoritative list of what meta keys make sense for any given page type.
|
|
23780
|
+
|
|
22915
23781
|
---
|
|
22916
23782
|
|
|
22917
23783
|
## Content Structure
|
|
@@ -22994,8 +23860,11 @@ Always clear fields when done by setting them to \`null\`.
|
|
|
22994
23860
|
| **Outline** | \`outline:editing\` | nodeId | Editing an outline node |
|
|
22995
23861
|
| **Gallery** | \`gallery:focused\` | itemId | Item hovered/selected |
|
|
22996
23862
|
| **Timeline** | \`timeline:focused\` | taskId | Task selected |
|
|
22997
|
-
| **Mindmap** | \`mindmap:focused\` | nodeId | Node selected/edited |
|
|
22998
23863
|
| **Graph** | \`graph:focused\` | nodeId | Node hovered/selected |
|
|
23864
|
+
| **Slides** | \`slides:current\` | slideId | Slide being presented |
|
|
23865
|
+
| **Spatial** | \`spatial:selected\`, \`spatial:camera\` | objectId / camera state | plugin |
|
|
23866
|
+
| **Media** | \`media:playing\`, \`media:position\` | trackId / 0–1 | plugin |
|
|
23867
|
+
| **Coder** | \`coder:activeFile\` | fileId | plugin |
|
|
22999
23868
|
| **Map** | \`map:focused\` | markerId | Marker hovered/selected |
|
|
23000
23869
|
| **Doc** | \`doc:scroll\` | 0–1 number | Scroll position in document |
|
|
23001
23870
|
|