@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,14 @@
1
+ import { OpenTabsPlugin } from '@opentabs-dev/plugin-sdk';
2
+ import type { ToolDefinition } from '@opentabs-dev/plugin-sdk';
3
+ declare class NotebookLMPlugin extends OpenTabsPlugin {
4
+ readonly name = "notebooklm";
5
+ readonly description = "OpenTabs plugin for Google NotebookLM";
6
+ readonly displayName = "NotebookLM";
7
+ readonly urlPatterns: string[];
8
+ readonly homepage = "https://notebooklm.google.com";
9
+ readonly tools: ToolDefinition[];
10
+ isReady(): Promise<boolean>;
11
+ }
12
+ declare const _default: NotebookLMPlugin;
13
+ export default _default;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAqB/D,cAAM,gBAAiB,SAAQ,cAAc;IAC3C,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,WAAW,2CAA2C;IAC/D,SAAkB,WAAW,gBAAgB;IAC7C,QAAQ,CAAC,WAAW,WAAmC;IACvD,SAAkB,QAAQ,mCAAmC;IAE7D,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,CAmB9B;IAEI,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;CAIlC;;AAED,wBAAsC"}
package/dist/index.js ADDED
@@ -0,0 +1,54 @@
1
+ import { OpenTabsPlugin } from '@opentabs-dev/plugin-sdk';
2
+ import { isAuthenticated, waitForAuth } from './notebooklm-api.js';
3
+ import { listNotebooks } from './tools/list-notebooks.js';
4
+ import { getNotebook } from './tools/get-notebook.js';
5
+ import { createNotebook } from './tools/create-notebook.js';
6
+ import { deleteNotebook } from './tools/delete-notebook.js';
7
+ import { renameNotebook } from './tools/rename-notebook.js';
8
+ import { copyNotebook } from './tools/copy-notebook.js';
9
+ import { getProjectDetails } from './tools/get-project-details.js';
10
+ import { navigateToNotebook } from './tools/navigate-to-notebook.js';
11
+ import { getNotes } from './tools/get-notes.js';
12
+ import { createNote } from './tools/create-note.js';
13
+ import { updateNote } from './tools/update-note.js';
14
+ import { deleteNotes } from './tools/delete-notes.js';
15
+ import { listChatSessions } from './tools/list-chat-sessions.js';
16
+ import { getNotebookGuide } from './tools/get-notebook-guide.js';
17
+ import { addSourceUrl } from './tools/add-source-url.js';
18
+ import { addSourceText } from './tools/add-source-text.js';
19
+ import { deleteSources } from './tools/delete-sources.js';
20
+ import { getCurrentUser } from './tools/get-current-user.js';
21
+ class NotebookLMPlugin extends OpenTabsPlugin {
22
+ name = 'notebooklm';
23
+ description = 'OpenTabs plugin for Google NotebookLM';
24
+ displayName = 'NotebookLM';
25
+ urlPatterns = ['*://notebooklm.google.com/*'];
26
+ homepage = 'https://notebooklm.google.com';
27
+ tools = [
28
+ listNotebooks,
29
+ getNotebook,
30
+ createNotebook,
31
+ deleteNotebook,
32
+ renameNotebook,
33
+ copyNotebook,
34
+ getProjectDetails,
35
+ navigateToNotebook,
36
+ getNotes,
37
+ createNote,
38
+ updateNote,
39
+ deleteNotes,
40
+ listChatSessions,
41
+ getNotebookGuide,
42
+ addSourceUrl,
43
+ addSourceText,
44
+ deleteSources,
45
+ getCurrentUser,
46
+ ];
47
+ async isReady() {
48
+ if (isAuthenticated())
49
+ return true;
50
+ return waitForAuth();
51
+ }
52
+ }
53
+ export default new NotebookLMPlugin();
54
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,MAAM,gBAAiB,SAAQ,cAAc;IAClC,IAAI,GAAG,YAAY,CAAC;IACpB,WAAW,GAAG,uCAAuC,CAAC;IAC7C,WAAW,GAAG,YAAY,CAAC;IACpC,WAAW,GAAG,CAAC,6BAA6B,CAAC,CAAC;IACrC,QAAQ,GAAG,+BAA+B,CAAC;IAEpD,KAAK,GAAqB;QACjC,aAAa;QACb,WAAW;QACX,cAAc;QACd,cAAc;QACd,cAAc;QACd,YAAY;QACZ,iBAAiB;QACjB,kBAAkB;QAClB,QAAQ;QACR,UAAU;QACV,UAAU;QACV,WAAW;QACX,gBAAgB;QAChB,gBAAgB;QAChB,YAAY;QACZ,aAAa;QACb,aAAa;QACb,cAAc;KACf,CAAC;IAEF,KAAK,CAAC,OAAO;QACX,IAAI,eAAe,EAAE;YAAE,OAAO,IAAI,CAAC;QACnC,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;CACF;AAED,eAAe,IAAI,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare const isAuthenticated: () => boolean;
2
+ export declare const waitForAuth: () => Promise<boolean>;
3
+ export declare const getCurrentUserInfo: () => {
4
+ userId: string;
5
+ email: string;
6
+ };
7
+ export declare const rpc: <T>(rpcId: string, params: unknown[], sourcePath?: string) => Promise<T>;
8
+ export declare const FEATURE_FLAGS: readonly [2];
9
+ //# sourceMappingURL=notebooklm-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebooklm-api.d.ts","sourceRoot":"","sources":["../src/notebooklm-api.ts"],"names":[],"mappings":"AAsDA,eAAO,MAAM,eAAe,QAAO,OAA6B,CAAC;AAEjE,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,OAAO,CAUnD,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAO;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CAKf,CAAC;AAmCF,eAAO,MAAM,GAAG,GAAU,CAAC,EAAE,OAAO,MAAM,EAAE,QAAQ,OAAO,EAAE,EAAE,aAAa,MAAM,KAAG,OAAO,CAAC,CAAC,CAkC7F,CAAC;AAEF,eAAO,MAAM,aAAa,cAAe,CAAC"}
@@ -0,0 +1,116 @@
1
+ import { ToolError, fetchFromPage, getPageGlobal, waitUntil, getAuthCache, setAuthCache, clearAuthCache, buildQueryString, } from '@opentabs-dev/plugin-sdk';
2
+ const API_PATH = '/_/LabsTailwindUi/data/batchexecute';
3
+ const getWizData = () => {
4
+ const data = getPageGlobal('WIZ_global_data');
5
+ if (!data?.SNlM0e)
6
+ return null;
7
+ return data;
8
+ };
9
+ const getAuth = () => {
10
+ const cached = getAuthCache('notebooklm');
11
+ if (cached?.at)
12
+ return cached;
13
+ const wiz = getWizData();
14
+ if (!wiz?.SNlM0e)
15
+ return null;
16
+ const auth = {
17
+ at: wiz.SNlM0e,
18
+ bl: wiz.cfb2h ?? '',
19
+ userId: wiz.S06Grb ?? '',
20
+ email: wiz.oPEP7c ?? '',
21
+ sid: wiz.FdrFJe ?? '',
22
+ };
23
+ setAuthCache('notebooklm', auth);
24
+ return auth;
25
+ };
26
+ export const isAuthenticated = () => getAuth() !== null;
27
+ export const waitForAuth = async () => {
28
+ try {
29
+ await waitUntil(() => isAuthenticated(), {
30
+ interval: 500,
31
+ timeout: 5000,
32
+ });
33
+ return true;
34
+ }
35
+ catch {
36
+ return false;
37
+ }
38
+ };
39
+ export const getCurrentUserInfo = () => {
40
+ const auth = getAuth();
41
+ if (!auth)
42
+ throw ToolError.auth('Not authenticated — please log in to NotebookLM.');
43
+ return { userId: auth.userId, email: auth.email };
44
+ };
45
+ const parseBatchResponse = (text) => {
46
+ const lines = text.split('\n');
47
+ for (const line of lines) {
48
+ const trimmed = line.trim();
49
+ if (!trimmed || trimmed === ")]}'" || /^\d+$/.test(trimmed))
50
+ continue;
51
+ try {
52
+ const parsed = JSON.parse(trimmed);
53
+ if (!Array.isArray(parsed))
54
+ continue;
55
+ const inner = parsed[0];
56
+ if (!Array.isArray(inner))
57
+ continue;
58
+ if (inner[0] === 'wrb.fr') {
59
+ const dataStr = inner[2];
60
+ if (dataStr === null || dataStr === undefined) {
61
+ const errorCode = inner[5];
62
+ if (errorCode) {
63
+ const code = Array.isArray(errorCode) ? errorCode[0] : errorCode;
64
+ if (code === 3)
65
+ throw ToolError.validation('Invalid request parameters.');
66
+ if (code === 5)
67
+ throw ToolError.notFound('Resource not found.');
68
+ if (code === 7)
69
+ throw ToolError.auth('Not authenticated — please log in to NotebookLM.');
70
+ if (code === 16)
71
+ throw ToolError.auth('Not authenticated — please log in to NotebookLM.');
72
+ throw ToolError.internal(`RPC error code ${code}`);
73
+ }
74
+ return null;
75
+ }
76
+ return JSON.parse(dataStr);
77
+ }
78
+ }
79
+ catch (e) {
80
+ if (e instanceof ToolError)
81
+ throw e;
82
+ }
83
+ }
84
+ throw ToolError.internal('Failed to parse batchexecute response.');
85
+ };
86
+ export const rpc = async (rpcId, params, sourcePath) => {
87
+ const auth = getAuth();
88
+ if (!auth)
89
+ throw ToolError.auth('Not authenticated — please log in to NotebookLM.');
90
+ const qs = buildQueryString({
91
+ rpcids: rpcId,
92
+ 'source-path': sourcePath ?? '/',
93
+ bl: auth.bl,
94
+ hl: 'en',
95
+ });
96
+ const url = `${API_PATH}?${qs}`;
97
+ const body = new URLSearchParams();
98
+ body.set('f.req', JSON.stringify([[[rpcId, JSON.stringify(params), null, 'generic']]]));
99
+ body.set('at', auth.at);
100
+ const resp = await fetchFromPage(url, {
101
+ method: 'POST',
102
+ headers: {
103
+ 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
104
+ 'X-Same-Domain': '1',
105
+ },
106
+ body: body.toString(),
107
+ });
108
+ const text = await resp.text();
109
+ if (resp.status === 401 || resp.status === 403) {
110
+ clearAuthCache('notebooklm');
111
+ throw ToolError.auth('Not authenticated — please log in to NotebookLM.');
112
+ }
113
+ return parseBatchResponse(text);
114
+ };
115
+ export const FEATURE_FLAGS = [2];
116
+ //# sourceMappingURL=notebooklm-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebooklm-api.js","sourceRoot":"","sources":["../src/notebooklm-api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { z } from 'zod';
2
+ export declare const addSourceText: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ notebook_id: z.ZodString;
4
+ title: z.ZodString;
5
+ text: z.ZodString;
6
+ }, z.core.$strip>, z.ZodObject<{
7
+ success: z.ZodBoolean;
8
+ }, z.core.$strip>>;
9
+ //# sourceMappingURL=add-source-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-source-text.d.ts","sourceRoot":"","sources":["../../src/tools/add-source-text.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,aAAa;;;;;;kBAqBxB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { rpc } from '../notebooklm-api.js';
4
+ export const addSourceText = defineTool({
5
+ name: 'add_source_text',
6
+ displayName: 'Add Source Text',
7
+ description: 'Add plain text as a source to a notebook. Use this to provide custom content for NotebookLM to analyze.',
8
+ summary: 'Add text as a source',
9
+ icon: 'file-text',
10
+ group: 'Sources',
11
+ input: z.object({
12
+ notebook_id: z.string().describe('Notebook UUID'),
13
+ title: z.string().describe('Title for the text source'),
14
+ text: z.string().describe('Text content to add as a source'),
15
+ }),
16
+ output: z.object({
17
+ success: z.boolean().describe('Whether the source was added successfully'),
18
+ }),
19
+ handle: async (params) => {
20
+ const source = [null, [params.title, params.text]];
21
+ await rpc('izAoDd', [[source], params.notebook_id], `/notebook/${params.notebook_id}`);
22
+ return { success: true };
23
+ },
24
+ });
25
+ //# sourceMappingURL=add-source-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-source-text.js","sourceRoot":"","sources":["../../src/tools/add-source-text.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,aAAa,GAAG,UAAU,CAAC;IACtC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EACT,yGAAyG;IAC3G,OAAO,EAAE,sBAAsB;IAC/B,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,SAAS;IAChB,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,2BAA2B,CAAC;QACvD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KAC7D,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;KAC3E,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACnD,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,aAAa,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACvF,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 addSourceUrl: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ notebook_id: z.ZodString;
4
+ url: z.ZodString;
5
+ }, z.core.$strip>, z.ZodObject<{
6
+ success: z.ZodBoolean;
7
+ }, z.core.$strip>>;
8
+ //# sourceMappingURL=add-source-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-source-url.d.ts","sourceRoot":"","sources":["../../src/tools/add-source-url.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,YAAY;;;;;kBAmBvB,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 addSourceUrl = defineTool({
5
+ name: 'add_source_url',
6
+ displayName: 'Add Source URL',
7
+ description: 'Add a website URL as a source to a notebook. NotebookLM will fetch and index the page content.',
8
+ summary: 'Add a website source',
9
+ icon: 'link',
10
+ group: 'Sources',
11
+ input: z.object({
12
+ notebook_id: z.string().describe('Notebook UUID'),
13
+ url: z.string().describe('Website URL to add as a source'),
14
+ }),
15
+ output: z.object({
16
+ success: z.boolean().describe('Whether the source was added successfully'),
17
+ }),
18
+ handle: async (params) => {
19
+ const source = [null, null, [params.url]];
20
+ await rpc('izAoDd', [[source], params.notebook_id], `/notebook/${params.notebook_id}`);
21
+ return { success: true };
22
+ },
23
+ });
24
+ //# sourceMappingURL=add-source-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-source-url.js","sourceRoot":"","sources":["../../src/tools/add-source-url.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,YAAY,GAAG,UAAU,CAAC;IACrC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,gGAAgG;IAC7G,OAAO,EAAE,sBAAsB;IAC/B,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QACjD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;KAC3D,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;KAC3E,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,aAAa,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACvF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { z } from 'zod';
2
+ export declare const copyNotebook: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ notebook_id: z.ZodString;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ notebook_id: z.ZodString;
6
+ }, z.core.$strip>>;
7
+ //# sourceMappingURL=copy-notebook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-notebook.d.ts","sourceRoot":"","sources":["../../src/tools/copy-notebook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,YAAY;;;;kBAkBvB,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 copyNotebook = defineTool({
5
+ name: 'copy_notebook',
6
+ displayName: 'Copy Notebook',
7
+ description: 'Create a copy of an existing notebook, including all sources, notes, and artifacts.',
8
+ summary: 'Copy a notebook',
9
+ icon: 'copy',
10
+ group: 'Notebooks',
11
+ input: z.object({
12
+ notebook_id: z.string().describe('Notebook UUID to copy'),
13
+ }),
14
+ output: z.object({
15
+ notebook_id: z.string().describe('ID of the newly created copy'),
16
+ }),
17
+ handle: async (params) => {
18
+ const data = await rpc('te3DCe', [params.notebook_id]);
19
+ const id = data?.[2] ?? '';
20
+ return { notebook_id: id };
21
+ },
22
+ });
23
+ //# sourceMappingURL=copy-notebook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy-notebook.js","sourceRoot":"","sources":["../../src/tools/copy-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,YAAY,GAAG,UAAU,CAAC;IACrC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,qFAAqF;IAClG,OAAO,EAAE,iBAAiB;IAC1B,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KAC1D,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;KACjE,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAY,QAAQ,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QAClE,MAAM,EAAE,GAAI,IAAI,EAAE,CAAC,CAAC,CAAY,IAAI,EAAE,CAAC;QACvC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC7B,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ export declare const createNote: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ notebook_id: z.ZodString;
4
+ content: z.ZodString;
5
+ }, z.core.$strip>, z.ZodObject<{
6
+ note_id: z.ZodString;
7
+ }, z.core.$strip>>;
8
+ //# sourceMappingURL=create-note.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-note.d.ts","sourceRoot":"","sources":["../../src/tools/create-note.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,UAAU;;;;;kBAwBrB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { rpc } from '../notebooklm-api.js';
4
+ export const createNote = defineTool({
5
+ name: 'create_note',
6
+ displayName: 'Create Note',
7
+ description: 'Create a new note in a notebook. Notes can contain markdown-formatted text.',
8
+ summary: 'Create a note',
9
+ icon: 'file-plus',
10
+ group: 'Notes',
11
+ input: z.object({
12
+ notebook_id: z.string().describe('Notebook UUID'),
13
+ content: z.string().describe('Note content (supports markdown)'),
14
+ }),
15
+ output: z.object({
16
+ note_id: z.string().describe('ID of the newly created note'),
17
+ }),
18
+ handle: async (params) => {
19
+ const data = await rpc('CYK0Xb', [params.notebook_id, params.content], `/notebook/${params.notebook_id}`);
20
+ const inner = Array.isArray(data?.[0]) ? data[0] : data;
21
+ const id = inner?.[0] ?? '';
22
+ return { note_id: id };
23
+ },
24
+ });
25
+ //# sourceMappingURL=create-note.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-note.js","sourceRoot":"","sources":["../../src/tools/create-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,6EAA6E;IAC1F,OAAO,EAAE,eAAe;IACxB,IAAI,EAAE,WAAW;IACjB,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,kCAAkC,CAAC;KACjE,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;KAC7D,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,GAAG,CACpB,QAAQ,EACR,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,EACpC,aAAa,MAAM,CAAC,WAAW,EAAE,CAClC,CAAC;QACF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxD,MAAM,EAAE,GAAI,KAAK,EAAE,CAAC,CAAC,CAAY,IAAI,EAAE,CAAC;QACxC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzB,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { z } from 'zod';
2
+ export declare const createNotebook: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ title: z.ZodOptional<z.ZodString>;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ notebook_id: z.ZodString;
6
+ }, z.core.$strip>>;
7
+ //# sourceMappingURL=create-notebook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-notebook.d.ts","sourceRoot":"","sources":["../../src/tools/create-notebook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,cAAc;;;;kBAmBzB,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 createNotebook = defineTool({
5
+ name: 'create_notebook',
6
+ displayName: 'Create Notebook',
7
+ description: 'Create a new empty notebook in NotebookLM. Returns the new notebook ID. Sources can be added after creation.',
8
+ summary: 'Create a new notebook',
9
+ icon: 'plus',
10
+ group: 'Notebooks',
11
+ input: z.object({
12
+ title: z.string().optional().describe('Notebook title (optional, defaults to untitled)'),
13
+ }),
14
+ output: z.object({
15
+ notebook_id: z.string().describe('ID of the newly created notebook'),
16
+ }),
17
+ handle: async (params) => {
18
+ const data = await rpc('CCqFvf', [params.title ?? null]);
19
+ const id = data?.[2] ?? '';
20
+ return { notebook_id: id };
21
+ },
22
+ });
23
+ //# sourceMappingURL=create-notebook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-notebook.js","sourceRoot":"","sources":["../../src/tools/create-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,EACT,8GAA8G;IAChH,OAAO,EAAE,uBAAuB;IAChC,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;KACzF,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;KACrE,CAAC;IACF,MAAM,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;QACrB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAY,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC;QACpE,MAAM,EAAE,GAAI,IAAI,EAAE,CAAC,CAAC,CAAY,IAAI,EAAE,CAAC;QACvC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC7B,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { z } from 'zod';
2
+ export declare const deleteNotebook: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ notebook_ids: z.ZodArray<z.ZodString>;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ success: z.ZodBoolean;
6
+ }, z.core.$strip>>;
7
+ //# sourceMappingURL=delete-notebook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-notebook.d.ts","sourceRoot":"","sources":["../../src/tools/delete-notebook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,cAAc;;;;kBAkBzB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { rpc } from '../notebooklm-api.js';
4
+ export const deleteNotebook = defineTool({
5
+ name: 'delete_notebook',
6
+ displayName: 'Delete Notebook',
7
+ description: 'Delete one or more notebooks by their IDs. This permanently removes the notebook, all sources, notes, and chat history.',
8
+ summary: 'Delete notebooks',
9
+ icon: 'trash-2',
10
+ group: 'Notebooks',
11
+ input: z.object({
12
+ notebook_ids: z.array(z.string()).min(1).describe('Array of notebook UUIDs to delete'),
13
+ }),
14
+ output: z.object({
15
+ success: z.boolean().describe('Whether the operation succeeded'),
16
+ }),
17
+ handle: async (params) => {
18
+ await rpc('WWINqb', [params.notebook_ids, null]);
19
+ return { success: true };
20
+ },
21
+ });
22
+ //# sourceMappingURL=delete-notebook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-notebook.js","sourceRoot":"","sources":["../../src/tools/delete-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,EACT,yHAAyH;IAC3H,OAAO,EAAE,kBAAkB;IAC3B,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;KACvF,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,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;QACjD,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 deleteNotes: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ notebook_id: z.ZodString;
4
+ note_ids: z.ZodArray<z.ZodString>;
5
+ }, z.core.$strip>, z.ZodObject<{
6
+ success: z.ZodBoolean;
7
+ }, z.core.$strip>>;
8
+ //# sourceMappingURL=delete-notes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-notes.d.ts","sourceRoot":"","sources":["../../src/tools/delete-notes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,WAAW;;;;;kBAkBtB,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 deleteNotes = defineTool({
5
+ name: 'delete_notes',
6
+ displayName: 'Delete Notes',
7
+ description: 'Delete one or more notes from a notebook.',
8
+ summary: 'Delete notes',
9
+ icon: 'file-x',
10
+ group: 'Notes',
11
+ input: z.object({
12
+ notebook_id: z.string().describe('Notebook UUID'),
13
+ note_ids: z.array(z.string()).min(1).describe('Array of note UUIDs to delete'),
14
+ }),
15
+ output: z.object({
16
+ success: z.boolean().describe('Whether the operation succeeded'),
17
+ }),
18
+ handle: async (params) => {
19
+ await rpc('AH0mwd', [params.notebook_id, params.note_ids], `/notebook/${params.notebook_id}`);
20
+ return { success: true };
21
+ },
22
+ });
23
+ //# sourceMappingURL=delete-notes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-notes.js","sourceRoot":"","sources":["../../src/tools/delete-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,MAAM,sBAAsB,CAAC;AAE3C,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CAAC;IACpC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,2CAA2C;IACxD,OAAO,EAAE,cAAc;IACvB,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QACjD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;KAC/E,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,QAAQ,CAAC,EAAE,aAAa,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9F,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 deleteSources: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ notebook_id: z.ZodString;
4
+ source_ids: z.ZodArray<z.ZodString>;
5
+ }, z.core.$strip>, z.ZodObject<{
6
+ success: z.ZodBoolean;
7
+ }, z.core.$strip>>;
8
+ //# sourceMappingURL=delete-sources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-sources.d.ts","sourceRoot":"","sources":["../../src/tools/delete-sources.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,aAAa;;;;;kBAkBxB,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 deleteSources = defineTool({
5
+ name: 'delete_sources',
6
+ displayName: 'Delete Sources',
7
+ description: 'Delete one or more sources from a notebook.',
8
+ summary: 'Delete sources',
9
+ icon: 'file-x',
10
+ group: 'Sources',
11
+ input: z.object({
12
+ notebook_id: z.string().describe('Notebook UUID'),
13
+ source_ids: z.array(z.string()).min(1).describe('Array of source UUIDs to delete'),
14
+ }),
15
+ output: z.object({
16
+ success: z.boolean().describe('Whether the operation succeeded'),
17
+ }),
18
+ handle: async (params) => {
19
+ await rpc('tGMBJ', [params.notebook_id, params.source_ids], `/notebook/${params.notebook_id}`);
20
+ return { success: true };
21
+ },
22
+ });
23
+ //# sourceMappingURL=delete-sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-sources.js","sourceRoot":"","sources":["../../src/tools/delete-sources.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,aAAa,GAAG,UAAU,CAAC;IACtC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,6CAA6C;IAC1D,OAAO,EAAE,gBAAgB;IACzB,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QACjD,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KACnF,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,OAAO,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,aAAa,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { z } from 'zod';
2
+ export declare const getCurrentUser: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{}, z.core.$strip>, z.ZodObject<{
3
+ user: z.ZodObject<{
4
+ email: z.ZodString;
5
+ name: z.ZodString;
6
+ avatar_url: z.ZodString;
7
+ }, z.core.$strip>;
8
+ }, z.core.$strip>>;
9
+ //# sourceMappingURL=get-current-user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-current-user.d.ts","sourceRoot":"","sources":["../../src/tools/get-current-user.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,cAAc;;;;;;kBAqBzB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { defineTool } from '@opentabs-dev/plugin-sdk';
2
+ import { z } from 'zod';
3
+ import { getCurrentUserInfo } from '../notebooklm-api.js';
4
+ import { accountUserSchema } from './schemas.js';
5
+ export const getCurrentUser = defineTool({
6
+ name: 'get_current_user',
7
+ displayName: 'Get Current User',
8
+ description: "Get the currently logged-in user's account information (email and user ID).",
9
+ summary: 'Get current user info',
10
+ icon: 'user',
11
+ group: 'Account',
12
+ input: z.object({}),
13
+ output: z.object({
14
+ user: accountUserSchema,
15
+ }),
16
+ handle: async () => {
17
+ const info = getCurrentUserInfo();
18
+ return {
19
+ user: {
20
+ email: info.email,
21
+ name: info.email.split('@')[0] ?? '',
22
+ avatar_url: '',
23
+ },
24
+ };
25
+ },
26
+ });
27
+ //# sourceMappingURL=get-current-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-current-user.js","sourceRoot":"","sources":["../../src/tools/get-current-user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC;IACvC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EAAE,6EAA6E;IAC1F,OAAO,EAAE,uBAAuB;IAChC,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,iBAAiB;KACxB,CAAC;IACF,MAAM,EAAE,KAAK,IAAI,EAAE;QACjB,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAC;QAClC,OAAO;YACL,IAAI,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;gBACpC,UAAU,EAAE,EAAE;aACf;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+ export declare const getNotebookGuide: import("@opentabs-dev/plugin-sdk").ToolDefinition<z.ZodObject<{
3
+ notebook_id: z.ZodString;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ summary: z.ZodString;
6
+ suggested_questions: z.ZodArray<z.ZodObject<{
7
+ question: z.ZodString;
8
+ prompt: z.ZodString;
9
+ }, z.core.$strip>>;
10
+ guide_id: z.ZodString;
11
+ }, z.core.$strip>>;
12
+ //# sourceMappingURL=get-notebook-guide.d.ts.map