sourceloop 0.1.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 (173) hide show
  1. package/README.md +401 -0
  2. package/dist/commands/attach.d.ts +2 -0
  3. package/dist/commands/attach.js +103 -0
  4. package/dist/commands/attach.js.map +1 -0
  5. package/dist/commands/auth.d.ts +2 -0
  6. package/dist/commands/auth.js +33 -0
  7. package/dist/commands/auth.js.map +1 -0
  8. package/dist/commands/chrome.d.ts +2 -0
  9. package/dist/commands/chrome.js +30 -0
  10. package/dist/commands/chrome.js.map +1 -0
  11. package/dist/commands/compose.d.ts +2 -0
  12. package/dist/commands/compose.js +14 -0
  13. package/dist/commands/compose.js.map +1 -0
  14. package/dist/commands/doctor.d.ts +2 -0
  15. package/dist/commands/doctor.js +15 -0
  16. package/dist/commands/doctor.js.map +1 -0
  17. package/dist/commands/import-latest.d.ts +2 -0
  18. package/dist/commands/import-latest.js +42 -0
  19. package/dist/commands/import-latest.js.map +1 -0
  20. package/dist/commands/ingest.d.ts +2 -0
  21. package/dist/commands/ingest.js +14 -0
  22. package/dist/commands/ingest.js.map +1 -0
  23. package/dist/commands/init.d.ts +2 -0
  24. package/dist/commands/init.js +24 -0
  25. package/dist/commands/init.js.map +1 -0
  26. package/dist/commands/notebook-bind.d.ts +2 -0
  27. package/dist/commands/notebook-bind.js +39 -0
  28. package/dist/commands/notebook-bind.js.map +1 -0
  29. package/dist/commands/notebook-create.d.ts +2 -0
  30. package/dist/commands/notebook-create.js +39 -0
  31. package/dist/commands/notebook-create.js.map +1 -0
  32. package/dist/commands/notebook-import.d.ts +2 -0
  33. package/dist/commands/notebook-import.js +39 -0
  34. package/dist/commands/notebook-import.js.map +1 -0
  35. package/dist/commands/notebook-source.d.ts +2 -0
  36. package/dist/commands/notebook-source.js +71 -0
  37. package/dist/commands/notebook-source.js.map +1 -0
  38. package/dist/commands/plan.d.ts +9 -0
  39. package/dist/commands/plan.js +59 -0
  40. package/dist/commands/plan.js.map +1 -0
  41. package/dist/commands/run.d.ts +2 -0
  42. package/dist/commands/run.js +76 -0
  43. package/dist/commands/run.js.map +1 -0
  44. package/dist/commands/status.d.ts +2 -0
  45. package/dist/commands/status.js +15 -0
  46. package/dist/commands/status.js.map +1 -0
  47. package/dist/commands/topic.d.ts +2 -0
  48. package/dist/commands/topic.js +53 -0
  49. package/dist/commands/topic.js.map +1 -0
  50. package/dist/core/attach/launch-managed-chrome.d.ts +27 -0
  51. package/dist/core/attach/launch-managed-chrome.js +136 -0
  52. package/dist/core/attach/launch-managed-chrome.js.map +1 -0
  53. package/dist/core/attach/manage-targets.d.ts +49 -0
  54. package/dist/core/attach/manage-targets.js +179 -0
  55. package/dist/core/attach/manage-targets.js.map +1 -0
  56. package/dist/core/ingest/frontmatter.d.ts +4 -0
  57. package/dist/core/ingest/frontmatter.js +30 -0
  58. package/dist/core/ingest/frontmatter.js.map +1 -0
  59. package/dist/core/ingest/html-to-markdown.d.ts +5 -0
  60. package/dist/core/ingest/html-to-markdown.js +53 -0
  61. package/dist/core/ingest/html-to-markdown.js.map +1 -0
  62. package/dist/core/ingest/ingest-source.d.ts +11 -0
  63. package/dist/core/ingest/ingest-source.js +115 -0
  64. package/dist/core/ingest/ingest-source.js.map +1 -0
  65. package/dist/core/notebooklm/adapter.d.ts +17 -0
  66. package/dist/core/notebooklm/adapter.js +2 -0
  67. package/dist/core/notebooklm/adapter.js.map +1 -0
  68. package/dist/core/notebooklm/auth.d.ts +30 -0
  69. package/dist/core/notebooklm/auth.js +105 -0
  70. package/dist/core/notebooklm/auth.js.map +1 -0
  71. package/dist/core/notebooklm/browser-agent-adapter.d.ts +21 -0
  72. package/dist/core/notebooklm/browser-agent-adapter.js +37 -0
  73. package/dist/core/notebooklm/browser-agent-adapter.js.map +1 -0
  74. package/dist/core/notebooklm/browser-agent.d.ts +121 -0
  75. package/dist/core/notebooklm/browser-agent.js +1604 -0
  76. package/dist/core/notebooklm/browser-agent.js.map +1 -0
  77. package/dist/core/notebooklm/config.d.ts +20 -0
  78. package/dist/core/notebooklm/config.js +133 -0
  79. package/dist/core/notebooklm/config.js.map +1 -0
  80. package/dist/core/notebooklm/fixture-adapter.d.ts +13 -0
  81. package/dist/core/notebooklm/fixture-adapter.js +32 -0
  82. package/dist/core/notebooklm/fixture-adapter.js.map +1 -0
  83. package/dist/core/notebooklm/response-extraction.d.ts +23 -0
  84. package/dist/core/notebooklm/response-extraction.js +348 -0
  85. package/dist/core/notebooklm/response-extraction.js.map +1 -0
  86. package/dist/core/notebooks/bind-notebook.d.ts +21 -0
  87. package/dist/core/notebooks/bind-notebook.js +95 -0
  88. package/dist/core/notebooks/bind-notebook.js.map +1 -0
  89. package/dist/core/notebooks/manage-managed-notebooks.d.ts +70 -0
  90. package/dist/core/notebooks/manage-managed-notebooks.js +491 -0
  91. package/dist/core/notebooks/manage-managed-notebooks.js.map +1 -0
  92. package/dist/core/notebooks/manage-notebook-source-manifests.d.ts +25 -0
  93. package/dist/core/notebooks/manage-notebook-source-manifests.js +127 -0
  94. package/dist/core/notebooks/manage-notebook-source-manifests.js.map +1 -0
  95. package/dist/core/operator/workspace-operator.d.ts +82 -0
  96. package/dist/core/operator/workspace-operator.js +610 -0
  97. package/dist/core/operator/workspace-operator.js.map +1 -0
  98. package/dist/core/outputs/compose-run.d.ts +11 -0
  99. package/dist/core/outputs/compose-run.js +98 -0
  100. package/dist/core/outputs/compose-run.js.map +1 -0
  101. package/dist/core/runs/load-artifacts.d.ts +14 -0
  102. package/dist/core/runs/load-artifacts.js +51 -0
  103. package/dist/core/runs/load-artifacts.js.map +1 -0
  104. package/dist/core/runs/question-planner.d.ts +20 -0
  105. package/dist/core/runs/question-planner.js +276 -0
  106. package/dist/core/runs/question-planner.js.map +1 -0
  107. package/dist/core/runs/render-run-note.d.ts +13 -0
  108. package/dist/core/runs/render-run-note.js +111 -0
  109. package/dist/core/runs/render-run-note.js.map +1 -0
  110. package/dist/core/runs/run-qa.d.ts +28 -0
  111. package/dist/core/runs/run-qa.js +393 -0
  112. package/dist/core/runs/run-qa.js.map +1 -0
  113. package/dist/core/topics/manage-topics.d.ts +27 -0
  114. package/dist/core/topics/manage-topics.js +314 -0
  115. package/dist/core/topics/manage-topics.js.map +1 -0
  116. package/dist/core/vault/notes.d.ts +29 -0
  117. package/dist/core/vault/notes.js +147 -0
  118. package/dist/core/vault/notes.js.map +1 -0
  119. package/dist/core/vault/paths.d.ts +31 -0
  120. package/dist/core/vault/paths.js +44 -0
  121. package/dist/core/vault/paths.js.map +1 -0
  122. package/dist/core/workspace/bootstrap.d.ts +16 -0
  123. package/dist/core/workspace/bootstrap.js +443 -0
  124. package/dist/core/workspace/bootstrap.js.map +1 -0
  125. package/dist/core/workspace/constants.d.ts +3 -0
  126. package/dist/core/workspace/constants.js +16 -0
  127. package/dist/core/workspace/constants.js.map +1 -0
  128. package/dist/core/workspace/init-workspace.d.ts +15 -0
  129. package/dist/core/workspace/init-workspace.js +86 -0
  130. package/dist/core/workspace/init-workspace.js.map +1 -0
  131. package/dist/core/workspace/load-workspace.d.ts +6 -0
  132. package/dist/core/workspace/load-workspace.js +51 -0
  133. package/dist/core/workspace/load-workspace.js.map +1 -0
  134. package/dist/core/workspace/schema.d.ts +19 -0
  135. package/dist/core/workspace/schema.js +19 -0
  136. package/dist/core/workspace/schema.js.map +1 -0
  137. package/dist/index.d.ts +2 -0
  138. package/dist/index.js +41 -0
  139. package/dist/index.js.map +1 -0
  140. package/dist/lib/cli-output.d.ts +2 -0
  141. package/dist/lib/cli-output.js +7 -0
  142. package/dist/lib/cli-output.js.map +1 -0
  143. package/dist/lib/obsidian.d.ts +4 -0
  144. package/dist/lib/obsidian.js +23 -0
  145. package/dist/lib/obsidian.js.map +1 -0
  146. package/dist/lib/slugify.d.ts +1 -0
  147. package/dist/lib/slugify.js +10 -0
  148. package/dist/lib/slugify.js.map +1 -0
  149. package/dist/lib/write-json.d.ts +1 -0
  150. package/dist/lib/write-json.js +5 -0
  151. package/dist/lib/write-json.js.map +1 -0
  152. package/dist/schemas/attach.d.ts +118 -0
  153. package/dist/schemas/attach.js +33 -0
  154. package/dist/schemas/attach.js.map +1 -0
  155. package/dist/schemas/managed-notebook.d.ts +47 -0
  156. package/dist/schemas/managed-notebook.js +30 -0
  157. package/dist/schemas/managed-notebook.js.map +1 -0
  158. package/dist/schemas/notebook-source.d.ts +31 -0
  159. package/dist/schemas/notebook-source.js +23 -0
  160. package/dist/schemas/notebook-source.js.map +1 -0
  161. package/dist/schemas/notebook.d.ts +26 -0
  162. package/dist/schemas/notebook.js +18 -0
  163. package/dist/schemas/notebook.js.map +1 -0
  164. package/dist/schemas/run.d.ts +169 -0
  165. package/dist/schemas/run.js +80 -0
  166. package/dist/schemas/run.js.map +1 -0
  167. package/dist/schemas/source.d.ts +18 -0
  168. package/dist/schemas/source.js +13 -0
  169. package/dist/schemas/source.js.map +1 -0
  170. package/dist/schemas/topic.d.ts +37 -0
  171. package/dist/schemas/topic.js +25 -0
  172. package/dist/schemas/topic.js.map +1 -0
  173. package/package.json +44 -0
@@ -0,0 +1,491 @@
1
+ import { access, mkdir, readFile, readdir, unlink, writeFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { slugify } from "../../lib/slugify.js";
4
+ import { writeJsonFile } from "../../lib/write-json.js";
5
+ import { makeAliases, makeTags, normalizeObsidianText } from "../../lib/obsidian.js";
6
+ import { toFrontmatterMarkdown } from "../ingest/frontmatter.js";
7
+ import { loadChromeAttachTarget, upsertChromeAttachTarget } from "../attach/manage-targets.js";
8
+ import { defaultNotebookBrowserSessionFactory, extractNotebookResourceId } from "../notebooklm/browser-agent.js";
9
+ import { bindNotebook } from "./bind-notebook.js";
10
+ import { loadNotebookBinding } from "../runs/load-artifacts.js";
11
+ import { loadTopic, refreshTopicArtifacts } from "../topics/manage-topics.js";
12
+ import { loadWorkspace } from "../workspace/load-workspace.js";
13
+ import { getVaultPaths } from "../vault/paths.js";
14
+ import { getChromeTargetNote, getManagedNotebookImportNote, getManagedNotebookSetupNote, getNotebookNote, getSourceNote, getTopicIndexNote, toWikiLink } from "../vault/notes.js";
15
+ import { managedNotebookImportSchema, managedNotebookSetupSchema } from "../../schemas/managed-notebook.js";
16
+ import { notebookSourceKindSchema } from "../../schemas/notebook-source.js";
17
+ import { sourceDocumentSchema } from "../../schemas/source.js";
18
+ export async function createManagedNotebook(input) {
19
+ const workspace = await loadWorkspace(input.cwd);
20
+ const vault = getVaultPaths(workspace);
21
+ await mkdir(vault.notebookSetupsDir, { recursive: true });
22
+ const [{ topic }, { target }] = await Promise.all([
23
+ loadTopic(input.topicId, input.cwd),
24
+ loadChromeAttachTarget(input.attachTargetId, input.cwd)
25
+ ]);
26
+ const sessionFactory = input.sessionFactory ?? defaultNotebookBrowserSessionFactory;
27
+ const writeSetupJson = input.writeSetupJson ?? ((filePath, setup) => writeJsonFile(filePath, setup));
28
+ const writeSetupMarkdown = input.writeSetupMarkdown ?? ((filePath, markdown) => writeFile(filePath, markdown, "utf8"));
29
+ const session = await sessionFactory.createSession({
30
+ target,
31
+ ...(input.showBrowser !== undefined ? { showBrowser: input.showBrowser } : {})
32
+ });
33
+ try {
34
+ const createdNotebook = await session.createNotebook(normalizeObsidianText(input.name));
35
+ await markAttachTargetNotebooklmValidated(target, workspace.rootDir);
36
+ const remoteNotebookId = extractNotebookResourceId(createdNotebook.notebookUrl);
37
+ if (!remoteNotebookId) {
38
+ throw new Error(`Could not derive a NotebookLM notebook id from ${createdNotebook.notebookUrl}`);
39
+ }
40
+ const bindingId = `notebook-${remoteNotebookId}`;
41
+ const setupId = `managed-notebook-setup-${remoteNotebookId}`;
42
+ const setupJsonPath = path.join(vault.notebookSetupsDir, `${setupId}.json`);
43
+ if (!input.force && (await fileExists(setupJsonPath))) {
44
+ throw new Error(`Managed notebook setup ${setupId} already exists. Re-run with --force to overwrite it.`);
45
+ }
46
+ const bindingResult = await bindNotebook({
47
+ cwd: workspace.rootDir,
48
+ id: bindingId,
49
+ name: normalizeObsidianText(input.name),
50
+ topic: topic.name,
51
+ topicId: topic.id,
52
+ notebookUrl: createdNotebook.notebookUrl,
53
+ accessMode: input.accessMode ?? "owner",
54
+ ...(input.description ? { description: input.description } : {}),
55
+ ...(input.topics ? { topics: input.topics } : {}),
56
+ attachTargetId: target.id,
57
+ ...(input.force !== undefined ? { force: input.force } : {})
58
+ });
59
+ let setupNotePath = "";
60
+ try {
61
+ const now = new Date().toISOString();
62
+ const setup = managedNotebookSetupSchema.parse({
63
+ id: setupId,
64
+ type: "managed_notebook_setup",
65
+ topicId: topic.id,
66
+ notebookBindingId: bindingResult.binding.id,
67
+ remoteNotebookId,
68
+ name: bindingResult.binding.name,
69
+ attachTargetId: target.id,
70
+ createdAt: now,
71
+ updatedAt: now
72
+ });
73
+ const note = getManagedNotebookSetupNote(workspace, setup);
74
+ setupNotePath = note.absolutePath;
75
+ await writeSetupJson(setupJsonPath, setup);
76
+ await writeSetupMarkdown(note.absolutePath, buildManagedNotebookSetupMarkdown(workspace, setup, topic, bindingResult.binding, target));
77
+ await refreshTopicArtifacts(topic.id, workspace.rootDir);
78
+ return {
79
+ setup,
80
+ binding: bindingResult.binding,
81
+ setupMarkdownPath: note.absolutePath,
82
+ setupJsonPath,
83
+ bindingMarkdownPath: bindingResult.markdownPath,
84
+ bindingJsonPath: bindingResult.jsonPath
85
+ };
86
+ }
87
+ catch (error) {
88
+ await cleanupManagedNotebookCreationFailure({
89
+ topicId: topic.id,
90
+ setupJsonPath,
91
+ setupMarkdownPath: setupNotePath,
92
+ bindingJsonPath: bindingResult.jsonPath,
93
+ bindingMarkdownPath: bindingResult.markdownPath,
94
+ cwd: workspace.rootDir
95
+ });
96
+ throw error;
97
+ }
98
+ }
99
+ finally {
100
+ await session.close();
101
+ }
102
+ }
103
+ export async function importIntoManagedNotebook(input) {
104
+ const workspace = await loadWorkspace(input.cwd);
105
+ const vault = getVaultPaths(workspace);
106
+ await mkdir(vault.notebookImportsDir, { recursive: true });
107
+ const { binding } = await loadNotebookBinding(input.notebookBindingId, input.cwd);
108
+ if (!binding.topicId) {
109
+ throw new Error(`Notebook binding ${binding.id} is not attached to a topic-first workflow.`);
110
+ }
111
+ const { topic } = await loadTopic(binding.topicId, input.cwd);
112
+ const setup = await loadManagedNotebookSetupByBindingId(binding.id, input.cwd);
113
+ const { target } = await loadChromeAttachTarget(setup.setup.attachTargetId, input.cwd);
114
+ const resolvedSource = "sourceId" in input ? await loadSourceDocument(input.sourceId, input.cwd) : undefined;
115
+ const resolvedTitle = normalizeObsidianText(input.title ??
116
+ resolvedSource?.title ??
117
+ deriveTitleFromUrl("url" in input ? input.url : resolvedSource?.sourceUri ?? ""));
118
+ const sourceUri = "url" in input ? input.url : resolvedSource.sourceUri;
119
+ const importKind = deriveManagedImportKind(sourceUri, resolvedSource);
120
+ const importId = `managed-import-${slugify(`${binding.id}-${resolvedTitle}-${sourceUri}`)}`;
121
+ const jsonPath = path.join(vault.notebookImportsDir, `${importId}.json`);
122
+ if (!input.force && (await fileExists(jsonPath))) {
123
+ throw new Error(`Managed notebook import ${importId} already exists. Re-run with --force to overwrite it.`);
124
+ }
125
+ const browserImportInput = buildBrowserImportInput({
126
+ importKind,
127
+ sourceUri,
128
+ title: resolvedTitle,
129
+ notebookUrl: binding.notebookUrl,
130
+ ...(resolvedSource ? { source: resolvedSource } : {})
131
+ });
132
+ const sessionFactory = input.sessionFactory ?? defaultNotebookBrowserSessionFactory;
133
+ const session = await sessionFactory.createSession({
134
+ target,
135
+ reuseExistingNotebookPage: true,
136
+ ...(input.showBrowser !== undefined ? { showBrowser: input.showBrowser } : {})
137
+ });
138
+ let browserResult;
139
+ try {
140
+ browserResult = await session.importSource(browserImportInput);
141
+ }
142
+ finally {
143
+ await session.close();
144
+ }
145
+ if (browserResult.status !== "failed") {
146
+ await markAttachTargetNotebooklmValidated(target, workspace.rootDir);
147
+ }
148
+ const now = new Date().toISOString();
149
+ const managedImport = managedNotebookImportSchema.parse({
150
+ id: importId,
151
+ type: "managed_notebook_import",
152
+ topicId: topic.id,
153
+ notebookBindingId: binding.id,
154
+ managedNotebookSetupId: setup.setup.id,
155
+ originType: resolvedSource ? "source_artifact" : "remote_url",
156
+ ...(resolvedSource ? { sourceId: resolvedSource.id } : {}),
157
+ sourceUri,
158
+ title: resolvedTitle,
159
+ importKind,
160
+ status: browserResult.status,
161
+ ...(browserResult.failureReason ? { failureReason: browserResult.failureReason } : {}),
162
+ createdAt: now,
163
+ updatedAt: now
164
+ });
165
+ const note = getManagedNotebookImportNote(workspace, managedImport);
166
+ await writeJsonFile(jsonPath, managedImport);
167
+ await writeFile(note.absolutePath, buildManagedNotebookImportMarkdown(workspace, managedImport, topic, binding, setup.setup, resolvedSource), "utf8");
168
+ await refreshTopicArtifacts(topic.id, workspace.rootDir);
169
+ return {
170
+ managedImport,
171
+ markdownPath: note.absolutePath,
172
+ jsonPath
173
+ };
174
+ }
175
+ async function markAttachTargetNotebooklmValidated(target, cwd) {
176
+ if (target.notebooklmReadiness === "validated") {
177
+ return;
178
+ }
179
+ await upsertChromeAttachTarget({
180
+ ...target,
181
+ notebooklmReadiness: "validated",
182
+ notebooklmValidatedAt: new Date().toISOString()
183
+ }, { cwd, force: true });
184
+ }
185
+ export async function loadManagedNotebookSetup(setupId, cwd) {
186
+ const workspace = await loadWorkspace(cwd);
187
+ const vault = getVaultPaths(workspace);
188
+ const setupPath = path.join(vault.notebookSetupsDir, `${setupId}.json`);
189
+ const raw = await readFile(setupPath, "utf8");
190
+ const setup = await normalizeManagedNotebookSetup(managedNotebookSetupSchema.parse(JSON.parse(raw)), cwd);
191
+ return {
192
+ workspace,
193
+ setup,
194
+ path: setupPath
195
+ };
196
+ }
197
+ export async function loadManagedNotebookSetupByBindingId(notebookBindingId, cwd) {
198
+ const setups = await listManagedNotebookSetups(cwd);
199
+ const directMatch = setups.find((candidate) => candidate.notebookBindingId === notebookBindingId);
200
+ if (directMatch) {
201
+ const workspace = await loadWorkspace(cwd);
202
+ const binding = await tryLoadNotebookBinding(notebookBindingId, cwd);
203
+ const repairedSetup = binding ? await persistManagedNotebookSetupRepair(directMatch, binding, cwd) : directMatch;
204
+ return {
205
+ workspace,
206
+ setup: repairedSetup,
207
+ path: path.join(getVaultPaths(workspace).notebookSetupsDir, `${repairedSetup.id}.json`)
208
+ };
209
+ }
210
+ const binding = await tryLoadNotebookBinding(notebookBindingId, cwd);
211
+ const bindingRemoteNotebookId = binding?.remoteNotebookId ?? (binding ? extractNotebookResourceId(binding.notebookUrl) : undefined);
212
+ const compatibleMatch = bindingRemoteNotebookId
213
+ ? await findManagedNotebookSetupByRemoteNotebookId(setups, bindingRemoteNotebookId, cwd)
214
+ : undefined;
215
+ if (!compatibleMatch) {
216
+ throw new Error(`Notebook binding ${notebookBindingId} is not managed by SourceLoop.`);
217
+ }
218
+ const workspace = await loadWorkspace(cwd);
219
+ const repairedSetup = binding ? await persistManagedNotebookSetupRepair(compatibleMatch, binding, cwd) : compatibleMatch;
220
+ return {
221
+ workspace,
222
+ setup: repairedSetup,
223
+ path: path.join(getVaultPaths(workspace).notebookSetupsDir, `${repairedSetup.id}.json`)
224
+ };
225
+ }
226
+ export async function listManagedNotebookSetups(cwd) {
227
+ const workspace = await loadWorkspace(cwd);
228
+ const vault = getVaultPaths(workspace);
229
+ const setups = await readManagedArtifacts(vault.notebookSetupsDir, managedNotebookSetupSchema);
230
+ return Promise.all(setups.map((setup) => normalizeManagedNotebookSetup(setup, cwd)));
231
+ }
232
+ export async function loadManagedNotebookImport(importId, cwd) {
233
+ const workspace = await loadWorkspace(cwd);
234
+ const vault = getVaultPaths(workspace);
235
+ const importPath = path.join(vault.notebookImportsDir, `${importId}.json`);
236
+ const raw = await readFile(importPath, "utf8");
237
+ return {
238
+ workspace,
239
+ managedImport: managedNotebookImportSchema.parse(JSON.parse(raw)),
240
+ path: importPath
241
+ };
242
+ }
243
+ export async function listManagedNotebookImports(cwd) {
244
+ const workspace = await loadWorkspace(cwd);
245
+ const vault = getVaultPaths(workspace);
246
+ return readManagedArtifacts(vault.notebookImportsDir, managedNotebookImportSchema);
247
+ }
248
+ function buildManagedNotebookSetupMarkdown(workspace, setup, topic, binding, attachTarget) {
249
+ const displayName = setup.name ?? binding.name;
250
+ const title = normalizeObsidianText(`Managed ${displayName}`, setup.id);
251
+ return toFrontmatterMarkdown({
252
+ type: "managed-notebook-setup",
253
+ title,
254
+ aliases: makeAliases(setup.id),
255
+ tags: makeTags("sourceloop", "managed", "notebook-setup"),
256
+ topic: normalizeObsidianText(topic.name, topic.id),
257
+ notebook: normalizeObsidianText(displayName, binding.id),
258
+ created: setup.createdAt,
259
+ updated: setup.updatedAt
260
+ }, `# ${title}
261
+
262
+ ## Topic
263
+ - ${toWikiLink(workspace, getTopicIndexNote(workspace, topic).absolutePath, normalizeObsidianText(topic.name, topic.id))}
264
+
265
+ ## Managed Notebook
266
+ - ${toWikiLink(workspace, getNotebookNote(workspace, binding).absolutePath, normalizeObsidianText(displayName, binding.id))}
267
+
268
+ ## Attach Target
269
+ - ${toWikiLink(workspace, getChromeTargetNote(workspace, attachTarget).absolutePath, normalizeObsidianText(attachTarget.name, attachTarget.id))}
270
+ `);
271
+ }
272
+ function buildManagedNotebookImportMarkdown(workspace, managedImport, topic, binding, setup, source) {
273
+ const title = normalizeObsidianText(managedImport.title, managedImport.id);
274
+ const setupDisplayName = setup.name ?? binding.name;
275
+ const sourceLink = source
276
+ ? toWikiLink(workspace, getSourceNote(workspace, source).absolutePath, normalizeObsidianText(source.title, source.id))
277
+ : managedImport.sourceUri;
278
+ return toFrontmatterMarkdown({
279
+ type: "managed-notebook-import",
280
+ title,
281
+ aliases: makeAliases(managedImport.id),
282
+ tags: makeTags("sourceloop", "managed", "notebook-import", managedImport.status, managedImport.importKind),
283
+ topic: normalizeObsidianText(topic.name, topic.id),
284
+ notebook: normalizeObsidianText(binding.name, binding.id),
285
+ status: managedImport.status,
286
+ origin: managedImport.originType,
287
+ created: managedImport.createdAt,
288
+ updated: managedImport.updatedAt
289
+ }, `# ${title}
290
+
291
+ ## Topic
292
+ - ${toWikiLink(workspace, getTopicIndexNote(workspace, topic).absolutePath, normalizeObsidianText(topic.name, topic.id))}
293
+
294
+ ## Notebook
295
+ - ${toWikiLink(workspace, getNotebookNote(workspace, binding).absolutePath, normalizeObsidianText(binding.name, binding.id))}
296
+
297
+ ## Managed Setup
298
+ - ${toWikiLink(workspace, getManagedNotebookSetupNote(workspace, setup).absolutePath, normalizeObsidianText(`Managed ${setupDisplayName}`, setup.id))}
299
+
300
+ ## Source
301
+ - ${sourceLink}
302
+
303
+ ## Import
304
+ - Status: ${managedImport.status}
305
+ - Kind: ${managedImport.importKind}
306
+ - Origin: ${managedImport.originType}
307
+ ${managedImport.failureReason ? `- Failure Reason: ${managedImport.failureReason}` : ""}
308
+ `);
309
+ }
310
+ async function loadSourceDocument(sourceId, cwd) {
311
+ const workspace = await loadWorkspace(cwd);
312
+ const vault = getVaultPaths(workspace);
313
+ const sourcePath = path.join(vault.sourcesDir, `${sourceId}.json`);
314
+ const raw = await readFile(sourcePath, "utf8");
315
+ return sourceDocumentSchema.parse(JSON.parse(raw));
316
+ }
317
+ async function normalizeManagedNotebookSetup(setup, cwd) {
318
+ if (setup.remoteNotebookId && setup.name) {
319
+ return setup;
320
+ }
321
+ const binding = await tryLoadNotebookBinding(setup.notebookBindingId, cwd);
322
+ return managedNotebookSetupSchema.parse({
323
+ ...setup,
324
+ ...(setup.remoteNotebookId || !binding
325
+ ? {}
326
+ : { remoteNotebookId: binding.remoteNotebookId ?? extractNotebookResourceId(binding.notebookUrl) }),
327
+ ...(setup.name || !binding ? {} : { name: binding.name })
328
+ });
329
+ }
330
+ async function persistManagedNotebookSetupRepair(setup, binding, cwd) {
331
+ const repairedSetup = managedNotebookSetupSchema.parse({
332
+ ...setup,
333
+ notebookBindingId: binding.id,
334
+ remoteNotebookId: binding.remoteNotebookId ?? extractNotebookResourceId(binding.notebookUrl),
335
+ name: binding.name
336
+ });
337
+ if (JSON.stringify(repairedSetup) === JSON.stringify(setup)) {
338
+ return repairedSetup;
339
+ }
340
+ const workspace = await loadWorkspace(cwd);
341
+ const vault = getVaultPaths(workspace);
342
+ const setupJsonPath = path.join(vault.notebookSetupsDir, `${setup.id}.json`);
343
+ await writeJsonFile(setupJsonPath, repairedSetup);
344
+ const note = getManagedNotebookSetupNote(workspace, repairedSetup);
345
+ const attachTarget = await loadChromeAttachTarget(repairedSetup.attachTargetId, cwd);
346
+ if (binding.topicId) {
347
+ const { topic } = await loadTopic(binding.topicId, cwd);
348
+ await writeFile(note.absolutePath, buildManagedNotebookSetupMarkdown(workspace, repairedSetup, topic, binding, attachTarget.target), "utf8");
349
+ await refreshTopicArtifacts(binding.topicId, workspace.rootDir).catch(() => undefined);
350
+ }
351
+ return repairedSetup;
352
+ }
353
+ async function findManagedNotebookSetupByRemoteNotebookId(setups, remoteNotebookId, cwd) {
354
+ for (const candidate of setups) {
355
+ const normalizedCandidate = await normalizeManagedNotebookSetup(candidate, cwd);
356
+ if (normalizedCandidate.remoteNotebookId === remoteNotebookId) {
357
+ return normalizedCandidate;
358
+ }
359
+ }
360
+ return undefined;
361
+ }
362
+ async function tryLoadNotebookBinding(bindingId, cwd) {
363
+ try {
364
+ const { binding } = await loadNotebookBinding(bindingId, cwd);
365
+ return binding;
366
+ }
367
+ catch (error) {
368
+ if (isMissingFileError(error)) {
369
+ return undefined;
370
+ }
371
+ throw error;
372
+ }
373
+ }
374
+ function buildBrowserImportInput(input) {
375
+ if (input.importKind === "file_upload") {
376
+ return {
377
+ importKind: "file_upload",
378
+ title: input.title,
379
+ sourceUri: input.sourceUri,
380
+ notebookUrl: input.notebookUrl,
381
+ filePath: input.source?.sourceUri ?? input.sourceUri
382
+ };
383
+ }
384
+ return {
385
+ importKind: input.importKind,
386
+ title: input.title,
387
+ sourceUri: input.sourceUri,
388
+ notebookUrl: input.notebookUrl,
389
+ url: input.sourceUri
390
+ };
391
+ }
392
+ function deriveManagedImportKind(sourceUri, source) {
393
+ if (source && source.type !== "url") {
394
+ return "file_upload";
395
+ }
396
+ try {
397
+ const url = new URL(sourceUri);
398
+ if (url.hostname.includes("youtube.com") || url.hostname.includes("youtu.be")) {
399
+ return "youtube_url";
400
+ }
401
+ }
402
+ catch { }
403
+ return "web_url";
404
+ }
405
+ function deriveTitleFromUrl(urlLike) {
406
+ try {
407
+ const parsed = new URL(urlLike);
408
+ if (parsed.hostname.includes("youtube.com")) {
409
+ const videoId = parsed.searchParams.get("v");
410
+ if (videoId) {
411
+ return normalizeObsidianText(videoId, "managed-import");
412
+ }
413
+ }
414
+ if (parsed.hostname.includes("youtu.be")) {
415
+ const shortId = parsed.pathname.split("/").filter(Boolean).at(-1);
416
+ if (shortId) {
417
+ return normalizeObsidianText(shortId, "managed-import");
418
+ }
419
+ }
420
+ const leaf = parsed.pathname.split("/").filter(Boolean).at(-1);
421
+ return normalizeObsidianText(leaf ?? parsed.hostname, "managed-import");
422
+ }
423
+ catch {
424
+ return "Managed notebook import";
425
+ }
426
+ }
427
+ async function readManagedArtifacts(directory, schema) {
428
+ try {
429
+ const entries = await readdir(directory);
430
+ const jsonFiles = entries.filter((entry) => entry.endsWith(".json"));
431
+ const raw = await Promise.all(jsonFiles.map((entry) => readFile(path.join(directory, entry), "utf8")));
432
+ return raw.map((value) => schema.parse(JSON.parse(value)));
433
+ }
434
+ catch (error) {
435
+ if (isMissingDirectoryError(error)) {
436
+ return [];
437
+ }
438
+ throw error;
439
+ }
440
+ }
441
+ async function fileExists(filePath) {
442
+ try {
443
+ await access(filePath);
444
+ return true;
445
+ }
446
+ catch {
447
+ return false;
448
+ }
449
+ }
450
+ function isMissingDirectoryError(error) {
451
+ return Boolean(error && typeof error === "object" && "code" in error && error.code === "ENOENT");
452
+ }
453
+ function isMissingFileError(error) {
454
+ return Boolean(error && typeof error === "object" && "code" in error && error.code === "ENOENT");
455
+ }
456
+ export function isNotebookImportSuccessful(status) {
457
+ return status === "imported";
458
+ }
459
+ export function toManagedNotebookSourceKind(sourceUri) {
460
+ try {
461
+ const url = new URL(sourceUri);
462
+ if (url.hostname.includes("youtube.com") || url.hostname.includes("youtu.be")) {
463
+ return notebookSourceKindSchema.parse("youtube-playlist");
464
+ }
465
+ }
466
+ catch { }
467
+ return notebookSourceKindSchema.parse("document-set");
468
+ }
469
+ async function cleanupManagedNotebookCreationFailure(input) {
470
+ await Promise.all([
471
+ unlinkIfExists(input.setupJsonPath),
472
+ unlinkIfExists(input.setupMarkdownPath),
473
+ unlinkIfExists(input.bindingJsonPath),
474
+ unlinkIfExists(input.bindingMarkdownPath)
475
+ ]);
476
+ await refreshTopicArtifacts(input.topicId, input.cwd).catch(() => undefined);
477
+ }
478
+ async function unlinkIfExists(filePath) {
479
+ if (!filePath) {
480
+ return;
481
+ }
482
+ try {
483
+ await unlink(filePath);
484
+ }
485
+ catch (error) {
486
+ if (!isMissingDirectoryError(error)) {
487
+ throw error;
488
+ }
489
+ }
490
+ }
491
+ //# sourceMappingURL=manage-managed-notebooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manage-managed-notebooks.js","sourceRoot":"","sources":["../../../src/core/notebooks/manage-managed-notebooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { loadWorkspace } from "../workspace/load-workspace.js";
2
+ import { type NotebookSourceManifest } from "../../schemas/notebook-source.js";
3
+ export type DeclareNotebookSourceManifestInput = {
4
+ topicId: string;
5
+ notebookBindingId: string;
6
+ kind: string;
7
+ title: string;
8
+ description?: string;
9
+ itemCount?: number;
10
+ refs?: string[];
11
+ force?: boolean;
12
+ cwd?: string;
13
+ };
14
+ export type DeclareNotebookSourceManifestResult = {
15
+ manifest: NotebookSourceManifest;
16
+ markdownPath: string;
17
+ jsonPath: string;
18
+ };
19
+ export declare function declareNotebookSourceManifest(input: DeclareNotebookSourceManifestInput): Promise<DeclareNotebookSourceManifestResult>;
20
+ export declare function loadNotebookSourceManifest(manifestId: string, cwd?: string): Promise<{
21
+ workspace: Awaited<ReturnType<typeof loadWorkspace>>;
22
+ manifest: NotebookSourceManifest;
23
+ path: string;
24
+ }>;
25
+ export declare function listNotebookSourceManifests(cwd?: string): Promise<NotebookSourceManifest[]>;