mcp-scraper 0.5.0 → 0.7.0
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/dist/bin/api-server.cjs +675 -214
- package/dist/bin/api-server.cjs.map +1 -1
- package/dist/bin/api-server.js +2 -2
- package/dist/bin/mcp-scraper-cli.cjs +1 -1
- package/dist/bin/mcp-scraper-cli.cjs.map +1 -1
- package/dist/bin/mcp-scraper-cli.js +1 -1
- package/dist/bin/mcp-scraper-install.cjs +1 -1
- package/dist/bin/mcp-scraper-install.cjs.map +1 -1
- package/dist/bin/mcp-scraper-install.js +1 -1
- package/dist/bin/mcp-stdio-server.cjs +322 -11
- package/dist/bin/mcp-stdio-server.cjs.map +1 -1
- package/dist/bin/mcp-stdio-server.js +3 -3
- package/dist/bin/paa-harvest.cjs +166 -74
- package/dist/bin/paa-harvest.cjs.map +1 -1
- package/dist/bin/paa-harvest.js +1 -1
- package/dist/chunk-EGWJ74EX.js +7 -0
- package/dist/chunk-EGWJ74EX.js.map +1 -0
- package/dist/{chunk-APJO2XV5.js → chunk-HL33CGJF.js} +3 -3
- package/dist/{chunk-APJO2XV5.js.map → chunk-HL33CGJF.js.map} +1 -1
- package/dist/{chunk-AUCXKRRH.js → chunk-RMPPYKUV.js} +167 -75
- package/dist/chunk-RMPPYKUV.js.map +1 -0
- package/dist/{chunk-BL7BBSYF.js → chunk-RUGJE5EB.js} +2 -2
- package/dist/{chunk-J4T5OSCF.js → chunk-YGRZU7IR.js} +322 -11
- package/dist/chunk-YGRZU7IR.js.map +1 -0
- package/dist/index.cjs +166 -74
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/{server-Z4MEISH5.js → server-JNY4XPZE.js} +138 -81
- package/dist/server-JNY4XPZE.js.map +1 -0
- package/dist/{site-extract-repository-U476J44K.js → site-extract-repository-NVSZH35Y.js} +3 -3
- package/dist/{worker-KJZ3ZN2N.js → worker-JQTS437L.js} +4 -4
- package/dist/worker-JQTS437L.js.map +1 -0
- package/package.json +2 -2
- package/dist/chunk-3RTPEQJC.js +0 -7
- package/dist/chunk-3RTPEQJC.js.map +0 -1
- package/dist/chunk-AUCXKRRH.js.map +0 -1
- package/dist/chunk-J4T5OSCF.js.map +0 -1
- package/dist/server-Z4MEISH5.js.map +0 -1
- package/dist/worker-KJZ3ZN2N.js.map +0 -1
- package/docs/spec-browser-routing.md +0 -108
- package/docs/spec-kernel-computer-controls.md +0 -166
- package/docs/spec-mcp-tools.md +0 -146
- package/docs/spec-server-instructions.md +0 -94
- package/docs/specs/agent-ready-seo-packet-spec.md +0 -237
- package/docs/specs/audit-visual-demo.md +0 -309
- package/docs/specs/cli-agent-wiring-spec.md +0 -206
- package/docs/specs/local-competitive-audit-spec.md +0 -311
- package/docs/specs/scheduled-workflows-api-spec.md +0 -304
- package/docs/specs/seo-cli-growth-roadmap-spec.md +0 -181
- package/docs/specs/seo-workflow-runner-and-reports-spec.md +0 -241
- /package/dist/{chunk-BL7BBSYF.js.map → chunk-RUGJE5EB.js.map} +0 -0
- /package/dist/{site-extract-repository-U476J44K.js.map → site-extract-repository-NVSZH35Y.js.map} +0 -0
|
@@ -102,7 +102,7 @@ function renderInstallTerminal(options) {
|
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
// src/version.ts
|
|
105
|
-
var PACKAGE_VERSION = "0.
|
|
105
|
+
var PACKAGE_VERSION = "0.7.0";
|
|
106
106
|
|
|
107
107
|
// bin/mcp-scraper-install.ts
|
|
108
108
|
var noColor = process.argv.includes("--no-color") || process.env.NO_COLOR !== void 0 || process.env.FORCE_COLOR === "0" || !process.stdout.isTTY;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/install-terminal.ts","../../src/version.ts","../../bin/mcp-scraper-install.ts"],"sourcesContent":["export interface InstallTerminalOptions {\n color?: boolean\n version: string\n apiKeyConfigured?: boolean\n}\n\ntype Tone = 'cyan' | 'lime' | 'amber' | 'red' | 'muted' | 'bold'\n\nconst CODES: Record<Tone | 'reset', string> = {\n reset: '\\x1b[0m',\n cyan: '\\x1b[36m',\n lime: '\\x1b[32m',\n amber: '\\x1b[33m',\n red: '\\x1b[31m',\n muted: '\\x1b[90m',\n bold: '\\x1b[1m',\n}\n\nfunction colorize(value: string, tone: Tone, enabled: boolean): string {\n if (!enabled) return value\n return `${CODES[tone]}${value}${CODES.reset}`\n}\n\nfunction toolRow(label: string, tools: string[], enabled: boolean): string {\n const padded = label.padEnd(9, ' ')\n return ` ${colorize(padded, 'muted', enabled)} ${tools.join(colorize(' . ', 'muted', enabled))}`\n}\n\nexport function renderInstallTerminal(options: InstallTerminalOptions): string {\n const color = options.color ?? true\n const apiKeyValue = options.apiKeyConfigured ? '$MCP_SCRAPER_API_KEY' : 'sk_live_your_key'\n const ascii = String.raw`\n __ __ ____ ____ \n| \\/ |/ ___| _ \\\n| |\\/| | | | |_) |\n| | | | |___| __/\n|_| |_|\\____|_|\n\n ____ ____ ____ _ ____ _____ ____\n/ ___| / ___| _ \\ / \\ | _ \\| ____| _ \\\n\\___ \\| | | |_) | / _ \\ | |_) | _| | |_) |\n ___) | |___| _ < / ___ \\| __/| |___| _ <\n|____/ \\____|_| \\_\\/_/ \\_\\_| |_____|_| \\_\\\n`\n\n const claudeCommand = [\n `MCP_SCRAPER_API_KEY=${apiKeyValue} npx -y -p mcp-scraper@latest \\\\`,\n ' mcp-scraper-cli agent install claude --apply',\n ].join('\\n')\n\n const codexConfig = [\n '[mcp_servers.mcp-scraper]',\n 'command = \"npx\"',\n 'args = [\"-y\", \"-p\", \"mcp-scraper@latest\", \"mcp-scraper\"]',\n `env = { MCP_SCRAPER_API_KEY = \"${apiKeyValue}\" }`,\n ].join('\\n')\n\n return [\n colorize(`mcp-scraper v${options.version}`, 'bold', color),\n colorize('> mcp-scraper-install', 'muted', color),\n colorize(ascii, 'amber', color),\n `${colorize('MCP Scraper Agent', 'cyan', color)} . v${options.version} . mcpscraper.dev`,\n '1/1 install surfaces ready',\n colorize('Newest: saved browser profiles that hold MANY site logins. Share the watch_url, user signs in, then verify with browser_profile_list. Browser sessions are direct/no-proxy by default.', 'lime', color),\n '',\n `${colorize('Tools', 'cyan', color)} ${colorize('(128 MCP tools)', 'muted', color)}`,\n toolRow('search', ['harvest_paa', 'search_serp', 'maps_search', 'maps_place_intel'], color),\n toolRow('extract', ['extract_url', 'map_site_urls', 'extract_site', 'audit_site', 'directory_workflow'], color),\n toolRow('build', ['rank_tracker_workflow', 'cron plan', 'database prompt'], color),\n toolRow('media', ['youtube_harvest', 'youtube_transcribe', 'facebook_ad_search', 'facebook_page_intel', 'facebook_ad_transcribe', 'facebook_video_transcribe', 'instagram_profile_content', 'instagram_media_download', 'reddit_thread'], color),\n toolRow('browser', ['browser_open', 'browser_profile_connect', 'browser_profile_list', 'browser_close', 'browser_screenshot', 'browser_read', 'browser_locate', 'browser_replay_mark', 'browser_replay_annotate'], color),\n toolRow('account', ['credits_info', 'reports', 'MCP resources'], color),\n toolRow('memory', ['memory-put', 'memory-get', 'memory-search', 'list-vaults', 'record-fact', 'list-scheduled-actions'], color),\n `${colorize('Workflows', 'cyan', color)} ${colorize('(MCP + CLI + API)', 'muted', color)}`,\n toolRow('route', ['workflow_list', 'workflow_suggest', 'workflow_run', 'workflow_step', 'workflow_status', 'workflow_artifact_read'], color),\n toolRow('seo', ['directory', 'agent-packet', 'competitive audit', 'map/serp comparison', 'PAA/AIO briefs', 'scheduled runs'], color),\n '',\n colorize('Usage tips:', 'amber', color),\n 'Run mcp-scraper-install for this visible card. Run mcp-scraper-cli for setup utilities and subcommands.',\n 'Run mcp-scraper in a human terminal to print this card; MCP clients get the same command as a silent stdio server.',\n 'Explicit card command: npx -y -p mcp-scraper@latest mcp-scraper-install',\n 'Customer auth setup: run browser_profile_connect, send the watch_url, let the user sign in, then call browser_profile_list until AUTHENTICATED.',\n 'Stack logins / reconnect: run browser_profile_connect again with the same profile name and another domain to add accounts or refresh a login.',\n 'Start with workflow_suggest for broad jobs like market analysis, ICP research, CRO audits, brand briefs, content gaps, and AI visibility.',\n 'For MCP clients, use mcp-scraper so one install can mix SERP, Maps, browser, reports, and saved MCP resources.',\n 'If you hit the concurrency limit, add an extra slot for $5/month with mcp-scraper-cli billing concurrency checkout.',\n '',\n `${colorize('Ready.', 'lime', color)} Install the combined MCP server with one command:`,\n '',\n colorize('Setup doctor', 'amber', color),\n 'npx -y -p mcp-scraper@latest mcp-scraper-cli doctor',\n '',\n colorize('Hosted profile setup', 'amber', color),\n 'In your MCP client, call browser_profile_connect with email=\"seo@example.com\" and domain=\"chatgpt.com\".',\n 'Give the returned watch_url to the user. After they sign in, call browser_profile_list, then browser_open with the returned profile. Add more logins by calling browser_profile_connect again with the same profile and a new domain.',\n '',\n colorize('Claude Code one-command setup', 'amber', color),\n claudeCommand,\n 'Then fully exit Claude Code and open a new Claude terminal. Check with: claude mcp list',\n '',\n colorize('Codex config', 'amber', color),\n codexConfig,\n '',\n colorize('Claude Desktop Extension', 'amber', color),\n 'Download: https://mcpscraper.dev/downloads/mcp-scraper.mcpb',\n '',\n colorize('Safety note:', 'muted', color),\n 'mcp-scraper prints this card only when stdin/stdout are an interactive TTY. In MCP clients it writes only JSON-RPC to stdout.',\n 'Use --stdio or MCP_SCRAPER_FORCE_STDIO=1 to force server mode from a terminal.',\n '',\n ].join('\\n')\n}\n","export const PACKAGE_VERSION = '0.5.0'\n","#!/usr/bin/env node\nimport { renderInstallTerminal } from '../src/install-terminal.js'\nimport { PACKAGE_VERSION } from '../src/version.js'\n\nconst noColor =\n process.argv.includes('--no-color') ||\n process.env.NO_COLOR !== undefined ||\n process.env.FORCE_COLOR === '0' ||\n !process.stdout.isTTY\n\nconst help = process.argv.includes('--help') || process.argv.includes('-h')\nif (help) {\n process.stdout.write([\n 'Usage: mcp-scraper-install [--no-color]',\n '',\n 'Prints the branded MCP Scraper terminal install card and copyable install commands.',\n 'mcp-scraper prints the same card in a human terminal and runs as the MCP stdio server in clients.',\n '',\n ].join('\\n'))\n process.exit(0)\n}\n\nprocess.stdout.write(renderInstallTerminal({\n version: PACKAGE_VERSION,\n color: !noColor,\n apiKeyConfigured: Boolean(process.env.MCP_SCRAPER_API_KEY?.trim()),\n}))\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/install-terminal.ts","../../src/version.ts","../../bin/mcp-scraper-install.ts"],"sourcesContent":["export interface InstallTerminalOptions {\n color?: boolean\n version: string\n apiKeyConfigured?: boolean\n}\n\ntype Tone = 'cyan' | 'lime' | 'amber' | 'red' | 'muted' | 'bold'\n\nconst CODES: Record<Tone | 'reset', string> = {\n reset: '\\x1b[0m',\n cyan: '\\x1b[36m',\n lime: '\\x1b[32m',\n amber: '\\x1b[33m',\n red: '\\x1b[31m',\n muted: '\\x1b[90m',\n bold: '\\x1b[1m',\n}\n\nfunction colorize(value: string, tone: Tone, enabled: boolean): string {\n if (!enabled) return value\n return `${CODES[tone]}${value}${CODES.reset}`\n}\n\nfunction toolRow(label: string, tools: string[], enabled: boolean): string {\n const padded = label.padEnd(9, ' ')\n return ` ${colorize(padded, 'muted', enabled)} ${tools.join(colorize(' . ', 'muted', enabled))}`\n}\n\nexport function renderInstallTerminal(options: InstallTerminalOptions): string {\n const color = options.color ?? true\n const apiKeyValue = options.apiKeyConfigured ? '$MCP_SCRAPER_API_KEY' : 'sk_live_your_key'\n const ascii = String.raw`\n __ __ ____ ____ \n| \\/ |/ ___| _ \\\n| |\\/| | | | |_) |\n| | | | |___| __/\n|_| |_|\\____|_|\n\n ____ ____ ____ _ ____ _____ ____\n/ ___| / ___| _ \\ / \\ | _ \\| ____| _ \\\n\\___ \\| | | |_) | / _ \\ | |_) | _| | |_) |\n ___) | |___| _ < / ___ \\| __/| |___| _ <\n|____/ \\____|_| \\_\\/_/ \\_\\_| |_____|_| \\_\\\n`\n\n const claudeCommand = [\n `MCP_SCRAPER_API_KEY=${apiKeyValue} npx -y -p mcp-scraper@latest \\\\`,\n ' mcp-scraper-cli agent install claude --apply',\n ].join('\\n')\n\n const codexConfig = [\n '[mcp_servers.mcp-scraper]',\n 'command = \"npx\"',\n 'args = [\"-y\", \"-p\", \"mcp-scraper@latest\", \"mcp-scraper\"]',\n `env = { MCP_SCRAPER_API_KEY = \"${apiKeyValue}\" }`,\n ].join('\\n')\n\n return [\n colorize(`mcp-scraper v${options.version}`, 'bold', color),\n colorize('> mcp-scraper-install', 'muted', color),\n colorize(ascii, 'amber', color),\n `${colorize('MCP Scraper Agent', 'cyan', color)} . v${options.version} . mcpscraper.dev`,\n '1/1 install surfaces ready',\n colorize('Newest: saved browser profiles that hold MANY site logins. Share the watch_url, user signs in, then verify with browser_profile_list. Browser sessions are direct/no-proxy by default.', 'lime', color),\n '',\n `${colorize('Tools', 'cyan', color)} ${colorize('(128 MCP tools)', 'muted', color)}`,\n toolRow('search', ['harvest_paa', 'search_serp', 'maps_search', 'maps_place_intel'], color),\n toolRow('extract', ['extract_url', 'map_site_urls', 'extract_site', 'audit_site', 'directory_workflow'], color),\n toolRow('build', ['rank_tracker_workflow', 'cron plan', 'database prompt'], color),\n toolRow('media', ['youtube_harvest', 'youtube_transcribe', 'facebook_ad_search', 'facebook_page_intel', 'facebook_ad_transcribe', 'facebook_video_transcribe', 'instagram_profile_content', 'instagram_media_download', 'reddit_thread'], color),\n toolRow('browser', ['browser_open', 'browser_profile_connect', 'browser_profile_list', 'browser_close', 'browser_screenshot', 'browser_read', 'browser_locate', 'browser_replay_mark', 'browser_replay_annotate'], color),\n toolRow('account', ['credits_info', 'reports', 'MCP resources'], color),\n toolRow('memory', ['memory-put', 'memory-get', 'memory-search', 'list-vaults', 'record-fact', 'list-scheduled-actions'], color),\n `${colorize('Workflows', 'cyan', color)} ${colorize('(MCP + CLI + API)', 'muted', color)}`,\n toolRow('route', ['workflow_list', 'workflow_suggest', 'workflow_run', 'workflow_step', 'workflow_status', 'workflow_artifact_read'], color),\n toolRow('seo', ['directory', 'agent-packet', 'competitive audit', 'map/serp comparison', 'PAA/AIO briefs', 'scheduled runs'], color),\n '',\n colorize('Usage tips:', 'amber', color),\n 'Run mcp-scraper-install for this visible card. Run mcp-scraper-cli for setup utilities and subcommands.',\n 'Run mcp-scraper in a human terminal to print this card; MCP clients get the same command as a silent stdio server.',\n 'Explicit card command: npx -y -p mcp-scraper@latest mcp-scraper-install',\n 'Customer auth setup: run browser_profile_connect, send the watch_url, let the user sign in, then call browser_profile_list until AUTHENTICATED.',\n 'Stack logins / reconnect: run browser_profile_connect again with the same profile name and another domain to add accounts or refresh a login.',\n 'Start with workflow_suggest for broad jobs like market analysis, ICP research, CRO audits, brand briefs, content gaps, and AI visibility.',\n 'For MCP clients, use mcp-scraper so one install can mix SERP, Maps, browser, reports, and saved MCP resources.',\n 'If you hit the concurrency limit, add an extra slot for $5/month with mcp-scraper-cli billing concurrency checkout.',\n '',\n `${colorize('Ready.', 'lime', color)} Install the combined MCP server with one command:`,\n '',\n colorize('Setup doctor', 'amber', color),\n 'npx -y -p mcp-scraper@latest mcp-scraper-cli doctor',\n '',\n colorize('Hosted profile setup', 'amber', color),\n 'In your MCP client, call browser_profile_connect with email=\"seo@example.com\" and domain=\"chatgpt.com\".',\n 'Give the returned watch_url to the user. After they sign in, call browser_profile_list, then browser_open with the returned profile. Add more logins by calling browser_profile_connect again with the same profile and a new domain.',\n '',\n colorize('Claude Code one-command setup', 'amber', color),\n claudeCommand,\n 'Then fully exit Claude Code and open a new Claude terminal. Check with: claude mcp list',\n '',\n colorize('Codex config', 'amber', color),\n codexConfig,\n '',\n colorize('Claude Desktop Extension', 'amber', color),\n 'Download: https://mcpscraper.dev/downloads/mcp-scraper.mcpb',\n '',\n colorize('Safety note:', 'muted', color),\n 'mcp-scraper prints this card only when stdin/stdout are an interactive TTY. In MCP clients it writes only JSON-RPC to stdout.',\n 'Use --stdio or MCP_SCRAPER_FORCE_STDIO=1 to force server mode from a terminal.',\n '',\n ].join('\\n')\n}\n","export const PACKAGE_VERSION = '0.7.0'\n","#!/usr/bin/env node\nimport { renderInstallTerminal } from '../src/install-terminal.js'\nimport { PACKAGE_VERSION } from '../src/version.js'\n\nconst noColor =\n process.argv.includes('--no-color') ||\n process.env.NO_COLOR !== undefined ||\n process.env.FORCE_COLOR === '0' ||\n !process.stdout.isTTY\n\nconst help = process.argv.includes('--help') || process.argv.includes('-h')\nif (help) {\n process.stdout.write([\n 'Usage: mcp-scraper-install [--no-color]',\n '',\n 'Prints the branded MCP Scraper terminal install card and copyable install commands.',\n 'mcp-scraper prints the same card in a human terminal and runs as the MCP stdio server in clients.',\n '',\n ].join('\\n'))\n process.exit(0)\n}\n\nprocess.stdout.write(renderInstallTerminal({\n version: PACKAGE_VERSION,\n color: !noColor,\n apiKeyConfigured: Boolean(process.env.MCP_SCRAPER_API_KEY?.trim()),\n}))\n"],"mappings":"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","names":[]}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "../chunk-5HNHYUJ5.js";
|
|
5
5
|
import {
|
|
6
6
|
PACKAGE_VERSION
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-EGWJ74EX.js";
|
|
8
8
|
|
|
9
9
|
// bin/mcp-scraper-install.ts
|
|
10
10
|
var noColor = process.argv.includes("--no-color") || process.env.NO_COLOR !== void 0 || process.env.FORCE_COLOR === "0" || !process.stdout.isTTY;
|
|
@@ -483,7 +483,7 @@ render();
|
|
|
483
483
|
}
|
|
484
484
|
|
|
485
485
|
// src/version.ts
|
|
486
|
-
var PACKAGE_VERSION = "0.
|
|
486
|
+
var PACKAGE_VERSION = "0.7.0";
|
|
487
487
|
|
|
488
488
|
// src/mcp/browser-agent-tool-schemas.ts
|
|
489
489
|
var import_zod = require("zod");
|
|
@@ -2679,8 +2679,8 @@ function summaryEnvelope(executiveSummary, offloaded) {
|
|
|
2679
2679
|
// src/api/rates.ts
|
|
2680
2680
|
var MC_COSTS = {
|
|
2681
2681
|
serp: 100,
|
|
2682
|
-
paa:
|
|
2683
|
-
paa_base:
|
|
2682
|
+
paa: 300,
|
|
2683
|
+
paa_base: 5500,
|
|
2684
2684
|
page_scrape: 100,
|
|
2685
2685
|
url_map: 500,
|
|
2686
2686
|
yt_channel: 200,
|
|
@@ -5344,7 +5344,7 @@ Multi-step orchestrations \u2014 prefer these over hand-chaining primitives when
|
|
|
5344
5344
|
read it back for full detail rather than expecting the whole payload inline.
|
|
5345
5345
|
|
|
5346
5346
|
## Memory
|
|
5347
|
-
mcp-scraper also exposes
|
|
5347
|
+
mcp-scraper also exposes persistent per-user memory tools (notes, facts, vaults,
|
|
5348
5348
|
scheduled actions, tables, channels) backed by memory.mcpscraper.dev. Every account starts with 13
|
|
5349
5349
|
vaults \u2014 call **list-vaults** to see what exists before creating anything new. Pick the vault whose job
|
|
5350
5350
|
matches the content: **Ideas** (unvalidated concepts), **Knowledge** (distilled lessons/how-tos),
|
|
@@ -5354,11 +5354,45 @@ matches the content: **Ideas** (unvalidated concepts), **Knowledge** (distilled
|
|
|
5354
5354
|
**Improvement Log** (receipts of changes made and whether they worked), **Experiments** (hypothesis +
|
|
5355
5355
|
measured result), **Sprint** (current cycle's scope), **Inspiration** (other people's work worth
|
|
5356
5356
|
studying).
|
|
5357
|
-
|
|
5358
|
-
|
|
5357
|
+
For a normal new narrative note, call **prepare-memory-write** first. It queries the live vault contract,
|
|
5358
|
+
tag vocabulary, and natural neighbor vaults, and returns interlink candidates that must be read before
|
|
5359
|
+
acceptance. Compose every returned template section, then call **memory-capture**, which validates the
|
|
5360
|
+
note, registers canonical tags, writes it, and verifies readback. Reserve low-level **memory-put** for
|
|
5361
|
+
deliberate edits and migrations. Use
|
|
5359
5362
|
**table-create**/**table-insert-rows**/**table-query** instead when the caller wants row-shaped data
|
|
5360
5363
|
they'll filter/sort by exact value. **memory-search** is meaning-based over full content (embeds, slower);
|
|
5361
5364
|
**memory-list** filters one vault by kind/tags (fast, exact).
|
|
5365
|
+
|
|
5366
|
+
Treat every memory create or update as a graph operation. **prepare-memory-write** supplies the initial
|
|
5367
|
+
shortlist; use **memory-search** when it is weak or the topic is broad, and **memory-get** to read the best
|
|
5368
|
+
candidates in full. Add only links supported by the notes: same-
|
|
5369
|
+
vault targets go in props.related and natural [[path]] body links; cross-vault targets go in
|
|
5370
|
+
props.related_vault_notes as Vault Name::relative/path.md. Prefer existing People/Projects/system
|
|
5371
|
+
hubs and fewer strong links. Do not trust a background linker to repair a weak write.
|
|
5372
|
+
|
|
5373
|
+
Use the target vault's template, not generic prose. Always set summary, specific reusable tags,
|
|
5374
|
+
source_type, source_ref, related, related_vault_notes, embed, embed_priority, and a valid
|
|
5375
|
+
status; include vault-specific props when relevant. Body patterns: Knowledge = Thesis / Explanation /
|
|
5376
|
+
Examples / Implications; Library = Source Identity / Preserved Material / Extraction Notes; People =
|
|
5377
|
+
Identity / Relationship / Known Context / Interaction History / Open Loops; Projects = Purpose / Current
|
|
5378
|
+
State / Architecture / Open Work / Decisions; Issues = Observation / Impact / Confirmation / Evidence /
|
|
5379
|
+
Resolution; Improvement Log = Improvement / Issue Link / Change Made / Verification / Result. Keep Tasks,
|
|
5380
|
+
Calendar, Communications, Ideas, Inspiration, Experiments, and Sprint aligned to their named purpose.
|
|
5381
|
+
Tags are live vocabulary, not improvised labels: **list-memory-tags** shows what exists and
|
|
5382
|
+
**resolve-memory-tags** returns reuse/create/omit. A new tag is justified only when the concept is central,
|
|
5383
|
+
reusable, and has no exact, alias, or near-equivalent. Use **memory-backlinks**,
|
|
5384
|
+
**memory-graph-universe**, and **memory-graph-path** to trace the linked universe across vaults.
|
|
5385
|
+
|
|
5386
|
+
Scrape deposits are raw evidence and therefore go to **Library** through **library-ingest**, with the full
|
|
5387
|
+
Library template and source metadata. If the source contains durable applicable guidance, create a separate
|
|
5388
|
+
Knowledge companion through prepare-memory-write + memory-capture and link it to the Library source with
|
|
5389
|
+
derived_from; do not replace the raw source with the guide.
|
|
5390
|
+
|
|
5391
|
+
For an update, call **memory-get** first and pass its revision as baseRevision. Preserve the existing
|
|
5392
|
+
title, source, capture time, content context, and props unless the request deliberately changes them.
|
|
5393
|
+
If a legacy backend does not return props, do not overwrite an existing linked note through that surface;
|
|
5394
|
+
report that link preservation cannot be proved. After the write, read it back and search a distinctive
|
|
5395
|
+
phrase to verify persistence and indexing.
|
|
5362
5396
|
`.trim();
|
|
5363
5397
|
}
|
|
5364
5398
|
var SERVER_INSTRUCTIONS = serverInstructions(true);
|
|
@@ -7657,6 +7691,52 @@ var UnlinkShareSchema = {
|
|
|
7657
7691
|
openWorldHint: false
|
|
7658
7692
|
}
|
|
7659
7693
|
};
|
|
7694
|
+
var memoryCaptureTool_notePropsSchema = import_zod4.z.object({
|
|
7695
|
+
status: import_zod4.z.string().describe("Status enum value from the target vault contract."),
|
|
7696
|
+
summary: import_zod4.z.string().describe("Short retrieval-ready description."),
|
|
7697
|
+
tags: import_zod4.z.array(import_zod4.z.string()).describe("AI-generated keyword tags, not vault names."),
|
|
7698
|
+
pinned: import_zod4.z.boolean().describe("Recall boost for important notes."),
|
|
7699
|
+
source_type: import_zod4.z.string().describe("Attribution kind: user, person, url, file, channel, thread, or note."),
|
|
7700
|
+
source_ref: import_zod4.z.string().describe("Attribution reference (URL, path, channel, thread, or source note)."),
|
|
7701
|
+
related: import_zod4.z.array(import_zod4.z.string()).describe("Same-vault links (wiki [[ ]] targets)."),
|
|
7702
|
+
related_vault_notes: import_zod4.z.array(import_zod4.z.string()).describe('Cross-vault references in "Vault Name::relative/path.md" form.'),
|
|
7703
|
+
embed: import_zod4.z.boolean().describe("Whether Smart RAG should index the note."),
|
|
7704
|
+
embed_priority: import_zod4.z.enum(["low", "normal", "high"]).describe("Embedding priority."),
|
|
7705
|
+
embedding_summary: import_zod4.z.string().describe("Optional retrieval-specific summary."),
|
|
7706
|
+
type: import_zod4.z.string().describe("Note type from the target vault contract (also used to route the note)."),
|
|
7707
|
+
domain: import_zod4.z.string().describe("Domain folder for Library/Knowledge (AI, SEO, Copywriting & Ads, Business, Spirituality)."),
|
|
7708
|
+
folder: import_zod4.z.string().describe("Explicit sub-folder within the vault; overrides routing-derived folder."),
|
|
7709
|
+
parentMessageId: import_zod4.z.string().describe("Channel messages only: the path of the top-level message this is a reply to. Absent on top-level messages.")
|
|
7710
|
+
}).partial().passthrough();
|
|
7711
|
+
var MemoryCaptureSchema = {
|
|
7712
|
+
id: "memory-capture",
|
|
7713
|
+
upstreamName: "memoryCaptureTool",
|
|
7714
|
+
description: "Strict normal-create path for durable memory. Refuses incomplete notes, writes through memory-put, registers canonical tags, and reads the note back to verify persisted content and props. Call prepare-memory-write first. Reserve memory-put for low-level migrations or deliberate edits.",
|
|
7715
|
+
input: {
|
|
7716
|
+
vault: import_zod4.z.string(),
|
|
7717
|
+
folder: import_zod4.z.string().optional(),
|
|
7718
|
+
path: import_zod4.z.string().min(1),
|
|
7719
|
+
title: import_zod4.z.string().min(1),
|
|
7720
|
+
content: import_zod4.z.string().min(1),
|
|
7721
|
+
props: memoryCaptureTool_notePropsSchema,
|
|
7722
|
+
baseRevision: import_zod4.z.number().optional(),
|
|
7723
|
+
tagDecisions: import_zod4.z.array(import_zod4.z.object({ tag: import_zod4.z.string().min(1), central: import_zod4.z.boolean(), reusable: import_zod4.z.boolean(), description: import_zod4.z.string().optional() })).max(8).optional().describe("Required justification for any tag that does not already exist. Existing exact/alias/near tags are canonicalized automatically; a new tag is accepted only when its matching decision has central=true and reusable=true.")
|
|
7724
|
+
},
|
|
7725
|
+
output: {
|
|
7726
|
+
ok: import_zod4.z.boolean(),
|
|
7727
|
+
valid: import_zod4.z.boolean().optional(),
|
|
7728
|
+
errors: import_zod4.z.array(import_zod4.z.string()).optional(),
|
|
7729
|
+
warnings: import_zod4.z.array(import_zod4.z.string()).optional(),
|
|
7730
|
+
tagResolutions: import_zod4.z.array(import_zod4.z.object({ candidate: import_zod4.z.string(), action: import_zod4.z.enum(["reuse", "create", "omit"]), tag: import_zod4.z.string().optional(), reason: import_zod4.z.string() })).optional(),
|
|
7731
|
+
note: import_zod4.z.object({ path: import_zod4.z.string(), title: import_zod4.z.string(), updatedAt: import_zod4.z.string(), revision: import_zod4.z.number() }).optional(),
|
|
7732
|
+
indexed: import_zod4.z.number().optional(),
|
|
7733
|
+
verified: import_zod4.z.object({ contentBytes: import_zod4.z.number(), propsPersisted: import_zod4.z.boolean(), revision: import_zod4.z.number() }).optional(),
|
|
7734
|
+
conflict: import_zod4.z.boolean().optional(),
|
|
7735
|
+
code: import_zod4.z.string().optional(),
|
|
7736
|
+
error: import_zod4.z.string().optional()
|
|
7737
|
+
},
|
|
7738
|
+
annotations: { title: "Capture Governed Memory", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true }
|
|
7739
|
+
};
|
|
7660
7740
|
var MemoryQuestionsSchema = {
|
|
7661
7741
|
id: "memory-questions",
|
|
7662
7742
|
upstreamName: "memoryQuestionsTool",
|
|
@@ -7686,6 +7766,67 @@ var MemoryQuestionsSchema = {
|
|
|
7686
7766
|
openWorldHint: true
|
|
7687
7767
|
}
|
|
7688
7768
|
};
|
|
7769
|
+
var PrepareMemoryWriteSchema = {
|
|
7770
|
+
id: "prepare-memory-write",
|
|
7771
|
+
upstreamName: "prepareMemoryWriteTool",
|
|
7772
|
+
description: "Mandatory planning pass for a normal new memory. Routes the note, returns the live template and natural vault relationships, resolves proposed tags against the registry, and shortlists interlink opportunities that must be read/reviewed before capture.",
|
|
7773
|
+
input: {
|
|
7774
|
+
title: import_zod4.z.string().min(1),
|
|
7775
|
+
content: import_zod4.z.string().min(1),
|
|
7776
|
+
source: import_zod4.z.string().optional(),
|
|
7777
|
+
type: import_zod4.z.string().optional(),
|
|
7778
|
+
vault: import_zod4.z.string().optional(),
|
|
7779
|
+
tagCandidates: import_zod4.z.array(import_zod4.z.object({ tag: import_zod4.z.string().min(1), central: import_zod4.z.boolean().optional(), reusable: import_zod4.z.boolean().optional(), description: import_zod4.z.string().optional() })).max(20).optional(),
|
|
7780
|
+
maxLinks: import_zod4.z.number().int().min(1).max(20).optional()
|
|
7781
|
+
},
|
|
7782
|
+
output: {
|
|
7783
|
+
ok: import_zod4.z.boolean(),
|
|
7784
|
+
route: import_zod4.z.record(import_zod4.z.unknown()).optional(),
|
|
7785
|
+
contract: import_zod4.z.record(import_zod4.z.unknown()).optional(),
|
|
7786
|
+
tagResolutions: import_zod4.z.array(import_zod4.z.record(import_zod4.z.unknown())).optional(),
|
|
7787
|
+
linkOpportunities: import_zod4.z.array(import_zod4.z.record(import_zod4.z.unknown())).optional(),
|
|
7788
|
+
instructions: import_zod4.z.array(import_zod4.z.string()).optional(),
|
|
7789
|
+
error: import_zod4.z.string().optional()
|
|
7790
|
+
},
|
|
7791
|
+
annotations: { title: "Prepare Memory Write", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
|
|
7792
|
+
};
|
|
7793
|
+
var validateMemoryWriteTool_notePropsSchema = import_zod4.z.object({
|
|
7794
|
+
status: import_zod4.z.string().describe("Status enum value from the target vault contract."),
|
|
7795
|
+
summary: import_zod4.z.string().describe("Short retrieval-ready description."),
|
|
7796
|
+
tags: import_zod4.z.array(import_zod4.z.string()).describe("AI-generated keyword tags, not vault names."),
|
|
7797
|
+
pinned: import_zod4.z.boolean().describe("Recall boost for important notes."),
|
|
7798
|
+
source_type: import_zod4.z.string().describe("Attribution kind: user, person, url, file, channel, thread, or note."),
|
|
7799
|
+
source_ref: import_zod4.z.string().describe("Attribution reference (URL, path, channel, thread, or source note)."),
|
|
7800
|
+
related: import_zod4.z.array(import_zod4.z.string()).describe("Same-vault links (wiki [[ ]] targets)."),
|
|
7801
|
+
related_vault_notes: import_zod4.z.array(import_zod4.z.string()).describe('Cross-vault references in "Vault Name::relative/path.md" form.'),
|
|
7802
|
+
embed: import_zod4.z.boolean().describe("Whether Smart RAG should index the note."),
|
|
7803
|
+
embed_priority: import_zod4.z.enum(["low", "normal", "high"]).describe("Embedding priority."),
|
|
7804
|
+
embedding_summary: import_zod4.z.string().describe("Optional retrieval-specific summary."),
|
|
7805
|
+
type: import_zod4.z.string().describe("Note type from the target vault contract (also used to route the note)."),
|
|
7806
|
+
domain: import_zod4.z.string().describe("Domain folder for Library/Knowledge (AI, SEO, Copywriting & Ads, Business, Spirituality)."),
|
|
7807
|
+
folder: import_zod4.z.string().describe("Explicit sub-folder within the vault; overrides routing-derived folder."),
|
|
7808
|
+
parentMessageId: import_zod4.z.string().describe("Channel messages only: the path of the top-level message this is a reply to. Absent on top-level messages.")
|
|
7809
|
+
}).partial().passthrough();
|
|
7810
|
+
var ValidateMemoryWriteSchema = {
|
|
7811
|
+
id: "validate-memory-write",
|
|
7812
|
+
upstreamName: "validateMemoryWriteTool",
|
|
7813
|
+
description: "Validate a proposed governed note without writing it. Checks template completeness, vault status/type, canonical tag count, attribution, Obsidian link primitives, and retrieval metadata.",
|
|
7814
|
+
input: {
|
|
7815
|
+
vault: import_zod4.z.string(),
|
|
7816
|
+
title: import_zod4.z.string(),
|
|
7817
|
+
content: import_zod4.z.string(),
|
|
7818
|
+
props: validateMemoryWriteTool_notePropsSchema
|
|
7819
|
+
},
|
|
7820
|
+
output: {
|
|
7821
|
+
ok: import_zod4.z.boolean(),
|
|
7822
|
+
valid: import_zod4.z.boolean().optional(),
|
|
7823
|
+
errors: import_zod4.z.array(import_zod4.z.string()).optional(),
|
|
7824
|
+
warnings: import_zod4.z.array(import_zod4.z.string()).optional(),
|
|
7825
|
+
normalizedTags: import_zod4.z.array(import_zod4.z.string()).optional(),
|
|
7826
|
+
error: import_zod4.z.string().optional()
|
|
7827
|
+
},
|
|
7828
|
+
annotations: { title: "Validate Memory Write", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
|
|
7829
|
+
};
|
|
7689
7830
|
var CreateChannelSchema = {
|
|
7690
7831
|
id: "create-channel",
|
|
7691
7832
|
upstreamName: "createChannelTool",
|
|
@@ -8026,18 +8167,78 @@ var RecordFactSchema = {
|
|
|
8026
8167
|
openWorldHint: false
|
|
8027
8168
|
}
|
|
8028
8169
|
};
|
|
8170
|
+
var NoteBacklinksSchema = {
|
|
8171
|
+
id: "memory-backlinks",
|
|
8172
|
+
upstreamName: "noteBacklinksTool",
|
|
8173
|
+
description: "Return every resolved incoming link to a note across all accessible vaults, including typed metadata links and Obsidian wiki links.",
|
|
8174
|
+
input: {
|
|
8175
|
+
note: import_zod4.z.string().min(1),
|
|
8176
|
+
vault: import_zod4.z.string().optional()
|
|
8177
|
+
},
|
|
8178
|
+
output: {
|
|
8179
|
+
ok: import_zod4.z.boolean(),
|
|
8180
|
+
nodes: import_zod4.z.array(import_zod4.z.object({ id: import_zod4.z.string(), vault: import_zod4.z.string(), path: import_zod4.z.string(), title: import_zod4.z.string(), resolved: import_zod4.z.boolean() })).optional(),
|
|
8181
|
+
edges: import_zod4.z.array(import_zod4.z.object({ source: import_zod4.z.string(), target: import_zod4.z.string(), type: import_zod4.z.string(), evidence: import_zod4.z.string(), sourceField: import_zod4.z.string(), resolved: import_zod4.z.boolean() })).optional(),
|
|
8182
|
+
error: import_zod4.z.string().optional()
|
|
8183
|
+
},
|
|
8184
|
+
annotations: { title: "Memory Backlinks", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
|
|
8185
|
+
};
|
|
8186
|
+
var GraphPathSchema = {
|
|
8187
|
+
id: "memory-graph-path",
|
|
8188
|
+
upstreamName: "graphPathTool",
|
|
8189
|
+
description: "Find the shortest navigable connection between two memory notes across vault boundaries. Returns an empty graph when no path exists within maxDepth.",
|
|
8190
|
+
input: {
|
|
8191
|
+
from: import_zod4.z.string().min(1),
|
|
8192
|
+
to: import_zod4.z.string().min(1),
|
|
8193
|
+
fromVault: import_zod4.z.string().optional(),
|
|
8194
|
+
toVault: import_zod4.z.string().optional(),
|
|
8195
|
+
maxDepth: import_zod4.z.number().int().min(1).max(12).optional()
|
|
8196
|
+
},
|
|
8197
|
+
output: {
|
|
8198
|
+
ok: import_zod4.z.boolean(),
|
|
8199
|
+
nodes: import_zod4.z.array(import_zod4.z.object({ id: import_zod4.z.string(), vault: import_zod4.z.string(), path: import_zod4.z.string(), title: import_zod4.z.string(), resolved: import_zod4.z.boolean() })).optional(),
|
|
8200
|
+
edges: import_zod4.z.array(import_zod4.z.object({ source: import_zod4.z.string(), target: import_zod4.z.string(), type: import_zod4.z.string(), evidence: import_zod4.z.string(), sourceField: import_zod4.z.string(), resolved: import_zod4.z.boolean() })).optional(),
|
|
8201
|
+
error: import_zod4.z.string().optional()
|
|
8202
|
+
},
|
|
8203
|
+
annotations: { title: "Memory Graph Path", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
|
|
8204
|
+
};
|
|
8205
|
+
var GraphUniverseSchema = {
|
|
8206
|
+
id: "memory-graph-universe",
|
|
8207
|
+
upstreamName: "graphUniverseTool",
|
|
8208
|
+
description: "Traverse the interlinked memory universe around one note in every direction, like an Obsidian local graph. Returns nodes and typed edges to a bounded depth.",
|
|
8209
|
+
input: {
|
|
8210
|
+
note: import_zod4.z.string().min(1),
|
|
8211
|
+
vault: import_zod4.z.string().optional(),
|
|
8212
|
+
depth: import_zod4.z.number().int().min(0).max(6).optional(),
|
|
8213
|
+
maxNodes: import_zod4.z.number().int().min(1).max(500).optional()
|
|
8214
|
+
},
|
|
8215
|
+
output: {
|
|
8216
|
+
ok: import_zod4.z.boolean(),
|
|
8217
|
+
root: import_zod4.z.string().optional(),
|
|
8218
|
+
depth: import_zod4.z.number().optional(),
|
|
8219
|
+
truncated: import_zod4.z.boolean().optional(),
|
|
8220
|
+
nodes: import_zod4.z.array(import_zod4.z.object({ id: import_zod4.z.string(), vault: import_zod4.z.string(), path: import_zod4.z.string(), title: import_zod4.z.string(), resolved: import_zod4.z.boolean() })).optional(),
|
|
8221
|
+
edges: import_zod4.z.array(import_zod4.z.object({ source: import_zod4.z.string(), target: import_zod4.z.string(), type: import_zod4.z.string(), evidence: import_zod4.z.string(), sourceField: import_zod4.z.string(), resolved: import_zod4.z.boolean() })).optional(),
|
|
8222
|
+
error: import_zod4.z.string().optional()
|
|
8223
|
+
},
|
|
8224
|
+
annotations: { title: "Memory Graph Universe", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
|
|
8225
|
+
};
|
|
8029
8226
|
var LibraryIngestSchema = {
|
|
8030
8227
|
id: "library-ingest",
|
|
8031
8228
|
upstreamName: "libraryIngestTool",
|
|
8032
8229
|
description: "Deposit a scrape, transcript, or generated output into the tenant Library vault for later semantic recall. Content is embedded for per-tenant search and best-effort mirrored to a local vault when configured. Requires write scope on the target vault.",
|
|
8033
8230
|
input: {
|
|
8034
8231
|
vault: import_zod4.z.string().optional().describe(
|
|
8035
|
-
|
|
8232
|
+
"Vault to deposit into. Optional and normally omitted: raw scrapes always default to Library. Override only for a deliberate nonstandard migration."
|
|
8036
8233
|
),
|
|
8037
8234
|
title: import_zod4.z.string().min(1).describe("Short human-readable title for the item; used to build the stored path. Must be non-empty."),
|
|
8038
8235
|
content: import_zod4.z.string().min(1).describe("The full captured text (scrape/transcript/output) to store and index. Must be non-empty."),
|
|
8039
8236
|
source: import_zod4.z.string().min(1).describe("Provenance of the content, e.g. a URL or tool name. Must be non-empty."),
|
|
8040
8237
|
capturedAt: import_zod4.z.string().optional().describe("ISO-8601 capture timestamp. Optional; defaults to now. Also seeds the deterministic storage path."),
|
|
8238
|
+
summary: import_zod4.z.string().optional().describe("Retrieval-ready source summary. Optional; a provenance summary is generated when omitted."),
|
|
8239
|
+
tags: import_zod4.z.array(import_zod4.z.string()).max(8).optional().describe("Reviewed canonical tags. Existing tags should be resolved first; when omitted, deterministic source/topic tags are generated."),
|
|
8240
|
+
related: import_zod4.z.array(import_zod4.z.string()).optional().describe("Reviewed same-vault Library note paths."),
|
|
8241
|
+
relatedVaultNotes: import_zod4.z.array(import_zod4.z.string()).optional().describe("Reviewed cross-vault references in Vault::path.md form."),
|
|
8041
8242
|
localVaultPath: import_zod4.z.string().optional().describe("Filesystem root to also mirror the item to. Optional; falls back to MEMORY_LOCAL_VAULT_ROOT env when set.")
|
|
8042
8243
|
},
|
|
8043
8244
|
output: {
|
|
@@ -8047,6 +8248,7 @@ var LibraryIngestSchema = {
|
|
|
8047
8248
|
path: import_zod4.z.string().optional().describe("Vault-relative path the item was stored at (under library/...)."),
|
|
8048
8249
|
indexed: import_zod4.z.number().optional().describe("Number of search chunks indexed (0 if embedding failed but the note still saved)."),
|
|
8049
8250
|
dualWritten: import_zod4.z.boolean().optional().describe("True if the item was also mirrored to the local filesystem vault."),
|
|
8251
|
+
nextStep: import_zod4.z.string().optional().describe("Recommended extraction action after the raw Library source is safe."),
|
|
8050
8252
|
code: import_zod4.z.string().optional().describe("Machine-readable denial code when ok is false: quota_exceeded or free_cost_cap."),
|
|
8051
8253
|
error: import_zod4.z.string().optional().describe("Human-readable failure reason when ok is false.")
|
|
8052
8254
|
},
|
|
@@ -8124,10 +8326,27 @@ var ExportSchema = {
|
|
|
8124
8326
|
openWorldHint: false
|
|
8125
8327
|
}
|
|
8126
8328
|
};
|
|
8329
|
+
var getTool_notePropsSchema = import_zod4.z.object({
|
|
8330
|
+
status: import_zod4.z.string().describe("Status enum value from the target vault contract."),
|
|
8331
|
+
summary: import_zod4.z.string().describe("Short retrieval-ready description."),
|
|
8332
|
+
tags: import_zod4.z.array(import_zod4.z.string()).describe("AI-generated keyword tags, not vault names."),
|
|
8333
|
+
pinned: import_zod4.z.boolean().describe("Recall boost for important notes."),
|
|
8334
|
+
source_type: import_zod4.z.string().describe("Attribution kind: user, person, url, file, channel, thread, or note."),
|
|
8335
|
+
source_ref: import_zod4.z.string().describe("Attribution reference (URL, path, channel, thread, or source note)."),
|
|
8336
|
+
related: import_zod4.z.array(import_zod4.z.string()).describe("Same-vault links (wiki [[ ]] targets)."),
|
|
8337
|
+
related_vault_notes: import_zod4.z.array(import_zod4.z.string()).describe('Cross-vault references in "Vault Name::relative/path.md" form.'),
|
|
8338
|
+
embed: import_zod4.z.boolean().describe("Whether Smart RAG should index the note."),
|
|
8339
|
+
embed_priority: import_zod4.z.enum(["low", "normal", "high"]).describe("Embedding priority."),
|
|
8340
|
+
embedding_summary: import_zod4.z.string().describe("Optional retrieval-specific summary."),
|
|
8341
|
+
type: import_zod4.z.string().describe("Note type from the target vault contract (also used to route the note)."),
|
|
8342
|
+
domain: import_zod4.z.string().describe("Domain folder for Library/Knowledge (AI, SEO, Copywriting & Ads, Business, Spirituality)."),
|
|
8343
|
+
folder: import_zod4.z.string().describe("Explicit sub-folder within the vault; overrides routing-derived folder."),
|
|
8344
|
+
parentMessageId: import_zod4.z.string().describe("Channel messages only: the path of the top-level message this is a reply to. Absent on top-level messages.")
|
|
8345
|
+
}).partial().passthrough();
|
|
8127
8346
|
var GetSchema = {
|
|
8128
8347
|
id: "memory-get",
|
|
8129
8348
|
upstreamName: "getTool",
|
|
8130
|
-
description: "Read a single note from a vault by its exact path, or by shareId for a note shared with you and accepted. Returns a revision number \u2014 pass it as baseRevision on a later memory-put/delete-note to detect a concurrent edit instead of silently overwriting it. Requires read scope.",
|
|
8349
|
+
description: "Read a single note from a vault by its exact path, or by shareId for a note shared with you and accepted. Owned notes include their stored Obsidian props so edits can preserve links and template metadata. Returns a revision number \u2014 pass it as baseRevision on a later memory-put/delete-note to detect a concurrent edit instead of silently overwriting it. Requires read scope.",
|
|
8131
8350
|
input: {
|
|
8132
8351
|
vault: import_zod4.z.string().optional().describe(
|
|
8133
8352
|
"Vault to read from. Optional; defaults to the session active vault, then the first vault the caller is entitled to. Ignored when shareId is given."
|
|
@@ -8147,6 +8366,7 @@ var GetSchema = {
|
|
|
8147
8366
|
capturedAt: import_zod4.z.string().describe("ISO-8601 timestamp of when the note was first captured."),
|
|
8148
8367
|
revision: import_zod4.z.number().describe("Current revision number. Pass this as baseRevision when editing, so a concurrent edit by someone else is detected instead of silently overwritten."),
|
|
8149
8368
|
updatedBy: import_zod4.z.string().nullable().describe("Identity that made the last write, if known."),
|
|
8369
|
+
props: getTool_notePropsSchema.optional().describe("Stored Obsidian metadata for an owned note, including links and vault-specific template fields. Omitted for secure or individually shared notes."),
|
|
8150
8370
|
sharedBy: import_zod4.z.string().optional().describe("Present only when read via shareId: the identity who owns and shared this note."),
|
|
8151
8371
|
othersEditing: import_zod4.z.array(import_zod4.z.string()).optional().describe("Advisory only, not a lock: identities who read this same note within the last ~2 minutes and may be about to edit it. Worth a heads-up to the human before you write; the real safety net is still baseRevision on the write itself.")
|
|
8152
8372
|
}).optional().describe("The full note. Present when ok is true."),
|
|
@@ -8194,7 +8414,7 @@ var ListSchema = {
|
|
|
8194
8414
|
openWorldHint: false
|
|
8195
8415
|
}
|
|
8196
8416
|
};
|
|
8197
|
-
var
|
|
8417
|
+
var putTool_notePropsSchema = import_zod4.z.object({
|
|
8198
8418
|
status: import_zod4.z.string().describe("Status enum value from the target vault contract."),
|
|
8199
8419
|
summary: import_zod4.z.string().describe("Short retrieval-ready description."),
|
|
8200
8420
|
tags: import_zod4.z.array(import_zod4.z.string()).describe("AI-generated keyword tags, not vault names."),
|
|
@@ -8210,7 +8430,7 @@ var notePropsSchema = import_zod4.z.object({
|
|
|
8210
8430
|
domain: import_zod4.z.string().describe("Domain folder for Library/Knowledge (AI, SEO, Copywriting & Ads, Business, Spirituality)."),
|
|
8211
8431
|
folder: import_zod4.z.string().describe("Explicit sub-folder within the vault; overrides routing-derived folder."),
|
|
8212
8432
|
parentMessageId: import_zod4.z.string().describe("Channel messages only: the path of the top-level message this is a reply to. Absent on top-level messages.")
|
|
8213
|
-
}).partial();
|
|
8433
|
+
}).partial().passthrough();
|
|
8214
8434
|
var PutSchema = {
|
|
8215
8435
|
id: "memory-put",
|
|
8216
8436
|
upstreamName: "putTool",
|
|
@@ -8223,7 +8443,7 @@ var PutSchema = {
|
|
|
8223
8443
|
shareId: import_zod4.z.string().optional().describe("Edit a note someone individually shared with you and you accepted (accept-share), by its shareId, instead of vault+path. Requires the share to grant edit permission, and baseRevision is mandatory (get the current revision first) since you are editing alongside the owner and possibly others."),
|
|
8224
8444
|
title: import_zod4.z.string().optional().describe("Optional human-readable title; defaults are derived from the path when omitted."),
|
|
8225
8445
|
content: import_zod4.z.string().min(1).describe("The full note body to store and index for semantic search. Must be non-empty."),
|
|
8226
|
-
props:
|
|
8446
|
+
props: putTool_notePropsSchema.optional().describe("Obsidian note primitives plus vault-specific template fields. On edits, supplied fields patch the stored props instead of replacing the whole object; pass an empty array to deliberately clear a link list. Type/domain/folder also steer routing when no vault is given."),
|
|
8227
8447
|
baseRevision: import_zod4.z.number().optional().describe("Revision the edit is based on (from a prior get/put). When provided, the write only applies if the note is still at this revision; otherwise it is rejected as a conflict instead of silently overwriting a concurrent edit. Omit for last-write-wins (fine for solo notes).")
|
|
8228
8448
|
},
|
|
8229
8449
|
output: {
|
|
@@ -8837,6 +9057,51 @@ var QueryTableSchema = {
|
|
|
8837
9057
|
openWorldHint: false
|
|
8838
9058
|
}
|
|
8839
9059
|
};
|
|
9060
|
+
var ListTagsSchema = {
|
|
9061
|
+
id: "list-memory-tags",
|
|
9062
|
+
upstreamName: "listTagsTool",
|
|
9063
|
+
description: "List the live canonical tag vocabulary, aliases, usage counts, and per-vault distribution. Use this before choosing tags so existing concepts are reused instead of fragmented.",
|
|
9064
|
+
input: {
|
|
9065
|
+
includeDeprecated: import_zod4.z.boolean().optional()
|
|
9066
|
+
},
|
|
9067
|
+
output: {
|
|
9068
|
+
ok: import_zod4.z.boolean(),
|
|
9069
|
+
tags: import_zod4.z.array(import_zod4.z.object({ tag: import_zod4.z.string(), description: import_zod4.z.string().nullable(), aliases: import_zod4.z.array(import_zod4.z.string()), status: import_zod4.z.enum(["active", "deprecated"]), usageCount: import_zod4.z.number(), vaultUsage: import_zod4.z.record(import_zod4.z.number()) })).optional(),
|
|
9070
|
+
error: import_zod4.z.string().optional()
|
|
9071
|
+
},
|
|
9072
|
+
annotations: { title: "List Memory Tags", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
|
|
9073
|
+
};
|
|
9074
|
+
var ResolveTagsSchema = {
|
|
9075
|
+
id: "resolve-memory-tags",
|
|
9076
|
+
upstreamName: "resolveTagsTool",
|
|
9077
|
+
description: "Resolve proposed concepts against the live tag vocabulary. Returns reuse, create, or omit. A new tag is allowed only when no equivalent exists and the caller marks the concept central and reusable.",
|
|
9078
|
+
input: {
|
|
9079
|
+
candidates: import_zod4.z.array(import_zod4.z.object({ tag: import_zod4.z.string().min(1), central: import_zod4.z.boolean().optional(), reusable: import_zod4.z.boolean().optional(), description: import_zod4.z.string().optional() })).min(1).max(20)
|
|
9080
|
+
},
|
|
9081
|
+
output: {
|
|
9082
|
+
ok: import_zod4.z.boolean(),
|
|
9083
|
+
resolutions: import_zod4.z.array(import_zod4.z.object({ candidate: import_zod4.z.string(), normalized: import_zod4.z.string(), action: import_zod4.z.enum(["reuse", "create", "omit"]), tag: import_zod4.z.string().optional(), matchedBy: import_zod4.z.enum(["exact", "alias", "near"]).optional(), score: import_zod4.z.number().optional(), reason: import_zod4.z.string() })).optional(),
|
|
9084
|
+
error: import_zod4.z.string().optional()
|
|
9085
|
+
},
|
|
9086
|
+
annotations: { title: "Resolve Memory Tags", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
|
|
9087
|
+
};
|
|
9088
|
+
var UpsertTagSchema = {
|
|
9089
|
+
id: "upsert-memory-tag",
|
|
9090
|
+
upstreamName: "upsertTagTool",
|
|
9091
|
+
description: "Define or curate one canonical tag, its meaning, aliases, and lifecycle. Use only after resolve-memory-tags returns create, or to merge/deprecate vocabulary intentionally. Requires write scope.",
|
|
9092
|
+
input: {
|
|
9093
|
+
tag: import_zod4.z.string().min(1),
|
|
9094
|
+
description: import_zod4.z.string().optional(),
|
|
9095
|
+
aliases: import_zod4.z.array(import_zod4.z.string()).optional(),
|
|
9096
|
+
status: import_zod4.z.enum(["active", "deprecated"]).optional()
|
|
9097
|
+
},
|
|
9098
|
+
output: {
|
|
9099
|
+
ok: import_zod4.z.boolean(),
|
|
9100
|
+
tag: import_zod4.z.object({ tag: import_zod4.z.string(), description: import_zod4.z.string().nullable(), aliases: import_zod4.z.array(import_zod4.z.string()), status: import_zod4.z.enum(["active", "deprecated"]) }).optional(),
|
|
9101
|
+
error: import_zod4.z.string().optional()
|
|
9102
|
+
},
|
|
9103
|
+
annotations: { title: "Upsert Memory Tag", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false }
|
|
9104
|
+
};
|
|
8840
9105
|
var AddVaultSchema = {
|
|
8841
9106
|
id: "add-vault",
|
|
8842
9107
|
upstreamName: "addVaultTool",
|
|
@@ -8904,6 +9169,21 @@ var DeleteVaultSchema = {
|
|
|
8904
9169
|
openWorldHint: false
|
|
8905
9170
|
}
|
|
8906
9171
|
};
|
|
9172
|
+
var GetVaultContractSchema = {
|
|
9173
|
+
id: "get-vault-contract",
|
|
9174
|
+
upstreamName: "getVaultContractTool",
|
|
9175
|
+
description: "Read the machine-enforced purpose, template, statuses, types, natural neighbor vaults, and typed relationship guidance for one of the 13 governed Obsidian-style vaults. Call before composing a note when the correct shape is uncertain.",
|
|
9176
|
+
input: {
|
|
9177
|
+
vault: import_zod4.z.string().describe("One governed vault: Ideas, Inspiration, Knowledge, Library, People, Communications, Calendar, Tasks, Projects, Issues, Improvement Log, Experiments, or Sprint.")
|
|
9178
|
+
},
|
|
9179
|
+
output: {
|
|
9180
|
+
ok: import_zod4.z.boolean(),
|
|
9181
|
+
vault: import_zod4.z.string().optional(),
|
|
9182
|
+
contract: import_zod4.z.record(import_zod4.z.unknown()).optional(),
|
|
9183
|
+
error: import_zod4.z.string().optional()
|
|
9184
|
+
},
|
|
9185
|
+
annotations: { title: "Get Vault Contract", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
|
|
9186
|
+
};
|
|
8907
9187
|
var ListSharedWithMeSchema = {
|
|
8908
9188
|
id: "list-shared-with-me",
|
|
8909
9189
|
upstreamName: "listSharedWithMeTool",
|
|
@@ -8988,6 +9268,26 @@ var ProvisionDefaultsSchema = {
|
|
|
8988
9268
|
openWorldHint: false
|
|
8989
9269
|
}
|
|
8990
9270
|
};
|
|
9271
|
+
var RouteMemorySchema = {
|
|
9272
|
+
id: "route-memory",
|
|
9273
|
+
upstreamName: "routeMemoryTool",
|
|
9274
|
+
description: "Choose the correct governed vault and folder from content intent. Raw scraped/source material routes to Library; distilled applicable guidance routes to Knowledge. Returns the live vault contract so the result does not depend on prompt memory.",
|
|
9275
|
+
input: {
|
|
9276
|
+
title: import_zod4.z.string().min(1),
|
|
9277
|
+
content: import_zod4.z.string().min(1),
|
|
9278
|
+
type: import_zod4.z.string().optional(),
|
|
9279
|
+
source: import_zod4.z.string().optional()
|
|
9280
|
+
},
|
|
9281
|
+
output: {
|
|
9282
|
+
ok: import_zod4.z.boolean(),
|
|
9283
|
+
vault: import_zod4.z.string().optional(),
|
|
9284
|
+
folder: import_zod4.z.string().optional(),
|
|
9285
|
+
reason: import_zod4.z.string().optional(),
|
|
9286
|
+
contract: import_zod4.z.record(import_zod4.z.unknown()).optional(),
|
|
9287
|
+
error: import_zod4.z.string().optional()
|
|
9288
|
+
},
|
|
9289
|
+
annotations: { title: "Route Memory", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false }
|
|
9290
|
+
};
|
|
8991
9291
|
var VideoAnalyzeStartSchema = {
|
|
8992
9292
|
id: "video-analyze-start",
|
|
8993
9293
|
upstreamName: "videoAnalyzeStartTool",
|
|
@@ -9110,7 +9410,10 @@ var MEMORY_TOOL_SCHEMAS = [
|
|
|
9110
9410
|
SwapVaultSchema,
|
|
9111
9411
|
SwitchAccountSchema,
|
|
9112
9412
|
UnlinkShareSchema,
|
|
9413
|
+
MemoryCaptureSchema,
|
|
9113
9414
|
MemoryQuestionsSchema,
|
|
9415
|
+
PrepareMemoryWriteSchema,
|
|
9416
|
+
ValidateMemoryWriteSchema,
|
|
9114
9417
|
CreateChannelSchema,
|
|
9115
9418
|
GetMessageNoteSchema,
|
|
9116
9419
|
ListChannelMembersSchema,
|
|
@@ -9123,6 +9426,9 @@ var MEMORY_TOOL_SCHEMAS = [
|
|
|
9123
9426
|
ReplyMessageSchema,
|
|
9124
9427
|
FactHistorySchema,
|
|
9125
9428
|
RecordFactSchema,
|
|
9429
|
+
NoteBacklinksSchema,
|
|
9430
|
+
GraphPathSchema,
|
|
9431
|
+
GraphUniverseSchema,
|
|
9126
9432
|
LibraryIngestSchema,
|
|
9127
9433
|
DeleteNoteSchema,
|
|
9128
9434
|
ExportSchema,
|
|
@@ -9152,12 +9458,17 @@ var MEMORY_TOOL_SCHEMAS = [
|
|
|
9152
9458
|
InsertTableRowsSchema,
|
|
9153
9459
|
ListTablesSchema,
|
|
9154
9460
|
QueryTableSchema,
|
|
9461
|
+
ListTagsSchema,
|
|
9462
|
+
ResolveTagsSchema,
|
|
9463
|
+
UpsertTagSchema,
|
|
9155
9464
|
AddVaultSchema,
|
|
9156
9465
|
CreateSecureVaultSchema,
|
|
9157
9466
|
DeleteVaultSchema,
|
|
9467
|
+
GetVaultContractSchema,
|
|
9158
9468
|
ListSharedWithMeSchema,
|
|
9159
9469
|
ListVaultsSchema,
|
|
9160
9470
|
ProvisionDefaultsSchema,
|
|
9471
|
+
RouteMemorySchema,
|
|
9161
9472
|
VideoAnalyzeStartSchema,
|
|
9162
9473
|
VideoAnalyzeStatusSchema,
|
|
9163
9474
|
CreateWebhookSchema,
|