@opentabs-dev/opentabs-plugin-notebooklm 0.0.103

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 (89) hide show
  1. package/README.md +73 -0
  2. package/dist/adapter.iife.js +15028 -0
  3. package/dist/adapter.iife.js.map +7 -0
  4. package/dist/index.d.ts +14 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +54 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/notebooklm-api.d.ts +9 -0
  9. package/dist/notebooklm-api.d.ts.map +1 -0
  10. package/dist/notebooklm-api.js +116 -0
  11. package/dist/notebooklm-api.js.map +1 -0
  12. package/dist/tools/add-source-text.d.ts +9 -0
  13. package/dist/tools/add-source-text.d.ts.map +1 -0
  14. package/dist/tools/add-source-text.js +25 -0
  15. package/dist/tools/add-source-text.js.map +1 -0
  16. package/dist/tools/add-source-url.d.ts +8 -0
  17. package/dist/tools/add-source-url.d.ts.map +1 -0
  18. package/dist/tools/add-source-url.js +24 -0
  19. package/dist/tools/add-source-url.js.map +1 -0
  20. package/dist/tools/copy-notebook.d.ts +7 -0
  21. package/dist/tools/copy-notebook.d.ts.map +1 -0
  22. package/dist/tools/copy-notebook.js +23 -0
  23. package/dist/tools/copy-notebook.js.map +1 -0
  24. package/dist/tools/create-note.d.ts +8 -0
  25. package/dist/tools/create-note.d.ts.map +1 -0
  26. package/dist/tools/create-note.js +25 -0
  27. package/dist/tools/create-note.js.map +1 -0
  28. package/dist/tools/create-notebook.d.ts +7 -0
  29. package/dist/tools/create-notebook.d.ts.map +1 -0
  30. package/dist/tools/create-notebook.js +23 -0
  31. package/dist/tools/create-notebook.js.map +1 -0
  32. package/dist/tools/delete-notebook.d.ts +7 -0
  33. package/dist/tools/delete-notebook.d.ts.map +1 -0
  34. package/dist/tools/delete-notebook.js +22 -0
  35. package/dist/tools/delete-notebook.js.map +1 -0
  36. package/dist/tools/delete-notes.d.ts +8 -0
  37. package/dist/tools/delete-notes.d.ts.map +1 -0
  38. package/dist/tools/delete-notes.js +23 -0
  39. package/dist/tools/delete-notes.js.map +1 -0
  40. package/dist/tools/delete-sources.d.ts +8 -0
  41. package/dist/tools/delete-sources.d.ts.map +1 -0
  42. package/dist/tools/delete-sources.js +23 -0
  43. package/dist/tools/delete-sources.js.map +1 -0
  44. package/dist/tools/get-current-user.d.ts +9 -0
  45. package/dist/tools/get-current-user.d.ts.map +1 -0
  46. package/dist/tools/get-current-user.js +27 -0
  47. package/dist/tools/get-current-user.js.map +1 -0
  48. package/dist/tools/get-notebook-guide.d.ts +12 -0
  49. package/dist/tools/get-notebook-guide.d.ts.map +1 -0
  50. package/dist/tools/get-notebook-guide.js +38 -0
  51. package/dist/tools/get-notebook-guide.js.map +1 -0
  52. package/dist/tools/get-notebook.d.ts +15 -0
  53. package/dist/tools/get-notebook.d.ts.map +1 -0
  54. package/dist/tools/get-notebook.js +24 -0
  55. package/dist/tools/get-notebook.js.map +1 -0
  56. package/dist/tools/get-notes.d.ts +12 -0
  57. package/dist/tools/get-notes.d.ts.map +1 -0
  58. package/dist/tools/get-notes.js +29 -0
  59. package/dist/tools/get-notes.js.map +1 -0
  60. package/dist/tools/get-project-details.d.ts +13 -0
  61. package/dist/tools/get-project-details.d.ts.map +1 -0
  62. package/dist/tools/get-project-details.js +36 -0
  63. package/dist/tools/get-project-details.js.map +1 -0
  64. package/dist/tools/list-chat-sessions.d.ts +10 -0
  65. package/dist/tools/list-chat-sessions.d.ts.map +1 -0
  66. package/dist/tools/list-chat-sessions.js +27 -0
  67. package/dist/tools/list-chat-sessions.js.map +1 -0
  68. package/dist/tools/list-notebooks.d.ts +13 -0
  69. package/dist/tools/list-notebooks.d.ts.map +1 -0
  70. package/dist/tools/list-notebooks.js +22 -0
  71. package/dist/tools/list-notebooks.js.map +1 -0
  72. package/dist/tools/navigate-to-notebook.d.ts +7 -0
  73. package/dist/tools/navigate-to-notebook.d.ts.map +1 -0
  74. package/dist/tools/navigate-to-notebook.js +21 -0
  75. package/dist/tools/navigate-to-notebook.js.map +1 -0
  76. package/dist/tools/rename-notebook.d.ts +8 -0
  77. package/dist/tools/rename-notebook.d.ts.map +1 -0
  78. package/dist/tools/rename-notebook.js +23 -0
  79. package/dist/tools/rename-notebook.js.map +1 -0
  80. package/dist/tools/schemas.d.ts +44 -0
  81. package/dist/tools/schemas.d.ts.map +1 -0
  82. package/dist/tools/schemas.js +72 -0
  83. package/dist/tools/schemas.js.map +1 -0
  84. package/dist/tools/update-note.d.ts +9 -0
  85. package/dist/tools/update-note.d.ts.map +1 -0
  86. package/dist/tools/update-note.js +24 -0
  87. package/dist/tools/update-note.js.map +1 -0
  88. package/dist/tools.json +874 -0
  89. package/package.json +68 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-notebook-guide.d.ts","sourceRoot":"","sources":["../../src/tools/get-notebook-guide.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,gBAAgB;;;;;;;;;kBAwC3B,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { rpc, FEATURE_FLAGS } from '../notebooklm-api.js';
4
+ export const getNotebookGuide = defineTool({
5
+ name: 'get_notebook_guide',
6
+ displayName: 'Get Notebook Guide',
7
+ description: 'Generate an AI summary of all sources in a notebook, along with suggested questions for deeper exploration. This is the primary way to get NotebookLM to analyze and synthesize your sources.',
8
+ summary: 'Get AI summary of sources',
9
+ icon: 'sparkles',
10
+ group: 'Chat',
11
+ input: z.object({
12
+ notebook_id: z.string().describe('Notebook UUID'),
13
+ }),
14
+ output: z.object({
15
+ summary: z.string().describe('AI-generated summary of all sources'),
16
+ suggested_questions: z
17
+ .array(z.object({
18
+ question: z.string().describe('Suggested question'),
19
+ prompt: z.string().describe('Full prompt for generating a briefing doc on this question'),
20
+ }))
21
+ .describe('AI-suggested follow-up questions with prompts'),
22
+ guide_id: z.string().describe('Guide ID for reference'),
23
+ }),
24
+ handle: async (params) => {
25
+ const data = await rpc('VfAZjd', [params.notebook_id, [...FEATURE_FLAGS]], `/notebook/${params.notebook_id}`);
26
+ const inner = data?.[0] ?? [];
27
+ const summary = (inner[0] ?? [])[0] ?? '';
28
+ const questionsBlock = inner[1] ?? [];
29
+ const questionPairs = questionsBlock[0] ?? [];
30
+ const suggested_questions = questionPairs.map(q => ({
31
+ question: q[0] ?? '',
32
+ prompt: q[1] ?? '',
33
+ }));
34
+ const guideId = data?.[1] ?? '';
35
+ return { summary, suggested_questions, guide_id: guideId };
36
+ },
37
+ });
38
+ //# sourceMappingURL=get-notebook-guide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-notebook-guide.js","sourceRoot":"","sources":["../../src/tools/get-notebook-guide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;IACzC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,oBAAoB;IACjC,WAAW,EACT,+LAA+L;IACjM,OAAO,EAAE,2BAA2B;IACpC,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;KAClD,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QACnE,mBAAmB,EAAE,CAAC;aACnB,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;YACP,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YACnD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;SAC1F,CAAC,CACH;aACA,QAAQ,CAAC,+CAA+C,CAAC;QAC5D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;KACxD,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,GAAG,CACpB,QAAQ,EACR,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,EACxC,aAAa,MAAM,CAAC,WAAW,EAAE,CAClC,CAAC;QACF,MAAM,KAAK,GAAI,IAAI,EAAE,CAAC,CAAC,CAAe,IAAI,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAI,CAAE,KAAK,CAAC,CAAC,CAAe,IAAI,EAAE,CAAC,CAAC,CAAC,CAAY,IAAI,EAAE,CAAC;QACrE,MAAM,cAAc,GAAI,KAAK,CAAC,CAAC,CAAe,IAAI,EAAE,CAAC;QACrD,MAAM,aAAa,GAAI,cAAc,CAAC,CAAC,CAAiB,IAAI,EAAE,CAAC;QAC/D,MAAM,mBAAmB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAClD,QAAQ,EAAG,CAAC,CAAC,CAAC,CAAY,IAAI,EAAE;YAChC,MAAM,EAAG,CAAC,CAAC,CAAC,CAAY,IAAI,EAAE;SAC/B,CAAC,CAAC,CAAC;QACJ,MAAM,OAAO,GAAI,IAAI,EAAE,CAAC,CAAC,CAAY,IAAI,EAAE,CAAC;QAC5C,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC7D,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { z } from 'zod';
2
+ export declare const getNotebook: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ notebook_id: z.ZodString;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ notebook: z.ZodObject<{
6
+ id: z.ZodString;
7
+ title: z.ZodString;
8
+ is_owner: z.ZodBoolean;
9
+ has_sources: z.ZodBoolean;
10
+ source_count: z.ZodNumber;
11
+ created_at_seconds: z.ZodNumber;
12
+ updated_at_seconds: z.ZodNumber;
13
+ }, z.core.$strip>;
14
+ }, z.core.$strip>>;
15
+ //# sourceMappingURL=get-notebook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-notebook.d.ts","sourceRoot":"","sources":["../../src/tools/get-notebook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,WAAW;;;;;;;;;;;;kBAsBtB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { rpc, FEATURE_FLAGS } from '../notebooklm-api.js';
4
+ import { notebookSchema, mapNotebook } from './schemas.js';
5
+ export const getNotebook = defineTool({
6
+ name: 'get_notebook',
7
+ displayName: 'Get Notebook',
8
+ description: 'Get details of a specific notebook by ID, including title, source count, and timestamps.',
9
+ summary: 'Get notebook details',
10
+ icon: 'book-open',
11
+ group: 'Notebooks',
12
+ input: z.object({
13
+ notebook_id: z.string().describe('Notebook UUID'),
14
+ }),
15
+ output: z.object({
16
+ notebook: notebookSchema,
17
+ }),
18
+ handle: async (params) => {
19
+ const data = await rpc('rLM1Ne', [params.notebook_id, null, [...FEATURE_FLAGS], null, 0], `/notebook/${params.notebook_id}`);
20
+ const inner = data?.[0] ?? [];
21
+ return { notebook: mapNotebook(inner) };
22
+ },
23
+ });
24
+ //# sourceMappingURL=get-notebook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-notebook.js","sourceRoot":"","sources":["../../src/tools/get-notebook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,0FAA0F;IACvG,OAAO,EAAE,sBAAsB;IAC/B,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;KAClD,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,cAAc;KACzB,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,GAAG,CACpB,QAAQ,EACR,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EACvD,aAAa,MAAM,CAAC,WAAW,EAAE,CAClC,CAAC;QACF,MAAM,KAAK,GAAI,IAAI,EAAE,CAAC,CAAC,CAAe,IAAI,EAAE,CAAC;QAC7C,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;IAC1C,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+ export declare const getNotes: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ notebook_id: z.ZodString;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ notes: z.ZodArray<z.ZodObject<{
6
+ id: z.ZodString;
7
+ content: z.ZodString;
8
+ created_at_seconds: z.ZodNumber;
9
+ }, z.core.$strip>>;
10
+ sync_token_seconds: z.ZodNumber;
11
+ }, z.core.$strip>>;
12
+ //# sourceMappingURL=get-notes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-notes.d.ts","sourceRoot":"","sources":["../../src/tools/get-notes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,QAAQ;;;;;;;;;kBA2BnB,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { rpc, FEATURE_FLAGS } from '../notebooklm-api.js';
4
+ import { noteSchema, mapNote } from './schemas.js';
5
+ export const getNotes = defineTool({
6
+ name: 'get_notes',
7
+ displayName: 'Get Notes',
8
+ description: 'Get all notes in a notebook. Returns note IDs, titles, content, and timestamps.',
9
+ summary: 'Get notes in a notebook',
10
+ icon: 'sticky-note',
11
+ group: 'Notes',
12
+ input: z.object({
13
+ notebook_id: z.string().describe('Notebook UUID'),
14
+ }),
15
+ output: z.object({
16
+ notes: z.array(noteSchema).describe('List of notes'),
17
+ sync_token_seconds: z.number().describe('Sync token timestamp for polling updates'),
18
+ }),
19
+ handle: async (params) => {
20
+ const data = await rpc('cFji9', [params.notebook_id, null, null, [...FEATURE_FLAGS]], `/notebook/${params.notebook_id}`);
21
+ const notesList = data?.[0] ?? [];
22
+ const syncToken = data?.[1] ?? [];
23
+ return {
24
+ notes: notesList.map(n => mapNote(n)),
25
+ sync_token_seconds: syncToken[0] ?? 0,
26
+ };
27
+ },
28
+ });
29
+ //# sourceMappingURL=get-notes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-notes.js","sourceRoot":"","sources":["../../src/tools/get-notes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;IACjC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE,iFAAiF;IAC9F,OAAO,EAAE,yBAAyB;IAClC,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;KAClD,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;QACpD,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KACpF,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,GAAG,CACpB,OAAO,EACP,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,EACpD,aAAa,MAAM,CAAC,WAAW,EAAE,CAClC,CAAC;QACF,MAAM,SAAS,GAAI,IAAI,EAAE,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAC/D,MAAM,SAAS,GAAI,IAAI,EAAE,CAAC,CAAC,CAA0B,IAAI,EAAE,CAAC;QAC5D,OAAO;YACL,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACrC,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;SACtC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod';
2
+ export declare const getProjectDetails: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ notebook_id: z.ZodString;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ collaborators: z.ZodArray<z.ZodObject<{
6
+ email: z.ZodString;
7
+ name: z.ZodString;
8
+ avatar_url: z.ZodString;
9
+ }, z.core.$strip>>;
10
+ max_sources: z.ZodNumber;
11
+ is_public: z.ZodBoolean;
12
+ }, z.core.$strip>>;
13
+ //# sourceMappingURL=get-project-details.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-project-details.d.ts","sourceRoot":"","sources":["../../src/tools/get-project-details.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,iBAAiB;;;;;;;;;;kBAkC5B,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { rpc, FEATURE_FLAGS } from '../notebooklm-api.js';
4
+ import { accountUserSchema } from './schemas.js';
5
+ export const getProjectDetails = defineTool({
6
+ name: 'get_project_details',
7
+ displayName: 'Get Project Details',
8
+ description: 'Get sharing details and collaborators for a notebook, including the owner and permission level.',
9
+ summary: 'Get notebook sharing details',
10
+ icon: 'users',
11
+ group: 'Notebooks',
12
+ input: z.object({
13
+ notebook_id: z.string().describe('Notebook UUID'),
14
+ }),
15
+ output: z.object({
16
+ collaborators: z.array(accountUserSchema).describe('List of collaborators'),
17
+ max_sources: z.number().int().describe('Maximum number of sources allowed'),
18
+ is_public: z.boolean().describe('Whether the notebook is publicly shared'),
19
+ }),
20
+ handle: async (params) => {
21
+ const data = await rpc('JFMDGd', [params.notebook_id, [...FEATURE_FLAGS]], `/notebook/${params.notebook_id}`);
22
+ const collabList = data?.[0] ?? [];
23
+ const maxSources = data?.[2] ?? 0;
24
+ const isPublic = data?.[3] ?? false;
25
+ return {
26
+ collaborators: collabList.map(c => ({
27
+ email: c[0] ?? '',
28
+ name: (c[3] ?? [])[0] ?? '',
29
+ avatar_url: (c[3] ?? [])[1] ?? '',
30
+ })),
31
+ max_sources: maxSources,
32
+ is_public: isPublic,
33
+ };
34
+ },
35
+ });
36
+ //# sourceMappingURL=get-project-details.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-project-details.js","sourceRoot":"","sources":["../../src/tools/get-project-details.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC;IAC1C,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,qBAAqB;IAClC,WAAW,EAAE,iGAAiG;IAC9G,OAAO,EAAE,8BAA8B;IACvC,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;KAClD,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC3E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAC3E,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;KAC3E,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,GAAG,CACpB,QAAQ,EACR,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,EACxC,aAAa,MAAM,CAAC,WAAW,EAAE,CAClC,CAAC;QACF,MAAM,UAAU,GAAI,IAAI,EAAE,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAChE,MAAM,UAAU,GAAI,IAAI,EAAE,CAAC,CAAC,CAAY,IAAI,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAI,IAAI,EAAE,CAAC,CAAC,CAAa,IAAI,KAAK,CAAC;QACjD,OAAO;YACL,aAAa,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAClC,KAAK,EAAG,CAAC,CAAC,CAAC,CAAY,IAAI,EAAE;gBAC7B,IAAI,EAAG,CAAE,CAAC,CAAC,CAAC,CAAe,IAAI,EAAE,CAAC,CAAC,CAAC,CAAY,IAAI,EAAE;gBACtD,UAAU,EAAG,CAAE,CAAC,CAAC,CAAC,CAAe,IAAI,EAAE,CAAC,CAAC,CAAC,CAAY,IAAI,EAAE;aAC7D,CAAC,CAAC;YACH,WAAW,EAAE,UAAU;YACvB,SAAS,EAAE,QAAQ;SACpB,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { z } from 'zod';
2
+ export declare const listChatSessions: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ notebook_id: z.ZodString;
4
+ limit: z.ZodOptional<z.ZodNumber>;
5
+ }, z.core.$strip>, z.ZodObject<{
6
+ sessions: z.ZodArray<z.ZodObject<{
7
+ id: z.ZodString;
8
+ }, z.core.$strip>>;
9
+ }, z.core.$strip>>;
10
+ //# sourceMappingURL=list-chat-sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-chat-sessions.d.ts","sourceRoot":"","sources":["../../src/tools/list-chat-sessions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,gBAAgB;;;;;;;kBA0B3B,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { rpc } from '../notebooklm-api.js';
4
+ import { chatSessionSchema, mapChatSession } from './schemas.js';
5
+ export const listChatSessions = defineTool({
6
+ name: 'list_chat_sessions',
7
+ displayName: 'List Chat Sessions',
8
+ description: 'List chat sessions in a notebook. Each notebook has one or more chat sessions that contain conversation history.',
9
+ summary: 'List chat sessions',
10
+ icon: 'messages-square',
11
+ group: 'Chat',
12
+ input: z.object({
13
+ notebook_id: z.string().describe('Notebook UUID'),
14
+ limit: z.number().int().min(1).max(100).optional().describe('Max results (default 20)'),
15
+ }),
16
+ output: z.object({
17
+ sessions: z.array(chatSessionSchema).describe('List of chat sessions'),
18
+ }),
19
+ handle: async (params) => {
20
+ const data = await rpc('hPTbtc', [[], null, params.notebook_id, params.limit ?? 20], `/notebook/${params.notebook_id}`);
21
+ const sessionsList = data?.[0] ?? [];
22
+ return {
23
+ sessions: sessionsList.map(s => mapChatSession(s)),
24
+ };
25
+ },
26
+ });
27
+ //# sourceMappingURL=list-chat-sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-chat-sessions.js","sourceRoot":"","sources":["../../src/tools/list-chat-sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;IACzC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,oBAAoB;IACjC,WAAW,EACT,kHAAkH;IACpH,OAAO,EAAE,oBAAoB;IAC7B,IAAI,EAAE,iBAAiB;IACvB,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QACjD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KACxF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KACvE,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,GAAG,CACpB,QAAQ,EACR,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,EAClD,aAAa,MAAM,CAAC,WAAW,EAAE,CAClC,CAAC;QACF,MAAM,YAAY,GAAI,IAAI,EAAE,CAAC,CAAC,CAA6B,IAAI,EAAE,CAAC;QAClE,OAAO;YACL,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;SACnD,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { z } from 'zod';
2
+ export declare const listNotebooks: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{}, z.core.$strip>, z.ZodObject<{
3
+ notebooks: z.ZodArray<z.ZodObject<{
4
+ id: z.ZodString;
5
+ title: z.ZodString;
6
+ is_owner: z.ZodBoolean;
7
+ has_sources: z.ZodBoolean;
8
+ source_count: z.ZodNumber;
9
+ created_at_seconds: z.ZodNumber;
10
+ updated_at_seconds: z.ZodNumber;
11
+ }, z.core.$strip>>;
12
+ }, z.core.$strip>>;
13
+ //# sourceMappingURL=list-notebooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-notebooks.d.ts","sourceRoot":"","sources":["../../src/tools/list-notebooks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,aAAa;;;;;;;;;;kBAiBxB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { rpc, FEATURE_FLAGS } from '../notebooklm-api.js';
4
+ import { notebookSchema, mapNotebook } from './schemas.js';
5
+ export const listNotebooks = defineTool({
6
+ name: 'list_notebooks',
7
+ displayName: 'List Notebooks',
8
+ description: "List recently viewed notebooks in the user's NotebookLM account. Returns notebook IDs, titles, source counts, and timestamps.",
9
+ summary: 'List recent notebooks',
10
+ icon: 'library',
11
+ group: 'Notebooks',
12
+ input: z.object({}),
13
+ output: z.object({
14
+ notebooks: z.array(notebookSchema).describe('List of notebooks'),
15
+ }),
16
+ handle: async () => {
17
+ const data = (await rpc('wXbhsf', [null, 1, null, [...FEATURE_FLAGS]])) ?? [];
18
+ const notebooks = Array.isArray(data[0]) ? data[0].map((n) => mapNotebook(n)) : [];
19
+ return { notebooks };
20
+ },
21
+ });
22
+ //# sourceMappingURL=list-notebooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-notebooks.js","sourceRoot":"","sources":["../../src/tools/list-notebooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;IACtC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EACT,+HAA+H;IACjI,OAAO,EAAE,uBAAuB;IAChC,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KACjE,CAAC;IACF,MAAM,EAAE,KAAK,IAAI,EAAE;QACjB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAc,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3F,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,WAAW,CAAC,CAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzG,OAAO,EAAE,SAAS,EAAE,CAAC;IACvB,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { z } from 'zod';
2
+ export declare const navigateToNotebook: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ notebook_id: z.ZodString;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ success: z.ZodBoolean;
6
+ }, z.core.$strip>>;
7
+ //# sourceMappingURL=navigate-to-notebook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigate-to-notebook.d.ts","sourceRoot":"","sources":["../../src/tools/navigate-to-notebook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB;;;;kBAiB7B,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ export const navigateToNotebook = defineTool({
4
+ name: 'navigate_to_notebook',
5
+ displayName: 'Navigate to Notebook',
6
+ description: 'Navigate the browser to a specific notebook page in NotebookLM.',
7
+ summary: 'Open a notebook',
8
+ icon: 'external-link',
9
+ group: 'Notebooks',
10
+ input: z.object({
11
+ notebook_id: z.string().describe('Notebook UUID'),
12
+ }),
13
+ output: z.object({
14
+ success: z.boolean().describe('Whether navigation was initiated'),
15
+ }),
16
+ handle: async (params) => {
17
+ window.location.href = `/notebook/${params.notebook_id}`;
18
+ return { success: true };
19
+ },
20
+ });
21
+ //# sourceMappingURL=navigate-to-notebook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigate-to-notebook.js","sourceRoot":"","sources":["../../src/tools/navigate-to-notebook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAAC;IAC3C,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,sBAAsB;IACnC,WAAW,EAAE,iEAAiE;IAC9E,OAAO,EAAE,iBAAiB;IAC1B,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;KAClD,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;KAClE,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,aAAa,MAAM,CAAC,WAAW,EAAE,CAAC;QACzD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ export declare const renameNotebook: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ notebook_id: z.ZodString;
4
+ title: z.ZodString;
5
+ }, z.core.$strip>, z.ZodObject<{
6
+ success: z.ZodBoolean;
7
+ }, z.core.$strip>>;
8
+ //# sourceMappingURL=rename-notebook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename-notebook.d.ts","sourceRoot":"","sources":["../../src/tools/rename-notebook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,cAAc;;;;;kBAsBzB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { rpc } from '../notebooklm-api.js';
4
+ export const renameNotebook = defineTool({
5
+ name: 'rename_notebook',
6
+ displayName: 'Rename Notebook',
7
+ description: 'Rename a notebook by setting a new title.',
8
+ summary: 'Rename a notebook',
9
+ icon: 'pencil',
10
+ group: 'Notebooks',
11
+ input: z.object({
12
+ notebook_id: z.string().describe('Notebook UUID'),
13
+ title: z.string().describe('New notebook title'),
14
+ }),
15
+ output: z.object({
16
+ success: z.boolean().describe('Whether the operation succeeded'),
17
+ }),
18
+ handle: async (params) => {
19
+ await rpc('s0tc2d', [params.notebook_id, [[null, null, null, [null, params.title]]]], `/notebook/${params.notebook_id}`);
20
+ return { success: true };
21
+ },
22
+ });
23
+ //# sourceMappingURL=rename-notebook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rename-notebook.js","sourceRoot":"","sources":["../../src/tools/rename-notebook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAE3C,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;IACvC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EAAE,2CAA2C;IACxD,OAAO,EAAE,mBAAmB;IAC5B,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QACjD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KACjD,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KACjE,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,GAAG,CACP,QAAQ,EACR,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAChE,aAAa,MAAM,CAAC,WAAW,EAAE,CAClC,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { z } from 'zod';
2
+ export declare const notebookSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ title: z.ZodString;
5
+ is_owner: z.ZodBoolean;
6
+ has_sources: z.ZodBoolean;
7
+ source_count: z.ZodNumber;
8
+ created_at_seconds: z.ZodNumber;
9
+ updated_at_seconds: z.ZodNumber;
10
+ }, z.core.$strip>;
11
+ export interface RawNotebook {
12
+ 0?: string;
13
+ 1?: unknown;
14
+ 2?: string;
15
+ 3?: string;
16
+ 4?: unknown;
17
+ 5?: unknown[];
18
+ }
19
+ export declare const mapNotebook: (n: unknown[]) => z.infer<typeof notebookSchema>;
20
+ export declare const sourceSchema: z.ZodObject<{
21
+ id: z.ZodString;
22
+ title: z.ZodString;
23
+ type: z.ZodString;
24
+ status: z.ZodString;
25
+ url: z.ZodString;
26
+ content_preview: z.ZodString;
27
+ }, z.core.$strip>;
28
+ export declare const mapSource: (s: unknown[]) => z.infer<typeof sourceSchema>;
29
+ export declare const noteSchema: z.ZodObject<{
30
+ id: z.ZodString;
31
+ content: z.ZodString;
32
+ created_at_seconds: z.ZodNumber;
33
+ }, z.core.$strip>;
34
+ export declare const mapNote: (n: unknown[]) => z.infer<typeof noteSchema>;
35
+ export declare const chatSessionSchema: z.ZodObject<{
36
+ id: z.ZodString;
37
+ }, z.core.$strip>;
38
+ export declare const mapChatSession: (s: unknown[]) => z.infer<typeof chatSessionSchema>;
39
+ export declare const accountUserSchema: z.ZodObject<{
40
+ email: z.ZodString;
41
+ name: z.ZodString;
42
+ avatar_url: z.ZodString;
43
+ }, z.core.$strip>;
44
+ //# 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,cAAc;;;;;;;;iBAQzB,CAAC;AAEH,MAAM,WAAW,WAAW;IAC1B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;CACf;AAED,eAAO,MAAM,WAAW,GAAI,GAAG,OAAO,EAAE,KAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAavE,CAAC;AAIF,eAAO,MAAM,YAAY;;;;;;;iBAOvB,CAAC;AAEH,eAAO,MAAM,SAAS,GAAI,GAAG,OAAO,EAAE,KAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAOlE,CAAC;AAIH,eAAO,MAAM,UAAU;;;;iBAIrB,CAAC;AAEH,eAAO,MAAM,OAAO,GAAI,GAAG,OAAO,EAAE,KAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAS/D,CAAC;AAIF,eAAO,MAAM,iBAAiB;;iBAE5B,CAAC;AAEH,eAAO,MAAM,cAAc,GAAI,GAAG,OAAO,EAAE,KAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAE5E,CAAC;AAIH,eAAO,MAAM,iBAAiB;;;;iBAI5B,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { z } from 'zod';
2
+ // --- Notebook (Project) ---
3
+ export const notebookSchema = z.object({
4
+ id: z.string().describe('Notebook UUID'),
5
+ title: z.string().describe('Notebook title'),
6
+ is_owner: z.boolean().describe('Whether the current user owns this notebook'),
7
+ has_sources: z.boolean().describe('Whether the notebook has sources'),
8
+ source_count: z.number().int().describe('Number of sources in the notebook'),
9
+ created_at_seconds: z.number().describe('Creation timestamp (Unix seconds)'),
10
+ updated_at_seconds: z.number().describe('Last update timestamp (Unix seconds)'),
11
+ });
12
+ export const mapNotebook = (n) => {
13
+ const meta = n[5] ?? [];
14
+ const createdAt = meta[8] ?? [];
15
+ const updatedAt = meta[5] ?? [];
16
+ return {
17
+ id: n[2] ?? '',
18
+ title: n[3] ?? '',
19
+ is_owner: meta[0] === 1,
20
+ has_sources: meta[2] ?? false,
21
+ source_count: meta[6] ?? 0,
22
+ created_at_seconds: createdAt[0] ?? 0,
23
+ updated_at_seconds: updatedAt[0] ?? 0,
24
+ };
25
+ };
26
+ // --- Source ---
27
+ export const sourceSchema = z.object({
28
+ id: z.string().describe('Source UUID'),
29
+ title: z.string().describe('Source title'),
30
+ type: z.string().describe('Source type (e.g., WEBSITE, PDF, TEXT)'),
31
+ status: z.string().describe('Processing status'),
32
+ url: z.string().describe('Source URL (if applicable)'),
33
+ content_preview: z.string().describe('First few lines of content'),
34
+ });
35
+ export const mapSource = (s) => ({
36
+ id: s[0] ?? '',
37
+ title: s[1] ?? '',
38
+ type: s[2] ?? '',
39
+ status: s[3] ?? '',
40
+ url: s[4] ?? '',
41
+ content_preview: s[5] ?? '',
42
+ });
43
+ // --- Note ---
44
+ export const noteSchema = z.object({
45
+ id: z.string().describe('Note UUID'),
46
+ content: z.string().describe('Note content (markdown)'),
47
+ created_at_seconds: z.number().describe('Creation timestamp (Unix seconds)'),
48
+ });
49
+ export const mapNote = (n) => {
50
+ const noteData = Array.isArray(n[1]) ? n[1] : n;
51
+ const versionInfo = noteData[2] ?? [];
52
+ const timestamp = versionInfo[2] ?? [];
53
+ return {
54
+ id: noteData[0] ?? '',
55
+ content: noteData[1] ?? '',
56
+ created_at_seconds: timestamp[0] ?? 0,
57
+ };
58
+ };
59
+ // --- Chat Session ---
60
+ export const chatSessionSchema = z.object({
61
+ id: z.string().describe('Chat session UUID'),
62
+ });
63
+ export const mapChatSession = (s) => ({
64
+ id: s[0] ?? '',
65
+ });
66
+ // --- Account ---
67
+ export const accountUserSchema = z.object({
68
+ email: z.string().describe('User email address'),
69
+ name: z.string().describe('User display name'),
70
+ avatar_url: z.string().describe('User avatar URL'),
71
+ });
72
+ //# 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,9 @@
1
+ import { z } from 'zod';
2
+ export declare const updateNote: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ notebook_id: z.ZodString;
4
+ note_id: z.ZodString;
5
+ content: z.ZodString;
6
+ }, z.core.$strip>, z.ZodObject<{
7
+ success: z.ZodBoolean;
8
+ }, z.core.$strip>>;
9
+ //# sourceMappingURL=update-note.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-note.d.ts","sourceRoot":"","sources":["../../src/tools/update-note.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,UAAU;;;;;;kBAmBrB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { rpc } from '../notebooklm-api.js';
4
+ export const updateNote = defineTool({
5
+ name: 'update_note',
6
+ displayName: 'Update Note',
7
+ description: 'Update the content of an existing note.',
8
+ summary: 'Update a note',
9
+ icon: 'file-pen',
10
+ group: 'Notes',
11
+ input: z.object({
12
+ notebook_id: z.string().describe('Notebook UUID'),
13
+ note_id: z.string().describe('Note UUID to update'),
14
+ content: z.string().describe('New note content (supports markdown)'),
15
+ }),
16
+ output: z.object({
17
+ success: z.boolean().describe('Whether the operation succeeded'),
18
+ }),
19
+ handle: async (params) => {
20
+ await rpc('cYAfTb', [params.notebook_id, params.note_id, params.content], `/notebook/${params.notebook_id}`);
21
+ return { success: true };
22
+ },
23
+ });
24
+ //# sourceMappingURL=update-note.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-note.js","sourceRoot":"","sources":["../../src/tools/update-note.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAE3C,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;IACnC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,yCAAyC;IACtD,OAAO,EAAE,eAAe;IACxB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QACjD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACnD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;KACrE,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KACjE,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7G,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC"}