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.
- package/README.md +401 -0
- package/dist/commands/attach.d.ts +2 -0
- package/dist/commands/attach.js +103 -0
- package/dist/commands/attach.js.map +1 -0
- package/dist/commands/auth.d.ts +2 -0
- package/dist/commands/auth.js +33 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/chrome.d.ts +2 -0
- package/dist/commands/chrome.js +30 -0
- package/dist/commands/chrome.js.map +1 -0
- package/dist/commands/compose.d.ts +2 -0
- package/dist/commands/compose.js +14 -0
- package/dist/commands/compose.js.map +1 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.js +15 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/import-latest.d.ts +2 -0
- package/dist/commands/import-latest.js +42 -0
- package/dist/commands/import-latest.js.map +1 -0
- package/dist/commands/ingest.d.ts +2 -0
- package/dist/commands/ingest.js +14 -0
- package/dist/commands/ingest.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.js +24 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/notebook-bind.d.ts +2 -0
- package/dist/commands/notebook-bind.js +39 -0
- package/dist/commands/notebook-bind.js.map +1 -0
- package/dist/commands/notebook-create.d.ts +2 -0
- package/dist/commands/notebook-create.js +39 -0
- package/dist/commands/notebook-create.js.map +1 -0
- package/dist/commands/notebook-import.d.ts +2 -0
- package/dist/commands/notebook-import.js +39 -0
- package/dist/commands/notebook-import.js.map +1 -0
- package/dist/commands/notebook-source.d.ts +2 -0
- package/dist/commands/notebook-source.js +71 -0
- package/dist/commands/notebook-source.js.map +1 -0
- package/dist/commands/plan.d.ts +9 -0
- package/dist/commands/plan.js +59 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/run.d.ts +2 -0
- package/dist/commands/run.js +76 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.js +15 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/topic.d.ts +2 -0
- package/dist/commands/topic.js +53 -0
- package/dist/commands/topic.js.map +1 -0
- package/dist/core/attach/launch-managed-chrome.d.ts +27 -0
- package/dist/core/attach/launch-managed-chrome.js +136 -0
- package/dist/core/attach/launch-managed-chrome.js.map +1 -0
- package/dist/core/attach/manage-targets.d.ts +49 -0
- package/dist/core/attach/manage-targets.js +179 -0
- package/dist/core/attach/manage-targets.js.map +1 -0
- package/dist/core/ingest/frontmatter.d.ts +4 -0
- package/dist/core/ingest/frontmatter.js +30 -0
- package/dist/core/ingest/frontmatter.js.map +1 -0
- package/dist/core/ingest/html-to-markdown.d.ts +5 -0
- package/dist/core/ingest/html-to-markdown.js +53 -0
- package/dist/core/ingest/html-to-markdown.js.map +1 -0
- package/dist/core/ingest/ingest-source.d.ts +11 -0
- package/dist/core/ingest/ingest-source.js +115 -0
- package/dist/core/ingest/ingest-source.js.map +1 -0
- package/dist/core/notebooklm/adapter.d.ts +17 -0
- package/dist/core/notebooklm/adapter.js +2 -0
- package/dist/core/notebooklm/adapter.js.map +1 -0
- package/dist/core/notebooklm/auth.d.ts +30 -0
- package/dist/core/notebooklm/auth.js +105 -0
- package/dist/core/notebooklm/auth.js.map +1 -0
- package/dist/core/notebooklm/browser-agent-adapter.d.ts +21 -0
- package/dist/core/notebooklm/browser-agent-adapter.js +37 -0
- package/dist/core/notebooklm/browser-agent-adapter.js.map +1 -0
- package/dist/core/notebooklm/browser-agent.d.ts +121 -0
- package/dist/core/notebooklm/browser-agent.js +1604 -0
- package/dist/core/notebooklm/browser-agent.js.map +1 -0
- package/dist/core/notebooklm/config.d.ts +20 -0
- package/dist/core/notebooklm/config.js +133 -0
- package/dist/core/notebooklm/config.js.map +1 -0
- package/dist/core/notebooklm/fixture-adapter.d.ts +13 -0
- package/dist/core/notebooklm/fixture-adapter.js +32 -0
- package/dist/core/notebooklm/fixture-adapter.js.map +1 -0
- package/dist/core/notebooklm/response-extraction.d.ts +23 -0
- package/dist/core/notebooklm/response-extraction.js +348 -0
- package/dist/core/notebooklm/response-extraction.js.map +1 -0
- package/dist/core/notebooks/bind-notebook.d.ts +21 -0
- package/dist/core/notebooks/bind-notebook.js +95 -0
- package/dist/core/notebooks/bind-notebook.js.map +1 -0
- package/dist/core/notebooks/manage-managed-notebooks.d.ts +70 -0
- package/dist/core/notebooks/manage-managed-notebooks.js +491 -0
- package/dist/core/notebooks/manage-managed-notebooks.js.map +1 -0
- package/dist/core/notebooks/manage-notebook-source-manifests.d.ts +25 -0
- package/dist/core/notebooks/manage-notebook-source-manifests.js +127 -0
- package/dist/core/notebooks/manage-notebook-source-manifests.js.map +1 -0
- package/dist/core/operator/workspace-operator.d.ts +82 -0
- package/dist/core/operator/workspace-operator.js +610 -0
- package/dist/core/operator/workspace-operator.js.map +1 -0
- package/dist/core/outputs/compose-run.d.ts +11 -0
- package/dist/core/outputs/compose-run.js +98 -0
- package/dist/core/outputs/compose-run.js.map +1 -0
- package/dist/core/runs/load-artifacts.d.ts +14 -0
- package/dist/core/runs/load-artifacts.js +51 -0
- package/dist/core/runs/load-artifacts.js.map +1 -0
- package/dist/core/runs/question-planner.d.ts +20 -0
- package/dist/core/runs/question-planner.js +276 -0
- package/dist/core/runs/question-planner.js.map +1 -0
- package/dist/core/runs/render-run-note.d.ts +13 -0
- package/dist/core/runs/render-run-note.js +111 -0
- package/dist/core/runs/render-run-note.js.map +1 -0
- package/dist/core/runs/run-qa.d.ts +28 -0
- package/dist/core/runs/run-qa.js +393 -0
- package/dist/core/runs/run-qa.js.map +1 -0
- package/dist/core/topics/manage-topics.d.ts +27 -0
- package/dist/core/topics/manage-topics.js +314 -0
- package/dist/core/topics/manage-topics.js.map +1 -0
- package/dist/core/vault/notes.d.ts +29 -0
- package/dist/core/vault/notes.js +147 -0
- package/dist/core/vault/notes.js.map +1 -0
- package/dist/core/vault/paths.d.ts +31 -0
- package/dist/core/vault/paths.js +44 -0
- package/dist/core/vault/paths.js.map +1 -0
- package/dist/core/workspace/bootstrap.d.ts +16 -0
- package/dist/core/workspace/bootstrap.js +443 -0
- package/dist/core/workspace/bootstrap.js.map +1 -0
- package/dist/core/workspace/constants.d.ts +3 -0
- package/dist/core/workspace/constants.js +16 -0
- package/dist/core/workspace/constants.js.map +1 -0
- package/dist/core/workspace/init-workspace.d.ts +15 -0
- package/dist/core/workspace/init-workspace.js +86 -0
- package/dist/core/workspace/init-workspace.js.map +1 -0
- package/dist/core/workspace/load-workspace.d.ts +6 -0
- package/dist/core/workspace/load-workspace.js +51 -0
- package/dist/core/workspace/load-workspace.js.map +1 -0
- package/dist/core/workspace/schema.d.ts +19 -0
- package/dist/core/workspace/schema.js +19 -0
- package/dist/core/workspace/schema.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/cli-output.d.ts +2 -0
- package/dist/lib/cli-output.js +7 -0
- package/dist/lib/cli-output.js.map +1 -0
- package/dist/lib/obsidian.d.ts +4 -0
- package/dist/lib/obsidian.js +23 -0
- package/dist/lib/obsidian.js.map +1 -0
- package/dist/lib/slugify.d.ts +1 -0
- package/dist/lib/slugify.js +10 -0
- package/dist/lib/slugify.js.map +1 -0
- package/dist/lib/write-json.d.ts +1 -0
- package/dist/lib/write-json.js +5 -0
- package/dist/lib/write-json.js.map +1 -0
- package/dist/schemas/attach.d.ts +118 -0
- package/dist/schemas/attach.js +33 -0
- package/dist/schemas/attach.js.map +1 -0
- package/dist/schemas/managed-notebook.d.ts +47 -0
- package/dist/schemas/managed-notebook.js +30 -0
- package/dist/schemas/managed-notebook.js.map +1 -0
- package/dist/schemas/notebook-source.d.ts +31 -0
- package/dist/schemas/notebook-source.js +23 -0
- package/dist/schemas/notebook-source.js.map +1 -0
- package/dist/schemas/notebook.d.ts +26 -0
- package/dist/schemas/notebook.js +18 -0
- package/dist/schemas/notebook.js.map +1 -0
- package/dist/schemas/run.d.ts +169 -0
- package/dist/schemas/run.js +80 -0
- package/dist/schemas/run.js.map +1 -0
- package/dist/schemas/source.d.ts +18 -0
- package/dist/schemas/source.js +13 -0
- package/dist/schemas/source.js.map +1 -0
- package/dist/schemas/topic.d.ts +37 -0
- package/dist/schemas/topic.js +25 -0
- package/dist/schemas/topic.js.map +1 -0
- 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[]>;
|