@awesomate/hosting-mcp 0.20.1 → 0.20.2

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/index.js CHANGED
@@ -41939,10 +41939,11 @@ var KB_UPLOAD_TYPES = {
41939
41939
  ".webp": "image/webp"
41940
41940
  };
41941
41941
  var KB_MAX_UPLOAD_BYTES = 100 * 1024 * 1024;
41942
+ var KB_UNPARSEABLE = /* @__PURE__ */ new Set([".doc", ".docx", ".ppt", ".pptx", ".rtf", ".epub", ".html", ".htm"]);
41942
41943
  server.registerTool(
41943
41944
  "awesomate_knowledge_upload",
41944
41945
  {
41945
- description: "Ingest ONE file from the user's own computer into their Knowledge Base (Pro+). Pass a LOCAL PATH \u2014 this server runs on their machine and streams the file to the hub itself, so the file contents never pass through the conversation. Handles documents (pdf, docx, pptx, xlsx, csv, txt, md, epub), audio and video (transcribed), and images. Max 100 MB per file; bigger media goes through the hub's Knowledge \u2192 Sources page. INGESTING COSTS MONEY and counts against the monthly allowance, so ALWAYS get explicit approval for the specific file(s) first and say what it will consume. For several files, call once per file and report progress \u2014 do not loop silently. Returns a job; poll awesomate_knowledge_sources {action:'jobs'} until it succeeds, then probe the content with awesomate_knowledge_ask before building anything on it. A pack_required response means the allowance is exhausted: nothing was ingested and nothing was purchased.",
41946
+ description: "Ingest ONE file from the user's own computer into their Knowledge Base (Pro+). Pass a LOCAL PATH \u2014 this server runs on their machine and streams the file to the hub itself, so the file contents never pass through the conversation. Handles documents (pdf, md, txt), business data (csv, tsv, xls, xlsx, json), audio and video (transcribed), and images. Word/PowerPoint/RTF/EPUB files are NOT parseable yet \u2014 the tool refuses them with the workaround (export to PDF, or save as .md/.txt). Max 100 MB per file; bigger media goes through the hub's Knowledge \u2192 Sources page. INGESTING COSTS MONEY and counts against the monthly allowance, so ALWAYS get explicit approval for the specific file(s) first and say what it will consume. For several files, call once per file and report progress \u2014 do not loop silently. Returns a job; poll awesomate_knowledge_sources {action:'jobs'} until it succeeds, then probe the content with awesomate_knowledge_ask before building anything on it. A pack_required response means the allowance is exhausted: nothing was ingested and nothing was purchased.",
41946
41947
  inputSchema: {
41947
41948
  path: external_exports.string().min(1).max(4096).describe("Path to the file on the user's machine (~ is expanded)"),
41948
41949
  title: external_exports.string().max(300).optional().describe("Display title; defaults to the filename")
@@ -41979,6 +41980,13 @@ server.registerTool(
41979
41980
  );
41980
41981
  }
41981
41982
  const ext = extname(abs).toLowerCase();
41983
+ if (KB_UNPARSEABLE.has(ext)) {
41984
+ return errorResult(
41985
+ new Error(
41986
+ `${basename(abs)} is a format the Knowledge Base cannot parse yet (${ext}). Export it to PDF, or save the text as .md or .txt, and upload that instead. For a web page, add its public URL with awesomate_knowledge_sources {action:'add'} rather than uploading the HTML file.`
41987
+ )
41988
+ );
41989
+ }
41982
41990
  const contentType = KB_UPLOAD_TYPES[ext] ?? "application/octet-stream";
41983
41991
  const filename = title?.trim() ? `${title.trim()}${ext}` : basename(abs);
41984
41992
  const result = await hubUploadFile(requireConfig(), "/api/knowledge/sources", {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@awesomate/hosting-mcp",
3
- "version": "0.20.1",
3
+ "version": "0.20.2",
4
4
  "description": "Awesomate MCP server — lets Claude manage your Awesomate WordPress hosting, plan, limits, n8n automations, and build Node/static apps + databases",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
@@ -1,5 +1,12 @@
1
1
  {
2
2
  "versions": [
3
+ {
4
+ "version": "0.20.2",
5
+ "highlights": [
6
+ "Plain-text (.txt) and Markdown files now ingest into your Knowledge Base - a bug stopped both from working",
7
+ "Unsupported file types (Word, PowerPoint, EPUB) are refused up front with the fix - export to PDF - instead of failing later"
8
+ ]
9
+ },
3
10
  {
4
11
  "version": "0.20.1",
5
12
  "highlights": [
@@ -41,13 +48,13 @@
41
48
  "highlights": [
42
49
  "Search your knowledge base with filters and ask questions within a slice of your content",
43
50
  "People & entities: your knowledge base now recognises who appears in your content, and you can name and merge them",
44
- "Build AI agents from your own content drafted, tested privately, and published only when you approve"
51
+ "Build AI agents from your own content \u2014 drafted, tested privately, and published only when you approve"
45
52
  ]
46
53
  },
47
54
  {
48
55
  "version": "0.14.0",
49
56
  "highlights": [
50
- "Tools built for business owners, not developers plain-language answers about your account, plan and limits",
57
+ "Tools built for business owners, not developers \u2014 plain-language answers about your account, plan and limits",
51
58
  "New support skill: get help, understand credits, or request a done-for-you build without leaving Claude",
52
59
  "New database skill: Claude picks the right place to keep your data and sets it up for you"
53
60
  ]
@@ -37,6 +37,9 @@ contents never pass through the conversation and a 100 MB PDF costs no context.
37
37
  - A folder path is rejected on purpose — list it, agree the files, then upload.
38
38
  - Public URLs and whole sitemaps stay on `awesomate_knowledge_sources`
39
39
  `{action:'add'}`. Use that for their website; use upload for their disk.
40
+ - **What parses:** pdf, md, txt (documents); csv, tsv, xls, xlsx, json (business data);
41
+ audio, video, images. Word/PowerPoint/RTF/EPUB/HTML files are refused with a
42
+ workaround — export to PDF or save as .md/.txt; a web page goes in by URL.
40
43
 
41
44
  ## 3. Wait for ingestion, and check it actually succeeded
42
45
 
@@ -52,17 +55,19 @@ processing never creates a source row, so `{action:'summary'}` still reports
52
55
  a failed ingest looks exactly like one that was never attempted.
53
56
 
54
57
  So: read the job's `status` AND its `error`, and relay the error text to the
55
- user. Two real ones seen in the wild, both platform-side configuration rather
56
- than anything wrong with their file:
58
+ user. Real ones seen in the wild, all platform-side rather than anything wrong
59
+ with their file:
57
60
 
58
- - `new row violates row-level security policy for table "documents"` —
59
- document/markdown ingestion is not currently permitted for that tenant.
61
+ - `new row violates row-level security policy for table "documents"` — a
62
+ platform bug in markdown/text ingestion, fixed 2026-09-02. A failed job wrote
63
+ nothing, so once support confirms the fix is deployed the same file can
64
+ simply be re-uploaded.
60
65
  - `transcription_not_configured: DEEPGRAM_API_KEY is not set` — audio/video
61
66
  cannot be transcribed on that deployment yet.
62
67
 
63
- Neither is fixable by the user or by retrying. Say plainly that the upload
64
- reached Awesomate and failed on our side, and raise it with support
65
- (awesomate-support skill) rather than re-uploading and spending allowance again.
68
+ None of these are fixable by the user. Say plainly that the upload reached
69
+ Awesomate and failed on our side, and raise it with support (awesomate-support
70
+ skill) rather than blindly re-uploading and spending allowance again.
66
71
 
67
72
  Then `{action:'summary'}` for the whole-library counts once the job has
68
73
  actually succeeded.