@symerian/symi 2.9.3 → 2.9.4
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/{agents-D6V_7iZL.js → agents-CMoRbMNW.js} +4 -4
- package/dist/{agents.config-BeX0kxT3.js → agents.config-BLuBIvek.js} +1 -1
- package/dist/{agents.config-B-NRTvyi.js → agents.config-Ebtya9aN.js} +1 -1
- package/dist/{auth-choice-4lzxjIcf.js → auth-choice-C_lflrPV.js} +1 -1
- package/dist/{auth-choice-BJQjxe_Y.js → auth-choice-DAMY302C.js} +1 -1
- package/dist/{banner-Q3fjWWy3.js → banner-4mmBVDxd.js} +1 -1
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +2 -2
- package/dist/bundled/session-memory/handler.js +2 -2
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/{channel-options-D6U_Dpa2.js → channel-options-CqEImsEx.js} +1 -1
- package/dist/{channel-options-CQ0Q0xZr.js → channel-options-lJBshQMV.js} +1 -1
- package/dist/{channel-web-D6aolbVC.js → channel-web-CBC2RSBF.js} +1 -1
- package/dist/{channels-cli-By4y_t51.js → channels-cli-BqW1HbHG.js} +6 -6
- package/dist/{channels-cli-CxuKeNkr.js → channels-cli-CqtSKE5p.js} +6 -6
- package/dist/{cli-B1gtEojq.js → cli-B1Dxc2DT.js} +3 -3
- package/dist/{cli-41r_BAjv.js → cli-CjgvXavV.js} +3 -3
- package/dist/{command-registry-FJWuYmEn.js → command-registry-iESIIBvf.js} +10 -10
- package/dist/{completion-cli-DWVW4P54.js → completion-cli-BEddBU3C.js} +2 -2
- package/dist/{completion-cli-C20c_vzO.js → completion-cli-euUBlC-J.js} +1 -1
- package/dist/{config-cli-CJQ-12f7.js → config-cli-CAl0wtaC.js} +1 -1
- package/dist/{config-cli-CLXuCFJc.js → config-cli-DG8UgJ6z.js} +1 -1
- package/dist/{configure-I99ztt2Y.js → configure-B3AtbkbP.js} +3 -3
- package/dist/{configure-DrIhqYYW.js → configure-CtYsABUS.js} +3 -3
- package/dist/{doctor-completion-B4pjrehH.js → doctor-completion-B-Oak4dP.js} +1 -1
- package/dist/{doctor-completion-C9A7E6Wb.js → doctor-completion-BGriRzaq.js} +1 -1
- package/dist/entry.js +1 -1
- package/dist/extensionAPI.js +2 -2
- package/dist/{gateway-cli-BByLEck3.js → gateway-cli-CPligm4B.js} +11 -11
- package/dist/{gateway-cli-cZpbavO4.js → gateway-cli-CrgMw50H.js} +11 -11
- package/dist/{glass-ui-ws-DUHaC6lE.js → glass-ui-ws-BmrBGwq0.js} +9 -9
- package/dist/{glass-ui-ws-09XXkYnX.js → glass-ui-ws-JoAL8aXB.js} +9 -9
- package/dist/{health-CYHbTw04.js → health-BFlZuHVH.js} +1 -1
- package/dist/{health-Bvo3NXZK.js → health-C5cdo2e_.js} +1 -1
- package/dist/{hooks-cli-CiFs-0g0.js → hooks-cli-BHOi35KU.js} +4 -4
- package/dist/{hooks-cli-BwFW4lKC.js → hooks-cli-DFDzJIQJ.js} +4 -4
- package/dist/index.js +8 -8
- package/dist/llm-slug-generator.js +2 -2
- package/dist/{manager-CB20PmUH.js → manager-Ca7NOWdK.js} +1 -1
- package/dist/{manager-BsfrsBPw.js → manager-DNxvT0P-.js} +1 -1
- package/dist/{manager-CMB15ft8.js → manager-DlNP6Nui.js} +1 -1
- package/dist/{manager-Bj8GFlcZ.js → manager-SbxZtjEc.js} +1 -1
- package/dist/{memory-cli-Cuhhh4qN.js → memory-cli-D2LaloPq.js} +3 -3
- package/dist/{memory-cli-CoTkaEhh.js → memory-cli-xSpyRUEV.js} +3 -3
- package/dist/{models-CdIe1IJX.js → models-C6MaesB8.js} +2 -2
- package/dist/{models-cli-CZcMWBL0.js → models-cli-4IVFNhw8.js} +5 -5
- package/dist/{models-cli-o07a-fh5.js → models-cli-CjcsH00X.js} +4 -4
- package/dist/{onboard-Cjlal6-V.js → onboard-BoXWv3OF.js} +2 -2
- package/dist/{onboard-44op-88v.js → onboard-Dk5UFbaj.js} +2 -2
- package/dist/{onboard-channels-BseAErC9.js → onboard-channels-BQ-TPkl5.js} +1 -1
- package/dist/{onboard-channels-Lt1TlRrb.js → onboard-channels-DSIBGif0.js} +1 -1
- package/dist/{onboarding-DYJYybkl.js → onboarding-CvCh0fyS.js} +3 -3
- package/dist/{onboarding-DODsq7cg.js → onboarding-p3SCUopW.js} +3 -3
- package/dist/{onboarding.finalize-BX-xeFu7.js → onboarding.finalize-CrmmBrzK.js} +7 -7
- package/dist/{onboarding.finalize-DhhWr8GR.js → onboarding.finalize-l2qeYvn5.js} +8 -8
- package/dist/{pi-embedded-UMBd-Mrj.js → pi-embedded-DaTqseIp.js} +41 -5
- package/dist/{plugin-registry-HrZC-Iww.js → plugin-registry-B_IeViDg.js} +1 -1
- package/dist/{plugin-registry-Di_isjUm.js → plugin-registry-BmdLxUZd.js} +1 -1
- package/dist/plugin-sdk/{channel-web-CzZZsS3O.js → channel-web-DYJYy4et.js} +1 -1
- package/dist/plugin-sdk/index.js +3 -3
- package/dist/plugin-sdk/{manager-BiRYpsW7.js → manager-Ca0_Buoj.js} +1 -1
- package/dist/plugin-sdk/{reply-DYEklKOc.js → reply-Bfy77FPA.js} +41 -5
- package/dist/plugin-sdk/{synthesis-CaDiVumM.js → synthesis-D9SmRgqU.js} +2 -2
- package/dist/plugin-sdk/{web-DU4xaLZf.js → web-qvuO3y6z.js} +3 -3
- package/dist/{plugins-cli-CMz1ww6G.js → plugins-cli-CAp8Hyam.js} +4 -4
- package/dist/{plugins-cli-BlBz4J4q.js → plugins-cli-Dhcj3Mah.js} +4 -4
- package/dist/{program-dFZ5CYgD.js → program-UlEVhGTo.js} +9 -9
- package/dist/{program-context-ByWsh-2T.js → program-context-BFvY5D79.js} +18 -18
- package/dist/{prompt-select-styled-nywEyQoQ.js → prompt-select-styled-BehvQU7S.js} +6 -6
- package/dist/{prompt-select-styled-BkwnTGjt.js → prompt-select-styled-Bf47U3gY.js} +6 -6
- package/dist/{provider-auth-helpers-CQ604vQz.js → provider-auth-helpers-CEstUTnU.js} +1 -1
- package/dist/{provider-auth-helpers-CgJE4rvP.js → provider-auth-helpers-l2_9mB3E.js} +1 -1
- package/dist/{push-apns-CbjqnCIn.js → push-apns-Be_K61Y3.js} +1 -1
- package/dist/{push-apns-CQlSAman.js → push-apns-Cr9FKn9_.js} +1 -1
- package/dist/{register.agent-Hw7FS0tf.js → register.agent-DXzkaRw1.js} +8 -8
- package/dist/{register.agent-BaLgPcGg.js → register.agent-tfizhRlb.js} +7 -7
- package/dist/{register.configure-BC-jW4EY.js → register.configure-CtXnzNAk.js} +8 -8
- package/dist/{register.configure-D6bKnyeR.js → register.configure-DsBKnmY3.js} +8 -8
- package/dist/{register.maintenance-7LeID6wA.js → register.maintenance-BZJLuSs7.js} +10 -10
- package/dist/{register.maintenance-DQ73gAH0.js → register.maintenance-mVD8OA1V.js} +9 -9
- package/dist/{register.message-odamuJP5.js → register.message-C7Mfqk6i.js} +4 -4
- package/dist/{register.message-D2Ubr7KY.js → register.message-ZHGwfsV9.js} +4 -4
- package/dist/{register.onboard-Bv3BjuIZ.js → register.onboard-B0zHMGtr.js} +6 -6
- package/dist/{register.onboard-DwYvxoBx.js → register.onboard-bPMjH-cM.js} +6 -6
- package/dist/{register.setup-BvNMj7Tn.js → register.setup-aVvT34-g.js} +6 -6
- package/dist/{register.setup-B6ylBd_s.js → register.setup-jLBfOyYo.js} +6 -6
- package/dist/{register.status-health-sessions-Cr65vOYW.js → register.status-health-sessions-Bbp4B0t_.js} +5 -5
- package/dist/{register.status-health-sessions-Bx0oTY_P.js → register.status-health-sessions-Ym9Z__5q.js} +5 -5
- package/dist/{register.subclis-BzbNYOC6.js → register.subclis-DHLF7LUE.js} +9 -9
- package/dist/{reply-Bymjl4wV.js → reply-DaLBaxTg.js} +40 -4
- package/dist/{run-main-BAaL6QjO.js → run-main-i-0RAGWP.js} +17 -17
- package/dist/{server-methods-Ds4i0Q2F.js → server-methods-9ygcQLBv.js} +8 -8
- package/dist/{server-methods-C4j7W_qQ.js → server-methods-BTBqGPE0.js} +8 -8
- package/dist/{server-node-events-tbjGwgHF.js → server-node-events-Dwq8UMWp.js} +4 -4
- package/dist/{server-node-events-D0gNq3h6.js → server-node-events-v-YRyTWm.js} +4 -4
- package/dist/{status-CGabcN-L.js → status-87Am-dN6.js} +3 -3
- package/dist/{status-BdkVcIDX.js → status-BwKYtKTR.js} +1 -1
- package/dist/{status-DpVc9DSG.js → status-Cet2zu6k.js} +1 -1
- package/dist/{status-BfNSBvnp.js → status-vF06cYz7.js} +3 -3
- package/dist/{subagent-registry-0D_yjdW5.js → subagent-registry--ttOPMLH.js} +40 -4
- package/dist/{synthesis-Bf2XnlvP.js → synthesis-9GndKT3K.js} +2 -2
- package/dist/{synthesis-DFQ_rjEF.js → synthesis-DH0gSv7o.js} +2 -2
- package/dist/{synthesis-1f-yGtS7.js → synthesis-JzS-852N.js} +3 -3
- package/dist/{synthesis-A2SfvBRN.js → synthesis-aBsVjLIL.js} +3 -3
- package/dist/{unified-runner-j_Vn4K8X.js → unified-runner-C0OC_Ay0.js} +41 -5
- package/dist/{update-cli-CWMGbbPM.js → update-cli-BWulAC_Y.js} +10 -10
- package/dist/{update-cli-B3t4yUU6.js → update-cli-DAP38iFd.js} +9 -9
- package/dist/{update-runner-CfzHxbsu.js → update-runner-Bl0Y3ndR.js} +1 -1
- package/dist/{update-runner-UfVHKth_.js → update-runner-DV6ov2uA.js} +1 -1
- package/dist/{web-BSf9H0_w.js → web-Cl-3dkwx.js} +2 -2
- package/dist/{web-DaChMSyM.js → web-DcZB_7Fo.js} +2 -2
- package/dist/{web-DIDhNbES.js → web-DhjVLurg.js} +4 -4
- package/dist/{web-DCTvbYTy.js → web-K_bPrtFT.js} +3 -3
- package/docs/capabilities.md +36 -36
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/discord/package.json +1 -1
- package/extensions/feishu/package.json +1 -1
- package/extensions/google-antigravity-auth/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/googlechat/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/learning-loop/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +6 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +1 -1
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +6 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +6 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/outlook/node_modules/.bin/symi +21 -0
- package/extensions/outlook/package.json +1 -1
- package/extensions/pipeline/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/slack/package.json +1 -1
- package/extensions/telegram/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +6 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +6 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/whatsapp/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +6 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +6 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +5 -1
- package/skills/document-generation/SKILL.md +37 -18
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
|
|
3
|
+
|
|
4
|
+
case `uname` in
|
|
5
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
6
|
+
if command -v cygpath > /dev/null 2>&1; then
|
|
7
|
+
basedir=`cygpath -w "$basedir"`
|
|
8
|
+
fi
|
|
9
|
+
;;
|
|
10
|
+
esac
|
|
11
|
+
|
|
12
|
+
if [ -z "$NODE_PATH" ]; then
|
|
13
|
+
export NODE_PATH="/home/symi/projects/symi/node_modules:/home/symi/projects/node_modules:/home/symi/node_modules:/home/node_modules:/node_modules:/home/symi/projects/symi/node_modules/.pnpm/node_modules"
|
|
14
|
+
else
|
|
15
|
+
export NODE_PATH="/home/symi/projects/symi/node_modules:/home/symi/projects/node_modules:/home/symi/node_modules:/home/node_modules:/node_modules:/home/symi/projects/symi/node_modules/.pnpm/node_modules:$NODE_PATH"
|
|
16
|
+
fi
|
|
17
|
+
if [ -x "$basedir/node" ]; then
|
|
18
|
+
exec "$basedir/node" "$basedir/../@symerian/symi/symi.mjs" "$@"
|
|
19
|
+
else
|
|
20
|
+
exec node "$basedir/../@symerian/symi/symi.mjs" "$@"
|
|
21
|
+
fi
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@symerian/symi",
|
|
3
|
-
"version": "2.9.
|
|
3
|
+
"version": "2.9.4",
|
|
4
4
|
"description": "Multi-channel AI gateway with extensible messaging integrations",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"homepage": "https://github.com/jaysteelmind/symi#readme",
|
|
@@ -160,7 +160,9 @@
|
|
|
160
160
|
"commander": "^14.0.3",
|
|
161
161
|
"croner": "^10.0.1",
|
|
162
162
|
"discord-api-types": "^0.38.40",
|
|
163
|
+
"docx": "^9.5.1",
|
|
163
164
|
"dotenv": "^17.3.1",
|
|
165
|
+
"exceljs": "^4.4.0",
|
|
164
166
|
"express": "^5.2.1",
|
|
165
167
|
"file-type": "^21.3.0",
|
|
166
168
|
"grammy": "^1.40.0",
|
|
@@ -175,7 +177,9 @@
|
|
|
175
177
|
"opusscript": "^0.0.8",
|
|
176
178
|
"osc-progress": "^0.3.0",
|
|
177
179
|
"pdfjs-dist": "^5.4.624",
|
|
180
|
+
"pdfkit": "^0.17.2",
|
|
178
181
|
"playwright-core": "1.58.2",
|
|
182
|
+
"pptxgenjs": "^4.0.1",
|
|
179
183
|
"qrcode-terminal": "^0.12.0",
|
|
180
184
|
"sharp": "^0.34.5",
|
|
181
185
|
"sqlite-vec": "0.1.7-alpha.2",
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: document-generation
|
|
3
|
-
description: Generate Word (.docx), Excel (.xlsx), PowerPoint (.pptx), and PDF documents via npm packages
|
|
3
|
+
description: Generate Word (.docx), Excel (.xlsx), PowerPoint (.pptx), and PDF documents via npm packages bundled with Symi. Write a short Node.js script (.cjs for CommonJS), execute via exec with host=gateway. Use when the user asks to create, generate, or export documents.
|
|
4
4
|
triggers: [document, docx, xlsx, pptx, pdf, word, excel, powerpoint, generate, export, file]
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Document Generation
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Symi ships with these npm packages bundled for document generation via the `exec` tool:
|
|
10
10
|
|
|
11
11
|
- **`docx`** — create `.docx` (Word) files with headings, paragraphs, tables, images, styles.
|
|
12
12
|
- **`exceljs`** — create `.xlsx` (Excel) files with sheets, formulas, formatting, charts.
|
|
13
13
|
- **`pptxgenjs`** — create `.pptx` (PowerPoint) files with slides, layouts, text, images, charts.
|
|
14
14
|
- **`pdfkit`** — create `.pdf` files with text, images, tables, vector graphics.
|
|
15
15
|
|
|
16
|
+
These are real `dependencies` in Symi's `package.json` — they install with Symi automatically. No separate setup step.
|
|
17
|
+
|
|
16
18
|
## How to invoke
|
|
17
19
|
|
|
18
20
|
When the user asks to **create, generate, or export** a document:
|
|
19
21
|
|
|
20
|
-
1. Write a short Node.js script. Save with `.cjs` extension
|
|
21
|
-
2. Execute via the `exec` tool with `host: "gateway"` — the packages are installed
|
|
22
|
-
3.
|
|
23
|
-
- To `projects/{slug}/files/` when a project is active.
|
|
24
|
-
- Otherwise to `.session-uploads/{session_id}/`.
|
|
22
|
+
1. Write a short Node.js script. Save it with the `.cjs` extension so CommonJS `require()` resolves correctly even though Symi's own package is `"type": "module"`.
|
|
23
|
+
2. Execute via the `exec` tool with `host: "gateway"` — the packages are installed in Symi's own `node_modules`, which the gateway host can resolve from.
|
|
24
|
+
3. Write the output to a path the user can pick up — typically the workspace dir, `~/Downloads/`, or wherever the user named.
|
|
25
25
|
|
|
26
26
|
## Minimal example — Word doc
|
|
27
27
|
|
|
@@ -42,23 +42,42 @@ const doc = new Document({
|
|
|
42
42
|
});
|
|
43
43
|
|
|
44
44
|
Packer.toBuffer(doc).then((buf) => {
|
|
45
|
-
fs.writeFileSync("
|
|
45
|
+
fs.writeFileSync("/tmp/report.docx", buf);
|
|
46
46
|
});
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
Then `exec({ host: "gateway", command: "node gen.cjs" })`.
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
The script must run on the gateway host because that's where Symi's `node_modules` live — the sandbox and remote nodes do NOT have these packages.
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
- **Don't try to generate documents from the sandbox host** — those packages are gateway-only.
|
|
55
|
-
- **Don't write the file to the workspace root** unless explicitly asked. Use the project or session-uploads paths.
|
|
56
|
-
- **Don't dump 10KB of HTML and call it a "document"**. Use the structured generators above.
|
|
53
|
+
## Other formats
|
|
57
54
|
|
|
58
|
-
|
|
55
|
+
```js
|
|
56
|
+
// xlsx
|
|
57
|
+
const ExcelJS = require("exceljs");
|
|
58
|
+
const wb = new ExcelJS.Workbook();
|
|
59
|
+
const sheet = wb.addWorksheet("Sheet1");
|
|
60
|
+
sheet.getCell("A1").value = "Hello";
|
|
61
|
+
await wb.xlsx.writeFile("/tmp/out.xlsx");
|
|
62
|
+
|
|
63
|
+
// pptx
|
|
64
|
+
const PptxGenJS = require("pptxgenjs");
|
|
65
|
+
const pptx = new PptxGenJS();
|
|
66
|
+
const slide = pptx.addSlide();
|
|
67
|
+
slide.addText("Hello", { x: 1, y: 1, w: 4, h: 1 });
|
|
68
|
+
await pptx.writeFile({ fileName: "/tmp/out.pptx" });
|
|
69
|
+
|
|
70
|
+
// pdf
|
|
71
|
+
const PDFDocument = require("pdfkit");
|
|
72
|
+
const fs = require("fs");
|
|
73
|
+
const pdf = new PDFDocument();
|
|
74
|
+
pdf.pipe(fs.createWriteStream("/tmp/out.pdf"));
|
|
75
|
+
pdf.text("Hello");
|
|
76
|
+
pdf.end();
|
|
77
|
+
```
|
|
59
78
|
|
|
60
|
-
|
|
79
|
+
## What NOT to do
|
|
61
80
|
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
81
|
+
- **Don't use Pandoc, LibreOffice, or other CLI converters** unless the user specifically asks. The bundled npm packages are faster, more reliable, and don't require external binaries.
|
|
82
|
+
- **Don't try to generate documents from the sandbox host** — the packages live in Symi's own `node_modules` on the gateway host.
|
|
83
|
+
- **Don't dump 10KB of HTML and call it a "document"**. Use the structured generators above.
|