@book.dev/sdk 1.60.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/LICENSE +21 -0
- package/README.md +23 -0
- package/dist/account.d.ts +57 -0
- package/dist/account.js +104 -0
- package/dist/account.js.map +1 -0
- package/dist/ai.d.ts +264 -0
- package/dist/ai.js +36 -0
- package/dist/ai.js.map +1 -0
- package/dist/backup.d.ts +52 -0
- package/dist/backup.js +35 -0
- package/dist/backup.js.map +1 -0
- package/dist/bookFolder.d.ts +44 -0
- package/dist/bookFolder.js +98 -0
- package/dist/bookFolder.js.map +1 -0
- package/dist/bookfile.d.ts +42 -0
- package/dist/bookfile.js +159 -0
- package/dist/bookfile.js.map +1 -0
- package/dist/client.d.ts +279 -0
- package/dist/client.js +502 -0
- package/dist/client.js.map +1 -0
- package/dist/connection.d.ts +20 -0
- package/dist/connection.js +77 -0
- package/dist/connection.js.map +1 -0
- package/dist/content.d.ts +38 -0
- package/dist/content.js +107 -0
- package/dist/content.js.map +1 -0
- package/dist/database.d.ts +687 -0
- package/dist/database.js +1082 -0
- package/dist/database.js.map +1 -0
- package/dist/formula.d.ts +41 -0
- package/dist/formula.js +469 -0
- package/dist/formula.js.map +1 -0
- package/dist/forwarding/challenge.d.ts +35 -0
- package/dist/forwarding/challenge.js +45 -0
- package/dist/forwarding/challenge.js.map +1 -0
- package/dist/forwarding/encoding.d.ts +14 -0
- package/dist/forwarding/encoding.js +54 -0
- package/dist/forwarding/encoding.js.map +1 -0
- package/dist/forwarding/forwardingClient.d.ts +76 -0
- package/dist/forwarding/forwardingClient.js +128 -0
- package/dist/forwarding/forwardingClient.js.map +1 -0
- package/dist/forwarding/index.d.ts +5 -0
- package/dist/forwarding/index.js +14 -0
- package/dist/forwarding/index.js.map +1 -0
- package/dist/forwarding/siteKey.d.ts +12 -0
- package/dist/forwarding/siteKey.js +36 -0
- package/dist/forwarding/siteKey.js.map +1 -0
- package/dist/forwarding/tunnelClient.d.ts +56 -0
- package/dist/forwarding/tunnelClient.js +206 -0
- package/dist/forwarding/tunnelClient.js.map +1 -0
- package/dist/forwarding/tunnelProtocol.d.ts +45 -0
- package/dist/forwarding/tunnelProtocol.js +29 -0
- package/dist/forwarding/tunnelProtocol.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/mtime.d.ts +51 -0
- package/dist/mtime.js +84 -0
- package/dist/mtime.js.map +1 -0
- package/dist/pageProperties.d.ts +80 -0
- package/dist/pageProperties.js +97 -0
- package/dist/pageProperties.js.map +1 -0
- package/dist/plugins.d.ts +110 -0
- package/dist/plugins.js +113 -0
- package/dist/plugins.js.map +1 -0
- package/dist/routes.d.ts +89 -0
- package/dist/routes.js +89 -0
- package/dist/routes.js.map +1 -0
- package/dist/sampleDocument.d.ts +25 -0
- package/dist/sampleDocument.js +67 -0
- package/dist/sampleDocument.js.map +1 -0
- package/dist/suggestions.d.ts +126 -0
- package/dist/suggestions.js +21 -0
- package/dist/suggestions.js.map +1 -0
- package/dist/templates.d.ts +35 -0
- package/dist/templates.js +555 -0
- package/dist/templates.js.map +1 -0
- package/dist/types.d.ts +146 -0
- package/dist/types.js +16 -0
- package/dist/types.js.map +1 -0
- package/package.json +33 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { PageSnapshot } from './types';
|
|
2
|
+
/** Flatten a page snapshot (EditorJS or block-editor) into plain text. */
|
|
3
|
+
export declare function snapshotText(data: PageSnapshot | null | undefined): string;
|
|
4
|
+
/** Turn plain text into EditorJS paragraph blocks (one per non-empty line). */
|
|
5
|
+
export declare function paragraphBlocks(content: string, idPrefix?: string): Array<{
|
|
6
|
+
id: string;
|
|
7
|
+
type: 'paragraph';
|
|
8
|
+
data: {
|
|
9
|
+
text: string;
|
|
10
|
+
};
|
|
11
|
+
}>;
|
|
12
|
+
/** Build a fresh page snapshot whose document is the given plain text. */
|
|
13
|
+
export declare function textSnapshot(content?: string, idPrefix?: string): PageSnapshot;
|
|
14
|
+
/**
|
|
15
|
+
* Append plain text to a page snapshot as paragraph blocks, returning the new
|
|
16
|
+
* snapshot — or `null` when the page can't be appended to this way (the
|
|
17
|
+
* collaborative block editor owns those documents). Used by the agent and the
|
|
18
|
+
* MCP server so both apply the same guard.
|
|
19
|
+
*/
|
|
20
|
+
export declare function appendTextToSnapshot(data: PageSnapshot, content: string, idPrefix?: string): PageSnapshot | null;
|
|
21
|
+
/** A block to append to a block-editor page (the agent / MCP write path). */
|
|
22
|
+
export interface AppendBlock {
|
|
23
|
+
type: string;
|
|
24
|
+
/** Plain text (text-carrying blocks). */
|
|
25
|
+
text?: string;
|
|
26
|
+
props?: Record<string, unknown>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Append blocks to a **block-editor** page's JSON projection, returning the new
|
|
30
|
+
* snapshot — or `null` for legacy EditorJS pages (use {@link appendTextToSnapshot}
|
|
31
|
+
* there). This mutates only the JSON projection (`blockdoc.blocks`), NOT the
|
|
32
|
+
* CRDT `update` — so a *live* editor on that page should apply the change
|
|
33
|
+
* through the editor bridge instead (one CRDT transaction, undoable). This
|
|
34
|
+
* server-side path exists for the MCP server, which has no live editor; a live
|
|
35
|
+
* client merges the JSON projection on next load. Used by the agent's confirm
|
|
36
|
+
* gate only as a fallback when no editor bridge is present.
|
|
37
|
+
*/
|
|
38
|
+
export declare function appendBlocksToSnapshot(data: PageSnapshot, blocks: AppendBlock[], idPrefix?: string): PageSnapshot | null;
|
package/dist/content.js
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
const stripHtml = (s) => s.replace(/<[^>]+>/g, ' ').replace(/\s+/g, ' ').trim();
|
|
2
|
+
/** Flatten a page snapshot (EditorJS or block-editor) into plain text. */
|
|
3
|
+
export function snapshotText(data) {
|
|
4
|
+
if (!data)
|
|
5
|
+
return '';
|
|
6
|
+
const parts = [];
|
|
7
|
+
// Block-editor pages: read the JSON projection.
|
|
8
|
+
const blockdoc = data.blockdoc;
|
|
9
|
+
if (data.editor === 'blocks' && blockdoc?.blocks) {
|
|
10
|
+
const walk = (blocks) => {
|
|
11
|
+
for (const b of blocks) {
|
|
12
|
+
if (Array.isArray(b.text))
|
|
13
|
+
parts.push(b.text.map((r) => r.t).join(''));
|
|
14
|
+
if (typeof b.props?.source === 'string')
|
|
15
|
+
parts.push(String(b.props.source));
|
|
16
|
+
if (b.children)
|
|
17
|
+
walk(b.children);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
walk(blockdoc.blocks);
|
|
21
|
+
return parts.join('\n').trim();
|
|
22
|
+
}
|
|
23
|
+
// EditorJS pages: pull the text-ish fields out of each block.
|
|
24
|
+
const blocks = data.editorjs?.blocks ?? [];
|
|
25
|
+
for (const b of blocks) {
|
|
26
|
+
const d = b.data ?? {};
|
|
27
|
+
if (typeof d.text === 'string')
|
|
28
|
+
parts.push(stripHtml(d.text));
|
|
29
|
+
if (typeof d.code === 'string')
|
|
30
|
+
parts.push(String(d.code));
|
|
31
|
+
if (typeof d.title === 'string')
|
|
32
|
+
parts.push(stripHtml(String(d.title)));
|
|
33
|
+
if (typeof d.content === 'string')
|
|
34
|
+
parts.push(stripHtml(String(d.content)));
|
|
35
|
+
if (Array.isArray(d.items)) {
|
|
36
|
+
for (const item of d.items) {
|
|
37
|
+
const t = typeof item === 'string' ? item : (item.text ?? item.content ?? '');
|
|
38
|
+
if (t)
|
|
39
|
+
parts.push(stripHtml(String(t)));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (Array.isArray(d.content)) {
|
|
43
|
+
for (const row of d.content) {
|
|
44
|
+
if (Array.isArray(row))
|
|
45
|
+
parts.push(row.map((c) => stripHtml(String(c))).join(' '));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return parts.join('\n').trim();
|
|
50
|
+
}
|
|
51
|
+
/** Turn plain text into EditorJS paragraph blocks (one per non-empty line). */
|
|
52
|
+
export function paragraphBlocks(content, idPrefix = 'gen') {
|
|
53
|
+
return content
|
|
54
|
+
.split('\n')
|
|
55
|
+
.map((l) => l.trim())
|
|
56
|
+
.filter(Boolean)
|
|
57
|
+
.map((text, i) => ({ id: `${idPrefix}-${i}`, type: 'paragraph', data: { text } }));
|
|
58
|
+
}
|
|
59
|
+
/** Build a fresh page snapshot whose document is the given plain text. */
|
|
60
|
+
export function textSnapshot(content = '', idPrefix = 'gen') {
|
|
61
|
+
return { editorjs: { blocks: paragraphBlocks(content, idPrefix) }, values: [], names: [] };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Append plain text to a page snapshot as paragraph blocks, returning the new
|
|
65
|
+
* snapshot — or `null` when the page can't be appended to this way (the
|
|
66
|
+
* collaborative block editor owns those documents). Used by the agent and the
|
|
67
|
+
* MCP server so both apply the same guard.
|
|
68
|
+
*/
|
|
69
|
+
export function appendTextToSnapshot(data, content, idPrefix = 'gen') {
|
|
70
|
+
if (data.editor === 'blocks')
|
|
71
|
+
return null;
|
|
72
|
+
const added = paragraphBlocks(content, idPrefix);
|
|
73
|
+
if (added.length === 0)
|
|
74
|
+
return data;
|
|
75
|
+
const editorjs = data.editorjs ?? { blocks: [] };
|
|
76
|
+
return { ...data, editorjs: { ...editorjs, blocks: [...(editorjs.blocks ?? []), ...added] } };
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Append blocks to a **block-editor** page's JSON projection, returning the new
|
|
80
|
+
* snapshot — or `null` for legacy EditorJS pages (use {@link appendTextToSnapshot}
|
|
81
|
+
* there). This mutates only the JSON projection (`blockdoc.blocks`), NOT the
|
|
82
|
+
* CRDT `update` — so a *live* editor on that page should apply the change
|
|
83
|
+
* through the editor bridge instead (one CRDT transaction, undoable). This
|
|
84
|
+
* server-side path exists for the MCP server, which has no live editor; a live
|
|
85
|
+
* client merges the JSON projection on next load. Used by the agent's confirm
|
|
86
|
+
* gate only as a fallback when no editor bridge is present.
|
|
87
|
+
*/
|
|
88
|
+
export function appendBlocksToSnapshot(data, blocks, idPrefix = 'gen') {
|
|
89
|
+
if (data.editor !== 'blocks')
|
|
90
|
+
return null;
|
|
91
|
+
if (blocks.length === 0)
|
|
92
|
+
return data;
|
|
93
|
+
const blockdoc = data.blockdoc ?? { blocks: [] };
|
|
94
|
+
const projected = blocks.map((b, i) => ({
|
|
95
|
+
id: `${idPrefix}-${i}`,
|
|
96
|
+
type: b.type,
|
|
97
|
+
...(b.text !== undefined ? { text: [{ t: b.text }] } : {}),
|
|
98
|
+
...(b.props ? { props: b.props } : {}),
|
|
99
|
+
}));
|
|
100
|
+
return {
|
|
101
|
+
...data,
|
|
102
|
+
// Drop the stale CRDT `update` so the page rebuilds from the JSON projection
|
|
103
|
+
// (decodeSnapshot prefers `update`; clearing it forces the merged blocks in).
|
|
104
|
+
blockdoc: { ...blockdoc, update: undefined, blocks: [...(blockdoc.blocks ?? []), ...projected] },
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"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"}
|