@copilotkit/pathfinder 1.5.0 → 1.6.1

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.
Files changed (38) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/LICENSE +111 -21
  3. package/LICENSING.md +19 -0
  4. package/README.md +7 -1
  5. package/dist/cli.js +1 -1
  6. package/dist/config.d.ts +1 -0
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +8 -2
  9. package/dist/config.js.map +1 -1
  10. package/dist/db/queries.d.ts +5 -0
  11. package/dist/db/queries.d.ts.map +1 -1
  12. package/dist/db/queries.js +9 -0
  13. package/dist/db/queries.js.map +1 -1
  14. package/dist/indexing/chunking/index.js +1 -0
  15. package/dist/indexing/chunking/index.js.map +1 -1
  16. package/dist/indexing/orchestrator.d.ts.map +1 -1
  17. package/dist/indexing/orchestrator.js +2 -1
  18. package/dist/indexing/orchestrator.js.map +1 -1
  19. package/dist/indexing/providers/index.js +2 -0
  20. package/dist/indexing/providers/index.js.map +1 -1
  21. package/dist/indexing/providers/notion-api.d.ts +101 -0
  22. package/dist/indexing/providers/notion-api.d.ts.map +1 -0
  23. package/dist/indexing/providers/notion-api.js +419 -0
  24. package/dist/indexing/providers/notion-api.js.map +1 -0
  25. package/dist/indexing/providers/notion.d.ts +29 -0
  26. package/dist/indexing/providers/notion.d.ts.map +1 -0
  27. package/dist/indexing/providers/notion.js +236 -0
  28. package/dist/indexing/providers/notion.js.map +1 -0
  29. package/dist/indexing/providers/types.d.ts +1 -0
  30. package/dist/indexing/providers/types.d.ts.map +1 -1
  31. package/dist/types.d.ts +228 -0
  32. package/dist/types.d.ts.map +1 -1
  33. package/dist/types.js +12 -0
  34. package/dist/types.js.map +1 -1
  35. package/dist/validate.d.ts.map +1 -1
  36. package/dist/validate.js +6 -1
  37. package/dist/validate.js.map +1 -1
  38. package/package.json +3 -2
@@ -0,0 +1,419 @@
1
+ // Notion API client wrapper — handles pagination, rate limiting, block-to-markdown conversion.
2
+ // Uses @notionhq/client for type-safe API access.
3
+ import { Client } from '@notionhq/client';
4
+ // ── Rate limit helpers ───────────────────────────────────────────────────────
5
+ function sleep(ms) {
6
+ return new Promise(resolve => setTimeout(resolve, ms));
7
+ }
8
+ // ── Client ───────────────────────────────────────────────────────────────────
9
+ const MAX_PAGES = 100;
10
+ const MAX_RECURSION_DEPTH = 10;
11
+ const DEFAULT_MIN_REQUEST_INTERVAL = 340;
12
+ export class NotionApiClient {
13
+ client;
14
+ userCache = new Map();
15
+ minRequestInterval;
16
+ maxDepth;
17
+ lastRequestTime = 0;
18
+ logPrefix = '[notion-api]';
19
+ constructor(token, options) {
20
+ this.client = new Client({ auth: token });
21
+ this.minRequestInterval = options?.minRequestInterval ?? DEFAULT_MIN_REQUEST_INTERVAL;
22
+ this.maxDepth = options?.maxDepth ?? MAX_RECURSION_DEPTH;
23
+ }
24
+ // ── Public methods ──────────────────────────────────────────────────────
25
+ /**
26
+ * Search for pages in the workspace. Optionally filter to pages edited after a timestamp.
27
+ */
28
+ async searchPages(editedAfter) {
29
+ const pages = [];
30
+ let startCursor;
31
+ let pageCount = 0;
32
+ const cutoff = editedAfter ? new Date(editedAfter).getTime() : 0;
33
+ do {
34
+ pageCount++;
35
+ const response = await this.throttledCall(() => this.client.search({
36
+ filter: { property: 'object', value: 'page' },
37
+ start_cursor: startCursor,
38
+ page_size: 100,
39
+ }));
40
+ for (const result of response.results) {
41
+ if (result.object !== 'page')
42
+ continue;
43
+ const page = result;
44
+ if (cutoff && new Date(page.last_edited_time).getTime() <= cutoff)
45
+ continue;
46
+ pages.push(this.extractPageMeta(page));
47
+ }
48
+ startCursor = response.has_more ? (response.next_cursor ?? undefined) : undefined;
49
+ if (pageCount >= MAX_PAGES) {
50
+ console.warn(`${this.logPrefix} searchPages hit max pages (${MAX_PAGES})`);
51
+ break;
52
+ }
53
+ } while (startCursor);
54
+ return pages;
55
+ }
56
+ /**
57
+ * Get full markdown content of a page by converting its blocks recursively.
58
+ */
59
+ async getPageContent(pageId) {
60
+ const lines = await this.fetchBlocks(pageId, 0);
61
+ return lines.join('\n');
62
+ }
63
+ /**
64
+ * Get metadata for a single page.
65
+ */
66
+ async getPageMeta(pageId) {
67
+ const page = await this.throttledCall(() => this.client.pages.retrieve({ page_id: pageId }));
68
+ return this.extractPageMeta(page);
69
+ }
70
+ /**
71
+ * Get metadata for a database.
72
+ */
73
+ async getDatabaseMeta(databaseId) {
74
+ const db = await this.throttledCall(() => this.client.databases.retrieve({ database_id: databaseId }));
75
+ const titleParts = db.title ?? [];
76
+ const title = titleParts.map((t) => t.plain_text).join('');
77
+ const propertyNames = Object.keys(db.properties ?? {});
78
+ return {
79
+ id: db.id,
80
+ title,
81
+ url: db.url ?? '',
82
+ propertyNames,
83
+ };
84
+ }
85
+ /**
86
+ * Query a database for pages. Optionally filter to pages edited after a timestamp.
87
+ */
88
+ async queryDatabase(databaseId, editedAfter) {
89
+ const pages = [];
90
+ let startCursor;
91
+ let pageCount = 0;
92
+ const cutoff = editedAfter ? new Date(editedAfter).getTime() : 0;
93
+ do {
94
+ pageCount++;
95
+ const response = await this.throttledCall(() => this.client.databases.query({
96
+ database_id: databaseId,
97
+ start_cursor: startCursor,
98
+ page_size: 100,
99
+ }));
100
+ for (const result of response.results) {
101
+ const page = result;
102
+ if (cutoff && new Date(page.last_edited_time).getTime() <= cutoff)
103
+ continue;
104
+ pages.push(this.extractPageMeta(page));
105
+ }
106
+ startCursor = response.has_more ? (response.next_cursor ?? undefined) : undefined;
107
+ if (pageCount >= MAX_PAGES) {
108
+ console.warn(`${this.logPrefix} queryDatabase hit max pages (${MAX_PAGES})`);
109
+ break;
110
+ }
111
+ } while (startCursor);
112
+ return pages;
113
+ }
114
+ /**
115
+ * Resolve a Notion user ID to a display name. Caches results.
116
+ */
117
+ async resolveUser(userId) {
118
+ const cached = this.userCache.get(userId);
119
+ if (cached)
120
+ return cached;
121
+ try {
122
+ const user = await this.throttledCall(() => this.client.users.retrieve({ user_id: userId }));
123
+ const name = user.name ?? 'Unknown User';
124
+ this.userCache.set(userId, name);
125
+ return name;
126
+ }
127
+ catch {
128
+ const fallback = 'Unknown User';
129
+ this.userCache.set(userId, fallback);
130
+ return fallback;
131
+ }
132
+ }
133
+ /**
134
+ * Serialize a Notion properties object to a Record<string, string>.
135
+ * Unsupported property types are omitted.
136
+ */
137
+ serializeProperties(properties) {
138
+ const result = {};
139
+ for (const [key, prop] of Object.entries(properties)) {
140
+ const value = this.serializeProperty(prop);
141
+ if (value !== null) {
142
+ result[key] = value;
143
+ }
144
+ }
145
+ return result;
146
+ }
147
+ // ── Private: block fetching & conversion ────────────────────────────────
148
+ /**
149
+ * Fetch all blocks for a parent and convert to markdown lines.
150
+ */
151
+ async fetchBlocks(parentId, depth, indent = '') {
152
+ if (depth >= this.maxDepth)
153
+ return [];
154
+ const blocks = await this.paginateBlockChildren(parentId);
155
+ const lines = [];
156
+ for (const blk of blocks) {
157
+ const converted = this.convertBlock(blk, indent);
158
+ if (converted !== null) {
159
+ lines.push(converted);
160
+ }
161
+ // Recurse into children if the block has them
162
+ if (blk.has_children) {
163
+ const childIndent = this.getChildIndent(blk.type, indent);
164
+ const childLines = await this.fetchBlocks(blk.id, depth + 1, childIndent);
165
+ // Special handling for table blocks — render as markdown table
166
+ if (blk.type === 'table') {
167
+ const tableLines = this.renderTable(blk, childLines, blocks);
168
+ lines.push(...tableLines);
169
+ }
170
+ else {
171
+ lines.push(...childLines);
172
+ }
173
+ }
174
+ }
175
+ return lines;
176
+ }
177
+ /**
178
+ * Paginate through all children of a block.
179
+ */
180
+ async paginateBlockChildren(blockId) {
181
+ const blocks = [];
182
+ let startCursor;
183
+ let pageCount = 0;
184
+ do {
185
+ pageCount++;
186
+ const response = await this.throttledCall(() => this.client.blocks.children.list({
187
+ block_id: blockId,
188
+ start_cursor: startCursor,
189
+ page_size: 100,
190
+ }));
191
+ blocks.push(...response.results);
192
+ startCursor = response.has_more ? (response.next_cursor ?? undefined) : undefined;
193
+ if (pageCount >= MAX_PAGES) {
194
+ console.warn(`${this.logPrefix} paginateBlockChildren hit max pages (${MAX_PAGES})`);
195
+ break;
196
+ }
197
+ } while (startCursor);
198
+ return blocks;
199
+ }
200
+ /**
201
+ * Convert a single block to a markdown string. Returns null for unsupported types.
202
+ */
203
+ convertBlock(blk, indent) {
204
+ const type = blk.type;
205
+ const data = blk[type];
206
+ switch (type) {
207
+ case 'paragraph':
208
+ return `${indent}${this.renderRichText(data.rich_text)}`;
209
+ case 'heading_1':
210
+ return `# ${this.renderRichText(data.rich_text)}`;
211
+ case 'heading_2':
212
+ return `## ${this.renderRichText(data.rich_text)}`;
213
+ case 'heading_3':
214
+ return `### ${this.renderRichText(data.rich_text)}`;
215
+ case 'bulleted_list_item':
216
+ return `${indent}- ${this.renderRichText(data.rich_text)}`;
217
+ case 'numbered_list_item':
218
+ return `${indent}1. ${this.renderRichText(data.rich_text)}`;
219
+ case 'to_do':
220
+ return `${indent}- [${data.checked ? 'x' : ' '}] ${this.renderRichText(data.rich_text)}`;
221
+ case 'toggle':
222
+ return `${indent}**${this.renderRichText(data.rich_text)}**`;
223
+ case 'quote':
224
+ return `${indent}> ${this.renderRichText(data.rich_text)}`;
225
+ case 'callout': {
226
+ const icon = data.icon?.emoji ?? data.icon?.external?.url ?? '';
227
+ return `${indent}> **${icon}** ${this.renderRichText(data.rich_text)}`;
228
+ }
229
+ case 'code':
230
+ return `${indent}\`\`\`${data.language ?? ''}\n${this.renderRichText(data.rich_text)}\n\`\`\``;
231
+ case 'divider':
232
+ return `${indent}---`;
233
+ case 'image': {
234
+ const imgUrl = data.type === 'external' ? data.external?.url : data.file?.url;
235
+ const caption = data.caption ? this.renderRichText(data.caption) : '';
236
+ return `${indent}![${caption}](${imgUrl ?? ''})`;
237
+ }
238
+ case 'bookmark': {
239
+ const bmCaption = data.caption ? this.renderRichText(data.caption) : data.url;
240
+ return `${indent}[${bmCaption}](${data.url})`;
241
+ }
242
+ case 'equation':
243
+ return `${indent}$$${data.expression}$$`;
244
+ case 'child_page':
245
+ return `${indent}[Page: ${data.title}]`;
246
+ case 'child_database':
247
+ return `${indent}[Database: ${data.title}]`;
248
+ // Table is handled specially — its text comes from child rows
249
+ case 'table':
250
+ return null;
251
+ // Table rows are rendered by the table handler
252
+ case 'table_row': {
253
+ const cells = (data.cells ?? []).map((cell) => this.renderRichText(cell));
254
+ return `| ${cells.join(' | ')} |`;
255
+ }
256
+ // Transparent containers — just recurse children (handled by fetchBlocks)
257
+ case 'synced_block':
258
+ case 'column_list':
259
+ case 'column':
260
+ return null;
261
+ default:
262
+ // Silently skip unsupported block types
263
+ return null;
264
+ }
265
+ }
266
+ /**
267
+ * Render a Notion table from its child table_row lines.
268
+ */
269
+ renderTable(tableBlock, childLines, _allBlocks) {
270
+ const lines = [];
271
+ const hasHeader = tableBlock.table?.has_column_header ?? false;
272
+ for (let i = 0; i < childLines.length; i++) {
273
+ lines.push(childLines[i]);
274
+ // Insert separator after header row
275
+ if (i === 0 && hasHeader) {
276
+ const colCount = tableBlock.table?.table_width ?? 2;
277
+ const separator = `| ${Array(colCount).fill('---').join(' | ')} |`;
278
+ lines.push(separator);
279
+ }
280
+ }
281
+ return lines;
282
+ }
283
+ /**
284
+ * Determine child indentation based on block type.
285
+ */
286
+ getChildIndent(blockType, currentIndent) {
287
+ if (blockType === 'bulleted_list_item' || blockType === 'numbered_list_item') {
288
+ return currentIndent + ' ';
289
+ }
290
+ return currentIndent;
291
+ }
292
+ // ── Private: rich text rendering ────────────────────────────────────────
293
+ /**
294
+ * Concatenate rich text segments, wrapping linked segments as [text](url).
295
+ */
296
+ renderRichText(richText) {
297
+ if (!richText || !Array.isArray(richText))
298
+ return '';
299
+ return richText.map(segment => {
300
+ const text = segment.plain_text ?? '';
301
+ if (segment.href) {
302
+ return `[${text}](${segment.href})`;
303
+ }
304
+ return text;
305
+ }).join('');
306
+ }
307
+ // ── Private: property serialization ─────────────────────────────────────
308
+ /**
309
+ * Serialize a single Notion property to a string. Returns null for unsupported types.
310
+ */
311
+ serializeProperty(prop) {
312
+ switch (prop.type) {
313
+ case 'title':
314
+ return this.renderRichText(prop.title);
315
+ case 'rich_text':
316
+ return this.renderRichText(prop.rich_text);
317
+ case 'number':
318
+ return prop.number != null ? String(prop.number) : null;
319
+ case 'select':
320
+ return prop.select?.name ?? null;
321
+ case 'multi_select':
322
+ return (prop.multi_select ?? []).map((s) => s.name).join(', ') || null;
323
+ case 'date': {
324
+ if (!prop.date)
325
+ return null;
326
+ const { start, end } = prop.date;
327
+ return end ? `${start} → ${end}` : start;
328
+ }
329
+ case 'checkbox':
330
+ return String(prop.checkbox);
331
+ case 'url':
332
+ return prop.url ?? null;
333
+ case 'email':
334
+ return prop.email ?? null;
335
+ case 'phone_number':
336
+ return prop.phone_number ?? null;
337
+ case 'status':
338
+ return prop.status?.name ?? null;
339
+ case 'people':
340
+ return (prop.people ?? []).map((p) => p.name).join(', ') || null;
341
+ case 'created_time':
342
+ return prop.created_time ?? null;
343
+ case 'last_edited_time':
344
+ return prop.last_edited_time ?? null;
345
+ case 'files':
346
+ return (prop.files ?? []).map((f) => {
347
+ if (f.type === 'external')
348
+ return f.external?.url;
349
+ if (f.type === 'file')
350
+ return f.file?.url;
351
+ return null;
352
+ }).filter(Boolean).join(', ') || null;
353
+ default:
354
+ // formula, rollup, relation, created_by, last_edited_by, etc.
355
+ return null;
356
+ }
357
+ }
358
+ // ── Private: page metadata extraction ───────────────────────────────────
359
+ /**
360
+ * Extract NotionPageMeta from a Notion page object.
361
+ */
362
+ extractPageMeta(page) {
363
+ const parentRaw = page.parent ?? {};
364
+ let parentType = 'workspace';
365
+ let parentId = null;
366
+ if (parentRaw.type === 'page_id') {
367
+ parentType = 'page';
368
+ parentId = parentRaw.page_id;
369
+ }
370
+ else if (parentRaw.type === 'database_id') {
371
+ parentType = 'database';
372
+ parentId = parentRaw.database_id;
373
+ }
374
+ // Extract title from properties
375
+ const title = this.extractTitle(page.properties);
376
+ // Serialize database entry properties for YAML frontmatter
377
+ const properties = parentType === 'database'
378
+ ? this.serializeProperties(page.properties)
379
+ : undefined;
380
+ return {
381
+ id: page.id,
382
+ title,
383
+ lastEditedTime: page.last_edited_time,
384
+ url: page.url ?? '',
385
+ parentType,
386
+ parentId,
387
+ properties,
388
+ };
389
+ }
390
+ /**
391
+ * Extract the title string from a Notion page's properties object.
392
+ * Looks for any property of type "title".
393
+ */
394
+ extractTitle(properties) {
395
+ if (!properties)
396
+ return '';
397
+ for (const prop of Object.values(properties)) {
398
+ const p = prop;
399
+ if (p.type === 'title' && Array.isArray(p.title)) {
400
+ return this.renderRichText(p.title);
401
+ }
402
+ }
403
+ return '';
404
+ }
405
+ // ── Private: throttled API calls ────────────────────────────────────────
406
+ /**
407
+ * Execute an API call with self-throttling to respect Notion's rate limit.
408
+ */
409
+ async throttledCall(fn) {
410
+ const now = Date.now();
411
+ const elapsed = now - this.lastRequestTime;
412
+ if (elapsed < this.minRequestInterval) {
413
+ await sleep(this.minRequestInterval - elapsed);
414
+ }
415
+ this.lastRequestTime = Date.now();
416
+ return fn();
417
+ }
418
+ }
419
+ //# sourceMappingURL=notion-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notion-api.js","sourceRoot":"","sources":["../../../src/indexing/providers/notion-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { SourceConfig } from '../../types.js';
2
+ import type { DataProvider, AcquisitionResult, ProviderOptions } from './types.js';
3
+ export declare class NotionDataProvider implements DataProvider {
4
+ private config;
5
+ private apiClient;
6
+ private logPrefix;
7
+ constructor(config: SourceConfig, options: ProviderOptions);
8
+ fullAcquire(): Promise<AcquisitionResult>;
9
+ incrementalAcquire(lastStateToken: string): Promise<AcquisitionResult>;
10
+ getCurrentStateToken(): Promise<string | null>;
11
+ /**
12
+ * Discover all pages — full page set for indexing or deletion detection.
13
+ */
14
+ private discoverAllPages;
15
+ /**
16
+ * Discover recently edited pages — only pages edited after the given timestamp.
17
+ */
18
+ private discoverEditedPages;
19
+ /**
20
+ * Acquire content for a set of pages. Returns items, max edit time, and failure count.
21
+ */
22
+ private acquireContent;
23
+ /**
24
+ * Build YAML frontmatter from page properties.
25
+ * Skips the "title" key (redundant with page title) and null/empty values.
26
+ */
27
+ private buildFrontmatter;
28
+ }
29
+ //# sourceMappingURL=notion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notion.d.ts","sourceRoot":"","sources":["../../../src/indexing/providers/notion.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAe,eAAe,EAAE,MAAM,YAAY,CAAC;AAEhG,qBAAa,kBAAmB,YAAW,YAAY;IACnD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe;IAepD,WAAW,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAqBzC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAyCtE,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkBpD;;OAEG;YACW,gBAAgB;IAyC9B;;OAEG;YACW,mBAAmB;IA+CjC;;OAEG;YACW,cAAc;IAgD5B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;CAc3B"}