@rubytech/create-maxy-code 0.1.138 → 0.1.140

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/config/brand.json +1 -1
  3. package/payload/platform/lib/obsidian-parser/dist/index.d.ts +98 -0
  4. package/payload/platform/lib/obsidian-parser/dist/index.d.ts.map +1 -0
  5. package/payload/platform/lib/obsidian-parser/dist/index.js +480 -0
  6. package/payload/platform/lib/obsidian-parser/dist/index.js.map +1 -0
  7. package/payload/platform/lib/obsidian-parser/src/index.ts +572 -0
  8. package/payload/platform/lib/obsidian-parser/tsconfig.json +8 -0
  9. package/payload/platform/neo4j/schema.cypher +6 -0
  10. package/payload/platform/package.json +2 -2
  11. package/payload/platform/plugins/.claude-plugin/marketplace.json +10 -0
  12. package/payload/platform/plugins/docs/references/plugins-guide.md +2 -0
  13. package/payload/platform/plugins/memory/PLUGIN.md +3 -0
  14. package/payload/platform/plugins/memory/mcp/dist/index.js +89 -2
  15. package/payload/platform/plugins/memory/mcp/dist/index.js.map +1 -1
  16. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.d.ts +64 -1
  17. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.d.ts.map +1 -1
  18. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js +258 -0
  19. package/payload/platform/plugins/memory/mcp/dist/tools/memory-archive-write.js.map +1 -1
  20. package/payload/platform/plugins/memory/mcp/dist/tools/obsidian-vault-import.d.ts +127 -0
  21. package/payload/platform/plugins/memory/mcp/dist/tools/obsidian-vault-import.d.ts.map +1 -0
  22. package/payload/platform/plugins/memory/mcp/dist/tools/obsidian-vault-import.js +477 -0
  23. package/payload/platform/plugins/memory/mcp/dist/tools/obsidian-vault-import.js.map +1 -0
  24. package/payload/platform/plugins/notion-import/.claude-plugin/plugin.json +8 -0
  25. package/payload/platform/plugins/notion-import/PLUGIN.md +27 -0
  26. package/payload/platform/plugins/notion-import/skills/notion-import/SKILL.md +110 -0
  27. package/payload/platform/plugins/notion-import/skills/notion-import/references/attachments.md +55 -0
  28. package/payload/platform/plugins/notion-import/skills/notion-import/references/databases.md +81 -0
  29. package/payload/platform/plugins/notion-import/skills/notion-import/references/page-tree.md +61 -0
  30. package/payload/platform/plugins/notion-import/skills/notion-import/references/workspace-export.md +41 -0
  31. package/payload/platform/plugins/obsidian-import/.claude-plugin/plugin.json +8 -0
  32. package/payload/platform/plugins/obsidian-import/PLUGIN.md +39 -0
  33. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/SKILL.md +92 -0
  34. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/attachments.md +80 -0
  35. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/daily-notes.md +31 -0
  36. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/vault-structure.md +46 -0
  37. package/payload/platform/plugins/obsidian-import/skills/obsidian-import/references/wikilinks.md +70 -0
  38. package/payload/platform/templates/specialists/agents/database-operator.md +13 -1
@@ -23,6 +23,7 @@ import { withWriteEvent } from "../lib/log-ingest.js";
23
23
  const BATCH_SIZE = 500;
24
24
  const HANDLERS = {
25
25
  "linkedin-connections": linkedinConnectionsHandler(),
26
+ "obsidian-vault": obsidianVaultHandler(),
26
27
  };
27
28
  // ---------------------------------------------------------------------------
28
29
  // Entry point
@@ -215,6 +216,263 @@ function linkedinConnectionsHandler() {
215
216
  },
216
217
  };
217
218
  }
219
+ // ---------------------------------------------------------------------------
220
+ // obsidian-vault handler — Obsidian vault pages, wikilinks, tags, attachments
221
+ // ---------------------------------------------------------------------------
222
+ //
223
+ // Page MERGE natural key: (accountId, obsidianPath)
224
+ // Tag MERGE natural key: (accountId, category='obsidian-tag', name)
225
+ // Attachment MERGE key: (accountId, attachmentPath)
226
+ //
227
+ // Wikilinks split into three edge writes by target kind:
228
+ // page → (:KnowledgeDocument)-[:WIKILINKS_TO]->(:KnowledgeDocument)
229
+ // entity → (:KnowledgeDocument)-[:MENTIONS]->(node by elementId)
230
+ // stub → (:KnowledgeDocument)-[:MENTIONS]->(:Concept) with stub creation
231
+ //
232
+ // Owner anchor: each page MERGEd gets (:owner)-[:HAS_NOTE]->(page) so the
233
+ // page is reachable via the canonical hierarchy chain. Owner is either an
234
+ // :AdminUser (operator's own vault) or a :Person (external vault ingested
235
+ // for reference) — same shape as linkedin-import.
236
+ export const OBSIDIAN_PAGE_CYPHER = `
237
+ MATCH (owner) WHERE elementId(owner) = $ownerNodeId
238
+ WITH owner, $rows AS rows
239
+ UNWIND rows AS row
240
+ MERGE (k:KnowledgeDocument {accountId: $accountId, obsidianPath: row.obsidianPath})
241
+ ON CREATE SET
242
+ k.knowledgeDocId = randomUUID(),
243
+ k.source = 'obsidian',
244
+ k.createdByAgent = 'obsidian-import',
245
+ k.createdBySource = 'obsidian-import',
246
+ k.createdBySession = $sessionId,
247
+ k.createdAt = datetime(),
248
+ k.scope = 'admin'
249
+ SET
250
+ k.title = row.title,
251
+ k.contentHash = row.contentHash,
252
+ k.text = row.body,
253
+ k.aliases = row.aliases,
254
+ k.tags = row.tags,
255
+ k.obsidianMtime = datetime({ epochMillis: toInteger(row.mtimeMs) }),
256
+ k.updatedAt = datetime()
257
+ FOREACH (_ IN CASE WHEN row.noteDate IS NOT NULL THEN [1] ELSE [] END |
258
+ SET k.noteDate = date(row.noteDate)
259
+ )
260
+ MERGE (owner)-[h:HAS_NOTE]->(k)
261
+ ON CREATE SET
262
+ h.source = 'obsidian',
263
+ h.createdAt = datetime()
264
+ RETURN count(*) AS processed
265
+ `;
266
+ export const OBSIDIAN_TAG_CYPHER = `
267
+ UNWIND $rows AS row
268
+ MATCH (k:KnowledgeDocument {accountId: $accountId, obsidianPath: row.obsidianPath})
269
+ UNWIND row.tags AS tagName
270
+ WITH k, tagName WHERE tagName IS NOT NULL AND tagName <> ''
271
+ MERGE (t:DefinedTerm {accountId: $accountId, category: 'obsidian-tag', name: tagName})
272
+ ON CREATE SET
273
+ t.source = 'obsidian',
274
+ t.createdByAgent = 'obsidian-import',
275
+ t.createdBySource = 'obsidian-import',
276
+ t.createdBySession = $sessionId,
277
+ t.createdAt = datetime(),
278
+ t.scope = 'admin'
279
+ MERGE (k)-[r:TAGGED_WITH]->(t)
280
+ ON CREATE SET
281
+ r.source = 'obsidian',
282
+ r.createdAt = datetime()
283
+ RETURN count(*) AS processed
284
+ `;
285
+ export const OBSIDIAN_WIKILINK_PAGE_CYPHER = `
286
+ UNWIND $pageLinks AS wl
287
+ MATCH (src:KnowledgeDocument {accountId: $accountId, obsidianPath: wl.fromPath})
288
+ MATCH (dst:KnowledgeDocument {accountId: $accountId, obsidianPath: wl.toPath})
289
+ MERGE (src)-[r:WIKILINKS_TO]->(dst)
290
+ ON CREATE SET
291
+ r.linkText = wl.linkText,
292
+ r.alias = wl.alias,
293
+ r.anchor = wl.anchor,
294
+ r.source = 'obsidian',
295
+ r.createdAt = datetime()
296
+ RETURN count(*) AS processed
297
+ `;
298
+ export const OBSIDIAN_WIKILINK_ENTITY_CYPHER = `
299
+ UNWIND $entityLinks AS wl
300
+ MATCH (src:KnowledgeDocument {accountId: $accountId, obsidianPath: wl.fromPath})
301
+ MATCH (dst) WHERE elementId(dst) = wl.toNodeId AND dst.accountId = $accountId
302
+ MERGE (src)-[r:MENTIONS]->(dst)
303
+ ON CREATE SET
304
+ r.linkText = wl.linkText,
305
+ r.alias = wl.alias,
306
+ r.source = 'obsidian',
307
+ r.createdAt = datetime()
308
+ RETURN count(*) AS processed
309
+ `;
310
+ export const OBSIDIAN_WIKILINK_STUB_CYPHER = `
311
+ UNWIND $stubLinks AS wl
312
+ MATCH (src:KnowledgeDocument {accountId: $accountId, obsidianPath: wl.fromPath})
313
+ MERGE (c:Concept {accountId: $accountId, name: wl.stubName, source: 'obsidian-stub'})
314
+ ON CREATE SET
315
+ c.createdByAgent = 'obsidian-import',
316
+ c.createdBySource = 'obsidian-import',
317
+ c.createdBySession = $sessionId,
318
+ c.createdAt = datetime(),
319
+ c.scope = 'admin'
320
+ MERGE (src)-[r:MENTIONS]->(c)
321
+ ON CREATE SET
322
+ r.linkText = wl.linkText,
323
+ r.alias = wl.alias,
324
+ r.source = 'obsidian',
325
+ r.createdAt = datetime()
326
+ RETURN count(*) AS processed
327
+ `;
328
+ export const OBSIDIAN_ATTACHMENT_CYPHER = `
329
+ UNWIND $rows AS row
330
+ WITH row WHERE size(row.attachments) > 0
331
+ MATCH (k:KnowledgeDocument {accountId: $accountId, obsidianPath: row.obsidianPath})
332
+ UNWIND row.attachments AS att
333
+ MERGE (d:DigitalDocument {accountId: $accountId, attachmentPath: att.archivePath})
334
+ ON CREATE SET
335
+ d.digitalDocumentId = randomUUID(),
336
+ d.source = 'obsidian',
337
+ d.encodingFormat = att.encodingFormat,
338
+ d.alt = att.alt,
339
+ d.createdByAgent = 'obsidian-import',
340
+ d.createdBySource = 'obsidian-import',
341
+ d.createdBySession = $sessionId,
342
+ d.createdAt = datetime(),
343
+ d.scope = 'admin'
344
+ MERGE (d)-[e:EMBEDDED_IN]->(k)
345
+ ON CREATE SET
346
+ e.source = 'obsidian',
347
+ e.createdAt = datetime()
348
+ RETURN count(*) AS processed
349
+ `;
350
+ function obsidianVaultHandler() {
351
+ return {
352
+ async verifyArchive(session, params) {
353
+ const { ownerNodeId, accountId } = params;
354
+ const result = await session.run(`MATCH (n) WHERE elementId(n) = $ownerNodeId
355
+ RETURN labels(n) AS labels, n.accountId AS accountId LIMIT 1`, { ownerNodeId });
356
+ if (result.records.length === 0) {
357
+ throw new Error(`ownerNodeId ${ownerNodeId} not found. Re-run the archive-owner confirmation flow before invoking memory-archive-write.`);
358
+ }
359
+ const labels = result.records[0].get("labels") ?? [];
360
+ const ownerAccountId = result.records[0].get("accountId");
361
+ const isAdminUser = labels.includes("AdminUser");
362
+ const isPerson = labels.includes("Person");
363
+ if (!isAdminUser && !isPerson) {
364
+ throw new Error(`ownerNodeId ${ownerNodeId} has labels [${labels.join(", ")}]; expected :AdminUser or :Person.`);
365
+ }
366
+ if (ownerAccountId && ownerAccountId !== accountId) {
367
+ throw new Error(`ownerNodeId ${ownerNodeId} belongs to account ${ownerAccountId}, not ${accountId}. Cross-account vault ingest refused.`);
368
+ }
369
+ },
370
+ async writeBatch(session, ctx) {
371
+ const { params, batchRows, sessionId } = ctx;
372
+ const rows = batchRows.map(normaliseObsidianRow);
373
+ const pageLinks = [];
374
+ const entityLinks = [];
375
+ const stubLinks = [];
376
+ for (const row of rows) {
377
+ for (const wl of row.wikilinks ?? []) {
378
+ if (wl.target.kind === "page") {
379
+ pageLinks.push({
380
+ fromPath: row.obsidianPath,
381
+ toPath: wl.target.obsidianPath,
382
+ linkText: wl.linkText,
383
+ alias: wl.alias,
384
+ anchor: wl.anchor,
385
+ });
386
+ }
387
+ else if (wl.target.kind === "entity") {
388
+ entityLinks.push({
389
+ fromPath: row.obsidianPath,
390
+ toNodeId: wl.target.nodeId,
391
+ linkText: wl.linkText,
392
+ alias: wl.alias,
393
+ });
394
+ }
395
+ else {
396
+ stubLinks.push({
397
+ fromPath: row.obsidianPath,
398
+ stubName: wl.target.name,
399
+ linkText: wl.linkText,
400
+ alias: wl.alias,
401
+ });
402
+ }
403
+ }
404
+ }
405
+ const queryParams = {
406
+ ownerNodeId: params.ownerNodeId,
407
+ accountId: params.accountId,
408
+ sessionId,
409
+ rows,
410
+ pageLinks,
411
+ entityLinks,
412
+ stubLinks,
413
+ };
414
+ return await session.executeWrite(async (tx) => {
415
+ const pageRes = await tx.run(OBSIDIAN_PAGE_CYPHER, queryParams);
416
+ const pageCounters = pageRes.summary.counters.updates();
417
+ const tagRes = await tx.run(OBSIDIAN_TAG_CYPHER, queryParams);
418
+ const tagCounters = tagRes.summary.counters.updates();
419
+ const attRes = await tx.run(OBSIDIAN_ATTACHMENT_CYPHER, queryParams);
420
+ const attCounters = attRes.summary.counters.updates();
421
+ let wikilinkCountersCreated = 0;
422
+ if (pageLinks.length > 0) {
423
+ const r = await tx.run(OBSIDIAN_WIKILINK_PAGE_CYPHER, queryParams);
424
+ wikilinkCountersCreated += r.summary.counters.updates().relationshipsCreated;
425
+ }
426
+ if (entityLinks.length > 0) {
427
+ const r = await tx.run(OBSIDIAN_WIKILINK_ENTITY_CYPHER, queryParams);
428
+ wikilinkCountersCreated += r.summary.counters.updates().relationshipsCreated;
429
+ }
430
+ if (stubLinks.length > 0) {
431
+ const r = await tx.run(OBSIDIAN_WIKILINK_STUB_CYPHER, queryParams);
432
+ wikilinkCountersCreated += r.summary.counters.updates().relationshipsCreated;
433
+ }
434
+ return {
435
+ createdPages: pageCounters.nodesCreated,
436
+ mergedPages: rows.length - pageCounters.nodesCreated,
437
+ createdTags: tagCounters.nodesCreated,
438
+ createdTagEdges: tagCounters.relationshipsCreated,
439
+ createdAttachments: attCounters.nodesCreated,
440
+ createdAttachmentEdges: attCounters.relationshipsCreated,
441
+ createdWikilinkEdges: wikilinkCountersCreated,
442
+ pageLinksRequested: pageLinks.length,
443
+ entityLinksRequested: entityLinks.length,
444
+ stubLinksRequested: stubLinks.length,
445
+ };
446
+ });
447
+ },
448
+ };
449
+ }
450
+ function normaliseObsidianRow(row) {
451
+ if (!row.obsidianPath || !row.obsidianPath.trim()) {
452
+ throw new Error("obsidian-vault row missing obsidianPath (natural key).");
453
+ }
454
+ if (row.obsidianPath.split("/").includes("..")) {
455
+ throw new Error(`obsidian-vault row obsidianPath="${row.obsidianPath}" contains path-traversal segment.`);
456
+ }
457
+ if (!row.contentHash || !/^[0-9a-f]{64}$/i.test(row.contentHash)) {
458
+ throw new Error(`obsidian-vault row contentHash for ${row.obsidianPath} is not a hex SHA-256.`);
459
+ }
460
+ if (row.noteDate && !/^\d{4}-\d{2}-\d{2}$/.test(row.noteDate)) {
461
+ throw new Error(`obsidian-vault row noteDate="${row.noteDate}" is not ISO 8601 (YYYY-MM-DD).`);
462
+ }
463
+ return {
464
+ obsidianPath: row.obsidianPath.trim(),
465
+ title: (row.title ?? "").trim(),
466
+ aliases: Array.isArray(row.aliases) ? row.aliases : [],
467
+ tags: Array.isArray(row.tags) ? row.tags : [],
468
+ body: row.body ?? "",
469
+ contentHash: row.contentHash.toLowerCase(),
470
+ noteDate: row.noteDate ?? null,
471
+ mtimeMs: typeof row.mtimeMs === "number" ? row.mtimeMs : 0,
472
+ wikilinks: Array.isArray(row.wikilinks) ? row.wikilinks : [],
473
+ attachments: Array.isArray(row.attachments) ? row.attachments : [],
474
+ };
475
+ }
218
476
  function normaliseLinkedinRow(row) {
219
477
  if (!row.linkedinUrl || !row.linkedinUrl.trim()) {
220
478
  throw new Error("linkedin-connections row missing linkedinUrl (natural key).");
@@ -1 +1 @@
1
- {"version":3,"file":"memory-archive-write.js","sourceRoot":"","sources":["../../src/tools/memory-archive-write.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-archive-write.js","sourceRoot":"","sources":["../../src/tools/memory-archive-write.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ import { Buffer } from "node:buffer";
2
+ /**
3
+ * obsidian-vault-import — server-side parser + write orchestrator for
4
+ * Obsidian vault ingestion. Two-phase by operator decision (CEO review):
5
+ *
6
+ * 1. mode='dry-run' — walks the extractedDir, parses, builds the
7
+ * resolution plan, returns counts + ambiguities the operator must
8
+ * disambiguate before the write commits. No writes happen.
9
+ *
10
+ * 2. mode='commit' — re-walks (parsing is deterministic + cheap on a
11
+ * local fs), applies operator-supplied resolutions, runs the
12
+ * content-hash idempotency check against the existing graph,
13
+ * copies attachments to {accountDir}/archive/obsidian/<importId>/,
14
+ * and invokes memoryArchiveWrite with archiveType='obsidian-vault'.
15
+ *
16
+ * The agent never parses markdown. It supplies extractedDir + ownerNodeId
17
+ * + operator-driven filter selection, runs the dry-run, surfaces
18
+ * ambiguities to the operator interactively, then re-invokes commit with
19
+ * the resolutions block. All schema decisions (label reuse, edge naming,
20
+ * MERGE keys) are pinned in memory-archive-write's obsidian-vault handler.
21
+ */
22
+ export type ObsidianImportMode = "dry-run" | "commit";
23
+ export interface VaultImportFilters {
24
+ /** Only ingest pages whose obsidianPath starts with one of these prefixes. */
25
+ folderPrefixes?: string[];
26
+ /** Only ingest pages whose tags intersect this set (normalised, no `#`). */
27
+ tags?: string[];
28
+ /** Only ingest pages with mtime >= this ISO date or epoch-ms. */
29
+ modifiedSince?: string;
30
+ }
31
+ /**
32
+ * Operator's disambiguation answers, keyed by the ambiguity id the dry-run
33
+ * returned. Each entry tells the commit phase which candidate to write the
34
+ * wikilink edge to.
35
+ */
36
+ export type AmbiguityResolution = {
37
+ kind: "page";
38
+ obsidianPath: string;
39
+ } | {
40
+ kind: "entity";
41
+ nodeId: string;
42
+ } | {
43
+ kind: "stub";
44
+ };
45
+ export interface VaultImportParams {
46
+ accountId: string;
47
+ ownerNodeId: string;
48
+ /** Absolute path to the extracted vault directory. Caller validates it
49
+ * lives under the account's archive area before invoking. */
50
+ extractedDir: string;
51
+ /** Stable id for the import run. Generated by dry-run, passed back in
52
+ * the commit call so observability lines tie together. */
53
+ importId?: string;
54
+ mode: ObsidianImportMode;
55
+ filters?: VaultImportFilters;
56
+ /** Operator answers to dry-run ambiguities. Required when mode='commit'
57
+ * AND the dry-run reported ambiguities; ignored otherwise. */
58
+ resolutions?: Record<string, AmbiguityResolution>;
59
+ /** Threshold above which the dry-run flags large vaults for the skill's
60
+ * selective-ingest filter conversation. Default 100 — mirrors the
61
+ * linkedin-connections threshold. */
62
+ selectiveIngestThreshold?: number;
63
+ sessionId?: string;
64
+ }
65
+ export interface VaultImportAmbiguity {
66
+ /** Stable id the operator quotes back in the resolutions map. */
67
+ id: string;
68
+ /** The page that contains the wikilink. */
69
+ fromPath: string;
70
+ /** Raw wikilink text (without `[[…]]`, before alias `|`). */
71
+ target: string;
72
+ /** Candidate intra-vault pages by obsidianPath. */
73
+ pageCandidates: string[];
74
+ /** Candidate existing entities — `{nodeId, label, name, distance}`. */
75
+ entityCandidates: Array<{
76
+ nodeId: string;
77
+ label: string;
78
+ name: string;
79
+ distance: number;
80
+ }>;
81
+ }
82
+ export interface VaultImportPlan {
83
+ importId: string;
84
+ mode: ObsidianImportMode;
85
+ /** Total pages discovered before filtering. */
86
+ pagesDiscovered: number;
87
+ /** Pages surviving filters. */
88
+ pagesEligible: number;
89
+ /** Pages whose contentHash already matches the existing graph (skipped on commit). */
90
+ pagesUnchanged: number;
91
+ /** Wikilinks classified by resolution: intra-vault, fuzzy-entity, stub. */
92
+ wikilinks: {
93
+ page: number;
94
+ entity: number;
95
+ stub: number;
96
+ ambiguous: number;
97
+ };
98
+ /** Tags discovered across eligible pages. */
99
+ tagCount: number;
100
+ /** Distinct attachments referenced. */
101
+ attachmentCount: number;
102
+ /** Operator must resolve these before commit will run. */
103
+ ambiguities: VaultImportAmbiguity[];
104
+ /** Set when pagesEligible > selectiveIngestThreshold and dry-run was the call. */
105
+ selectiveIngestSuggested: boolean;
106
+ }
107
+ export interface VaultImportCommitResult extends VaultImportPlan {
108
+ written: {
109
+ createdPages: number;
110
+ mergedPages: number;
111
+ createdTags: number;
112
+ createdTagEdges: number;
113
+ createdAttachments: number;
114
+ createdAttachmentEdges: number;
115
+ createdWikilinkEdges: number;
116
+ };
117
+ attachmentsCopied: number;
118
+ errors: Array<{
119
+ rowIndex: number;
120
+ reason: string;
121
+ }>;
122
+ /** Server log line tag — the same string written to server.log. */
123
+ observabilityTag: string;
124
+ }
125
+ export declare function obsidianVaultImport(params: VaultImportParams): Promise<VaultImportPlan | VaultImportCommitResult>;
126
+ export type _BufferType = Buffer;
127
+ //# sourceMappingURL=obsidian-vault-import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obsidian-vault-import.d.ts","sourceRoot":"","sources":["../../src/tools/obsidian-vault-import.ts"],"names":[],"mappings":"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"}