@opentabs-dev/opentabs-plugin-airtable 0.0.74
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/README.md +159 -0
- package/dist/adapter.iife.js +14792 -0
- package/dist/adapter.iife.js.map +7 -0
- package/dist/airtable-api.d.ts +12 -0
- package/dist/airtable-api.d.ts.map +1 -0
- package/dist/airtable-api.js +146 -0
- package/dist/airtable-api.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/create-comment.d.ts +10 -0
- package/dist/tools/create-comment.d.ts.map +1 -0
- package/dist/tools/create-comment.js +28 -0
- package/dist/tools/create-comment.js.map +1 -0
- package/dist/tools/get-base-schema.d.ts +21 -0
- package/dist/tools/get-base-schema.d.ts.map +1 -0
- package/dist/tools/get-base-schema.js +29 -0
- package/dist/tools/get-base-schema.js.map +1 -0
- package/dist/tools/get-field-choices.d.ts +13 -0
- package/dist/tools/get-field-choices.d.ts.map +1 -0
- package/dist/tools/get-field-choices.js +41 -0
- package/dist/tools/get-field-choices.js.map +1 -0
- package/dist/tools/get-record-activity.d.ts +22 -0
- package/dist/tools/get-record-activity.d.ts.map +1 -0
- package/dist/tools/get-record-activity.js +73 -0
- package/dist/tools/get-record-activity.js.map +1 -0
- package/dist/tools/get-record.d.ts +13 -0
- package/dist/tools/get-record.d.ts.map +1 -0
- package/dist/tools/get-record.js +34 -0
- package/dist/tools/get-record.js.map +1 -0
- package/dist/tools/list-records.d.ts +12 -0
- package/dist/tools/list-records.d.ts.map +1 -0
- package/dist/tools/list-records.js +31 -0
- package/dist/tools/list-records.js.map +1 -0
- package/dist/tools/list-workspaces.d.ts +16 -0
- package/dist/tools/list-workspaces.d.ts.map +1 -0
- package/dist/tools/list-workspaces.js +27 -0
- package/dist/tools/list-workspaces.js.map +1 -0
- package/dist/tools/schemas.d.ts +140 -0
- package/dist/tools/schemas.d.ts.map +1 -0
- package/dist/tools/schemas.js +85 -0
- package/dist/tools/schemas.js.map +1 -0
- package/dist/tools/update-cell.d.ts +11 -0
- package/dist/tools/update-cell.d.ts.map +1 -0
- package/dist/tools/update-cell.js +33 -0
- package/dist/tools/update-cell.js.map +1 -0
- package/dist/tools.json +654 -0
- package/package.json +55 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-records.js","sourceRoot":"","sources":["../../src/tools/list-records.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAkBvD,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EACT,8KAA8K;IAChL,OAAO,EAAE,6BAA6B;IACtC,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KACvD,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KACpE,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,MAAM,CACvB,eAAe,MAAM,CAAC,OAAO,OAAO,EACpC;YACE,sBAAsB,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;YACzC,2BAA2B,EAAE,KAAK;YAClC,4CAA4C,EAAE,KAAK;YACnD,oBAAoB,EAAE,KAAK;SAC5B,EACD,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAC1B,CAAC;QAEF,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,OAAO,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClH,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEvD,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const listWorkspaces: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{}, z.core.$strip>, z.ZodObject<{
|
|
3
|
+
workspaces: z.ZodArray<z.ZodObject<{
|
|
4
|
+
id: z.ZodString;
|
|
5
|
+
name: z.ZodString;
|
|
6
|
+
permission_level: z.ZodString;
|
|
7
|
+
base_count: z.ZodNumber;
|
|
8
|
+
}, z.core.$strip>>;
|
|
9
|
+
bases: z.ZodArray<z.ZodObject<{
|
|
10
|
+
id: z.ZodString;
|
|
11
|
+
name: z.ZodString;
|
|
12
|
+
color: z.ZodString;
|
|
13
|
+
permission_level: z.ZodString;
|
|
14
|
+
}, z.core.$strip>>;
|
|
15
|
+
}, z.core.$strip>>;
|
|
16
|
+
//# sourceMappingURL=list-workspaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-workspaces.d.ts","sourceRoot":"","sources":["../../src/tools/list-workspaces.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuBxB,eAAO,MAAM,cAAc;;;;;;;;;;;;;kBAwBzB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { apiGet, getUserId } from '../airtable-api.js';
|
|
4
|
+
import { baseSchema, mapBase, mapWorkspace, workspaceSchema } from './schemas.js';
|
|
5
|
+
export const listWorkspaces = defineTool({
|
|
6
|
+
name: 'list_workspaces',
|
|
7
|
+
displayName: 'List Workspaces',
|
|
8
|
+
description: 'List all workspaces and bases the current user has access to. Returns workspace metadata with nested base (application) information.',
|
|
9
|
+
summary: 'List all workspaces and their bases',
|
|
10
|
+
icon: 'layout-grid',
|
|
11
|
+
group: 'Workspaces',
|
|
12
|
+
input: z.object({}),
|
|
13
|
+
output: z.object({
|
|
14
|
+
workspaces: z.array(workspaceSchema).describe('All accessible workspaces'),
|
|
15
|
+
bases: z.array(baseSchema).describe('All accessible bases across all workspaces'),
|
|
16
|
+
}),
|
|
17
|
+
handle: async () => {
|
|
18
|
+
const userId = getUserId();
|
|
19
|
+
const data = await apiGet(`user/${userId}/listApplicationsAndPageBundlesForDisplay`);
|
|
20
|
+
const workspaceRecords = data.workspaceRecordById ?? {};
|
|
21
|
+
const workspaces = Object.values(workspaceRecords).map(mapWorkspace);
|
|
22
|
+
const baseRecords = data.applicationRecordById ?? {};
|
|
23
|
+
const bases = Object.values(baseRecords).map(mapBase);
|
|
24
|
+
return { workspaces, bases };
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=list-workspaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-workspaces.js","sourceRoot":"","sources":["../../src/tools/list-workspaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAqBlF,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;IACvC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EACT,sIAAsI;IACxI,OAAO,EAAE,qCAAqC;IAC9C,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAC1E,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,4CAA4C,CAAC;KAClF,CAAC;IACF,MAAM,EAAE,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAa,QAAQ,MAAM,2CAA2C,CAAC,CAAC;QAEjG,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC;QACxD,MAAM,UAAU,GAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAuB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC5F,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,IAAI,EAAE,CAAC;QACrD,MAAM,KAAK,GAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAExE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC/B,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const workspaceSchema: z.ZodObject<{
|
|
3
|
+
id: z.ZodString;
|
|
4
|
+
name: z.ZodString;
|
|
5
|
+
permission_level: z.ZodString;
|
|
6
|
+
base_count: z.ZodNumber;
|
|
7
|
+
}, z.core.$strip>;
|
|
8
|
+
interface RawWorkspace {
|
|
9
|
+
id?: string;
|
|
10
|
+
name?: string;
|
|
11
|
+
visibleApplicationOrder?: string[];
|
|
12
|
+
sharedWithCurrentUser?: {
|
|
13
|
+
directPermissionLevel?: string;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export declare const mapWorkspace: (w: RawWorkspace) => {
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
permission_level: string;
|
|
20
|
+
base_count: number;
|
|
21
|
+
};
|
|
22
|
+
export declare const baseSchema: z.ZodObject<{
|
|
23
|
+
id: z.ZodString;
|
|
24
|
+
name: z.ZodString;
|
|
25
|
+
color: z.ZodString;
|
|
26
|
+
permission_level: z.ZodString;
|
|
27
|
+
}, z.core.$strip>;
|
|
28
|
+
interface RawBase {
|
|
29
|
+
id?: string;
|
|
30
|
+
name?: string;
|
|
31
|
+
color?: string;
|
|
32
|
+
currentUserEffectivePermissionLevel?: string;
|
|
33
|
+
}
|
|
34
|
+
export declare const mapBase: (b: RawBase) => {
|
|
35
|
+
id: string;
|
|
36
|
+
name: string;
|
|
37
|
+
color: string;
|
|
38
|
+
permission_level: string;
|
|
39
|
+
};
|
|
40
|
+
export declare const fieldSchema: z.ZodObject<{
|
|
41
|
+
id: z.ZodString;
|
|
42
|
+
name: z.ZodString;
|
|
43
|
+
type: z.ZodString;
|
|
44
|
+
description: z.ZodString;
|
|
45
|
+
}, z.core.$strip>;
|
|
46
|
+
export declare const viewSchema: z.ZodObject<{
|
|
47
|
+
id: z.ZodString;
|
|
48
|
+
name: z.ZodString;
|
|
49
|
+
type: z.ZodString;
|
|
50
|
+
}, z.core.$strip>;
|
|
51
|
+
export declare const tableSchema: z.ZodObject<{
|
|
52
|
+
id: z.ZodString;
|
|
53
|
+
name: z.ZodString;
|
|
54
|
+
fields: z.ZodArray<z.ZodObject<{
|
|
55
|
+
id: z.ZodString;
|
|
56
|
+
name: z.ZodString;
|
|
57
|
+
type: z.ZodString;
|
|
58
|
+
description: z.ZodString;
|
|
59
|
+
}, z.core.$strip>>;
|
|
60
|
+
views: z.ZodArray<z.ZodObject<{
|
|
61
|
+
id: z.ZodString;
|
|
62
|
+
name: z.ZodString;
|
|
63
|
+
type: z.ZodString;
|
|
64
|
+
}, z.core.$strip>>;
|
|
65
|
+
}, z.core.$strip>;
|
|
66
|
+
interface RawField {
|
|
67
|
+
id?: string;
|
|
68
|
+
name?: string;
|
|
69
|
+
type?: string;
|
|
70
|
+
description?: string;
|
|
71
|
+
}
|
|
72
|
+
interface RawView {
|
|
73
|
+
id?: string;
|
|
74
|
+
name?: string;
|
|
75
|
+
type?: string;
|
|
76
|
+
}
|
|
77
|
+
interface RawTableSchema {
|
|
78
|
+
id?: string;
|
|
79
|
+
name?: string;
|
|
80
|
+
columns?: RawField[];
|
|
81
|
+
views?: RawView[];
|
|
82
|
+
}
|
|
83
|
+
export declare const mapField: (f: RawField) => {
|
|
84
|
+
id: string;
|
|
85
|
+
name: string;
|
|
86
|
+
type: string;
|
|
87
|
+
description: string;
|
|
88
|
+
};
|
|
89
|
+
export declare const mapView: (v: RawView) => {
|
|
90
|
+
id: string;
|
|
91
|
+
name: string;
|
|
92
|
+
type: string;
|
|
93
|
+
};
|
|
94
|
+
export declare const mapTable: (t: RawTableSchema) => {
|
|
95
|
+
id: string;
|
|
96
|
+
name: string;
|
|
97
|
+
fields: {
|
|
98
|
+
id: string;
|
|
99
|
+
name: string;
|
|
100
|
+
type: string;
|
|
101
|
+
description: string;
|
|
102
|
+
}[];
|
|
103
|
+
views: {
|
|
104
|
+
id: string;
|
|
105
|
+
name: string;
|
|
106
|
+
type: string;
|
|
107
|
+
}[];
|
|
108
|
+
};
|
|
109
|
+
export declare const recordSchema: z.ZodObject<{
|
|
110
|
+
id: z.ZodString;
|
|
111
|
+
created_time: z.ZodString;
|
|
112
|
+
cell_values: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
113
|
+
}, z.core.$strip>;
|
|
114
|
+
interface RawRecord {
|
|
115
|
+
id?: string;
|
|
116
|
+
createdTime?: string;
|
|
117
|
+
cellValuesByColumnId?: Record<string, unknown>;
|
|
118
|
+
}
|
|
119
|
+
export declare const mapRecord: (r: RawRecord) => {
|
|
120
|
+
id: string;
|
|
121
|
+
created_time: string;
|
|
122
|
+
cell_values: Record<string, unknown>;
|
|
123
|
+
};
|
|
124
|
+
export declare const selectChoiceSchema: z.ZodObject<{
|
|
125
|
+
id: z.ZodString;
|
|
126
|
+
name: z.ZodString;
|
|
127
|
+
color: z.ZodString;
|
|
128
|
+
}, z.core.$strip>;
|
|
129
|
+
interface RawChoice {
|
|
130
|
+
id?: string;
|
|
131
|
+
name?: string;
|
|
132
|
+
color?: string;
|
|
133
|
+
}
|
|
134
|
+
export declare const mapChoice: (c: RawChoice) => {
|
|
135
|
+
id: string;
|
|
136
|
+
name: string;
|
|
137
|
+
color: string;
|
|
138
|
+
};
|
|
139
|
+
export {};
|
|
140
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,eAAe;;;;;iBAK1B,CAAC;AAEH,UAAU,YAAY;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,qBAAqB,CAAC,EAAE;QAAE,qBAAqB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5D;AAED,eAAO,MAAM,YAAY,GAAI,GAAG,YAAY;;;;;CAK1C,CAAC;AAIH,eAAO,MAAM,UAAU;;;;;iBAKrB,CAAC;AAEH,UAAU,OAAO;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mCAAmC,CAAC,EAAE,MAAM,CAAC;CAC9C;AAED,eAAO,MAAM,OAAO,GAAI,GAAG,OAAO;;;;;CAKhC,CAAC;AAIH,eAAO,MAAM,WAAW;;;;;iBAKtB,CAAC;AAEH,eAAO,MAAM,UAAU;;;;iBAIrB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;iBAKtB,CAAC;AAEH,UAAU,QAAQ;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,OAAO;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,cAAc;IACtB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,eAAO,MAAM,QAAQ,GAAI,GAAG,QAAQ;;;;;CAKlC,CAAC;AAEH,eAAO,MAAM,OAAO,GAAI,GAAG,OAAO;;;;CAIhC,CAAC;AAEH,eAAO,MAAM,QAAQ,GAAI,GAAG,cAAc;;;;;;;;;;;;;;CAKxC,CAAC;AAIH,eAAO,MAAM,YAAY;;;;iBAIvB,CAAC;AAEH,UAAU,SAAS;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChD;AAED,eAAO,MAAM,SAAS,GACpB,GAAG,SAAS,KACX;IACD,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAKrC,CAAC;AAIH,eAAO,MAAM,kBAAkB;;;;iBAI7B,CAAC;AAEH,UAAU,SAAS;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,SAAS,GAAI,GAAG,SAAS;;;;CAIpC,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
// --- Workspace ---
|
|
3
|
+
export const workspaceSchema = z.object({
|
|
4
|
+
id: z.string().describe('Workspace ID (wsp prefix)'),
|
|
5
|
+
name: z.string().describe('Workspace name'),
|
|
6
|
+
permission_level: z.string().describe('Current user permission level (e.g., owner, editor, commenter, read)'),
|
|
7
|
+
base_count: z.number().int().describe('Number of bases in this workspace'),
|
|
8
|
+
});
|
|
9
|
+
export const mapWorkspace = (w) => ({
|
|
10
|
+
id: w.id ?? '',
|
|
11
|
+
name: w.name ?? '',
|
|
12
|
+
permission_level: w.sharedWithCurrentUser?.directPermissionLevel ?? '',
|
|
13
|
+
base_count: w.visibleApplicationOrder?.length ?? 0,
|
|
14
|
+
});
|
|
15
|
+
// --- Base (Application) ---
|
|
16
|
+
export const baseSchema = z.object({
|
|
17
|
+
id: z.string().describe('Base ID (app prefix)'),
|
|
18
|
+
name: z.string().describe('Base name'),
|
|
19
|
+
color: z.string().describe('Base color in the sidebar'),
|
|
20
|
+
permission_level: z.string().describe('Current user effective permission level'),
|
|
21
|
+
});
|
|
22
|
+
export const mapBase = (b) => ({
|
|
23
|
+
id: b.id ?? '',
|
|
24
|
+
name: b.name ?? '',
|
|
25
|
+
color: b.color ?? '',
|
|
26
|
+
permission_level: b.currentUserEffectivePermissionLevel ?? '',
|
|
27
|
+
});
|
|
28
|
+
// --- Table Schema ---
|
|
29
|
+
export const fieldSchema = z.object({
|
|
30
|
+
id: z.string().describe('Field/column ID (fld prefix)'),
|
|
31
|
+
name: z.string().describe('Field name'),
|
|
32
|
+
type: z.string().describe('Field type (text, multilineText, select, collaborator, multipleAttachment, number, etc.)'),
|
|
33
|
+
description: z.string().describe('Field description if set'),
|
|
34
|
+
});
|
|
35
|
+
export const viewSchema = z.object({
|
|
36
|
+
id: z.string().describe('View ID (viw prefix)'),
|
|
37
|
+
name: z.string().describe('View name'),
|
|
38
|
+
type: z.string().describe('View type (grid, form, kanban, calendar, gallery, gantt, timeline)'),
|
|
39
|
+
});
|
|
40
|
+
export const tableSchema = z.object({
|
|
41
|
+
id: z.string().describe('Table ID (tbl prefix)'),
|
|
42
|
+
name: z.string().describe('Table name'),
|
|
43
|
+
fields: z.array(fieldSchema).describe('Columns/fields in this table'),
|
|
44
|
+
views: z.array(viewSchema).describe('Views available for this table'),
|
|
45
|
+
});
|
|
46
|
+
export const mapField = (f) => ({
|
|
47
|
+
id: f.id ?? '',
|
|
48
|
+
name: f.name ?? '',
|
|
49
|
+
type: f.type ?? '',
|
|
50
|
+
description: f.description ?? '',
|
|
51
|
+
});
|
|
52
|
+
export const mapView = (v) => ({
|
|
53
|
+
id: v.id ?? '',
|
|
54
|
+
name: v.name ?? '',
|
|
55
|
+
type: v.type ?? '',
|
|
56
|
+
});
|
|
57
|
+
export const mapTable = (t) => ({
|
|
58
|
+
id: t.id ?? '',
|
|
59
|
+
name: t.name ?? '',
|
|
60
|
+
fields: (t.columns ?? []).map(mapField),
|
|
61
|
+
views: (t.views ?? []).map(mapView),
|
|
62
|
+
});
|
|
63
|
+
// --- Record (Row) ---
|
|
64
|
+
export const recordSchema = z.object({
|
|
65
|
+
id: z.string().describe('Record ID (rec prefix)'),
|
|
66
|
+
created_time: z.string().describe('ISO 8601 creation timestamp'),
|
|
67
|
+
cell_values: z.record(z.string(), z.unknown()).describe('Cell values keyed by field ID — values vary by field type'),
|
|
68
|
+
});
|
|
69
|
+
export const mapRecord = (r) => ({
|
|
70
|
+
id: r.id ?? '',
|
|
71
|
+
created_time: r.createdTime ?? '',
|
|
72
|
+
cell_values: r.cellValuesByColumnId ?? {},
|
|
73
|
+
});
|
|
74
|
+
// --- Select Choice ---
|
|
75
|
+
export const selectChoiceSchema = z.object({
|
|
76
|
+
id: z.string().describe('Choice ID (sel prefix)'),
|
|
77
|
+
name: z.string().describe('Choice display name'),
|
|
78
|
+
color: z.string().describe('Choice color'),
|
|
79
|
+
});
|
|
80
|
+
export const mapChoice = (c) => ({
|
|
81
|
+
id: c.id ?? '',
|
|
82
|
+
name: c.name ?? '',
|
|
83
|
+
color: c.color ?? '',
|
|
84
|
+
});
|
|
85
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const updateCell: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
|
|
3
|
+
base_id: z.ZodString;
|
|
4
|
+
table_id: z.ZodString;
|
|
5
|
+
record_id: z.ZodString;
|
|
6
|
+
field_id: z.ZodString;
|
|
7
|
+
value: z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodRecord<z.ZodString, z.ZodUnknown>, z.ZodArray<z.ZodUnknown>]>;
|
|
8
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
9
|
+
success: z.ZodBoolean;
|
|
10
|
+
}, z.core.$strip>>;
|
|
11
|
+
//# sourceMappingURL=update-cell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-cell.d.ts","sourceRoot":"","sources":["../../src/tools/update-cell.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,UAAU;;;;;;;;kBAkCrB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { defineTool } from '@opentabs-dev/plugin-sdk';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { apiPost } from '../airtable-api.js';
|
|
4
|
+
export const updateCell = defineTool({
|
|
5
|
+
name: 'update_cell',
|
|
6
|
+
displayName: 'Update Cell',
|
|
7
|
+
description: 'Update a single cell value in a record. The value format depends on the field type: text fields accept strings, number fields accept numbers, select fields accept an object like {"id": "selXxx"}, and so on. Use get_base_schema to discover field IDs and types.',
|
|
8
|
+
summary: 'Update a single cell value in a record',
|
|
9
|
+
icon: 'pencil',
|
|
10
|
+
group: 'Records',
|
|
11
|
+
input: z.object({
|
|
12
|
+
base_id: z.string().describe('Base ID (app prefix)'),
|
|
13
|
+
table_id: z.string().describe('Table ID (tbl prefix)'),
|
|
14
|
+
record_id: z.string().describe('Record ID (rec prefix)'),
|
|
15
|
+
field_id: z.string().describe('Field/column ID (fld prefix)'),
|
|
16
|
+
value: z
|
|
17
|
+
.union([z.string(), z.number(), z.boolean(), z.null(), z.record(z.string(), z.unknown()), z.array(z.unknown())])
|
|
18
|
+
.describe('New cell value — type depends on the field type'),
|
|
19
|
+
}),
|
|
20
|
+
output: z.object({
|
|
21
|
+
success: z.boolean().describe('Whether the update succeeded'),
|
|
22
|
+
}),
|
|
23
|
+
handle: async (params) => {
|
|
24
|
+
await apiPost(`row/${params.record_id}/updatePrimitiveCell`, {
|
|
25
|
+
tableId: params.table_id,
|
|
26
|
+
rowId: params.record_id,
|
|
27
|
+
columnId: params.field_id,
|
|
28
|
+
cellValue: params.value,
|
|
29
|
+
}, { appId: params.base_id });
|
|
30
|
+
return { success: true };
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=update-cell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-cell.js","sourceRoot":"","sources":["../../src/tools/update-cell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;IACnC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,aAAa;IAC1B,WAAW,EACT,qQAAqQ;IACvQ,OAAO,EAAE,wCAAwC;IACjD,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACpD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACtD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QACxD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC7D,KAAK,EAAE,CAAC;aACL,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;aAC/G,QAAQ,CAAC,iDAAiD,CAAC;KAC/D,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;KAC9D,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,OAAO,CACX,OAAO,MAAM,CAAC,SAAS,sBAAsB,EAC7C;YACE,OAAO,EAAE,MAAM,CAAC,QAAQ;YACxB,KAAK,EAAE,MAAM,CAAC,SAAS;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,KAAK;SACxB,EACD,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAC1B,CAAC;QAEF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC"}
|