@roam-research/roam-tools-core 0.6.7 → 0.6.8
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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/operations/blocks.d.ts +9 -9
- package/dist/operations/blocks.d.ts.map +1 -1
- package/dist/operations/blocks.js +15 -4
- package/dist/operations/pages.d.ts +4 -4
- package/dist/relative-date.d.ts +27 -0
- package/dist/relative-date.d.ts.map +1 -0
- package/dist/relative-date.js +83 -0
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export type { CallToolResult, TextContent, ImageContent, GraphType, AccessLevel,
|
|
|
2
2
|
export { GraphConfigSchema, RoamMcpConfigSchema, ErrorCodes, RoamError, CONFIG_VERSION, EXPECTED_API_VERSION, textResult, imageResult, errorResult, getErrorMessage, } from "./types.js";
|
|
3
3
|
export { tools, findTool, routeToolCall, stripUndeclaredStructuredContent, contentTools, dataTools, desktopUiTools, defineTool, defineStandaloneTool, } from "./tools.js";
|
|
4
4
|
export type { ToolDefinition, ClientToolDefinition, StandaloneToolDefinition, RouteToolCallOptions, } from "./tools.js";
|
|
5
|
+
export { localTodayString } from "./relative-date.js";
|
|
5
6
|
//# 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":"AASA,YAAY,EACV,cAAc,EACd,WAAW,EACX,YAAY,EACZ,SAAS,EACT,WAAW,EACX,WAAW,EACX,aAAa,EACb,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,IAAI,EACJ,aAAa,EACb,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,yBAAyB,EACzB,uBAAuB,EACvB,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,EACV,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,KAAK,EACL,QAAQ,EACR,aAAa,EACb,gCAAgC,EAChC,YAAY,EACZ,SAAS,EACT,cAAc,EACd,UAAU,EACV,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,YAAY,EACV,cAAc,EACd,WAAW,EACX,YAAY,EACZ,SAAS,EACT,WAAW,EACX,WAAW,EACX,aAAa,EACb,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,KAAK,EACL,IAAI,EACJ,aAAa,EACb,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,yBAAyB,EACzB,uBAAuB,EACvB,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,EACV,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,KAAK,EACL,QAAQ,EACR,aAAa,EACb,gCAAgC,EAChC,YAAY,EACZ,SAAS,EACT,cAAc,EACd,UAAU,EACV,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,3 +8,7 @@
|
|
|
8
8
|
export { GraphConfigSchema, RoamMcpConfigSchema, ErrorCodes, RoamError, CONFIG_VERSION, EXPECTED_API_VERSION, textResult, imageResult, errorResult, getErrorMessage, } from "./types.js";
|
|
9
9
|
// Tool definitions, helpers, and routing
|
|
10
10
|
export { tools, findTool, routeToolCall, stripUndeclaredStructuredContent, contentTools, dataTools, desktopUiTools, defineTool, defineStandaloneTool, } from "./tools.js";
|
|
11
|
+
// localTodayString is the only relative-date helper with an external consumer
|
|
12
|
+
// (the local transport's getCurrentDate()). The schema/resolver helpers stay
|
|
13
|
+
// core-internal — operations import them directly from ./relative-date.js.
|
|
14
|
+
export { localTodayString } from "./relative-date.js";
|
|
@@ -3,7 +3,7 @@ import type { CallToolResult, RoamActionClient } from "../types.js";
|
|
|
3
3
|
export declare const CreateBlockSchema: z.ZodObject<{
|
|
4
4
|
parentUid: z.ZodOptional<z.ZodString>;
|
|
5
5
|
pageTitle: z.ZodOptional<z.ZodString>;
|
|
6
|
-
dailyNotePage: z.ZodOptional<z.ZodString
|
|
6
|
+
dailyNotePage: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
7
7
|
nestUnder: z.ZodOptional<z.ZodString>;
|
|
8
8
|
markdown: z.ZodString;
|
|
9
9
|
order: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodEnum<["first", "last"]>]>>;
|
|
@@ -42,14 +42,14 @@ export declare const UpdateBlockSchema: z.ZodObject<{
|
|
|
42
42
|
}, "strip", z.ZodTypeAny, {
|
|
43
43
|
uid: string;
|
|
44
44
|
string?: string | undefined;
|
|
45
|
-
childrenViewType?: "
|
|
45
|
+
childrenViewType?: "bullet" | "numbered" | "document" | undefined;
|
|
46
46
|
open?: boolean | undefined;
|
|
47
47
|
heading?: number | undefined;
|
|
48
48
|
textAlign?: "left" | "center" | "right" | "justify" | undefined;
|
|
49
49
|
}, {
|
|
50
50
|
uid: string;
|
|
51
51
|
string?: string | undefined;
|
|
52
|
-
childrenViewType?: "
|
|
52
|
+
childrenViewType?: "bullet" | "numbered" | "document" | undefined;
|
|
53
53
|
open?: boolean | undefined;
|
|
54
54
|
heading?: number | undefined;
|
|
55
55
|
textAlign?: "left" | "center" | "right" | "justify" | undefined;
|
|
@@ -86,24 +86,24 @@ export declare const GetBacklinksSchema: z.ZodObject<{
|
|
|
86
86
|
maxDepth: z.ZodOptional<z.ZodNumber>;
|
|
87
87
|
}, "strip", z.ZodTypeAny, {
|
|
88
88
|
title?: string | undefined;
|
|
89
|
-
uid?: string | undefined;
|
|
90
89
|
sort?: "created-date" | "edited-date" | "daily-note-date" | undefined;
|
|
91
|
-
maxDepth?: number | undefined;
|
|
92
90
|
search?: string | undefined;
|
|
91
|
+
uid?: string | undefined;
|
|
92
|
+
maxDepth?: number | undefined;
|
|
93
93
|
offset?: number | undefined;
|
|
94
94
|
limit?: number | undefined;
|
|
95
|
-
includePath?: boolean | undefined;
|
|
96
95
|
sortOrder?: "asc" | "desc" | undefined;
|
|
96
|
+
includePath?: boolean | undefined;
|
|
97
97
|
}, {
|
|
98
98
|
title?: string | undefined;
|
|
99
|
-
uid?: string | undefined;
|
|
100
99
|
sort?: "created-date" | "edited-date" | "daily-note-date" | undefined;
|
|
101
|
-
maxDepth?: number | undefined;
|
|
102
100
|
search?: string | undefined;
|
|
101
|
+
uid?: string | undefined;
|
|
102
|
+
maxDepth?: number | undefined;
|
|
103
103
|
offset?: number | undefined;
|
|
104
104
|
limit?: number | undefined;
|
|
105
|
-
includePath?: boolean | undefined;
|
|
106
105
|
sortOrder?: "asc" | "desc" | undefined;
|
|
106
|
+
includePath?: boolean | undefined;
|
|
107
107
|
}>;
|
|
108
108
|
export type CreateBlockParams = z.infer<typeof CreateBlockSchema>;
|
|
109
109
|
export type GetBlockParams = z.infer<typeof GetBlockSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/operations/blocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAoB,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/operations/blocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAoB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAKtF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;EAkC5B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;EAMzB,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;EAe5B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;EAE5B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;EAM1B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsB7B,CAAC;AAGH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAC5D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAClE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAClE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAC9D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAGpE,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,cAAc,CAAC,CA8CzB;AAED,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,cAAc,CAAC,CASzB;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,cAAc,CAAC,CAUzB;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,cAAc,CAAC,CAGzB;AAED,wBAAsB,SAAS,CAC7B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,cAAc,CAAC,CAazB;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,cAAc,CAAC,CAezB;AAID,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAc3B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;EAM5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAChE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,cAAc,CAAC,CA0BzB;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,cAAc,CAAC,CAMzB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { textResult, RoamError, ErrorCodes } from "../types.js";
|
|
3
|
+
import { isRelativeDateWord, MM_DD_YYYY, resolveDailyNotePage } from "../relative-date.js";
|
|
3
4
|
// Schemas
|
|
4
5
|
export const CreateBlockSchema = z.object({
|
|
5
6
|
parentUid: z
|
|
@@ -12,9 +13,11 @@ export const CreateBlockSchema = z.object({
|
|
|
12
13
|
.describe("Page title to create block under (creates the page if it doesn't exist). Exactly one of parentUid, pageTitle, or dailyNotePage is required."),
|
|
13
14
|
dailyNotePage: z
|
|
14
15
|
.string()
|
|
15
|
-
.
|
|
16
|
+
.refine((v) => MM_DD_YYYY.test(v) || isRelativeDateWord(v), {
|
|
17
|
+
message: "Must be MM-DD-YYYY format (e.g. '03-17-2026') or a relative day: 'today', 'yesterday', or 'tomorrow'",
|
|
18
|
+
})
|
|
16
19
|
.optional()
|
|
17
|
-
.describe("
|
|
20
|
+
.describe("Target a daily note page, creating it if needed. Either a date in MM-DD-YYYY format (e.g. '03-17-2026') or a relative day: 'today', 'yesterday', or 'tomorrow' (case-insensitive; resolved to the user's local calendar date). Exactly one of parentUid, pageTitle, or dailyNotePage is required."),
|
|
18
21
|
nestUnder: z
|
|
19
22
|
.string()
|
|
20
23
|
.optional()
|
|
@@ -88,14 +91,22 @@ export async function createBlock(client, params) {
|
|
|
88
91
|
if (targets.length > 1) {
|
|
89
92
|
throw new RoamError("Provide only one of 'parentUid', 'pageTitle', or 'dailyNotePage'", ErrorCodes.VALIDATION_ERROR);
|
|
90
93
|
}
|
|
94
|
+
// Resolve a relative dailyNotePage ("today"/"yesterday"/"tomorrow") to a
|
|
95
|
+
// concrete MM-DD-YYYY before it goes on the wire, against the transport's
|
|
96
|
+
// notion of "today" (remote: picker timezone; local: machine clock). A
|
|
97
|
+
// literal MM-DD-YYYY passes through unchanged, so the backend/renderer see no
|
|
98
|
+
// new vocabulary.
|
|
99
|
+
const resolvedDailyNote = params.dailyNotePage !== undefined
|
|
100
|
+
? resolveDailyNotePage(params.dailyNotePage, client.getCurrentDate?.())
|
|
101
|
+
: undefined;
|
|
91
102
|
const location = {
|
|
92
103
|
order: params.order ?? "last",
|
|
93
104
|
};
|
|
94
105
|
if (params.parentUid !== undefined) {
|
|
95
106
|
location["parent-uid"] = params.parentUid;
|
|
96
107
|
}
|
|
97
|
-
else if (
|
|
98
|
-
location["page-title"] = { "daily-note-page":
|
|
108
|
+
else if (resolvedDailyNote !== undefined) {
|
|
109
|
+
location["page-title"] = { "daily-note-page": resolvedDailyNote };
|
|
99
110
|
}
|
|
100
111
|
else {
|
|
101
112
|
location["page-title"] = params.pageTitle;
|
|
@@ -9,12 +9,12 @@ export declare const CreatePageSchema: z.ZodObject<{
|
|
|
9
9
|
title: string;
|
|
10
10
|
markdown?: string | undefined;
|
|
11
11
|
uid?: string | undefined;
|
|
12
|
-
childrenViewType?: "
|
|
12
|
+
childrenViewType?: "bullet" | "numbered" | "document" | undefined;
|
|
13
13
|
}, {
|
|
14
14
|
title: string;
|
|
15
15
|
markdown?: string | undefined;
|
|
16
16
|
uid?: string | undefined;
|
|
17
|
-
childrenViewType?: "
|
|
17
|
+
childrenViewType?: "bullet" | "numbered" | "document" | undefined;
|
|
18
18
|
}>;
|
|
19
19
|
export declare const GetPageSchema: z.ZodObject<{
|
|
20
20
|
title: z.ZodOptional<z.ZodString>;
|
|
@@ -44,12 +44,12 @@ export declare const UpdatePageSchema: z.ZodObject<{
|
|
|
44
44
|
}, "strip", z.ZodTypeAny, {
|
|
45
45
|
uid: string;
|
|
46
46
|
title?: string | undefined;
|
|
47
|
-
childrenViewType?: "
|
|
47
|
+
childrenViewType?: "bullet" | "numbered" | "document" | undefined;
|
|
48
48
|
mergePages?: boolean | undefined;
|
|
49
49
|
}, {
|
|
50
50
|
uid: string;
|
|
51
51
|
title?: string | undefined;
|
|
52
|
-
childrenViewType?: "
|
|
52
|
+
childrenViewType?: "bullet" | "numbered" | "document" | undefined;
|
|
53
53
|
mergePages?: boolean | undefined;
|
|
54
54
|
}>;
|
|
55
55
|
export declare const GetGuidelinesSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** The MM-DD-YYYY daily-note-page wire format. */
|
|
2
|
+
export declare const MM_DD_YYYY: RegExp;
|
|
3
|
+
/** Is `value` (trimmed, case-insensitive) one of today/yesterday/tomorrow? */
|
|
4
|
+
export declare function isRelativeDateWord(value: string): boolean;
|
|
5
|
+
/**
|
|
6
|
+
* The host machine's local calendar date as yyyy-MM-dd. This is the one place
|
|
7
|
+
* that reads the host clock: the local transport calls it for its
|
|
8
|
+
* getCurrentDate(), so "use machine-local time" is an explicit transport
|
|
9
|
+
* decision, never something core guesses on its own. `now` is injectable for
|
|
10
|
+
* deterministic tests.
|
|
11
|
+
*/
|
|
12
|
+
export declare function localTodayString(now?: Date): string;
|
|
13
|
+
/**
|
|
14
|
+
* Resolve a dailyNotePage value to a concrete MM-DD-YYYY string.
|
|
15
|
+
* - A literal MM-DD-YYYY is returned unchanged (the base date is ignored).
|
|
16
|
+
* - A relative word (today/yesterday/tomorrow, case-insensitive) is resolved
|
|
17
|
+
* against `baseDateStr` — a yyyy-MM-dd calendar date parsed by digits into a
|
|
18
|
+
* UTC anchor, then offset by ±1 day.
|
|
19
|
+
*
|
|
20
|
+
* If a relative word is given but `baseDateStr` is absent (or malformed), THROW.
|
|
21
|
+
* Core must never silently fall back to its own clock, because it also runs on
|
|
22
|
+
* the hosted transport (Cloud Run, UTC). Both first-party transports supply
|
|
23
|
+
* getCurrentDate(), so a missing base means a misbehaving/third-party client —
|
|
24
|
+
* a loud error beats a silently-wrong date.
|
|
25
|
+
*/
|
|
26
|
+
export declare function resolveDailyNotePage(value: string, baseDateStr: string | undefined): string;
|
|
27
|
+
//# sourceMappingURL=relative-date.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relative-date.d.ts","sourceRoot":"","sources":["../src/relative-date.ts"],"names":[],"mappings":"AAwBA,kDAAkD;AAClD,eAAO,MAAM,UAAU,QAAwB,CAAC;AAEhD,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEzD;AAWD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,IAAiB,GAAG,MAAM,CAE/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAoC3F"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// Relative daily-note date resolution for the create_block dailyNotePage param.
|
|
2
|
+
//
|
|
3
|
+
// Resolves the words "today" / "yesterday" / "tomorrow" to the MM-DD-YYYY
|
|
4
|
+
// string Roam uses for daily-note pages, BEFORE the value crosses the wire — so
|
|
5
|
+
// the backend and renderer only ever receive a concrete MM-DD-YYYY (no new
|
|
6
|
+
// vocabulary, no version coupling).
|
|
7
|
+
//
|
|
8
|
+
// All arithmetic is done in UTC (Date.UTC / setUTCDate): every UTC day is
|
|
9
|
+
// exactly 86_400_000 ms, so the ±1-day math has no DST edge cases and the host
|
|
10
|
+
// machine's timezone can never perturb the result. Core has no date library;
|
|
11
|
+
// this is intentionally tiny.
|
|
12
|
+
import { RoamError, ErrorCodes } from "./types.js";
|
|
13
|
+
// Null-prototype so `in` / bracket-access only see our own keys — a plain
|
|
14
|
+
// object would let already-lowercase Object.prototype members ("constructor",
|
|
15
|
+
// "__proto__") slip through `isRelativeDateWord` and index a function as the
|
|
16
|
+
// offset, producing a "NaN-NaN-NaN" date.
|
|
17
|
+
const RELATIVE_OFFSETS = Object.assign(Object.create(null), {
|
|
18
|
+
today: 0,
|
|
19
|
+
yesterday: -1,
|
|
20
|
+
tomorrow: 1,
|
|
21
|
+
});
|
|
22
|
+
/** The MM-DD-YYYY daily-note-page wire format. */
|
|
23
|
+
export const MM_DD_YYYY = /^\d{2}-\d{2}-\d{4}$/;
|
|
24
|
+
/** Is `value` (trimmed, case-insensitive) one of today/yesterday/tomorrow? */
|
|
25
|
+
export function isRelativeDateWord(value) {
|
|
26
|
+
return value.trim().toLowerCase() in RELATIVE_OFFSETS;
|
|
27
|
+
}
|
|
28
|
+
function pad2(n) {
|
|
29
|
+
return String(n).padStart(2, "0");
|
|
30
|
+
}
|
|
31
|
+
/** Format a UTC-anchored Date as MM-DD-YYYY. */
|
|
32
|
+
function toMmDdYyyy(d) {
|
|
33
|
+
return `${pad2(d.getUTCMonth() + 1)}-${pad2(d.getUTCDate())}-${d.getUTCFullYear()}`;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The host machine's local calendar date as yyyy-MM-dd. This is the one place
|
|
37
|
+
* that reads the host clock: the local transport calls it for its
|
|
38
|
+
* getCurrentDate(), so "use machine-local time" is an explicit transport
|
|
39
|
+
* decision, never something core guesses on its own. `now` is injectable for
|
|
40
|
+
* deterministic tests.
|
|
41
|
+
*/
|
|
42
|
+
export function localTodayString(now = new Date()) {
|
|
43
|
+
return `${now.getFullYear()}-${pad2(now.getMonth() + 1)}-${pad2(now.getDate())}`;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Resolve a dailyNotePage value to a concrete MM-DD-YYYY string.
|
|
47
|
+
* - A literal MM-DD-YYYY is returned unchanged (the base date is ignored).
|
|
48
|
+
* - A relative word (today/yesterday/tomorrow, case-insensitive) is resolved
|
|
49
|
+
* against `baseDateStr` — a yyyy-MM-dd calendar date parsed by digits into a
|
|
50
|
+
* UTC anchor, then offset by ±1 day.
|
|
51
|
+
*
|
|
52
|
+
* If a relative word is given but `baseDateStr` is absent (or malformed), THROW.
|
|
53
|
+
* Core must never silently fall back to its own clock, because it also runs on
|
|
54
|
+
* the hosted transport (Cloud Run, UTC). Both first-party transports supply
|
|
55
|
+
* getCurrentDate(), so a missing base means a misbehaving/third-party client —
|
|
56
|
+
* a loud error beats a silently-wrong date.
|
|
57
|
+
*/
|
|
58
|
+
export function resolveDailyNotePage(value, baseDateStr) {
|
|
59
|
+
const offset = RELATIVE_OFFSETS[value.trim().toLowerCase()];
|
|
60
|
+
if (offset === undefined) {
|
|
61
|
+
return value; // literal MM-DD-YYYY passthrough — never alter it
|
|
62
|
+
}
|
|
63
|
+
if (baseDateStr === undefined) {
|
|
64
|
+
throw new RoamError(`Could not resolve relative date "${value}": this transport provides no current date.`, ErrorCodes.VALIDATION_ERROR);
|
|
65
|
+
}
|
|
66
|
+
const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(baseDateStr.trim());
|
|
67
|
+
if (!m) {
|
|
68
|
+
throw new RoamError(`Could not resolve relative date "${value}": invalid current date "${baseDateStr}".`, ErrorCodes.VALIDATION_ERROR);
|
|
69
|
+
}
|
|
70
|
+
const year = Number(m[1]);
|
|
71
|
+
const month = Number(m[2]);
|
|
72
|
+
const day = Number(m[3]);
|
|
73
|
+
const anchor = new Date(Date.UTC(year, month - 1, day));
|
|
74
|
+
// The regex is shape-only — reject an out-of-range base (e.g. "2026-13-40")
|
|
75
|
+
// rather than letting Date.UTC roll it over into a silently-wrong date.
|
|
76
|
+
if (anchor.getUTCFullYear() !== year ||
|
|
77
|
+
anchor.getUTCMonth() !== month - 1 ||
|
|
78
|
+
anchor.getUTCDate() !== day) {
|
|
79
|
+
throw new RoamError(`Could not resolve relative date "${value}": invalid current date "${baseDateStr}".`, ErrorCodes.VALIDATION_ERROR);
|
|
80
|
+
}
|
|
81
|
+
anchor.setUTCDate(anchor.getUTCDate() + offset);
|
|
82
|
+
return toMmDdYyyy(anchor);
|
|
83
|
+
}
|
package/dist/types.d.ts
CHANGED
|
@@ -289,5 +289,6 @@ export type TokenInfoResult = {
|
|
|
289
289
|
export interface RoamActionClient {
|
|
290
290
|
call<T = unknown>(action: string, args?: unknown[]): Promise<RoamResponse<T>>;
|
|
291
291
|
getTokenInfo?(): Promise<TokenInfoResult>;
|
|
292
|
+
getCurrentDate?(): string | undefined;
|
|
292
293
|
}
|
|
293
294
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|