@notionhq/workers 0.0.85 → 0.0.86
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/builder.d.ts +9 -4
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +23 -18
- package/dist/builder.test.d.ts +2 -0
- package/dist/builder.test.d.ts.map +1 -0
- package/dist/capabilities/automation.js +2 -2
- package/dist/capabilities/sync.d.ts.map +1 -1
- package/dist/capabilities/sync.js +22 -6
- package/dist/capabilities/tool.d.ts +13 -6
- package/dist/capabilities/tool.d.ts.map +1 -1
- package/dist/capabilities/tool.js +28 -18
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/schema-builder.d.ts +79 -0
- package/dist/schema-builder.d.ts.map +1 -0
- package/dist/schema-builder.js +135 -0
- package/dist/schema-builder.test.d.ts +2 -0
- package/dist/schema-builder.test.d.ts.map +1 -0
- package/dist/worker.d.ts +3 -8
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +3 -8
- package/package.json +5 -1
- package/src/builder.test.ts +229 -0
- package/src/builder.ts +38 -25
- package/src/capabilities/automation.test.ts +8 -4
- package/src/capabilities/automation.ts +2 -2
- package/src/capabilities/sync.test.ts +70 -1
- package/src/capabilities/sync.ts +18 -6
- package/src/capabilities/tool.test.ts +32 -167
- package/src/capabilities/tool.ts +33 -26
- package/src/index.ts +2 -0
- package/src/schema-builder.test.ts +677 -0
- package/src/schema-builder.ts +203 -0
- package/src/worker.ts +3 -8
package/dist/builder.d.ts
CHANGED
|
@@ -43,17 +43,22 @@ export declare function number(value: number): TextValue;
|
|
|
43
43
|
*/
|
|
44
44
|
export declare function date(dateString: string): TextValue;
|
|
45
45
|
/**
|
|
46
|
-
* Creates a datetime value from
|
|
46
|
+
* Creates a datetime value from an ISO 8601 datetime string.
|
|
47
|
+
* @param isoString - An ISO 8601 datetime string (e.g., "2024-01-15T10:30", "2024-01-15T10:30:00Z")
|
|
48
|
+
* @param timeZone - Optional IANA timezone name (e.g., "America/New_York")
|
|
47
49
|
*/
|
|
48
|
-
export declare function dateTime(
|
|
50
|
+
export declare function dateTime(isoString: string, timeZone?: string): TextValue;
|
|
49
51
|
/**
|
|
50
52
|
* Creates a date range value from date strings.
|
|
51
53
|
*/
|
|
52
54
|
export declare function dateRange(startDate: string, endDate: string): TextValue;
|
|
53
55
|
/**
|
|
54
|
-
* Creates a datetime range value from
|
|
56
|
+
* Creates a datetime range value from ISO 8601 datetime strings.
|
|
57
|
+
* @param startDateTime - An ISO 8601 datetime string for the range start
|
|
58
|
+
* @param endDateTime - An ISO 8601 datetime string for the range end
|
|
59
|
+
* @param timeZone - Optional IANA timezone name (e.g., "America/New_York")
|
|
55
60
|
*/
|
|
56
|
-
export declare function dateTimeRange(
|
|
61
|
+
export declare function dateTimeRange(startDateTime: string, endDateTime: string, timeZone?: string): TextValue;
|
|
57
62
|
/**
|
|
58
63
|
* Creates a link with custom display text.
|
|
59
64
|
* @param displayText - The text to display
|
package/dist/builder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAEX,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAEnD;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAE1C;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAEhD;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAE/C;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAE9C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAEpD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAElE;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAK/C;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CASlD;AAED
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAEX,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,SAAS,EACT,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAEnD;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAE1C;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAEhD;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAE/C;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAE9C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAEpD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAElE;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAK/C;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CASlD;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAcxE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAWvE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC5B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,GACf,SAAS,CAiBX;AAED;;;;GAIG;AACH,wBAAgB,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAEhE;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAE/C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAK1D;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAE/C;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,GAAG,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAEvD;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAKnD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,CAE9D;AA+CD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAK7C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACzB,IAAI,EAAE,WAAW,EACjB,KAAK,GAAE,YAAqB,GAC1B,IAAI,CAMN;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAK3C"}
|
package/dist/builder.js
CHANGED
|
@@ -36,11 +36,12 @@ function date(dateString) {
|
|
|
36
36
|
};
|
|
37
37
|
return createDateToken(dateValue);
|
|
38
38
|
}
|
|
39
|
-
function dateTime(
|
|
39
|
+
function dateTime(isoString, timeZone) {
|
|
40
|
+
const { date: date2, time } = parseISODateTime(isoString);
|
|
40
41
|
const dateValue = {
|
|
41
42
|
type: "datetime",
|
|
42
|
-
start_date:
|
|
43
|
-
start_time:
|
|
43
|
+
start_date: date2,
|
|
44
|
+
start_time: time
|
|
44
45
|
};
|
|
45
46
|
if (timeZone) {
|
|
46
47
|
dateValue.time_zone = timeZone;
|
|
@@ -57,13 +58,15 @@ function dateRange(startDate, endDate) {
|
|
|
57
58
|
};
|
|
58
59
|
return createDateToken(dateValue);
|
|
59
60
|
}
|
|
60
|
-
function dateTimeRange(
|
|
61
|
+
function dateTimeRange(startDateTime, endDateTime, timeZone) {
|
|
62
|
+
const start = parseISODateTime(startDateTime);
|
|
63
|
+
const end = parseISODateTime(endDateTime);
|
|
61
64
|
const dateValue = {
|
|
62
65
|
type: "datetimerange",
|
|
63
|
-
start_date:
|
|
64
|
-
start_time:
|
|
65
|
-
end_date:
|
|
66
|
-
end_time:
|
|
66
|
+
start_date: start.date,
|
|
67
|
+
start_time: start.time,
|
|
68
|
+
end_date: end.date,
|
|
69
|
+
end_time: end.time
|
|
67
70
|
};
|
|
68
71
|
if (timeZone) {
|
|
69
72
|
dateValue.time_zone = timeZone;
|
|
@@ -111,16 +114,18 @@ function validateDateString(dateString) {
|
|
|
111
114
|
function createDateToken(dateValue) {
|
|
112
115
|
return [["\u2023", [["d", dateValue]]]];
|
|
113
116
|
}
|
|
114
|
-
function
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
|
|
117
|
+
function parseISODateTime(isoString) {
|
|
118
|
+
if (!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/.test(isoString)) {
|
|
119
|
+
throw new Error(
|
|
120
|
+
`Invalid ISO 8601 datetime: ${isoString}. Expected format like 2024-01-15T10:30 or 2024-01-15T10:30:00Z`
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
const date2 = isoString.slice(0, 10);
|
|
124
|
+
const time = isoString.slice(11, 16);
|
|
125
|
+
if (Number.isNaN(new Date(isoString).getTime())) {
|
|
126
|
+
throw new Error(`Invalid datetime: ${isoString}`);
|
|
127
|
+
}
|
|
128
|
+
return { date: date2, time };
|
|
124
129
|
}
|
|
125
130
|
function emojiIcon(emoji) {
|
|
126
131
|
return {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.test.d.ts","sourceRoot":"","sources":["../src/builder.test.ts"],"names":[],"mappings":""}
|
|
@@ -17,7 +17,7 @@ function createAutomationCapability(key, config) {
|
|
|
17
17
|
} else {
|
|
18
18
|
process.stdout.write(
|
|
19
19
|
`
|
|
20
|
-
<output>${JSON.stringify({ status: "success" })}</output>
|
|
20
|
+
<output>${JSON.stringify({ _tag: "success", value: { status: "success" } })}</output>
|
|
21
21
|
`
|
|
22
22
|
);
|
|
23
23
|
}
|
|
@@ -26,7 +26,7 @@ function createAutomationCapability(key, config) {
|
|
|
26
26
|
if (!options?.concreteOutput) {
|
|
27
27
|
process.stdout.write(
|
|
28
28
|
`
|
|
29
|
-
<output>${JSON.stringify({
|
|
29
|
+
<output>${JSON.stringify({ _tag: "error", error: { name: error.name, message: error.message, trace: error.stack } })}</output>
|
|
30
30
|
`
|
|
31
31
|
);
|
|
32
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/capabilities/sync.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/capabilities/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,9 +13,23 @@ function createSyncCapability(key, syncConfiguration) {
|
|
|
13
13
|
async handler(runtimeContext, options) {
|
|
14
14
|
const capabilityContext = createCapabilityContext();
|
|
15
15
|
const state = runtimeContext?.state ?? runtimeContext?.userContext;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
let executionResult;
|
|
17
|
+
try {
|
|
18
|
+
executionResult = await syncConfiguration.execute(
|
|
19
|
+
state,
|
|
20
|
+
capabilityContext
|
|
21
|
+
);
|
|
22
|
+
} catch (err) {
|
|
23
|
+
const error = new ExecutionError(err);
|
|
24
|
+
if (!options?.concreteOutput) {
|
|
25
|
+
process.stdout.write(
|
|
26
|
+
`
|
|
27
|
+
<output>${JSON.stringify({ _tag: "error", error: { name: error.name, message: error.message } })}</output>
|
|
28
|
+
`
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
19
33
|
const result = {
|
|
20
34
|
changes: executionResult.changes,
|
|
21
35
|
hasMore: executionResult.hasMore,
|
|
@@ -24,9 +38,11 @@ function createSyncCapability(key, syncConfiguration) {
|
|
|
24
38
|
if (options?.concreteOutput) {
|
|
25
39
|
return result;
|
|
26
40
|
} else {
|
|
27
|
-
process.stdout.write(
|
|
28
|
-
|
|
29
|
-
|
|
41
|
+
process.stdout.write(
|
|
42
|
+
`
|
|
43
|
+
<output>${JSON.stringify({ _tag: "success", value: result })}</output>
|
|
44
|
+
`
|
|
45
|
+
);
|
|
30
46
|
}
|
|
31
47
|
return result;
|
|
32
48
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { SchemaBuilder } from "../schema-builder.js";
|
|
2
2
|
import type { HandlerOptions, JSONValue } from "../types.js";
|
|
3
3
|
import type { CapabilityContext } from "./context.js";
|
|
4
4
|
export interface ToolConfiguration<I extends JSONValue, O extends JSONValue = JSONValue> {
|
|
5
5
|
title: string;
|
|
6
6
|
description: string;
|
|
7
|
-
schema:
|
|
8
|
-
outputSchema?:
|
|
7
|
+
schema: SchemaBuilder<I>;
|
|
8
|
+
outputSchema?: SchemaBuilder<O>;
|
|
9
9
|
execute: (input: I, context: CapabilityContext) => O | Promise<O>;
|
|
10
10
|
}
|
|
11
11
|
/**
|
|
@@ -16,6 +16,7 @@ export declare class InvalidToolInputError extends Error {
|
|
|
16
16
|
toJSON(): {
|
|
17
17
|
name: string;
|
|
18
18
|
message: string;
|
|
19
|
+
trace: string | undefined;
|
|
19
20
|
};
|
|
20
21
|
}
|
|
21
22
|
/**
|
|
@@ -26,6 +27,7 @@ export declare class InvalidToolOutputError extends Error {
|
|
|
26
27
|
toJSON(): {
|
|
27
28
|
name: string;
|
|
28
29
|
message: string;
|
|
30
|
+
trace: string | undefined;
|
|
29
31
|
};
|
|
30
32
|
}
|
|
31
33
|
/**
|
|
@@ -36,6 +38,7 @@ export declare class ToolExecutionError extends Error {
|
|
|
36
38
|
toJSON(): {
|
|
37
39
|
name: string;
|
|
38
40
|
message: string;
|
|
41
|
+
trace: string | undefined;
|
|
39
42
|
};
|
|
40
43
|
}
|
|
41
44
|
export type ToolCapability<I extends JSONValue, O extends JSONValue = JSONValue> = ReturnType<typeof createToolCapability<I, O>>;
|
|
@@ -51,8 +54,8 @@ export declare function createToolCapability<I extends JSONValue, O extends JSON
|
|
|
51
54
|
config: {
|
|
52
55
|
title: string;
|
|
53
56
|
description: string;
|
|
54
|
-
schema: JSONSchema<I>;
|
|
55
|
-
outputSchema: JSONSchema<O> | undefined;
|
|
57
|
+
schema: import("../json-schema.js").JSONSchema<I>;
|
|
58
|
+
outputSchema: import("../json-schema.js").JSONSchema<O> | undefined;
|
|
56
59
|
};
|
|
57
60
|
handler: {
|
|
58
61
|
(input: JSONValue, options: HandlerOptions): Promise<O>;
|
|
@@ -61,7 +64,11 @@ export declare function createToolCapability<I extends JSONValue, O extends JSON
|
|
|
61
64
|
value: O;
|
|
62
65
|
} | {
|
|
63
66
|
_tag: "error";
|
|
64
|
-
error:
|
|
67
|
+
error: {
|
|
68
|
+
name: string;
|
|
69
|
+
message: string;
|
|
70
|
+
trace: string | undefined;
|
|
71
|
+
};
|
|
65
72
|
}>;
|
|
66
73
|
};
|
|
67
74
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/capabilities/tool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/capabilities/tool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAiEtD,MAAM,WAAW,iBAAiB,CACjC,CAAC,SAAS,SAAS,EACnB,CAAC,SAAS,SAAS,GAAG,SAAS;IAE/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACzB,YAAY,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAChC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAClE;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;IAK3B,MAAM;;;;;CAON;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;IAK3B,MAAM;;;;;CAON;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;IAK3B,MAAM;;;;;CAON;AAED,MAAM,MAAM,cAAc,CACzB,CAAC,SAAS,SAAS,EACnB,CAAC,SAAS,SAAS,GAAG,SAAS,IAC5B,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAElD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CACnC,CAAC,SAAS,SAAS,EACnB,CAAC,SAAS,SAAS,GAAG,SAAS,EAC9B,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;;;;;;;;;;gBAgBf,SAAS,WAAW,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;gBAC/C,SAAS,GAAG,OAAO,CAC9C;YACA,IAAI,EAAE,SAAS,CAAC;YAChB,KAAK,EAAE,CAAC,CAAC;SACR,GACD;YACA,IAAI,EAAE,OAAO,CAAC;YACd,KAAK,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;aAAE,CAAC;SACnE,CACH;;EA8GD"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Ajv } from "ajv";
|
|
2
|
+
import { getSchema } from "../schema-builder.js";
|
|
2
3
|
import { createCapabilityContext } from "./context.js";
|
|
3
4
|
function validateRequiredProperties(schema, path = "") {
|
|
4
5
|
if ("type" in schema && schema.type === "object" && "properties" in schema) {
|
|
@@ -48,7 +49,8 @@ class InvalidToolInputError extends Error {
|
|
|
48
49
|
toJSON() {
|
|
49
50
|
return {
|
|
50
51
|
name: this.name,
|
|
51
|
-
message: this.message
|
|
52
|
+
message: this.message,
|
|
53
|
+
trace: this.stack
|
|
52
54
|
};
|
|
53
55
|
}
|
|
54
56
|
}
|
|
@@ -60,7 +62,8 @@ class InvalidToolOutputError extends Error {
|
|
|
60
62
|
toJSON() {
|
|
61
63
|
return {
|
|
62
64
|
name: this.name,
|
|
63
|
-
message: this.message
|
|
65
|
+
message: this.message,
|
|
66
|
+
trace: this.stack
|
|
64
67
|
};
|
|
65
68
|
}
|
|
66
69
|
}
|
|
@@ -72,18 +75,21 @@ class ToolExecutionError extends Error {
|
|
|
72
75
|
toJSON() {
|
|
73
76
|
return {
|
|
74
77
|
name: this.name,
|
|
75
|
-
message: this.message
|
|
78
|
+
message: this.message,
|
|
79
|
+
trace: this.stack
|
|
76
80
|
};
|
|
77
81
|
}
|
|
78
82
|
}
|
|
79
83
|
function createToolCapability(key, config) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
84
|
+
const inputSchema = getSchema(config.schema);
|
|
85
|
+
validateRequiredProperties(inputSchema);
|
|
86
|
+
const outputSchema = config.outputSchema ? getSchema(config.outputSchema) : void 0;
|
|
87
|
+
if (outputSchema) {
|
|
88
|
+
validateRequiredProperties(outputSchema);
|
|
83
89
|
}
|
|
84
90
|
const ajv = new Ajv();
|
|
85
|
-
const validateInput = ajv.compile(
|
|
86
|
-
const validateOutput =
|
|
91
|
+
const validateInput = ajv.compile(inputSchema);
|
|
92
|
+
const validateOutput = outputSchema ? ajv.compile(outputSchema) : null;
|
|
87
93
|
async function handler(input, options) {
|
|
88
94
|
if (!validateInput(input)) {
|
|
89
95
|
if (validateInput.errors == null) {
|
|
@@ -99,7 +105,7 @@ function createToolCapability(key, config) {
|
|
|
99
105
|
}
|
|
100
106
|
const result = {
|
|
101
107
|
_tag: "error",
|
|
102
|
-
error
|
|
108
|
+
error: { name: error.name, message: error.message, trace: error.stack }
|
|
103
109
|
};
|
|
104
110
|
process.stdout.write(`
|
|
105
111
|
<output>${JSON.stringify(result)}</output>
|
|
@@ -118,9 +124,11 @@ function createToolCapability(key, config) {
|
|
|
118
124
|
}
|
|
119
125
|
const result2 = {
|
|
120
126
|
_tag: "error",
|
|
121
|
-
error:
|
|
122
|
-
|
|
123
|
-
|
|
127
|
+
error: {
|
|
128
|
+
name: error.name,
|
|
129
|
+
message: error.message,
|
|
130
|
+
trace: error.stack
|
|
131
|
+
}
|
|
124
132
|
};
|
|
125
133
|
process.stdout.write(`
|
|
126
134
|
<output>${JSON.stringify(result2)}</output>
|
|
@@ -130,9 +138,11 @@ function createToolCapability(key, config) {
|
|
|
130
138
|
if (options?.concreteOutput) {
|
|
131
139
|
return result;
|
|
132
140
|
}
|
|
133
|
-
process.stdout.write(
|
|
134
|
-
|
|
135
|
-
|
|
141
|
+
process.stdout.write(
|
|
142
|
+
`
|
|
143
|
+
<output>${JSON.stringify({ _tag: "success", value: result })}</output>
|
|
144
|
+
`
|
|
145
|
+
);
|
|
136
146
|
return {
|
|
137
147
|
_tag: "success",
|
|
138
148
|
value: result
|
|
@@ -146,7 +156,7 @@ function createToolCapability(key, config) {
|
|
|
146
156
|
}
|
|
147
157
|
const result = {
|
|
148
158
|
_tag: "error",
|
|
149
|
-
error
|
|
159
|
+
error: { name: error.name, message: error.message, trace: error.stack }
|
|
150
160
|
};
|
|
151
161
|
process.stdout.write(`
|
|
152
162
|
<output>${JSON.stringify(result)}</output>
|
|
@@ -160,8 +170,8 @@ function createToolCapability(key, config) {
|
|
|
160
170
|
config: {
|
|
161
171
|
title: config.title,
|
|
162
172
|
description: config.description,
|
|
163
|
-
schema:
|
|
164
|
-
outputSchema
|
|
173
|
+
schema: inputSchema,
|
|
174
|
+
outputSchema
|
|
165
175
|
},
|
|
166
176
|
handler
|
|
167
177
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ export type { NotionManagedOAuthConfiguration, OAuthCapability, OAuthConfigurati
|
|
|
5
5
|
export type { SyncCapability, SyncChange, SyncChangeDelete, SyncChangeUpsert, SyncConfiguration, SyncExecutionResult, SyncMode, } from "./capabilities/sync.js";
|
|
6
6
|
export type { ToolCapability, ToolConfiguration } from "./capabilities/tool.js";
|
|
7
7
|
export type { AnyJSONSchema, JSONSchema } from "./json-schema.js";
|
|
8
|
+
export type { Infer, SchemaBuilder } from "./schema-builder.js";
|
|
9
|
+
export { getSchema, j } from "./schema-builder.js";
|
|
8
10
|
export type { Icon, ImageIcon, NoticonColor, NoticonName, PlaceValue, Schedule, } from "./types.js";
|
|
9
11
|
export { Worker } from "./worker.js";
|
|
10
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACvE,YAAY,EACX,oBAAoB,EACpB,uBAAuB,EACvB,eAAe,EACf,kBAAkB,GAClB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,YAAY,EACX,+BAA+B,EAC/B,eAAe,EACf,kBAAkB,EAClB,6BAA6B,GAC7B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACX,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,QAAQ,GACR,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChF,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAClE,YAAY,EACX,IAAI,EACJ,SAAS,EACT,YAAY,EACZ,WAAW,EACX,UAAU,EACV,QAAQ,GACR,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACvE,YAAY,EACX,oBAAoB,EACpB,uBAAuB,EACvB,eAAe,EACf,kBAAkB,GAClB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,YAAY,EACX,+BAA+B,EAC/B,eAAe,EACf,kBAAkB,EAClB,6BAA6B,GAC7B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACX,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,QAAQ,GACR,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChF,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAClE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EACX,IAAI,EACJ,SAAS,EACT,YAAY,EACZ,WAAW,EACX,UAAU,EACV,QAAQ,GACR,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { emojiIcon, imageIcon, notionIcon, place } from "./builder.js";
|
|
2
|
+
import { getSchema, j } from "./schema-builder.js";
|
|
2
3
|
import { Worker } from "./worker.js";
|
|
3
4
|
export {
|
|
4
5
|
Worker,
|
|
5
6
|
emojiIcon,
|
|
7
|
+
getSchema,
|
|
6
8
|
imageIcon,
|
|
9
|
+
j,
|
|
7
10
|
notionIcon,
|
|
8
11
|
place
|
|
9
12
|
};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod-like builder for JSONSchema objects.
|
|
3
|
+
*
|
|
4
|
+
* Guarantees output always complies with the model provider constraints
|
|
5
|
+
* enforced by `json-schema.ts` — all object properties in `required`,
|
|
6
|
+
* `additionalProperties: false`, no forbidden composition keywords, etc.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { j } from "@notionhq/workers/schema-builder";
|
|
11
|
+
*
|
|
12
|
+
* const schema = j.object({
|
|
13
|
+
* foo: j.enum("a", "b", "c").describe("The foo field"),
|
|
14
|
+
* bar: j.string(),
|
|
15
|
+
* count: j.number(),
|
|
16
|
+
* tags: j.array(j.string()),
|
|
17
|
+
* nickname: j.string().nullable(),
|
|
18
|
+
* createdAt: j.datetime(),
|
|
19
|
+
* });
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
import type { AnyJSONSchema, JSONSchema } from "./json-schema.js";
|
|
23
|
+
declare const SCHEMA: unique symbol;
|
|
24
|
+
export interface SchemaBuilder<T> {
|
|
25
|
+
readonly [SCHEMA]: AnyJSONSchema;
|
|
26
|
+
/** Set the JSONSchema description field. Chainable. */
|
|
27
|
+
describe(text: string): SchemaBuilder<T>;
|
|
28
|
+
/** Wrap in anyOf with null. Chainable. */
|
|
29
|
+
nullable(): SchemaBuilder<T | null>;
|
|
30
|
+
}
|
|
31
|
+
/** Extracts `T` from `SchemaBuilder<T>` (type-level only). */
|
|
32
|
+
export type Infer<S> = S extends SchemaBuilder<infer T> ? T : never;
|
|
33
|
+
/** Extract the plain JSONSchema from a builder. */
|
|
34
|
+
export declare function getSchema<T>(builder: SchemaBuilder<T>): JSONSchema<T>;
|
|
35
|
+
export declare function string(): SchemaBuilder<string>;
|
|
36
|
+
export declare function number(): SchemaBuilder<number>;
|
|
37
|
+
export declare function integer(): SchemaBuilder<number>;
|
|
38
|
+
export declare function boolean(): SchemaBuilder<boolean>;
|
|
39
|
+
declare function enumBuilder<T extends string>(...values: readonly T[]): SchemaBuilder<T>;
|
|
40
|
+
declare function enumBuilder<T extends number>(...values: readonly T[]): SchemaBuilder<T>;
|
|
41
|
+
export { enumBuilder as enum };
|
|
42
|
+
export declare function datetime(): SchemaBuilder<string>;
|
|
43
|
+
export declare function date(): SchemaBuilder<string>;
|
|
44
|
+
export declare function time(): SchemaBuilder<string>;
|
|
45
|
+
export declare function duration(): SchemaBuilder<string>;
|
|
46
|
+
export declare function email(): SchemaBuilder<string>;
|
|
47
|
+
export declare function hostname(): SchemaBuilder<string>;
|
|
48
|
+
export declare function ipv4(): SchemaBuilder<string>;
|
|
49
|
+
export declare function ipv6(): SchemaBuilder<string>;
|
|
50
|
+
export declare function uuid(): SchemaBuilder<string>;
|
|
51
|
+
export declare function array<T>(items: SchemaBuilder<T>, options?: {
|
|
52
|
+
minItems?: 0 | 1;
|
|
53
|
+
}): SchemaBuilder<T[]>;
|
|
54
|
+
export declare function object<P extends Record<string, SchemaBuilder<unknown>>>(properties: P): SchemaBuilder<{
|
|
55
|
+
[K in keyof P]: Infer<P[K]>;
|
|
56
|
+
}>;
|
|
57
|
+
export declare function anyOf<S extends SchemaBuilder<unknown>[]>(...schemas: S): SchemaBuilder<Infer<S[number]>>;
|
|
58
|
+
export declare function ref(path: string): SchemaBuilder<unknown>;
|
|
59
|
+
export declare const j: {
|
|
60
|
+
string: typeof string;
|
|
61
|
+
number: typeof number;
|
|
62
|
+
integer: typeof integer;
|
|
63
|
+
boolean: typeof boolean;
|
|
64
|
+
enum: typeof enumBuilder;
|
|
65
|
+
datetime: typeof datetime;
|
|
66
|
+
date: typeof date;
|
|
67
|
+
time: typeof time;
|
|
68
|
+
duration: typeof duration;
|
|
69
|
+
email: typeof email;
|
|
70
|
+
hostname: typeof hostname;
|
|
71
|
+
ipv4: typeof ipv4;
|
|
72
|
+
ipv6: typeof ipv6;
|
|
73
|
+
uuid: typeof uuid;
|
|
74
|
+
array: typeof array;
|
|
75
|
+
object: typeof object;
|
|
76
|
+
anyOf: typeof anyOf;
|
|
77
|
+
ref: typeof ref;
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=schema-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-builder.d.ts","sourceRoot":"","sources":["../src/schema-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAElE,QAAA,MAAM,MAAM,EAAE,OAAO,MAAyB,CAAC;AAE/C,MAAM,WAAW,aAAa,CAAC,CAAC;IAC/B,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IACjC,uDAAuD;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACzC,0CAA0C;IAC1C,QAAQ,IAAI,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;CACpC;AAED,8DAA8D;AAC9D,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEpE,mDAAmD;AACnD,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAErE;AA0BD,wBAAgB,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,CAE9C;AAED,wBAAgB,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,CAE9C;AAED,wBAAgB,OAAO,IAAI,aAAa,CAAC,MAAM,CAAC,CAE/C;AAED,wBAAgB,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,CAEhD;AAID,iBAAS,WAAW,CAAC,CAAC,SAAS,MAAM,EACpC,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,GACrB,aAAa,CAAC,CAAC,CAAC,CAAC;AACpB,iBAAS,WAAW,CAAC,CAAC,SAAS,MAAM,EACpC,GAAG,MAAM,EAAE,SAAS,CAAC,EAAE,GACrB,aAAa,CAAC,CAAC,CAAC,CAAC;AAOpB,OAAO,EAAE,WAAW,IAAI,IAAI,EAAE,CAAC;AAI/B,wBAAgB,QAAQ,IAAI,aAAa,CAAC,MAAM,CAAC,CAEhD;AAED,wBAAgB,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,CAE5C;AAED,wBAAgB,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,CAE5C;AAED,wBAAgB,QAAQ,IAAI,aAAa,CAAC,MAAM,CAAC,CAEhD;AAED,wBAAgB,KAAK,IAAI,aAAa,CAAC,MAAM,CAAC,CAE7C;AAED,wBAAgB,QAAQ,IAAI,aAAa,CAAC,MAAM,CAAC,CAEhD;AAED,wBAAgB,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,CAE5C;AAED,wBAAgB,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,CAE5C;AAED,wBAAgB,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC,CAE5C;AAID,wBAAgB,KAAK,CAAC,CAAC,EACtB,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;CAAE,GAC5B,aAAa,CAAC,CAAC,EAAE,CAAC,CAOpB;AAED,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,EACtE,UAAU,EAAE,CAAC,GACX,aAAa,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAahD;AAED,wBAAgB,KAAK,CAAC,CAAC,SAAS,aAAa,CAAC,OAAO,CAAC,EAAE,EACvD,GAAG,OAAO,EAAE,CAAC,GACX,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAIjC;AAID,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAExD;AAID,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;CAmBb,CAAC"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
const SCHEMA = /* @__PURE__ */ Symbol("schema");
|
|
2
|
+
function getSchema(builder) {
|
|
3
|
+
return builder[SCHEMA];
|
|
4
|
+
}
|
|
5
|
+
function makeBuilder(schema) {
|
|
6
|
+
return {
|
|
7
|
+
[SCHEMA]: schema,
|
|
8
|
+
describe(text) {
|
|
9
|
+
return makeBuilder({ ...schema, description: text });
|
|
10
|
+
},
|
|
11
|
+
nullable() {
|
|
12
|
+
const { description: desc, ...rest } = schema;
|
|
13
|
+
const inner = desc !== void 0 ? rest : schema;
|
|
14
|
+
const wrapper = {
|
|
15
|
+
anyOf: [inner, { type: "null" }]
|
|
16
|
+
};
|
|
17
|
+
if (desc !== void 0) wrapper.description = desc;
|
|
18
|
+
return makeBuilder(wrapper);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function string() {
|
|
23
|
+
return makeBuilder({ type: "string" });
|
|
24
|
+
}
|
|
25
|
+
function number() {
|
|
26
|
+
return makeBuilder({ type: "number" });
|
|
27
|
+
}
|
|
28
|
+
function integer() {
|
|
29
|
+
return makeBuilder({ type: "integer" });
|
|
30
|
+
}
|
|
31
|
+
function boolean() {
|
|
32
|
+
return makeBuilder({ type: "boolean" });
|
|
33
|
+
}
|
|
34
|
+
function enumBuilder(...values) {
|
|
35
|
+
const type = typeof values[0] === "string" ? "string" : "number";
|
|
36
|
+
return makeBuilder({ type, enum: values });
|
|
37
|
+
}
|
|
38
|
+
function datetime() {
|
|
39
|
+
return makeBuilder({ type: "string", format: "date-time" });
|
|
40
|
+
}
|
|
41
|
+
function date() {
|
|
42
|
+
return makeBuilder({ type: "string", format: "date" });
|
|
43
|
+
}
|
|
44
|
+
function time() {
|
|
45
|
+
return makeBuilder({ type: "string", format: "time" });
|
|
46
|
+
}
|
|
47
|
+
function duration() {
|
|
48
|
+
return makeBuilder({ type: "string", format: "duration" });
|
|
49
|
+
}
|
|
50
|
+
function email() {
|
|
51
|
+
return makeBuilder({ type: "string", format: "email" });
|
|
52
|
+
}
|
|
53
|
+
function hostname() {
|
|
54
|
+
return makeBuilder({ type: "string", format: "hostname" });
|
|
55
|
+
}
|
|
56
|
+
function ipv4() {
|
|
57
|
+
return makeBuilder({ type: "string", format: "ipv4" });
|
|
58
|
+
}
|
|
59
|
+
function ipv6() {
|
|
60
|
+
return makeBuilder({ type: "string", format: "ipv6" });
|
|
61
|
+
}
|
|
62
|
+
function uuid() {
|
|
63
|
+
return makeBuilder({ type: "string", format: "uuid" });
|
|
64
|
+
}
|
|
65
|
+
function array(items, options) {
|
|
66
|
+
const schema = {
|
|
67
|
+
type: "array",
|
|
68
|
+
items: getSchema(items)
|
|
69
|
+
};
|
|
70
|
+
if (options?.minItems !== void 0) schema.minItems = options.minItems;
|
|
71
|
+
return makeBuilder(schema);
|
|
72
|
+
}
|
|
73
|
+
function object(properties) {
|
|
74
|
+
const schemaProps = {};
|
|
75
|
+
const keys = Object.keys(properties);
|
|
76
|
+
for (const key of keys) {
|
|
77
|
+
schemaProps[key] = getSchema(properties[key]);
|
|
78
|
+
}
|
|
79
|
+
return makeBuilder({
|
|
80
|
+
type: "object",
|
|
81
|
+
properties: schemaProps,
|
|
82
|
+
required: keys,
|
|
83
|
+
additionalProperties: false
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
function anyOf(...schemas) {
|
|
87
|
+
return makeBuilder({
|
|
88
|
+
anyOf: schemas.map(getSchema)
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
function ref(path) {
|
|
92
|
+
return makeBuilder({ $ref: path });
|
|
93
|
+
}
|
|
94
|
+
const j = {
|
|
95
|
+
string,
|
|
96
|
+
number,
|
|
97
|
+
integer,
|
|
98
|
+
boolean,
|
|
99
|
+
enum: enumBuilder,
|
|
100
|
+
datetime,
|
|
101
|
+
date,
|
|
102
|
+
time,
|
|
103
|
+
duration,
|
|
104
|
+
email,
|
|
105
|
+
hostname,
|
|
106
|
+
ipv4,
|
|
107
|
+
ipv6,
|
|
108
|
+
uuid,
|
|
109
|
+
array,
|
|
110
|
+
object,
|
|
111
|
+
anyOf,
|
|
112
|
+
ref
|
|
113
|
+
};
|
|
114
|
+
export {
|
|
115
|
+
anyOf,
|
|
116
|
+
array,
|
|
117
|
+
boolean,
|
|
118
|
+
date,
|
|
119
|
+
datetime,
|
|
120
|
+
duration,
|
|
121
|
+
email,
|
|
122
|
+
enumBuilder as enum,
|
|
123
|
+
getSchema,
|
|
124
|
+
hostname,
|
|
125
|
+
integer,
|
|
126
|
+
ipv4,
|
|
127
|
+
ipv6,
|
|
128
|
+
j,
|
|
129
|
+
number,
|
|
130
|
+
object,
|
|
131
|
+
ref,
|
|
132
|
+
string,
|
|
133
|
+
time,
|
|
134
|
+
uuid
|
|
135
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-builder.test.d.ts","sourceRoot":"","sources":["../src/schema-builder.test.ts"],"names":[],"mappings":""}
|
package/dist/worker.d.ts
CHANGED
|
@@ -63,23 +63,18 @@ export declare class Worker {
|
|
|
63
63
|
* Example:
|
|
64
64
|
*
|
|
65
65
|
* ```ts
|
|
66
|
+
* import { j } from "@notionhq/workers/schema-builder";
|
|
67
|
+
*
|
|
66
68
|
* worker.tool<{ name: string }, string>("sayHello", {
|
|
67
69
|
* title: "Say Hello",
|
|
68
70
|
* description: "Say hello to the user",
|
|
69
|
-
* schema: {
|
|
70
|
-
* type: "object",
|
|
71
|
-
* properties: {
|
|
72
|
-
* name: { type: "string" },
|
|
73
|
-
* },
|
|
74
|
-
* required: ["name"],
|
|
75
|
-
* },
|
|
71
|
+
* schema: j.object({ name: j.string() }),
|
|
76
72
|
* execute: ({ name }, { notion }) => {
|
|
77
73
|
* return `Hello, ${name}!`;
|
|
78
74
|
* },
|
|
79
75
|
* })
|
|
80
76
|
* ```
|
|
81
77
|
*
|
|
82
|
-
*
|
|
83
78
|
* @param key - The unique key for this capability.
|
|
84
79
|
* @param config - The tool configuration.
|
|
85
80
|
* @returns The capability object.
|